Completed
Push — master ( fc6536...73bf31 )
by Warwick
02:28
created

Settings::configure_general_fields()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 6
rs 10
1
<?php
2
namespace lsx\sharing\classes\admin;
3
4
/**
5
 * Houses the functions for the Settings page.
6
 *
7
 * @package lsx-sharing
8
 */
9
class Settings {
10
11
	/**
12
	 * Holds class instance
13
	 *
14
	 * @since 1.0.0
15
	 *
16
	 * @var      object \lsx\sharing\classes\admin\Settings()
17
	 */
18
	protected static $instance = null;
19
20
	/**
21
	 * Contructor
22
	 */
23
	public function __construct() {
24
		add_action( 'cmb2_admin_init', array( $this, 'register_settings_page' ) );
0 ignored issues
show
Bug introduced by
The function add_action was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

24
		/** @scrutinizer ignore-call */ 
25
  add_action( 'cmb2_admin_init', array( $this, 'register_settings_page' ) );
Loading history...
25
		add_action( 'lsx_sharing_settings_page', array( $this, 'configure_general_fields' ), 15, 1 );
26
		add_action( 'lsx_sharing_settings_page', array( $this, 'configure_archive_fields' ), 15, 1 );
27
		add_action( 'admin_enqueue_scripts', array( $this, 'assets' ) );
28
	}
29
30
	/**
31
	 * Return an instance of this class.
32
	 *
33
	 * @since 1.0.0
34
	 *
35
	 * @return    object \lsx\sharing\classes\admin\Settings()    A single instance of this class.
36
	 */
37
	public static function get_instance() {
38
		// If the single instance hasn't been set, set it now.
39
		if ( null == self::$instance ) {
40
			self::$instance = new self();
41
		}
42
		return self::$instance;
43
	}
44
45
	/**
46
	 * Configure fields for the Settings page.
47
	 *
48
	 * @return void
49
	 */
50
	public function register_settings_page() {
51
		$args = array(
52
			'id'           => 'lsx_sharing_settings',
53
			'title'        => '<h1>' . esc_html__( 'LSX Sharing Settings', 'lsx-search' ) . ' <span class="version">' . LSX_SHARING_VER . '</span></h1>',
0 ignored issues
show
Bug introduced by
The function esc_html__ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

53
			'title'        => '<h1>' . /** @scrutinizer ignore-call */ esc_html__( 'LSX Sharing Settings', 'lsx-search' ) . ' <span class="version">' . LSX_SHARING_VER . '</span></h1>',
Loading history...
54
			'menu_title'   => esc_html__( 'LSX Sharing', 'search' ), // Falls back to 'title' (above).
55
			'object_types' => array( 'options-page' ),
56
			'option_key'   => 'lsx-sharing-settings', // The option key and admin menu page slug.
57
			'parent_slug'  => 'options-general.php',
58
			'capability'   => 'manage_options', // Cap required to view options-page.
59
		);
60
		$cmb  = new_cmb2_box( $args );
0 ignored issues
show
Bug introduced by
The function new_cmb2_box was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

60
		$cmb  = /** @scrutinizer ignore-call */ new_cmb2_box( $args );
Loading history...
61
		do_action( 'lsx_sharing_settings_page', $cmb );
0 ignored issues
show
Bug introduced by
The function do_action was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

61
		/** @scrutinizer ignore-call */ 
62
  do_action( 'lsx_sharing_settings_page', $cmb );
Loading history...
62
	}
63
64
	/**
65
	 * Enqueue JS and CSS.
66
	 */
67
	public function assets( $hook ) {
0 ignored issues
show
Unused Code introduced by
The parameter $hook is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

67
	public function assets( /** @scrutinizer ignore-unused */ $hook ) {

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
68
		wp_enqueue_script( 'lsx-sharing-admin', LSX_SHARING_URL . 'assets/js/src/lsx-sharing-admin.js', array( 'jquery' ), LSX_SHARING_VER, true );
0 ignored issues
show
Bug introduced by
The function wp_enqueue_script was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

68
		/** @scrutinizer ignore-call */ 
69
  wp_enqueue_script( 'lsx-sharing-admin', LSX_SHARING_URL . 'assets/js/src/lsx-sharing-admin.js', array( 'jquery' ), LSX_SHARING_VER, true );
Loading history...
69
		wp_enqueue_style( 'lsx-sharing-admin', LSX_SHARING_URL . 'assets/css/lsx-sharing-admin.css', array(), LSX_SHARING_VER );
0 ignored issues
show
Bug introduced by
The function wp_enqueue_style was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

69
		/** @scrutinizer ignore-call */ 
70
  wp_enqueue_style( 'lsx-sharing-admin', LSX_SHARING_URL . 'assets/css/lsx-sharing-admin.css', array(), LSX_SHARING_VER );
Loading history...
70
	}
71
72
	/**
73
	 * Enable Business Directory Search settings only if LSX Search plugin is enabled.
74
	 *
75
	 * @return  void
76
	 */
77
	public function configure_general_fields( $cmb ) {
78
		$global_args = array(
79
			'title' => __( 'Global', 'lsx-search' ),
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

79
			'title' => /** @scrutinizer ignore-call */ __( 'Global', 'lsx-search' ),
Loading history...
80
			'desc'  => esc_html__( 'Control the sharing WordPress post types.', 'lsx-search' ),
0 ignored issues
show
Bug introduced by
The function esc_html__ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

80
			'desc'  => /** @scrutinizer ignore-call */ esc_html__( 'Control the sharing WordPress post types.', 'lsx-search' ),
Loading history...
81
		);
82
		$this->get_fields( $cmb, 'global', $global_args );
83
	}
84
85
	/**
86
	 * Enable Sharing settings only if LSX Search plugin is enabled.
87
	 *
88
	 * @param object $cmb The CMB2() class.
89
	 * @param string $position either top of bottom.
90
	 * @return void
91
	 */
92
	public function configure_archive_fields( $cmb ) {
93
		$archives       = array();
94
		$post_type_args = array(
95
			'public' => true,
96
		);
97
		$post_types     = get_post_types( $post_type_args );
0 ignored issues
show
Bug introduced by
The function get_post_types was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

97
		$post_types     = /** @scrutinizer ignore-call */ get_post_types( $post_type_args );
Loading history...
98
		if ( ! empty( $post_types ) ) {
99
			foreach ( $post_types as $post_type_key => $post_type_value ) {
100
				switch ( $post_type_key ) {
101
					case 'post':
102
						$page_url      = home_url();
0 ignored issues
show
Bug introduced by
The function home_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

102
						$page_url      = /** @scrutinizer ignore-call */ home_url();
Loading history...
103
						$page_title    = __( 'Home', 'lsx-search' );
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

103
						$page_title    = /** @scrutinizer ignore-call */ __( 'Home', 'lsx-search' );
Loading history...
104
						$show_on_front = get_option( 'show_on_front' );
0 ignored issues
show
Bug introduced by
The function get_option was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

104
						$show_on_front = /** @scrutinizer ignore-call */ get_option( 'show_on_front' );
Loading history...
105
						if ( 'page' === $show_on_front ) {
106
							$page_for_posts = get_option( 'page_for_posts' );
107
							if ( '' !== $page_for_posts ) {
108
								$page_title   = get_the_title( $page_for_posts );
0 ignored issues
show
Bug introduced by
The function get_the_title was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

108
								$page_title   = /** @scrutinizer ignore-call */ get_the_title( $page_for_posts );
Loading history...
109
								$page_url     = get_permalink( $page_for_posts );
0 ignored issues
show
Bug introduced by
The function get_permalink was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

109
								$page_url     = /** @scrutinizer ignore-call */ get_permalink( $page_for_posts );
Loading history...
110
							}
111
						}
112
						$description = sprintf(
113
							/* translators: %s: The subscription info */
114
							__( 'Control the filters which show on your <a target="_blank" href="%1$s">%2$s</a> posts.', 'lsx-search' ),
115
							$page_url,
116
							$page_title
117
						);
118
						$archives[ $post_type_key ] = array(
119
							'title' => __( 'Blog', 'lsx-search' ),
120
							'desc'  => $description,
121
						);
122
						break;
123
124
					case 'product':
125
						$page_url = home_url();
126
						$page_title    = __( 'Shop', 'lsx-search' );
127
						if ( function_exists( 'wc_get_page_id' ) ) {
128
							$shop_page  = wc_get_page_id( 'shop' );
129
							$page_url   = get_permalink( $shop_page );
130
							$page_title = get_the_title( $shop_page );
131
						}
132
						$description = sprintf(
133
							/* translators: %s: The subscription info */
134
							__( 'Control the filters which show on your <a target="_blank" href="%1$s">%2$s</a> product pages.', 'lsx-search' ),
135
							$page_url,
136
							$page_title
137
						);
138
						$archives[ $post_type_key ] = array(
139
							'title' => __( 'Shop', 'lsx-search' ),
140
							'desc'  => $description,
141
						);
142
						break;
143
144
					case 'page':
145
					case 'attachment':
146
					case 'forum':
147
					case 'topic':
148
					case 'lesson':
149
					case 'quizz':
150
					case 'reply':
151
					case 'popup':
152
					case 'message':
153
					case 'envira':
154
					case 'soliloquy':
155
						break;
156
157
					default:
158
						$temp_post_type = get_post_type_object( $post_type_key );
0 ignored issues
show
Bug introduced by
The function get_post_type_object was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

158
						$temp_post_type = /** @scrutinizer ignore-call */ get_post_type_object( $post_type_key );
Loading history...
159
						if ( ! is_wp_error( $temp_post_type ) ) {
0 ignored issues
show
Bug introduced by
The function is_wp_error was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

159
						if ( ! /** @scrutinizer ignore-call */ is_wp_error( $temp_post_type ) ) {
Loading history...
160
							$page_url    = get_post_type_archive_link( $temp_post_type->name );
0 ignored issues
show
Bug introduced by
The function get_post_type_archive_link was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

160
							$page_url    = /** @scrutinizer ignore-call */ get_post_type_archive_link( $temp_post_type->name );
Loading history...
161
							$description = sprintf(
162
								/* translators: %s: The subscription info */
163
								__( 'Control the filters which show on your <a target="_blank" href="%1$s">%2$s</a> singles.', 'lsx-search' ),
164
								$page_url,
165
								$temp_post_type->label
166
							);
167
168
							$archives[ $post_type_key ] = array(
169
								'title' => $temp_post_type->label,
170
								'desc'  => $description,
171
							);
172
						}
173
						break;
174
				}
175
			}
176
		}
177
		if ( ! empty( $archives ) ) {
178
			foreach ( $archives as $archive_key => $archive_args ) {
179
				$this->get_fields( $cmb, $archive_key, $archive_args );
180
			}
181
		}
182
	}
183
184
	/**
185
	 * Gets the sharing fields and loops through them.
186
	 *
187
	 * @param object $cmb
188
	 * @param string $section
189
	 * @param array $args
190
	 * @return void
191
	 */
192
	public function get_fields( $cmb, $section, $args ) {
193
		$cmb->add_field(
194
			array(
195
				'id'          => 'settings_' . $section . '_sharing',
196
				'type'        => 'title',
197
				'name'        => $args['title'],
198
				'default'     => $args['title'],
199
				'description' => $args['desc'],
200
			)
201
		);
202
		if ( 'global' === $section ) {
203
			$cmb->add_field(
204
				array(
205
					'name'        => esc_html__( 'Disable all', 'lsx-sharing' ),
0 ignored issues
show
Bug introduced by
The function esc_html__ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

205
					'name'        => /** @scrutinizer ignore-call */ esc_html__( 'Disable all', 'lsx-sharing' ),
Loading history...
206
					'id'          => $section . '_disable_all',
207
					'description' => esc_html__( 'Disable all share buttons on the site', 'lsx-sharing' ),
208
					'type'        => 'checkbox',
209
				)
210
			);
211
		} else {
212
			$cmb->add_field(
213
				array(
214
					'name'        => esc_html__( 'Disable', 'lsx-sharing' ),
215
					'id'          => $section . '_disable_pt',
216
					'description' => esc_html__( 'Disable the share buttons on this post type', 'lsx-sharing' ),
217
					'type'        => 'checkbox',
218
				)
219
			);
220
		}
221
222
		$cmb->add_field(
223
			array(
224
				'name'        => esc_html__( 'Label text', 'lsx-sharing' ),
225
				'id'          => $section . '_label_text',
226
				'description' => esc_html__( 'A default label for the sharing.', 'lsx-sharing' ),
227
				'type'        => 'text',
228
			)
229
		);
230
		if ( 'global' === $section || ( 'global' !== $section && ! \lsx\sharing\includes\functions\is_button_disabled( 'global', 'facebook' ) ) ) {
231
			$cmb->add_field(
232
				array(
233
					'name'        => esc_html__( 'Disable Facebook', 'lsx-sharing' ),
234
					'id'          => $section . '_disable_facebook',
235
					'description' => esc_html__( 'Disable Facebook share button.', 'lsx-sharing' ),
236
					'type'        => 'checkbox',
237
				)
238
			);
239
		}
240
		if ( 'global' === $section || ( 'global' !== $section && ! \lsx\sharing\includes\functions\is_button_disabled( 'global', 'twitter' ) ) ) {
241
			$cmb->add_field(
242
				array(
243
					'name'        => esc_html__( 'Disable Twitter', 'lsx-sharing' ),
244
					'id'          => $section . '_disable_twitter',
245
					'description' => esc_html__( 'Disable Twitter share button.', 'lsx-sharing' ),
246
					'type'        => 'checkbox',
247
				)
248
			);
249
		}
250
		if ( 'global' === $section || ( 'global' !== $section && ! \lsx\sharing\includes\functions\is_button_disabled( 'global', 'pinterest' ) ) ) {
251
			$cmb->add_field(
252
				array(
253
					'name'        => esc_html__( 'Disable Pinterest', 'lsx-sharing' ),
254
					'id'          => $section . '_disable_pinterest',
255
					'description' => esc_html__( 'Disable Pinterest button.', 'lsx-sharing' ),
256
					'type'        => 'checkbox',
257
				)
258
			);
259
		}
260
261
		do_action( 'lsx_sharing_settings_section', $cmb, $section );
0 ignored issues
show
Bug introduced by
The function do_action was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

261
		/** @scrutinizer ignore-call */ 
262
  do_action( 'lsx_sharing_settings_section', $cmb, $section );
Loading history...
262
		$cmb->add_field(
263
			array(
264
				'id'   => $section . '_title_closing',
265
				'type' => 'tab_closing',
266
			)
267
		);
268
	}
269
}
270