PluginProbe
Loginizer / trunk
Loginizer vtrunk
2.1.1 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 All 75 releases
← All changes | functions.php +446 -60 1.3.2 → trunk View file →
@@ -1,42 +1,12 @@
1 1 <?php
2 2
3 -// Get the client IP
4 -function _lz_getip(){
5 - if(isset($_SERVER["REMOTE_ADDR"])){
6 - return $_SERVER["REMOTE_ADDR"];
7 - }elseif(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
8 - return $_SERVER["HTTP_X_FORWARDED_FOR"];
9 - }elseif(isset($_SERVER["HTTP_CLIENT_IP"])){
10 - return $_SERVER["HTTP_CLIENT_IP"];
11 - }
3 +if(!defined('ABSPATH')){
4 + die('HACKING ATTEMPT!');
12 5 }
13 6
14 -// Get the client IP
15 -function lz_getip(){
16 -
17 - global $loginizer;
18 -
19 - // Just so that we have something
20 - $ip = _lz_getip();
21 -
22 - $loginizer['ip_method'] = (int) @$loginizer['ip_method'];
23 -
24 - if(isset($_SERVER["REMOTE_ADDR"])){
25 - $ip = $_SERVER["REMOTE_ADDR"];
26 - }
27 -
28 - if(isset($_SERVER["HTTP_X_FORWARDED_FOR"]) && @$loginizer['ip_method'] == 1){
29 - $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
30 - }
31 -
32 - if(isset($_SERVER["HTTP_CLIENT_IP"]) && @$loginizer['ip_method'] == 2){
33 - $ip = $_SERVER["HTTP_CLIENT_IP"];
34 - }
35 -
36 - return $ip;
37 -
38 -}
7 +include_once(LOGINIZER_DIR.'/lib/IPv6/IPv6.php');
8 +include_once(LOGINIZER_DIR .'/common.php');
39 9
40 10 // Execute a select query and return an array
41 11 function lz_selectquery($query, $array = 0){
42 12 global $wpdb;
@@ -49,17 +19,8 @@
49 19 return $result;
50 20 }
51 21 }
52 22
53 -// Check if an IP is valid
54 -function lz_valid_ip($ip){
55 -
56 - if(!ip2long($ip)){
57 - return false;
58 - }
59 - return true;
60 -}
61 -
62 23 // Check if a field is posted via POST else return default value
63 24 function lz_optpost($name, $default = ''){
64 25
65 26 if(!empty($_POST[$name])){
@@ -91,15 +52,21 @@
91 52
92 53 // For filling in posted values
93 54 function lz_POSTval($name, $default = ''){
94 55
95 - return (!empty($_POST) ? (!isset($_POST[$name]) ? '' : $_POST[$name]) : $default);
56 + return (!empty($_POST) ? (!isset($_POST[$name]) ? '' : esc_html($_POST[$name])) : $default);
96 57
97 58 }
98 59
99 -function lz_POSTchecked($name, $default = false){
60 +function lz_POSTchecked($name, $default = false, $submit_name = ''){
100 61
101 - return (!empty($_POST) ? (isset($_POST[$name]) ? 'checked="checked"' : '') : (!empty($default) ? 'checked="checked"' : ''));
62 + if(!empty($submit_name)){
63 + $post_to_check = isset($_POST[$submit_name]) ? $_POST[$submit_name] : '';
64 + }else{
65 + $post_to_check = $_POST;
66 + }
67 +
68 + return (!empty($post_to_check) ? (isset($_POST[$name]) ? 'checked="checked"' : '') : (!empty($default) ? 'checked="checked"' : ''));
102 69
103 70 }
104 71
105 72 function lz_POSTselect($name, $value, $default = false){
@@ -117,21 +84,18 @@
117 84 }
118 85
119 86 }
120 87
88 +function lz_POSTradio($name, $val, $default = null){
89 +
90 + return (!empty($_POST) ? (@$_POST[$name] == $val ? 'checked="checked"' : '') : (!is_null($default) && $default == $val ? 'checked="checked"' : ''));
91 +
92 +}
93 +
121 94 function lz_inputsec($string){
122 95
123 - if(!get_magic_quotes_gpc()){
96 + $string = addslashes($string);
124 97
125 - $string = addslashes($string);
126 -
127 - }else{
128 -
129 - $string = stripslashes($string);
130 - $string = addslashes($string);
131 -
132 - }
133 -
134 98 // This is to replace ` which can cause the command to be executed in exec()
135 99 $string = str_replace('`', '\`', $string);
136 100
137 101 return $string;
@@ -180,9 +144,9 @@
180 144 if(empty($error)){
181 145 return true;
182 146 }
183 147
184 - $error_string = '<b>Please fix the below error(s) :</b> <br />';
148 + $error_string = '<b>'.__('Please fix the below error(s)', 'loginizer').' :</b> <br />';
185 149
186 150 foreach($error as $ek => $ev){
187 151 $error_string .= '* '.$ev.'<br />';
188 152 }
@@ -187,9 +151,9 @@
187 151 $error_string .= '* '.$ev.'<br />';
188 152 }
189 153
190 154 echo '<div id="message" class="error"><p>'
191 - . __($error_string, 'loginizer')
155 + . $error_string
192 156 . '</p></div>';
193 157 }
194 158
195 159 // Report a notice
@@ -207,9 +171,9 @@
207 171 }else{
208 172 $notice_class = 'updated';
209 173 }
210 174
211 - $notice_string = '<b>Please check the below notice(s) :</b> <br />';
175 + $notice_string = '<b>'.__('Please check the below notice(s)', 'loginizer').' :</b> <br />';
212 176
213 177 foreach($notice as $ek => $ev){
214 178 $notice_string .= '* '.$ev.'<br />';
215 179 }
@@ -214,9 +178,9 @@
214 178 $notice_string .= '* '.$ev.'<br />';
215 179 }
216 180
217 181 echo '<div id="message" class="'.$notice_class.'"><p>'
218 - . __($notice_string, 'loginizer')
182 + . $notice_string
219 183 . '</p></div>';
220 184 }
221 185
222 186 // Convert an objext to array
@@ -301,4 +265,426 @@
301 265 }
302 266 return $page;
303 267 }
304 268
269 +// Replaces the Variables with the supplied ones
270 +function lz_lang_vars_name($str, $array){
271 +
272 + foreach($array as $k => $v){
273 +
274 + $str = str_replace('$'.$k, $v, $str);
275 +
276 + }
277 +
278 + return $str;
279 +
280 +}
281 +
282 +// Check if Loginizer is premium
283 +function loginizer_is_premium(){
284 + return defined('LOGINIZER_PREMIUM');
285 +}
286 +
287 +function loginizer_feature_available($feature = '', $return = 0){
288 +
289 + if(loginizer_is_premium()){
290 + return true;
291 + }
292 +
293 + $msg = '';
294 +
295 + if(!empty($feature)){
296 + $msg .= '<b>'.$feature.'</b> is available in the Pro version of Loginizer. ';
297 + }
298 +
299 + $msg .= '<a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>Upgrade to Pro</b></a>';
300 +
301 + if(!empty($return)){
302 + return $msg;
303 + }else{
304 + echo '<div style="color:#a94442; background-color:#f2dede; border-color:#ebccd1; padding:15px; margin-bottom:20px; border:1px solid transparent; border-radius:4px;">'.$msg.'</div>';
305 + }
306 +
307 +}
308 +
309 +// Checks if the email is valid
310 +function lz_valid_email($email){
311 +
312 + return filter_var($email, FILTER_VALIDATE_EMAIL);
313 +
314 +}
315 +
316 +function loginizer_blocked_page($lz_error){
317 +
318 + // We are checking if this is a login page or not
319 + if(false === stripos(wp_login_url(), $_SERVER['REQUEST_URI'])){
320 + return;
321 + }
322 +
323 + echo '<!DOCTYPE html><html><head>
324 + <meta name="robots" content="noindex, noarchive">
325 + <meta name="referrer" content="strict-origin-when-cross-origin">
326 + <meta name="viewport" content="width=device-width, initial-scale=1.0">
327 + <title>'.__('You can not access this page', 'loginizer').'</title>
328 + <style>html,body{height:100%}
329 + .loginizer-blocked-wrapper{display:flex; align-items:center; justify-content:space-between; flex-direction:column; height:100%;} footer{border-top:1px solid #dadada; width:40vh; text-align:center;}</style>
330 + </head>
331 + <body style="font-family:sans-serif; font-size:calc(15px + 0.390625vw);margin:0;">
332 + <div class="loginizer-blocked-wrapper">
333 + <div style="margin-top:10em;">
334 + <h1 align="center">'.__('You can not access this page', 'loginizer').'</h1>
335 + <p align="center">'.wp_kses_post(implode('', $lz_error)).'</p>
336 + </div>
337 + <footer>';
338 + if(!defined('LOGINIZER_PREMIUM')){
339 + echo '<p>Powered by Loginizer</p>';
340 + } else {
341 + echo '<p>Powered by ' . esc_html(get_bloginfo('name')) . '</p>';
342 + }
343 +
344 + echo '</footer></div></body></html>';
345 + die();
346 +}
347 +
348 +function loginizer_social_css($position = 'below'){
349 + global $loginizer;
350 +
351 + // Starting the CSS
352 + $css = '#lz-social-login-btns{display:none;max-width:350px;width:100%;box-sizing:border-box}.lz-social-login-btns-icon{flex-direction:row;flex-wrap:wrap;gap:8px}.lz-social-login-btns-full{flex-wrap:wrap;}.lz-social-top-padding{padding-top:20px}.lz-social-bottom-padding{padding-bottom:20px}.loginizer-social-button{display:flex;align-items:center;cursor:pointer;margin-bottom:10px;box-sizing:border-box;text-align:center;line-height:1;border:none;outline:none}.lz-social-button-icon{padding:0;width:40px;height:40px}.lz-social-button-icon-circle{border-radius:20px}.lz-social-button-icon-square{border-radius:3px}.lz-social-button-btn{padding:0 12px;width:100%;max-width:400px}.loginizer-social-button img{border-radius:2px;max-width:24px !important;}.loginizer-social-btn-logo{display:flex;padding:8px;align-items:center}.loginizer-social-btn-text{text-align:center;margin-left:15px;padding:10px 0;font-size:16px}';
353 +
354 + // CSS for the divider with the text OR in the middle
355 + if(!empty($loginizer['social_settings']) && ($position === 'below' || $position === 'above')){
356 + $css .= '.loginizer-social-divider{flex: 1 0 100%; font-size:17px; font-weight:700; margin-bottom:10px; display:flex;align-items:center}.loginizer-social-divider::after,.loginizer-social-divider::before{flex:1;content:"";padding:1px;background-color:#ececec;margin:5px}';
357 + }
358 +
359 + wp_register_style('loginizer-social', '', [], LOGINIZER_VERSION);
360 + wp_enqueue_style('loginizer-social');
361 + wp_add_inline_style('loginizer-social', $css);
362 +}
363 +
364 +// Echos the HTML of the Social button
365 +function loginizer_social_btn($return = false, $page_type = 'login', $short_atts = []){
366 + global $loginizer, $loginizer_login_providers;
367 +
368 + // We don't want to give social login option to blacklisted IP's
369 + if(loginizer_is_blacklisted() || !loginizer_can_login()){
370 + return;
371 + }
372 +
373 + $provider_settings = get_option('loginizer_provider_settings', []);
374 + $provider_order = get_option('loginizer_social_order', []); // in what order the icons are to be shown
375 +
376 + $providers = [];
377 +
378 + // Sorting according to the saved order of the providers.
379 + if(!empty($provider_order)){
380 + foreach($provider_order as $key => $num){
381 + if(!empty($provider_settings[$key])){
382 + $providers[$key] = $provider_settings[$key];
383 + }
384 + }
385 + } else {
386 + $providers = $provider_settings;
387 + }
388 +
389 + if(empty($providers)){
390 + return;
391 + }
392 +
393 + // ------ HTML STARTS HERE -------- //
394 +
395 + $style = 'icon';
396 + $shape = 'square';
397 + $position = 'below';
398 + if(!empty($loginizer['social_settings'])){
399 + $social_settings = $loginizer['social_settings'];
400 +
401 + // Setting Button Style
402 + if(!empty($social_settings[$page_type]['button_style']) && $social_settings[$page_type]['button_style'] === 'full'){
403 + $style = 'full';
404 + }
405 +
406 + // Setting Button Shape
407 + if(!empty($social_settings[$page_type]['button_shape']) && $social_settings[$page_type]['button_shape'] !== 'square'){
408 + $shape = $social_settings[$page_type]['button_shape'];
409 + }
410 +
411 + // Setting position
412 + if(!empty($social_settings[$page_type]['button_position']) && $social_settings[$page_type]['button_position'] !== 'below'){
413 + $position = $social_settings[$page_type]['button_position'];
414 + }
415 + }
416 +
417 + $container_alignment = isset($loginizer['social_settings'][$page_type]['alignment']) ? $loginizer['social_settings'][$page_type]['alignment'] : 'auto';
418 + $button_alignment = isset($loginizer['social_settings'][$page_type]['button_alignment']) ? $loginizer['social_settings'][$page_type]['button_alignment'] : 'center';
419 +
420 + // Shortcode style
421 + if(!empty($short_atts['type'])){
422 + $style = esc_html($short_atts['type']);
423 + }
424 +
425 + // Shortcode Shape square or circle
426 + if(!empty($short_atts['shape'])){
427 + $shape = esc_html($short_atts['shape']);
428 + }
429 +
430 + // Shortcode for Container alignment
431 + if(!empty($short_atts['container_alignment'])){
432 + $container_alignment = esc_html($short_atts['container_alignment']);
433 + }
434 +
435 + // Shortcode for Button alignment
436 + if(!empty($short_atts['button_alignment'])){
437 + $button_alignment = esc_html($short_atts['button_alignment']);
438 + }
439 +
440 + // Setting divider position
441 + $divider_pos = '';
442 + if(!empty($short_atts['divider']) && $short_atts['divider'] == 'above'){
443 + $divider_pos = 'above';
444 + }elseif(empty($short_atts) && !empty($loginizer['social_settings']) && $position === 'below_plus'){
445 + $divider_pos = 'above';
446 + }elseif(!empty($short_atts['divider']) && $short_atts['divider'] == 'below'){
447 + $divider_pos = 'below';
448 + }elseif(empty($short_atts) && !empty($loginizer['social_settings']) && $position === 'above_plus'){
449 + $divider_pos = 'below';
450 + }
451 +
452 + loginizer_social_css($divider_pos);
453 +
454 + $padding = [
455 + 'above' => 'bottom',
456 + 'below' => 'top'
457 + ];
458 +
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).';">';
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 +
464 + // HTML of the divider in case the buttons are below the login fields
465 + if(!empty($divider_pos) && $divider_pos == 'above'){
466 + $social_buttons .= '<div class="loginizer-social-divider">'.esc_html($or_translated).'</div><br>';
467 + }
468 +
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'];
474 +
475 + foreach($providers as $provider => $settings){
476 + if(empty($settings['enabled']) || empty($settings['tested'])){
477 + continue;
478 + }
479 +
480 + // Filters Pro Only Auth
481 + if(!empty($loginizer_login_providers[$provider]['premium']) && !defined('LOGINIZER_PREMIUM')){
482 + continue;
483 + }
484 +
485 + $name = $loginizer_login_providers[$provider]['name'];
486 + $color = $loginizer_login_providers[$provider]['color'];
487 +
488 + $btn_style = 'default';
489 + if(!empty($provider_settings[$provider]['button_style'])){
490 + $btn_style = $provider_settings[$provider]['button_style'];
491 + }
492 +
493 + // TODO:: Improve the comment here
494 + // The image is named based on button style as Facebook has different images for different style
495 + // And if some more social options are added they could have the same behaviour too.
496 + $img_url = LOGINIZER_URL .'/assets/images/social/'.$provider.'.png';
497 + if('default' !== $btn_style){
498 + if(file_exists(LOGINIZER_DIR .'/assets/images/social/'.$provider.'-'.$btn_style.'.png')){
499 + $img_url = LOGINIZER_URL .'/assets/images/social/'.$provider.'-'.$btn_style.'.png';
500 + }
501 + }
502 +
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;') .'">
504 + <div class="loginizer-social-btn-logo">
505 + <img src="'.esc_url($img_url).'" height="24" alt="'.esc_attr($name).' Icon"/>
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 + }
515 +
516 + // Button text in case of full button
517 + if(!empty($loginizer['social_settings']) && $style === 'full'){
518 + $social_buttons .= '<div class="loginizer-social-btn-text">'.esc_html($button_text).' <strong>'.esc_html($name).'</strong>
519 + </div>';
520 + }
521 +
522 + $social_buttons .= '</div>';
523 + }
524 +
525 + if(empty($social_buttons)){
526 + $social_buttons .= esc_html__('No Auth Provider configured', 'loginizer');
527 + }
528 +
529 + // HTML of the divider in case the buttons are above the login fields
530 + if(!empty($divider_pos) && $divider_pos == 'below'){
531 + $social_buttons .= '<br><div class="loginizer-social-divider">'.esc_html($or_translated).'</div>';
532 + }
533 +
534 + $social_buttons .= '</div>';
535 + loginizer_add_social_js($page_type);
536 +
537 + if($return){
538 + return $social_buttons;
539 + }
540 +
541 + echo wp_kses($social_buttons, [
542 + 'div' => ['class' => true, 'id' => true, 'style' => true, 'onclick' => true],
543 + 'img' => ['src' => true, 'height' => true, 'alt' => true, 'width' => true],
544 + 'strong' => true,
545 + ]);
546 +}
547 +
548 +function loginizer_add_social_js($page_type){
549 + global $loginizer;
550 +
551 + if(wp_script_is('loginizer-social-js') || loginizer_is_blacklisted() || !empty($loginizer['social_script_added'])){
552 + return;
553 + }
554 +
555 + $loginizer['social_script_added'] = false;
556 + $func = 'append';
557 + if(!empty($loginizer['social_settings']) && !empty($loginizer['social_settings'][$page_type]['button_position']) && strpos($loginizer['social_settings'][$page_type]['button_position'], 'above') !== FALSE){
558 + $func = 'prepend';
559 + }
560 +
561 + $target_window = 'same';
562 + if(isset($_GET['interim-login']) && $_GET['interim-login'] == 1){
563 + $target_window = 'popup';
564 + } elseif(!empty($loginizer['social_settings']['general']['target_window'])){
565 + $target_window = $loginizer['social_settings']['general']['target_window'];
566 + }
567 +
568 + $social_nonce = wp_create_nonce('loginizer_social_check');
569 +
570 + wp_register_script('loginizer-social-js', '', ['jquery'], LOGINIZER_VERSION, ['strategy' => false, 'in_footer' => true]);
571 + wp_enqueue_script('loginizer-social-js');
572 + wp_add_inline_script('loginizer-social-js', '
573 +
574 +
575 +
576 + let lz_form = document.querySelectorAll("#loginform, #registerform, .woocommerce-form-login, .woocommerce-form-register, #front-login-form, #setupform"),
577 + lz_social_btns = document.querySelectorAll("#lz-social-login-btns"),
578 + lz_target_window = "'.esc_html($target_window).'",
579 + lz_is_interim = "'.(!empty($_GET['interim-login']) ? '&interim-login=0' : '').'"; // as for interim it should only open a popup
580 +
581 + if(lz_target_window == "same"){
582 + let loader = "<style>#loginizer-social-loader-wrap{display:none; align-items:center; justify-content:center; position:fixed; top:0; left:0; width:100%; height:100vh; background-color:rgba(0, 0, 0, 0.2);} .loginizer-social-loader{width:48px;height:48px;border:5px solid #fff;border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:1s linear infinite rotation}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}</style>";
583 + loader += "<div id=\"loginizer-social-loader-wrap\"><div class=\"loginizer-social-loader\"></div></div>";
584 +
585 + jQuery("body").append(loader);
586 + }
587 +
588 +
589 + lz_social_btns.forEach((btns) => {
590 + btns.style.display="flex";
591 + });
592 +
593 + if(lz_form.length > 0){
594 + lz_form.forEach((form, index) => {
595 + if (lz_social_btns[index]) {
596 + lz_social_btns[index].style.display="flex";
597 + form.'.esc_html($func).'(lz_social_btns[index]);
598 + }
599 + });
600 + }
601 +
602 + function loginizer_auth_popup(provider, isAPI) {
603 + let target_url = "'.esc_url(wp_login_url()).'?social_security='.esc_html($social_nonce).'&lz_social_provider=" + provider+lz_is_interim;
604 +
605 + if(isAPI){
606 + target_url += "&lz_api=1";
607 + }
608 +
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 + }
616 +
617 + if(lz_target_window == "same"){
618 + jQuery("#loginizer-social-loader-wrap").css("display", "flex");
619 +
620 + window.location.href = target_url;
621 +
622 + return;
623 + }
624 +
625 + let screen_x = window.screenX !== undefined ? window.screenX : window.screenLeft,
626 + screen_y = window.screenY !== undefined ? window.screenY : window.screenTop,
627 + outer_width = window.outerWidth !== undefined ? window.outerWidth : document.documentElement.clientWidth,
628 + outer_height = window.outerHeight !== undefined ? window.outerHeight : document.documentElement.clientHeight - 22,
629 + target_width = 600,
630 + target_height = 600,
631 + right = parseInt(screen_y + (outerHeight - target_height) / 2.5, 10),
632 + left = parseInt(screen_x + (outerWidth - target_width) / 2, 10),
633 + attributes = [];
634 +
635 + if(target_width !== null){
636 + attributes.push("width=" + target_width);
637 + }
638 + if(target_height !== null){
639 + attributes.push("height=" + target_height);
640 + }
641 + attributes.push("left=" + left);
642 + attributes.push("top=" + right);
643 + attributes.push("scrollbars=1");
644 +
645 + var auth_window = window.open(target_url, "authWindow", attributes.join(","));
646 +
647 + if(window.focus){
648 + auth_window.focus();
649 + }
650 + return false;
651 + }'
652 + );
653 +
654 + $loginizer['social_script_added'] = true;
655 +
656 +}
657 +
658 +function loginizer_social_btn_login($return = false, $id = ''){
659 + if(!loginizer_is_blacklisted()){
660 + loginizer_social_btn($return, 'login');
661 + }
662 +}
663 +
664 +function loginizer_get_social_error(){
665 + global $loginizer;
666 +
667 + // If we already have the error set
668 + if(!empty($loginizer['social_errors'])){
669 + return;
670 + }
671 +
672 + if(empty($_COOKIE) || empty($_COOKIE['lz_social_error'])){
673 + return;
674 + }
675 +
676 + $error_identifier = sanitize_text_field(wp_unslash($_COOKIE['lz_social_error']));
677 + $social_errors = get_site_transient($error_identifier);
678 +
679 + if(empty($social_errors['errors'])){
680 + return;
681 + }
682 +
683 + // Setting error data
684 + $loginizer['retries_left'] = $social_errors['retries_left'];
685 + $loginizer['social_errors'] = $social_errors['errors'];
686 +
687 + // Cleaning the error data
688 + delete_site_transient($error_identifier); // Deleting the data
689 + //setcookie('lz_social_error', '', time() - 300, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true); // have to delete
690 +}