Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
unlimited-elements-for-elementor
/
provider
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access'); class UniteCreatorSettings extends UniteCreatorSettingsWork { protected function addSettingsProvider($type, $name, $value, $title, $extra) { $isAdded = false; return $isAdded; } private function showTax() { $showTax = UniteFunctionsUC::getGetVar("maxshowtax", "", UniteFunctionsUC::SANITIZE_NOTHING); $showTax = UniteFunctionsUC::strToBool($showTax); if ($showTax == true) { $args = array("taxonomy" => ""); $cats = get_categories($args); $arr1 = UniteFunctionsWPUC::getTaxonomiesWithCats(); $arrPostTypes = UniteFunctionsWPUC::getPostTypesAssoc(); $arrTax = UniteFunctionsWPUC::getTaxonomiesWithCats(); $arrCustomTypes = get_post_types(array('_builtin' => false)); $arr = get_taxonomies(); $taxonomy_objects = get_object_taxonomies('post', 'objects'); dmp($taxonomy_objects); dmp($arrCustomTypes); dmp($arrPostTypes); exit; } } protected function addTemplatePicker($name, $value, $title, $extra) { $this->addPostIDSelect($name . "_templateid", "Choose Template", null, "elementor_template"); } protected function getCategoriesFromAllPostTypes($arrPostTypes) { if (empty($arrPostTypes)) { return array(); } $arrAllCats = array(); $arrAllCats[__("All Categories", "unlimited-elements-for-elementor")] = "all"; foreach ($arrPostTypes as $name => $arrType) { if ($name == "page") { continue; } $postTypeTitle = UniteFunctionsUC::getVal($arrType, "title"); $cats = UniteFunctionsUC::getVal($arrType, "cats"); if (empty($cats)) { continue; } foreach ($cats as $catID => $catTitle) { if ($name != "post") { $catTitle = $catTitle . " ({$postTypeTitle} type)"; } $arrAllCats[$catTitle] = $catID; } } return $arrAllCats; } private function addPostTermsPicker_getArrTaxonomies($arrPostTypesWithTax) { $arrAllTax = array(); $arrTaxonomies = array(); foreach ($arrPostTypesWithTax as $typeName => $arrType) { $arrItemTax = UniteFunctionsUC::getVal($arrType, "taxonomies"); $arrTaxOutput = array(); $arrDuplicateValues = UniteFunctionsUC::getArrayDuplicateValues($arrItemTax); foreach ($arrItemTax as $slug => $taxTitle) { $isDuplicate = array_key_exists($taxTitle, $arrDuplicateValues); if ($taxTitle == "Tag" && $slug != "post_tag") { $isDuplicate = true; } if (isset($arrAllTax[$taxTitle])) { $isDuplicate = true; } if ($isDuplicate == true) { $taxTitle = UniteFunctionsUC::convertHandleToTitle($slug); } $taxTitle = ucwords($taxTitle); $arrTaxOutput[$slug] = $taxTitle; $arrAllTax[$taxTitle] = $slug; } if (!empty($arrTaxOutput)) { $arrTaxonomies[$typeName] = $arrTaxOutput; } } $response = array(); $response["post_type_tax"] = $arrTaxonomies; $response["taxonomies_simple"] = $arrAllTax; return $response; } protected function addUsersPicker($name, $value, $title, $extra) { $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $arrType = array(); $arrType["custom"] = __("Custom Query", "unlimited-elements-for-elementor"); $arrType["manual"] = __("Manual Selection", "unlimited-elements-for-elementor"); $arrType = array_flip($arrType); $this->addSelect($name . "_type", $arrType, __("Select Users By", "unlimited-elements-for-elementor"), "custom", $params); $arrConditionCustom = array(); $arrConditionCustom[$name . "_type"] = "custom"; $arrConditionManual = array(); $arrConditionManual[$name . "_type"] = "manual"; $arrRoles = UniteFunctionsWPUC::getRolesShort(); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["description"] = __("Leave empty for all the roles", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $arrConditionCustom; if (!empty($arrRoles)) { $arrRoles = array_flip($arrRoles); } $role = UniteFunctionsUC::getVal($value, $name . "_role"); if (empty($role)) { $role = UniteFunctionsUC::getArrFirstValue($arrRoles); } $params["is_multiple"] = true; $params["placeholder"] = __("All Roles", "unlimited-elements-for-elementor"); $this->addMultiSelect($name . "_role", $arrRoles, __("Select Roles", "unlimited-elements-for-elementor"), $role, $params); $arrRoles = UniteFunctionsWPUC::getRolesShort(); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["elementor_condition"] = $arrConditionCustom; if (!empty($arrRoles)) { $arrRoles = array_flip($arrRoles); } $roleExclude = UniteFunctionsUC::getVal($value, $name . "_role_exclude"); $params["is_multiple"] = true; $this->addMultiSelect($name . "_role_exclude", $arrRoles, __("Exclude Roles", "unlimited-elements-for-elementor"), $roleExclude, $params); $arrAuthors = UniteFunctionsWPUC::getArrAuthorsShort(); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["is_multiple"] = true; $params["placeholder"] = __("Select one or more users", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $arrConditionCustom; $arrAuthors = array_flip($arrAuthors); $this->addMultiSelect($name . "_exclude_authors", $arrAuthors, __("Exclude By Specific Users", "unlimited-elements-for-elementor"), "", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["is_multiple"] = true; $params["placeholder"] = __("Select one or more users", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $arrConditionManual; $this->addMultiSelect($name . "_include_authors", $arrAuthors, __("Select Specific Users", "unlimited-elements-for-elementor"), "", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $params["elementor_condition"] = $arrConditionCustom; $this->addHr($name . "_hr_before_max", $params); $params = array("unit" => "users"); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("all users if empty", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $arrConditionCustom; $params["add_dynamic"] = true; $this->addTextBox($name . "_maxusers", "", esc_html__("Max Number of Users", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "_hr_before_orderby", $params); $arrOrderBy = HelperProviderUC::getArrUsersOrderBySelect(); $arrOrderBy = array_flip($arrOrderBy); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $this->addSelect($name . "_orderby", $arrOrderBy, __("Order By", "unlimited-elements-for-elementor"), "default", $params); $arrOrderDir = UniteFunctionsWPUC::getArrSortDirection(); $arrOrderDir = array_flip($arrOrderDir); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $this->addSelect($name . "_orderdir", $arrOrderDir, __("Order Direction", "unlimited-elements-for-elementor"), "default", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "_hr_before_metakeys", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["description"] = __("Get additional meta data by given meta keys comma separated", "unlimited-elements-for-elementor"); $params["placeholder"] = "meta_key1, meta_key2..."; $params["label_block"] = true; $params["add_dynamic"] = true; $this->addTextBox($name . "_add_meta_keys", "", __("Additional Meta Data Keys", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "_hr_before_debug", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_RADIOBOOLEAN; $params["description"] = __("Show the query for debugging purposes. Don't forget to turn it off before page release", "unlimited-elements-for-elementor"); $this->addRadioBoolean($name . "_show_query_debug", __("Show Query Debug", "unlimited-elements-for-elementor"), false, "Yes", "No", $params); } protected function addMenuPicker($name, $value, $title, $extra) { $arrMenus = UniteFunctionsWPUC::getMenusListShort(); $menuID = UniteFunctionsUC::getVal($value, $name . "_id"); if (empty($menuID)) { $menuID = UniteFunctionsUC::getFirstNotEmptyKey($arrMenus); } $arrMenus = array_flip($arrMenus); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $this->addSelect($name . "_id", $arrMenus, __("Select Menu", "unlimited-elements-for-elementor"), $menuID, $params); $arrDepth = array(); $arrDepth["0"] = __("All Depths", "unlimited-elements-for-elementor"); $arrDepth["1"] = __("1", "unlimited-elements-for-elementor"); $arrDepth["2"] = __("2", "unlimited-elements-for-elementor"); $arrDepth["3"] = __("3", "unlimited-elements-for-elementor"); $arrDepth = array_flip($arrDepth); $depth = UniteFunctionsUC::getVal($value, $name . "_depth", "0"); $this->addSelect($name . "_depth", $arrDepth, __("Max Depth", "unlimited-elements-for-elementor"), $depth, $params); } private function __________TERMS_______() { } protected function addPostTermsPicker($name, $value, $title, $extra) { $isForWooCommerce = UniteFunctionsUC::getVal($extra, "for_woocommerce"); $isForWooCommerce = UniteFunctionsUC::strToBool($isForWooCommerce); $arrPostTypesWithTax = UniteFunctionsWPUC::getPostTypesWithTaxomonies(GlobalsProviderUC::$arrFilterPostTypes, false); if ($isForWooCommerce == true) { $arrPostTypesWithTax = array("product" => $arrPostTypesWithTax["product"]); } $taxData = $this->addPostTermsPicker_getArrTaxonomies($arrPostTypesWithTax); $arrPostTypesTaxonomies = $taxData["post_type_tax"]; $arrTaxonomiesSimple = $taxData["taxonomies_simple"]; $arrPostTypes = array(); foreach ($arrPostTypesWithTax as $typeName => $arrType) { $title = UniteFunctionsUC::getVal($arrType, "title"); if (empty($title)) { $title = ucfirst($typeName); } $arrPostTypes[$title] = $typeName; } $postType = UniteFunctionsUC::getVal($value, $name . "_posttype"); if (empty($postType)) { $postType = UniteFunctionsUC::getArrFirstValue($arrPostTypes); } $params = array(); $params[UniteSettingsUC::PARAM_CLASSADD] = "unite-setting-post-type"; $dataTax = UniteFunctionsUC::encodeContent($arrPostTypesTaxonomies); $params[UniteSettingsUC::PARAM_ADDPARAMS] = "data-arrposttypes='{$dataTax}' data-settingtype='select_post_taxonomy' data-settingprefix='{$name}'"; $params["datasource"] = "post_type"; $params["origtype"] = "uc_select_special"; $this->addSelect($name . "_posttype", $arrPostTypes, __("Select Post Type", "unlimited-elements-for-elementor"), $postType, $params); $params = array(); $params["datasource"] = "post_taxonomy"; $params[UniteSettingsUC::PARAM_CLASSADD] = "unite-setting-post-taxonomy"; $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $arrTax = UniteFunctionsUC::getVal($arrPostTypesTaxonomies, $postType, array()); if (!empty($arrTax)) { $arrTax = array_flip($arrTax); } $taxonomy = UniteFunctionsUC::getVal($value, $name . "_taxonomy"); if (empty($taxonomy)) { $taxonomy = UniteFunctionsUC::getArrFirstValue($arrTax); } if ($isForWooCommerce) { $taxonomy = "product_cat"; } $this->addSelect($name . "_taxonomy", $arrTaxonomiesSimple, __("Select Taxonomy", "unlimited-elements-for-elementor"), $taxonomy, $params); $arrIncludeBy = array(); $arrIncludeBy["spacific_terms"] = __("Specific Terms", "unlimited-elements-for-elementor"); $arrIncludeBy["parents"] = __("Parent Of", "unlimited-elements-for-elementor"); $arrIncludeBy["search"] = __("By Search Text", "unlimited-elements-for-elementor"); $arrIncludeBy["childless"] = __("Only Childless", "unlimited-elements-for-elementor"); $arrIncludeBy["no_parent"] = __("Not a Child of Other Term", "unlimited-elements-for-elementor"); $arrIncludeBy["meta"] = __("Term Meta", "unlimited-elements-for-elementor"); $arrIncludeBy = array_flip($arrIncludeBy); $params = array(); $params["is_multiple"] = true; $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $this->addMultiSelect($name . "_includeby", $arrIncludeBy, esc_html__("Include By", "unlimited-elements-for-elementor"), "", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("Meta Key", "unlimited-elements-for-elementor"); $params["elementor_condition"] = array($name . "_includeby" => "meta"); $this->addTextBox($name . "_include_metakey", "", esc_html__("Include by Meta Key", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["elementor_condition"] = array($name . "_includeby" => "meta"); $params["description"] = __("Get only those terms that has the meta key/value. For IN, NOT IN, BETWEEN, NOT BETWEEN compares, use coma saparated values"); $arrItems = HelperProviderUC::getArrMetaCompareSelect(); $arrItems = array_flip($arrItems); $this->addSelect($name . "_include_metacompare", $arrItems, esc_html__("Include by Meta Compare", "unlimited-elements-for-elementor"), "=", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("Meta Value", "unlimited-elements-for-elementor"); $params["elementor_condition"] = array($name . "_includeby" => "meta"); $params["add_dynamic"] = true; $this->addTextBox($name . "_include_metavalue", "", esc_html__("Include by Meta Value", "unlimited-elements-for-elementor"), $params); $params = array(); $params["description"] = __("Only those selected terms will be loaded"); $elementorCondition = array($name . "_includeby" => "spacific_terms"); $exclude = UniteFunctionsUC::getVal($value, $name . "_exclude"); $addAttrib = "data-taxonomyname='{$name}_taxonomy'"; $this->addPostIDSelect($name . "_include_specific", __("Select Specific Terms", "unlimited-elements-for-elementor"), $elementorCondition, "terms", $addAttrib, $params); $params = array(); $params["placeholder"] = "all--parents"; $elementorCondition = array($name . "_includeby" => "parents"); $exclude = UniteFunctionsUC::getVal($value, $name . "_exclude"); $addAttrib = "data-taxonomyname='{$name}_taxonomy' data-issingle='true'"; $this->addPostIDSelect($name . "_include_parent", __("Select Parent Term", "unlimited-elements-for-elementor"), $elementorCondition, "terms", $addAttrib, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_RADIOBOOLEAN; $params["description"] = __("If turned off, all the terms tree will be selected", "unlimited-elements-for-elementor"); $params["elementor_condition"] = array($name . "_includeby" => "parents"); $this->addRadioBoolean($name . "_include_parent_isdirect", __("Is Direct Parent", "unlimited-elements-for-elementor"), true, "Yes", "No", $params); $params = array("unit" => "terms"); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("Search Text", "unlimited-elements-for-elementor"); $params["elementor_condition"] = array($name . "_includeby" => "search"); $params["add_dynamic"] = true; $this->addTextBox($name . "_include_search", "", esc_html__("Include by Search", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "_after_include_by", $params); $arrIncludeBy = array(); $arrIncludeBy["spacific_terms"] = __("Specific Terms", "unlimited-elements-for-elementor"); $arrIncludeBy["current_term"] = __("Current Term (for archive only)", "unlimited-elements-for-elementor"); $arrIncludeBy["hide_empty"] = __("Hide Empty Terms", "unlimited-elements-for-elementor"); $arrIncludeBy = array_flip($arrIncludeBy); $params = array(); $params["is_multiple"] = true; $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $this->addMultiSelect($name . "_excludeby", $arrIncludeBy, esc_html__("Exclude By", "unlimited-elements-for-elementor"), "", $params); $elementorCondition = array($name . "_excludeby" => "spacific_terms"); $exclude = UniteFunctionsUC::getVal($value, $name . "_exclude"); $addAttrib = "data-taxonomyname='{$name}_taxonomy'"; $this->addPostIDSelect($name . "_exclude", __("Exclude Terms", "unlimited-elements-for-elementor"), $elementorCondition, "terms", $addAttrib); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_RADIOBOOLEAN; $params["elementor_condition"] = $elementorCondition; $this->addRadioBoolean($name . "_exclude_tree", __("Exclude With All Children Tree", "unlimited-elements-for-elementor"), true, "Yes", "No", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "_post_terms_before_additions", $params); $params = array("unit" => "terms"); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("100 terms if empty", "unlimited-elements-for-elementor"); $params["add_dynamic"] = true; $this->addTextBox($name . "_maxterms", "", esc_html__("Max Number of Terms", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "_post_terms_before_orderby", $params); $arrOrderBy = UniteFunctionsWPUC::getArrTermSortBy(); $arrOrderBy["include"] = __("Include - (specific terms order)", "unlimited-elements-for-elementor"); $arrOrderBy["meta_value"] = __("Meta Value", "unlimited-elements-for-elementor"); $arrOrderBy["meta_value_num"] = __("Meta Value - Numeric", "unlimited-elements-for-elementor"); $arrOrderBy = array_flip($arrOrderBy); $orderBy = UniteFunctionsUC::getVal($value, $name . "_orderby", "name"); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $this->addSelect($name . "_orderby", $arrOrderBy, __("Order By", "unlimited-elements-for-elementor"), $orderBy, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $arrCondition = array(); $arrCondition[$name . "_orderby"] = array("meta_value", "meta_value_num"); $params["elementor_condition"] = $arrCondition; $params["add_dynamic"] = true; $this->addTextBox($name . "_orderby_meta_key", "", __(" Custom Field Name", "unlimited-elements-for-elementor"), $params); $arrOrderDir = UniteFunctionsWPUC::getArrSortDirection(); $orderDir = UniteFunctionsUC::getVal($value, $name . "_orderdir", UniteFunctionsWPUC::ORDER_DIRECTION_ASC); $arrOrderDir = array_flip($arrOrderDir); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $this->addSelect($name . "_orderdir", $arrOrderDir, __("Order Direction", "unlimited-elements-for-elementor"), $orderDir, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "_post_terms_before_queryid", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_RADIOBOOLEAN; $params["description"] = __("Show the query for debugging purposes. Don't forget to turn it off before page release", "unlimited-elements-for-elementor"); $this->addRadioBoolean($name . "_show_query_debug", __("Show Query Debug", "unlimited-elements-for-elementor"), false, "Yes", "No", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "post_terms_sap", $params); } protected function addWooCatsPicker($name, $value, $title, $extra) { $conditionQuery = array($name . "_type" => "query"); $conditionManual = array($name . "_type" => "manual"); $arrType = array(); $arrType["query"] = __("Categories Query", "unlimited-elements-for-elementor"); $arrType["manual"] = __("Manual Selection", "unlimited-elements-for-elementor"); $arrType = array_flip($arrType); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $type = UniteFunctionsUC::getVal($value, $name . "_type", "query"); $this->addSelect($name . "_type", $arrType, __("Selection Type", "unlimited-elements-for-elementor"), $type, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr("woocommere_terms_sap_type", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("Example: cat1", "unlimited-elements-for-elementor"); $params["description"] = __("Write parent category slug, if no parent leave empty", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $conditionQuery; $parent = UniteFunctionsUC::getVal($value, $name . "_parent", ""); $this->addTextBox($name . "_parent", $parent, __("Parent Category", "unlimited-elements-for-elementor"), $params); $includeChildren = UniteFunctionsUC::getVal($value, $name . "_children", "not_include"); $arrChildren = array(); $arrChildren["not_include"] = __("Don't Include", "unlimited-elements-for-elementor"); $arrChildren["include"] = __("Include", "unlimited-elements-for-elementor"); $arrChildren = array_flip($arrChildren); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["elementor_condition"] = $conditionQuery; $this->addSelect($name . "_children", $arrChildren, __("Include Children", "unlimited-elements-for-elementor"), $includeChildren, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = "Example: cat1,cat2"; $params["description"] = "To exclude, enter comma saparated term slugs"; $params["label_block"] = true; $params["elementor_condition"] = $conditionQuery; $exclude = UniteFunctionsUC::getVal($value, $name . "_exclude"); $this->addTextBox($name . "_exclude", $exclude, __("Exclude Categories", "unlimited-elements-for-elementor"), $params); $excludeUncat = UniteFunctionsUC::getVal($value, $name . "_excludeuncat", "exclude"); $arrExclude = array(); $arrExclude["exclude"] = __("Exclude", "unlimited-elements-for-elementor"); $arrExclude["no_exclude"] = __("Don't Exclude", "unlimited-elements-for-elementor"); $arrExclude = array_flip($arrExclude); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["elementor_condition"] = $conditionQuery; $this->addSelect($name . "_excludeuncat", $arrExclude, __("Exclude Uncategorized Category", "unlimited-elements-for-elementor"), $excludeUncat, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $params["elementor_condition"] = $conditionQuery; $this->addHr("woocommere_terms_sap1", $params); $arrOrderBy = UniteFunctionsWPUC::getArrTermSortBy(); $arrOrderBy["meta_value"] = __("Meta Value", "unlimited-elements-for-elementor"); $arrOrderBy["meta_value_num"] = __("Meta Value - Numeric", "unlimited-elements-for-elementor"); $arrOrderBy = array_flip($arrOrderBy); $orderBy = UniteFunctionsUC::getVal($value, $name . "_orderby", "name"); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["elementor_condition"] = $conditionQuery; $this->addSelect($name . "_orderby", $arrOrderBy, __("Order By", "unlimited-elements-for-elementor"), $orderBy, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $arrCondition = $conditionQuery; $arrCondition[$name . "_orderby"] = array("meta_value", "meta_value_num"); $params["elementor_condition"] = $arrCondition; $params["add_dynamic"] = true; $this->addTextBox($name . "_orderby_meta_key", "", __(" Meta Field Name", "unlimited-elements-for-elementor"), $params); $arrOrderDir = UniteFunctionsWPUC::getArrSortDirection(); $orderDir = UniteFunctionsUC::getVal($value, $name . "_orderdir", UniteFunctionsWPUC::ORDER_DIRECTION_ASC); $arrOrderDir = array_flip($arrOrderDir); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["elementor_condition"] = $conditionQuery; $this->addSelect($name . "_orderdir", $arrOrderDir, __("Order Direction", "unlimited-elements-for-elementor"), $orderDir, $params); $hideEmpty = UniteFunctionsUC::getVal($value, $name . "_hideempty", "no_hide"); $arrHide = array(); $arrHide["no_hide"] = "Don't Hide"; $arrHide["hide"] = "Hide"; $arrHide = array_flip($arrHide); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["elementor_condition"] = $conditionQuery; $this->addSelect($name . "_hideempty", $arrHide, __("Hide Empty", "unlimited-elements-for-elementor"), $hideEmpty, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $params["elementor_condition"] = $conditionQuery; $this->addHr("woocommere_terms_sap", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("Example: cat1, cat2", "unlimited-elements-for-elementor"); $params["description"] = __("Include specific categories by slug", "unlimited-elements-for-elementor"); $params["label_block"] = true; $params["elementor_condition"] = $conditionManual; $cats = UniteFunctionsUC::getVal($value, $name . "_include", ""); $this->addTextBox($name . "_include", $cats, __("Include Specific Categories", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "_post_terms_before_queryid", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_RADIOBOOLEAN; $params["description"] = __("Show the query for debugging purposes. Don't forget to turn it off before page release", "unlimited-elements-for-elementor"); $this->addRadioBoolean($name . "_show_query_debug", __("Show Query Debug", "unlimited-elements-for-elementor"), false, "Yes", "No", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "post_terms_sap", $params); } protected function addBackgroundSettings($name, $value, $title, $param) { $arrTypes = array(); $arrTypes["none"] = __("No Background", "unlimited-elements-for-elementor"); $arrTypes["solid"] = __("Solid", "unlimited-elements-for-elementor"); $arrTypes["gradient"] = __("Gradient", "unlimited-elements-for-elementor"); $arrTypes = array_flip($arrTypes); $type = UniteFunctionsUC::getVal($param, "background_type", "none"); $this->addRadio($name . "_type", $arrTypes, "Background Type", $type); $solid = UniteFunctionsUC::getVal($param, "solid_color"); $gradient1 = UniteFunctionsUC::getVal($param, "gradient_color1"); $gradient2 = UniteFunctionsUC::getVal($param, "gradient_color2"); $this->addHr(); $this->startBulkControl($name . "_type", "show", "solid"); $this->addColorPicker($name . "_color_solid", $solid, __("Solid Color", "unlimited-elements-for-elementor")); $this->endBulkControl(); $this->startBulkControl($name . "_type", "show", "gradient"); $this->addColorPicker($name . "_color_gradient1", $gradient1, __("Gradient Color1", "unlimited-elements-for-elementor")); $this->addColorPicker($name . "_color_gradient2", $gradient2, __("Gradient Color2", "unlimited-elements-for-elementor")); $this->endBulkControl(); } private function __________POSTS_______() { } protected function addPostIDSelect($settingName, $text = null, $elementorCondition = null, $isForWoo = false, $addAttribOpt = "", $params = array()) { if (empty($text)) { $text = __("Search and Select Posts", "unlimited-elements-for-elementor"); } $params[UniteSettingsUC::PARAM_CLASSADD] = "unite-setting-special-select"; $placeholder = __("All Posts", "unlimited-elements-for-elementor"); if ($isForWoo === true) { $placeholder = __("All Products", "unlimited-elements-for-elementor"); } $placeholder = str_replace(" ", "--", $placeholder); $loaderText = __("Loading Data...", "unlimited-elements-for-elementor"); $loaderText = UniteFunctionsUC::encodeContent($loaderText); $addAttrib = ""; if ($isForWoo === true) { $addAttrib = " data-woo='yes'"; } if ($isForWoo === "elementor_template") { $addAttrib = " data-datatype='elementor_template' data-issingle='true'"; $placeholder = "All"; } if ($isForWoo === "terms") { $addAttrib = " data-datatype='terms'"; $placeholder = "All--Terms"; } if (isset($params["placeholder"])) { $placeholder = $params["placeholder"]; } if (!empty($addAttribOpt)) { $addAttrib .= " " . $addAttribOpt; } $params[UniteSettingsUC::PARAM_ADDPARAMS] = "data-settingtype='post_ids' data-placeholdertext='{$placeholder}' data-loadertext='{$loaderText}' {$addAttrib}"; $params["datasource"] = "post_type"; $params["origtype"] = "uc_select_special"; $params["label_block"] = true; if (!empty($elementorCondition)) { $params["elementor_condition"] = $elementorCondition; } $this->addSelect($settingName, array(), $text, "", $params); } protected function addPostsListPicker($name, $value, $title, $extra) { $simpleMode = UniteFunctionsUC::getVal($extra, "simple_mode"); $simpleMode = UniteFunctionsUC::strToBool($simpleMode); $allCatsMode = UniteFunctionsUC::getVal($extra, "all_cats_mode"); $allCatsMode = UniteFunctionsUC::strToBool($allCatsMode); $isForWooProducts = UniteFunctionsUC::getVal($extra, "for_woocommerce_products"); $isForWooProducts = UniteFunctionsUC::strToBool($isForWooProducts); $addCurrentPosts = UniteFunctionsUC::getVal($extra, "add_current_posts"); $addCurrentPosts = UniteFunctionsUC::strToBool($addCurrentPosts); $defaultMaxPosts = UniteFunctionsUC::getVal($extra, "default_max_posts"); $defaultMaxPosts = (int) $defaultMaxPosts; $arrPostTypes = UniteFunctionsWPUC::getPostTypesWithCats(GlobalsProviderUC::$arrFilterPostTypes); $isWpmlExists = UniteCreatorWpmlIntegrate::isWpmlExists(); $textPosts = __("Posts", "unlimited-elements-for-elementor"); $textPost = __("Post", "unlimited-elements-for-elementor"); if ($isForWooProducts == true) { $textPosts = __("Products", "unlimited-elements-for-elementor"); $textPost = __("Product", "unlimited-elements-for-elementor"); } $arrTypesSimple = array(); if ($simpleMode) { $arrTypesSimple = array("Post" => "post", "Page" => "page"); } else { foreach ($arrPostTypes as $arrType) { $postTypeName = UniteFunctionsUC::getVal($arrType, "name"); $postTypeTitle = UniteFunctionsUC::getVal($arrType, "title"); if (isset($arrTypesSimple[$postTypeTitle])) { $arrTypesSimple[$postTypeName] = $postTypeName; } else { $arrTypesSimple[$postTypeTitle] = $postTypeName; } } } $arrNotCurrentElementorCondition = array(); $arrCustomOnlyCondition = array(); $arrRelatedOnlyCondition = array(); $arrCurrentElementorCondition = array(); $arrCustomAndCurrentElementorCondition = array(); $arrNotManualElementorCondition = array(); $arrCustomAndRelatedElementorCondition = array(); $arrManualElementorCondition = array(); if ($addCurrentPosts == true) { $arrCurrentElementorCondition = array($name . "_source" => "current"); $arrNotCurrentElementorCondition = array($name . "_source!" => "current"); $arrCustomAndCurrentElementorCondition = array($name . "_source" => array("current", "custom")); $arrCustomAndRelatedElementorCondition = array($name . "_source" => array("related", "custom")); $arrCustomOnlyCondition = array($name . "_source" => "custom"); $arrRelatedOnlyCondition = array($name . "_source" => "related"); $arrNotInRelatedCondition = array($name . "_source!" => "related"); $arrNotManualElementorCondition = array($name . "_source!" => "manual"); $arrManualElementorCondition = array($name . "_source" => "manual"); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $source = UniteFunctionsUC::getVal($value, $name . "_source", "custom"); $arrSourceOptions = array(); $arrSourceOptions[sprintf(__("Current Query %s", "unlimited-elements-for-elementor"), $textPost)] = "current"; $arrSourceOptions[sprintf(__("Custom %s", "unlimited-elements-for-elementor"), $textPosts)] = "custom"; $arrSourceOptions[sprintf(__("Related %s", "unlimited-elements-for-elementor"), $textPosts)] = "related"; $arrSourceOptions[__("Manual Selection", "unlimited-elements-for-elementor")] = "manual"; $this->addSelect($name . "_source", $arrSourceOptions, sprintf(esc_html__("%s Source", "unlimited-elements-for-elementor"), $textPosts), $source, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_STATIC_TEXT; $params["description"] = esc_html__("Choose the source of the posts list", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $arrCurrentElementorCondition; $maxPostsPerPage = get_option("posts_per_page"); $this->addStaticText("The current posts are being used in archive pages. Posts per page: {$maxPostsPerPage}. Set this option in Settings -> Reading ", $name . "_currenttext", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_STATIC_TEXT; $params["elementor_condition"] = $arrRelatedOnlyCondition; $this->addStaticText("The related posts are being used in single post. Posts from same post type and terms", $name . "_relatedtext", $params); } $defaultPostType = "post"; if ($isForWooProducts == true) { $defaultPostType = "product"; } $postType = UniteFunctionsUC::getVal($value, $name . "_posttype", $defaultPostType); $params = array(); if ($simpleMode == false) { $params["datasource"] = "post_type"; $params[UniteSettingsUC::PARAM_CLASSADD] = "unite-setting-post-type"; $dataCats = UniteFunctionsUC::encodeContent($arrPostTypes); $params[UniteSettingsUC::PARAM_ADDPARAMS] = "data-arrposttypes='{$dataCats}' data-settingtype='select_post_type' data-settingprefix='{$name}'"; } $params["origtype"] = "uc_select_special"; $params["elementor_condition"] = $arrCustomOnlyCondition; $params["is_multiple"] = true; if ($isForWooProducts == false) { $this->addMultiSelect($name . "_posttype", $arrTypesSimple, esc_html__("Post Types", "unlimited-elements-for-elementor"), $postType, $params); } $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $params["elementor_condition"] = $arrCustomOnlyCondition; $this->addHr($name . "_post_before_include", $params); $arrIncludeBy = array(); if ($isForWooProducts == false) { $arrIncludeBy["sticky_posts"] = __("Include Sticky Posts", "unlimited-elements-for-elementor"); $arrIncludeBy["sticky_posts_only"] = __("Get Only Sticky Posts", "unlimited-elements-for-elementor"); } $arrIncludeBy["author"] = __("Author", "unlimited-elements-for-elementor"); $arrIncludeBy["date"] = __("Date", "unlimited-elements-for-elementor"); if ($isForWooProducts == false) { $arrIncludeBy["parent"] = __("Post Parent", "unlimited-elements-for-elementor"); } $arrIncludeBy["meta"] = __("Post Meta", "unlimited-elements-for-elementor"); $arrIncludeBy["most_viewed"] = __("Most Viewed", "unlimited-elements-for-elementor"); $arrIncludeBy["php_function"] = __("IDs from PHP function", "unlimited-elements-for-elementor"); $arrIncludeBy["ids_from_meta"] = __("IDs from Post Meta", "unlimited-elements-for-elementor"); if ($isForWooProducts == true) { $arrIncludeBy["products_on_sale"] = __("Products On Sale Only (woo)", "unlimited-elements-for-elementor"); $arrIncludeBy["up_sells"] = __("Up Sells Products (woo)", "unlimited-elements-for-elementor"); $arrIncludeBy["cross_sells"] = __("Cross Sells Products (woo)", "unlimited-elements-for-elementor"); $arrIncludeBy["out_of_stock"] = __("Out Of Stock Products Only (woo)", "unlimited-elements-for-elementor"); $arrIncludeBy["recent"] = __("Recently Viewed Produts (woo)", "unlimited-elements-for-elementor"); } $addPostsText = sprintf(__("Add Specific %s", "unlimited-elements-for-elementor"), $textPosts); $includeBy = UniteFunctionsUC::getVal($value, $name . "_includeby"); $arrIncludeBy = array_flip($arrIncludeBy); $params = array(); $params["is_multiple"] = true; $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $arrConditionIncludeBy = $arrCustomOnlyCondition; $params["elementor_condition"] = $arrConditionIncludeBy; $this->addMultiSelect($name . "_includeby", $arrIncludeBy, esc_html__("Include By", "unlimited-elements-for-elementor"), $includeBy, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $params["elementor_condition"] = $arrConditionIncludeBy; $this->addHr($name . "_after_include_by", $params); $arrAuthors = UniteFunctionsWPUC::getArrAuthorsShort(); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["is_multiple"] = true; $params["placeholder"] = __("Select one or more authors", "unlimited-elements-for-elementor"); $arrConditionIncludeAuthor = $arrConditionIncludeBy; $arrConditionIncludeAuthor[$name . "_includeby"] = "author"; $params["elementor_condition"] = $arrConditionIncludeAuthor; $arrAuthors = array_flip($arrAuthors); $this->addMultiSelect($name . "_includeby_authors", $arrAuthors, __("Include By Author", "unlimited-elements-for-elementor"), "", $params); $arrDates = HelperProviderUC::getArrPostsDateSelect(); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $arrConditionIncludeByDate = $arrConditionIncludeBy; $arrConditionIncludeByDate[$name . "_includeby"] = "date"; $params["elementor_condition"] = $arrConditionIncludeByDate; $arrDates = array_flip($arrDates); $this->addSelect($name . "_includeby_date", $arrDates, __("Include By Date", "unlimited-elements-for-elementor"), "all", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["description"] = __("Optional, Select custom field (like ACF) with date format 20210310 (Ymd). For example: event_date", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $arrConditionIncludeByDate; $this->addTextBox($name . "_include_date_meta", "", __("Date by Meta Field", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DATETIME; $params["description"] = __("Show all the posts published until the chosen date, inclusive.", "unlimited-elements-for-elementor"); $params["placeholder"] = __("Choose Date", "unlimited-elements-for-elementor"); $arrConditionDateCustom = $arrConditionIncludeByDate; $arrConditionDateCustom[$name . "_includeby_date"] = "custom"; $params["elementor_condition"] = $arrConditionDateCustom; $this->addTextBox($name . "_include_date_before", "", __("Published Before Date", "unlimited-elements-for-elementor"), $params); $params["description"] = __("Show all the posts published since the chosen date, inclusive.", "unlimited-elements-for-elementor"); $this->addTextBox($name . "_include_date_after", "", __("Published After Date", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $params["elementor_condition"] = $arrConditionIncludeByDate; $this->addHr($name . "_hr_after_date", $params); $arrConditionIncludeParents = $arrConditionIncludeBy; $arrConditionIncludeParents[$name . "_includeby"] = "parent"; $this->addPostIDSelect($name . "_includeby_parent", sprintf(__("Select %s Parents"), $textPosts), $arrConditionIncludeParents, $isForWooProducts); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_STATIC_TEXT; $arrConditionIncludeRecent = $arrConditionIncludeBy; $arrConditionIncludeRecent[$name . "_includeby"] = "recent"; $params["elementor_condition"] = $arrConditionIncludeRecent; $this->addStaticText("Recently viewed by the current site visitor, taken from cookie: woocommerce_recently_viewed. Works only if active wordpress widget: \"Recently Viewed Products\" ", $name . "_includeby_recenttext", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("Meta Key", "unlimited-elements-for-elementor"); $arrConditionIncludeMeta = $arrConditionIncludeBy; $arrConditionIncludeMeta[$name . "_includeby"] = "meta"; $params["elementor_condition"] = $arrConditionIncludeMeta; $this->addTextBox($name . "_includeby_metakey", "", esc_html__("Include by Meta Key", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["description"] = __("Get only those terms that has the meta key/value. For IN, NOT IN, BETWEEN, NOT BETWEEN compares, use coma saparated values"); $params["elementor_condition"] = $arrConditionIncludeMeta; $arrItems = HelperProviderUC::getArrMetaCompareSelect(); $arrItems = array_flip($arrItems); $this->addSelect($name . "_includeby_metacompare", $arrItems, esc_html__("Include by Meta Compare", "unlimited-elements-for-elementor"), "=", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("Meta Value", "unlimited-elements-for-elementor"); $params["add_dynamic"] = true; $params["elementor_condition"] = $arrConditionIncludeMeta; $this->addTextBox($name . "_includeby_metavalue", "", esc_html__("Include by Meta Value", "unlimited-elements-for-elementor"), $params); $arrConditionIncludeFunction = $arrConditionIncludeBy; $arrConditionIncludeFunction[$name . "_includeby"] = "php_function"; $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("getMyIDs", "unlimited-elements-for-elementor"); $params["description"] = __("Get post id's array from php function. \n For example: function getMyIDs(\$arg){return(array(\"32\",\"58\")). This function MUST begin with 'get'. }"); $params["elementor_condition"] = $arrConditionIncludeFunction; $this->addTextBox($name . "_includeby_function_name", "", esc_html__("PHP Function Name", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("yourtext", "unlimited-elements-for-elementor"); $params["description"] = __("Optional. Some argument to be passed to this function. For some \"IF\" statement.", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $arrConditionIncludeFunction; $this->addTextBox($name . "_includeby_function_addparam", "", esc_html__("PHP Function Argument", "unlimited-elements-for-elementor"), $params); $textIDsFromMeta = __("Select Post (leave empty for current post)", "unlimited-elements-for-elementor"); $arrConditionIncludePostMeta = $arrConditionIncludeBy; $arrConditionIncludePostMeta[$name . "_includeby"] = "ids_from_meta"; $this->addPostIDSelect($name . "_includeby_postmeta_postid", $textIDsFromMeta, $arrConditionIncludePostMeta, false, "data-issingle='true'"); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["description"] = __("Choose meta field name that has the post id's on it. Good for acf relationship for example", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $arrConditionIncludePostMeta; $this->addTextBox($name . "_includeby_postmeta_metafield", "", esc_html__("Meta Field Name", "unlimited-elements-for-elementor"), $params); $isWPPExists = UniteCreatorPluginIntegrations::isWPPopularPostsExists(); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_STATIC_TEXT; $arrConditionIncludeViewsCounter = $arrConditionIncludeBy; $arrConditionIncludeViewsCounter[$name . "_includeby"] = "most_viewed"; $params["elementor_condition"] = $arrConditionIncludeViewsCounter; $text = __("Select most viewed posts, integration with plugin: 'WordPress Popular Posts' that should be installed", "unlimited-elements-for-elementor"); if ($isWPPExists == true) { $text = __("'WordPress Popular Posts' plugin activated.", "unlimited-elements-for-elementor"); } $this->addStaticText($text, $name . "_text_includemostviewed", $params); if ($isWPPExists == true) { $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["elementor_condition"] = $arrConditionIncludeViewsCounter; $params["description"] = "Besides range, it supports single post type and single category, and order direction query options"; $arrItems = array("last30days" => "Last 30 Days", "last7days" => "Last 7 Days", "last24hours" => "Last 24 Hours", "daily" => "Daily", "weekly" => "Weekly", "monthly" => "Monthly", "all" => "All"); $arrItems = array_flip($arrItems); $this->addSelect($name . "_includeby_mostviewed_range", $arrItems, esc_html__("Most Viewed Time Range", "unlimited-elements-for-elementor"), "last30days", $params); } $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $params["elementor_condition"] = $arrCustomOnlyCondition; $this->addHr($name . "_before_categories", $params); $arrCats = array(); if ($simpleMode == true) { $arrCats = $arrPostTypes["post"]["cats"]; $arrCats = array_flip($arrCats); $firstItemValue = reset($arrCats); } else { if ($allCatsMode == true) { $arrCats = $this->getCategoriesFromAllPostTypes($arrPostTypes); $firstItemValue = reset($arrCats); } else { $firstItemValue = ""; } } $category = UniteFunctionsUC::getVal($value, $name . "_category", $firstItemValue); $params = array(); if ($simpleMode == false) { $params["datasource"] = "post_category"; $params[UniteSettingsUC::PARAM_CLASSADD] = "unite-setting-post-category"; } $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["is_multiple"] = true; $params["elementor_condition"] = $arrCustomOnlyCondition; $paramsTermSelect = $params; $this->addMultiSelect($name . "_category", $arrCats, esc_html__("Include By Terms", "unlimited-elements-for-elementor"), $category, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["elementor_condition"] = $arrCustomOnlyCondition; $relation = UniteFunctionsUC::getVal($value, $name . "_category_relation", "AND"); $arrRelationItems = array(); $arrRelationItems["And"] = "AND"; $arrRelationItems["Or"] = "OR"; $this->addSelect($name . "_category_relation", $arrRelationItems, __("Include By Terms Relation", "unlimited-elements-for-elementor"), $relation, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_RADIOBOOLEAN; $params["elementor_condition"] = $arrCustomOnlyCondition; $isIncludeChildren = UniteFunctionsUC::getVal($value, $name . "_terms_include_children", false); $isIncludeChildren = UniteFunctionsUC::strToBool($isIncludeChildren); $this->addRadioBoolean($name . "_terms_include_children", __("Include Terms Children", "unlimited-elements-for-elementor"), $isIncludeChildren, "Yes", "No", $params); $textManualSelect = sprintf(__("Seach And Select %s"), $textPosts); $this->addPostIDSelect($name . "_manual_select_post_ids", $textManualSelect, $arrManualElementorCondition, $isForWooProducts); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $params["elementor_condition"] = $arrCustomOnlyCondition; $this->addHr($name . "_before_exclude_by", $params); $arrExclude = array(); if ($isForWooProducts == true) { $arrExclude["out_of_stock"] = __("Out Of Stock Products (woo)", "unlimited-elements-for-elementor"); $arrExclude["products_on_sale"] = __("Products On Sale (woo)", "unlimited-elements-for-elementor"); } $arrExclude["terms"] = __("Terms", "unlimited-elements-for-elementor"); $arrExclude["current_post"] = sprintf(__("Current %s", "unlimited-elements-for-elementor"), $textPosts); $arrExclude["specific_posts"] = sprintf(__("Specific %s", "unlimited-elements-for-elementor"), $textPosts); $arrExclude["author"] = __("Author", "unlimited-elements-for-elementor"); $arrExclude["no_image"] = sprintf(__("%s Without Featured Image", "unlimited-elements-for-elementor"), $textPost); $arrExclude["current_category"] = sprintf(__("%s with Current Category", "unlimited-elements-for-elementor"), $textPosts); $arrExclude["current_tags"] = sprintf(__("%s With Current Tags", "unlimited-elements-for-elementor"), $textPosts); $arrExclude["offset"] = sprintf(__("Offset", "unlimited-elements-for-elementor"), $textPosts); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["is_multiple"] = true; $conditionExcludeBy = $arrCustomAndRelatedElementorCondition; $params["elementor_condition"] = $conditionExcludeBy; $arrExclude = array_flip($arrExclude); $arrExcludeValues = ""; $this->addMultiSelect($name . "_excludeby", $arrExclude, __("Exclude By", "unlimited-elements-for-elementor"), $arrExcludeValues, $params); $params = $paramsTermSelect; $conditionExcludeByTerms = $conditionExcludeBy; $conditionExcludeByTerms[$name . "_excludeby"] = "terms"; $params["elementor_condition"] = $conditionExcludeByTerms; $this->addMultiSelect($name . "_exclude_terms", $arrCats, esc_html__("Exclude By Terms", "unlimited-elements-for-elementor"), "", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["is_multiple"] = true; $params["placeholder"] = __("Select one or more authors", "unlimited-elements-for-elementor"); $arrConditionIncludeAuthor = $conditionExcludeBy; $arrConditionIncludeAuthor[$name . "_excludeby"] = "author"; $params["elementor_condition"] = $arrConditionIncludeAuthor; $this->addMultiSelect($name . "_excludeby_authors", $arrAuthors, __("Exclude By Author", "unlimited-elements-for-elementor"), "", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_NUMBER; $params["description"] = __("Use this setting to skip over posts, not showing first posts to the offset given", "unlimited-elements-for-elementor"); $conditionExcludeByOffset = $conditionExcludeBy; $conditionExcludeByOffset[$name . "_excludeby"] = "offset"; $params["elementor_condition"] = $conditionExcludeByOffset; $params["add_dynamic"] = true; $this->addTextBox($name . "_offset", "0", esc_html__("Offset", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_RADIOBOOLEAN; $params["elementor_condition"] = $conditionExcludeByTerms; $this->addRadioBoolean($name . "_terms_exclude_children", __("Exclude Terms With Children", "unlimited-elements-for-elementor"), true, "Yes", "No", $params); $conditionExcludeBySpecific = $conditionExcludeBy; $conditionExcludeBySpecific[$name . "_excludeby"] = "specific_posts"; $params = array(); $params["elementor_condition"] = $conditionExcludeBySpecific; $this->addPostIDSelect($name . "_exclude_specific_posts", sprintf(__("Specific %s To Exclude", "unlimited-elements-for-elementor"), $textPosts), $conditionExcludeBySpecific, $isForWooProducts); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $params["elementor_condition"] = $arrNotManualElementorCondition; $this->addHr($name . "_post_after_exclude", $params); $arrStatuses = HelperProviderUC::getArrPostStatusSelect(); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["is_multiple"] = true; $params["placeholder"] = __("Select one or more statuses", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $arrCustomOnlyCondition; $arrStatuses = array_flip($arrStatuses); $this->addMultiSelect($name . "_status", $arrStatuses, __("Post Status", "unlimited-elements-for-elementor"), array("publish"), $params); $params = array("unit" => "posts"); if (empty($defaultMaxPosts)) { $defaultMaxPosts = 10; } $maxItems = UniteFunctionsUC::getVal($value, $name . "_maxitems", $defaultMaxPosts); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["placeholder"] = __("100 posts if empty", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $arrCustomAndRelatedElementorCondition; $params["add_dynamic"] = true; $this->addTextBox($name . "_maxitems", $maxItems, sprintf(esc_html__("Max %s", "unlimited-elements-for-elementor"), $textPosts), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "_hr_before_orderby", $params); $arrOrder = UniteFunctionsWPUC::getArrSortBy($isForWooProducts); $arrOrder = array_flip($arrOrder); $arrDir = UniteFunctionsWPUC::getArrSortDirection(); $arrDir = array_flip($arrDir); $params = array(); $orderBY = UniteFunctionsUC::getVal($value, $name . "_orderby", "default"); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $this->addSelect($name . "_orderby", $arrOrder, __("Order By", "unlimited-elements-for-elementor"), $orderBY, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["class"] = "alias"; $arrCondition = array(); $arrCondition[$name . "_orderby"] = array(UniteFunctionsWPUC::SORTBY_META_VALUE, UniteFunctionsWPUC::SORTBY_META_VALUE_NUM); $params["elementor_condition"] = $arrCondition; $params["add_dynamic"] = true; $this->addTextBox($name . "_orderby_meta_key1", "", __(" Custom Field Name", "unlimited-elements-for-elementor"), $params); $this->addControl($name . "_orderby", $name . "_orderby_meta_key1", "show", UniteFunctionsWPUC::SORTBY_META_VALUE . "," . UniteFunctionsWPUC::SORTBY_META_VALUE_NUM); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $orderDir1 = UniteFunctionsUC::getVal($value, $name . "_orderdir1", "default"); $this->addSelect($name . "_orderdir1", $arrDir, __(" Order By Direction", "unlimited-elements-for-elementor"), $orderDir1, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "_hr_after_order_dir", $params); $isPro = GlobalsUC::$isProVersion; $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; if ($isPro == true) { $title = __("Query ID", "unlimited-elements-for-elementor"); $params["description"] = __("Give your Query unique ID to been able to filter it in server side using add_filter() function", "unlimited-elements-for-elementor"); } else { $params["description"] = __("Give your Query unique ID to been able to filter it in server side using add_filter() function. This feature exists in a PRO Version only", "unlimited-elements-for-elementor"); $title = __("Query ID (pro)", "unlimited-elements-for-elementor"); $params["disabled"] = true; } $queryID = UniteFunctionsUC::getVal($value, $name . "_queryid"); $this->addTextBox($name . "_queryid", $queryID, $title, $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_RADIOBOOLEAN; $params["description"] = __("Show the query for debugging purposes. Don't forget to turn it off before page release", "unlimited-elements-for-elementor"); $this->addRadioBoolean($name . "_show_query_debug", __("Show Query Debug", "unlimited-elements-for-elementor"), false, "Yes", "No", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["elementor_condition"] = array($name . "_show_query_debug" => "true"); $arrType = array(); $arrType["basic"] = __("Basic", "unlimited-elements-for-elementor"); $arrType["show_query"] = __("Show Raw DB Query", "unlimited-elements-for-elementor"); $arrType = array_flip($arrType); $this->addSelect($name . "_query_debug_type", $arrType, __("Debug Options", "unlimited-elements-for-elementor"), "basic", $params); } private function __________DYNAMIC_______() { } protected function getGalleryTitleSourceOptions($isDescription = false, $hasPosts = false) { if ($isDescription == false) { $arrTitleOptions = array(); if ($hasPosts) { $arrTitleOptions["post_title"] = __("Post Title", "unlimited-elements-for-elementor"); $arrTitleOptions["post_excerpt"] = __("Post Excerpt", "unlimited-elements-for-elementor"); } $arrTitleOptions["image_auto"] = __("Image Auto (title or alt or caption)", "unlimited-elements-for-elementor"); $arrTitleOptions["image_title"] = __("Image Title", "unlimited-elements-for-elementor"); $arrTitleOptions["image_alt"] = __("Image Alt", "unlimited-elements-for-elementor"); $arrTitleOptions["image_caption"] = __("Image Caption", "unlimited-elements-for-elementor"); $arrTitleOptions = array_flip($arrTitleOptions); return $arrTitleOptions; } $arrDescOptions = array(); if ($hasPosts == true) { $arrDescOptions["post_excerpt"] = __("Post Excerpt", "unlimited-elements-for-elementor"); $arrDescOptions["post_title"] = __("Post Title", "unlimited-elements-for-elementor"); $arrDescOptions["post_content"] = __("Post Content", "unlimited-elements-for-elementor"); } $arrDescOptions["image_description"] = __("Image Description", "unlimited-elements-for-elementor"); $arrDescOptions["image_title"] = __("Image Title", "unlimited-elements-for-elementor"); $arrDescOptions["image_alt"] = __("Image Alt", "unlimited-elements-for-elementor"); $arrDescOptions["image_caption"] = __("Image Caption", "unlimited-elements-for-elementor"); $arrDescOptions = array_flip($arrDescOptions); return $arrDescOptions; } protected function addListingPicker_gallery($name, $value, $title, $param) { $conditionGallery = array($name . "_source" => "gallery"); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_GALLERY; $params["elementor_condition"] = $conditionGallery; $this->addTextBox($name . "_gallery", "", __("Choose Images", "unlimited-elements-for-elementor"), $params); $conditionPost = array($name . "_source" => "posts"); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $params["elementor_condition"] = $conditionPost; $this->addHr($name . "_hr_before_title_sources_post", $params); $arrTitleOptions = $this->getGalleryTitleSourceOptions(false, true); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["label_block"] = true; $params["elementor_condition"] = $conditionPost; $this->addSelect($name . "_title_source_post", $arrTitleOptions, __("Image Title Source", "unlimited-elements-for-elementor"), "post_title", $params); $arrDescOptions = $this->getGalleryTitleSourceOptions(true, true); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["label_block"] = true; $params["elementor_condition"] = $conditionPost; $this->addSelect($name . "_description_source_post", $arrDescOptions, __("Image Description Source", "unlimited-elements-for-elementor"), "post_excerpt", $params); $conditionCurrentMeta = array($name . "_source" => "current_post_meta"); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $params["elementor_condition"] = $conditionCurrentMeta; $this->addTextBox($name . "_current_metakey", "", __("Meta Key", "unlimited-elements-for-elementor"), $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_RADIOBOOLEAN; $params["description"] = __("Show the current post meta fields, turn off it after choose the right one", "unlimited-elements-for-elementor"); $params["elementor_condition"] = $conditionCurrentMeta; $this->addRadioBoolean($name . "_show_metafields", __("Debug - Show Meta Fields", "unlimited-elements-for-elementor"), false, "Yes", "No", $params); $conditionTitleSource = array($name . "_source" => array("gallery", "current_post_meta")); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $params["elementor_condition"] = $conditionTitleSource; $this->addHr($name . "_hr_before_title_sources", $params); $arrTitleOptions = $this->getGalleryTitleSourceOptions(false, false); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["label_block"] = true; $params["elementor_condition"] = $conditionTitleSource; $this->addSelect($name . "_title_source_gallery", $arrTitleOptions, __("Image Title Source", "unlimited-elements-for-elementor"), "image_auto", $params); $arrDescOptions = $this->getGalleryTitleSourceOptions(true, false); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["label_block"] = true; $params["elementor_condition"] = $conditionTitleSource; $this->addSelect($name . "_description_source_gallery", $arrDescOptions, __("Image Description Source", "unlimited-elements-for-elementor"), "image_description", $params); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_HR; $this->addHr($name . "_hr_before_imagesize", $params); $arrSizes = UniteFunctionsWPUC::getArrThumbSizes(); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["label_block"] = true; $arrSizes = array_flip($arrSizes); $this->addSelect($name . "_thumb_size", $arrSizes, __("Thumb Image Size", "unlimited-elements-for-elementor"), "medium_large", $params); $arrSizes = UniteFunctionsWPUC::getArrThumbSizes(); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $params["label_block"] = true; $arrSizes = array_flip($arrSizes); $this->addSelect($name . "_image_size", $arrSizes, __("Big Image Size", "unlimited-elements-for-elementor"), "large", $params); } protected function addListingPicker($name, $value, $title, $param) { $useFor = UniteFunctionsUC::getVal($param, "use_for"); $isForGallery = $useFor == "gallery"; $textPrefix = __("Items ", "unlimited-elements-for-elementor"); if ($isForGallery == true) { $textPrefix = __("Gallery Items ", "unlimited-elements-for-elementor"); } if ($isForGallery == false) { $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEMPLATE; $this->addTextBox($name . "_template", "", $textPrefix . __(" Item Template", "unlimited-elements-for-elementor"), $params); } $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN; $arrSource = array(); if ($isForGallery == true) { $arrSource["gallery"] = __("Gallery", "unlimited-elements-for-elementor"); } $arrSource["posts"] = __("Posts", "unlimited-elements-for-elementor"); if ($isForGallery == true) { $arrSource["current_post_meta"] = __("Current Post Metafield", "unlimited-elements-for-elementor"); } $arrSource = array_flip($arrSource); $default = "posts"; if ($isForGallery == true) { $default = "gallery"; } $this->addSelect($name . "_source", $arrSource, $textPrefix . __("Items Source", "unlimited-elements-for-elementor"), $default, $params); if ($isForGallery == true) { $this->addListingPicker_gallery($name, $value, $title, $param); } } private function __________FILTERS_______() { } protected function addFiltersItemSelector($param) { $this->addPostIDSelect("post_ids", "Select Posts", null, false); $params = array(); $params["origtype"] = UniteCreatorDialogParam::PARAM_TEXTFIELD; $this->addTextBox("filter_type", "", "Filter Type", $params); } }