landing-klikaset/wp-content/plugins/unlimited-elements-for-elem.../provider/toolset_integrate.class.php

231 lines
4.7 KiB
PHP
Raw Normal View History

2024-05-06 11:04:37 +07:00
<?php
/**
* @package Unlimited Elements
* @author UniteCMS http://unitecms.net
* @copyright Copyright (c) 2016 UniteCMS
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/
//no direct accees
defined ('UNLIMITED_ELEMENTS_INC') or die ('restricted aceess');
class UniteCreatorToolsetIntegrate{
private static $objTypesService;
private static $prefix = "cf_";
const GROUP_PREFIX = "_repeatable_group_";
/**
* return if toolst exists
*/
public static function isToolsetExists(){
if(function_exists("wpcf_admin_fields_get_groups"))
return(true);
return(false);
}
/**
* get fields by post type
*/
private function getFieldsByPostType($postType){
$arrFields = wpcf_admin_fields_get_active_fields_by_post_type($postType);
return($arrFields);
}
/**
* get post field data
*/
private function getPostFieldData($post, $fieldID){
if(empty(self::$objTypesService))
self::$objTypesService = new Types_Field_Service( false );
$content = self::$objTypesService->render_frontend( new Types_Field_Gateway_Wordpress_Post(), $post, $fieldID);
return($content);
}
/**
* get field key suffix by type
*/
private function getFieldKeySuffix($field){
$suffix = "";
$type = UniteFunctionsUC::getVal($field, "type");
switch($type){
case "audio":
case "email":
case "embed":
case "image":
case "textarea":
case "skype":
case "wysiwyg":
$suffix = "|raw";
break;
}
return($suffix);
}
/**
* get group field data by name
*/
private function getGroupFieldSlug($fieldName){
if(strpos($fieldName, self::GROUP_PREFIX) === false)
return(null);
$groupID = str_replace(self::GROUP_PREFIX, "", $fieldName);
if(is_numeric($groupID) == false)
return(null);
$arrGroup = wpcf_admin_fields_get_group($groupID);
if(empty($arrGroup))
return(null);
return($arrGroup);
}
/**
* get group items posts
*/
private function getGroupItemsPosts($arrGroup, $postID){
}
/**
*
* Enter description here ...
* @param unknown_type $post
* @param unknown_type $gruopID
*/
private function getPostFieldGroupData($post, $gruopSlug){
$postID = $post->ID;
$arrRelatedPosts = toolset_get_related_posts(
$postID, // get posts related to this one
$gruopSlug, // relationship between the posts
'parent', // get posts where $parent_post is the parent in given relationship
999, 0, // pagination
array(), // How was his surname, again…?
'post_id',
'child'
);
if(empty($arrRelatedPosts))
return(array());
$arrResponse = array();
foreach( $arrRelatedPosts as $post ) {
$arrFieldsData = get_post_meta($post, '', true);
$arrData = array();
foreach($arrFieldsData as $key => $arrValue){
if($key == "toolset-post-sortorder")
continue;
if(is_array($arrValue) == true)
$value = $arrValue[0];
else
$value = $arrValues;
$keyToAdd = str_replace("wpcf-", "", $key);
$arrData[$keyToAdd] = $value;
}
$arrResponse[] = $arrData;
}
return($arrResponse);
}
/**
* get post fields with data
*/
public function getPostFieldsWidthData($postID, $returnKeysOnly = false){
$isExists = self::isToolsetExists();
if(!$isExists)
return(array());
$post = get_post($postID);
if(empty($post))
return(array());
$postType = $post->post_type;
$arrFields = $this->getFieldsByPostType($postType);
$arrData = array();
foreach($arrFields as $fieldID => $field){
$arrGroup = $this->getGroupFieldSlug($fieldID);
if(!empty($arrGroup)){
$fieldID = UniteFunctionsUC::getVal($arrGroup, "slug");
}
$fieldKey = self::$prefix.$fieldID;
$fieldKey = str_replace("-", "_", $fieldKey);
if($returnKeysOnly == true){
$fieldKeySuffix = $this->getFieldKeySuffix($field);
$arrData[] = $fieldKey.$fieldKeySuffix;
continue;
}
//get content
if(!empty($arrGroup)){
$gruopSlug = UniteFunctionsUC::getVal($arrGroup, "slug");
$fieldContent = $this->getPostFieldGroupData($post, $gruopSlug);
}
else
$fieldContent = $this->getPostFieldData($post, $fieldID);
$arrData[$fieldKey] = $fieldContent;
}
return($arrData);
}
/**
* get post fields keys
*/
public function getPostFieldsKeys($postID){
$arrKeys = $this->getPostFieldsWidthData($postID, true);
return($arrKeys);
}
}