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 | functions.php +34 -111 2.0.2 → trunk View file →
@@ -4,60 +4,10 @@
4 4 die('HACKING ATTEMPT!');
5 5 }
6 6
7 7 include_once(LOGINIZER_DIR.'/lib/IPv6/IPv6.php');
8 +include_once(LOGINIZER_DIR .'/common.php');
8 9
9 -// Get the client IP
10 -function _lz_getip(){
11 - if(isset($_SERVER["REMOTE_ADDR"])){
12 - return $_SERVER["REMOTE_ADDR"];
13 - }elseif(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
14 - return $_SERVER["HTTP_X_FORWARDED_FOR"];
15 - }elseif(isset($_SERVER["HTTP_CLIENT_IP"])){
16 - return $_SERVER["HTTP_CLIENT_IP"];
17 - }
18 -}
19 -
20 -// Get the client IP
21 -function lz_getip(){
22 -
23 - global $loginizer;
24 -
25 - // Just so that we have something
26 - $ip = _lz_getip();
27 -
28 - $loginizer['ip_method'] = (int) @$loginizer['ip_method'];
29 -
30 - if(isset($_SERVER["REMOTE_ADDR"])){
31 - $ip = $_SERVER["REMOTE_ADDR"];
32 - }
33 -
34 - if(isset($_SERVER["HTTP_X_FORWARDED_FOR"]) && @$loginizer['ip_method'] == 1){
35 - if(strpos($_SERVER["HTTP_X_FORWARDED_FOR"], ',')){
36 - $temp_ip = explode(',', $_SERVER["HTTP_X_FORWARDED_FOR"]);
37 - $ip = trim($temp_ip[0]);
38 - }else{
39 - $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
40 - }
41 - }
42 -
43 - if(isset($_SERVER["HTTP_CLIENT_IP"]) && @$loginizer['ip_method'] == 2){
44 - $ip = $_SERVER["HTTP_CLIENT_IP"];
45 - }
46 -
47 - if(@$loginizer['ip_method'] == 3 && isset($_SERVER[@$loginizer['custom_ip_method']])){
48 - $ip = $_SERVER[@$loginizer['custom_ip_method']];
49 - }
50 -
51 - // Hacking fix for X-Forwarded-For
52 - if(!lz_valid_ip($ip)){
53 - return '';
54 - }
55 -
56 - return $ip;
57 -
58 -}
59 -
60 10 // Execute a select query and return an array
61 11 function lz_selectquery($query, $array = 0){
62 12 global $wpdb;
63 13
@@ -69,58 +19,8 @@
69 19 return $result;
70 20 }
71 21 }
72 22
73 -// Check if an IP is valid
74 -function lz_valid_ip($ip){
75 -
76 - if(empty($ip)){
77 - return false;
78 - }
79 -
80 - // IPv6
81 - if(lz_valid_ipv6($ip)){
82 - return true;
83 - }
84 -
85 - // IPv4
86 - if(!ip2long($ip) || !lz_valid_ipv4($ip)){
87 - return false;
88 - }
89 -
90 - return true;
91 -}
92 -
93 -function lz_valid_ipv4($ip){
94 - if(!preg_match('/^(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}$/is', $ip) || substr_count($ip, '.') != 3){
95 - return false;
96 - }
97 -
98 - $r = explode('.', $ip);
99 -
100 - foreach($r as $v){
101 - $v = (int) $v;
102 - if($v > 255 || $v < 0){
103 - return false;
104 - }
105 - }
106 -
107 - return true;
108 -
109 -}
110 -
111 -function lz_valid_ipv6($ip){
112 -
113 - $pattern = '/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/';
114 -
115 - if(!preg_match($pattern, $ip)){
116 - return false;
117 - }
118 -
119 - return true;
120 -
121 -}
122 -
123 23 // Check if a field is posted via POST else return default value
124 24 function lz_optpost($name, $default = ''){
125 25
126 26 if(!empty($_POST[$name])){
@@ -244,9 +144,9 @@
244 144 if(empty($error)){
245 145 return true;
246 146 }
247 147
248 - $error_string = '<b>Please fix the below error(s) :</b> <br />';
148 + $error_string = '<b>'.__('Please fix the below error(s)', 'loginizer').' :</b> <br />';
249 149
250 150 foreach($error as $ek => $ev){
251 151 $error_string .= '* '.$ev.'<br />';
252 152 }
@@ -251,9 +151,9 @@
251 151 $error_string .= '* '.$ev.'<br />';
252 152 }
253 153
254 154 echo '<div id="message" class="error"><p>'
255 - . __($error_string, 'loginizer')
155 + . $error_string
256 156 . '</p></div>';
257 157 }
258 158
259 159 // Report a notice
@@ -271,9 +171,9 @@
271 171 }else{
272 172 $notice_class = 'updated';
273 173 }
274 174
275 - $notice_string = '<b>Please check the below notice(s) :</b> <br />';
175 + $notice_string = '<b>'.__('Please check the below notice(s)', 'loginizer').' :</b> <br />';
276 176
277 177 foreach($notice as $ek => $ev){
278 178 $notice_string .= '* '.$ev.'<br />';
279 179 }
@@ -278,9 +178,9 @@
278 178 $notice_string .= '* '.$ev.'<br />';
279 179 }
280 180
281 181 echo '<div id="message" class="'.$notice_class.'"><p>'
282 - . __($notice_string, 'loginizer')
182 + . $notice_string
283 183 . '</p></div>';
284 184 }
285 185
286 186 // Convert an objext to array
@@ -557,14 +457,21 @@
557 457 ];
558 458
559 459 $social_buttons = '<div id="lz-social-login-btns" class="'.($style == 'icon' ? 'lz-social-login-btns-icon' : 'lz-social-login-btns-full').' '.($position == 'above' || $position == 'below' ? 'lz-social-'.$padding[$position].'-padding' : '').'" style="justify-self:'.esc_attr($container_alignment).'; justify-content:'.esc_attr($button_alignment).';">';
560 460
461 + /* translators: %s: This OR is used as a separator for Either login through username OR use social login */
462 + $or_translated = __('OR', 'loginizer');
463 +
561 464 // HTML of the divider in case the buttons are below the login fields
562 465 if(!empty($divider_pos) && $divider_pos == 'above'){
563 - $social_buttons .= '<div class="loginizer-social-divider">OR</div><br>';
466 + $social_buttons .= '<div class="loginizer-social-divider">'.esc_html($or_translated).'</div><br>';
564 467 }
565 468
566 469 include_once LOGINIZER_DIR . '/main/login-providers.php';
470 +
471 + // This is used to decide weather we will use Login with or Register with
472 + $current_hook = current_action();
473 + $register_hooks = ['register_form', 'woocommerce_register_form'];
567 474
568 475 foreach($providers as $provider => $settings){
569 476 if(empty($settings['enabled']) || empty($settings['tested'])){
570 477 continue;
@@ -596,12 +503,20 @@
596 503 $social_buttons .= '<div class="loginizer-social-button '.($style == 'icon' ? 'lz-social-button-icon' : 'lz-social-button-btn').' '.($shape == 'circle' ? 'lz-social-button-icon-circle' : 'lz-social-button-icon-square').'" onclick="loginizer_auth_popup(\''.esc_js($provider).'\', '.esc_js(!empty($settings['loginizer_social_key']) ? true : 0).')" style="'.((!empty($loginizer_login_providers[$provider]['styles']) && !empty($loginizer_login_providers[$provider]['styles'][$btn_style])) ? esc_attr($loginizer_login_providers[$provider]['styles'][$btn_style]) : esc_attr('background-color:'. esc_attr($color)). '; color:#FFF;') .'">
597 504 <div class="loginizer-social-btn-logo">
598 505 <img src="'.esc_url($img_url).'" height="24" alt="'.esc_attr($name).' Icon"/>
599 506 </div>';
507 +
508 + if(in_array($current_hook, $register_hooks)){
509 + /* translators: %s: This is for social login so the complete text would be Register With [Brand Name], eg Register With Google */
510 + $button_text = esc_html__('Register With', 'loginizer');
511 + } else {
512 + /* translators: %s: This is for social login so the complete text would be Login With [Brand Name], eg Login With Google */
513 + $button_text = esc_html__('Login With', 'loginizer');
514 + }
600 515
601 516 // Button text in case of full button
602 517 if(!empty($loginizer['social_settings']) && $style === 'full'){
603 - $social_buttons .= '<div class="loginizer-social-btn-text">'.esc_html__('Login With', 'loginizer').' <strong>'.esc_html($name).'</strong>
518 + $social_buttons .= '<div class="loginizer-social-btn-text">'.esc_html($button_text).' <strong>'.esc_html($name).'</strong>
604 519 </div>';
605 520 }
606 521
607 522 $social_buttons .= '</div>';
@@ -612,9 +527,9 @@
612 527 }
613 528
614 529 // HTML of the divider in case the buttons are above the login fields
615 530 if(!empty($divider_pos) && $divider_pos == 'below'){
616 - $social_buttons .= '<br><div class="loginizer-social-divider">OR</div>';
531 + $social_buttons .= '<br><div class="loginizer-social-divider">'.esc_html($or_translated).'</div>';
617 532 }
618 533
619 534 $social_buttons .= '</div>';
620 535 loginizer_add_social_js($page_type);
@@ -690,9 +605,15 @@
690 605 if(isAPI){
691 606 target_url += "&lz_api=1";
692 607 }
693 608
694 - target_url += "&ref='.esc_url((is_ssl() ? 'https://' : 'http://').$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']).'"
609 + let redirect_to = "'.(!empty($_GET['redirect_to']) ? wp_validate_redirect(esc_url($_GET['redirect_to'])) : '') .'";
610 +
611 + if(redirect_to.length){
612 + target_url += "&ref="+redirect_to;
613 + } else {
614 + target_url += "&ref='.esc_url((is_ssl() ? 'https://' : 'http://').$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']).'"
615 + }
695 616
696 617 if(lz_target_window == "same"){
697 618 jQuery("#loginizer-social-loader-wrap").css("display", "flex");
698 619
@@ -734,9 +655,11 @@
734 655
735 656 }
736 657
737 658 function loginizer_social_btn_login($return = false, $id = ''){
738 - loginizer_social_btn($return, 'login');
659 + if(!loginizer_is_blacklisted()){
660 + loginizer_social_btn($return, 'login');
661 + }
739 662 }
740 663
741 664 function loginizer_get_social_error(){
742 665 global $loginizer;
@@ -763,5 +686,5 @@
763 686
764 687 // Cleaning the error data
765 688 delete_site_transient($error_identifier); // Deleting the data
766 689 //setcookie('lz_social_error', '', time() - 300, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true); // have to delete
767 -}
690 +}