282 lines
5.8 KiB
PHP
282 lines
5.8 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* @package Unlimited Elements
|
||
|
* @author unlimited-elements.com
|
||
|
* @copyright (C) 2012 Unite CMS, All Rights Reserved.
|
||
|
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
|
||
|
* */
|
||
|
defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
||
|
|
||
|
class UniteCreatorLayouts extends UniteCreatorLayoutsWork{
|
||
|
|
||
|
|
||
|
/**
|
||
|
* save order from data
|
||
|
*/
|
||
|
public function updateOrdering($arrIDs){
|
||
|
|
||
|
foreach($arrIDs as $order=>$postID)
|
||
|
UniteFunctionsWPUC::updatePostOrdering($postID, $order);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* delete layouts
|
||
|
*/
|
||
|
public function deleteLayouts($arrIDs){
|
||
|
|
||
|
if(empty($arrIDs))
|
||
|
UniteFunctionsUC::throwError("no id's to delete");
|
||
|
|
||
|
UniteFunctionsWPUC::deleteMultiplePosts($arrIDs);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* check if layout exists by title
|
||
|
*/
|
||
|
public function isLayoutExistsByTitle($title, $layoutType = null){
|
||
|
|
||
|
$isExists = UniteFunctionsWPUC::isPostExistsByTitle($title);
|
||
|
|
||
|
return($isExists);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* posts to layouts
|
||
|
*/
|
||
|
private function postsToLayouts($arrPosts){
|
||
|
|
||
|
$arrLayouts = array();
|
||
|
foreach($arrPosts as $post){
|
||
|
|
||
|
$objLayout = new UniteCreatorLayout();
|
||
|
$objLayout->initByPost($post);
|
||
|
|
||
|
$arrLayouts[] = $objLayout;
|
||
|
}
|
||
|
|
||
|
return($arrLayouts);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* posts to layouts
|
||
|
*/
|
||
|
private function postsToShort($arrPosts){
|
||
|
|
||
|
$arrLayouts = array();
|
||
|
foreach($arrPosts as $post){
|
||
|
|
||
|
$postID = $post->ID;
|
||
|
$postTitle = $post->post_title;
|
||
|
|
||
|
if(empty($postTitle))
|
||
|
$postTitle = $post->post_name;
|
||
|
|
||
|
$arrShort[$postID] = $postTitle;
|
||
|
}
|
||
|
|
||
|
return($arrShort);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* move layouts to some category by change category id
|
||
|
*/
|
||
|
protected function moveLayout($postID, $catID, $targetParentID = null){
|
||
|
|
||
|
|
||
|
$postID = (int)$postID;
|
||
|
$catID = (int)$catID;
|
||
|
|
||
|
$post = get_post($postID);
|
||
|
|
||
|
if(empty($post))
|
||
|
return(false);
|
||
|
|
||
|
//update post parent ID
|
||
|
|
||
|
$parentID = 0;
|
||
|
if(!empty($targetParentID))
|
||
|
$parentID = (int)$targetParentID;
|
||
|
|
||
|
$arrUpdate = array();
|
||
|
$arrUpdate["post_parent"] = $parentID;
|
||
|
|
||
|
UniteFunctionsWPUC::updatePost($postID, $arrUpdate);
|
||
|
|
||
|
//update category ID
|
||
|
update_post_meta($postID, GlobalsProviderUC::META_KEY_CATID, $catID);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* get addons array
|
||
|
*/
|
||
|
public function getArrLayouts($order = null, $params = array(), $layoutType = null){
|
||
|
|
||
|
$objLayoutType = UniteCreatorAddonType::getAddonTypeObject($layoutType, true);
|
||
|
|
||
|
$arrLayouts = $this->getCatLayouts("all", $objLayoutType);
|
||
|
|
||
|
return($arrLayouts);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* get category layouts. category id can be null, all number or 0 (uncategorized)
|
||
|
*/
|
||
|
public function getCatLayouts($catID = null, $objLayoutType=null, $onlyRecords = false, $options = array()){
|
||
|
|
||
|
$postType = null;
|
||
|
|
||
|
$sortBY = UniteFunctionsWPUC::SORTBY_MENU_ORDER;
|
||
|
|
||
|
$arrParams = array();
|
||
|
|
||
|
$layoutType = null;
|
||
|
if(!empty($objLayoutType)){
|
||
|
|
||
|
$postType = $objLayoutType->postType;
|
||
|
|
||
|
$layoutType = $objLayoutType->typeName;
|
||
|
if($objLayoutType->isBasicType)
|
||
|
$layoutType = null;
|
||
|
}
|
||
|
|
||
|
if(empty($postType))
|
||
|
$postType = GlobalsProviderUC::POST_TYPE_LAYOUT;
|
||
|
|
||
|
$metaQuery = array();
|
||
|
|
||
|
$parentID = null;
|
||
|
|
||
|
if($catID == "all"){
|
||
|
$parentID = "all";
|
||
|
$catID = null;
|
||
|
|
||
|
/*
|
||
|
dmp("add max");
|
||
|
UniteFunctionsUC::showTrace();
|
||
|
dmp($options);
|
||
|
*/
|
||
|
|
||
|
}
|
||
|
|
||
|
if($catID == "zero")
|
||
|
$catID = 0;
|
||
|
|
||
|
if($catID !== null)
|
||
|
$metaQuery[] = array("key"=>GlobalsProviderUC::META_KEY_CATID, "value"=>$catID);
|
||
|
|
||
|
$arrParams["meta_query"] = $metaQuery;
|
||
|
|
||
|
|
||
|
if(empty($parentID))
|
||
|
$parentID = UniteFunctionsUC::getVal($options, "parent_id");
|
||
|
|
||
|
if(empty($parentID))
|
||
|
$parentID = 0;
|
||
|
|
||
|
//if parent id is 'all' - get all the layouts of the category
|
||
|
if($parentID !== "all")
|
||
|
$arrParams["post_parent"] = $parentID;
|
||
|
|
||
|
//add search
|
||
|
$filterSearch = UniteFunctionsUC::getVal($options, "filter_search");
|
||
|
|
||
|
if(!empty($filterSearch))
|
||
|
$arrParams["title_filter"] = $filterSearch;
|
||
|
|
||
|
$arrPosts = UniteFunctionsWPUC::getPostsByType($postType, $sortBY, $arrParams, true);
|
||
|
|
||
|
//dmp("get cat layouts");dmp($arrPosts);exit();
|
||
|
|
||
|
//don't add the parent post as well
|
||
|
/*
|
||
|
if(!empty($parentID)){
|
||
|
$post = get_post($parentID);
|
||
|
array_unshift($arrPosts, $post);
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
if($onlyRecords == true)
|
||
|
return($arrPosts);
|
||
|
|
||
|
$arrLayouts = $this->postsToLayouts($arrPosts);
|
||
|
|
||
|
return($arrLayouts);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* get number of category layouts
|
||
|
*/
|
||
|
public function getNumCatLayouts($catID, UniteCreatorAddonType $objAddonType){
|
||
|
|
||
|
$arrLayouts = $this->getCatLayouts($catID, $objAddonType, true);
|
||
|
if(empty($arrLayouts))
|
||
|
return(0);
|
||
|
|
||
|
$numLayouts = count($arrLayouts);
|
||
|
|
||
|
return($numLayouts);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* get layouts array short version - without content
|
||
|
*/
|
||
|
public function getArrLayoutsShort($addEmpty = false, $params = array(), $layoutType = null){
|
||
|
|
||
|
$objLayoutType = UniteCreatorAddonType::getAddonTypeObject($layoutType, true);
|
||
|
|
||
|
$arrPosts = $this->getCatLayouts(null, $objLayoutType, true);
|
||
|
|
||
|
|
||
|
$arrShort = $this->postsToShort($arrPosts);
|
||
|
|
||
|
if($addEmpty == true){
|
||
|
$arrItem = array("id"=>"empty", "title"=>"[Not Selected]");
|
||
|
$arrAdd = array();
|
||
|
$arrAdd["empty"] = esc_html__("[Not Selected]", "unlimited-elements-for-elementor");
|
||
|
|
||
|
$arrShort = array_merge($arrAdd, $arrShort);
|
||
|
}
|
||
|
|
||
|
return($arrShort);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* export layout from get data
|
||
|
*/
|
||
|
public function exportLayout($data = null){
|
||
|
|
||
|
$layoutID = UniteFunctionsUC::getVal($data, "id");
|
||
|
$layoutID = (int)$layoutID;
|
||
|
|
||
|
$objLayout = new UniteCreatorLayout();
|
||
|
$objLayout->initByID($layoutID);
|
||
|
|
||
|
$layoutType = $objLayout->getLayoutType();
|
||
|
|
||
|
if($layoutType != GlobalsUnlimitedElements::ADDONSTYPE_ELEMENTOR_TEMPLATE){
|
||
|
parent::exportLayout($data);
|
||
|
return(false);
|
||
|
}
|
||
|
|
||
|
$objExporter = new UniteCreatorLayoutsExporterElementor();
|
||
|
$objExporter->initByLayout($objLayout);
|
||
|
|
||
|
$objExporter->exportElementorLayout();
|
||
|
exit();
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|