ID; $title = $post->post_title; $name = $post->post_name; $postType = $post->post_type; $this->post = $post; //init extra params if(empty($this->extraParams)) $this->extraParams = array(); $this->extraParams["post_type"] = $postType; //get layout type $layoutType = ""; $params = null; if($postType == GlobalsProviderUC::POST_TYPE_LAYOUT){ $layoutType = GlobalsUnlimitedElements::ADDONSTYPE_ELEMENTOR_TEMPLATE; /* $layoutType = get_post_meta($postID, GlobalsProviderUC::META_KEY_LAYOUT_TYPE, true); if(empty($layoutType) || is_string($layoutType) == false) $layoutType = ""; */ } /* $layoutData = get_post_meta($postID, GlobalsProviderUC::META_KEY_LAYOUT_DATA); //support legacy if($postType == "uc_layout" && empty($layoutData)){ $layoutData = get_post_meta($postID, "layout_data"); if(empty($layoutData)) $layoutData = get_post_meta($postID, "blox_layout_data"); } $this->metaData = $layoutData; if(!empty($layoutData) && is_array($layoutData)) $layoutData = $layoutData[0]; */ //get params $params = get_post_meta($postID, GlobalsProviderUC::META_KEY_LAYOUT_PARAMS, true); $layoutData = ""; $catID = get_post_meta($postID, GlobalsProviderUC::META_KEY_CATID, true); if(empty($catID)) $catID = 0; if(!empty($params) && is_array($params)) $params = $params[0]; $record = array(); $record["ordering"] = 0; $record["title"] = $title; $record["layout_data"] = $layoutData; $record["layout_type"] = $layoutType; $record["name"] = $name; $record["params"] = $params; $record["id"] = $postID; $record["catid"] = $catID; $this->initByRecord($record); } /** * init by post id */ public function initByID($id){ if($id === "current_post"){ $id = null; $post = get_post(); if(empty($post)) UniteFunctionsUC::throwError("Current post not found"); $this->id = $post->ID; }else{ $id = (int)$id; if(empty($id)) UniteFunctionsUC::throwError("Empty layout ID"); $post = @get_post($id); if(empty($post)) UniteFunctionsUC::throwError("layout with id: $id not found"); $this->id = $id; } $this->initByPost($post); } /** * update layout in db */ public function createLayoutInDB($arrInsert, $arrParams = array()){ UniteFunctionsUC::validateNotEmpty($this->objLayoutType, "layout type object"); //set post type $postType = $this->objLayoutType->postType; if(empty($postType)){ if($this->objLayoutType->isBasicType == true) $postType = UniteFunctionsUC::getVal($arrParams, "post_type"); else $postType = GlobalsProviderUC::POST_TYPE_LAYOUT; //basic type - false (blox type) } if(empty($postType)) UniteFunctionsUC::throwError("You must specify post type for import layout"); $title = UniteFunctionsUC::getVal($arrInsert, "title"); $name = UniteFunctionsUC::getVal($arrInsert, "name"); //for non blox layouts - take name from post title if($postType != GlobalsProviderUC::POST_TYPE_LAYOUT) $name = sanitize_title($title); $layoutData = UniteFunctionsUC::getVal($arrInsert, "layout_data"); $catID = UniteFunctionsUC::getVal($arrInsert, "catid"); $parentID = UniteFunctionsUC::getVal($arrParams, "parent_id"); if(is_numeric($parentID) == false) $parentID = null; $arrPost = array(); $arrPost["post_title"] = $title; $arrPost["post_name"] = $name; $arrPost["post_content"] = "unlimited elements layout"; $arrPost["post_type"] = $postType; $arrPost["post_status"] = "publish"; $maxOrder = UniteFunctionsWPUC::getMaxMenuOrder($postType, $parentID); $arrPost["menu_order"] = $maxOrder+1; if(!empty($parentID)){ $arrPost["post_parent"] = $parentID; } $postID = wp_insert_post($arrPost); if(!empty($catID)) add_post_meta($postID, GlobalsProviderUC::META_KEY_CATID, $catID); return($postID); //update blox page related /* if($this->objLayoutType->isBloxPage == false) return($postID); add_post_meta($postID, GlobalsProviderUC::META_KEY_BLOX_PAGE, "true"); if(!empty($layoutData)) add_post_meta($postID, GlobalsProviderUC::META_KEY_LAYOUT_DATA, $layoutData); //add layout type meta if($postType == GlobalsProviderUC::POST_TYPE_LAYOUT){ add_post_meta($postID, GlobalsProviderUC::META_KEY_LAYOUT_TYPE, $this->objLayoutType->typeNameDistinct); if(!empty($catID)) add_post_meta($postID, GlobalsProviderUC::META_KEY_CATID, $catID); } //update page template if($this->objLayoutType->defaultBlankTemplate == true) UniteFunctionsWPUC::updatePageTemplateAttribute($postID, GlobalsProviderUC::PAGE_TEMPLATE_LANDING_PAGE); return($postID); */ } /** * update layout in db */ public function updateLayoutInDB($arrUpdate){ $postID = $this->id; //update post $title = UniteFunctionsUC::getVal($arrUpdate, "title"); if($title == "Auto Draft") UniteFunctionsUC::throwError("Please change the title, 'Auto Draft' is a bad title :),

