settings = new Settings(); $this->assets = new Assets(); $this->widgets = new WidgetRegistry(ZADEX_WIDGETS_PATH); $this->renderer = new Renderer($this->widgets); $this->frontend = new Frontend($this->renderer, $this->assets); $this->editor = new EditorLoader($this->assets, $this->widgets, $this->settings); $this->api = new RestController($this->widgets, $this->renderer, $this->settings); } public function boot(): void { if ($this->booted) { return; } $this->booted = true; // Translations come from WordPress.org language packs, loaded on demand by WordPress (no load_plugin_textdomain()). Document::register_hooks(); $this->frontend->register(); (new \Zadex\Frontend\Templates($this->settings))->register(); (new \Zadex\Site\MaintenanceMode($this->settings, null, null, $this->frontend, $this->renderer))->register(); (new \Zadex\Site\FloatingButtons($this->settings, $this->assets))->register(); (new \Zadex\Site\PageTransitions($this->settings, $this->assets))->register(); (new \Zadex\SiteAssets\SiteAssets($this->settings))->register(); $this->editor->register(); $this->api->register(); (new \Zadex\Api\FormsController($this->widgets))->register(); (new \Zadex\Forms\Forms($this->widgets))->register(); (new \Zadex\Dynamic\DynamicController())->register(); (new \Zadex\Library\Library($this->widgets, $this->settings))->register(); (new \Zadex\Components\Components($this->widgets, $this->editor))->register(); (new \Zadex\Theme\ThemeBuilder($this->renderer, $this->assets, $this->editor))->register(); (new \Zadex\WooCommerce\WooCommerce())->register(); (new \Zadex\Loop\Loops($this->renderer))->register(); (new \Zadex\Popups\Popups($this->assets, $this->settings))->register(); \Zadex\Theme\Widgets\ThemeData::register(); (new \Zadex\ProContent\ProContent($this->renderer))->register(); (new \Zadex\Frontend\Interactions($this->assets))->register(); (new \Zadex\Payments\Payments())->register(); \Zadex\Team\Team::register(); // notes & comments (T169), role manager (T170) (new \Zadex\Widgets\Countdown())->register(); // countdown widget: site timezone for the editor (T190) if (is_admin()) { $this->admin = new Admin($this->settings, $this->editor); $this->admin->register(); } add_action('admin_bar_menu', [$this->editor, 'admin_bar_link'], 90); do_action('zadex/loaded', $this); } public static function activate(): void { Settings::ensure_defaults(); (new \Zadex\Forms\Submissions())->install(); (new \Zadex\Team\Notes())->install(); flush_rewrite_rules(); } public static function deactivate(): void { flush_rewrite_rules(); } }