Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
unlimited-elements-for-elementor
/
inc_php
/
layouts
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access'); class UniteCreatorLayoutsWork extends UniteElementsBaseUC { protected $lastDuplicatedID; private function a_GET_LAYOUTS() { } private function getWhereFromParams($params) { $where = array(); $catID = UniteFunctionsUC::getVal($params, "catid"); if (!empty($catID)) { $where["catid"] = $catID; } $layoutType = UniteFunctionsUC::getVal($params, "layout_type"); if (empty($layoutType)) { $layoutType = UniteCreatorDB::ISNULL; } $where["layout_type"] = $layoutType; return $where; } private function getRecords($order = "ordering", $params = array(), $layoutType = null) { if (empty($params)) { $params = array(); } $params["layout_type"] = $layoutType; if (empty($order)) { $order = "ordering"; } $where = $this->getWhereFromParams($params); $response = $this->db->fetch(GlobalsUC::$table_layouts, $where, $order); return $response; } private function getRecordsPaging($pagingOptions) { $arrWhere = array(); $search = UniteFunctionsUC::getVal($pagingOptions, "search"); if (!empty($search)) { $search = $this->db->escape($search); $arrWhere["title"] = array("LIKE", "%{$search}%"); } $order = UniteFunctionsUC::getVal($pagingOptions, "ordering"); $filterCat = UniteFunctionsUC::getVal($pagingOptions, "category"); if (!empty($filterCat) && $filterCat != 'all') { $filterCat = (int) $filterCat; $arrWhere["catid"] = $filterCat; } $layoutType = UniteFunctionsUC::getVal($pagingOptions, "layout_type"); if (empty($layoutType)) { $layoutType = UniteCreatorDB::ISNULL; } $arrWhere["layout_type"] = $layoutType; $response = $this->db->fetchPage(GlobalsUC::$table_layouts, $pagingOptions, $arrWhere, $order); return $response; } private function getLayoutFromData($data) { $layoutID = UniteFunctionsUC::getVal($data, "layout_id"); UniteFunctionsUC::validateNumeric($layoutID); UniteFunctionsUC::validateNotEmpty($layoutID); $objLayout = new UniteCreatorLayout(); $objLayout->initByID($layoutID); return $objLayout; } private function recordsToLayouts($records) { if (empty($records)) { return array(); } $arrLayouts = array(); foreach ($records as $record) { $layoutID = UniteFunctionsUC::getVal($record, "id"); $objLayout = new UniteCreatorLayout(); $objLayout->initByID($layoutID); $arrLayouts[] = $objLayout; } return $arrLayouts; } public function getArrLayouts($order = "ordering", $params = array(), $layoutType = null) { $response = $this->getRecords($order, $params, $layoutType); $arrLayouts = $this->recordsToLayouts($response); return $arrLayouts; } public function getArrLayoutsPaging($pagingOptions) { $response = $this->getRecordsPaging($pagingOptions); $rows = $response["rows"]; unset($response["rows"]); $arrLayouts = $this->recordsToLayouts($rows); $output = array(); $output["paging"] = $response; $output["layouts"] = $arrLayouts; return $output; } public function getArrLayoutsShort($addEmpty = false, $params = array(), $layoutType = null) { if ($layoutType == GlobalsUC::ADDON_TYPE_REGULAR_LAYOUT) { $layoutType = null; } if (!empty($layoutType)) { $params["layout_type"] = $layoutType; } $where = $this->getWhereFromParams($params); $arrLayouts = $this->db->fetchFields(GlobalsUC::$table_layouts, "id, title", $where, "ordering"); if (empty($arrLayouts)) { $arrLayouts = array(); } if ($addEmpty == true) { $arrItem = array("id" => "empty", "title" => "[Not Selected]"); $arrAdd = array($arrItem); $arrLayouts = array_merge($arrAdd, $arrLayouts); } return $arrLayouts; } public function getArrLayoutsKeyValue($addEmpty = false, $layoutType = null) { if (!empty($layoutType)) { $params["layout_type"] = $layoutType; } $where = $this->getWhereFromParams($params); $arrLayouts = $this->db->fetchFields(GlobalsUC::$table_layouts, "id, title", $where, "ordering"); if (empty($arrLayouts)) { $arrLayouts = array(); } if ($addEmpty == true) { $arrItem = array("id" => "empty", "title" => "[Not Selected]"); $arrAdd = array($arrItem); $arrLayouts = array_merge($arrAdd, $arrLayouts); } return $arrLayouts; } public function getActiveTempaltePart($layoutType) { $arrLayouts = $this->getArrLayouts(null, null, $layoutType); if (empty($arrLayouts)) { return null; } $firstLayout = $arrLayouts[0]; return $firstLayout; } private function getLayoutsByIDs($arrLayoutIDs) { $tableLayouts = GlobalsUC::$table_layouts; $arrLayouts = $this->db->fetchByIDs($tableLayouts, $arrLayoutIDs); return $arrLayouts; } public function getCatLayouts($catID, $objAddonType = null, $onlyRecords = false) { if ($catID == "zero") { $catID = 0; } $arrWhere = $this->db->getWhereCatIDWithAll($catID); $typeName = null; if (!empty($objAddonType)) { $typeName = $objAddonType->typeName; if ($objAddonType->isBasicType == true) { $typeName = null; } } if ((is_numeric($catID) == false || empty($catID) || $catID === "all") && $typeName !== null) { $arrWhere[] = $this->db->getSqlAddonType($typeName, "layout_type"); } $where = ""; if (!empty($arrWhere)) { $where = implode(" and ", $arrWhere); } $records = $this->db->fetch(GlobalsUC::$table_layouts, $where, "catid, ordering"); if ($onlyRecords === true) { return $records; } $arrLayouts = $this->recordsToLayouts($records); return $arrLayouts; } public function getNumCatLayouts($catID, UniteCreatorAddonType $objAddonType) { if ($objAddonType->isLayout == false) { UniteFunctionsUC::throwError("Wrong layout type"); } if ($catID === 0) { $catID = "zero"; } $arrRecords = $this->getCatLayouts($catID, $objAddonType, true); $numRecords = count($arrRecords); return $numRecords; } public function getLayoutsWithCategories($layoutType, $isShort = false) { $arrLayouts = $this->getArrLayouts(null, array(), $layoutType); $generated = UniteFunctionsUC::getRandomString(5); $prefix = "layout_" . $generated . "_"; $arrCats = array(); foreach ($arrLayouts as $key => $objLayout) { $name = $objLayout->getName(); if (empty($name)) { $name = $prefix . $key; } $catTitle = $objLayout->getCategoryName(); if (empty($catTitle)) { $catTitle = "Uncategorized"; } if (isset($arrCats[$catTitle]) == false) { $arrCats[$catTitle] = array(); } if ($isShort == false) { $arrCats[$catTitle][$name] = $objLayout; } else { $arrCats[$catTitle][$name] = $objLayout->getShortData(); } } return $arrCats; } private function a_______OTHER_GETTERS_________() { } public function isLayoutExistsByTitle($title, $layoutType = null) { $arrLayout = $this->getLayoutRecordByTitle($title, $layoutType); $isExists = !empty($arrLayout); return $isExists; } private function getLayoutRecordByTitle($title, $layoutType) { $whereType = $this->db->getSqlAddonType($layoutType, "layout_type"); $response = $this->db->fetch(GlobalsUC::$table_layouts, array("title" => $title, UniteCreatorDB::ISNULL => $whereType)); if (empty($response)) { return $response; } $response = $response[0]; return $response; } public function getMaxOrder() { $tableLayouts = GlobalsUC::$table_layouts; $query = "select MAX(ordering) as maxorder from {$tableLayouts}"; $rows = $this->db->fetchSql($query); $maxOrder = 0; if (count($rows) > 0) { $maxOrder = $rows[0]["maxorder"]; } if (!is_numeric($maxOrder)) { $maxOrder = 0; } return $maxOrder; } public function getUrlTakeScreenshot($isTakeScreenshot = true, $layoutID = null) { $addParams = "screenshot=true"; if ($isTakeScreenshot == true) { $addParams .= "&take_screenshot=true"; } $isFront = true; $url = HelperUC::getViewUrl_LayoutPreview($layoutID, true, $addParams, $isFront); return $url; } private function a_OPERATIONS() { } public function validateLayoutType($layoutType) { $objLayout = UniteCreatorAddonType::getAddonTypeObject($layoutType, true); } public function duplicateLayouts($arrIDs, $catID) { foreach ($arrIDs as $layoutID) { $layout = new UniteCreatorLayout(); $layout->initByID($layoutID); $layout->duplicate(); } } public function updateLayoutCategoryFromData($data) { $layoutID = UniteFunctionsUC::getVal($data, "layoutid"); $catID = UniteFunctionsUC::getVal($data, "catid"); $objLayout = new UniteCreatorLayout(); $objLayout->initByID($layoutID); $objLayout->updateCategory($catID); } public function updateParamsFromData($data) { $layoutID = UniteFunctionsUC::getVal($data, "layoutid"); $params = UniteFunctionsUC::getVal($data, "params"); $objLayout = new UniteCreatorLayout(); $objLayout->initByID($layoutID); $objLayout->updateParams($params); $isFromManager = UniteFunctionsUC::getVal($data, "from_manager"); $isFromManager = UniteFunctionsUC::strToBool($isFromManager); if ($isFromManager == true) { $addonType = UniteFunctionsUC::getVal($data, "addontype"); $objManager = UniteCreatorManager::getObjManagerByAddonType($addonType, $data); $htmlItem = $objManager->getAddonAdminHtml($objLayout); $response = array(); $response["html_item"] = $htmlItem; return $response; } return array(); } public function updateLayoutFromData($data) { $layoutID = UniteFunctionsUC::getVal($data, "layoutid"); $isTitleOnly = UniteFunctionsUC::getVal($data, "title_only"); $isTitleOnly = UniteFunctionsUC::strToBool($isTitleOnly); $objLayout = new UniteCreatorLayout(); $isUpdate = false; if (empty($layoutID)) { $responseCreate = $objLayout->create($data); $layoutID = $responseCreate["id"]; $name = $responseCreate["name"]; $message = HelperUC::getText("layout_created"); } else { $isUpdate = true; $objLayout->initByID($layoutID); $name = UniteFunctionsUC::getVal($data, "name"); if (!empty($name)) { $name = HelperUC::convertTitleToAlias($name); } else { if (!isset($data["name"])) { $name = null; } } if ($isTitleOnly == true) { $title = UniteFunctionsUC::getVal($data, "title"); $objLayout->updateTitle($title, $name); $message = esc_html__("Title Saved", "unlimited-elements-for-elementor"); } else { $objLayout->update($data); $message = HelperUC::getText("layout_updated"); } } $response = array(); $response["is_update"] = $isUpdate; $response["layout_id"] = $layoutID; if (!empty($name)) { $response["page_name"] = $name; } $response["message"] = $message; return $response; } public function deleteLayouts($arrIDs) { if (empty($arrIDs)) { UniteFunctionsUC::throwError("no id's to delete"); } $this->db->deleteMultipleByID(GlobalsUC::$table_layouts, $arrIDs); } public function deleteLayoutFromData($data) { $objLayout = $this->getLayoutFromData($data); $objLayout->delete(); } public function duplicateLayoutFromData($data) { $redirectToLayout = UniteFunctionsUC::getVal($data, "redirect_to_layout"); $redirectToLayout = UniteFunctionsUC::strToBool($redirectToLayout); $objLayout = $this->getLayoutFromData($data); $duplicatedID = $objLayout->duplicate(); $this->lastDuplicatedID = $duplicatedID; if ($redirectToLayout == true) { $urlRedirect = HelperUC::getViewUrl_Layout($duplicatedID); return $urlRedirect; } return null; } public function getUniqueTitle($title, $layoutType = null) { $counter = 1; $isExists = $this->isLayoutExistsByTitle($title, $layoutType); if ($isExists == false) { return $title; } $limit = 1; while ($isExists == true && $limit < 10) { $limit++; $counter++; $newTitle = $title . "-" . $counter; $isExists = $this->isLayoutExistsByTitle($newTitle, $layoutType); } return $newTitle; } public function shiftOrder($order, $layoutType) { UniteFunctionsUC::validateNumeric($order); $tableLayouts = GlobalsUC::$table_layouts; $sqlLayoutType = $this->db->getSqlAddonType($layoutType, "layout_type"); $query = "update {$tableLayouts} set ordering = ordering+1 where ordering > {$order} and {$sqlLayoutType}"; $this->db->runSql($query); } public function exportLayout($data = null) { if (!empty($data)) { $layoutID = UniteFunctionsUC::getVal($data, "id"); } else { $layoutID = UniteFunctionsUC::getGetVar("id", "", UniteFunctionsUC::SANITIZE_ID); } $layoutID = (int) $layoutID; $objLayout = new UniteCreatorLayout(); $objLayout->initByID($layoutID); $exporter = new UniteCreatorLayoutsExporter(); $exporter->initByLayout($objLayout); $exporter->export(); } public function importLayouts($data) { $layoutID = UniteFunctionsUC::getVal($data, "layoutID"); if (!empty($layoutID)) { $layoutID = (int) $layoutID; } $arrTempFile = UniteFunctionsUC::getVal($_FILES, "import_layout"); $isOverwriteAddons = UniteFunctionsUC::getVal($data, "overwrite_addons"); $params = UniteFunctionsUC::getVal($data, "params"); if (empty($params)) { $params = array(); } $exporter = new UniteCreatorLayoutsExporter(); $exporter->import($arrTempFile, $layoutID, $isOverwriteAddons, $params); $noRedirect = UniteFunctionsUC::getVal($data, "no_redirect"); $noRedirect = UniteFunctionsUC::strToBool($noRedirect); if ($noRedirect == true) { return null; } if (empty($layoutID)) { $urlRedirect = HelperUC::getViewUrl_LayoutsList($params); } else { $urlRedirect = HelperUC::getViewUrl_Layout($layoutID, $params); } return $urlRedirect; } public function updateOrdering($layoutsIDs) { if (empty($layoutsIDs)) { return false; } $this->db->updateRecordsOrdering(GlobalsUC::$table_layouts, $layoutsIDs); } public function updateOrderFromData($data) { $layoutsIDs = UniteFunctionsUC::getVal($data, "layouts_order"); $this->updateOrdering($layoutsIDs); } public function moveLayouts($arrIDs, $catID, $targetParentID = null) { $category = new UniteCreatorCategories(); $category->validateCatExist($catID); foreach ($arrIDs as $layoutID) { $this->moveLayout($layoutID, $catID, $targetParentID); } } protected function moveLayout($layoutID, $catID, $targetParentID = null) { $layoutID = (int) $layoutID; $catID = (int) $catID; $arrUpdate = array(); $arrUpdate["catid"] = $catID; $this->db->update(GlobalsUC::$table_layouts, $arrUpdate, array("id" => $layoutID)); } public function saveSectionToLibraryFromData($data) { $dataForCreate = array(); $title = UniteFunctionsUC::getVal($data, "section_title"); $gridData = UniteFunctionsUC::getVal($data, "section_data"); $dataForCreate["title"] = $title; $dataForCreate["grid_data"] = $gridData; $layoutType = GlobalsUC::ADDON_TYPE_LAYOUT_SECTION; $dataForCreate["layout_type"] = $layoutType; $isOverwrite = UniteFunctionsUC::getVal($data, "section_overwrite"); $isOverwrite = UniteFunctionsUC::strToBool($isOverwrite); $objLayout = new UniteCreatorLayout(); $record = null; if ($isOverwrite == true) { $record = $this->getLayoutRecordByTitle($title, $layoutType); } if ($record) { $objLayout->initByRecord($record); $objLayout->updateGridData($gridData); $layoutID = $objLayout->getID(); } else { $catID = UniteFunctionsUC::getVal($data, "section_library_category"); $dataForCreate["catid"] = $catID; if ($dataForCreate["catid"] == "new" || is_numeric($catID) == false || empty($catID)) { $newCatTitle = UniteFunctionsUC::getVal($data, "section_category_new"); $objCat = new UniteCreatorCategory(); $catCreateResponse = $objCat->add($newCatTitle, $layoutType); $newCatID = $catCreateResponse["id"]; $dataForCreate["catid"] = $newCatID; } $createResponse = $objLayout->create($dataForCreate); $layoutID = $createResponse["id"]; } $response = array(); $response["layoutid"] = $layoutID; return $response; } public function getLayoutGridDataForEditor($data) { $layoutID = UniteFunctionsUC::getVal($data, "layoutid"); $objLayout = new UniteCreatorLayout(); $objLayout->initByID($layoutID); $gridData = $objLayout->getGridDataForEditor(); $gridData = json_encode($gridData); $response = array(); $response["grid_data"] = $gridData; return $response; } }