onboarding(); $this->handleVersionUpdate(); $this->registrars(); $this->notices(); } private function onboarding() { if (get_transient('sync_basalam_just_activated')) { delete_transient('sync_basalam_just_activated'); if (!syncBasalamSettings()->hasToken()) { wp_safe_redirect(admin_url('admin.php?page=basalam-onboarding')); exit(); } } } private function handleVersionUpdate() { $currentVersion = \get_option('sync_basalam_version') ?: '0.0.0'; if (version_compare($currentVersion, self::VERSION, '<')) { $fetchVersionDetail = new FetchVersionDetail(self::VERSION); $fetchVersionDetail->checkForceUpdate(); $manager = new MigrationManager(); $manager->runMigrations($currentVersion, self::VERSION); } } private function notices() { if (!get_option('sync_basalam_review_never_remind')) { add_action('admin_notices', function () { if (!AdminRegistrar::isWoosalamRelatedAdminScreen()) return; $template = syncBasalamPlugin()->templatePath("notifications/LikeAlert.php"); require_once $template; }); } if (!syncBasalamSettings()->hasToken()) { add_action('admin_notices', function () { if (!AdminRegistrar::isWoosalamRelatedAdminScreen()) return; $template = syncBasalamPlugin()->templatePath("notifications/AccessAlert.php"); require_once($template); }); } add_action('admin_notices', function () { if (!AdminRegistrar::isWoosalamRelatedAdminScreen()) return; $template = syncBasalamPlugin()->templatePath("notifications/HttpBlock.php"); require_once($template); }); add_action('admin_notices', function () { if (!AdminRegistrar::isWoosalamRelatedAdminScreen()) return; $circuitBreaker = new CircuitBreaker(); if ($circuitBreaker->getState() === CircuitBreaker::STATE_CLOSED) return; $template = syncBasalamPlugin()->templatePath("notifications/CircuitBreakerAlert.php"); require $template; }); } private function registrars() { $registrars = [ AdminRegistrar::class, ProductRegistrar::class, OrderRegistrar::class, ListenerRegistrar::class, QueueRegistrar::class, ]; foreach ($registrars as $registrarClass) { $registrar = syncBasalamContainer()->get($registrarClass); $registrar->register(); } } public function pluginPath() { return untrailingslashit(str_replace("includes", "", \plugin_dir_path(__FILE__))); } public function templatePath($path = null) { $path = $path ? "/" . $path : null; return $this->pluginPath() . "/templates" . $path; } public function assetsUrl($path = null) { return plugin_dir_url(dirname(__FILE__, 1)) . "assets/" . $path; } public function getVersion() { return self::VERSION; } }