Passed
Push — master ( 0f6578...c22f16 )
by Warwick
01:49
created

Settings::assets()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
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
					default:
145
						if ( in_array( $post_type_key, \lsx\sharing\includes\functions\get_restricted_post_types() ) ) {
146
							break;
147
						}
148
						$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

148
						$temp_post_type = /** @scrutinizer ignore-call */ get_post_type_object( $post_type_key );
Loading history...
149
						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

149
						if ( ! /** @scrutinizer ignore-call */ is_wp_error( $temp_post_type ) ) {
Loading history...
150
							$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

150
							$page_url    = /** @scrutinizer ignore-call */ get_post_type_archive_link( $temp_post_type->name );
Loading history...
151
							$description = sprintf(
152
								/* translators: %s: The subscription info */
153
								__( 'Control the filters which show on your <a target="_blank" href="%1$s">%2$s</a> singles.', 'lsx-search' ),
154
								$page_url,
155
								$temp_post_type->label
156
							);
157
158
							$archives[ $post_type_key ] = array(
159
								'title' => $temp_post_type->label,
160
								'desc'  => $description,
161
							);
162
						}
163
						break;
164
				}
165
			}
166
		}
167
		if ( ! empty( $archives ) ) {
168
			foreach ( $archives as $archive_key => $archive_args ) {
169
				$this->get_fields( $cmb, $archive_key, $archive_args );
170
			}
171
		}
172
	}
173
	/**
174
	 * Gets the sharing fields and loops through them.
175
	 *
176
	 * @param object $cmb
177
	 * @param string $section
178
	 * @param array $args
179
	 * @return void
180
	 */
181
	public function get_fields( $cmb, $section, $args ) {
182
		$cmb->add_field(
183
			array(
184
				'id'          => 'settings_' . $section . '_sharing',
185
				'type'        => 'title',
186
				'name'        => $args['title'],
187
				'default'     => $args['title'],
188
				'description' => $args['desc'],
189
			)
190
		);
191
		if ( 'global' === $section ) {
192
			$cmb->add_field(
193
				array(
194
					'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

194
					'name'        => /** @scrutinizer ignore-call */ esc_html__( 'Disable all', 'lsx-sharing' ),
Loading history...
195
					'id'          => $section . '_disable_all',
196
					'description' => esc_html__( 'Disable all share buttons on the site', 'lsx-sharing' ),
197
					'type'        => 'checkbox',
198
				)
199
			);
200
		} else {
201
			$cmb->add_field(
202
				array(
203
					'name'        => esc_html__( 'Disable', 'lsx-sharing' ),
204
					'id'          => $section . '_disable_pt',
205
					'description' => esc_html__( 'Disable the share buttons on this post type', 'lsx-sharing' ),
206
					'type'        => 'checkbox',
207
				)
208
			);
209
		}
210
211
		$cmb->add_field(
212
			array(
213
				'name'        => esc_html__( 'Label text', 'lsx-sharing' ),
214
				'id'          => $section . '_label_text',
215
				'description' => esc_html__( 'A default label for the sharing.', 'lsx-sharing' ),
216
				'type'        => 'text',
217
			)
218
		);
219
		if ( 'global' === $section || ( 'global' !== $section && ! \lsx\sharing\includes\functions\is_button_disabled( 'global', 'facebook' ) ) ) {
220
			$cmb->add_field(
221
				array(
222
					'name'        => esc_html__( 'Disable Facebook', 'lsx-sharing' ),
223
					'id'          => $section . '_disable_facebook',
224
					'description' => esc_html__( 'Disable Facebook share button.', 'lsx-sharing' ),
225
					'type'        => 'checkbox',
226
				)
227
			);
228
		}
229
		if ( 'global' === $section || ( 'global' !== $section && ! \lsx\sharing\includes\functions\is_button_disabled( 'global', 'twitter' ) ) ) {
230
			$cmb->add_field(
231
				array(
232
					'name'        => esc_html__( 'Disable Twitter', 'lsx-sharing' ),
233
					'id'          => $section . '_disable_twitter',
234
					'description' => esc_html__( 'Disable Twitter share button.', 'lsx-sharing' ),
235
					'type'        => 'checkbox',
236
				)
237
			);
238
		}
239
		if ( 'global' === $section || ( 'global' !== $section && ! \lsx\sharing\includes\functions\is_button_disabled( 'global', 'pinterest' ) ) ) {
240
			$cmb->add_field(
241
				array(
242
					'name'        => esc_html__( 'Disable Pinterest', 'lsx-sharing' ),
243
					'id'          => $section . '_disable_pinterest',
244
					'description' => esc_html__( 'Disable Pinterest button.', 'lsx-sharing' ),
245
					'type'        => 'checkbox',
246
				)
247
			);
248
		}
249
250
		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

250
		/** @scrutinizer ignore-call */ 
251
  do_action( 'lsx_sharing_settings_section', $cmb, $section );
Loading history...
251
		$cmb->add_field(
252
			array(
253
				'id'   => $section . '_title_closing',
254
				'type' => 'tab_closing',
255
			)
256
		);
257
	}
258
}
259