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 UniteProviderAdminUC extends UniteCreatorAdmin { private $dbVersion = "2"; private static $arrMenuPages = array(); private static $arrSubMenuPages = array(); protected $capability = "manage_options"; public static $isUserHasCapability = true; public static $adminTitle = null; protected $mainFilepath; protected $pluginFilebase; private $dirPlugin; protected $pluginName; protected $arrAllowedViews = array(); private static $t; const ACTION_ADMIN_MENU = "admin_menu"; const ACTION_ADMIN_INIT = "admin_init"; const ACTION_ADD_SCRIPTS = "admin_enqueue_scripts"; const ACTION_AFTER_SETUP_THEME = "after_setup_theme"; const ACTION_PRINT_SCRIPT = "admin_print_footer_scripts"; const ACTION_AFTER_SWITCH_THEME = "after_switch_theme"; const ACTION_PLUGINS_LOADED = "plugins_loaded"; const DIR_INSTALL_ADDONS = "addons_install"; protected $coreAddonType; protected $coreAddonsView; protected $textBuy; protected $linkBuy; protected $pluginTitle; public function __construct($mainFilepath) { self::$t = $this; $this->mainFilepath = $mainFilepath; $mainFilename = basename($mainFilepath); $pathPlugin = str_replace('\\', "/", GlobalsUC::$pathPlugin); $dirPlugins = dirname($pathPlugin) . "/"; $dirPlugin = str_replace($dirPlugins, "", $pathPlugin); $this->dirPlugin = $dirPlugin; $this->pluginFilebase = $dirPlugin . $mainFilename; UniteFunctionsUC::validateNotEmpty($this->coreAddonsView, "core addons view"); UniteFunctionsUC::validateNotEmpty($this->pluginTitle, "plugin title"); GlobalsUC::$view_default = $this->coreAddonsView; GlobalsUC::$defaultAddonType = $this->coreAddonType; parent::__construct(); $this->init(); } public function onActivate() { $this->createTables(); $this->importCurrentThemeAddons(); $this->importPackageAddons(); } public function afterSwitchTheme() { $this->importCurrentThemeAddons(); } public function onThemeSetup() { } public function createTables($isForce = false) { $this->createTable(GlobalsUC::TABLE_ADDONS_NAME, $isForce); $this->createTable(GlobalsUC::TABLE_CATEGORIES_NAME, $isForce); } public function createTable($tableName, $isForce = false) { global $wpdb; $tableRealName = $wpdb->prefix . $tableName; if ($isForce == false && UniteFunctionsWPUC::isDBTableExists($tableRealName)) { return false; } $charset_collate = $wpdb->get_charset_collate(); switch ($tableName) { case GlobalsUC::TABLE_LAYOUTS_NAME: $sql = "CREATE TABLE " . $tableRealName . " (\r\n\t\t\t\t\tid int(9) NOT NULL AUTO_INCREMENT,\r\n\t\t\t\t\ttitle varchar(255) NOT NULL,\r\n\t\t\t\t\tlayout_data mediumtext,\t\t\t\t\t\r\n\t\t\t\t\tordering int not NULL,\r\n\t\t\t\t\tcatid int not NULL,\r\n\t\t\t\t\tlayout_type varchar(60),\r\n\t\t\t\t\trelate_id int not NULL,\r\n\t\t\t\t\tparent_id int not NULL,\r\n\t\t\t\t\tparams text NOT NULL,\r\n\t\t\t\t\tPRIMARY KEY (id)\r\n\t\t\t\t\t){$charset_collate};"; break; case GlobalsUC::TABLE_CATEGORIES_NAME: $sql = "CREATE TABLE " . $tableRealName . " (\r\n\t\t\t\t\tid int(9) NOT NULL AUTO_INCREMENT,\r\n\t\t\t\t\ttitle varchar(255) NOT NULL,\r\n\t\t\t\t\talias varchar(255),\r\n\t\t\t\t\tordering int not NULL,\r\n\t\t\t\t\tparams text NOT NULL,\r\n\t\t\t\t\ttype tinytext,\r\n\t\t\t\t\tparent_id int(9),\r\n\t\t\t\t\tPRIMARY KEY (id)\r\n\t\t\t\t\t){$charset_collate};"; break; case GlobalsUC::TABLE_ADDONS_NAME: $sql = "CREATE TABLE " . $tableRealName . " (\r\n\t\t\t\t\tid int(9) NOT NULL AUTO_INCREMENT,\r\n\t\t\t\t\ttitle varchar(255),\r\n\t\t\t\t\tname varchar(128),\r\n\t\t\t\t\talias varchar(128),\r\n\t\t\t\t\taddontype varchar(128),\r\n\t\t\t\t\tdescription text,\r\n\t\t\t\t\tordering int not NULL,\r\n\t\t\t\t\ttemplates mediumtext,\r\n\t\t\t\t\tconfig mediumtext,\r\n\t\t\t\t\tcatid int,\r\n\t\t\t\t\tis_active tinyint,\r\n\t\t\t\t\ttest_slot1 text,\t\r\n\t\t\t\t\ttest_slot2 text,\t\r\n\t\t\t\t\ttest_slot3 text,\r\n\t\t\t\t\tPRIMARY KEY (id)\r\n\t\t\t\t\t){$charset_collate};"; break; default: UniteFunctionsMeg::throwError("table: {$tableName} not found"); break; } require_once ABSPATH . 'wp-admin/includes/upgrade.php'; dbDelta($sql); } private function checkDBUpgrade() { $optionDBVersion = "unitecreator_db_version"; $savedDBVersion = get_option($optionDBVersion); if ($savedDBVersion != $this->dbVersion) { $this->createTables(true); update_option($optionDBVersion, $this->dbVersion); } } protected function addActionAjax($ajaxAction, $eventFunction) { $this->addAction('wp_ajax_' . GlobalsUC::PLUGIN_NAME . "_" . $ajaxAction, $eventFunction, true); $this->addAction('wp_ajax_nopriv_' . GlobalsUC::PLUGIN_NAME . "_" . $ajaxAction, $eventFunction, true); } protected function addEvent_onActivate($eventFunc = "onActivate") { register_activation_hook($this->mainFilepath, array($this, $eventFunc)); } protected function isInsidePlugin() { $page = UniteFunctionsUC::getGetVar("page", "", UniteFunctionsUC::SANITIZE_KEY); $isPageMaster = strpos($page, "unlimited-elements-master") !== false; if ($page == "addon-library-layouts_layout" || $isPageMaster == true) { return true; } if ($page == $this->pluginName || strpos($page, $this->pluginName . "_") !== false || strpos($page, $this->pluginName . "-") !== false) { return true; } return false; } protected function addAction($action, $eventFunction, $isStatic = false, $numArgs = 1) { if ($isStatic == false) { add_action($action, array($this, $eventFunction), 10, $numArgs); } else { add_action($action, array(self::$t, $eventFunction), 10, $numArgs); } } protected function addLocalFilter($tag, $func, $numArgs = 1) { add_filter($tag, array($this, $func), 10, $numArgs); } protected function validateAdminPermissions() { if (UniteFunctionsWPUC::isAdminPermissions() == false) { echo "access denied, no admin permissions"; return false; } } public function adminPages() { GlobalsUC::$alterViewHeaderPrefix = $this->pluginTitle; if (!empty($this->arrAllowedViews) && in_array(self::$view, $this->arrAllowedViews) == false) { echo esc_html__("this view not allowed in the plugin", "unlimited-elements-for-elementor"); return false; } $this->createTables(); parent::adminPages(); } public function addScriptsToAllAdminPages() { HelperUC::addStyleAbsoluteUrl(GlobalsUC::$url_provider . "assets/provider_admin.css", "uc_provider_admin"); } public function onAddOutsideScripts() { try { $isPostsPage = UniteFunctionsWPUC::isAdminPostsPage(); $this->addScriptsToAllAdminPages(); } catch (Exception $e) { HelperHtmlUC::outputException($e); } } public function onPrintFooterScripts() { HelperProviderUC::onPrintFooterScripts(); } private static function a_________MENU__________() { } protected function addMenuPage($title, $pageFunctionName, $icon = null, $link = null, $menuSlug = null) { self::$arrMenuPages[] = array("title" => $title, "pageFunction" => $pageFunctionName, "icon" => $icon, "link" => $link, "slug" => $menuSlug); } protected function addSubMenuPage($slug, $title, $pageFunctionName, $realLink = false, $parentSlug = null) { self::$arrSubMenuPages[] = array("slug" => $slug, "title" => $title, "pageFunction" => $pageFunctionName, "realLink" => $realLink, "parentSlug" => $parentSlug); } public function addAdminMenu_putActually($arrMenuPages, $arrSubMenuPages) { global $menu, $submenu; $cleanTitle = false; $mainMenuSlug = null; if (empty($arrMenuPages)) { return false; } foreach ($arrMenuPages as $mainMenu) { $title = $mainMenu["title"]; $pageFunctionName = $mainMenu["pageFunction"]; $pluginName = UniteFunctionsUC::getVal($mainMenu, "plugin_name"); $menuSlug = UniteFunctionsUC::getVal($mainMenu, "slug"); if (empty($menuSlug) && !empty($pluginName)) { $menuSlug = $this->pluginName . "-" . $pluginName; } if (empty($menuSlug)) { $menuSlug = $this->pluginName; } $icon = ""; if (isset($mainMenu["icon"])) { $icon = $mainMenu["icon"]; } add_menu_page($title, $title, $this->capability, $menuSlug, array(self::$t, $pageFunctionName), $icon); $link = $mainMenu["link"]; $cleanTitle = $title; $mainMenuSlug = $menuSlug; if (!empty($link)) { $cleanTitle = $title; $mainMenuSlug = $link; $keys = array_keys($menu); $lastMainMenuKey = $keys[count($keys) - 1]; $menu[$lastMainMenuKey][2] = $link; } } if (empty($arrSubMenuPages)) { return false; } foreach ($arrSubMenuPages as $key => $submenuMenu) { $title = $submenuMenu["title"]; $pageFunctionName = $submenuMenu["pageFunction"]; $pluginName = UniteFunctionsUC::getVal($submenuMenu, "plugin_name"); $isRealLink = $submenuMenu["realLink"]; $parentSlug = $submenuMenu["parentSlug"]; if (empty($parentSlug) && !empty($pluginName)) { $parentSlug = $this->pluginName . "-" . $pluginName; } if (empty($parentSlug)) { $parentSlug = $this->pluginName; } $slug = $parentSlug . "_" . $submenuMenu["slug"]; if ($key == 0 && $isRealLink == false) { $slug = $parentSlug; } add_submenu_page($parentSlug, $title, $title, $this->capability, $slug, array(self::$t, $pageFunctionName)); if ($isRealLink === true && isset($submenu[$parentSlug])) { $arrMain = $submenu[$parentSlug]; $keys = array_keys($arrMain); $lastKey = $keys[count($keys) - 1]; $arrMain[$lastKey][2] = $submenuMenu["slug"]; $submenu[$parentSlug] = $arrMain; } } if (!empty($cleanTitle) && isset($submenu[$mainMenuSlug])) { $arrSubMenu = $submenu[$mainMenuSlug]; if ($arrSubMenu[0][0] == $cleanTitle) { unset($submenu[$mainMenuSlug][0]); } } } public function addAdminMenu() { $this->addAdminMenu_putActually(self::$arrMenuPages, self::$arrSubMenuPages); $arrMenuPages = UniteCreatorAdminWPPluginBase::getArrMenuPages(); $arrSubMenuPages = UniteCreatorAdminWPPluginBase::getArrSubmenuPages(); $this->addAdminMenu_putActually($arrMenuPages, $arrSubMenuPages); } private static function a_______IMPORT_ADDONS________() { } protected function installAddonsFromPath($pathAddons, $addonsType = null) { if (empty($addonsType)) { $addonsType = $this->coreAddonType; } if (is_dir($pathAddons) == false) { return false; } $exporter = new UniteCreatorExporter(); $exporter->setMustImportAddonType($addonsType); $exporter->importAddonsFromFolder($pathAddons); } private function importCurrentThemeAddons() { $pathCurrentTheme = get_template_directory() . "/"; $dirAddons = apply_filters("blox_path_theme_addons", GlobalsUC::DIR_THEME_ADDONS); $pathAddons = $pathCurrentTheme . $dirAddons . "/"; $this->installAddonsFromPath($pathAddons); } protected function importPackageAddons() { $pathAddons = GlobalsUC::$pathPlugin . self::DIR_INSTALL_ADDONS . "/"; if (is_dir($pathAddons) == false) { return false; } $imported = false; $pathAddonsVC = $pathAddons . $this->coreAddonType . "/"; if (is_dir($pathAddonsVC)) { $this->installAddonsFromPath($pathAddonsVC, $this->coreAddonType); $imported = true; } return $imported; } protected function setPermissionEditor() { $this->capability = "edit_posts"; } private static function a_____OTHERS____() { } protected function isCreatorPluginExists() { $arrPlugins = get_plugins(); $pluginName = "addon_library_creator/addon_library_creator.php"; if (isset($arrPlugins[$pluginName]) == false) { return false; } $isActive = is_plugin_active($pluginName); return $isActive; } private function onAfterUpdatePlugin() { $isImported = $this->importPackageAddons(); if ($isImported == false) { return false; } $urlRedirect = HelperUC::getViewUrl_Default(); dmp("addons installed, redirecting..."); echo "<script>location.href='{$urlRedirect}'</script>"; exit; } private function runProviderAction() { $action = UniteFunctionsUC::getGetVar("provider_action", "", UniteFunctionsUC::SANITIZE_KEY); if (empty($action)) { return false; } switch ($action) { case "run_after_update": $this->onAfterUpdatePlugin(); break; } } public function plugin_action_links($links) { $settings_link = sprintf('<a href="%s">%s</a>', admin_url('admin.php?page=' . Settings::PAGE_ID), __('Settings', 'elementor')); array_unshift($links, $settings_link); $links['go_pro'] = sprintf('<a href="%s" target="_blank" class="elementor-plugins-gopro">%s</a>', Utils::get_pro_link('https://elementor.com/pro/?utm_source=wp-plugins&utm_campaign=gopro&utm_medium=wp-dash'), __('Go Pro', 'elementor')); return $links; } protected function checkMultisiteCreateTables() { global $wpdb; $tablePrefix = $wpdb->prefix; $option = "addon_library_tables_created_{$tablePrefix}"; $isCreated = get_option($option); if ($isCreated == true) { return true; } $this->createTables(); update_option($option, true); } private function getAdminPageBody() { ob_start(); $this->adminPages(); $content = ob_get_contents(); ob_end_clean(); return $content; } private function loadBlankWindowAdminPage($superClear = false) { if ($superClear == true) { global $wp_styles; if (empty($wp_styles)) { $wp_styles = new WP_Styles(); } $wp_styles->queue = array(); } else { wp_enqueue_style('colors'); wp_enqueue_style('ie'); wp_enqueue_style('wp-auth-check'); wp_enqueue_script('wp-auth-check'); add_action('admin_print_footer_scripts', 'wp_auth_check_html', 5); add_action('wp_print_footer_scripts', 'wp_auth_check_html', 5); } self::onAddScripts(); $htmlBody = $this->getAdminPageBody(); $title = UniteFunctionsWPUC::getAdminTitle(self::$adminTitle); HelperUC::addStyle("blank_page_preview", "uc_blank_page_preview"); $arrCustomStyles = UniteProviderFunctionsUC::getCustomStyles(); $htmlCustomCssStyles = HelperHtmlUC::getHtmlCustomStyles($arrCustomStyles); $arrJsCustomScripts = UniteProviderFunctionsUC::getCustomScripts(); $htmlJSScripts = HelperHtmlUC::getHtmlCustomScripts($arrJsCustomScripts); ?> <!DOCTYPE html> <html> <head> <title><?php echo esc_html($title); ?></title> <?php if ($superClear == true) { print_admin_styles(); } else { do_action("admin_print_styles"); } print_head_scripts(); if (!empty($htmlCustomCssStyles)) { echo "\n" . $htmlCustomCssStyles; } $view = self::$view; ?> </head> <body class="uc-blank-preview uc-view-<?php echo esc_attr($view); ?>"> <?php echo UniteProviderFunctionsUC::escCombinedHtml($htmlBody); ?> <?php echo UniteProviderFunctionsUC::escCombinedHtml($htmlJSScripts); if ($superClear == true) { print_footer_scripts(); } else { do_action("admin_footer"); do_action("admin_print_footer_scripts"); } ?> </body> </html> <?php exit; } private function isLayoutBuilderPluginExists() { $objPlugins = new UniteCreatorPlugins(); $isExists = $objPlugins->isPluginExists("layouts_builder"); return $isExists; } private function checkMigrateFromAddonLibrary() { $isExists = $this->isLayoutBuilderPluginExists(); if ($isExists == false) { return false; } $keyMigrate = "blox_is_migrated_from_addon_library"; $isMigrated = UniteProviderFunctionsUC::getOption($keyMigrate); if ($isMigrated == true) { return false; } $objAddons = new UniteCreatorAddons(); $objAddons->migrateAddonsFromType("wp"); UniteProviderFunctionsUC::updateOption($keyMigrate, true); } protected function modifyPluginVariables() { if ($this->pluginName == GlobalsUC::PLUGIN_NAME) { return false; } $pluginName = $this->pluginName; GlobalsUC::$url_component_admin = admin_url() . "admin.php?page={$pluginName}"; GlobalsUC::$url_component_client = GlobalsUC::$url_component_admin; GlobalsUC::$url_component_admin_nowindow = GlobalsUC::$url_component_admin . "&ucwindow=blank"; } private function setUserCapability() { $data = get_userdata(get_current_user_id()); if (is_object($data) == false) { return false; } $allCaps = $data->allcaps; $currentCapability = UniteFunctionsUC::getVal($allCaps, $this->capability); if (empty($currentCapability)) { self::$isUserHasCapability = false; } } public function onAdminInit() { if (is_admin() == false) { return true; } GlobalsUC::initAfterAdminInit(); $this->checkDBUpgrade(); $this->checkMigrateFromAddonLibrary(); $this->setUserCapability(); if (self::isInsidePlugin() == false) { return true; } if (GlobalsUC::$blankWindowMode == false) { return true; } $isSuperClear = UniteFunctionsUC::getGetVar("superclear", "", UniteFunctionsUC::SANITIZE_KEY); $isSuperClear = UniteFunctionsUC::strToBool($isSuperClear); $this->loadBlankWindowAdminPage($isSuperClear); } protected function addAdminMenuLinks() { } protected function setPluginTitle() { } protected function validateInitValues() { UniteFunctionsUC::validateNotEmpty($this->pluginName, "plugin name"); } public function addAdminBodyClass($classes) { if (empty($classes)) { $classes = ""; } $classes .= " unite-view-" . self::$view; return $classes; } protected function init() { $this->validateInitValues(); UniteProviderFunctionsUC::doAction(UniteCreatorFilters::ACTION_BEFORE_ADMIN_INIT); parent::init(); HelperProviderUC::globalInit(); if (is_multisite() == true) { $this->checkMultisiteCreateTables(); } $this->setPluginTitle(); $this->modifyPluginVariables(); $this->addAdminMenuLinks(); $this->addAction(self::ACTION_ADMIN_MENU, "addAdminMenu"); if ($this->isInsidePlugin() == true) { $this->addAction(self::ACTION_ADD_SCRIPTS, "onAddScripts", true); $this->addLocalFilter("admin_body_class", "addAdminBodyClass"); } else { $this->addAction(self::ACTION_ADD_SCRIPTS, "onAddOutsideScripts"); } $this->addAction(self::ACTION_PRINT_SCRIPT, "onPrintFooterScripts"); $this->addAction(self::ACTION_AFTER_SWITCH_THEME, "afterSwitchTheme"); $this->addEvent_onActivate(); $this->addActionAjax("ajax_action", "onAjaxAction"); if ($this->isInsidePlugin()) { $this->runProviderAction(); } $this->addAction("admin_init", "onAdminInit"); } }