Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
61 / 61
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
Player
100.00% covered (success)
100.00%
60 / 60
100.00% covered (success)
100.00%
3 / 3
3
100.00% covered (success)
100.00%
1 / 1
 init
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
1
 addSettingsSection
100.00% covered (success)
100.00%
32 / 32
100.00% covered (success)
100.00%
1 / 1
1
 sectionCallback
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5/**
6 * Settings > BeyondWords > Player
7 *
8 * @package Beyondwords\Wordpress
9 * @author  Stuart McAlpine <stu@beyondwords.io>
10 * @since   5.0.0
11 */
12
13namespace Beyondwords\Wordpress\Component\Settings\Tabs\Player;
14
15use Beyondwords\Wordpress\Component\Settings\Fields\CallToAction\CallToAction;
16use Beyondwords\Wordpress\Component\Settings\Fields\PlaybackFromSegments\PlaybackFromSegments;
17use Beyondwords\Wordpress\Component\Settings\Fields\PlaybackControls\PlaybackControls;
18use Beyondwords\Wordpress\Component\Settings\Fields\PlayerColors\PlayerColors;
19use Beyondwords\Wordpress\Component\Settings\Fields\PlayerUI\PlayerUI;
20use Beyondwords\Wordpress\Component\Settings\Fields\PlayerStyle\PlayerStyle;
21use Beyondwords\Wordpress\Component\Settings\Fields\WidgetPosition\WidgetPosition;
22use Beyondwords\Wordpress\Component\Settings\Fields\WidgetStyle\WidgetStyle;
23use Beyondwords\Wordpress\Component\Settings\Fields\TextHighlighting\TextHighlighting;
24
25/**
26 * "Player" settings tab
27 * @since 5.0.0
28 */
29defined('ABSPATH') || exit;
30
31class Player
32{
33    /**
34     * Init
35     *
36     * @since 5.0.0
37     * @since 6.0.0 Make static.
38     */
39    public static function init()
40    {
41        (new PlayerUI())::init();
42        (new PlayerStyle())::init();
43        (new PlayerColors())::init();
44        (new CallToAction())::init();
45        (new WidgetStyle())::init();
46        (new WidgetPosition())::init();
47        (new TextHighlighting())::init();
48        (new PlaybackFromSegments())::init();
49        (new PlaybackControls())::init();
50
51        add_action('admin_init', [self::class, 'addSettingsSection'], 5);
52    }
53
54    /**
55     * Add Settings sections.
56     *
57     * @since 5.0.0
58     * @since 6.0.0 Make static.
59     */
60    public static function addSettingsSection()
61    {
62        add_settings_section(
63            'player',
64            __('Player', 'speechkit'),
65            [self::class, 'sectionCallback'],
66            'beyondwords_player',
67        );
68
69        $toggledSectionArgs = [
70            'before_section' => '<div class="%s">',
71            'after_section'  => '</div>',
72            'section_class'  => 'beyondwords-settings__player-field-toggle'
73        ];
74
75        add_settings_section(
76            'styling',
77            __('Styling', 'speechkit'),
78            false,
79            'beyondwords_player',
80            $toggledSectionArgs,
81        );
82
83        add_settings_section(
84            'widget',
85            __('Widget', 'speechkit'),
86            false,
87            'beyondwords_player',
88            $toggledSectionArgs,
89        );
90
91        add_settings_section(
92            'playback-controls',
93            __('Playback controls', 'speechkit'),
94            false,
95            'beyondwords_player',
96            $toggledSectionArgs,
97        );
98    }
99
100    /**
101     * Section callback
102     *
103     * @since 5.0.0
104     * @since 6.0.0 Make static.
105     *
106     * @return void
107     **/
108    public static function sectionCallback()
109    {
110        ?>
111        <p class="description">
112            <?php
113            esc_html_e(
114                'By default, these settings are applied to the BeyondWords player for all existing and future posts.',
115                'speechkit'
116            );
117            ?>
118        </p>
119        <p class="description">
120            <?php
121            printf(
122                /* translators: %s is replaced with the beyondwords_player_sdk_params docs link */
123                esc_html__('Unique player settings per-post is supported via the %s filter.', 'speechkit'),
124                sprintf(
125                    '<a href="https://docs.beyondwords.io/docs-and-guides/content/connect-cms/wordpress/wordpress-filters/beyondwords_player_sdk_params" target="_blank" rel="nofollow">%s</a>', // phpcs:ignore Generic.Files.LineLength.TooLong
126                    'beyondwords_player_sdk_params'
127                )
128            );
129            ?>
130        </p>
131        <?php
132    }
133}