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;
}
}