$url = 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 menu pages list * * @return AbstractMenuPageController[] */ public static function getMenuPages() { static $basicMenuPages = null; if (is_null($basicMenuPages)) { $basicMenuPages = array(); $basicMenuPages[] = MainPageController::getInstance(); $basicMenuPages[] = PackagesPageController::getInstance(); $basicMenuPages[] = ImportPageController::getInstance(); $basicMenuPages[] = ImportInstallerPageController::getInstance(); $basicMenuPages[] = EmailSummaryPreviewPageController::getInstance(); $basicMenuPages[] = HelpPageController::getInstance(); $basicMenuPages[] = StoragePageController::getInstance(); $basicMenuPages[] = SettingsPageController::getInstance(); $basicMenuPages[] = DebugPageController::getInstance(); $basicMenuPages[] = ToolsPageController::getInstance(); } return array_filter( apply_filters( 'duplicator_menu_pages', $basicMenuPages ), function ($menuPage) { return is_subclass_of($menuPage, '\Duplicator\Core\Controllers\AbstractSinglePageController'); } ); } /** * Return menu pages list sorted by position * * @return AbstractMenuPageController[] */ protected static function getMenuPagesSortedByPos() { $menuPages = self::getMenuPages(); uksort($menuPages, function ($a, $b) use ($menuPages) { if ($menuPages[$a]->getPosition() == $menuPages[$b]->getPosition()) { if ($a == $b) { return 0; } elseif ($a > $b) { return 1; } else { return -1; } } elseif ($menuPages[$a]->getPosition() > $menuPages[$b]->getPosition()) { return 1; } else { return -1; } }); return array_values($menuPages); } /** * Return page controlle by slug of false if don't exist * * @param string $slug page key * * @return boolean|AbstractMenuPageController */ public static function getPageControlleBySlug($slug) { $menuPages = self::getMenuPages(); foreach ($menuPages as $page) { if ($page->getSlug() === $slug) { return $page; } } return false; } /** * Register menu pages * * @return void */ public function registerMenu() { $menuPages = self::getMenuPagesSortedByPos(); // before register main pages foreach ($menuPages as $menuPage) { if (!$menuPage->isEnabled() || !$menuPage->isMainPage()) { continue; } $menuPage->registerMenu(); } // after register secondary pages foreach ($menuPages as $menuPage) { if (!$menuPage->isEnabled() || $menuPage->isMainPage()) { continue; } $menuPage->registerMenu(); } } }