part( 'post_types' )->getAllCaps() );
if(empty($arrOriginalTypes))
$arrOriginalTypes = array();
return($arrOriginalTypes);
}
/**
* check if visual composer in on current page
*/
public static function isVcOnAdminPage(){
$screen = @get_current_screen();
if(empty($screen))
return(false);
$baseType = $screen->base;
if($baseType != "post")
return(false);
//check if can be included in all pages
$includeInPostTypes = HelperUC::getGeneralSetting("vc_post_types");
if($includeInPostTypes == "all")
return(true);
if(function_exists("vc_editor_post_types") == false)
return(false);
$arrVcPostTypes = vc_editor_post_types();
$arrVcPostTypes[] = "templatera";
$found = in_array( get_post_type(), $arrVcPostTypes);
//if not found, check in original post types
if($found == false){
$arrOriginalTypes = self::getVcOriginalPostTypes();
$found = in_array( get_post_type(), $arrOriginalTypes);
}
return($found);
}
/**
* return if vc addons enabled by general setting
*/
public static function isVCAddonsEnabled(){
$isEnabled = HelperUC::getGeneralSetting("vc_enable");
$isEnabled = UniteFunctionsUC::strToBool($isEnabled);
return($isEnabled);
}
/**
* on add outside scripts
*/
public static function onAddOutsideScripts(){
$isVCPage = self::isVcOnAdminPage();
if($isVCPage == false)
return(false);
$isVCAddonsEnabled = self::isVCAddonsEnabled();
if($isVCAddonsEnabled == false)
return(false);
self::onVCPagesScripts();
}
/**
* get client options script
*/
private static function getClientOptionsScript(){
$options = array();
$options["thumbs_type"] = HelperUC::getGeneralSetting("vc_page_thumbs_type");
//if not enought preview images, don't show the thumbs mode at all
if(self::$numPreviewImages < self::$numAddons / 2)
$options["thumbs_type"] = "none";
$strOptions = UniteFunctionsUC::jsonEncodeForClientSide($options);
$strClient = " var g_ucVCOptions = $strOptions;";
return($strClient);
}
/**
* put scripts on visual composer pages
*/
public static function onVCPagesScripts(){
UniteCreatorAdmin::addScripts_settingsBase("nojqueryui");
$globalJsOutput = HelperHtmlUC::getGlobalJsOutput();
$jsVCOptions = self::getClientOptionsScript();
$globalJsOutput .= "\n".$jsVCOptions;
UniteProviderFunctionsUC::printCustomScript($globalJsOutput);
HelperUC::addScriptAbsoluteUrl(GlobalsUC::$url_provider."assets/uc_general_settings.js", "uc_general_settings");
HelperUC::addStyleAbsoluteUrl( GlobalsUC::$url_provider."assets/jquery-ui-custom-vc.css", "jquery-ui-custom-vc");
HelperUC::addStyleAbsoluteUrl( GlobalsUC::$url_provider."assets/provider_admin.css", "uc_provider_admin");
//dmp("get scripts");exit();
}
private function a______MAP_ADDONS_PARAMS_____(){}
/**
* get child params from parent param
* where there are multiple params from one
*/
private function getChildParams($param){
$objSettings = new UniteCreatorSettings();
$objSettings->addByCreatorParam($param);
$arrParams = $objSettings->getSettingsAsCreatorParams();
return($arrParams);
}
/**
* get vc param from creator param
*/
private function getVCParam($param){
$vcParam = $param;
$vcParam["param_name"] = $vcParam["name"];
$vcParam["heading"] = $vcParam["title"];
$vcParam["value"] = UniteFunctionsUC::getVal($vcParam, "default_value");
//validation
if(empty($vcParam["type"]))
return(null);
if(empty($vcParam["param_name"]))
return(null);
if(isset($vcParam["admin_label"]))
$vcParam["admin_label"] = UniteFunctionsUC::strToBool($vcParam["admin_label"]);
switch($vcParam["type"]){
case "uc_hr":
$vcParam["heading"] = "
";
break;
}
return($vcParam);
}
/**
* convert params object to vc params object
*/
private function mapParams($arrParams){
$vcParams = array();
foreach($arrParams as $param){
$paramType = $param["type"];
$isMultipleSettingType = UniteCreatorSettings::isMultipleUCSettingType($paramType);
//--- multiple type
if($isMultipleSettingType){
$arrChildParams = $this->getChildParams($param);
foreach($arrChildParams as $childParam){
$vcParamChild = $this->getVCParam($childParam);
if(!empty($vcParamChild))
$vcParams[] = $vcParamChild;
}
continue;
}
//--- normal type
$vcParam = $this->getVCParam($param);
if(!empty($vcParam))
$vcParams[] = $vcParam;
}
return($vcParams);
}
/**
* map addon
*/
private function mapAddon($data){
$name = UniteFunctionsUC::getVal($data, "name");
$addonName = UniteFunctionsUC::getVal($data, "addon_name");
$shortcode = "ucaddon_".$addonName;
$category = UniteFunctionsUC::getVal($data, "category");
$description = UniteFunctionsUC::getVal($data, "description");
$class = "uc-addon";
$params = UniteFunctionsUC::getVal($data, "params", array());
$params = $this->mapParams($params);
$settings = array();
$settings["name"] = __($name, ADDONLIBRARY_TEXTDOMAIN);
$settings["base"] = $shortcode;
$settings["addon_name"] = $addonName;
$settings["class"] = $class;
$settings["icon"] = UniteFunctionsUC::getVal($data, "icon");
if($this->isAddPreviewImage == true)
$settings["preview"] = UniteFunctionsUC::getVal($data, "preview");
$settings["category"] = $category;
$settings["description"] = __($description, ADDONLIBRARY_TEXTDOMAIN);
$settings["params"] = $params;
$settings["content_element"] = true;
$settings["controls"] = "full";
$settings["show_settings_on_create"] = true;
//$settings["as_parent"] = array('except' => $shortcode);
//$settings["is_container"] = true;
//$settings["js_view"] = "VcColumnView";
//create new class (validate alpha numeric shortcode
$isAlphaNumeric = UniteFunctionsUC::isAlphaNumeric($shortcode);
if($isAlphaNumeric == false)
return(false);
$code = "class WPBakeryShortCode_{$shortcode} extends UCVCAddonBase{};";
eval($code);
//dmp($settings);
//exit();
//dmp($settings);
//exit();
vc_map($settings);
}
/**
* get addon params
*
*/
private function getAddonParams(UniteCreatorAddon $addon){
$params = $addon->getProcessedMainParams();
if(empty($params))
$params = array();
$hasSettings = !empty($params);
$hasItems = $addon->isHasItems();
$addonName = $addon->getName();
//add init setting param
if($hasSettings == true){
$paramInit = array();
$paramInit["type"] = "uc_init_settings";
$paramInit["title"] = "";
$paramInit["name"] = "uc_init_settings";
$paramInit["addon_name"] = $addonName;
$params[] = $paramInit;
}else{ //no settings - add static text
$paramText = array();
$paramText["type"] = "uc_statictext";
$paramText["title"] = __("No Settings Available", ADDONLIBRARY_TEXTDOMAIN);
$paramText["name"] = "uc_text_nosettings";
$paramText["addon_name"] = $addonName;
$params[] = $paramText;
}
//add items param
if($hasItems == true){
$paramItems = array();
$paramItems["type"] = "uc_items";
$paramItems["title"] = "";
$paramItems["name"] = "uc_items_data";
$paramItems["group"] = __("Items", ADDONLIBRARY_TEXTDOMAIN);
$paramItems["addon_name"] = $addonName;
$params[] = $paramItems;
}
//add fonts param
$paramFonts = array();
$paramFonts["type"] = "uc_fonts";
$paramFonts["title"] = "";
$paramFonts["name"] = "uc_fonts_data";
$paramFonts["group"] = __("Fonts", ADDONLIBRARY_TEXTDOMAIN);
$paramFonts["addon_name"] = $addonName;
$params[] = $paramFonts;
//add assets url to all params
$urlAssets = $addon->getUrlAssets();
foreach($params as $key=>$param){
$param["url_assets"] = $urlAssets;
$params[$key] = $param;
}
return($params);
}
/**
* map addon from onject
*/
private function mapAddonFromObject(UniteCreatorAddon $addon, $forceTitle = null){
if(!empty($forceTitle))
$catTitle = $forceTitle;
else{
$catTitle = $addon->getCatTitle();
}
if(empty($catTitle))
$catTitle = $this->vcFolder;
$addonAlias = $addon->getAlias();
//skip addon without alias
if(empty($addonAlias))
return(false);
self::$numAddons++;
$data = array();
$data["name"] = $addon->getTitle();
$data["addon_name"] = $addonAlias;
$data["category"] = $catTitle;
$data["description"] = $addon->getDescription();
$data["icon"] = $addon->getUrlIcon();
$urlPreview = $addon->getUrlPreview();
$data["preview"] = $urlPreview;
if(!empty($urlPreview))
self::$numPreviewImages++;
$params = $this->getAddonParams($addon);
$data["params"] = $params;
$this->mapAddon($data);
}
/**
* create custom params
*/
private function createCustomParams(){
UniteVCCustomParams::createCustomParams();
}
/**
* put previews array
*/
private function putArrPreviews(){
dmp("get previews");
exit();
}
/**
* map all addons
*/
private function mapAllAddons(){
$objAddons = new UniteCreatorAddons();
$arrAddons = $objAddons->getCatAddons(null, false, "active", self::ADDONTYPE_VC);
$forceTitle = null;
$showAddonCats = HelperUC::getGeneralSetting("vc_group_cats");
$showAddonCats = UniteFunctionsUC::strToBool($showAddonCats);
if($showAddonCats == false)
$forceTitle = $this->vcFolder;
$arrNames = array();
foreach($arrAddons as $addon){
$name = $addon->getName();
if(isset($arrNames[$name]))
continue;
$arrNames[$name] = true;
$this->mapAddonFromObject($addon, $forceTitle);
}
}
private function a______IMPORT_LAYOUT_____(){}
/**
* put import vc layout html
*/
private function putDialogImportVCLayoutHtml(){
$dialogTitle = __("Import Layout to Visual Composer",ADDONLIBRARY_TEXTDOMAIN);
?>
isVcOnAdminPage();
if($isVcOnPosts == false){
return(false);
}
add_meta_box("addon_library_import_metabox", __("Addon Library", ADDONLIBRARY_TEXTDOMAIN), array($this,"putMegaboxImportHtml"), null, "side");
}
/**
* add dialog import if needed
*/
public function onAdminFooter(){
//put the footer content only on vc pages
$isVcOnPosts = $this->isVcOnAdminPage();
if($isVcOnPosts == false)
return(false);
if($this->isMetaboxEnabled)
$this->putDialogImportVCLayoutHtml();
//remove me
//$htmlDebug = HelperHtmlUC::getGlobalDebugDivs();
//echo $htmlDebug;
}
/**
* update post
*/
private function updatePostWithLayoutContent($postID, $content){
$arrPost = array();
$arrPost["ID"] = $postID;
$arrPost["post_content"] = $content;
//$arrPost["post_title"] = $title;
wp_update_post($arrPost);
}
/**
* import vc layout zip
*/
private function importVCLayout($data){
$postID = UniteFunctionsUC::getVal($data, "postid");
$postID = (int)$postID;
$arrTempFile = UniteFunctionsUC::getVal($_FILES, "import_layout");
$exporter = new UniteCreatorLayoutsExporterVC();
$isOverwriteAddons = UniteFunctionsUC::getVal($data, "overwrite_addons");
$isOverwriteAddons = UniteFunctionsUC::strToBool($isOverwriteAddons);
$content = $exporter->importVCLayout($arrTempFile, $isOverwriteAddons);
$importedTitle = $exporter->getLayoutTitle();
$urlEditPost = "";
if(!empty($postID)){
//get title
$title = UniteFunctionsUC::getVal($data, "title");
$this->updatePostWithLayoutContent($postID, $content);
$urlEditPost = get_edit_post_link($postID);
if(empty($title))
$urlEditPost .= "&uc_init_title=".$importedTitle;
}
$response = array();
$response["url_reload"] = $urlEditPost;
if(empty($urlEditPost))
$response["content"] = $content;
return($response);
}
/**
* on ajax action
*/
public function onAjaxAction($found, $action, $data){
if($found == true)
return(true);
switch($action){
case "import_vc_layout":
$response = $this->importVCLayout($data);
HelperUC::ajaxResponseData($response);
break;
default:
return(false);
break;
}
return(true);
}
private function a______INIT_____(){}
/**
* init some options
*/
private function initOptions(){
//init vc folder
$this->vcFolder = HelperUC::getGeneralSetting("vc_folder");
if(empty($this->vcFolder))
$this->vcFolder = "Addon Library";
$thumbsType = HelperUC::getGeneralSetting("vc_page_thumbs_type");
$this->isAddPreviewImage = ($thumbsType != "none");
$this->previewThumbsType = $thumbsType;
}
/**
* init vc integration
*/
public function initVCIntegration(){
if(self::isVCExists() == false)
return(false);
if(self::isVCAddonsEnabled() == false)
return(false);
$this->initOptions();
//include vc related files
require_once GlobalsUC::$pathProvider . 'visual_composer/unitevc_addon_shortcode.class.php';
require_once GlobalsUC::$pathProvider . 'visual_composer/unitevc_custom_params.class.php';
//add_action( 'wp_ajax_wpb_show_edit_form', array( &$this, 'build' ) );
$objSettings = new UniteCreatorSettings();
$this->createCustomParams();
$this->mapAllAddons();
//add metabox
$addMetabox = HelperUC::getGeneralSetting("vc_put_import_metabox");
$addMetabox = UniteFunctionsUC::strToBool($addMetabox);
if($addMetabox == true){
$this->isMetaboxEnabled = true;
add_action( self::ACTION_ADD_METABOXES, array($this, "addPostImportMetabox") );
add_action(self::ACTION_ADMIN_FOOTER, array($this,"onAdminFooter"));
}
$this->addFilter(self::FILTER_ADMIN_AJAX_ACTION, "onAjaxAction",10,3);
}
}
?>