first commit
This commit is contained in:
@@ -0,0 +1,231 @@
|
||||
<?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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user