1 | <?php |
||
0 ignored issues
–
show
Coding Style
introduced
by
![]() |
|||
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
|
|||
11 | |||
12 | class LSX_Team_Admin { |
||
13 | |||
14 | public function __construct() { |
||
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
|
|||
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(); |
||
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(); |
||
40 | } |
||
41 | |||
42 | public function post_type_setup() { |
||
0 ignored issues
–
show
|
|||
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, |
||
82 | ); |
||
83 | |||
84 | register_post_type( 'team', $args ); |
||
85 | } |
||
0 ignored issues
–
show
|
|||
86 | |||
87 | public function taxonomy_setup() { |
||
0 ignored issues
–
show
|
|||
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, |
||
112 | ); |
||
113 | |||
114 | register_taxonomy( 'team_role', array( 'team' ), $args ); |
||
115 | } |
||
0 ignored issues
–
show
|
|||
116 | |||
117 | /** |
||
118 | * Define the metabox and field configurations. |
||
119 | */ |
||
120 | public function details_metabox() { |
||
121 | |||
122 | $prefix = 'lsx_'; |
||
123 | |||
124 | $users = get_transient( 'lsx_team_users' ); |
||
125 | |||
126 | if ( false === $users || '' === $users ) { |
||
127 | $users = get_users( array( |
||
128 | 'role__in' => array( 'administrator', 'editor', 'author' ), |
||
129 | ) ); |
||
130 | set_transient( 'lsx_team_users', $users, 5 * 60 ); |
||
131 | } |
||
132 | |||
133 | foreach ( $users as $user ) { |
||
0 ignored issues
–
show
|
|||
134 | $user_array[$user->ID] = $user->user_login; |
||
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 | } |
||
270 | |||
271 | /** |
||
272 | * Define the metabox and field configurations. |
||
273 | */ |
||
274 | public function projects_details_metabox() { |
||
275 | |||
276 | if ( class_exists( 'LSX_Projects' ) ) { |
||
0 ignored issues
–
show
|
|||
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 | } |
||
305 | |||
306 | /** |
||
307 | * Define the metabox and field configurations. |
||
308 | */ |
||
309 | public function services_details_metabox() { |
||
310 | |||
311 | if ( class_exists( 'LSX_Services' ) ) { |
||
0 ignored issues
–
show
|
|||
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 | } |
||
340 | |||
341 | /** |
||
342 | * Define the metabox and field configurations. |
||
343 | */ |
||
344 | public function testimonials_details_metabox() { |
||
345 | |||
346 | if ( class_exists( 'LSX_Testimonials' ) ) { |
||
0 ignored issues
–
show
|
|||
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
|
|||
376 | |||
377 | /** |
||
0 ignored issues
–
show
|
|||
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
|
|||
393 | $this->save_related_post( $connections, $post_id, $field, $value ); |
||
394 | } |
||
395 | } |
||
0 ignored issues
–
show
|
|||
396 | |||
397 | /** |
||
0 ignored issues
–
show
|
|||
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. ![]() |
|||
402 | $relation = $ids[1] . '_to_' . $ids[0]; |
||
403 | |||
404 | if ( in_array( $relation, $connections ) ) { |
||
0 ignored issues
–
show
|
|||
405 | $previous_values = get_post_meta( $post_id, $field['id'], false ); |
||
406 | |||
407 | if ( ! empty( $previous_values ) ) { |
||
0 ignored issues
–
show
|
|||
408 | foreach ( $previous_values as $v ) { |
||
0 ignored issues
–
show
|
|||
409 | delete_post_meta( $v, $relation, $post_id ); |
||
410 | } |
||
411 | } |
||
412 | |||
413 | if ( is_array( $value ) ) { |
||
0 ignored issues
–
show
|
|||
414 | foreach ( $value as $v ) { |
||
0 ignored issues
–
show
|
|||
415 | if ( ! empty( $v ) ) { |
||
0 ignored issues
–
show
|
|||
416 | add_post_meta( $v, $relation, $post_id ); |
||
417 | } |
||
418 | } |
||
419 | } |
||
420 | } |
||
421 | } |
||
0 ignored issues
–
show
|
|||
422 | |||
423 | public function assets() { |
||
0 ignored issues
–
show
|
|||
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. ![]() |
|||
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
|
|||
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
|
|||
432 | |||
433 | /** |
||
0 ignored issues
–
show
|
|||
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
|
|||
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
|
|||
443 | |||
444 | public function change_title_text( $title ) { |
||
0 ignored issues
–
show
|
|||
445 | $screen = get_current_screen(); |
||
446 | |||
447 | if ( 'team' === $screen->post_type ) { |
||
0 ignored issues
–
show
|
|||
448 | $title = esc_attr__( 'Enter team member name', 'lsx-team' ); |
||
449 | } |
||
450 | |||
451 | return $title; |
||
452 | } |
||
0 ignored issues
–
show
|
|||
453 | } |
||
454 | |||
455 | $lsx_team_admin = new LSX_Team_Admin(); |
||
456 |