PluginProbe
Loginizer / trunk
Loginizer vtrunk
2.1.0 2.0.9 2.0.8 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 trunk 1.0 1.0.1 1.0.2 1.1.0 1.1.1 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 All 74 releases
← All changes | main/admin.php +180 -60 2.0.1 → trunk View file →
@@ -3,15 +3,82 @@
3 3 if(!defined('ABSPATH')){
4 4 die('Hacking Attempt!');
5 5 }
6 6
7 -// HOOKS
8 -add_action('admin_menu', 'loginizer_admin_menu');
9 -add_action('admin_notices', 'loginizer_social_login_url_alert');
10 -add_action('admin_footer', 'loginizer_social_interim_js');
11 -add_action('admin_init', 'loginizer_admin_actions');
12 -//add_filter("plugin_action_links_plugin_loginizer", 'loginizer_plugin_action_links');
7 +function loginizer_admin_hooks(){
8 + add_action('admin_menu', 'loginizer_admin_menu');
9 + add_action('admin_notices', 'loginizer_social_login_url_alert');
10 + add_action('admin_footer', 'loginizer_social_interim_js');
11 + add_action('admin_init', 'loginizer_admin_actions');
12 + // add_filter("plugin_action_links_plugin_loginizer", 'loginizer_plugin_action_links');
13 +
14 + loginizer_admin_promo_hooks();
15 +}
13 16
17 +function loginizer_admin_promo_hooks(){
18 + global $loginizer;
19 +
20 + if(!current_user_can('activate_plugins') || defined('SITEPAD')){
21 + return;
22 + }
23 +
24 + // Is the premium features there ?
25 + if(!defined('LOGINIZER_PREMIUM')){
26 + // The promo time
27 + $loginizer['promo_time'] = get_option('loginizer_promo_time');
28 + if(empty($loginizer['promo_time'])){
29 + $loginizer['promo_time'] = time();
30 + update_option('loginizer_promo_time', $loginizer['promo_time']);
31 + }
32 +
33 + // Are we to show the loginizer promo
34 + if(!empty($loginizer['promo_time']) && $loginizer['promo_time'] > 0 && $loginizer['promo_time'] < (time() - (30*24*3600))){
35 + add_action('admin_notices', 'loginizer_promo');
36 + }
37 +
38 + if(!empty($loginizer['csrf_promo']) && $loginizer['csrf_promo'] > 0 && $loginizer['csrf_promo'] < (time() - 86400)){
39 + add_action('admin_notices', 'loginizer_csrf_promo');
40 + }
41 +
42 + // Are we to disable the promo
43 + if(isset($_GET['loginizer_promo']) && (int)$_GET['loginizer_promo'] == 0){
44 + update_option('loginizer_promo_time', (0 - time()) );
45 + die('DONE');
46 + }
47 +
48 + $loginizer['backuply_promo'] = get_option('loginizer_backuply_promo_time');
49 + if(empty($loginizer['backuply_promo'])){
50 + $loginizer['backuply_promo'] = abs($loginizer['promo_time']);
51 + update_option('loginizer_backuply_promo_time', $loginizer['backuply_promo']);
52 + }
53 +
54 + // Setting CSRF Promo time
55 + $loginizer['csrf_promo'] = get_option('loginizer_csrf_promo_time');
56 +
57 + if(empty($loginizer['csrf_promo'])){
58 + $loginizer['csrf_promo'] = abs($loginizer['promo_time']);
59 + update_option('loginizer_csrf_promo_time', $loginizer['csrf_promo']);
60 + }
61 + }
62 +
63 + // === Plugin Update Notice === //
64 + $plugin_update_notice = get_option('softaculous_plugin_update_notice', []);
65 + $available_update_list = get_site_transient('update_plugins');
66 +
67 + if(
68 + !empty($available_update_list) &&
69 + is_object($available_update_list) &&
70 + !empty($available_update_list->response) &&
71 + !empty($available_update_list->response['loginizer/loginizer.php']) &&
72 + (empty($plugin_update_notice) || empty($plugin_update_notice['loginizer/loginizer.php']) || (!empty($plugin_update_notice['loginizer/loginizer.php']) &&
73 + version_compare($plugin_update_notice['loginizer/loginizer.php'], $available_update_list->response['loginizer/loginizer.php']->new_version, '<')))
74 + ){
75 + add_action('admin_notices', 'loginizer_plugin_update_notice');
76 + add_filter('softaculous_plugin_update_notice', 'loginizer_update_notice_filter');
77 + }
78 + // === Plugin Update Notice === //
79 +}
80 +
14 81 function loginizer_admin_actions(){
15 82 global $loginizer;
16 83
17 84 if(defined('LOGINIZER_PREMIUM') && !defined('SITEPAD') && current_user_can('activate_plugins') && isset($_GET['page']) && strpos($_GET['page'], 'loginizer') !== FALSE){
@@ -392,9 +459,9 @@
392 459 }
393 460 </script>
394 461
395 462 <hr />
396 - <a href="http://loginizer.com" target="_blank">Loginizer</a> '.__('v'.LOGINIZER_VERSION.'. You can report any bugs ','loginizer').'<a href="http://wordpress.org/support/plugin/loginizer" target="_blank">'.__('here','loginizer').'</a>.';
463 + <a href="http://loginizer.com" target="_blank">Loginizer</a> v'.LOGINIZER_VERSION.'. '.__('You can report any bugs ','loginizer').'<a href="http://wordpress.org/support/plugin/loginizer" target="_blank">'.__('here','loginizer').'</a>.';
397 464
398 465 }
399 466
400 467 echo '
@@ -481,11 +548,19 @@
481 548 // Rename Login
482 549 add_submenu_page('loginizer', __('Security Settings', 'loginizer'), __('Rename Login', 'loginizer'), 'activate_plugins', 'loginizer', 'loginizer_security_settings');
483 550
484 551 }
485 -
552 +
486 553 // Brute Force
487 554 add_submenu_page('loginizer', __('Brute Force Settings', 'loginizer'), __('Brute Force', 'loginizer'), 'activate_plugins', 'loginizer_brute_force', 'loginizer_brute_force_settings');
555 +
556 + if(defined('LOGINIZER_PREMIUM')){
557 + // WAF Security Firewall
558 + $expiry_date = strtotime('2026-03-01');
559 + $tag_new = time() < $expiry_date ? '<span style="display: inline-block; margin-left: 10px; padding: 0px 5px; color: #fff; background-color: #d63638; border-radius: 2px;">'.__('New', 'loginizer').'</span>' : '';
560 +
561 + add_submenu_page('loginizer', __('Country Block', 'loginizer'), __('Country Block', 'loginizer').' '.$tag_new, 'activate_plugins', 'loginizer_firewall', 'loginizer_firewall_settings');
562 + }
488 563
489 564 // PasswordLess
490 565 add_submenu_page('loginizer', __($loginizer['prefix'].'PasswordLess Settings', 'loginizer'), __('PasswordLess', 'loginizer'), 'activate_plugins', 'loginizer_passwordless', 'loginizer_passwordless_settings');
491 566
@@ -497,21 +572,21 @@
497 572
498 573 }
499 574
500 575 // reCaptcha
501 - add_submenu_page('loginizer', __($loginizer['prefix'].'reCAPTCHA Settings', 'loginizer'), __('reCAPTCHA', 'loginizer'), 'activate_plugins', 'loginizer_recaptcha', 'loginizer_recaptcha_settings');
576 + add_submenu_page('loginizer', $loginizer['prefix'].__('reCAPTCHA Settings', 'loginizer'), __('reCAPTCHA', 'loginizer'), 'activate_plugins', 'loginizer_recaptcha', 'loginizer_recaptcha_settings');
502 577
503 578 // Temporary Login
504 - add_submenu_page('loginizer', __($loginizer['prefix'].'SSO', 'loginizer'), __('Single Sign On', 'loginizer'). ((time() < strtotime('30 November 2023')) ? ' <span style="color:yellow;">Update</span>' : ''), 'activate_plugins', 'loginizer_sso', 'loginizer_sso_settings');
579 + add_submenu_page('loginizer', $loginizer['prefix'].__('SSO', 'loginizer'), __('Single Sign On', 'loginizer'). ((time() < strtotime('30 November 2023')) ? ' <span style="color:yellow;">Update</span>' : ''), 'activate_plugins', 'loginizer_sso', 'loginizer_sso_settings');
505 580
506 581 // Social Login
507 - $hook_name = add_submenu_page('loginizer', __($loginizer['prefix'].'social_login', 'loginizer'), __('Social Login', 'loginizer') . (defined('LOGINIZER_PREMIUM') && (time() < strtotime('30 June 2025')) ? ' <span style="color:yellow;font-size:12px;">Updated</span>' : ''), 'activate_plugins', 'loginizer_social_login', 'loginizer_social_login_settings');
582 + $hook_name = add_submenu_page('loginizer', $loginizer['prefix']. __('Social Login', 'loginizer'), __('Social Login', 'loginizer') . (defined('LOGINIZER_PREMIUM') && (time() < strtotime('30 June 2025')) ? ' <span style="color:yellow;font-size:12px;">Updated</span>' : ''), 'activate_plugins', 'loginizer_social_login', 'loginizer_social_login_settings');
508 583
509 584 // Security Settings
510 585 if(!defined('SITEPAD')){
511 586
512 587 // Security Settings
513 - add_submenu_page('loginizer', __($loginizer['prefix'].'Security Settings', 'loginizer'), __('Security Settings', 'loginizer'), 'activate_plugins', 'loginizer_security', 'loginizer_security_settings');
588 + add_submenu_page('loginizer', $loginizer['prefix'].__('Security Settings', 'loginizer'), __('Security Settings', 'loginizer'), 'activate_plugins', 'loginizer_security', 'loginizer_security_settings');
514 589
515 590 // File Checksums
516 591 add_submenu_page('loginizer', __('Loginizer File Checksums', 'loginizer'), __('File Checksums', 'loginizer'), 'activate_plugins', 'loginizer_checksums', 'loginizer_checksums_settings');
517 592
@@ -541,68 +616,60 @@
541 616 function loginizer_promo(){
542 617
543 618 echo '
544 619 <style>
545 -.lz_button {
546 -background-color: #4CAF50; /* Green */
547 -border: none;
548 -color: white;
549 -padding: 8px 16px;
550 -text-align: center;
551 -text-decoration: none;
552 -display: inline-block;
553 -font-size: 16px;
554 -margin: 4px 2px;
555 --webkit-transition-duration: 0.4s; /* Safari */
556 -transition-duration: 0.4s;
557 -cursor: pointer;
558 -}
559 -
560 -.lz_button:focus{
561 -border: none;
562 -color: white;
563 -}
564 -
565 -.lz_button1 {
566 -color: white;
620 +.wp-core-ui .lz_button1 {
567 621 background-color: #4CAF50;
568 -border:3px solid #4CAF50;
622 +border-color: transparent;
623 +border-radius: 2px;
624 +color: #fff;
569 625 }
570 626
571 -.lz_button1:hover {
572 -box-shadow: 0 6px 8px 0 rgba(0,0,0,0.24), 0 9px 25px 0 rgba(0,0,0,0.19);
573 -color: white;
574 -border:3px solid #4CAF50;
627 +.wp-core-ui .lz_button1:hover {
628 +background-color:#3b963f;
629 +border-color: transparent;
630 +border-radius: 2px;
631 +color: #fff;
575 632 }
576 633
577 -.lz_button2 {
578 -color: white;
634 +.wp-core-ui .lz_button2 {
579 635 background-color: #0085ba;
636 +border-color: transparent;
637 +border-radius: 2px;
638 +color: #fff;
580 639 }
581 640
582 -.lz_button2:hover {
583 -box-shadow: 0 6px 8px 0 rgba(0,0,0,0.24), 0 9px 25px 0 rgba(0,0,0,0.19);
584 -color: white;
641 +.wp-core-ui .lz_button2:hover {
642 +background-color: #0175a3;
643 +border-color: transparent;
644 +border-radius: 2px;
645 +color: #fff;
585 646 }
586 647
587 -.lz_button3 {
588 -color: white;
648 +.wp-core-ui .lz_button3 {
589 649 background-color: #365899;
650 +border-color: transparent;
651 +border-radius: 2px;
652 +color: #fff;
590 653 }
591 654
592 -.lz_button3:hover {
593 -box-shadow: 0 6px 8px 0 rgba(0,0,0,0.24), 0 9px 25px 0 rgba(0,0,0,0.19);
594 -color: white;
655 +.wp-core-ui .lz_button3:hover {
656 +border-color: transparent;
657 +background-color: #274785;
658 +color:#fff;
595 659 }
596 660
597 -.lz_button4 {
598 -color: white;
599 -background-color: rgb(66, 184, 221);
661 +.wp-core-ui .lz_button4 {
662 +background-color: #14171A;
663 +border-color: transparent;
664 +border-radius: 2px;
665 +color: #fff;
600 666 }
601 667
602 -.lz_button4:hover {
603 -box-shadow: 0 6px 8px 0 rgba(0,0,0,0.24), 0 9px 25px 0 rgba(0,0,0,0.19);
604 -color: white;
668 +.wp-core-ui .lz_button4:hover {
669 +background-color: #24292E;
670 +color: #fff;
671 +border-color: transparent;
605 672 }
606 673
607 674 .loginizer_promo-close{
608 675 float:right;
@@ -639,12 +706,12 @@
639 706 </a>
640 707 <img src="'.LOGINIZER_URL.'/assets/images/loginizer-200.png" style="float:left; margin:10px 20px 10px 10px" width="100" />
641 708 <p style="font-size:16px">We are glad you like Loginizer and have been using it since the past few days. It is time to take the next step </p>
642 709 <p>
643 - <a class="lz_button lz_button1" target="_blank" href="https://loginizer.com/features">Upgrade to Pro</a>
644 - <a class="lz_button lz_button2" target="_blank" href="https://wordpress.org/support/view/plugin-reviews/loginizer">Rate it 5★\'s</a>
645 - <a class="lz_button lz_button3" target="_blank" href="https://www.facebook.com/Loginizer-815504798591884/">Like Us on Facebook</a>
646 - <a class="lz_button lz_button4" target="_blank" href="https://twitter.com/home?status='.rawurlencode('I use @loginizer to secure my #WordPress site - https://loginizer.com').'">Tweet about Loginizer</a>
710 + <a class="button lz_button1" target="_blank" href="https://loginizer.com/features">'.esc_html__('Upgrade to Pro', 'loginizer').'</a>
711 + <a class="button lz_button2" target="_blank" href="https://wordpress.org/support/view/plugin-reviews/loginizer">Rate it 5★\'s</a>
712 + <a class="button lz_button3" target="_blank" href="https://www.facebook.com/Loginizer-815504798591884/">'.esc_html__('Like Us on Facebook', 'loginizer').'</a>
713 + <a class="button lz_button4" target="_blank" href="https://x.com/intent/tweet?text='.rawurlencode('I use @loginizer to secure my #WordPress site - https://loginizer.com').'">'.esc_html__('Post on X about Loginizer', 'loginizer').'</a>
647 714 </p>
648 715 </div>';
649 716
650 717 }
@@ -696,8 +763,13 @@
696 763
697 764 loginizer_social_login();
698 765 }
699 766
767 +function loginizer_firewall_settings(){
768 + include_once LOGINIZER_PRO_DIR . 'main/settings/waf.php';
769 + loginizer_pro_firewall();
770 +}
771 +
700 772 // Hides the interim login poup after successful login.
701 773 function loginizer_social_interim_js(){
702 774
703 775 if(isset($_GET['interim_login']) && $_GET['interim_login'] === 'lz' && is_user_logged_in()){
@@ -880,5 +952,53 @@
880 952 var admin_url = "'.admin_url().'"+"admin-ajax.php";
881 953 jQuery.post(admin_url, data, function(response){
882 954 });
883 955 });');
884 -}
956 +}
957 +
958 +function loginizer_update_notice_filter($plugins = []){
959 + $plugins['loginizer/loginizer.php'] = 'Loginizer';
960 +
961 + return $plugins;
962 +}
963 +
964 +function loginizer_plugin_update_notice(){
965 + if(defined('SOFTACULOUS_PLUGIN_UPDATE_NOTICE')){
966 + return;
967 + }
968 +
969 + $to_update_plugins = apply_filters('softaculous_plugin_update_notice', []);
970 +
971 + if(empty($to_update_plugins)){
972 + return;
973 + }
974 +
975 + /* translators: %1$s is replaced with a "string" of name of plugins, and %2$s is replaced with "string" which can be "is" or "are" based on the count of the plugin */
976 + $msg = sprintf(__('New versions of %1$s %2$s available. Updating ensures better performance, security, and access to the latest features.', 'loginizer'), '<b>'.esc_html(implode(', ', $to_update_plugins)).'</b>', (count($to_update_plugins) > 1 ? 'are' : 'is')) . ' <a class="button button-primary" href='.esc_url(admin_url('plugins.php?plugin_status=upgrade')).'>Update Now</a>';
977 +
978 + define('SOFTACULOUS_PLUGIN_UPDATE_NOTICE', true); // To make sure other plugins don't return a Notice
979 + echo '<div class="notice notice-info is-dismissible" id="loginizer-plugin-update-notice">
980 + <p>'.$msg. '</p>
981 + </div>';
982 +
983 + wp_register_script('loginizer-update-notice', '', ['jquery'], '', true);
984 + wp_enqueue_script('loginizer-update-notice');
985 + wp_add_inline_script('loginizer-update-notice', 'jQuery("#loginizer-plugin-update-notice").on("click", function(e){
986 + let target = jQuery(e.target);
987 +
988 + if(!target.hasClass("notice-dismiss")){
989 + return;
990 + }
991 +
992 + var data;
993 +
994 + // Hide it
995 + jQuery("#loginizer-plugin-update-notice").hide();
996 +
997 + // Save this preference
998 + jQuery.post("'.admin_url('admin-ajax.php?action=loginizer_close_update_notice').'&security='.wp_create_nonce('loginizer_promo_nonce').'", data, function(response) {
999 + //alert(response);
1000 + });
1001 + });');
1002 +}
1003 +
1004 +loginizer_admin_hooks();