checkRequirements()) { return; } if (!($loader = Factory::get("Loader"))) { return; } (new SwaggerUICompatibility())->replaceSchema(); (new AdminPage())->registerPage(); $wpRewrite = new WordpressRewrite(); $loader->installRewriteRules($wpRewrite); $wpRewrite->register(); (new SessionHandlerRegister())->register(); load_plugin_textdomain('wc-wishlist', false, ALGOL_WISHLIST_PLUGIN_PATH . '/languages/'); $loader->initModules(); $strategy = $this->selectLoadStrategy(); $strategy->start(); } public function checkRequirements(): bool { $state = true; if (version_compare(phpversion(), ALGOL_WISHLIST_MIN_PHP_VERSION, '<')) { add_action('admin_notices', function () { echo '

' . sprintf( esc_html__('Advanced Wishlist for WooCommerce requires PHP version %s or later.', 'wc-wishlist'), ALGOL_WISHLIST_MIN_PHP_VERSION ) . '

'; }); $state = false; } elseif (!class_exists('WooCommerce')) { add_action('admin_notices', function () { echo '

' . esc_html__('Advanced Wishlist for WooCommerce requires active WooCommerce!', 'wc-wishlist') . '

'; }); $state = false; } elseif (version_compare(WC_VERSION, ALGOL_WISHLIST_MIN_WC_VERSION, '<')) { add_action('admin_notices', function () { echo '

' . sprintf( esc_html__('Advanced Wishlist for WooCommerce requires WooCommerce version %s or later.', 'wc-wishlist'), ALGOL_WISHLIST_MIN_WC_VERSION ) . '

'; }); $state = false; } return $state; } /** * @return LoadStrategy */ protected function selectLoadStrategy() { $queryContext = awlContext()->getQueryContext(); if ($queryContext->is($queryContext::CUSTOMIZER)) { /** @var $strategy CustomizePreview */ $strategy = Factory::get("LoadStrategies_CustomizePreview"); } elseif ($queryContext->is($queryContext::WP_CRON)) { /** @var $strategy WpCron */ $strategy = Factory::get("LoadStrategies_WpCron"); } elseif ($queryContext->is($queryContext::REST_API)) { /** @var $strategy RestApi */ $strategy = Factory::get("LoadStrategies_RestApi"); } elseif ($queryContext->is($queryContext::AJAX)) { /** @var $strategy AdminAjax */ $strategy = Factory::get("LoadStrategies_AdminAjax"); } elseif ($queryContext->is($queryContext::ADMIN)) { /** @var $strategy AdminCommon */ $strategy = Factory::get("LoadStrategies_AdminCommon"); } elseif ($queryContext->is($queryContext::PHPUNIT)) { /** @var $strategy PhpUnit */ $strategy = Factory::get("LoadStrategies_PhpUnit"); } else { /** @var $strategy ClientCommon */ $strategy = Factory::get("LoadStrategies_ClientCommon"); } return $strategy; } }