Issues (1223)

classes/class-lsx-team-admin.php (91 issues)

1
<?php
0 ignored issues
show
This file is missing a doc comment.
Loading history...
2
/**
3
 * LSX Team Admin Class
4
 *
5
 * @package   LSX Team
6
 * @author    LightSpeed
7
 * @license   GPL3
8
 * @link
9
 * @copyright 2018 LightSpeed
10
 */
0 ignored issues
show
There must be no blank lines after the class comment
Loading history...
11
12
class LSX_Team_Admin {
13
14
	public function __construct() {
0 ignored issues
show
Coding Style Documentation introduced by
Missing doc comment for function __construct()
Loading history...
Expected 2 blank lines before function; 1 found
Loading history...
15
		$this->load_classes();
16
17
		add_action( 'init', array( $this, 'post_type_setup' ) );
18
		add_action( 'init', array( $this, 'taxonomy_setup' ) );
19
20
		add_action( 'cmb2_admin_init', array( $this, 'details_metabox' ) );
21
		add_action( 'cmb2_admin_init', array( $this, 'projects_details_metabox' ) );
22
		add_action( 'cmb2_admin_init', array( $this, 'services_details_metabox' ) );
23
		add_action( 'cmb2_admin_init', array( $this, 'testimonials_details_metabox' ) );
24
25
		add_action( 'admin_enqueue_scripts', array( $this, 'assets' ) );
26
27
		add_filter( 'type_url_form_media', array( $this, 'change_attachment_field_button' ), 20, 1 );
28
		add_filter( 'enter_title_here', array( $this, 'change_title_text' ) );
29
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
30
31
	/**
32
	 * Loads the admin subclasses
33
	 */
34
	private function load_classes() {
35
		require_once LSX_TEAM_PATH . 'classes/admin/class-settings.php';
36
		$this->settings = \lsx\team\classes\admin\Settings::get_instance();
0 ignored issues
show
Bug Best Practice introduced by
The property settings does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
37
38
		require_once LSX_TEAM_PATH . 'classes/admin/class-settings-theme.php';
39
		$this->settings_theme = \lsx\team\classes\admin\Settings_Theme::get_instance();
0 ignored issues
show
Bug Best Practice introduced by
The property settings_theme does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
40
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
41
42
	public function post_type_setup() {
0 ignored issues
show
Coding Style Documentation introduced by
Missing doc comment for function post_type_setup()
Loading history...
43
		$labels = array(
44
			'name'               => esc_html_x( 'Team Members', 'post type general name', 'lsx-team' ),
45
			'singular_name'      => esc_html_x( 'Team Member', 'post type singular name', 'lsx-team' ),
46
			'add_new'            => esc_html_x( 'Add New', 'post type general name', 'lsx-team' ),
47
			'add_new_item'       => esc_html__( 'Add New Team Member', 'lsx-team' ),
48
			'edit_item'          => esc_html__( 'Edit Team Member', 'lsx-team' ),
49
			'new_item'           => esc_html__( 'New Team Member', 'lsx-team' ),
50
			'all_items'          => esc_html__( 'All Team Members', 'lsx-team' ),
51
			'view_item'          => esc_html__( 'View Team Member', 'lsx-team' ),
52
			'search_items'       => esc_html__( 'Search Team Members', 'lsx-team' ),
53
			'not_found'          => esc_html__( 'No team members found', 'lsx-team' ),
54
			'not_found_in_trash' => esc_html__( 'No team members found in Trash', 'lsx-team' ),
55
			'parent_item_colon'  => '',
56
			'menu_name'          => esc_html_x( 'Team Members', 'admin menu', 'lsx-team' ),
57
		);
58
59
		$args = array(
60
			'labels'             => $labels,
61
			'public'             => true,
62
			'publicly_queryable' => true,
63
			'show_ui'            => true,
64
			'show_in_menu'       => true,
65
			'menu_icon'          => 'dashicons-groups',
66
			'query_var'          => true,
67
			'rewrite'            => array(
68
				'slug' => 'team',
69
			),
70
			'capability_type'    => 'post',
71
			'has_archive'        => 'team',
72
			'hierarchical'       => false,
73
			'menu_position'      => null,
74
			'supports'           => array(
75
				'title',
76
				'editor',
77
				'excerpt',
78
				'thumbnail',
79
				'custom-fields',
80
			),
81
			'show_in_rest'          => true,
0 ignored issues
show
Array double arrow not aligned correctly; expected 7 space(s) between "'show_in_rest'" and double arrow, but found 10.
Loading history...
82
		);
83
84
		register_post_type( 'team', $args );
85
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
86
87
	public function taxonomy_setup() {
0 ignored issues
show
Coding Style Documentation introduced by
Missing doc comment for function taxonomy_setup()
Loading history...
88
		$labels = array(
89
			'name'              => esc_html_x( 'Roles', 'taxonomy general name', 'lsx-team' ),
90
			'singular_name'     => esc_html_x( 'Role', 'taxonomy singular name', 'lsx-team' ),
91
			'search_items'      => esc_html__( 'Search Roles', 'lsx-team' ),
92
			'all_items'         => esc_html__( 'All Roles', 'lsx-team' ),
93
			'parent_item'       => esc_html__( 'Parent Role', 'lsx-team' ),
94
			'parent_item_colon' => esc_html__( 'Parent Role:', 'lsx-team' ),
95
			'edit_item'         => esc_html__( 'Edit Role', 'lsx-team' ),
96
			'update_item'       => esc_html__( 'Update Role', 'lsx-team' ),
97
			'add_new_item'      => esc_html__( 'Add New Role', 'lsx-team' ),
98
			'new_item_name'     => esc_html__( 'New Role Name', 'lsx-team' ),
99
			'menu_name'         => esc_html__( 'Roles', 'lsx-team' ),
100
		);
101
102
		$args = array(
103
			'hierarchical'      => true,
104
			'labels'            => $labels,
105
			'show_ui'           => true,
106
			'show_admin_column' => true,
107
			'query_var'         => true,
108
			'rewrite'           => array(
109
				'slug' => 'team-role',
110
			),
111
			'show_in_rest'          => true,
0 ignored issues
show
Array double arrow not aligned correctly; expected 6 space(s) between "'show_in_rest'" and double arrow, but found 10.
Loading history...
112
		);
113
114
		register_taxonomy( 'team_role', array( 'team' ), $args );
115
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
116
117
	/**
118
	 * Define the metabox and field configurations.
119
	 */
120
	public function details_metabox() {
0 ignored issues
show
Expected 0 blank lines after opening function brace; 1 found
Loading history...
121
122
		$prefix = 'lsx_';
123
124
		$users = get_transient( 'lsx_team_users' );
125
126
		if ( false === $users || '' === $users ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
127
			$users = get_users( array(
0 ignored issues
show
The opening parenthesis of a multi-line function call should be the last content on the line.
Loading history...
128
				'role__in' => array( 'administrator', 'editor', 'author' ),
129
			) );
0 ignored issues
show
For multi-line function calls, the closing parenthesis should be on a new line.

If a function call spawns multiple lines, the coding standard suggests to move the closing parenthesis to a new line:

someFunctionCall(
    $firstArgument,
    $secondArgument,
    $thirdArgument
); // Closing parenthesis on a new line.
Loading history...
130
			set_transient( 'lsx_team_users', $users, 5 * 60 );
131
		}
132
133
		foreach ( $users as $user ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
134
			$user_array[$user->ID] = $user->user_login;
0 ignored issues
show
Array keys must be surrounded by spaces unless they contain a string or an integer.
Loading history...
135
		}
136
137
		$cmb = new_cmb2_box(
138
			array(
139
				'id'           => $prefix . '_team',
140
				'title'        => esc_html__( 'Team Member Details', 'lsx-team' ),
141
				'object_types' => 'team',
142
				'context'      => 'normal',
143
				'priority'     => 'low',
144
				'show_names'   => true,
145
			)
146
		);
147
148
		$cmb->add_field(
149
			array(
150
				'name'         => esc_html__( 'Featured:', 'lsx-team' ),
151
				'id'           => $prefix . 'featured',
152
				'type'         => 'checkbox',
153
				'value'        => 1,
154
				'default'      => 0,
155
				'show_in_rest' => true,
156
			)
157
		);
158
159
		$cmb->add_field(
160
			array(
161
				'name'         => esc_html__( 'Site User', 'lsx-team' ),
162
				'id'           => $prefix . 'site_user',
163
				'allow_none'   => true,
164
				'type'         => 'select',
165
				'options'      => $user_array,
166
				'show_in_rest' => true,
167
			)
168
		);
169
170
		$cmb->add_field(
171
			array(
172
				'name'         => esc_html__( 'Job Title:', 'lsx-team' ),
173
				'id'           => $prefix . 'job_title',
174
				'type'         => 'text',
175
				'show_in_rest' => true,
176
			)
177
		);
178
179
		$cmb->add_field(
180
			array(
181
				'name'         => esc_html__( 'Location:', 'lsx-team' ),
182
				'id'           => $prefix . 'location',
183
				'type'         => 'text',
184
				'show_in_rest' => true,
185
			)
186
		);
187
188
		$cmb->add_field(
189
			array(
190
				'name'         => esc_html__( 'Contact Email Address:', 'lsx-team' ),
191
				'id'           => $prefix . 'email_contact',
192
				'type'         => 'text',
193
				'show_in_rest' => true,
194
			)
195
		);
196
197
		$cmb->add_field(
198
			array(
199
				'name'         => esc_html__( 'Gravatar Email Address:', 'lsx-team' ),
200
				'desc'         => esc_html__( 'Used for Gravatar if a featured image is not set', 'lsx-team' ),
201
				'id'           => $prefix . 'email_gravatar',
202
				'type'         => 'text',
203
				'show_in_rest' => true,
204
			)
205
		);
206
207
		$cmb->add_field(
208
			array(
209
				'name'         => esc_html__( 'Telephone Number:', 'lsx-team' ),
210
				'id'           => $prefix . 'tel',
211
				'type'         => 'text',
212
				'show_in_rest' => true,
213
			)
214
		);
215
216
		$cmb->add_field(
217
			array(
218
				'name'         => esc_html__( 'Skype Name:', 'lsx-team' ),
219
				'id'           => $prefix . 'skype',
220
				'type'         => 'text',
221
				'show_in_rest' => true,
222
			)
223
		);
224
225
		$cmb->add_field(
226
			array(
227
				'name'         => esc_html__( 'Facebook URL', 'lsx-team' ),
228
				'id'           => $prefix . 'facebook',
229
				'type'         => 'text_url',
230
				'show_in_rest' => true,
231
			)
232
		);
233
234
		$cmb->add_field(
235
			array(
236
				'name'         => esc_html__( 'Twitter URL', 'lsx-team' ),
237
				'id'           => $prefix . 'twitter',
238
				'type'         => 'text_url',
239
				'show_in_rest' => true,
240
			)
241
		);
242
243
		$cmb->add_field(
244
			array(
245
				'name'         => esc_html__( 'LinkedIn URL', 'lsx-team' ),
246
				'id'           => $prefix . 'linkedin',
247
				'type'         => 'text_url',
248
				'show_in_rest' => true,
249
			)
250
		);
251
252
		$cmb->add_field(
253
			array(
254
				'name'         => esc_html__( 'Github URL', 'lsx-team' ),
255
				'id'           => $prefix . 'github',
256
				'type'         => 'text_url',
257
				'show_in_rest' => true,
258
			)
259
		);
260
261
		$cmb->add_field(
262
			array(
263
				'name'         => esc_html__( 'WordPress URL', 'lsx-team' ),
264
				'id'           => $prefix . 'wordpress',
265
				'type'         => 'text_url',
266
				'show_in_rest' => true,
267
			)
268
		);
269
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
270
271
	/**
272
	 * Define the metabox and field configurations.
273
	 */
274
	public function projects_details_metabox() {
0 ignored issues
show
Expected 0 blank lines after opening function brace; 1 found
Loading history...
275
276
		if ( class_exists( 'LSX_Projects' ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
Blank line found at start of control structure
Loading history...
277
278
			$prefix = 'lsx_';
279
280
			$cmb = new_cmb2_box(
281
				array(
282
					'id'           => $prefix . '_team',
283
					'context'      => 'normal',
284
					'priority'     => 'low',
285
					'show_names'   => true,
286
					'object_types' => array( 'team' ),
287
				)
288
			);
289
			$cmb->add_field(
290
				array(
291
					'name'       => __( 'Projects:', 'lsx-team' ),
292
					'id'         => 'project_to_team',
293
					'type'       => 'post_search_ajax',
294
					'limit'      => 15,
295
					'sortable'   => true,
296
					'query_args' => array(
297
						'post_type'      => array( 'project' ),
298
						'post_status'    => array( 'publish' ),
299
						'posts_per_page' => -1,
300
					),
301
				)
302
			);
303
		}
304
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
305
306
	/**
307
	 * Define the metabox and field configurations.
308
	 */
309
	public function services_details_metabox() {
0 ignored issues
show
Expected 0 blank lines after opening function brace; 1 found
Loading history...
310
311
		if ( class_exists( 'LSX_Services' ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
Blank line found at start of control structure
Loading history...
312
313
			$prefix = 'lsx_';
314
315
			$cmb = new_cmb2_box(
316
				array(
317
					'id'           => $prefix . '_team',
318
					'context'      => 'normal',
319
					'priority'     => 'low',
320
					'show_names'   => true,
321
					'object_types' => array( 'team' ),
322
				)
323
			);
324
			$cmb->add_field(
325
				array(
326
					'name'       => __( 'Services:', 'lsx-team' ),
327
					'id'         => 'service_to_team',
328
					'type'       => 'post_search_ajax',
329
					'limit'      => 15,
330
					'sortable'   => true,
331
					'query_args' => array(
332
						'post_type'      => array( 'service' ),
333
						'post_status'    => array( 'publish' ),
334
						'posts_per_page' => -1,
335
					),
336
				)
337
			);
338
		}
339
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
340
341
	/**
342
	 * Define the metabox and field configurations.
343
	 */
344
	public function testimonials_details_metabox() {
0 ignored issues
show
Expected 0 blank lines after opening function brace; 1 found
Loading history...
345
346
		if ( class_exists( 'LSX_Testimonials' ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
Blank line found at start of control structure
Loading history...
347
348
			$prefix = 'lsx_';
349
350
			$cmb = new_cmb2_box(
351
				array(
352
					'id'           => $prefix . '_team',
353
					'context'      => 'normal',
354
					'priority'     => 'low',
355
					'show_names'   => true,
356
					'object_types' => array( 'team' ),
357
				)
358
			);
359
			$cmb->add_field(
360
				array(
361
					'name'       => __( 'Testimonials:', 'lsx-team' ),
362
					'id'         => 'testimonial_to_team',
363
					'type'       => 'post_search_ajax',
364
					'limit'      => 15,
365
					'sortable'   => true,
366
					'query_args' => array(
367
						'post_type'      => array( 'testimonial' ),
368
						'post_status'    => array( 'publish' ),
369
						'posts_per_page' => -1,
370
					),
371
				)
372
			);
373
		}
374
375
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
376
377
	/**
0 ignored issues
show
Coding Style Documentation introduced by
Doc comment for parameter "$post_id" missing
Loading history...
Coding Style Documentation introduced by
Doc comment for parameter "$field" missing
Loading history...
Coding Style Documentation introduced by
Doc comment for parameter "$value" missing
Loading history...
378
	 * Sets up the "post relations".
379
	 */
380
	public function post_relations( $post_id, $field, $value ) {
381
		$connections = array(
382
			'team_to_testimonial',
383
			'testimonial_to_team',
384
385
			'team_to_project',
386
			'project_to_team',
387
388
			'team_to_service',
389
			'service_to_team',
390
		);
391
392
		if ( in_array( $field['id'], $connections ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Not using strict comparison for in_array; supply true for third argument.
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
393
			$this->save_related_post( $connections, $post_id, $field, $value );
394
		}
395
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
396
397
	/**
0 ignored issues
show
Coding Style Documentation introduced by
Doc comment for parameter "$connections" missing
Loading history...
Coding Style Documentation introduced by
Doc comment for parameter "$post_id" missing
Loading history...
Coding Style Documentation introduced by
Doc comment for parameter "$field" missing
Loading history...
Coding Style Documentation introduced by
Doc comment for parameter "$value" missing
Loading history...
398
	 * Save the reverse post relation.
399
	 */
400
	public function save_related_post( $connections, $post_id, $field, $value ) {
401
		$ids = explode( '_to_', $field['id'] );
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 6 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
402
		$relation = $ids[1] . '_to_' . $ids[0];
403
404
		if ( in_array( $relation, $connections ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Not using strict comparison for in_array; supply true for third argument.
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
405
			$previous_values = get_post_meta( $post_id, $field['id'], false );
406
407
			if ( ! empty( $previous_values ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
408
				foreach ( $previous_values as $v ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
409
					delete_post_meta( $v, $relation, $post_id );
410
				}
411
			}
412
413
			if ( is_array( $value ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
414
				foreach ( $value as $v ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
415
					if ( ! empty( $v ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
416
						add_post_meta( $v, $relation, $post_id );
417
					}
418
				}
419
			}
420
		}
421
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
422
423
	public function assets() {
0 ignored issues
show
Coding Style Documentation introduced by
Missing doc comment for function assets()
Loading history...
424
		//wp_enqueue_media();
0 ignored issues
show
Unused Code Comprehensibility introduced by
75% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
No space found before comment text; expected "// wp_enqueue_media();" but found "//wp_enqueue_media();"
Loading history...
Inline comments must end in full-stops, exclamation marks, or question marks
Loading history...
425
		wp_enqueue_script( 'media-upload' );
426
		wp_enqueue_script( 'thickbox' );
427
		wp_enqueue_style( 'thickbox' );
428
429
		wp_enqueue_script( 'lsx-team-admin', LSX_TEAM_URL . 'assets/js/lsx-team-admin.min.js', array( 'jquery' ), LSX_TEAM_VER );
0 ignored issues
show
In footer ($in_footer) is not set explicitly wp_enqueue_script; It is recommended to load scripts in the footer. Please set this value to true to load it in the footer, or explicitly false if it should be loaded in the header.
Loading history...
430
		wp_enqueue_style( 'lsx-team-admin', LSX_TEAM_URL . 'assets/css/lsx-team-admin.css', array(), LSX_TEAM_VER );
431
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
432
433
	/**
0 ignored issues
show
Coding Style Documentation introduced by
Doc comment for parameter "$html" missing
Loading history...
434
	 * Change the "Insert into Post" button text when media modal is used for feature images
435
	 */
436
	public function change_attachment_field_button( $html ) {
437
		if ( isset( $_GET['feature_image_text_button'] ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Processing form data without nonce verification.
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
438
			$html = str_replace( 'value="Insert into Post"', sprintf( 'value="%s"', esc_html__( 'Select featured image', 'lsx-team' ) ), $html );
439
		}
440
441
		return $html;
442
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
443
444
	public function change_title_text( $title ) {
0 ignored issues
show
Coding Style Documentation introduced by
Missing doc comment for function change_title_text()
Loading history...
445
		$screen = get_current_screen();
446
447
		if ( 'team' === $screen->post_type ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
448
			$title = esc_attr__( 'Enter team member name', 'lsx-team' );
449
		}
450
451
		return $title;
452
	}
0 ignored issues
show
Expected 2 blank lines after function; 0 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
453
}
454
455
$lsx_team_admin = new LSX_Team_Admin();
456