Passed
Pull Request — master (#4)
by Joseph
02:09
created

AdminSettings::subway_admin_menu()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 6
rs 9.4285
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
 * @package Subway
11
 */
12
13
namespace Subway;
14
15
if ( ! defined( 'ABSPATH' ) ) {
16
	return;
17
}
18
19
/**
20
 * Registers all the admin settings inside Settings > Subway
21
 *
22
 * @since 1.0  
23
 */
24
final class AdminSettings {
25
26
	/**
27
	 * Our class constructor
28
	 */
29
	public function __construct() {
30
		
31
		add_action( 'admin_menu', array( $this, 'subway_admin_menu' ) );
32
33
		add_action( 'admin_init', array( $this, 'subway_register_settings' ) );
34
35
	}
36
37
	/**
38
	 * Display 'Subway' link under 'Settings'
39
	 *
40
	 * @return void
41
	 */
42
	public function subway_admin_menu() {
43
44
		add_options_page( 'Subway Settings', 'Subway', 'manage_options', 'subway', array( $this, 'subway_options_page' ) );
45
46
		return;
47
	}
48
49
	/**
50
	 * Registers all settings related to Subway.
51
	 *
52
	 * @return void
53
	 */
54
	public function subway_register_settings() {
55
56
		// Register our settings section.
57
		add_settings_section( 'subway-page-visibility-section', __( 'Pages Visibility', 'subway' ), 
58
			array( $this, 'subway_section_cb' ), 'subway-settings-section' );
59
60
		// Register Redirect Options pages.
61
		add_settings_section( 'subway-redirect-section', __( 'Redirect Options', 'subway' ), 
62
			array( $this, 'subway_redirect_cb' ), 'subway-settings-section' );
63
64
		// Register the fields.
65
		$fields = array(
66
				array(
67
						'id' => 'subway_is_public',
68
						'label' => __( 'Public Website', 'subway' ),
69
						'callback' => 'subway_is_public_form',
70
						'section' => 'subway-settings-section',
71
						'group' => 'subway-page-visibility-section',
72
					),
73
74
				array(
75
						'id' => 'subway_login_page',
76
						'label' => __( 'Private Login Page', 'subway' ),
77
						'callback' => 'subway_login_page_form',
78
						'section' => 'subway-settings-section',
79
						'group' => 'subway-page-visibility-section',
80
					),
81
				array(
82
						'id' => 'subway_public_post',
83
						'label' => __( 'Public Posts IDs', 'subway' ),
84
						'callback' => 'subway_public_post',
85
						'section' => 'subway-settings-section',
86
						'group' => 'subway-page-visibility-section',
87
					),
88
89
				array(
90
						'id' => 'subway_redirect_type',
91
						'label' => __( 'Redirect Type', 'subway' ),
92
						'callback' => 'subway_redirect_option_form',
93
						'section' => 'subway-settings-section',
94
						'group' => 'subway-redirect-section',
95
					),
96
				array(
97
						'id' => 'subway_redirect_wp_admin',
98
						'label' => __( 'Bypassing <em>wp-login.php</em>', 'subway' ),
99
						'callback' => 'subway_lock_wp_admin',
100
						'section' => 'subway-settings-section',
101
						'group' => 'subway-redirect-section',
102
					),
103
			);
104
105
		foreach ( $fields as $field ) {
106
107
			add_settings_field( $field['id'], $field['label'], $field['callback'], $field['section'], $field['group'] );
108
109
			register_setting( 'subway-settings-group', $field['id'] );
110
111
			$file = str_replace( '_','-', $field['callback'] );
112
113
			require_once trailingslashit( SUBWAY_DIR_PATH ) . 'settings-fields/field-' . sanitize_title( $file ) . '.php';
114
115
		}
116
117
		// Register Redirect Page ID Settings.
118
		register_setting( 'subway-settings-group', 'subway_redirect_page_id' );
119
120
		// Register Redirect Custom URL Settings.
121
		register_setting( 'subway-settings-group', 'subway_redirect_custom_url' );
122
123
		return;
124
	}
125
126
	/**
127
	 * Callback function for the first Section.
128
	 *
129
	 * @return void
130
	 */
131
	public function subway_section_cb() {
132
		echo esc_html_e('All settings related to the visibility of your site and pages.', 'subway');
133
		return;
134
	}
135
136
	/**
137
	 * Callback function for the second Section.
138
	 *
139
	 * @return void
140
	 */
141
	public function subway_redirect_cb() {
142
		return;
143
	}
144
145
	/**
146
	 * Renders the 'wrapper' for our options pages.
147
	 *
148
	 * @return void
149
	 */
150
	public function subway_options_page() {
151
		?>
152
153
		<div class="wrap">
154
			<h2>
155
				<?php esc_html_e( 'Subway Settings', 'subway' ); ?>
156
			</h2>
157
			<form id="subway-settings-form" action="options.php" method="POST">
158
				<?php settings_fields( 'subway-settings-group' ); ?>
159
				<?php do_settings_sections( 'subway-settings-section' ); ?>
160
				<?php submit_button(); ?>
161
			</form>
162
		</div>
163
		
164
		<?php
165
	}
166
167
}
168
169
$subwaySettings = new AdminSettings();
170