AdminSettings::enqueueSettingsScripts()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 1
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * This file is part of the Subway WordPress Plugin Package.
4
 *
5
 * (c) Joseph Gabito <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 *
10
 * PHP Version 5.4
11
 *
12
 * @category Subway\Admin\Settings
13
 * @package  Subway
14
 * @author   Joseph G. <[email protected]>
15
 * @license  http://opensource.org/licenses/gpl-license.php GNU Public License
16
 * @version  GIT:github.com/codehaiku/subway
17
 * @link     github.com/codehaiku/subway The Plugin Repository
18
 */
19
20
namespace Subway;
21
22
if (! defined('ABSPATH') ) {
23
    return;
24
}
25
26
/**
27
 * Registers all the admin settings inside Settings > Subway
28
 *
29
 * @category Subway\Admin\Settings
30
 * @package  Subway
31
 * @author   Joseph G. <[email protected]>
32
 * @license  http://opensource.org/licenses/gpl-license.php GNU Public License
33
 * @link     github.com/codehaiku/subway The Plugin Repository
34
 * @since    1.0
35
 */
36
final class AdminSettings
37
{
38
39
    /**
40
     * Our class constructor
41
     */
42
    public function __construct()
43
    {
44
45
        add_action('admin_menu', array( $this, 'adminMenu' ));
46
47
        add_action('admin_init', array( $this, 'registerSettings' ));
48
49
    }
50
51
    /**
52
     * Display 'Subway' link under 'Settings'
53
     *
54
     * @return void
55
     */
56
    public function adminMenu()
57
    {
58
59
        add_options_page(
60
            'Subway Settings', 'Subway', 'manage_options',
61
            'subway', array( $this, 'optionsPage' )
62
        );
63
64
		add_action( 'admin_enqueue_scripts', array( $this, 'enqueueSettingsScripts' ) );
65
66
        return;
67
    }
68
69
    /**
70
     * Registers all settings related to Subway.
71
     *
72
     * @return void
73
     */
74
    public function registerSettings()
75
    {
76
77
        // Register our settings section.
78
        add_settings_section(
79
            'subway-page-visibility-section', __('Pages Visibility', 'subway'),
80
            array( $this, 'sectionCallback' ), 'subway-settings-section'
81
        );
82
83
        // Register Redirect Options pages.
84
        add_settings_section(
85
            'subway-redirect-section', __('Redirect Options', 'subway'),
86
            array( $this, 'redirectCallback' ), 'subway-settings-section'
87
        );
88
89
		$is_public_site = Options::isPublicSite();
90
		$hidden_class = '';
91
92
		if ( $is_public_site ) {
93
			$hidden_class = 'hidden';
94
		}
95
96
        // Register the fields.
97
        $fields = array(
98
          
99
            array(
100
                'id' => 'subway_login_page',
101
                'label' => __('Login Page', 'subway'),
102
                'callback' => 'subway_login_page_form',
103
                'section' => 'subway-settings-section',
104
                'group' => 'subway-page-visibility-section',
105
				'args'  => array(
106
					'label_for' => 'subway_login_page',
107
					'class'     => 'subway_login_page-option',
108
				),
109
            ),
110
            array(
111
                'id' => 'subway_public_post_deprecated',
112
                'label' => __('Public Posts IDs', 'subway'),
113
                'callback' => 'subway_public_post',
114
                'section' => 'subway-settings-section',
115
                'group' => 'subway-page-visibility-section',
116
				'args'  => array(
117
					'label_for' => 'subway_public_post_deprecated',
118
					'class'     => 'subway_public_post_deprecated-option ' . $hidden_class,
119
				),
120
            ),
121
            array(
122
                'id' => 'subway_is_public',
123
                'label' => __('Public Website', 'subway'),
124
                'callback' => 'subway_is_public_form',
125
                'section' => 'subway-settings-section',
126
                'group' => 'subway-page-visibility-section',
127
                'args'  => array(
128
                    'label_for' => 'subway_is_public',
129
                    'class'     => 'subway_is_public-option',
130
                ),
131
            ),
132
133
            array(
134
                'id' => 'subway_redirect_type',
135
                'label' => __('Redirect Type', 'subway'),
136
                'callback' => 'subway_redirect_option_form',
137
                'section' => 'subway-settings-section',
138
                'group' => 'subway-redirect-section',
139
				'args'  => array(
140
					'label_for' => 'subway_redirect_type',
141
					'class'     => 'subway_redirect_type-option ',
142
				),
143
            ),
144
            array(
145
                'id' => 'subway_redirect_wp_admin',
146
                'label' => __('WP Login Link', 'subway'),
147
                'callback' => 'subway_lock_wp_admin',
148
                'section' => 'subway-settings-section',
149
                'group' => 'subway-redirect-section',
150
				'args'  => array(
151
					'label_for' => 'subway_redirect_wp_admin',
152
					'class'     => 'subway_redirect_wp_admin-option ',
153
				),
154
            ),
155
        );
156
157
        foreach ( $fields as $field ) {
158
159
            add_settings_field(
160
                $field['id'], $field['label'],
161
                $field['callback'], $field['section'],
162
                $field['group'], $field['args']
163
            );
164
165
            register_setting('subway-settings-group', $field['id']);
166
167
            $file = str_replace('_', '-', $field['callback']);
168
169
            include_once trailingslashit(SUBWAY_DIR_PATH) .
170
            'settings-fields/field-' . sanitize_title($file) . '.php';
171
172
        }
173
174
        // Register Redirect Page ID Settings.
175
        register_setting('subway-settings-group', 'subway_redirect_page_id');
176
177
        // Register Redirect Custom URL Settings.
178
        register_setting('subway-settings-group', 'subway_redirect_custom_url');
179
180
		$this->registerSettingsScripts();
181
182
        return;
183
    }
184
185
    /**
186
     * Callback function for the first Section.
187
     *
188
     * @return void
189
     */
190
    public function sectionCallback()
191
    {
192
        echo esc_html_e(
193
            'All settings related to the
194
        	visibility of your site and pages.', 'subway'
195
        );
196
        return;
197
    }
198
199
    /**
200
     * Callback function for the second Section.
201
     *
202
     * @return void
203
     */
204
    public function redirectCallback()
205
    {
206
        return;
207
    }
208
209
    /**
210
     * Renders the 'wrapper' for our options pages.
211
     *
212
     * @return void
213
     */
214
    public function optionsPage()
215
    {
216
        ?>
217
218
        <div class="wrap">
219
            <h2>
220
                <?php esc_html_e('Subway Settings', 'subway'); ?>
221
             </h2>
222
             <form id="subway-settings-form" action="options.php" method="POST">
223
                <?php settings_fields('subway-settings-group'); ?>
224
                <?php do_settings_sections('subway-settings-section'); ?>
225
                <?php submit_button(); ?>
226
             </form>
227
        </div>
228
229
        <?php
230
    }
231
232
	/**
233
     * Registers the scipts for the Subway settings page.
234
     *
235
	 * @since  2.0.9
236
     * @access public
237
     * @return void
238
     */
239
	public function registerSettingsScripts() {
240
241
		// Registers the Subway settings Javascript.
242
	    wp_register_script( 'subway-settings-script', plugins_url('/assets/js/settings.js', __FILE__) );
243
	    wp_register_style( 'subway-settings-style', plugins_url('/assets/css/settings.css', __FILE__) );
244
	 }
245
246
	/**
247
     * Loads the scipts for the Subway settings page.
248
	 *
249
	 * @since  2.0.9
250
     * @access public
251
     * @return void
252
     * @return void
253
     */
254
	public function enqueueSettingsScripts( $hook ) {
255
		// Checks if page hook is Subway settings page.
256
		if ( 'settings_page_subway' === $hook ) {
257
			// Enqueues the script only on the Subway Settings page.
258
			wp_enqueue_script( 'subway-settings-script' );
259
			wp_enqueue_style( 'subway-settings-style' );
260
		}
261
	}
262
}
263
264
$subwaySettings = new AdminSettings();
265