Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
96.88% covered (success)
96.88%
31 / 32
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
Plugin
96.88% covered (success)
96.88%
31 / 32
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 init
96.88% covered (success)
96.88%
31 / 32
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2/**
3 * Plugin bootstrap.
4 *
5 * @package BeyondWords\Core
6 * @since   3.0.0
7 * @since   7.0.0 Refactored to BeyondWords namespace with snake_case methods.
8 */
9
10declare( strict_types = 1 );
11
12namespace BeyondWords\Core;
13
14defined( 'ABSPATH' ) || exit;
15
16/**
17 * Plugin bootstrap.
18 *
19 * Class references below use fully-qualified names so the wiring map is
20 * legible without scrolling — every line shows exactly where a class lives.
21 *
22 * @since 7.0.0 Refactored to BeyondWords namespace with snake_case methods.
23 */
24class Plugin {
25
26    /**
27     * Boot the plugin.
28     *
29     * Order matters: `Updater::run()` normalises the version option later classes
30     * read, and Settings must register before the API-connection-gated UI wiring.
31     */
32    public static function init(): void {
33        Updater::run();
34
35        // Must run before anything that might issue an API request.
36        \BeyondWords\Api\Client::init();
37
38        \BeyondWords\Compatibility\WPGraphQL::init();
39        \BeyondWords\Post\Sync::init();
40        \BeyondWords\SiteHealth\SiteHealth::init();
41        \BeyondWords\Player\Player::init();
42        \BeyondWords\Post\Head::init();
43
44        \BeyondWords\Settings\Tabs::init();
45        \BeyondWords\Settings\Fields::init();
46        \BeyondWords\Settings\Preselect::init();
47        \BeyondWords\Settings\Settings::init();
48
49        // Skip admin UI without credentials — prevents broken editor JS on fresh installs.
50        if ( ! \BeyondWords\Settings\Utils::has_valid_api_connection() ) {
51            return;
52        }
53
54        \BeyondWords\Editor\Block\Assets::init();
55
56        \BeyondWords\PostsList\Column::init();
57        \BeyondWords\PostsList\BulkEdit::init();
58        \BeyondWords\PostsList\Notices::init();
59
60        \BeyondWords\Editor\Components\AddPlayer::init();
61        \BeyondWords\Editor\Components\BlockAttributes::init();
62        \BeyondWords\Editor\Components\ErrorNotice\Assets::init();
63        \BeyondWords\Editor\Components\InspectPanel::init();
64        \BeyondWords\Editor\Components\InspectPanel\Assets::init();
65        \BeyondWords\Editor\Components\Sidebar\Assets::init();
66
67        \BeyondWords\Editor\Components\ContentId::init();
68        \BeyondWords\Editor\Components\ContentId\Assets::init();
69        \BeyondWords\Editor\Components\GenerateAudio::init();
70        \BeyondWords\Editor\Components\SelectVoice::init();
71        \BeyondWords\Editor\Components\SelectVoice\Assets::init();
72        \BeyondWords\Editor\Components\SettingsFields::init();
73        \BeyondWords\Editor\Components\SettingsFields\Assets::init();
74        \BeyondWords\Editor\Classic\Metabox::init();
75        \BeyondWords\Editor\Classic\Assets::init();
76    }
77}