%PDF- %PDF-
| Direktori : /home/q/g/b/qgbqkvz/www/wp-content/plugins/duplicator/src/Core/Controllers/ |
| Current File : /home/q/g/b/qgbqkvz/www/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 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 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);
}
}