PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.0
Adminify – White Label, Admin Menu Editor, Login Customizer v4.0
4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 4.1.17 All 164 releases
adminify / Inc / Admin / Options / Security.php

Security.php in Adminify – White Label, Admin Menu Editor, Login Customizer 4.0, at Inc/Admin/Options/Security.php

866 lines 31.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPAdminify\Inc\Admin\Options;
4
5 use WPAdminify\Inc\Utils;
6 use WPAdminify\Inc\Admin\AdminSettingsModel;
7
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 die;
11 } // Cannot access directly.
12
13 if ( ! class_exists( 'Security' ) ) {
14 class Security extends AdminSettingsModel {
15
16 public $defaults = [];
17
18 public function __construct() {
19 $this->tweak_settings();
20 }
21
22 protected function get_defaults() {
23 return [
24 'security_head' => [
25 'enable_security_head' => false,
26 'security_head_data' => [
27 'generator_wp_version'
28 ],
29 'self_ping_sites' => ''
30 ],
31 'security_rest_api' => [
32 'security_rest_api_enable' => false,
33 'security_rest_api_data' => []
34 ],
35 'disable_comments' => [
36 'enable_disable_comments' => false,
37 'post_types' => [],
38 'apply_for' => [],
39 ],
40 'custom_gravatar' => [
41 'enable',
42 'image' => [
43 [
44 'avatar_image' => '',
45 'avatar_name' => 'Avatar Name',
46 ],
47 ],
48 ],
49 'post_archives' => [
50 'post_archives_enable' => false,
51 'post_archives_data' => [],
52 ],
53 'security_feed' => false,
54 'users_security' => [
55 'limit_logins' => false,
56 'change_username' => false,
57 ],
58 'disable_automatic_emails' => false,
59 'disable_language_switcher_login' => false,
60
61 // Redirect URLs
62 'redirect_urls_fields' => [
63 'enable_redirect_urls' => false,
64 'redirect_urls_options' => [
65 'redirect_urls_tabs' => [
66 'new_login_url' => '',
67 'redirect_admin_url' => '',
68 'new_register_url' => '',
69 'new_logout_url' => '',
70 'login_redirects' => [
71 'user_types' => 'user_role',
72 'redirect_user' => 'user_role',
73 'redirect_role' => '',
74 'redirect_cap' => '',
75 'redirect_url' => '',
76 // 'redirect_order' => 10,
77 ],
78 'logout_redirects' => [
79 'user_types' => 'user_role',
80 'redirect_user' => 'user_role',
81 'redirect_role' => '',
82 'redirect_cap' => '',
83 'redirect_url' => '',
84 // 'redirect_order' => 10,
85 ]
86 ],
87 ],
88 ]
89 ];
90 }
91
92
93 /**
94 * Security: Head Fields
95 *
96 * @return void
97 */
98 public function security_head_fields( &$head_fields ) {
99 $security_head = [
100 'xmlrpc' => __( 'Disable XML-RPC', 'adminify' ),
101 'generator_wp_version' => __( 'Remove WordPress Generator Version from fornt end', 'adminify' ),
102 'rsd' => __( 'Remove "<link rel=\'EditURI\'..." from head section', 'adminify' ),
103 'shortlink' => __( 'Remove "<link rel=\'shortlink\'..." from head section', 'adminify' ),
104 'canonical' => __( 'Remove &lt;link rel="canonical" href="https://www.site.com/some-url" /&gt; from head section', 'adminify' ),
105 'self_ping' => __('Disable self-ping, i.e., from your site to your site when writing posts.', 'adminify'),
106 ];
107
108 $third_party_security_head = [];
109 if ( Utils::is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
110 $third_party_security_head['wc_generator'] = __( 'Remove WooCommerce Generator Meta', 'adminify' );
111 }
112
113 if ( Utils::is_plugin_active( 'revslider/revslider.php' ) ) {
114 $third_party_security_head['revslider_generator'] = __( 'Remove Revolution Slider Generator Meta', 'adminify' );
115 }
116
117 if ( Utils::is_plugin_active( 'js_composer/js_composer.php' ) ) {
118 $third_party_security_head['js_composer_generator'] = __( 'Remove Visual Composer Generator Meta', 'adminify' );
119 }
120
121 if ( Utils::is_plugin_active( 'sitepress-multilingual-cms/sitepress.php' ) ) {
122 $third_party_security_head['wpml_generator'] = __( 'Remove WPML Generator Meta', 'adminify' );
123 }
124
125 if ( Utils::is_plugin_active( 'wordpress-seo/wp-seo.php' ) ) {
126 $third_party_security_head['yoast_generator'] = __( 'Remove All Yoast HTML Comments', 'adminify' );
127 }
128
129 $security_head = array_merge($security_head, $third_party_security_head);
130
131
132 $head_fields[] = [
133 'id' => 'security_head',
134 'title' => __('Header Security', 'adminify'),
135 'subtitle' => __('WordPress Frontend Head Tags Security ', 'adminify'),
136 'type' => 'fieldset',
137 'fields' => [
138 [
139 'id' => 'enable_security_head',
140 'type' => 'switcher',
141 'title' => __('', 'adminify'),
142 'class' => 'adminify-pl-0 adminify-pt-0',
143 'text_on' => __('Show', 'adminify'),
144 'text_off' => __('Hide', 'adminify'),
145 'text_width' => 80,
146 'default' => $this->get_default_field('security_head')['enable_security_head'],
147 ],
148 [
149 'id' => 'security_head_data',
150 'type' => 'checkbox',
151 'class' => 'adminify-one-col',
152 'title' => __('', 'adminify'),
153 'options' => $security_head,
154 'default' => $this->get_default_field('security_head')['security_head_data'],
155 'dependency' => ['enable_security_head', '==', 'true', 'true']
156 ],
157 [
158 'id' => 'self_ping_sites',
159 'type' => 'textarea',
160 'subtitle' => __('Additional URLs to disable Self Ping', 'adminify'),
161 'placeholder' => __('Each URLs in new line', 'adminify'),
162 'title' => 'Additional Self-Ping URLs',
163 'default' => $this->get_default_field('self_ping_sites'),
164 'dependency' => ['security_head_data|enable_security_head', 'any|==', 'self_ping|true', 'true'],
165 ]
166 ]
167 ];
168
169 }
170
171
172 /**
173 * Security: Feed Fields
174 *
175 * @param [type] $security_feed
176 *
177 * @return void
178 */
179 public function security_feed_fields( &$security_feed ) {
180 $security_feed[] = [
181 'id' => 'security_feed',
182 'type' => 'switcher',
183 'title' => __('Feed Links', 'adminify'),
184 'text_on' => __('Yes', 'adminify'),
185 'text_off' => __('No', 'adminify'),
186 'text_width' => 80,
187 'subtitle' => __('Disable all RSS, Atom, and RDF feeds, including posts, categories, tags, comments, authors, and search. Also redirect all feed URLs.', 'adminify'),
188 'default' => $this->get_default_field('security_feed'),
189 ];
190 }
191
192 /**
193 * Change Username Module
194 */
195 public function security_redirect_urls(&$redirect_urls){
196 $settings_fields = [];
197 $login_redirects = [];
198 // $logout_redirects = [];
199 $this->login_register_url_fields($settings_fields);
200 $this->roles_redirect_tabs($login_redirects);
201
202 $redirect_urls[] = [
203 'id' => 'security_subheading',
204 'type' => 'subheading',
205 'content' => Utils::adminfiy_help_urls(
206 __('"WordPress" White Label Settings', 'adminify'),
207 'https://wpadminify.com/kb/security/',
208 '',
209 'https://www.facebook.com/groups/jeweltheme',
210 'https://wpadminify.com/support/'
211 )
212 ];
213
214 $redirect_urls = [
215 [
216 'id' => 'redirect_urls_fields',
217 'title' => sprintf(__('Redirect URLs %s', 'adminify'), Utils::adminify_upgrade_pro_badge()),
218 'class' => 'adminify-pro-fieldset',
219 'subtitle' => __('Login and logout redirects based on user roles. Customize URLs for administrators, editors, or subscribers etc.', 'adminify'),
220 'type' => 'fieldset',
221 'fields' => [
222 [
223 'id' => 'enable_redirect_urls',
224 'type' => 'switcher',
225 'class' => 'adminify-pl-0',
226 'text_on' => __('Show', 'adminify'),
227 'text_off' => __('Hide', 'adminify'),
228 'text_width' => 80,
229 'default' => $this->get_default_field('redirect_urls_fields')['enable_redirect_urls'],
230 ],
231 [
232 'id' => 'redirect_urls_options',
233 'type' => 'fieldset',
234 'title' => __(' ', 'adminify'),
235 'class' => 'adminify-pt-0 adminify-pl-0 adminify-one-col adminify-tabs-content adminify-pro-notice',
236 'fields' => [
237 [
238 'id' => 'redirect_urls_tabs',
239 'type' => 'tabbed',
240 'title' => '',
241 'tabs' => [
242 [
243 'title' => __('Login/Register URL', 'adminify'),
244 'fields' => $settings_fields,
245 ],
246 [
247 'title' => __('Roles Redirect', 'adminify'),
248 'fields' => $login_redirects,
249 ],
250 ],
251 ]
252 ],
253 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options'],
254 'dependency' => ['enable_redirect_urls', '==', 'true', true],
255 ]
256 ]
257 ]
258 ];
259 }
260
261
262
263 public function login_register_url_fields(&$settings_fields)
264 {
265 $settings_fields[] = [
266 'id' => 'new_login_url',
267 'type' => 'text',
268 'class' => 'new-login-url',
269 'title' => __('New Login URL', 'adminify'),
270 'desc' => __('Change the login URL and prevent access to the wp-admin and <code>' . wp_login_url() . '</code> page directly.', 'adminify'),
271 'placeholder' => 'login',
272 'before' => \get_site_url() . '/',
273 // 'after' => '/',
274 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['new_login_url'],
275 ];
276
277 $settings_fields[] = [
278 'id' => 'redirect_admin_url',
279 'type' => 'text',
280 'class' => 'new-login-url redirect-admin-url',
281 'title' => __('Redirect Admin', 'adminify'),
282 'desc' => __('Redirect users those are not logged in and trying to access <code>' . get_admin_url() . '</code>', 'adminify'),
283 'placeholder' => '404',
284 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['redirect_admin_url'],
285 'before' => \get_site_url() . '/',
286 // 'after' => '/',
287 ];
288
289 $settings_fields[] = [
290 'id' => 'new_register_url',
291 'type' => 'text',
292 'class' => 'new-login-url new-register-url',
293 'title' => __('New Register URL', 'adminify'),
294 'subtitle' => __('Enable <a href="' . admin_url('options-general.php#users_can_register') . '"><b>Membership: "Anyone can register"</b></a> checkbox from Settings.', 'adminify'),
295 'desc' => __('Change the Register URL, to setup the custom designed registration page.', 'adminify'),
296 'placeholder' => 'wp-login.php?action=register',
297 'before' => \get_site_url() . '/',
298 // 'after' => '/',
299 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['new_register_url'],
300 ];
301 }
302
303 /**
304 * Settings Fields
305 *
306 * @return void
307 */
308 public function roles_redirect_tabs(&$roles_redirect)
309 {
310 $login_redirect_fields = [];
311 $logout_redirect_fields = [];
312 $this->login_redirect_tab_fields($login_redirect_fields);
313 $this->logout_redirect_tab_fields($logout_redirect_fields);
314
315 $roles_redirect[] = [
316 'id' => 'roles_redirect_tabs',
317 'type' => 'button_set',
318 'title' => __('Redirect Rules Type', 'adminify'),
319 'options' => array(
320 'login' => __('Login Redirect ', 'adminify'),
321 'logout' => __('Logout Redirect ', 'adminify'),
322 ),
323 'default' => 'login',
324 ];
325
326 // Heading
327 $roles_redirect[] = [
328 'type' => 'submessage',
329 'style' => 'info',
330 'class' => 'adminify-one-col',
331 'content' => __('Add Login conditions to redirect users to different pages based on their user names, roles & capabilities', 'adminify'),
332 'dependency' => ['roles_redirect_tabs', '==', 'login'],
333 ];
334 $roles_redirect[] = [
335 'id' => 'login_redirects',
336 'type' => 'group',
337 'title' => '',
338 'accordion_title_prefix' => __('Login Redirect: ', 'adminify'),
339 'accordion_title_number' => true,
340 'accordion_title_auto' => true,
341 'button_title' => __('Add New Login Redirect', 'adminify'),
342 'fields' => $login_redirect_fields,
343 'dependency' => ['roles_redirect_tabs', '==', 'login'],
344 ];
345
346
347
348 // Logout Heading
349 $roles_redirect[] = [
350 'type' => 'submessage',
351 'style' => 'info',
352 'class' => 'adminify-one-col',
353 'content' => __('Add Logout conditions to redirect users to different pages based on their user names, roles & capabilities', 'adminify'),
354 'dependency' => ['roles_redirect_tabs', '==', 'logout'],
355 ];
356 $roles_redirect[] = [
357 'id' => 'logout_redirects',
358 'type' => 'group',
359 'title' => '',
360 'accordion_title_prefix' => __('Logout Redirect: ', 'adminify'),
361 'accordion_title_number' => true,
362 'accordion_title_auto' => true,
363 'button_title' => __('Add New Logout Redirect', 'adminify'),
364 'fields' => $logout_redirect_fields,
365 'dependency' => ['roles_redirect_tabs', '==', 'logout'],
366 ];
367 }
368
369
370 /**
371 * Login Redirect Fields
372 *
373 * @param [type] $login_redirect_fields
374 *
375 * @return void
376 */
377 public function login_redirect_tab_fields(&$login_redirect_fields)
378 {
379 $login_redirect_fields[] = [
380 'id' => 'user_types',
381 'type' => 'button_set',
382 'title' => __('User Types', 'adminify'),
383 'placeholder' => __('Select User Types', 'adminify'),
384 'options' => array(
385 'user_role' => __('User Role', 'adminify'),
386 'user_name' => __('User Name', 'adminify'),
387 'user_cap' => __('User Capability', 'adminify'),
388 ),
389 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['login_redirects']['user_types'],
390 ];
391
392 // Select User Names
393 $login_redirect_fields[] = [
394 'id' => 'redirect_user',
395 'type' => 'select',
396 'title' => __('User', 'adminify'),
397 'placeholder' => __('Select a user', 'adminify'),
398 'options' => 'users',
399 'dependency' => ['user_types', '==', 'user_name'],
400 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['login_redirects']['redirect_user'],
401 ];
402
403 // Select User Roles
404 $login_redirect_fields[] = [
405 'id' => 'redirect_role',
406 'type' => 'select',
407 'title' => __('Role', 'adminify'),
408 'placeholder' => __('Select a Role', 'adminify'),
409 'options' => 'roles',
410 'dependency' => ['user_types', '==', 'user_role'],
411 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['login_redirects']['redirect_role'],
412 ];
413
414 // Select User Capability
415 $login_redirect_fields[] = [
416 'id' => 'redirect_cap',
417 'type' => 'select',
418 'title' => __('Capability', 'adminify'),
419 'placeholder' => __('Select a Capability', 'adminify'),
420 'options' => '\WPAdminify\Inc\Classes\Helper::get_capability_options',
421 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['login_redirects']['redirect_cap'],
422 'dependency' => ['user_types', '==', 'user_cap'],
423 ];
424
425
426 // Redirect URL
427 $login_redirect_fields[] = [
428 'id' => 'redirect_url',
429 'type' => 'text',
430 'class' => 'new-login-url',
431 'title' => __('Redirect URL', 'adminify'),
432 // 'before' => \get_site_url() . '/',
433 'desc' => __('Note: Full URL here. Change the URL for a User or User Roles.', 'adminify'),
434 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['login_redirects']['redirect_url'],
435 ];
436
437 // // Redirect Order
438 // $login_redirect_fields[] = [
439 // 'id' => 'redirect_order',
440 // 'type' => 'number',
441 // 'title' => __('Order', 'adminify'),
442 // 'default' => $this->get_default_field('redirect_urls_options')['login_redirects']['redirect_order'],
443 // ];
444 }
445
446
447
448
449 /**
450 * Logout Settings Fields
451 *
452 * @return void
453 */
454 public function logout_redirect_tab_fields(&$logout_redirect_fields)
455 {
456 $logout_redirect_fields[] = [
457 'id' => 'user_types',
458 'type' => 'button_set',
459 'title' => __('User Types', 'adminify'),
460 'placeholder' => __('Select User Types', 'adminify'),
461 'options' => array(
462 'user_role' => __('User Role', 'adminify'),
463 'user_name' => __('User Name', 'adminify'),
464 'user_cap' => __('User Capability', 'adminify'),
465 ),
466 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['logout_redirects']['user_types'],
467 ];
468
469 // Select User Names
470 $logout_redirect_fields[] = [
471 'id' => 'redirect_user',
472 'type' => 'select',
473 'title' => __('User', 'adminify'),
474 'placeholder' => __('Select a user', 'adminify'),
475 'options' => 'users',
476 'dependency' => ['user_types', '==', 'user_name'],
477 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['logout_redirects']['redirect_user'],
478 ];
479
480 // Select User Roles
481 $logout_redirect_fields[] = [
482 'id' => 'redirect_role',
483 'type' => 'select',
484 'title' => __('Role', 'adminify'),
485 'placeholder' => __('Select a Role', 'adminify'),
486 'options' => 'roles',
487 'dependency' => ['user_types', '==', 'user_role'],
488 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['logout_redirects']['redirect_role'],
489 ];
490
491 // Select User Capability
492 $logout_redirect_fields[] = [
493 'id' => 'redirect_cap',
494 'type' => 'select',
495 'title' => __('Capability', 'adminify'),
496 'placeholder' => __('Select a Capability', 'adminify'),
497 'options' => '\WPAdminify\Inc\Classes\Helper::get_capability_options',
498 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['logout_redirects']['redirect_cap'],
499 'dependency' => ['user_types', '==', 'user_cap'],
500 ];
501
502
503 // Redirect URL
504 $logout_redirect_fields[] = [
505 'id' => 'redirect_url',
506 'type' => 'text',
507 'class' => 'new-login-url',
508 'title' => __('Redirect URL', 'adminify'),
509 'before' => \get_site_url() . '/',
510 'desc' => __('Change the URL for a User or User Roles.', 'adminify'),
511 'default' => $this->get_default_field('redirect_urls_fields')['redirect_urls_options']['redirect_urls_tabs']['logout_redirects']['redirect_url'],
512 ];
513
514 // Redirect Order
515 // $logout_redirect_fields[] = [
516 // 'id' => 'redirect_order',
517 // 'type' => 'number',
518 // 'title' => __('Order', 'adminify'),
519 // 'default' => $this->get_default_field('redirect_urls_options')['logout_redirects']['redirect_order'],
520 // ];
521 }
522
523
524 /**
525 * Change Username Module
526 */
527 public function security_user_security(&$users){
528
529 $users_settings[] = [
530 'id' => 'change_username',
531 'type' => 'switcher',
532 'text_on' => __('Show', 'adminify'),
533 'text_off' => __('Hide', 'adminify'),
534 'text_width' => 80,
535 'title' => __('Username Change', 'adminify'),
536 'subtitle' => sprintf(__('Remove Comments for Media attachment Template <a href="%s">More Details</a> ', 'adminify'), esc_url('https://wpadminify.com/docs')),
537 'default' => $this->get_default_field('users_security')['change_username'],
538 ];
539 $users_settings[] = [
540 'id' => 'limit_logins',
541 'type' => 'switcher',
542 'text_on' => __('Show', 'adminify'),
543 'text_off' => __('Hide', 'adminify'),
544 'text_width' => 80,
545 'title' => __('Limit Login Attempts', 'adminify'),
546 'subtitle' => sprintf(__('Prevent brute force attacks by limiting the number of failed login attempts per IP address. <a href="%s">More Details</a> ', 'adminify'), esc_url('https://wpadminify.com/docs')),
547 'default' => $this->get_default_field('users_security')['limit_logins'],
548 ];
549
550 $users[] = array(
551 'id' => 'users_security',
552 'type' => 'fieldset',
553 'title' => __('Users Security', 'adminify'),
554 'subtitle' => __('Security for Users, Login/Logout etc.', 'adminify'),
555 'fields' => $users_settings,
556 'default' => $this->get_default_field('users_security'),
557 );
558 }
559
560 /**
561 * Security: WP JSON API's
562 *
563 * @param [type] $json_api_fields
564 *
565 * @return void
566 */
567 public function security_rest_api_fields( &$json_api_fieldset ) {
568
569 $json_api_fields_data = [
570 'rest_api' => __('Disable REST API', 'adminify'),
571 'powered' => __('Remove "X-Powered-By:..." from Server Response HTTP headers', 'adminify'),
572 ];
573
574 $json_api_fields = [
575 [
576 'id' => 'security_rest_api_enable',
577 'type' => 'switcher',
578 'class' => 'adminify-pl-0 adminify-pt-0',
579 'title' => __('', 'adminify'),
580 'text_on' => __('Show', 'adminify'),
581 'text_off' => __('Hide', 'adminify'),
582 'text_width' => 80,
583 'default' => $this->get_default_field('security_rest_api')['security_rest_api_enable'],
584 ],
585 [
586 'id' => 'security_rest_api_data',
587 'type' => 'checkbox',
588 'title' => __('', 'adminify'),
589 'class' => 'adminify-one-col',
590 'options' => $json_api_fields_data,
591 'default' => $this->get_default_field('security_rest_api')['security_rest_api_data'],
592 'dependency' => ['security_rest_api_enable', '==', 'true', true],
593 ]
594 ];
595
596 $json_api_fieldset[] = array(
597 'id' => 'security_rest_api',
598 'type' => 'fieldset',
599 'title' => __('REST API', 'adminify'),
600 'subtitle' => __('Disable REST API access for non-authenticated users and remove URL traces from &lt;head&gt;, HTTP headers and WP RSD endpoint.', 'adminify'),
601 'fields' => $json_api_fields,
602 'default' => $this->get_default_field('security_rest_api'),
603 );
604
605 }
606
607
608 /**
609 * Security: Post & Archives
610 */
611 public function security_archive_fields( &$archive_fields ) {
612 $archive_fields_data = [
613 'last_modified_date' => __('Display Last Post Updated Date', 'adminify' ),
614 'capital_p_dangit' => __('Remove Capital "P" Dangit', 'adminify' ),
615 'archives_date' => __('Redirect "Date Archives" Template to Homepage', 'adminify' ),
616 'archives_author' => __('Redirect "Author Archives" Template to Homepage', 'adminify' ),
617 'archives_tag' => __('Redirect "Tag Archives" Template to Homepage', 'adminify' ),
618 'archives_category' => __('Redirect "Category Archives" Template to Homepage', 'adminify' ),
619 'archives_postformat' => __('Redirect "Post Format Archives" Template to Homepage', 'adminify' ),
620 'archives_search' => __('Redirect "Search Template" to Homepage', 'adminify' ),
621 ];
622
623 $archive_fields[] = [
624 'id' => 'post_archives',
625 'title' => __('Post & Archives', 'adminify'),
626 'subtitle' => __('Redirect unused Archives pages to homepage', 'adminify'),
627 'type' => 'fieldset',
628 'fields' => [
629 [
630 'id' => 'post_archives_enable',
631 'type' => 'switcher',
632 'title' => __('', 'adminify'),
633 'text_on' => __('Show', 'adminify'),
634 'text_off' => __('Hide', 'adminify'),
635 'text_width' => 80,
636 'class' => 'adminify-pl-0 adminify-pt-0',
637 'default' => $this->get_default_field('post_archives')['post_archives_enable'],
638 ],
639 [
640 'id' => 'post_archives_data',
641 'type' => 'checkbox',
642 'class' => 'adminify-one-col',
643 'title' => __('', 'adminify'),
644 'options' => $archive_fields_data,
645 'default' => $this->get_default_field('post_archives')['post_archives_data'],
646 'dependency' => ['post_archives_enable', '==', 'true', true],
647 ],
648 ]
649 ];
650
651 }
652
653
654 /**
655 * Custom Gravatar Image
656 *
657 * @param [type] $fields
658 *
659 * @return void
660 */
661 public function security_custom_gravatar( &$gravatar_image ){
662
663 // Comments Avatar
664 $custom_gravatar_settings = [
665 [
666 'id' => 'enable',
667 'type' => 'switcher',
668 'title' => '',
669 'class' => 'adminify-pt-0 adminify-pl-0 adminify-col-fit',
670 'label' => sprintf(__('Add your Custom Gravatar Images for Comments. Select Avatar Image from <a href="%s">Settings>Discussion>Default Avatar</a>.', 'adminify'), esc_url(admin_url('options-discussion.php'))),
671 'text_on' => __('Yes', 'adminify'),
672 'text_off' => __('No', 'adminify'),
673 'text_width' => 80,
674 'default' => $this->get_default_field('enable'),
675 ],
676 [
677 'id' => 'image',
678 'type' => 'repeater',
679 'title' => __('Add Avatar Image', 'adminify'),
680 'fields' => [
681 [
682 'id' => 'avatar_image',
683 'type' => 'media',
684 'title' => __('Image', 'adminify'),
685 'library' => 'image',
686 ],
687 [
688 'id' => 'avatar_name',
689 'type' => 'text',
690 'title' => __('Name', 'adminify'),
691 ],
692 ],
693 'default' => $this->get_default_field('image'),
694 'dependency' => ['enable', '==', 'true'],
695 ]
696 ];
697
698 $gravatar_image[] = [
699 'id' => 'custom_gravatar',
700 'type' => 'fieldset',
701 'title' => __('Custom Gravatar Images', 'adminify'),
702 'fields' => $custom_gravatar_settings,
703 ];
704 }
705
706
707 /**
708 * Disable Comments
709 *
710 * @param [type] $fields
711 *
712 * @return void
713 */
714 public function security_others( &$fields ){
715 $fields[] = [
716 'id' => 'disable_automatic_emails',
717 'type' => 'switcher',
718 'class' => 'adminify-pro-fieldset adminify-pro-notice',
719 'title' => sprintf(__('Disable Automatic Updates Emails %s', 'adminify'), Utils::adminify_upgrade_pro_badge()),
720 'subtitle' => __('Stop getting emails about automatic updates on your WordPress site.', 'adminify'),
721 'text_on' => __('Yes', 'adminify'),
722 'text_off' => __('No', 'adminify'),
723 'text_width' => 80,
724 'default' => $this->get_default_field('disable_automatic_emails'),
725 ];
726
727 $fields[] = [
728 'id' => 'disable_language_switcher_login',
729 'type' => 'switcher',
730 'class' => 'adminify-pro-fieldset adminify-pro-notice',
731 'title' => sprintf(__('Disable Login Screen Language Switcher %s', 'adminify'), Utils::adminify_upgrade_pro_badge()),
732 'subtitle' => __('Hide the Language Switcher on the default WordPress login screen.', 'adminify'),
733 'text_on' => __('Yes', 'adminify'),
734 'text_off' => __('No', 'adminify'),
735 'text_width' => 80,
736 'default' => $this->get_default_field('disable_language_switcher_login'),
737 ];
738 }
739
740 /**
741 * Disable Comments
742 *
743 * @param [type] $fields
744 *
745 * @return void
746 */
747 public function security_disable_comments( &$fields ){
748
749 // Disable Comments
750 $disable_comments_for = [
751 'admin_bar' => __('Remove "Comments" from Admin Bar', 'adminify'),
752 'menu_redirect' => __('Admin Menu "Comments" Redirect to "wp-admin"', 'adminify'),
753 'admin_menu' => __('Remove Admin Menu "Comments"', 'adminify'),
754 'discussion_menu' => __('Remove Discussion Menu from "Settings>Discussion" Sub Menu', 'adminify'),
755 'close_front' => __('Close Comments from front-end', 'adminify'),
756 'comments_notes' => __('Remove "Your email address will not be published..." from comment form template', 'adminify'),
757 'comments_url_field' => __('Remove website Field (URL) from comment form template', 'adminify'),
758 'replace_author_link' => sprintf(__('Remove Link from comment "Author Name" & replace to JavaScript? %s'), Utils::adminify_upgrade_pro_class()),
759 'replace_comment_link' => sprintf(__('Comments Content disable auto linking, display comments links as plain text, replace Comment Links to JavaScript? %s', 'adminify'), Utils::adminify_upgrade_pro_class()),
760 'hide_existing' => sprintf(__('Hide Existing Comments from Frontend? %s', 'adminify'), Utils::adminify_upgrade_pro_class()),
761 ];
762
763 // check if WP_Widget_Recent_Comments is used
764 // $recentcomments = [];
765 if ( !is_active_widget(false, false, 'WP_Widget_Recent_Comments', true) ) {
766 $disable_comments_for['recentcomments'] = __('Remove Hardcoded ".recentcomments" CSS for default "Recent Comments" widget. i.e ', 'adminify');
767 $disable_comments_for = array_merge($disable_comments_for, $disable_comments_for);
768 }
769
770 $fields[] = [
771 'id' => 'disable_comments',
772 'title' => __('Disable Comments', 'adminify'),
773 'subtitle' => __('Disable comments for some or all public post types. When disabled, existing comments will also be hidden on the frontend.', 'adminify'),
774 'type' => 'fieldset',
775 'fields' => [
776 [
777 'id' => 'enable_disable_comments',
778 'type' => 'switcher',
779 'title' => __('', 'adminify'),
780 'class' => 'adminify-pl-0 adminify-pt-0',
781 'text_on' => __('Show', 'adminify'),
782 'text_off' => __('Hide', 'adminify'),
783 'text_width' => 80,
784 'default' => $this->get_default_field('disable_comments')['enable_disable_comments'],
785 ],
786 [
787 'id' => 'post_types',
788 'type' => 'checkbox',
789 'title' => __('for Post Types', 'adminify'),
790 'subtitle' => __('Check for enable Post Types', 'adminify'),
791 'options' => 'WPAdminify\Inc\Admin\Options\Productivity::get_all_post_types',
792 'default' => $this->get_default_field('disable_comments')['post_types'],
793 'dependency' => ['enable_disable_comments', '==', 'true', true],
794 ],
795 // [
796 // 'id' => 'disable_comments_post_types',
797 // 'type' => 'notice',
798 // 'style' => 'warning',
799 // 'content' => Utils::adminify_upgrade_pro(),
800 // 'dependency' => [
801 // [ 'post_types', 'not-any', 'post,page', 'true' ],
802 // [ 'post_types', '!=', '', 'true' ],
803 // ],
804 // ],
805 [
806 'id' => 'apply_for',
807 'type' => 'checkbox',
808 'title' => __('', 'adminify'),
809 'class' => 'adminify-one-col',
810 'options' => $disable_comments_for,
811 'default' => $this->get_default_field('disable_comments')['apply_for'],
812 'dependency' => ['enable_disable_comments', '==', 'true', true],
813 ]
814 ]
815 ];
816 }
817
818
819 public function tweak_settings() {
820 if ( ! class_exists( 'ADMINIFY' ) ) {
821 return;
822 }
823
824
825 $fields = [];
826
827 $fields[] = [
828 'id' => 'security_sub_heading',
829 'type' => 'subheading',
830 'content' => Utils::adminfiy_help_urls(
831 __('<span></span>', 'adminify'),
832 'https://wpadminify.com/kb/disable-admin-notice-in-wordpress-dashboard/',
833 'https://www.youtube.com/playlist?list=PLqpMw0NsHXV-EKj9Xm1DMGa6FGniHHly8',
834 'https://www.facebook.com/groups/jeweltheme',
835 'https://wpadminify.com/support/'
836 ),
837 ];
838
839
840 $this->security_redirect_urls( $fields );
841 // $this->security_user_security( $fields );
842 $this->security_head_fields( $fields );
843 $this->security_feed_fields( $fields );
844 $this->security_rest_api_fields( $fields );
845 $this->security_disable_comments( $fields );
846 $this->security_archive_fields( $fields );
847 // $this->security_others( $fields );
848
849 $this->security_custom_gravatar( $fields );
850
851 $fields = apply_filters('adminify_settings/security', $fields, $this);
852
853 // Tweaks Section
854 \ADMINIFY::createSection(
855 $this->prefix,
856 [
857 'title' => __( 'Security', 'adminify' ),
858 'id' => 'security',
859 'icon' => 'fas fa-shield-alt',
860 'fields' => $fields,
861 ]
862 );
863 }
864 }
865 }
866