The page will be published when you save"); $arrUpdatePost = array(); //update title if needed if(array_key_exists("title", $arrUpdate)) $arrUpdatePost["post_title"] = $arrUpdate["title"]; $postStatus = $this->post->post_status; if($postStatus == "auto-draft"){ $arrUpdatePost["post_status"] = "draft"; //set import title $importTitle = UniteFunctionsUC::getVal($arrUpdate, "import_title"); if(empty($importTitle)){ $importTitle = $this->getNewLayoutTitle(); } $arrUpdatePost["post_title"] = $importTitle; } //update post name (if title updated) if(isset($arrUpdatePost["post_title"])){ $postName = $this->post->post_name; if(empty($postName)) $arrUpdatePost["post_name"] = sanitize_title($arrUpdatePost["post_title"]); } //update post if(!empty($arrUpdatePost)){ $arrUpdatePost["ID"] = $postID; $success = wp_update_post($arrUpdatePost); if($success == 0) UniteFunctionsUC::throwError("Unable to update page"); } // --- update layout params (if exists) if(array_key_exists("params", $arrUpdate)){ $params = UniteFunctionsUC::getVal($arrUpdate, "params"); update_post_meta($postID, GlobalsProviderUC::META_KEY_LAYOUT_PARAMS, $params); } // --- update layout data (if exists) if(array_key_exists("layout_data", $arrUpdate)){ $layoutData = $arrUpdate["layout_data"]; update_post_meta($postID, GlobalsProviderUC::META_KEY_BLOX_PAGE, "true"); $updated = update_post_meta($postID, GlobalsProviderUC::META_KEY_LAYOUT_DATA, $layoutData); //small validation if($updated == false){ $oldData = $this->getRawLayoutData(); if($oldData != $layoutData) UniteFunctionsUC::throwError("Unable to update page layout data"); } //update post content with stripped html $layoutHtml = HelperUC::outputLayout($postID, true); $layoutHtml = UniteFunctionsUC::getPrettyHtml($layoutHtml); $arrUpdateContent = array(); $arrUpdateContent["ID"] = $postID; $arrUpdateContent["post_content"] = $layoutHtml; wp_update_post($arrUpdateContent); } } /** * delete layout */ public function delete(){ $this->validateInited(); wp_delete_post($this->id, true); delete_metadata("post", $this->id, GlobalsProviderUC::META_KEY_BLOX_PAGE); delete_metadata("post", $this->id, GlobalsProviderUC::META_KEY_LAYOUT_DATA); delete_metadata("post", $this->id, GlobalsProviderUC::META_KEY_CATID); delete_metadata("post", $this->id, GlobalsProviderUC::META_KEY_LAYOUT_TYPE); } /** * get parent id */ public function getParentID(){ $this->validateInited(); $parentID = $this->post->post_parent; return($parentID); } /** * get revision */ public function getLastRevision(){ $this->validateInited(); $arrRevisions = wp_get_post_revisions($this->id); if(empty($arrRevisions)) return(null); $firstRevision = array_shift($arrRevisions); if(empty($firstRevision)) UniteFunctionsUC::throwError("Failed to get template revision"); $revisionID = $firstRevision->ID; return($revisionID); } /** * check if layout exists by title */ protected function isLayoutExistsByTitle($title, $layoutType){ $isExists = UniteFunctionsWPUC::isPostExistsByTitle($title); return($isExists); } /** * get post layout base name */ private function getPostBaseName($postID){ if(empty($postID)) return(null); $post = get_post($postID); if(empty($post)) return(null); $postTitle = $post->post_title; $postName = $post->post_name; if(empty($postTitle)) return($postName); $baseName = HelperUC::convertTitleToAlias($postTitle); return($baseName); } /** * get new layout name */ protected function getNewLayoutName($title, $importParams){ $parentID = UniteFunctionsUC::getVal($importParams, "parent_id"); //get base name $baseName = null; if(!empty($parentID)) $baseName = $this->getPostBaseName($parentID); $name = $this->generateName($title, null, $baseName); return($name); } /** * get export layout name */ public function getExportLayoutName(){ $this->validateInited(); $parentID = $this->post->post_parent; $prefix = "template"; $layoutName = $prefix; if(!empty($parentID)) $layoutName .= "_". $this->getPostBaseName($parentID); $layoutName .= "_".$this->getPostBaseName($this->id); $layoutName = HelperUC::convertTitleToHandle($layoutName); return($layoutName); } /** * check if layout exists by title */ protected function isLayoutExistsByName($name, $layoutType){ $isExists = UniteFunctionsWPUC::isPostNameExists($name); return($isExists); } /** * generate addon with content */ public function generateHtmlAddonContentForLayout($postContent){ $objAddons = new UniteCreatorAddons(); $isExists = $objAddons->isAddonExistsByName("html_editor"); if($isExists == false) return(null); $objAddon = new UniteCreatorAddon(); $objAddon->initByName("html_editor"); $arrContent = array(); $arrContent["editor"] = $postContent; $objAddon->setParamsValues($arrContent); $arrAddonContent = $objAddon->getDataForLayoutGrid(); return($arrAddonContent); } /** * check content for new layout * if there is no saved content, put content from post content box */ public function checkNewPostLayoutContent(){ $this->validateInited(); //check meta data if(!empty($this->metaData)) return(false); //get post content $postContent = $this->post->post_content; $postContent = trim($postContent); if(empty($postContent)) return(false); //generate addon data $arrAddonContent = $this->generateHtmlAddonContentForLayout($postContent); if(empty($arrAddonContent)) return(false); //add row to empty layout with the addon data $this->addRowWithHtmlAddon($arrAddonContent); } /** * check if the post is group * if it has children in it */ public function isGroup(){ $this->validateInited(); $arrChildren = UniteFunctionsWPUC::getPostChildren($this->post); if(!empty($arrChildren)) return(true); return(false); } /** * get edit layout url */ public function getUrlEditPost(){ $this->validateInited(); $urlEdit = get_edit_post_link($this->id); return($urlEdit); } /** * get edit layout url */ public function getUrlViewPost(){ $this->validateInited(); $urlView = get_permalink($this->id); return($urlView); } /** * get page image */ public function getPreviewImage($getThumb = false){ $this->validateInited(); $attachmentID = UniteFunctionsWPUC::getFeaturedImageID($this->id); $urlPreview = null; if(!empty($attachmentID)){ if($getThumb == true) $urlPreview = UniteFunctionsWPUC::getUrlAttachmentImage($attachmentID, UniteFunctionsWPUC::THUMB_MEDIUM); else $urlPreview = UniteFunctionsWPUC::getUrlAttachmentImage($attachmentID); } return($urlPreview); } /** * get default image preview */ public function getDefaultPreviewImage(){ $typeName = $this->objLayoutType->typeName; $urlPreview = HelperUC::getDefaultPreviewImage($typeName); return($urlPreview); } }