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

1063 lines
25 KiB
PHP
Raw Permalink Normal View History

2024-05-06 11:04:37 +07:00
<?php
defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
class UniteProviderAdminUC extends UniteCreatorAdmin{
private $dbVersion = "5"; //used for upgrade db on plugin update
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";
//install addons from this folder in the addon library itself on activate
const DIR_INSTALL_ADDONS = "addons_install";
protected $defaultAddonType;
protected $defaultView;
protected $textBuy;
protected $linkBuy;
protected $pluginTitle;
/**
*
* the constructor
*/
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->defaultView, "default view");
UniteFunctionsUC::validateNotEmpty($this->pluginTitle, "plugin title");
//update globals
GlobalsUC::$view_default = $this->defaultView;
GlobalsUC::$defaultAddonType = $this->defaultAddonType;
parent::__construct();
$this->init();
}
/**
* process activate event - install the db (with delta).
*/
public function onActivate(){
$this->createTables();
$this->importCurrentThemeAddons();
//import addons that comes in the addon library package
$this->importPackageAddons();
}
/**
* after switch theme
*/
public function afterSwitchTheme(){
$this->importCurrentThemeAddons();
}
/**
* do all actions on theme setup
*/
public function onThemeSetup(){
}
/**
* create the tables if not exists
*/
public function createTables($isForce = false){
$this->createTable(GlobalsUC::TABLE_ADDONS_NAME, $isForce);
$this->createTable(GlobalsUC::TABLE_CATEGORIES_NAME, $isForce);
$isAddonChangelogEnabled = HelperProviderUC::isAddonChangelogEnabled();
if($isAddonChangelogEnabled === true)
$this->createTable(GlobalsUC::TABLE_CHANGELOG_NAME, $isForce);
$isFormEntriesEnabled = HelperProviderUC::isFormEntriesEnabled();
if($isFormEntriesEnabled === true){
$this->createTable(GlobalsUC::TABLE_FORM_ENTRIES_NAME, $isForce);
$this->createTable(GlobalsUC::TABLE_FORM_ENTRY_FIELDS_NAME, $isForce);
}
}
/**
* create tables
*/
public function createTable($tableName, $isForce = false){
global $wpdb;
//if table exists - don't create it.
$tableRealName = UniteFunctionsWPUC::prefixDBTable($tableName);
if($isForce == false && UniteFunctionsWPUC::isDBTableExists($tableRealName))
return;
$charset_collate = $wpdb->get_charset_collate();
switch($tableName){
case GlobalsUC::TABLE_LAYOUTS_NAME:
$sql = "CREATE TABLE " . $tableRealName . " (
id INT(9) NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
layout_data MEDIUMTEXT,
ordering INT NOT NULL,
catid INT NOT NULL,
layout_type VARCHAR(60),
relate_id INT NOT NULL,
parent_id INT NOT NULL,
params TEXT NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
break;
case GlobalsUC::TABLE_CATEGORIES_NAME:
$sql = "CREATE TABLE " . $tableRealName . " (
id INT(9) NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
alias VARCHAR(255),
ordering INT NOT NULL,
params TEXT NOT NULL,
type TINYTEXT,
parent_id INT(9),
PRIMARY KEY (id)
) $charset_collate;";
break;
case GlobalsUC::TABLE_ADDONS_NAME:
$sql = "CREATE TABLE " . $tableRealName . " (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
title VARCHAR(255),
name VARCHAR(128),
alias VARCHAR(128),
addontype VARCHAR(128),
description TEXT,
ordering INT NOT NULL,
templates MEDIUMTEXT,
config MEDIUMTEXT,
catid INT,
is_active TINYINT,
test_slot1 TEXT,
test_slot2 TEXT,
test_slot3 TEXT,
PRIMARY KEY (id)
) $charset_collate;";
break;
case GlobalsUC::TABLE_CHANGELOG_NAME:
$isAddonChangelogEnabled = HelperProviderUC::isAddonChangelogEnabled();
if($isAddonChangelogEnabled === false)
return;
$sql = "CREATE TABLE " . $tableRealName . " (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
addon_id BIGINT(20) UNSIGNED NOT NULL,
addon_title VARCHAR(255) NOT NULL,
user_id BIGINT(20) UNSIGNED NULL,
type VARCHAR(32) NOT NULL,
text TEXT NOT NULL,
plugin_version VARCHAR(32) NOT NULL,
created_at DATETIME NOT NULL,
PRIMARY KEY (id),
INDEX addon_id_index (addon_id)
) $charset_collate;";
break;
case GlobalsUC::TABLE_FORM_ENTRIES_NAME:
$isFormEntriesEnabled = HelperProviderUC::isFormEntriesEnabled();
if($isFormEntriesEnabled === false)
return;
$sql = "CREATE TABLE " . $tableRealName . " (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
form_name VARCHAR(64) NOT NULL,
post_id BIGINT(20) UNSIGNED NOT NULL,
post_title VARCHAR(300) NOT NULL,
post_url VARCHAR(500) NOT NULL,
user_id BIGINT(20) UNSIGNED NULL,
user_ip VARCHAR(46) NOT NULL,
user_agent TEXT NOT NULL,
created_at DATETIME NOT NULL,
seen_at DATETIME NULL,
deleted_at DATETIME NULL,
PRIMARY KEY (id),
INDEX form_name_index (form_name),
INDEX post_id_index (post_id),
INDEX post_title_index (post_title)
) $charset_collate;";
break;
case GlobalsUC::TABLE_FORM_ENTRY_FIELDS_NAME:
$isFormEntriesEnabled = HelperProviderUC::isFormEntriesEnabled();
if($isFormEntriesEnabled === false)
return;
$sql = "CREATE TABLE " . $tableRealName . " (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
entry_id BIGINT(20) UNSIGNED NOT NULL,
title VARCHAR(128) NULL,
name VARCHAR(64) NULL,
type VARCHAR(32) NULL,
value LONGTEXT NULL,
PRIMARY KEY (id),
INDEX entry_id_index (entry_id)
) $charset_collate;";
break;
default:
UniteFunctionsUC::throwError("table: $tableName not found");
break;
}
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
/**
* check db upgrae from admin_init - for plugin update
*/
private function checkDBUpgrade(){
$optionDBVersion = "unitecreator_db_version";
$savedDBVersion = get_option($optionDBVersion);
if($savedDBVersion != $this->dbVersion){
$this->createTables(true);
update_option($optionDBVersion, $this->dbVersion);
}
}
/**
*
* add ajax back end callback, on some action to some function.
*/
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);
}
/**
*
* register the "onActivate" event
*/
protected function addEvent_onActivate($eventFunc = "onActivate"){
register_activation_hook($this->mainFilepath, array($this, $eventFunc));
}
/**
*
* tells if the the current plugin opened is this plugin or not
* in the admin side.
*/
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);
}
/**
*
* add some wordpress action
*/
protected function addAction($action, $eventFunction, $isStatic = false, $numArgs = 1, $priority = 10){
if($isStatic == false){
add_action($action, array($this, $eventFunction), $priority, $numArgs);
}else{
add_action($action, array(self::$t, $eventFunction), $priority, $numArgs);
}
}
/**
* add local filter
*/
protected function addLocalFilter($tag, $func, $numArgs = 1){
add_filter($tag, array($this, $func), 10, $numArgs);
}
/**
*
* validate admin permissions, if no pemissions - exit
*/
protected function validateAdminPermissions(){
if(UniteFunctionsWPUC::isAdminPermissions() == false){
echo "access denied, no admin permissions";
return (false);
}
}
/**
* admin main page function.
*/
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();
}
/**
* add scripts to all admin pages
*/
public function addScriptsToAllAdminPages(){
HelperUC::addStyleAbsoluteUrl(GlobalsUC::$url_provider . "assets/provider_admin.css", "uc_provider_admin");
}
/**
* add outside plugin scripts
*/
public function onAddOutsideScripts(){
try{
//add outside scripts, only on posts or pages page
$isPostsPage = UniteFunctionsWPUC::isAdminPostsPage();
$this->addScriptsToAllAdminPages();
}catch(Exception $e){
HelperHtmlUC::outputException($e);
}
}
/**
* print custom scripts
*/
public function onPrintFooterScripts(){
HelperProviderUC::onPrintFooterScripts();
}
private static function a_________MENU__________(){
}
/**
*
* add menu page
*/
protected function addMenuPage($title, $pageFunctionName, $icon = null, $link = null, $menuSlug = null){
self::$arrMenuPages[] = array("title" => $title, "pageFunction" => $pageFunctionName, "icon" => $icon, "link" => $link, "slug" => $menuSlug);
}
/**
*
* add sub menu page
*/
protected function addSubMenuPage($slug, $title, $pageFunctionName, $realLink = false, $parentSlug = null){
self::$arrSubMenuPages[] = array("slug" => $slug, "title" => $title, "pageFunction" => $pageFunctionName, "realLink" => $realLink, "parentSlug" => $parentSlug);
}
/**
* put admin menu actually
*/
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));
//switch the link for real link
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;
}
}
//clean double submenus
if(!empty($cleanTitle) && isset($submenu[$mainMenuSlug])){
$arrSubMenu = $submenu[$mainMenuSlug];
if($arrSubMenu[0][0] == $cleanTitle)
unset($submenu[$mainMenuSlug][0]);
}
}
/**
* add admin menus from the list.
*/
public function addAdminMenu(){
//add blox menu
$this->addAdminMenu_putActually(self::$arrMenuPages, self::$arrSubMenuPages);
//add plugins menu
$arrMenuPages = UniteCreatorAdminWPPluginBase::getArrMenuPages();
$arrSubMenuPages = UniteCreatorAdminWPPluginBase::getArrSubmenuPages();
$this->addAdminMenu_putActually($arrMenuPages, $arrSubMenuPages);
/*
global $menu, $submenu;
dmp($menu);
dmp($submenu);
exit();
*/
}
private static function a_______IMPORT_ADDONS________(){
}
/**
* install addosn from some path
*/
protected function installAddonsFromPath($pathAddons, $addonsType = null){
if(empty($addonsType))
$addonsType = $this->defaultAddonType;
if(is_dir($pathAddons) == false)
return (false);
$exporter = new UniteCreatorExporter();
$exporter->setMustImportAddonType($addonsType);
$exporter->importAddonsFromFolder($pathAddons);
}
/**
* import current theme addons
*/
private function importCurrentThemeAddons(){
$pathCurrentTheme = get_template_directory() . "/";
$dirAddons = apply_filters("ue_path_theme_addons", GlobalsUC::DIR_THEME_ADDONS);
$pathAddons = $pathCurrentTheme . $dirAddons . "/";
$this->installAddonsFromPath($pathAddons);
}
/**
* import package addons
*/
protected function importPackageAddons(){
$pathAddons = GlobalsUC::$pathPlugin . self::DIR_INSTALL_ADDONS . "/";
if(is_dir($pathAddons) == false)
return (false);
$imported = false;
//install vc addons
$pathAddonsVC = $pathAddons . $this->defaultAddonType . "/";
if(is_dir($pathAddonsVC)){
$this->installAddonsFromPath($pathAddonsVC, $this->defaultAddonType);
$imported = true;
}
return ($imported);
}
/**
* set editor permission
* in default it's admin menu permission
*/
protected function setPermissionEditor(){
$this->capability = "edit_posts";
}
private static function a_____OTHERS____(){
}
/**
* return if creator plugin exists
*/
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);
}
/**
* after update plugin
* install package addons, then redirect to dashboard
*/
private function onAfterUpdatePlugin(){
$isImported = $this->importPackageAddons();
if($isImported == false)
return (false);
//redirect to main view
$urlRedirect = HelperUC::getViewUrl_Default();
dmp("addons installed, redirecting...");
echo "<script>location.href='$urlRedirect'</script>";
exit();
}
/**
* run provider action if exists - only if inside plugin
*/
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;
}
}
/**
*
* plugin action links
*/
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;
}
/**
* create tables if not created on multisite
*/
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);
}
/**
* get admin page body
*/
private function getAdminPageBody(){
ob_start();
$this->adminPages();
$content = ob_get_contents();
ob_end_clean();
return ($content);
}
/**
* load in blank window html
*/
private function loadBlankWindowAdminPage($superClear = false){
if($superClear == true){ //clear all styles
global $wp_styles;
if(empty($wp_styles))
$wp_styles = new WP_Styles();
$wp_styles->queue = array();
}else{ //add wp styles
wp_enqueue_style('colors');
wp_enqueue_style('ie');
//wp_auth_check_load();
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
//put admin styles
if($superClear == true)
print_admin_styles();
else
do_action("admin_print_styles");
//put admin scripts
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();
}
/**
* is layouts builder plugin exists
*/
private function isLayoutBuilderPluginExists(){
$objPlugins = new UniteCreatorPlugins();
$isExists = $objPlugins->isPluginExists("layouts_builder");
return ($isExists);
}
/**
* copy wp addons from addon library
*/
private function checkMigrateFromAddonLibrary(){
//check if plugin exists
$isExists = $this->isLayoutBuilderPluginExists();
if($isExists == false)
return (false);
//check if migrated
$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);
}
/**
* modify plugin variables if the plugin is not default (blox)
*/
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";
}
/**
* check if user has capability to modify addons
*/
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;
}
/**
* check rankmath with instagram collision
*/
public function checkRankmathAjaxCollision(){
if(is_admin() == false)
return (false);
$isRankmathExists = class_exists("RankMath");
if($isRankmathExists == false)
return (false);
if(function_exists("is_ajax")){
$isAjax = is_ajax();
if($isAjax == false)
return (false);
}
$action = UniteFunctionsUC::getPostGetVariable("action", "", UniteFunctionsUC::SANITIZE_KEY);
if($action != "unlimitedelements_ajax_action")
return (false);
$clientAction = UniteFunctionsUC::getPostGetVariable("client_action", "", UniteFunctionsUC::SANITIZE_KEY);
if($clientAction != "save_instagram_connect_data")
return (false);
if(!isset($_REQUEST["access_token"]))
return (false);
$arrKeys = UniteFunctionsWPUC::getAllWPActionKeys("admin_init");
$keyToRemove = "";
foreach($arrKeys as $key){
$pos = strpos($key, "process_oauth");
if($pos === false)
continue;
if($pos == 32)
$keyToRemove = $key;
}
if(!empty($keyToRemove))
remove_action("admin_init", $keyToRemove);
}
/**
* on blank action
*/
public function onAdminInit(){
if(is_admin() == false)
return (true);
GlobalsUC::initAfterAdminInit();
$this->checkDBUpgrade();
$this->checkMigrateFromAddonLibrary();
$this->setUserCapability();
$this->initAddonRevisioner();
//next stuff run only if inside the plugin
if(self::isInsidePlugin() == false)
return (true);
// run blank mode
if(GlobalsUC::$blankWindowMode == true){
$isSuperClear = UniteFunctionsUC::getGetVar("superclear", "", UniteFunctionsUC::SANITIZE_KEY);
$isSuperClear = UniteFunctionsUC::strToBool($isSuperClear);
$this->loadBlankWindowAdminPage($isSuperClear);
}
}
/**
* init addon revisioner
*/
public function initAddonRevisioner(){
UniteCreatorAddonRevisioner::init();
}
/**
* add admin menu links, function for override
*/
protected function addAdminMenuLinks(){
/* function for override */
}
/**
* set plugin title
*/
protected function setPluginTitle(){
/* function for override */
}
/**
* validate init values
*/
protected function validateInitValues(){
UniteFunctionsUC::validateNotEmpty($this->pluginName, "plugin name");
}
/**
* add admin body class
*/
public function addAdminBodyClass($classes){
if(empty($classes))
$classes = "";
$classes .= " unite-view-" . self::$view;
return ($classes);
}
/**
* modify admin title
*/
public function modifyAdminTitle($title){
switch(self::$view){
case "addon":
$addonID = UniteFunctionsUC::getGetVar("id", "", UniteFunctionsUC::SANITIZE_ID);
if(empty($addonID))
return ($title);
try{
$addon = new UniteCreatorAddon();
$addon->initByID($addonID);
}catch(Exception $e){
return ($title);
}
$addonTitle = $addon->getTitle();
$title = $addonTitle . " | Edit < Unlimited Elements";
break;
}
return ($title);
}
/**
*
* init function
*/
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();
//add internal hook for adding a menu in arrMenus
$this->addAction(self::ACTION_ADMIN_MENU, "addAdminMenu");
//if not inside plugin don't continue
if($this->isInsidePlugin() == true){
$this->addAction(self::ACTION_ADD_SCRIPTS, "onAddScripts", true, 1, 9999);
$this->addLocalFilter("admin_body_class", "addAdminBodyClass");
$this->addLocalFilter("admin_title", "modifyAdminTitle");
}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");
//run provider action if exists (like after update)
if($this->isInsidePlugin())
$this->runProviderAction();
//start the external plugin api integration
add_action("init", array($this, "checkRankmathAjaxCollision"));
$this->addAction("admin_init", "onAdminInit");
}
}