?
Current Path : /home1/savoy/public_html/wp-content/plugins/duplicator/src/Core/Controllers/ |
Linux gator3171.hostgator.com 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64 |
Current File : /home1/savoy/public_html/wp-content/plugins/duplicator/src/Core/Controllers/ControllersManager.php |
<?php /** * Singlethon class that manages the various controllers of the administration of wordpress * * @package Duplicator * @copyright (c) 2021, Snapcreek LLC */ namespace Duplicator\Core\Controllers; use Duplicator\Libs\Snap\SnapUtil; final class ControllersManager { const MAIN_MENU_SLUG = 'duplicator'; const PACKAGES_SUBMENU_SLUG = 'duplicator'; const IMPORT_SUBMENU_SLUG = 'duplicator-import'; const SCHEDULES_SUBMENU_SLUG = 'duplicator-schedules'; const STORAGE_SUBMENU_SLUG = 'duplicator-storage'; const ABOUT_US_SUBMENU_SLUG = 'duplicator-about-us'; const TEMPLATES_SUBMENU_SLUG = 'duplicator-templates'; const TOOLS_SUBMENU_SLUG = 'duplicator-tools'; const SETTINGS_SUBMENU_SLUG = 'duplicator-settings'; const DEBUG_SUBMENU_SLUG = 'duplicator-debug'; const UPSELL_SUBMENU_SLUG = 'duplicator-pro'; const QUERY_STRING_MENU_KEY_L1 = 'page'; const QUERY_STRING_MENU_KEY_L2 = 'tab'; const QUERY_STRING_MENU_KEY_L3 = 'subtab'; const QUERY_STRING_MENU_KEY_ACTION = 'action'; /** * Return current menu levels * * @return string[] */ public static function getMenuLevels() { $result = array(); $exChars = '-_'; $result[self::QUERY_STRING_MENU_KEY_L1] = SnapUtil::sanitizeStrictInput( SnapUtil::INPUT_REQUEST, self::QUERY_STRING_MENU_KEY_L1, null, $exChars ); $result[self::QUERY_STRING_MENU_KEY_L2] = SnapUtil::sanitizeStrictInput( SnapUtil::INPUT_REQUEST, self::QUERY_STRING_MENU_KEY_L2, null, $exChars ); $result[self::QUERY_STRING_MENU_KEY_L3] = SnapUtil::sanitizeStrictInput( SnapUtil::INPUT_REQUEST, self::QUERY_STRING_MENU_KEY_L3, null, $exChars ); return $result; } /** * Return true if current page is a duplicator page * * @return boolean */ public static function isDuplicatorPage() { if (!is_admin()) { return false; } switch (SnapUtil::sanitizeStrictInput(SnapUtil::INPUT_REQUEST, 'page', '', '-_ ')) { case self::MAIN_MENU_SLUG: case self::PACKAGES_SUBMENU_SLUG: case self::IMPORT_SUBMENU_SLUG: case self::SCHEDULES_SUBMENU_SLUG: case self::STORAGE_SUBMENU_SLUG: case self::ABOUT_US_SUBMENU_SLUG: case self::TEMPLATES_SUBMENU_SLUG: case self::TOOLS_SUBMENU_SLUG: case self::SETTINGS_SUBMENU_SLUG: case self::DEBUG_SUBMENU_SLUG: case self::UPSELL_SUBMENU_SLUG: return true; default: return false; } } /** * Return current action key or false if not exists * * @return string|bool */ public static function getAction() { return SnapUtil::sanitizeStrictInput( SnapUtil::INPUT_REQUEST, self::QUERY_STRING_MENU_KEY_ACTION, false, '-_' ); } /** * Check current page * * @param string $page page key * @param null|string $tabL1 tab level 1 key, null not check * @param null|string $tabL2 tab level 12key, null not check * * @return boolean */ public static function isCurrentPage($page, $tabL1 = null, $tabL2 = null) { $levels = self::getMenuLevels(); if ($page !== $levels[self::QUERY_STRING_MENU_KEY_L1]) { return false; } if (!is_null($tabL1) && $tabL1 !== $levels[self::QUERY_STRING_MENU_KEY_L2]) { return false; } if (!is_null($tabL1) && !is_null($tabL2) && $tabL2 !== $levels[self::QUERY_STRING_MENU_KEY_L3]) { return false; } return true; } /** * Return current menu page URL * * @param array $extraData extra value in query string key=val * * @return string */ public static function getCurrentLink($extraData = array()) { $levels = self::getMenuLevels(); return self::getMenuLink( $levels[self::QUERY_STRING_MENU_KEY_L1], $levels[self::QUERY_STRING_MENU_KEY_L2], $levels[self::QUERY_STRING_MENU_KEY_L3], $extraData ); } /** * Return menu page URL * * @param string $page page slug * @param string $subL2 tab level 1 slug, null not set * @param string $subL3 tab level 2 slug, null not set * @param array $extraData extra value in query string key=val * @param bool $relative if true return relative path or absolute * * @return string */ public static function getMenuLink($page, $subL2 = null, $subL3 = null, $extraData = array(), $relative = true) { $data = $extraData; $data[self::QUERY_STRING_MENU_KEY_L1] = $page; if (!empty($subL2)) { $data[self::QUERY_STRING_MENU_KEY_L2] = $subL2; } if (!empty($subL3)) { $data[self::QUERY_STRING_MENU_KEY_L3] = $subL3; } if ($relative) { $url = self_admin_url('admin.php', 'relative'); } else { if (is_multisite()) { $url = network_admin_url('admin.php'); } else { $url = admin_url('admin.php'); } } return $url . '?' . http_build_query($data); } /** * Return create package link * * @return string */ public static function getPackageBuildUrl() { return self::getMenuLink( self::PACKAGES_SUBMENU_SLUG, 'new1', null, array( 'inner_page' => 'new1', '_wpnonce' => wp_create_nonce('new1-package') ) ); } /** * Return package detail link * * @param int $packageId package id * * @return string */ public static function getPackageDetailUrl($packageId) { return self::getMenuLink( self::PACKAGES_SUBMENU_SLUG, 'detail', null, array( 'action' => 'detail', 'id' => $packageId ) ); } }