WordPress Social Login - Version 2.2.1

Version Description

  • WSL can be fully integrated with your BuddyPress installation: display of users avatars and xprofiles mapping.
  • WSL is now updated to work with the latest apis changes of the supported social networks.
  • WSL Widget is now more flexible than before and can be fully customized to fit you website theme.
  • Introducing new providers : Reddit, Disqus and PixelPin.
  • WSL Hooks has been reworked and few hooks have been depreciated in favour of new ones. For more information, see: http://hybridauth.sourceforge.net/wsl/developer.html
  • A number of bugfixes, small enhancements and visual updates.
Download this release

Release Info

Developer miled
Plugin Icon 128x128 WordPress Social Login
Version 2.2.1
Comparing to
See all releases

Code changes from version 2.1.6 to 2.2.1

Files changed (154) hide show
  1. assets/css/style.css +11 -13
  2. assets/img/16x16/500px.png +0 -0
  3. assets/img/16x16/disqus.png +0 -0
  4. assets/img/16x16/dribbble.png +0 -0
  5. assets/img/16x16/flickr.png +0 -0
  6. assets/img/16x16/github.png +0 -0
  7. assets/img/16x16/hyves.png +0 -0
  8. assets/img/16x16/instagram.png +0 -0
  9. assets/img/16x16/latch.png +0 -0
  10. assets/img/16x16/livejournal.png +0 -0
  11. assets/img/16x16/mailru.png +0 -0
  12. assets/img/16x16/mixi.png +0 -0
  13. assets/img/16x16/mixx.png +0 -0
  14. assets/img/16x16/myspace.png +0 -0
  15. assets/img/16x16/odnoklassniki.png +0 -0
  16. assets/img/16x16/{openid-2.png → openid.png} +0 -0
  17. assets/img/16x16/orkut.png +0 -0
  18. assets/img/16x16/pixelpin.png +0 -0
  19. assets/img/16x16/{flickr-2.png → reddit.png} +0 -0
  20. assets/img/16x16/stackoverflow.png +0 -0
  21. assets/img/16x16/steam.png +0 -0
  22. assets/img/16x16/twitchtv.png +0 -0
  23. assets/img/16x16/vkontakte.png +0 -0
  24. assets/img/16x16/wordpress.png +0 -0
  25. assets/img/16x16/yandex.png +0 -0
  26. assets/img/32x32/icondock/disqus.png +0 -0
  27. assets/img/32x32/icondock/gowalla.png +0 -0
  28. assets/img/32x32/icondock/info.txt +6 -2
  29. assets/img/32x32/icondock/latch.png +0 -0
  30. assets/img/32x32/icondock/myspace.png +0 -0
  31. assets/img/32x32/icondock/paypal.png +0 -0
  32. assets/img/32x32/icondock/pixelpin.png +0 -0
  33. assets/img/32x32/icondock/reddit.png +0 -0
  34. assets/img/32x32/wpzoom/disqus.png +0 -0
  35. assets/img/32x32/wpzoom/gowalla.png +0 -0
  36. assets/img/32x32/wpzoom/latch.png +0 -0
  37. assets/img/32x32/wpzoom/myspace.png +0 -0
  38. assets/img/32x32/wpzoom/{openid-2.png → openid.png} +0 -0
  39. assets/img/32x32/wpzoom/paypal.png +0 -0
  40. assets/img/32x32/wpzoom/pixelpin.png +0 -0
  41. assets/img/32x32/wpzoom/reddit.png +0 -0
  42. assets/img/alert.png +0 -0
  43. assets/img/arr_right.png +0 -0
  44. assets/js/connect.js +0 -49
  45. assets/js/script.js +64 -0
  46. hybridauth/Hybrid/Auth.php +15 -20
  47. hybridauth/Hybrid/Endpoint.php +16 -17
  48. hybridauth/Hybrid/Error.php +11 -6
  49. hybridauth/Hybrid/Exception.php +16 -0
  50. hybridauth/Hybrid/Logger.php +37 -13
  51. hybridauth/Hybrid/Provider_Adapter.php +61 -22
  52. hybridauth/Hybrid/Provider_Model.php +47 -15
  53. hybridauth/Hybrid/Provider_Model_OAuth1.php +20 -10
  54. hybridauth/Hybrid/Provider_Model_OAuth2.php +15 -7
  55. hybridauth/Hybrid/Provider_Model_OpenID.php +44 -37
  56. hybridauth/Hybrid/Providers/Disqus.php +59 -0
  57. hybridauth/Hybrid/Providers/Facebook.php +201 -37
  58. hybridauth/Hybrid/Providers/Foursquare.php +1 -1
  59. hybridauth/Hybrid/Providers/GitHub.php +17 -1
  60. hybridauth/Hybrid/Providers/Goodreads.php +7 -7
  61. hybridauth/Hybrid/Providers/Google.php +197 -33
  62. hybridauth/Hybrid/Providers/Gowalla.php +0 -102
  63. hybridauth/Hybrid/Providers/Identica.php +1 -1
  64. hybridauth/Hybrid/Providers/Instagram.php +48 -48
  65. hybridauth/Hybrid/Providers/LastFM.php +3 -3
  66. hybridauth/Hybrid/Providers/Latch.php +30 -0
  67. hybridauth/Hybrid/Providers/LinkedIn.php +5 -2
  68. hybridauth/Hybrid/Providers/Live.php +2 -2
  69. hybridauth/Hybrid/Providers/Mailru.php +1 -1
  70. hybridauth/Hybrid/Providers/MySpace.php +0 -164
  71. hybridauth/Hybrid/Providers/Odnoklassniki.php +23 -16
  72. hybridauth/Hybrid/Providers/Paypal.php +146 -0
  73. hybridauth/Hybrid/Providers/PixelPin.php +49 -0
  74. hybridauth/Hybrid/Providers/Reddit.php +205 -0
  75. hybridauth/Hybrid/Providers/Steam.php +15 -19
  76. hybridauth/Hybrid/Providers/Twitter.php +118 -13
  77. hybridauth/Hybrid/Providers/Vkontakte.php +44 -8
  78. hybridauth/Hybrid/Providers/Yahoo.php +11 -11
  79. hybridauth/Hybrid/Providers/Yandex.php +3 -3
  80. hybridauth/Hybrid/Storage.php +61 -18
  81. hybridauth/Hybrid/StorageInterface.php +28 -0
  82. hybridauth/Hybrid/User.php +16 -7
  83. hybridauth/Hybrid/User_Activity.php +22 -7
  84. hybridauth/Hybrid/User_Contact.php +32 -11
  85. hybridauth/Hybrid/User_Profile.php +125 -59
  86. hybridauth/Hybrid/resources/config.php.tpl +72 -0
  87. hybridauth/Hybrid/thirdparty/Facebook/base_facebook.php +171 -61
  88. hybridauth/Hybrid/thirdparty/Facebook/facebook.php +76 -8
  89. hybridauth/Hybrid/thirdparty/LinkedIn/LinkedIn.php +16 -7
  90. hybridauth/Hybrid/thirdparty/OAuth/OAuth.php +20 -16
  91. hybridauth/Hybrid/thirdparty/OAuth/OAuth1Client.php +40 -16
  92. hybridauth/Hybrid/thirdparty/OAuth/OAuth2Client.php +22 -11
  93. hybridauth/Hybrid/thirdparty/OpenID/LightOpenID.php +984 -834
  94. hybridauth/Hybrid/thirdparty/Paypal/PaypalOAuth2Client.php +142 -0
  95. hybridauth/changes.txt +26 -0
  96. hybridauth/readme.txt +2 -11
  97. includes/admin/components/advanced/index.php +0 -111
  98. includes/admin/components/bouncer/index.php +1 -3
  99. includes/admin/components/bouncer/wsl.components.bouncer.setup.php +33 -25
  100. includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php +5 -5
  101. includes/admin/components/buddypress/index.php +60 -0
  102. includes/admin/components/buddypress/wsl.components.buddypress.notfound.php +59 -0
  103. includes/admin/components/buddypress/wsl.components.buddypress.setup.php +256 -0
  104. includes/admin/components/buddypress/wsl.components.buddypress.sidebar.php +50 -0
  105. includes/admin/components/components/index.php +1 -1
  106. includes/admin/components/components/wsl.components.help.gallery.php +3 -15
  107. includes/admin/components/components/wsl.components.help.setup.php +37 -10
  108. includes/admin/components/contacts/index.php +136 -116
  109. includes/admin/components/diagnostics/index.php +60 -43
  110. includes/admin/components/help/index.php +56 -6
  111. includes/admin/components/login-widget/index.php +1 -3
  112. includes/admin/components/login-widget/wsl.components.loginwidget.setup.php +109 -38
  113. includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php +14 -10
  114. includes/admin/components/networks/index.php +1 -1
  115. includes/admin/components/networks/wsl.components.networks.addmore.php +4 -5
  116. includes/admin/components/networks/wsl.components.networks.basicinsights.php +69 -110
  117. includes/admin/components/networks/wsl.components.networks.setup.php +135 -101
  118. includes/admin/components/networks/wsl.components.networks.whyhello.php +12 -13
  119. includes/admin/components/users/index.php +1 -1
  120. includes/admin/components/users/wsl.components.users.list.php +149 -84
  121. includes/admin/components/users/wsl.components.users.profile.php +109 -40
  122. includes/admin/components/watchdog/index.php +214 -0
  123. includes/admin/wsl.admin.ui.php +105 -250
  124. includes/services/wsl.authentication.php +660 -734
  125. includes/services/wsl.mail.notification.php +4 -3
  126. includes/services/wsl.user.avatar.php +106 -39
  127. includes/services/wsl.user.data.php +238 -128
  128. includes/services/wsl.utilities.php +385 -0
  129. includes/settings/wsl.compatibilities.php +34 -86
  130. includes/settings/wsl.database.php +45 -42
  131. includes/settings/wsl.initialization.php +60 -209
  132. includes/settings/wsl.providers.php +76 -46
  133. includes/widgets/wsl.auth.widget.php +169 -315
  134. includes/widgets/wsl.complete.registration.php +71 -73
  135. includes/widgets/wsl.error.pages.php +285 -0
  136. includes/widgets/wsl.loading.screens.php +200 -0
  137. includes/widgets/wsl.notices.php +0 -67
  138. languages/readme.txt +6 -0
  139. languages/wordpress-social-login-ar.mo +0 -0
  140. languages/wordpress-social-login-ar.po +0 -1446
  141. languages/wordpress-social-login-de_DE.mo +0 -0
  142. languages/wordpress-social-login-de_DE.po +0 -1449
  143. languages/wordpress-social-login-es_ES.mo +0 -0
  144. languages/wordpress-social-login-es_ES.po +0 -1446
  145. languages/wordpress-social-login-fr_FR.mo +0 -0
  146. languages/wordpress-social-login-fr_FR.po +0 -1446
  147. languages/wordpress-social-login-he_IL.mo +0 -0
  148. languages/wordpress-social-login-he_IL.po +0 -1446
  149. languages/wordpress-social-login-ja.mo +0 -0
  150. languages/wordpress-social-login-ja.po +0 -1446
  151. languages/wordpress-social-login-ru_RU.mo +0 -0
  152. languages/wordpress-social-login-ru_RU.po +0 -1446
  153. languages/wordpress-social-login-zh_CN.mo +0 -0
  154. languages/wordpress-social-login-zh_CN.po +0 -827
assets/css/style.css CHANGED
@@ -1,15 +1,13 @@
1
- #wp-social-login-connect-with{
2
- font-weight: bold;
3
- }
 
 
4
 
5
- #wp-social-login-connect-options{
6
- padding:10px;
7
- }
8
 
9
- #wp-social-login-connect-options a{
10
- text-decoration: none;
11
- }
12
-
13
- #wp-social-login-connect-options img{
14
- border:0 none;
15
- }
1
+ /*
2
+ ! Notes:
3
+ ! Since WSL 2.2.1, all elements IDs generated by the widget are replaced by css classes :
4
+ ! #wp-social-login-connect-with replaced with .wp-social-login-connect-with
5
+ ! #wp-social-login-connect-options replaced with .wp-social-login-provider-list
6
 
7
+ ! Class .wsl_connect_with_provider will be replaced with .wp-social-login-provider .wp-social-login-provider-{provider}
 
 
8
 
9
+ ! Those depreciated selectors are kept for backward compatibility and will be removed.
10
+ */
11
+ .wp-social-login-provider-list { padding: 10px; }
12
+ .wp-social-login-provider-list a {text-decoration: none; }
13
+ .wp-social-login-provider-list img{ border: 0 none; }
 
 
assets/img/16x16/500px.png CHANGED
Binary file
assets/img/16x16/disqus.png ADDED
Binary file
assets/img/16x16/dribbble.png DELETED
Binary file
assets/img/16x16/flickr.png CHANGED
Binary file
assets/img/16x16/github.png CHANGED
Binary file
assets/img/16x16/hyves.png CHANGED
Binary file
assets/img/16x16/instagram.png CHANGED
Binary file
assets/img/16x16/latch.png ADDED
Binary file
assets/img/16x16/livejournal.png DELETED
Binary file
assets/img/16x16/mailru.png CHANGED
Binary file
assets/img/16x16/mixi.png CHANGED
Binary file
assets/img/16x16/mixx.png DELETED
Binary file
assets/img/16x16/myspace.png DELETED
Binary file
assets/img/16x16/odnoklassniki.png CHANGED
Binary file
assets/img/16x16/{openid-2.png → openid.png} RENAMED
File without changes
assets/img/16x16/orkut.png DELETED
Binary file
assets/img/16x16/pixelpin.png ADDED
Binary file
assets/img/16x16/{flickr-2.png → reddit.png} RENAMED
Binary file
assets/img/16x16/stackoverflow.png CHANGED
Binary file
assets/img/16x16/steam.png CHANGED
Binary file
assets/img/16x16/twitchtv.png CHANGED
Binary file
assets/img/16x16/vkontakte.png CHANGED
Binary file
assets/img/16x16/wordpress.png CHANGED
Binary file
assets/img/16x16/yandex.png CHANGED
Binary file
assets/img/32x32/icondock/disqus.png ADDED
Binary file
assets/img/32x32/icondock/gowalla.png DELETED
Binary file
assets/img/32x32/icondock/info.txt CHANGED
@@ -1,6 +1,10 @@
1
  Vector Social Media Icons
2
- by IconDock.com & Double-J Design (http://www.doublejdesign.co.uk)
3
 
4
  URL: http://icondock.com/free/vector-social-media-icons
5
 
6
- Note: the company logos in the icons are copyright of their respective owners.
 
 
 
 
1
  Vector Social Media Icons
2
+ by IconDock.com
3
 
4
  URL: http://icondock.com/free/vector-social-media-icons
5
 
6
+ Note: the company logos in the icons are copyright of their respective owners.
7
+
8
+ From http://icondock.com/free/vector-social-media-icons
9
+ "Free to use for whatever purposes. If you use these icons, an optional link to
10
+ http://icondock.com would be appreciated. Thank you."
assets/img/32x32/icondock/latch.png ADDED
Binary file
assets/img/32x32/icondock/myspace.png DELETED
Binary file
assets/img/32x32/icondock/paypal.png ADDED
Binary file
assets/img/32x32/icondock/pixelpin.png ADDED
Binary file
assets/img/32x32/icondock/reddit.png ADDED
Binary file
assets/img/32x32/wpzoom/disqus.png ADDED
Binary file
assets/img/32x32/wpzoom/gowalla.png DELETED
Binary file
assets/img/32x32/wpzoom/latch.png ADDED
Binary file
assets/img/32x32/wpzoom/myspace.png DELETED
Binary file
assets/img/32x32/wpzoom/{openid-2.png → openid.png} RENAMED
File without changes
assets/img/32x32/wpzoom/paypal.png ADDED
Binary file
assets/img/32x32/wpzoom/pixelpin.png ADDED
Binary file
assets/img/32x32/wpzoom/reddit.png ADDED
Binary file
assets/img/alert.png CHANGED
Binary file
assets/img/arr_right.png ADDED
Binary file
assets/js/connect.js DELETED
@@ -1,49 +0,0 @@
1
- /* Based on http://wordpress.org/extend/plugins/social-connect/ */
2
-
3
- (function($){
4
- $(function(){
5
- $(".wsl_connect_with_provider").click(function(){
6
- popupurl = $("#wsl_popup_base_url").val();
7
- provider = $(this).attr("data-provider");
8
-
9
- window.open(
10
- popupurl+"provider="+provider,
11
- "hybridauth_social_sing_on",
12
- "location=1,status=0,scrollbars=0,width=1000,height=600"
13
- );
14
- });
15
- });
16
- })(jQuery);
17
-
18
- window.wsl_wordpress_social_login = function(config) {
19
- jQuery('#loginform').unbind('submit.simplemodal-login');
20
-
21
- var form_id = '#loginform';
22
-
23
- if(!jQuery('#loginform').length) {
24
- // if register form exists, just use that
25
- if( jQuery('#registerform').length ) {
26
- form_id = '#registerform';
27
- }
28
- else {
29
- // create the login form
30
- var login_uri = jQuery("#wsl_login_form_uri").val();
31
-
32
- jQuery('body').append("<form id='loginform' method='post' action='" + login_uri + "'></form>");
33
- jQuery('#loginform').append("<input type='hidden' id='redirect_to' name='redirect_to' value='" + window.location.href + "'>");
34
- }
35
- }
36
-
37
- jQuery.each(config, function(key, value) {
38
- jQuery("#" + key).remove();
39
- jQuery(form_id).append("<input type='hidden' id='" + key + "' name='" + key + "' value='" + value + "'>");
40
- });
41
-
42
- if(jQuery("#simplemodal-login-form").length) {
43
- var current_url = window.location.href;
44
- jQuery("#redirect_to").remove();
45
- jQuery(form_id).append("<input type='hidden' id='redirect_to' name='redirect_to' value='" + current_url + "'>");
46
- }
47
-
48
- jQuery(form_id).submit();
49
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/script.js ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * WordPress Social Login
3
+ *
4
+ * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
5
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
6
+ */
7
+
8
+ /**
9
+ * Manage authentications via a popup
10
+ *
11
+ * Based on http://wordpress.org/extend/plugins/social-connect/
12
+ */
13
+
14
+ (function($){
15
+ $(function(){
16
+ //
17
+ $(document).on("click", "a.wsl_connect_with_provider", function(){
18
+ popupurl = $("#wsl_popup_base_url").val();
19
+ provider = $(this).attr("data-provider");
20
+
21
+ window.open( popupurl + "provider=" + provider, "hybridauth_social_sing_on", "location=1,status=0,scrollbars=0,width=1000,height=600" );
22
+ });
23
+ });
24
+ })(jQuery);
25
+
26
+ /**
27
+ *
28
+ */
29
+ window.wsl_wordpress_social_login = function(config){
30
+ jQuery('#loginform').unbind('submit.simplemodal-login');
31
+
32
+ var form_id = '#loginform';
33
+
34
+ if( ! jQuery('#loginform').length ){
35
+ // if register form exists, just use that
36
+ if( jQuery('#registerform').length ){
37
+ form_id = '#registerform';
38
+ }
39
+
40
+ // create the login form
41
+ else {
42
+ var login_uri = jQuery("#wsl_login_form_uri").val();
43
+
44
+ jQuery('body').append( "<form id='loginform' method='post' action='" + login_uri + "'></form>" );
45
+ jQuery('#loginform').append( "<input type='hidden' id='redirect_to' name='redirect_to' value='" + window.location.href + "'>" );
46
+ }
47
+ }
48
+
49
+ jQuery.each(config, function(key, value){
50
+ jQuery("#" + key).remove();
51
+
52
+ jQuery(form_id).append( "<input type='hidden' id='" + key + "' name='" + key + "' value='" + value + "'>" );
53
+ });
54
+
55
+ if( jQuery("#simplemodal-login-form").length ){
56
+ var current_url = window.location.href;
57
+
58
+ jQuery("#redirect_to").remove();
59
+
60
+ jQuery(form_id).append( "<input type='hidden' id='redirect_to' name='redirect_to' value='" + current_url + "'>" );
61
+ }
62
+
63
+ jQuery(form_id).submit();
64
+ }
hybridauth/Hybrid/Auth.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
@@ -14,7 +14,7 @@
14
  */
15
  class Hybrid_Auth
16
  {
17
- public static $version = "2.1.1-dev";
18
 
19
  public static $config = array();
20
 
@@ -68,10 +68,9 @@ class Hybrid_Auth
68
 
69
  # load hybridauth required files, a autoload is on the way...
70
  require_once $config["path_base"] . "Error.php";
 
71
  require_once $config["path_base"] . "Logger.php";
72
 
73
- require_once $config["path_base"] . "Storage.php";
74
-
75
  require_once $config["path_base"] . "Provider_Adapter.php";
76
 
77
  require_once $config["path_base"] . "Provider_Model.php";
@@ -84,13 +83,17 @@ class Hybrid_Auth
84
  require_once $config["path_base"] . "User_Contact.php";
85
  require_once $config["path_base"] . "User_Activity.php";
86
 
 
 
 
 
87
  // hash given config
88
  Hybrid_Auth::$config = $config;
89
 
90
- // instace of log mng
91
  Hybrid_Auth::$logger = new Hybrid_Logger();
92
 
93
- // instace of errors mng
94
  Hybrid_Auth::$error = new Hybrid_Error();
95
 
96
  // start session storage mng
@@ -161,7 +164,7 @@ class Hybrid_Auth
161
  /**
162
  * Hybrid storage system accessor
163
  *
164
- * Users sessions are stored using HybridAuth storage system ( HybridAuth 2.0 handle PHP Session only) and can be acessed directly by
165
  * Hybrid_Auth::storage()->get($key) to retrieves the data for the given key, or calling
166
  * Hybrid_Auth::storage()->set($key, $value) to store the key => $value set.
167
  */
@@ -249,7 +252,7 @@ class Hybrid_Auth
249
  if( ! $params ){
250
  $params = Hybrid_Auth::storage()->get( "hauth_session.$providerId.id_provider_params" );
251
 
252
- Hybrid_Logger::debug( "Hybrid_Auth::setup( $providerId ), no params given. Trying to get the sotred for this provider.", $params );
253
  }
254
 
255
  if( ! $params ){
@@ -258,11 +261,11 @@ class Hybrid_Auth
258
  Hybrid_Logger::info( "Hybrid_Auth::setup( $providerId ), no stored params found for this provider. Initialize a new one for new session" );
259
  }
260
 
261
- if( ! isset( $params["hauth_return_to"] ) ){
262
  $params["hauth_return_to"] = Hybrid_Auth::getCurrentUrl();
263
- }
264
 
265
- Hybrid_Logger::debug( "Hybrid_Auth::setup( $providerId ). HybridAuth Callback URL set to: ", $params["hauth_return_to"] );
 
266
 
267
  # instantiate a new IDProvider Adapter
268
  $provider = new Hybrid_Provider_Adapter();
@@ -385,14 +388,6 @@ class Hybrid_Auth
385
 
386
  $url = $protocol . $_SERVER['HTTP_HOST'];
387
 
388
- // use port if non default
389
- if( isset( $_SERVER['SERVER_PORT'] ) && strpos( $url, ':'.$_SERVER['SERVER_PORT'] ) === FALSE ) {
390
- $url .= ($protocol === 'http://' && $_SERVER['SERVER_PORT'] != 80 && !isset( $_SERVER['HTTP_X_FORWARDED_PROTO']))
391
- || ($protocol === 'https://' && $_SERVER['SERVER_PORT'] != 443 && !isset( $_SERVER['HTTP_X_FORWARDED_PROTO']))
392
- ? ':' . $_SERVER['SERVER_PORT']
393
- : '';
394
- }
395
-
396
  if( $request_uri ){
397
  $url .= $_SERVER['REQUEST_URI'];
398
  }
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
14
  */
15
  class Hybrid_Auth
16
  {
17
+ public static $version = "2.3.0-dev";
18
 
19
  public static $config = array();
20
 
68
 
69
  # load hybridauth required files, a autoload is on the way...
70
  require_once $config["path_base"] . "Error.php";
71
+ require_once $config["path_base"] . "Exception.php";
72
  require_once $config["path_base"] . "Logger.php";
73
 
 
 
74
  require_once $config["path_base"] . "Provider_Adapter.php";
75
 
76
  require_once $config["path_base"] . "Provider_Model.php";
83
  require_once $config["path_base"] . "User_Contact.php";
84
  require_once $config["path_base"] . "User_Activity.php";
85
 
86
+ if ( ! class_exists("Hybrid_Storage", false) ){
87
+ require_once $config["path_base"] . "Storage.php";
88
+ }
89
+
90
  // hash given config
91
  Hybrid_Auth::$config = $config;
92
 
93
+ // instance of log mng
94
  Hybrid_Auth::$logger = new Hybrid_Logger();
95
 
96
+ // instance of errors mng
97
  Hybrid_Auth::$error = new Hybrid_Error();
98
 
99
  // start session storage mng
164
  /**
165
  * Hybrid storage system accessor
166
  *
167
+ * Users sessions are stored using HybridAuth storage system ( HybridAuth 2.0 handle PHP Session only) and can be accessed directly by
168
  * Hybrid_Auth::storage()->get($key) to retrieves the data for the given key, or calling
169
  * Hybrid_Auth::storage()->set($key, $value) to store the key => $value set.
170
  */
252
  if( ! $params ){
253
  $params = Hybrid_Auth::storage()->get( "hauth_session.$providerId.id_provider_params" );
254
 
255
+ Hybrid_Logger::debug( "Hybrid_Auth::setup( $providerId ), no params given. Trying to get the stored for this provider.", $params );
256
  }
257
 
258
  if( ! $params ){
261
  Hybrid_Logger::info( "Hybrid_Auth::setup( $providerId ), no stored params found for this provider. Initialize a new one for new session" );
262
  }
263
 
264
+ if( is_array($params) && ! isset( $params["hauth_return_to"] ) ){
265
  $params["hauth_return_to"] = Hybrid_Auth::getCurrentUrl();
 
266
 
267
+ Hybrid_Logger::debug( "Hybrid_Auth::setup( $providerId ). HybridAuth Callback URL set to: ", $params["hauth_return_to"] );
268
+ }
269
 
270
  # instantiate a new IDProvider Adapter
271
  $provider = new Hybrid_Provider_Adapter();
388
 
389
  $url = $protocol . $_SERVER['HTTP_HOST'];
390
 
 
 
 
 
 
 
 
 
391
  if( $request_uri ){
392
  $url .= $_SERVER['REQUEST_URI'];
393
  }
hybridauth/Hybrid/Endpoint.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
@@ -119,8 +119,7 @@ class Hybrid_Endpoint {
119
  if( ! Hybrid_Auth::storage()->get( "hauth_session.$provider_id.hauth_endpoint" ) ) {
120
  Hybrid_Logger::error( "Endpoint: hauth_endpoint parameter is not defined on hauth_start, halt login process!" );
121
 
122
- header( "HTTP/1.0 404 Not Found" );
123
- die( "You cannot access this page directly." );
124
  }
125
 
126
  # define:hybrid.endpoint.php step 2.
@@ -130,8 +129,7 @@ class Hybrid_Endpoint {
130
  if( ! $hauth ) {
131
  Hybrid_Logger::error( "Endpoint: Invalid parameter on hauth_start!" );
132
 
133
- header( "HTTP/1.0 404 Not Found" );
134
- die( "Invalid parameter! Please return to the login page and try again." );
135
  }
136
 
137
  try {
@@ -141,7 +139,7 @@ class Hybrid_Endpoint {
141
  }
142
  catch ( Exception $e ) {
143
  Hybrid_Logger::error( "Exception:" . $e->getMessage(), $e );
144
- Hybrid_Error::setError( $e->getMessage(), $e->getCode(), $e->getTraceAsString(), $e );
145
 
146
  $hauth->returnToCallbackUrl();
147
  }
@@ -165,8 +163,7 @@ class Hybrid_Endpoint {
165
 
166
  $hauth->adapter->setUserUnconnected();
167
 
168
- header("HTTP/1.0 404 Not Found");
169
- die( "Invalid parameter! Please return to the login page and try again." );
170
  }
171
 
172
  try {
@@ -176,7 +173,7 @@ class Hybrid_Endpoint {
176
  }
177
  catch( Exception $e ){
178
  Hybrid_Logger::error( "Exception:" . $e->getMessage(), $e );
179
- Hybrid_Error::setError( $e->getMessage(), $e->getCode(), $e->getTraceAsString(), $e );
180
 
181
  $hauth->adapter->setUserUnconnected();
182
  }
@@ -194,23 +191,25 @@ class Hybrid_Endpoint {
194
 
195
  # Init Hybrid_Auth
196
  try {
197
- require_once realpath( dirname( __FILE__ ) ) . "/Storage.php";
 
 
198
 
199
  $storage = new Hybrid_Storage();
200
 
201
  // Check if Hybrid_Auth session already exist
202
- if ( ! $storage->config( "CONFIG" ) ) {
203
- header( "HTTP/1.0 404 Not Found" );
204
- die( "You cannot access this page directly." );
 
205
  }
206
 
207
  Hybrid_Auth::initialize( $storage->config( "CONFIG" ) );
208
  }
209
  catch ( Exception $e ){
210
- Hybrid_Logger::error( "Endpoint: Error while trying to init Hybrid_Auth" );
211
 
212
- header( "HTTP/1.0 404 Not Found" );
213
- die( "Oophs. Error!" );
214
  }
215
  }
216
  }
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
119
  if( ! Hybrid_Auth::storage()->get( "hauth_session.$provider_id.hauth_endpoint" ) ) {
120
  Hybrid_Logger::error( "Endpoint: hauth_endpoint parameter is not defined on hauth_start, halt login process!" );
121
 
122
+ throw new Hybrid_Exception( "You cannot access this page directly." );
 
123
  }
124
 
125
  # define:hybrid.endpoint.php step 2.
129
  if( ! $hauth ) {
130
  Hybrid_Logger::error( "Endpoint: Invalid parameter on hauth_start!" );
131
 
132
+ throw new Hybrid_Exception( "Invalid parameter! Please return to the login page and try again." );
 
133
  }
134
 
135
  try {
139
  }
140
  catch ( Exception $e ) {
141
  Hybrid_Logger::error( "Exception:" . $e->getMessage(), $e );
142
+ Hybrid_Error::setError( $e->getMessage(), $e->getCode(), $e->getTraceAsString(), $e->getPrevious() );
143
 
144
  $hauth->returnToCallbackUrl();
145
  }
163
 
164
  $hauth->adapter->setUserUnconnected();
165
 
166
+ throw new Hybrid_Exception( "Invalid parameter! Please return to the login page and try again." );
 
167
  }
168
 
169
  try {
173
  }
174
  catch( Exception $e ){
175
  Hybrid_Logger::error( "Exception:" . $e->getMessage(), $e );
176
+ Hybrid_Error::setError( $e->getMessage(), $e->getCode(), $e->getTraceAsString(), $e->getPrevious());
177
 
178
  $hauth->adapter->setUserUnconnected();
179
  }
191
 
192
  # Init Hybrid_Auth
193
  try {
194
+ if(!class_exists("Hybrid_Storage")){
195
+ require_once realpath( dirname( __FILE__ ) ) . "/Storage.php";
196
+ }
197
 
198
  $storage = new Hybrid_Storage();
199
 
200
  // Check if Hybrid_Auth session already exist
201
+ if ( ! $storage->config( "CONFIG" ) ) {
202
+ Hybrid_Logger::error( "Endpoint: Config storage not found when trying to init Hyrid_Auth. " );
203
+
204
+ throw new Hybrid_Exception( "You cannot access this page directly." );
205
  }
206
 
207
  Hybrid_Auth::initialize( $storage->config( "CONFIG" ) );
208
  }
209
  catch ( Exception $e ){
210
+ Hybrid_Logger::error( "Endpoint: Error while trying to init Hybrid_Auth: " . $e->getMessage());
211
 
212
+ throw new Hybrid_Exception( "Oophs. Error!" );
 
213
  }
214
  }
215
  }
hybridauth/Hybrid/Error.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
@@ -13,7 +13,12 @@
13
  class Hybrid_Error
14
  {
15
  /**
16
- * store error in session
 
 
 
 
 
17
  */
18
  public static function setError( $message, $code = NULL, $trace = NULL, $previous = NULL )
19
  {
@@ -27,7 +32,7 @@ class Hybrid_Error
27
  }
28
 
29
  /**
30
- * clear the last error
31
  */
32
  public static function clearError()
33
  {
@@ -67,7 +72,7 @@ class Hybrid_Error
67
  }
68
 
69
  /**
70
- * return string detailled error backtrace as string.
71
  */
72
  public static function getErrorTrace()
73
  {
@@ -75,7 +80,7 @@ class Hybrid_Error
75
  }
76
 
77
  /**
78
- * @return string detailled error backtrace as string.
79
  */
80
  public static function getErrorPrevious()
81
  {
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
13
  class Hybrid_Error
14
  {
15
  /**
16
+ * Store error in session
17
+ *
18
+ * @param String $message
19
+ * @param Number $code
20
+ * @param String $trace
21
+ * @param String $previous
22
  */
23
  public static function setError( $message, $code = NULL, $trace = NULL, $previous = NULL )
24
  {
32
  }
33
 
34
  /**
35
+ * Clear the last error
36
  */
37
  public static function clearError()
38
  {
72
  }
73
 
74
  /**
75
+ * return string detailed error backtrace as string.
76
  */
77
  public static function getErrorTrace()
78
  {
80
  }
81
 
82
  /**
83
+ * @return string detailed error backtrace as string.
84
  */
85
  public static function getErrorPrevious()
86
  {
hybridauth/Hybrid/Exception.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * HybridAuth
4
+ * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
+ */
7
+
8
+ /**
9
+ * Exception implementation
10
+ *
11
+ * The base Exception is extended to allow applications to handle exceptions from hybrid auth
12
+ * separately from general exceptions.
13
+ */
14
+ class Hybrid_Exception extends Exception
15
+ {
16
+ }
hybridauth/Hybrid/Logger.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
@@ -10,20 +10,35 @@
10
  */
11
  class Hybrid_Logger
12
  {
 
 
 
13
  function __construct()
14
  {
15
- // if debug mode is set to true, then check for the writable log file
16
- if ( Hybrid_Auth::$config["debug_mode"] ){
17
- if ( ! file_exists( Hybrid_Auth::$config["debug_file"] ) ){
18
- throw new Exception( "'debug_mode' is set to 'true', but the file " . Hybrid_Auth::$config['debug_file'] . " in 'debug_file' does not exit.", 1 );
19
- }
20
 
21
- if ( ! is_writable( Hybrid_Auth::$config["debug_file"] ) ){
 
 
 
 
 
 
 
 
 
 
22
  throw new Exception( "'debug_mode' is set to 'true', but the given log file path 'debug_file' is not a writable file.", 1 );
23
  }
24
  }
25
  }
26
-
 
 
 
 
 
27
  public static function debug( $message, $object = NULL )
28
  {
29
  if( Hybrid_Auth::$config["debug_mode"] ){
@@ -37,10 +52,14 @@ class Hybrid_Logger
37
  );
38
  }
39
  }
40
-
 
 
 
 
41
  public static function info( $message )
42
  {
43
- if( Hybrid_Auth::$config["debug_mode"] ){
44
  $datetime = new DateTime();
45
  $datetime = $datetime->format(DATE_ATOM);
46
 
@@ -51,10 +70,15 @@ class Hybrid_Logger
51
  );
52
  }
53
  }
54
-
 
 
 
 
 
55
  public static function error($message, $object = NULL)
56
  {
57
- if( Hybrid_Auth::$config["debug_mode"] ){
58
  $datetime = new DateTime();
59
  $datetime = $datetime->format(DATE_ATOM);
60
 
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
10
  */
11
  class Hybrid_Logger
12
  {
13
+ /**
14
+ * Constructor
15
+ */
16
  function __construct()
17
  {
18
+ // Hybrid_Auth::$config["debug_mode"] = true;
19
+ // Hybrid_Auth::$config["debug_file"] = 'C:/xampp/htdocs/hybridauth/hawp4/wp-content/plugins/wordpress-social-login/log/log.log';
 
 
 
20
 
21
+ // if debug mode is set to true, then check for the writable log file
22
+ if ( Hybrid_Auth::$config["debug_mode"] ){
23
+ if ( ! isset(Hybrid_Auth::$config["debug_file"]) ) {
24
+ throw new Exception( "'debug_mode' is set to 'true' but no log file path 'debug_file' is set.", 1 );
25
+ }
26
+ elseif ( ! file_exists( Hybrid_Auth::$config["debug_file"] ) && ! is_writable( Hybrid_Auth::$config["debug_file"]) ){
27
+ if ( ! touch( Hybrid_Auth::$config["debug_file"] ) ){
28
+ throw new Exception( "'debug_mode' is set to 'true', but the file " . Hybrid_Auth::$config['debug_file'] . " in 'debug_file' can not be created.", 1 );
29
+ }
30
+ }
31
+ elseif ( ! is_writable( Hybrid_Auth::$config["debug_file"] ) ){
32
  throw new Exception( "'debug_mode' is set to 'true', but the given log file path 'debug_file' is not a writable file.", 1 );
33
  }
34
  }
35
  }
36
+
37
+ /**
38
+ * Debug
39
+ * @param String $message
40
+ * @param Object $object
41
+ */
42
  public static function debug( $message, $object = NULL )
43
  {
44
  if( Hybrid_Auth::$config["debug_mode"] ){
52
  );
53
  }
54
  }
55
+
56
+ /**
57
+ * Info
58
+ * @param String $message
59
+ */
60
  public static function info( $message )
61
  {
62
+ if( in_array(Hybrid_Auth::$config["debug_mode"], array(true, 'info'), true) ){
63
  $datetime = new DateTime();
64
  $datetime = $datetime->format(DATE_ATOM);
65
 
70
  );
71
  }
72
  }
73
+
74
+ /**
75
+ * Error
76
+ * @param String $message Error message
77
+ * @param Object $object
78
+ */
79
  public static function error($message, $object = NULL)
80
  {
81
+ if(isset(Hybrid_Auth::$config["debug_mode"]) && in_array(Hybrid_Auth::$config["debug_mode"], array(true, 'info', 'error'), true) ){
82
  $datetime = new DateTime();
83
  $datetime = $datetime->format(DATE_ATOM);
84
 
hybridauth/Hybrid/Provider_Adapter.php CHANGED
@@ -1,15 +1,15 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
9
  * Hybrid_Provider_Adapter is the basic class which Hybrid_Auth will use
10
  * to connect users to a given provider.
11
  *
12
- * Basically Hybrid_Provider_Adapterwill create a bridge from your php
13
  * application to the provider api.
14
  *
15
  * Hybrid_Auth will automatically load Hybrid_Provider_Adapter and create
@@ -17,19 +17,34 @@
17
  */
18
  class Hybrid_Provider_Adapter
19
  {
20
- /* Provider ID (or unique name) */
 
 
 
21
  public $id = NULL ;
22
 
23
- /* Provider adapter specific config */
 
 
 
24
  public $config = NULL ;
25
 
26
- /* Provider adapter extra parameters */
27
- public $params = NULL ;
 
 
 
28
 
29
- /* Provider adapter wrapper path */
 
 
 
30
  public $wrapper = NULL ;
31
 
32
- /* Provider adapter instance */
 
 
 
33
  public $adapter = NULL ;
34
 
35
  // --------------------------------------------------------------------
@@ -40,7 +55,7 @@ class Hybrid_Provider_Adapter
40
  * @param string $id The id or name of the IDp
41
  * @param array $params (optional) required parameters by the adapter
42
  */
43
- function factory( $id, $params = NULL )
44
  {
45
  Hybrid_Logger::info( "Enter Hybrid_Provider_Adapter::factory( $id )" );
46
 
@@ -67,7 +82,9 @@ class Hybrid_Provider_Adapter
67
 
68
  # include the adapter wrapper
69
  if( isset( $this->config["wrapper"] ) && is_array( $this->config["wrapper"] ) ){
70
- require_once $this->config["wrapper"]["path"];
 
 
71
 
72
  if( ! class_exists( $this->config["wrapper"]["class"] ) ){
73
  throw new Exception( "Unable to load the adapter class.", 3 );
@@ -112,7 +129,21 @@ class Hybrid_Provider_Adapter
112
  $this->logout();
113
 
114
  # get hybridauth base url
115
- $HYBRID_AUTH_URL_BASE = Hybrid_Auth::$config["base_url"];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
 
117
  # we make use of session_id() as storage hash to identify the current user
118
  # using session_regenerate_id() will be a problem, but ..
@@ -130,9 +161,13 @@ class Hybrid_Provider_Adapter
130
  # auth.done required the IDp ID
131
  $this->params["login_done"] = $HYBRID_AUTH_URL_BASE . ( strpos( $HYBRID_AUTH_URL_BASE, '?' ) ? '&' : '?' ) . "hauth.done={$this->id}";
132
 
133
- Hybrid_Auth::storage()->set( "hauth_session.{$this->id}.hauth_return_to" , $this->params["hauth_return_to"] );
134
- Hybrid_Auth::storage()->set( "hauth_session.{$this->id}.hauth_endpoint" , $this->params["login_done"] );
135
- Hybrid_Auth::storage()->set( "hauth_session.{$this->id}.id_provider_params" , $this->params );
 
 
 
 
136
 
137
  // store config to be used by the end point
138
  Hybrid_Auth::storage()->config( "CONFIG", Hybrid_Auth::$config );
@@ -184,12 +219,16 @@ class Hybrid_Provider_Adapter
184
  throw new Exception( "Call to undefined function Hybrid_Providers_{$this->id}::$name()." );
185
  }
186
 
187
- if( count( $arguments ) ){
188
- return $this->adapter->$name( $arguments[0] );
189
- }
190
- else{
191
- return $this->adapter->$name();
192
- }
 
 
 
 
193
  }
194
 
195
  // --------------------------------------------------------------------
@@ -242,7 +281,7 @@ class Hybrid_Provider_Adapter
242
  // get the stored callback url
243
  $callback_url = Hybrid_Auth::storage()->get( "hauth_session.{$this->id}.hauth_return_to" );
244
 
245
- // remove some unneed'd stored data
246
  Hybrid_Auth::storage()->delete( "hauth_session.{$this->id}.hauth_return_to" );
247
  Hybrid_Auth::storage()->delete( "hauth_session.{$this->id}.hauth_endpoint" );
248
  Hybrid_Auth::storage()->delete( "hauth_session.{$this->id}.id_provider_params" );
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
9
  * Hybrid_Provider_Adapter is the basic class which Hybrid_Auth will use
10
  * to connect users to a given provider.
11
  *
12
+ * Basically Hybrid_Provider_Adapter will create a bridge from your php
13
  * application to the provider api.
14
  *
15
  * Hybrid_Auth will automatically load Hybrid_Provider_Adapter and create
17
  */
18
  class Hybrid_Provider_Adapter
19
  {
20
+ /**
21
+ * Provider ID (or unique name)
22
+ * @var Numeric/String
23
+ */
24
  public $id = NULL ;
25
 
26
+ /**
27
+ * Provider adapter specific config
28
+ * @var Array
29
+ */
30
  public $config = NULL ;
31
 
32
+ /**
33
+ * Provider adapter extra parameters
34
+ * @var array
35
+ */
36
+ public $params = array() ;
37
 
38
+ /**
39
+ * Provider adapter wrapper path
40
+ * @var String
41
+ */
42
  public $wrapper = NULL ;
43
 
44
+ /**
45
+ * Provider adapter instance
46
+ * @var object
47
+ */
48
  public $adapter = NULL ;
49
 
50
  // --------------------------------------------------------------------
55
  * @param string $id The id or name of the IDp
56
  * @param array $params (optional) required parameters by the adapter
57
  */
58
+ function factory( $id, $params = array() )
59
  {
60
  Hybrid_Logger::info( "Enter Hybrid_Provider_Adapter::factory( $id )" );
61
 
82
 
83
  # include the adapter wrapper
84
  if( isset( $this->config["wrapper"] ) && is_array( $this->config["wrapper"] ) ){
85
+ if (isset( $this->config["wrapper"]["path"] )) {
86
+ require_once $this->config["wrapper"]["path"];
87
+ }
88
 
89
  if( ! class_exists( $this->config["wrapper"]["class"] ) ){
90
  throw new Exception( "Unable to load the adapter class.", 3 );
129
  $this->logout();
130
 
131
  # get hybridauth base url
132
+ if (empty(Hybrid_Auth::$config["base_url"])) {
133
+ // the base url wasn't provide, so we must use the current
134
+ // url (which makes sense actually)
135
+ $url = empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off' ? 'http' : 'https';
136
+ $url .= '://' . $_SERVER['HTTP_HOST'];
137
+ $url .= $_SERVER['REQUEST_URI'];
138
+ $HYBRID_AUTH_URL_BASE = $url;
139
+ } else {
140
+ $HYBRID_AUTH_URL_BASE = Hybrid_Auth::$config["base_url"];
141
+ }
142
+
143
+ // make sure params is array
144
+ if( !is_array( $this->params ) ){
145
+ $this->params = array();
146
+ }
147
 
148
  # we make use of session_id() as storage hash to identify the current user
149
  # using session_regenerate_id() will be a problem, but ..
161
  # auth.done required the IDp ID
162
  $this->params["login_done"] = $HYBRID_AUTH_URL_BASE . ( strpos( $HYBRID_AUTH_URL_BASE, '?' ) ? '&' : '?' ) . "hauth.done={$this->id}";
163
 
164
+ if( isset( $this->params["hauth_return_to"] ) ){
165
+ Hybrid_Auth::storage()->set( "hauth_session.{$this->id}.hauth_return_to", $this->params["hauth_return_to"] );
166
+ }
167
+ if( isset( $this->params["login_done"] ) ){
168
+ Hybrid_Auth::storage()->set( "hauth_session.{$this->id}.hauth_endpoint" , $this->params["login_done"] );
169
+ }
170
+ Hybrid_Auth::storage()->set( "hauth_session.{$this->id}.id_provider_params" , $this->params );
171
 
172
  // store config to be used by the end point
173
  Hybrid_Auth::storage()->config( "CONFIG", Hybrid_Auth::$config );
219
  throw new Exception( "Call to undefined function Hybrid_Providers_{$this->id}::$name()." );
220
  }
221
 
222
+ $counter = count( $arguments );
223
+ if( $counter == 1 ){
224
+ return $this->adapter->$name( $arguments[0] );
225
+ }
226
+ elseif( $counter == 2 ){
227
+ return $this->adapter->$name( $arguments[0], $arguments[1] );
228
+ }
229
+ else{
230
+ return $this->adapter->$name();
231
+ }
232
  }
233
 
234
  // --------------------------------------------------------------------
281
  // get the stored callback url
282
  $callback_url = Hybrid_Auth::storage()->get( "hauth_session.{$this->id}.hauth_return_to" );
283
 
284
+ // remove some unneeded stored data
285
  Hybrid_Auth::storage()->delete( "hauth_session.{$this->id}.hauth_return_to" );
286
  Hybrid_Auth::storage()->delete( "hauth_session.{$this->id}.hauth_endpoint" );
287
  Hybrid_Auth::storage()->delete( "hauth_session.{$this->id}.id_provider_params" );
hybridauth/Hybrid/Provider_Model.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
@@ -21,27 +21,48 @@
21
  */
22
  abstract class Hybrid_Provider_Model
23
  {
24
- /* IDp ID (or unique name) */
 
 
 
25
  public $providerId = NULL;
26
 
27
- /* specific provider adapter config */
 
 
 
28
  public $config = NULL;
29
 
30
- /* provider extra parameters */
 
 
 
31
  public $params = NULL;
32
 
33
- /* Endpoint URL for that provider */
 
 
 
34
  public $endpoint = NULL;
35
 
36
- /* Hybrid_User obj, represents the current loggedin user */
 
 
 
37
  public $user = NULL;
38
 
39
- /* the provider api client (optional) */
 
 
 
40
  public $api = NULL;
41
 
42
  /**
43
- * common providers adapter constructor
44
- */
 
 
 
45
  function __construct( $providerId, $config, $params = NULL )
46
  {
47
  # init the IDp adapter parameters, get them from the cache if possible
@@ -77,7 +98,7 @@ abstract class Hybrid_Provider_Model
77
  * IDp wrappers initializer
78
  *
79
  * The main job of wrappers initializer is to performs (depend on the IDp api client it self):
80
- * - include some libs nedded by this provider,
81
  * - check IDp key and secret,
82
  * - set some needed parameters (stored in $this->params) by this IDp api client
83
  * - create and setup an instance of the IDp api client on $this->api
@@ -119,7 +140,7 @@ abstract class Hybrid_Provider_Model
119
  */
120
  function getUserProfile()
121
  {
122
- Hybrid_Logger::error( "HybridAuth do not provide users contats list for {$this->providerId} yet." );
123
 
124
  throw new Exception( "Provider does not support this feature.", 8 );
125
  }
@@ -131,7 +152,7 @@ abstract class Hybrid_Provider_Model
131
  */
132
  function getUserContacts()
133
  {
134
- Hybrid_Logger::error( "HybridAuth do not provide users contats list for {$this->providerId} yet." );
135
 
136
  throw new Exception( "Provider does not support this feature.", 8 );
137
  }
@@ -151,7 +172,7 @@ abstract class Hybrid_Provider_Model
151
  // --------------------------------------------------------------------
152
 
153
  /**
154
- * return the user activity stream
155
  */
156
  function setUserStatus( $status )
157
  {
@@ -160,6 +181,17 @@ abstract class Hybrid_Provider_Model
160
  throw new Exception( "Provider does not support this feature.", 8 );
161
  }
162
 
 
 
 
 
 
 
 
 
 
 
 
163
  // --------------------------------------------------------------------
164
 
165
  /**
@@ -222,7 +254,7 @@ abstract class Hybrid_Provider_Model
222
  // --------------------------------------------------------------------
223
 
224
  /**
225
- * clear all existen tokens for this provider
226
  */
227
  public function clearTokens()
228
  {
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
21
  */
22
  abstract class Hybrid_Provider_Model
23
  {
24
+ /**
25
+ * IDp ID (or unique name)
26
+ * @var Numeric/String
27
+ */
28
  public $providerId = NULL;
29
 
30
+ /**
31
+ * specific provider adapter config
32
+ * @var array
33
+ */
34
  public $config = NULL;
35
 
36
+ /**
37
+ * provider extra parameters
38
+ * @var array
39
+ */
40
  public $params = NULL;
41
 
42
+ /**
43
+ * Endpoint URL for that provider
44
+ * @var String
45
+ */
46
  public $endpoint = NULL;
47
 
48
+ /**
49
+ * Hybrid_User obj, represents the current loggedin user
50
+ * @var object
51
+ */
52
  public $user = NULL;
53
 
54
+ /**
55
+ * the provider api client (optional)
56
+ * @var String
57
+ */
58
  public $api = NULL;
59
 
60
  /**
61
+ * Common providers adapter constructor
62
+ * @param Numeric/String $providerId
63
+ * @param Array $config
64
+ * @param Array $params
65
+ */
66
  function __construct( $providerId, $config, $params = NULL )
67
  {
68
  # init the IDp adapter parameters, get them from the cache if possible
98
  * IDp wrappers initializer
99
  *
100
  * The main job of wrappers initializer is to performs (depend on the IDp api client it self):
101
+ * - include some libs needed by this provider,
102
  * - check IDp key and secret,
103
  * - set some needed parameters (stored in $this->params) by this IDp api client
104
  * - create and setup an instance of the IDp api client on $this->api
140
  */
141
  function getUserProfile()
142
  {
143
+ Hybrid_Logger::error( "HybridAuth do not provide users contacts list for {$this->providerId} yet." );
144
 
145
  throw new Exception( "Provider does not support this feature.", 8 );
146
  }
152
  */
153
  function getUserContacts()
154
  {
155
+ Hybrid_Logger::error( "HybridAuth do not provide users contacts list for {$this->providerId} yet." );
156
 
157
  throw new Exception( "Provider does not support this feature.", 8 );
158
  }
172
  // --------------------------------------------------------------------
173
 
174
  /**
175
+ * set user status
176
  */
177
  function setUserStatus( $status )
178
  {
181
  throw new Exception( "Provider does not support this feature.", 8 );
182
  }
183
 
184
+
185
+ /**
186
+ * return the user status
187
+ */
188
+ function getUserStatus( $statusid )
189
+ {
190
+ Hybrid_Logger::error( "HybridAuth do not provide user's status for {$this->providerId} yet." );
191
+
192
+ throw new Exception( "Provider does not support this feature.", 8 );
193
+ }
194
+
195
  // --------------------------------------------------------------------
196
 
197
  /**
254
  // --------------------------------------------------------------------
255
 
256
  /**
257
+ * clear all existent tokens for this provider
258
  */
259
  public function clearTokens()
260
  {
hybridauth/Hybrid/Provider_Model_OAuth1.php CHANGED
@@ -1,15 +1,15 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
9
  * To implement an OAuth 1 based service provider, Hybrid_Provider_Model_OAuth1
10
  * can be used to save the hassle of the authentication flow.
11
  *
12
- * Each class that inherit from Hybrid_Provider_Model_OAuth1 have to implemenent
13
  * at least 2 methods:
14
  * Hybrid_Providers_{provider_name}::initialize() to setup the provider api end-points urls
15
  * Hybrid_Providers_{provider_name}::getUserProfile() to grab the user profile
@@ -19,11 +19,21 @@
19
  */
20
  class Hybrid_Provider_Model_OAuth1 extends Hybrid_Provider_Model
21
  {
22
- public $request_tokens_raw = null; // request_tokens as recived from provider
23
- public $access_tokens_raw = null; // access_tokens as recived from provider
 
 
 
 
 
 
 
 
 
24
 
25
  /**
26
- * try to get the error message from provider api
 
27
  */
28
  function errorMessageByStatus( $code = null ) {
29
  $http_status_codes = ARRAY(
@@ -98,7 +108,7 @@ class Hybrid_Provider_Model_OAuth1 extends Hybrid_Provider_Model
98
  {
99
  $tokens = $this->api->requestToken( $this->endpoint );
100
 
101
- // request tokens as recived from provider
102
  $this->request_tokens_raw = $tokens;
103
 
104
  // check the last HTTP status code returned
@@ -134,7 +144,7 @@ class Hybrid_Provider_Model_OAuth1 extends Hybrid_Provider_Model
134
  // request an access token
135
  $tokens = $this->api->accessToken( $oauth_verifier );
136
 
137
- // access tokens as recived from provider
138
  $this->access_tokens_raw = $tokens;
139
 
140
  // check the last HTTP status code returned
@@ -147,11 +157,11 @@ class Hybrid_Provider_Model_OAuth1 extends Hybrid_Provider_Model
147
  throw new Exception( "Authentication failed! {$this->providerId} returned an invalid access token.", 5 );
148
  }
149
 
150
- // we no more need to store requet tokens
151
  $this->deleteToken( "request_token" );
152
  $this->deleteToken( "request_token_secret" );
153
 
154
- // sotre access_token for later user
155
  $this->token( "access_token" , $tokens['oauth_token'] );
156
  $this->token( "access_token_secret" , $tokens['oauth_token_secret'] );
157
 
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
9
  * To implement an OAuth 1 based service provider, Hybrid_Provider_Model_OAuth1
10
  * can be used to save the hassle of the authentication flow.
11
  *
12
+ * Each class that inherit from Hybrid_Provider_Model_OAuth1 have to implement
13
  * at least 2 methods:
14
  * Hybrid_Providers_{provider_name}::initialize() to setup the provider api end-points urls
15
  * Hybrid_Providers_{provider_name}::getUserProfile() to grab the user profile
19
  */
20
  class Hybrid_Provider_Model_OAuth1 extends Hybrid_Provider_Model
21
  {
22
+ /**
23
+ * request_tokens as received from provider
24
+ * @var object
25
+ */
26
+ public $request_tokens_raw = null;
27
+
28
+ /**
29
+ * access_tokens as received from provider
30
+ * @var object
31
+ */
32
+ public $access_tokens_raw = null;
33
 
34
  /**
35
+ * Try to get the error message from provider api
36
+ * @param Numeric $code
37
  */
38
  function errorMessageByStatus( $code = null ) {
39
  $http_status_codes = ARRAY(
108
  {
109
  $tokens = $this->api->requestToken( $this->endpoint );
110
 
111
+ // request tokens as received from provider
112
  $this->request_tokens_raw = $tokens;
113
 
114
  // check the last HTTP status code returned
144
  // request an access token
145
  $tokens = $this->api->accessToken( $oauth_verifier );
146
 
147
+ // access tokens as received from provider
148
  $this->access_tokens_raw = $tokens;
149
 
150
  // check the last HTTP status code returned
157
  throw new Exception( "Authentication failed! {$this->providerId} returned an invalid access token.", 5 );
158
  }
159
 
160
+ // we no more need to store request tokens
161
  $this->deleteToken( "request_token" );
162
  $this->deleteToken( "request_token_secret" );
163
 
164
+ // store access_token for later user
165
  $this->token( "access_token" , $tokens['oauth_token'] );
166
  $this->token( "access_token_secret" , $tokens['oauth_token_secret'] );
167
 
hybridauth/Hybrid/Provider_Model_OAuth2.php CHANGED
@@ -1,15 +1,15 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
9
  * To implement an OAuth 2 based service provider, Hybrid_Provider_Model_OAuth2
10
  * can be used to save the hassle of the authentication flow.
11
  *
12
- * Each class that inherit from Hybrid_Provider_Model_OAuth2 have to implemenent
13
  * at least 2 methods:
14
  * Hybrid_Providers_{provider_name}::initialize() to setup the provider api end-points urls
15
  * Hybrid_Providers_{provider_name}::getUserProfile() to grab the user profile
@@ -18,12 +18,16 @@
18
  * Hybrid/thirdparty/OAuth/OAuth2Client.php
19
  */
20
  class Hybrid_Provider_Model_OAuth2 extends Hybrid_Provider_Model
21
- {
22
- // default permissions
 
 
 
23
  public $scope = "";
24
 
25
  /**
26
- * try to get the error message from provider api
 
27
  */
28
  function errorMessageByStatus( $code = null ) {
29
  $http_status_codes = ARRAY(
@@ -53,6 +57,10 @@ class Hybrid_Provider_Model_OAuth2 extends Hybrid_Provider_Model
53
  */
54
  function initialize()
55
  {
 
 
 
 
56
  if ( ! $this->config["keys"]["id"] || ! $this->config["keys"]["secret"] ){
57
  throw new Exception( "Your application id and secret are required in order to connect to {$this->providerId}.", 4 );
58
  }
@@ -107,7 +115,7 @@ class Hybrid_Provider_Model_OAuth2 extends Hybrid_Provider_Model
107
  throw new Exception( "Authentication failed! {$this->providerId} returned an error: $error", 5 );
108
  }
109
 
110
- // try to authenicate user
111
  $code = (array_key_exists('code',$_REQUEST))?$_REQUEST['code']:"";
112
 
113
  try{
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
9
  * To implement an OAuth 2 based service provider, Hybrid_Provider_Model_OAuth2
10
  * can be used to save the hassle of the authentication flow.
11
  *
12
+ * Each class that inherit from Hybrid_Provider_Model_OAuth2 have to implement
13
  * at least 2 methods:
14
  * Hybrid_Providers_{provider_name}::initialize() to setup the provider api end-points urls
15
  * Hybrid_Providers_{provider_name}::getUserProfile() to grab the user profile
18
  * Hybrid/thirdparty/OAuth/OAuth2Client.php
19
  */
20
  class Hybrid_Provider_Model_OAuth2 extends Hybrid_Provider_Model
21
+ {
22
+ /**
23
+ * default permissions
24
+ * @var string
25
+ */
26
  public $scope = "";
27
 
28
  /**
29
+ * Try to get the error message from provider api
30
+ * @param Numeric $code
31
  */
32
  function errorMessageByStatus( $code = null ) {
33
  $http_status_codes = ARRAY(
57
  */
58
  function initialize()
59
  {
60
+ if ( ! isset( $this->config["keys"]["id"] ) || ! isset( $this->config["keys"]["secret"] ) ){
61
+ throw new Exception( "Your application id and secret are required in order to connect to {$this->providerId}.", 4 );
62
+ }
63
+
64
  if ( ! $this->config["keys"]["id"] || ! $this->config["keys"]["secret"] ){
65
  throw new Exception( "Your application id and secret are required in order to connect to {$this->providerId}.", 4 );
66
  }
115
  throw new Exception( "Authentication failed! {$this->providerId} returned an error: $error", 5 );
116
  }
117
 
118
+ // try to authenticate user
119
  $code = (array_key_exists('code',$_REQUEST))?$_REQUEST['code']:"";
120
 
121
  try{
hybridauth/Hybrid/Provider_Model_OpenID.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
9
  * To implement an OpenID based service provider, Hybrid_Provider_Model_OpenID
10
- * can be used to save the hassle of the authentication flow.
11
- *
12
  * Each class that inherit from Hybrid_Provider_Model_OAuth2 have only to define
13
  * the provider identifier : <code>public $openidIdentifier = ""; </code>
14
  *
@@ -17,13 +17,16 @@
17
  */
18
  class Hybrid_Provider_Model_OpenID extends Hybrid_Provider_Model
19
  {
20
- /* Openid provider identifier */
21
- public $openidIdentifier = "";
 
 
 
22
 
23
  // --------------------------------------------------------------------
24
 
25
  /**
26
- * adapter initializer
27
  */
28
  function initialize()
29
  {
@@ -32,18 +35,26 @@ class Hybrid_Provider_Model_OpenID extends Hybrid_Provider_Model
32
  }
33
 
34
  // include LightOpenID lib
35
- require_once Hybrid_Auth::$config["path_libraries"] . "OpenID/LightOpenID.php";
36
-
37
  // An error was occurring when proxy wasn't set. Not sure where proxy was meant to be set/initialized.
38
  Hybrid_Auth::$config['proxy'] = isset(Hybrid_Auth::$config['proxy'])?Hybrid_Auth::$config['proxy']:'';
39
-
40
- $this->api = new LightOpenID( parse_url( Hybrid_Auth::$config["base_url"], PHP_URL_HOST), Hybrid_Auth::$config["proxy"] );
 
 
 
 
 
 
 
 
41
  }
42
 
43
  // --------------------------------------------------------------------
44
 
45
  /**
46
- * begin login step
47
  */
48
  function loginBegin()
49
  {
@@ -53,7 +64,7 @@ class Hybrid_Provider_Model_OpenID extends Hybrid_Provider_Model
53
 
54
  $this->api->identity = $this->openidIdentifier;
55
  $this->api->returnUrl = $this->endpoint;
56
- $this->api->required = ARRAY(
57
  'namePerson/first' ,
58
  'namePerson/last' ,
59
  'namePerson/friendly' ,
@@ -67,11 +78,11 @@ class Hybrid_Provider_Model_OpenID extends Hybrid_Provider_Model
67
  'birthDate/birthYear' ,
68
 
69
  'person/gender' ,
70
- 'pref/language' ,
71
 
72
  'contact/postalCode/home',
73
  'contact/city/home' ,
74
- 'contact/country/home' ,
75
 
76
  'media/image/default' ,
77
  );
@@ -83,24 +94,24 @@ class Hybrid_Provider_Model_OpenID extends Hybrid_Provider_Model
83
  // --------------------------------------------------------------------
84
 
85
  /**
86
- * finish login step
87
  */
88
  function loginFinish()
89
  {
90
- # if user don't garant acess of their data to your site, halt with an Exception
91
  if( $this->api->mode == 'cancel'){
92
  throw new Exception( "Authentication failed! User has canceled authentication!", 5 );
93
  }
94
 
95
  # if something goes wrong
96
  if( ! $this->api->validate() ){
97
- throw new Exception( "Authentication failed. Invalid request recived!", 5 );
98
  }
99
 
100
- # fetch recived user data
101
  $response = $this->api->getAttributes();
102
 
103
- # sotre the user profile
104
  $this->user->profile->identifier = $this->api->identity;
105
 
106
  $this->user->profile->firstName = (array_key_exists("namePerson/first",$response))?$response["namePerson/first"]:"";
@@ -108,25 +119,21 @@ class Hybrid_Provider_Model_OpenID extends Hybrid_Provider_Model
108
  $this->user->profile->displayName = (array_key_exists("namePerson",$response))?$response["namePerson"]:"";
109
  $this->user->profile->email = (array_key_exists("contact/email",$response))?$response["contact/email"]:"";
110
  $this->user->profile->language = (array_key_exists("pref/language",$response))?$response["pref/language"]:"";
111
- $this->user->profile->country = (array_key_exists("contact/country/home",$response))?$response["contact/country/home"]:"";
112
- $this->user->profile->zip = (array_key_exists("contact/postalCode/home",$response))?$response["contact/postalCode/home"]:"";
113
- $this->user->profile->gender = (array_key_exists("person/gender",$response))?$response["person/gender"]:"";
114
- $this->user->profile->photoURL = (array_key_exists("media/image/default",$response))?$response["media/image/default"]:"";
115
-
116
- $this->user->profile->birthDay = (array_key_exists("birthDate/birthDay",$response))?$response["birthDate/birthDay"]:"";
117
- $this->user->profile->birthMonth = (array_key_exists("birthDate/birthMonth",$response))?$response["birthDate/birthMonth"]:"";
118
- $this->user->profile->birthYear = (array_key_exists("birthDate/birthDate",$response))?$response["birthDate/birthDate"]:"";
119
 
120
- if( ! $this->user->profile->displayName ) {
121
- $this->user->profile->displayName = trim( $this->user->profile->lastName . " " . $this->user->profile->firstName );
122
- }
123
 
124
- if( isset( $response['namePerson/friendly'] ) && ! empty( $response['namePerson/friendly'] ) && ! $this->user->profile->displayName ) {
125
- $this->user->profile->displayName = (array_key_exists("namePerson/friendly",$response))?$response["namePerson/friendly"]:"" ;
126
  }
127
 
128
  if( isset( $response['birthDate'] ) && ! empty( $response['birthDate'] ) && ! $this->user->profile->birthDay ) {
129
- list( $birthday_year, $birthday_month, $birthday_day ) = (array_key_exists('birthDate',$response))?$response['birthDate']:"";
130
 
131
  $this->user->profile->birthDay = (int) $birthday_day;
132
  $this->user->profile->birthMonth = (int) $birthday_month;
@@ -143,12 +150,12 @@ class Hybrid_Provider_Model_OpenID extends Hybrid_Provider_Model
143
 
144
  if( $this->user->profile->gender == "m" ){
145
  $this->user->profile->gender = "male";
146
- }
147
 
148
  // set user as logged in
149
  $this->setUserConnected();
150
 
151
- // with openid providers we get the user profile only once, so store it
152
  Hybrid_Auth::storage()->set( "hauth_session.{$this->providerId}.user", $this->user );
153
  }
154
 
@@ -165,7 +172,7 @@ class Hybrid_Provider_Model_OpenID extends Hybrid_Provider_Model
165
  // if not found
166
  if ( ! is_object( $this->user ) ){
167
  throw new Exception( "User profile request failed! User is not connected to {$this->providerId} or his session has expired.", 6 );
168
- }
169
 
170
  return $this->user->profile;
171
  }
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
9
  * To implement an OpenID based service provider, Hybrid_Provider_Model_OpenID
10
+ * can be used to save the hassle of the authentication flow.
11
+ *
12
  * Each class that inherit from Hybrid_Provider_Model_OAuth2 have only to define
13
  * the provider identifier : <code>public $openidIdentifier = ""; </code>
14
  *
17
  */
18
  class Hybrid_Provider_Model_OpenID extends Hybrid_Provider_Model
19
  {
20
+ /**
21
+ * Openid provider identifier
22
+ * @var string
23
+ */
24
+ public $openidIdentifier = "";
25
 
26
  // --------------------------------------------------------------------
27
 
28
  /**
29
+ * adapter initializer
30
  */
31
  function initialize()
32
  {
35
  }
36
 
37
  // include LightOpenID lib
38
+ require_once Hybrid_Auth::$config["path_libraries"] . "OpenID/LightOpenID.php";
39
+
40
  // An error was occurring when proxy wasn't set. Not sure where proxy was meant to be set/initialized.
41
  Hybrid_Auth::$config['proxy'] = isset(Hybrid_Auth::$config['proxy'])?Hybrid_Auth::$config['proxy']:'';
42
+
43
+ $hostPort = parse_url( Hybrid_Auth::$config["base_url"], PHP_URL_PORT);
44
+ $hostUrl = parse_url( Hybrid_Auth::$config["base_url"], PHP_URL_HOST);
45
+
46
+ // Check for port on url
47
+ if($hostPort) {
48
+ $hostUrl .= ':'.$hostPort;
49
+ }
50
+
51
+ $this->api = new LightOpenID( $hostUrl, Hybrid_Auth::$config["proxy"] );
52
  }
53
 
54
  // --------------------------------------------------------------------
55
 
56
  /**
57
+ * begin login step
58
  */
59
  function loginBegin()
60
  {
64
 
65
  $this->api->identity = $this->openidIdentifier;
66
  $this->api->returnUrl = $this->endpoint;
67
+ $this->api->required = ARRAY(
68
  'namePerson/first' ,
69
  'namePerson/last' ,
70
  'namePerson/friendly' ,
78
  'birthDate/birthYear' ,
79
 
80
  'person/gender' ,
81
+ 'pref/language' ,
82
 
83
  'contact/postalCode/home',
84
  'contact/city/home' ,
85
+ 'contact/country/home' ,
86
 
87
  'media/image/default' ,
88
  );
94
  // --------------------------------------------------------------------
95
 
96
  /**
97
+ * finish login step
98
  */
99
  function loginFinish()
100
  {
101
+ # if user don't grant access of their data to your site, halt with an Exception
102
  if( $this->api->mode == 'cancel'){
103
  throw new Exception( "Authentication failed! User has canceled authentication!", 5 );
104
  }
105
 
106
  # if something goes wrong
107
  if( ! $this->api->validate() ){
108
+ throw new Exception( "Authentication failed. Invalid request received!", 5 );
109
  }
110
 
111
+ # fetch received user data
112
  $response = $this->api->getAttributes();
113
 
114
+ # store the user profile
115
  $this->user->profile->identifier = $this->api->identity;
116
 
117
  $this->user->profile->firstName = (array_key_exists("namePerson/first",$response))?$response["namePerson/first"]:"";
119
  $this->user->profile->displayName = (array_key_exists("namePerson",$response))?$response["namePerson"]:"";
120
  $this->user->profile->email = (array_key_exists("contact/email",$response))?$response["contact/email"]:"";
121
  $this->user->profile->language = (array_key_exists("pref/language",$response))?$response["pref/language"]:"";
122
+ $this->user->profile->country = (array_key_exists("contact/country/home",$response))?$response["contact/country/home"]:"";
123
+ $this->user->profile->zip = (array_key_exists("contact/postalCode/home",$response))?$response["contact/postalCode/home"]:"";
124
+ $this->user->profile->gender = (array_key_exists("person/gender",$response))?$response["person/gender"]:"";
125
+ $this->user->profile->photoURL = (array_key_exists("media/image/default",$response))?$response["media/image/default"]:"";
 
 
 
 
126
 
127
+ $this->user->profile->birthDay = (array_key_exists("birthDate/birthDay",$response))?$response["birthDate/birthDay"]:"";
128
+ $this->user->profile->birthMonth = (array_key_exists("birthDate/birthMonth",$response))?$response["birthDate/birthMonth"]:"";
129
+ $this->user->profile->birthYear = (array_key_exists("birthDate/birthDate",$response))?$response["birthDate/birthDate"]:"";
130
 
131
+ if( isset( $response['namePerson/friendly'] ) && ! empty( $response['namePerson/friendly'] ) && ! $this->user->profile->displayName ) {
132
+ $this->user->profile->displayName = $response["namePerson/friendly"];
133
  }
134
 
135
  if( isset( $response['birthDate'] ) && ! empty( $response['birthDate'] ) && ! $this->user->profile->birthDay ) {
136
+ list( $birthday_year, $birthday_month, $birthday_day ) = $response['birthDate'];
137
 
138
  $this->user->profile->birthDay = (int) $birthday_day;
139
  $this->user->profile->birthMonth = (int) $birthday_month;
150
 
151
  if( $this->user->profile->gender == "m" ){
152
  $this->user->profile->gender = "male";
153
+ }
154
 
155
  // set user as logged in
156
  $this->setUserConnected();
157
 
158
+ // with openid providers we get the user profile only once, so store it
159
  Hybrid_Auth::storage()->set( "hauth_session.{$this->providerId}.user", $this->user );
160
  }
161
 
172
  // if not found
173
  if ( ! is_object( $this->user ) ){
174
  throw new Exception( "User profile request failed! User is not connected to {$this->providerId} or his session has expired.", 6 );
175
+ }
176
 
177
  return $this->user->profile;
178
  }
hybridauth/Hybrid/Providers/Disqus.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * HybridAuth
4
+ * http://hybridauth.sourceforge.net | https://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014 HybridAuth authors | hybridauth.sourceforge.net/licenses.html
6
+ */
7
+
8
+ /**
9
+ * Hybrid_Providers_Disqus
10
+ */
11
+ class Hybrid_Providers_Disqus extends Hybrid_Provider_Model_OAuth2
12
+ {
13
+ // default permissions
14
+ // (read,email) => public info and email
15
+ public $scope = "read,email";
16
+
17
+ /**
18
+ * IDp wrappers initializer
19
+ */
20
+ function initialize()
21
+ {
22
+ parent::initialize();
23
+
24
+ // Provider api end-points
25
+ $this->api->api_base_url = "https://disqus.com/api/3.0/";
26
+ $this->api->authorize_url = "https://disqus.com/api/oauth/2.0/authorize";
27
+ $this->api->token_url = "https://disqus.com/api/oauth/2.0/access_token/";
28
+
29
+ }
30
+
31
+ /**
32
+ * load the user profile from the IDp api client
33
+ */
34
+ function getUserProfile()
35
+ {
36
+ $data = $this->api->get( "users/details" , array('api_key' => $this->api->client_id, 'api_secret' => $this->api->client_secret));
37
+
38
+ if ( ! isset( $data->code ) ){
39
+ throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
40
+ } else if ( $data->code != 0 ){
41
+ throw new Exception( "User profile request failed! {$this->providerId} returned error code".$data->code.".", 6 );
42
+ }
43
+
44
+ $this->user->profile->identifier = @ $data->response->id;
45
+ $this->user->profile->displayName = @ $data->response->name;
46
+ $this->user->profile->description = @ $data->response->bio;
47
+ $this->user->profile->photoURL = @ $data->response->avatar->permalink;
48
+ $this->user->profile->profileURL = @ $data->response->profileUrl;
49
+ $this->user->profile->email = @ $data->response->email;
50
+ $this->user->profile->region = @ $data->response->location;
51
+ $this->user->profile->description = @ $data->response->about;
52
+
53
+ if( ! $this->user->profile->displayName ){
54
+ $this->user->profile->displayName = @ $data->response->username;
55
+ }
56
+
57
+ return $this->user->profile;
58
+ }
59
+ }
hybridauth/Hybrid/Providers/Facebook.php CHANGED
@@ -14,8 +14,8 @@
14
  */
15
  class Hybrid_Providers_Facebook extends Hybrid_Provider_Model
16
  {
17
- // default permissions, and alot of them. You can change them from the configuration by setting the scope to what you want/need
18
- public $scope = "email, user_about_me, user_birthday, user_hometown, user_website, read_stream, offline_access, publish_stream, read_friendlists";
19
 
20
  /**
21
  * IDp wrappers initializer
@@ -30,10 +30,13 @@ class Hybrid_Providers_Facebook extends Hybrid_Provider_Model
30
  require_once Hybrid_Auth::$config["path_libraries"] . "Facebook/base_facebook.php";
31
  require_once Hybrid_Auth::$config["path_libraries"] . "Facebook/facebook.php";
32
  }
 
 
 
 
33
 
34
- BaseFacebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;
35
-
36
- $this->api = new Facebook( ARRAY( 'appId' => $this->config["keys"]["id"], 'secret' => $this->config["keys"]["secret"] ) );
37
 
38
  if ( $this->token("access_token") ) {
39
  $this->api->setAccessToken( $this->token("access_token") );
@@ -59,14 +62,29 @@ class Hybrid_Providers_Facebook extends Hybrid_Provider_Model
59
  function loginBegin()
60
  {
61
  $parameters = array("scope" => $this->scope, "redirect_uri" => $this->endpoint, "display" => "page");
62
- $optionals = array("scope", "redirect_uri", "display");
63
 
64
  foreach ($optionals as $parameter){
65
  if( isset( $this->config[$parameter] ) && ! empty( $this->config[$parameter] ) ){
66
  $parameters[$parameter] = $this->config[$parameter];
 
 
 
 
 
 
 
 
67
  }
68
  }
69
 
 
 
 
 
 
 
 
70
  // get the login url
71
  $url = $this->api->getLoginUrl( $parameters );
72
 
@@ -84,6 +102,35 @@ class Hybrid_Providers_Facebook extends Hybrid_Provider_Model
84
  throw new Exception( "Authentication failed! The user denied your request.", 5 );
85
  }
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  // try to get the UID of the connected user from fb, should be > 0
88
  if ( ! $this->api->getUser() ){
89
  throw new Exception( "Authentication failed! {$this->providerId} returned an invalid user id.", 5 );
@@ -119,25 +166,36 @@ class Hybrid_Providers_Facebook extends Hybrid_Provider_Model
119
  throw new Exception( "User profile request failed! {$this->providerId} returned an error: $e", 6 );
120
  }
121
 
122
- // if the provider identifier is not recived, we assume the auth has failed
123
  if ( ! isset( $data["id"] ) ){
124
  throw new Exception( "User profile request failed! {$this->providerId} api returned an invalid response.", 6 );
125
  }
126
 
127
  # store the user profile.
128
  $this->user->profile->identifier = (array_key_exists('id',$data))?$data['id']:"";
 
129
  $this->user->profile->displayName = (array_key_exists('name',$data))?$data['name']:"";
130
  $this->user->profile->firstName = (array_key_exists('first_name',$data))?$data['first_name']:"";
131
  $this->user->profile->lastName = (array_key_exists('last_name',$data))?$data['last_name']:"";
132
  $this->user->profile->photoURL = "https://graph.facebook.com/" . $this->user->profile->identifier . "/picture?width=150&height=150";
 
133
  $this->user->profile->profileURL = (array_key_exists('link',$data))?$data['link']:"";
134
  $this->user->profile->webSiteURL = (array_key_exists('website',$data))?$data['website']:"";
135
  $this->user->profile->gender = (array_key_exists('gender',$data))?$data['gender']:"";
136
- $this->user->profile->description = (array_key_exists('bio',$data))?$data['bio']:"";
 
137
  $this->user->profile->email = (array_key_exists('email',$data))?$data['email']:"";
138
  $this->user->profile->emailVerified = (array_key_exists('email',$data))?$data['email']:"";
139
  $this->user->profile->region = (array_key_exists("hometown",$data)&&array_key_exists("name",$data['hometown']))?$data['hometown']["name"]:"";
140
-
 
 
 
 
 
 
 
 
141
  if( array_key_exists('birthday',$data) ) {
142
  list($birthday_month, $birthday_day, $birthday_year) = explode( "/", $data['birthday'] );
143
 
@@ -149,30 +207,67 @@ class Hybrid_Providers_Facebook extends Hybrid_Provider_Model
149
  return $this->user->profile;
150
  }
151
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  /**
153
  * load the user contacts
154
  */
155
  function getUserContacts()
156
  {
157
- try{
158
- $response = $this->api->api('/me/friends');
159
- }
160
- catch( FacebookApiException $e ){
161
- throw new Exception( "User contacts request failed! {$this->providerId} returned an error: $e" );
162
- }
163
-
164
- if( ! $response || ! count( $response["data"] ) ){
165
- return ARRAY();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  }
 
167
 
168
  $contacts = ARRAY();
169
 
170
- foreach( $response["data"] as $item ){
171
  $uc = new Hybrid_User_Contact();
172
 
173
  $uc->identifier = (array_key_exists("id",$item))?$item["id"]:"";
174
  $uc->displayName = (array_key_exists("name",$item))?$item["name"]:"";
175
- $uc->profileURL = "https://www.facebook.com/profile.php?id=" . $uc->identifier;
176
  $uc->photoURL = "https://graph.facebook.com/" . $uc->identifier . "/picture?width=150&height=150";
177
 
178
  $contacts[] = $uc;
@@ -181,27 +276,96 @@ class Hybrid_Providers_Facebook extends Hybrid_Provider_Model
181
  return $contacts;
182
  }
183
 
184
- /**
185
- * update user status
186
- */
187
- function setUserStatus( $status )
188
- {
189
- $parameters = array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
 
191
- if( is_array( $status ) ){
192
- $parameters = $status;
193
- }
194
- else{
195
- $parameters["message"] = $status;
196
- }
197
 
198
- try{
199
- $response = $this->api->api( "/me/feed", "post", $parameters );
200
- }
 
 
 
 
 
201
  catch( FacebookApiException $e ){
202
- throw new Exception( "Update user status failed! {$this->providerId} returned an error: $e" );
203
  }
204
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
 
206
  /**
207
  * load the user latest activity
14
  */
15
  class Hybrid_Providers_Facebook extends Hybrid_Provider_Model
16
  {
17
+ // default permissions, and a lot of them. You can change them from the configuration by setting the scope to what you want/need
18
+ public $scope = "email, user_about_me, user_birthday, user_hometown, user_website, read_stream, publish_actions, read_friendlists";
19
 
20
  /**
21
  * IDp wrappers initializer
30
  require_once Hybrid_Auth::$config["path_libraries"] . "Facebook/base_facebook.php";
31
  require_once Hybrid_Auth::$config["path_libraries"] . "Facebook/facebook.php";
32
  }
33
+
34
+ if ( isset ( Hybrid_Auth::$config["proxy"] ) ) {
35
+ BaseFacebook::$CURL_OPTS[CURLOPT_PROXY] = Hybrid_Auth::$config["proxy"];
36
+ }
37
 
38
+ $trustForwarded = isset( $this->config['trustForwarded'] ) ? (bool) $this->config['trustForwarded'] : false;
39
+ $this->api = new Facebook( ARRAY( 'appId' => $this->config["keys"]["id"], 'secret' => $this->config["keys"]["secret"], 'trustForwarded' => $trustForwarded ) );
 
40
 
41
  if ( $this->token("access_token") ) {
42
  $this->api->setAccessToken( $this->token("access_token") );
62
  function loginBegin()
63
  {
64
  $parameters = array("scope" => $this->scope, "redirect_uri" => $this->endpoint, "display" => "page");
65
+ $optionals = array("scope", "redirect_uri", "display", "auth_type");
66
 
67
  foreach ($optionals as $parameter){
68
  if( isset( $this->config[$parameter] ) && ! empty( $this->config[$parameter] ) ){
69
  $parameters[$parameter] = $this->config[$parameter];
70
+
71
+ //If the auth_type parameter is used, we need to generate a nonce and include it as a parameter
72
+ if($parameter == "auth_type"){
73
+ $nonce = md5(uniqid(mt_rand(), true));
74
+ $parameters['auth_nonce'] = $nonce;
75
+
76
+ Hybrid_Auth::storage()->set('fb_auth_nonce', $nonce);
77
+ }
78
  }
79
  }
80
 
81
+ if( isset( $this->config[ 'force' ] ) && $this->config[ 'force' ] === true ){
82
+ $parameters[ 'auth_type' ] = 'reauthenticate';
83
+ $parameters[ 'auth_nonce' ] = md5( uniqid( mt_rand(), true ) );
84
+
85
+ Hybrid_Auth::storage()->set( 'fb_auth_nonce', $parameters[ 'auth_nonce' ] );
86
+ }
87
+
88
  // get the login url
89
  $url = $this->api->getLoginUrl( $parameters );
90
 
102
  throw new Exception( "Authentication failed! The user denied your request.", 5 );
103
  }
104
 
105
+ // in case we are using iOS/Facebook reverse authentication
106
+ if(isset($_REQUEST['access_token'])){
107
+ $this->token("access_token", $_REQUEST['access_token'] );
108
+ $this->api->setAccessToken( $this->token("access_token") );
109
+ $this->api->setExtendedAccessToken();
110
+ $access_token = $this->api->getAccessToken();
111
+
112
+ if( $access_token ){
113
+ $this->token("access_token", $access_token );
114
+ $this->api->setAccessToken( $access_token );
115
+ }
116
+
117
+ $this->api->setAccessToken( $this->token("access_token") );
118
+ }
119
+
120
+
121
+ // if auth_type is used, then an auth_nonce is passed back, and we need to check it.
122
+ if(isset($_REQUEST['auth_nonce'])){
123
+
124
+ $nonce = Hybrid_Auth::storage()->get('fb_auth_nonce');
125
+
126
+ //Delete the nonce
127
+ Hybrid_Auth::storage()->delete('fb_auth_nonce');
128
+
129
+ if($_REQUEST['auth_nonce'] != $nonce){
130
+ throw new Exception( "Authentication failed! Invalid nonce used for reauthentication.", 5 );
131
+ }
132
+ }
133
+
134
  // try to get the UID of the connected user from fb, should be > 0
135
  if ( ! $this->api->getUser() ){
136
  throw new Exception( "Authentication failed! {$this->providerId} returned an invalid user id.", 5 );
166
  throw new Exception( "User profile request failed! {$this->providerId} returned an error: $e", 6 );
167
  }
168
 
169
+ // if the provider identifier is not received, we assume the auth has failed
170
  if ( ! isset( $data["id"] ) ){
171
  throw new Exception( "User profile request failed! {$this->providerId} api returned an invalid response.", 6 );
172
  }
173
 
174
  # store the user profile.
175
  $this->user->profile->identifier = (array_key_exists('id',$data))?$data['id']:"";
176
+ $this->user->profile->username = (array_key_exists('username',$data))?$data['username']:"";
177
  $this->user->profile->displayName = (array_key_exists('name',$data))?$data['name']:"";
178
  $this->user->profile->firstName = (array_key_exists('first_name',$data))?$data['first_name']:"";
179
  $this->user->profile->lastName = (array_key_exists('last_name',$data))?$data['last_name']:"";
180
  $this->user->profile->photoURL = "https://graph.facebook.com/" . $this->user->profile->identifier . "/picture?width=150&height=150";
181
+ $this->user->profile->coverInfoURL = "https://graph.facebook.com/" . $this->user->profile->identifier . "?fields=cover";
182
  $this->user->profile->profileURL = (array_key_exists('link',$data))?$data['link']:"";
183
  $this->user->profile->webSiteURL = (array_key_exists('website',$data))?$data['website']:"";
184
  $this->user->profile->gender = (array_key_exists('gender',$data))?$data['gender']:"";
185
+ $this->user->profile->language = (array_key_exists('locale',$data))?$data['locale']:"";
186
+ $this->user->profile->description = (array_key_exists('about',$data))?$data['about']:"";
187
  $this->user->profile->email = (array_key_exists('email',$data))?$data['email']:"";
188
  $this->user->profile->emailVerified = (array_key_exists('email',$data))?$data['email']:"";
189
  $this->user->profile->region = (array_key_exists("hometown",$data)&&array_key_exists("name",$data['hometown']))?$data['hometown']["name"]:"";
190
+
191
+ if(!empty($this->user->profile->region )){
192
+ $regionArr = explode(',',$this->user->profile->region );
193
+ if(count($regionArr) > 1){
194
+ $this->user->profile->city = trim($regionArr[0]);
195
+ $this->user->profile->country = trim($regionArr[1]);
196
+ }
197
+ }
198
+
199
  if( array_key_exists('birthday',$data) ) {
200
  list($birthday_month, $birthday_day, $birthday_year) = explode( "/", $data['birthday'] );
201
 
207
  return $this->user->profile;
208
  }
209
 
210
+ /**
211
+ * Attempt to retrieve the url to the cover image given the coverInfoURL
212
+ *
213
+ * @param string $coverInfoURL coverInfoURL variable
214
+ * @retval string url to the cover image OR blank string
215
+ */
216
+ function getCoverURL($coverInfoURL)
217
+ {
218
+ try {
219
+ $headers = get_headers($coverInfoURL);
220
+ if(substr($headers[0], 9, 3) != "404") {
221
+ $coverOBJ = json_decode(file_get_contents($coverInfoURL));
222
+ if(array_key_exists('cover', $coverOBJ)) {
223
+ return $coverOBJ->cover->source;
224
+ }
225
+ }
226
+ } catch (Exception $e) { }
227
+
228
+ return "";
229
+ }
230
+
231
  /**
232
  * load the user contacts
233
  */
234
  function getUserContacts()
235
  {
236
+ $apiCall = '?fields=link,name';
237
+ $returnedContacts = array();
238
+ $pagedList = false;
239
+
240
+ do {
241
+ try{
242
+ $response = $this->api->api('/me/friends' . $apiCall);
243
+ }
244
+ catch( FacebookApiException $e ){
245
+ throw new Exception( 'User contacts request failed! {$this->providerId} returned an error: $e' );
246
+ }
247
+
248
+ // Prepare the next call if paging links have been returned
249
+ if (array_key_exists('paging', $response) && array_key_exists('next', $response['paging'])) {
250
+ $pagedList = true;
251
+ $next_page = explode('friends', $response['paging']['next']);
252
+ $apiCall = $next_page[1];
253
+ }
254
+ else{
255
+ $pagedList = false;
256
+ }
257
+
258
+ // Add the new page contacts
259
+ $returnedContacts = array_merge($returnedContacts, $response['data']);
260
  }
261
+ while ($pagedList == true);
262
 
263
  $contacts = ARRAY();
264
 
265
+ foreach( $returnedContacts as $item ){
266
  $uc = new Hybrid_User_Contact();
267
 
268
  $uc->identifier = (array_key_exists("id",$item))?$item["id"]:"";
269
  $uc->displayName = (array_key_exists("name",$item))?$item["name"]:"";
270
+ $uc->profileURL = (array_key_exists("link",$item))?$item["link"]:"https://www.facebook.com/profile.php?id=" . $uc->identifier;
271
  $uc->photoURL = "https://graph.facebook.com/" . $uc->identifier . "/picture?width=150&height=150";
272
 
273
  $contacts[] = $uc;
276
  return $contacts;
277
  }
278
 
279
+ /**
280
+ * update user status
281
+ *
282
+ * @param string $pageid (optional) User page id
283
+ */
284
+ function setUserStatus( $status, $pageid = null )
285
+ {
286
+ if( !is_array( $status ) ){
287
+ $status = array( 'message' => $status );
288
+ }
289
+
290
+ if( is_null( $pageid ) ){
291
+ $pageid = 'me';
292
+
293
+ // if post on page, get access_token page
294
+ }else{
295
+ $access_token = null;
296
+ foreach( $this->getUserPages( true ) as $p ){
297
+ if( isset( $p[ 'id' ] ) && intval( $p['id'] ) == intval( $pageid ) ){
298
+ $access_token = $p[ 'access_token' ];
299
+ break;
300
+ }
301
+ }
302
+
303
+ if( is_null( $access_token ) ){
304
+ throw new Exception( "Update user page failed, page not found or not writable!" );
305
+ }
306
+
307
+ $status[ 'access_token' ] = $access_token;
308
+ }
309
+
310
+ try{
311
+ $response = $this->api->api( '/' . $pageid . '/feed', 'post', $status );
312
+ }
313
+ catch( FacebookApiException $e ){
314
+ throw new Exception( "Update user status failed! {$this->providerId} returned an error: $e" );
315
+ }
316
+
317
+ return $response;
318
+ }
319
 
 
 
 
 
 
 
320
 
321
+ /**
322
+ * get user status
323
+ */
324
+ function getUserStatus( $postid )
325
+ {
326
+ try{
327
+ $postinfo = $this->api->api( "/" . $postid );
328
+ }
329
  catch( FacebookApiException $e ){
330
+ throw new Exception( "Cannot retrieve user status! {$this->providerId} returned an error: $e" );
331
  }
332
+
333
+ return $postinfo;
334
+ }
335
+
336
+
337
+ /**
338
+ * get user pages
339
+ */
340
+ function getUserPages( $writableonly = false )
341
+ {
342
+ if( ( isset( $this->config[ 'scope' ] ) && strpos( $this->config[ 'scope' ], 'manage_pages' ) === false ) || ( !isset( $this->config[ 'scope' ] ) && strpos( $this->scope, 'manage_pages' ) === false ) )
343
+ throw new Exception( "User status requires manage_page permission!" );
344
+
345
+ try{
346
+ $pages = $this->api->api( "/me/accounts", 'get' );
347
+ }
348
+ catch( FacebookApiException $e ){
349
+ throw new Exception( "Cannot retrieve user pages! {$this->providerId} returned an error: $e" );
350
+ }
351
+
352
+ if( !isset( $pages[ 'data' ] ) ){
353
+ return array();
354
+ }
355
+
356
+ if( !$writableonly ){
357
+ return $pages[ 'data' ];
358
+ }
359
+
360
+ $wrpages = array();
361
+ foreach( $pages[ 'data' ] as $p ){
362
+ if( isset( $p[ 'perms' ] ) && in_array( 'CREATE_CONTENT', $p[ 'perms' ] ) ){
363
+ $wrpages[] = $p;
364
+ }
365
+ }
366
+
367
+ return $wrpages;
368
+ }
369
 
370
  /**
371
  * load the user latest activity
hybridauth/Hybrid/Providers/Foursquare.php CHANGED
@@ -32,7 +32,7 @@ class Hybrid_Providers_Foursquare extends Hybrid_Provider_Model_OAuth2
32
  */
33
  function getUserProfile()
34
  {
35
- $data = $this->api->api( "users/self" );
36
 
37
  if ( ! isset( $data->response->user->id ) ){
38
  throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
32
  */
33
  function getUserProfile()
34
  {
35
+ $data = $this->api->api( "users/self", "GET", array( "v" => "20120610" ) );
36
 
37
  if ( ! isset( $data->response->user->id ) ){
38
  throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
hybridauth/Hybrid/Providers/GitHub.php CHANGED
@@ -35,7 +35,7 @@ class Hybrid_Providers_GitHub extends Hybrid_Provider_Model_OAuth2
35
  $data = $this->api->api( "user" );
36
 
37
  if ( ! isset( $data->id ) ){
38
- throw new Exception( "User profile request failed! {$this->providerId} returned an invalide response.", 6 );
39
  }
40
 
41
  $this->user->profile->identifier = @ $data->id;
@@ -51,6 +51,22 @@ class Hybrid_Providers_GitHub extends Hybrid_Provider_Model_OAuth2
51
  $this->user->profile->displayName = @ $data->login;
52
  }
53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  return $this->user->profile;
55
  }
56
  }
35
  $data = $this->api->api( "user" );
36
 
37
  if ( ! isset( $data->id ) ){
38
+ throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
39
  }
40
 
41
  $this->user->profile->identifier = @ $data->id;
51
  $this->user->profile->displayName = @ $data->login;
52
  }
53
 
54
+ // request user emails from github api
55
+ if( ! $data->email ){
56
+ try{
57
+ $emails = $this->api->api("user/emails");
58
+
59
+ // fail gracefully, and let apps collect the email if not present
60
+ if (is_array($emails) && !empty($emails[0]->email))
61
+ {
62
+ $this->user->profile->email = $emails[0]->email;
63
+ }
64
+ }
65
+ catch( GithubApiException $e ){
66
+ throw new Exception( "User email request failed! {$this->providerId} returned an error: $e", 6 );
67
+ }
68
+ }
69
+
70
  return $this->user->profile;
71
  }
72
  }
hybridauth/Hybrid/Providers/Goodreads.php CHANGED
@@ -34,36 +34,36 @@ class Hybrid_Providers_Goodreads extends Hybrid_Provider_Model_OAuth1
34
  {
35
  // in case we get authorize=0
36
  if ( ! isset($_REQUEST['oauth_token']) || ( isset( $_REQUEST['authorize'] ) && $_REQUEST['authorize'] == "0" ) ){
37
- throw new Exception( "Authentification failed! The user denied your request.", 5 );
38
  }
39
 
40
  $oauth_verifier = @ $_REQUEST['oauth_token'];
41
 
42
  if ( !$oauth_verifier ){
43
- throw new Exception( "Authentification failed! {$this->providerId} returned an invalid oauth verifier.", 5 );
44
  }
45
 
46
  // request an access token
47
  $tokens = $this->api->accessToken( $oauth_verifier );
48
 
49
- // access tokens as recived from provider
50
  $this->access_tokens_raw = $tokens;
51
 
52
  // check the last HTTP status code returned
53
  if ( $this->api->http_code != 200 ){
54
- throw new Exception( "Authentification failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ), 5 );
55
  }
56
 
57
  // we should have an access_token, or else, something has gone wrong
58
  if ( ! isset( $tokens["oauth_token"] ) ){
59
- throw new Exception( "Authentification failed! {$this->providerId} returned an invalid access token.", 5 );
60
  }
61
 
62
- // we no more need to store requet tokens
63
  $this->deleteToken( "request_token" );
64
  $this->deleteToken( "request_token_secret" );
65
 
66
- // sotre access_token for later user
67
  $this->token( "access_token" , $tokens['oauth_token'] );
68
  $this->token( "access_token_secret" , $tokens['oauth_token_secret'] );
69
 
34
  {
35
  // in case we get authorize=0
36
  if ( ! isset($_REQUEST['oauth_token']) || ( isset( $_REQUEST['authorize'] ) && $_REQUEST['authorize'] == "0" ) ){
37
+ throw new Exception( "Authentication failed! The user denied your request.", 5 );
38
  }
39
 
40
  $oauth_verifier = @ $_REQUEST['oauth_token'];
41
 
42
  if ( !$oauth_verifier ){
43
+ throw new Exception( "Authentication failed! {$this->providerId} returned an invalid oauth verifier.", 5 );
44
  }
45
 
46
  // request an access token
47
  $tokens = $this->api->accessToken( $oauth_verifier );
48
 
49
+ // access tokens as received from provider
50
  $this->access_tokens_raw = $tokens;
51
 
52
  // check the last HTTP status code returned
53
  if ( $this->api->http_code != 200 ){
54
+ throw new Exception( "Authentication failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ), 5 );
55
  }
56
 
57
  // we should have an access_token, or else, something has gone wrong
58
  if ( ! isset( $tokens["oauth_token"] ) ){
59
+ throw new Exception( "Authentication failed! {$this->providerId} returned an invalid access token.", 5 );
60
  }
61
 
62
+ // we no more need to store request tokens
63
  $this->deleteToken( "request_token" );
64
  $this->deleteToken( "request_token_secret" );
65
 
66
+ // store access_token for later user
67
  $this->token( "access_token" , $tokens['oauth_token'] );
68
  $this->token( "access_token_secret" , $tokens['oauth_token_secret'] );
69
 
hybridauth/Hybrid/Providers/Google.php CHANGED
@@ -2,7 +2,7 @@
2
  /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
@@ -12,8 +12,11 @@
12
  */
13
  class Hybrid_Providers_Google extends Hybrid_Provider_Model_OAuth2
14
  {
 
 
 
15
  // default permissions
16
- public $scope = "https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.google.com/m8/feeds/";
17
 
18
  /**
19
  * IDp wrappers initializer
@@ -25,7 +28,13 @@ class Hybrid_Providers_Google extends Hybrid_Provider_Model_OAuth2
25
  // Provider api end-points
26
  $this->api->authorize_url = "https://accounts.google.com/o/oauth2/auth";
27
  $this->api->token_url = "https://accounts.google.com/o/oauth2/token";
28
- $this->api->token_info_url = "https://www.googleapis.com/oauth2/v1/tokeninfo";
 
 
 
 
 
 
29
  }
30
 
31
  /**
@@ -34,14 +43,21 @@ class Hybrid_Providers_Google extends Hybrid_Provider_Model_OAuth2
34
  function loginBegin()
35
  {
36
  $parameters = array("scope" => $this->scope, "access_type" => "offline");
37
- $optionals = array("scope", "access_type", "redirect_uri", "approval_prompt", "hd");
38
 
39
  foreach ($optionals as $parameter){
40
  if( isset( $this->config[$parameter] ) && ! empty( $this->config[$parameter] ) ){
41
  $parameters[$parameter] = $this->config[$parameter];
42
  }
 
 
 
43
  }
44
 
 
 
 
 
45
  Hybrid_Auth::redirect( $this->api->authorizeUrl( $parameters ) );
46
  }
47
 
@@ -54,36 +70,107 @@ class Hybrid_Providers_Google extends Hybrid_Provider_Model_OAuth2
54
  $this->refreshToken();
55
 
56
  // ask google api for user infos
57
- $response = $this->api->api( "https://www.googleapis.com/oauth2/v1/userinfo" );
 
58
 
 
 
 
 
 
 
 
 
 
 
59
  if ( ! isset( $response->id ) || isset( $response->error ) ){
60
  throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
61
  }
62
 
63
- $this->user->profile->identifier = (property_exists($response,'id'))?$response->id:"";
64
- $this->user->profile->firstName = (property_exists($response,'given_name'))?$response->given_name:"";
65
- $this->user->profile->lastName = (property_exists($response,'family_name'))?$response->family_name:"";
66
- $this->user->profile->displayName = (property_exists($response,'name'))?$response->name:"";
67
- $this->user->profile->photoURL = (property_exists($response,'picture'))?$response->picture:"";
68
- $this->user->profile->profileURL = "https://profiles.google.com/" . $this->user->profile->identifier;
 
69
  $this->user->profile->gender = (property_exists($response,'gender'))?$response->gender:"";
70
- $this->user->profile->email = (property_exists($response,'email'))?$response->email:"";
71
- $this->user->profile->emailVerified = (property_exists($response,'email'))?$response->email:"";
72
- $this->user->profile->language = (property_exists($response,'locale'))?$response->locale:"";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  if( property_exists($response,'birthday') ){
75
  list($birthday_year, $birthday_month, $birthday_day) = explode( '-', $response->birthday );
76
 
77
  $this->user->profile->birthDay = (int) $birthday_day;
78
  $this->user->profile->birthMonth = (int) $birthday_month;
79
  $this->user->profile->birthYear = (int) $birthday_year;
 
 
80
  }
81
-
82
  return $this->user->profile;
83
  }
84
 
85
  /**
86
- * load the user (Gmail) contacts
87
  * ..toComplete
88
  */
89
  function getUserContacts()
@@ -91,29 +178,106 @@ class Hybrid_Providers_Google extends Hybrid_Provider_Model_OAuth2
91
  // refresh tokens if needed
92
  $this->refreshToken();
93
 
 
94
  if( ! isset( $this->config['contacts_param'] ) ){
95
  $this->config['contacts_param'] = array( "max-results" => 500 );
96
  }
 
 
 
 
 
 
 
 
 
 
97
 
98
- $response = $this->api->api( "https://www.google.com/m8/feeds/contacts/default/full?"
99
- . http_build_query( array_merge( array('alt' => 'json'), $this->config['contacts_param'] ) ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
 
101
- if( ! $response ){
102
- return ARRAY();
 
103
  }
104
-
105
- $contacts = ARRAY();
106
-
107
- foreach( $response->feed->entry as $idx => $entry ){
108
- $uc = new Hybrid_User_Contact();
109
-
110
- $uc->email = isset($entry->{'gd$email'}[0]->address) ? (string) $entry->{'gd$email'}[0]->address : '';
111
- $uc->displayName = isset($entry->title->{'$t'}) ? (string) $entry->title->{'$t'} : '';
112
- $uc->identifier = $uc->email;
113
-
114
- $contacts[] = $uc;
115
- }
116
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  return $contacts;
118
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  }
2
  /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
12
  */
13
  class Hybrid_Providers_Google extends Hybrid_Provider_Model_OAuth2
14
  {
15
+ // > more infos on google APIs: http://developer.google.com (official site)
16
+ // or here: http://discovery-check.appspot.com/ (unofficial but up to date)
17
+
18
  // default permissions
19
+ public $scope = "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read https://www.google.com/m8/feeds/";
20
 
21
  /**
22
  * IDp wrappers initializer
28
  // Provider api end-points
29
  $this->api->authorize_url = "https://accounts.google.com/o/oauth2/auth";
30
  $this->api->token_url = "https://accounts.google.com/o/oauth2/token";
31
+ $this->api->token_info_url = "https://www.googleapis.com/oauth2/v2/tokeninfo";
32
+
33
+ // Override the redirect uri when it's set in the config parameters. This way we prevent
34
+ // redirect uri mismatches when authenticating with Google.
35
+ if( isset( $this->config['redirect_uri'] ) && ! empty( $this->config['redirect_uri'] ) ){
36
+ $this->api->redirect_uri = $this->config['redirect_uri'];
37
+ }
38
  }
39
 
40
  /**
43
  function loginBegin()
44
  {
45
  $parameters = array("scope" => $this->scope, "access_type" => "offline");
46
+ $optionals = array("scope", "access_type", "redirect_uri", "approval_prompt", "hd", "state");
47
 
48
  foreach ($optionals as $parameter){
49
  if( isset( $this->config[$parameter] ) && ! empty( $this->config[$parameter] ) ){
50
  $parameters[$parameter] = $this->config[$parameter];
51
  }
52
+ if( isset( $this->config["scope"] ) && ! empty( $this->config["scope"] ) ){
53
+ $this->scope = $this->config["scope"];
54
+ }
55
  }
56
 
57
+ if( isset( $this->config[ 'force' ] ) && $this->config[ 'force' ] === true ){
58
+ $parameters[ 'approval_prompt' ] = 'force';
59
+ }
60
+
61
  Hybrid_Auth::redirect( $this->api->authorizeUrl( $parameters ) );
62
  }
63
 
70
  $this->refreshToken();
71
 
72
  // ask google api for user infos
73
+ if (strpos($this->scope, '/auth/plus.profile.emails.read') !== false) {
74
+ $verified = $this->api->api( "https://www.googleapis.com/plus/v1/people/me" );
75
 
76
+ if ( ! isset( $verified->id ) || isset( $verified->error ) )
77
+ $verified = new stdClass();
78
+ } else {
79
+ $verified = $this->api->api( "https://www.googleapis.com/plus/v1/people/me/openIdConnect" );
80
+
81
+ if ( ! isset( $verified->sub ) || isset( $verified->error ) )
82
+ $verified = new stdClass();
83
+ }
84
+
85
+ $response = $this->api->api( "https://www.googleapis.com/plus/v1/people/me" );
86
  if ( ! isset( $response->id ) || isset( $response->error ) ){
87
  throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
88
  }
89
 
90
+ $this->user->profile->identifier = (property_exists($verified,'id'))?$verified->id:((property_exists($response,'id'))?$response->id:"");
91
+ $this->user->profile->firstName = (property_exists($response,'name'))?$response->name->givenName:"";
92
+ $this->user->profile->lastName = (property_exists($response,'name'))?$response->name->familyName:"";
93
+ $this->user->profile->displayName = (property_exists($response,'displayName'))?$response->displayName:"";
94
+ $this->user->profile->photoURL = (property_exists($response,'image'))?((property_exists($response->image,'url'))?substr($response->image->url, 0, -2)."200":''):'';
95
+ $this->user->profile->profileURL = (property_exists($response,'url'))?$response->url:"";
96
+ $this->user->profile->description = (property_exists($response,'aboutMe'))?$response->aboutMe:"";
97
  $this->user->profile->gender = (property_exists($response,'gender'))?$response->gender:"";
98
+ $this->user->profile->language = (property_exists($response,'locale'))?$response->locale:((property_exists($verified,'locale'))?$verified->locale:"");
99
+ $this->user->profile->email = (property_exists($response,'email'))?$response->email:((property_exists($verified,'email'))?$verified->email:"");
100
+
101
+ if (property_exists($response, 'emails')) {
102
+ if (count($response->emails) == 1) {
103
+ $this->user->profile->email = $response->emails[0]->value;
104
+ } else {
105
+ foreach ($response->emails as $email) {
106
+ if ($email->type == 'account') {
107
+ $this->user->profile->email = $email->value;
108
+ break;
109
+ }
110
+ }
111
+ }
112
+ }
113
+
114
+ $this->user->profile->emailVerified = $this->user->profile->email;
115
 
116
+ $this->user->profile->phone = (property_exists($response,'phone'))?$response->phone:"";
117
+ $this->user->profile->country = (property_exists($response,'country'))?$response->country:"";
118
+ $this->user->profile->region = (property_exists($response,'region'))?$response->region:"";
119
+ $this->user->profile->zip = (property_exists($response,'zip'))?$response->zip:"";
120
+ if( property_exists($response,'placesLived') ){
121
+ $this->user->profile->city = "";
122
+ $this->user->profile->address = "";
123
+ foreach($response->placesLived as $c){
124
+ if(property_exists($c,'primary')){
125
+ if($c->primary == true){
126
+ $this->user->profile->address = $c->value;
127
+ $this->user->profile->city = $c->value;
128
+ break;
129
+ }
130
+ }else{
131
+ if(property_exists($c,'value')){
132
+ $this->user->profile->address = $c->value;
133
+ $this->user->profile->city = $c->value;
134
+ }
135
+ }
136
+ }
137
+ }
138
+
139
+ // google API returns multiple urls, but a "website" only if it is verified
140
+ // see http://support.google.com/plus/answer/1713826?hl=en
141
+ if( property_exists($response,'urls') ){
142
+ foreach($response->urls as $u){
143
+ if(property_exists($u, 'primary') && $u->primary == true) $this->user->profile->webSiteURL = $u->value;
144
+ }
145
+ } else {
146
+ $this->user->profile->webSiteURL = '';
147
+ }
148
+ // google API returns age ranges or min. age only (with plus.login scope)
149
+ if( property_exists($response,'ageRange') ){
150
+ if( property_exists($response->ageRange,'min') && property_exists($response->ageRange,'max') ){
151
+ $this->user->profile->age = $response->ageRange->min.' - '.$response->ageRange->max;
152
+ } else {
153
+ $this->user->profile->age = '> '.$response->ageRange->min;
154
+ }
155
+ } else {
156
+ $this->user->profile->age = '';
157
+ }
158
+ // google API returns birthdays only if a user set 'show in my account'
159
  if( property_exists($response,'birthday') ){
160
  list($birthday_year, $birthday_month, $birthday_day) = explode( '-', $response->birthday );
161
 
162
  $this->user->profile->birthDay = (int) $birthday_day;
163
  $this->user->profile->birthMonth = (int) $birthday_month;
164
  $this->user->profile->birthYear = (int) $birthday_year;
165
+ } else {
166
+ $this->user->profile->birthDay=0;$this->user->profile->birthMonth=0;$this->user->profile->birthYear=0;
167
  }
168
+
169
  return $this->user->profile;
170
  }
171
 
172
  /**
173
+ * load the user (Gmail and google plus) contacts
174
  * ..toComplete
175
  */
176
  function getUserContacts()
178
  // refresh tokens if needed
179
  $this->refreshToken();
180
 
181
+ $contacts = array();
182
  if( ! isset( $this->config['contacts_param'] ) ){
183
  $this->config['contacts_param'] = array( "max-results" => 500 );
184
  }
185
+
186
+ // Google Gmail and Android contacts
187
+ if (strpos($this->scope, '/m8/feeds/') !== false) {
188
+
189
+ $response = $this->api->api( "https://www.google.com/m8/feeds/contacts/default/full?"
190
+ . http_build_query( array_merge( array('alt' => 'json', 'v' => '3.0'), $this->config['contacts_param'] ) ) );
191
+
192
+ if( ! $response ){
193
+ return ARRAY();
194
+ }
195
 
196
+ if (isset($response->feed->entry)) {
197
+ foreach( $response->feed->entry as $idx => $entry ){
198
+ $uc = new Hybrid_User_Contact();
199
+ $uc->email = isset($entry->{'gd$email'}[0]->address) ? (string) $entry->{'gd$email'}[0]->address : '';
200
+ $uc->displayName = isset($entry->title->{'$t'}) ? (string) $entry->title->{'$t'} : '';
201
+ $uc->identifier = ($uc->email!='')?$uc->email:'';
202
+ $uc->description = '';
203
+ if( property_exists($entry,'link') ){
204
+ /**
205
+ * sign links with access_token
206
+ */
207
+ if(is_array($entry->link)){
208
+ foreach($entry->link as $l){
209
+ if( property_exists($l,'gd$etag') && $l->type=="image/*"){
210
+ $uc->photoURL = $this->addUrlParam($l->href, array('access_token' => $this->api->access_token));
211
+ } else if($l->type=="self"){
212
+ $uc->profileURL = $this->addUrlParam($l->href, array('access_token' => $this->api->access_token));
213
+ }
214
+ }
215
+ }
216
+ } else {
217
+ $uc->profileURL = '';
218
+ }
219
+ if( property_exists($response,'website') ){
220
+ if(is_array($response->website)){
221
+ foreach($response->website as $w){
222
+ if($w->primary == true) $uc->webSiteURL = $w->value;
223
+ }
224
+ } else {
225
+ $uc->webSiteURL = $response->website->value;
226
+ }
227
+ } else {
228
+ $uc->webSiteURL = '';
229
+ }
230
 
231
+ $contacts[] = $uc;
232
+ }
233
+ }
234
  }
235
+
236
+ // Google social contacts
237
+ if (strpos($this->scope, '/auth/plus.login') !== false) {
238
+
239
+ $response = $this->api->api( "https://www.googleapis.com/plus/v1/people/me/people/visible?"
240
+ . http_build_query( $this->config['contacts_param'] ) );
241
+
242
+ if( ! $response ){
243
+ return ARRAY();
244
+ }
245
+
246
+ foreach( $response->items as $idx => $item ){
247
+ $uc = new Hybrid_User_Contact();
248
+ $uc->email = (property_exists($item,'email'))?$item->email:'';
249
+ $uc->displayName = (property_exists($item,'displayName'))?$item->displayName:'';
250
+ $uc->identifier = (property_exists($item,'id'))?$item->id:'';
251
+
252
+ $uc->description = (property_exists($item,'objectType'))?$item->objectType:'';
253
+ $uc->photoURL = (property_exists($item,'image'))?((property_exists($item->image,'url'))?$item->image->url:''):'';
254
+ $uc->profileURL = (property_exists($item,'url'))?$item->url:'';
255
+ $uc->webSiteURL = '';
256
+
257
+ $contacts[] = $uc;
258
+ }
259
+
260
+ }
261
+
262
  return $contacts;
263
  }
264
+
265
+ /**
266
+ * Add to the $url new parameters
267
+ * @param string $url
268
+ * @param array $params
269
+ * @return string
270
+ */
271
+ function addUrlParam($url, array $params)
272
+ {
273
+ $query = parse_url($url, PHP_URL_QUERY);
274
+
275
+ // Returns the URL string with new parameters
276
+ if( $query ) {
277
+ $url .= '&' . http_build_query( $params );
278
+ } else {
279
+ $url .= '?' . http_build_query( $params );
280
+ }
281
+ return $url;
282
+ }
283
  }
hybridauth/Hybrid/Providers/Gowalla.php DELETED
@@ -1,102 +0,0 @@
1
- <?php
2
- /*!
3
- * HybridAuth
4
- * http://hybridauth.sourceforge.net | https://github.com/hybridauth/hybridauth
5
- * (c) 2009-2011 HybridAuth authors | hybridauth.sourceforge.net/licenses.html
6
- */
7
-
8
- /**
9
- * Hybrid_Providers_Gowalla provider adapter based on OAuth2 protocol
10
- *
11
- * http://hybridauth.sourceforge.net/userguide/IDProvider_info_Gowalla.html
12
- */
13
- class Hybrid_Providers_Gowalla extends Hybrid_Provider_Model_OAuth2
14
- {
15
- /**
16
- * IDp wrappers initializer
17
- */
18
- function initialize()
19
- {
20
- parent::initialize();
21
-
22
- // Provider apis end-points
23
- $this->api->api_base_url = "https://api.gowalla.com/";
24
- $this->api->authorize_url = "https://gowalla.com/api/oauth/new";
25
- $this->api->token_url = "https://api.gowalla.com/api/oauth/token";
26
-
27
- $this->api->curl_header = array( 'X-Gowalla-API-Key: ' . $this->config["keys"]["id"], 'Accept: application/json' );
28
- }
29
-
30
- /**
31
- * load the user profile from the IDp api client
32
- */
33
- function getUserProfile()
34
- {
35
- // refresh tokens if needed
36
- $this->refreshToken();
37
-
38
- $data = $this->api->api( "users/me/" );
39
-
40
- if ( ! is_object( $data ) || ! isset( $data->username ) )
41
- {
42
- throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
43
- }
44
-
45
- $this->user->providerUID = @ (string) $data->username;
46
- $this->user->profile->firstName = @ (string) $data->first_name;
47
- $this->user->profile->lastName = @ (string) $data->last_name;
48
- $this->user->profile->displayName = trim( $this->user->profile->firstName . " " . $this->user->profile->lastName );
49
- $this->user->profile->profileURL = @ "http://gowalla.com" . ( (string) $data->url );
50
- $this->user->profile->webSiteURL = @ (string) $data->website;
51
- $this->user->profile->photoURL = @ (string) $data->image_url;
52
-
53
- // make sure to always have a display name
54
- if( ! $this->user->profile->displayName ){
55
- $this->user->profile->displayName = @ (string) $data->username;
56
- }
57
-
58
- return $this->user->profile;
59
- }
60
-
61
- function refreshToken()
62
- {
63
- // have an access token?
64
- if( $this->api->access_token ){
65
-
66
- // have to refresh?
67
- if( $this->api->refresh_token && $this->api->access_token_expires_at ){
68
-
69
- // expired?
70
- if( $this->api->access_token_expires_at <= time() ){
71
- $response = $this->api->refreshToken( array( "refresh_token" => $this->api->refresh_token, "access_token" => $this->api->access_token ) );
72
-
73
- if( ! isset( $response->access_token ) || ! $response->access_token ){
74
- // set the user as disconnected at this point and throw an exception
75
- $this->setUserUnconnected();
76
-
77
- throw new Exception( "The Authorization Service has return an invalid response while requesting a new access token. " . (string) $response->error );
78
- }
79
-
80
- // set new access_token
81
- $this->api->access_token = $response->access_token;
82
-
83
- if( isset( $response->refresh_token ) )
84
- $this->api->refresh_token = $response->refresh_token;
85
-
86
- if( isset( $response->expires_in ) ){
87
- $this->api->access_token_expires_in = $response->expires_in;
88
-
89
- // even given by some idp, we should calculate this
90
- $this->api->access_token_expires_at = time() + $response->expires_in;
91
- }
92
- }
93
- }
94
-
95
- // re store tokens
96
- $this->token( "access_token" , $this->api->access_token );
97
- $this->token( "refresh_token", $this->api->refresh_token );
98
- $this->token( "expires_in" , $this->api->access_token_expires_in );
99
- $this->token( "expires_at" , $this->api->access_token_expires_at );
100
- }
101
- }
102
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
hybridauth/Hybrid/Providers/Identica.php CHANGED
@@ -75,7 +75,7 @@ class Hybrid_Providers_Identica extends Hybrid_Provider_Model_OAuth1
75
 
76
  $contacts = ARRAY();
77
 
78
- // donno if users/lookup is supported by identica.. to do
79
  foreach( $response as $item ){
80
  $parameters = array( 'user_id' => $item );
81
  $responseud = $this->api->get( 'users/show.json', $parameters );
75
 
76
  $contacts = ARRAY();
77
 
78
+ // dunno if users/lookup is supported by identica.. to do
79
  foreach( $response as $item ){
80
  $parameters = array( 'user_id' => $item );
81
  $responseud = $this->api->get( 'users/show.json', $parameters );
hybridauth/Hybrid/Providers/Instagram.php CHANGED
@@ -1,48 +1,48 @@
1
- <?php
2
- /*!
3
- * HybridAuth
4
- * http://hybridauth.sourceforge.net | https://github.com/hybridauth/hybridauth
5
- * (c) 2009-2011 HybridAuth authors | hybridauth.sourceforge.net/licenses.html
6
- */
7
-
8
- /**
9
- * Hybrid_Providers_Instagram (By Sebastian Lasse - https://github.com/sebilasse)
10
- */
11
- class Hybrid_Providers_Instagram extends Hybrid_Provider_Model_OAuth2
12
- {
13
- // default permissions
14
- public $scope = "basic";
15
-
16
- /**
17
- * IDp wrappers initializer
18
- */
19
- function initialize()
20
- {
21
- parent::initialize();
22
-
23
- // Provider api end-points
24
- $this->api->api_base_url = "https://api.instagram.com/v1/";
25
- $this->api->authorize_url = "https://api.instagram.com/oauth/authorize/";
26
- $this->api->token_url = "https://api.instagram.com/oauth/access_token";
27
- }
28
-
29
- /**
30
- * load the user profile from the IDp api client
31
- */
32
- function getUserProfile(){
33
- $data = $this->api->api("users/self/" );
34
-
35
- if ( $data->meta->code != 200 ){
36
- throw new Exception( "User profile request failed! {$this->providerId} returned an invalide response.", 6 );
37
- }
38
-
39
- $this->user->profile->identifier = $data->data->id;
40
- $this->user->profile->displayName = $data->data->full_name ? $data->data->full_name : $data->data->username;
41
- $this->user->profile->description = $data->data->bio;
42
- $this->user->profile->photoURL = $data->data->profile_picture;
43
-
44
- $this->user->profile->webSiteURL = $data->data->website;
45
-
46
- return $this->user->profile;
47
- }
48
- }
1
+ <?php
2
+ /*!
3
+ * HybridAuth
4
+ * http://hybridauth.sourceforge.net | https://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2012 HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
+ */
7
+
8
+ /**
9
+ * Hybrid_Providers_Instagram (By Sebastian Lasse - https://github.com/sebilasse)
10
+ */
11
+ class Hybrid_Providers_Instagram extends Hybrid_Provider_Model_OAuth2
12
+ {
13
+ // default permissions
14
+ public $scope = "basic";
15
+
16
+ /**
17
+ * IDp wrappers initializer
18
+ */
19
+ function initialize()
20
+ {
21
+ parent::initialize();
22
+
23
+ // Provider api end-points
24
+ $this->api->api_base_url = "https://api.instagram.com/v1/";
25
+ $this->api->authorize_url = "https://api.instagram.com/oauth/authorize/";
26
+ $this->api->token_url = "https://api.instagram.com/oauth/access_token";
27
+ }
28
+
29
+ /**
30
+ * load the user profile from the IDp api client
31
+ */
32
+ function getUserProfile(){
33
+ $data = $this->api->api("users/self/" );
34
+
35
+ if ( $data->meta->code != 200 ){
36
+ throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
37
+ }
38
+
39
+ $this->user->profile->identifier = $data->data->id;
40
+ $this->user->profile->displayName = $data->data->full_name ? $data->data->full_name : $data->data->username;
41
+ $this->user->profile->description = $data->data->bio;
42
+ $this->user->profile->photoURL = $data->data->profile_picture;
43
+
44
+ $this->user->profile->webSiteURL = $data->data->website;
45
+
46
+ return $this->user->profile;
47
+ }
48
+ }
hybridauth/Hybrid/Providers/LastFM.php CHANGED
@@ -48,14 +48,14 @@ class Hybrid_Providers_LastFM extends Hybrid_Provider_Model
48
 
49
  if ( ! $token )
50
  {
51
- throw new Exception( "Authentification failed! {$this->providerId} returned an invalid Token.", 5 );
52
  }
53
 
54
  try{
55
  $response = $this->api->fetchSession( $token );
56
  }
57
  catch( LastFMException $e ){
58
- throw new Exception( "Authentification failed! {$this->providerId} returned an error while requesting and access token. $e.", 6 );
59
  }
60
 
61
  if( isset( $response['sk'] ) && isset( $response['name'] ) ){
@@ -68,7 +68,7 @@ class Hybrid_Providers_LastFM extends Hybrid_Provider_Model
68
  $this->setUserConnected();
69
  }
70
  else{
71
- throw new Exception( "Authentification failed! {$this->providerId} returned an invalid access Token.", 5 );
72
  }
73
  }
74
 
48
 
49
  if ( ! $token )
50
  {
51
+ throw new Exception( "Authentication failed! {$this->providerId} returned an invalid Token.", 5 );
52
  }
53
 
54
  try{
55
  $response = $this->api->fetchSession( $token );
56
  }
57
  catch( LastFMException $e ){
58
+ throw new Exception( "Authentication failed! {$this->providerId} returned an error while requesting and access token. $e.", 6 );
59
  }
60
 
61
  if( isset( $response['sk'] ) && isset( $response['name'] ) ){
68
  $this->setUserConnected();
69
  }
70
  else{
71
+ throw new Exception( "Authentication failed! {$this->providerId} returned an invalid access Token.", 5 );
72
  }
73
  }
74
 
hybridauth/Hybrid/Providers/Latch.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * HybridAuth
4
+ * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2013, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
+ */
7
+
8
+ /**
9
+ * Hybrid_Providers_Latch provider adapter based on OpenID protocol
10
+ *
11
+ * http://hybridauth.sourceforge.net/userguide/IDProvider_info_Latch.html
12
+ */
13
+ class Hybrid_Providers_Latch extends Hybrid_Provider_Model_OpenID
14
+ {
15
+ var $openidIdentifier = "http://auth.latch-app.com/OpenIdServer/user.jsp";
16
+
17
+ /**
18
+ * finish login step
19
+ */
20
+ function loginFinish()
21
+ {
22
+ parent::loginFinish();
23
+
24
+ $this->user->profile->identifier = $this->user->profile->email;
25
+ $this->user->profile->emailVerified = $this->user->profile->email;
26
+
27
+ // restore the user profile
28
+ Hybrid_Auth::storage()->set( "hauth_session.{$this->providerId}.user", $this->user );
29
+ }
30
+ }
hybridauth/Hybrid/Providers/LinkedIn.php CHANGED
@@ -22,8 +22,9 @@ class Hybrid_Providers_LinkedIn extends Hybrid_Provider_Model
22
  if ( ! $this->config["keys"]["key"] || ! $this->config["keys"]["secret"] ){
23
  throw new Exception( "Your application key and secret are required in order to connect to {$this->providerId}.", 4 );
24
  }
25
-
26
- require_once Hybrid_Auth::$config["path_libraries"] . "OAuth/OAuth.php";
 
27
  require_once Hybrid_Auth::$config["path_libraries"] . "LinkedIn/LinkedIn.php";
28
 
29
  $this->api = new LinkedIn( array( 'appKey' => $this->config["keys"]["key"], 'appSecret' => $this->config["keys"]["secret"], 'callbackUrl' => $this->endpoint ) );
@@ -200,6 +201,8 @@ class Hybrid_Providers_LinkedIn extends Hybrid_Provider_Model
200
  {
201
  throw new Exception( "Update user status update failed! {$this->providerId} returned an error." );
202
  }
 
 
203
  }
204
 
205
  /**
22
  if ( ! $this->config["keys"]["key"] || ! $this->config["keys"]["secret"] ){
23
  throw new Exception( "Your application key and secret are required in order to connect to {$this->providerId}.", 4 );
24
  }
25
+ if ( ! class_exists('OAuthConsumer') ) {
26
+ require_once Hybrid_Auth::$config["path_libraries"] . "OAuth/OAuth.php";
27
+ }
28
  require_once Hybrid_Auth::$config["path_libraries"] . "LinkedIn/LinkedIn.php";
29
 
30
  $this->api = new LinkedIn( array( 'appKey' => $this->config["keys"]["key"], 'appSecret' => $this->config["keys"]["secret"], 'callbackUrl' => $this->endpoint ) );
201
  {
202
  throw new Exception( "Update user status update failed! {$this->providerId} returned an error." );
203
  }
204
+
205
+ return $response;
206
  }
207
 
208
  /**
hybridauth/Hybrid/Providers/Live.php CHANGED
@@ -46,7 +46,7 @@ class Hybrid_Providers_Live extends Hybrid_Provider_Model_OAuth2
46
  $data = $this->api->get( "me" );
47
 
48
  if ( ! isset( $data->id ) ){
49
- throw new Exception( "User profile request failed! {$this->providerId} returned an invalide response.", 6 );
50
  }
51
 
52
  $this->user->profile->identifier = (property_exists($data,'id'))?$data->id:"";
@@ -85,7 +85,7 @@ class Hybrid_Providers_Live extends Hybrid_Provider_Model_OAuth2
85
  throw new Exception( 'User contacts request failed! ' . $this->providerId . ' returned an error: ' . $this->errorMessageByStatus( $this->api->http_code ) );
86
  }
87
 
88
- if ( ! $response->data && ( $response->error != 0 ) )
89
  {
90
  return array();
91
  }
46
  $data = $this->api->get( "me" );
47
 
48
  if ( ! isset( $data->id ) ){
49
+ throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
50
  }
51
 
52
  $this->user->profile->identifier = (property_exists($data,'id'))?$data->id:"";
85
  throw new Exception( 'User contacts request failed! ' . $this->providerId . ' returned an error: ' . $this->errorMessageByStatus( $this->api->http_code ) );
86
  }
87
 
88
+ if ( !isset($response->data) || ( isset($response->errcode) && $response->errcode != 0 ) )
89
  {
90
  return array();
91
  }
hybridauth/Hybrid/Providers/Mailru.php CHANGED
@@ -35,7 +35,7 @@ class Hybrid_Providers_Mailru extends Hybrid_Provider_Model_OAuth2
35
  $sig = md5( "client_id=" . $this->api->client_id . "format=jsonmethod=users.getInfosecure=1session_key=". $this->api->access_token . $this->api->client_secret );
36
  $response = $this->api->api( "?format=json&client_id=" . $this->api->client_id . "&method=users.getInfo&secure=1&sig=" .$sig);
37
  if ( ! isset( $response[0]->uid ) ){
38
- throw new Exception( "User profile request failed! {$this->providerId} returned an invalide response.", 6 );
39
  }
40
 
41
  $response = $response[0];
35
  $sig = md5( "client_id=" . $this->api->client_id . "format=jsonmethod=users.getInfosecure=1session_key=". $this->api->access_token . $this->api->client_secret );
36
  $response = $this->api->api( "?format=json&client_id=" . $this->api->client_id . "&method=users.getInfo&secure=1&sig=" .$sig);
37
  if ( ! isset( $response[0]->uid ) ){
38
+ throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
39
  }
40
 
41
  $response = $response[0];
hybridauth/Hybrid/Providers/MySpace.php DELETED
@@ -1,164 +0,0 @@
1
- <?php
2
- /*!
3
- * HybridAuth
4
- * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
- */
7
-
8
- /**
9
- * Hybrid_Providers_MySpace provider adapter based on OAuth1 protocol
10
- *
11
- * http://hybridauth.sourceforge.net/userguide/IDProvider_info_MySpace.html
12
- */
13
- class Hybrid_Providers_MySpace extends Hybrid_Provider_Model_OAuth1
14
- {
15
- /**
16
- * IDp wrappers initializer
17
- */
18
- function initialize()
19
- {
20
- parent::initialize();
21
-
22
- // Provider api end-points
23
- $this->api->api_endpoint_url = "http://api.myspace.com/v1/";
24
- $this->api->authorize_url = "http://api.myspace.com/authorize";
25
- $this->api->request_token_url = "http://api.myspace.com/request_token";
26
- $this->api->access_token_url = "http://api.myspace.com/access_token";
27
- }
28
-
29
- /**
30
- * get the connected uid from myspace api
31
- */
32
- public function getCurrentUserId()
33
- {
34
- $response = $this->api->get( 'http://api.myspace.com/v1/user.json' );
35
-
36
- if ( ! isset( $response->userId ) ){
37
- throw new Exception( "User id request failed! {$this->providerId} returned an invalid response." );
38
- }
39
-
40
- return $response->userId;
41
- }
42
-
43
- /**
44
- * load the user profile from the IDp api client
45
- */
46
- function getUserProfile()
47
- {
48
- $userId = $this->getCurrentUserId();
49
-
50
- $data = $this->api->get( 'http://api.myspace.com/v1/users/' . $userId . '/profile.json' );
51
-
52
- if ( ! is_object( $data ) ){
53
- throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
54
- }
55
-
56
- $this->user->profile->identifier = $userId;
57
- $this->user->profile->displayName = $data->basicprofile->name;
58
- $this->user->profile->description = $data->aboutme;
59
- $this->user->profile->gender = $data->basicprofile->gender;
60
- $this->user->profile->photoURL = $data->basicprofile->image;
61
- $this->user->profile->profileURL = $data->basicprofile->webUri;
62
- $this->user->profile->age = $data->age;
63
- $this->user->profile->country = $data->country;
64
- $this->user->profile->region = $data->region;
65
- $this->user->profile->city = $data->city;
66
- $this->user->profile->zip = $data->postalcode;
67
-
68
- return $this->user->profile;
69
- }
70
-
71
- /**
72
- * load the user contacts
73
- */
74
- function getUserContacts()
75
- {
76
- $userId = $this->getCurrentUserId();
77
-
78
- $response = $this->api->get( "http://api.myspace.com/v1/users/" . $userId . "/friends.json" );
79
-
80
- if ( ! is_object( $response ) ){
81
- throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
82
- }
83
-
84
- $contacts = ARRAY();
85
-
86
- foreach( $response->Friends as $item ){
87
- $uc = new Hybrid_User_Contact();
88
-
89
- $uc->identifier = $item->userId;
90
- $uc->displayName = $item->name;
91
- $uc->profileURL = $item->webUri;
92
- $uc->photoURL = $item->image;
93
- $uc->description = $item->status;
94
-
95
- $contacts[] = $uc;
96
- }
97
-
98
- return $contacts;
99
- }
100
-
101
- /**
102
- * update user status
103
- */
104
- function setUserStatus( $status )
105
- {
106
- // crappy myspace... gonna see this asaic
107
- $userId = $this->getCurrentUserId();
108
-
109
- $parameters = array( 'status' => $status );
110
-
111
- $response = $this->api->api( "http://api.myspace.com/v1/users/" . $userId . "/status", 'PUT', $parameters );
112
-
113
- // check the last HTTP status code returned
114
- if ( $this->api->http_code != 200 )
115
- {
116
- throw new Exception( "Update user status failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ) );
117
- }
118
- }
119
-
120
- /**
121
- * load the user latest activity
122
- * - timeline : all the stream
123
- * - me : the user activity only
124
- */
125
- function getUserActivity( $stream )
126
- {
127
- $userId = $this->getCurrentUserId();
128
-
129
- if( $stream == "me" ){
130
- $response = $this->api->get( "http://api.myspace.com/v1/users/" . $userId . "/status.json" );
131
- }
132
- else{
133
- $response = $this->api->get( "http://api.myspace.com/v1/users/" . $userId . "/friends/status.json" );
134
- }
135
-
136
- if ( ! is_object( $response ) ){
137
- throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
138
- }
139
-
140
- $activities = ARRAY();
141
-
142
- if( $stream == "me" ){
143
- // todo
144
- }
145
- else{
146
- foreach( $response->FriendsStatus as $item ){
147
- $ua = new Hybrid_User_Activity();
148
-
149
- $ua->id = $item->statusId;
150
- $ua->date = NULL; // to find out!!
151
- $ua->text = $item->status;
152
-
153
- $ua->user->identifier = $item->user->userId;
154
- $ua->user->displayName = $item->user->name;
155
- $ua->user->profileURL = $item->user->uri;
156
- $ua->user->photoURL = $item->user->image;
157
-
158
- $activities[] = $ua;
159
- }
160
- }
161
-
162
- return $activities;
163
- }
164
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
hybridauth/Hybrid/Providers/Odnoklassniki.php CHANGED
@@ -31,7 +31,7 @@ class Hybrid_Providers_Odnoklassniki extends Hybrid_Provider_Model_OAuth2
31
  Hybrid_Logger::debug( "OAuth2Client::request(). dump request params: ", serialize( $params ) );
32
 
33
  if( $type == "GET" ){
34
- $url = $url . ( strpos( $url, '?' ) ? '&' : '?' ) . http_build_query( $params );
35
  }
36
 
37
  $this->http_info = array();
@@ -39,13 +39,13 @@ class Hybrid_Providers_Odnoklassniki extends Hybrid_Provider_Model_OAuth2
39
 
40
  curl_setopt($ch, CURLOPT_URL , $url );
41
  curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1 );
42
- curl_setopt($ch, CURLOPT_TIMEOUT , $this->curl_time_out );
43
- curl_setopt($ch, CURLOPT_USERAGENT , $this->curl_useragent );
44
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , $this->curl_connect_time_out );
45
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , $this->curl_ssl_verifypeer );
46
- curl_setopt($ch, CURLOPT_HTTPHEADER , $this->curl_header );
47
- if($this->curl_proxy){
48
- curl_setopt( $ch, CURLOPT_PROXY , $this->curl_proxy);
49
  }
50
  if( $type == "POST" ){
51
  curl_setopt($ch, CURLOPT_POST, 1);
@@ -67,11 +67,11 @@ class Hybrid_Providers_Odnoklassniki extends Hybrid_Provider_Model_OAuth2
67
  {
68
  if( json_decode( $result ) ) return json_decode( $result );
69
 
70
- parse_str( $result, $ouput );
71
 
72
  $result = new StdClass();
73
 
74
- foreach( $ouput as $k => $v )
75
  $result->$k = $v;
76
 
77
  return $result;
@@ -100,7 +100,14 @@ class Hybrid_Providers_Odnoklassniki extends Hybrid_Provider_Model_OAuth2
100
  if( isset( $response->expires_in ) ) $this->api->access_token_expires_in = $response->expires_in;
101
 
102
  // calculate when the access token expire
 
 
 
103
  $this->api->access_token_expires_at = time() + $response->expires_in;
 
 
 
 
104
 
105
  return $response;
106
  }
@@ -111,10 +118,10 @@ class Hybrid_Providers_Odnoklassniki extends Hybrid_Provider_Model_OAuth2
111
 
112
  // check for errors
113
  if ( $error ){
114
- throw new Exception( "Authentification failed! {$this->providerId} returned an error: $error", 5 );
115
  }
116
 
117
- // try to authenicate user
118
  $code = (array_key_exists('code',$_REQUEST))?$_REQUEST['code']:"";
119
 
120
  try{
@@ -126,7 +133,7 @@ class Hybrid_Providers_Odnoklassniki extends Hybrid_Provider_Model_OAuth2
126
 
127
  // check if authenticated
128
  if ( ! $this->api->access_token ){
129
- throw new Exception( "Authentification failed! {$this->providerId} returned an invalid access token.", 5 );
130
  }
131
 
132
  // store tokens
@@ -147,10 +154,10 @@ class Hybrid_Providers_Odnoklassniki extends Hybrid_Provider_Model_OAuth2
147
  $sig = md5('application_key=' . $this->config['keys']['key'] . 'method=users.getCurrentUser' . md5($this->api->access_token . $this->api->client_secret));
148
  $response = $this->api->api( '?application_key=' . $this->config['keys']['key'] . '&method=users.getCurrentUser&sig=' .$sig);
149
  if ( ! isset( $response->uid ) ){
150
- throw new Exception( "User profile request failed! {$this->providerId} returned an invalide response.", 6 );
151
  }
152
 
153
- $this->user->profile->identifier = (property_exists($response,'uid'))?$response->uid:"";
154
  $this->user->profile->firstName = (property_exists($response,'first_name'))?$response->first_name:"";
155
  $this->user->profile->lastName = (property_exists($response,'last_name'))?$response->last_name:"";
156
  $this->user->profile->displayName = (property_exists($response,'name'))?$response->name:"";
@@ -171,4 +178,4 @@ class Hybrid_Providers_Odnoklassniki extends Hybrid_Provider_Model_OAuth2
171
 
172
  return $this->user->profile;
173
  }
174
- }
31
  Hybrid_Logger::debug( "OAuth2Client::request(). dump request params: ", serialize( $params ) );
32
 
33
  if( $type == "GET" ){
34
+ $url = $url . ( strpos( $url, '?' ) ? '&' : '?' ) . http_build_query($params, '', '&');
35
  }
36
 
37
  $this->http_info = array();
39
 
40
  curl_setopt($ch, CURLOPT_URL , $url );
41
  curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1 );
42
+ curl_setopt($ch, CURLOPT_TIMEOUT , $this->api->curl_time_out );
43
+ curl_setopt($ch, CURLOPT_USERAGENT , $this->api->curl_useragent );
44
+ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , $this->api->curl_connect_time_out );
45
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , $this->api->curl_ssl_verifypeer );
46
+ curl_setopt($ch, CURLOPT_HTTPHEADER , $this->api->curl_header );
47
+ if($this->api->curl_proxy){
48
+ curl_setopt( $ch, CURLOPT_PROXY , $this->api->curl_proxy);
49
  }
50
  if( $type == "POST" ){
51
  curl_setopt($ch, CURLOPT_POST, 1);
67
  {
68
  if( json_decode( $result ) ) return json_decode( $result );
69
 
70
+ parse_str( $result, $output );
71
 
72
  $result = new StdClass();
73
 
74
+ foreach( $output as $k => $v )
75
  $result->$k = $v;
76
 
77
  return $result;
100
  if( isset( $response->expires_in ) ) $this->api->access_token_expires_in = $response->expires_in;
101
 
102
  // calculate when the access token expire
103
+ // At this moment Odnoklassniki does not return expire time in response.
104
+ // 30 minutes expire time staten in dev docs http://apiok.ru/wiki/pages/viewpage.action?pageId=42476652
105
+ if( isset( $response->expires_in ) ) {
106
  $this->api->access_token_expires_at = time() + $response->expires_in;
107
+ }
108
+ else {
109
+ $this->api->access_token_expires_at = time() + 1800;
110
+ }
111
 
112
  return $response;
113
  }
118
 
119
  // check for errors
120
  if ( $error ){
121
+ throw new Exception( "Authentication failed! {$this->providerId} returned an error: $error", 5 );
122
  }
123
 
124
+ // try to authenticate user
125
  $code = (array_key_exists('code',$_REQUEST))?$_REQUEST['code']:"";
126
 
127
  try{
133
 
134
  // check if authenticated
135
  if ( ! $this->api->access_token ){
136
+ throw new Exception( "Authentication failed! {$this->providerId} returned an invalid access token.", 5 );
137
  }
138
 
139
  // store tokens
154
  $sig = md5('application_key=' . $this->config['keys']['key'] . 'method=users.getCurrentUser' . md5($this->api->access_token . $this->api->client_secret));
155
  $response = $this->api->api( '?application_key=' . $this->config['keys']['key'] . '&method=users.getCurrentUser&sig=' .$sig);
156
  if ( ! isset( $response->uid ) ){
157
+ throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
158
  }
159
 
160
+ $this->user->profile->identifier = (property_exists($response,'uid'))?$response->uid:"";
161
  $this->user->profile->firstName = (property_exists($response,'first_name'))?$response->first_name:"";
162
  $this->user->profile->lastName = (property_exists($response,'last_name'))?$response->last_name:"";
163
  $this->user->profile->displayName = (property_exists($response,'name'))?$response->name:"";
178
 
179
  return $this->user->profile;
180
  }
181
+ }
hybridauth/Hybrid/Providers/Paypal.php ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * HybridAuth
4
+ * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
+ */
7
+
8
+ /**
9
+ * PayPal OAuth2 Class
10
+ *
11
+ * @package HybridAuth providers package
12
+ * @author Jan Waś <janek.jan@gmail.com>
13
+ * @version 0.2
14
+ * @license BSD License
15
+ */
16
+
17
+ /**
18
+ * Hybrid_Providers_Paypal - PayPal provider adapter based on OAuth2 protocol
19
+ */
20
+ class Hybrid_Providers_Paypal extends Hybrid_Provider_Model_OAuth2
21
+ {
22
+ // default permissions
23
+ public $scope = "profile email address phone https://uri.paypal.com/services/paypalattributes";
24
+
25
+ public $sandbox = true;
26
+
27
+ /**
28
+ * IDp wrappers initializer
29
+ */
30
+ function initialize()
31
+ {
32
+ if ( ! $this->config["keys"]["id"] || ! $this->config["keys"]["secret"] ){
33
+ throw new Exception( "Your application id and secret are required in order to connect to {$this->providerId}.", 4 );
34
+ }
35
+
36
+ // override requested scope
37
+ if( isset( $this->config["scope"] ) && ! empty( $this->config["scope"] ) ){
38
+ $this->scope = $this->config["scope"];
39
+ }
40
+
41
+ // include OAuth2 client and Paypal client
42
+ require_once Hybrid_Auth::$config["path_libraries"] . "OAuth/OAuth2Client.php";
43
+ require_once Hybrid_Auth::$config["path_libraries"] . "Paypal/PaypalOAuth2Client.php";
44
+
45
+ // create a new OAuth2 client instance
46
+ $this->api = new PaypalOAuth2Client( $this->config["keys"]["id"], $this->config["keys"]["secret"], $this->endpoint );
47
+
48
+ // If we have an access token, set it
49
+ if( $this->token( "access_token" ) ){
50
+ $this->api->access_token = $this->token( "access_token" );
51
+ $this->api->refresh_token = $this->token( "refresh_token" );
52
+ $this->api->access_token_expires_in = $this->token( "expires_in" );
53
+ $this->api->access_token_expires_at = $this->token( "expires_at" );
54
+ }
55
+
56
+ // Set curl proxy if exist
57
+ if( isset( Hybrid_Auth::$config["proxy"] ) ){
58
+ $this->api->curl_proxy = Hybrid_Auth::$config["proxy"];
59
+ }
60
+
61
+ // Provider api end-points
62
+ if ($this->sandbox) {
63
+ $this->api->authorize_url = "https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize";
64
+ $this->api->token_url = "https://api.sandbox.paypal.com/v1/oauth2/token";
65
+ $this->api->token_info_url = "https://api.sandbox.paypal.com/v1/identity/openidconnect/tokenservice";
66
+ } else {
67
+ $this->api->authorize_url = "https://www.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize";
68
+ $this->api->token_url = "https://api.paypal.com/v1/oauth2/token";
69
+ $this->api->token_info_url = "https://api.paypal.com/v1/identity/openidconnect/tokenservice";
70
+ }
71
+
72
+ if (Hybrid_Auth::$config["debug_mode"]) {
73
+ $this->api->curl_log = Hybrid_Auth::$config["debug_file"];
74
+ }
75
+ }
76
+
77
+ /**
78
+ * begin login step
79
+ */
80
+ /*function loginBegin()
81
+ {
82
+ $parameters = array("scope" => $this->scope, "grant_type" => "client_credentials");
83
+ $optionals = array("scope", "access_type", "redirect_uri", "approval_prompt", "hd");
84
+
85
+ foreach ($optionals as $parameter){
86
+ if( isset( $this->config[$parameter] ) && ! empty( $this->config[$parameter] ) ){
87
+ $parameters[$parameter] = $this->config[$parameter];
88
+ }
89
+ }
90
+
91
+ Hybrid_Auth::redirect( $this->api->authorizeUrl( $parameters ) );
92
+ }*/
93
+
94
+ /**
95
+ * load the user profile from the IDp api client
96
+ */
97
+ function getUserProfile()
98
+ {
99
+ // refresh tokens if needed
100
+ $this->refreshToken();
101
+
102
+ // ask google api for user infos
103
+ $response = $this->api->api( "https://api".($this->sandbox?'.sandbox' : '').".paypal.com/v1/identity/openidconnect/userinfo/?schema=openid" );
104
+
105
+ if ( ! isset( $response->payer_id ) || isset( $response->message ) ){
106
+ throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
107
+ }
108
+
109
+ $this->user->profile->identifier = (property_exists($response,'payer_id'))?$response->payer_id:"";
110
+ $this->user->profile->firstName = (property_exists($response,'given_name'))?$response->given_name:"";
111
+ $this->user->profile->lastName = (property_exists($response,'family_name'))?$response->family_name:"";
112
+ $this->user->profile->displayName = (property_exists($response,'name'))?$response->name:"";
113
+ $this->user->profile->photoURL = (property_exists($response,'picture'))?$response->picture:"";
114
+ $this->user->profile->gender = (property_exists($response,'gender'))?$response->gender:"";
115
+ $this->user->profile->email = (property_exists($response,'email'))?$response->email:"";
116
+ $this->user->profile->emailVerified = (property_exists($response,'email_verified'))?$response->email_verified:"";
117
+ $this->user->profile->language = (property_exists($response,'locale'))?$response->locale:"";
118
+ $this->user->profile->phone = (property_exists($response,'phone_number'))?$response->phone_number:"";
119
+ if (property_exists($response,'address')) {
120
+ $address = $response->address;
121
+ $this->user->profile->address = (property_exists($address,'street_address'))?$address->street_address:"";
122
+ $this->user->profile->city = (property_exists($address,'locality'))?$address->locality:"";
123
+ $this->user->profile->zip = (property_exists($address,'postal_code'))?$address->postal_code:"";
124
+ $this->user->profile->country = (property_exists($address,'country'))?$address->country:"";
125
+ $this->user->profile->region = (property_exists($address,'region'))?$address->region:"";
126
+ }
127
+
128
+ if( property_exists($response,'birthdate') ){
129
+ if (strpos($response->birthdate, '-') === false) {
130
+ if ($response->birthdate !== '0000') {
131
+ $this->user->profile->birthYear = (int) $response->birthdate;
132
+ }
133
+ } else {
134
+ list($birthday_year, $birthday_month, $birthday_day) = explode( '-', $response->birthdate );
135
+
136
+ $this->user->profile->birthDay = (int) $birthday_day;
137
+ $this->user->profile->birthMonth = (int) $birthday_month;
138
+ if ($birthday_year !== '0000') {
139
+ $this->user->profile->birthYear = (int) $birthday_year;
140
+ }
141
+ }
142
+ }
143
+
144
+ return $this->user->profile;
145
+ }
146
+ }
hybridauth/Hybrid/Providers/PixelPin.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * HybridAuth
4
+ * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
+ */
7
+
8
+ /**
9
+ * Hybrid_Providers_PixelPin provider adapter based on OAuth2 protocol
10
+ *
11
+ * http://hybridauth.sourceforge.net/userguide/IDProvider_info_PixelPin.html
12
+ */
13
+ class Hybrid_Providers_PixelPin extends Hybrid_Provider_Model_OAuth2
14
+ {
15
+ /**
16
+ * IDp wrappers initializer
17
+ */
18
+ function initialize()
19
+ {
20
+ parent::initialize();
21
+
22
+ // Provider apis end-points
23
+ $this->api->api_base_url = "https://ws3.pixelpin.co.uk/index.php/api/";
24
+ $this->api->authorize_url = "https://login.pixelpin.co.uk/OAuth2/FLogin.aspx";
25
+ $this->api->token_url = "https://ws3.pixelpin.co.uk/index.php/api/token";
26
+
27
+ $this->api->sign_token_name = "oauth_token";
28
+ }
29
+
30
+ /**
31
+ * load the user profile from the IDp api client
32
+ */
33
+ function getUserProfile()
34
+ {
35
+ $data = $this->api->api( "userdata", "POST" );
36
+
37
+ if ( ! isset( $data->id ) ){
38
+ throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
39
+ }
40
+
41
+ $this->user->profile->identifier = $data->id;
42
+ $this->user->profile->firstName = $data->firstName;
43
+ $this->user->profile->displayName = $data->firstName;
44
+ $this->user->profile->email = $data->email;
45
+ $this->user->profile->emailVerified = $data->email;
46
+
47
+ return $this->user->profile;
48
+ }
49
+ }
hybridauth/Hybrid/Providers/Reddit.php ADDED
@@ -0,0 +1,205 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * HybridAuth
4
+ * http://hybridauth.sourceforge.net | https://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014 HybridAuth authors | hybridauth.sourceforge.net/licenses.html
6
+ */
7
+
8
+ /**
9
+ * Hybrid_Providers_Reddit
10
+ */
11
+ class Hybrid_Providers_Reddit extends Hybrid_Provider_Model_OAuth2
12
+ {
13
+ // default permissions
14
+ //full list at http://www.reddit.com/dev/api/oauth
15
+ public $scope = "identity";
16
+
17
+ /**
18
+ * IDp wrappers initializer
19
+ */
20
+ function initialize()
21
+ {
22
+ parent::initialize();
23
+
24
+ // Provider api end-points
25
+ $this->api->api_base_url = "http://www.reddit.com/api/v1/";
26
+ $this->api->authorize_url = "https://ssl.reddit.com/api/v1/authorize";
27
+ $this->api->token_url = "https://ssl.reddit.com/api/v1/access_token";
28
+ }
29
+
30
+ /**
31
+ * begin login step
32
+ */
33
+ function loginBegin()
34
+ {
35
+ // redirect the user to the provider authentication url
36
+ Hybrid_Auth::redirect( $this->api->authorizeUrl( array( "scope" => $this->scope, "duration" => "temporary", "state" => str_shuffle("abcdefghijkl123456789") ) ) );
37
+
38
+ }
39
+
40
+ /**
41
+ * finish login step
42
+ */
43
+ function loginFinish()
44
+ {
45
+ $error = (array_key_exists('error',$_REQUEST))?$_REQUEST['error']:"";
46
+
47
+ // check for errors
48
+ if ( $error ){
49
+ throw new Exception( "Authentication failed! {$this->providerId} returned an error: $error", 5 );
50
+ }
51
+
52
+ // try to authenticate user
53
+ $code = (array_key_exists('code',$_REQUEST))?$_REQUEST['code']:"";
54
+
55
+ try{
56
+ $this->authenticate( $code );
57
+ }
58
+ catch( Exception $e ){
59
+ throw new Exception( "User profile request failed! {$this->providerId} returned an error: $e", 6 );
60
+ }
61
+
62
+ // check if authenticated
63
+ if ( ! $this->api->access_token ){
64
+ throw new Exception( "Authentication failed! {$this->providerId} returned an invalid access token.", 5 );
65
+ }
66
+
67
+ // store tokens
68
+ $this->token( "access_token" , $this->api->access_token );
69
+ $this->token( "refresh_token", $this->api->refresh_token );
70
+ $this->token( "expires_in" , $this->api->access_token_expires_in );
71
+ $this->token( "expires_at" , $this->api->access_token_expires_at );
72
+
73
+ // set user connected locally
74
+ $this->setUserConnected();
75
+ }
76
+
77
+ function authenticate( $code )
78
+ {
79
+ $params = array(
80
+ "client_id" => $this->api->client_id,
81
+ "grant_type" => "authorization_code",
82
+ "redirect_uri" => $this->api->redirect_uri,
83
+ "code" => $code
84
+ );
85
+
86
+ $http_headers = array();
87
+ $http_headers['Authorization'] = 'Basic ' . base64_encode( $this->api->client_id . ':' . $this->api->client_secret);
88
+
89
+ $response = $this->request( $this->api->token_url, http_build_query($params, '', '&'), 'POST', $http_headers );
90
+
91
+ $response = $this->parseRequestResult( $response );
92
+
93
+ if( ! $response || ! isset( $response->access_token ) ){
94
+ throw new Exception( "The Authorization Service has return: " . $response->error );
95
+ }
96
+
97
+ if( isset( $response->access_token ) ) $this->api->access_token = $response->access_token;
98
+ if( isset( $response->refresh_token ) ) $this->api->refresh_token = $response->refresh_token;
99
+ if( isset( $response->expires_in ) ) $this->api->access_token_expires_in = $response->expires_in;
100
+
101
+ // calculate when the access token expire
102
+ if( isset( $response->expires_in ) ) {
103
+ $this->api->access_token_expires_at = time() + $response->expires_in;
104
+ }
105
+ else {
106
+ $this->api->access_token_expires_at = time() + 3600;
107
+ }
108
+
109
+ return $response;
110
+ }
111
+
112
+ private function request( $url, $params = array(), $type="GET", $http_headers = null )
113
+ {
114
+ Hybrid_Logger::info( "Enter OAuth2Client::request( $url )" );
115
+ Hybrid_Logger::debug( "OAuth2Client::request(). dump request params: ", print_r( $params, true ) );
116
+
117
+ if( $type == "GET" ){
118
+ $url = $url . ( strpos( $url, '?' ) ? '&' : '?' ) . http_build_query($params, '', '&');
119
+ }
120
+
121
+ $this->http_info = array();
122
+ $ch = curl_init();
123
+
124
+ curl_setopt($ch, CURLOPT_URL , $url );
125
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1 );
126
+ curl_setopt($ch, CURLOPT_TIMEOUT , $this->api->curl_time_out );
127
+ curl_setopt($ch, CURLOPT_USERAGENT , $this->api->curl_useragent );
128
+ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , $this->api->curl_connect_time_out );
129
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , $this->api->curl_ssl_verifypeer );
130
+ curl_setopt($ch, CURLOPT_HTTPHEADER , $this->api->curl_header );
131
+
132
+ if (is_array($http_headers)) {
133
+ $header = array();
134
+ foreach($http_headers as $key => $parsed_urlvalue) {
135
+ $header[] = "$key: $parsed_urlvalue";
136
+ }
137
+
138
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
139
+ }
140
+ else{
141
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $this->api->curl_header );
142
+ }
143
+
144
+ if($this->api->curl_proxy){
145
+ curl_setopt( $ch, CURLOPT_PROXY , $this->api->curl_proxy);
146
+ }
147
+
148
+ if( $type == "POST" ){
149
+ curl_setopt($ch, CURLOPT_POST, 1);
150
+ if($params) curl_setopt( $ch, CURLOPT_POSTFIELDS, $params );
151
+ }
152
+
153
+ $response = curl_exec($ch);
154
+
155
+ Hybrid_Logger::debug( "OAuth2Client::request(). dump request info: ", print_r( curl_getinfo($ch), true ) );
156
+ Hybrid_Logger::debug( "OAuth2Client::request(). dump request result: ", print_r( $response, true ) );
157
+
158
+ $this->http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
159
+ $this->http_info = array_merge($this->http_info, curl_getinfo($ch));
160
+
161
+ curl_close ($ch);
162
+
163
+ return $response;
164
+ }
165
+
166
+ private function parseRequestResult( $result )
167
+ {
168
+ if( json_decode( $result ) ) return json_decode( $result );
169
+
170
+ parse_str( $result, $output );
171
+
172
+ $result = new StdClass();
173
+
174
+ foreach( $output as $k => $v )
175
+ $result->$k = $v;
176
+
177
+ return $result;
178
+ }
179
+
180
+ /**
181
+ * load the user profile from the IDp api client
182
+ *
183
+ * https://github.com/reddit/reddit/wiki/OAuth2
184
+ * https://github.com/adoy/PHP-OAuth2/blob/master/src/OAuth2/Client.php#L315
185
+ */
186
+ function getUserProfile()
187
+ {
188
+ $http_headers = array();
189
+ $http_headers['Authorization'] = 'Bearer ' . $this->api->access_token;
190
+
191
+ $response = $this->request( "https://oauth.reddit.com/api/v1/me.json?access_token=" . $this->api->access_token, false, 'GET', $http_headers );
192
+
193
+ $response = $this->parseRequestResult( $response );
194
+
195
+ if ( ! $response || ! isset( $response->name ) ){
196
+ throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
197
+ }
198
+
199
+ $this->user->profile->identifier = @ $response->name;
200
+ $this->user->profile->displayName = @ $response->name;
201
+ $this->user->profile->profileURL = "https://www.reddit.com/user/" . $this->user->profile->identifier . "/";
202
+
203
+ return $this->user->profile;
204
+ }
205
+ }
hybridauth/Hybrid/Providers/Steam.php CHANGED
@@ -1,4 +1,15 @@
1
  <?php
 
 
 
 
 
 
 
 
 
 
 
2
  class Hybrid_Providers_Steam extends Hybrid_Provider_Model_OpenID
3
  {
4
  var $openidIdentifier = "http://steamcommunity.com/openid";
@@ -12,9 +23,9 @@ class Hybrid_Providers_Steam extends Hybrid_Provider_Model_OpenID
12
 
13
  $uid = str_replace( "http://steamcommunity.com/openid/id/", "", $this->user->profile->identifier );
14
 
15
- if( $uid ){
16
- $data = curl_gets_url( "http://steamcommunity.com/profiles/$uid/?xml=1" );
17
-
18
  $data = @ new SimpleXMLElement( $data );
19
 
20
  if ( ! is_object( $data ) ){
@@ -28,7 +39,7 @@ class Hybrid_Providers_Steam extends Hybrid_Provider_Model_OpenID
28
  $realname = (string) $data->{'realname'};
29
 
30
  if( $realname ){
31
- $this->user->profile->displayName = $realname;
32
  }
33
 
34
  $customURL = (string) $data->{'customURL'};
@@ -42,18 +53,3 @@ class Hybrid_Providers_Steam extends Hybrid_Provider_Model_OpenID
42
  }
43
  }
44
  }
45
-
46
- function curl_gets_url( $curl_url ){
47
- $ch = curl_init();
48
- $curl_options = array(
49
- CURLOPT_URL => $curl_url,
50
- CURLOPT_RETURNTRANSFER => true,
51
- CURLOPT_FOLLOWLOCATION => true,
52
- CURLOPT_MAXREDIRS => 3,
53
- CURLOPT_TIMEOUT => 10
54
- );
55
- curl_setopt_array($ch, $curl_options);
56
- $data = curl_exec($ch);
57
-
58
- return $data;
59
- }
1
  <?php
2
+ /*!
3
+ * HybridAuth
4
+ * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
+ */
7
+
8
+ /**
9
+ * Hybrid_Providers_Steam provider adapter based on OpenID protocol
10
+ *
11
+ * http://hybridauth.sourceforge.net/userguide/IDProvider_info_Steam.html
12
+ */
13
  class Hybrid_Providers_Steam extends Hybrid_Provider_Model_OpenID
14
  {
15
  var $openidIdentifier = "http://steamcommunity.com/openid";
23
 
24
  $uid = str_replace( "http://steamcommunity.com/openid/id/", "", $this->user->profile->identifier );
25
 
26
+ if( $uid ){
27
+ $data = @ file_get_contents( "http://steamcommunity.com/profiles/$uid/?xml=1" );
28
+
29
  $data = @ new SimpleXMLElement( $data );
30
 
31
  if ( ! is_object( $data ) ){
39
  $realname = (string) $data->{'realname'};
40
 
41
  if( $realname ){
42
+ $this->user->profile->firstName = $realname;
43
  }
44
 
45
  $customURL = (string) $data->{'customURL'};
53
  }
54
  }
55
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
hybridauth/Hybrid/Providers/Twitter.php CHANGED
@@ -17,15 +17,97 @@ class Hybrid_Providers_Twitter extends Hybrid_Provider_Model_OAuth1
17
  {
18
  parent::initialize();
19
 
20
- // Provider api end-points
21
  $this->api->api_base_url = "https://api.twitter.com/1.1/";
22
  $this->api->authorize_url = "https://api.twitter.com/oauth/authenticate";
23
  $this->api->request_token_url = "https://api.twitter.com/oauth/request_token";
24
  $this->api->access_token_url = "https://api.twitter.com/oauth/access_token";
25
 
 
 
 
 
 
 
 
 
26
  $this->api->curl_auth_header = false;
27
  }
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  /**
30
  * load the user profile from the IDp api client
31
  */
@@ -47,7 +129,7 @@ class Hybrid_Providers_Twitter extends Hybrid_Provider_Model_OAuth1
47
  $this->user->profile->displayName = (property_exists($response,'screen_name'))?$response->screen_name:"";
48
  $this->user->profile->description = (property_exists($response,'description'))?$response->description:"";
49
  $this->user->profile->firstName = (property_exists($response,'name'))?$response->name:"";
50
- $this->user->profile->photoURL = (property_exists($response,'profile_image_url'))?$response->profile_image_url:"";
51
  $this->user->profile->profileURL = (property_exists($response,'screen_name'))?("http://twitter.com/".$response->screen_name):"";
52
  $this->user->profile->webSiteURL = (property_exists($response,'url'))?$response->url:"";
53
  $this->user->profile->region = (property_exists($response,'location'))?$response->location:"";
@@ -104,19 +186,42 @@ class Hybrid_Providers_Twitter extends Hybrid_Provider_Model_OAuth1
104
  return $contacts;
105
  }
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  /**
108
- * update user status
109
- */
110
- function setUserStatus( $status )
111
- {
112
- $parameters = array( 'status' => $status );
113
- $response = $this->api->post( 'statuses/update.json', $parameters );
 
 
 
 
 
 
 
114
 
115
- // check the last HTTP status code returned
116
- if ( $this->api->http_code != 200 ){
117
- throw new Exception( "Update user status failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ) );
118
- }
119
- }
120
 
121
  /**
122
  * load the user latest activity
17
  {
18
  parent::initialize();
19
 
20
+ // Provider api end-points
21
  $this->api->api_base_url = "https://api.twitter.com/1.1/";
22
  $this->api->authorize_url = "https://api.twitter.com/oauth/authenticate";
23
  $this->api->request_token_url = "https://api.twitter.com/oauth/request_token";
24
  $this->api->access_token_url = "https://api.twitter.com/oauth/access_token";
25
 
26
+ if ( isset( $this->config['api_version'] ) && $this->config['api_version'] ){
27
+ $this->api->api_base_url = "https://api.twitter.com/{$this->config['api_version']}/";
28
+ }
29
+
30
+ if ( isset( $this->config['authorize'] ) && $this->config['authorize'] ){
31
+ $this->api->authorize_url = "https://api.twitter.com/oauth/authorize";
32
+ }
33
+
34
  $this->api->curl_auth_header = false;
35
  }
36
 
37
+ /**
38
+ * begin login step
39
+ */
40
+ function loginBegin()
41
+ {
42
+ // Initiate the Reverse Auth flow; cf. https://dev.twitter.com/docs/ios/using-reverse-auth
43
+ if (isset($_REQUEST['reverse_auth']) && ($_REQUEST['reverse_auth'] == 'yes')){
44
+ $stage1 = $this->api->signedRequest( $this->api->request_token_url, 'POST', array( 'x_auth_mode' => 'reverse_auth' ) );
45
+ if ( $this->api->http_code != 200 ){
46
+ throw new Exception( "Authentication failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ), 5 );
47
+ }
48
+ $responseObj = array( 'x_reverse_auth_parameters' => $stage1, 'x_reverse_auth_target' => $this->config["keys"]["key"] );
49
+ $response = json_encode($responseObj);
50
+ header( "Content-Type: application/json", true, 200 ) ;
51
+ echo $response;
52
+ die();
53
+ }
54
+ $tokens = $this->api->requestToken( $this->endpoint );
55
+
56
+ // request tokens as received from provider
57
+ $this->request_tokens_raw = $tokens;
58
+
59
+ // check the last HTTP status code returned
60
+ if ( $this->api->http_code != 200 ){
61
+ throw new Exception( "Authentication failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ), 5 );
62
+ }
63
+
64
+ if ( ! isset( $tokens["oauth_token"] ) ){
65
+ throw new Exception( "Authentication failed! {$this->providerId} returned an invalid oauth token.", 5 );
66
+ }
67
+
68
+ $this->token( "request_token" , $tokens["oauth_token"] );
69
+ $this->token( "request_token_secret", $tokens["oauth_token_secret"] );
70
+
71
+ // redirect the user to the provider authentication url with force_login
72
+ if ( ( isset( $this->config['force_login'] ) && $this->config['force_login'] ) || ( isset( $this->config[ 'force' ] ) && $this->config[ 'force' ] === true ) ){
73
+ Hybrid_Auth::redirect( $this->api->authorizeUrl( $tokens, array( 'force_login' => true ) ) );
74
+ }
75
+
76
+ // else, redirect the user to the provider authentication url
77
+ Hybrid_Auth::redirect( $this->api->authorizeUrl( $tokens ) );
78
+ }
79
+
80
+ /**
81
+ * finish login step
82
+ */
83
+ function loginFinish()
84
+ {
85
+ // in case we are completing a Reverse Auth flow; cf. https://dev.twitter.com/docs/ios/using-reverse-auth
86
+ if(isset($_REQUEST['oauth_token_secret'])){
87
+ $tokens = $_REQUEST;
88
+ $this->access_tokens_raw = $tokens;
89
+
90
+ // we should have an access_token unless something has gone wrong
91
+ if ( ! isset( $tokens["oauth_token"] ) ){
92
+ throw new Exception( "Authentication failed! {$this->providerId} returned an invalid access token.", 5 );
93
+ }
94
+
95
+ // Get rid of tokens we don't need
96
+ $this->deleteToken( "request_token" );
97
+ $this->deleteToken( "request_token_secret" );
98
+
99
+ // Store access_token and secret for later use
100
+ $this->token( "access_token" , $tokens['oauth_token'] );
101
+ $this->token( "access_token_secret" , $tokens['oauth_token_secret'] );
102
+
103
+ // set user as logged in to the current provider
104
+ $this->setUserConnected();
105
+ return;
106
+ }
107
+ parent::loginFinish();
108
+ }
109
+
110
+
111
  /**
112
  * load the user profile from the IDp api client
113
  */
129
  $this->user->profile->displayName = (property_exists($response,'screen_name'))?$response->screen_name:"";
130
  $this->user->profile->description = (property_exists($response,'description'))?$response->description:"";
131
  $this->user->profile->firstName = (property_exists($response,'name'))?$response->name:"";
132
+ $this->user->profile->photoURL = (property_exists($response,'profile_image_url'))?(str_replace('_normal', '', $response->profile_image_url)):"";
133
  $this->user->profile->profileURL = (property_exists($response,'screen_name'))?("http://twitter.com/".$response->screen_name):"";
134
  $this->user->profile->webSiteURL = (property_exists($response,'url'))?$response->url:"";
135
  $this->user->profile->region = (property_exists($response,'location'))?$response->location:"";
186
  return $contacts;
187
  }
188
 
189
+ /**
190
+ * update user status
191
+ */
192
+ function setUserStatus( $status )
193
+ {
194
+
195
+ if( is_array( $status ) && isset( $status[ 'message' ] ) && isset( $status[ 'picture' ] ) ){
196
+ $response = $this->api->post( 'statuses/update_with_media.json', array( 'status' => $status[ 'message' ], 'media[]' => file_get_contents( $status[ 'picture' ] ) ), null, null, true );
197
+ }else{
198
+ $response = $this->api->post( 'statuses/update.json', array( 'status' => $status ) );
199
+ }
200
+
201
+ // check the last HTTP status code returned
202
+ if ( $this->api->http_code != 200 ){
203
+ throw new Exception( "Update user status failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ) );
204
+ }
205
+
206
+ return $response;
207
+ }
208
+
209
+
210
  /**
211
+ * get user status
212
+ */
213
+ function getUserStatus( $tweetid )
214
+ {
215
+ $info = $this->api->get( 'statuses/show.json?id=' . $tweetid . '&include_entities=true' );
216
+
217
+ // check the last HTTP status code returned
218
+ if ( $this->api->http_code != 200 || !isset( $info->id ) ){
219
+ throw new Exception( "Cannot retrieve user status! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ) );
220
+ }
221
+
222
+ return $info;
223
+ }
224
 
 
 
 
 
 
225
 
226
  /**
227
  * load the user latest activity
hybridauth/Hybrid/Providers/Vkontakte.php CHANGED
@@ -35,10 +35,10 @@ class Hybrid_Providers_Vkontakte extends Hybrid_Provider_Model_OAuth2
35
 
36
  // check for errors
37
  if ( $error ){
38
- throw new Exception( "Authentification failed! {$this->providerId} returned an error: $error", 5 );
39
  }
40
 
41
- // try to authenicate user
42
  $code = (array_key_exists('code',$_REQUEST))?$_REQUEST['code']:"";
43
 
44
  try{
@@ -50,7 +50,7 @@ class Hybrid_Providers_Vkontakte extends Hybrid_Provider_Model_OAuth2
50
 
51
  // check if authenticated
52
  if ( !property_exists($response,'user_id') || ! $this->api->access_token ){
53
- throw new Exception( "Authentification failed! {$this->providerId} returned an invalid access token.", 5 );
54
  }
55
 
56
  // store tokens
@@ -76,21 +76,21 @@ class Hybrid_Providers_Vkontakte extends Hybrid_Provider_Model_OAuth2
76
 
77
  // Vkontakte requires user id, not just token for api access
78
  $params['uid'] = Hybrid_Auth::storage()->get( "hauth_session.{$this->providerId}.user_id" );
79
- $params['fields'] = 'first_name,last_name,nickname,screen_name,sex,bdate,timezone,photo_rec,photo_big';
80
  // ask vkontakte api for user infos
81
  $response = $this->api->api( "https://api.vk.com/method/getProfiles" , 'GET', $params);
82
 
83
 
84
  if (!isset( $response->response[0] ) || !isset( $response->response[0]->uid ) || isset( $response->error ) ){
85
- throw new Exception( "User profile request failed! {$this->providerId} returned an invalide response.", 6 );
86
  }
87
 
88
  $response = $response->response[0];
89
  $this->user->profile->identifier = (property_exists($response,'uid'))?$response->uid:"";
90
  $this->user->profile->firstName = (property_exists($response,'first_name'))?$response->first_name:"";
91
  $this->user->profile->lastName = (property_exists($response,'last_name'))?$response->last_name:"";
92
- $this->user->profile->displayName = (property_exists($response,'nickname'))?$response->nickname:"";
93
- $this->user->profile->photoURL = (property_exists($response,'photo_big'))?$response->photo_big:"";
94
  $this->user->profile->profileURL = (property_exists($response,'screen_name'))?"http://vk.com/" . $response->screen_name:"";
95
 
96
  if(property_exists($response,'sex')){
@@ -103,7 +103,15 @@ class Hybrid_Providers_Vkontakte extends Hybrid_Provider_Model_OAuth2
103
  }
104
 
105
  if( property_exists($response,'bdate') ){
106
- list($birthday_year, $birthday_month, $birthday_day) = explode( '.', $response->bdate );
 
 
 
 
 
 
 
 
107
 
108
  $this->user->profile->birthDay = (int) $birthday_day;
109
  $this->user->profile->birthMonth = (int) $birthday_month;
@@ -112,4 +120,32 @@ class Hybrid_Providers_Vkontakte extends Hybrid_Provider_Model_OAuth2
112
 
113
  return $this->user->profile;
114
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  }
35
 
36
  // check for errors
37
  if ( $error ){
38
+ throw new Exception( "Authentication failed! {$this->providerId} returned an error: $error", 5 );
39
  }
40
 
41
+ // try to authenticate user
42
  $code = (array_key_exists('code',$_REQUEST))?$_REQUEST['code']:"";
43
 
44
  try{
50
 
51
  // check if authenticated
52
  if ( !property_exists($response,'user_id') || ! $this->api->access_token ){
53
+ throw new Exception( "Authentication failed! {$this->providerId} returned an invalid access token.", 5 );
54
  }
55
 
56
  // store tokens
76
 
77
  // Vkontakte requires user id, not just token for api access
78
  $params['uid'] = Hybrid_Auth::storage()->get( "hauth_session.{$this->providerId}.user_id" );
79
+ $params['fields'] = 'first_name,last_name,nickname,screen_name,sex,bdate,timezone,photo_rec,photo_medium';
80
  // ask vkontakte api for user infos
81
  $response = $this->api->api( "https://api.vk.com/method/getProfiles" , 'GET', $params);
82
 
83
 
84
  if (!isset( $response->response[0] ) || !isset( $response->response[0]->uid ) || isset( $response->error ) ){
85
+ throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
86
  }
87
 
88
  $response = $response->response[0];
89
  $this->user->profile->identifier = (property_exists($response,'uid'))?$response->uid:"";
90
  $this->user->profile->firstName = (property_exists($response,'first_name'))?$response->first_name:"";
91
  $this->user->profile->lastName = (property_exists($response,'last_name'))?$response->last_name:"";
92
+ $this->user->profile->displayName = (property_exists($response,'screen_name'))?$response->screen_name:"";
93
+ $this->user->profile->photoURL = (property_exists($response,'photo_medium'))?$response->photo_medium:"";
94
  $this->user->profile->profileURL = (property_exists($response,'screen_name'))?"http://vk.com/" . $response->screen_name:"";
95
 
96
  if(property_exists($response,'sex')){
103
  }
104
 
105
  if( property_exists($response,'bdate') ){
106
+
107
+ $birthday = explode('.', $response->bdate);
108
+
109
+ if (count($birthday) === 3) {
110
+ list($birthday_year, $birthday_month, $birthday_day) = $birthday;
111
+ } else {
112
+ $birthday_year = date('Y');
113
+ list($birthday_month, $birthday_day) = $birthday;
114
+ }
115
 
116
  $this->user->profile->birthDay = (int) $birthday_day;
117
  $this->user->profile->birthMonth = (int) $birthday_month;
120
 
121
  return $this->user->profile;
122
  }
123
+
124
+ /**
125
+ * load the user contacts
126
+ */
127
+ function getUserContacts()
128
+ {
129
+ $params=array(
130
+ 'fields' => 'nickname, domain, sex, bdate, city, country, timezone, photo_200_orig'
131
+ );
132
+
133
+ $response = $this->api->api('https://api.vk.com/method/friends.get','GET',$params);
134
+
135
+ if(!$response || !count($response->response)){
136
+ return array();
137
+ }
138
+
139
+ $contacts = array();
140
+ foreach( $response->response as $item ){
141
+ $uc = new Hybrid_User_Contact();
142
+ $uc->identifier = $item->uid;
143
+ $uc->displayName = $item->first_name.' '.$item->last_name;
144
+ $uc->profileURL = 'http://vk.com/'.$item->domain;
145
+ $uc->photoURL = $item->photo_200_orig;
146
+ $contacts[] = $uc;
147
+ }
148
+
149
+ return $contacts;
150
+ }
151
  }
hybridauth/Hybrid/Providers/Yahoo.php CHANGED
@@ -14,18 +14,18 @@
14
  */
15
  class Hybrid_Providers_Yahoo extends Hybrid_Provider_Model_OpenID
16
  {
17
- var $openidIdentifier = "https://open.login.yahooapis.com/openid20/www.yahoo.com/xrds";
18
 
19
- /**
20
- * finish login step
21
- */
22
- function loginFinish()
23
- {
24
- parent::loginFinish();
25
 
26
- $this->user->profile->emailVerified = $this->user->profile->email;
27
 
28
- // restore the user profile
29
- Hybrid_Auth::storage()->set( "hauth_session.{$this->providerId}.user", $this->user );
30
- }
31
  }
14
  */
15
  class Hybrid_Providers_Yahoo extends Hybrid_Provider_Model_OpenID
16
  {
17
+ var $openidIdentifier = "https://open.login.yahooapis.com/openid20/www.yahoo.com/xrds";
18
 
19
+ /**
20
+ * finish login step
21
+ */
22
+ function loginFinish()
23
+ {
24
+ parent::loginFinish();
25
 
26
+ $this->user->profile->emailVerified = $this->user->profile->email;
27
 
28
+ // restore the user profile
29
+ Hybrid_Auth::storage()->set( "hauth_session.{$this->providerId}.user", $this->user );
30
+ }
31
  }
hybridauth/Hybrid/Providers/Yandex.php CHANGED
@@ -35,7 +35,7 @@ class Hybrid_Providers_Yandex extends Hybrid_Provider_Model_OAuth2
35
  {
36
  $response = $this->api->api( "?format=json" );
37
  if ( ! isset( $response->id ) ){
38
- throw new Exception( "User profile request failed! {$this->providerId} returned an invalide response.", 6 );
39
  }
40
 
41
  $this->user->profile->identifier = (property_exists($response,'id'))?$response->id:"";
@@ -48,7 +48,7 @@ class Hybrid_Providers_Yandex extends Hybrid_Provider_Model_OAuth2
48
  $this->user->profile->email = (property_exists($response,'default_email'))?$response->default_email:"";
49
  $this->user->profile->emailVerified = (property_exists($response,'default_email'))?$response->default_email:"";
50
 
51
- if( property_exists($response,'birthday') ){
52
  list($birthday_year, $birthday_month, $birthday_day) = explode( '-', $response->birthday );
53
 
54
  $this->user->profile->birthDay = (int) $birthday_day;
@@ -58,4 +58,4 @@ class Hybrid_Providers_Yandex extends Hybrid_Provider_Model_OAuth2
58
 
59
  return $this->user->profile;
60
  }
61
- }
35
  {
36
  $response = $this->api->api( "?format=json" );
37
  if ( ! isset( $response->id ) ){
38
+ throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
39
  }
40
 
41
  $this->user->profile->identifier = (property_exists($response,'id'))?$response->id:"";
48
  $this->user->profile->email = (property_exists($response,'default_email'))?$response->default_email:"";
49
  $this->user->profile->emailVerified = (property_exists($response,'default_email'))?$response->default_email:"";
50
 
51
+ if( property_exists($response,'birthday') && ! empty($response->birthday) ){
52
  list($birthday_year, $birthday_month, $birthday_day) = explode( '-', $response->birthday );
53
 
54
  $this->user->profile->birthDay = (int) $birthday_day;
58
 
59
  return $this->user->profile;
60
  }
61
+ }
hybridauth/Hybrid/Storage.php CHANGED
@@ -1,15 +1,20 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
 
 
8
  /**
9
  * HybridAuth storage manager
10
  */
11
- class Hybrid_Storage
12
  {
 
 
 
13
  function __construct()
14
  {
15
  if ( ! session_id() ){
@@ -21,8 +26,13 @@ class Hybrid_Storage
21
  $this->config( "php_session_id", session_id() );
22
  $this->config( "version", Hybrid_Auth::$version );
23
  }
24
-
25
- public function config($key, $value=null)
 
 
 
 
 
26
  {
27
  $key = strtolower( $key );
28
 
@@ -35,7 +45,11 @@ class Hybrid_Storage
35
 
36
  return NULL;
37
  }
38
-
 
 
 
 
39
  public function get($key)
40
  {
41
  $key = strtolower( $key );
@@ -46,41 +60,66 @@ class Hybrid_Storage
46
 
47
  return NULL;
48
  }
49
-
 
 
 
 
 
50
  public function set( $key, $value )
51
  {
52
- $key = strtolower( $key );
53
 
54
- $_SESSION["HA::STORE"][$key] = serialize( $value );
55
  }
56
-
 
 
 
57
  function clear()
58
  {
59
  $_SESSION["HA::STORE"] = ARRAY();
60
- }
61
-
 
 
 
 
62
  function delete($key)
63
  {
64
  $key = strtolower( $key );
65
 
66
  if( isset( $_SESSION["HA::STORE"], $_SESSION["HA::STORE"][$key] ) ){
67
- unset( $_SESSION["HA::STORE"][$key] );
 
 
68
  }
69
  }
70
-
 
 
 
 
71
  function deleteMatch($key)
72
  {
73
  $key = strtolower( $key );
74
 
75
  if( isset( $_SESSION["HA::STORE"] ) && count( $_SESSION["HA::STORE"] ) ) {
76
- foreach( $_SESSION["HA::STORE"] as $k => $v ){
 
77
  if( strstr( $k, $key ) ){
78
- unset( $_SESSION["HA::STORE"][ $k ] );
79
  }
80
  }
 
 
81
  }
82
  }
83
-
 
 
 
 
84
  function getSessionData()
85
  {
86
  if( isset( $_SESSION["HA::STORE"] ) ){
@@ -89,7 +128,11 @@ class Hybrid_Storage
89
 
90
  return NULL;
91
  }
92
-
 
 
 
 
93
  function restoreSessionData( $sessiondata = NULL )
94
  {
95
  $_SESSION["HA::STORE"] = unserialize( $sessiondata );
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
+ require_once realpath( dirname( __FILE__ ) ) . "/StorageInterface.php";
9
+
10
  /**
11
  * HybridAuth storage manager
12
  */
13
+ class Hybrid_Storage implements Hybrid_Storage_Interface
14
  {
15
+ /**
16
+ * Constructor
17
+ */
18
  function __construct()
19
  {
20
  if ( ! session_id() ){
26
  $this->config( "php_session_id", session_id() );
27
  $this->config( "version", Hybrid_Auth::$version );
28
  }
29
+
30
+ /**
31
+ * Config
32
+ * @param String $key
33
+ * @param String $value
34
+ */
35
+ public function config($key, $value = null)
36
  {
37
  $key = strtolower( $key );
38
 
45
 
46
  return NULL;
47
  }
48
+
49
+ /**
50
+ * Get a key
51
+ * @param String $key
52
+ */
53
  public function get($key)
54
  {
55
  $key = strtolower( $key );
60
 
61
  return NULL;
62
  }
63
+
64
+ /**
65
+ * GEt a set of key and value
66
+ * @param String $key
67
+ * @param String $value
68
+ */
69
  public function set( $key, $value )
70
  {
71
+ $key = strtolower( $key );
72
 
73
+ $_SESSION["HA::STORE"][$key] = serialize( $value );
74
  }
75
+
76
+ /**
77
+ * Clear session storage
78
+ */
79
  function clear()
80
  {
81
  $_SESSION["HA::STORE"] = ARRAY();
82
+ }
83
+
84
+ /**
85
+ * Delete a specific key
86
+ * @param String $key
87
+ */
88
  function delete($key)
89
  {
90
  $key = strtolower( $key );
91
 
92
  if( isset( $_SESSION["HA::STORE"], $_SESSION["HA::STORE"][$key] ) ){
93
+ $f = $_SESSION['HA::STORE'];
94
+ unset($f[$key]);
95
+ $_SESSION["HA::STORE"] = $f;
96
  }
97
  }
98
+
99
+ /**
100
+ * Delete a set
101
+ * @param String $key
102
+ */
103
  function deleteMatch($key)
104
  {
105
  $key = strtolower( $key );
106
 
107
  if( isset( $_SESSION["HA::STORE"] ) && count( $_SESSION["HA::STORE"] ) ) {
108
+ $f = $_SESSION['HA::STORE'];
109
+ foreach( $f as $k => $v ){
110
  if( strstr( $k, $key ) ){
111
+ unset( $f[ $k ] );
112
  }
113
  }
114
+ $_SESSION["HA::STORE"] = $f;
115
+
116
  }
117
  }
118
+
119
+ /**
120
+ * Get the storage session data into an array
121
+ * @return Array
122
+ */
123
  function getSessionData()
124
  {
125
  if( isset( $_SESSION["HA::STORE"] ) ){
128
 
129
  return NULL;
130
  }
131
+
132
+ /**
133
+ * Restore the storage back into session from an array
134
+ * @param Array $sessiondata
135
+ */
136
  function restoreSessionData( $sessiondata = NULL )
137
  {
138
  $_SESSION["HA::STORE"] = unserialize( $sessiondata );
hybridauth/Hybrid/StorageInterface.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * HybridAuth
4
+ * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
+ */
7
+
8
+ /**
9
+ * HybridAuth storage manager interface
10
+ */
11
+ interface Hybrid_Storage_Interface
12
+ {
13
+ public function config($key, $value);
14
+
15
+ public function get($key);
16
+
17
+ public function set( $key, $value );
18
+
19
+ function clear();
20
+
21
+ function delete($key);
22
+
23
+ function deleteMatch($key);
24
+
25
+ function getSessionData();
26
+
27
+ function restoreSessionData( $sessiondata);
28
+ }
hybridauth/Hybrid/User.php CHANGED
@@ -1,26 +1,35 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
9
- * The Hybrid_User class represents the current loggedin user
10
  */
11
  class Hybrid_User
12
  {
13
- /* The ID (name) of the connected provider */
 
 
 
14
  public $providerId = NULL;
15
 
16
- /* timestamp connection to the provider */
 
 
 
17
  public $timestamp = NULL;
18
 
19
- /* user profile, containts the list of fields available in the normalized user profile structure used by HybridAuth. */
 
 
 
20
  public $profile = NULL;
21
 
22
  /**
23
- * inisialize the user object,
24
  */
25
  function __construct()
26
  {
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
9
+ * The Hybrid_User class represents the current logged in user
10
  */
11
  class Hybrid_User
12
  {
13
+ /**
14
+ * The ID (name) of the connected provider
15
+ * @var Numeric/String
16
+ */
17
  public $providerId = NULL;
18
 
19
+ /**
20
+ * timestamp connection to the provider
21
+ * @var timestamp
22
+ */
23
  public $timestamp = NULL;
24
 
25
+ /**
26
+ * User profile, contains the list of fields available in the normalized user profile structure used by HybridAuth.
27
+ * @var object
28
+ */
29
  public $profile = NULL;
30
 
31
  /**
32
+ * Initialize the user object.
33
  */
34
  function __construct()
35
  {
hybridauth/Hybrid/User_Activity.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
@@ -14,18 +14,33 @@
14
  */
15
  class Hybrid_User_Activity
16
  {
17
- /* activity id on the provider side, usually given as integer */
 
 
 
18
  public $id = NULL;
19
 
20
- /* activity date of creation */
 
 
 
21
  public $date = NULL;
22
 
23
- /* activity content as a string */
 
 
 
24
  public $text = NULL;
25
 
26
- /* user who created the activity */
 
 
 
27
  public $user = NULL;
28
-
 
 
 
29
  public function __construct()
30
  {
31
  $this->user = new stdClass();
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
14
  */
15
  class Hybrid_User_Activity
16
  {
17
+ /**
18
+ * activity id on the provider side, usually given as integer
19
+ * @var Numeric/String
20
+ */
21
  public $id = NULL;
22
 
23
+ /**
24
+ * activity date of creation
25
+ * @var timestamp
26
+ */
27
  public $date = NULL;
28
 
29
+ /**
30
+ * activity content as a string
31
+ * @var String
32
+ */
33
  public $text = NULL;
34
 
35
+ /**
36
+ * user who created the activity
37
+ * @var object
38
+ */
39
  public $user = NULL;
40
+
41
+ /**
42
+ * Constructor
43
+ */
44
  public function __construct()
45
  {
46
  $this->user = new stdClass();
hybridauth/Hybrid/User_Contact.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
@@ -14,24 +14,45 @@
14
  */
15
  class Hybrid_User_Contact
16
  {
17
- /* The Unique contact user ID */
 
 
 
18
  public $identifier = NULL;
19
 
20
- /* User website, blog, web page */
 
 
 
21
  public $webSiteURL = NULL;
22
 
23
- /* URL link to profile page on the IDp web site */
 
 
 
24
  public $profileURL = NULL;
25
 
26
- /* URL link to user photo or avatar */
 
 
 
27
  public $photoURL = NULL;
28
 
29
- /* User dispalyName provided by the IDp or a concatenation of first and last name */
30
- public $displayName = NULL;
 
 
 
31
 
32
- /* A short about_me */
 
 
 
33
  public $description = NULL;
34
 
35
- /* User email. Not all of IDp garant access to the user email */
36
- public $email = NULL;
 
 
 
37
  }
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
14
  */
15
  class Hybrid_User_Contact
16
  {
17
+ /**
18
+ * The Unique contact user ID
19
+ * @var Numeric
20
+ */
21
  public $identifier = NULL;
22
 
23
+ /**
24
+ * User website, blog, web page
25
+ * @var String
26
+ */
27
  public $webSiteURL = NULL;
28
 
29
+ /**
30
+ * URL link to profile page on the IDp web site
31
+ * @var String
32
+ */
33
  public $profileURL = NULL;
34
 
35
+ /**
36
+ * URL link to user photo or avatar
37
+ * @var String
38
+ */
39
  public $photoURL = NULL;
40
 
41
+ /**
42
+ * User displayName provided by the IDp or a concatenation of first and last name
43
+ * @var String
44
+ */
45
+ public $displayName = NULL;
46
 
47
+ /**
48
+ * A short about_me
49
+ * @var String
50
+ */
51
  public $description = NULL;
52
 
53
+ /**
54
+ * User email. Not all of IDp grant access to the user email
55
+ * @var String
56
+ */
57
+ public $email = NULL;
58
  }
hybridauth/Hybrid/User_Profile.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
@@ -16,69 +16,135 @@
16
  */
17
  class Hybrid_User_Profile
18
  {
19
- /* The Unique user's ID on the connected provider */
20
- public $identifier = NULL;
21
-
22
- /* User website, blog, web page */
23
- public $webSiteURL = NULL;
24
-
25
- /* URL link to profile page on the IDp web site */
26
- public $profileURL = NULL;
27
-
28
- /* URL link to user photo or avatar */
29
- public $photoURL = NULL;
30
-
31
- /* User dispalyName provided by the IDp or a concatenation of first and last name. */
32
- public $displayName = NULL;
33
-
34
- /* A short about_me */
35
- public $description = NULL;
36
-
37
- /* User's first name */
38
- public $firstName = NULL;
39
-
40
- /* User's last name */
41
- public $lastName = NULL;
42
-
43
- /* male or female */
44
- public $gender = NULL;
45
-
46
- /* language */
47
- public $language = NULL;
48
-
49
- /* User age, we dont calculate it. we return it as is if the IDp provide it. */
50
- public $age = NULL;
51
-
52
- /* User birth Day */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  public $birthDay = NULL;
54
 
55
- /* User birth Month */
 
 
 
56
  public $birthMonth = NULL;
57
 
58
- /* User birth Year */
 
 
 
59
  public $birthYear = NULL;
60
 
61
- /* User email. Note: not all of IDp garant access to the user email */
 
 
 
62
  public $email = NULL;
63
 
64
- /* Verified user email. Note: not all of IDp garant access to verified user email */
65
- public $emailVerified = NULL;
66
-
67
- /* phone number */
68
- public $phone = NULL;
69
-
70
- /* complete user address */
71
- public $address = NULL;
72
-
73
- /* user country */
74
- public $country = NULL;
75
-
76
- /* region */
77
- public $region = NULL;
78
-
79
- /** city */
80
- public $city = NULL;
81
-
82
- /* Postal code */
83
- public $zip = NULL;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  }
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  /**
16
  */
17
  class Hybrid_User_Profile
18
  {
19
+ /**
20
+ * The Unique user's ID on the connected provider
21
+ * @var Numeric
22
+ */
23
+ public $identifier = NULL;
24
+
25
+ /**
26
+ * User website, blog, web page
27
+ * @var String
28
+ */
29
+ public $webSiteURL = NULL;
30
+
31
+ /**
32
+ * URL link to profile page on the IDp web site
33
+ * @var String
34
+ */
35
+ public $profileURL = NULL;
36
+
37
+ /**
38
+ * URL link to user photo or avatar
39
+ * @var String
40
+ */
41
+ public $photoURL = NULL;
42
+
43
+ /**
44
+ * User displayName provided by the IDp or a concatenation of first and last name.
45
+ * @var String
46
+ */
47
+ public $displayName = NULL;
48
+
49
+ /**
50
+ * A short about_me
51
+ * @var String
52
+ */
53
+ public $description = NULL;
54
+
55
+ /**
56
+ * User's first name
57
+ * @var String
58
+ */
59
+ public $firstName = NULL;
60
+
61
+ /**
62
+ * User's last name
63
+ * @var String
64
+ */
65
+ public $lastName = NULL;
66
+
67
+ /**
68
+ * male or female
69
+ * @var String
70
+ */
71
+ public $gender = NULL;
72
+
73
+ /**
74
+ * Language
75
+ * @var String
76
+ */
77
+ public $language = NULL;
78
+
79
+ /**
80
+ * User age, we don't calculate it. we return it as is if the IDp provide it.
81
+ * @var Numeric
82
+ */
83
+ public $age = NULL;
84
+
85
+ /**
86
+ * User birth Day
87
+ * @var Numeric
88
+ */
89
  public $birthDay = NULL;
90
 
91
+ /**
92
+ * User birth Month
93
+ * @var Numeric/String
94
+ */
95
  public $birthMonth = NULL;
96
 
97
+ /**
98
+ * User birth Year
99
+ * @var Numeric
100
+ */
101
  public $birthYear = NULL;
102
 
103
+ /**
104
+ * User email. Note: not all of IDp grant access to the user email
105
+ * @var String
106
+ */
107
  public $email = NULL;
108
 
109
+ /**
110
+ * Verified user email. Note: not all of IDp grant access to verified user email
111
+ * @var String
112
+ */
113
+ public $emailVerified = NULL;
114
+
115
+ /**
116
+ * Phone number
117
+ * @var String
118
+ */
119
+ public $phone = NULL;
120
+
121
+ /**
122
+ * Complete user address
123
+ * @var String
124
+ */
125
+ public $address = NULL;
126
+
127
+ /**
128
+ * User country
129
+ * @var String
130
+ */
131
+ public $country = NULL;
132
+
133
+ /**
134
+ * Region
135
+ * @var String
136
+ */
137
+ public $region = NULL;
138
+
139
+ /**
140
+ * City
141
+ * @var String
142
+ */
143
+ public $city = NULL;
144
+
145
+ /**
146
+ * Postal code
147
+ * @var String
148
+ */
149
+ public $zip = NULL;
150
  }
hybridauth/Hybrid/resources/config.php.tpl ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * HybridAuth
4
+ * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
+ */
7
+
8
+ // ----------------------------------------------------------------------------------------
9
+ // HybridAuth Config file: http://hybridauth.sourceforge.net/userguide/Configuration.html
10
+ // ----------------------------------------------------------------------------------------
11
+
12
+ return
13
+ array(
14
+ "base_url" => "#GLOBAL_HYBRID_AUTH_URL_BASE#",
15
+
16
+ "providers" => array (
17
+ // openid providers
18
+ "OpenID" => array (
19
+ "enabled" => #OPENID_ADAPTER_STATUS#
20
+ ),
21
+
22
+ "AOL" => array (
23
+ "enabled" => #AOL_ADAPTER_STATUS#
24
+ ),
25
+
26
+ "Yahoo" => array (
27
+ "enabled" => #YAHOO_ADAPTER_STATUS#,
28
+ "keys" => array ( "id" => "#YAHOO_APPLICATION_APP_ID#", "secret" => "#YAHOO_APPLICATION_SECRET#" )
29
+ ),
30
+
31
+ "Google" => array (
32
+ "enabled" => #GOOGLE_ADAPTER_STATUS#,
33
+ "keys" => array ( "id" => "#GOOGLE_APPLICATION_APP_ID#", "secret" => "#GOOGLE_APPLICATION_SECRET#" )
34
+ ),
35
+
36
+ "Facebook" => array (
37
+ "enabled" => #FACEBOOK_ADAPTER_STATUS#,
38
+ "keys" => array ( "id" => "#FACEBOOK_APPLICATION_APP_ID#", "secret" => "#FACEBOOK_APPLICATION_SECRET#" )
39
+ ),
40
+
41
+ "Twitter" => array (
42
+ "enabled" => #TWITTER_ADAPTER_STATUS#,
43
+ "keys" => array ( "key" => "#TWITTER_APPLICATION_KEY#", "secret" => "#TWITTER_APPLICATION_SECRET#" )
44
+ ),
45
+
46
+ // windows live
47
+ "Live" => array (
48
+ "enabled" => #LIVE_ADAPTER_STATUS#,
49
+ "keys" => array ( "id" => "#LIVE_APPLICATION_APP_ID#", "secret" => "#LIVE_APPLICATION_SECRET#" )
50
+ ),
51
+
52
+ "MySpace" => array (
53
+ "enabled" => #MYSPACE_ADAPTER_STATUS#,
54
+ "keys" => array ( "key" => "#MYSPACE_APPLICATION_KEY#", "secret" => "#MYSPACE_APPLICATION_SECRET#" )
55
+ ),
56
+
57
+ "LinkedIn" => array (
58
+ "enabled" => #LINKEDIN_ADAPTER_STATUS#,
59
+ "keys" => array ( "key" => "#LINKEDIN_APPLICATION_KEY#", "secret" => "#LINKEDIN_APPLICATION_SECRET#" )
60
+ ),
61
+
62
+ "Foursquare" => array (
63
+ "enabled" => #FOURSQUARE_ADAPTER_STATUS#,
64
+ "keys" => array ( "id" => "#FOURSQUARE_APPLICATION_APP_ID#", "secret" => "#FOURSQUARE_APPLICATION_SECRET#" )
65
+ ),
66
+ ),
67
+
68
+ // if you want to enable logging, set 'debug_mode' to true then provide a writable file by the web server on "debug_file"
69
+ "debug_mode" => false,
70
+
71
+ "debug_file" => ""
72
+ );
hybridauth/Hybrid/thirdparty/Facebook/base_facebook.php CHANGED
@@ -31,6 +31,8 @@ class FacebookApiException extends Exception
31
  {
32
  /**
33
  * The result from the API server that represents the exception information.
 
 
34
  */
35
  protected $result;
36
 
@@ -42,7 +44,10 @@ class FacebookApiException extends Exception
42
  public function __construct($result) {
43
  $this->result = $result;
44
 
45
- $code = isset($result['error_code']) ? $result['error_code'] : 0;
 
 
 
46
 
47
  if (isset($result['error_description'])) {
48
  // OAuth 2.0 Draft 10 style
@@ -120,7 +125,7 @@ abstract class BaseFacebook
120
  /**
121
  * Version.
122
  */
123
- const VERSION = '3.2.2';
124
 
125
  /**
126
  * Signed Request Algorithm.
@@ -129,17 +134,22 @@ abstract class BaseFacebook
129
 
130
  /**
131
  * Default options for curl.
 
 
132
  */
133
  public static $CURL_OPTS = array(
134
- CURLOPT_CONNECTTIMEOUT => 10,
135
  CURLOPT_RETURNTRANSFER => true,
136
  CURLOPT_TIMEOUT => 60,
137
  CURLOPT_USERAGENT => 'facebook-php-3.2',
 
138
  );
139
 
140
  /**
141
  * List of query parameters that get automatically dropped when rebuilding
142
  * the current URL.
 
 
143
  */
144
  protected static $DROP_QUERY_PARAMS = array(
145
  'code',
@@ -149,6 +159,8 @@ abstract class BaseFacebook
149
 
150
  /**
151
  * Maps aliases to Facebook domains.
 
 
152
  */
153
  public static $DOMAIN_MAP = array(
154
  'api' => 'https://api.facebook.com/',
@@ -182,11 +194,15 @@ abstract class BaseFacebook
182
 
183
  /**
184
  * The data from the signed_request token.
 
 
185
  */
186
  protected $signedRequest;
187
 
188
  /**
189
  * A CSRF state variable to assist in the defense against CSRF attacks.
 
 
190
  */
191
  protected $state;
192
 
@@ -212,6 +228,13 @@ abstract class BaseFacebook
212
  */
213
  protected $trustForwarded = false;
214
 
 
 
 
 
 
 
 
215
  /**
216
  * Initialize a Facebook Application.
217
  *
@@ -219,6 +242,9 @@ abstract class BaseFacebook
219
  * - appId: the application ID
220
  * - secret: the application secret
221
  * - fileUpload: (optional) boolean indicating if file uploads are enabled
 
 
 
222
  *
223
  * @param array $config The application configuration
224
  */
@@ -231,6 +257,10 @@ abstract class BaseFacebook
231
  if (isset($config['trustForwarded']) && $config['trustForwarded']) {
232
  $this->trustForwarded = true;
233
  }
 
 
 
 
234
  $state = $this->getPersistentData('state');
235
  if (!empty($state)) {
236
  $this->state = $state;
@@ -241,6 +271,7 @@ abstract class BaseFacebook
241
  * Set the Application ID.
242
  *
243
  * @param string $appId The Application ID
 
244
  * @return BaseFacebook
245
  */
246
  public function setAppId($appId) {
@@ -261,8 +292,10 @@ abstract class BaseFacebook
261
  * Set the App Secret.
262
  *
263
  * @param string $apiSecret The App Secret
 
264
  * @return BaseFacebook
265
- * @deprecated
 
266
  */
267
  public function setApiSecret($apiSecret) {
268
  $this->setAppSecret($apiSecret);
@@ -273,6 +306,7 @@ abstract class BaseFacebook
273
  * Set the App Secret.
274
  *
275
  * @param string $appSecret The App Secret
 
276
  * @return BaseFacebook
277
  */
278
  public function setAppSecret($appSecret) {
@@ -284,7 +318,9 @@ abstract class BaseFacebook
284
  * Get the App Secret.
285
  *
286
  * @return string the App Secret
287
- * @deprecated
 
 
288
  */
289
  public function getApiSecret() {
290
  return $this->getAppSecret();
@@ -303,6 +339,7 @@ abstract class BaseFacebook
303
  * Set the file upload support status.
304
  *
305
  * @param boolean $fileUploadSupport The file upload support status.
 
306
  * @return BaseFacebook
307
  */
308
  public function setFileUploadSupport($fileUploadSupport) {
@@ -320,11 +357,12 @@ abstract class BaseFacebook
320
  }
321
 
322
  /**
323
- * DEPRECATED! Please use getFileUploadSupport instead.
324
- *
325
  * Get the file upload support status.
326
  *
327
  * @return boolean true if and only if the server supports file upload.
 
 
 
328
  */
329
  public function useFileUploadSupport() {
330
  return $this->getFileUploadSupport();
@@ -336,6 +374,7 @@ abstract class BaseFacebook
336
  * to use it.
337
  *
338
  * @param string $access_token an access token.
 
339
  * @return BaseFacebook
340
  */
341
  public function setAccessToken($access_token) {
@@ -488,9 +527,10 @@ abstract class BaseFacebook
488
  */
489
  public function getSignedRequest() {
490
  if (!$this->signedRequest) {
491
- if (!empty($_REQUEST['signed_request'])) {
492
  $this->signedRequest = $this->parseSignedRequest(
493
- $_REQUEST['signed_request']);
 
494
  } else if (!empty($_COOKIE[$this->getSignedRequestCookieName()])) {
495
  $this->signedRequest = $this->parseSignedRequest(
496
  $_COOKIE[$this->getSignedRequestCookieName()]);
@@ -529,6 +569,11 @@ abstract class BaseFacebook
529
  if ($signed_request) {
530
  if (array_key_exists('user_id', $signed_request)) {
531
  $user = $signed_request['user_id'];
 
 
 
 
 
532
  $this->setPersistentData('user_id', $signed_request['user_id']);
533
  return $user;
534
  }
@@ -584,11 +629,15 @@ abstract class BaseFacebook
584
  return $this->getUrl(
585
  'www',
586
  'dialog/oauth',
587
- array_merge(array(
588
- 'client_id' => $this->getAppId(),
589
- 'redirect_uri' => $currentUrl, // possibly overwritten
590
- 'state' => $this->state),
591
- $params));
 
 
 
 
592
  }
593
 
594
  /**
@@ -614,24 +663,14 @@ abstract class BaseFacebook
614
  /**
615
  * Get a login status URL to fetch the status from Facebook.
616
  *
617
- * The parameters:
618
- * - ok_session: the URL to go to if a session is found
619
- * - no_session: the URL to go to if the user is not connected
620
- * - no_user: the URL to go to if the user is not signed into facebook
621
- *
622
  * @param array $params Provide custom parameters
623
  * @return string The URL for the logout flow
624
  */
625
  public function getLoginStatusUrl($params=array()) {
626
- return $this->getUrl(
627
- 'www',
628
- 'extern/login_status.php',
629
  array_merge(array(
630
- 'api_key' => $this->getAppId(),
631
- 'no_session' => $this->getCurrentUrl(),
632
- 'no_user' => $this->getCurrentUrl(),
633
- 'ok_session' => $this->getCurrentUrl(),
634
- 'session_version' => 3,
635
  ), $params)
636
  );
637
  }
@@ -664,7 +703,7 @@ abstract class BaseFacebook
664
  }
665
 
666
  /**
667
- * Constructs and returns the name of the coookie that potentially contain
668
  * metadata. The cookie is not set by the BaseFacebook class, but it may be
669
  * set by the JavaScript SDK.
670
  *
@@ -683,20 +722,16 @@ abstract class BaseFacebook
683
  * code could not be determined.
684
  */
685
  protected function getCode() {
686
- if (isset($_REQUEST['code'])) {
687
- if ($this->state !== null &&
688
- isset($_REQUEST['state']) &&
689
- $this->state === $_REQUEST['state']) {
690
-
691
  // CSRF state has done its job, so clear it
692
  $this->state = null;
693
  $this->clearPersistentData('state');
694
  return $_REQUEST['code'];
695
- } else {
696
- self::errorLog('CSRF state token does not match one provided.');
697
- return false;
698
- }
699
  }
 
700
 
701
  return false;
702
  }
@@ -727,7 +762,7 @@ abstract class BaseFacebook
727
  * @return string The application access token, useful for gathering
728
  * public information about users and applications.
729
  */
730
- protected function getApplicationAccessToken() {
731
  return $this->appId.'|'.$this->appSecret;
732
  }
733
 
@@ -752,6 +787,8 @@ abstract class BaseFacebook
752
  * either logged in to Facebook or has granted an offline access permission.
753
  *
754
  * @param string $code An authorization code.
 
 
755
  * @return mixed An access token exchanged for the authorization code, or
756
  * false if an access token could not be generated.
757
  */
@@ -894,9 +931,13 @@ abstract class BaseFacebook
894
  $params['access_token'] = $this->getAccessToken();
895
  }
896
 
 
 
 
 
897
  // json_encode all params values that are not strings
898
  foreach ($params as $key => $value) {
899
- if (!is_string($value)) {
900
  $params[$key] = json_encode($value);
901
  }
902
  }
@@ -904,6 +945,19 @@ abstract class BaseFacebook
904
  return $this->makeRequest($url, $params);
905
  }
906
 
 
 
 
 
 
 
 
 
 
 
 
 
 
907
  /**
908
  * Makes an HTTP request. This method can be overridden by subclasses if
909
  * developers want to do fancier things or use something other than curl to
@@ -941,11 +995,13 @@ abstract class BaseFacebook
941
  curl_setopt_array($ch, $opts);
942
  $result = curl_exec($ch);
943
 
944
- if (curl_errno($ch) == 60) { // CURLE_SSL_CACERT
 
 
945
  self::errorLog('Invalid or no certificate authority found, '.
946
  'using bundled information');
947
  curl_setopt($ch, CURLOPT_CAINFO,
948
- dirname(__FILE__) . '/fb_ca_chain_bundle.crt');
949
  $result = curl_exec($ch);
950
  }
951
 
@@ -987,16 +1043,25 @@ abstract class BaseFacebook
987
  * Parses a signed_request and validates the signature.
988
  *
989
  * @param string $signed_request A signed token
 
990
  * @return array The payload inside it or null if the sig is wrong
991
  */
992
  protected function parseSignedRequest($signed_request) {
 
 
 
 
 
 
993
  list($encoded_sig, $payload) = explode('.', $signed_request, 2);
994
 
995
  // decode the data
996
  $sig = self::base64UrlDecode($encoded_sig);
997
  $data = json_decode(self::base64UrlDecode($payload), true);
998
 
999
- if (strtoupper($data['algorithm']) !== self::SIGNED_REQUEST_ALGORITHM) {
 
 
1000
  self::errorLog(
1001
  'Unknown algorithm. Expected ' . self::SIGNED_REQUEST_ALGORITHM);
1002
  return null;
@@ -1005,18 +1070,30 @@ abstract class BaseFacebook
1005
  // check sig
1006
  $expected_sig = hash_hmac('sha256', $payload,
1007
  $this->getAppSecret(), $raw = true);
1008
- if ($sig !== $expected_sig) {
 
1009
  self::errorLog('Bad Signed JSON signature!');
1010
  return null;
1011
  }
1012
 
1013
- return $data;
 
 
 
 
 
 
 
 
 
 
1014
  }
1015
 
1016
  /**
1017
  * Makes a signed_request blob using the given data.
1018
  *
1019
- * @param array The data array.
 
1020
  * @return string The signed request.
1021
  */
1022
  protected function makeSignedRequest($data) {
@@ -1036,7 +1113,8 @@ abstract class BaseFacebook
1036
  /**
1037
  * Build the URL for api given parameters.
1038
  *
1039
- * @param $method String the method name.
 
1040
  * @return string The URL for the given parameters
1041
  */
1042
  protected function getApiUrl($method) {
@@ -1113,9 +1191,9 @@ abstract class BaseFacebook
1113
  /**
1114
  * Build the URL for given domain alias, path and parameters.
1115
  *
1116
- * @param $name string The name of the domain
1117
- * @param $path string Optional path (without a leading slash)
1118
- * @param $params array Optional query parameters
1119
  *
1120
  * @return string The URL for the given parameters
1121
  */
@@ -1134,13 +1212,26 @@ abstract class BaseFacebook
1134
  return $url;
1135
  }
1136
 
 
 
 
 
 
1137
  protected function getHttpHost() {
1138
  if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
1139
- return $_SERVER['HTTP_X_FORWARDED_HOST'];
 
 
 
1140
  }
1141
  return $_SERVER['HTTP_HOST'];
1142
  }
1143
 
 
 
 
 
 
1144
  protected function getHttpProtocol() {
1145
  if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
1146
  if ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
@@ -1162,7 +1253,9 @@ abstract class BaseFacebook
1162
  }
1163
 
1164
  /**
1165
- * Get the base domain used for the cookie.
 
 
1166
  */
1167
  protected function getBaseDomain() {
1168
  // The base domain is stored in the metadata cookie if not we fallback
@@ -1175,8 +1268,6 @@ abstract class BaseFacebook
1175
  return $this->getHttpHost();
1176
  }
1177
 
1178
- /**
1179
-
1180
  /**
1181
  * Returns the Current URL, stripping it of known FB parameters that should
1182
  * not persist.
@@ -1223,13 +1314,14 @@ abstract class BaseFacebook
1223
  * params that should be stripped out.
1224
  *
1225
  * @param string $param A key or key/value pair within a URL's query (e.g.
1226
- * 'foo=a', 'foo=', or 'foo'.
1227
  *
1228
  * @return boolean
1229
  */
1230
  protected function shouldRetainParam($param) {
1231
  foreach (self::$DROP_QUERY_PARAMS as $drop_query_param) {
1232
- if (strpos($param, $drop_query_param.'=') === 0) {
 
1233
  return false;
1234
  }
1235
  }
@@ -1242,7 +1334,7 @@ abstract class BaseFacebook
1242
  * because the access token is no longer valid. If that is
1243
  * the case, then we destroy the session.
1244
  *
1245
- * @param $result array A record storing the error message returned
1246
  * by a failed API call.
1247
  */
1248
  protected function throwAPIException($result) {
@@ -1291,8 +1383,9 @@ abstract class BaseFacebook
1291
  * _ instead of /
1292
  * No padded =
1293
  *
1294
- * @param string $input base64UrlEncoded string
1295
- * @return string
 
1296
  */
1297
  protected static function base64UrlDecode($input) {
1298
  return base64_decode(strtr($input, '-_', '+/'));
@@ -1304,8 +1397,8 @@ abstract class BaseFacebook
1304
  * - instead of +
1305
  * _ instead of /
1306
  *
1307
- * @param string $input string
1308
- * @return string base64Url encoded string
1309
  */
1310
  protected static function base64UrlEncode($input) {
1311
  $str = strtr(base64_encode($input), '+/', '-_');
@@ -1345,7 +1438,7 @@ abstract class BaseFacebook
1345
  /**
1346
  * Parses the metadata cookie that our Javascript API set
1347
  *
1348
- * @return an array mapping key to value
1349
  */
1350
  protected function getMetadataCookie() {
1351
  $cookie_name = $this->getMetadataCookieName();
@@ -1373,6 +1466,14 @@ abstract class BaseFacebook
1373
  return $metadata;
1374
  }
1375
 
 
 
 
 
 
 
 
 
1376
  protected static function isAllowedDomain($big, $small) {
1377
  if ($big === $small) {
1378
  return true;
@@ -1380,6 +1481,14 @@ abstract class BaseFacebook
1380
  return self::endsWith($big, '.'.$small);
1381
  }
1382
 
 
 
 
 
 
 
 
 
1383
  protected static function endsWith($big, $small) {
1384
  $len = strlen($small);
1385
  if ($len === 0) {
@@ -1423,6 +1532,7 @@ abstract class BaseFacebook
1423
  * Clear the data with $key from the persistent storage
1424
  *
1425
  * @param string $key
 
1426
  * @return void
1427
  */
1428
  abstract protected function clearPersistentData($key);
31
  {
32
  /**
33
  * The result from the API server that represents the exception information.
34
+ *
35
+ * @var mixed
36
  */
37
  protected $result;
38
 
44
  public function __construct($result) {
45
  $this->result = $result;
46
 
47
+ $code = 0;
48
+ if (isset($result['error_code']) && is_int($result['error_code'])) {
49
+ $code = $result['error_code'];
50
+ }
51
 
52
  if (isset($result['error_description'])) {
53
  // OAuth 2.0 Draft 10 style
125
  /**
126
  * Version.
127
  */
128
+ const VERSION = '3.2.3';
129
 
130
  /**
131
  * Signed Request Algorithm.
134
 
135
  /**
136
  * Default options for curl.
137
+ *
138
+ * @var array
139
  */
140
  public static $CURL_OPTS = array(
141
+ CURLOPT_CONNECTTIMEOUT => 30,
142
  CURLOPT_RETURNTRANSFER => true,
143
  CURLOPT_TIMEOUT => 60,
144
  CURLOPT_USERAGENT => 'facebook-php-3.2',
145
+ CURLOPT_SSL_VERIFYPEER => false,
146
  );
147
 
148
  /**
149
  * List of query parameters that get automatically dropped when rebuilding
150
  * the current URL.
151
+ *
152
+ * @var array
153
  */
154
  protected static $DROP_QUERY_PARAMS = array(
155
  'code',
159
 
160
  /**
161
  * Maps aliases to Facebook domains.
162
+ *
163
+ * @var array
164
  */
165
  public static $DOMAIN_MAP = array(
166
  'api' => 'https://api.facebook.com/',
194
 
195
  /**
196
  * The data from the signed_request token.
197
+ *
198
+ * @var string
199
  */
200
  protected $signedRequest;
201
 
202
  /**
203
  * A CSRF state variable to assist in the defense against CSRF attacks.
204
+ *
205
+ * @var string
206
  */
207
  protected $state;
208
 
228
  */
229
  protected $trustForwarded = false;
230
 
231
+ /**
232
+ * Indicates if signed_request is allowed in query parameters.
233
+ *
234
+ * @var boolean
235
+ */
236
+ protected $allowSignedRequest = true;
237
+
238
  /**
239
  * Initialize a Facebook Application.
240
  *
242
  * - appId: the application ID
243
  * - secret: the application secret
244
  * - fileUpload: (optional) boolean indicating if file uploads are enabled
245
+ * - allowSignedRequest: (optional) boolean indicating if signed_request is
246
+ * allowed in query parameters or POST body. Should be
247
+ * false for non-canvas apps. Defaults to true.
248
  *
249
  * @param array $config The application configuration
250
  */
257
  if (isset($config['trustForwarded']) && $config['trustForwarded']) {
258
  $this->trustForwarded = true;
259
  }
260
+ if (isset($config['allowSignedRequest'])
261
+ && !$config['allowSignedRequest']) {
262
+ $this->allowSignedRequest = false;
263
+ }
264
  $state = $this->getPersistentData('state');
265
  if (!empty($state)) {
266
  $this->state = $state;
271
  * Set the Application ID.
272
  *
273
  * @param string $appId The Application ID
274
+ *
275
  * @return BaseFacebook
276
  */
277
  public function setAppId($appId) {
292
  * Set the App Secret.
293
  *
294
  * @param string $apiSecret The App Secret
295
+ *
296
  * @return BaseFacebook
297
+ * @deprecated Use setAppSecret instead.
298
+ * @see setAppSecret()
299
  */
300
  public function setApiSecret($apiSecret) {
301
  $this->setAppSecret($apiSecret);
306
  * Set the App Secret.
307
  *
308
  * @param string $appSecret The App Secret
309
+ *
310
  * @return BaseFacebook
311
  */
312
  public function setAppSecret($appSecret) {
318
  * Get the App Secret.
319
  *
320
  * @return string the App Secret
321
+ *
322
+ * @deprecated Use getAppSecret instead.
323
+ * @see getAppSecret()
324
  */
325
  public function getApiSecret() {
326
  return $this->getAppSecret();
339
  * Set the file upload support status.
340
  *
341
  * @param boolean $fileUploadSupport The file upload support status.
342
+ *
343
  * @return BaseFacebook
344
  */
345
  public function setFileUploadSupport($fileUploadSupport) {
357
  }
358
 
359
  /**
 
 
360
  * Get the file upload support status.
361
  *
362
  * @return boolean true if and only if the server supports file upload.
363
+ *
364
+ * @deprecated Use getFileUploadSupport instead.
365
+ * @see getFileUploadSupport()
366
  */
367
  public function useFileUploadSupport() {
368
  return $this->getFileUploadSupport();
374
  * to use it.
375
  *
376
  * @param string $access_token an access token.
377
+ *
378
  * @return BaseFacebook
379
  */
380
  public function setAccessToken($access_token) {
527
  */
528
  public function getSignedRequest() {
529
  if (!$this->signedRequest) {
530
+ if ($this->allowSignedRequest && !empty($_REQUEST['signed_request'])) {
531
  $this->signedRequest = $this->parseSignedRequest(
532
+ $_REQUEST['signed_request']
533
+ );
534
  } else if (!empty($_COOKIE[$this->getSignedRequestCookieName()])) {
535
  $this->signedRequest = $this->parseSignedRequest(
536
  $_COOKIE[$this->getSignedRequestCookieName()]);
569
  if ($signed_request) {
570
  if (array_key_exists('user_id', $signed_request)) {
571
  $user = $signed_request['user_id'];
572
+
573
+ if($user != $this->getPersistentData('user_id')){
574
+ $this->clearAllPersistentData();
575
+ }
576
+
577
  $this->setPersistentData('user_id', $signed_request['user_id']);
578
  return $user;
579
  }
629
  return $this->getUrl(
630
  'www',
631
  'dialog/oauth',
632
+ array_merge(
633
+ array(
634
+ 'client_id' => $this->getAppId(),
635
+ 'redirect_uri' => $currentUrl, // possibly overwritten
636
+ 'state' => $this->state,
637
+ 'sdk' => 'php-sdk-'.self::VERSION
638
+ ),
639
+ $params
640
+ ));
641
  }
642
 
643
  /**
663
  /**
664
  * Get a login status URL to fetch the status from Facebook.
665
  *
 
 
 
 
 
666
  * @param array $params Provide custom parameters
667
  * @return string The URL for the logout flow
668
  */
669
  public function getLoginStatusUrl($params=array()) {
670
+ return $this->getLoginUrl(
 
 
671
  array_merge(array(
672
+ 'response_type' => 'code',
673
+ 'display' => 'none',
 
 
 
674
  ), $params)
675
  );
676
  }
703
  }
704
 
705
  /**
706
+ * Constructs and returns the name of the cookie that potentially contain
707
  * metadata. The cookie is not set by the BaseFacebook class, but it may be
708
  * set by the JavaScript SDK.
709
  *
722
  * code could not be determined.
723
  */
724
  protected function getCode() {
725
+ if (!isset($_REQUEST['code']) || !isset($_REQUEST['state'])) {
726
+ return false;
727
+ }
728
+ if ($this->state === $_REQUEST['state']) {
 
729
  // CSRF state has done its job, so clear it
730
  $this->state = null;
731
  $this->clearPersistentData('state');
732
  return $_REQUEST['code'];
 
 
 
 
733
  }
734
+ self::errorLog('CSRF state token does not match one provided.');
735
 
736
  return false;
737
  }
762
  * @return string The application access token, useful for gathering
763
  * public information about users and applications.
764
  */
765
+ public function getApplicationAccessToken() {
766
  return $this->appId.'|'.$this->appSecret;
767
  }
768
 
787
  * either logged in to Facebook or has granted an offline access permission.
788
  *
789
  * @param string $code An authorization code.
790
+ * @param string $redirect_uri Optional redirect URI. Default null
791
+ *
792
  * @return mixed An access token exchanged for the authorization code, or
793
  * false if an access token could not be generated.
794
  */
931
  $params['access_token'] = $this->getAccessToken();
932
  }
933
 
934
+ if (isset($params['access_token']) && !isset($params['appsecret_proof'])) {
935
+ $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
936
+ }
937
+
938
  // json_encode all params values that are not strings
939
  foreach ($params as $key => $value) {
940
+ if (!is_string($value) && !($value instanceof CURLFile)) {
941
  $params[$key] = json_encode($value);
942
  }
943
  }
945
  return $this->makeRequest($url, $params);
946
  }
947
 
948
+ /**
949
+ * Generate a proof of App Secret
950
+ * This is required for all API calls originating from a server
951
+ * It is a sha256 hash of the access_token made using the app secret
952
+ *
953
+ * @param string $access_token The access_token to be hashed (required)
954
+ *
955
+ * @return string The sha256 hash of the access_token
956
+ */
957
+ protected function getAppSecretProof($access_token) {
958
+ return hash_hmac('sha256', $access_token, $this->getAppSecret());
959
+ }
960
+
961
  /**
962
  * Makes an HTTP request. This method can be overridden by subclasses if
963
  * developers want to do fancier things or use something other than curl to
995
  curl_setopt_array($ch, $opts);
996
  $result = curl_exec($ch);
997
 
998
+ $errno = curl_errno($ch);
999
+ // CURLE_SSL_CACERT || CURLE_SSL_CACERT_BADFILE
1000
+ if ($errno == 60 || $errno == 77) {
1001
  self::errorLog('Invalid or no certificate authority found, '.
1002
  'using bundled information');
1003
  curl_setopt($ch, CURLOPT_CAINFO,
1004
+ dirname(__FILE__) . DIRECTORY_SEPARATOR . 'fb_ca_chain_bundle.crt');
1005
  $result = curl_exec($ch);
1006
  }
1007
 
1043
  * Parses a signed_request and validates the signature.
1044
  *
1045
  * @param string $signed_request A signed token
1046
+ *
1047
  * @return array The payload inside it or null if the sig is wrong
1048
  */
1049
  protected function parseSignedRequest($signed_request) {
1050
+
1051
+ if (!$signed_request || strpos($signed_request, '.') === false) {
1052
+ self::errorLog('Signed request was invalid!');
1053
+ return null;
1054
+ }
1055
+
1056
  list($encoded_sig, $payload) = explode('.', $signed_request, 2);
1057
 
1058
  // decode the data
1059
  $sig = self::base64UrlDecode($encoded_sig);
1060
  $data = json_decode(self::base64UrlDecode($payload), true);
1061
 
1062
+ if (!isset($data['algorithm'])
1063
+ || strtoupper($data['algorithm']) !== self::SIGNED_REQUEST_ALGORITHM
1064
+ ) {
1065
  self::errorLog(
1066
  'Unknown algorithm. Expected ' . self::SIGNED_REQUEST_ALGORITHM);
1067
  return null;
1070
  // check sig
1071
  $expected_sig = hash_hmac('sha256', $payload,
1072
  $this->getAppSecret(), $raw = true);
1073
+
1074
+ if (strlen($expected_sig) !== strlen($sig)) {
1075
  self::errorLog('Bad Signed JSON signature!');
1076
  return null;
1077
  }
1078
 
1079
+ $result = 0;
1080
+ for ($i = 0; $i < strlen($expected_sig); $i++) {
1081
+ $result |= ord($expected_sig[$i]) ^ ord($sig[$i]);
1082
+ }
1083
+
1084
+ if ($result == 0) {
1085
+ return $data;
1086
+ } else {
1087
+ self::errorLog('Bad Signed JSON signature!');
1088
+ return null;
1089
+ }
1090
  }
1091
 
1092
  /**
1093
  * Makes a signed_request blob using the given data.
1094
  *
1095
+ * @param array $data The data array.
1096
+ *
1097
  * @return string The signed request.
1098
  */
1099
  protected function makeSignedRequest($data) {
1113
  /**
1114
  * Build the URL for api given parameters.
1115
  *
1116
+ * @param string $method The method name.
1117
+ *
1118
  * @return string The URL for the given parameters
1119
  */
1120
  protected function getApiUrl($method) {
1191
  /**
1192
  * Build the URL for given domain alias, path and parameters.
1193
  *
1194
+ * @param string $name The name of the domain
1195
+ * @param string $path Optional path (without a leading slash)
1196
+ * @param array $params Optional query parameters
1197
  *
1198
  * @return string The URL for the given parameters
1199
  */
1212
  return $url;
1213
  }
1214
 
1215
+ /**
1216
+ * Returns the HTTP Host
1217
+ *
1218
+ * @return string The HTTP Host
1219
+ */
1220
  protected function getHttpHost() {
1221
  if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
1222
+ $forwardProxies = explode(',', $_SERVER['HTTP_X_FORWARDED_HOST']);
1223
+ if (!empty($forwardProxies)) {
1224
+ return $forwardProxies[0];
1225
+ }
1226
  }
1227
  return $_SERVER['HTTP_HOST'];
1228
  }
1229
 
1230
+ /**
1231
+ * Returns the HTTP Protocol
1232
+ *
1233
+ * @return string The HTTP Protocol
1234
+ */
1235
  protected function getHttpProtocol() {
1236
  if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
1237
  if ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
1253
  }
1254
 
1255
  /**
1256
+ * Returns the base domain used for the cookie.
1257
+ *
1258
+ * @return string The base domain
1259
  */
1260
  protected function getBaseDomain() {
1261
  // The base domain is stored in the metadata cookie if not we fallback
1268
  return $this->getHttpHost();
1269
  }
1270
 
 
 
1271
  /**
1272
  * Returns the Current URL, stripping it of known FB parameters that should
1273
  * not persist.
1314
  * params that should be stripped out.
1315
  *
1316
  * @param string $param A key or key/value pair within a URL's query (e.g.
1317
+ * 'foo=a', 'foo=', or 'foo'.
1318
  *
1319
  * @return boolean
1320
  */
1321
  protected function shouldRetainParam($param) {
1322
  foreach (self::$DROP_QUERY_PARAMS as $drop_query_param) {
1323
+ if ($param === $drop_query_param ||
1324
+ strpos($param, $drop_query_param.'=') === 0) {
1325
  return false;
1326
  }
1327
  }
1334
  * because the access token is no longer valid. If that is
1335
  * the case, then we destroy the session.
1336
  *
1337
+ * @param array $result A record storing the error message returned
1338
  * by a failed API call.
1339
  */
1340
  protected function throwAPIException($result) {
1383
  * _ instead of /
1384
  * No padded =
1385
  *
1386
+ * @param string $input base64UrlEncoded input
1387
+ *
1388
+ * @return string The decoded string
1389
  */
1390
  protected static function base64UrlDecode($input) {
1391
  return base64_decode(strtr($input, '-_', '+/'));
1397
  * - instead of +
1398
  * _ instead of /
1399
  *
1400
+ * @param string $input The input to encode
1401
+ * @return string The base64Url encoded input, as a string.
1402
  */
1403
  protected static function base64UrlEncode($input) {
1404
  $str = strtr(base64_encode($input), '+/', '-_');
1438
  /**
1439
  * Parses the metadata cookie that our Javascript API set
1440
  *
1441
+ * @return array an array mapping key to value
1442
  */
1443
  protected function getMetadataCookie() {
1444
  $cookie_name = $this->getMetadataCookieName();
1466
  return $metadata;
1467
  }
1468
 
1469
+ /**
1470
+ * Finds whether the given domain is allowed or not
1471
+ *
1472
+ * @param string $big The value to be checked against $small
1473
+ * @param string $small The input string
1474
+ *
1475
+ * @return boolean Returns TRUE if $big matches $small
1476
+ */
1477
  protected static function isAllowedDomain($big, $small) {
1478
  if ($big === $small) {
1479
  return true;
1481
  return self::endsWith($big, '.'.$small);
1482
  }
1483
 
1484
+ /**
1485
+ * Checks if $big string ends with $small string
1486
+ *
1487
+ * @param string $big The value to be checked against $small
1488
+ * @param string $small The input string
1489
+ *
1490
+ * @return boolean TRUE if $big ends with $small
1491
+ */
1492
  protected static function endsWith($big, $small) {
1493
  $len = strlen($small);
1494
  if ($len === 0) {
1532
  * Clear the data with $key from the persistent storage
1533
  *
1534
  * @param string $key
1535
+ *
1536
  * @return void
1537
  */
1538
  abstract protected function clearPersistentData($key);
hybridauth/Hybrid/thirdparty/Facebook/facebook.php CHANGED
@@ -23,13 +23,22 @@ require_once "base_facebook.php";
23
  */
24
  class Facebook extends BaseFacebook
25
  {
 
 
 
26
  const FBSS_COOKIE_NAME = 'fbss';
27
 
28
- // We can set this to a high number because the main session
29
- // expiration will trump this.
 
 
30
  const FBSS_COOKIE_EXPIRE = 31556926; // 1 year
31
 
32
- // Stores the shared session ID if one is set.
 
 
 
 
33
  protected $sharedSessionID;
34
 
35
  /**
@@ -38,25 +47,45 @@ class Facebook extends BaseFacebook
38
  * access token if during the course of execution
39
  * we discover them.
40
  *
41
- * @param Array $config the application configuration. Additionally
42
  * accepts "sharedSession" as a boolean to turn on a secondary
43
  * cookie for environments with a shared session (that is, your app
44
  * shares the domain with other apps).
45
- * @see BaseFacebook::__construct in facebook.php
 
46
  */
47
  public function __construct($config) {
48
- if (!session_id()) {
 
49
  session_start();
50
  }
51
  parent::__construct($config);
52
  if (!empty($config['sharedSession'])) {
53
  $this->initSharedSession();
 
 
 
 
 
 
 
 
 
 
54
  }
55
  }
56
 
 
 
 
 
 
57
  protected static $kSupportedKeys =
58
  array('state', 'code', 'access_token', 'user_id');
59
 
 
 
 
60
  protected function initSharedSession() {
61
  $cookie_name = $this->getSharedSessionCookieName();
62
  if (isset($_COOKIE[$cookie_name])) {
@@ -95,10 +124,16 @@ class Facebook extends BaseFacebook
95
 
96
  /**
97
  * Provides the implementations of the inherited abstract
98
- * methods. The implementation uses PHP sessions to maintain
99
  * a store for authorization codes, user ids, CSRF states, and
100
  * access tokens.
101
  */
 
 
 
 
 
 
102
  protected function setPersistentData($key, $value) {
103
  if (!in_array($key, self::$kSupportedKeys)) {
104
  self::errorLog('Unsupported key passed to setPersistentData.');
@@ -109,6 +144,11 @@ class Facebook extends BaseFacebook
109
  $_SESSION[$session_var_name] = $value;
110
  }
111
 
 
 
 
 
 
112
  protected function getPersistentData($key, $default = false) {
113
  if (!in_array($key, self::$kSupportedKeys)) {
114
  self::errorLog('Unsupported key passed to getPersistentData.');
@@ -120,6 +160,11 @@ class Facebook extends BaseFacebook
120
  $_SESSION[$session_var_name] : $default;
121
  }
122
 
 
 
 
 
 
123
  protected function clearPersistentData($key) {
124
  if (!in_array($key, self::$kSupportedKeys)) {
125
  self::errorLog('Unsupported key passed to clearPersistentData.');
@@ -127,9 +172,16 @@ class Facebook extends BaseFacebook
127
  }
128
 
129
  $session_var_name = $this->constructSessionVariableName($key);
130
- unset($_SESSION[$session_var_name]);
 
 
131
  }
132
 
 
 
 
 
 
133
  protected function clearAllPersistentData() {
134
  foreach (self::$kSupportedKeys as $key) {
135
  $this->clearPersistentData($key);
@@ -139,6 +191,9 @@ class Facebook extends BaseFacebook
139
  }
140
  }
141
 
 
 
 
142
  protected function deleteSharedSessionCookie() {
143
  $cookie_name = $this->getSharedSessionCookieName();
144
  unset($_COOKIE[$cookie_name]);
@@ -146,10 +201,23 @@ class Facebook extends BaseFacebook
146
  setcookie($cookie_name, '', 1, '/', '.'.$base_domain);
147
  }
148
 
 
 
 
 
 
149
  protected function getSharedSessionCookieName() {
150
  return self::FBSS_COOKIE_NAME . '_' . $this->getAppId();
151
  }
152
 
 
 
 
 
 
 
 
 
153
  protected function constructSessionVariableName($key) {
154
  $parts = array('fb', $this->getAppId(), $key);
155
  if ($this->sharedSessionID) {
23
  */
24
  class Facebook extends BaseFacebook
25
  {
26
+ /**
27
+ * Cookie prefix
28
+ */
29
  const FBSS_COOKIE_NAME = 'fbss';
30
 
31
+ /**
32
+ * We can set this to a high number because the main session
33
+ * expiration will trump this.
34
+ */
35
  const FBSS_COOKIE_EXPIRE = 31556926; // 1 year
36
 
37
+ /**
38
+ * Stores the shared session ID if one is set.
39
+ *
40
+ * @var string
41
+ */
42
  protected $sharedSessionID;
43
 
44
  /**
47
  * access token if during the course of execution
48
  * we discover them.
49
  *
50
+ * @param array $config the application configuration. Additionally
51
  * accepts "sharedSession" as a boolean to turn on a secondary
52
  * cookie for environments with a shared session (that is, your app
53
  * shares the domain with other apps).
54
+ *
55
+ * @see BaseFacebook::__construct
56
  */
57
  public function __construct($config) {
58
+ if ((function_exists('session_status')
59
+ && session_status() !== PHP_SESSION_ACTIVE) || !session_id()) {
60
  session_start();
61
  }
62
  parent::__construct($config);
63
  if (!empty($config['sharedSession'])) {
64
  $this->initSharedSession();
65
+
66
+ // re-load the persisted state, since parent
67
+ // attempted to read out of non-shared cookie
68
+ $state = $this->getPersistentData('state');
69
+ if (!empty($state)) {
70
+ $this->state = $state;
71
+ } else {
72
+ $this->state = null;
73
+ }
74
+
75
  }
76
  }
77
 
78
+ /**
79
+ * Supported keys for persistent data
80
+ *
81
+ * @var array
82
+ */
83
  protected static $kSupportedKeys =
84
  array('state', 'code', 'access_token', 'user_id');
85
 
86
+ /**
87
+ * Initiates Shared Session
88
+ */
89
  protected function initSharedSession() {
90
  $cookie_name = $this->getSharedSessionCookieName();
91
  if (isset($_COOKIE[$cookie_name])) {
124
 
125
  /**
126
  * Provides the implementations of the inherited abstract
127
+ * methods. The implementation uses PHP sessions to maintain
128
  * a store for authorization codes, user ids, CSRF states, and
129
  * access tokens.
130
  */
131
+
132
+ /**
133
+ * {@inheritdoc}
134
+ *
135
+ * @see BaseFacebook::setPersistentData()
136
+ */
137
  protected function setPersistentData($key, $value) {
138
  if (!in_array($key, self::$kSupportedKeys)) {
139
  self::errorLog('Unsupported key passed to setPersistentData.');
144
  $_SESSION[$session_var_name] = $value;
145
  }
146
 
147
+ /**
148
+ * {@inheritdoc}
149
+ *
150
+ * @see BaseFacebook::getPersistentData()
151
+ */
152
  protected function getPersistentData($key, $default = false) {
153
  if (!in_array($key, self::$kSupportedKeys)) {
154
  self::errorLog('Unsupported key passed to getPersistentData.');
160
  $_SESSION[$session_var_name] : $default;
161
  }
162
 
163
+ /**
164
+ * {@inheritdoc}
165
+ *
166
+ * @see BaseFacebook::clearPersistentData()
167
+ */
168
  protected function clearPersistentData($key) {
169
  if (!in_array($key, self::$kSupportedKeys)) {
170
  self::errorLog('Unsupported key passed to clearPersistentData.');
172
  }
173
 
174
  $session_var_name = $this->constructSessionVariableName($key);
175
+ if (isset($_SESSION[$session_var_name])) {
176
+ unset($_SESSION[$session_var_name]);
177
+ }
178
  }
179
 
180
+ /**
181
+ * {@inheritdoc}
182
+ *
183
+ * @see BaseFacebook::clearAllPersistentData()
184
+ */
185
  protected function clearAllPersistentData() {
186
  foreach (self::$kSupportedKeys as $key) {
187
  $this->clearPersistentData($key);
191
  }
192
  }
193
 
194
+ /**
195
+ * Deletes Shared session cookie
196
+ */
197
  protected function deleteSharedSessionCookie() {
198
  $cookie_name = $this->getSharedSessionCookieName();
199
  unset($_COOKIE[$cookie_name]);
201
  setcookie($cookie_name, '', 1, '/', '.'.$base_domain);
202
  }
203
 
204
+ /**
205
+ * Returns the Shared session cookie name
206
+ *
207
+ * @return string The Shared session cookie name
208
+ */
209
  protected function getSharedSessionCookieName() {
210
  return self::FBSS_COOKIE_NAME . '_' . $this->getAppId();
211
  }
212
 
213
+ /**
214
+ * Constructs and returns the name of the session key.
215
+ *
216
+ * @see setPersistentData()
217
+ * @param string $key The key for which the session variable name to construct.
218
+ *
219
+ * @return string The name of the session key.
220
+ */
221
  protected function constructSessionVariableName($key) {
222
  $parts = array('fb', $this->getAppId(), $key);
223
  if ($this->sharedSessionID) {
hybridauth/Hybrid/thirdparty/LinkedIn/LinkedIn.php CHANGED
@@ -2,6 +2,8 @@
2
  // http://code.google.com/p/simple-linkedinphp/
3
  // 3.2.0 - November 29, 2011
4
  // hacked into the code to handel new scope (r_basicprofile+r_emailaddress) - until Paul update linkedinphp library!
 
 
5
 
6
  /**
7
  * This file defines the 'LinkedIn' class. This class is designed to be a
@@ -122,8 +124,8 @@ class LinkedIn {
122
  const _URL_ACCESS = 'https://api.linkedin.com/uas/oauth/accessToken';
123
  const _URL_API = 'https://api.linkedin.com';
124
  const _URL_AUTH = 'https://www.linkedin.com/uas/oauth/authenticate?oauth_token=';
125
- // const _URL_REQUEST = 'https://api.linkedin.com/uas/oauth/requestToken';
126
- const _URL_REQUEST = 'https://api.linkedin.com/uas/oauth/requestToken?scope=r_basicprofile+r_emailaddress+rw_nus+r_network';
127
  const _URL_REVOKE = 'https://api.linkedin.com/uas/oauth/invalidateToken';
128
 
129
  // Library version
@@ -441,7 +443,7 @@ class LinkedIn {
441
  * http://developer.linkedin.com/docs/DOC-1327
442
  *
443
  * @param str $cid
444
- * Company ID you want the producte for.
445
  * @param str $options
446
  * [OPTIONAL] Data retrieval options.
447
  *
@@ -670,6 +672,10 @@ class LinkedIn {
670
  curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, FALSE);
671
  curl_setopt($handle, CURLOPT_URL, $url);
672
  curl_setopt($handle, CURLOPT_VERBOSE, FALSE);
 
 
 
 
673
 
674
  // configure the header we are sending to LinkedIn - http://developer.linkedin.com/docs/DOC-1203
675
  $header = array($oauth_req->to_header(self::_API_OAUTH_REALM));
@@ -696,6 +702,9 @@ class LinkedIn {
696
 
697
  // gather the response
698
  $return_data['linkedin'] = curl_exec($handle);
 
 
 
699
  $return_data['info'] = curl_getinfo($handle);
700
  $return_data['oauth']['header'] = $oauth_req->to_header(self::_API_OAUTH_REALM);
701
  $return_data['oauth']['string'] = $oauth_req->base_string;
@@ -2056,10 +2065,10 @@ class LinkedIn {
2056
  * The group id.
2057
  * @param str $xml
2058
  * The group settings to set. The settings are:
2059
- * -<show-group-logo-in-profle>
2060
  * -<contact-email>
2061
  * -<email-digest-frequency>
2062
- * -<email-annoucements-from-managers>
2063
  * -<allow-messages-from-members>
2064
  * -<email-for-every-new-post>
2065
  *
@@ -2255,7 +2264,7 @@ class LinkedIn {
2255
  // send request
2256
  $response = $this->fetch('POST', $share_url, $data);
2257
  } else {
2258
- // data contraints/rules not met, raise an exception
2259
  throw new LinkedInException('LinkedIn->share(): sharing data constraints not met; check that you have supplied valid content and combinations of content to share.');
2260
  }
2261
  } else {
@@ -2601,7 +2610,7 @@ class LinkedIn {
2601
  public static function xmlToArray($xml) {
2602
  // check passed data
2603
  if(!is_string($xml)) {
2604
- // bad data possed
2605
  throw new LinkedInException('LinkedIn->xmlToArray(): bad data passed, $xml must be a non-zero length string.');
2606
  }
2607
 
2
  // http://code.google.com/p/simple-linkedinphp/
3
  // 3.2.0 - November 29, 2011
4
  // hacked into the code to handel new scope (r_basicprofile+r_emailaddress) - until Paul update linkedinphp library!
5
+ // Facyla note 20131219 : this in fact should not be hacked, as Linkedin lets developpers define the wanted scope
6
+ // in Linkedin application settings, when creating the (required) application and API access
7
 
8
  /**
9
  * This file defines the 'LinkedIn' class. This class is designed to be a
124
  const _URL_ACCESS = 'https://api.linkedin.com/uas/oauth/accessToken';
125
  const _URL_API = 'https://api.linkedin.com';
126
  const _URL_AUTH = 'https://www.linkedin.com/uas/oauth/authenticate?oauth_token=';
127
+ const _URL_REQUEST = 'https://api.linkedin.com/uas/oauth/requestToken';
128
+ // const _URL_REQUEST = 'https://api.linkedin.com/uas/oauth/requestToken?scope=r_basicprofile+r_emailaddress+rw_nus+r_network';
129
  const _URL_REVOKE = 'https://api.linkedin.com/uas/oauth/invalidateToken';
130
 
131
  // Library version
443
  * http://developer.linkedin.com/docs/DOC-1327
444
  *
445
  * @param str $cid
446
+ * Company ID you want the product for.
447
  * @param str $options
448
  * [OPTIONAL] Data retrieval options.
449
  *
672
  curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, FALSE);
673
  curl_setopt($handle, CURLOPT_URL, $url);
674
  curl_setopt($handle, CURLOPT_VERBOSE, FALSE);
675
+
676
+ if ( isset ( Hybrid_Auth::$config["proxy"] ) ) {
677
+ curl_setopt($handle, CURLOPT_PROXY, Hybrid_Auth::$config["proxy"]);
678
+ }
679
 
680
  // configure the header we are sending to LinkedIn - http://developer.linkedin.com/docs/DOC-1203
681
  $header = array($oauth_req->to_header(self::_API_OAUTH_REALM));
702
 
703
  // gather the response
704
  $return_data['linkedin'] = curl_exec($handle);
705
+ if( $return_data['linkedin'] === FALSE ) {
706
+ Hybrid_Logger::error( "LinkedIn::fetch(). curl_exec error: ", curl_error($ch) );
707
+ }
708
  $return_data['info'] = curl_getinfo($handle);
709
  $return_data['oauth']['header'] = $oauth_req->to_header(self::_API_OAUTH_REALM);
710
  $return_data['oauth']['string'] = $oauth_req->base_string;
2065
  * The group id.
2066
  * @param str $xml
2067
  * The group settings to set. The settings are:
2068
+ * -<show-group-logo-in-profile>
2069
  * -<contact-email>
2070
  * -<email-digest-frequency>
2071
+ * -<email-announcements-from-managers>
2072
  * -<allow-messages-from-members>
2073
  * -<email-for-every-new-post>
2074
  *
2264
  // send request
2265
  $response = $this->fetch('POST', $share_url, $data);
2266
  } else {
2267
+ // data constraints/rules not met, raise an exception
2268
  throw new LinkedInException('LinkedIn->share(): sharing data constraints not met; check that you have supplied valid content and combinations of content to share.');
2269
  }
2270
  } else {
2610
  public static function xmlToArray($xml) {
2611
  // check passed data
2612
  if(!is_string($xml)) {
2613
+ // bad data passed
2614
  throw new LinkedInException('LinkedIn->xmlToArray(): bad data passed, $xml must be a non-zero length string.');
2615
  }
2616
 
hybridauth/Hybrid/thirdparty/OAuth/OAuth.php CHANGED
@@ -1,14 +1,15 @@
1
  <?php
2
  // http://oauth.googlecode.com/svn/code/php/OAuth.php
3
- // rev 1261, Mar 29, 2011 morten.fangel
4
- // modified on Dec 29, 2019 to remove OAuth PECL conflict
5
 
6
  // vim: foldmethod=marker
7
 
8
  /* Generic exception class
9
  */
10
- class OAuthExceptionPHP extends Exception {
11
- // pass
 
 
12
  }
13
 
14
  class OAuthConsumer {
@@ -262,6 +263,9 @@ class OAuthRequest {
262
  $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")
263
  ? 'http'
264
  : 'https';
 
 
 
265
  $http_url = ($http_url) ? $http_url : $scheme .
266
  '://' . $_SERVER['SERVER_NAME'] .
267
  ':' .
@@ -447,7 +451,7 @@ class OAuthRequest {
447
  foreach ($this->parameters as $k => $v) {
448
  if (substr($k, 0, 5) != "oauth") continue;
449
  if (is_array($v)) {
450
- throw new OAuthExceptionPHP('Arrays not supported in headers');
451
  }
452
  $out .= ($first) ? ' ' : ',';
453
  $out .= OAuthUtil::urlencode_rfc3986($k) .
@@ -580,7 +584,7 @@ class OAuthServer {
580
  $version = '1.0';
581
  }
582
  if ($version !== $this->version) {
583
- throw new OAuthExceptionPHP("OAuth version '$version' not supported");
584
  }
585
  return $version;
586
  }
@@ -596,12 +600,12 @@ class OAuthServer {
596
  if (!$signature_method) {
597
  // According to chapter 7 ("Accessing Protected Ressources") the signature-method
598
  // parameter is required, and we can't just fallback to PLAINTEXT
599
- throw new OAuthExceptionPHP('No signature method parameter. This parameter is required');
600
  }
601
 
602
  if (!in_array($signature_method,
603
  array_keys($this->signature_methods))) {
604
- throw new OAuthExceptionPHP(
605
  "Signature method '$signature_method' not supported " .
606
  "try one of the following: " .
607
  implode(", ", array_keys($this->signature_methods))
@@ -619,12 +623,12 @@ class OAuthServer {
619
  : NULL;
620
 
621
  if (!$consumer_key) {
622
- throw new OAuthExceptionPHP("Invalid consumer key");
623
  }
624
 
625
  $consumer = $this->data_store->lookup_consumer($consumer_key);
626
  if (!$consumer) {
627
- throw new OAuthExceptionPHP("Invalid consumer");
628
  }
629
 
630
  return $consumer;
@@ -642,7 +646,7 @@ class OAuthServer {
642
  $consumer, $token_type, $token_field
643
  );
644
  if (!$token) {
645
- throw new OAuthExceptionPHP("Invalid $token_type token: $token_field");
646
  }
647
  return $token;
648
  }
@@ -674,7 +678,7 @@ class OAuthServer {
674
  );
675
 
676
  if (!$valid_sig) {
677
- throw new OAuthExceptionPHP("Invalid signature");
678
  }
679
  }
680
 
@@ -683,14 +687,14 @@ class OAuthServer {
683
  */
684
  private function check_timestamp($timestamp) {
685
  if( ! $timestamp )
686
- throw new OAuthExceptionPHP(
687
  'Missing timestamp parameter. The parameter is required'
688
  );
689
 
690
  // verify that timestamp is recentish
691
  $now = time();
692
  if (abs($now - $timestamp) > $this->timestamp_threshold) {
693
- throw new OAuthExceptionPHP(
694
  "Expired timestamp, yours $timestamp, ours $now"
695
  );
696
  }
@@ -701,7 +705,7 @@ class OAuthServer {
701
  */
702
  private function check_nonce($consumer, $token, $nonce, $timestamp) {
703
  if( ! $nonce )
704
- throw new OAuthExceptionPHP(
705
  'Missing nonce parameter. The parameter is required'
706
  );
707
 
@@ -713,7 +717,7 @@ class OAuthServer {
713
  $timestamp
714
  );
715
  if ($found) {
716
- throw new OAuthExceptionPHP("Nonce already used: $nonce");
717
  }
718
  }
719
 
1
  <?php
2
  // http://oauth.googlecode.com/svn/code/php/OAuth.php
3
+ // rev 1276, July 4, 2014
 
4
 
5
  // vim: foldmethod=marker
6
 
7
  /* Generic exception class
8
  */
9
+ if (!class_exists('OAuthException')) {
10
+ class OAuthException extends Exception {
11
+ // pass
12
+ }
13
  }
14
 
15
  class OAuthConsumer {
263
  $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")
264
  ? 'http'
265
  : 'https';
266
+ if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
267
+ $scheme = $_SERVER['HTTP_X_FORWARDED_PROTO'];
268
+ }
269
  $http_url = ($http_url) ? $http_url : $scheme .
270
  '://' . $_SERVER['SERVER_NAME'] .
271
  ':' .
451
  foreach ($this->parameters as $k => $v) {
452
  if (substr($k, 0, 5) != "oauth") continue;
453
  if (is_array($v)) {
454
+ throw new OAuthException('Arrays not supported in headers');
455
  }
456
  $out .= ($first) ? ' ' : ',';
457
  $out .= OAuthUtil::urlencode_rfc3986($k) .
584
  $version = '1.0';
585
  }
586
  if ($version !== $this->version) {
587
+ throw new OAuthException("OAuth version '$version' not supported");
588
  }
589
  return $version;
590
  }
600
  if (!$signature_method) {
601
  // According to chapter 7 ("Accessing Protected Ressources") the signature-method
602
  // parameter is required, and we can't just fallback to PLAINTEXT
603
+ throw new OAuthException('No signature method parameter. This parameter is required');
604
  }
605
 
606
  if (!in_array($signature_method,
607
  array_keys($this->signature_methods))) {
608
+ throw new OAuthException(
609
  "Signature method '$signature_method' not supported " .
610
  "try one of the following: " .
611
  implode(", ", array_keys($this->signature_methods))
623
  : NULL;
624
 
625
  if (!$consumer_key) {
626
+ throw new OAuthException("Invalid consumer key");
627
  }
628
 
629
  $consumer = $this->data_store->lookup_consumer($consumer_key);
630
  if (!$consumer) {
631
+ throw new OAuthException("Invalid consumer");
632
  }
633
 
634
  return $consumer;
646
  $consumer, $token_type, $token_field
647
  );
648
  if (!$token) {
649
+ throw new OAuthException("Invalid $token_type token: $token_field");
650
  }
651
  return $token;
652
  }
678
  );
679
 
680
  if (!$valid_sig) {
681
+ throw new OAuthException("Invalid signature");
682
  }
683
  }
684
 
687
  */
688
  private function check_timestamp($timestamp) {
689
  if( ! $timestamp )
690
+ throw new OAuthException(
691
  'Missing timestamp parameter. The parameter is required'
692
  );
693
 
694
  // verify that timestamp is recentish
695
  $now = time();
696
  if (abs($now - $timestamp) > $this->timestamp_threshold) {
697
+ throw new OAuthException(
698
  "Expired timestamp, yours $timestamp, ours $now"
699
  );
700
  }
705
  */
706
  private function check_nonce($consumer, $token, $nonce, $timestamp) {
707
  if( ! $nonce )
708
+ throw new OAuthException(
709
  'Missing nonce parameter. The parameter is required'
710
  );
711
 
717
  $timestamp
718
  );
719
  if ($found) {
720
+ throw new OAuthException("Nonce already used: $nonce");
721
  }
722
  }
723
 
hybridauth/Hybrid/thirdparty/OAuth/OAuth1Client.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  // A service client for the OAuth 1/1.0a flow.
@@ -108,31 +108,31 @@ class OAuth1Client{
108
  }
109
 
110
  /**
111
- * GET wrappwer for provider apis request
112
  */
113
- function get($url, $parameters = array())
114
  {
115
- return $this->api($url, 'GET', $parameters);
116
  }
117
 
118
  /**
119
- * POST wreapper for provider apis request
120
  */
121
- function post($url, $parameters = array())
122
  {
123
- return $this->api($url, 'POST', $parameters);
124
  }
125
 
126
  /**
127
  * Format and sign an oauth for provider api
128
  */
129
- function api( $url, $method = 'GET', $parameters = array() )
130
  {
131
  if ( strrpos($url, 'http://') !== 0 && strrpos($url, 'https://') !== 0 ) {
132
  $url = $this->api_base_url . $url;
133
  }
134
 
135
- $response = $this->signedRequest( $url, $method, $parameters );
136
 
137
  if( $this->decode_json ){
138
  $response = json_decode( $response );
@@ -144,20 +144,34 @@ class OAuth1Client{
144
  /**
145
  * Make signed request
146
  */
147
- function signedRequest( $url, $method, $parameters )
148
  {
149
- $request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters);
 
 
 
 
 
 
 
 
 
 
150
  $request->sign_request($this->sha1_method, $this->consumer, $this->token);
151
  switch ($method) {
152
- case 'GET': return $this->request( $request->to_url(), 'GET' );
153
- default : return $this->request( $request->get_normalized_http_url(), $method, $request->to_postdata(), $request->to_header() ) ;
 
 
 
 
154
  }
155
  }
156
 
157
  /**
158
  * Make http request
159
  */
160
- function request( $url, $method, $postfields = NULL, $auth_header = null )
161
  {
162
  Hybrid_Logger::info( "Enter OAuth1Client::request( $method, $url )" );
163
  Hybrid_Logger::debug( "OAuth1Client::request(). dump post fields: ", serialize( $postfields ) );
@@ -174,6 +188,12 @@ class OAuth1Client{
174
  curl_setopt( $ci, CURLOPT_SSL_VERIFYPEER, $this->curl_ssl_verifypeer );
175
  curl_setopt( $ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader') );
176
  curl_setopt( $ci, CURLOPT_HEADER , FALSE );
 
 
 
 
 
 
177
 
178
  if($this->curl_proxy){
179
  curl_setopt( $ci, CURLOPT_PROXY , $this->curl_proxy);
@@ -187,7 +207,7 @@ class OAuth1Client{
187
  curl_setopt( $ci, CURLOPT_POSTFIELDS, $postfields );
188
  }
189
 
190
- if ( !empty($auth_header) && $this->curl_auth_header ){
191
  curl_setopt( $ci, CURLOPT_HTTPHEADER, array( 'Content-Type: application/atom+xml', $auth_header ) );
192
  }
193
  break;
@@ -200,6 +220,10 @@ class OAuth1Client{
200
 
201
  curl_setopt($ci, CURLOPT_URL, $url);
202
  $response = curl_exec($ci);
 
 
 
 
203
 
204
  Hybrid_Logger::debug( "OAuth1Client::request(). dump request info: ", serialize( curl_getinfo($ci) ) );
205
  Hybrid_Logger::debug( "OAuth1Client::request(). dump request result: ", serialize( $response ) );
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  // A service client for the OAuth 1/1.0a flow.
108
  }
109
 
110
  /**
111
+ * GET wrapper for provider apis request
112
  */
113
+ function get($url, $parameters = array(), $content_type = NULL)
114
  {
115
+ return $this->api($url, 'GET', $parameters, NULL, $content_type);
116
  }
117
 
118
  /**
119
+ * POST wrapper for provider apis request
120
  */
121
+ function post($url, $parameters = array(), $body = NULL, $content_type = NULL, $multipart = false)
122
  {
123
+ return $this->api($url, 'POST', $parameters, $body, $content_type, $multipart );
124
  }
125
 
126
  /**
127
  * Format and sign an oauth for provider api
128
  */
129
+ function api( $url, $method = 'GET', $parameters = array(), $body = NULL, $content_type = NULL, $multipart = false )
130
  {
131
  if ( strrpos($url, 'http://') !== 0 && strrpos($url, 'https://') !== 0 ) {
132
  $url = $this->api_base_url . $url;
133
  }
134
 
135
+ $response = $this->signedRequest( $url, $method, $parameters, $body, $content_type, $multipart );
136
 
137
  if( $this->decode_json ){
138
  $response = json_decode( $response );
144
  /**
145
  * Make signed request
146
  */
147
+ function signedRequest( $url, $method, $parameters, $body = NULL, $content_type = NULL, $multipart = false )
148
  {
149
+
150
+ $signature_parameters = array();
151
+
152
+ // when making a multipart request, use only oauth_* keys for signature
153
+ foreach( $parameters AS $key => $value ){
154
+ if( !$multipart || strpos( $key, 'oauth_' ) === 0 ){
155
+ $signature_parameters[$key] = $value;
156
+ }
157
+ }
158
+
159
+ $request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $signature_parameters);
160
  $request->sign_request($this->sha1_method, $this->consumer, $this->token);
161
  switch ($method) {
162
+ case 'GET': return $this->request( $request->to_url(), 'GET', NULL, NULL, $content_type );
163
+ default :
164
+ if ($body)
165
+ return $this->request( $request->to_url(), $method, $body, $request->to_header(), $content_type );
166
+ else
167
+ return $this->request( $request->get_normalized_http_url(), $method, ($multipart ? $parameters : $request->to_postdata()), $request->to_header(), $content_type, $multipart ) ;
168
  }
169
  }
170
 
171
  /**
172
  * Make http request
173
  */
174
+ function request( $url, $method, $postfields = NULL, $auth_header = NULL, $content_type = NULL, $multipart = false )
175
  {
176
  Hybrid_Logger::info( "Enter OAuth1Client::request( $method, $url )" );
177
  Hybrid_Logger::debug( "OAuth1Client::request(). dump post fields: ", serialize( $postfields ) );
188
  curl_setopt( $ci, CURLOPT_SSL_VERIFYPEER, $this->curl_ssl_verifypeer );
189
  curl_setopt( $ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader') );
190
  curl_setopt( $ci, CURLOPT_HEADER , FALSE );
191
+
192
+ if( $multipart ){
193
+ curl_setopt( $ci, CURLOPT_HTTPHEADER, array( 'Expect:', $auth_header ) );
194
+
195
+ }elseif ($content_type)
196
+ curl_setopt( $ci, CURLOPT_HTTPHEADER, array('Expect:', "Content-Type: $content_type") );
197
 
198
  if($this->curl_proxy){
199
  curl_setopt( $ci, CURLOPT_PROXY , $this->curl_proxy);
207
  curl_setopt( $ci, CURLOPT_POSTFIELDS, $postfields );
208
  }
209
 
210
+ if ( !empty($auth_header) && $this->curl_auth_header && !$multipart ){
211
  curl_setopt( $ci, CURLOPT_HTTPHEADER, array( 'Content-Type: application/atom+xml', $auth_header ) );
212
  }
213
  break;
220
 
221
  curl_setopt($ci, CURLOPT_URL, $url);
222
  $response = curl_exec($ci);
223
+ if( $response === FALSE ) {
224
+ Hybrid_Logger::error( "OAuth1Client::request(). curl_exec error: ", curl_error($ci) );
225
+ }
226
+
227
 
228
  Hybrid_Logger::debug( "OAuth1Client::request(). dump request info: ", serialize( curl_getinfo($ci) ) );
229
  Hybrid_Logger::debug( "OAuth1Client::request(). dump request result: ", serialize( $response ) );
hybridauth/Hybrid/thirdparty/OAuth/OAuth2Client.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
- /*!
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  // A service client for the OAuth 2 flow.
@@ -30,6 +30,7 @@ class OAuth2Client
30
  public $curl_time_out = 30;
31
  public $curl_connect_time_out = 30;
32
  public $curl_ssl_verifypeer = false;
 
33
  public $curl_header = array();
34
  public $curl_useragent = "OAuth/2 Simple PHP Client v0.1; HybridAuth http://hybridauth.sourceforge.net/";
35
  public $curl_authenticate_method = "POST";
@@ -61,11 +62,13 @@ class OAuth2Client
61
  foreach( $extras as $k=>$v )
62
  $params[$k] = $v;
63
 
64
- return $this->authorize_url . "?" . http_build_query( $params );
65
  }
66
 
67
  public function authenticate( $code )
68
  {
 
 
69
  $params = array(
70
  "client_id" => $this->client_id,
71
  "client_secret" => $this->client_secret,
@@ -73,11 +76,15 @@ class OAuth2Client
73
  "redirect_uri" => $this->redirect_uri,
74
  "code" => $code
75
  );
 
 
76
 
77
  $response = $this->request( $this->token_url, $params, $this->curl_authenticate_method );
78
 
79
  $response = $this->parseRequestResult( $response );
80
 
 
 
81
  if( ! $response || ! isset( $response->access_token ) ){
82
  throw new Exception( "The Authorization Service has return: " . $response->error );
83
  }
@@ -146,7 +153,7 @@ class OAuth2Client
146
  }
147
 
148
  /**
149
- * GET wrappwer for provider apis request
150
  */
151
  function get( $url, $parameters = array() )
152
  {
@@ -154,7 +161,7 @@ class OAuth2Client
154
  }
155
 
156
  /**
157
- * POST wreapper for provider apis request
158
  */
159
  function post( $url, $parameters = array() )
160
  {
@@ -191,10 +198,10 @@ class OAuth2Client
191
  private function request( $url, $params=false, $type="GET" )
192
  {
193
  Hybrid_Logger::info( "Enter OAuth2Client::request( $url )" );
194
- Hybrid_Logger::debug( "OAuth2Client::request(). dump request params: ", serialize( $params ) );
195
 
196
  if( $type == "GET" ){
197
- $url = $url . ( strpos( $url, '?' ) ? '&' : '?' ) . http_build_query( $params );
198
  }
199
 
200
  $this->http_info = array();
@@ -206,6 +213,7 @@ class OAuth2Client
206
  curl_setopt($ch, CURLOPT_USERAGENT , $this->curl_useragent );
207
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , $this->curl_connect_time_out );
208
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , $this->curl_ssl_verifypeer );
 
209
  curl_setopt($ch, CURLOPT_HTTPHEADER , $this->curl_header );
210
 
211
  if($this->curl_proxy){
@@ -218,8 +226,11 @@ class OAuth2Client
218
  }
219
 
220
  $response = curl_exec($ch);
221
- Hybrid_Logger::debug( "OAuth2Client::request(). dump request info: ", serialize( curl_getinfo($ch) ) );
222
- Hybrid_Logger::debug( "OAuth2Client::request(). dump request result: ", serialize( $response ) );
 
 
 
223
 
224
  $this->http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
225
  $this->http_info = array_merge($this->http_info, curl_getinfo($ch));
@@ -233,11 +244,11 @@ class OAuth2Client
233
  {
234
  if( json_decode( $result ) ) return json_decode( $result );
235
 
236
- parse_str( $result, $ouput );
237
 
238
  $result = new StdClass();
239
 
240
- foreach( $ouput as $k => $v )
241
  $result->$k = $v;
242
 
243
  return $result;
1
  <?php
2
+ /**
3
  * HybridAuth
4
  * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
  */
7
 
8
  // A service client for the OAuth 2 flow.
30
  public $curl_time_out = 30;
31
  public $curl_connect_time_out = 30;
32
  public $curl_ssl_verifypeer = false;
33
+ public $curl_ssl_verifyhost = false;
34
  public $curl_header = array();
35
  public $curl_useragent = "OAuth/2 Simple PHP Client v0.1; HybridAuth http://hybridauth.sourceforge.net/";
36
  public $curl_authenticate_method = "POST";
62
  foreach( $extras as $k=>$v )
63
  $params[$k] = $v;
64
 
65
+ return $this->authorize_url . "?" . http_build_query($params, '', '&');
66
  }
67
 
68
  public function authenticate( $code )
69
  {
70
+ Hybrid_Logger::info( "Enter OAuth2Client::authenticate( $code )" );
71
+
72
  $params = array(
73
  "client_id" => $this->client_id,
74
  "client_secret" => $this->client_secret,
76
  "redirect_uri" => $this->redirect_uri,
77
  "code" => $code
78
  );
79
+
80
+ Hybrid_Logger::debug( "OAuth2Client::authenticate(). dump request params: ", $params );
81
 
82
  $response = $this->request( $this->token_url, $params, $this->curl_authenticate_method );
83
 
84
  $response = $this->parseRequestResult( $response );
85
 
86
+ Hybrid_Logger::debug( "OAuth2Client::authenticate(). dump request response: ", $response );
87
+
88
  if( ! $response || ! isset( $response->access_token ) ){
89
  throw new Exception( "The Authorization Service has return: " . $response->error );
90
  }
153
  }
154
 
155
  /**
156
+ * GET wrapper for provider apis request
157
  */
158
  function get( $url, $parameters = array() )
159
  {
161
  }
162
 
163
  /**
164
+ * POST wrapper for provider apis request
165
  */
166
  function post( $url, $parameters = array() )
167
  {
198
  private function request( $url, $params=false, $type="GET" )
199
  {
200
  Hybrid_Logger::info( "Enter OAuth2Client::request( $url )" );
201
+ Hybrid_Logger::debug( "OAuth2Client::request(). dump request params: ", $params );
202
 
203
  if( $type == "GET" ){
204
+ $url = $url . ( strpos( $url, '?' ) ? '&' : '?' ) . http_build_query($params, '', '&');
205
  }
206
 
207
  $this->http_info = array();
213
  curl_setopt($ch, CURLOPT_USERAGENT , $this->curl_useragent );
214
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , $this->curl_connect_time_out );
215
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , $this->curl_ssl_verifypeer );
216
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , $this->curl_ssl_verifyhost );
217
  curl_setopt($ch, CURLOPT_HTTPHEADER , $this->curl_header );
218
 
219
  if($this->curl_proxy){
226
  }
227
 
228
  $response = curl_exec($ch);
229
+ if( $response === FALSE ) {
230
+ Hybrid_Logger::error( "OAuth2Client::request(). curl_exec error: ", curl_error($ch) );
231
+ }
232
+ Hybrid_Logger::debug( "OAuth2Client::request(). dump request info: ", curl_getinfo($ch) );
233
+ Hybrid_Logger::debug( "OAuth2Client::request(). dump request result: ", $response );
234
 
235
  $this->http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
236
  $this->http_info = array_merge($this->http_info, curl_getinfo($ch));
244
  {
245
  if( json_decode( $result ) ) return json_decode( $result );
246
 
247
+ parse_str( $result, $output );
248
 
249
  $result = new StdClass();
250
 
251
+ foreach( $output as $k => $v )
252
  $result->$k = $v;
253
 
254
  return $result;
hybridauth/Hybrid/thirdparty/OpenID/LightOpenID.php CHANGED
@@ -1,834 +1,984 @@
1
- <?php
2
- // http://gitorious.org/lightopenid
3
- // updated 29/12/2012
4
-
5
- /**
6
- * This class provides a simple interface for OpenID (1.1 and 2.0) authentication.
7
- * Supports Yadis discovery.
8
- * The authentication process is stateless/dumb.
9
- *
10
- * Usage:
11
- * Sign-on with OpenID is a two step process:
12
- * Step one is authentication with the provider:
13
- * <code>
14
- * $openid = new LightOpenID('my-host.example.org');
15
- * $openid->identity = 'ID supplied by user';
16
- * header('Location: ' . $openid->authUrl());
17
- * </code>
18
- * The provider then sends various parameters via GET, one of them is openid_mode.
19
- * Step two is verification:
20
- * <code>
21
- * $openid = new LightOpenID('my-host.example.org');
22
- * if ($openid->mode) {
23
- * echo $openid->validate() ? 'Logged in.' : 'Failed';
24
- * }
25
- * </code>
26
- *
27
- * Change the 'my-host.example.org' to your domain name. Do NOT use $_SERVER['HTTP_HOST']
28
- * for that, unless you know what you are doing.
29
- *
30
- * Optionally, you can set $returnUrl and $realm (or $trustRoot, which is an alias).
31
- * The default values for those are:
32
- * $openid->realm = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'];
33
- * $openid->returnUrl = $openid->realm . $_SERVER['REQUEST_URI'];
34
- * If you don't know their meaning, refer to any openid tutorial, or specification. Or just guess.
35
- *
36
- * AX and SREG extensions are supported.
37
- * To use them, specify $openid->required and/or $openid->optional before calling $openid->authUrl().
38
- * These are arrays, with values being AX schema paths (the 'path' part of the URL).
39
- * For example:
40
- * $openid->required = array('namePerson/friendly', 'contact/email');
41
- * $openid->optional = array('namePerson/first');
42
- * If the server supports only SREG or OpenID 1.1, these are automaticaly
43
- * mapped to SREG names, so that user doesn't have to know anything about the server.
44
- *
45
- * To get the values, use $openid->getAttributes().
46
- *
47
- *
48
- * The library requires PHP >= 5.1.2 with curl or http/https stream wrappers enabled.
49
- * @author Mewp
50
- * @copyright Copyright (c) 2010, Mewp
51
- * @license http://www.opensource.org/licenses/mit-license.php MIT
52
- */
53
- class LightOpenID
54
- {
55
- public $returnUrl
56
- , $required = array()
57
- , $optional = array()
58
- , $verify_peer = null
59
- , $capath = null
60
- , $cainfo = null
61
- , $data;
62
- private $identity, $claimed_id;
63
- protected $server, $version, $trustRoot, $aliases, $identifier_select = false
64
- , $ax = false, $sreg = false, $setup_url = null, $headers = array();
65
- static protected $ax_to_sreg = array(
66
- 'namePerson/friendly' => 'nickname',
67
- 'contact/email' => 'email',
68
- 'namePerson' => 'fullname',
69
- 'birthDate' => 'dob',
70
- 'person/gender' => 'gender',
71
- 'contact/postalCode/home' => 'postcode',
72
- 'contact/country/home' => 'country',
73
- 'pref/language' => 'language',
74
- 'pref/timezone' => 'timezone',
75
- );
76
-
77
- function __construct($host)
78
- {
79
- $this->trustRoot = (strpos($host, '://') ? $host : 'http://' . $host);
80
- if ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')
81
- || (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
82
- && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
83
- ) {
84
- $this->trustRoot = (strpos($host, '://') ? $host : 'https://' . $host);
85
- }
86
-
87
- if(($host_end = strpos($this->trustRoot, '/', 8)) !== false) {
88
- $this->trustRoot = substr($this->trustRoot, 0, $host_end);
89
- }
90
-
91
- $uri = rtrim(preg_replace('#((?<=\?)|&)openid\.[^&]+#', '', $_SERVER['REQUEST_URI']), '?');
92
- $this->returnUrl = $this->trustRoot . $uri;
93
-
94
- $this->data = ($_SERVER['REQUEST_METHOD'] === 'POST') ? $_POST : $_GET;
95
-
96
- if(!function_exists('curl_init') && !in_array('https', stream_get_wrappers())) {
97
- throw new ErrorException('You must have either https wrappers or curl enabled.');
98
- }
99
- }
100
-
101
- function __set($name, $value)
102
- {
103
- switch ($name) {
104
- case 'identity':
105
- if (strlen($value = trim((String) $value))) {
106
- if (preg_match('#^xri:/*#i', $value, $m)) {
107
- $value = substr($value, strlen($m[0]));
108
- } elseif (!preg_match('/^(?:[=@+\$!\(]|https?:)/i', $value)) {
109
- $value = "http://$value";
110
- }
111
- if (preg_match('#^https?://[^/]+$#i', $value, $m)) {
112
- $value .= '/';
113
- }
114
- }
115
- $this->$name = $this->claimed_id = $value;
116
- break;
117
- case 'trustRoot':
118
- case 'realm':
119
- $this->trustRoot = trim($value);
120
- }
121
- }
122
-
123
- function __get($name)
124
- {
125
- switch ($name) {
126
- case 'identity':
127
- # We return claimed_id instead of identity,
128
- # because the developer should see the claimed identifier,
129
- # i.e. what he set as identity, not the op-local identifier (which is what we verify)
130
- return $this->claimed_id;
131
- case 'trustRoot':
132
- case 'realm':
133
- return $this->trustRoot;
134
- case 'mode':
135
- return empty($this->data['openid_mode']) ? null : $this->data['openid_mode'];
136
- }
137
- }
138
-
139
- /**
140
- * Checks if the server specified in the url exists.
141
- *
142
- * @param $url url to check
143
- * @return true, if the server exists; false otherwise
144
- */
145
- function hostExists($url)
146
- {
147
- if (strpos($url, '/') === false) {
148
- $server = $url;
149
- } else {
150
- $server = @parse_url($url, PHP_URL_HOST);
151
- }
152
-
153
- if (!$server) {
154
- return false;
155
- }
156
-
157
- return !!gethostbynamel($server);
158
- }
159
-
160
- protected function request_curl($url, $method='GET', $params=array(), $update_claimed_id)
161
- {
162
- $params = http_build_query($params, '', '&');
163
- $curl = curl_init($url . ($method == 'GET' && $params ? '?' . $params : ''));
164
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
165
- curl_setopt($curl, CURLOPT_HEADER, false);
166
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
167
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
168
- curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/xrds+xml, */*'));
169
-
170
- if($this->verify_peer !== null) {
171
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, $this->verify_peer);
172
- if($this->capath) {
173
- curl_setopt($curl, CURLOPT_CAPATH, $this->capath);
174
- }
175
-
176
- if($this->cainfo) {
177
- curl_setopt($curl, CURLOPT_CAINFO, $this->cainfo);
178
- }
179
- }
180
-
181
- if ($method == 'POST') {
182
- curl_setopt($curl, CURLOPT_POST, true);
183
- curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
184
- } elseif ($method == 'HEAD') {
185
- curl_setopt($curl, CURLOPT_HEADER, true);
186
- curl_setopt($curl, CURLOPT_NOBODY, true);
187
- } else {
188
- curl_setopt($curl, CURLOPT_HEADER, true);
189
- curl_setopt($curl, CURLOPT_HTTPGET, true);
190
- }
191
- $response = curl_exec($curl);
192
-
193
- if($method == 'HEAD' && curl_getinfo($curl, CURLINFO_HTTP_CODE) == 405) {
194
- curl_setopt($curl, CURLOPT_HTTPGET, true);
195
- $response = curl_exec($curl);
196
- $response = substr($response, 0, strpos($response, "\r\n\r\n"));
197
- }
198
-
199
- if($method == 'HEAD' || $method == 'GET') {
200
- $header_response = $response;
201
-
202
- # If it's a GET request, we want to only parse the header part.
203
- if($method == 'GET') {
204
- $header_response = substr($response, 0, strpos($response, "\r\n\r\n"));
205
- }
206
-
207
- $headers = array();
208
- foreach(explode("\n", $header_response) as $header) {
209
- $pos = strpos($header,':');
210
- if ($pos !== false) {
211
- $name = strtolower(trim(substr($header, 0, $pos)));
212
- $headers[$name] = trim(substr($header, $pos+1));
213
- }
214
- }
215
-
216
- if($update_claimed_id) {
217
- # Updating claimed_id in case of redirections.
218
- $effective_url = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
219
- if($effective_url != $url) {
220
- $this->identity = $this->claimed_id = $effective_url;
221
- }
222
- }
223
-
224
- if($method == 'HEAD') {
225
- return $headers;
226
- } else {
227
- $this->headers = $headers;
228
- }
229
- }
230
-
231
- if (curl_errno($curl)) {
232
- throw new ErrorException(curl_error($curl), curl_errno($curl));
233
- }
234
-
235
- return $response;
236
- }
237
-
238
- protected function parse_header_array($array, $update_claimed_id)
239
- {
240
- $headers = array();
241
- foreach($array as $header) {
242
- $pos = strpos($header,':');
243
- if ($pos !== false) {
244
- $name = strtolower(trim(substr($header, 0, $pos)));
245
- $headers[$name] = trim(substr($header, $pos+1));
246
-
247
- # Following possible redirections. The point is just to have
248
- # claimed_id change with them, because the redirections
249
- # are followed automatically.
250
- # We ignore redirections with relative paths.
251
- # If any known provider uses them, file a bug report.
252
- if($name == 'location' && $update_claimed_id) {
253
- if(strpos($headers[$name], 'http') === 0) {
254
- $this->identity = $this->claimed_id = $headers[$name];
255
- } elseif($headers[$name][0] == '/') {
256
- $parsed_url = parse_url($this->claimed_id);
257
- $this->identity =
258
- $this->claimed_id = $parsed_url['scheme'] . '://'
259
- . $parsed_url['host']
260
- . $headers[$name];
261
- }
262
- }
263
- }
264
- }
265
- return $headers;
266
- }
267
-
268
- protected function request_streams($url, $method='GET', $params=array(), $update_claimed_id)
269
- {
270
- if(!$this->hostExists($url)) {
271
- throw new ErrorException("Could not connect to $url.", 404);
272
- }
273
-
274
- $params = http_build_query($params, '', '&');
275
- switch($method) {
276
- case 'GET':
277
- $opts = array(
278
- 'http' => array(
279
- 'method' => 'GET',
280
- 'header' => 'Accept: application/xrds+xml, */*',
281
- 'ignore_errors' => true,
282
- ), 'ssl' => array(
283
- 'CN_match' => parse_url($url, PHP_URL_HOST),
284
- ),
285
- );
286
- $url = $url . ($params ? '?' . $params : '');
287
- break;
288
- case 'POST':
289
- $opts = array(
290
- 'http' => array(
291
- 'method' => 'POST',
292
- 'header' => 'Content-type: application/x-www-form-urlencoded',
293
- 'content' => $params,
294
- 'ignore_errors' => true,
295
- ), 'ssl' => array(
296
- 'CN_match' => parse_url($url, PHP_URL_HOST),
297
- ),
298
- );
299
- break;
300
- case 'HEAD':
301
- # We want to send a HEAD request,
302
- # but since get_headers doesn't accept $context parameter,
303
- # we have to change the defaults.
304
- $default = stream_context_get_options(stream_context_get_default());
305
- stream_context_get_default(
306
- array(
307
- 'http' => array(
308
- 'method' => 'HEAD',
309
- 'header' => 'Accept: application/xrds+xml, */*',
310
- 'ignore_errors' => true,
311
- ), 'ssl' => array(
312
- 'CN_match' => parse_url($url, PHP_URL_HOST),
313
- ),
314
- )
315
- );
316
-
317
- $url = $url . ($params ? '?' . $params : '');
318
- $headers = get_headers ($url);
319
- if(!$headers) {
320
- return array();
321
- }
322
-
323
- if(intval(substr($headers[0], strlen('HTTP/1.1 '))) == 405) {
324
- # The server doesn't support HEAD, so let's emulate it with
325
- # a GET.
326
- $args = func_get_args();
327
- $args[1] = 'GET';
328
- call_user_func_array(array($this, 'request_streams'), $args);
329
- return $this->headers;
330
- }
331
-
332
- $headers = $this->parse_header_array($headers, $update_claimed_id);
333
-
334
- # And restore them.
335
- stream_context_get_default($default);
336
- return $headers;
337
- }
338
-
339
- if($this->verify_peer) {
340
- $opts['ssl'] += array(
341
- 'verify_peer' => true,
342
- 'capath' => $this->capath,
343
- 'cafile' => $this->cainfo,
344
- );
345
- }
346
-
347
- $context = stream_context_create ($opts);
348
- $data = file_get_contents($url, false, $context);
349
- # This is a hack for providers who don't support HEAD requests.
350
- # It just creates the headers array for the last request in $this->headers.
351
- if(isset($http_response_header)) {
352
- $this->headers = $this->parse_header_array($http_response_header, $update_claimed_id);
353
- }
354
-
355
- return $data;
356
- }
357
-
358
- protected function request($url, $method='GET', $params=array(), $update_claimed_id=false)
359
- {
360
- if (function_exists('curl_init')
361
- && (!in_array('https', stream_get_wrappers()) || !ini_get('safe_mode') && !ini_get('open_basedir'))
362
- ) {
363
- return $this->request_curl($url, $method, $params, $update_claimed_id);
364
- }
365
- return $this->request_streams($url, $method, $params, $update_claimed_id);
366
- }
367
-
368
- protected function build_url($url, $parts)
369
- {
370
- if (isset($url['query'], $parts['query'])) {
371
- $parts['query'] = $url['query'] . '&' . $parts['query'];
372
- }
373
-
374
- $url = $parts + $url;
375
- $url = $url['scheme'] . '://'
376
- . (empty($url['username'])?''
377
- :(empty($url['password'])? "{$url['username']}@"
378
- :"{$url['username']}:{$url['password']}@"))
379
- . $url['host']
380
- . (empty($url['port'])?'':":{$url['port']}")
381
- . (empty($url['path'])?'':$url['path'])
382
- . (empty($url['query'])?'':"?{$url['query']}")
383
- . (empty($url['fragment'])?'':"#{$url['fragment']}");
384
- return $url;
385
- }
386
-
387
- /**
388
- * Helper function used to scan for <meta>/<link> tags and extract information
389
- * from them
390
- */
391
- protected function htmlTag($content, $tag, $attrName, $attrValue, $valueName)
392
- {
393
- preg_match_all("#<{$tag}[^>]*$attrName=['\"].*?$attrValue.*?['\"][^>]*$valueName=['\"](.+?)['\"][^>]*/?>#i", $content, $matches1);
394
- preg_match_all("#<{$tag}[^>]*$valueName=['\"](.+?)['\"][^>]*$attrName=['\"].*?$attrValue.*?['\"][^>]*/?>#i", $content, $matches2);
395
-
396
- $result = array_merge($matches1[1], $matches2[1]);
397
- return empty($result)?false:$result[0];
398
- }
399
-
400
- /**
401
- * Performs Yadis and HTML discovery. Normally not used.
402
- * @param $url Identity URL.
403
- * @return String OP Endpoint (i.e. OpenID provider address).
404
- * @throws ErrorException
405
- */
406
- function discover($url)
407
- {
408
- if (!$url) throw new ErrorException('No identity supplied.');
409
- # Use xri.net proxy to resolve i-name identities
410
- if (!preg_match('#^https?:#', $url)) {
411
- $url = "https://xri.net/$url";
412
- }
413
-
414
- # We save the original url in case of Yadis discovery failure.
415
- # It can happen when we'll be lead to an XRDS document
416
- # which does not have any OpenID2 services.
417
- $originalUrl = $url;
418
-
419
- # A flag to disable yadis discovery in case of failure in headers.
420
- $yadis = true;
421
-
422
- # We'll jump a maximum of 5 times, to avoid endless redirections.
423
- for ($i = 0; $i < 5; $i ++) {
424
- if ($yadis) {
425
- $headers = $this->request($url, 'HEAD', array(), true);
426
-
427
- $next = false;
428
- if (isset($headers['x-xrds-location'])) {
429
- $url = $this->build_url(parse_url($url), parse_url(trim($headers['x-xrds-location'])));
430
- $next = true;
431
- }
432
-
433
- if (isset($headers['content-type'])
434
- && (strpos($headers['content-type'], 'application/xrds+xml') !== false
435
- || strpos($headers['content-type'], 'text/xml') !== false)
436
- ) {
437
- # Apparently, some providers return XRDS documents as text/html.
438
- # While it is against the spec, allowing this here shouldn't break
439
- # compatibility with anything.
440
- # ---
441
- # Found an XRDS document, now let's find the server, and optionally delegate.
442
- $content = $this->request($url, 'GET');
443
-
444
- preg_match_all('#<Service.*?>(.*?)</Service>#s', $content, $m);
445
- foreach($m[1] as $content) {
446
- $content = ' ' . $content; # The space is added, so that strpos doesn't return 0.
447
-
448
- # OpenID 2
449
- $ns = preg_quote('http://specs.openid.net/auth/2.0/', '#');
450
- if(preg_match('#<Type>\s*'.$ns.'(server|signon)\s*</Type>#s', $content, $type)) {
451
- if ($type[1] == 'server') $this->identifier_select = true;
452
-
453
- preg_match('#<URI.*?>(.*)</URI>#', $content, $server);
454
- preg_match('#<(Local|Canonical)ID>(.*)</\1ID>#', $content, $delegate);
455
- if (empty($server)) {
456
- return false;
457
- }
458
- # Does the server advertise support for either AX or SREG?
459
- $this->ax = (bool) strpos($content, '<Type>http://openid.net/srv/ax/1.0</Type>');
460
- $this->sreg = strpos($content, '<Type>http://openid.net/sreg/1.0</Type>')
461
- || strpos($content, '<Type>http://openid.net/extensions/sreg/1.1</Type>');
462
-
463
- $server = $server[1];
464
- if (isset($delegate[2])) $this->identity = trim($delegate[2]);
465
- $this->version = 2;
466
-
467
- $this->server = $server;
468
- return $server;
469
- }
470
-
471
- # OpenID 1.1
472
- $ns = preg_quote('http://openid.net/signon/1.1', '#');
473
- if (preg_match('#<Type>\s*'.$ns.'\s*</Type>#s', $content)) {
474
-
475
- preg_match('#<URI.*?>(.*)</URI>#', $content, $server);
476
- preg_match('#<.*?Delegate>(.*)</.*?Delegate>#', $content, $delegate);
477
- if (empty($server)) {
478
- return false;
479
- }
480
- # AX can be used only with OpenID 2.0, so checking only SREG
481
- $this->sreg = strpos($content, '<Type>http://openid.net/sreg/1.0</Type>')
482
- || strpos($content, '<Type>http://openid.net/extensions/sreg/1.1</Type>');
483
-
484
- $server = $server[1];
485
- if (isset($delegate[1])) $this->identity = $delegate[1];
486
- $this->version = 1;
487
-
488
- $this->server = $server;
489
- return $server;
490
- }
491
- }
492
-
493
- $next = true;
494
- $yadis = false;
495
- $url = $originalUrl;
496
- $content = null;
497
- break;
498
- }
499
- if ($next) continue;
500
-
501
- # There are no relevant information in headers, so we search the body.
502
- $content = $this->request($url, 'GET', array(), true);
503
-
504
- if (isset($this->headers['x-xrds-location'])) {
505
- $url = $this->build_url(parse_url($url), parse_url(trim($this->headers['x-xrds-location'])));
506
- continue;
507
- }
508
-
509
- $location = $this->htmlTag($content, 'meta', 'http-equiv', 'X-XRDS-Location', 'content');
510
- if ($location) {
511
- $url = $this->build_url(parse_url($url), parse_url($location));
512
- continue;
513
- }
514
- }
515
-
516
- if (!$content) $content = $this->request($url, 'GET');
517
-
518
- # At this point, the YADIS Discovery has failed, so we'll switch
519
- # to openid2 HTML discovery, then fallback to openid 1.1 discovery.
520
- $server = $this->htmlTag($content, 'link', 'rel', 'openid2.provider', 'href');
521
- $delegate = $this->htmlTag($content, 'link', 'rel', 'openid2.local_id', 'href');
522
- $this->version = 2;
523
-
524
- if (!$server) {
525
- # The same with openid 1.1
526
- $server = $this->htmlTag($content, 'link', 'rel', 'openid.server', 'href');
527
- $delegate = $this->htmlTag($content, 'link', 'rel', 'openid.delegate', 'href');
528
- $this->version = 1;
529
- }
530
-
531
- if ($server) {
532
- # We found an OpenID2 OP Endpoint
533
- if ($delegate) {
534
- # We have also found an OP-Local ID.
535
- $this->identity = $delegate;
536
- }
537
- $this->server = $server;
538
- return $server;
539
- }
540
-
541
- throw new ErrorException("No OpenID Server found at $url", 404);
542
- }
543
- throw new ErrorException('Endless redirection!', 500);
544
- }
545
-
546
- protected function sregParams()
547
- {
548
- $params = array();
549
- # We always use SREG 1.1, even if the server is advertising only support for 1.0.
550
- # That's because it's fully backwards compatibile with 1.0, and some providers
551
- # advertise 1.0 even if they accept only 1.1. One such provider is myopenid.com
552
- $params['openid.ns.sreg'] = 'http://openid.net/extensions/sreg/1.1';
553
- if ($this->required) {
554
- $params['openid.sreg.required'] = array();
555
- foreach ($this->required as $required) {
556
- if (!isset(self::$ax_to_sreg[$required])) continue;
557
- $params['openid.sreg.required'][] = self::$ax_to_sreg[$required];
558
- }
559
- $params['openid.sreg.required'] = implode(',', $params['openid.sreg.required']);
560
- }
561
-
562
- if ($this->optional) {
563
- $params['openid.sreg.optional'] = array();
564
- foreach ($this->optional as $optional) {
565
- if (!isset(self::$ax_to_sreg[$optional])) continue;
566
- $params['openid.sreg.optional'][] = self::$ax_to_sreg[$optional];
567
- }
568
- $params['openid.sreg.optional'] = implode(',', $params['openid.sreg.optional']);
569
- }
570
- return $params;
571
- }
572
-
573
- protected function axParams()
574
- {
575
- $params = array();
576
- if ($this->required || $this->optional) {
577
- $params['openid.ns.ax'] = 'http://openid.net/srv/ax/1.0';
578
- $params['openid.ax.mode'] = 'fetch_request';
579
- $this->aliases = array();
580
- $counts = array();
581
- $required = array();
582
- $optional = array();
583
- foreach (array('required','optional') as $type) {
584
- foreach ($this->$type as $alias => $field) {
585
- if (is_int($alias)) $alias = strtr($field, '/', '_');
586
- $this->aliases[$alias] = 'http://axschema.org/' . $field;
587
- if (empty($counts[$alias])) $counts[$alias] = 0;
588
- $counts[$alias] += 1;
589
- ${$type}[] = $alias;
590
- }
591
- }
592
- foreach ($this->aliases as $alias => $ns) {
593
- $params['openid.ax.type.' . $alias] = $ns;
594
- }
595
- foreach ($counts as $alias => $count) {
596
- if ($count == 1) continue;
597
- $params['openid.ax.count.' . $alias] = $count;
598
- }
599
-
600
- # Don't send empty ax.requied and ax.if_available.
601
- # Google and possibly other providers refuse to support ax when one of these is empty.
602
- if($required) {
603
- $params['openid.ax.required'] = implode(',', $required);
604
- }
605
- if($optional) {
606
- $params['openid.ax.if_available'] = implode(',', $optional);
607
- }
608
- }
609
- return $params;
610
- }
611
-
612
- protected function authUrl_v1($immediate)
613
- {
614
- $returnUrl = $this->returnUrl;
615
- # If we have an openid.delegate that is different from our claimed id,
616
- # we need to somehow preserve the claimed id between requests.
617
- # The simplest way is to just send it along with the return_to url.
618
- if($this->identity != $this->claimed_id) {
619
- $returnUrl .= (strpos($returnUrl, '?') ? '&' : '?') . 'openid.claimed_id=' . $this->claimed_id;
620
- }
621
-
622
- $params = array(
623
- 'openid.return_to' => $returnUrl,
624
- 'openid.mode' => $immediate ? 'checkid_immediate' : 'checkid_setup',
625
- 'openid.identity' => $this->identity,
626
- 'openid.trust_root' => $this->trustRoot,
627
- ) + $this->sregParams();
628
-
629
- return $this->build_url(parse_url($this->server)
630
- , array('query' => http_build_query($params, '', '&')));
631
- }
632
-
633
- protected function authUrl_v2($immediate)
634
- {
635
- $params = array(
636
- 'openid.ns' => 'http://specs.openid.net/auth/2.0',
637
- 'openid.mode' => $immediate ? 'checkid_immediate' : 'checkid_setup',
638
- 'openid.return_to' => $this->returnUrl,
639
- 'openid.realm' => $this->trustRoot,
640
- );
641
- if ($this->ax) {
642
- $params += $this->axParams();
643
- }
644
- if ($this->sreg) {
645
- $params += $this->sregParams();
646
- }
647
- if (!$this->ax && !$this->sreg) {
648
- # If OP doesn't advertise either SREG, nor AX, let's send them both
649
- # in worst case we don't get anything in return.
650
- $params += $this->axParams() + $this->sregParams();
651
- }
652
-
653
- if ($this->identifier_select) {
654
- $params['openid.identity'] = $params['openid.claimed_id']
655
- = 'http://specs.openid.net/auth/2.0/identifier_select';
656
- } else {
657
- $params['openid.identity'] = $this->identity;
658
- $params['openid.claimed_id'] = $this->claimed_id;
659
- }
660
-
661
- return $this->build_url(parse_url($this->server)
662
- , array('query' => http_build_query($params, '', '&')));
663
- }
664
-
665
- /**
666
- * Returns authentication url. Usually, you want to redirect your user to it.
667
- * @return String The authentication url.
668
- * @param String $select_identifier Whether to request OP to select identity for an user in OpenID 2. Does not affect OpenID 1.
669
- * @throws ErrorException
670
- */
671
- function authUrl($immediate = false)
672
- {
673
- if ($this->setup_url && !$immediate) return $this->setup_url;
674
- if (!$this->server) $this->discover($this->identity);
675
-
676
- if ($this->version == 2) {
677
- return $this->authUrl_v2($immediate);
678
- }
679
- return $this->authUrl_v1($immediate);
680
- }
681
-
682
- /**
683
- * Performs OpenID verification with the OP.
684
- * @return Bool Whether the verification was successful.
685
- * @throws ErrorException
686
- */
687
- function validate()
688
- {
689
- # If the request was using immediate mode, a failure may be reported
690
- # by presenting user_setup_url (for 1.1) or reporting
691
- # mode 'setup_needed' (for 2.0). Also catching all modes other than
692
- # id_res, in order to avoid throwing errors.
693
- if(isset($this->data['openid_user_setup_url'])) {
694
- $this->setup_url = $this->data['openid_user_setup_url'];
695
- return false;
696
- }
697
- if($this->mode != 'id_res') {
698
- return false;
699
- }
700
-
701
- $this->claimed_id = isset($this->data['openid_claimed_id'])?$this->data['openid_claimed_id']:$this->data['openid_identity'];
702
- $params = array(
703
- 'openid.assoc_handle' => $this->data['openid_assoc_handle'],
704
- 'openid.signed' => $this->data['openid_signed'],
705
- 'openid.sig' => $this->data['openid_sig'],
706
- );
707
-
708
- if (isset($this->data['openid_ns'])) {
709
- # We're dealing with an OpenID 2.0 server, so let's set an ns
710
- # Even though we should know location of the endpoint,
711
- # we still need to verify it by discovery, so $server is not set here
712
- $params['openid.ns'] = 'http://specs.openid.net/auth/2.0';
713
- } elseif (isset($this->data['openid_claimed_id'])
714
- && $this->data['openid_claimed_id'] != $this->data['openid_identity']
715
- ) {
716
- # If it's an OpenID 1 provider, and we've got claimed_id,
717
- # we have to append it to the returnUrl, like authUrl_v1 does.
718
- $this->returnUrl .= (strpos($this->returnUrl, '?') ? '&' : '?')
719
- . 'openid.claimed_id=' . $this->claimed_id;
720
- }
721
-
722
- if ($this->data['openid_return_to'] != $this->returnUrl) {
723
- # The return_to url must match the url of current request.
724
- # I'm assuing that noone will set the returnUrl to something that doesn't make sense.
725
- return false;
726
- }
727
-
728
- $server = $this->discover($this->claimed_id);
729
-
730
- foreach (explode(',', $this->data['openid_signed']) as $item) {
731
- # Checking whether magic_quotes_gpc is turned on, because
732
- # the function may fail if it is. For example, when fetching
733
- # AX namePerson, it might containg an apostrophe, which will be escaped.
734
- # In such case, validation would fail, since we'd send different data than OP
735
- # wants to verify. stripslashes() should solve that problem, but we can't
736
- # use it when magic_quotes is off.
737
- $value = $this->data['openid_' . str_replace('.','_',$item)];
738
- $params['openid.' . $item] = function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc() ? stripslashes($value) : $value;
739
-
740
- }
741
-
742
- $params['openid.mode'] = 'check_authentication';
743
-
744
- $response = $this->request($server, 'POST', $params);
745
-
746
- return preg_match('/is_valid\s*:\s*true/i', $response);
747
- }
748
-
749
- protected function getAxAttributes()
750
- {
751
- $alias = null;
752
- if (isset($this->data['openid_ns_ax'])
753
- && $this->data['openid_ns_ax'] != 'http://openid.net/srv/ax/1.0'
754
- ) { # It's the most likely case, so we'll check it before
755
- $alias = 'ax';
756
- } else {
757
- # 'ax' prefix is either undefined, or points to another extension,
758
- # so we search for another prefix
759
- foreach ($this->data as $key => $val) {
760
- if (substr($key, 0, strlen('openid_ns_')) == 'openid_ns_'
761
- && $val == 'http://openid.net/srv/ax/1.0'
762
- ) {
763
- $alias = substr($key, strlen('openid_ns_'));
764
- break;
765
- }
766
- }
767
- }
768
- if (!$alias) {
769
- # An alias for AX schema has not been found,
770
- # so there is no AX data in the OP's response
771
- return array();
772
- }
773
-
774
- $attributes = array();
775
- foreach (explode(',', $this->data['openid_signed']) as $key) {
776
- $keyMatch = $alias . '.value.';
777
- if (substr($key, 0, strlen($keyMatch)) != $keyMatch) {
778
- continue;
779
- }
780
- $key = substr($key, strlen($keyMatch));
781
- if (!isset($this->data['openid_' . $alias . '_type_' . $key])) {
782
- # OP is breaking the spec by returning a field without
783
- # associated ns. This shouldn't happen, but it's better
784
- # to check, than cause an E_NOTICE.
785
- continue;
786
- }
787
- $value = $this->data['openid_' . $alias . '_value_' . $key];
788
- $key = substr($this->data['openid_' . $alias . '_type_' . $key],
789
- strlen('http://axschema.org/'));
790
-
791
- $attributes[$key] = $value;
792
- }
793
- return $attributes;
794
- }
795
-
796
- protected function getSregAttributes()
797
- {
798
- $attributes = array();
799
- $sreg_to_ax = array_flip(self::$ax_to_sreg);
800
- foreach (explode(',', $this->data['openid_signed']) as $key) {
801
- $keyMatch = 'sreg.';
802
- if (substr($key, 0, strlen($keyMatch)) != $keyMatch) {
803
- continue;
804
- }
805
- $key = substr($key, strlen($keyMatch));
806
- if (!isset($sreg_to_ax[$key])) {
807
- # The field name isn't part of the SREG spec, so we ignore it.
808
- continue;
809
- }
810
- $attributes[$sreg_to_ax[$key]] = $this->data['openid_sreg_' . $key];
811
- }
812
- return $attributes;
813
- }
814
-
815
- /**
816
- * Gets AX/SREG attributes provided by OP. should be used only after successful validaton.
817
- * Note that it does not guarantee that any of the required/optional parameters will be present,
818
- * or that there will be no other attributes besides those specified.
819
- * In other words. OP may provide whatever information it wants to.
820
- * * SREG names will be mapped to AX names.
821
- * * @return Array Array of attributes with keys being the AX schema names, e.g. 'contact/email'
822
- * @see http://www.axschema.org/types/
823
- */
824
- function getAttributes()
825
- {
826
- if (isset($this->data['openid_ns'])
827
- && $this->data['openid_ns'] == 'http://specs.openid.net/auth/2.0'
828
- ) { # OpenID 2.0
829
- # We search for both AX and SREG attributes, with AX taking precedence.
830
- return $this->getAxAttributes() + $this->getSregAttributes();
831
- }
832
- return $this->getSregAttributes();
833
- }
834
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // https://github.com/iignatov/LightOpenID
3
+
4
+ /**
5
+ * This class provides a simple interface for OpenID 1.1/2.0 authentication.
6
+ *
7
+ * It requires PHP >= 5.1.2 with cURL or HTTP/HTTPS stream wrappers enabled.
8
+ *
9
+ * @version v1.1.2 2013-01-15
10
+ * @link http://gitorious.org/lightopenid Official Repo
11
+ * @link http://github.com/iignatov/LightOpenID GitHub Clone
12
+ * @author Mewp
13
+ * @copyright Copyright (c) 2010, Mewp
14
+ * @license http://www.opensource.org/licenses/mit-license.php MIT License
15
+ */
16
+ class LightOpenID
17
+ {
18
+ public $returnUrl
19
+ , $required = array()
20
+ , $optional = array()
21
+ , $verify_peer = null
22
+ , $capath = null
23
+ , $cainfo = null
24
+ , $data
25
+ , $oauth = array();
26
+ private $identity, $claimed_id;
27
+ protected $server, $version, $trustRoot, $aliases, $identifier_select = false
28
+ , $ax = false, $sreg = false, $setup_url = null, $headers = array(), $proxy = null
29
+ , $xrds_override_pattern = null, $xrds_override_replacement = null;
30
+ static protected $ax_to_sreg = array(
31
+ 'namePerson/friendly' => 'nickname',
32
+ 'contact/email' => 'email',
33
+ 'namePerson' => 'fullname',
34
+ 'birthDate' => 'dob',
35
+ 'person/gender' => 'gender',
36
+ 'contact/postalCode/home' => 'postcode',
37
+ 'contact/country/home' => 'country',
38
+ 'pref/language' => 'language',
39
+ 'pref/timezone' => 'timezone',
40
+ );
41
+
42
+ function __construct($host, $proxy = null)
43
+ {
44
+ $this->trustRoot = (strpos($host, '://') ? $host : 'http://' . $host);
45
+ if ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')
46
+ || (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
47
+ && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
48
+ ) {
49
+ $this->trustRoot = (strpos($host, '://') ? $host : 'https://' . $host);
50
+ }
51
+
52
+ if(strlen($this->trustRoot >= 8) && ($host_end = strpos($this->trustRoot, '/', 8)) !== false) {
53
+ $this->trustRoot = substr($this->trustRoot, 0, $host_end);
54
+ }
55
+
56
+ $this->set_proxy($proxy);
57
+
58
+ $uri = rtrim(preg_replace('#((?<=\?)|&)openid\.[^&]+#', '', $_SERVER['REQUEST_URI']), '?');
59
+ $this->returnUrl = $this->trustRoot . $uri;
60
+
61
+ $this->data = ($_SERVER['REQUEST_METHOD'] === 'POST') ? $_POST : $_GET;
62
+
63
+ if(!function_exists('curl_init') && !in_array('https', stream_get_wrappers())) {
64
+ throw new ErrorException('You must have either https wrappers or curl enabled.');
65
+ }
66
+ }
67
+
68
+ function __set($name, $value)
69
+ {
70
+ switch ($name) {
71
+ case 'identity':
72
+ if (strlen($value = trim((String) $value))) {
73
+ if (preg_match('#^xri:/*#i', $value, $m)) {
74
+ $value = substr($value, strlen($m[0]));
75
+ } elseif (!preg_match('/^(?:[=@+\$!\(]|https?:)/i', $value)) {
76
+ $value = "http://$value";
77
+ }
78
+ if (preg_match('#^https?://[^/]+$#i', $value, $m)) {
79
+ $value .= '/';
80
+ }
81
+ }
82
+ $this->$name = $this->claimed_id = $value;
83
+ break;
84
+ case 'trustRoot':
85
+ case 'realm':
86
+ $this->trustRoot = trim($value);
87
+ break;
88
+ case 'xrdsOverride':
89
+ if (is_array($value)) {
90
+ list($pattern, $replacement) = $value;
91
+ $this->xrds_override_pattern = $pattern;
92
+ $this->xrds_override_replacement = $replacement;
93
+ } else {
94
+ trigger_error('Invalid value specified for "xrdsOverride".', E_USER_ERROR);
95
+ }
96
+ break;
97
+ }
98
+ }
99
+
100
+ function __get($name)
101
+ {
102
+ switch ($name) {
103
+ case 'identity':
104
+ # We return claimed_id instead of identity,
105
+ # because the developer should see the claimed identifier,
106
+ # i.e. what he set as identity, not the op-local identifier (which is what we verify)
107
+ return $this->claimed_id;
108
+ case 'trustRoot':
109
+ case 'realm':
110
+ return $this->trustRoot;
111
+ case 'mode':
112
+ return empty($this->data['openid_mode']) ? null : $this->data['openid_mode'];
113
+ }
114
+ }
115
+
116
+ function set_proxy($proxy)
117
+ {
118
+ if (!empty($proxy)) {
119
+ // When the proxy is a string - try to parse it.
120
+ if (!is_array($proxy)) {
121
+ $proxy = parse_url($proxy);
122
+ }
123
+
124
+ // Check if $proxy is valid after the parsing.
125
+ if ($proxy && !empty($proxy['host'])) {
126
+ // Make sure that a valid port number is specified.
127
+ if (array_key_exists('port', $proxy)) {
128
+ if (!is_int($proxy['port'])) {
129
+ $proxy['port'] = is_numeric($proxy['port']) ? intval($proxy['port']) : 0;
130
+ }
131
+
132
+ if ($proxy['port'] <= 0) {
133
+ throw new ErrorException('The specified proxy port number is invalid.');
134
+ }
135
+ }
136
+
137
+ $this->proxy = $proxy;
138
+ }
139
+ }
140
+ }
141
+
142
+ /**
143
+ * Checks if the server specified in the url exists.
144
+ *
145
+ * @param $url url to check
146
+ * @return true, if the server exists; false otherwise
147
+ */
148
+ function hostExists($url)
149
+ {
150
+ if (strpos($url, '/') === false) {
151
+ $server = $url;
152
+ } else {
153
+ $server = @parse_url($url, PHP_URL_HOST);
154
+ }
155
+
156
+ if (!$server) {
157
+ return false;
158
+ }
159
+
160
+ return !!gethostbynamel($server);
161
+ }
162
+
163
+ protected function request_curl($url, $method='GET', $params=array(), $update_claimed_id)
164
+ {
165
+ $params = http_build_query($params, '', '&');
166
+ $curl = curl_init($url . ($method == 'GET' && $params ? '?' . $params : ''));
167
+ curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
168
+ curl_setopt($curl, CURLOPT_HEADER, false);
169
+ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
170
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
171
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/xrds+xml, */*'));
172
+
173
+ if (!empty($this->proxy)) {
174
+ curl_setopt($curl, CURLOPT_PROXY, $this->proxy['host']);
175
+
176
+ if (!empty($this->proxy['port'])) {
177
+ curl_setopt($curl, CURLOPT_PROXYPORT, $this->proxy['port']);
178
+ }
179
+
180
+ if (!empty($this->proxy['user'])) {
181
+ curl_setopt($curl, CURLOPT_PROXYUSERPWD, $this->proxy['user'] . ':' . $this->proxy['pass']);
182
+ }
183
+ }
184
+
185
+ if($this->verify_peer !== null) {
186
+ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, $this->verify_peer);
187
+ if($this->capath) {
188
+ curl_setopt($curl, CURLOPT_CAPATH, $this->capath);
189
+ }
190
+
191
+ if($this->cainfo) {
192
+ curl_setopt($curl, CURLOPT_CAINFO, $this->cainfo);
193
+ }
194
+ }
195
+
196
+ if ($method == 'POST') {
197
+ curl_setopt($curl, CURLOPT_POST, true);
198
+ curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
199
+ } elseif ($method == 'HEAD') {
200
+ curl_setopt($curl, CURLOPT_HEADER, true);
201
+ curl_setopt($curl, CURLOPT_NOBODY, true);
202
+ } else {
203
+ curl_setopt($curl, CURLOPT_HEADER, true);
204
+ curl_setopt($curl, CURLOPT_HTTPGET, true);
205
+ }
206
+ $response = curl_exec($curl);
207
+ if( $response === FALSE ) {
208
+ Hybrid_Logger::error( "LightOpenID::request_curl(). curl_exec error: ", curl_error($curl) );
209
+ }
210
+
211
+ if($method == 'HEAD' && curl_getinfo($curl, CURLINFO_HTTP_CODE) == 405) {
212
+ curl_setopt($curl, CURLOPT_HTTPGET, true);
213
+ $response = curl_exec($curl);
214
+ $response = substr($response, 0, strpos($response, "\r\n\r\n"));
215
+ }
216
+
217
+ if($method == 'HEAD' || $method == 'GET') {
218
+ $header_response = $response;
219
+
220
+ # If it's a GET request, we want to only parse the header part.
221
+ if($method == 'GET') {
222
+ $header_response = substr($response, 0, strpos($response, "\r\n\r\n"));
223
+ }
224
+
225
+ $headers = array();
226
+ foreach(explode("\n", $header_response) as $header) {
227
+ $pos = strpos($header,':');
228
+ if ($pos !== false) {
229
+ $name = strtolower(trim(substr($header, 0, $pos)));
230
+ $headers[$name] = trim(substr($header, $pos+1));
231
+ }
232
+ }
233
+
234
+ if($update_claimed_id) {
235
+ # Updating claimed_id in case of redirections.
236
+ $effective_url = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
237
+ if($effective_url != $url) {
238
+ $this->identity = $this->claimed_id = $effective_url;
239
+ }
240
+ }
241
+
242
+ if($method == 'HEAD') {
243
+ return $headers;
244
+ } else {
245
+ $this->headers = $headers;
246
+ }
247
+ }
248
+
249
+ if (curl_errno($curl)) {
250
+ throw new ErrorException(curl_error($curl), curl_errno($curl));
251
+ }
252
+
253
+ return $response;
254
+ }
255
+
256
+ protected function parse_header_array($array, $update_claimed_id)
257
+ {
258
+ $headers = array();
259
+ foreach($array as $header) {
260
+ $pos = strpos($header,':');
261
+ if ($pos !== false) {
262
+ $name = strtolower(trim(substr($header, 0, $pos)));
263
+ $headers[$name] = trim(substr($header, $pos+1));
264
+
265
+ # Following possible redirections. The point is just to have
266
+ # claimed_id change with them, because the redirections
267
+ # are followed automatically.
268
+ # We ignore redirections with relative paths.
269
+ # If any known provider uses them, file a bug report.
270
+ if($name == 'location' && $update_claimed_id) {
271
+ if(strpos($headers[$name], 'http') === 0) {
272
+ $this->identity = $this->claimed_id = $headers[$name];
273
+ } elseif($headers[$name][0] == '/') {
274
+ $parsed_url = parse_url($this->claimed_id);
275
+ $this->identity =
276
+ $this->claimed_id = $parsed_url['scheme'] . '://'
277
+ . $parsed_url['host']
278
+ . $headers[$name];
279
+ }
280
+ }
281
+ }
282
+ }
283
+ return $headers;
284
+ }
285
+
286
+ protected function request_streams($url, $method='GET', $params=array(), $update_claimed_id)
287
+ {
288
+ if(!$this->hostExists($url)) {
289
+ throw new ErrorException("Could not connect to $url.", 404);
290
+ }
291
+
292
+ $params = http_build_query($params, '', '&');
293
+ switch($method) {
294
+ case 'GET':
295
+ $opts = array(
296
+ 'http' => array(
297
+ 'method' => 'GET',
298
+ 'header' => 'Accept: application/xrds+xml, */*',
299
+ 'ignore_errors' => true,
300
+ ), 'ssl' => array(
301
+ 'CN_match' => parse_url($url, PHP_URL_HOST),
302
+ ),
303
+ );
304
+ $url = $url . ($params ? '?' . $params : '');
305
+ if (!empty($this->proxy)) {
306
+ $opts['http']['proxy'] = $this->proxy_url();
307
+ }
308
+ break;
309
+ case 'POST':
310
+ $opts = array(
311
+ 'http' => array(
312
+ 'method' => 'POST',
313
+ 'header' => 'Content-type: application/x-www-form-urlencoded',
314
+ 'content' => $params,
315
+ 'ignore_errors' => true,
316
+ ), 'ssl' => array(
317
+ 'CN_match' => parse_url($url, PHP_URL_HOST),
318
+ ),
319
+ );
320
+ if (!empty($this->proxy)) {
321
+ $opts['http']['proxy'] = $this->proxy_url();
322
+ }
323
+ break;
324
+ case 'HEAD':
325
+ // We want to send a HEAD request, but since get_headers() doesn't
326
+ // accept $context parameter, we have to change the defaults.
327
+ $default = stream_context_get_options(stream_context_get_default());
328
+
329
+ // PHP does not reset all options. Instead, it just sets the options
330
+ // available in the passed array, therefore set the defaults manually.
331
+ $default += array(
332
+ 'http' => array(),
333
+ 'ssl' => array()
334
+ );
335
+ $default['http'] += array(
336
+ 'method' => 'GET',
337
+ 'header' => '',
338
+ 'ignore_errors' => false
339
+ );
340
+ $default['ssl'] += array(
341
+ 'CN_match' => ''
342
+ );
343
+
344
+ $opts = array(
345
+ 'http' => array(
346
+ 'method' => 'HEAD',
347
+ 'header' => 'Accept: application/xrds+xml, */*',
348
+ 'ignore_errors' => true,
349
+ ),
350
+ 'ssl' => array(
351
+ 'CN_match' => parse_url($url, PHP_URL_HOST)
352
+ )
353
+ );
354
+
355
+ // Enable validation of the SSL certificates.
356
+ if ($this->verify_peer) {
357
+ $default['ssl'] += array(
358
+ 'verify_peer' => false,
359
+ 'capath' => '',
360
+ 'cafile' => ''
361
+ );
362
+ $opts['ssl'] += array(
363
+ 'verify_peer' => true,
364
+ 'capath' => $this->capath,
365
+ 'cafile' => $this->cainfo
366
+ );
367
+ }
368
+
369
+ // Change the stream context options.
370
+ stream_context_get_default($opts);
371
+
372
+ $headers = get_headers($url . ($params ? '?' . $params : ''));
373
+
374
+ // Restore the stream context options.
375
+ stream_context_get_default($default);
376
+
377
+ if (!empty($headers)) {
378
+ if (intval(substr($headers[0], strlen('HTTP/1.1 '))) == 405) {
379
+ // The server doesn't support HEAD - emulate it with a GET.
380
+ $args = func_get_args();
381
+ $args[1] = 'GET';
382
+ call_user_func_array(array($this, 'request_streams'), $args);
383
+ $headers = $this->headers;
384
+ } else {
385
+ $headers = $this->parse_header_array($headers, $update_claimed_id);
386
+ }
387
+ } else {
388
+ $headers = array();
389
+ }
390
+
391
+ return $headers;
392
+ }
393
+
394
+ if ($this->verify_peer) {
395
+ $opts['ssl'] += array(
396
+ 'verify_peer' => true,
397
+ 'capath' => $this->capath,
398
+ 'cafile' => $this->cainfo
399
+ );
400
+ }
401
+
402
+ $context = stream_context_create ($opts);
403
+ $data = file_get_contents($url, false, $context);
404
+ # This is a hack for providers who don't support HEAD requests.
405
+ # It just creates the headers array for the last request in $this->headers.
406
+ if(isset($http_response_header)) {
407
+ $this->headers = $this->parse_header_array($http_response_header, $update_claimed_id);
408
+ }
409
+
410
+ return $data;
411
+ }
412
+
413
+ protected function request($url, $method='GET', $params=array(), $update_claimed_id=false)
414
+ {
415
+ if (function_exists('curl_init')
416
+ && (!in_array('https', stream_get_wrappers()) || !ini_get('safe_mode') && !ini_get('open_basedir'))
417
+ ) {
418
+ return $this->request_curl($url, $method, $params, $update_claimed_id);
419
+ }
420
+ return $this->request_streams($url, $method, $params, $update_claimed_id);
421
+ }
422
+
423
+ protected function proxy_url()
424
+ {
425
+ $result = '';
426
+
427
+ if (!empty($this->proxy)) {
428
+ $result = $this->proxy['host'];
429
+
430
+ if (!empty($this->proxy['port'])) {
431
+ $result = $result . ':' . $this->proxy['port'];
432
+ }
433
+
434
+ if (!empty($this->proxy['user'])) {
435
+ $result = $this->proxy['user'] . ':' . $this->proxy['pass'] . '@' . $result;
436
+ }
437
+
438
+ $result = 'http://' . $result;
439
+ }
440
+
441
+ return $result;
442
+ }
443
+
444
+ protected function build_url($url, $parts)
445
+ {
446
+ if (isset($url['query'], $parts['query'])) {
447
+ $parts['query'] = $url['query'] . '&' . $parts['query'];
448
+ }
449
+
450
+ $url = $parts + $url;
451
+ $url = $url['scheme'] . '://'
452
+ . (empty($url['username'])?''
453
+ :(empty($url['password'])? "{$url['username']}@"
454
+ :"{$url['username']}:{$url['password']}@"))
455
+ . $url['host']
456
+ . (empty($url['port'])?'':":{$url['port']}")
457
+ . (empty($url['path'])?'':$url['path'])
458
+ . (empty($url['query'])?'':"?{$url['query']}")
459
+ . (empty($url['fragment'])?'':"#{$url['fragment']}");
460
+ return $url;
461
+ }
462
+
463
+ /**
464
+ * Helper function used to scan for <meta>/<link> tags and extract information
465
+ * from them
466
+ */
467
+ protected function htmlTag($content, $tag, $attrName, $attrValue, $valueName)
468
+ {
469
+ preg_match_all("#<{$tag}[^>]*$attrName=['\"].*?$attrValue.*?['\"][^>]*$valueName=['\"](.+?)['\"][^>]*/?>#i", $content, $matches1);
470
+ preg_match_all("#<{$tag}[^>]*$valueName=['\"](.+?)['\"][^>]*$attrName=['\"].*?$attrValue.*?['\"][^>]*/?>#i", $content, $matches2);
471
+
472
+ $result = array_merge($matches1[1], $matches2[1]);
473
+ return empty($result)?false:$result[0];
474
+ }
475
+
476
+ /**
477
+ * Performs Yadis and HTML discovery. Normally not used.
478
+ * @param $url Identity URL.
479
+ * @return String OP Endpoint (i.e. OpenID provider address).
480
+ * @throws ErrorException
481
+ */
482
+ function discover($url)
483
+ {
484
+ if (!$url) throw new ErrorException('No identity supplied.');
485
+ # Use xri.net proxy to resolve i-name identities
486
+ if (!preg_match('#^https?:#', $url)) {
487
+ $url = "https://xri.net/$url";
488
+ }
489
+
490
+ # We save the original url in case of Yadis discovery failure.
491
+ # It can happen when we'll be lead to an XRDS document
492
+ # which does not have any OpenID2 services.
493
+ $originalUrl = $url;
494
+
495
+ # A flag to disable yadis discovery in case of failure in headers.
496
+ $yadis = true;
497
+
498
+ # Allows optional regex replacement of the URL, e.g. to use Google Apps
499
+ # as an OpenID provider without setting up XRDS on the domain hosting.
500
+ if (!is_null($this->xrds_override_pattern) && !is_null($this->xrds_override_replacement)) {
501
+ $url = preg_replace($this->xrds_override_pattern, $this->xrds_override_replacement, $url);
502
+ }
503
+
504
+ # We'll jump a maximum of 5 times, to avoid endless redirections.
505
+ for ($i = 0; $i < 5; $i ++) {
506
+ if ($yadis) {
507
+ $headers = $this->request($url, 'HEAD', array(), true);
508
+
509
+ $next = false;
510
+ if (isset($headers['x-xrds-location'])) {
511
+ $url = $this->build_url(parse_url($url), parse_url(trim($headers['x-xrds-location'])));
512
+ $next = true;
513
+ }
514
+
515
+ if (isset($headers['content-type'])
516
+ && (strpos($headers['content-type'], 'application/xrds+xml') !== false
517
+ || strpos($headers['content-type'], 'text/xml') !== false)
518
+ ) {
519
+ # Apparently, some providers return XRDS documents as text/html.
520
+ # While it is against the spec, allowing this here shouldn't break
521
+ # compatibility with anything.
522
+ # ---
523
+ # Found an XRDS document, now let's find the server, and optionally delegate.
524
+ $content = $this->request($url, 'GET');
525
+
526
+ preg_match_all('#<Service.*?>(.*?)</Service>#s', $content, $m);
527
+ foreach($m[1] as $content) {
528
+ $content = ' ' . $content; # The space is added, so that strpos doesn't return 0.
529
+
530
+ # OpenID 2
531
+ $ns = preg_quote('http://specs.openid.net/auth/2.0/', '#');
532
+ if(preg_match('#<Type>\s*'.$ns.'(server|signon)\s*</Type>#s', $content, $type)) {
533
+ if ($type[1] == 'server') $this->identifier_select = true;
534
+
535
+ preg_match('#<URI.*?>(.*)</URI>#', $content, $server);
536
+ preg_match('#<(Local|Canonical)ID>(.*)</\1ID>#', $content, $delegate);
537
+ if (empty($server)) {
538
+ return false;
539
+ }
540
+ # Does the server advertise support for either AX or SREG?
541
+ $this->ax = (bool) strpos($content, '<Type>http://openid.net/srv/ax/1.0</Type>');
542
+ $this->sreg = strpos($content, '<Type>http://openid.net/sreg/1.0</Type>')
543
+ || strpos($content, '<Type>http://openid.net/extensions/sreg/1.1</Type>');
544
+
545
+ $server = $server[1];
546
+ if (isset($delegate[2])) $this->identity = trim($delegate[2]);
547
+ $this->version = 2;
548
+
549
+ $this->server = $server;
550
+ return $server;
551
+ }
552
+
553
+ # OpenID 1.1
554
+ $ns = preg_quote('http://openid.net/signon/1.1', '#');
555
+ if (preg_match('#<Type>\s*'.$ns.'\s*</Type>#s', $content)) {
556
+
557
+ preg_match('#<URI.*?>(.*)</URI>#', $content, $server);
558
+ preg_match('#<.*?Delegate>(.*)</.*?Delegate>#', $content, $delegate);
559
+ if (empty($server)) {
560
+ return false;
561
+ }
562
+ # AX can be used only with OpenID 2.0, so checking only SREG
563
+ $this->sreg = strpos($content, '<Type>http://openid.net/sreg/1.0</Type>')
564
+ || strpos($content, '<Type>http://openid.net/extensions/sreg/1.1</Type>');
565
+
566
+ $server = $server[1];
567
+ if (isset($delegate[1])) $this->identity = $delegate[1];
568
+ $this->version = 1;
569
+
570
+ $this->server = $server;
571
+ return $server;
572
+ }
573
+ }
574
+
575
+ $next = true;
576
+ $yadis = false;
577
+ $url = $originalUrl;
578
+ $content = null;
579
+ break;
580
+ }
581
+ if ($next) continue;
582
+
583
+ # There are no relevant information in headers, so we search the body.
584
+ $content = $this->request($url, 'GET', array(), true);
585
+
586
+ if (isset($this->headers['x-xrds-location'])) {
587
+ $url = $this->build_url(parse_url($url), parse_url(trim($this->headers['x-xrds-location'])));
588
+ continue;
589
+ }
590
+
591
+ $location = $this->htmlTag($content, 'meta', 'http-equiv', 'X-XRDS-Location', 'content');
592
+ if ($location) {
593
+ $url = $this->build_url(parse_url($url), parse_url($location));
594
+ continue;
595
+ }
596
+ }
597
+
598
+ if (!$content) $content = $this->request($url, 'GET');
599
+
600
+ # At this point, the YADIS Discovery has failed, so we'll switch
601
+ # to openid2 HTML discovery, then fallback to openid 1.1 discovery.
602
+ $server = $this->htmlTag($content, 'link', 'rel', 'openid2.provider', 'href');
603
+ $delegate = $this->htmlTag($content, 'link', 'rel', 'openid2.local_id', 'href');
604
+ $this->version = 2;
605
+
606
+ if (!$server) {
607
+ # The same with openid 1.1
608
+ $server = $this->htmlTag($content, 'link', 'rel', 'openid.server', 'href');
609
+ $delegate = $this->htmlTag($content, 'link', 'rel', 'openid.delegate', 'href');
610
+ $this->version = 1;
611
+ }
612
+
613
+ if ($server) {
614
+ # We found an OpenID2 OP Endpoint
615
+ if ($delegate) {
616
+ # We have also found an OP-Local ID.
617
+ $this->identity = $delegate;
618
+ }
619
+ $this->server = $server;
620
+ return $server;
621
+ }
622
+
623
+ throw new ErrorException("No OpenID Server found at $url", 404);
624
+ }
625
+ throw new ErrorException('Endless redirection!', 500);
626
+ }
627
+
628
+ protected function sregParams()
629
+ {
630
+ $params = array();
631
+ # We always use SREG 1.1, even if the server is advertising only support for 1.0.
632
+ # That's because it's fully backwards compatible with 1.0, and some providers
633
+ # advertise 1.0 even if they accept only 1.1. One such provider is myopenid.com
634
+ $params['openid.ns.sreg'] = 'http://openid.net/extensions/sreg/1.1';
635
+ if ($this->required) {
636
+ $params['openid.sreg.required'] = array();
637
+ foreach ($this->required as $required) {
638
+ if (!isset(self::$ax_to_sreg[$required])) continue;
639
+ $params['openid.sreg.required'][] = self::$ax_to_sreg[$required];
640
+ }
641
+ $params['openid.sreg.required'] = implode(',', $params['openid.sreg.required']);
642
+ }
643
+
644
+ if ($this->optional) {
645
+ $params['openid.sreg.optional'] = array();
646
+ foreach ($this->optional as $optional) {
647
+ if (!isset(self::$ax_to_sreg[$optional])) continue;
648
+ $params['openid.sreg.optional'][] = self::$ax_to_sreg[$optional];
649
+ }
650
+ $params['openid.sreg.optional'] = implode(',', $params['openid.sreg.optional']);
651
+ }
652
+ return $params;
653
+ }
654
+
655
+ protected function axParams()
656
+ {
657
+ $params = array();
658
+ if ($this->required || $this->optional) {
659
+ $params['openid.ns.ax'] = 'http://openid.net/srv/ax/1.0';
660
+ $params['openid.ax.mode'] = 'fetch_request';
661
+ $this->aliases = array();
662
+ $counts = array();
663
+ $required = array();
664
+ $optional = array();
665
+ foreach (array('required','optional') as $type) {
666
+ foreach ($this->$type as $alias => $field) {
667
+ if (is_int($alias)) $alias = strtr($field, '/', '_');
668
+ $this->aliases[$alias] = 'http://axschema.org/' . $field;
669
+ if (empty($counts[$alias])) $counts[$alias] = 0;
670
+ $counts[$alias] += 1;
671
+ ${$type}[] = $alias;
672
+ }
673
+ }
674
+ foreach ($this->aliases as $alias => $ns) {
675
+ $params['openid.ax.type.' . $alias] = $ns;
676
+ }
677
+ foreach ($counts as $alias => $count) {
678
+ if ($count == 1) continue;
679
+ $params['openid.ax.count.' . $alias] = $count;
680
+ }
681
+
682
+ # Don't send empty ax.required and ax.if_available.
683
+ # Google and possibly other providers refuse to support ax when one of these is empty.
684
+ if($required) {
685
+ $params['openid.ax.required'] = implode(',', $required);
686
+ }
687
+ if($optional) {
688
+ $params['openid.ax.if_available'] = implode(',', $optional);
689
+ }
690
+ }
691
+ return $params;
692
+ }
693
+
694
+ protected function authUrl_v1($immediate)
695
+ {
696
+ $returnUrl = $this->returnUrl;
697
+ # If we have an openid.delegate that is different from our claimed id,
698
+ # we need to somehow preserve the claimed id between requests.
699
+ # The simplest way is to just send it along with the return_to url.
700
+ if($this->identity != $this->claimed_id) {
701
+ $returnUrl .= (strpos($returnUrl, '?') ? '&' : '?') . 'openid.claimed_id=' . $this->claimed_id;
702
+ }
703
+
704
+ $params = array(
705
+ 'openid.return_to' => $returnUrl,
706
+ 'openid.mode' => $immediate ? 'checkid_immediate' : 'checkid_setup',
707
+ 'openid.identity' => $this->identity,
708
+ 'openid.trust_root' => $this->trustRoot,
709
+ ) + $this->sregParams();
710
+
711
+ return $this->build_url(parse_url($this->server)
712
+ , array('query' => http_build_query($params, '', '&')));
713
+ }
714
+
715
+ protected function authUrl_v2($immediate)
716
+ {
717
+ $params = array(
718
+ 'openid.ns' => 'http://specs.openid.net/auth/2.0',
719
+ 'openid.mode' => $immediate ? 'checkid_immediate' : 'checkid_setup',
720
+ 'openid.return_to' => $this->returnUrl,
721
+ 'openid.realm' => $this->trustRoot,
722
+ );
723
+
724
+ if ($this->ax) {
725
+ $params += $this->axParams();
726
+ }
727
+
728
+ if ($this->sreg) {
729
+ $params += $this->sregParams();
730
+ }
731
+
732
+ if (!$this->ax && !$this->sreg) {
733
+ # If OP doesn't advertise either SREG, nor AX, let's send them both
734
+ # in worst case we don't get anything in return.
735
+ $params += $this->axParams() + $this->sregParams();
736
+ }
737
+
738
+ if (!empty($this->oauth) && is_array($this->oauth)) {
739
+ $params['openid.ns.oauth'] = 'http://specs.openid.net/extensions/oauth/1.0';
740
+ $params['openid.oauth.consumer'] = str_replace(array('http://', 'https://'), '', $this->trustRoot);
741
+ $params['openid.oauth.scope'] = implode(' ', $this->oauth);
742
+ }
743
+
744
+ if ($this->identifier_select) {
745
+ $params['openid.identity'] = $params['openid.claimed_id']
746
+ = 'http://specs.openid.net/auth/2.0/identifier_select';
747
+ } else {
748
+ $params['openid.identity'] = $this->identity;
749
+ $params['openid.claimed_id'] = $this->claimed_id;
750
+ }
751
+
752
+ return $this->build_url(parse_url($this->server)
753
+ , array('query' => http_build_query($params, '', '&')));
754
+ }
755
+
756
+ /**
757
+ * Returns authentication url. Usually, you want to redirect your user to it.
758
+ * @return String The authentication url.
759
+ * @param String $select_identifier Whether to request OP to select identity for an user in OpenID 2. Does not affect OpenID 1.
760
+ * @throws ErrorException
761
+ */
762
+ function authUrl($immediate = false)
763
+ {
764
+ if ($this->setup_url && !$immediate) return $this->setup_url;
765
+ if (!$this->server) $this->discover($this->identity);
766
+
767
+ if ($this->version == 2) {
768
+ return $this->authUrl_v2($immediate);
769
+ }
770
+ return $this->authUrl_v1($immediate);
771
+ }
772
+
773
+ /**
774
+ * Performs OpenID verification with the OP.
775
+ * @return Bool Whether the verification was successful.
776
+ * @throws ErrorException
777
+ */
778
+ function validate()
779
+ {
780
+ # If the request was using immediate mode, a failure may be reported
781
+ # by presenting user_setup_url (for 1.1) or reporting
782
+ # mode 'setup_needed' (for 2.0). Also catching all modes other than
783
+ # id_res, in order to avoid throwing errors.
784
+ if(isset($this->data['openid_user_setup_url'])) {
785
+ $this->setup_url = $this->data['openid_user_setup_url'];
786
+ return false;
787
+ }
788
+ if($this->mode != 'id_res') {
789
+ return false;
790
+ }
791
+
792
+ $this->claimed_id = isset($this->data['openid_claimed_id'])?$this->data['openid_claimed_id']:$this->data['openid_identity'];
793
+ $params = array(
794
+ 'openid.assoc_handle' => $this->data['openid_assoc_handle'],
795
+ 'openid.signed' => $this->data['openid_signed'],
796
+ 'openid.sig' => $this->data['openid_sig'],
797
+ );
798
+
799
+ if (isset($this->data['openid_ns'])) {
800
+ # We're dealing with an OpenID 2.0 server, so let's set an ns
801
+ # Even though we should know location of the endpoint,
802
+ # we still need to verify it by discovery, so $server is not set here
803
+ $params['openid.ns'] = 'http://specs.openid.net/auth/2.0';
804
+ } elseif (isset($this->data['openid_claimed_id'])
805
+ && $this->data['openid_claimed_id'] != $this->data['openid_identity']
806
+ ) {
807
+ # If it's an OpenID 1 provider, and we've got claimed_id,
808
+ # we have to append it to the returnUrl, like authUrl_v1 does.
809
+ $this->returnUrl .= (strpos($this->returnUrl, '?') ? '&' : '?')
810
+ . 'openid.claimed_id=' . $this->claimed_id;
811
+ }
812
+
813
+ if ($this->data['openid_return_to'] != $this->returnUrl) {
814
+ # The return_to url must match the url of current request.
815
+ # I'm assuming that no one will set the returnUrl to something that doesn't make sense.
816
+ return false;
817
+ }
818
+
819
+ $server = $this->discover($this->claimed_id);
820
+
821
+ foreach (explode(',', $this->data['openid_signed']) as $item) {
822
+ # Checking whether magic_quotes_gpc is turned on, because
823
+ # the function may fail if it is. For example, when fetching
824
+ # AX namePerson, it might contain an apostrophe, which will be escaped.
825
+ # In such case, validation would fail, since we'd send different data than OP
826
+ # wants to verify. stripslashes() should solve that problem, but we can't
827
+ # use it when magic_quotes is off.
828
+ $value = $this->data['openid_' . str_replace('.','_',$item)];
829
+ $params['openid.' . $item] = function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc() ? stripslashes($value) : $value;
830
+
831
+ }
832
+
833
+ $params['openid.mode'] = 'check_authentication';
834
+
835
+ $response = $this->request($server, 'POST', $params);
836
+
837
+ return preg_match('/is_valid\s*:\s*true/i', $response);
838
+ }
839
+
840
+ protected function getAxAttributes()
841
+ {
842
+ $result = array();
843
+
844
+ if ($alias = $this->getNamespaceAlias('http://openid.net/srv/ax/1.0', 'ax')) {
845
+ $prefix = 'openid_' . $alias;
846
+ $length = strlen('http://axschema.org/');
847
+
848
+ foreach (explode(',', $this->data['openid_signed']) as $key) {
849
+ $keyMatch = $alias . '.type.';
850
+
851
+ if (strncmp($key, $keyMatch, strlen($keyMatch)) !== 0) {
852
+ continue;
853
+ }
854
+
855
+ $key = substr($key, strlen($keyMatch));
856
+ $idv = $prefix . '_value_' . $key;
857
+ $idc = $prefix . '_count_' . $key;
858
+ $key = substr($this->getItem($prefix . '_type_' . $key), $length);
859
+
860
+ if (!empty($key)) {
861
+ if (($count = intval($this->getItem($idc))) > 0) {
862
+ $value = array();
863
+
864
+ for ($i = 1; $i <= $count; $i++) {
865
+ $value[] = $this->getItem($idv . '_' . $i);
866
+ }
867
+
868
+ $value = ($count == 1) ? reset($value) : $value;
869
+ } else {
870
+ $value = $this->getItem($idv);
871
+ }
872
+
873
+ if (!is_null($value)) {
874
+ $result[$key] = $value;
875
+ }
876
+ }
877
+ }
878
+ } else {
879
+ // No alias for the AX schema has been found,
880
+ // so there is no AX data in the OP's response.
881
+ }
882
+
883
+ return $result;
884
+ }
885
+
886
+ protected function getSregAttributes()
887
+ {
888
+ $attributes = array();
889
+ $sreg_to_ax = array_flip(self::$ax_to_sreg);
890
+ foreach (explode(',', $this->data['openid_signed']) as $key) {
891
+ $keyMatch = 'sreg.';
892
+ if (strncmp($key, $keyMatch, strlen($keyMatch)) !== 0) {
893
+ continue;
894
+ }
895
+ $key = substr($key, strlen($keyMatch));
896
+ if (!isset($sreg_to_ax[$key])) {
897
+ # The field name isn't part of the SREG spec, so we ignore it.
898
+ continue;
899
+ }
900
+ $attributes[$sreg_to_ax[$key]] = $this->data['openid_sreg_' . $key];
901
+ }
902
+ return $attributes;
903
+ }
904
+
905
+ /**
906
+ * Gets AX/SREG attributes provided by OP. should be used only after successful validation.
907
+ * Note that it does not guarantee that any of the required/optional parameters will be present,
908
+ * or that there will be no other attributes besides those specified.
909
+ * In other words. OP may provide whatever information it wants to.
910
+ * * SREG names will be mapped to AX names.
911
+ * * @return Array Array of attributes with keys being the AX schema names, e.g. 'contact/email'
912
+ * @see http://www.axschema.org/types/
913
+ */
914
+ function getAttributes()
915
+ {
916
+ if (isset($this->data['openid_ns'])
917
+ && $this->data['openid_ns'] == 'http://specs.openid.net/auth/2.0'
918
+ ) { # OpenID 2.0
919
+ # We search for both AX and SREG attributes, with AX taking precedence.
920
+ return $this->getAxAttributes() + $this->getSregAttributes();
921
+ }
922
+ return $this->getSregAttributes();
923
+ }
924
+
925
+ /**
926
+ * Gets an OAuth request token if the OpenID+OAuth hybrid protocol has been used.
927
+ *
928
+ * In order to use the OpenID+OAuth hybrid protocol, you need to add at least one
929
+ * scope to the $openid->oauth array before you get the call to getAuthUrl(), e.g.:
930
+ * $openid->oauth[] = 'https://www.googleapis.com/auth/plus.me';
931
+ *
932
+ * Furthermore the registered consumer name must fit the OpenID realm.
933
+ * To register an OpenID consumer at Google use: https://www.google.com/accounts/ManageDomains
934
+ *
935
+ * @return string|bool OAuth request token on success, FALSE if no token was provided.
936
+ */
937
+ function getOAuthRequestToken()
938
+ {
939
+ $alias = $this->getNamespaceAlias('http://specs.openid.net/extensions/oauth/1.0');
940
+
941
+ return !empty($alias) ? $this->data['openid_' . $alias . '_request_token'] : false;
942
+ }
943
+
944
+ /**
945
+ * Gets the alias for the specified namespace, if it's present.
946
+ *
947
+ * @param string $namespace The namespace for which an alias is needed.
948
+ * @param string $hint Common alias of this namespace, used for optimization.
949
+ * @return string|null The namespace alias if found, otherwise - NULL.
950
+ */
951
+ private function getNamespaceAlias($namespace, $hint = null)
952
+ {
953
+ $result = null;
954
+
955
+ if (empty($hint) || $this->getItem('openid_ns_' . $hint) != $namespace) {
956
+ // The common alias is either undefined or points to
957
+ // some other extension - search for another alias..
958
+ $prefix = 'openid_ns_';
959
+ $length = strlen($prefix);
960
+
961
+ foreach ($this->data as $key => $val) {
962
+ if (strncmp($key, $prefix, $length) === 0 && $val === $namespace) {
963
+ $result = trim(substr($key, $length));
964
+ break;
965
+ }
966
+ }
967
+ } else {
968
+ $result = $hint;
969
+ }
970
+
971
+ return $result;
972
+ }
973
+
974
+ /**
975
+ * Gets an item from the $data array by the specified id.
976
+ *
977
+ * @param string $id The id of the desired item.
978
+ * @return string|null The item if found, otherwise - NULL.
979
+ */
980
+ private function getItem($id)
981
+ {
982
+ return isset($this->data[$id]) ? $this->data[$id] : null;
983
+ }
984
+ }
hybridauth/Hybrid/thirdparty/Paypal/PaypalOAuth2Client.php ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * HybridAuth
4
+ * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
5
+ * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
6
+ */
7
+
8
+ // A service client for the OAuth 2 flow.
9
+ // v0.1
10
+ class PaypalOAuth2Client extends OAuth2Client
11
+ {
12
+ public $curl_header = array(
13
+ 'Accept: application/json',
14
+ 'Accept-Language: en_US',
15
+ );
16
+ public $curl_useragent = "OAuth/2 Simple PHP Client v0.1; HybridAuth http://hybridauth.sourceforge.net/";
17
+ public $curl_log;
18
+
19
+ public function authenticate( $code )
20
+ {
21
+ $params = array(
22
+ "grant_type" => "authorization_code",
23
+ "code" => $code,
24
+ "redirect_uri" => $this->redirect_uri,
25
+ );
26
+
27
+ $response = $this->request( $this->token_url, $params, $this->curl_authenticate_method );
28
+
29
+ $response = $this->parseRequestResult( $response );
30
+
31
+ if( ! $response || ! isset( $response->access_token ) ){
32
+ throw new Exception( "The Authorization Service has return: " . $response->message );
33
+ }
34
+
35
+ if( isset( $response->access_token ) ) $this->access_token = $response->access_token;
36
+ if( isset( $response->refresh_token ) ) $this->refresh_token = $response->refresh_token;
37
+ if( isset( $response->expires_in ) ) $this->access_token_expires_in = $response->expires_in;
38
+
39
+ // calculate when the access token expire
40
+ if( isset($response->expires_in)) {
41
+ $this->access_token_expires_at = time() + $response->expires_in;
42
+ }
43
+
44
+ return $response;
45
+ }
46
+
47
+
48
+ // -- tokens
49
+
50
+ public function tokenInfo($accesstoken)
51
+ {
52
+ $params['access_token'] = $this->access_token;
53
+ $response = $this->request( $this->token_info_url, $params, "POST" );
54
+ return $this->parseRequestResult( $response );
55
+ }
56
+
57
+ public function refreshToken( $params = array() )
58
+ {
59
+ $params = array(
60
+ "grant_type" => "refresh_token",
61
+ "refresh_token" => $this->refresh_token,
62
+ );
63
+ $response = $this->request( $this->token_url, $params, "POST" );
64
+ return $this->parseRequestResult( $response );
65
+ }
66
+
67
+ // -- utilities
68
+
69
+ private function request( $url, $params=false, $type="GET" )
70
+ {
71
+ $params = http_build_query($params, '', '&');
72
+ Hybrid_Logger::info( "Enter OAuth2Client::request( $url )" );
73
+ Hybrid_Logger::debug( "OAuth2Client::request(). dump request params: ", $params );
74
+
75
+ if( $type == "GET" ){
76
+ $url = $url . ( strpos( $url, '?' ) ? '&' : '?' ) . $params;
77
+ }
78
+
79
+ $this->http_info = array();
80
+ $ch = curl_init();
81
+
82
+ $headers = $this->curl_header;
83
+ if($type == "POST" ){
84
+ //$headers[] = 'Content-Type: application/x-www-form-urlencoded';
85
+ }
86
+
87
+ curl_setopt($ch, CURLOPT_URL , $url );
88
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1 );
89
+ curl_setopt($ch, CURLOPT_TIMEOUT , $this->curl_time_out );
90
+ curl_setopt($ch, CURLOPT_USERAGENT , $this->curl_useragent );
91
+ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , $this->curl_connect_time_out );
92
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , $this->curl_ssl_verifypeer );
93
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , $this->curl_ssl_verifyhost );
94
+ curl_setopt($ch, CURLOPT_HTTPHEADER , $headers );
95
+ curl_setopt($ch, CURLOPT_USERPWD , $this->client_id.':'.$this->client_secret );
96
+ // logging
97
+ if ($this->curl_log !== null) {
98
+ $fp = fopen($this->curl_log, 'a');
99
+ curl_setopt($ch, CURLOPT_STDERR , $fp );
100
+ curl_setopt($ch, CURLOPT_VERBOSE , 1 );
101
+ }
102
+
103
+ if($this->curl_proxy){
104
+ curl_setopt( $ch, CURLOPT_PROXY , $this->curl_proxy);
105
+ }
106
+
107
+ if( $type == "POST" ){
108
+ curl_setopt($ch, CURLOPT_POST, 1);
109
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $params );
110
+ }
111
+
112
+ $response = curl_exec($ch);
113
+ if ($this->curl_log !== null)
114
+ fclose($fp);
115
+ if( $response === FALSE ) {
116
+ Hybrid_Logger::error( "OAuth2Client::request(). curl_exec error: ", curl_error($ch) );
117
+ }
118
+ Hybrid_Logger::debug( "OAuth2Client::request(). dump request info: ", serialize( curl_getinfo($ch) ) );
119
+ Hybrid_Logger::debug( "OAuth2Client::request(). dump request result: ", serialize( $response ) );
120
+
121
+ $this->http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
122
+ $this->http_info = array_merge($this->http_info, curl_getinfo($ch));
123
+
124
+ curl_close ($ch);
125
+
126
+ return $response;
127
+ }
128
+
129
+ private function parseRequestResult( $result )
130
+ {
131
+ if( json_decode( $result ) ) return json_decode( $result );
132
+
133
+ parse_str( $result, $output );
134
+
135
+ $result = new StdClass();
136
+
137
+ foreach( $output as $k => $v )
138
+ $result->$k = $v;
139
+
140
+ return $result;
141
+ }
142
+ }
hybridauth/changes.txt ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "hybridauth/hybridauth": "dev-master" 2.3.0-dev 2014-09-22 18:16 UTC
2
+
3
+ hybridauth/Hybrid/thirdparty/Facebook/base_facebook.php
4
+ L-145 add CURLOPT_SSL_VERIFYPEER => false
5
+
6
+ hybridauth/Hybrid/Providers/Google.php
7
+ L-114 Reassign emailVerified
8
+
9
+ hybridauth/Hybrid/Providers/Vkontakte.php
10
+ L-79 Image size
11
+ L-93 Image size
12
+
13
+ hybridauth/Hybrid/Providers/Reddit.php
14
+ Add an unsupported provider
15
+
16
+ hybridauth/Hybrid/Providers/PixelPin.php
17
+ Add an unsupported provider
18
+
19
+ hybridauth/Hybrid/Providers/Mixi.php
20
+ Add an unsupported provider
21
+
22
+ hybridauth/Hybrid/Providers/Latch.php
23
+ Add an unsupported provider
24
+
25
+ /hybridauth/Hybrid/Provider_Model_OpenID.php
26
+ Merge PR #324
hybridauth/readme.txt CHANGED
@@ -1,12 +1,3 @@
1
- basically, we drop here the latest version of hybridauth library and that is it
2
 
3
- HybridAuth
4
- http://hybridauth.sourceforge.net
5
- =================================
6
-
7
- HybridAuth enables developers to easily build social applications and tools to engage websites vistors and customers on
8
- a social level by implementing social sign-in, social sharing, users profiles, friends list, activities stream, status
9
- updates and more.
10
-
11
- The main goal of HybridAuth is to act as an abstract API between your application and various social apis and identities
12
- providers such as Facebook, Twitter, MySpace and Google.
1
+ Basically, we simply drop here the latest version of hybridauth library (http://hybridauth.sourceforge.net) and that is it.
2
 
3
+ Note: do not leave hybridauth insall.php here!
 
 
 
 
 
 
 
 
 
includes/admin/components/advanced/index.php DELETED
@@ -1,111 +0,0 @@
1
- <?php
2
- /*!
3
- * WordPress Social Login
4
- *
5
- * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
- */
8
-
9
- /**
10
- * Advanced Advanced Settings
11
- */
12
-
13
- // Exit if accessed directly
14
- if ( !defined( 'ABSPATH' ) ) exit;
15
-
16
- // --------------------------------------------------------------------
17
-
18
- function wsl_component_advanced()
19
- {
20
- // HOOKABLE:
21
- do_action( "wsl_component_advanced_start" );
22
-
23
- if( ! get_option( 'wsl_settings_base_url' ) ){
24
- update_option( 'wsl_settings_base_url', WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL );
25
- }
26
-
27
- if( ! get_option( 'wsl_settings_base_path' ) ){
28
- update_option( 'wsl_settings_base_path', WORDPRESS_SOCIAL_LOGIN_ABS_PATH );
29
- }
30
-
31
- if( ! get_option( 'wsl_settings_hybridauth_endpoint_url' ) ){
32
- update_option( 'wsl_settings_hybridauth_endpoint_url', WORDPRESS_SOCIAL_LOGIN_HYBRIDAUTH_ENDPOINT_URL );
33
- }
34
-
35
- if( ! get_option( 'wsl_settings_top_bar_menu' ) ){
36
- update_option( 'wsl_settings_top_bar_menu', 1 );
37
- }
38
- ?>
39
- <form method="post" id="wsl_setup_form" action="options.php">
40
- <?php settings_fields( 'wsl-settings-group-advanced-settings' ); ?>
41
-
42
- <div class="metabox-holder columns-2" id="post-body">
43
- <div id="post-body-content">
44
-
45
- <div id="namediv" class="stuffbox">
46
- <h3>
47
- <label for="name"><?php _wsl_e("Advanced Settings", 'wordpress-social-login') ?></label>
48
- </h3>
49
-
50
- <br />
51
- <h2 style="text-align:center;font-size: 17px;">
52
- <?php _wsl_e("<b>Please</b> for the love of <b>God</b>, stay out of Advanced.. unless you are Advanced and you know what you are doing", 'wordpress-social-login') ?>.
53
- </h2>
54
- <br />
55
-
56
- <div class="inside">
57
- <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
58
- <tbody>
59
-
60
- <tr>
61
- <td width="200" align="right"><strong><?php _wsl_e("WSL Base URL", 'wordpress-social-login') ?> :</strong></td>
62
- <td>
63
- <input type="text" name="wsl_settings_base_url" value="<?php echo get_option( 'wsl_settings_base_url' ); ?>" class="inputgnrc">
64
- </td>
65
- </tr>
66
-
67
- <tr>
68
- <td width="200" align="right"><strong><?php _wsl_e("WSL Base PATH", 'wordpress-social-login') ?> :</strong></td>
69
- <td>
70
- <input type="text" name="wsl_settings_base_path" value="<?php echo get_option( 'wsl_settings_base_path' ); ?>" class="inputgnrc">
71
- </td>
72
- </tr>
73
-
74
- <tr>
75
- <td width="200" align="right"><strong><?php _wsl_e("Hybridauth endpoint URL", 'wordpress-social-login') ?> :</strong></td>
76
- <td>
77
- <input type="text" name="wsl_settings_hybridauth_endpoint_url" value="<?php echo get_option( 'wsl_settings_hybridauth_endpoint_url' ); ?>" class="inputgnrc">
78
- </td>
79
- </tr>
80
-
81
- <tr>
82
- <td width="200" align="right"><strong><?php _wsl_e("WSL top bar menu", 'wordpress-social-login') ?> :</strong></td>
83
- <td>
84
- <select name="wsl_settings_top_bar_menu">
85
- <option <?php if( get_option( 'wsl_settings_top_bar_menu' ) == 1 ) echo "selected"; ?> value="1"><?php _wsl_e("Yes", 'wordpress-social-login') ?></option>
86
- <option <?php if( get_option( 'wsl_settings_top_bar_menu' ) == 2 ) echo "selected"; ?> value="2"><?php _wsl_e("No", 'wordpress-social-login') ?></option>
87
- </select>
88
- </td>
89
- </tr>
90
-
91
- </tbody>
92
- </table>
93
- </div>
94
- </div>
95
-
96
- <br style="clear:both;" />
97
- <div style="margin-left:5px;margin-top:-20px;">
98
- <input type="submit" class="button-primary" value="<?php _wsl_e("Save Settings", 'wordpress-social-login') ?>" />
99
- </div>
100
-
101
- </div>
102
- </div>
103
- </form>
104
- <?php
105
- // HOOKABLE:
106
- do_action( "wsl_component_advanced_end" );
107
- }
108
-
109
- wsl_component_advanced();
110
-
111
- // --------------------------------------------------------------------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/components/bouncer/index.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -22,8 +22,6 @@ function wsl_component_bouncer()
22
 
23
  include "wsl.components.bouncer.setup.php";
24
  include "wsl.components.bouncer.sidebar.php";
25
-
26
- wsl_admin_welcome_panel();
27
  ?>
28
  <form method="post" id="wsl_setup_form" action="options.php">
29
  <?php settings_fields( 'wsl-settings-group-bouncer' ); ?>
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
22
 
23
  include "wsl.components.bouncer.setup.php";
24
  include "wsl.components.bouncer.sidebar.php";
 
 
25
  ?>
26
  <form method="post" id="wsl_setup_form" action="options.php">
27
  <?php settings_fields( 'wsl-settings-group-bouncer' ); ?>
includes/admin/components/bouncer/wsl.components.bouncer.setup.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -24,7 +24,7 @@ function wsl_component_bouncer_setup()
24
 
25
  <div id="namediv" class="stuffbox">
26
  <h3>
27
- <label for="name"><?php _wsl_e("WSL Widget", 'wordpress-social-login') ?></label>
28
  </h3>
29
  <div class="inside">
30
  <p>
@@ -55,14 +55,14 @@ function wsl_component_bouncer_setup()
55
 
56
  <div id="namediv" class="stuffbox">
57
  <h3>
58
- <label for="name"><?php _wsl_e("Profile Completion", 'wordpress-social-login') ?></label>
59
  </h3>
60
  <div class="inside hideinside">
61
  <p>
62
  <?php _wsl_e("Select required fields. If a social network doesn't return them, Bouncer will then ask your visitors to fill additional form to provide them when registering.", 'wordpress-social-login') ?>
63
  </p>
64
  <p class="description">
65
- <?php _wsl_e("You may activate <b>Profile Completion</b> for both <b>E-mail</b> and <b>Username</b>, but keep in mind, the idea behind <b>social login</b> is to avoid forms and remove all the hassle of registration", 'wordpress-social-login') ?>.
66
  </p>
67
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
68
  <tr>
@@ -89,23 +89,29 @@ function wsl_component_bouncer_setup()
89
 
90
  <div id="namediv" class="stuffbox">
91
  <h3>
92
- <label for="name"><?php _wsl_e("User Moderation", 'wordpress-social-login') ?></label>
93
  </h3>
94
  <div class="inside hideinside">
95
  <p>
96
- <?php _wsl_e("<b>User Moderation</b> will define how <b>Bouncer</b> should behave with new regsitred users:", 'wordpress-social-login') ?>
97
  </p>
98
  <ul style="margin-left:30px">
99
  <li><?php _wsl_e("<b>None</b>: No moderation required.", 'wordpress-social-login') ?></li>
100
  <li><?php _wsl_e('<b>E-mail Confirmation</b>: New users will need to be confirm their e-mail address before they may log in', 'wordpress-social-login') ?>.</li>
101
  <li><?php _wsl_e('<b>Admin Approval</b>: New users will need to be approved by an administrator before they may log in', 'wordpress-social-login') ?>.</li>
102
  </ul>
103
- <p class="description">
104
- <?php _wsl_e('Both <b>Admin Approval</b> and <b>E-mail Confirmation</b> requires <a href="http://wordpress.org/extend/plugins/theme-my-login/" target="_blank">Theme My Login</a> plugin to be installed. As there is no point for <b>WordPress Social Login</b> to reinvent the wheel', 'wordpress-social-login') ?>.
105
  </p>
106
  <p class="description">
107
- <?php _wsl_e('<b>User Moderation</b> was purposely made compatible with the <a href="http://wordpress.org/extend/plugins/theme-my-login/" target="_blank">Theme My Login</a> for a number reasons: That plugin is good at what he does, a hell of a lot of people are using it and many have asked for it', 'wordpress-social-login') ?>.
 
 
 
 
108
  </p>
 
 
109
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
110
  <tr>
111
  <td width="200" align="right"><strong><?php _wsl_e("User Moderation", 'wordpress-social-login') ?> :</strong></td>
@@ -123,31 +129,31 @@ function wsl_component_bouncer_setup()
123
 
124
  <div id="namediv" class="stuffbox">
125
  <h3>
126
- <label for="name"><?php _wsl_e("Membership level", 'wordpress-social-login') ?></label>
127
  </h3>
128
  <div class="inside hideinside">
129
  <p>
130
  <?php _wsl_e('Here you can define the default role for new users authenticating through WSL. The <code>Administrator</code> and <code>Editor</code> roles are not available for safety reasons', 'wordpress-social-login') ?>.
131
  </p>
132
  <p>
133
- <?php _wsl_e('For more information about wordpress users roles and capabilities refer to <a href="http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs._Role_Table" target="_blank">http://codex.wordpress.org/Roles_and_Capabilities</a>', 'wordpress-social-login') ?>.
134
  </p>
135
  <p>
136
- <?php _wsl_e('If <b>User Moderation</b> is set to <code>Admin Approval</code> then <b>Membership level</b> will be ignored', 'wordpress-social-login') ?>.
137
  </p>
138
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
139
  <tr>
140
- <td width="200" align="right"><strong><?php _wsl_e("New User Default Role", 'wordpress-social-login') ?> :</strong></td>
141
  <td>
142
  <select name="wsl_settings_bouncer_new_users_membership_default_role">
143
  <optgroup label="<?php _wsl_e("Safe", 'wordpress-social-login') ?>:">
144
- <option value="default" <?php if( get_option( 'wsl_settings_bouncer_new_users_membership_default_role' ) == "default" ) echo "selected"; ?> ><?php _wsl_e("&mdash; Wordpress User Default Role &mdash;", 'wordpress-social-login') ?></option>
145
  <option value="wslnorole" <?php if( get_option( 'wsl_settings_bouncer_new_users_membership_default_role' ) == "wslnorole" ) echo "selected"; ?> ><?php _wsl_e("&mdash; No role for this site &mdash;", 'wordpress-social-login') ?></option>
146
- <option value="subscriber" <?php if( get_option( 'wsl_settings_bouncer_new_users_membership_default_role' ) == "subscriber" ) echo "selected"; ?> ><?php _wsl_e("Subscriber", 'wordpress-social-login') ?></option>
147
  </optgroup>
148
 
149
- <optgroup label="<?php _wsl_e("Be careful with these", 'wordpress-social-login') ?>:">
150
- <option value="author" <?php if( get_option( 'wsl_settings_bouncer_new_users_membership_default_role' ) == "author" ) echo "selected"; ?> ><?php _wsl_e("Author", 'wordpress-social-login') ?></option>
 
151
  <option value="contributor" <?php if( get_option( 'wsl_settings_bouncer_new_users_membership_default_role' ) == "contributor" ) echo "selected"; ?> ><?php _wsl_e("Contributor", 'wordpress-social-login') ?></option>
152
  </optgroup>
153
  </select>
@@ -159,12 +165,13 @@ function wsl_component_bouncer_setup()
159
 
160
  <div id="namediv" class="stuffbox">
161
  <h3>
162
- <label for="name"><?php _wsl_e("Filters by emails domains name", 'wordpress-social-login') ?></label>
163
  </h3>
164
  <div class="inside hideinside">
165
  <p>
166
  <?php _wsl_e("Restrict registration to a limited number of domains name.", 'wordpress-social-login') ?>
167
- <?php _wsl_e("Insert one email address per line and try to keep this list short. On <code>Bounce text</code> insert the text you want to display for rejected users. ex: <code>gmail.com</code>, without '@'.", 'wordpress-social-login') ?>
 
168
  </p>
169
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
170
  <tr>
@@ -196,12 +203,13 @@ function wsl_component_bouncer_setup()
196
 
197
  <div id="namediv" class="stuffbox">
198
  <h3>
199
- <label for="name"><?php _wsl_e("Filters by e-mails addresses", 'wordpress-social-login') ?></label>
200
  </h3>
201
  <div class="inside hideinside">
202
  <p>
203
  <?php _wsl_e("Restrict registration to a limited number of emails addresses.", 'wordpress-social-login') ?>
204
- <?php _wsl_e("Insert one email address per line and try to keep this list short. On <code>Bounce text</code> insert the text you want to display for rejected users. ex: <code>hybridauth@gmail.com</code>", 'wordpress-social-login') ?>
 
205
  </p>
206
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
207
  <tr>
@@ -233,13 +241,13 @@ function wsl_component_bouncer_setup()
233
 
234
  <div id="namediv" class="stuffbox">
235
  <h3>
236
- <label for="name"><?php _wsl_e("Filters by profile urls", 'wordpress-social-login') ?></label>
237
  </h3>
238
  <div class="inside hideinside">
239
  <p>
240
- <?php _wsl_e("Restrict registration to a limited number of profile urls.", 'wordpress-social-login') ?>
241
- <?php _wsl_e("<b>Note</b>: If a social network provide the user email, then use 'Filters by e-mails addresses' instead. Providers like Facebook provide multiples profiles URLs per user and WSL won't be able to reconize them.", 'wordpress-social-login') ?>
242
- <?php _wsl_e("Insert one email address per line and try to keep this list short. On <code>Bounce text</code> insert the text you want to display for rejected users. ex: <code>http://twitter.com/HybridAuth</code>, <code>https://plus.google.com/u/0/108839241301472312344</code>", 'wordpress-social-login') ?>
243
  </p>
244
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
245
  <tr>
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
24
 
25
  <div id="namediv" class="stuffbox">
26
  <h3>
27
+ <label><?php _wsl_e("WSL Widget", 'wordpress-social-login') ?></label>
28
  </h3>
29
  <div class="inside">
30
  <p>
55
 
56
  <div id="namediv" class="stuffbox">
57
  <h3>
58
+ <label><?php _wsl_e("Profile Completion", 'wordpress-social-login') ?></label>
59
  </h3>
60
  <div class="inside hideinside">
61
  <p>
62
  <?php _wsl_e("Select required fields. If a social network doesn't return them, Bouncer will then ask your visitors to fill additional form to provide them when registering.", 'wordpress-social-login') ?>
63
  </p>
64
  <p class="description">
65
+ <?php _wsl_e("You may activate <b>Profile Completion</b> for both <b>E-mail</b> and <b>Username</b>, but keep in mind, the idea behind <b>social login</b> is to avoid forms and to remove the hassle of registration", 'wordpress-social-login') ?>.
66
  </p>
67
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
68
  <tr>
89
 
90
  <div id="namediv" class="stuffbox">
91
  <h3>
92
+ <label><?php _wsl_e("User Moderation", 'wordpress-social-login') ?></label>
93
  </h3>
94
  <div class="inside hideinside">
95
  <p>
96
+ <?php _wsl_e("<b>User Moderation</b> will define how <b>Bouncer</b> should behave with new registered users:", 'wordpress-social-login') ?>
97
  </p>
98
  <ul style="margin-left:30px">
99
  <li><?php _wsl_e("<b>None</b>: No moderation required.", 'wordpress-social-login') ?></li>
100
  <li><?php _wsl_e('<b>E-mail Confirmation</b>: New users will need to be confirm their e-mail address before they may log in', 'wordpress-social-login') ?>.</li>
101
  <li><?php _wsl_e('<b>Admin Approval</b>: New users will need to be approved by an administrator before they may log in', 'wordpress-social-login') ?>.</li>
102
  </ul>
103
+ <p>
104
+ <?php _wsl_e('<b>Notes</b>', 'wordpress-social-login') ?>:
105
  </p>
106
  <p class="description">
107
+ 1. <?php _wsl_e('Both <b>Admin Approval</b> and <b>E-mail Confirmation</b> requires <a href="http://wordpress.org/extend/plugins/theme-my-login/" target="_blank">Theme My Login Plugin</a> to be installed', 'wordpress-social-login') ?>.
108
+ <br />
109
+ 2. <?php _wsl_e('<a href="http://wordpress.org/extend/plugins/theme-my-login/" target="_blank">Theme My Login</a>, is a free and open source plugin and <b>WordPress Social Login User Moderation</b> was purposely made compatible with it because it provides a solid <b>User Moderation</b> module and there is no point to reinvent the wheel', 'wordpress-social-login') ?>.
110
+ <br />
111
+ 3. <?php _wsl_e('In order for this to work correctly, you will need to go to <b>Theme My Login</b> settings, then enable <b>User Moderation</b> and set <b>Moderation Type</b> to the same thing as the box bellow', 'wordpress-social-login') ?>.
112
  </p>
113
+
114
+
115
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
116
  <tr>
117
  <td width="200" align="right"><strong><?php _wsl_e("User Moderation", 'wordpress-social-login') ?> :</strong></td>
129
 
130
  <div id="namediv" class="stuffbox">
131
  <h3>
132
+ <label><?php _wsl_e("Membership level", 'wordpress-social-login') ?></label>
133
  </h3>
134
  <div class="inside hideinside">
135
  <p>
136
  <?php _wsl_e('Here you can define the default role for new users authenticating through WSL. The <code>Administrator</code> and <code>Editor</code> roles are not available for safety reasons', 'wordpress-social-login') ?>.
137
  </p>
138
  <p>
139
+ <?php _wsl_e('For more information about Wordpress users roles and capabilities refer to <a href="http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs._Role_Table" target="_blank">http://codex.wordpress.org/Roles_and_Capabilities</a>', 'wordpress-social-login') ?>.
140
  </p>
141
  <p>
142
+ <?php _wsl_e('<b>Note:</b> If <b>User Moderation</b> is set to <code>Admin Approval</code> then <b>Membership level</b> will be ignored', 'wordpress-social-login') ?>.
143
  </p>
144
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
145
  <tr>
146
+ <td width="200" align="right" nowrap><strong><?php _wsl_e("New User Default Role", 'wordpress-social-login') ?> :</strong></td>
147
  <td>
148
  <select name="wsl_settings_bouncer_new_users_membership_default_role">
149
  <optgroup label="<?php _wsl_e("Safe", 'wordpress-social-login') ?>:">
150
+ <option value="default" <?php if( get_option( 'wsl_settings_bouncer_new_users_membership_default_role' ) == "default" ) echo "selected"; ?> ><?php _wsl_e("&mdash; Wordpress User Default Role &mdash;", 'wordpress-social-login') ?></option>
151
  <option value="wslnorole" <?php if( get_option( 'wsl_settings_bouncer_new_users_membership_default_role' ) == "wslnorole" ) echo "selected"; ?> ><?php _wsl_e("&mdash; No role for this site &mdash;", 'wordpress-social-login') ?></option>
 
152
  </optgroup>
153
 
154
+ <optgroup label="<?php _wsl_e("Be careful with these roles. You may be automatically giving new users elevated capabilities", 'wordpress-social-login') ?>:">
155
+ <option value="subscriber" <?php if( get_option( 'wsl_settings_bouncer_new_users_membership_default_role' ) == "subscriber" ) echo "selected"; ?> ><?php _wsl_e("Subscriber", 'wordpress-social-login') ?></option>
156
+ <option value="author" <?php if( get_option( 'wsl_settings_bouncer_new_users_membership_default_role' ) == "author" ) echo "selected"; ?> ><?php _wsl_e("Author", 'wordpress-social-login') ?></option>
157
  <option value="contributor" <?php if( get_option( 'wsl_settings_bouncer_new_users_membership_default_role' ) == "contributor" ) echo "selected"; ?> ><?php _wsl_e("Contributor", 'wordpress-social-login') ?></option>
158
  </optgroup>
159
  </select>
165
 
166
  <div id="namediv" class="stuffbox">
167
  <h3>
168
+ <label><?php _wsl_e("Filters by emails domains name", 'wordpress-social-login') ?></label>
169
  </h3>
170
  <div class="inside hideinside">
171
  <p>
172
  <?php _wsl_e("Restrict registration to a limited number of domains name.", 'wordpress-social-login') ?>
173
+ <br /><?php _wsl_e("Note that filtration domains name takes priority over filtration by e-mails addresses and profile urls", 'wordpress-social-login') ?>.
174
+ <br /><?php _wsl_e("Insert one domain address per line and try to keep this list short (ex: <code>gmail.com</code>, without '@'). On <b>Bounce text</b> insert the text you want to display for rejected users", 'wordpress-social-login') ?>.
175
  </p>
176
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
177
  <tr>
203
 
204
  <div id="namediv" class="stuffbox">
205
  <h3>
206
+ <label><?php _wsl_e("Filters by e-mails addresses", 'wordpress-social-login') ?></label>
207
  </h3>
208
  <div class="inside hideinside">
209
  <p>
210
  <?php _wsl_e("Restrict registration to a limited number of emails addresses.", 'wordpress-social-login') ?>
211
+ <br /><?php _wsl_e("Note that filtration e-mails addresses takes priority over filtration by profile urls", 'wordpress-social-login') ?>.
212
+ <br /><?php _wsl_e("Insert one email address per line and try to keep this list short (ex: <code>hybridauth@gmail.com</code>). On <b>Bounce text</b> insert the text you want to display for rejected users", 'wordpress-social-login') ?>.
213
  </p>
214
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
215
  <tr>
241
 
242
  <div id="namediv" class="stuffbox">
243
  <h3>
244
+ <label><?php _wsl_e("Filters by profile urls", 'wordpress-social-login') ?></label>
245
  </h3>
246
  <div class="inside hideinside">
247
  <p>
248
+ <?php _wsl_e("Restrict registration to a limited number of profile urls", 'wordpress-social-login') ?>.
249
+ <br /><?php _wsl_e("<b>Note</b>: Some providers like Facebook can have multiples profiles URLs per user and WSL won't be able to recognize all them", 'wordpress-social-login') ?>.
250
+ <br /><?php _wsl_e("Insert one URL per line and try to keep this list short (ex: <code>https://twitter.com/HybridAuth</code>, <code>https://plus.google.com/u/0/108839241301472312344</code>). On <b>Bounce text</b> insert the text you want to display for rejected users", 'wordpress-social-login') ?>.
251
  </p>
252
  <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
253
  <tr>
includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -29,11 +29,11 @@ function wsl_component_bouncer_sidebar()
29
  <div style="padding:20px;padding-top:0px;">
30
  <h4 style="cursor: default;border-bottom:1px solid #ccc;font-size: 13px;"><?php _wsl_e("Hey, meet our friend, the Bouncer", 'wordpress-social-login') ?></h4>
31
 
32
- <p style="margin:10px;font-size: 13px;" align="justify">
33
  <?php _wsl_e('Ever been in trouble with one of <a href="http://www.flickr.com/search/?q=bouncer+doorman&z=e" target="_blank">these guys</a>? Well, this module have more or less the same role, and he will try his best to piss your users off until they meet your requirements.', 'wordpress-social-login') ?>
34
  </p>
35
 
36
- <p style="margin:10px;font-size: 13px;" align="justify">
37
  <?php _wsl_e("This feature is most suited for small businesses and folks running a closed-door blog between friends or coworkers.", 'wordpress-social-login') ?>
38
  </p>
39
 
@@ -50,10 +50,10 @@ function wsl_component_bouncer_sidebar()
50
 
51
  <h4 style="cursor: default;border-bottom:1px solid #ccc;"><?php _wsl_e("IMPORTANT!", 'wordpress-social-login') ?></h4>
52
 
53
- <p style="margin:10px;" align="justify">
54
  <?php _wsl_e("All the settings on this page without exception are only valid for users authenticating through <b>WordPress Social Login Widget", 'wordpress-social-login') ?></b>.
55
  </p>
56
- <p style="margin:10px;" align="justify">
57
  <?php _wsl_e("Users authenticating through the regulars Wordpress Login and Register pages with their usernames and passwords WILL NOT be affected.", 'wordpress-social-login') ?>
58
  </p>
59
  </div>
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
29
  <div style="padding:20px;padding-top:0px;">
30
  <h4 style="cursor: default;border-bottom:1px solid #ccc;font-size: 13px;"><?php _wsl_e("Hey, meet our friend, the Bouncer", 'wordpress-social-login') ?></h4>
31
 
32
+ <p style="margin:10px;font-size: 13px;">
33
  <?php _wsl_e('Ever been in trouble with one of <a href="http://www.flickr.com/search/?q=bouncer+doorman&z=e" target="_blank">these guys</a>? Well, this module have more or less the same role, and he will try his best to piss your users off until they meet your requirements.', 'wordpress-social-login') ?>
34
  </p>
35
 
36
+ <p style="margin:10px;font-size: 13px;">
37
  <?php _wsl_e("This feature is most suited for small businesses and folks running a closed-door blog between friends or coworkers.", 'wordpress-social-login') ?>
38
  </p>
39
 
50
 
51
  <h4 style="cursor: default;border-bottom:1px solid #ccc;"><?php _wsl_e("IMPORTANT!", 'wordpress-social-login') ?></h4>
52
 
53
+ <p style="margin:10px;">
54
  <?php _wsl_e("All the settings on this page without exception are only valid for users authenticating through <b>WordPress Social Login Widget", 'wordpress-social-login') ?></b>.
55
  </p>
56
+ <p style="margin:10px;">
57
  <?php _wsl_e("Users authenticating through the regulars Wordpress Login and Register pages with their usernames and passwords WILL NOT be affected.", 'wordpress-social-login') ?>
58
  </p>
59
  </div>
includes/admin/components/buddypress/index.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * WordPress Social Login
4
+ *
5
+ * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
+ */
8
+
9
+ /**
10
+ * BuddyPress integration.
11
+ */
12
+
13
+ // Exit if accessed directly
14
+ if ( !defined( 'ABSPATH' ) ) exit;
15
+
16
+ // --------------------------------------------------------------------
17
+
18
+ function wsl_component_buddypress()
19
+ {
20
+ // HOOKABLE:
21
+ do_action( "wsl_component_buddypress_start" );
22
+
23
+ include "wsl.components.buddypress.setup.php";
24
+ include "wsl.components.buddypress.sidebar.php";
25
+
26
+ if( ! function_exists( 'bp_has_profile' ) ){
27
+ include "wsl.components.buddypress.notfound.php";
28
+
29
+ return wsl_component_buddypress_notfound();
30
+ }
31
+ ?>
32
+ <form method="post" id="wsl_setup_form" action="options.php">
33
+ <?php settings_fields( 'wsl-settings-group-buddypress' ); ?>
34
+
35
+ <div class="metabox-holder columns-2" id="post-body">
36
+ <table width="100%">
37
+ <tr valign="top">
38
+ <td>
39
+ <?php
40
+ wsl_component_buddypress_setup();
41
+ ?>
42
+ </td>
43
+ <td width="10"></td>
44
+ <td width="400">
45
+ <?php
46
+ wsl_component_buddypress_sidebar();
47
+ ?>
48
+ </td>
49
+ </tr>
50
+ </table>
51
+ </div>
52
+ </form>
53
+ <?php
54
+ // HOOKABLE:
55
+ do_action( "wsl_component_buddypress_end" );
56
+ }
57
+
58
+ wsl_component_buddypress();
59
+
60
+ // --------------------------------------------------------------------
includes/admin/components/buddypress/wsl.components.buddypress.notfound.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * WordPress Social Login
4
+ *
5
+ * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
+ */
8
+
9
+ /**
10
+ * BuddyPress integration.
11
+ */
12
+
13
+ // Exit if accessed directly
14
+ if ( !defined( 'ABSPATH' ) ) exit;
15
+
16
+ // --------------------------------------------------------------------
17
+
18
+ function wsl_component_buddypress_notfound()
19
+ {
20
+ // HOOKABLE:
21
+ do_action( "wsl_component_buddypress_notfound_start" );
22
+ ?>
23
+ <style>
24
+ #wsl_div_warn {
25
+ padding: 10px;
26
+ border: 1px solid #ddd;
27
+ background-color: #fff;
28
+
29
+ width: 55%;
30
+ margin: 0px auto;
31
+ margin-top:30px;
32
+ }
33
+ </style>
34
+ <div id="wsl_div_warn">
35
+ <h3 style="margin:0px;"><?php _wsl_e("BuddyPress plugin not found!", 'wordpress-social-login') ?></h3>
36
+
37
+ <hr />
38
+
39
+ <p>
40
+ <?php _wsl_e('<a href="https://buddypress.org/" target="_blank">BuddyPress</a> was not found on your website. The plugin is be either not installed or disabled', 'wordpress-social-login') ?> .
41
+ </p>
42
+
43
+ <p>
44
+ <?php _wsl_e("If you believe you've found a problem with <b>WordPress Social Login</b>, be sure to let us know so we can fix it", 'wordpress-social-login') ?>.
45
+ </p>
46
+
47
+ <hr />
48
+
49
+ <div>
50
+ <a class="button-secondary" href="http://hybridauth.sourceforge.net/wsl/support.html" target="_blank"><?php _wsl_e( "Report as bug", 'wordpress-social-login' ) ?></a>
51
+ <a class="button-primary" href="options-general.php?page=wordpress-social-login&wslp=components" style="float:right"><?php _wsl_e( "Check enabled components", 'wordpress-social-login' ) ?></a>
52
+ </div>
53
+ </div>
54
+ <?php
55
+ // HOOKABLE:
56
+ do_action( "wsl_component_buddypress_notfound_end" );
57
+ }
58
+
59
+ // --------------------------------------------------------------------
includes/admin/components/buddypress/wsl.components.buddypress.setup.php ADDED
@@ -0,0 +1,256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * WordPress Social Login
4
+ *
5
+ * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
+ */
8
+
9
+ /**
10
+ * BuddyPress integration.
11
+ */
12
+
13
+ // Exit if accessed directly
14
+ if ( !defined( 'ABSPATH' ) ) exit;
15
+
16
+ // --------------------------------------------------------------------
17
+
18
+ function wsl_component_buddypress_setup()
19
+ {
20
+ // HOOKABLE:
21
+ do_action( "wsl_component_buddypress_setup_start" );
22
+
23
+ # http://hybridauth.sourceforge.net/userguide/Profile_Data_User_Profile.html
24
+ $ha_profile_fields = array(
25
+ array( 'field' => 'provider' , 'label' => _wsl__( "Provider name" , 'wordpress-social-login'), 'description' => _wsl__( "The the provider or social network name the user used to connected" , 'wordpress-social-login') ),
26
+ array( 'field' => 'identifier' , 'label' => _wsl__( "Provider user Identifier" , 'wordpress-social-login'), 'description' => _wsl__( "The Unique user's ID on the connected provider. Depending on the provider, this field can be an number, Email, URL, etc", 'wordpress-social-login') ),
27
+ array( 'field' => 'profileURL' , 'label' => _wsl__( "Profile URL" , 'wordpress-social-login'), 'description' => _wsl__( "Link to the user profile on the provider web site" , 'wordpress-social-login') ),
28
+ array( 'field' => 'webSiteURL' , 'label' => _wsl__( "Website URL" , 'wordpress-social-login'), 'description' => _wsl__( "User website, blog or web page" , 'wordpress-social-login') ),
29
+ array( 'field' => 'photoURL' , 'label' => _wsl__( "Photo URL" , 'wordpress-social-login'), 'description' => _wsl__( "Link to user picture or avatar on the provider web site" , 'wordpress-social-login') ),
30
+ array( 'field' => 'displayName' , 'label' => _wsl__( "Display name" , 'wordpress-social-login'), 'description' => _wsl__( "User Display name. If not provided by social network, WSL will return a concatenation of the user first and last name" , 'wordpress-social-login') ),
31
+ array( 'field' => 'description' , 'label' => _wsl__( "Description" , 'wordpress-social-login'), 'description' => _wsl__( "A short about me" , 'wordpress-social-login') ),
32
+ array( 'field' => 'firstName' , 'label' => _wsl__( "First name" , 'wordpress-social-login'), 'description' => _wsl__( "User's first name" , 'wordpress-social-login') ),
33
+ array( 'field' => 'lastName' , 'label' => _wsl__( "Last name" , 'wordpress-social-login'), 'description' => _wsl__( "User's last name" , 'wordpress-social-login') ),
34
+ array( 'field' => 'gender' , 'label' => _wsl__( "Gender" , 'wordpress-social-login'), 'description' => _wsl__( "User's gender. Values are 'female', 'male' or blank" , 'wordpress-social-login') ),
35
+ array( 'field' => 'language' , 'label' => _wsl__( "Language" , 'wordpress-social-login'), 'description' => _wsl__( "User's language" , 'wordpress-social-login') ),
36
+ array( 'field' => 'age' , 'label' => _wsl__( "Age" , 'wordpress-social-login'), 'description' => _wsl__( "User' age. Note that WSL do not calculate this field. We return it as it was provided" , 'wordpress-social-login') ),
37
+ array( 'field' => 'birthDay' , 'label' => _wsl__( "Birth day" , 'wordpress-social-login'), 'description' => _wsl__( "The day in the month in which the person was born. Not to confuse it with 'Birth date'" , 'wordpress-social-login') ),
38
+ array( 'field' => 'birthMonth' , 'label' => _wsl__( "Birth month" , 'wordpress-social-login'), 'description' => _wsl__( "The month in which the person was born" , 'wordpress-social-login') ),
39
+ array( 'field' => 'birthYear' , 'label' => _wsl__( "Birth year" , 'wordpress-social-login'), 'description' => _wsl__( "The year in which the person was born" , 'wordpress-social-login') ),
40
+ array( 'field' => 'birthDate' , 'label' => _wsl__( "Birth date" , 'wordpress-social-login'), 'description' => _wsl__( "Complete birthday in which the person was born. Format: YYYY-MM-DD" , 'wordpress-social-login') ),
41
+ array( 'field' => 'email' , 'label' => _wsl__( "Email" , 'wordpress-social-login'), 'description' => _wsl__( "User's email address. Not all of provider grant access to the user email" , 'wordpress-social-login') ),
42
+ array( 'field' => 'phone' , 'label' => _wsl__( "Phone" , 'wordpress-social-login'), 'description' => _wsl__( "User's phone number" , 'wordpress-social-login') ),
43
+ array( 'field' => 'address' , 'label' => _wsl__( "Address" , 'wordpress-social-login'), 'description' => _wsl__( "User's address" , 'wordpress-social-login') ),
44
+ array( 'field' => 'country' , 'label' => _wsl__( "Country" , 'wordpress-social-login'), 'description' => _wsl__( "User's country" , 'wordpress-social-login') ),
45
+ array( 'field' => 'region' , 'label' => _wsl__( "Region" , 'wordpress-social-login'), 'description' => _wsl__( "User's state or region" , 'wordpress-social-login') ),
46
+ array( 'field' => 'city' , 'label' => _wsl__( "City" , 'wordpress-social-login'), 'description' => _wsl__( "User's city" , 'wordpress-social-login') ),
47
+ array( 'field' => 'zip' , 'label' => _wsl__( "Zip" , 'wordpress-social-login'), 'description' => _wsl__( "User's zipcode" , 'wordpress-social-login') ),
48
+ );
49
+
50
+ $wsl_settings_buddypress_enable_mapping = get_option( 'wsl_settings_buddypress_enable_mapping' );
51
+ $wsl_settings_buddypress_xprofile_map = get_option( 'wsl_settings_buddypress_xprofile_map' );
52
+
53
+ $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/';
54
+ ?>
55
+
56
+ <div id="post-body-content">
57
+
58
+ <div class="stuffbox">
59
+ <h3>
60
+ <label><?php _wsl_e("Users avatars", 'wordpress-social-login') ?></label>
61
+ </h3>
62
+ <div class="inside">
63
+ <p>
64
+ <?php
65
+ if( get_option( 'wsl_settings_users_avatars' ) == 1 ){
66
+ _wsl_e("<b>Users avatars</b> is currently set to: <b>Display users avatars from social networks when available</b>", 'wordpress-social-login');
67
+ }
68
+ else{
69
+ _wsl_e("<b>Users avatars</b> is currently set to: <b>Display the default WordPress avatars</b>", 'wordpress-social-login');
70
+ }
71
+ ?>.
72
+ </p>
73
+
74
+ <p class="description">
75
+ <?php _wsl_e("To change this setting, go to <b>Widget</b> &gt; <b>Basic Settings</b> &gt <b>Users avatars</b>, then select the type of avatars that you want to display for your users", 'wordpress-social-login') ?>.
76
+ </p>
77
+ </div>
78
+ </div>
79
+
80
+ <div class="stuffbox">
81
+ <h3>
82
+ <label><?php _wsl_e("Profile mappings", 'wordpress-social-login') ?></label>
83
+ </h3>
84
+ <div class="inside">
85
+ <p>
86
+ <?php _wsl_e("When <b>Profile mapping</b> is enabled, WSL will try to automatically fill in Buddypress users profiles from their social networks profiles", 'wordpress-social-login') ?>.
87
+ </p>
88
+
89
+ <p>
90
+ <?php _wsl_e('<b>Notes</b>', 'wordpress-social-login') ?>:
91
+ </p>
92
+
93
+ <p class="description">
94
+ 1. <?php _wsl_e('<b>Profile mapping</b> will only work for new users. Profile mapping for returning users will implemented in future version of WSL', 'wordpress-social-login') ?>.
95
+ <br />
96
+ 2. <?php _wsl_e('Not all the mapped fields will be filled. Some providers and social networks do not give away many information about their users', 'wordpress-social-login') ?>.
97
+ <br />
98
+ 3. <?php _wsl_e('WSL can only map <b>Single Fields</b>. Supported fields types are: Multi-line Text Areax, Text Box, URL, Date Selector and Number', 'wordpress-social-login') ?>.
99
+ </p>
100
+
101
+ <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
102
+ <tr>
103
+ <td width="200" align="right"><strong><?php _wsl_e("Enable profile mapping", 'wordpress-social-login') ?> :</strong></td>
104
+ <td>
105
+ <select name="wsl_settings_buddypress_enable_mapping" id="wsl_settings_buddypress_enable_mapping" style="width:100px" onChange="toggleMapDiv();">
106
+ <option <?php if( $wsl_settings_buddypress_enable_mapping == 1 ) echo "selected"; ?> value="1"><?php _wsl_e("Yes", 'wordpress-social-login') ?></option>
107
+ <option <?php if( $wsl_settings_buddypress_enable_mapping == 2 ) echo "selected"; ?> value="2"><?php _wsl_e("No", 'wordpress-social-login') ?></option>
108
+ </select>
109
+ </td>
110
+ </tr>
111
+ </table>
112
+ <br>
113
+ </div>
114
+ </div>
115
+
116
+ <div id="xprofilemapdiv" class="stuffbox" style="<?php if( $wsl_settings_buddypress_enable_mapping == 2 ) echo "display:none;"; ?>">
117
+ <h3>
118
+ <label><?php _wsl_e("Fields Map", 'wordpress-social-login') ?></label>
119
+ </h3>
120
+
121
+ <div class="inside">
122
+ <p>
123
+ <?php _wsl_e("Here you can create a new map by placing WSL users profiles fields to the appropriate destination fields", 'wordpress-social-login') ?>.
124
+ <?php _wsl_e('The left column shows the available <b>WSL users profiles fields</b>: These select boxes are called <b>source</b> fields', 'wordpress-social-login') ?>.
125
+ <?php _wsl_e('The right column shows the list of <b>Buddypress profiles fields</b>: Those are the <b>destination</b> fields', 'wordpress-social-login') ?>.
126
+ <?php _wsl_e('If you don\'t want to map a particular Buddypress field, then leave the source for that field blank', 'wordpress-social-login') ?>.
127
+ </p>
128
+
129
+ <hr />
130
+
131
+ <?php
132
+ if ( bp_has_profile() )
133
+ {
134
+ while ( bp_profile_groups() )
135
+ {
136
+ global $group;
137
+
138
+ bp_the_profile_group();
139
+ ?>
140
+ <h4><?php echo sprintf( _wsl__("Fields Group '%s'", 'wordpress-social-login'), $group->name ) ?> :</h4>
141
+
142
+ <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
143
+ <?php
144
+ while ( bp_profile_fields() )
145
+ {
146
+ global $field;
147
+
148
+ bp_the_profile_field();
149
+ ?>
150
+ <tr>
151
+ <td width="270" align="right" valign="top">
152
+ <?php
153
+ $map = isset( $wsl_settings_buddypress_xprofile_map[$field->id] ) ? $wsl_settings_buddypress_xprofile_map[$field->id] : 0;
154
+ $can_map_it = true;
155
+
156
+ if( ! in_array( $field->type, array( 'textarea', 'textbox', 'url', 'datebox', 'number' ) ) ){
157
+ $can_map_it = false;
158
+ }
159
+ ?>
160
+ <select name="wsl_settings_buddypress_xprofile_map[<?php echo $field->id; ?>]" style="width:255px" id="bb_profile_mapping_selector_<?php echo $field->id; ?>" onChange="showMappingConfirm( <?php echo $field->id; ?> );" <?php if( ! $can_map_it ) echo "disabled"; ?>>
161
+ <option value=""></option>
162
+ <?php
163
+ if( $can_map_it ){
164
+ foreach( $ha_profile_fields as $item ){
165
+ ?>
166
+ <option value="<?php echo $item['field']; ?>" <?php if( $item['field'] == $map ) echo "selected"; ?> ><?php echo $item['label']; ?></option>
167
+ <?php
168
+ }
169
+ }
170
+ ?>
171
+ </select>
172
+ </td>
173
+ <td valign="top" align="center" width="50">
174
+ <img src="<?php echo $assets_base_url; ?>arr_right.png" />
175
+ </td>
176
+ <td valign="top">
177
+ <strong><?php echo $field->name; ?></strong>
178
+ <?php
179
+ if( ! $can_map_it ){
180
+ ?>
181
+ <p class="description">
182
+ <?php _wsl_e("<b>WSL</b> can not map this field. Supported field types are: <em>Multi-line Text Areax, Text Box, URL, Date Selector and Number</em>", 'wordpress-social-login'); ?>.
183
+ </p>
184
+ <?php
185
+ }
186
+ else{
187
+ ?>
188
+ <?php
189
+ foreach( $ha_profile_fields as $item ){
190
+ ?>
191
+ <p class="description bb_profile_mapping_confirm_<?php echo $field->id; ?>" style="<?php if( $item['field'] != $map ) echo "display:none;"; ?>" id="bb_profile_mapping_confirm_<?php echo $field->id; ?>_<?php echo $item['field']; ?>">
192
+ <?php echo sprintf( _wsl__( "WSL <b>%s</b> is mapped to Buddypress <b>%s</b> field", 'wordpress-social-login' ), $item['label'], $field->name ); ?>.
193
+ <br />
194
+ <em><b><?php echo $item['label']; ?>:</b> <?php echo $item['description']; ?>.</em>
195
+ </p>
196
+ <?php
197
+ }
198
+ ?>
199
+ <?php
200
+ }
201
+ ?>
202
+ </td>
203
+ </tr>
204
+ <?php
205
+ }
206
+ ?>
207
+ </table>
208
+ <?php
209
+ }
210
+ }
211
+ ?>
212
+ <br>
213
+ </div>
214
+ </div>
215
+
216
+ <br />
217
+
218
+ <div style="margin-left:5px;margin-top:-20px;">
219
+ <input type="submit" class="button-primary" value="<?php _wsl_e("Save Settings", 'wordpress-social-login') ?>" />
220
+ </div>
221
+ </div>
222
+
223
+ <script>
224
+ function toggleMapDiv(){
225
+ if(typeof jQuery=="undefined"){
226
+ alert( "Error: WordPress Social Login require jQuery to be installed on your wordpress in order to work!" );
227
+
228
+ return false;
229
+ }
230
+
231
+ var em = jQuery( "#wsl_settings_buddypress_enable_mapping" ).val();
232
+
233
+ if( em == 2 ) jQuery( "#xprofilemapdiv" ).hide();
234
+ else jQuery( "#xprofilemapdiv" ).show();
235
+ }
236
+
237
+ function showMappingConfirm( field ){
238
+ if(typeof jQuery=="undefined"){
239
+ alert( "Error: WordPress Social Login require jQuery to be installed on your wordpress in order to work!" );
240
+
241
+ return false;
242
+ }
243
+
244
+ var el = jQuery( "#bb_profile_mapping_selector_" + field ).val();
245
+
246
+ jQuery( ".bb_profile_mapping_confirm_" + field ).hide();
247
+
248
+ jQuery( "#bb_profile_mapping_confirm_" + field + "_" + el ).show();
249
+ }
250
+ </script>
251
+ <?php
252
+ // HOOKABLE:
253
+ do_action( "wsl_component_buddypress_setup_end" );
254
+ }
255
+
256
+ // --------------------------------------------------------------------
includes/admin/components/buddypress/wsl.components.buddypress.sidebar.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * WordPress Social Login
4
+ *
5
+ * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
+ */
8
+
9
+ /**
10
+ * BuddyPress integration.
11
+ */
12
+
13
+ // Exit if accessed directly
14
+ if ( !defined( 'ABSPATH' ) ) exit;
15
+
16
+ // --------------------------------------------------------------------
17
+
18
+ function wsl_component_buddypress_sidebar()
19
+ {
20
+ // HOOKABLE:
21
+ do_action( "wsl_component_buddypress_sidebar_start" );
22
+ ?>
23
+ <div class="postbox " id="linksubmitdiv">
24
+ <div class="inside">
25
+ <div id="submitlink" class="submitbox">
26
+ <h3 style="cursor: default;"><?php _wsl_e("BuddyPress integration", 'wordpress-social-login') ?></h3>
27
+ <div id="minor-publishing">
28
+ <div id="misc-publishing-actions">
29
+ <div style="padding:20px;padding-top:0px;">
30
+
31
+ <p style="margin:10px;font-size: 13px;">
32
+ <?php _wsl_e( 'WSL can be now fully integrated with your <a href="https://buddypress.org" target="_blank">BuddyPress</a> installation. When enabled, user avatars display should work right out of the box with most WordPress themes and your BuddyPress installation', 'wordpress-social-login') ?>.
33
+ </p>
34
+
35
+ <p style="margin:10px;font-size: 13px;">
36
+ <?php _wsl_e( 'WSL also comes with BuddyPress xProfiles mappings. When this feature is enabled, WSL will try to automatically fill in Buddypress users profiles from their social networks profiles', 'wordpress-social-login') ?>.
37
+ </p>
38
+
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ <?php
46
+ // HOOKABLE:
47
+ do_action( "wsl_component_buddypress_sidebar_end" );
48
+ }
49
+
50
+ // --------------------------------------------------------------------
includes/admin/components/components/index.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
includes/admin/components/components/wsl.components.help.gallery.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -32,7 +32,7 @@ function wsl_component_components_gallery()
32
  <style>
33
  .wsl_addon_div{
34
  width: 350px;
35
- height: 125px;
36
  padding: 10px;
37
  border: 1px solid #ddd;
38
  background-color: #fff;
@@ -54,22 +54,10 @@ function wsl_component_components_gallery()
54
  }
55
  </style>
56
 
57
- <div class="wsl_addon_div">
58
- <h3 style="margin:0px;"><?php _wsl_e( "WordPress Social Login for BuddyPress", 'wordpress-social-login' ) ?></h3>
59
- <hr />
60
- <p><?php _wsl_e( "Make WordPress Social Login compatible with BuddyPress", 'wordpress-social-login' ) ?>.</p>
61
- <p><?php _wsl_e( "Widget integration, xProfiles mapping and more", 'wordpress-social-login' ) ?>.</p>
62
- <div>
63
- <a class="button button-primary thickbox" href="plugin-install.php?tab=plugin-information&plugin=wsl-buddypress&TB_iframe=true"><?php _wsl_e( "Install Now", 'wordpress-social-login' ) ?></a>
64
- <a class="button button-secondary" href="http://wordpress.org/extend/plugins/wsl-buddypress/" target="_blank"><?php _wsl_e( "Visit plugin site", 'wordpress-social-login' ) ?></a>
65
- </div>
66
- </div>
67
-
68
  <div class="wsl_addon_div">
69
  <h3 style="margin:0px;"><?php _wsl_e( "Build yours", 'wordpress-social-login' ) ?></h3>
70
  <hr />
71
- <p><?php _wsl_e( "Looking to build your own custom <b>WordPress Social Login</b> extenstion or component? Well, it's pretty easy. Just RTFM :)", 'wordpress-social-login' ) ?></p>
72
-
73
  <div>
74
  <a class="button button-primary" href="http://hybridauth.sourceforge.net/wsl/developer.html" target="_blank"><?php _wsl_e( "WSL Developer API", 'wordpress-social-login' ) ?></a>
75
  <a class="button button-secondary" href="https://github.com/hybridauth/WordPress-Social-Login" target="_blank"><?php _wsl_e( "WSL on Github", 'wordpress-social-login' ) ?></a>
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
32
  <style>
33
  .wsl_addon_div{
34
  width: 350px;
35
+ height: 145px;
36
  padding: 10px;
37
  border: 1px solid #ddd;
38
  background-color: #fff;
54
  }
55
  </style>
56
 
 
 
 
 
 
 
 
 
 
 
 
57
  <div class="wsl_addon_div">
58
  <h3 style="margin:0px;"><?php _wsl_e( "Build yours", 'wordpress-social-login' ) ?></h3>
59
  <hr />
60
+ <p><?php _wsl_e( "Looking to build your own custom <b>WordPress Social Login</b> extension or component? Well, it's pretty easy. Just refer to WSL Developer Docs and API.", 'wordpress-social-login' ) ?></p>
 
61
  <div>
62
  <a class="button button-primary" href="http://hybridauth.sourceforge.net/wsl/developer.html" target="_blank"><?php _wsl_e( "WSL Developer API", 'wordpress-social-login' ) ?></a>
63
  <a class="button button-secondary" href="https://github.com/hybridauth/WordPress-Social-Login" target="_blank"><?php _wsl_e( "WSL on Github", 'wordpress-social-login' ) ?></a>
includes/admin/components/components/wsl.components.help.setup.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -22,6 +22,10 @@ function wsl_component_components_setup()
22
 
23
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_COMPONENTS;
24
  ?>
 
 
 
 
25
  <form action="" method="post">
26
  <table class="widefat fixed plugins" cellspacing="0">
27
  <thead>
@@ -42,12 +46,28 @@ function wsl_component_components_setup()
42
 
43
  <tbody id="the-list">
44
  <?php
 
 
 
 
45
  foreach( $WORDPRESS_SOCIAL_LOGIN_COMPONENTS as $name => $settings ){
46
  if( $name == "core" ){
47
  continue;
48
  }
 
 
 
 
 
 
 
 
 
 
 
 
49
  ?>
50
- <tr id="<?php echo $name ?>" class="<?php echo $name ?> <?php if( $settings["enabled"] ) echo "active"; else echo "inactive"; ?>">
51
  <td class="component-label" style="width: 190px;"> &nbsp;
52
  <?php if( $settings["type"] == "core" ): ?>
53
  <div class="icon16 icon-generic"></div>
@@ -56,22 +76,29 @@ function wsl_component_components_setup()
56
  <?php else: ?>
57
  <div class="icon16 icon-appearance"></div>
58
  <?php endif; ?>
 
59
  <strong><?php _wsl_e( $settings["label"], 'wordpress-social-login' ) ?></strong>
60
  </td>
61
  <td class="column-description">
62
  <p><?php _wsl_e( $settings["description"], 'wordpress-social-login' ) ?></p>
 
 
 
 
63
  </td>
64
  <td class="column-action" align="right" style="width: 120px;">
65
  <p>
66
- <?php if( $settings["type"] == "core" && $settings["enabled"] ): ?>
67
- <a class="button-secondary" style="color:#000000" href="options-general.php?page=wordpress-social-login&wslp=<?php echo $name ?>"><?php _wsl_e( "View", 'wordpress-social-login' ) ?></a>
68
- <?php endif; ?>
 
69
 
70
- <?php if( $settings["type"] != "core" ): ?>
71
- <?php if( $settings["enabled"] ): ?>
72
- <a class="button-secondary" href="options-general.php?page=wordpress-social-login&wslp=components&disable=<?php echo $name ?>"><?php _wsl_e( "Disable", 'wordpress-social-login' ) ?></a>
73
- <?php else: ?>
74
- <a class="button-primary" style="color:#ffffff" href="options-general.php?page=wordpress-social-login&wslp=components&enable=<?php echo $name ?>"><?php _wsl_e( "Enable", 'wordpress-social-login' ) ?>&nbsp;</a>
 
75
  <?php endif; ?>
76
  <?php endif; ?>
77
  &nbsp;
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
22
 
23
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_COMPONENTS;
24
  ?>
25
+ <div style="padding: 15px; margin-bottom: 8px; border: 1px solid #ddd; background-color: #fff;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);">
26
+ <?php _wsl_e( "By default, only the three WSL core components are enabled. You can selectively enable or disable any of the non-core components by using the form below. Your WSL installation will continue to function. However, the features of the disabled components will no longer be accessible", 'wordpress-social-login' ) ?>.
27
+ </div>
28
+
29
  <form action="" method="post">
30
  <table class="widefat fixed plugins" cellspacing="0">
31
  <thead>
46
 
47
  <tbody id="the-list">
48
  <?php
49
+ $plugin_tr_class = '';
50
+ $plugin_notices = '';
51
+ $plugin_enablable = true;
52
+
53
  foreach( $WORDPRESS_SOCIAL_LOGIN_COMPONENTS as $name => $settings ){
54
  if( $name == "core" ){
55
  continue;
56
  }
57
+
58
+ $plugin_tr_class = $settings["enabled"] ? "active" : "inactive";
59
+
60
+ if( $name == "buddypress" ){
61
+ if( ! function_exists( 'bp_has_profile' ) ){
62
+ $plugin_enablable = false;
63
+
64
+ $plugin_tr_class = 'active update';
65
+
66
+ $plugin_notices = _wsl__( '<a href="https://buddypress.org/" target="_blank">BuddyPress</a> Plugin was not found on your website', 'wordpress-social-login' );
67
+ }
68
+ }
69
  ?>
70
+ <tr id="<?php echo $name ?>" class="<?php echo $name ?> <?php echo $plugin_tr_class ?>">
71
  <td class="component-label" style="width: 190px;"> &nbsp;
72
  <?php if( $settings["type"] == "core" ): ?>
73
  <div class="icon16 icon-generic"></div>
76
  <?php else: ?>
77
  <div class="icon16 icon-appearance"></div>
78
  <?php endif; ?>
79
+
80
  <strong><?php _wsl_e( $settings["label"], 'wordpress-social-login' ) ?></strong>
81
  </td>
82
  <td class="column-description">
83
  <p><?php _wsl_e( $settings["description"], 'wordpress-social-login' ) ?></p>
84
+
85
+ <?php if( $plugin_notices ): ?>
86
+ <p><em><?php echo $plugin_notices ?>.</em></p>
87
+ <?php endif; ?>
88
  </td>
89
  <td class="column-action" align="right" style="width: 120px;">
90
  <p>
91
+ <?php if( $plugin_enablable ): ?>
92
+ <?php if( $settings["type"] == "core" && $settings["enabled"] ): ?>
93
+ <a class="button-secondary" style="color:#000000" href="options-general.php?page=wordpress-social-login&wslp=<?php echo $name ?>"><?php _wsl_e( "View", 'wordpress-social-login' ) ?></a>
94
+ <?php endif; ?>
95
 
96
+ <?php if( $settings["type"] != "core" ): ?>
97
+ <?php if( $settings["enabled"] ): ?>
98
+ <a class="button-secondary" href="options-general.php?page=wordpress-social-login&wslp=components&disable=<?php echo $name ?>"><?php _wsl_e( "Disable", 'wordpress-social-login' ) ?></a>
99
+ <?php else: ?>
100
+ <a class="button-primary" style="color:#ffffff" href="options-general.php?page=wordpress-social-login&wslp=components&enable=<?php echo $name ?>"><?php _wsl_e( "Enable", 'wordpress-social-login' ) ?>&nbsp;</a>
101
+ <?php endif; ?>
102
  <?php endif; ?>
103
  <?php endif; ?>
104
  &nbsp;
includes/admin/components/contacts/index.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -17,16 +17,11 @@ function wsl_component_contacts()
17
  // HOOKABLE:
18
  do_action( "wsl_component_contacts_start" );
19
 
20
- GLOBAL $wpdb;
21
-
22
  $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
23
- ?>
24
- <div>
25
- <?php
26
- if( isset( $_REQUEST["uid"] ) && (int) $_REQUEST["uid"] ){
27
- $user_id = (int) $_REQUEST["uid"];
28
- }
29
- else{
30
  ?>
31
  <form method="post" id="wsl_setup_form" action="options.php">
32
  <?php settings_fields( 'wsl-settings-group-contacts-import' ); ?>
@@ -35,9 +30,6 @@ function wsl_component_contacts()
35
  <div id="post-body-content">
36
 
37
  <div id="namediv" class="stuffbox">
38
- <h3>
39
- <label for="name"><?php _wsl_e("Settings", 'wordpress-social-login') ?></label>
40
- </h3>
41
  <div class="inside">
42
  <p>
43
  <?php _wsl_e("<b>WordPress Social Login</b> is now introducing <b>Contacts Import</b> as a new feature. When enabled, users authenticating through WordPress Social Login will be asked for the authorisation to import their contact list. Note that some social networks do not provide certains of their users information like contacts emails, photos and or profile urls", 'wordpress-social-login') ?>.
@@ -83,7 +75,7 @@ function wsl_component_contacts()
83
  </tr>
84
  </table>
85
  <p>
86
- <b style="color:#CB4B16;"><?php _wsl_e("Notes", 'wordpress-social-login') ?>:</b>
87
  <ul style="margin-left:40px;margin-top:0px;">
88
  <li><?php _wsl_e('To enable contacts import from these social network, you need first to enabled them on the <a href="options-general.php?page=wordpress-social-login&wslp=networks"><b>Networks</b></a> tab and register the required application', 'wordpress-social-login') ?>.</li>
89
  <li><?php _wsl_e("<b>WSL</b> will try to import as much information about a user contacts as he was able to pull from the social networks APIs.", 'wordpress-social-login') ?></li>
@@ -101,116 +93,144 @@ function wsl_component_contacts()
101
  </div>
102
  </div>
103
  </form>
104
-
105
- <br style="clear:both;" />
106
- <hr />
107
- <h3><?php _wsl_e("Users contacts list preview", 'wordpress-social-login') ?></h3>
108
- <?php
109
- } // if( isset( $_REQUEST["uid"] ) && (int) $_REQUEST["uid"] ){
110
-
111
- if( $user_id ){
112
- $display_name = wsl_get_user_data_by_user_id( "display_name", $user_id );
113
- ?>
114
- <h3><?php echo sprintf( _wsl__("%s contact's list", 'wordpress-social-login'), $display_name ) ?></h3>
115
  <?php
116
- }
117
- ?>
118
- <table cellspacing="0" class="wp-list-table widefat fixed users">
119
- <thead>
120
- <tr>
121
- <th width="100"><span><?php _wsl_e("Provider", 'wordpress-social-login') ?></span></th>
122
- <th><span><?php _wsl_e("User", 'wordpress-social-login') ?></span></th>
123
- <th><span><?php _wsl_e("Contact Name", 'wordpress-social-login') ?></span></th>
124
- <th><span><?php _wsl_e("Contact Email", 'wordpress-social-login') ?></span></th>
125
- <th><span><?php _wsl_e("Contact Profile Url", 'wordpress-social-login') ?></span></th>
126
- </tr>
127
- </thead>
128
- <tfoot>
129
- <tr>
130
- <th><span><?php _wsl_e("Provider", 'wordpress-social-login') ?></span></th>
131
- <th><span><?php _wsl_e("User", 'wordpress-social-login') ?></span></th>
132
- <th><span><?php _wsl_e("Contact Name", 'wordpress-social-login') ?></span></th>
133
- <th><span><?php _wsl_e("Contact Email", 'wordpress-social-login') ?></span></th>
134
- <th><span><?php _wsl_e("Contact Profile Url", 'wordpress-social-login') ?></span></th>
135
- </tr>
136
- </tfoot>
137
- <tbody id="the-list">
138
- <?php
139
- $sql = "SELECT * FROM `{$wpdb->prefix}wsluserscontacts` order by rand() limit 10";
140
 
141
- if( $user_id ){
142
- $sql = "SELECT * FROM `{$wpdb->prefix}wsluserscontacts` WHERE user_id = '$user_id'";
143
- }
144
 
145
- $rs1 = $wpdb->get_results( $sql );
146
-
147
- // have contacts?
148
- if( ! $rs1 ){
 
149
  ?>
150
- <tr class="no-items"><td colspan="5" class="colspanchange"><?php _wsl_e("No contacts found", 'wordpress-social-login') ?>.</td></tr>
 
 
151
  <?php
 
 
152
  }
153
- else{
154
- $i = 0;
155
- foreach( $rs1 as $item ){
156
- $provider = $item->provider;
157
- $user_id = $item->user_id;
158
- $contact_id = $item->id;
159
- ?>
160
- <tr class="<?php if( ++$i % 2 ) echo "alternate" ?>">
161
- <td><img src="<?php $provider = wsl_get_contact_data_by_user_id( "provider", $contact_id); echo $assets_base_url . strtolower( $provider ) . '.png' ?>" style="vertical-align:top;width:16px;height:16px;" /> <?php echo $provider ?></td>
162
- <td>
163
- <?php
164
- // check if user exists
165
- if( wsl_get_user_by_meta_key_and_user_id( "wsl_user", $user_id) ){
166
- ?>
167
- <?php $wsl_user_image = wsl_get_user_by_meta_key_and_user_id( "wsl_user_image", $user_id); if( $wsl_user_image ) { ?>
168
- <img width="32" height="32" class="avatar avatar-32 photo" src="<?php echo $wsl_user_image ?>" >
169
- <?php } else { ?>
170
- <img width="32" height="32" class="avatar avatar-32 photo" src="http://1.gravatar.com/avatar/d4ed6debc848ece02976aba03e450d60?s=32" >
171
- <?php } ?>
172
- <strong><a href="user-edit.php?user_id=<?php echo $user_id ?>"><?php echo wsl_get_user_by_meta_key_and_user_id( "nickname", $user_id) ?></a></strong>
173
- (<?php echo wsl_get_user_by_meta_key_and_user_id( "last_name", $user_id) ?> <?php echo wsl_get_user_by_meta_key_and_user_id( "first_name", $user_id) ?>)
174
- <?php
175
- }
176
- else{
177
- echo "User removed";
178
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  ?>
180
- <br>
181
- </td>
182
- <td>
183
- <?php $photo_url = wsl_get_contact_data_by_user_id( "photo_url", $contact_id); if( $photo_url ) { ?>
184
- <img width="32" height="32" class="avatar avatar-32 photo" src="<?php echo $photo_url ?>" >
185
- <?php } else { ?>
186
- <img width="32" height="32" class="avatar avatar-32 photo" src="http://1.gravatar.com/avatar/d4ed6debc848ece02976aba03e450d60?s=32" >
187
- <?php } ?>
188
- <strong><?php echo wsl_get_contact_data_by_user_id( "full_name", $contact_id) ?></strong>
189
- <br>
190
- </td>
191
- <td>
192
- <?php $email = wsl_get_contact_data_by_user_id( "email", $contact_id); if( $email ) { ?>
193
- <a href="mailto:<?php echo $email ?>"><?php echo $email ?></a>
194
- <?php } else { ?>
195
- -
196
- <?php } ?>
197
- </td>
198
- <td>
199
- <?php $profile_url = wsl_get_contact_data_by_user_id( "profile_url", $contact_id); if( $profile_url ) { ?>
200
- <a href="<?php echo $profile_url ?>" target="_blank"><?php echo str_ireplace( array("http://www.", "https://www.", "http://","https://"), array('','','','',''), $profile_url ) ?></a>
201
- <?php } else { ?>
202
- -
203
- <?php } ?>
204
- </td>
205
- </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  <?php
207
- }
208
- }
209
- ?>
210
- </tbody>
211
- </table>
212
- </div>
213
- <?php
 
 
 
 
 
 
214
  // HOOKABLE:
215
  do_action( "wsl_component_contacts_end" );
216
  }
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
17
  // HOOKABLE:
18
  do_action( "wsl_component_contacts_start" );
19
 
 
 
20
  $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
21
+
22
+ $user_id = isset( $_REQUEST['uid'] ) ? (int) $_REQUEST['uid'] : 0;
23
+
24
+ if( ! $user_id ){
 
 
 
25
  ?>
26
  <form method="post" id="wsl_setup_form" action="options.php">
27
  <?php settings_fields( 'wsl-settings-group-contacts-import' ); ?>
30
  <div id="post-body-content">
31
 
32
  <div id="namediv" class="stuffbox">
 
 
 
33
  <div class="inside">
34
  <p>
35
  <?php _wsl_e("<b>WordPress Social Login</b> is now introducing <b>Contacts Import</b> as a new feature. When enabled, users authenticating through WordPress Social Login will be asked for the authorisation to import their contact list. Note that some social networks do not provide certains of their users information like contacts emails, photos and or profile urls", 'wordpress-social-login') ?>.
75
  </tr>
76
  </table>
77
  <p>
78
+ <b><?php _wsl_e("Notes", 'wordpress-social-login') ?>:</b>
79
  <ul style="margin-left:40px;margin-top:0px;">
80
  <li><?php _wsl_e('To enable contacts import from these social network, you need first to enabled them on the <a href="options-general.php?page=wordpress-social-login&wslp=networks"><b>Networks</b></a> tab and register the required application', 'wordpress-social-login') ?>.</li>
81
  <li><?php _wsl_e("<b>WSL</b> will try to import as much information about a user contacts as he was able to pull from the social networks APIs.", 'wordpress-social-login') ?></li>
93
  </div>
94
  </div>
95
  </form>
 
 
 
 
 
 
 
 
 
 
 
96
  <?php
97
+ // HOOKABLE:
98
+ do_action( "wsl_component_contacts_end" );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
 
100
+ return;
101
+ } // No user selected
 
102
 
103
+ //--
104
+
105
+ $user_data = get_userdata( $user_id );
106
+
107
+ if( ! $user_data ){
108
  ?>
109
+ <div style="padding: 15px; margin-bottom: 8px; border: 1px solid #ddd; background-color: #fff;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);">
110
+ <?php _wsl_e( "WordPress user not found!", 'wordpress-social-login' ); ?>.
111
+ </div>
112
  <?php
113
+
114
+ return;
115
  }
116
+
117
+ $pagenum = isset( $_GET['pagenum'] ) ? absint( $_GET['pagenum'] ) : 1;
118
+ $limit = 25; // number of rows in page
119
+ $offset = ( $pagenum - 1 ) * $limit;
120
+ $num_of_pages = 0;
121
+ $total = wsl_get_stored_hybridauth_user_contacts_count_by_user_id( $user_id );
122
+ $num_of_pages = ceil( $total / $limit );
123
+ ?>
124
+ <div style="padding: 15px; margin-bottom: 8px; border: 1px solid #ddd; background-color: #fff;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);">
125
+ <p style="float: right; margin: 0px;margin-top: -4px;">
126
+ <a class="button button-secondary" href="user-edit.php?user_id=<?php echo $user_id ?>"><?php _wsl_e("Edit user details", 'wordpress-social-login'); ?></a>
127
+ <a class="button button-secondary" href="options-general.php?page=wordpress-social-login&wslp=users&uid=<?php echo $user_id ?>"><?php _wsl_e("Show user WSL profiles", 'wordpress-social-login'); ?></a>
128
+ </p>
129
+
130
+ <?php echo sprintf( _wsl__("<b>%s</b> contact's list", 'wordpress-social-login'), $user_data->display_name ) ?>.
131
+ <?php echo sprintf( _wsl__("This user have <b>%d</b> contacts in his list in total", 'wordpress-social-login'), $total ) ?>.
132
+ </div>
133
+
134
+ <style>
135
+ .widefatop td, .widefatop th { border: 1px solid #DDDDDD; }
136
+ .widefatop th label { font-weight: bold; }
137
+ </style>
138
+
139
+ <h3><?php _wsl_e("Wordpress user profile", 'wordpress-social-login'); ?></h3>
140
+
141
+ <table class="wp-list-table widefat widefatop">
142
+ <tr><th width="200"><label><?php _wsl_e("Wordpress User ID", 'wordpress-social-login'); ?></label></th><td><?php echo $user_data->ID; ?></td></tr>
143
+ <tr><th width="200"><label><?php _wsl_e("Username", 'wordpress-social-login'); ?></label></th><td><?php echo $user_data->user_login; ?></td></tr>
144
+ <tr><th><label><?php _wsl_e("Display name", 'wordpress-social-login'); ?></label></th><td><?php echo $user_data->display_name; ?></td></tr>
145
+ <tr><th><label><?php _wsl_e("E-mail", 'wordpress-social-login'); ?></label></th><td><a href="mailto:<?php echo $user_data->user_email; ?>" target="_blank"><?php echo $user_data->user_email; ?></a></td></tr>
146
+ <tr><th><label><?php _wsl_e("Website", 'wordpress-social-login'); ?></label></th><td><a href="<?php echo $user_data->user_url; ?>" target="_blank"><?php echo $user_data->user_url; ?></a></td></tr>
147
+ <tr><th><label><?php _wsl_e("Registered", 'wordpress-social-login'); ?></label></th><td><?php echo $user_data->user_registered; ?></td></tr>
148
+ </tr>
149
+ </table>
150
+
151
+ <hr />
152
+
153
+ <h3><?php _wsl_e("List of contacts", 'wordpress-social-login'); ?></h3>
154
+
155
+ <table cellspacing="0" class="wp-list-table widefat fixed users">
156
+ <thead>
157
+ <tr>
158
+ <th width="100"><span><?php _wsl_e("Provider", 'wordpress-social-login') ?></span></th>
159
+ <th><span><?php _wsl_e("Contact Name", 'wordpress-social-login') ?></span></th>
160
+ <th><span><?php _wsl_e("Contact Email", 'wordpress-social-login') ?></span></th>
161
+ <th><span><?php _wsl_e("Contact Profile Url", 'wordpress-social-login') ?></span></th>
162
+ </tr>
163
+ </thead>
164
+ <tfoot>
165
+ <tr>
166
+ <th width="100"><span><?php _wsl_e("Provider", 'wordpress-social-login') ?></span></th>
167
+ <th><span><?php _wsl_e("Contact Name", 'wordpress-social-login') ?></span></th>
168
+ <th><span><?php _wsl_e("Contact Email", 'wordpress-social-login') ?></span></th>
169
+ <th><span><?php _wsl_e("Contact Profile Url", 'wordpress-social-login') ?></span></th>
170
+ </tr>
171
+ </tfoot>
172
+ <tbody id="the-list">
173
+ <?php
174
+ $data = wsl_get_stored_hybridauth_user_contacts_by_user_id( $user_id, $offset, $limit );
175
+
176
+ // have contacts?
177
+ if( ! $data ){
178
  ?>
179
+ <tr class="no-items"><td colspan="5" class="colspanchange"><?php _wsl_e("No contacts found", 'wordpress-social-login') ?>.</td></tr>
180
+ <?php
181
+ }
182
+ else{
183
+ $i = 0;
184
+ foreach( $data as $item ){
185
+ ?>
186
+ <tr class="<?php if( ++$i % 2 ) echo "alternate" ?>">
187
+ <td nowrap>
188
+ <img src="<?php echo $assets_base_url . strtolower( $item->provider ) . '.png' ?>" style="vertical-align:top;width:16px;height:16px;" /> <?php echo $item->provider ?>
189
+ </td>
190
+ <td>
191
+ <?php if( $item->photo_url ) { ?>
192
+ <img width="32" height="32" class="avatar avatar-32 photo" align="middle" src="<?php echo $item->photo_url ?>" >
193
+ <?php } else { ?>
194
+ <img width="32" height="32" class="avatar avatar-32 photo" align="middle" src="http://www.gravatar.com/avatar/<?php echo md5( strtolower( trim( $item->email ) ) ); ?>" >
195
+ <?php } ?>
196
+
197
+ <strong><?php echo $item->full_name ? $item->full_name : '-'; ?></strong>
198
+ </td>
199
+ <td>
200
+ <?php if( $item->email ) { ?>
201
+ <a href="mailto:<?php echo $item->email; ?>"><?php echo $item->email; ?></a>
202
+ <?php } else { ?>
203
+ -
204
+ <?php } ?>
205
+ </td>
206
+ <td>
207
+ <?php if( $item->profile_url ) { ?>
208
+ <a href="<?php echo $item->profile_url ?>" target="_blank"><?php echo str_ireplace( array("http://www.", "https://www.", "http://","https://"), array('','','','',''), $item->profile_url ) ?></a>
209
+ <?php } else { ?>
210
+ -
211
+ <?php } ?>
212
+ </td>
213
+ </tr>
214
+ <?php
215
+ }
216
+ }
217
+ ?>
218
+ </tbody>
219
+ </table>
220
  <?php
221
+ $page_links = paginate_links( array(
222
+ 'base' => add_query_arg( 'pagenum', '%#%' ),
223
+ 'format' => '',
224
+ 'prev_text' => __( '&laquo;', 'text-domain' ),
225
+ 'next_text' => __( '&raquo;', 'text-domain' ),
226
+ 'total' => $num_of_pages,
227
+ 'current' => $pagenum
228
+ ) );
229
+
230
+ if ( $page_links ) {
231
+ echo '<div class="tablenav"><div class="tablenav-pages" style="margin: 1em 0">' . $page_links . '</div></div>';
232
+ }
233
+
234
  // HOOKABLE:
235
  do_action( "wsl_component_contacts_end" );
236
  }
includes/admin/components/diagnostics/index.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -16,55 +16,72 @@ function wsl_component_diagnostics()
16
  {
17
  // HOOKABLE:
18
  do_action( "wsl_component_diagnostics_start" );
19
- ?>
20
- <div style="margin-left:20px;">
21
- <form method="post" id="wsl_setup_form" action="options.php">
22
- <?php settings_fields( 'wsl-settings-group-development' ); ?>
23
-
24
- <h3><?php _wsl_e("Requirements test", 'wordpress-social-login') ?></h3>
25
-
26
- <p style="margin-left:25px;font-size: 14px;">
27
- <?php _wsl_e('In order for <b>WordPress Social Login</b> to work properly, your server should meet certain requirements. These "requirements" <br />and "services" are usually offered by default by most "modern" web hosting providers, however some complications may <br />occur with <b>shared hosting</b> and, or <b>custom wordpress installations</b>', 'wordpress-social-login') ?>.
28
- </p>
29
- <p style="margin-left:25px;font-size: 14px;">
30
- <?php _wsl_e("The minimum server requirements are", 'wordpress-social-login') ?>:
31
- </p>
32
- <ul style="margin-left:60px;">
33
- <li><?php _wsl_e("PHP >= 5.2.0 installed", 'wordpress-social-login') ?></li>
34
- <li><?php _wsl_e("WSL Endpoint URLs reachable", 'wordpress-social-login') ?></li>
35
- <li><?php _wsl_e("PHP's default SESSION handling", 'wordpress-social-login') ?></li>
36
- <li><?php _wsl_e("PHP/CURL/SSL Extension enabled", 'wordpress-social-login') ?></li>
37
- <li><?php _wsl_e("PHP/JSON Extension enabled", 'wordpress-social-login') ?></li>
38
- <li><?php _wsl_e("PHP/REGISTER_GLOBALS Off", 'wordpress-social-login') ?></li>
39
- <li><?php _wsl_e("jQuery installed on WordPress backoffice", 'wordpress-social-login') ?></li>
40
- </ul>
41
- <p style="margin-left:25px;margin-top:25px;">
42
- <?php _wsl_e("You can run the <b>WordPress Social Login Requirements Test</b> by clicking the button bellow", 'wordpress-social-login') ?>:
43
-
44
- <br />
45
- <br />
46
- <a class="button-primary" href='<?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL ?>/services/diagnostics.php' target='_blank'><?php _wsl_e("Run the plugin requirements test", 'wordpress-social-login') ?></a>
47
- <a class="button-primary" href='<?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL ?>/services/siteinfo.php' target='_blank'><?php _wsl_e("Website Information", 'wordpress-social-login') ?></a>.
48
- </p>
49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  <br />
51
- <hr />
 
 
 
 
 
 
 
 
 
 
 
52
 
53
- <h3><?php _wsl_e("Development mode", 'wordpress-social-login') ?></h3>
 
 
54
 
55
- <p style="margin-left:25px;">
56
- <?php _wsl_e('By enabling the development mode, this plugin will try generate and display a technical reports when something goes wrong. <br />This report can help your figure out the root of any issues you may runs into, or you can also send it to the plugin developer. <br />Its recommend to set the Development mode to <b style="color:red">Disabled</b> on production.', 'wordpress-social-login') ?>
 
57
 
58
- <br />
59
- <br />
60
- <select name="wsl_settings_development_mode_enabled">
61
- <option <?php if( get_option( 'wsl_settings_development_mode_enabled' ) ) echo "selected"; ?> value="1"><?php _wsl_e("Enabled", 'wordpress-social-login') ?></option>
62
- <option <?php if( ! get_option( 'wsl_settings_development_mode_enabled' ) ) echo "selected"; ?> value="0"><?php _wsl_e("Disabled", 'wordpress-social-login') ?></option>
63
- </select>
64
- <input type="submit" class="button-primary" value="<?php _wsl_e("Save Settings", 'wordpress-social-login') ?>" />
65
- </p>
 
 
 
 
 
 
 
 
 
66
  </form>
67
  </div>
 
68
  <?php
69
  // HOOKABLE:
70
  do_action( "wsl_component_diagnostics_end" );
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
16
  {
17
  // HOOKABLE:
18
  do_action( "wsl_component_diagnostics_start" );
19
+
20
+ $wsl_settings_development_mode_enabled = get_option( 'wsl_settings_development_mode_enabled' );
21
+ ?>
22
+ <div style="padding: 20px; border: 1px solid #ddd; background-color: #fff;">
23
+ <h3><?php _wsl_e("Requirements test", 'wordpress-social-login') ?></h3>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
+ <p style="margin-left:25px;font-size: 14px;">
26
+ <?php _wsl_e('In order for <b>WordPress Social Login</b> to work properly, your server should meet certain requirements. These "requirements" and "services" are usually offered by default by most "modern" web hosting providers, however some complications may occur with <b>shared hosting</b> and, or <b>custom wordpress installations</b>', 'wordpress-social-login') ?>.
27
+ </p>
28
+ <p style="margin-left:25px;font-size: 14px;">
29
+ <?php _wsl_e("The minimum server requirements are", 'wordpress-social-login') ?>:
30
+ </p>
31
+ <ul style="margin-left:60px;">
32
+ <li><?php _wsl_e("PHP >= 5.2.0 installed", 'wordpress-social-login') ?></li>
33
+ <li><?php _wsl_e("WSL Endpoint URLs reachable", 'wordpress-social-login') ?></li>
34
+ <li><?php _wsl_e("PHP's default SESSION handling", 'wordpress-social-login') ?></li>
35
+ <li><?php _wsl_e("PHP/CURL/SSL Extension enabled", 'wordpress-social-login') ?></li>
36
+ <li><?php _wsl_e("PHP/JSON Extension enabled", 'wordpress-social-login') ?></li>
37
+ <li><?php _wsl_e("PHP/REGISTER_GLOBALS Off", 'wordpress-social-login') ?></li>
38
+ <li><?php _wsl_e("jQuery installed on WordPress backoffice", 'wordpress-social-login') ?></li>
39
+ </ul>
40
+ <p style="margin-left:25px;margin-top:25px;">
41
+ <?php _wsl_e("You can run the <b>WordPress Social Login Requirements Test</b> by clicking the button bellow", 'wordpress-social-login') ?>:
42
+
43
  <br />
44
+ <br />
45
+ <a class="button-primary" href='<?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL ?>/utilities/diagnostics.php' target='_blank'><?php _wsl_e("Run the plugin requirements test", 'wordpress-social-login') ?></a>
46
+ <a class="button-primary" href='<?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL ?>/utilities/siteinfo.php' target='_blank'><?php _wsl_e("Website Information", 'wordpress-social-login') ?></a>.
47
+ </p>
48
+ </div>
49
+
50
+ <br />
51
+
52
+ <a name="devmode"></a>
53
+
54
+ <div style="padding: 20px; border: 1px solid #ddd; background-color: #fff;">
55
+ <h3 style="color: #da4f49;"><?php _wsl_e("Development mode", 'wordpress-social-login') ?></h3>
56
 
57
+ <p>
58
+ <?php _wsl_e('When <b>Development Mode</b> is enabled, this plugin will display a debugging area on the footer of admin interfaces. <b>Development Mode</b> will also try generate and display a technical reports when something goes wrong. This report can help you figure out the root of the issues you may runs into', 'wordpress-social-login') ?>.
59
+ </p>
60
 
61
+ <p>
62
+ <?php _wsl_e('Please, do not enable <b>Development Mode</b>, unless you are a developer or you have basic PHP knowledge', 'wordpress-social-login') ?>.
63
+ </p>
64
 
65
+ <p>
66
+ <?php _wsl_e('For security reasons, <b>Development Mode</b> will auto switch to <b>Disabled</b> each time the plugin is <b>reactivated</b>', 'wordpress-social-login') ?>.
67
+ </p>
68
+
69
+ <p>
70
+ <?php _wsl_e('It\'s highly recommended to keep the <b>Development Mode</b> <b style="color:#da4f49">Disabled</b> on production as it would be a security risk otherwise', 'wordpress-social-login') ?>.
71
+ </p>
72
+
73
+ <form method="post" id="wsl_setup_form" action="options.php" <?php if( ! $wsl_settings_development_mode_enabled ) { ?>onsubmit="return confirm('Do you really want to enable Development Mode?\n\nPlease confirm that you have read and understood the abovementioned by clicking OK.');"<?php } ?>>
74
+ <?php settings_fields( 'wsl-settings-group-development' ); ?>
75
+
76
+ <select name="wsl_settings_development_mode_enabled">
77
+ <option <?php if( $wsl_settings_development_mode_enabled ) echo "selected"; ?> value="1"><?php _wsl_e("Enabled", 'wordpress-social-login') ?></option>
78
+ <option <?php if( ! $wsl_settings_development_mode_enabled ) echo "selected"; ?> value="0"><?php _wsl_e("Disabled", 'wordpress-social-login') ?></option>
79
+ </select>
80
+
81
+ <input type="submit" class="button-primary" style="background-color: #da4f49;border-color: #bd362f;text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);color: #ffffff;" value="<?php _wsl_e("Save Settings", 'wordpress-social-login') ?>" />
82
  </form>
83
  </div>
84
+
85
  <?php
86
  // HOOKABLE:
87
  do_action( "wsl_component_diagnostics_end" );
includes/admin/components/help/index.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -20,18 +20,20 @@ function wsl_component_help()
20
  // HOOKABLE:
21
  do_action( "wsl_component_help_start" );
22
  ?>
23
- <div class="wslgn">
24
- <div style="width: 290px; float: right; margin: 20px 0 20px 20px; margin-top:0px; padding: 0 20px 20px 20px; border: 1px solid #ddd; background-color: #fff;">
25
  <h3><?php _wsl_e("Troubleshooting", 'wordpress-social-login') ?></h3>
26
  <p>
27
  <b><a class="button-primary" href="options-general.php?page=wordpress-social-login&wslp=diagnostics"><?php _wsl_e('WSL Diagnostics', 'wordpress-social-login') ?></a></b>
28
 
29
- <b><a class="button-primary" href="<?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL ?>/services/siteinfo.php"><?php _wsl_e('System information', 'wordpress-social-login') ?></a></b>
 
 
30
  </p>
31
- <p align="justify">
32
  <?php _wsl_e('If you run into any issue, you can access the <b>WordPress Social Login Diagnostics</b> to check the <b>Plugin Requirements</b> or to enable the <b>Development mode</b>', 'wordpress-social-login') ?>.
33
  </p>
34
- <p align="justify">
35
  <?php _wsl_e('Remember to include your System information when posting support requests', 'wordpress-social-login') ?>.
36
  </p>
37
  </div>
@@ -102,4 +104,52 @@ function wsl_component_help()
102
 
103
  wsl_component_help();
104
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  // --------------------------------------------------------------------
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
20
  // HOOKABLE:
21
  do_action( "wsl_component_help_start" );
22
  ?>
23
+ <div style="padding: 20px; border: 1px solid #ddd; background-color: #fff;">
24
+ <div style="width: 460px; float: right; line-height: 20px;padding: 8px;background-color: #f2f2f2;border: 1px solid #ccc;padding: 10px;text-align:center;box-shadow: 0 1px 3px rgba(0,0,0,0.13);">
25
  <h3><?php _wsl_e("Troubleshooting", 'wordpress-social-login') ?></h3>
26
  <p>
27
  <b><a class="button-primary" href="options-general.php?page=wordpress-social-login&wslp=diagnostics"><?php _wsl_e('WSL Diagnostics', 'wordpress-social-login') ?></a></b>
28
 
29
+ <b><a class="button-primary" href="options-general.php?page=wordpress-social-login&wslp=diagnostics#devmode"><?php _wsl_e('Development mode', 'wordpress-social-login') ?></a></b>
30
+
31
+ <b><a class="button-primary" href="<?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL ?>/utilities/siteinfo.php"><?php _wsl_e('System information', 'wordpress-social-login') ?></a></b>
32
  </p>
33
+ <p>
34
  <?php _wsl_e('If you run into any issue, you can access the <b>WordPress Social Login Diagnostics</b> to check the <b>Plugin Requirements</b> or to enable the <b>Development mode</b>', 'wordpress-social-login') ?>.
35
  </p>
36
+ <p>
37
  <?php _wsl_e('Remember to include your System information when posting support requests', 'wordpress-social-login') ?>.
38
  </p>
39
  </div>
104
 
105
  wsl_component_help();
106
 
107
+ // --------------------------------------------------------------------
108
+
109
+ function wsl_component_help_translate()
110
+ {
111
+ ?>
112
+ <style>
113
+ #l10n-footer {
114
+ display:none !important;
115
+ }
116
+ #wsl_div_warn {
117
+ padding: 10px;
118
+ border: 1px solid #ddd;
119
+ background-color: #fff;
120
+
121
+ width: 750px;
122
+ margin: 0px auto;
123
+ margin-top:30px;
124
+ }
125
+ </style>
126
+ <div id="wsl_div_warn">
127
+ <h3 style="margin:0px;"><?php _wsl_e('Help us translate WordPress Social Login into your language', 'wordpress-social-login') ?></h3>
128
+
129
+ <hr />
130
+
131
+ <p>
132
+ <?php _wsl_e( "We're calling on the help of WordPress Social Login users to translate this plugin into their own language or improve current translations where necessary. If you are interested in helping us out, please drop a mail at hybridauth@gmail.com. You can also sent us a pull request on <a href='https://github.com/hybridauth/WordPress-Social-Login'>https://github.com/hybridauth/WordPress-Social-Login</a>", 'wordpress-social-login') ?>.
133
+ </p>
134
+
135
+ <p>
136
+ <?php _wsl_e("If you are interested and you want to help, but you are new to WP/i18n, then we recommend check out this video", 'wordpress-social-login') ?>:
137
+ </p>
138
+
139
+ <hr />
140
+
141
+ <div style="text-align:center"><iframe width="560" height="315" src="//www.youtube.com/embed/aGN-hbMCPMg" frameborder="0" allowfullscreen></iframe></div>
142
+
143
+ <br />
144
+
145
+ <small>
146
+ <?php _wsl_e("<b>Note:</b> WSL uses <code>_wsl_e()</code> instead of <code>_e()</code> and <code>_wsl__</code> instead of <code>__()</code>", 'wordpress-social-login') ?>.
147
+ </small>
148
+
149
+ <br />
150
+
151
+ </div>
152
+ <?php
153
+ }
154
+
155
  // --------------------------------------------------------------------
includes/admin/components/login-widget/index.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -22,8 +22,6 @@ function wsl_component_loginwidget()
22
 
23
  include "wsl.components.loginwidget.setup.php";
24
  include "wsl.components.loginwidget.sidebar.php";
25
-
26
- wsl_admin_welcome_panel();
27
  ?>
28
  <form method="post" id="wsl_setup_form" action="options.php">
29
  <?php settings_fields( 'wsl-settings-group-customize' ); ?>
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
22
 
23
  include "wsl.components.loginwidget.setup.php";
24
  include "wsl.components.loginwidget.sidebar.php";
 
 
25
  ?>
26
  <form method="post" id="wsl_setup_form" action="options.php">
27
  <?php settings_fields( 'wsl-settings-group-customize' ); ?>
includes/admin/components/login-widget/wsl.components.loginwidget.setup.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -20,34 +20,65 @@ function wsl_component_loginwidget_setup()
20
  // HOOKABLE:
21
  do_action( "wsl_component_loginwidget_setup_start" );
22
  ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  <div id="post-body-content">
24
 
25
  <div id="namediv" class="stuffbox">
26
  <h3>
27
- <label for="name"><?php _wsl_e("Basic Settings", 'wordpress-social-login') ?></label>
28
  </h3>
29
  <div class="inside">
30
- <table width="100%" border="0" cellpadding="5" cellspacing="2" >
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  <tr>
32
- <td width="135" align="right"><strong><?php _wsl_e("Connect with caption", 'wordpress-social-login') ?> :</strong></td>
33
  <td>
34
- <input type="text" class="inputgnrc" value="<?php echo get_option( 'wsl_settings_connect_with_label' ); ?>" name="wsl_settings_connect_with_label" >
35
  </td>
36
  </tr>
37
  <tr>
38
  <td align="right"><strong><?php _wsl_e("Social icon set", 'wordpress-social-login') ?> :</strong></td>
39
  <td>
40
- <select name="wsl_settings_social_icon_set" style="width:400px">
41
- <option <?php if( get_option( 'wsl_settings_social_icon_set' ) == "wpzoom" ) echo "selected"; ?> value="wpzoom"><?php _wsl_e("WPZOOM social networking icon set", 'wordpress-social-login') ?></option>
42
  <option <?php if( get_option( 'wsl_settings_social_icon_set' ) == "icondock" ) echo "selected"; ?> value="icondock"><?php _wsl_e("Icondock vector social media icons", 'wordpress-social-login') ?></option>
 
43
  </select>
44
  </td>
45
  </tr>
46
  <tr>
47
  <td align="right"><strong><?php _wsl_e("Users avatars", 'wordpress-social-login') ?> :</strong></td>
48
  <td>
49
- <select name="wsl_settings_users_avatars" style="width:400px">
50
- <option <?php if( ! get_option( 'wsl_settings_users_avatars' ) ) echo "selected"; ?> value="0"><?php _wsl_e("Display the default users avatars", 'wordpress-social-login') ?></option>
51
  <option <?php if( get_option( 'wsl_settings_users_avatars' ) ) echo "selected"; ?> value="1"><?php _wsl_e("Display users avatars from social networks when available", 'wordpress-social-login') ?></option>
52
  </select>
53
  </td>
@@ -59,39 +90,69 @@ function wsl_component_loginwidget_setup()
59
 
60
  <div id="namediv" class="stuffbox">
61
  <h3>
62
- <label for="name"><?php _wsl_e("Advanced Settings", 'wordpress-social-login') ?></label>
63
  </h3>
64
  <div class="inside">
65
- <table width="100%" border="0" cellpadding="5" cellspacing="2" >
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  <tr>
67
- <td width="135" align="right"><strong><?php _wsl_e("Redirect URL", 'wordpress-social-login') ?> :</strong></td>
68
  <td>
69
- <input type="text" name="wsl_settings_redirect_url" value="<?php echo get_option( 'wsl_settings_redirect_url' ); ?>" class="inputgnrc">
 
 
 
 
 
 
 
 
 
70
  </td>
71
  </tr>
72
  <tr>
73
- <td align="right"><strong><?php _wsl_e("Authentication flow", 'wordpress-social-login') ?> :</strong></td>
74
  <td>
75
- <select name="wsl_settings_use_popup" style="width:400px">
76
- <option <?php if( get_option( 'wsl_settings_use_popup' ) == 1 ) echo "selected"; ?> value="1"><?php _wsl_e("Using popup window", 'wordpress-social-login') ?></option>
77
- <option <?php if( get_option( 'wsl_settings_use_popup' ) == 2 ) echo "selected"; ?> value="2"><?php _wsl_e("No popup window", 'wordpress-social-login') ?></option>
78
  </select>
79
  </td>
80
  </tr>
81
  <tr>
82
  <td align="right"><strong><?php _wsl_e("Widget display", 'wordpress-social-login') ?> :</strong></td>
83
  <td>
84
- <select name="wsl_settings_widget_display" style="width:400px">
85
- <option <?php if( get_option( 'wsl_settings_widget_display' ) == 1 ) echo "selected"; ?> value="1"><?php _wsl_e("Display the widget in the comments area, login and register forms", 'wordpress-social-login') ?></option>
86
- <option <?php if( get_option( 'wsl_settings_widget_display' ) == 2 ) echo "selected"; ?> value="2"><?php _wsl_e("Display the widget ONLY in the comments area", 'wordpress-social-login') ?></option>
87
- <option <?php if( get_option( 'wsl_settings_widget_display' ) == 3 ) echo "selected"; ?> value="3"><?php _wsl_e("Display the widget ONLY in the login form", 'wordpress-social-login') ?></option>
 
88
  </select>
89
  </td>
90
  </tr>
91
  <tr>
92
  <td align="right"><strong><?php _wsl_e("Notification", 'wordpress-social-login') ?> :</strong></td>
93
  <td>
94
- <select name="wsl_settings_users_notification" style="width:400px">
95
  <option <?php if( ! get_option( 'wsl_settings_users_notification' ) ) echo "selected"; ?> value="0"><?php _wsl_e("No notification", 'wordpress-social-login') ?></option>
96
  <option <?php if( get_option( 'wsl_settings_users_notification' ) == 1 ) echo "selected"; ?> value="1"><?php _wsl_e("Notify ONLY the blog admin of a new user", 'wordpress-social-login') ?></option>
97
  </select>
@@ -104,32 +165,42 @@ function wsl_component_loginwidget_setup()
104
 
105
  <div id="namediv" class="stuffbox">
106
  <h3>
107
- <label for="name"><?php _wsl_e("Custom CSS", 'wordpress-social-login') ?></label>
108
  </h3>
109
  <div class="inside">
110
- <table width="100%" border="0" cellpadding="5" cellspacing="2" >
111
- <tr>
112
- <td width="135" align="right" valign="top"><strong><?php _wsl_e("Widget CSS", 'wordpress-social-login') ?> :</strong></td>
 
 
113
  <td>
114
- <?php _wsl_e("To customize the default widget styles you can either: edit the css file <strong>/wordpress-social-login/assets/css/style.css</strong>, or change it from this text area", 'wordpress-social-login') ?>.
115
- <br />
116
  <textarea style="width:100%;height:120px;margin-top:6px;" name="wsl_settings_authentication_widget_css"><?php echo get_option( 'wsl_settings_authentication_widget_css' ); ?></textarea>
117
  <br />
118
  <p><?php _wsl_e("The basic widget markup is the following", 'wordpress-social-login') ?>:</p>
119
  <pre style="background-color: #eaffdc;border:1px solid #60cf4e; border-radius: 3px;padding: 10px;margin-top:5px;margin-bottom:0px;">
120
- &lt;span id=&quot;<code>wp-social-login-connect-with</code>&quot;&gt;{connect_with_caption}&lt;/span&gt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
 
122
- &lt;div id=&quot;<code>wp-social-login-connect-options</code>&quot;&gt;
123
- &lt;a class=&quot;<code>wsl_connect_with_provider</code>&quot;&gt;
124
- &lt;img src=&quot;{provider_icon_facebook}&quot; /&gt;
125
- &lt;/a&gt;
126
 
127
- &lt;a class=&quot;<code>wsl_connect_with_provider</code>&quot;&gt;
128
- &lt;img src=&quot;{provider_icon_google}&quot; /&gt;
129
- &lt;/a&gt;
130
 
131
- etc.
132
- &lt;/div&gt;
133
  </pre>
134
  </td>
135
  </tr>
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
20
  // HOOKABLE:
21
  do_action( "wsl_component_loginwidget_setup_start" );
22
  ?>
23
+ <style>
24
+ .wp-social-login-provider-list {
25
+ padding:10px;
26
+ }
27
+
28
+ .wp-social-login-provider-list a{
29
+ text-decoration: none;
30
+ }
31
+
32
+ .wp-social-login-provider-list img{
33
+ border:0 none;
34
+ }
35
+ </style>
36
+
37
  <div id="post-body-content">
38
 
39
  <div id="namediv" class="stuffbox">
40
  <h3>
41
+ <label><?php _wsl_e("Basic Settings", 'wordpress-social-login') ?></label>
42
  </h3>
43
  <div class="inside">
44
+
45
+ <p>
46
+ <?php _wsl_e("<b>Connect with caption :</b> Change the content of the label to display above WSL widget", 'wordpress-social-login') ?>.
47
+ </p>
48
+
49
+ <p>
50
+ <?php _wsl_e("<b>Social icon set :</b> WSL provides two set of icons to display on the widget", 'wordpress-social-login') ?>.
51
+ <?php _wsl_e("You can also display the providers names instead of icons. This allow the customization of the widget to a great extent", 'wordpress-social-login') ?>.
52
+ </p>
53
+
54
+ <p>
55
+ <?php _wsl_e("<b>Users avatars :</b> Determines whether to show users avatars from social networks or to display the default ones", 'wordpress-social-login') ?>.
56
+
57
+ <?php _wsl_e("Avatars display should work right out of the box with most WordPress themes, BuddyPress and bbPress", 'wordpress-social-login') ?>.
58
+ </p>
59
+
60
+ <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
61
  <tr>
62
+ <td width="180" align="right"><strong><?php _wsl_e("Connect with caption", 'wordpress-social-login') ?> :</strong></td>
63
  <td>
64
+ <input type="text" class="inputgnrc" style="width:535px" value="<?php _wsl_e( get_option( 'wsl_settings_connect_with_label' ), 'wordpress-social-login' ); ?>" name="wsl_settings_connect_with_label" >
65
  </td>
66
  </tr>
67
  <tr>
68
  <td align="right"><strong><?php _wsl_e("Social icon set", 'wordpress-social-login') ?> :</strong></td>
69
  <td>
70
+ <select name="wsl_settings_social_icon_set" style="width:535px">
71
+ <option <?php if( get_option( 'wsl_settings_social_icon_set' ) == "wpzoom" ) echo "selected"; ?> value="wpzoom"><?php _wsl_e("WPZOOM social networking icon set", 'wordpress-social-login') ?></option>
72
  <option <?php if( get_option( 'wsl_settings_social_icon_set' ) == "icondock" ) echo "selected"; ?> value="icondock"><?php _wsl_e("Icondock vector social media icons", 'wordpress-social-login') ?></option>
73
+ <option <?php if( get_option( 'wsl_settings_social_icon_set' ) == "none" ) echo "selected"; ?> value="none"><?php _wsl_e("None, display providers names instead of icons", 'wordpress-social-login') ?></option>
74
  </select>
75
  </td>
76
  </tr>
77
  <tr>
78
  <td align="right"><strong><?php _wsl_e("Users avatars", 'wordpress-social-login') ?> :</strong></td>
79
  <td>
80
+ <select name="wsl_settings_users_avatars" style="width:535px">
81
+ <option <?php if( ! get_option( 'wsl_settings_users_avatars' ) ) echo "selected"; ?> value="0"><?php _wsl_e("Display the default WordPress avatars", 'wordpress-social-login') ?></option>
82
  <option <?php if( get_option( 'wsl_settings_users_avatars' ) ) echo "selected"; ?> value="1"><?php _wsl_e("Display users avatars from social networks when available", 'wordpress-social-login') ?></option>
83
  </select>
84
  </td>
90
 
91
  <div id="namediv" class="stuffbox">
92
  <h3>
93
+ <label><?php _wsl_e("Advanced Settings", 'wordpress-social-login') ?></label>
94
  </h3>
95
  <div class="inside">
96
+ <p>
97
+ <?php _wsl_e("<b>Redirect URL :</b> By default and after they authenticate, users will be automatically redirected to the page where they come from. If WSL wasn't able to identify where they come from (or if they used wp-login page to connect), then they will be redirected to <code>Redirect URL</code> instead", 'wordpress-social-login') ?>.
98
+ </p>
99
+
100
+ <p>
101
+ <?php _wsl_e("<b>Force redirection :</b> When set to <b>Yes</b>, users will be <b>always</b> redirected to <code>Redirect URL</code>", 'wordpress-social-login') ?>.
102
+ </p>
103
+
104
+ <p>
105
+ <?php _wsl_e("<b>Authentication display :</b> Determines how the authentication dialog is rendered. You can chose to open the dialog in a <b>popup</b> or to <b>in page</b>. (Authentication display was previously known as Authentication flow)", 'wordpress-social-login') ?>.
106
+ </p>
107
+
108
+ <p>
109
+ <?php _wsl_e("<b>Widget display :</b> Determines where you want to show the authentication widget", 'wordpress-social-login') ?>.
110
+ </p>
111
+
112
+ <p>
113
+ <?php _wsl_e("<b>Notification :</b> Determines whether you want to receive a notification by mail when a new user is logged in via WSL", 'wordpress-social-login') ?>.
114
+ </p>
115
+
116
+ <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
117
  <tr>
118
+ <td width="180" align="right"><strong><?php _wsl_e("Redirect URL", 'wordpress-social-login') ?> :</strong></td>
119
  <td>
120
+ <input type="text" name="wsl_settings_redirect_url" class="inputgnrc" style="width:535px" value="<?php echo get_option( 'wsl_settings_redirect_url' ); ?>">
121
+ </td>
122
+ </tr>
123
+ <tr>
124
+ <td align="right"><strong><?php _wsl_e("Force redirection", 'wordpress-social-login') ?> :</strong></td>
125
+ <td>
126
+ <select name="wsl_settings_force_redirect_url" style="width:100px">
127
+ <option <?php if( get_option( 'wsl_settings_force_redirect_url' ) == 1 ) echo "selected"; ?> value="1"><?php _wsl_e("Yes", 'wordpress-social-login') ?></option>
128
+ <option <?php if( get_option( 'wsl_settings_force_redirect_url' ) == 2 ) echo "selected"; ?> value="2"><?php _wsl_e("No", 'wordpress-social-login') ?></option>
129
+ </select>
130
  </td>
131
  </tr>
132
  <tr>
133
+ <td align="right"><strong><?php _wsl_e("Authentication display", 'wordpress-social-login') ?> :</strong></td>
134
  <td>
135
+ <select name="wsl_settings_use_popup" style="width:100px">
136
+ <option <?php if( get_option( 'wsl_settings_use_popup' ) == 1 ) echo "selected"; ?> value="1"><?php _wsl_e("Popup", 'wordpress-social-login') ?></option>
137
+ <option <?php if( get_option( 'wsl_settings_use_popup' ) == 2 ) echo "selected"; ?> value="2"><?php _wsl_e("In Page", 'wordpress-social-login') ?></option>
138
  </select>
139
  </td>
140
  </tr>
141
  <tr>
142
  <td align="right"><strong><?php _wsl_e("Widget display", 'wordpress-social-login') ?> :</strong></td>
143
  <td>
144
+ <select name="wsl_settings_widget_display" style="width:535px">
145
+ <option <?php if( get_option( 'wsl_settings_widget_display' ) == 4 ) echo "selected"; ?> value="4"><?php _wsl_e("Do not display the widget anywhere, I'll use shortcodes", 'wordpress-social-login') ?></option>
146
+ <option <?php if( get_option( 'wsl_settings_widget_display' ) == 1 ) echo "selected"; ?> value="1"><?php _wsl_e("Display the widget in the comments area, login and register forms", 'wordpress-social-login') ?></option>
147
+ <option <?php if( get_option( 'wsl_settings_widget_display' ) == 3 ) echo "selected"; ?> value="3"><?php _wsl_e("Display the widget only in the login and register forms", 'wordpress-social-login') ?></option>
148
+ <option <?php if( get_option( 'wsl_settings_widget_display' ) == 2 ) echo "selected"; ?> value="2"><?php _wsl_e("Display the widget only in the comments area", 'wordpress-social-login') ?></option>
149
  </select>
150
  </td>
151
  </tr>
152
  <tr>
153
  <td align="right"><strong><?php _wsl_e("Notification", 'wordpress-social-login') ?> :</strong></td>
154
  <td>
155
+ <select name="wsl_settings_users_notification" style="width:535px">
156
  <option <?php if( ! get_option( 'wsl_settings_users_notification' ) ) echo "selected"; ?> value="0"><?php _wsl_e("No notification", 'wordpress-social-login') ?></option>
157
  <option <?php if( get_option( 'wsl_settings_users_notification' ) == 1 ) echo "selected"; ?> value="1"><?php _wsl_e("Notify ONLY the blog admin of a new user", 'wordpress-social-login') ?></option>
158
  </select>
165
 
166
  <div id="namediv" class="stuffbox">
167
  <h3>
168
+ <label><?php _wsl_e("Custom CSS", 'wordpress-social-login') ?></label>
169
  </h3>
170
  <div class="inside">
171
+ <p>
172
+ <?php _wsl_e("To customize the default widget styles you can either: change the css in the <b>text area</b> bellow or add it to your website <b>theme</b> files", 'wordpress-social-login') ?>.
173
+ </p>
174
+ <table width="100%" border="0" cellpadding="5" cellspacing="2" style="border-top:1px solid #ccc;">
175
+ <tr>
176
  <td>
 
 
177
  <textarea style="width:100%;height:120px;margin-top:6px;" name="wsl_settings_authentication_widget_css"><?php echo get_option( 'wsl_settings_authentication_widget_css' ); ?></textarea>
178
  <br />
179
  <p><?php _wsl_e("The basic widget markup is the following", 'wordpress-social-login') ?>:</p>
180
  <pre style="background-color: #eaffdc;border:1px solid #60cf4e; border-radius: 3px;padding: 10px;margin-top:5px;margin-bottom:0px;">
181
+ &lt;div class=&quot;<code>wp-social-login-widget</code>&quot;&gt;
182
+
183
+ &lt;div class=&quot;<code>wp-social-login-connect-with</code>&quot;&gt;{connect_with_caption}&lt;/div&gt;
184
+
185
+ &lt;div class=&quot;<code>wp-social-login-provider-list</code>&quot;&gt;
186
+
187
+ &lt;a class=&quot;<code>wp-social-login-provider wp-social-login-provider-facebook</code>&quot;&gt;
188
+ &lt;img src=&quot;{provider_icon_facebook}&quot; /&gt;
189
+ &lt;/a&gt;
190
+
191
+ &lt;a class=&quot;<code>wp-social-login-provider wp-social-login-provider-google</code>&quot;&gt;
192
+ &lt;img src=&quot;{provider_icon_google}&quot; /&gt;
193
+ &lt;/a&gt;
194
+
195
+ &lt;a class=&quot;<code>wp-social-login-provider wp-social-login-provider-twitter</code>&quot;&gt;
196
+ &lt;img src=&quot;{provider_icon_twitter}&quot; /&gt;
197
+ &lt;/a&gt;
198
 
199
+ &lt;/div&gt; &lt;!-- / div.wp-social-login-connect-options --&gt;
 
 
 
200
 
201
+ &lt;div class=&quot;<code>wp-social-login-widget-clearing</code>&quot;&gt;&lt;/div&gt;
 
 
202
 
203
+ &lt;/div&gt; &lt;!-- / div.wp-social-login-widget --&gt;
 
204
  </pre>
205
  </td>
206
  </tr>
includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -41,6 +41,10 @@ function wsl_component_loginwidget_sidebar()
41
  <?php _wsl_e("If this widget does not show up on your custom theme or you want to add it somewhere else then refer to the next section", 'wordpress-social-login') ?>.
42
  </p>
43
 
 
 
 
 
44
  <h4 style="cursor: default;border-bottom:1px solid #ccc;"><?php _wsl_e("Custom integration", 'wordpress-social-login') ?></h4>
45
 
46
  <p style="margin:10px;">
@@ -51,22 +55,22 @@ function wsl_component_loginwidget_sidebar()
51
  </p>
52
 
53
  <p style="margin:10px;">
54
- <?php _wsl_e('<b>[wordpress_social_login]</b> shortcode can be used in combination with <a href="http://wordpress.org/extend/plugins/html-javascript-adder/" target="_blank">HTML Javascript Adder</a> plugin to be add WSL Widget to your website sidebar', 'wordpress-social-login') ?>.
55
- </p>
56
-
57
- <p style="margin:10px;">
58
- <?php _wsl_e('Also, if you are a developer or designer then you can customize it to your heart\'s content. For more inofmation refer to <b><a href="http://hybridauth.sourceforge.net/wsl/customize.html" target="_blank">User Guide</a></b>', 'wordpress-social-login') ?>.
59
  </p>
60
 
61
  <h4 style="cursor: default;border-bottom:1px solid #ccc;"><?php _wsl_e("Widget preview", 'wordpress-social-login') ?></h4>
62
 
63
  <p style="margin:10px;">
64
- <?php _wsl_e("This is a preview of what should be on the comments area", 'wordpress-social-login') ?>.
65
- <strong><?php _wsl_e("Do not test it here", 'wordpress-social-login') ?></strong>!
 
 
66
  </p>
67
 
68
- <div style="width: 380px;background-color: #FFEBE8;border:1px solid #CC0000; border-radius: 3px;padding: 10px;margin-left:10px;">
69
- <?php wsl_render_login_form(); ?>
70
  </div>
71
  </div>
72
  </div>
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
41
  <?php _wsl_e("If this widget does not show up on your custom theme or you want to add it somewhere else then refer to the next section", 'wordpress-social-login') ?>.
42
  </p>
43
 
44
+ <p style="margin:10px;">
45
+ <?php _wsl_e('For more information about the WSL Widget, refer to the online userguide <b><a href="http://hybridauth.sourceforge.net/wsl/customize.html?" target="_blank">widget customization</a></b> and <b><a href="http://hybridauth.sourceforge.net/wsl/themes.html?" target="_blank">widget themes</a></b>', 'wordpress-social-login') ?>.
46
+ </p>
47
+
48
  <h4 style="cursor: default;border-bottom:1px solid #ccc;"><?php _wsl_e("Custom integration", 'wordpress-social-login') ?></h4>
49
 
50
  <p style="margin:10px;">
55
  </p>
56
 
57
  <p style="margin:10px;">
58
+ <?php _wsl_e('<b>Tip:</b>', 'wordpress-social-login') ?>.
59
+ <br />
60
+ <?php _wsl_e('You can use <a href="http://wordpress.org/extend/plugins/html-javascript-adder/" target="_blank">HTML Javascript Adder</a> plugin in combination with WSL to display the Widget in your website sidebar by using the shortcode <b>[wordpress_social_login]</b>', 'wordpress-social-login') ?>.
 
 
61
  </p>
62
 
63
  <h4 style="cursor: default;border-bottom:1px solid #ccc;"><?php _wsl_e("Widget preview", 'wordpress-social-login') ?></h4>
64
 
65
  <p style="margin:10px;">
66
+ <?php _wsl_e("This is a preview of what should be on the comments area", 'wordpress-social-login') ?>.
67
+ <br />
68
+
69
+ <strong><?php _wsl_e("Please, do not try to connect with the Widget here, it won't work", 'wordpress-social-login') ?></strong>!
70
  </p>
71
 
72
+ <div style="width: 380px; padding: 10px; border: 1px solid #ddd; background-color: #fff;">
73
+ <?php echo wsl_render_login_form(); ?>
74
  </div>
75
  </div>
76
  </div>
includes/admin/components/networks/index.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
includes/admin/components/networks/wsl.components.networks.addmore.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  // Exit if accessed directly
@@ -26,15 +26,14 @@ function wsl_component_networks_addmore()
26
  <table width="100%" border="0">
27
  <tr>
28
  <td align="left">
29
- <p><?php _wsl_e("And you could add even more of them, <b>Just Click</b> and we will guide you through", 'wordpress-social-login') ?> :</p>
30
  <?php
31
  $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/32x32/icondock/';
32
 
33
  $nb_used = count( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG );
34
  foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
35
- $provider_id = @ $item["provider_id"];
36
- $provider_name = @ $item["provider_name"];
37
- $provider_cat = @ $item["cat"];
38
 
39
  if( isset( $item["default_network"] ) && $item["default_network"] ){
40
  continue;
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  // Exit if accessed directly
26
  <table width="100%" border="0">
27
  <tr>
28
  <td align="left">
29
+ <p><?php _wsl_e("And you could add even more of them, <b>Just Click</b> on the icons and we will guide you through", 'wordpress-social-login') ?> :</p>
30
  <?php
31
  $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/32x32/icondock/';
32
 
33
  $nb_used = count( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG );
34
  foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
35
+ $provider_id = isset( $item["provider_id"] ) ? $item["provider_id"] : '';
36
+ $provider_name = isset( $item["provider_name"] ) ? $item["provider_name"] : '';
 
37
 
38
  if( isset( $item["default_network"] ) && $item["default_network"] ){
39
  continue;
includes/admin/components/networks/wsl.components.networks.basicinsights.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  // Exit if accessed directly
@@ -16,131 +16,90 @@ function wsl_component_networks_basicinsights()
16
  // HOOKABLE:
17
  do_action( "wsl_component_networks_basicinsights_start" );
18
 
19
- GLOBAL $wpdb;
20
 
21
- $sql = "SELECT count( * ) as items FROM `{$wpdb->prefix}users`";
22
- $rs1 = $wpdb->get_results( $sql );
23
 
24
- $sql = "SELECT count( * ) as items FROM `{$wpdb->prefix}usermeta` where meta_key = 'wsl_user'";
25
- $rs2 = $wpdb->get_results( $sql );
26
-
27
- $total_users = (int) $rs1[0]->items;
28
- $total_users_wsl = (int) $rs2[0]->items;
29
- $users_conversion = ( 100 * $total_users_wsl ) / $total_users;
30
-
31
- if( $total_users_wsl && wsl_is_component_enabled( "basicinsights" ) ){
32
  ?>
33
  <div class="postbox " id="linksubmitdiv">
34
  <div class="inside">
35
  <div id="submitlink" class="submitbox">
36
  <h3 style="cursor: default;"><?php _wsl_e("Insights", 'wordpress-social-login') ?></h3>
37
 
38
- <div id="misc-publishing-actions">
39
- <div style="padding:20px;padding-top:0px;">
40
- <h4 style="border-bottom:1px solid #ccc"><?php _wsl_e("Conversions", 'wordpress-social-login') ?></h4>
41
- <table width="90%">
42
- <tr>
43
- <td width="60%"><?php _wsl_e("WP users", 'wordpress-social-login') ?></td><td><?php echo $total_users; ?></td>
44
- </tr>
45
- <tr>
46
- <td><?php _wsl_e("WSL users", 'wordpress-social-login') ?></td><td><?php echo $total_users_wsl; ?></td>
47
- </tr>
48
- <tr>
49
- <td><?php _wsl_e("Conversions", 'wordpress-social-login') ?></td><td style="border-top:1px solid #ccc">+<b><?php echo number_format($users_conversion, 2, '.', ''); ?></b> %</td>
50
- </tr>
51
- </table>
52
- <?php
53
- $sql = "SELECT meta_value, count( * ) as items FROM `{$wpdb->prefix}usermeta` where meta_key = 'wsl_user' group by meta_value order by items desc ";
54
-
55
- $rs1 = $wpdb->get_results( $sql );
56
-
57
- $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
58
- ?>
59
- <h4 style="border-bottom:1px solid #ccc"><?php _wsl_e("By provider", 'wordpress-social-login') ?></h4>
60
- <table width="90%">
61
- <?php
62
- foreach( $rs1 as $item ){
63
- if( ! $item->meta_value ) $item->meta_value = "Unknown";
64
- ?>
65
- <tr>
66
- <td width="60%">
67
- <img src="<?php echo $assets_base_url . strtolower( $item->meta_value ) . '.png' ?>" style="vertical-align:top;width:16px;height:16px;" /> <?php echo $item->meta_value; ?>
68
- </td>
69
- <td>
70
- <?php echo $item->items; ?>
71
- </td>
72
- </tr>
73
- <?php
74
- }
75
- ?>
76
- <tr>
77
- <td align="right">&nbsp;</td><td style="border-top:1px solid #ccc"><b><?php echo $total_users_wsl; ?></b> <?php _wsl_e("WSL users", 'wordpress-social-login') ?></td>
78
- </tr>
79
- </table>
80
  <?php
81
- $sql = "SELECT meta_value, count( * ) as items FROM `{$wpdb->prefix}usermeta` where meta_key = 'wsl_user_gender' group by meta_value order by items desc ";
82
 
83
- $rs = $wpdb->get_results( $sql );
84
- ?>
85
- <h4 style="border-bottom:1px solid #ccc"><?php _wsl_e("By gender", 'wordpress-social-login') ?></h4>
86
- <table width="90%">
87
- <?php
88
- foreach( $rs as $item ){
89
- if( ! $item->meta_value ) $item->meta_value = "Unknown";
90
- ?>
91
- <tr>
92
- <td width="60%">
93
- <?php echo ucfirst( $item->meta_value ); ?>
94
- </td>
95
- <td>
96
- <?php echo $item->items; ?>
97
- </td>
98
- </tr>
99
- <?php
100
- }
101
  ?>
102
- </table>
103
- <?php
104
- $sql = "SELECT meta_value, count( * ) as items FROM `{$wpdb->prefix}usermeta` where meta_key = 'wsl_user_age' group by meta_value order by items desc limit 21";
105
-
106
- $rs = $wpdb->get_results( $sql );
107
- ?>
108
- <h4 style="border-bottom:1px solid #ccc"><?php _wsl_e("By age", 'wordpress-social-login') ?></h4>
109
- <table width="90%">
110
  <?php
111
- $t_ages = 0;
112
- $n_ages = 0;
113
-
114
- foreach( $rs as $item ){
115
- if( ! $item->meta_value ){
116
- $item->meta_value = "Unknown";
117
- }
118
- else{
119
- $t_ages += (int) $item->meta_value;
120
- $n_ages++;
121
- }
122
- ?>
123
- <tr>
124
- <td width="60%">
125
- <?php echo $item->meta_value; ?>
126
- </td>
127
- <td>
128
- <?php echo $item->items; ?>
129
- </td>
130
- </tr>
131
- <?php
132
- }
133
-
134
- if( $n_ages ) $a_ages = $t_ages/$n_ages;
135
- ?>
136
- </td>
137
  </tr>
138
  <tr>
139
- <td align="right">&nbsp;</td><td style="border-top:1px solid #ccc"><b><?php echo number_format($a_ages, 1, '.', ''); ?></b> <?php _wsl_e("yrs in average", 'wordpress-social-login') ?></td>
140
  </tr>
141
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  </div>
143
- </div>
144
  </div>
145
  </div>
146
  </div>
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  // Exit if accessed directly
16
  // HOOKABLE:
17
  do_action( "wsl_component_networks_basicinsights_start" );
18
 
19
+ $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
20
 
21
+ $total_users = wsl_get_wordpess_users_count();
22
+ $total_users_wsl = wsl_get_wsl_users_count();
23
 
24
+ if( $total_users && $total_users_wsl ){
25
+ $users_conversion = ( 100 * $total_users_wsl ) / $total_users;
 
 
 
 
 
 
26
  ?>
27
  <div class="postbox " id="linksubmitdiv">
28
  <div class="inside">
29
  <div id="submitlink" class="submitbox">
30
  <h3 style="cursor: default;"><?php _wsl_e("Insights", 'wordpress-social-login') ?></h3>
31
 
32
+ <div id="misc-publishing-actions">
33
+ <div style="padding:20px;padding-top:0px;">
34
+ <!-- Insights - conversions -->
35
+ <h4 style="border-bottom:1px solid #ccc"><?php _wsl_e("Conversions", 'wordpress-social-login') ?></h4>
36
+ <table width="90%">
37
+ <tr>
38
+ <td width="60%"><?php _wsl_e("WP users", 'wordpress-social-login') ?></td><td><?php echo $total_users; ?></td>
39
+ </tr>
40
+ <tr>
41
+ <td><?php _wsl_e("WSL users", 'wordpress-social-login') ?></td><td><?php echo $total_users_wsl; ?></td>
42
+ </tr>
43
+ <tr>
44
+ <td><?php _wsl_e("Conversions", 'wordpress-social-login') ?></td><td style="border-top:1px solid #ccc">+<b><?php echo number_format($users_conversion, 2, '.', ''); ?></b> %</td>
45
+ </tr>
46
+ </table>
47
+
48
+ <!-- Insights by provider -->
49
+ <?php
50
+ $data = wsl_get_stored_hybridauth_user_profiles_count_by_field( 'provider' );
51
+ ?>
52
+ <h4 style="border-bottom:1px solid #ccc"><?php _wsl_e("By provider", 'wordpress-social-login') ?></h4>
53
+ <table width="90%">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  <?php
55
+ $total_profiles_wsl = 0;
56
 
57
+ foreach( $data as $item ){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  ?>
59
+ <tr>
60
+ <td width="60%">
61
+ <img src="<?php echo $assets_base_url . strtolower( $item->provider ) . '.png' ?>" style="vertical-align:top;width:16px;height:16px;" /> <?php echo $item->provider; ?>
62
+ </td>
63
+ <td>
64
+ <?php echo $item->items; ?>
65
+ </td>
66
+ </tr>
67
  <?php
68
+ $total_profiles_wsl += (int) $item->items;
69
+ }
70
+ ?>
71
+ <tr>
72
+ <td align="right">&nbsp;</td><td style="border-top:1px solid #ccc"><b><?php echo $total_profiles_wsl; ?></b> <?php _wsl_e("WSL profiles", 'wordpress-social-login') ?></td>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  </tr>
74
  <tr>
75
+ <td align="right">&nbsp;</td><td><b><?php echo $total_users_wsl; ?></b> <?php _wsl_e("WSL users", 'wordpress-social-login') ?></td>
76
  </tr>
77
+ </table>
78
+
79
+ <!-- Insights by gender -->
80
+ <?php
81
+ $data = wsl_get_stored_hybridauth_user_profiles_count_by_field( 'age' );
82
+ ?>
83
+ <h4 style="border-bottom:1px solid #ccc"><?php _wsl_e("By gender", 'wordpress-social-login') ?></h4>
84
+ <table width="90%">
85
+ <?php
86
+ foreach( $data as $item ){
87
+ if( ! $item->age ) $item->age = "Unknown";
88
+ ?>
89
+ <tr>
90
+ <td width="60%">
91
+ <?php echo ucfirst( $item->age ); ?>
92
+ </td>
93
+ <td>
94
+ <?php echo $item->items; ?>
95
+ </td>
96
+ </tr>
97
+ <?php
98
+ }
99
+ ?>
100
+ </table>
101
  </div>
102
+ </div>
103
  </div>
104
  </div>
105
  </div>
includes/admin/components/networks/wsl.components.networks.setup.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -20,16 +20,38 @@ function wsl_component_networks_setup()
20
  // HOOKABLE:
21
  do_action( "wsl_component_networks_setup_start" );
22
 
23
- GLOBAL $wpdb;
24
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
 
 
 
 
 
 
 
 
 
 
 
 
25
 
 
 
 
 
 
 
 
 
 
 
 
26
  if( isset( $_REQUEST["enable"] ) && $_REQUEST["enable"] ){
27
  $provider_id = $_REQUEST["enable"];
28
 
29
  update_option( 'wsl_settings_' . $provider_id . '_enabled', 1 );
30
  }
31
  ?>
32
- <script>
33
  function toggleproviderkeys(idp){
34
  if(typeof jQuery=="undefined"){
35
  alert( "Error: WordPress Social Login require jQuery to be installed on your wordpress in order to work!" );
@@ -55,25 +77,21 @@ function wsl_component_networks_setup()
55
  return false;
56
  }
57
 
58
- jQuery('.wsl_div_settings_help_' + idp).show();
59
-
60
  return false;
61
  }
62
  </script>
63
- <?php
64
- $nbprovider = 0;
65
-
66
- $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
67
-
68
  foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ):
69
- $provider_id = @ $item["provider_id"];
70
- $provider_name = @ $item["provider_name"];
71
 
72
- $require_client_id = @ $item["require_client_id"];
73
- $provide_email = @ $item["provide_email"];
74
-
75
- $provider_new_app_link = @ $item["new_app_link"];
76
- $provider_userguide_section = @ $item["userguide_section"];
77
 
78
  $provider_callback_url = "" ;
79
 
@@ -84,11 +102,6 @@ function wsl_component_networks_setup()
84
  // default endpoint_url
85
  $endpoint_url = WORDPRESS_SOCIAL_LOGIN_HYBRIDAUTH_ENDPOINT_URL;
86
 
87
- // overwrite endpoint_url if need'd
88
- if( get_option( 'wsl_settings_base_url' ) ){
89
- $endpoint_url = strtolower( get_option( 'wsl_settings_base_url' ) . '/hybridauth/' );
90
- }
91
-
92
  if( isset( $item["callback"] ) && $item["callback"] ){
93
  $provider_callback_url = '<span style="color:green">' . $endpoint_url . '?hauth.done=' . $provider_id . '</span>';
94
  }
@@ -98,7 +111,7 @@ function wsl_component_networks_setup()
98
  <a name="setup<?php echo strtolower( $provider_id ) ?>"></a>
99
  <div class="stuffbox" id="namediv">
100
  <h3>
101
- <label for="name" class="wp-neworks-label">
102
  <img alt="<?php echo $provider_name ?>" title="<?php echo $provider_name ?>" src="<?php echo $assets_base_url . strtolower( $provider_id ) . '.png' ?>" style="vertical-align: top;width:16px;height:16px;" /> <?php echo $provider_name ?>
103
  </label>
104
  </h3>
@@ -106,18 +119,18 @@ function wsl_component_networks_setup()
106
  <table class="form-table editcomment">
107
  <tbody>
108
  <tr>
109
- <td style="width:110px"><?php _wsl_e("Enabled", 'wordpress-social-login') ?>:</td>
110
  <td>
111
  <select
112
  name="<?php echo 'wsl_settings_' . $provider_id . '_enabled' ?>"
113
  id="<?php echo 'wsl_settings_' . $provider_id . '_enabled' ?>"
114
  onChange="toggleproviderkeys('<?php echo $provider_id; ?>')"
115
  >
116
- <option value="1" <?php if( get_option( 'wsl_settings_' . $provider_id . '_enabled' ) ) echo "selected"; ?> >Yes</option>
117
- <option value="0" <?php if( ! get_option( 'wsl_settings_' . $provider_id . '_enabled' ) ) echo "selected"; ?> >No</option>
118
  </select>
119
  </td>
120
- <td style="width:140px">&nbsp;</td>
121
  </tr>
122
 
123
  <?php if ( $provider_new_app_link ){ ?>
@@ -142,16 +155,37 @@ function wsl_component_networks_setup()
142
  <?php } // if require registration ?>
143
  </tbody>
144
  </table>
145
- <?php if ( in_array( $provider_id, array( "Twitter", "Identica", "Tumblr", "Goodreads", "500px", "Vkontakte", "Gowalla", "Steam" ) ) ) : ?>
146
- <br />
147
- <hr />
148
- <p style="margin-left:12px;margin-bottom:0px;">
149
- <b style="color:#CB4B16;"><?php _wsl_e("Note", 'wordpress-social-login') ?>:</b>
150
-
151
- <?php echo sprintf( _wsl__("<b>%s</b> do not provide their user's email address and by default a random email will then be generated for them instead", 'wordpress-social-login'), $provider_name ) ?>.
152
-
153
- <?php _wsl_e('To change this behaviour and to force new registered users to provide their emails before they get in, goto <b><a href="options-general.php?page=wordpress-social-login&wslp=bouncer">Bouncer</a></b> and enable <b>Profile Completion</b>', 'wordpress-social-login') ?>.
154
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  <?php endif; ?>
156
  <br />
157
  <div
@@ -169,99 +203,99 @@ function wsl_component_networks_setup()
169
  <br />
170
  <br />
171
 
172
- <?php echo sprintf( _wsl__('To enable authentication with this provider and to register a new <b>%s API Application</b>, carefully follow the steps', 'wordpress-social-login'), $provider_name ) ?>
173
  :<br />
174
  <?php else: ?>
175
  <p><?php echo sprintf( _wsl__('<b>Done.</b> Nothing more required for <b>%s</b>', 'wordpress-social-login'), $provider_name) ?>.</p>
176
  <?php endif; ?>
177
- <div class="wsl_div_settings_help_<?php echo $provider_id; ?>" style="margin-left:40px;">
178
  <?php if ( $provider_new_app_link ) : ?>
179
- <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> Go to <a href="<?php echo $provider_new_app_link ?>" target ="_blanck"><?php echo $provider_new_app_link ?></a> and <b>create a new application</b>.</p>
180
-
181
- <?php if ( $provider_id == "Google" ) : ?>
182
- <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> On the <b>Dashboard sidebar</b> click on <b>API Access</b> then Click <em style="color:#CB4B16;">"Create an OAuth 2.0 client ID..."</em>.</p>
183
- <?php endif; ?>
184
-
185
- <?php if ( $provider_id == "Google" ) : ?>
186
- </p>
187
- <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> On the <b>"Create Client ID"</b> popup :
188
- <br />&nbsp;&nbsp; - Enter a product name (the name of your website will do).
189
- <br />&nbsp;&nbsp; - Enter the URL for a logo if you like.
190
- <br />&nbsp;&nbsp; - Click Next.
191
- <br />&nbsp;&nbsp; - Select <em style="color:#CB4B16;">"Web application"</em> as the application type.
192
- <br />&nbsp;&nbsp; - Then switch to advanced settings by clicking on <b>(more options)</b>
193
- .</p>
194
- <?php else: ?>
195
- <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> Fill out any required fields such as the application name and description.</p>
196
- <?php endif; ?>
197
-
198
- <?php if ( $provider_callback_url ) : ?>
199
- <p>
200
- <?php echo "<b>" . ++$setupsteps . "</b>." ?> Provide this URL as the <b>Callback URL</b> for your application:
201
- <br />
202
- <?php echo $provider_callback_url ?>
203
- </p>
204
- <?php endif; ?>
205
-
206
- <?php if ( $provider_id == "MySpace" ) : ?>
207
- <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> Put your website domain in the <b>External Url</b> and <b>External Callback Validation</b> fields. This should match with the current hostname <em style="color:#CB4B16;"><?php echo $_SERVER["SERVER_NAME"] ?></em>.</p>
208
- <?php endif; ?>
209
-
210
- <?php if ( $provider_id == "Live" ) : ?>
211
- <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> Put your website domain in the <b>Redirect Domain</b> field. This should match with the current hostname <em style="color:#CB4B16;"><?php echo $_SERVER["SERVER_NAME"] ?></em>.</p>
212
- <?php endif; ?>
213
-
214
- <?php if ( $provider_id == "Facebook" ) : ?>
215
- <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> Put your website domain in the <b>Site Url</b> field. This should match with the current hostname <em style="color:#CB4B16;"><?php echo $_SERVER["SERVER_NAME"] ?></em>.</p>
216
- <?php endif; ?>
217
-
218
- <?php if ( $provider_id == "LinkedIn" ) : ?>
219
- <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> Put your website domain in the <b>Integration URL</b> field. This should match with the current hostname <em style="color:#CB4B16;"><?php echo $_SERVER["SERVER_NAME"] ?></em>.</p>
220
- <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> Set the <b>Application Type</b> to <em style="color:#CB4B16;">Web Application</em>.</p>
221
- <?php endif; ?>
222
-
223
- <?php if ( $provider_id == "Twitter" ) : ?>
224
- <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> Put your website domain in the <b>Application Website</b> and <b>Application Callback URL</b> fields. This should match with the current hostname <em style="color:#CB4B16;"><?php echo $_SERVER["SERVER_NAME"] ?></em>.</p>
225
- <?php endif; ?>
226
-
227
- <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> Once you have registered, copy and past the created application credentials into this setup page.</p>
 
 
228
  <?php endif; ?>
229
 
230
  <?php if ( $provider_id == "Facebook" ) : ?>
231
- <hr />
232
  <table style="text-align: center;margin-bottom:12px;">
233
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/facebook/1.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/facebook/1.png"></a></td>
234
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/facebook/2.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/facebook/2.png"></a></td>
235
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/facebook/3.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/facebook/3.png"></a></td>
236
  </table>
237
- <hr />
238
  <?php endif; ?>
 
239
  <?php if ( $provider_id == "Google" ) : ?>
240
- <hr />
241
  <table style="text-align: center;margin-bottom:12px;">
242
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/google/1.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/google/1.png"></a></td>
243
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/google/2.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/google/2.png"></a></td>
244
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/google/3.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/google/3.png"></a></td>
245
  </table>
246
- <hr />
247
  <?php endif; ?>
 
248
  <?php if ( $provider_id == "Twitter" ) : ?>
249
- <hr />
250
  <table style="text-align: center;margin-bottom:12px;">
251
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/twitter/1.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/twitter/1.png"></a></td>
252
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/twitter/2.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/twitter/2.png"></a></td>
253
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/twitter/3.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/twitter/3.png"></a></td>
254
  </table>
255
- <hr />
256
- <?php endif; ?>
257
- <?php if ( $provider_new_app_link ) : ?>
258
- <p>
259
- <b><?php _wsl_e("And that's it!", 'wordpress-social-login') ?></b>
260
- <br />
261
- <?php echo sprintf( _wsl__( 'If for some reason you still can\'t figure it out, first try to a) <a class="button-primary" href="https://www.google.com/search?q=%s API create application" target="_blank">Google it</a>, then check it on b) <a class="button-primary" href="http://www.youtube.com/results?search_query=%s API create application " target="_blank">Youtube</a> and if nothing works c) <a class="button-primary" href="options-general.php?page=wordpress-social-login&wslp=help">ask for support</a>', 'wordpress-social-login'), $provider_name, $provider_name ) ?>.
262
- </p>
263
  <?php endif; ?>
264
  </div>
 
 
 
 
 
 
 
 
 
265
  </div>
266
  </div>
267
  </div>
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
20
  // HOOKABLE:
21
  do_action( "wsl_component_networks_setup_start" );
22
 
 
23
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
24
+
25
+ $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
26
+
27
+ // if no idp is enabled then we enable the default providers (facebook, google, twitter)
28
+ $nok = true;
29
+ foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
30
+ $provider_id = $item["provider_id"];
31
+
32
+ if( get_option( 'wsl_settings_' . $provider_id . '_enabled' ) ){
33
+ $nok = false;
34
+ }
35
+ }
36
 
37
+ if( $nok ){
38
+ foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
39
+ $provider_id = $item["provider_id"];
40
+
41
+ if( isset( $item["default_network"] ) && $item["default_network"] ){
42
+ update_option( 'wsl_settings_' . $provider_id . '_enabled', 1 );
43
+ }
44
+ }
45
+ }
46
+
47
+ // save settings?
48
  if( isset( $_REQUEST["enable"] ) && $_REQUEST["enable"] ){
49
  $provider_id = $_REQUEST["enable"];
50
 
51
  update_option( 'wsl_settings_' . $provider_id . '_enabled', 1 );
52
  }
53
  ?>
54
+ <script>
55
  function toggleproviderkeys(idp){
56
  if(typeof jQuery=="undefined"){
57
  alert( "Error: WordPress Social Login require jQuery to be installed on your wordpress in order to work!" );
77
  return false;
78
  }
79
 
80
+ jQuery('.wsl_div_settings_help_' + idp).toggle();
81
+
82
  return false;
83
  }
84
  </script>
85
+ <?php
 
 
 
 
86
  foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ):
87
+ $provider_id = isset( $item["provider_id"] ) ? $item["provider_id"] : '';
88
+ $provider_name = isset( $item["provider_name"] ) ? $item["provider_name"] : '';
89
 
90
+ $require_client_id = isset( $item["require_client_id"] ) ? $item["require_client_id"] : '';
91
+ $provide_email = isset( $item["provide_email"] ) ? $item["provide_email"] : '';
92
+
93
+ $provider_new_app_link = isset( $item["new_app_link"] ) ? $item["new_app_link"] : '';
94
+ $provider_userguide_section = isset( $item["userguide_section"] ) ? $item["userguide_section"] : '';
95
 
96
  $provider_callback_url = "" ;
97
 
102
  // default endpoint_url
103
  $endpoint_url = WORDPRESS_SOCIAL_LOGIN_HYBRIDAUTH_ENDPOINT_URL;
104
 
 
 
 
 
 
105
  if( isset( $item["callback"] ) && $item["callback"] ){
106
  $provider_callback_url = '<span style="color:green">' . $endpoint_url . '?hauth.done=' . $provider_id . '</span>';
107
  }
111
  <a name="setup<?php echo strtolower( $provider_id ) ?>"></a>
112
  <div class="stuffbox" id="namediv">
113
  <h3>
114
+ <label class="wp-neworks-label">
115
  <img alt="<?php echo $provider_name ?>" title="<?php echo $provider_name ?>" src="<?php echo $assets_base_url . strtolower( $provider_id ) . '.png' ?>" style="vertical-align: top;width:16px;height:16px;" /> <?php echo $provider_name ?>
116
  </label>
117
  </h3>
119
  <table class="form-table editcomment">
120
  <tbody>
121
  <tr>
122
+ <td style="width:125px"><?php _wsl_e("Enabled", 'wordpress-social-login') ?>:</td>
123
  <td>
124
  <select
125
  name="<?php echo 'wsl_settings_' . $provider_id . '_enabled' ?>"
126
  id="<?php echo 'wsl_settings_' . $provider_id . '_enabled' ?>"
127
  onChange="toggleproviderkeys('<?php echo $provider_id; ?>')"
128
  >
129
+ <option value="1" <?php if( get_option( 'wsl_settings_' . $provider_id . '_enabled' ) ) echo "selected"; ?> ><?php _wsl_e("Yes", 'wordpress-social-login') ?></option>
130
+ <option value="0" <?php if( ! get_option( 'wsl_settings_' . $provider_id . '_enabled' ) ) echo "selected"; ?> ><?php _wsl_e("No", 'wordpress-social-login') ?></option>
131
  </select>
132
  </td>
133
+ <td style="width:160px">&nbsp;</td>
134
  </tr>
135
 
136
  <?php if ( $provider_new_app_link ){ ?>
155
  <?php } // if require registration ?>
156
  </tbody>
157
  </table>
158
+
159
+ <?php if ( get_option( 'wsl_settings_' . $provider_id . '_enabled' ) ) : ?>
160
+ <?php if ( $provider_new_app_link && strlen( trim( get_option( 'wsl_settings_' . $provider_id . '_app_secret' ) ) ) == 0 ) : ?>
161
+ <div class="fade error">
162
+ <p>
163
+ <?php echo sprintf( _wsl__('<b>%s</b> requires that you create an external application linking your website to their API. To know how to create this application, click on &ldquo;Where do I get this info?&rdquo; and follow the steps', 'wordpress-social-login'), $provider_name, $provider_name ) ?>.
164
+ </p>
165
+ </div>
166
+ <?php elseif ( in_array( $provider_id, array( "Twitter", "Identica", "Tumblr", "Goodreads", "500px", "Vkontakte", "Gowalla", "Steam" ) ) ) : ?>
167
+ <div class="fade updated">
168
+ <p>
169
+ <b><?php _wsl_e("Note", 'wordpress-social-login') ?>:</b>
170
+
171
+ <?php echo sprintf( _wsl__("<b>%s</b> do not provide their user's email address and by default a random email will then be generated for them instead", 'wordpress-social-login'), $provider_name ) ?>.
172
+
173
+ <?php _wsl_e('To change this behaviour and to force new registered users to provide their emails before they get in, goto <b><a href="options-general.php?page=wordpress-social-login&wslp=bouncer">Bouncer</a></b> and enable <b>Profile Completion</b>', 'wordpress-social-login') ?>.
174
+ </p>
175
+ </div>
176
+ <?php endif; ?>
177
+ <?php endif; ?>
178
+
179
+ <?php if ( 0 && in_array( $provider_id, array( "Facebook", "Google" ) ) ) : ?>
180
+ <br />
181
+ <hr />
182
+ <p style="margin-left:12px;margin-bottom:0px;">
183
+ <b><?php _wsl_e("Note", 'wordpress-social-login') ?>:</b>
184
+
185
+ <?php echo sprintf( _wsl__("<b>WSL</b> will ask <b>%s</b> users for a set number of permissions, however you can change these said permissions using a filter", 'wordpress-social-login'), $provider_name ) ?>.
186
+
187
+ <?php _wsl_e('For more information, please refer to <b><a href="options-general.php?page=wordpress-social-login&wslp=help&wslhelp=filters">this page</a></b>', 'wordpress-social-login') ?>.
188
+ </p>
189
  <?php endif; ?>
190
  <br />
191
  <div
203
  <br />
204
  <br />
205
 
206
+ <?php echo sprintf( _wsl__('To enable authentication with this provider and to register a new <b>%s API Application</b>, follow the steps', 'wordpress-social-login'), $provider_name ) ?>
207
  :<br />
208
  <?php else: ?>
209
  <p><?php echo sprintf( _wsl__('<b>Done.</b> Nothing more required for <b>%s</b>', 'wordpress-social-login'), $provider_name) ?>.</p>
210
  <?php endif; ?>
211
+ <div style="margin-left:40px;">
212
  <?php if ( $provider_new_app_link ) : ?>
213
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php echo sprintf( _wsl__( 'First go to: <a href="%s" target ="_blank">%s</a>', 'wordpress-social-login'), $provider_new_app_link, $provider_new_app_link ) ?></p>
214
+
215
+ <?php if ( $provider_id == "Google" ) : ?>
216
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e('On the <b>Dashboard sidebar</b> click on <b>Project</b> then click <em style="color:#0147bb;">&ldquo;Create Project&rdquo;</em>', 'wordpress-social-login') ?>.</p>
217
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Once the project is created. Select that project, then <b>APIs & auth</b> &gt; <b>Consent screen</b> and fill the required information", 'wordpress-social-login') ?>.</p>
218
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e('Then <b>APIs & auth</b> &gt; <b>APIs</b> and enable <em style="color:#0147bb;">&ldquo;Google+ API&rdquo;</em>. If you want to import the user contatcs enable <em style="color:#0147bb;">&ldquo;Contacts API&rdquo;</em> as well', 'wordpress-social-login') ?>.</p>
219
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("After that you will need to create an new application: <b>APIs & auth</b> &gt; <b>Credentials</b> and then click <em style=\"color:#0147bb;\">&ldquo;Create new Client ID&rdquo;</em>", 'wordpress-social-login') ?>.</p>
220
+ </p>
221
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("On the <b>&ldquo;Create Client ID&rdquo;</b> popup", 'wordpress-social-login') ?> :</p>
222
+ <ul style="margin-left:35px">
223
+ <li><?php _wsl_e('Select <em style="color:#0147bb;">&ldquo;Web application&rdquo;</em> as your application type', 'wordpress-social-login') ?>.</li>
224
+ <li><?php _wsl_e("Put your website domain in the <b>Authorized JavaScript origins</b> field. This should match with the current hostname", 'wordpress-social-login') ?> <em style="color:#CB4B16;"><?php echo $_SERVER["SERVER_NAME"]; ?></em>.</li>
225
+ <li><?php _wsl_e("Provide this URL as the <b>Authorized redirect URI</b> for your application", 'wordpress-social-login') ?>: <br /><?php echo $provider_callback_url ?></li>
226
+ </ul>
227
+ <?php elseif ( $provider_id == "Facebook" ) : ?>
228
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Select <b>Add a New App</b> from the <b>Apps</b> menu at the top", 'wordpress-social-login') ?>.</p>
229
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Fill out Display Name, Namespace, choose a category and click <b>Create App</b>", 'wordpress-social-login') ?>.</p>
230
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Go to Settings page and click on <b>Add Platform</b>. Choose website and enter in the new screen your website url in <b>App Domains</b> and <b>Site URL</b> fields", 'wordpress-social-login') ?>.
231
+ <?php _wsl_e("They should match with the current hostname", 'wordpress-social-login') ?> <em style="color:#CB4B16;"><?php echo $_SERVER["SERVER_NAME"]; ?></em>.</p>
232
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Go to the <b>Status & Review</b> page and choose <b>yes</b> where it says <b>Do you want to make this app and all its live features available to the general public?</b>", 'wordpress-social-login') ?>.</p>
233
+ <?php else: ?>
234
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Create a new application", 'wordpress-social-login') ?>.</p>
235
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Fill out any required fields such as the application name and description", 'wordpress-social-login') ?>.</p>
236
+ <?php endif; ?>
237
+
238
+ <?php if ( $provider_callback_url && $provider_id != "Google" && $provider_id != "Facebook" ) : ?>
239
+ <p>
240
+ <?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Provide this URL as the <b>Callback URL</b> for your application", 'wordpress-social-login') ?>:
241
+ <br />
242
+ <?php echo $provider_callback_url ?>
243
+ </p>
244
+ <?php endif; ?>
245
+
246
+ <?php if ( $provider_id == "Live" ) : ?>
247
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Put your website domain in the <b>Redirect Domain</b> field. This should match with the current hostname", 'wordpress-social-login') ?> <em style="color:#CB4B16;"><?php echo $_SERVER["SERVER_NAME"]; ?></em>.</p>
248
+ <?php endif; ?>
249
+
250
+ <?php if ( $provider_id == "LinkedIn" ) : ?>
251
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e('Choose <b>Live</b> on <b>Live Status</b>.', 'wordpress-social-login') ?></p>
252
+ <?php endif; ?>
253
+
254
+ <?php if ( $provider_id == "Google" ) : ?>
255
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Once you have registered past the created application credentials (Client ID and Secret) into the boxes above", 'wordpress-social-login') ?>.</p>
256
+ <?php elseif ( $provider_id == "Twitter" ) : ?>
257
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Once you have registered, past the created application credentials (Customer Key and Secret) into the boxes above", 'wordpress-social-login') ?>.</p>
258
+ <?php elseif ( $provider_id == "Facebook" ) : ?>
259
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Go back to the <b>Dashboard</b> page and past the created application credentials (APP ID and Secret) into the boxes above", 'wordpress-social-login') ?>.</p>
260
+ <?php else: ?>
261
+ <p><?php echo "<b>" . ++$setupsteps . "</b>." ?> <?php _wsl_e("Once you have registered, past the created application credentials into the boxes above", 'wordpress-social-login') ?>.</p>
262
+ <?php endif; ?>
263
+
264
  <?php endif; ?>
265
 
266
  <?php if ( $provider_id == "Facebook" ) : ?>
 
267
  <table style="text-align: center;margin-bottom:12px;">
268
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/facebook/1.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/facebook/1.png"></a></td>
269
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/facebook/2.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/facebook/2.png"></a></td>
270
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/facebook/3.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/facebook/3.png"></a></td>
271
  </table>
 
272
  <?php endif; ?>
273
+
274
  <?php if ( $provider_id == "Google" ) : ?>
 
275
  <table style="text-align: center;margin-bottom:12px;">
276
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/google/1.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/google/1.png"></a></td>
277
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/google/2.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/google/2.png"></a></td>
278
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/google/3.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/google/3.png"></a></td>
279
  </table>
 
280
  <?php endif; ?>
281
+
282
  <?php if ( $provider_id == "Twitter" ) : ?>
 
283
  <table style="text-align: center;margin-bottom:12px;">
284
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/twitter/1.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/twitter/1.png"></a></td>
285
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/twitter/2.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/twitter/2.png"></a></td>
286
  <td><a class="span4 thumbnail" href="http://hybridauth.sf.net/userguide/img/setup/twitter/3.png" target="_blank"><img src="http://hybridauth.sf.net/userguide/img/setup/twitter/3.png"></a></td>
287
  </table>
 
 
 
 
 
 
 
 
288
  <?php endif; ?>
289
  </div>
290
+
291
+ <?php if ( $provider_new_app_link ) : ?>
292
+ <hr />
293
+ <p>
294
+ <b><?php _wsl_e("And that's it!", 'wordpress-social-login') ?></b>
295
+ <br />
296
+ <?php echo sprintf( _wsl__( 'If for some reason you still can\'t manage to create an application for %s, first try to <a href="https://www.google.com/search?q=%s API create application" target="_blank">Google it</a>, then check it on <a href="http://www.youtube.com/results?search_query=%s API create application " target="_blank">Youtube</a>, and if nothing works <a href="options-general.php?page=wordpress-social-login&wslp=help">ask for support</a>', 'wordpress-social-login'), $provider_name, $provider_name, $provider_name ) ?>.
297
+ </p>
298
+ <?php endif; ?>
299
  </div>
300
  </div>
301
  </div>
includes/admin/components/networks/wsl.components.networks.whyhello.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  // Exit if accessed directly
@@ -18,29 +18,28 @@ function wsl_component_networks_whyhello()
18
  ?>
19
  <div class="postbox " id="linksubmitdiv">
20
  <div class="inside">
21
- <div id="submitlink" class="submitbox"> <h3 style="cursor: default;"><?php _wsl_e("Why, hello there", 'wordpress-social-login') ?></h3>
22
  <div id="minor-publishing">
23
 
24
  <div style="display:none;"><input type="submit" value="Save" class="button" id="save" name="save"></div>
25
 
26
  <div id="misc-publishing-actions">
27
  <div class="misc-pub-section">
28
- <p style="line-height: 19px;font-size: 13px;" align="justify">
29
- <?php _wsl_e('If you are still new to things, we recommend that you read the <b><a href="http://hybridauth.sourceforge.net/wsl/index.html" target="_blank">Plugin User Guide</a></b> and to make sure your server settings meet this <b><a href="options-general.php?page=wordpress-social-login&amp;wslp=diagnostics">Plugin Requirements</a></b>', 'wordpress-social-login') ?>.
30
  </p>
31
- <p style="line-height: 19px;" align="justify">
32
- <?php _wsl_e('If you run into any issue then refer to <b><a href="options-general.php?page=wordpress-social-login&wslp=help">Help & Support</a></b> to konw how to reach me', 'wordpress-social-login') ?>.
 
 
 
 
 
 
33
  </p>
34
  </div>
35
  </div>
36
  </div>
37
-
38
- <div id="major-publishing-actions">
39
- <div id="publishing-action">
40
- <input type="submit" value="<?php _wsl_e('Save Settings', 'wordpress-social-login') ?>" class="button-large button-primary" name="save" >
41
- </div>
42
- <div class="clear"></div>
43
- </div>
44
  </div>
45
  </div>
46
  </div>
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  // Exit if accessed directly
18
  ?>
19
  <div class="postbox " id="linksubmitdiv">
20
  <div class="inside">
21
+ <div id="submitlink" class="submitbox"> <h3 style="cursor: default;"><?php _wsl_e("Welcome to WordPress Social Login", 'wordpress-social-login') ?></h3>
22
  <div id="minor-publishing">
23
 
24
  <div style="display:none;"><input type="submit" value="Save" class="button" id="save" name="save"></div>
25
 
26
  <div id="misc-publishing-actions">
27
  <div class="misc-pub-section">
28
+ <p style="line-height: 19px;font-size: 13px;" >
29
+ <?php _wsl_e('<b>WordPress Social Login</b> allows your website visitors and customers to register on using their existing social account ID, eliminating the need to fill out registration forms and remember usernames and passwords', 'wordpress-social-login') ?>.
30
  </p>
31
+ <p style="line-height: 19px;">
32
+ <?php _wsl_e('By default, we have enabled <b>Facebook</b>, <b>Google</b> and <b>Twitter</b>, however you may add even more networks from the section bellow', 'wordpress-social-login') ?>.
33
+ </p>
34
+ <p style="line-height: 19px;">
35
+ <?php _wsl_e('For further information, we recommend to read the online <b><a href="http://hybridauth.sourceforge.net/wsl/index.html" target="_blank">WSL user guide</a></b>', 'wordpress-social-login') ?>.
36
+ </p>
37
+ <p style="line-height: 19px;">
38
+ <?php _wsl_e('If you run into any issue, then refer to <b><a href="options-general.php?page=wordpress-social-login&amp;wslp=help">Help &amp; Support</a></b> to konw how to reach me', 'wordpress-social-login') ?>.
39
  </p>
40
  </div>
41
  </div>
42
  </div>
 
 
 
 
 
 
 
43
  </div>
44
  </div>
45
  </div>
includes/admin/components/users/index.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
includes/admin/components/users/wsl.components.users.list.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  // Exit if accessed directly
@@ -16,119 +16,184 @@ function wsl_component_users_list()
16
  // HOOKABLE:
17
  do_action( "wsl_component_users_list_start" );
18
 
19
- GLOBAL $wpdb;
20
-
21
  $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
22
 
23
- $sql = "SELECT meta_value, user_id FROM `{$wpdb->prefix}usermeta` where meta_key = 'wsl_user'";
24
- $rs1 = $wpdb->get_results( $sql );
25
- ?>
26
- <div style="margin-top:20px;">
27
- <table cellspacing="0" class="wp-list-table widefat fixed users">
28
- <thead>
29
- <tr>
30
- <th width="100"><span><?php _wsl_e("Providers", 'wordpress-social-login') ?></span></th>
31
- <th><span><?php _wsl_e("Username", 'wordpress-social-login') ?></span></th>
32
- <th><span><?php _wsl_e("Full Name", 'wordpress-social-login') ?></span></th>
33
- <th><span><?php _wsl_e("E-mail", 'wordpress-social-login') ?></span></th>
34
- <th><span><?php _wsl_e("Profile URL", 'wordpress-social-login') ?></span></th>
35
- <th width="60"><span><?php _wsl_e("Contacts", 'wordpress-social-login') ?></span></th>
36
- <th width="140"><span><?php _wsl_e("Actions", 'wordpress-social-login') ?></span></th>
37
- </tr>
38
- </thead>
39
- <tfoot>
40
- <tr>
41
- <th width="100"><span><?php _wsl_e("Providers", 'wordpress-social-login') ?></span></th>
42
- <th><span><?php _wsl_e("Username", 'wordpress-social-login') ?></span></th>
43
- <th><span><?php _wsl_e("Full Name", 'wordpress-social-login') ?></span></th>
44
- <th><span><?php _wsl_e("E-mail", 'wordpress-social-login') ?></span></th>
45
- <th><span><?php _wsl_e("Profile URL", 'wordpress-social-login') ?></span></th>
46
- <th><span><?php _wsl_e("Contacts", 'wordpress-social-login') ?></span></th>
47
- <th><span><?php _wsl_e("Actions", 'wordpress-social-login') ?></span></th>
48
- </tr>
49
- </tfoot>
50
- <tbody data-wp-lists="list:user" id="the-list">
51
- <?php
52
- // have users?
53
- if( ! $rs1 ){
54
- ?>
55
- <tr class="no-items"><td colspan="6" class="colspanchange"><?php _wsl_e("No users found", 'wordpress-social-login') ?>.</td></tr>
56
- <?php
57
- }
58
- else{
59
- $i = 0;
60
- foreach( $rs1 as $items ){
61
- $provider = $items->meta_value;
62
- $user_id = $items->user_id;
63
  ?>
64
- <tr class="<?php if( ++$i % 2 ) echo "alternate" ?> tr-contacts">
65
- <td>
66
- <img src="<?php echo $assets_base_url . strtolower( $provider ) . '.png' ?>" style="vertical-align:top;width:16px;height:16px;" /> <?php echo $provider ?>
67
- <?php
68
- # linked accounts
69
- $linked_accounts = wsl_get_user_linked_account_by_user_id( $user_id );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
 
 
 
 
 
 
71
  foreach( $linked_accounts AS $link ){
72
- if( $link->provider != $provider ){
73
- ?>
74
- <br />
75
- <img src="<?php echo $assets_base_url . strtolower( $link->provider ) . '.png' ?>" style="vertical-align:top;width:16px;height:16px;" /> <?php echo $link->provider ?>
76
- <?php
77
  }
78
  }
79
  ?>
80
  </td>
81
- <td>
82
- <?php $wsl_user_image = wsl_get_user_by_meta_key_and_user_id( "wsl_user_image", $user_id); if( $wsl_user_image ) { ?>
83
  <img width="32" height="32" class="avatar avatar-32 photo" src="<?php echo $wsl_user_image ?>" >
84
- <?php } else { ?>
85
- <img width="32" height="32" class="avatar avatar-32 photo" src="http://1.gravatar.com/avatar/d4ed6debc848ece02976aba03e450d60?s=32" >
86
  <?php } ?>
87
- <strong><a href="user-edit.php?user_id=<?php echo $user_id ?>"><?php echo wsl_get_user_by_meta_key_and_user_id( "nickname", $user_id) ?></a></strong>
88
- <br>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  </td>
90
- <td><?php echo wsl_get_user_by_meta_key_and_user_id( "last_name", $user_id) ?> <?php echo wsl_get_user_by_meta_key_and_user_id( "first_name", $user_id) ?></td>
91
  <td>
92
- <?php $user_wsl_email = wsl_get_user_data_by_user_id( "user_wsl_email", $user_id); if( $user_wsl_email ) { ?>
93
- <?php if( ! strstr( $user_wsl_email, "@example.com" ) ) { ?>
94
- <a href="mailto:<?php echo $user_wsl_email ?>"><?php echo $user_wsl_email ?></a>
95
- <?php } else { ?>
96
- -
97
- <?php } ?>
98
  <?php } ?>
99
  </td>
100
  <td>
101
- <?php $user_url = wsl_get_user_data_by_user_id( "user_url", $user_id); if( $user_url ) { ?>
102
- <a href="<?php echo $user_url ?>" target="_blank"><?php echo str_ireplace( array("http://www.", "https://www.", "http://","https://"), array('','','','',''), $user_url ) ?></a>
103
  <?php } else { ?>
104
  -
105
  <?php } ?>
106
  </td>
107
  <td align="center">
108
  <?php
109
- $sql = "SELECT count( * ) as counts FROM `{$wpdb->prefix}wsluserscontacts` where user_id = '$user_id'";
110
- $rs = $wpdb->get_results( $sql );
111
 
112
- if( $rs && $rs[0]->counts ){
113
- echo '<b style="color:#CB4B16;">' . $rs[0]->counts . '</b>';
 
 
114
  }
115
  else{
116
  echo "0";
117
  }
118
  ?>
119
  </td>
120
- <td>
121
- <a class="button button-secondary" href="options-general.php?page=wordpress-social-login&wslp=users&uid=<?php echo $user_id ?>">Profile</a>
122
- <a class="button button-secondary" href="options-general.php?page=wordpress-social-login&wslp=contacts&uid=<?php echo $user_id ?>">Contacts</a>
123
- </td>
124
  </tr>
125
- <?php
126
- }
127
- }// have users?
128
- ?>
129
- </tbody>
130
- </table>
131
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  <?php
133
  // HOOKABLE:
134
  do_action( "wsl_component_users_list_end" );
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  // Exit if accessed directly
16
  // HOOKABLE:
17
  do_action( "wsl_component_users_list_start" );
18
 
 
 
19
  $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
20
 
21
+ // If action eq delete WSL user profiles
22
+ if( isset( $_REQUEST['delete'] ) && isset( $_REQUEST['_wpnonce'] ) && wp_verify_nonce( $_REQUEST['_wpnonce'] ) ) {
23
+ $uid = (int) $_REQUEST['delete'];
24
+
25
+ $user_data = get_userdata( $uid );
26
+
27
+ if( $user_data ){
28
+ wsl_delete_stored_hybridauth_user_data( $uid );
29
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  ?>
31
+ <div class="fade updated" style="margin: 0px 0px 10px;">
32
+ <p>
33
+ <?php echo sprintf( _wsl__( "WSL user ID #%d: <b>%s</b> profiles and contacts has been deleted. Note that the associated WordPress user wasn't deleted", 'wordpress-social-login'), $uid, $user_data->user_login ) ?>.
34
+ </p>
35
+ </div>
36
+ <?php
37
+ }
38
+ }
39
+
40
+ $pagenum = isset( $_GET['pagenum'] ) ? absint( $_GET['pagenum'] ) : 1;
41
+ $limit = 25; // number of rows in page
42
+ $offset = ( $pagenum - 1 ) * $limit;
43
+ $total = wsl_get_stored_hybridauth_user_profiles_count();
44
+ $num_of_pages = ceil( $total / $limit );
45
+ ?>
46
+ <div style="padding: 15px; margin-bottom: 8px; border: 1px solid #ddd; background-color: #fff;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);">
47
+ <p style="float: right; margin: -5px;">
48
+ <a class="button button-secondary" href="users.php"><?php _wsl_e("Show all the existing users on your website", 'wordpress-social-login'); ?></a>
49
+ </p>
50
+
51
+ <?php _wsl_e( "This screen only list the users who have connected through WordPress Social Login", 'wordpress-social-login' ) ?>.
52
+ </div>
53
+
54
+ <table cellspacing="0" class="wp-list-table widefat fixed users">
55
+ <thead>
56
+ <tr>
57
+ <th width="100"><span><?php _wsl_e("Providers", 'wordpress-social-login') ?></span></th>
58
+ <th><span><?php _wsl_e("Username", 'wordpress-social-login') ?></span></th>
59
+ <th><span><?php _wsl_e("Full Name", 'wordpress-social-login') ?></span></th>
60
+ <th><span><?php _wsl_e("E-mail", 'wordpress-social-login') ?></span></th>
61
+ <th><span><?php _wsl_e("Profile URL", 'wordpress-social-login') ?></span></th>
62
+ <th width="80"><span><?php _wsl_e("Contacts", 'wordpress-social-login') ?></span></th>
63
+ </tr>
64
+ </thead>
65
+ <tfoot>
66
+ <tr>
67
+ <th width="100"><span><?php _wsl_e("Providers", 'wordpress-social-login') ?></span></th>
68
+ <th><span><?php _wsl_e("Username", 'wordpress-social-login') ?></span></th>
69
+ <th><span><?php _wsl_e("Full Name", 'wordpress-social-login') ?></span></th>
70
+ <th><span><?php _wsl_e("E-mail", 'wordpress-social-login') ?></span></th>
71
+ <th><span><?php _wsl_e("Profile URL", 'wordpress-social-login') ?></span></th>
72
+ <th width="80"><span><?php _wsl_e("Contacts", 'wordpress-social-login') ?></span></th>
73
+ </tr>
74
+ </tfoot>
75
+ <tbody data-wp-lists="list:user" id="the-list">
76
+ <?php
77
+ $data = wsl_get_stored_hybridauth_user_profiles_grouped_by_user_id( $offset, $limit );
78
+
79
+ // have users?
80
+ if( ! $data ){
81
+ ?>
82
+ <tr class="no-items"><td colspan="5" class="colspanchange"><?php _wsl_e("No users found", 'wordpress-social-login') ?>.</td></tr>
83
+ <?php
84
+ }
85
+ else{
86
+ $i = 0;
87
+ foreach( $data as $items ){
88
+ $user_id = $items->user_id;
89
+ $wsl_user_image = $items->photourl;
90
+
91
+ $user_data = get_userdata( $user_id );
92
+
93
+ if( ! $user_data ){
94
+ continue;
95
+ }
96
 
97
+ $linked_accounts = wsl_get_stored_hybridauth_user_profiles_by_user_id( $user_id );
98
+ ?>
99
+ <tr class="<?php if( ++$i % 2 ) echo "alternate" ?> tr-contacts">
100
+ <td nowrap>
101
+ <?php
102
  foreach( $linked_accounts AS $link ){
103
+ ?>
104
+ <img src="<?php echo $assets_base_url . strtolower( $link->provider ) . '.png' ?>" style="vertical-align:top;width:16px;height:16px;" /> <?php echo $link->provider ?><br />
105
+ <?php
106
+ if( $link->photourl ){
107
+ $wsl_user_image = $link->photourl;
108
  }
109
  }
110
  ?>
111
  </td>
112
+ <td class="column-author">
113
+ <?php if( $wsl_user_image ) { ?>
114
  <img width="32" height="32" class="avatar avatar-32 photo" src="<?php echo $wsl_user_image ?>" >
115
+ <?php } else { ?>
116
+ <img width="32" height="32" class="avatar avatar-32 photo" src="http://www.gravatar.com/avatar/<?php echo md5( strtolower( trim( $user_data->user_email ) ) ); ?>" >
117
  <?php } ?>
118
+
119
+ <strong><a href="options-general.php?page=wordpress-social-login&wslp=users&uid=<?php echo $user_id ?>"><?php echo $user_data->user_login; ?></a></strong>
120
+
121
+ <div class="row-actions">
122
+ <span class="view">
123
+ <a href="options-general.php?page=wordpress-social-login&wslp=users&uid=<?php echo $user_id ?>"><?php _wsl_e("Profiles", 'wordpress-social-login') ?></a>
124
+ |
125
+ </span>
126
+
127
+ <span class="view">
128
+ <a href="options-general.php?page=wordpress-social-login&wslp=contacts&uid=<?php echo $user_id ?>"><?php _wsl_e("Contacts", 'wordpress-social-login') ?></a>
129
+ |
130
+ </span>
131
+
132
+ <span class="delete">
133
+ <?php
134
+ $delete_url = wp_nonce_url( 'options-general.php?page=wordpress-social-login&wslp=users&delete=' . $user_id );
135
+ ?>
136
+ <a style="color: #a00;" href="<?php echo $delete_url ?>" onClick="return confirmDeleteWSLUser();"><?php _wsl_e("Delete", 'wordpress-social-login') ?></a>
137
+ </span>
138
+ </div>
139
  </td>
140
+ <td><?php echo $user_data->display_name; ?></td>
141
  <td>
142
+ <?php if( ! strstr( $user_data->user_email, "@example.com" ) ) { ?>
143
+ <a href="mailto:<?php echo $user_data->user_email; ?>"><?php echo $user_data->user_email; ?></a>
144
+ <?php } else { ?>
145
+ -
 
 
146
  <?php } ?>
147
  </td>
148
  <td>
149
+ <?php if( $user_data->user_url ) { ?>
150
+ <a href="<?php echo $user_data->user_url; ?>" target="_blank"><?php echo str_ireplace( array("http://www.", "https://www.", "http://","https://"), array('','','','',''), $user_data->user_url ) ?></a>
151
  <?php } else { ?>
152
  -
153
  <?php } ?>
154
  </td>
155
  <td align="center">
156
  <?php
157
+ $counts = wsl_get_stored_hybridauth_user_contacts_count_by_user_id( $user_id );
 
158
 
159
+ if( $counts ){
160
+ ?>
161
+ <a href="options-general.php?page=wordpress-social-login&wslp=contacts&uid=<?php echo $user_id ?>"><?php echo $counts; ?></a>
162
+ <?php
163
  }
164
  else{
165
  echo "0";
166
  }
167
  ?>
168
  </td>
 
 
 
 
169
  </tr>
170
+ <?php
171
+ }
172
+ }// have users?
173
+ ?>
174
+ </tbody>
175
+ </table>
176
+
177
+ <?php
178
+ $page_links = paginate_links( array(
179
+ 'base' => add_query_arg( 'pagenum', '%#%' ),
180
+ 'format' => '',
181
+ 'prev_text' => __( '&laquo;', 'text-domain' ),
182
+ 'next_text' => __( '&raquo;', 'text-domain' ),
183
+ 'total' => $num_of_pages,
184
+ 'current' => $pagenum
185
+ ));
186
+
187
+ if ( $page_links ) {
188
+ echo '<div class="tablenav"><div class="tablenav-pages" style="margin: 1em 0">' . $page_links . '</div></div>';
189
+ }
190
+ ?>
191
+ <script>
192
+ function confirmDeleteWSLUser()
193
+ {
194
+ return confirm( <?php echo json_encode( _wsl__("Are you sure to delete this WSL user profiles and contacts?\n\nNote: The associated WordPress user won't deleted.", 'wordpress-social-login') ) ?> );
195
+ }
196
+ </script>
197
  <?php
198
  // HOOKABLE:
199
  do_action( "wsl_component_users_list_end" );
includes/admin/components/users/wsl.components.users.profile.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  // Exit if accessed directly
@@ -16,59 +16,128 @@ function wsl_component_users_profile( $user_id )
16
  // HOOKABLE:
17
  do_action( "wsl_component_users_profile_start" );
18
 
19
- $linked_accounts = wsl_get_user_linked_account_by_user_id( $user_id );
20
 
21
- if( ! $linked_accounts ){
22
- _wsl_e("USER DOES NOT EXIST!", 'wordpress-social-login');
23
 
 
 
 
 
 
 
 
24
  return;
25
  }
26
 
27
- $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
- ?>
 
 
30
  <style>
31
  table td, table th { border: 1px solid #DDDDDD; }
32
  table th label { font-weight: bold; }
33
  .form-table th { width:120px; text-align:right; }
 
34
  </style>
35
- <p>
36
- <a class="button button-secondary" href="user-edit.php?user_id=<?php echo $user_id ?>">Edit User</a>
37
- <a class="button button-secondary" href="options-general.php?page=wordpress-social-login&wslp=contacts&uid=<?php echo $user_id ?>">Show User Contacts List</a>
38
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  <hr />
40
- <?php
41
  foreach( $linked_accounts AS $link ){
42
- ?>
43
- <h3><?php _wsl_e("User Profile", 'wordpress-social-login'); ?> <small><?php echo sprintf( _wsl__( "as provided by %s", 'wordpress-social-login'), $link->provider ); ?> </small></h3>
44
-
45
- <table class="form-table"
46
- <tr><th><label><?php echo $link->provider; ?> Identifier </label></th><td><?php echo $link->identifier ; ?> <br /><span class="description">The Unique user's ID. Can be an interger for some providers, Email, URL, etc.</span></td></tr>
47
- <tr><th><label>Wordpress Identifier </label></th><td><?php echo $user_id; ?> <br /><span class="description">The Unique user's ID on your website.</span></td></tr>
48
- <tr><th><label>Profile URL </label></th><td><a href="<?php echo $link->profileurl; ?>"><?php echo $link->profileurl; ?></a> <br /><span class="description">URL link to profile page on the <?php echo $link->provider; ?> web site.</span></td></tr>
49
- <tr><th><label>Website URL </label></th><td><a href="<?php echo $link->websiteurl; ?>"><?php echo $link->websiteurl; ?></a> <br /><span class="description">User website, blog, web page, etc.</span></td></tr>
50
- <tr><th><label>Photo URL </label></th><td><a href="<?php echo $link->photourl; ?>"><?php echo $link->photourl; ?></a> <br /><span class="description">URL link to user photo or avatar.</span></td></tr>
51
- <tr><th><label>Display name </label></th><td><?php echo $link->displayname ; ?> <br /><span class="description">User dispaly Name provided by the <?php echo $link->provider; ?> or a concatenation of first and last name.</span></td></tr>
52
- <tr><th><label>Description </label></th><td><?php echo $link->description ; ?>
53
- <tr><th><label>First name </label></th><td><?php echo $link->firstname ; ?>
54
- <tr><th><label>Last name </label></th><td><?php echo $link->lastname ; ?>
55
- <tr><th><label>Gender </label></th><td><?php echo $link->gender ; ?>
56
- <tr><th><label>Language </label></th><td><?php echo $link->language ; ?>
57
- <tr><th><label>Age </label></th><td><?php echo $link->age ; ?>
58
- <tr><th><label>Birth day </label></th><td><?php echo $link->birthday ; ?>
59
- <tr><th><label>Birth month </label></th><td><?php echo $link->birthmonth ; ?>
60
- <tr><th><label>Birth year </label></th><td><?php echo $link->birthyear ; ?>
61
- <tr><th><label>Email </label></th><td><?php echo $link->email ; ?>
62
- <tr><th><label>Phone </label></th><td><?php echo $link->phone ; ?>
63
- <tr><th><label>Address </label></th><td><?php echo $link->address ; ?>
64
- <tr><th><label>Country </label></th><td><?php echo $link->country ; ?>
65
- <tr><th><label>Region </label></th><td><?php echo $link->region ; ?>
66
- <tr><th><label>City </label></th><td><?php echo $link->city ; ?>
67
- <tr><th><label>Zip </label></th><td><?php echo $link->zip ; ?>
68
- </tr>
69
- </table>
70
  <?php
71
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
 
73
  // HOOKABLE:
74
  do_action( "wsl_component_users_profile_end" );
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  // Exit if accessed directly
16
  // HOOKABLE:
17
  do_action( "wsl_component_users_profile_start" );
18
 
19
+ $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
20
 
21
+ $linked_accounts = wsl_get_stored_hybridauth_user_profiles_by_user_id( $user_id );
 
22
 
23
+ // is it a WSL user?
24
+ if( ! $linked_accounts ){
25
+ ?>
26
+ <div style="padding: 15px; margin-bottom: 8px; border: 1px solid #ddd; background-color: #fff;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);">
27
+ <?php _wsl_e( "This's not a WSL user!", 'wordpress-social-login' ); ?>.
28
+ </div>
29
+ <?php
30
  return;
31
  }
32
 
33
+ # http://hybridauth.sourceforge.net/userguide/Profile_Data_User_Profile.html
34
+ $ha_profile_fields = array(
35
+ array( 'field' => 'identifier' , 'label' => _wsl__( "Provider user ID" , 'wordpress-social-login'), 'description' => _wsl__( "The Unique user's ID on the connected provider. Depending on the provider, this field can be an number, Email, URL, etc", 'wordpress-social-login') ),
36
+ array( 'field' => 'profileURL' , 'label' => _wsl__( "Profile URL" , 'wordpress-social-login'), 'description' => _wsl__( "Link to the user profile on the provider web site" , 'wordpress-social-login') ),
37
+ array( 'field' => 'webSiteURL' , 'label' => _wsl__( "Website URL" , 'wordpress-social-login'), 'description' => _wsl__( "User website, blog or web page" , 'wordpress-social-login') ),
38
+ array( 'field' => 'photoURL' , 'label' => _wsl__( "Photo URL" , 'wordpress-social-login'), 'description' => _wsl__( "Link to user picture or avatar on the provider web site" , 'wordpress-social-login') ),
39
+ array( 'field' => 'displayName' , 'label' => _wsl__( "Display name" , 'wordpress-social-login'), 'description' => _wsl__( "User Display name. If not provided by social network, WSL will return a concatenation of the user first and last name" , 'wordpress-social-login') ),
40
+ array( 'field' => 'description' , 'label' => _wsl__( "Description" , 'wordpress-social-login'), 'description' => _wsl__( "A short about me" , 'wordpress-social-login') ),
41
+ array( 'field' => 'firstName' , 'label' => _wsl__( "First name" , 'wordpress-social-login'), 'description' => _wsl__( "User's first name" , 'wordpress-social-login') ),
42
+ array( 'field' => 'lastName' , 'label' => _wsl__( "Last name" , 'wordpress-social-login'), 'description' => _wsl__( "User's last name" , 'wordpress-social-login') ),
43
+ array( 'field' => 'gender' , 'label' => _wsl__( "Gender" , 'wordpress-social-login'), 'description' => _wsl__( "User's gender. Values are 'female', 'male' or blank" , 'wordpress-social-login') ),
44
+ array( 'field' => 'language' , 'label' => _wsl__( "Language" , 'wordpress-social-login'), 'description' => _wsl__( "User's language" , 'wordpress-social-login') ),
45
+ array( 'field' => 'age' , 'label' => _wsl__( "Age" , 'wordpress-social-login'), 'description' => _wsl__( "User' age. Note that WSL do not calculate this field. We return it as it was provided" , 'wordpress-social-login') ),
46
+ array( 'field' => 'birthDay' , 'label' => _wsl__( "Birth day" , 'wordpress-social-login'), 'description' => _wsl__( "The day in the month in which the person was born. Not to confuse it with 'Birth date'" , 'wordpress-social-login') ),
47
+ array( 'field' => 'birthMonth' , 'label' => _wsl__( "Birth month" , 'wordpress-social-login'), 'description' => _wsl__( "The month in which the person was born" , 'wordpress-social-login') ),
48
+ array( 'field' => 'birthYear' , 'label' => _wsl__( "Birth year" , 'wordpress-social-login'), 'description' => _wsl__( "The year in which the person was born" , 'wordpress-social-login') ),
49
+ array( 'field' => 'email' , 'label' => _wsl__( "Email" , 'wordpress-social-login'), 'description' => _wsl__( "User's email address. Note: some providers like Facebook and Google can provide verified emails. Users with the same verified email will be automatically linked", 'wordpress-social-login') ),
50
+ array( 'field' => 'phone' , 'label' => _wsl__( "Phone" , 'wordpress-social-login'), 'description' => _wsl__( "User's phone number" , 'wordpress-social-login') ),
51
+ array( 'field' => 'address' , 'label' => _wsl__( "Address" , 'wordpress-social-login'), 'description' => _wsl__( "User's address" , 'wordpress-social-login') ),
52
+ array( 'field' => 'country' , 'label' => _wsl__( "Country" , 'wordpress-social-login'), 'description' => _wsl__( "User's country" , 'wordpress-social-login') ),
53
+ array( 'field' => 'region' , 'label' => _wsl__( "Region" , 'wordpress-social-login'), 'description' => _wsl__( "User's state or region" , 'wordpress-social-login') ),
54
+ array( 'field' => 'city' , 'label' => _wsl__( "City" , 'wordpress-social-login'), 'description' => _wsl__( "User's city" , 'wordpress-social-login') ),
55
+ array( 'field' => 'zip' , 'label' => _wsl__( "Zip" , 'wordpress-social-login'), 'description' => _wsl__( "User's zipcode" , 'wordpress-social-login') ),
56
+ );
57
 
58
+ # http://codex.wordpress.org/Function_Reference/get_userdata
59
+ $user_info = get_userdata( $user_id );
60
+ ?>
61
  <style>
62
  table td, table th { border: 1px solid #DDDDDD; }
63
  table th label { font-weight: bold; }
64
  .form-table th { width:120px; text-align:right; }
65
+ p.description { font-size: 11px ! important; margin:0 ! important;}
66
  </style>
67
+
68
+ <div style="padding: 15px; margin-bottom: 8px; border: 1px solid #ddd; background-color: #fff;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);">
69
+ <p style="float: right; margin: -5px;">
70
+ <a class="button button-secondary" href="user-edit.php?user_id=<?php echo $user_id ?>"><?php _wsl_e("Edit user details", 'wordpress-social-login'); ?></a>
71
+ <a class="button button-secondary" href="options-general.php?page=wordpress-social-login&wslp=contacts&uid=<?php echo $user_id ?>"><?php _wsl_e("Show user contacts list", 'wordpress-social-login'); ?></a>
72
+ </p>
73
+
74
+ <b><?php echo $user_info->display_name; ?></b> :
75
+ <?php echo sprintf( _wsl__("Wordpress user details and list of WSL profiles", 'wordpress-social-login'), $user_info->display_name ) ?>.
76
+ </div>
77
+
78
+ <h3><?php _wsl_e("Wordpress user profile", 'wordpress-social-login'); ?></h3>
79
+
80
+ <table class="wp-list-table widefat">
81
+ <tr><th width="200"><label><?php _wsl_e("Wordpress User ID", 'wordpress-social-login'); ?></label></th><td><?php echo $user_info->ID; ?></td></tr>
82
+ <tr><th width="200"><label><?php _wsl_e("Username", 'wordpress-social-login'); ?></label></th><td><?php echo $user_info->user_login; ?></td></tr>
83
+ <tr><th><label><?php _wsl_e("Display name", 'wordpress-social-login'); ?></label></th><td><?php echo $user_info->display_name; ?></td></tr>
84
+ <tr><th><label><?php _wsl_e("E-mail", 'wordpress-social-login'); ?></label></th><td><a href="mailto:<?php echo $user_info->user_email; ?>" target="_blank"><?php echo $user_info->user_email; ?></a></td></tr>
85
+ <tr><th><label><?php _wsl_e("Website", 'wordpress-social-login'); ?></label></th><td><a href="<?php echo $user_info->user_url; ?>" target="_blank"><?php echo $user_info->user_url; ?></a></td></tr>
86
+ <tr><th><label><?php _wsl_e("Registered", 'wordpress-social-login'); ?></label></th><td><?php echo $user_info->user_registered; ?></td></tr>
87
+ </tr>
88
+ </table>
89
+
90
  <hr />
91
+ <?php
92
  foreach( $linked_accounts AS $link ){
93
+ ?>
94
+ <h3><img src="<?php echo $assets_base_url . strtolower( $link->provider ) . '.png' ?>" style="vertical-align:top;width:16px;height:16px;" /> <?php _wsl_e("User profile", 'wordpress-social-login'); ?> <small><?php echo sprintf( _wsl__( "as provided by %s", 'wordpress-social-login'), $link->provider ); ?> </small></h3>
95
+
96
+ <table class="wp-list-table widefat">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  <?php
98
+ $profile_fields = (array) $link;
99
+
100
+ foreach( $ha_profile_fields as $item ){
101
+ $item['field'] = strtolower( $item['field'] );
102
+ ?>
103
+ <tr>
104
+ <th width="200">
105
+ <label><?php echo $item['label']; ?></label>
106
+ </th>
107
+ <td>
108
+ <?php
109
+ if( isset( $profile_fields[ $item['field'] ] ) && $profile_fields[ $item['field'] ] ){
110
+ $field_value = $profile_fields[ $item['field'] ];
111
+
112
+ if( in_array( $item['field'], array( 'profileurl', 'websiteurl', 'email' ) ) ){
113
+ ?>
114
+ <a href="<?php if( $item['field'] == 'email' ) echo 'mailto:'; echo $field_value; ?>" target="_blank"><?php echo $field_value; ?></a>
115
+ <?php
116
+ }
117
+ elseif( $item['field'] == 'photourl' ){
118
+ ?>
119
+ <a href="<?php echo $field_value; ?>" target="_blank"><img width="36" height="36" align="left" src="<?php echo $field_value; ?>" style="margin-right: 5px;" > <?php echo $field_value; ?></a>
120
+ <?php
121
+ }
122
+ else{
123
+ echo $field_value;
124
+ }
125
+
126
+ ?>
127
+ <p class="description">
128
+ <?php echo $item['description']; ?>.
129
+ </p>
130
+ <?php
131
+ }
132
+ ?>
133
+ </td>
134
+ </tr>
135
+ <?php
136
+ }
137
+ ?>
138
+ </table>
139
+ <?php
140
+ }
141
 
142
  // HOOKABLE:
143
  do_action( "wsl_component_users_profile_end" );
includes/admin/components/watchdog/index.php ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * WordPress Social Login
4
+ *
5
+ * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
+ */
8
+
9
+ /**
10
+ * WSL Watchdog - Log viewer.
11
+ */
12
+
13
+ // Exit if accessed directly
14
+ if ( !defined( 'ABSPATH' ) ) exit;
15
+
16
+ // --------------------------------------------------------------------
17
+
18
+ function wsl_component_watchdog()
19
+ {
20
+ // HOOKABLE:
21
+ do_action( "wsl_component_watchdog_start" );
22
+
23
+ $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
24
+ ?>
25
+ <style>
26
+ .widefatop td, .widefatop th { border: 1px solid #DDDDDD; }
27
+ .widefatop th label { font-weight: bold; }
28
+ </style>
29
+
30
+ <div style="padding: 5px 20px; border: 1px solid #ddd; background-color: #fff;">
31
+
32
+ <h3><?php _wsl_e("Latest WSL activity", 'wordpress-social-login') ?></h3>
33
+
34
+ <!--
35
+ <p style="float: right;margin-top:-45px">
36
+ <a class="button button-secondary" style="background-color: #da4f49;border-color: #bd362f;text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);color: #ffffff;" href="" onClick="return confirm('Are you sure?');"><?php _wsl_e("Delete WSL Log", 'wordpress-social-login'); ?></a>
37
+ </p>
38
+ -->
39
+
40
+ <hr />
41
+
42
+ <?php
43
+ global $wpdb;
44
+
45
+ $list_sessions = $wpdb->get_results( "SELECT user_ip, session_id, provider, max(id) FROM `{$wpdb->prefix}wslwatchdog` GROUP BY session_id, provider LIMIT 50" );
46
+
47
+ // have contacts?
48
+ if( ! $list_sessions ){
49
+ _wsl_e("<p>No log found!</p>", 'wordpress-social-login');
50
+ _wsl_e("<p class='description'>To log WSL authentication process in database, include '/utilities/watchdog.php' in 'wp-social-login.php'.</p>", 'wordpress-social-login');
51
+ }
52
+ else{
53
+ // echo '<pre>';
54
+ // print_r( $list_sessions );
55
+ foreach( $list_sessions as $seesion_data ){
56
+ $user_ip = $seesion_data->user_ip;
57
+ $session_id = $seesion_data->session_id;
58
+ $provider = $seesion_data->provider;
59
+
60
+ if( ! $provider ){
61
+ continue;
62
+ }
63
+
64
+ ?>
65
+ <div style="padding: 15px; margin-bottom: 8px; border: 1px solid #ddd; background-color: #fff;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);">
66
+ <img src="<?php echo $assets_base_url . strtolower( $provider ) . '.png' ?>" style="vertical-align:top;width:16px;height:16px;" /> <?php echo sprintf( _wsl__("<b>%s</b> : %s - %s", 'wordpress-social-login'), $provider, $user_ip, $session_id ) ?>
67
+ </div>
68
+ <?php
69
+
70
+ $list_calls = $wpdb->get_results( "SELECT * FROM `{$wpdb->prefix}wslwatchdog` WHERE session_id = '$session_id' AND provider = '$provider' ORDER BY id ASC LIMIT 500" );
71
+
72
+ $abandon = false;
73
+ $newattempt = false;
74
+ $newsession = true;
75
+ $exectime = 0;
76
+ $oexectime = 0;
77
+ ?>
78
+ <table class="wp-list-table widefat widefatop">
79
+ <tr>
80
+ <th>#</th>
81
+ <th>Action</th>
82
+ <th>Action Args</th>
83
+ <th>Time</th>
84
+ <th>Exec</th>
85
+ <th>User</th>
86
+ </tr>
87
+ <?php
88
+ foreach( $list_calls as $call_data ){
89
+
90
+ $exectime = (float) $call_data->created_at - ( $oexectime ? $oexectime : (float) $call_data->created_at );
91
+ $oexectime = (float) $call_data->created_at;
92
+
93
+ if( $abandon && 'wsl_process_login' == $call_data->action_name ){
94
+ $abandon = false;
95
+ $newattempt = true;
96
+ }
97
+
98
+ if( 'wsl_process_login' == $call_data->action_name && ! stristr( $call_data->url, 'redirect_to_provider=true' ) && ! stristr( $call_data->url, 'action=wordpress_social_authenticated' ) ){
99
+ $newattempt = true;
100
+ }
101
+
102
+ if( $abandon ){
103
+ continue;
104
+ }
105
+
106
+ if( $newattempt && ! $newsession ){
107
+ ?>
108
+ </table>
109
+ <h5>New attempt</h5>
110
+ <table class="wp-list-table widefat widefatop">
111
+ <tr>
112
+ <th>#</th>
113
+ <th>Action</th>
114
+ <th>Action Args</th>
115
+ <th>Time</th>
116
+ <th>Exec</th>
117
+ <th>User</th>
118
+ </tr>
119
+ <?php
120
+
121
+ $exectime = 0;
122
+ $oexectime = 0;
123
+ }
124
+
125
+ $call_data->action_args = json_decode( $call_data->action_args );
126
+
127
+ $newattempt = false;
128
+
129
+ $action_name_uid = uniqid();
130
+
131
+ $action_desc = 'N.A.';
132
+ ?>
133
+ <tr style="<?php if( 'wsl_render_login_form_user_loggedin' == $call_data->action_name || $call_data->action_name == 'wsl_hook_process_login_before_wp_set_auth_cookie' ) echo 'background-color:#edfff7;'; ?><?php if( 'wsl_process_login_complete_registration_start' == $call_data->action_name ) echo 'background-color:#fefff0;'; ?><?php if( 'wsl_process_login_render_error_page' == $call_data->action_name || $call_data->action_name == 'wsl_process_login_render_notice_page' ) echo 'background-color:#fffafa;'; ?>">
134
+ <td nowrap width="10">
135
+ <?php echo $call_data->id; ?>
136
+ </td>
137
+ <td nowrap width="350">
138
+ <span style="color:#<?php
139
+ if( 'wsl_hook_process_login_before_wp_safe_redirect' == $call_data->action_name ){
140
+ echo 'a6354b';
141
+ }
142
+
143
+ if( 'wsl_hook_process_login_before_wp_set_auth_cookie' == $call_data->action_name ){
144
+ echo '9035a6';
145
+ }
146
+
147
+ if( 'wsl_process_login_render_error_page' == $call_data->action_name ){
148
+ echo 'f50505';
149
+
150
+ $newattempt = true;
151
+ }
152
+
153
+ if( 'wsl_process_login_render_notice_page' == $call_data->action_name ){
154
+ echo 'fa1797';
155
+
156
+ $newattempt = true;
157
+ }
158
+
159
+ if( 'wsl_render_login_form_user_loggedin' == $call_data->action_name ){
160
+ echo '12b0fa';
161
+
162
+ $abandon = true;
163
+ }
164
+ ?>"
165
+ ><?php echo $call_data->action_name; ?></span>
166
+ </td>
167
+ <td>
168
+ <span style="float:right;"><a style="font-size:25px" href="javascript:void(0);" onClick="action_args_toggle( '<?php echo $action_name_uid; ?>' )">+</a></span>
169
+ <a href="javascript:alert('<?php echo $call_data->url; ?>');">
170
+ <small>
171
+ <?php
172
+ echo substr( $call_data->url, 0, 100 );
173
+ echo strlen( $call_data->url ) > 100 ? '...' : '';
174
+ ?>
175
+ </small>
176
+ </a>
177
+ <pre style="display:none; overflow:scroll; background-color:#fcfcfc; color:#808080;font-size:11px;max-width:750px;" class="action_args_<?php echo $action_name_uid; ?>"><?php echo htmlentities( print_r( $call_data->action_args, true ) ); ?></pre>
178
+ </td>
179
+ <td nowrap width="115">
180
+ <?php echo date( "Y-m-d h:i:s", $call_data->created_at ); ?>
181
+ </td>
182
+ <td nowrap width="10" style="<?php if( $exectime > 0.5 ) echo 'color: #f44 !important;'; ?>">
183
+ <?php echo number_format( $exectime, 3, '.', '' ); ?>
184
+ </td>
185
+ <td nowrap width="40">
186
+ <?php if( $call_data->user_id ) echo '<a href="options-general.php?page=wordpress-social-login&wslp=users&uid=' . $call_data->user_id . '">#' . $call_data->user_id . '</a>'; ?>
187
+ </td>
188
+ </tr>
189
+ <?php
190
+ $newsession = false;
191
+ }
192
+ ?>
193
+ </table>
194
+ <?php
195
+ echo '<br />';
196
+ }
197
+ }
198
+ ?>
199
+ <script>
200
+ function action_args_toggle( action ){
201
+ jQuery('.action_args_' + action ).toggle();
202
+
203
+ return false;
204
+ }
205
+ </script>
206
+ </div>
207
+ <?php
208
+ // HOOKABLE:
209
+ do_action( "wsl_component_watchdog_end" );
210
+ }
211
+
212
+ wsl_component_watchdog();
213
+
214
+ // --------------------------------------------------------------------
includes/admin/wsl.admin.ui.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -35,7 +35,6 @@ function wsl_admin_init()
35
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_COMPONENTS;
36
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
37
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_VERSION;
38
- GLOBAL $wpdb;
39
 
40
  if( isset( $_REQUEST["enable"] ) && isset( $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $_REQUEST["enable"] ] ) ){
41
  $component = $_REQUEST["enable"];
@@ -87,34 +86,9 @@ function wsl_admin_init()
87
 
88
  wsl_admin_ui_error();
89
  }
90
-
91
- // HOOKABLE:
92
- do_action( "wsl_admin_init_end" );
93
- }
94
 
95
- // --------------------------------------------------------------------
96
-
97
- /**
98
- * Renders an editor in a page in the typical fashion used in Posts and Pages.
99
- */
100
- function wsl_render_wp_editor( $name, $content )
101
- {
102
- // HOOKABLE:
103
- do_action( "wsl_render_wp_editor_start" );
104
- ?>
105
- <div class="postbox">
106
- <div class="wp-editor-textarea" style="background-color: #FFFFFF;">
107
- <?php
108
- wp_editor(
109
- $content, $name,
110
- array( 'textarea_name' => $name, 'media_buttons' => true, 'tinymce' => array( 'theme_advanced_buttons1' => 'formatselect,forecolor,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlink' ) )
111
- );
112
- ?>
113
- </div>
114
- </div>
115
- <?php
116
  // HOOKABLE:
117
- do_action( "wsl_render_wp_editor_end" );
118
  }
119
 
120
  // --------------------------------------------------------------------
@@ -220,12 +194,6 @@ a.thumbnail:hover {
220
  .span4 {
221
  width: 220px;
222
  }
223
- #wp-social-login-connect-with {
224
- font-size: 14px;
225
- }
226
- #wp-social-login-connect-options {
227
- margin:5px;
228
- }
229
  .wsl_connect_with_provider {
230
  text-decoration:none;
231
  cursor:not-allowed;
@@ -373,13 +341,17 @@ function wsl_admin_ui_footer()
373
  ?>
374
  </div> <!-- ./wsl_admin_tab_content -->
375
  <div class="clear"></div>
376
- <?php wsl_admin_localize_widget(); ?>
377
 
378
  <script>
379
  // check for new versions and updates
380
  jQuery.getScript("http://hybridauth.sourceforge.net/wsl/wsl.version.check.and.updates.php?v=<?php echo $WORDPRESS_SOCIAL_LOGIN_VERSION ?>");
381
  </script>
382
  <?php
 
 
 
 
383
  // HOOKABLE:
384
  do_action( "wsl_admin_ui_footer_end" );
385
  }
@@ -406,7 +378,7 @@ function wsl_admin_ui_error()
406
  }
407
  </style>
408
  <div id="wsl_div_warn">
409
- <h3 style="margin:0px;"><?php _wsl_e('Something wrong!', 'wordpress-social-login') ?></h3>
410
 
411
  <hr />
412
 
@@ -424,8 +396,7 @@ function wsl_admin_ui_error()
424
  <a class="button-secondary" href="http://hybridauth.sourceforge.net/wsl/support.html" target="_blank"><?php _wsl_e( "Report as bug", 'wordpress-social-login' ) ?></a>
425
  <a class="button-primary" href="options-general.php?page=wordpress-social-login&wslp=components" style="float:right"><?php _wsl_e( "Check enabled components", 'wordpress-social-login' ) ?></a>
426
  </div>
427
- </div>
428
-
429
  <?php
430
  // HOOKABLE:
431
  do_action( "wsl_admin_ui_error_end" );
@@ -434,7 +405,7 @@ function wsl_admin_ui_error()
434
  // --------------------------------------------------------------------
435
 
436
  /**
437
- * Renders wsl #FAIL page
438
  */
439
  function wsl_admin_ui_fail()
440
  {
@@ -448,32 +419,20 @@ h1 {
448
  font-size: 2.8em;
449
  font-weight: 200;
450
  line-height: 1.2em;
451
- margin: 0.2em 200px 0 0;
452
  }
453
- hr{
454
- border-color: #EEEEEE;
455
- border-style: none none solid;
456
- border-width: 0 0 1px;
457
- margin: 2px 0 15px;
458
- }
459
  .wsldiv {
460
- margin: 30px 70px 0 70px;
 
 
 
 
461
  }
462
  .wsldiv p{
463
  ont-size: 14px;
464
  line-height: 1.8em;
465
  }
466
- .wslpre{
467
- font-size:14m;
468
- border:1px solid #E6DB55;
469
- border-radius: 3px;
470
- padding:5px;
471
- width:650px;
472
- }
473
- ul {
474
- list-style: disc outside none;
475
- }
476
- </style>
477
 
478
  <div class="wsldiv">
479
  <h1><?php _e("WordPress Social Login - FAIL!", 'wordpress-social-login') ?></h1>
@@ -484,48 +443,23 @@ ul {
484
  <?php _e('Despite the efforts, the plugin <a href="http://profiles.wordpress.org/miled/" target="_blank">author</a> and other <a href="https://github.com/hybridauth/WordPress-Social-Login/graphs/contributors" target="_blank">contributors</a>, put into <b>WordPress Social Login</b> in terms of reliability, portability, <br />and maintenance', 'wordpress-social-login') ?>.
485
  <b style="color:red;"><?php _e('Your server failed the requirements check for this plugin!', 'wordpress-social-login') ?></b>
486
  </p>
 
487
  <p>
488
  <?php _e('These requirements are usually met by default by most "modern" web hosting providers, however some complications may <br />occur with <b>shared hosting</b> and, or <b>custom wordpress installations</b>', 'wordpress-social-login') ?>.
489
  </p>
 
490
  <p>
491
- <?php _e("To determine what may cause this failure, run the <b>WordPress Social Login Requirements Test</b> by clicking the button bellow", 'wordpress-social-login') ?>:
492
 
493
  <br />
494
  <br />
495
- <a class="button-primary" href='<?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL ?>/services/diagnostics.php' target='_blank'><?php _e("Run the plugin requirements test", 'wordpress-social-login') ?></a>
496
- <a class="button-primary" href='<?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL ?>/services/siteinfo.php' target='_blank'><?php _e("System Information", 'wordpress-social-login') ?></a>
 
 
497
  </p>
498
-
499
- <br />
500
- <hr />
501
-
502
- <p>
503
- <?php _e("<b>WordPress Social Login</b> is an open source software licenced under The MIT License (MIT)", 'wordpress-social-login') ?>
504
- </p>
505
 
506
- <pre class="wslpre">
507
- Copyright (C) 2011-2013 Mohamed Mrassi and contributors
508
-
509
- Permission is hereby granted, free of charge, to any person obtaining
510
- a copy of this software and associated documentation files (the
511
- "Software"), to deal in the Software without restriction, including
512
- without limitation the rights to use, copy, modify, merge, publish,
513
- distribute, sublicense, and/or sell copies of the Software, and to
514
- permit persons to whom the Software is furnished to do so, subject to
515
- the following conditions:
516
-
517
- The above copyright notice and this permission notice shall be
518
- included in all copies or substantial portions of the Software.
519
-
520
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
521
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
522
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
523
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
524
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
525
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
526
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
527
- </pre>
528
- <br />
529
  <script>
530
  jQuery.getScript("http://hybridauth.sourceforge.net/wsl/wsl.version.check.and.updates.php?v=<?php echo $WORDPRESS_SOCIAL_LOGIN_VERSION ?>&fail=true");
531
  </script>
@@ -544,18 +478,24 @@ function wsl_admin_welcome_panel()
544
  if( isset( $_REQUEST["wsldwp"] ) && (int) $_REQUEST["wsldwp"] ){
545
  $wsldwp = (int) $_REQUEST["wsldwp"];
546
 
547
- update_option( "wsl_settings_welcome_panel_enabled", wsl_version() );
548
 
549
  return;
550
  }
551
 
552
  // if new user or wsl updated, then we display wsl welcome panel
553
- if( get_option( 'wsl_settings_welcome_panel_enabled' ) == wsl_version() ){
554
  return;
555
  }
 
 
 
 
 
 
556
  ?>
557
  <!--
558
- if you want to know if a UI was made by devloper, then here is a tip: he will always use tables
559
 
560
  //> wsl-w-panel is shamelessly borrowered and modified from wordpress welcome-panel
561
  -->
@@ -578,22 +518,28 @@ function wsl_admin_welcome_panel()
578
  <b><?php _wsl_e("Get Started", 'wordpress-social-login') ?></b>
579
  </p>
580
  <ul style="margin-left:25px;">
581
- <li><?php _wsl_e('<a href="http://hybridauth.sourceforge.net/wsl/configure.html" target="_blank">Setup and Configuration</a>', 'wordpress-social-login') ?></li>
582
- <li><?php _wsl_e('<a href="http://hybridauth.sourceforge.net/wsl/customize.html" target="_blank">Customize WSL Widgets</a>', 'wordpress-social-login') ?></li>
583
- <li><?php _wsl_e('<a href="http://hybridauth.sourceforge.net/wsl/userdata.html" target="_blank">Manage users and contacts</a>', 'wordpress-social-login') ?></li>
584
- <li><?php _wsl_e('<a href="http://hybridauth.sourceforge.net/wsl/index.html" target="_blank">WSL User Guide</a> and <a href="http://hybridauth.sourceforge.net/wsl/faq.html" target="_blank">FAQ</a>', 'wordpress-social-login') ?></li>
 
 
 
585
  </ul>
586
  </td>
587
  <td width="" valign="top">
588
  <br />
589
  <p>
590
- <b><?php echo sprintf( _wsl__( "What's new on WSL %s", 'wordpress-social-login'), wsl_version() ) ?></b>
591
  </p>
 
592
  <ul style="margin-left:25px;">
593
- <li><?php _wsl_e('In a similar way to WordPress plugins, WSL uses <a href="options-general.php?page=wordpress-social-login&wslp=components">Components</a>', 'wordpress-social-login') ?>,</li>
594
- <li><?php _wsl_e('<b>Email Validation</b> is replaced with <b>Profile Completion</b>', 'wordpress-social-login') ?>,</li>
595
- <li><?php _wsl_e('<b>User Moderation</b> made compatible with <a href="http://wordpress.org/extend/plugins/theme-my-login/" target="_blank">Theme My Login</a> plugin', 'wordpress-social-login') ?>,</li>
596
- <li><?php _wsl_e('A number of enhancements and new options now available', 'wordpress-social-login') ?>.</li>
 
 
597
  </ul>
598
  </td>
599
  </tr>
@@ -610,166 +556,75 @@ function wsl_admin_welcome_panel()
610
  // --------------------------------------------------------------------
611
 
612
  /**
613
- * Renders wsl localization widget
614
  */
615
- function wsl_admin_localize_widget()
616
  {
617
- global $WORDPRESS_SOCIAL_LOGIN_TEXTS;
618
 
619
- // default endpoint_url
620
- $assets_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL;
621
-
622
- // overwrite endpoint_url if need'd
623
- if( get_option( 'wsl_settings_base_url' ) ){
624
- $assets_url = strtolower( get_option( 'wsl_settings_base_url' ) );
625
- }
626
 
627
- $assets_url .= '/assets/img/';
628
-
629
- $current_user = wp_get_current_user();
630
-
631
- $wslp = "networks";
632
-
633
- if( isset( $_REQUEST["wslp"] ) ){
634
- $wslp = $_REQUEST["wslp"];
635
- }
636
- ?>
637
- <form action="http://hybridauth.sourceforge.net/wsl/i18n.contributions.php" method="post" target="_blank">
638
- <input type="hidden" name="wsl_i18n_site_url" value="<?php bloginfo('url'); ?>" />
639
- <input type="hidden" name="wsl_i18n_site_charset" value="<?php bloginfo('charset'); ?>" />
640
- <input type="hidden" name="wsl_i18n_site_language" value="<?php bloginfo('language'); ?>" />
641
- <input type="hidden" name="wsl_i18n_current_page" value="<?php echo $wslp ?>" />
642
-
643
- <input type="hidden" name="wsl_version" value="<?php echo wsl_version() ?>" />
644
-
645
- <div id="wsl_i18n_cla">
646
- <h3 style="margin:0px;"><?php _wsl_e( "Contributor License Agreement", 'wordpress-social-login' ) ?></h3>
647
-
648
- <hr />
649
-
650
- <p>
651
- <?php _wsl_e( "You are about to submit your contributions to the WordPress Social Login Website to be reviewed for inclusion in future versions", 'wordpress-social-login' ) ?>.
652
-
653
- <?php _wsl_e( "You hereby grant the permission to publish your contribution, in whole or in part, and to made it available under the <b>MIT License</b>, for the <b>Wordpress community</b> to, freely use or misuse", 'wordpress-social-login' ) ?>.
654
- </p>
655
-
656
- <hr />
657
-
658
- <div>
659
- <a class="button-secondary" href="admin.php?page=wordpress-social-login"><?php _wsl_e( "Hell No", 'wordpress-social-login' ) ?></a>
660
- <input style="float:right" type="submit" value="<?php _wsl_e( "Yes, I agree to contribute my translation", 'wordpress-social-login' ) ?>" class="button-primary" onClick="wsl_i18n_done()" >
661
- </div>
662
- </div>
663
- <div id="wsl_i18n_form">
664
- <h3 style="margin:0px;"><?php _wsl_e( "Help us translate this page into your language", 'wordpress-social-login' ) ?></h3>
665
-
666
- <hr />
667
-
668
- <p><?php _wsl_e( "You can <b>translate as much you please as much as you want</b>. You don't have to translate everything in this page. Ignore any string you want or aleardy translated. You could also use this tool to fix any typo you may find or to improve the current language expressions", 'wordpress-social-login' ) ?>.</p>
669
 
670
- <p><?php _wsl_e( "All the texts on this page are automatically extracted and generated on the form beside. If the translation tool has scapped something you may consider as irrelevant, please leave that particular field empty", 'wordpress-social-login' ) ?>.</p>
671
 
672
- <p><?php _wsl_e( "Your contributions will be sent to the WordPress Social Login website for inclusion in future versions", 'wordpress-social-login' ) ?>.</p>
673
- </div>
674
- <div id="wsl_i18n">
675
- <pre id="wsl_i18n_pre"></pre>
676
- <hr />
677
- <table width="100%" cellspacing="2" cellpadding="5" border="0">
678
- <tbody>
679
- <tr>
680
- <td align="right"><strong><?php _wsl_e( "Target Language", 'wordpress-social-login' ) ?></strong></td>
681
- <td>
682
- <select name="wsl_i18n_locale" style="width:400px;"><option value="en">English (enhancement)</option><option value="af">Afrikaans</option><option value="sq">Albanian</option><option value="ar">Arabic</option><option value="eu">Basque</option><option value="be">Belarusian</option><option value="bn_IN">Bengali (India)</option><option value="bg">Bulgarian</option><option value="ca">Catalan</option><option value="zh_CN">Chinese (Simplified)</option><option value="zh_TW">Chinese (Traditional)</option><option value="cs">Czech</option><option value="da">Danish</option><option value="nl">Dutch</option><option value="eo">Esperanto</option><option value="et">Estonian</option><option value="fi">Finnish</option><option value="fr">French</option><option value="fy_NL">Frisian</option><option value="gl">Galician</option><option value="ka">Georgian</option><option value="de">German</option><option value="el">Greek</option><option value="gu_IN">Gujarati</option><option value="he">Hebrew</option><option value="hi_IN">Hindi</option><option value="hu">Hungarian</option><option value="is">Icelandic</option><option value="id">Indonesian</option><option value="ga_IE">Irish</option><option value="it">Italian</option><option value="ja">Japanese</option><option value="kn">Kannada</option><option value="ko">Korean</option><option value="ku">Kurdish</option><option value="lv">Latvian</option><option value="lt">Lithuanian</option><option value="mk">Macedonian</option><option value="mr">Marathi</option><option value="mn">Mongolian</option><option value="nb_NO">Norwegian (Bokmal)</option><option value="nn_NO">Norwegian (Lengadocian)</option><option value="oc">Occitan (Lengadocian)</option><option value="pl">Polish</option><option value="pt_BR">Portuguese (Brazilian)</option><option value="pt_PT">Portuguese (Portugal)</option><option value="pa_IN">Punjabi</option><option value="ro">Romanian</option><option value="ru">Russian</option><option value="sr">Serbian</option><option value="si">Sinhala</option><option value="sk">Slovak</option><option value="sl">Slovenian</option><option value="es">Spanish</option><option value="es_AR">Spanish (Argentina)</option><option value="sv_SE">Swedish</option><option value="te">Telgu</option><option value="th">Thai</option><option value="tr">Turkish</option><option value="uk">Ukrainian</option></select>
683
- </td>
684
- </tr>
685
- <tr>
686
- <td align="right"><strong><?php _wsl_e( "Your Name", 'wordpress-social-login' ) ?></strong><br />(<?php _wsl_e( "optional", 'wordpress-social-login' ) ?>)</td>
687
- <td>
688
- <input name="wsl_i18n_name" type="text" value="<?php echo htmlspecialchars( $current_user->display_name . " <" . get_bloginfo('admin_email') . ">" ); ?>" class="inputgnrc" style="width:400px;">
689
- </td>
690
- </tr>
691
- <tr>
692
- <td align="right"><strong><?php _wsl_e( "Comment", 'wordpress-social-login' ) ?></strong><br />(<?php _wsl_e( "optional", 'wordpress-social-login' ) ?>)</td>
693
- <td>
694
- <textarea name="wsl_i18n_comment" style="width:400px;height:60px;"></textarea>
695
- </td>
696
- </tr>
697
- </tbody>
698
- </table>
699
- <hr />
700
- <div style="float:right">
701
- <a class="button-primary" href="javascript:void(0);" onClick="wsl_i18n_cla()"><?php _wsl_e( "Submit changes", 'wordpress-social-login' ) ?></a>
702
- </div>
703
  </div>
704
- </form>
705
- <script>
706
- function wsl_i18n_cla(){
707
- jQuery("#wsl_i18n_form").hide()
708
- jQuery("#wsl_i18n").hide()
709
- jQuery("#wsl_i18n_cla").show()
710
- }
711
-
712
- function wsl_i18n_done(){
713
- jQuery("#wsl_i18n_form").hide()
714
- jQuery("#wsl_i18n").hide()
715
- jQuery("#wsl_i18n_cla").hide()
716
-
717
- jQuery("#wsl_admin_tab_content").show()
718
- jQuery("#l10n-footer").show()
719
- }
720
-
721
- function wsl_i18n(){
722
- if(typeof jQuery=="undefined"){
723
- alert( "Error: WordPress Social Login require jQuery to be installed on your wordpress in order to works!" )
724
-
725
- return
726
- }
727
-
728
- jQuery("#wsl_admin_tab_content").hide()
729
- jQuery("#l10n-footer").hide()
730
- jQuery("#wsl_i18n_form").show()
731
- jQuery("#wsl_i18n").show()
732
- jQuery("#wsl_i18n_cla").hide()
733
-
734
- var __wsl_texts = <?php echo json_encode ( array_keys( $WORDPRESS_SOCIAL_LOGIN_TEXTS ) ); ?>
735
-
736
- jQuery.each( __wsl_texts, function(index, string) {
737
- if( string.length >= 2 ){
738
- if( string.length >= 100 ) jQuery("#wsl_i18n_pre").append( index + ".\n" + '<textarea id="wsl_i18n_target_'+ index +'" class="wsl_i18n_input" style="width:98%;height:60px;" name="wsl_i18n_target_'+ index +'">' + string + '</textarea>' + "\n" )
739
- if( string.length < 100 ) jQuery("#wsl_i18n_pre").append( index + ".\n" + '<input id="wsl_i18n_target_'+ index +'" class="wsl_i18n_input inputgnrc" type="text" style="width:98%;" name="wsl_i18n_target_'+ index +'" value="' + string + '" >' + "\n" )
740
 
741
- jQuery("#wsl_i18n_pre").append( '<textarea id="wsl_i18n_default_'+ index +'" style="display:none;" name="wsl_i18n_default_'+ index +'">' + string + '</textarea>' + "\n" )
742
- }
743
 
744
- jQuery("#wsl_i18n_target_" + index).change(function() {
745
- jQuery(this).css( "border-color", "#C09853" )
 
 
 
 
746
 
747
- if( jQuery(this).val() ){
748
- jQuery(this).css( "border-color", "#468847" )
749
- }
750
 
751
- if( jQuery(this).val() == jQuery("#wsl_i18n_default_" + index).val() ){
752
- jQuery(this).css( "border-color", "#DFDFDF" )
753
- }
754
 
755
- if( jQuery(this).val() && jQuery(this).val().length < 2 ){
756
- jQuery(this).css( "border-color", "#B94A48" )
757
- }
758
- })
759
- })
760
- }
761
- </script>
762
- <div id="l10n-footer" style="float: left; display: block; ">
763
- <br style="clear:both;" />
764
- <hr />
765
- <img src="<?php echo $assets_url ?>flags.png">
766
- <a href="#wsltop" onclick="return wsl_i18n();">
767
- <?php _wsl_e( "Help us translate this page into your language", 'wordpress-social-login' ) ?>
768
- </a>
769
- </div>
770
- <?php
771
 
772
- return;
 
 
 
 
 
773
  }
 
 
774
 
775
  // --------------------------------------------------------------------
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
35
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_COMPONENTS;
36
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
37
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_VERSION;
 
38
 
39
  if( isset( $_REQUEST["enable"] ) && isset( $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $_REQUEST["enable"] ] ) ){
40
  $component = $_REQUEST["enable"];
86
 
87
  wsl_admin_ui_error();
88
  }
 
 
 
 
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  // HOOKABLE:
91
+ do_action( "wsl_admin_init_end" );
92
  }
93
 
94
  // --------------------------------------------------------------------
194
  .span4 {
195
  width: 220px;
196
  }
 
 
 
 
 
 
197
  .wsl_connect_with_provider {
198
  text-decoration:none;
199
  cursor:not-allowed;
341
  ?>
342
  </div> <!-- ./wsl_admin_tab_content -->
343
  <div class="clear"></div>
344
+ <?php wsl_admin_help_us_localize_note(); ?>
345
 
346
  <script>
347
  // check for new versions and updates
348
  jQuery.getScript("http://hybridauth.sourceforge.net/wsl/wsl.version.check.and.updates.php?v=<?php echo $WORDPRESS_SOCIAL_LOGIN_VERSION ?>");
349
  </script>
350
  <?php
351
+ if( get_option( 'wsl_settings_development_mode_enabled' ) ){
352
+ wsl_display_dev_mode_debugging_area();
353
+ }
354
+
355
  // HOOKABLE:
356
  do_action( "wsl_admin_ui_footer_end" );
357
  }
378
  }
379
  </style>
380
  <div id="wsl_div_warn">
381
+ <h3 style="margin:0px;"><?php _wsl_e('Oops! We ran into an issue.', 'wordpress-social-login') ?></h3>
382
 
383
  <hr />
384
 
396
  <a class="button-secondary" href="http://hybridauth.sourceforge.net/wsl/support.html" target="_blank"><?php _wsl_e( "Report as bug", 'wordpress-social-login' ) ?></a>
397
  <a class="button-primary" href="options-general.php?page=wordpress-social-login&wslp=components" style="float:right"><?php _wsl_e( "Check enabled components", 'wordpress-social-login' ) ?></a>
398
  </div>
399
+ </div>
 
400
  <?php
401
  // HOOKABLE:
402
  do_action( "wsl_admin_ui_error_end" );
405
  // --------------------------------------------------------------------
406
 
407
  /**
408
+ * Renders WSL #FAIL page
409
  */
410
  function wsl_admin_ui_fail()
411
  {
419
  font-size: 2.8em;
420
  font-weight: 200;
421
  line-height: 1.2em;
422
+ margin: 0;
423
  }
 
 
 
 
 
 
424
  .wsldiv {
425
+ background-color: #fff;
426
+ border: 1px solid #ddd;
427
+ margin: 20px;
428
+ padding: 20px;
429
+ width: 770px;
430
  }
431
  .wsldiv p{
432
  ont-size: 14px;
433
  line-height: 1.8em;
434
  }
435
+ </style>
 
 
 
 
 
 
 
 
 
 
436
 
437
  <div class="wsldiv">
438
  <h1><?php _e("WordPress Social Login - FAIL!", 'wordpress-social-login') ?></h1>
443
  <?php _e('Despite the efforts, the plugin <a href="http://profiles.wordpress.org/miled/" target="_blank">author</a> and other <a href="https://github.com/hybridauth/WordPress-Social-Login/graphs/contributors" target="_blank">contributors</a>, put into <b>WordPress Social Login</b> in terms of reliability, portability, <br />and maintenance', 'wordpress-social-login') ?>.
444
  <b style="color:red;"><?php _e('Your server failed the requirements check for this plugin!', 'wordpress-social-login') ?></b>
445
  </p>
446
+
447
  <p>
448
  <?php _e('These requirements are usually met by default by most "modern" web hosting providers, however some complications may <br />occur with <b>shared hosting</b> and, or <b>custom wordpress installations</b>', 'wordpress-social-login') ?>.
449
  </p>
450
+
451
  <p>
452
+ <?php _e("To determine what may cause this failure, run the <b>WordPress Social Login Requirements Test</b> by clicking the button bellow", 'wordpress-social-login') ?>.
453
 
454
  <br />
455
  <br />
456
+
457
+ <a class="button-primary" href="<?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL ?>/utilities/diagnostics.php" target="_blank"><?php _e("Run the plugin requirements test", 'wordpress-social-login') ?></a>
458
+ <a class="button-primary" href="<?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL ?>/utilities/siteinfo.php" target="_blank"><?php _e("System Information", 'wordpress-social-login') ?></a>
459
+ <a class="button" href="http://hybridauth.sourceforge.net/wsl/faq.html" target="_blank"><?php _e("Read WSL FAQ", 'wordpress-social-login') ?></a>
460
  </p>
461
+ </div>
 
 
 
 
 
 
462
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
463
  <script>
464
  jQuery.getScript("http://hybridauth.sourceforge.net/wsl/wsl.version.check.and.updates.php?v=<?php echo $WORDPRESS_SOCIAL_LOGIN_VERSION ?>&fail=true");
465
  </script>
478
  if( isset( $_REQUEST["wsldwp"] ) && (int) $_REQUEST["wsldwp"] ){
479
  $wsldwp = (int) $_REQUEST["wsldwp"];
480
 
481
+ update_option( "wsl_settings_welcome_panel_enabled", wsl_get_version() );
482
 
483
  return;
484
  }
485
 
486
  // if new user or wsl updated, then we display wsl welcome panel
487
+ if( get_option( 'wsl_settings_welcome_panel_enabled' ) == wsl_get_version() ){
488
  return;
489
  }
490
+
491
+ $wslp = "networks";
492
+
493
+ if( isset( $_REQUEST["wslp"] ) ){
494
+ $wslp = $_REQUEST["wslp"];
495
+ }
496
  ?>
497
  <!--
498
+ if you want to know if a UI was made by developer, then here is a tip: he will always use tables
499
 
500
  //> wsl-w-panel is shamelessly borrowered and modified from wordpress welcome-panel
501
  -->
518
  <b><?php _wsl_e("Get Started", 'wordpress-social-login') ?></b>
519
  </p>
520
  <ul style="margin-left:25px;">
521
+ <li><?php _wsl_e('<a href="http://hybridauth.sourceforge.net/wsl/overview.html?" target="_blank">Plugin Overview</a>', 'wordpress-social-login') ?></li>
522
+ <li><?php _wsl_e('<a href="http://hybridauth.sourceforge.net/wsl/configure.html?" target="_blank">Setup and Configuration</a>', 'wordpress-social-login') ?></li>
523
+ <li><?php _wsl_e('<a href="http://hybridauth.sourceforge.net/wsl/customize.html?" target="_blank">Customize WSL Widgets</a>', 'wordpress-social-login') ?></li>
524
+ <li><?php _wsl_e('<a href="http://hybridauth.sourceforge.net/wsl/userdata.html?" target="_blank">Manage users and contacts</a>', 'wordpress-social-login') ?></li>
525
+ <!--
526
+ <li><?php _wsl_e('<a href="http://hybridauth.sourceforge.net/wsl/index.html?" target="_blank">WSL User Guide</a> and <a href="http://hybridauth.sourceforge.net/wsl/faq.html?" target="_blank">FAQ</a>', 'wordpress-social-login') ?></li>
527
+ -->
528
  </ul>
529
  </td>
530
  <td width="" valign="top">
531
  <br />
532
  <p>
533
+ <b><?php echo sprintf( _wsl__( "What's new on WSL %s", 'wordpress-social-login'), wsl_get_version() ) ?></b>
534
  </p>
535
+
536
  <ul style="margin-left:25px;">
537
+ <li><?php _wsl_e('WSL can be now fully integrated with your <a href="https://buddypress.org" target="_blank">BuddyPress</a> installation', 'wordpress-social-login') ?>.</li>
538
+ <li><?php _wsl_e('WSL Widget is now more flexible than before and can be <a href="http://hybridauth.sourceforge.net/wsl/themes.html?" target="_blank">fully customized</a> to fit you website theme', 'wordpress-social-login') ?>.</li>
539
+ <li><?php _wsl_e('WSL is now updated to work with the latest apis changes of the supported social networks', 'wordpress-social-login') ?>.</li>
540
+ <li><?php _wsl_e('Introducing three new providers : <a href="https://www.reddit.com" target="_blank">Reddit</a>, <a href="https://disqus.com" target="_blank">Disqus</a> and <a href="http://pixelpin.co.uk/" target="_blank">PixelPin</a>', 'wordpress-social-login') ?>.</li>
541
+ <li><?php _wsl_e('WSL <a href="http://hybridauth.sourceforge.net/wsl/developer.html" target="_blank">Hooks</a> has been reworked and few hooks have been depreciated in favour of new ones', 'wordpress-social-login') ?>.</li>
542
+ <li><?php _wsl_e('A number of bugfixes, small enhancements and visual updates', 'wordpress-social-login') ?>.</li>
543
  </ul>
544
  </td>
545
  </tr>
556
  // --------------------------------------------------------------------
557
 
558
  /**
559
+ * Renders wsl localization note
560
  */
561
+ function wsl_admin_help_us_localize_note()
562
  {
563
+ return; // nothing, until I decide otherwise..
564
 
565
+ $assets_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/';
 
 
 
 
 
 
566
 
567
+ ?>
568
+ <div id="l10n-footer" style="float: left; display: block; ">
569
+ <br style="clear:both;" />
570
+ <hr />
571
+ <img src="<?php echo $assets_url ?>flags.png">
572
+ <a href="options-general.php?page=wordpress-social-login&wslp=help&wslhelp=translate"><?php _wsl_e( "Help us translate WordPress Social Login into your language", 'wordpress-social-login' ) ?></a>
573
+ </div>
574
+ <?php
575
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
576
 
577
+ // --------------------------------------------------------------------
578
 
579
+ /**
580
+ * Renders an editor in a page in the typical fashion used in Posts and Pages.
581
+ *
582
+ * Utility.
583
+ */
584
+ function wsl_render_wp_editor( $name, $content )
585
+ {
586
+ // HOOKABLE:
587
+ do_action( "wsl_render_wp_editor_start" );
588
+ ?>
589
+ <div class="postbox">
590
+ <div class="wp-editor-textarea" style="background-color: #FFFFFF;">
591
+ <?php
592
+ wp_editor(
593
+ $content, $name,
594
+ array( 'textarea_name' => $name, 'media_buttons' => true, 'tinymce' => array( 'theme_advanced_buttons1' => 'formatselect,forecolor,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlink' ) )
595
+ );
596
+ ?>
597
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
598
  </div>
599
+ <?php
600
+ // HOOKABLE:
601
+ do_action( "wsl_render_wp_editor_end" );
602
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
603
 
604
+ // --------------------------------------------------------------------
 
605
 
606
+ /**
607
+ * Display WordPress Social Login on settings as submenu
608
+ */
609
+ function wsl_admin_menu()
610
+ {
611
+ add_options_page('WP Social Login', 'WP Social Login', 'manage_options', 'wordpress-social-login', 'wsl_admin_init' );
612
 
613
+ add_action( 'admin_init', 'wsl_register_setting' );
614
+ }
 
615
 
616
+ add_action('admin_menu', 'wsl_admin_menu' );
 
 
617
 
618
+ // --------------------------------------------------------------------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
619
 
620
+ /**
621
+ * Display WordPress Social Login on sidebar
622
+ */
623
+ function wsl_admin_menu_sidebar()
624
+ {
625
+ add_menu_page( 'WP Social Login', 'WP Social Login', 'manage_options', 'wordpress-social-login', 'wsl_admin_init' );
626
  }
627
+
628
+ add_action('admin_menu', 'wsl_admin_menu_sidebar');
629
 
630
  // --------------------------------------------------------------------
includes/services/wsl.authentication.php CHANGED
@@ -3,25 +3,49 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
- * .. Here's where the dragon resides ..
11
  *
12
- * Authenticate users via social networks. to sum things up, here is how stuff works:
 
 
 
 
13
  *
14
- * [icons links] A wild visitor appear and click on one of these providers icons which will redirect him to wp-login.php
15
- * => [wp-login.php] wp-login.php will call wsl_process_login() and attempt to authenticate the user throught Hybridauth Library;
16
- * => [Hybridauth] <=> [Provider] Hybridauth and the Provider will have some little chat on their own;
17
- * => [Provider] If the visitor consent and agrees to authenticate, then horray for you;
18
- * => [wp-login.php] Provider will then redirect the user to back wp-login.php where wsl_process_login() is fired;
19
- * => [callback URL] If things goes as expected, the wsl_process_login will log the user on your website and redirect him (again lolz) there.
 
 
 
 
 
20
  *
21
- * when wsl_process_login() is triggered, it will attempt to reconize the user.
22
- * If he exist on the database as WSL user, then fine we cut things short.
23
- * If not, attempt to reconize users based on his email (this only when users authenticate through Facebook, Google, Yahoo or Foursquare as these provides verified emails).
24
- * Otherwise create new account for him.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  */
26
 
27
  // Exit if accessed directly
@@ -29,731 +53,461 @@ if ( !defined( 'ABSPATH' ) ) exit;
29
 
30
  // --------------------------------------------------------------------
31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  function wsl_process_login()
33
  {
34
- if( ! wsl_process_login_checks() ){
35
- return null;
36
- }
37
 
38
- if( $_REQUEST[ 'action' ] == "wordpress_social_authenticate" ){
39
- wsl_process_login_auth();
40
- }
41
- else{
42
- wsl_process_login_reauth();
43
- }
44
- }
45
-
46
- add_action( 'init', 'wsl_process_login' );
47
-
48
- // --------------------------------------------------------------------
49
-
50
- function wsl_process_login_checks()
51
- {
52
- if( ! isset( $_REQUEST[ 'action' ] ) ){
53
  return false;
54
  }
55
 
56
- if( ! in_array( $_REQUEST[ 'action' ], array( "wordpress_social_login", "wordpress_social_link", "wordpress_social_authenticate" ) ) ){
57
- return false;
58
- }
59
 
60
- // dont be silly
61
- if( $_REQUEST[ 'action' ] == "wordpress_social_link" && ! is_user_logged_in() ){
62
- wsl_render_notices_pages( _wsl__("Bouncer say don't be silly!", 'wordpress-social-login') );
63
 
64
- return false;
65
  }
66
 
67
- if( $_REQUEST[ 'action' ] == "wordpress_social_link" && get_option( 'wsl_settings_bouncer_linking_accounts_enabled' ) != 1 ){
68
- wsl_render_notices_pages( _wsl__("Bouncer say this makes no sense.", 'wordpress-social-login') );
69
-
70
- return false;
71
  }
72
 
73
- // Bouncer :: Allow authentication
74
- if( get_option( 'wsl_settings_bouncer_authentication_enabled' ) == 2 ){
75
- wsl_render_notices_pages( _wsl__("WSL is disabled!", 'wordpress-social-login') );
76
-
77
- return false;
 
 
78
  }
79
 
80
- return true;
 
 
81
  }
82
 
 
 
83
  // --------------------------------------------------------------------
84
 
85
- function wsl_process_login_auth()
 
 
 
 
 
 
 
 
 
86
  {
87
- $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/';
 
88
 
89
- // let display a loading message. should be better than a white screen
90
- if( isset( $_REQUEST["provider"] ) && ! isset( $_REQUEST["redirect_to_provider"] ) ){
91
- wsl_process_login_render_loading_page();
92
- }
93
 
94
- // if user select a provider to login with
95
- // and redirect_to_provider eq ture
96
- if( ! ( isset( $_REQUEST["provider"] ) && isset( $_REQUEST["redirect_to_provider"] ) ) ){
97
- wsl_render_notices_pages( _wsl__("Bouncer says this makes no sense.", 'wordpress-social-login') );
98
 
99
- return false;
100
- }
 
101
 
102
- try{
103
- // Bouncer :: Accounts Linking is enabled
104
- if( get_option( 'wsl_settings_bouncer_linking_accounts_enabled' ) != 1 && isset( $_REQUEST["link"] ) ){
105
- wp_die( _wsl__("Bouncer say you are doin it wrong.", 'wordpress-social-login') );
106
- }
107
 
108
- if( ! isset( $_REQUEST["link"] ) && is_user_logged_in() ){
109
- global $current_user;
110
- get_currentuserinfo();
 
 
111
 
112
- wp_die( sprintf( _wsl__("You are already logged in as <b>%</b>.", 'wordpress-social-login'), $current_user->display_name ) );
113
- }
114
 
115
- # Hybrid_Auth already used?
116
- if ( class_exists('Hybrid_Auth', false) ) {
117
- return wsl_render_notices_pages( _wsl__("Error: Another plugin seems to be using HybridAuth Library and made WordPress Social Login unusable. We recommand to find this plugin and to kill it with fire!", 'wordpress-social-login') );
118
- }
119
 
120
- // load hybridauth
121
- require_once WORDPRESS_SOCIAL_LOGIN_ABS_PATH . "/hybridauth/Hybrid/Auth.php";
 
 
122
 
123
- // selected provider name
124
- $provider = @ trim( strip_tags( $_REQUEST["provider"] ) );
 
 
 
 
 
125
 
126
- // build required configuratoin for this provider
127
- if( ! get_option( 'wsl_settings_' . $provider . '_enabled' ) ){
128
- throw new Exception( _wsl__( 'Unknown or disabled provider', 'wordpress-social-login') );
129
- }
130
-
131
- // default endpoint_url/callback_url
132
- $endpoint_url = WORDPRESS_SOCIAL_LOGIN_HYBRIDAUTH_ENDPOINT_URL;
133
- $callback_url = null; // autogenerated by hybridauth
134
 
135
- // overwrite endpoint_url if need'd
136
- if( get_option( 'wsl_settings_base_url' ) ){
137
- $endpoint_url = ''; // fixme!
138
- $callback_url = ''; // fixme!
139
- }
140
 
141
- // check hybridauth_base_url
142
- if( ! strstr( $endpoint_url, "http://" ) && ! strstr( $endpoint_url, "https://" ) ){
143
- throw new Exception( 'Invalid base_url: ' . $endpoint_url, 9 );
144
- }
145
 
146
- $config = array();
147
- $config["base_url"] = $endpoint_url;
148
- $config["providers"] = array();
149
- $config["providers"][$provider] = array();
150
- $config["providers"][$provider]["enabled"] = true;
151
 
152
- // provider application id ?
153
- if( get_option( 'wsl_settings_' . $provider . '_app_id' ) ){
154
- $config["providers"][$provider]["keys"]["id"] = get_option( 'wsl_settings_' . $provider . '_app_id' );
155
  }
 
156
 
157
- // provider application key ?
158
- if( get_option( 'wsl_settings_' . $provider . '_app_key' ) ){
159
- $config["providers"][$provider]["keys"]["key"] = get_option( 'wsl_settings_' . $provider . '_app_key' );
160
- }
 
161
 
162
- // provider application secret ?
163
- if( get_option( 'wsl_settings_' . $provider . '_app_secret' ) ){
164
- $config["providers"][$provider]["keys"]["secret"] = get_option( 'wsl_settings_' . $provider . '_app_secret' );
165
- }
 
166
 
167
- // reset scope for if facebook
168
- if( strtolower( $provider ) == "facebook" ){
169
- $config["providers"][$provider]["scope"] = "email, user_about_me, user_birthday, user_hometown, user_website";
170
- $config["providers"][$provider]["display"] = "popup";
171
- }
172
 
173
- // reset scope for if google
174
- if( strtolower( $provider ) == "google" ){
175
- $config["providers"][$provider]["scope"] = "https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email";
176
- }
177
 
178
- // Contacts import
179
- if( get_option( 'wsl_settings_contacts_import_facebook' ) == 1 && strtolower( $provider ) == "facebook" ){
180
- $config["providers"][$provider]["scope"] = "email, user_about_me, user_birthday, user_hometown, user_website, read_friendlists";
181
- }
182
 
183
- if( get_option( 'wsl_settings_contacts_import_google' ) == 1 && strtolower( $provider ) == "google" ){
184
- $config["providers"][$provider]["scope"] = "https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.google.com/m8/feeds/";
185
- }
 
186
 
187
- // create an instance for Hybridauth
 
 
 
 
188
  $hybridauth = new Hybrid_Auth( $config );
189
 
190
- // try to authenticate the selected $provider
191
- $params = array();
 
 
 
 
 
 
192
 
193
- // if callback_url defined, overwrite Hybrid_Auth::getCurrentUrl();
194
- if( $callback_url ){
195
- $params["hauth_return_to"] = $callback_url;
196
- }
197
 
198
- $adapter = $hybridauth->authenticate( $provider, $params );
 
199
 
200
- // further testing
201
- if( get_option( 'wsl_settings_development_mode_enabled' ) ){
202
- $profile = $adapter->getUserProfile( $provider );
203
- }
204
 
205
- if( get_option( 'wsl_settings_use_popup' ) == 1 || ! get_option( 'wsl_settings_use_popup' ) ){
206
- ?>
207
- <html><head><script>
208
- function init() {
209
- window.opener.wsl_wordpress_social_login({
210
- 'action' : 'wordpress_social_login',
211
- 'provider' : '<?php echo $provider ?>'
212
- });
213
-
214
- window.close()
215
- }
216
- </script></head><body onload="init();"></body></html>
217
- <?php
218
- }
219
- elseif( get_option( 'wsl_settings_use_popup' ) == 2 ){
220
- $redirect_to = site_url();
221
 
222
- if( isset( $_REQUEST[ 'redirect_to' ] ) ){
223
- $redirect_to = urldecode( $_REQUEST[ 'redirect_to' ] );
224
- }
225
- ?>
226
- <html><head><script>
227
- function init() { document.loginform.submit() }
228
- </script></head><body onload="init();">
229
- <form name="loginform" method="post" action="<?php echo site_url( 'wp-login.php', 'login_post' ); ?>">
230
- <input type="hidden" id="redirect_to" name="redirect_to" value="<?php echo $redirect_to ?>">
231
- <input type="hidden" id="provider" name="provider" value="<?php echo $provider ?>">
232
- <?php
233
- if( isset( $_REQUEST["link"] ) && (int) $_REQUEST["link"] ){
234
- ?>
235
- <input type="hidden" id="action" name="action" value="wordpress_social_link">
236
- <?php
237
- } else {
238
- ?>
239
- <input type="hidden" id="action" name="action" value="wordpress_social_login">
240
- <?php
241
- }
242
- ?>
243
- </form></body></html>
244
- <?php
245
- }
246
- }
247
- catch( Exception $e ){
248
- wsl_process_login_render_error_page( $e, $config, $hybridauth, $adapter, $profile );
249
- }
250
 
251
- die();
 
252
  }
253
 
254
  // --------------------------------------------------------------------
255
 
256
- function wsl_process_login_render_error_page( $e, $config, $hybridauth, $adapter, $profile )
 
 
 
 
 
 
 
 
 
257
  {
258
- $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/';
 
259
 
260
- $message = _wsl__("Unspecified error!", 'wordpress-social-login');
261
- $hint = "";
262
 
263
- switch( $e->getCode() ){
264
- case 0 : $message = _wsl__("Unspecified error.", 'wordpress-social-login'); break;
265
- case 1 : $message = _wsl__("Hybriauth configuration error.", 'wordpress-social-login'); break;
266
- case 2 : $message = _wsl__("Provider not properly configured.", 'wordpress-social-login'); break;
267
- case 3 : $message = _wsl__("Unknown or disabled provider.", 'wordpress-social-login'); break;
268
- case 4 : $message = _wsl__("Missing provider application credentials.", 'wordpress-social-login');
269
- $hint = sprintf( _wsl__("<b>What does this error mean ?</b><br />Most likely, you didn't setup the correct application credentials for this provider. These credentials are required in order for <b>%s</b> users to access your website and for WordPress Social Login to work.", 'wordpress-social-login'), $provider ) . _wsl__('<br />Instructions for use can be found in the <a href="http://hybridauth.sourceforge.net/wsl/configure.html" target="_blank">User Manual</a>.', 'wordpress-social-login');
270
- break;
271
- case 5 : $message = _wsl__("Authentification failed. The user has canceled the authentication or the provider refused the connection.", 'wordpress-social-login'); break;
272
- case 6 : $message = _wsl__("User profile request failed. Most likely the user is not connected to the provider and he should to authenticate again.", 'wordpress-social-login');
273
- if( is_object( $adapter ) ) $adapter->logout();
274
- break;
275
- case 7 : $message = _wsl__("User not connected to the provider.", 'wordpress-social-login');
276
- if( is_object( $adapter ) ) $adapter->logout();
277
- break;
278
- case 8 : $message = _wsl__("Provider does not support this feature.", 'wordpress-social-login'); break;
279
 
280
- case 9 : $message = $e->getMessage(); break;
281
- }
282
 
283
- @ session_destroy();
284
- ?>
285
- <!DOCTYPE html>
286
- <head>
287
- <meta name="robots" content="NOINDEX, NOFOLLOW">
288
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
289
- <title></title>
290
- <style>
291
- HR {
292
- width:100%;
293
- border: 0;
294
- border-bottom: 1px solid #ccc;
295
- padding: 50px;
296
- }
297
- html {
298
- background: #f9f9f9;
299
- }
300
- #wsl {
301
- background: #fff;
302
- color: #333;
303
- font-family: sans-serif;
304
- margin: 2em auto;
305
- padding: 1em 2em;
306
- -webkit-border-radius: 3px;
307
- border-radius: 3px;
308
- border: 1px solid #dfdfdf;
309
- max-width: 700px;
310
- font-size: 14px;
311
- }
312
- </style>
313
- <head>
314
- <body>
315
- <div id="wsl">
316
- <table width="100%" border="0">
317
- <tr>
318
- <td align="center"><br /><img src="<?php echo $assets_base_url ?>alert.png" /></td>
319
- </tr>
320
- <tr>
321
- <td align="center"><br /><h4><?php _wsl_e("Something bad happen!", 'wordpress-social-login') ?></h4><br /></td>
322
- </tr>
323
- <tr>
324
- <td align="center">
325
- <p style="line-height: 20px;padding: 8px;background-color: #FFEBE8;border:1px solid #CC0000;border-radius: 3px;padding: 10px;text-align:center;">
326
- <?php echo $message ; ?>
327
- </p>
328
- </td>
329
- </tr>
330
-
331
- <?php if( $hint ) { ?>
332
- <tr>
333
- <td align="center">
334
- <p style="line-height: 25px;padding: 8px;border-top:1px solid #ccc;padding: 10px;text-align:left;">
335
- <?php echo $hint ; ?>
336
- </p>
337
- </td>
338
- </tr>
339
- <?php } ?>
340
-
341
- <?php
342
- // Development mode on?
343
- if( get_option( 'wsl_settings_development_mode_enabled' ) ){
344
- wsl_process_login_render_debug_section( $e, $config, $hybridauth, $adapter, $profile );
345
- }
346
- ?>
347
- </table>
348
- </div>
349
- </body>
350
- </html>
351
- <?php
352
- die();
353
- }
354
-
355
- // --------------------------------------------------------------------
356
-
357
- function wsl_process_login_render_debug_section( $e, $config, $hybridauth, $adapter, $profile )
358
- {
359
- ?>
360
- <tr>
361
- <td align="center">
362
- <div style="padding: 5px;margin: 5px;background: none repeat scroll 0 0 #F5F5F5;border-radius:3px;">
363
- <div id="bug_report">
364
- <form method="post" action="http://hybridauth.sourceforge.net/reports/index.php?product=wp-plugin&v=<?php echo $_SESSION["wsl::plugin"] ?>">
365
- <table width="90%" border="0">
366
- <tr>
367
- <td align="left" valign="top">
368
- <h3>Expection</h3>
369
- <pre style="width:800px;"><?php print_r( $e ) ?></pre>
370
-
371
- <hr />
372
-
373
- <h3>HybridAuth</h3>
374
- <pre style="width:800px;"><?php print_r( array( $config, $hybridauth, $adapter, $profile ) ) ?></pre>
375
- </td>
376
- </tr>
377
- <tr>
378
- <td align="center" valign="top">
379
- <input type="submit" style="width: 300px;height: 33px;" value="Send the error report to the developer" />
380
- </td>
381
- </tr>
382
- </table>
383
-
384
- <textarea name="report" style="display:none;"><?php echo base64_encode( print_r( array( $e, $config, $hybridauth, $adapter, $profile, $_SERVER ), TRUE ) ) ?></textarea>
385
- </form>
386
- <small>
387
- <?php _wsl_e("Note: This message can be disabled from the plugin settings by setting <b>Development mode</b> to <b>Disabled</b>", 'wordpress-social-login') ?>.
388
- </small>
389
- </div>
390
- </div>
391
- </td>
392
- </tr>
393
- <?php
394
- }
395
 
396
- // --------------------------------------------------------------------
 
 
397
 
398
- function wsl_process_login_render_loading_page()
399
- {
400
- $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/';
401
 
402
- // selected provider
403
- $provider = @ trim( strip_tags( $_REQUEST["provider"] ) );
404
 
405
- if( isset( $_REQUEST["link"] ) && (int) $_REQUEST["link"] ){
406
- // todo
407
- }
408
- else{
409
- $_SESSION["HA::STORE"] = ARRAY();
410
- }
411
- ?>
412
- <!DOCTYPE html>
413
- <head>
414
- <meta name="robots" content="NOINDEX, NOFOLLOW">
415
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
416
- <title><?php _wsl_e("Redirecting...", 'wordpress-social-login') ?></title>
417
- <head>
418
- <script>
419
- function init(){
420
- setTimeout( function(){window.location.href = window.location.href + "&redirect_to_provider=true"}, 750 );
421
- }
422
- </script>
423
- <style>
424
- html {
425
- background: #f9f9f9;
426
- }
427
- #wsl {
428
- background: #fff;
429
- color: #333;
430
- font-family: sans-serif;
431
- margin: 2em auto;
432
- padding: 1em 2em;
433
- -webkit-border-radius: 3px;
434
- border-radius: 3px;
435
- border: 1px solid #dfdfdf;
436
- max-width: 700px;
437
- font-size: 14px;
438
- }
439
- </style>
440
- </head>
441
- <body onload="init();">
442
- <div id="wsl">
443
- <table width="100%" border="0">
444
- <tr>
445
- <td align="center" height="40px"><br /><br /><?php echo sprintf( _wsl__( "Contacting <b>%s</b>, please wait...", 'wordpress-social-login'), ucfirst( $provider ) ) ?></td>
446
- </tr>
447
- <tr>
448
- <td align="center" height="80px" valign="middle"><img src="<?php echo $assets_base_url ?>loading.gif" /></td>
449
- </tr>
450
- </table>
451
- </div>
452
- </body>
453
- </html>
454
- <?php
455
- die();
456
  }
457
 
458
  // --------------------------------------------------------------------
459
 
460
- function wsl_process_login_reauth()
 
 
 
 
 
 
 
 
 
461
  {
462
- // HOOKABLE:
463
- do_action( "wsl_hook_process_login_before_start" );
464
 
465
- // HOOKABLE:
466
- $redirect_to = apply_filters("wsl_hook_process_login_alter_redirect_to", wsl_process_login_get_redirect_to() ) ;
 
 
 
 
 
467
 
468
- // HOOKABLE:
469
- $provider = apply_filters("wsl_hook_process_login_alter_provider", wsl_process_login_get_provider() ) ;
 
 
470
 
471
- // authenticate user via a social network ( $provider )
472
- list(
473
- $user_id , // ..
474
- $adapter , // ..
475
- $hybridauth_user_profile , // ..
476
- $hybridauth_user_id , // ..
477
- $hybridauth_user_email , // ..
478
- $request_user_login , // ..
479
- $request_user_email , // ..
480
- )
481
- = wsl_process_login_hybridauth_authenticate( $provider, $redirect_to );
482
 
483
- // if user found on database
484
- if( $user_id ){
485
- $user_data = get_userdata( $user_id );
486
- $user_login = $user_data->user_login;
487
- $user_email = $hybridauth_user_profile->email;
488
- }
489
 
490
- // otherwise, create new user and associate provider identity
491
- else{
492
- list(
493
- $user_id , // ..
494
- $user_login , // ..
495
- $user_email , // ..
496
- )
497
- = wsl_process_login_create_wp_user( $provider, $hybridauth_user_profile, $request_user_login, $request_user_email );
498
  }
499
 
500
- // There was a bug when *_create_wp_user returned WP_Error, so just in case
501
- if( ! is_integer( $user_id ) ){
502
- return wsl_render_notices_pages( _wsl__("Invalid user_id returned by create_wp_user.", 'wordpress-social-login') );
503
  }
504
 
505
- // finally create a wp session for the user
506
- return wsl_process_login_authenticate_wp_user( $user_id, $provider, $redirect_to, $adapter, $hybridauth_user_profile );
507
- }
508
-
509
- // --------------------------------------------------------------------
510
 
511
- function wsl_process_login_get_redirect_to()
512
- {
513
- if ( isset( $_REQUEST[ 'redirect_to' ] ) && $_REQUEST[ 'redirect_to' ] != '' ){
514
- $redirect_to = $_REQUEST[ 'redirect_to' ];
515
 
516
- // Redirect to https if user wants ssl
517
- if ( isset( $secure_cookie ) && $secure_cookie && false !== strpos( $redirect_to, 'wp-admin') ){
518
- $redirect_to = preg_replace( '|^http://|', 'https://', $redirect_to );
519
- }
520
 
521
- if ( strpos( $redirect_to, 'wp-admin') && ! is_user_logged_in() ){
522
- $redirect_to = get_option( 'wsl_settings_redirect_url' );
523
- }
524
 
525
- if ( strpos( $redirect_to, 'wp-login.php') ){
526
- $redirect_to = get_option( 'wsl_settings_redirect_url' );
527
  }
 
 
 
 
 
528
  }
529
 
530
- if( get_option( 'wsl_settings_redirect_url' ) != site_url() ){
531
- $redirect_to = get_option( 'wsl_settings_redirect_url' );
532
- }
533
-
534
- if( empty( $redirect_to ) ){
535
- $redirect_to = get_option( 'wsl_settings_redirect_url' );
536
  }
537
 
538
- if( empty( $redirect_to ) ){
539
- $redirect_to = site_url();
540
- }
541
 
542
- return $redirect_to;
543
- }
 
544
 
545
- // --------------------------------------------------------------------
 
 
 
 
 
546
 
547
- function wsl_process_login_get_provider()
548
- {
549
- // selected provider name
550
- $provider = @ trim( strip_tags( $_REQUEST["provider"] ) );
551
-
552
- return $provider;
553
- }
554
 
555
- // --------------------------------------------------------------------
556
 
557
- function wsl_process_login_hybridauth_authenticate( $provider, $redirect_to )
558
- {
559
- try{
560
- # Hybrid_Auth already used?
561
- if ( class_exists('Hybrid_Auth', false) ) {
562
- return wsl_render_notices_pages( _wsl__("Error: Another plugin seems to be using HybridAuth Library and made WordPress Social Login unusable. We recommand to find this plugin and to kill it with fire!", 'wordpress-social-login') );
563
- }
564
 
565
- // load hybridauth
566
- require_once WORDPRESS_SOCIAL_LOGIN_ABS_PATH . "/hybridauth/Hybrid/Auth.php";
 
 
567
 
568
- // build required configuratoin for this provider
569
- if( ! get_option( 'wsl_settings_' . $provider . '_enabled' ) ){
570
- throw new Exception( 'Unknown or disabled provider' );
 
571
  }
572
 
573
- $config = array();
574
- $config["providers"] = array();
575
- $config["providers"][$provider] = array();
576
- $config["providers"][$provider]["enabled"] = true;
577
 
578
- // provider application id ?
579
- if( get_option( 'wsl_settings_' . $provider . '_app_id' ) ){
580
- $config["providers"][$provider]["keys"]["id"] = get_option( 'wsl_settings_' . $provider . '_app_id' );
 
 
581
  }
582
 
583
- // provider application key ?
584
- if( get_option( 'wsl_settings_' . $provider . '_app_key' ) ){
585
- $config["providers"][$provider]["keys"]["key"] = get_option( 'wsl_settings_' . $provider . '_app_key' );
586
  }
 
 
 
 
 
 
587
 
588
- // provider application secret ?
589
- if( get_option( 'wsl_settings_' . $provider . '_app_secret' ) ){
590
- $config["providers"][$provider]["keys"]["secret"] = get_option( 'wsl_settings_' . $provider . '_app_secret' );
 
 
591
  }
592
 
593
- // create an instance for Hybridauth
594
- $hybridauth = new Hybrid_Auth( $config );
 
 
595
 
596
- // try to authenticate the selected $provider
597
- if( $hybridauth->isConnectedWith( $provider ) ){
598
- $adapter = $hybridauth->getAdapter( $provider );
599
 
600
- $hybridauth_user_profile = $adapter->getUserProfile();
 
 
 
601
 
602
- // check hybridauth user email
603
- $hybridauth_user_id = (int) wsl_get_user_by_meta( $provider, $hybridauth_user_profile->identifier );
604
- $hybridauth_user_email = sanitize_email( $hybridauth_user_profile->email );
605
- $hybridauth_user_login = sanitize_user( $hybridauth_user_profile->displayName );
606
-
607
- $request_user_login = "";
608
- $request_user_email = "";
609
-
610
- # {{{ linking new accounts
611
- // Bouncer :: Accounts Linking is enabled
612
- if( get_option( 'wsl_settings_bouncer_linking_accounts_enabled' ) == 1 ){
613
- // if user is linking account
614
- // . we DO import contacts
615
- // . we DO store the user profile
616
- //
617
- // . we DONT create another entry on user table
618
- // . we DONT create nor update his data on usermeata table
619
- if( $_REQUEST[ 'action' ] == "wordpress_social_link" ){
620
- global $current_user;
621
-
622
- get_currentuserinfo();
623
- $user_id = $current_user->ID;
624
-
625
- return wsl_process_login_authenticate_wp_user_linked_account( $user_id, $provider, $redirect_to, $adapter, $hybridauth_user_profile );
626
- }
627
-
628
- // check if connected user is linked account
629
- $linked_account = wsl_get_user_linked_account_by_provider_and_identifier( $provider, $hybridauth_user_profile->identifier );
630
-
631
- // if linked account found, we connect the actual user
632
- if( $linked_account ){
633
- if( count( $linked_account ) > 1 ){
634
- return wsl_render_notices_pages( _wsl__("This $provider is linked to many accounts!", 'wordpress-social-login') );
635
- }
636
-
637
- $user_id = $linked_account[0]->user_id;
638
-
639
- if( ! $user_id ){
640
- return wsl_render_notices_pages( _wsl__("Something wrong!", 'wordpress-social-login') );
641
- }
642
-
643
- return wsl_process_login_authenticate_wp_user( $user_id, $provider, $redirect_to, $adapter, $hybridauth_user_profile );
644
- }
645
- }
646
- # }}} linking new accounts
647
-
648
- # {{{ module Bouncer
649
- // Bouncer :: Filters by emails domains name
650
- if( get_option( 'wsl_settings_bouncer_new_users_restrict_domain_enabled' ) == 1 ){
651
- if( empty( $hybridauth_user_email ) ){
652
- return wsl_render_notices_pages( get_option( 'wsl_settings_bouncer_new_users_restrict_domain_text_bounce' ) );
653
- }
654
-
655
- $list = get_option( 'wsl_settings_bouncer_new_users_restrict_domain_list' );
656
- $list = preg_split( '/$\R?^/m', $list );
657
-
658
- $current = strstr( $hybridauth_user_email, '@' );
659
-
660
- $shall_pass = false;
661
- foreach( $list as $item ){
662
- if( trim( strtolower( "@$item" ) ) == strtolower( $current ) ){
663
- $shall_pass = true;
664
- }
665
- }
666
-
667
- if( ! $shall_pass ){
668
- return wsl_render_notices_pages( get_option( 'wsl_settings_bouncer_new_users_restrict_domain_text_bounce' ) );
669
- }
670
- }
671
 
672
- // Bouncer :: Filters by e-mails addresses
673
- if( get_option( 'wsl_settings_bouncer_new_users_restrict_email_enabled' ) == 1 ){
674
- if( empty( $hybridauth_user_email ) ){
675
- return wsl_render_notices_pages( get_option( 'wsl_settings_bouncer_new_users_restrict_email_text_bounce' ) );
676
- }
677
-
678
- $list = get_option( 'wsl_settings_bouncer_new_users_restrict_email_list' );
679
- $list = preg_split( '/$\R?^/m', $list );
680
-
681
- $shall_pass = false;
682
- foreach( $list as $item ){
683
- if( trim( strtolower( $item ) ) == strtolower( $hybridauth_user_email ) ){
684
- $shall_pass = true;
685
- }
686
- }
687
-
688
- if( ! $shall_pass ){
689
- return wsl_render_notices_pages( get_option( 'wsl_settings_bouncer_new_users_restrict_email_text_bounce' ) );
690
- }
691
- }
692
 
693
- // Bouncer :: Filters by profile urls
694
- if( get_option( 'wsl_settings_bouncer_new_users_restrict_profile_enabled' ) == 1 ){
695
- $list = get_option( 'wsl_settings_bouncer_new_users_restrict_profile_list' );
696
- $list = preg_split( '/$\R?^/m', $list );
697
-
698
- $shall_pass = false;
699
- foreach( $list as $item ){
700
- if( trim( strtolower( $item ) ) == strtolower( $hybridauth_user_profile->profileURL ) ){
701
- $shall_pass = true;
702
- }
703
- }
704
-
705
- if( ! $shall_pass ){
706
- return wsl_render_notices_pages( get_option( 'wsl_settings_bouncer_new_users_restrict_profile_text_bounce' ) );
707
- }
708
- }
709
 
710
- // if user do not exist
711
- if( ! $hybridauth_user_id ){
712
- // Bouncer :: Accept new registrations
713
- if( get_option( 'wsl_settings_bouncer_registration_enabled' ) == 2 ){
714
- return wsl_render_notices_pages( _wsl__("registration is now closed!", 'wordpress-social-login') );
715
- }
716
-
717
- // Bouncer :: Profile Completion
718
- if(
719
- ( get_option( 'wsl_settings_bouncer_profile_completion_require_email' ) == 1 && empty( $hybridauth_user_email ) ) ||
720
- get_option( 'wsl_settings_bouncer_profile_completion_change_username' ) == 1
721
- ){
722
- do
723
- {
724
- list( $shall_pass, $request_user_login, $request_user_email ) = wsl_process_login_complete_registration( $provider, $redirect_to, $hybridauth_user_email, $hybridauth_user_login );
725
- }
726
- while( ! $shall_pass );
727
- }
728
  }
729
- # }}} module Bouncer
730
  }
731
- else{
732
- throw new Exception( 'User not connected with ' . $provider . '!' );
733
- }
734
- }
735
- catch( Exception $e ){
736
- return wsl_render_notices_pages( sprintf( _wsl__("Unspecified error. #%d", 'wordpress-social-login'), $e->getCode() ) );
737
  }
 
738
 
739
- $user_id = null;
 
 
 
740
 
741
- // if the user email is verified, then try to map to legacy account if exist
742
- // > Currently only Facebook, Google, Yahaoo and Foursquare do provide the verified user email.
743
- if ( ! empty( $hybridauth_user_profile->emailVerified ) ){
744
- $user_id = (int) email_exists( $hybridauth_user_profile->emailVerified );
745
- }
746
 
747
- // try to get user by meta if not
748
- if( ! $user_id ){
749
- $user_id = (int) wsl_get_user_by_meta( $provider, $hybridauth_user_profile->identifier );
750
  }
751
 
 
752
  return array(
753
  $user_id,
754
  $adapter,
755
- $hybridauth_user_profile,
756
- $hybridauth_user_id,
757
  $hybridauth_user_email,
758
  $request_user_login,
759
  $request_user_email,
@@ -762,71 +516,83 @@ function wsl_process_login_hybridauth_authenticate( $provider, $redirect_to )
762
 
763
  // --------------------------------------------------------------------
764
 
 
 
 
 
 
765
  function wsl_process_login_create_wp_user( $provider, $hybridauth_user_profile, $request_user_login, $request_user_email )
766
  {
767
- // HOOKABLE: any action to fire right before a user created on database
768
- do_action( 'wsl_hook_process_login_before_create_wp_user' );
769
 
770
- $user_login = null;
771
- $user_email = null;
772
 
773
- // if coming from "complete registration form"
774
- if( $request_user_email && $request_user_login ){
775
  $user_login = $request_user_login;
 
 
 
776
  $user_email = $request_user_email;
777
  }
778
 
779
- # else, validate/generate the login and user email
780
- else{
781
- // generate a valid user login
782
- $user_login = trim( str_replace( ' ', '_', strtolower( $hybridauth_user_profile->displayName ) ) );
783
- $user_email = $hybridauth_user_profile->email;
784
 
785
- if( empty( $user_login ) ){
786
- $user_login = trim( $hybridauth_user_profile->lastName . " " . $hybridauth_user_profile->firstName );
787
- }
 
 
 
788
 
 
789
  if( empty( $user_login ) ){
790
- $user_login = strtolower( $provider ) . "_user_" . md5( $hybridauth_user_profile->identifier );
791
  }
792
 
793
  // user name should be unique
794
- if ( username_exists ( $user_login ) ){
795
  $i = 1;
796
  $user_login_tmp = $user_login;
797
 
798
- do
799
- {
800
  $user_login_tmp = $user_login . "_" . ($i++);
801
- } while (username_exists ($user_login_tmp));
 
802
 
803
  $user_login = $user_login_tmp;
804
  }
 
 
 
 
805
 
806
  // generate an email if none
807
  if ( ! isset ( $user_email ) OR ! is_email( $user_email ) ){
808
- $user_email = strtolower( $provider . "_user_" . $user_login ) . "@example.com";
809
  }
810
 
811
  // email should be unique
812
- if ( email_exists ( $user_email ) ){
813
- do
814
- {
815
- $user_email = md5(uniqid(wp_rand(10000,99000)))."@example.com";
816
- } while( email_exists( $user_email ) );
817
  }
 
818
 
819
- $user_login = sanitize_user ($user_login, true);
820
 
821
- if( ! validate_username( $user_login ) ){
822
- $user_login = strtolower( $provider ) . "_user_" . md5( $hybridauth_user_profile->identifier );
823
- }
824
  }
825
 
826
- $display_name = $hybridauth_user_profile->displayName;
827
-
828
- if( $request_user_login || empty ( $display_name ) ){
829
- $display_name = $user_login;
830
  }
831
 
832
  $userdata = array(
@@ -834,7 +600,7 @@ function wsl_process_login_create_wp_user( $provider, $hybridauth_user_profile,
834
  'user_email' => $user_email,
835
 
836
  'display_name' => $display_name,
837
-
838
  'first_name' => $hybridauth_user_profile->firstName,
839
  'last_name' => $hybridauth_user_profile->lastName,
840
  'user_url' => $hybridauth_user_profile->profileURL,
@@ -843,47 +609,63 @@ function wsl_process_login_create_wp_user( $provider, $hybridauth_user_profile,
843
  'user_pass' => wp_generate_password()
844
  );
845
 
846
- // Bouncer :: Membership level
847
- if( get_option( 'wsl_settings_bouncer_new_users_membership_default_role' ) != "default" ){
848
- $userdata['role'] = get_option( 'wsl_settings_bouncer_new_users_membership_default_role' );
849
- }
 
850
 
851
- // Bouncer :: User Moderation : None
852
- if( get_option( 'wsl_settings_bouncer_new_users_moderation_level' ) == 1 ){
853
- // well do nothing..
854
  }
855
 
856
- // Bouncer :: User Moderation : Yield to Theme My Login plugin
 
 
857
  if( get_option( 'wsl_settings_bouncer_new_users_moderation_level' ) > 100 ){
 
 
 
 
858
  $userdata['role'] = "pending";
859
  }
 
860
 
861
  // HOOKABLE: change the user data
862
- $userdata = apply_filters( 'wsl_hook_process_login_alter_userdata', $userdata, $provider, $hybridauth_user_profile );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
863
 
864
- // HOOKABLE: any action to fire right before a user created on database
865
- do_action( 'wsl_hook_process_login_before_insert_user', $userdata, $provider, $hybridauth_user_profile );
866
 
867
- // HOOKABLE: delegate user insert to a custom function
868
- $user_id = apply_filters( 'wsl_hook_process_login_alter_insert_user', $userdata, $provider, $hybridauth_user_profile );
869
 
870
- // Create a new user
871
  if( ! $user_id || ! is_integer( $user_id ) ){
872
  $user_id = wp_insert_user( $userdata );
873
  }
874
 
875
  // update user metadata
876
  if( $user_id && is_integer( $user_id ) ){
877
- update_user_meta( $user_id, $provider, $hybridauth_user_profile->identifier );
 
878
  }
879
 
880
- // do not continue without user_id or we'll edit god knows what
881
  else {
882
- if( is_wp_error( $user_id ) ){
883
- return wsl_render_notices_pages( _wsl__("An error occurred while creating a new user!" . $user_id->get_error_message(), 'wordpress-social-login') );
884
- }
885
-
886
- return wsl_render_notices_pages( _wsl__("An error occurred while creating a new user!", 'wordpress-social-login') );
887
  }
888
 
889
  // Send notifications
@@ -891,99 +673,243 @@ function wsl_process_login_create_wp_user( $provider, $hybridauth_user_profile,
891
  wsl_admin_notification( $user_id, $provider );
892
  }
893
 
894
- // HOOKABLE: any action to fire right after a user created on database
895
- do_action( 'wsl_hook_process_login_after_create_wp_user', $user_id, $provider, $hybridauth_user_profile );
 
896
 
897
- return array(
898
- $user_id,
899
- $user_login,
900
- $user_email
901
- );
 
 
 
902
  }
903
 
904
  // --------------------------------------------------------------------
905
 
906
- function wsl_process_login_authenticate_wp_user( $user_id, $provider, $redirect_to, $adapter, $hybridauth_user_profile )
 
 
 
 
 
 
 
 
907
  {
908
- // There was a bug when this function received non-integer user_id and updated random users, let's be safe
909
- if( !is_integer( $user_id ) ){
910
- return wsl_render_notices_pages( _wsl__("Invalid user_id", 'wordpress-social-login') );
911
- }
912
 
913
- // calculate user age
914
- $user_age = $hybridauth_user_profile->age;
915
 
916
- // not that precise you say... well welcome to my world
917
- if( ! $user_age && (int) $hybridauth_user_profile->birthYear ){
918
- $user_age = (int) date("Y") - (int) $hybridauth_user_profile->birthYear;
 
919
  }
920
 
921
- // update some stuff
922
- $newdata['user_id'] = $user_id; //not to be changed
923
- $newdata['user'] = $provider;
924
- $newdata['user_gender'] = $hybridauth_user_profile->gender;
925
- $newdata['user_age'] = $user_age;
926
- $newdata['user_image'] = $hybridauth_user_profile->photoURL;
927
-
928
- // HOOKABLE:
929
- $newdata = apply_filters( 'wsl_hook_process_login_alter_update_userdata', $newdata, $hybridauth_user_profile, $provider );
930
 
931
- update_user_meta ( $user_id, 'wsl_user' , $newdata['user'] );
932
- update_user_meta ( $user_id, 'wsl_user_gender', $newdata['user_gender'] );
933
- update_user_meta ( $user_id, 'wsl_user_age' , $newdata['user_age'] );
934
- update_user_meta ( $user_id, 'wsl_user_image' , $newdata['user_image'] );
935
 
936
- // launch contact import if enabled
937
- wsl_import_user_contacts( $provider, $adapter, $user_id );
 
 
 
 
 
 
 
 
938
 
939
- // store user hybridauth user profile if needed
940
- wsl_store_hybridauth_user_data( $user_id, $provider, $hybridauth_user_profile );
 
941
 
942
- // Bouncer :: User Moderation : E-mail Confirmation � Yield to Theme My Login plugin
943
- if( get_option( 'wsl_settings_bouncer_new_users_moderation_level' ) == 101 ){
944
- $redirect_to = site_url( 'wp-login.php', 'login_post' ) . ( strpos( site_url( 'wp-login.php', 'login_post' ), '?' ) ? '&' : '?' ) . "pending=activation";
 
 
945
 
946
- @ Theme_My_Login_User_Moderation::new_user_activation_notification( $user_id );
 
 
947
  }
948
 
949
- // Bouncer :: User Moderation : Admin Approval Yield to Theme My Login plugin
950
- elseif( get_option( 'wsl_settings_bouncer_new_users_moderation_level' ) == 102 ){
951
- $redirect_to = site_url( 'wp-login.php', 'login_post' ) . ( strpos( site_url( 'wp-login.php', 'login_post' ), '?' ) ? '&' : '?' ) . "pending=approval";
 
 
 
 
 
 
 
 
 
 
 
952
  }
953
-
954
- // otherwise, let him go..
 
955
  else{
956
- // HOOKABLE:
957
- do_action( "wsl_hook_process_login_before_set_auth_cookie", $user_id, $provider, $hybridauth_user_profile );
 
 
 
 
 
958
 
959
- // That's it. create a session for user_id and redirect him to redirect_to
960
- wp_set_auth_cookie( $user_id );
961
  }
962
 
963
- // HOOKABLE:
964
- do_action( "wsl_hook_process_login_before_redirect", $user_id, $provider, $hybridauth_user_profile );
 
 
 
 
 
 
 
 
965
 
 
 
966
  wp_safe_redirect( $redirect_to );
967
 
968
- exit();
 
969
  }
970
 
971
  // --------------------------------------------------------------------
972
 
973
- function wsl_process_login_authenticate_wp_user_linked_account( $user_id, $provider, $redirect_to, $hybridauth_user_profile )
 
 
 
 
 
 
 
 
 
 
 
974
  {
975
- // launch contact import if enabled
976
- wsl_import_user_contacts( $provider, $adapter, $user_id );
977
 
978
- // store user hybridauth user profile if needed
979
- wsl_store_hybridauth_user_data( $user_id, $provider, $hybridauth_user_profile );
 
980
 
981
- // HOOKABLE:
982
- do_action( "wsl_hook_process_login_linked_account_before_redirect", $user_id, $provider, $hybridauth_user_profile );
 
983
 
984
- wp_safe_redirect( $redirect_to );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
985
 
986
- exit();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
987
  }
988
 
989
  // --------------------------------------------------------------------
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
+ * Authenticate users via social networks.
11
  *
12
+ **
13
+ * Side note: I don't usually over-comment codes, but this is the main WSL script and I had to since
14
+ * many users with diffrent "skill levels" may want to understand how this piece of code works.
15
+ **
16
+ * To sum things up, here is how WSL works (bit hard to explain, so bare with me):
17
  *
18
+ * [Widget Icons] A wild visitor appear and click on one of widget icons. Obviously he will redirected to wp-login.php (with specific args in the url: &action=wordpress_social_authenticate&provider=..)
19
+ * => [wp-login.php] wp-login.php will first call wsl_process_login() which will attempt to authenticate the user through hybridauth library
20
+ * => [Hybridauth] <=> [Provider] Hybridauth will redirect the user to Provider API and ask for the user authorisation
21
+ * => [Provider] If the visitor consent and agrees to give your website a premission to access his priveate data, then the provider will then redirect the user to back wp-login.php
22
+ * => [wp-login.php] wp-login.php will call wsl_process_login() again, which will attempt to grab the user profile form the provide api and identidy him. if he doesn't exist in database we create a new user
23
+ * => [callback URL] If things goes as expected, the wsl_process_login will log the user into the website and redirect him to where he come from (or Redirect URL).
24
+ *
25
+ * Ex:
26
+ * http://hybridauth.sourceforge.net/wsl/img/wsl_redirections.png
27
+ **
28
+ * Functions execution order is the following:
29
  *
30
+ * wsl_process_login()
31
+ * . wsl_process_login_begin()
32
+ * . . wsl_render_redirect_to_provider_loading_screen()
33
+ * . .
34
+ * . . Hybrid_Auth::authenticate()
35
+ * . . . wsl_process_login_render_error_page()
36
+ * . .
37
+ * . . wsl_render_return_from_provider_loading_screen()
38
+ * .
39
+ * . wsl_process_login_end()
40
+ * . . wsl_process_login_end_get_user_data()
41
+ * . . . Hybrid_Auth::isConnectedWith()
42
+ * . . . . wsl_process_login_render_error_page()
43
+ * . . .
44
+ * . . . wsl_process_login_complete_registration()
45
+ * . .
46
+ * . . wsl_process_login_create_wp_user()
47
+ * . . wsl_process_login_update_wsl_user_data()
48
+ * . . wsl_process_login_authenticate_wp_user()
49
  */
50
 
51
  // Exit if accessed directly
53
 
54
  // --------------------------------------------------------------------
55
 
56
+ /**
57
+ * Entry point to the authentication process
58
+ *
59
+ * This function runs after WordPress has finished loading but before any headers are sent.
60
+ * This function will analyse the current URL parameters and start the login process whenever an
61
+ * WSL action is found: $_REQUEST['action'] eq wordpress_social_*
62
+ *
63
+ * Example of valid origin url:
64
+ * wp-login.php
65
+ * ?action=wordpress_social_authenticate // current step
66
+ * &provider=Twitter // selected provider
67
+ * &redirect_to=http%3A%2F%2Fexample.com%2Fwordpress%2F%3Fp%3D1 // where the user come from
68
+ *
69
+ * Ref: http://codex.wordpress.org/Plugin_API/Action_Reference/init
70
+ */
71
  function wsl_process_login()
72
  {
73
+ // > action should be either 'wordpress_social_authenticate', 'wordpress_social_profile_completion' or 'wordpress_social_authenticated'
74
+ $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : null;
 
75
 
76
+ if( ! in_array( $action, array( "wordpress_social_authenticate", "wordpress_social_profile_completion", "wordpress_social_authenticated" ) ) ){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  return false;
78
  }
79
 
80
+ // user already logged in?
81
+ if( is_user_logged_in() ){
82
+ global $current_user;
83
 
84
+ get_currentuserinfo();
 
 
85
 
86
+ return wsl_process_login_render_notice_page( sprintf( _wsl__( "You are already logged in as <b>%s</b>.", 'wordpress-social-login' ), $current_user->display_name ) );
87
  }
88
 
89
+ // Bouncer :: Allow authentication?
90
+ if( get_option( 'wsl_settings_bouncer_authentication_enabled' ) == 2 ){
91
+ return wsl_process_login_render_notice_page( _wsl__( "Authentication through social networks is currently disabled.", 'wordpress-social-login' ) );
 
92
  }
93
 
94
+ // HOOKABLE:
95
+ do_action( "wsl_process_login_start" );
96
+
97
+ // if action=wordpress_social_authenticate
98
+ // > start the first part of authentication (redirect the user to the selected provider)
99
+ if( $action == "wordpress_social_authenticate" ){
100
+ return wsl_process_login_begin();
101
  }
102
 
103
+ // if action=wordpress_social_authenticated or action=wordpress_social_profile_completion
104
+ // > finish the authentication process (create new user if doesn't exist in database, then log him in within wordpress)
105
+ wsl_process_login_end();
106
  }
107
 
108
+ add_action( 'init', 'wsl_process_login' );
109
+
110
  // --------------------------------------------------------------------
111
 
112
+ /**
113
+ * Start the first part of authentication
114
+ *
115
+ * Steps:
116
+ * 1. Display a loading screen while hybridauth is redirecting the user to the selected provider
117
+ * 2. Build the hybridauth config for the selected provider (keys, scope, etc)
118
+ * 3. Instantiate the class Hybrid_Auth and redirect the user to provider to ask for authorisation for this website
119
+ * 4. Display a loading screen after user come back from provider as we redirect the user back to Widget::Redirect URL
120
+ */
121
+ function wsl_process_login_begin()
122
  {
123
+ // HOOKABLE:
124
+ do_action( "wsl_process_login_begin_start" );
125
 
126
+ $config = null;
127
+ $hybridauth = null;
128
+ $provider = null;
129
+ $adapter = null;
130
 
131
+ /* 1. Display a loading screen while hybridauth is redirecting the user to the selected provider */
 
 
 
132
 
133
+ // the loading screen should reflesh it self with a new arg in url: &redirect_to_provider=ture
134
+ if( ! isset( $_REQUEST["redirect_to_provider"] ) ){
135
+ $_SESSION["HA::STORE"] = ARRAY();
136
 
137
+ return wsl_render_redirect_to_provider_loading_screen( wsl_process_login_get_selected_provider() );
138
+ }
 
 
 
139
 
140
+ // if user come from loading screen (&redirect_to_provider=)
141
+ // > check for required args and display an error if any is missing
142
+ if( ! isset( $_REQUEST['provider'] ) || ! isset( $_REQUEST['redirect_to_provider'] ) ){
143
+ return wsl_process_login_render_notice_page( _wsl__( 'Bouncer says this makes no sense.', 'wordpress-social-login' ) );
144
+ }
145
 
146
+ /* 2. Build the hybridauth config for the selected provider (keys, scope, etc) */
 
147
 
148
+ // selected provider name
149
+ $provider = wsl_process_login_get_selected_provider();
 
 
150
 
151
+ // provider enabled?
152
+ if( ! get_option( 'wsl_settings_' . $provider . '_enabled' ) ){
153
+ return wsl_process_login_render_notice_page( _wsl__( "Unknown or disabled provider.", 'wordpress-social-login' ) );
154
+ }
155
 
156
+ // build required configuration for this provider
157
+ $config = array();
158
+ $config["base_url"] = WORDPRESS_SOCIAL_LOGIN_HYBRIDAUTH_ENDPOINT_URL;
159
+ $config["providers"] = array();
160
+ $config["providers"][$provider] = array();
161
+ $config["providers"][$provider]["enabled"] = true;
162
+ $config["providers"][$provider]["keys"] = array( 'id' => null, 'key' => null, 'secret' => null );
163
 
164
+ // provider application id ?
165
+ if( get_option( 'wsl_settings_' . $provider . '_app_id' ) ){
166
+ $config["providers"][$provider]["keys"]["id"] = get_option( 'wsl_settings_' . $provider . '_app_id' );
167
+ }
 
 
 
 
168
 
169
+ // provider application key ?
170
+ if( get_option( 'wsl_settings_' . $provider . '_app_key' ) ){
171
+ $config["providers"][$provider]["keys"]["key"] = get_option( 'wsl_settings_' . $provider . '_app_key' );
172
+ }
 
173
 
174
+ // provider application secret ?
175
+ if( get_option( 'wsl_settings_' . $provider . '_app_secret' ) ){
176
+ $config["providers"][$provider]["keys"]["secret"] = get_option( 'wsl_settings_' . $provider . '_app_secret' );
177
+ }
178
 
179
+ // set default scope and display mode for facebook
180
+ if( strtolower( $provider ) == "facebook" ){
181
+ $config["providers"][$provider]["scope"] = "email, user_about_me, user_birthday, user_hometown, user_website";
182
+ $config["providers"][$provider]["display"] = "popup";
183
+ $config["providers"][$provider]["trustForwarded"] = true;
184
 
185
+ // switch to fb::display 'page' if wsl auth in page
186
+ if ( get_option( 'wsl_settings_use_popup') == 2 ) {
187
+ $config["providers"][$provider]["display"] = "page";
188
  }
189
+ }
190
 
191
+ // set default scope for google
192
+ # https://developers.facebook.com/docs/facebook-login/permissions
193
+ if( strtolower( $provider ) == "google" ){
194
+ $config["providers"][$provider]["scope"] = "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read";
195
+ }
196
 
197
+ // if contacts import enabled for facebook, we request an extra permission 'read_friendlists'
198
+ # https://developers.google.com/+/domains/authentication/scopes
199
+ if( get_option( 'wsl_settings_contacts_import_facebook' ) == 1 && strtolower( $provider ) == "facebook" ){
200
+ $config["providers"][$provider]["scope"] = "email, user_about_me, user_birthday, user_hometown, user_website, read_friendlists";
201
+ }
202
 
203
+ // if contacts import enabled for google, we request an extra permission 'https://www.google.com/m8/feeds/'
204
+ if( get_option( 'wsl_settings_contacts_import_google' ) == 1 && strtolower( $provider ) == "google" ){
205
+ $config["providers"][$provider]["scope"] = "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read https://www.google.com/m8/feeds/";
206
+ }
 
207
 
208
+ // HOOKABLE: allow to overwrite scopes (some people have asked for a way to lower the number of permissions requested)
209
+ $provider_scope = isset( $config["providers"][$provider]["scope"] ) ? $config["providers"][$provider]["scope"] : '' ;
210
+ $config["providers"][$provider]["scope"] = apply_filters( 'wsl_hook_alter_provider_scope', $provider_scope, $provider );
 
211
 
212
+ /* 3. Instantiate the class Hybrid_Auth and redirect the user to provider to ask for authorisation for this website */
 
 
 
213
 
214
+ // load hybridauth main class
215
+ if ( ! class_exists('Hybrid_Auth', false) ){
216
+ require_once WORDPRESS_SOCIAL_LOGIN_ABS_PATH . "/hybridauth/Hybrid/Auth.php";
217
+ }
218
 
219
+ // HOOKABLE:
220
+ do_action( "wsl_hook_process_login_before_hybridauth_authenticate", $provider, $config );
221
+
222
+ try{
223
+ // create an instance oh hybridauth with the generated config
224
  $hybridauth = new Hybrid_Auth( $config );
225
 
226
+ // start the authentication process via hybridauth
227
+ // > if not already connected hybridauth::authenticate() will redirect the user to the provider
228
+ // > where he will be asked for his consent (most providers ask for consent only once).
229
+ // > after that, the provider will redirect the user back to this same page (and this same line).
230
+ // > if the user is successfully connected to provider, then this time hybridauth::authenticate()
231
+ // > will just return the provider adapter
232
+ $adapter = $hybridauth->authenticate( $provider );
233
+ }
234
 
235
+ // if hybridauth fails to authenticate the user, then we display an error message
236
+ catch( Exception $e ){
237
+ return wsl_process_login_render_error_page( $e, $config, $hybridauth, $provider, $adapter );
238
+ }
239
 
240
+ // HOOKABLE:
241
+ do_action( "wsl_hook_process_login_after_hybridauth_authenticate", $provider, $config );
242
 
243
+ /* 4. Display a loading screen after user come back from provider as we redirect the user back to Widget::Redirect URL */
 
 
 
244
 
245
+ // get Widget::Authentication display
246
+ $wsl_settings_use_popup = get_option( 'wsl_settings_use_popup' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
 
248
+ $redirect_to = isset( $_REQUEST[ 'redirect_to' ] ) ? urldecode( $_REQUEST[ 'redirect_to' ] ) : site_url();
249
+
250
+ // build the authenticateD, which will make wsl_process_login() fire the next step wsl_process_login_end()
251
+ $authenticated_url = site_url( 'wp-login.php', 'login_post' ) . ( strpos( site_url( 'wp-login.php', 'login_post' ), '?' ) ? '&' : '?' ) . "action=wordpress_social_authenticated&provider=" . $provider;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252
 
253
+ // display a loading screen
254
+ return wsl_render_return_from_provider_loading_screen( $provider, $authenticated_url, $redirect_to, $wsl_settings_use_popup );
255
  }
256
 
257
  // --------------------------------------------------------------------
258
 
259
+ /**
260
+ * Finish the authentication process
261
+ *
262
+ * Steps:
263
+ * 1. Get the user profile from provider
264
+ * 2. Create new wordpress user if he didn't exist in database
265
+ * 3. Store his Hybridauth profile, contacts and BP mapping
266
+ * 4. Authenticate the user within wordpress
267
+ */
268
+ function wsl_process_login_end()
269
  {
270
+ // HOOKABLE:
271
+ do_action( "wsl_process_login_end_start" );
272
 
273
+ // HOOKABLE: set a custom Redirect URL
274
+ $redirect_to = apply_filters( 'wsl_hook_process_login_alter_redirect_to', wsl_process_login_get_redirect_to() ) ;
275
 
276
+ // HOOKABLE: reset the provider id
277
+ $provider = apply_filters( 'wsl_hook_process_login_alter_provider', wsl_process_login_get_selected_provider() ) ;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
 
279
+ // is it a new or returning user
280
+ $is_new_user = false;
281
 
282
+ // returns user data after he authenticate via hybridauth
283
+ list(
284
+ $user_id , // user_id if found in database
285
+ $adapter , // hybriauth adapter for the selected provider
286
+ $hybridauth_user_profile, // hybriauth user profile
287
+ $hybridauth_user_email , // user email as provided by the provider
288
+ $request_user_login , // username typed by users in Profile Completion
289
+ $request_user_email , // email typed by users in Profile Completion
290
+ )
291
+ = wsl_process_login_end_get_user_data( $provider, $redirect_to );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
292
 
293
+ // if no associated user were found in wslusersprofiles, create new WordPress user
294
+ if( ! $user_id ){
295
+ $user_id = wsl_process_login_create_wp_user( $provider, $hybridauth_user_profile, $request_user_login, $request_user_email );
296
 
297
+ $is_new_user = true;
298
+ }
 
299
 
300
+ // store user hybridauth profile (wslusersprofiles), contacts (wsluserscontacts) and buddypress mapping
301
+ wsl_process_login_update_wsl_user_data( $is_new_user, $user_id, $provider, $adapter, $hybridauth_user_profile );
302
 
303
+ // finally create a wordpress session for the user
304
+ wsl_process_login_authenticate_wp_user( $user_id, $provider, $redirect_to, $adapter, $hybridauth_user_profile );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
  }
306
 
307
  // --------------------------------------------------------------------
308
 
309
+ /**
310
+ * Returns user data after he authenticate via hybridauth
311
+ *
312
+ * Steps:
313
+ * 1. Grab the user profile from hybridauth
314
+ * 2. Run Bouncer::Filters if enabled (domains, emails, profiles urls)
315
+ * 3 Check if user exist in database by looking for the couple (Provider name, Provider user ID) or verified email
316
+ * 4. If Bouncer::Profile Completion is enabled and user didn't exist, we require the user to complete the registration (user name & email)
317
+ */
318
+ function wsl_process_login_end_get_user_data( $provider, $redirect_to )
319
  {
320
+ // HOOKABLE:
321
+ do_action( "wsl_process_login_end_get_user_data_start", $provider, $redirect_to );
322
 
323
+ $user_id = null;
324
+ $config = null;
325
+ $hybridauth = null;
326
+ $adapter = null;
327
+ $hybridauth_user_profile = null;
328
+ $request_user_login = '';
329
+ $request_user_email = '';
330
 
331
+ // provider is enabled?
332
+ if( ! get_option( 'wsl_settings_' . $provider . '_enabled' ) ){
333
+ return wsl_process_login_render_notice_page( _wsl__( "Unknown or disabled provider.", 'wordpress-social-login' ) );
334
+ }
335
 
336
+ /* 1. Grab the user profile from hybridauth */
 
 
 
 
 
 
 
 
 
 
337
 
338
+ // build required configuration for this provider. this we will only need provider keys
339
+ $config = array();
340
+ $config["providers"] = array();
341
+ $config["providers"][$provider] = array();
342
+ $config["providers"][$provider]["enabled"] = true;
 
343
 
344
+ // provider application id ?
345
+ if( get_option( 'wsl_settings_' . $provider . '_app_id' ) ){
346
+ $config["providers"][$provider]["keys"]["id"] = get_option( 'wsl_settings_' . $provider . '_app_id' );
 
 
 
 
 
347
  }
348
 
349
+ // provider application key ?
350
+ if( get_option( 'wsl_settings_' . $provider . '_app_key' ) ){
351
+ $config["providers"][$provider]["keys"]["key"] = get_option( 'wsl_settings_' . $provider . '_app_key' );
352
  }
353
 
354
+ // provider application secret ?
355
+ if( get_option( 'wsl_settings_' . $provider . '_app_secret' ) ){
356
+ $config["providers"][$provider]["keys"]["secret"] = get_option( 'wsl_settings_' . $provider . '_app_secret' );
357
+ }
 
358
 
359
+ // load hybridauth main class
360
+ if ( ! class_exists('Hybrid_Auth', false) ){
361
+ require_once WORDPRESS_SOCIAL_LOGIN_ABS_PATH . "/hybridauth/Hybrid/Auth.php";
362
+ }
363
 
364
+ try{
365
+ // create an instance of hybridauth with the generated config
366
+ $hybridauth = new Hybrid_Auth( $config );
 
367
 
368
+ // if user authenticated successfully with social network
369
+ if( $hybridauth->isConnectedWith( $provider ) ){
370
+ $adapter = $hybridauth->getAdapter( $provider );
371
 
372
+ // grab user profile via hybridauth api
373
+ $hybridauth_user_profile = $adapter->getUserProfile();
374
  }
375
+
376
+ // if user not connected to provider (ie: session lost, url forged)
377
+ else{
378
+ return wsl_process_login_render_notice_page( sprintf( _wsl__( "User not connected with <b>%s</b>", 'wordpress-social-login' ), $provider ) );
379
+ }
380
  }
381
 
382
+ // if things didn't go as expected, we dispay the appropriate error message
383
+ catch( Exception $e ){
384
+ return wsl_process_login_render_error_page( $e, $config, $hybridauth, $provider, $adapter );
 
 
 
385
  }
386
 
387
+ /* 2. Run Bouncer::Filters if enabled (domains, emails, profiles urls) */
 
 
388
 
389
+ // check hybridauth profile
390
+ $hybridauth_user_email = sanitize_email( $hybridauth_user_profile->email );
391
+ $hybridauth_user_login = sanitize_user( $hybridauth_user_profile->displayName, true );
392
 
393
+ # {{{ module Bouncer
394
+ // Bouncer::Filters by emails domains name
395
+ if( get_option( 'wsl_settings_bouncer_new_users_restrict_domain_enabled' ) == 1 ){
396
+ if( empty( $hybridauth_user_email ) ){
397
+ return wsl_process_login_render_notice_page( _wsl__( get_option( 'wsl_settings_bouncer_new_users_restrict_domain_text_bounce' ), 'wordpress-social-login') );
398
+ }
399
 
400
+ $list = get_option( 'wsl_settings_bouncer_new_users_restrict_domain_list' );
401
+ $list = preg_split( '/$\R?^/m', $list );
 
 
 
 
 
402
 
403
+ $current = strstr( $hybridauth_user_email, '@' );
404
 
405
+ $shall_pass = false;
406
+ foreach( $list as $item ){
407
+ if( trim( strtolower( "@$item" ) ) == strtolower( $current ) ){
408
+ $shall_pass = true;
409
+ }
410
+ }
 
411
 
412
+ if( ! $shall_pass ){
413
+ return wsl_process_login_render_notice_page( _wsl__( get_option( 'wsl_settings_bouncer_new_users_restrict_domain_text_bounce' ), 'wordpress-social-login') );
414
+ }
415
+ }
416
 
417
+ // Bouncer::Filters by e-mails addresses
418
+ if( get_option( 'wsl_settings_bouncer_new_users_restrict_email_enabled' ) == 1 ){
419
+ if( empty( $hybridauth_user_email ) ){
420
+ return wsl_process_login_render_notice_page( _wsl__( get_option( 'wsl_settings_bouncer_new_users_restrict_email_text_bounce' ), 'wordpress-social-login') );
421
  }
422
 
423
+ $list = get_option( 'wsl_settings_bouncer_new_users_restrict_email_list' );
424
+ $list = preg_split( '/$\R?^/m', $list );
 
 
425
 
426
+ $shall_pass = false;
427
+ foreach( $list as $item ){
428
+ if( trim( strtolower( $item ) ) == strtolower( $hybridauth_user_email ) ){
429
+ $shall_pass = true;
430
+ }
431
  }
432
 
433
+ if( ! $shall_pass ){
434
+ return wsl_process_login_render_notice_page( _wsl__( get_option( 'wsl_settings_bouncer_new_users_restrict_email_text_bounce' ), 'wordpress-social-login') );
 
435
  }
436
+ }
437
+
438
+ // Bouncer ::Filters by profile urls
439
+ if( get_option( 'wsl_settings_bouncer_new_users_restrict_profile_enabled' ) == 1 ){
440
+ $list = get_option( 'wsl_settings_bouncer_new_users_restrict_profile_list' );
441
+ $list = preg_split( '/$\R?^/m', $list );
442
 
443
+ $shall_pass = false;
444
+ foreach( $list as $item ){
445
+ if( trim( strtolower( $item ) ) == strtolower( $hybridauth_user_profile->profileURL ) ){
446
+ $shall_pass = true;
447
+ }
448
  }
449
 
450
+ if( ! $shall_pass ){
451
+ return wsl_process_login_render_notice_page( _wsl__( get_option( 'wsl_settings_bouncer_new_users_restrict_profile_text_bounce' ), 'wordpress-social-login') );
452
+ }
453
+ }
454
 
455
+ /* 3. Check if user exist in database by looking for the couple (Provider name, Provider user ID) or verified email */
 
 
456
 
457
+ // chech if user already exist in wslusersprofiles
458
+ if( ! $user_id ){
459
+ $user_id = (int) wsl_get_stored_hybridauth_user_id_by_provider_and_provider_uid( $provider, $hybridauth_user_profile->identifier );
460
+ }
461
 
462
+ // check if this user verified email is in use. if true, we link this social network profile to the found WP user
463
+ if( ! empty( $hybridauth_user_profile->emailVerified ) ){
464
+ $user_id = (int) email_exists( $hybridauth_user_profile->emailVerified );
465
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
466
 
467
+ /* 4. If Bouncer::Profile Completion is enabled and user didn't exist, we require the user to complete the registration (user name & email) */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
468
 
469
+ // if associated WP user not found in wslusersprofiles nor he have verified email in use
470
+ if( ! $user_id ){
471
+ // Bouncer :: Accept new registrations
472
+ if( get_option( 'wsl_settings_bouncer_registration_enabled' ) == 2 ){
473
+ return wsl_process_login_render_notice_page( _wsl__( "Registration is now closed.", 'wordpress-social-login' ) );
474
+ }
 
 
 
 
 
 
 
 
 
 
475
 
476
+ // Bouncer :: Profile Completion
477
+ if(
478
+ ( get_option( 'wsl_settings_bouncer_profile_completion_require_email' ) == 1 && empty( $hybridauth_user_email ) ) ||
479
+ get_option( 'wsl_settings_bouncer_profile_completion_change_username' ) == 1
480
+ ){
481
+ do
482
+ {
483
+ list(
484
+ $shall_pass,
485
+ $request_user_login,
486
+ $request_user_email
487
+ ) = wsl_process_login_complete_registration( $provider, $redirect_to, $hybridauth_user_email, $hybridauth_user_login );
 
 
 
 
 
 
488
  }
489
+ while( ! $shall_pass );
490
  }
 
 
 
 
 
 
491
  }
492
+ # }}} module Bouncer
493
 
494
+ // if user is found in wslusersprofiles but the associated WP user account no longer exist
495
+ // > this should never happen! but just in case: we delete the user wslusersprofiles/wsluserscontacts entries and we reset the process
496
+ if( $user_id ){
497
+ $user_data = get_userdata( $user_id );
498
 
499
+ if( ! $user_data ){
500
+ wsl_delete_stored_hybridauth_user_data( $user_id );
 
 
 
501
 
502
+ return wsl_process_login_render_notice_page( _wsl__("Sorry, we couldn't connect you. Please try again.", 'wordpress-social-login') );
503
+ }
 
504
  }
505
 
506
+ // returns user data
507
  return array(
508
  $user_id,
509
  $adapter,
510
+ $hybridauth_user_profile,
 
511
  $hybridauth_user_email,
512
  $request_user_login,
513
  $request_user_email,
516
 
517
  // --------------------------------------------------------------------
518
 
519
+ /**
520
+ * Create a new wordpress user
521
+ *
522
+ * Ref: http://codex.wordpress.org/Function_Reference/wp_insert_user
523
+ */
524
  function wsl_process_login_create_wp_user( $provider, $hybridauth_user_profile, $request_user_login, $request_user_email )
525
  {
526
+ // HOOKABLE:
527
+ do_action( "wsl_process_login_create_wp_user_start", $provider, $hybridauth_user_profile, $request_user_login, $request_user_email );
528
 
529
+ $user_login = '';
530
+ $user_email = '';
531
 
532
+ // if coming from "complete registration form"
533
+ if( $request_user_login ){
534
  $user_login = $request_user_login;
535
+ }
536
+
537
+ if( $request_user_email ){
538
  $user_email = $request_user_email;
539
  }
540
 
541
+ if ( ! $user_login ){
542
+ // attempt to generate user_login from hybridauth user profile display name
543
+ $user_login = $hybridauth_user_profile->displayName;
 
 
544
 
545
+ // sanitize user login
546
+ $user_login = sanitize_user( $user_login, true );
547
+
548
+ // remove spaces and dots
549
+ $user_login = trim( str_replace( array( ' ', '.' ), '_', $user_login ) );
550
+ $user_login = trim( str_replace( '__', '_', $user_login ) );
551
 
552
+ // if user profile display name is not provided
553
  if( empty( $user_login ) ){
554
+ $user_login = strtolower( $provider ) . "_user";
555
  }
556
 
557
  // user name should be unique
558
+ if( username_exists( $user_login ) ){
559
  $i = 1;
560
  $user_login_tmp = $user_login;
561
 
562
+ do{
 
563
  $user_login_tmp = $user_login . "_" . ($i++);
564
+ }
565
+ while( username_exists ($user_login_tmp));
566
 
567
  $user_login = $user_login_tmp;
568
  }
569
+ }
570
+
571
+ if ( ! $user_email ){
572
+ $user_email = $hybridauth_user_profile->email;
573
 
574
  // generate an email if none
575
  if ( ! isset ( $user_email ) OR ! is_email( $user_email ) ){
576
+ $user_email = strtolower( $provider . "_user_" . $user_login ) . '@example.com';
577
  }
578
 
579
  // email should be unique
580
+ if( email_exists ( $user_email ) ){
581
+ do{
582
+ $user_email = md5( uniqid( wp_rand( 10000,99000 ) ) ) . '@example.com';
583
+ }
584
+ while( email_exists( $user_email ) );
585
  }
586
+ }
587
 
588
+ $display_name = $hybridauth_user_profile->displayName;
589
 
590
+ if( $request_user_login ){
591
+ $display_name = sanitize_user( $request_user_login, true );
 
592
  }
593
 
594
+ if( empty( $display_name ) ){
595
+ $display_name = strtolower( $provider ) . "_user";
 
 
596
  }
597
 
598
  $userdata = array(
600
  'user_email' => $user_email,
601
 
602
  'display_name' => $display_name,
603
+
604
  'first_name' => $hybridauth_user_profile->firstName,
605
  'last_name' => $hybridauth_user_profile->lastName,
606
  'user_url' => $hybridauth_user_profile->profileURL,
609
  'user_pass' => wp_generate_password()
610
  );
611
 
612
+ # {{{ module Bouncer
613
+ # http://www.jfarthing.com/development/theme-my-login/user-moderation/
614
+ // Bouncer::Membership level
615
+ // when enabled and != 'default', Bouncer::Membership level will defines the new user role
616
+ $wsl_settings_bouncer_new_users_membership_default_role = get_option( 'wsl_settings_bouncer_new_users_membership_default_role' );
617
 
618
+ if( $wsl_settings_bouncer_new_users_membership_default_role != "default" ){
619
+ $userdata['role'] = $wsl_settings_bouncer_new_users_membership_default_role;
 
620
  }
621
 
622
+ // Bouncer::User Moderation
623
+ // > if enabled (Yield to Theme My Login), then we overwrite the user role to 'pending'
624
+ // > if User Moderation is set to Admin Approval then Membership level will be ignored
625
  if( get_option( 'wsl_settings_bouncer_new_users_moderation_level' ) > 100 ){
626
+ // Theme My Login : User Moderation
627
+ // > Upon activation of this module, a new user role will be created, titled "Pending". This role has no privileges by default.
628
+ // > When a user confirms their e-mail address or when you approve a user, they are automatically assigned to the default user role for the blog/site.
629
+ // http://www.jfarthing.com/development/theme-my-login/user-moderation/
630
  $userdata['role'] = "pending";
631
  }
632
+ # }}} module Bouncer
633
 
634
  // HOOKABLE: change the user data
635
+ $userdata = apply_filters( 'wsl_hook_process_login_alter_wp_insert_user_data', $userdata, $provider, $hybridauth_user_profile );
636
+
637
+
638
+ /** IMPORTANT: wsl_hook_process_login_alter_userdata is DEPRECIATED since 2.2.1 and WILL BE REMOVED, please don't use it. See: http://hybridauth.sourceforge.net/wsl/developer.html */
639
+ $userdata = apply_filters( 'wsl_hook_process_login_alter_userdata', $userdata, $provider, $hybridauth_user_profile );
640
+ /** IMPORTANT: wsl_hook_process_login_alter_userdata is DEPRECIATED since 2.2.1 and WILL BE REMOVED, please don't use it. See: http://hybridauth.sourceforge.net/wsl/developer.html */
641
+
642
+
643
+ // HOOKABLE: This action runs just before creating a new wordpress user.
644
+ do_action( 'wsl_hook_process_login_before_wp_insert_user', $userdata, $provider, $hybridauth_user_profile );
645
+
646
+
647
+ /** IMPORTANT: wsl_hook_process_login_before_insert_user is DEPRECIATED since 2.2.1 and WILL BE REMOVED, please don't use it. See: http://hybridauth.sourceforge.net/wsl/developer.html */
648
+ do_action( 'wsl_hook_process_login_before_insert_user', $userdata, $provider, $hybridauth_user_profile );
649
+ /** IMPORTANT: wsl_hook_process_login_before_insert_user is DEPRECIATED since 2.2.1 and WILL BE REMOVED, please don't use it. See: http://hybridauth.sourceforge.net/wsl/developer.html */
650
 
 
 
651
 
652
+ // HOOKABLE: This action runs just before creating a new wordpress user, it delegate user insert to a custom function.
653
+ $user_id = apply_filters( 'wsl_hook_process_login_delegate_wp_insert_user', $userdata, $provider, $hybridauth_user_profile );
654
 
655
+ // Create a new WordPress user
656
  if( ! $user_id || ! is_integer( $user_id ) ){
657
  $user_id = wp_insert_user( $userdata );
658
  }
659
 
660
  // update user metadata
661
  if( $user_id && is_integer( $user_id ) ){
662
+ update_user_meta( $user_id, 'wsl_current_provider' , $provider );
663
+ update_user_meta( $user_id, 'wsl_current_user_image' , $hybridauth_user_profile->photoURL );
664
  }
665
 
666
+ // do not continue without user_id
667
  else {
668
+ return wsl_process_login_render_notice_page( _wsl__( "An error occurred while creating a new user!", 'wordpress-social-login' ) );
 
 
 
 
669
  }
670
 
671
  // Send notifications
673
  wsl_admin_notification( $user_id, $provider );
674
  }
675
 
676
+ // HOOKABLE: This action runs just after a wordpress user has been created
677
+ // > Note: At this point, the user has been added to wordpress database, but NOT CONNECTED.
678
+ do_action( 'wsl_hook_process_login_after_wp_insert_user', $user_id, $provider, $hybridauth_user_profile );
679
 
680
+
681
+ /** IMPORTANT: wsl_hook_process_login_after_create_wp_user is DEPRECIATED since WSL 2.2.1 and WILL BE REMOVED, please don't use it. See: http://hybridauth.sourceforge.net/wsl/developer.html */
682
+ do_action( 'wsl_hook_process_login_after_create_wp_user', $user_id, $provider, $hybridauth_user_profile );
683
+ /** IMPORTANT: wsl_hook_process_login_after_create_wp_user is DEPRECIATED since WSL 2.2.1 and WILL BE REMOVED, please don't use it. See: http://hybridauth.sourceforge.net/wsl/developer.html */
684
+
685
+
686
+ // returns the user created user id
687
+ return $user_id;
688
  }
689
 
690
  // --------------------------------------------------------------------
691
 
692
+ /**
693
+ * Store WSL user data
694
+ *
695
+ * Steps:
696
+ * 1. Store Hybridauth user profile
697
+ * 2. Import user contacts
698
+ * 3. Launch BuddyPress Profile mapping
699
+ */
700
+ function wsl_process_login_update_wsl_user_data( $is_new_user, $user_id, $provider, $adapter, $hybridauth_user_profile )
701
  {
702
+ // HOOKABLE:
703
+ do_action( "wsl_process_login_update_wsl_user_data_start", $is_new_user, $user_id, $provider, $adapter, $hybridauth_user_profile );
 
 
704
 
705
+ // store user hybridauth user profile in table wslusersprofiles
706
+ wsl_store_hybridauth_user_profile( $user_id, $provider, $hybridauth_user_profile );
707
 
708
+ // map hybridauth user profile to buddypress xprofile table, if enabled
709
+ // > Profile mapping will only work with new users. Profile mapping for returning users will implemented in future version of WSL.
710
+ if( $is_new_user ){
711
+ wsl_buddypress_xprofile_mapping( $user_id, $provider, $hybridauth_user_profile );
712
  }
713
 
714
+ // importt user contacts into wslusersprofiles, if enabled
715
+ wsl_store_hybridauth_user_contacts( $user_id, $provider, $adapter );
716
+ }
 
 
 
 
 
 
717
 
718
+ // --------------------------------------------------------------------
 
 
 
719
 
720
+ /**
721
+ * Authenticate a user within wordpress
722
+ *
723
+ * Ref: http://codex.wordpress.org/Function_Reference/wp_set_auth_cookie
724
+ * Ref: http://codex.wordpress.org/Function_Reference/wp_safe_redirect
725
+ */
726
+ function wsl_process_login_authenticate_wp_user( $user_id, $provider, $redirect_to, $adapter, $hybridauth_user_profile )
727
+ {
728
+ // HOOKABLE:
729
+ do_action( "wsl_process_login_authenticate_wp_user_start", $user_id, $provider, $redirect_to, $adapter, $hybridauth_user_profile );
730
 
731
+ // update some fields in usermeta for the current user
732
+ update_user_meta( $user_id, 'wsl_current_provider' , $provider );
733
+ update_user_meta( $user_id, 'wsl_current_user_image' , $hybridauth_user_profile->photoURL );
734
 
735
+ # {{{ module Bouncer
736
+ # http://www.jfarthing.com/development/theme-my-login/user-moderation/
737
+ # https://wordpress.org/support/topic/bouncer-user-moderation-blocks-logins-when-enabled#post-4331601
738
+ $role = '';
739
+ $wsl_settings_bouncer_new_users_moderation_level = get_option( 'wsl_settings_bouncer_new_users_moderation_level' );
740
 
741
+ // get user role
742
+ if( $wsl_settings_bouncer_new_users_moderation_level > 100 ){
743
+ $role = current( get_userdata( $user_id )->roles );
744
  }
745
 
746
+ // if role eq 'pending', we halt the authentication and we redirect the user to the appropriate url (pending=activation or pending=approval)
747
+ if( $role == 'pending' ){
748
+ // Bouncer::User Moderation : E-mail Confirmation
749
+ if( $wsl_settings_bouncer_new_users_moderation_level == 101 ){
750
+ $redirect_to = site_url( 'wp-login.php', 'login_post' ) . ( strpos( site_url( 'wp-login.php', 'login_post' ), '?' ) ? '&' : '?' ) . "pending=activation";
751
+
752
+ // send a new e-mail/activation notification - if TML not enabled, we ensure WSL to keep it quiet
753
+ @ Theme_My_Login_User_Moderation::new_user_activation_notification( $user_id );
754
+ }
755
+
756
+ // Bouncer::User Moderation : Admin Approval
757
+ elseif( $wsl_settings_bouncer_new_users_moderation_level == 102 ){
758
+ $redirect_to = site_url( 'wp-login.php', 'login_post' ) . ( strpos( site_url( 'wp-login.php', 'login_post' ), '?' ) ? '&' : '?' ) . "pending=approval";
759
+ }
760
  }
761
+ # }}} module Bouncer
762
+
763
+ // otherwise, we connect the user with in wordpress (we give him a cookie)
764
  else{
765
+ // HOOKABLE: This action runs just before logging the user in (before creating a WP cookie)
766
+ do_action( "wsl_hook_process_login_before_wp_set_auth_cookie", $user_id, $provider, $hybridauth_user_profile );
767
+
768
+
769
+ /** IMPORTANT: wsl_hook_process_login_before_set_auth_cookie is DEPRECIATED since WSL 2.2.1 and WILL BE REMOVED, please don't use it. See: http://hybridauth.sourceforge.net/wsl/developer.html */
770
+ do_action( 'wsl_hook_process_login_before_set_auth_cookie', $user_id, $provider, $hybridauth_user_profile );
771
+ /** IMPORTANT: wsl_hook_process_login_before_set_auth_cookie is DEPRECIATED since WSL 2.2.1 and WILL BE REMOVED, please don't use it. See: http://hybridauth.sourceforge.net/wsl/developer.html */
772
 
773
+ // Set WP auth cookie
774
+ wp_set_auth_cookie( $user_id, true );
775
  }
776
 
777
+ // HOOKABLE: This action runs just before redirecting the user back to $redirect_to
778
+ // > Note: If you have enabled User Moderation, then the user is NOT NECESSARILY CONNECTED
779
+ // > within wordpress at this point (in case the user $role == 'pending').
780
+ // > To be sure the user is connected, use wsl_hook_process_login_before_wp_set_auth_cookie instead.
781
+ do_action( "wsl_hook_process_login_before_wp_safe_redirect", $user_id, $provider, $hybridauth_user_profile, $redirect_to );
782
+
783
+
784
+ /** IMPORTANT: wsl_hook_process_login_before_redirect is DEPRECIATED since WSL 2.2.1 and WILL BE REMOVED, please don't use it. See: http://hybridauth.sourceforge.net/wsl/developer.html */
785
+ do_action( 'wsl_hook_process_login_before_redirect', $user_id, $provider, $hybridauth_user_profile );
786
+ /** IMPORTANT: wsl_hook_process_login_before_redirect is DEPRECIATED since WSL 2.2.1 and WILL BE REMOVED, please don't use it. See: http://hybridauth.sourceforge.net/wsl/developer.html */
787
 
788
+
789
+ // That's it. We done.
790
  wp_safe_redirect( $redirect_to );
791
 
792
+ // for good measures
793
+ die();
794
  }
795
 
796
  // --------------------------------------------------------------------
797
 
798
+ /**
799
+ * Returns redirect_to (callback url)
800
+ *
801
+ * By default, once a user authenticate, he will be automatically redirected to the page where he come from (referer).
802
+ * If WSL wasn't able to identify the referer url (or if the user come wp-login.php), then they will be redirected to
803
+ * Widget::Redirect URL instead.
804
+ *
805
+ * When Widget::Force redirection is set to Yes, users will be always redirected to Widget::Redirect URL.
806
+ *
807
+ * Note: Widget::Redirect URL can be customised using the filter 'wsl_hook_process_login_alter_redirect_to'
808
+ */
809
+ function wsl_process_login_get_redirect_to()
810
  {
811
+ // force redirection?
812
+ $wsl_settings_redirect_url = get_option( 'wsl_settings_redirect_url' );
813
 
814
+ if( get_option( 'wsl_settings_force_redirect_url' ) == 1 ){
815
+ return $wsl_settings_redirect_url;
816
+ }
817
 
818
+ // get a valid $redirect_to
819
+ if ( isset( $_REQUEST[ 'redirect_to' ] ) && $_REQUEST[ 'redirect_to' ] != '' ){
820
+ $redirect_to = $_REQUEST[ 'redirect_to' ];
821
 
822
+ // Redirect to https if user wants ssl
823
+ if ( isset( $secure_cookie ) && $secure_cookie && false !== strpos( $redirect_to, 'wp-admin') ){
824
+ $redirect_to = preg_replace( '|^http://|', 'https://', $redirect_to );
825
+ }
826
+
827
+ // we don't go there..
828
+ if ( strpos( $redirect_to, 'wp-admin') ){
829
+ $redirect_to = $wsl_settings_redirect_url;
830
+ }
831
+
832
+ // nor there..
833
+ if ( strpos( $redirect_to, 'wp-login.php') ){
834
+ $redirect_to = $wsl_settings_redirect_url;
835
+ }
836
+ }
837
+
838
+ if( empty( $redirect_to ) ){
839
+ $redirect_to = $wsl_settings_redirect_url;
840
+ }
841
+
842
+ if( empty( $redirect_to ) ){
843
+ $redirect_to = site_url();
844
+ }
845
+
846
+ return $redirect_to;
847
+ }
848
+
849
+ // --------------------------------------------------------------------
850
+
851
+ /**
852
+ * Display an error message in case user authentication fails
853
+ */
854
+ function wsl_process_login_render_error_page( $e, $config, $hybridauth, $provider, $adapter )
855
+ {
856
+ // HOOKABLE:
857
+ do_action( "wsl_process_login_render_error_page", $e, $config, $hybridauth, $provider, $adapter );
858
+
859
+ $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/';
860
+
861
+ $message = _wsl__("Unspecified error!", 'wordpress-social-login');
862
+ $notes = "";
863
 
864
+ switch( $e->getCode() ){
865
+ case 0 : $message = _wsl__("Unspecified error.", 'wordpress-social-login'); break;
866
+ case 1 : $message = _wsl__("WordPress Social Login is not properly configured.", 'wordpress-social-login'); break;
867
+ case 2 : $message = sprintf( __wsl__("WordPress Social Login is not properly configured.<br /> <b>%s</b> need to be properly configured.", 'wordpress-social-login'), $provider ); break;
868
+ case 3 : $message = _wsl__("Unknown or disabled provider.", 'wordpress-social-login'); break;
869
+ case 4 : $message = sprintf( _wsl__("WordPress Social Login is not properly configured.<br /> <b>%s</b> requires your application credentials.", 'wordpress-social-login'), $provider );
870
+ $notes = sprintf( _wsl__("<b>What does this error mean ?</b><br />Most likely, you didn't setup the correct application credentials for this provider. These credentials are required in order for <b>%s</b> users to access your website and for WordPress Social Login to work.", 'wordpress-social-login'), $provider ) . _wsl__('<br />Instructions for use can be found in the <a href="http://hybridauth.sourceforge.net/wsl/configure.html" target="_blank">User Manual</a>.', 'wordpress-social-login');
871
+ break;
872
+ case 5 : $message = sprintf( _wsl__("Authentication failed. Either you have cancelled the authentication or <b>%s</b> refused the connection.", 'wordpress-social-login'), $provider ); break;
873
+ case 6 : $message = sprintf( _wsl__("Request failed. Either you have cancelled the authentication or <b>%s</b> refused the connection.", 'wordpress-social-login'), $provider ); break;
874
+ case 7 : $message = _wsl__("You're not connected to the provider.", 'wordpress-social-login'); break;
875
+ case 8 : $message = _wsl__("Provider does not support this feature.", 'wordpress-social-login'); break;
876
+
877
+ case 9 : $message = $e->getMessage(); break;
878
+ }
879
+
880
+ if( is_object( $adapter ) ){
881
+ $adapter->logout();
882
+ }
883
+
884
+ $_SESSION = array();
885
+
886
+ @ session_destroy();
887
+
888
+ return wsl_render_error_page( $message, $notes, $e, array( $config, $hybridauth, $provider, $adapter ) );
889
+ }
890
+
891
+
892
+ // --------------------------------------------------------------------
893
+
894
+ /**
895
+ * Display an notice message
896
+ */
897
+ function wsl_process_login_render_notice_page( $message )
898
+ {
899
+ // HOOKABLE:
900
+ do_action( "wsl_process_login_render_notice_page", $message );
901
+
902
+ return wsl_render_notice_page( $message );
903
+ }
904
+
905
+ // --------------------------------------------------------------------
906
+
907
+ /**
908
+ * Returns the selected provider from _REQUEST
909
+ */
910
+ function wsl_process_login_get_selected_provider()
911
+ {
912
+ return ( isset( $_REQUEST["provider"] ) ? sanitize_text_field( $_REQUEST["provider"] ) : null );
913
  }
914
 
915
  // --------------------------------------------------------------------
includes/services/wsl.mail.notification.php CHANGED
@@ -3,7 +3,7 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
@@ -16,8 +16,9 @@ if ( !defined( 'ABSPATH' ) ) exit;
16
  // --------------------------------------------------------------------
17
 
18
  /**
19
- * send a notification to blog administrator when a new user register using WSL
20
- * again borrowed from http://wordpress.org/extend/plugins/oa-social-login/
 
21
  */
22
  function wsl_admin_notification( $user_id, $provider )
23
  {
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
16
  // --------------------------------------------------------------------
17
 
18
  /**
19
+ * Send a notification to blog administrator when a new user register using WSL
20
+ *
21
+ * also borrowed from http://wordpress.org/extend/plugins/oa-social-login/
22
  */
23
  function wsl_admin_notification( $user_id, $provider )
24
  {
includes/services/wsl.user.avatar.php CHANGED
@@ -3,75 +3,142 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
- * Displaying the user avatar when available on the comment section
 
 
11
  */
12
 
13
  // Exit if accessed directly
14
- if ( !defined( 'ABSPATH' ) ) exit;
15
 
16
  // --------------------------------------------------------------------
17
 
18
  /**
19
- * wsl_user_custom_avatar is borrowed from http://wordpress.org/extend/plugins/oa-social-login/
20
- * thanks a million mate
21
- */
22
  function wsl_user_custom_avatar($avatar, $mixed, $size, $default, $alt)
23
  {
24
  //Check if avatars are enabled
25
- if( get_option ( 'wsl_settings_users_avatars' ) )
26
  {
27
- //Current comment
28
- global $comment;
29
 
30
- //Chosen user
31
- $user_id = null;
32
 
33
- //Check if we have an user identifier
34
- if (is_numeric ($mixed))
 
 
 
 
 
35
  {
36
- if ($mixed > 0)
37
- {
38
- $user_id = $mixed;
39
- }
40
  }
41
- //Check if we are in a comment
42
- elseif (is_object ($comment) AND property_exists ($comment, 'user_id') AND !empty ($comment->user_id))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  {
44
- $user_id = $comment->user_id;
45
  }
46
- //Check if we have an email
47
- elseif (is_string ($mixed) && ($user = get_user_by ('email', $mixed)))
 
 
 
 
 
 
48
  {
49
- $user_id = $user->ID;
50
  }
51
- //Check if we have an user object
52
- else if (is_object ($mixed))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  {
54
- if (property_exists ($mixed, 'user_id') AND is_numeric ($mixed->user_id))
 
55
  {
56
- $user_id = $mixed->user_id;
57
- }
58
- }
59
 
60
- //User found?
61
- if ( $user_id )
62
- {
63
- $user_thumbnail = get_user_meta ( $user_id, 'wsl_user_image', true );
64
 
65
- if ( $user_thumbnail )
66
- {
67
- return '<img src="' . $user_thumbnail . '" class="avatar avatar-wordpress-social-login avatar-' . $size . ' photo" height="' . $size . '" width="' . $size . '" />';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  }
69
  }
70
- }
71
 
72
- return $avatar;
73
  }
74
 
75
- add_filter( 'get_avatar', 'wsl_user_custom_avatar', 10, 5 );
76
 
77
  // --------------------------------------------------------------------
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
+ * Displaying the user avatar when available on the comment section and top bar
11
+ *
12
+ * These functions are borrowed from http://wordpress.org/extend/plugins/oa-social-login/
13
  */
14
 
15
  // Exit if accessed directly
16
+ if( !defined( 'ABSPATH' ) ) exit;
17
 
18
  // --------------------------------------------------------------------
19
 
20
  /**
21
+ * Display users avatars from social networks when available
22
+ */
 
23
  function wsl_user_custom_avatar($avatar, $mixed, $size, $default, $alt)
24
  {
25
  //Check if avatars are enabled
26
+ if( ! get_option( 'wsl_settings_users_avatars' ) )
27
  {
28
+ return $avatar;
29
+ }
30
 
31
+ //Current comment
32
+ global $comment;
33
 
34
+ //Chosen user
35
+ $user_id = null;
36
+
37
+ //Check if we have an user identifier
38
+ if(is_numeric($mixed))
39
+ {
40
+ if($mixed > 0)
41
  {
42
+ $user_id = $mixed;
 
 
 
43
  }
44
+ }
45
+
46
+ //Check if we are in a comment
47
+ elseif(is_object($comment) AND property_exists($comment, 'user_id') AND !empty($comment->user_id))
48
+ {
49
+ $user_id = $comment->user_id;
50
+ }
51
+
52
+ //Check if we have an email
53
+ elseif(is_string($mixed) &&($user = get_user_by('email', $mixed)))
54
+ {
55
+ $user_id = $user->ID;
56
+ }
57
+
58
+ //Check if we have an user object
59
+ else if(is_object($mixed))
60
+ {
61
+ if(property_exists($mixed, 'user_id') AND is_numeric($mixed->user_id))
62
  {
63
+ $user_id = $mixed->user_id;
64
  }
65
+ }
66
+
67
+ //User found?
68
+ if( $user_id )
69
+ {
70
+ $user_thumbnail = get_user_meta( $user_id, 'wsl_current_user_image', true );
71
+
72
+ if( $user_thumbnail )
73
  {
74
+ return '<img src="' . $user_thumbnail . '" class="avatar avatar-wordpress-social-login avatar-' . $size . ' photo" height="' . $size . '" width="' . $size . '" />';
75
  }
76
+ }
77
+
78
+ return $avatar;
79
+ }
80
+
81
+ add_filter( 'get_avatar', 'wsl_user_custom_avatar', 10, 5 );
82
+
83
+ // --------------------------------------------------------------------
84
+
85
+ /**
86
+ * Display users avatars from social networks on buddypress
87
+ */
88
+ function wsl_bp_user_custom_avatar($text, $args)
89
+ {
90
+ //Buddypress component should be enabled
91
+ if( ! wsl_is_component_enabled( 'buddypress' ) ){
92
+ return $text;
93
+ }
94
+
95
+ //Check if avatars display is enabled
96
+ if( ! get_option( 'wsl_settings_users_avatars' ) )
97
+ {
98
+ return $text;
99
+ }
100
+
101
+ //Check arguments
102
+ if(is_array($args))
103
+ {
104
+ //User Object
105
+ if( ! empty( $args['object'] ) AND strtolower( $args ['object'] ) == 'user' )
106
  {
107
+ //User Identifier
108
+ if( ! empty( $args ['item_id'] ) AND is_numeric( $args ['item_id'] ) )
109
  {
110
+ $user_data = get_userdata( $args ['item_id'] );
 
 
111
 
112
+ //Retrieve user
113
+ if( $user_data !== false )
114
+ {
115
+ $user_thumbnail = get_user_meta( $args ['item_id'], 'wsl_user_image', true );
116
 
117
+ //Retrieve Avatar
118
+ if( $user_thumbnail !== false)
119
+ {
120
+ //Thumbnail retrieved
121
+ if( strlen( trim( $user_thumbnail ) ) > 0 )
122
+ {
123
+ //Build Image tags
124
+ $img_alt = "";
125
+
126
+ $img_class = ('class="' .(!empty($args ['class']) ?($args ['class'] . ' ') : '') . 'avatar-wordpress-social-login" ');
127
+ $img_width = (!empty($args ['width']) ? 'width="' . $args ['width'] . '" ' : '');
128
+ $img_height = (!empty($args ['height']) ? 'height="' . $args ['height'] . '" ' : '');
129
+
130
+ //Replace
131
+ $text = preg_replace('#<img[^>]+>#i', '<img src="' . $user_thumbnail . '" ' . $img_alt . $img_class . $img_height . $img_width . '/>', $text);
132
+ }
133
+ }
134
+ }
135
  }
136
  }
137
+ }
138
 
139
+ return $text;
140
  }
141
 
142
+ add_filter( 'bp_core_fetch_avatar', 'wsl_bp_user_custom_avatar', 10, 2 );
143
 
144
  // --------------------------------------------------------------------
includes/services/wsl.user.data.php CHANGED
@@ -3,11 +3,13 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
  * User data functions (database related)
 
 
11
  */
12
 
13
  // Exit if accessed directly
@@ -15,111 +17,202 @@ if ( !defined( 'ABSPATH' ) ) exit;
15
 
16
  // --------------------------------------------------------------------
17
 
18
- /**
19
- * Return all user prodile stored on wslusersprofiles
20
- */
21
- function wsl_get_user_linked_account_by_user_id( $user_id )
22
  {
23
  global $wpdb;
24
 
25
- $sql = "SELECT * FROM `{$wpdb->prefix}wslusersprofiles` where user_id = '$user_id'";
26
- $rs = $wpdb->get_results( $sql );
27
 
28
- return $rs;
29
  }
30
 
31
  // --------------------------------------------------------------------
32
 
33
- /**
34
- * Return a contact data
35
- */
36
- function wsl_get_contact_data_by_user_id( $field, $contact_id ){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  global $wpdb;
38
 
39
- $sql = "SELECT $field as data_field FROM `{$wpdb->prefix}wsluserscontacts` where ID = '$contact_id'";
40
- $rs = $wpdb->get_results( $sql );
41
 
42
- return $rs[0]->data_field;
43
  }
44
 
45
  // --------------------------------------------------------------------
46
 
47
- function wsl_get_user_by_meta( $provider, $user_uid )
48
  {
49
  global $wpdb;
50
 
51
- $sql = "SELECT user_id FROM `{$wpdb->prefix}usermeta` WHERE meta_key = '%s' AND meta_value = '%s'";
52
 
53
- return $wpdb->get_var( $wpdb->prepare( $sql, $provider, $user_uid ) );
54
  }
55
 
56
  // --------------------------------------------------------------------
57
 
58
- function wsl_get_user_data_by_id( $field, $user_id )
59
  {
60
  global $wpdb;
61
 
62
- $sql = "SELECT %s FROM `{$wpdb->prefix}users` WHERE ID = '%s'";
63
 
64
- return $wpdb->get_var( $wpdb->prepare( $sql, $field, $user_id ) );
65
  }
66
 
67
  // --------------------------------------------------------------------
68
 
69
- function wsl_get_user_linked_account_by_provider_and_identifier( $provider, $identifier )
70
  {
71
  global $wpdb;
72
 
73
- $sql = "SELECT * FROM `{$wpdb->prefix}wslusersprofiles` where provider = '$provider' and identifier = '$identifier'";
74
- $rs = $wpdb->get_results( $sql );
75
 
76
- return $rs;
77
  }
78
 
79
  // --------------------------------------------------------------------
80
 
81
- function wsl_store_hybridauth_user_data( $user_id, $provider, $profile )
82
  {
83
  global $wpdb;
84
 
85
- $sql = "SELECT id, object_sha FROM `{$wpdb->prefix}wslusersprofiles` where user_id = '$user_id' and provider = '$provider'";
86
- $rs = $wpdb->get_results( $sql );
87
 
88
- $profile_sha = sha1( serialize( $profile ) );
 
 
 
89
 
90
- // if $profile didnt change, no need for update
91
- if( $rs && $rs[0]->object_sha == $profile_sha ){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  return;
93
  }
94
 
95
  $table_data = array(
 
96
  "user_id" => $user_id,
97
  "provider" => $provider,
98
- "object_sha" => $profile_sha
99
  );
100
 
101
- foreach( $profile as $key => $value ) {
102
- $table_data[ strtolower($key) ] = (string) $value;
103
  }
104
 
105
- // if $profile updated we re/store on database
106
- if( $rs && $rs[0]->object_sha != $profile_sha ){
107
- $wpdb->update( "{$wpdb->prefix}wslusersprofiles", $table_data, array( "id" => $rs[0]->id ) );
108
- }
109
- else{
110
- $wpdb->insert( "{$wpdb->prefix}wslusersprofiles", $table_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  }
 
 
112
  }
113
 
114
  // --------------------------------------------------------------------
115
 
116
- /**
117
- * Contacts import
118
- *
119
- * We import a user contact per provider only once.
120
- */
121
- function wsl_import_user_contacts( $provider, $adapter, $user_id )
122
  {
 
 
 
 
 
 
123
  if( ! (
124
  get_option( 'wsl_settings_contacts_import_facebook' ) == 1 && strtolower( $provider ) == "facebook" ||
125
  get_option( 'wsl_settings_contacts_import_google' ) == 1 && strtolower( $provider ) == "google" ||
@@ -130,20 +223,31 @@ function wsl_import_user_contacts( $provider, $adapter, $user_id )
130
  return;
131
  }
132
 
133
- global $wpdb;
 
 
 
 
 
 
 
 
 
 
 
134
 
135
  // grab the user's friends list
136
- $user_contacts = $adapter->getUserContacts();
137
- // print_r( $user_contacts ); die();
138
- // update contact only one time per provider, this behaviour may change depend on the feedback reviced
 
 
 
 
139
  if( ! $user_contacts ){
140
  return;
141
  }
142
 
143
- $wpdb->query(
144
- $wpdb->prepare( "DELETE FROM `{$wpdb->prefix}wsluserscontacts` WHERE user_id = '%d' AND provider = '%s'", $user_id, $provider )
145
- );
146
-
147
  foreach( $user_contacts as $contact ){
148
  $wpdb->insert(
149
  "{$wpdb->prefix}wsluserscontacts",
@@ -162,96 +266,102 @@ function wsl_import_user_contacts( $provider, $adapter, $user_id )
162
 
163
  // --------------------------------------------------------------------
164
 
165
- function wsl_get_list_connected_providers()
166
  {
167
- // load hybridauth
168
- require_once WORDPRESS_SOCIAL_LOGIN_ABS_PATH . "/hybridauth/Hybrid/Auth.php";
169
-
170
- GLOBAL $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
171
-
172
- $config = array();
173
 
174
- foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
175
- $provider_id = @ $item["provider_id"];
176
-
177
- $config["providers"][$provider_id]["enabled"] = true;
178
  }
179
 
180
- $hybridauth = new Hybrid_Auth( $config );
181
-
182
- return Hybrid_Auth::getConnectedProviders();
183
- }
184
-
185
- // --------------------------------------------------------------------
186
-
187
- function wsl_get_user_linked_accounts_by_user_id( $user_id )
188
- {
189
- global $wpdb;
190
-
191
- $sql = "SELECT * FROM `{$wpdb->prefix}wslusersprofiles` where user_id = '$user_id'";
192
- $rs = $wpdb->get_results( $sql );
193
-
194
- return $rs;
195
- }
196
-
197
- // --------------------------------------------------------------------
198
-
199
- function wsl_get_user_linked_accounts_field_by_id( $id, $field )
200
- {
201
- global $wpdb;
202
-
203
- $sql = "SELECT $field as data_field FROM `{$wpdb->prefix}wslusersprofiles` where id = '$id'";
204
- $rs = $wpdb->get_results( $sql );
205
-
206
- return $rs[0]->data_field;
207
- }
208
-
209
- // --------------------------------------------------------------------
210
-
211
- function wsl_get_user_by_meta_key_and_user_id( $meta_key, $user_id )
212
- {
213
- global $wpdb;
214
-
215
- $sql = "SELECT meta_value FROM `{$wpdb->prefix}usermeta` where meta_key = '$meta_key' and user_id = '$user_id'";
216
- $rs = $wpdb->get_results( $sql );
217
-
218
- return $rs[0]->meta_value;
219
- }
220
-
221
- // --------------------------------------------------------------------
222
-
223
- function wsl_get_user_data_by_user_id( $field, $user_id )
224
- {
225
- global $wpdb;
226
 
227
- $sql = "SELECT $field as data_field FROM `{$wpdb->prefix}users` where ID = '$user_id'";
228
- $rs = $wpdb->get_results( $sql );
 
229
 
230
- return $rs[0]->data_field;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
  }
232
 
233
  // --------------------------------------------------------------------
234
 
235
- function wsl_delete_userprofiles( $user_id )
236
  {
237
  global $wpdb;
238
 
239
- $sql = "DELETE FROM `{$wpdb->prefix}wslusersprofiles` where user_id = '$user_id'";
240
- $wpdb->query( $sql );
241
- }
242
-
243
- add_action( 'delete_user', 'wsl_delete_userprofiles' );
244
 
245
- // --------------------------------------------------------------------
246
-
247
- function wsl_delete_usercontacts( $user_id )
248
- {
249
- global $wpdb;
250
 
251
- $sql = "DELETE FROM `{$wpdb->prefix}wsluserscontacts` where user_id = '$user_id'";
252
- $wpdb->query( $sql );
253
  }
254
 
255
- add_action( 'delete_user', 'wsl_delete_usercontacts' );
256
 
257
  // --------------------------------------------------------------------
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
  * User data functions (database related)
11
+ *
12
+ * This code is loosely commented: functions names should be self-explanatory.
13
  */
14
 
15
  // Exit if accessed directly
17
 
18
  // --------------------------------------------------------------------
19
 
20
+ function wsl_get_wordpess_users_count()
 
 
 
21
  {
22
  global $wpdb;
23
 
24
+ $sql = "SELECT COUNT( * ) AS items FROM `{$wpdb->prefix}users`";
 
25
 
26
+ return $wpdb->get_var( $sql );
27
  }
28
 
29
  // --------------------------------------------------------------------
30
 
31
+ function wsl_get_wsl_users_count()
32
+ {
33
+ global $wpdb;
34
+
35
+ $sql = "SELECT COUNT( distinct user_id ) AS items FROM `{$wpdb->prefix}wslusersprofiles`";
36
+
37
+ return $wpdb->get_var( $sql );
38
+ }
39
+
40
+ // --------------------------------------------------------------------
41
+
42
+ function wsl_get_stored_hybridauth_user_profiles_count()
43
+ {
44
+ global $wpdb;
45
+
46
+ $sql = "SELECT COUNT(`id`) FROM `{$wpdb->prefix}wslusersprofiles`";
47
+
48
+ return $wpdb->get_var( $sql );
49
+ }
50
+
51
+ // --------------------------------------------------------------------
52
+
53
+ function wsl_get_stored_hybridauth_user_profiles_count_by_field( $field )
54
+ {
55
+ global $wpdb;
56
+
57
+ $sql = "SELECT $field, COUNT( * ) AS items FROM `{$wpdb->prefix}wslusersprofiles` GROUP BY $field ORDER BY items DESC";
58
+
59
+ return $wpdb->get_results( $sql );
60
+ }
61
+
62
+ // --------------------------------------------------------------------
63
+
64
+ function wsl_get_stored_hybridauth_user_profiles_grouped_by_user_id( $offset, $limit )
65
+ {
66
  global $wpdb;
67
 
68
+ $sql = "SELECT * FROM `{$wpdb->prefix}wslusersprofiles` GROUP BY user_id LIMIT %d, %d";
 
69
 
70
+ return $wpdb->get_results( $wpdb->prepare( $sql, $offset, $limit ) );
71
  }
72
 
73
  // --------------------------------------------------------------------
74
 
75
+ function wsl_get_stored_hybridauth_user_contacts_count_by_user_id( $user_id )
76
  {
77
  global $wpdb;
78
 
79
+ $sql = "SELECT COUNT( * ) FROM `{$wpdb->prefix}wsluserscontacts` where user_id = %d";
80
 
81
+ return $wpdb->get_var( $wpdb->prepare( $sql, $user_id ) );
82
  }
83
 
84
  // --------------------------------------------------------------------
85
 
86
+ function wsl_get_stored_hybridauth_user_contacts_by_user_id( $user_id, $offset, $limit )
87
  {
88
  global $wpdb;
89
 
90
+ $sql = "SELECT * FROM `{$wpdb->prefix}wsluserscontacts` where user_id = %d LIMIT %d, %d";
91
 
92
+ return $wpdb->get_results( $wpdb->prepare( $sql, $user_id, $offset, $limit ) );
93
  }
94
 
95
  // --------------------------------------------------------------------
96
 
97
+ function wsl_get_stored_hybridauth_user_id_by_provider_and_provider_uid( $provider, $provider_uid )
98
  {
99
  global $wpdb;
100
 
101
+ $sql = "SELECT user_id FROM `{$wpdb->prefix}wslusersprofiles` WHERE provider = %s AND identifier = %s";
 
102
 
103
+ return $wpdb->get_var( $wpdb->prepare( $sql, $provider, $provider_uid ) );
104
  }
105
 
106
  // --------------------------------------------------------------------
107
 
108
+ function wsl_get_stored_hybridauth_user_profile_by_provider_and_provider_uid( $provider, $provider_uid )
109
  {
110
  global $wpdb;
111
 
112
+ $sql = "SELECT * FROM `{$wpdb->prefix}wslusersprofiles` WHERE provider = %s AND identifier = %s";
 
113
 
114
+ return $wpdb->get_results( $wpdb->prepare( $sql, $provider, $provider_uid ) );
115
+ }
116
+
117
+ // --------------------------------------------------------------------
118
 
119
+ function wsl_get_stored_hybridauth_user_profile_id_by_provider_and_provider_uid( $provider, $provider_uid )
120
+ {
121
+ global $wpdb;
122
+
123
+ $sql = "SELECT id FROM `{$wpdb->prefix}wslusersprofiles` WHERE provider = '%s' AND identifier = '%s'";
124
+
125
+ return $wpdb->get_results( $wpdb->prepare( $sql, $provider, $provider_uid ) );
126
+ }
127
+
128
+ // --------------------------------------------------------------------
129
+
130
+ function wsl_get_stored_hybridauth_user_profiles_by_user_id( $user_id )
131
+ {
132
+ global $wpdb;
133
+
134
+ $sql = "SELECT * FROM `{$wpdb->prefix}wslusersprofiles` where user_id = %d";
135
+
136
+ return $wpdb->get_results( $wpdb->prepare( $sql, $user_id ) );
137
+ }
138
+
139
+ // --------------------------------------------------------------------
140
+
141
+ function wsl_store_hybridauth_user_profile( $user_id, $provider, $profile )
142
+ {
143
+ global $wpdb;
144
+
145
+ $wpdb->show_errors();
146
+
147
+ $sql = "SELECT id, object_sha FROM `{$wpdb->prefix}wslusersprofiles` where user_id = %d and provider = %s";
148
+
149
+ $rs = $wpdb->get_results( $wpdb->prepare( $sql, $user_id, $provider ) );
150
+
151
+ // we only sotre the user profile if it has change since last login.
152
+ $object_sha = sha1( serialize( $profile ) );
153
+
154
+ // checksum
155
+ if( ! empty( $rs ) && $rs[0]->object_sha == $object_sha ){
156
  return;
157
  }
158
 
159
  $table_data = array(
160
+ "id" => 'null',
161
  "user_id" => $user_id,
162
  "provider" => $provider,
163
+ "object_sha" => $object_sha
164
  );
165
 
166
+ if( ! empty( $rs ) ){
167
+ $table_data['id'] = $rs[0]->id;
168
  }
169
 
170
+ $fields = array(
171
+ 'identifier',
172
+ 'profileurl',
173
+ 'websiteurl',
174
+ 'photourl',
175
+ 'displayname',
176
+ 'description',
177
+ 'firstname',
178
+ 'lastname',
179
+ 'gender',
180
+ 'language',
181
+ 'age',
182
+ 'birthday',
183
+ 'birthmonth',
184
+ 'birthyear',
185
+ 'email',
186
+ 'emailverified',
187
+ 'phone',
188
+ 'address',
189
+ 'country',
190
+ 'region',
191
+ 'city',
192
+ 'zip'
193
+ );
194
+
195
+ foreach( $profile as $key => $value ) {
196
+ $key = strtolower($key);
197
+
198
+ if( in_array( $key, $fields ) ){
199
+ $table_data[ $key ] = (string) $value;
200
+ }
201
  }
202
+
203
+ $rs = $wpdb->replace( "{$wpdb->prefix}wslusersprofiles", $table_data );
204
  }
205
 
206
  // --------------------------------------------------------------------
207
 
208
+ function wsl_store_hybridauth_user_contacts( $user_id, $provider, $adapter )
 
 
 
 
 
209
  {
210
+ // component contact should be enabled
211
+ if( ! wsl_is_component_enabled( 'contacts' ) ){
212
+ return;
213
+ }
214
+
215
+ // check if import is enabled for the given provider
216
  if( ! (
217
  get_option( 'wsl_settings_contacts_import_facebook' ) == 1 && strtolower( $provider ) == "facebook" ||
218
  get_option( 'wsl_settings_contacts_import_google' ) == 1 && strtolower( $provider ) == "google" ||
223
  return;
224
  }
225
 
226
+ global $wpdb;
227
+
228
+ $user_contacts = null;
229
+
230
+ // we only import contacts once
231
+ $sql = "SELECT COUNT(`id`) FROM {$wpdb->prefix}wsluserscontacts WHERE user_id = %d AND provider = %s ";
232
+
233
+ $nb_contacts = $wpdb->get_var( $wpdb->prepare( $sql, $user_id, $provider ) );
234
+
235
+ if( $nb_contacts ){
236
+ return;
237
+ }
238
 
239
  // grab the user's friends list
240
+ try{
241
+ $user_contacts = $adapter->getUserContacts();
242
+ }
243
+ catch( Exception $e ){
244
+ // well.. we can't do much.
245
+ }
246
+
247
  if( ! $user_contacts ){
248
  return;
249
  }
250
 
 
 
 
 
251
  foreach( $user_contacts as $contact ){
252
  $wpdb->insert(
253
  "{$wpdb->prefix}wsluserscontacts",
266
 
267
  // --------------------------------------------------------------------
268
 
269
+ function wsl_buddypress_xprofile_mapping( $user_id, $provider, $hybridauth_user_profile )
270
  {
271
+ // component Buddypress should be enabled
272
+ if( ! wsl_is_component_enabled( 'buddypress' ) ){
273
+ return;
274
+ }
 
 
275
 
276
+ // make sure buddypress is loaded.
277
+ // > is this a legit way to check?
278
+ if( ! function_exists( 'xprofile_set_field_data' ) ){
279
+ return;
280
  }
281
 
282
+ // check if profiles mapping is enabled
283
+ $wsl_settings_buddypress_enable_mapping = get_option( 'wsl_settings_buddypress_enable_mapping' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
284
 
285
+ if( $wsl_settings_buddypress_enable_mapping != 1 ){
286
+ return;
287
+ }
288
 
289
+ // get current mapping
290
+ $wsl_settings_buddypress_xprofile_map = get_option( 'wsl_settings_buddypress_xprofile_map' );
291
+
292
+ $hybridauth_fields = array(
293
+ 'identifier' ,
294
+ 'profileURL' ,
295
+ 'webSiteURL' ,
296
+ 'photoURL' ,
297
+ 'displayName' ,
298
+ 'description' ,
299
+ 'firstName' ,
300
+ 'lastName' ,
301
+ 'gender' ,
302
+ 'language' ,
303
+ 'age' ,
304
+ 'birthDay' ,
305
+ 'birthMonth' ,
306
+ 'birthYear' ,
307
+ 'email' ,
308
+ 'phone' ,
309
+ 'address' ,
310
+ 'country' ,
311
+ 'region' ,
312
+ 'city' ,
313
+ 'zip' ,
314
+ );
315
+
316
+ $hybridauth_user_profile = (array) $hybridauth_user_profile;
317
+
318
+ // all check: start mapping process
319
+ if( $wsl_settings_buddypress_xprofile_map ){
320
+ foreach( $wsl_settings_buddypress_xprofile_map as $buddypress_field_id => $field_name ){
321
+ // if data can be found in hybridauth profile
322
+ if( in_array( $field_name, $hybridauth_fields ) ){
323
+ $value = $hybridauth_user_profile[ $field_name ];
324
+
325
+ xprofile_set_field_data( $buddypress_field_id, $user_id, $value );
326
+ }
327
+
328
+ // if eq provider
329
+ if( $field_name == 'provider' ){
330
+ xprofile_set_field_data( $buddypress_field_id, $user_id, $provider );
331
+ }
332
+
333
+ // if eq birthDate
334
+ if( $field_name == 'birthDate' ){
335
+ $value =
336
+ str_pad( (int) $hybridauth_user_profile[ 'birthYear' ], 4, '0', STR_PAD_LEFT )
337
+ . '-' .
338
+ str_pad( (int) $hybridauth_user_profile[ 'birthMonth' ], 2, '0', STR_PAD_LEFT )
339
+ . '-' .
340
+ str_pad( (int) $hybridauth_user_profile[ 'birthDay' ], 2, '0', STR_PAD_LEFT )
341
+ . ' 00:00:00';
342
+
343
+ xprofile_set_field_data( $buddypress_field_id, $user_id, $value );
344
+ }
345
+ }
346
+ }
347
  }
348
 
349
  // --------------------------------------------------------------------
350
 
351
+ function wsl_delete_stored_hybridauth_user_data( $user_id )
352
  {
353
  global $wpdb;
354
 
355
+ $sql = "DELETE FROM `{$wpdb->prefix}wslusersprofiles` where user_id = %d";
356
+ $wpdb->query( $wpdb->prepare( $sql, $user_id ) );
 
 
 
357
 
358
+ $sql = "DELETE FROM `{$wpdb->prefix}wsluserscontacts` where user_id = %d";
359
+ $wpdb->query( $wpdb->prepare( $sql, $user_id ) );
 
 
 
360
 
361
+ delete_user_meta( $user_id, 'wsl_current_provider' );
362
+ delete_user_meta( $user_id, 'wsl_current_user_image' );
363
  }
364
 
365
+ add_action( 'delete_user', 'wsl_delete_stored_hybridauth_user_data' );
366
 
367
  // --------------------------------------------------------------------
includes/services/wsl.utilities.php ADDED
@@ -0,0 +1,385 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * WordPress Social Login
4
+ *
5
+ * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
+ */
8
+
9
+ /**
10
+ * Few utilities and functions
11
+ */
12
+
13
+ // Exit if accessed directly
14
+ if ( !defined( 'ABSPATH' ) ) exit;
15
+
16
+ // --------------------------------------------------------------------
17
+
18
+ /**
19
+ * Return the current used WSL version
20
+ */
21
+ function wsl_get_version()
22
+ {
23
+ global $WORDPRESS_SOCIAL_LOGIN_VERSION;
24
+
25
+ return $WORDPRESS_SOCIAL_LOGIN_VERSION;
26
+ }
27
+
28
+ // --------------------------------------------------------------------
29
+
30
+ /**
31
+ * _e() wrapper
32
+ *
33
+ * This function was used for the localization widget to generate translations per page.
34
+ *
35
+ * kept for compatibility.
36
+ */
37
+ function _wsl_e( $text, $domain )
38
+ {
39
+ echo __( $text, $domain );
40
+ }
41
+
42
+ // --------------------------------------------------------------------
43
+
44
+ /**
45
+ * __() wrapper
46
+ *
47
+ * This function was used for the localization widget to generate translations per page.
48
+ *
49
+ * kept for compatibility.
50
+ */
51
+ function _wsl__( $text, $domain )
52
+ {
53
+ return __( $text, $domain );
54
+ }
55
+
56
+ // --------------------------------------------------------------------
57
+
58
+ /**
59
+ * Check if the current connection is being made over https
60
+ *
61
+ * Borrowed from http://wordpress.org/extend/plugins/oa-social-login/
62
+ */
63
+ function wsl_is_https_on()
64
+ {
65
+ if (!empty ($_SERVER ['SERVER_PORT']))
66
+ {
67
+ if (trim ($_SERVER ['SERVER_PORT']) == '443')
68
+ {
69
+ return true;
70
+ }
71
+ }
72
+
73
+ if (!empty ($_SERVER ['HTTP_X_FORWARDED_PROTO']))
74
+ {
75
+ if (strtolower (trim ($_SERVER ['HTTP_X_FORWARDED_PROTO'])) == 'https')
76
+ {
77
+ return true;
78
+ }
79
+ }
80
+
81
+ if (!empty ($_SERVER ['HTTPS']))
82
+ {
83
+ if (strtolower (trim ($_SERVER ['HTTPS'])) == 'on' OR trim ($_SERVER ['HTTPS']) == '1')
84
+ {
85
+ return true;
86
+ }
87
+ }
88
+
89
+ return false;
90
+ }
91
+
92
+ // --------------------------------------------------------------------
93
+
94
+ /**
95
+ * Return the current url
96
+ *
97
+ * Borrowed from http://wordpress.org/extend/plugins/oa-social-login/
98
+ */
99
+ function wsl_get_current_url()
100
+ {
101
+ //Extract parts
102
+ $request_uri = (isset ($_SERVER ['REQUEST_URI']) ? $_SERVER ['REQUEST_URI'] : $_SERVER ['PHP_SELF']);
103
+ $request_protocol = (wsl_is_https_on () ? 'https' : 'http');
104
+ $request_host = (isset ($_SERVER ['HTTP_X_FORWARDED_HOST']) ? $_SERVER ['HTTP_X_FORWARDED_HOST'] : (isset ($_SERVER ['HTTP_HOST']) ? $_SERVER ['HTTP_HOST'] : $_SERVER ['SERVER_NAME']));
105
+
106
+ //Port of this request
107
+ $request_port = '';
108
+
109
+ //We are using a proxy
110
+ if (isset ($_SERVER ['HTTP_X_FORWARDED_PORT']))
111
+ {
112
+ // SERVER_PORT is usually wrong on proxies, don't use it!
113
+ $request_port = intval ($_SERVER ['HTTP_X_FORWARDED_PORT']);
114
+ }
115
+ //Does not seem like a proxy
116
+ elseif (isset ($_SERVER ['SERVER_PORT']))
117
+ {
118
+ $request_port = intval ($_SERVER ['SERVER_PORT']);
119
+ }
120
+
121
+ // Remove standard ports
122
+ $request_port = (!in_array ($request_port, array (80, 443)) ? $request_port : '');
123
+
124
+ //Build url
125
+ $current_url = $request_protocol . '://' . $request_host . ( ! empty ($request_port) ? (':'.$request_port) : '') . $request_uri;
126
+
127
+ // HOOKABLE:
128
+ $current_url = apply_filters( 'wsl_hook_alter_current_url', $current_url );
129
+
130
+ //Done
131
+ return $current_url;
132
+ }
133
+
134
+ // --------------------------------------------------------------------
135
+
136
+ /**
137
+ * Display a debugging area.
138
+ *
139
+ * This function is highly inspired by the Query Monitor.
140
+ * https://wordpress.org/plugins/query-monitor/
141
+ *
142
+ * IMPORTANT: Use this only if Dev mode is enabled
143
+ *
144
+ * Note: in order for this function to display the sql queries, 'SAVEQUERIES' should be defined as true in 'wp-config.php'
145
+ */
146
+ function wsl_display_dev_mode_debugging_area()
147
+ {
148
+ global $wpdb, $wp_actions , $wp_filter;
149
+ ?>
150
+ <style>
151
+ .wsl-dev-nonselectsql {
152
+ color: #a0a !important;
153
+ }
154
+ .wsl-dev-expensivesql {
155
+ color: #f44 !important;
156
+ }
157
+ .wsl-dev-optionfunc {
158
+ color: #4a4 !important;
159
+ }
160
+ .wsl-dev-wslfunc {
161
+ color: #1468fa !important;
162
+ }
163
+ .wsl-dev-nonwslfunc {
164
+ color: #a0a !important;
165
+ }
166
+ .wsl-dev-usedhook, .wsl-dev-usedhook a {
167
+ color: #1468fa;
168
+ }
169
+ .wsl-dev-usedwslhook {
170
+ color: #a0a !important;
171
+ }
172
+ .wsl-dev-unusedhook, .wsl-dev-unusedhook a{
173
+ color: #a3a3a3 !important;
174
+ }
175
+ .wsl-dev-hookcallback, .wsl-dev-hookcallback a {
176
+ color: #4a4 !important;
177
+ }
178
+ .wsl-dev-table {
179
+ width:100%
180
+ border: 1px solid #e5e5e5;
181
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
182
+ border-spacing: 0;
183
+ clear: both;
184
+ margin: 0;
185
+ width: 100%;
186
+ }
187
+ .wsl-dev-table td, .wsl-dev-table th {
188
+ border: 1px solid #dddddd;
189
+ padding: 8px 10px;
190
+ background-color: #fff;
191
+ text-align: left;
192
+ }
193
+ </style>
194
+
195
+ <h4>SQL Queries</h4>
196
+ <table class="wsl-dev-table">
197
+ <tbody>
198
+ <tr>
199
+ <td colspan="3">
200
+ 1. SAVEQUERIES should be defined and set to TRUE in order for the queries to show up (http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis)
201
+ <br />
202
+ 2. Calls for get_option() don't necessarily result on a query to the database. WP use both cache and wp_load_alloptions() to load all options at once. Hence, it won't be shown here.
203
+ </td>
204
+ </tr>
205
+ <?php
206
+ $queries = $wpdb->queries;
207
+
208
+ $total_wsl_queries = 0;
209
+ $total_wsl_queries_time = 0;
210
+
211
+ if( $queries )
212
+ foreach( $queries as $item ){
213
+ $sql = $item[0];
214
+ $time = $item[1];
215
+ $stack = $item[2];
216
+
217
+ $sql = str_ireplace( array( ' FROM ', ' WHERE ' , ' LIMIT ' , ' GROUP BY ' , ' ORDER BY ' , ' SET ' ), ARRAY( "\n" . 'FROM ', "\n" . 'WHERE ', "\n" . 'LIMIT ', "\n" . 'GROUP BY ', "\n" . 'ORDER BY ', "\n" . 'SET ' ), $sql );
218
+
219
+ # https://wordpress.org/plugins/query-monitor/
220
+ $callers = explode( ',', $stack );
221
+ $caller = trim( end( $callers ) );
222
+
223
+ if ( false !== strpos( $caller, '(' ) )
224
+ $caller_name = substr( $caller, 0, strpos( $caller, '(' ) ) . '()';
225
+ else
226
+ $caller_name = $caller;
227
+
228
+ if( stristr( $caller_name, 'wsl_' ) || stristr( $sql, 'wsl_' ) || stristr( $stack, 'wsl_' ) ){
229
+ ?>
230
+ <tr>
231
+ <td valign="top" width="450">
232
+ <span class="<?php if( stristr( $caller_name, '_option' ) ) echo 'wsl-dev-optionfunc'; elseif( stristr( $caller_name, 'wsl_' ) ) echo 'wsl-dev-wslfunc'; else echo 'wsl-dev-nonwslfunc'; ?>"><?php echo $caller_name; ?></span>
233
+ <p style="font-size:11px; margin-left:10px">
234
+ <?php
235
+ if( count( $callers ) ){
236
+ # God damn it
237
+ for( $i = count( $callers ) - 1; $i > 0; $i-- ){
238
+ if( ! stristr( $callers[$i], '.php' ) && ! stristr( $callers[$i], 'call_user_func_' ) ){
239
+ echo "#$i &nbsp; " . $callers[$i] . '<br />';
240
+ }
241
+ }
242
+ }
243
+ ?>
244
+ </p>
245
+ </td>
246
+ <td valign="top" class="<?php if( ! stristr( '#' . $sql, '#select ' ) ) echo 'wsl-dev-nonselectsql'; ?>"><?php echo nl2br( $sql ); ?></td>
247
+ <td valign="top" width="50" nowrap class="<?php if( $time > 0.05 ) echo 'wsl-dev-expensivesql'; ?>"><?php echo number_format( $time, 4, '.', '' ); ?></td>
248
+ </tr>
249
+ <?php
250
+ $total_wsl_queries++;
251
+ $total_wsl_queries_time += $time;
252
+ }
253
+ }
254
+ ?>
255
+ <tr>
256
+ <td colspan="2">Total SQL Queries by WSL : <?php echo $total_wsl_queries; ?></td>
257
+ <td width="50" nowrap><?php echo number_format( $total_wsl_queries_time, 4, '.', '' ); ?></td>
258
+ </tr>
259
+ </tbody>
260
+ </table>
261
+
262
+ <h4>Hooks</h4>
263
+ <table class="wsl-dev-table">
264
+ <tbody>
265
+ <?php
266
+ if( $wp_actions )
267
+ {
268
+ foreach( $wp_actions as $name => $count ){
269
+ if ( isset( $wp_filter[$name] ) ) {
270
+ $action = $wp_filter[$name];
271
+
272
+ if( $action )
273
+ {
274
+ foreach( $action as $priority => $callbacks ) {
275
+ foreach( $callbacks as $callback ) {
276
+ if( isset( $callback['function'] ) && is_string( $callback['function'] ) ){
277
+ if( stristr( $callback['function'], 'wsl_' ) || stristr( $name, 'wsl_' ) ){
278
+ ?>
279
+ <tr>
280
+ <td valign="top" width="270" nowrap class="wsl-dev-usedhook">
281
+ <?php
282
+ if( stristr( $name, 'wsl_' ) ){
283
+ ?>
284
+ <a class="wsl-dev-usedwslhook" href="https://github.com/hybridauth/WordPress-Social-Login/search?q=<?php echo $name ; ?>" target="_blank"><?php echo $name ; ?></a>
285
+ <?php
286
+ }
287
+ else{
288
+ echo $name ;
289
+ }
290
+ ?>
291
+ </td>
292
+ <td valign="top" class="wsl-dev-hookcallback">
293
+ <?php
294
+ if( stristr( $callback['function'], 'wsl_' ) ){
295
+ ?>
296
+ <a href="https://github.com/hybridauth/WordPress-Social-Login/search?q=<?php echo $callback['function'] ; ?>" target="_blank"><?php echo $callback['function'] ; ?></a>
297
+ <?php
298
+ }
299
+ else{
300
+ echo $callback['function'] ;
301
+ }
302
+ ?>
303
+ </td>
304
+ <td valign="top" width="50">
305
+ <?php echo $priority; ?>
306
+ </td>
307
+ </td>
308
+ <?php
309
+ }
310
+ }
311
+ }
312
+ }
313
+ }
314
+ }
315
+ elseif( stristr( $name, 'wsl_' ) ){
316
+ ?>
317
+ <tr>
318
+ <td valign="top" width="270" nowrap class="wsl-dev-unusedhook">
319
+ <a href="https://github.com/hybridauth/WordPress-Social-Login/search?q=<?php echo $name ; ?>" target="_blank"><?php echo $name ; ?></a>
320
+ </td>
321
+ <td></td>
322
+ <td></td>
323
+ </td>
324
+ <?php
325
+ }
326
+ }
327
+ }
328
+ ?>
329
+ </tbody>
330
+ </table>
331
+
332
+ <h4>Wordpress</h4>
333
+ <table class="wsl-dev-table">
334
+ <tbody>
335
+ <tr><th width="150"><label>Version</label></th><td><?php echo get_bloginfo( 'version' ); ?></td></tr>
336
+ <tr><th><label>Multi-site</label></th><td><?php echo is_multisite() ? 'Yes' . "\n" : 'No'; ?></td></tr>
337
+ <tr><th><label>Site url</label></th><td><?php echo site_url(); ?></td></tr>
338
+ <tr><th><label>Plugins url</label></th><td><?php echo plugins_url(); ?></td></tr>
339
+ </tbody>
340
+ </table>
341
+
342
+ <h4>WSL</h4>
343
+ <table class="wsl-dev-table">
344
+ <tbody>
345
+ <tr><th width="150"><label>Version</label></th><td><?php echo wsl_get_version(); ?></td></tr>
346
+ <tr><th><label>Plugin path</label></th><td><?php echo WORDPRESS_SOCIAL_LOGIN_ABS_PATH; ?></td></tr>
347
+ <tr><th><label>Plugin url</label></th><td><?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL; ?></td></tr>
348
+ <tr><th><label>HA endpoint</label></th><td><?php echo WORDPRESS_SOCIAL_LOGIN_HYBRIDAUTH_ENDPOINT_URL; ?></td></tr>
349
+ </tbody>
350
+ </table>
351
+
352
+ <h4>Website</h4>
353
+ <table class="wsl-dev-table">
354
+ <tbody>
355
+ <tr><th width="150"><label>IP</label></th><td><?php echo $_SERVER['SERVER_ADDR']; ?></td></tr>
356
+ <tr><th><label>Domain</label></th><td><?php echo $_SERVER['HTTP_HOST']; ?></td></tr>
357
+ <tr><th><label>Port</label></th><td><?php echo isset( $_SERVER['SERVER_PORT'] ) ? 'On (' . $_SERVER['SERVER_PORT'] . ')' : 'N/A'; ?></td></tr>
358
+ <tr><th><label>X Forward</label></th><td><?php echo isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ? 'On (' . $_SERVER['HTTP_X_FORWARDED_PROTO'] . ')' : 'N/A';; ?></td></tr>
359
+ </tbody>
360
+ </table>
361
+
362
+ <h4>Software</h4>
363
+ <table class="wsl-dev-table">
364
+ <tbody>
365
+ <tr><th width="150"><label>Server</label></th><td><?php echo $_SERVER['SERVER_SOFTWARE']; ?></td></tr>
366
+ <tr><th><label>PHP</label></th><td><?php echo PHP_VERSION; ?></td></tr>
367
+ <tr><th><label>MySQL</label></th><td><?php echo $wpdb->db_version(); ?></td></tr>
368
+ </tbody>
369
+ </table>
370
+
371
+ <h4>MySQL</h4>
372
+ <table class="wsl-dev-table">
373
+ <tbody>
374
+ <tr><th width="150"><label>Host</label></th><td><?php echo $wpdb->dbhost; ?></td></tr>
375
+ <tr><th><label>User</label></th><td><?php echo $wpdb->dbuser; ?></td></tr>
376
+ <tr><th><label>Database</label></th><td><?php echo $wpdb->dbname; ?></td></tr>
377
+ <tr><th><label>Prefix</label></th><td><?php echo $wpdb->prefix; ?></td></tr>
378
+ <tr><th><label>Base_prefix</label></th><td><?php echo $wpdb->prefix; ?></td></tr>
379
+ <tr><th><label>Num_queries</label></th><td><?php echo$wpdb->num_queries; ?></td></tr>
380
+ </tbody>
381
+ </table>
382
+ <?php
383
+ }
384
+
385
+ // --------------------------------------------------------------------
includes/settings/wsl.compatibilities.php CHANGED
@@ -3,11 +3,19 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
  * Check and upgrade compatibilities from old WSL versions
 
 
 
 
 
 
 
 
11
  */
12
 
13
  // Exit if accessed directly
@@ -17,23 +25,27 @@ if ( !defined( 'ABSPATH' ) ) exit;
17
 
18
  /**
19
  * Check and upgrade compatibilities from old WSL versions
20
- *
21
- * Here we attempt to:
22
- * - set to default all settings when WSL is installed
23
- * - make wsl compatible when updating from old versions by registring any option
24
- *
25
- * Side note: the things here are not optimal and the list is kind of long. If you have any
26
- * better idea on how to tackle this issue, please don't hesitate to share it!
27
  */
28
  function wsl_check_compatibilities()
29
  {
30
- # widget settings / customize
 
 
 
31
  if( ! get_option( 'wsl_settings_redirect_url' ) ){
32
  update_option( 'wsl_settings_redirect_url', site_url() );
33
  }
34
 
 
 
 
 
35
  if( ! get_option( 'wsl_settings_connect_with_label' ) ){
36
- update_option( 'wsl_settings_connect_with_label', "Connect with:" );
 
 
 
 
37
  }
38
 
39
  if( ! get_option( 'wsl_settings_use_popup' ) ){
@@ -45,10 +57,10 @@ function wsl_check_compatibilities()
45
  }
46
 
47
  if( ! get_option( 'wsl_settings_authentication_widget_css' ) ){
48
- update_option( 'wsl_settings_authentication_widget_css', "#wp-social-login-connect-with {font-weight: bold;}\n#wp-social-login-connect-options {padding:10px;}\n#wp-social-login-connect-options a {text-decoration: none;}\n#wp-social-login-connect-options img {border:0 none;}\n.wsl_connect_with_provider {}" );
49
  }
50
 
51
- # bouncer
52
  if( ! get_option( 'wsl_settings_bouncer_registration_enabled' ) ){
53
  update_option( 'wsl_settings_bouncer_registration_enabled', 1 );
54
  }
@@ -57,23 +69,8 @@ function wsl_check_compatibilities()
57
  update_option( 'wsl_settings_bouncer_authentication_enabled', 1 );
58
  }
59
 
60
- if( ! get_option( 'wsl_settings_bouncer_linking_accounts_enabled' ) ){
61
- update_option( 'wsl_settings_bouncer_linking_accounts_enabled', 2 );
62
- }
63
-
64
  if( get_option( 'wsl_settings_bouncer_email_validation_enabled' ) == 1 ){
65
  update_option( 'wsl_settings_bouncer_profile_completion_require_email', 1 );
66
-
67
- delete_option( 'wsl_settings_bouncer_email_validation_enabled' );
68
- delete_option( 'wsl_settings_bouncer_email_validation_text_notice' );
69
- delete_option( 'wsl_settings_bouncer_email_validation_text_submit_button' );
70
- delete_option( 'wsl_settings_bouncer_email_validation_text_email' );
71
- delete_option( 'wsl_settings_bouncer_email_validation_text_username' );
72
- delete_option( 'wsl_settings_bouncer_email_validation_text_email_invalid' );
73
- delete_option( 'wsl_settings_bouncer_email_validation_text_username_invalid' );
74
- delete_option( 'wsl_settings_bouncer_email_validation_text_email_exists' );
75
- delete_option( 'wsl_settings_bouncer_email_validation_text_username_exists' );
76
- delete_option( 'wsl_settings_bouncer_email_validation_text_connected_with' );
77
  }
78
 
79
  if( ! get_option( 'wsl_settings_bouncer_profile_completion_require_email' ) ){
@@ -88,42 +85,6 @@ function wsl_check_compatibilities()
88
  update_option( 'wsl_settings_bouncer_profile_completion_change_username', 2 );
89
  }
90
 
91
- if( ! get_option( 'wsl_settings_bouncer_profile_completion_text_notice' ) ){
92
- update_option( 'wsl_settings_bouncer_profile_completion_text_notice', _wsl__("Almost there, we just need to check a couple of things", 'wordpress-social-login') );
93
- }
94
-
95
- if( ! get_option( 'wsl_settings_bouncer_profile_completion_text_submit_button' ) ){
96
- update_option( 'wsl_settings_bouncer_profile_completion_text_submit_button', _wsl__("Continue", 'wordpress-social-login') );
97
- }
98
-
99
- if( ! get_option( 'wsl_settings_bouncer_profile_completion_text_email' ) ){
100
- update_option( 'wsl_settings_bouncer_profile_completion_text_email', _wsl__("E-mail", 'wordpress-social-login') );
101
- }
102
-
103
- if( ! get_option( 'wsl_settings_bouncer_profile_completion_text_username' ) ){
104
- update_option( 'wsl_settings_bouncer_profile_completion_text_username', _wsl__("Username", 'wordpress-social-login') );
105
- }
106
-
107
- if( ! get_option( 'wsl_settings_bouncer_profile_completion_text_email_invalid' ) ){
108
- update_option( 'wsl_settings_bouncer_profile_completion_text_email_invalid', _wsl__("E-mail is not valid!", 'wordpress-social-login') );
109
- }
110
-
111
- if( ! get_option( 'wsl_settings_bouncer_profile_completion_text_username_invalid' ) ){
112
- update_option( 'wsl_settings_bouncer_profile_completion_text_username_invalid', _wsl__("Username is not valid!", 'wordpress-social-login') );
113
- }
114
-
115
- if( ! get_option( 'wsl_settings_bouncer_profile_completion_text_email_exists' ) ){
116
- update_option( 'wsl_settings_bouncer_profile_completion_text_email_exists', _wsl__("That E-mail is already registered!", 'wordpress-social-login') );
117
- }
118
-
119
- if( ! get_option( 'wsl_settings_bouncer_profile_completion_text_username_exists' ) ){
120
- update_option( 'wsl_settings_bouncer_profile_completion_text_username_exists', _wsl__("That Username is already registered!", 'wordpress-social-login') );
121
- }
122
-
123
- if( ! get_option( 'wsl_settings_bouncer_profile_completion_text_connected_with' ) ){
124
- update_option( 'wsl_settings_bouncer_profile_completion_text_connected_with', _wsl__("You are now connected via", 'wordpress-social-login') );
125
- }
126
-
127
  if( ! get_option( 'wsl_settings_bouncer_new_users_moderation_level' ) ){
128
  update_option( 'wsl_settings_bouncer_new_users_moderation_level', 1 );
129
  }
@@ -137,7 +98,7 @@ function wsl_check_compatibilities()
137
  }
138
 
139
  if( ! get_option( 'wsl_settings_bouncer_new_users_restrict_domain_text_bounce' ) ){
140
- update_option( 'wsl_settings_bouncer_new_users_restrict_domain_text_bounce', _wsl__("Bouncer says no.", 'wordpress-social-login') );
141
  }
142
 
143
  if( ! get_option( 'wsl_settings_bouncer_new_users_restrict_email_enabled' ) ){
@@ -145,7 +106,7 @@ function wsl_check_compatibilities()
145
  }
146
 
147
  if( ! get_option( 'wsl_settings_bouncer_new_users_restrict_email_text_bounce' ) ){
148
- update_option( 'wsl_settings_bouncer_new_users_restrict_email_text_bounce', _wsl__("Bouncer say he refuses.", 'wordpress-social-login') );
149
  }
150
 
151
  if( ! get_option( 'wsl_settings_bouncer_new_users_restrict_profile_enabled' ) ){
@@ -153,7 +114,7 @@ function wsl_check_compatibilities()
153
  }
154
 
155
  if( ! get_option( 'wsl_settings_bouncer_new_users_restrict_profile_text_bounce' ) ){
156
- update_option( 'wsl_settings_bouncer_new_users_restrict_profile_text_bounce', _wsl__("Bouncer say only Mundo can go where he pleases!", 'wordpress-social-login') );
157
  }
158
 
159
  # contacts import
@@ -177,26 +138,13 @@ function wsl_check_compatibilities()
177
  update_option( 'wsl_settings_contacts_import_linkedin', 2 );
178
  }
179
 
180
- // enable default providers
181
- GLOBAL $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
182
- $nok = true;
183
- foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
184
- $provider_id = $item["provider_id"];
185
-
186
- if( get_option( 'wsl_settings_' . $provider_id . '_enabled' ) ){
187
- $nok = false;
188
- }
189
- }
190
-
191
- if( $nok ){
192
- foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
193
- $provider_id = $item["provider_id"];
194
-
195
- if( isset( $item["default_network"] ) && $item["default_network"] ){
196
- update_option( 'wsl_settings_' . $provider_id . '_enabled', 1 );
197
- }
198
- }
199
- }
200
  }
201
 
202
  // --------------------------------------------------------------------
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
  * Check and upgrade compatibilities from old WSL versions
11
+ *
12
+ * Here we attempt to:
13
+ * - set to default all settings when WSL is installed
14
+ * - make WSL compatible when updating from older versions, by registering new options
15
+ *
16
+ * Side note: Over time, the number of options have become too long, and as you can notice
17
+ * things are not optimal. If you have any better idea on how to tackle this issue,
18
+ * please don't hesitate to share it.
19
  */
20
 
21
  // Exit if accessed directly
25
 
26
  /**
27
  * Check and upgrade compatibilities from old WSL versions
 
 
 
 
 
 
 
28
  */
29
  function wsl_check_compatibilities()
30
  {
31
+ delete_option( 'wsl_settings_development_mode_enabled' );
32
+
33
+ delete_option( 'wsl_settings_welcome_panel_enabled' );
34
+
35
  if( ! get_option( 'wsl_settings_redirect_url' ) ){
36
  update_option( 'wsl_settings_redirect_url', site_url() );
37
  }
38
 
39
+ if( ! get_option( 'wsl_settings_force_redirect_url' ) ){
40
+ update_option( 'wsl_settings_force_redirect_url', 2 );
41
+ }
42
+
43
  if( ! get_option( 'wsl_settings_connect_with_label' ) ){
44
+ update_option( 'wsl_settings_connect_with_label', _wsl__("Connect with:", 'wordpress-social-login') );
45
+ }
46
+
47
+ if( ! get_option( 'wsl_settings_users_avatars' ) ){
48
+ update_option( 'wsl_settings_users_avatars', 1 );
49
  }
50
 
51
  if( ! get_option( 'wsl_settings_use_popup' ) ){
57
  }
58
 
59
  if( ! get_option( 'wsl_settings_authentication_widget_css' ) ){
60
+ update_option( 'wsl_settings_authentication_widget_css', ".wp-social-login-connect-with {}\n.wp-social-login-provider-list {}\n.wp-social-login-provider-list a {}\n.wp-social-login-provider-list img {}\n.wsl_connect_with_provider {}" );
61
  }
62
 
63
+ # bouncer settings
64
  if( ! get_option( 'wsl_settings_bouncer_registration_enabled' ) ){
65
  update_option( 'wsl_settings_bouncer_registration_enabled', 1 );
66
  }
69
  update_option( 'wsl_settings_bouncer_authentication_enabled', 1 );
70
  }
71
 
 
 
 
 
72
  if( get_option( 'wsl_settings_bouncer_email_validation_enabled' ) == 1 ){
73
  update_option( 'wsl_settings_bouncer_profile_completion_require_email', 1 );
 
 
 
 
 
 
 
 
 
 
 
74
  }
75
 
76
  if( ! get_option( 'wsl_settings_bouncer_profile_completion_require_email' ) ){
85
  update_option( 'wsl_settings_bouncer_profile_completion_change_username', 2 );
86
  }
87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  if( ! get_option( 'wsl_settings_bouncer_new_users_moderation_level' ) ){
89
  update_option( 'wsl_settings_bouncer_new_users_moderation_level', 1 );
90
  }
98
  }
99
 
100
  if( ! get_option( 'wsl_settings_bouncer_new_users_restrict_domain_text_bounce' ) ){
101
+ update_option( 'wsl_settings_bouncer_new_users_restrict_domain_text_bounce', _wsl__("<strong>This website is restricted to invited readers only.</strong><p>It doesn't look like you have been invited to access this site. If you think this is a mistake, you might want to contact the website owner and request an invitation.<p>", 'wordpress-social-login') );
102
  }
103
 
104
  if( ! get_option( 'wsl_settings_bouncer_new_users_restrict_email_enabled' ) ){
106
  }
107
 
108
  if( ! get_option( 'wsl_settings_bouncer_new_users_restrict_email_text_bounce' ) ){
109
+ update_option( 'wsl_settings_bouncer_new_users_restrict_email_text_bounce', _wsl__("<strong>This website is restricted to invited readers only.</strong><p>It doesn't look like you have been invited to access this site. If you think this is a mistake, you might want to contact the website owner and request an invitation.<p>", 'wordpress-social-login') );
110
  }
111
 
112
  if( ! get_option( 'wsl_settings_bouncer_new_users_restrict_profile_enabled' ) ){
114
  }
115
 
116
  if( ! get_option( 'wsl_settings_bouncer_new_users_restrict_profile_text_bounce' ) ){
117
+ update_option( 'wsl_settings_bouncer_new_users_restrict_profile_text_bounce', _wsl__("<strong>This website is restricted to invited readers only.</strong><p>It doesn't look like you have been invited to access this site. If you think this is a mistake, you might want to contact the website owner and request an invitation.<p>", 'wordpress-social-login') );
118
  }
119
 
120
  # contacts import
138
  update_option( 'wsl_settings_contacts_import_linkedin', 2 );
139
  }
140
 
141
+ if( ! get_option( 'wsl_settings_buddypress_enable_mapping' ) ){
142
+ update_option( 'wsl_settings_buddypress_enable_mapping', 2 );
143
+ }
144
+
145
+ if( ! get_option( 'wsl_settings_buddypress_xprofile_map' ) ){
146
+ update_option( 'wsl_settings_buddypress_xprofile_map', '' );
147
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  }
149
 
150
  // --------------------------------------------------------------------
includes/settings/wsl.database.php CHANGED
@@ -3,48 +3,50 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
- * Functions & utililies related to wsl database installation and migrations
11
  *
12
- * After WSl activated, wsl_database_migration_process will attempt to create or upgrade the required database
13
  * tables.
14
  *
15
  * Currently there is 2 tables used by WSL :
16
- * - wslusersprofiles: where sotred the users profile as provided by Hybridauth
17
- * - wsluserscontacts: where sotred the users contact list as provided by Hybridauth
18
  */
19
 
20
  // Exit if accessed directly
21
  if ( !defined( 'ABSPATH' ) ) exit;
22
-
23
  // --------------------------------------------------------------------
24
 
25
  global $wsl_database_migration_version;
26
 
27
- $wsl_database_migration_version = 4;
28
 
29
  // --------------------------------------------------------------------
30
 
31
- function wsl_database_migration_hook ()
32
  {
33
  wsl_database_migration_process();
34
  }
35
 
36
- add_action( 'plugins_loaded', 'wsl_database_migration_process' );
37
-
38
  // --------------------------------------------------------------------
39
 
40
  function wsl_database_migration_process()
41
  {
42
  global $wpdb;
43
  global $wsl_database_migration_version;
44
-
 
 
 
 
45
  $wsluserscontacts = "{$wpdb->prefix}wsluserscontacts";
46
  $wslusersprofiles = "{$wpdb->prefix}wslusersprofiles";
47
- $installed_ver = get_option( "wsl_database_migration_version" );
 
48
 
49
  if( $installed_ver != $wsl_database_migration_version ) {
50
  require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
@@ -58,45 +60,46 @@ function wsl_database_migration_process()
58
  email varchar(255) NOT NULL,
59
  profile_url varchar(255) NOT NULL,
60
  photo_url varchar(255) NOT NULL,
61
- PRIMARY KEY (id)
 
62
  );";
63
  dbDelta( $sql );
64
 
65
  $sql = "CREATE TABLE " . $wslusersprofiles . " (
66
- `id` int(11) NOT NULL AUTO_INCREMENT,
67
- `user_id` int(11) NOT NULL,
68
- `provider` varchar(255) NOT NULL,
69
- `object_sha` varchar(255) NOT NULL COMMENT 'to check if hybridauth user profile object has changed from last time, if yes we update the user profile here ',
70
- `identifier` varchar(255) NOT NULL,
71
- `profileurl` varchar(255) NOT NULL,
72
- `websiteurl` varchar(255) NOT NULL,
73
- `photourl` varchar(255) NOT NULL,
74
- `displayname` varchar(255) NOT NULL,
75
- `description` varchar(255) NOT NULL,
76
- `firstname` varchar(255) NOT NULL,
77
- `lastname` varchar(255) NOT NULL,
78
- `gender` varchar(255) NOT NULL,
79
- `language` varchar(255) NOT NULL,
80
- `age` varchar(255) NOT NULL,
81
- `birthday` varchar(255) NOT NULL,
82
- `birthmonth` varchar(255) NOT NULL,
83
- `birthyear` varchar(255) NOT NULL,
84
- `email` varchar(255) NOT NULL,
85
- `emailverified` varchar(255) NOT NULL,
86
- `phone` varchar(255) NOT NULL,
87
- `address` varchar(255) NOT NULL,
88
- `country` varchar(255) NOT NULL,
89
- `region` varchar(255) NOT NULL,
90
- `city` varchar(255) NOT NULL,
91
- `zip` varchar(255) NOT NULL,
92
- PRIMARY KEY (`id`)
 
 
93
  )";
94
  dbDelta( $sql );
95
 
96
  update_option( "wsl_database_migration_version", $wsl_database_migration_version );
97
  }
98
-
99
- add_option( "wsl_database_migration_version", $wsl_database_migration_version );
100
  }
101
 
102
  // --------------------------------------------------------------------
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
+ * Functions & utilities related to WSL database installation and migrations
11
  *
12
+ * When WSl is activated, wsl_database_migration_process() will attempt to create or upgrade the required database
13
  * tables.
14
  *
15
  * Currently there is 2 tables used by WSL :
16
+ * - wslusersprofiles: where we store users profiles
17
+ * - wsluserscontacts: where we store users contact lists
18
  */
19
 
20
  // Exit if accessed directly
21
  if ( !defined( 'ABSPATH' ) ) exit;
 
22
  // --------------------------------------------------------------------
23
 
24
  global $wsl_database_migration_version;
25
 
26
+ $wsl_database_migration_version = 5;
27
 
28
  // --------------------------------------------------------------------
29
 
30
+ function wsl_database_migration_hook()
31
  {
32
  wsl_database_migration_process();
33
  }
34
 
 
 
35
  // --------------------------------------------------------------------
36
 
37
  function wsl_database_migration_process()
38
  {
39
  global $wpdb;
40
  global $wsl_database_migration_version;
41
+
42
+ // update old/all default wsl-settings
43
+ wsl_check_compatibilities();
44
+
45
+ // install database
46
  $wsluserscontacts = "{$wpdb->prefix}wsluserscontacts";
47
  $wslusersprofiles = "{$wpdb->prefix}wslusersprofiles";
48
+
49
+ $installed_ver = get_option( "wsl_database_migration_version" );
50
 
51
  if( $installed_ver != $wsl_database_migration_version ) {
52
  require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
60
  email varchar(255) NOT NULL,
61
  profile_url varchar(255) NOT NULL,
62
  photo_url varchar(255) NOT NULL,
63
+ UNIQUE KEY id (id),
64
+ KEY user_id (user_id)
65
  );";
66
  dbDelta( $sql );
67
 
68
  $sql = "CREATE TABLE " . $wslusersprofiles . " (
69
+ id int(11) NOT NULL AUTO_INCREMENT,
70
+ user_id int(11) NOT NULL,
71
+ provider varchar(255) NOT NULL,
72
+ object_sha varchar(255) NOT NULL COMMENT 'to check if hybridauth user profile object has changed from last time, if yes we update the user profile here ',
73
+ identifier varchar(255) NOT NULL,
74
+ profileurl varchar(255) NOT NULL,
75
+ websiteurl varchar(255) NOT NULL,
76
+ photourl varchar(255) NOT NULL,
77
+ displayname varchar(255) NOT NULL,
78
+ description varchar(255) NOT NULL,
79
+ firstname varchar(255) NOT NULL,
80
+ lastname varchar(255) NOT NULL,
81
+ gender varchar(255) NOT NULL,
82
+ language varchar(255) NOT NULL,
83
+ age varchar(255) NOT NULL,
84
+ birthday varchar(255) NOT NULL,
85
+ birthmonth varchar(255) NOT NULL,
86
+ birthyear varchar(255) NOT NULL,
87
+ email varchar(255) NOT NULL,
88
+ emailverified varchar(255) NOT NULL,
89
+ phone varchar(255) NOT NULL,
90
+ address varchar(255) NOT NULL,
91
+ country varchar(255) NOT NULL,
92
+ region varchar(255) NOT NULL,
93
+ city varchar(255) NOT NULL,
94
+ zip varchar(255) NOT NULL,
95
+ UNIQUE KEY id (id),
96
+ KEY idp_uid (provider,identifier),
97
+ KEY user_id (user_id)
98
  )";
99
  dbDelta( $sql );
100
 
101
  update_option( "wsl_database_migration_version", $wsl_database_migration_version );
102
  }
 
 
103
  }
104
 
105
  // --------------------------------------------------------------------
includes/settings/wsl.initialization.php CHANGED
@@ -3,13 +3,11 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
- * Check wsl requirements and register wsl settings
11
- *
12
- * More information ca be found at http://hybridauth.sourceforge.net/wsl/developer.html
13
  */
14
 
15
  // Exit if accessed directly
@@ -17,38 +15,62 @@ if ( !defined( 'ABSPATH' ) ) exit;
17
 
18
  // --------------------------------------------------------------------
19
 
20
- /** used by the localization widget */
21
- $WORDPRESS_SOCIAL_LOGIN_TEXTS = array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
- /** list of wsl components */
 
 
 
 
 
24
  $WORDPRESS_SOCIAL_LOGIN_COMPONENTS = ARRAY(
25
  "core" => array( "type" => "core" , "label" => __("WSL Core" , 'wordpress-social-login'), "description" => __("WordPress Social Login core.", 'wordpress-social-login') ),
26
  "networks" => array( "type" => "core" , "label" => __("Networks" , 'wordpress-social-login'), "description" => __("Social networks setup.", 'wordpress-social-login') ),
27
  "login-widget" => array( "type" => "core" , "label" => __("Widget" , 'wordpress-social-login'), "description" => __("Authentication widget customization.", 'wordpress-social-login') ),
28
  "bouncer" => array( "type" => "core" , "label" => __("Bouncer" , 'wordpress-social-login'), "description" => __("WordPress Social Login advanced configuration.", 'wordpress-social-login') ),
29
- "diagnostics" => array( "type" => "core" , "label" => __("Diagnostics" , 'wordpress-social-login'), "description" => __("WordPress Social Login diagnostics.", 'wordpress-social-login') ),
30
- "basicinsights" => array( "type" => "plugin", "label" => __("Basic Insights" , 'wordpress-social-login'), "description" => __("WordPress Social Login basic insights. When enabled <b>Basic Insights</b> will on <b>Networks</b> tab.", 'wordpress-social-login') ),
31
  "users" => array( "type" => "plugin", "label" => __("Users" , 'wordpress-social-login'), "description" => __("WordPress Social Login users manager.", 'wordpress-social-login') ),
32
  "contacts" => array( "type" => "plugin", "label" => __("Contacts" , 'wordpress-social-login'), "description" => __("WordPress Social Login users contacts manager", 'wordpress-social-login') ),
 
33
  );
34
 
35
- /** list of wsl admin tabs */
36
  $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS = ARRAY(
37
- "networks" => array( "label" => __("Networks" , 'wordpress-social-login') , "enabled" => true , "visible" => true , "component" => "networks" , "default" => true ),
38
- "login-widget" => array( "label" => __("Widget" , 'wordpress-social-login') , "enabled" => true , "visible" => true , "component" => "login-widget" ),
39
- "bouncer" => array( "label" => __("Bouncer" , 'wordpress-social-login') , "enabled" => true , "visible" => true , "component" => "bouncer" ),
40
- "users" => array( "label" => __("Users" , 'wordpress-social-login') , "enabled" => false, "visible" => true , "component" => "users" ),
41
- "contacts" => array( "label" => __("Contacts" , 'wordpress-social-login') , "enabled" => false, "visible" => true , "component" => "contacts" ),
42
- "diagnostics" => array( "label" => __("Diagnostics" , 'wordpress-social-login') , "enabled" => true , "visible" => false , "component" => "diagnostics" , "pull-right" => true , "welcome-panel" => false ),
43
- "help" => array( "label" => __('?' , 'wordpress-social-login') , "enabled" => true , "visible" => true , "component" => "core" , "pull-right" => true , "welcome-panel" => false ),
44
- "components" => array( "label" => __("Components" , 'wordpress-social-login') , "enabled" => true , "visible" => true , "component" => "core" , "pull-right" => true , "welcome-panel" => false ),
45
- "advanced" => array( "label" => __("Advanced" , 'wordpress-social-login') , "enabled" => true , "visible" => false , "component" => "core" , "pull-right" => true , "welcome-panel" => false ),
 
 
 
46
  );
47
 
48
  // --------------------------------------------------------------------
49
 
50
  /**
51
- * Register new wsl components
52
  */
53
  function wsl_register_component( $component, $config, $tabs )
54
  {
@@ -56,7 +78,7 @@ function wsl_register_component( $component, $config, $tabs )
56
 
57
  // sure it can be overwritten.. just not recommended
58
  if( isset( $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $component ] ) ){
59
- return wsl_render_notices_pages( _wsl__("An installed plugin is trying to o-ver-write WordPress Social Login config in a bad way.", 'wordpress-social-login') );
60
  }
61
 
62
  $config["type"] = "plugin";
@@ -76,7 +98,7 @@ add_action( 'wsl_register_component', 'wsl_register_component', 10, 3 );
76
  // --------------------------------------------------------------------
77
 
78
  /**
79
- * Register new wsl admin tab
80
  */
81
  function wsl_register_admin_tab( $tab, $config )
82
  {
@@ -84,7 +106,7 @@ function wsl_register_admin_tab( $tab, $config )
84
 
85
  // sure it can be overwritten.. just not recommended
86
  if( isset( $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[ $tab ] ) ){
87
- return wsl_render_notices_pages( _wsl__("An installed plugin is trying to o-ver-write WordPress Social Login config in a bad way.", 'wordpress-social-login') );
88
  }
89
 
90
  $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[ $tab ] = $config;
@@ -109,7 +131,7 @@ function wsl_is_component_enabled( $component )
109
  // --------------------------------------------------------------------
110
 
111
  /**
112
- * Register wsl components (Bulk action)
113
  */
114
  function wsl_register_components()
115
  {
@@ -123,14 +145,18 @@ function wsl_register_components()
123
  foreach( $WORDPRESS_SOCIAL_LOGIN_COMPONENTS as $component => $config ){
124
  $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $component ][ "enabled" ] = false;
125
 
126
- if( get_option( "wsl_components_" . $component . "_enabled" ) == 1 ){
 
 
127
  $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $component ][ "enabled" ] = true;
128
  }
129
 
130
  if( $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $component ][ "type" ] == "core" ){
131
  $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $component ][ "enabled" ] = true;
132
 
133
- update_option( "wsl_components_" . $component . "_enabled", 1 );
 
 
134
  }
135
 
136
  foreach( $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS as $tab => $tconfig ){
@@ -147,32 +173,7 @@ function wsl_register_components()
147
  // --------------------------------------------------------------------
148
 
149
  /**
150
- * Check wsl minimun requirements. Display fail page if they are not met.
151
- */
152
- function wsl_check_requirements()
153
- {
154
- if
155
- (
156
- ! version_compare( PHP_VERSION, '5.2.0', '>=' )
157
- || ! isset( $_SESSION["wsl::plugin"] )
158
- || ! function_exists('curl_init')
159
- || ! function_exists('json_decode')
160
- || ini_get('register_globals')
161
- )
162
- return false;
163
-
164
- $curl_version = curl_version();
165
-
166
- if ( ! ( $curl_version['features'] & CURL_VERSION_SSL ) )
167
- return false;
168
-
169
- return true;
170
- }
171
-
172
- // --------------------------------------------------------------------
173
-
174
- /**
175
- * Register wsl core settings ( options; components )
176
  */
177
  function wsl_register_setting()
178
  {
@@ -187,9 +188,9 @@ function wsl_register_setting()
187
 
188
  // idps credentials
189
  foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
190
- $provider_id = @ $item["provider_id"];
191
- $require_client_id = @ $item["require_client_id"];
192
- $require_registration = @ $item["new_app_link"];
193
 
194
  register_setting( 'wsl-settings-group', 'wsl_settings_' . $provider_id . '_enabled' );
195
 
@@ -211,6 +212,7 @@ function wsl_register_setting()
211
  register_setting( 'wsl-settings-group-customize' , 'wsl_settings_use_popup' );
212
  register_setting( 'wsl-settings-group-customize' , 'wsl_settings_widget_display' );
213
  register_setting( 'wsl-settings-group-customize' , 'wsl_settings_redirect_url' );
 
214
  register_setting( 'wsl-settings-group-customize' , 'wsl_settings_users_notification' );
215
  register_setting( 'wsl-settings-group-customize' , 'wsl_settings_authentication_widget_css' );
216
 
@@ -226,15 +228,6 @@ function wsl_register_setting()
226
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_require_email' );
227
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_change_email' );
228
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_change_username' );
229
- register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_text_notice' );
230
- register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_text_submit_button' );
231
- register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_text_connected_with' );
232
- register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_text_email' );
233
- register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_text_username' );
234
- register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_text_email_invalid' );
235
- register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_text_username_invalid' );
236
- register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_text_email_exists' );
237
- register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_text_username_exists' );
238
 
239
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_new_users_moderation_level' );
240
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_new_users_membership_default_role' );
@@ -249,157 +242,15 @@ function wsl_register_setting()
249
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_new_users_restrict_profile_list' );
250
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_new_users_restrict_profile_text_bounce' );
251
 
252
- register_setting( 'wsl-settings-group-advanced-settings', 'wsl_settings_base_url' );
253
-
 
254
  register_setting( 'wsl-settings-group-development' , 'wsl_settings_development_mode_enabled' );
255
 
256
  add_option( 'wsl_settings_welcome_panel_enabled' );
257
 
258
- // update old/all default wsl-settings
259
- wsl_check_compatibilities();
260
-
261
  // HOOKABLE:
262
  do_action( 'wsl_register_setting_end' );
263
  }
264
 
265
  // --------------------------------------------------------------------
266
-
267
- /**
268
- * Display WordPress Social Login on top bar menu
269
- */
270
- function wsl_admin_menu_top_bar()
271
- {
272
- if ( ! is_user_logged_in() ) {
273
- return ;
274
- }
275
-
276
- if ( ! is_admin() ) {
277
- return ;
278
- }
279
-
280
- if ( ! is_admin_bar_showing() ) {
281
- return ;
282
- }
283
-
284
- if ( ! current_user_can( 'manage_options' ) ) {
285
- return ;
286
- }
287
-
288
- global $wp_admin_bar;
289
-
290
- $wp_admin_bar->add_menu(array(
291
- 'id' => 'wp-admin-wordpress-social-login',
292
- 'title' => __('WordPress Social Login', 'wordpress-social-login'),
293
- 'href' => 'options-general.php?page=wordpress-social-login'
294
- ));
295
-
296
- $wp_admin_bar->add_menu(array(
297
- "id" => "wp-admin-wordpress-social-login-item-1",
298
- "title" => __('Social networks setup', 'wordpress-social-login'),
299
- 'href' => 'options-general.php?page=wordpress-social-login',
300
- "parent" => "wp-admin-wordpress-social-login"
301
- ));
302
-
303
- $wp_admin_bar->add_menu(array(
304
- "id" => "wp-admin-wordpress-social-login-item-2",
305
- "title" => __('Widget customization', 'wordpress-social-login'),
306
- 'href' => 'options-general.php?page=wordpress-social-login&wslp=login-widget',
307
- "parent" => "wp-admin-wordpress-social-login"
308
- ));
309
-
310
- $wp_admin_bar->add_menu(array(
311
- "id" => "wp-admin-wordpress-social-login-item-3",
312
- "title" => __('User Guide and FAQ', 'wordpress-social-login'),
313
- 'href' => 'http://hybridauth.sourceforge.net/wsl/index.html',
314
- "parent" => "wp-admin-wordpress-social-login",
315
- 'meta' => array( 'target' => '_blank' )
316
- ));
317
- }
318
-
319
- add_action('wp_before_admin_bar_render', 'wsl_admin_menu_top_bar');
320
-
321
- // --------------------------------------------------------------------
322
-
323
- /**
324
- * Display WordPress Social Login on settings as submenu
325
- */
326
- function wsl_admin_menu()
327
- {
328
- add_options_page('WP Social Login', 'WP Social Login', 'manage_options', 'wordpress-social-login', 'wsl_admin_init' );
329
-
330
- add_action( 'admin_init', 'wsl_register_setting' );
331
- }
332
-
333
- add_action('admin_menu', 'wsl_admin_menu' );
334
-
335
- // --------------------------------------------------------------------
336
-
337
- /**
338
- * Display WordPress Social Login on sidebar
339
- */
340
- function wsl_admin_menu_sidebar()
341
- {
342
- add_menu_page( 'WP Social Login', 'WP Social Login', 'manage_options', 'wordpress-social-login', 'wsl_admin_init' );
343
- }
344
-
345
- // add_action('admin_menu', 'wsl_admin_menu_sidebar');
346
-
347
- // --------------------------------------------------------------------
348
-
349
- /**
350
- * Add a new column to wp-admin/users.php
351
- */
352
- function wsl_manage_users_columns( $columns )
353
- {
354
- $columns['wsl_column'] = "WP Social Login";
355
-
356
- return $columns;
357
- }
358
-
359
- add_filter('manage_users_columns', 'wsl_manage_users_columns');
360
-
361
-
362
- // --------------------------------------------------------------------
363
-
364
- /**
365
- * Alter wp-admin/edit-comments.php
366
- */
367
- function wsl_comment_row_actions( $a ) {
368
- global $comment;
369
-
370
- $tmp = wsl_get_user_by_meta_key_and_user_id( "wsl_user_image", $comment->user_id);
371
-
372
- if ( $tmp ) {
373
- $a[ 'wsl_profile' ] = '<a href="options-general.php?page=wordpress-social-login&wslp=users&uid=' . $comment->user_id . '">' . _wsl__("WSL user profile", 'wordpress-social-login') . '</a>';
374
- $a[ 'wsl_contacts' ] = '<a href="options-general.php?page=wordpress-social-login&wslp=contacts&uid=' . $comment->user_id . '">' . _wsl__("WSL user contacts", 'wordpress-social-login') . '</a>';
375
- }
376
-
377
- return $a;
378
- }
379
-
380
- add_filter( 'comment_row_actions', 'wsl_comment_row_actions', 11, 1 );
381
-
382
- // --------------------------------------------------------------------
383
-
384
- /**
385
- * Generate content for the added column to wp-admin/users.php
386
- */
387
- function wsl_manage_users_custom_column( $value, $column_name, $user_id )
388
- {
389
- if ( 'wsl_column' != $column_name ) {
390
- return $value;
391
- }
392
-
393
- $tmp = wsl_get_user_by_meta_key_and_user_id( "wsl_user_image", $user_id);
394
-
395
- if ( ! $tmp ) {
396
- return "";
397
- }
398
-
399
- return
400
- '<a href="options-general.php?page=wordpress-social-login&wslp=users&uid=' . $user_id . '">' . _wsl__("Profile", 'wordpress-social-login') . '</a> | <a href="options-general.php?page=wordpress-social-login&wslp=contacts&uid=' . $user_id . '">' . _wsl__("Contacts", 'wordpress-social-login') . '</a>';
401
- }
402
-
403
- add_action( 'manage_users_custom_column', 'wsl_manage_users_custom_column', 10, 3 );
404
-
405
- // --------------------------------------------------------------------
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
+ * Check WSL requirements and register WSL settings
 
 
11
  */
12
 
13
  // Exit if accessed directly
15
 
16
  // --------------------------------------------------------------------
17
 
18
+ /**
19
+ * Check WSL minimum requirements. Display fail page if they are not met.
20
+ */
21
+ function wsl_check_requirements()
22
+ {
23
+ if
24
+ (
25
+ ! version_compare( PHP_VERSION, '5.2.0', '>=' )
26
+ || ! isset( $_SESSION["wsl::plugin"] )
27
+ || ! function_exists('curl_init')
28
+ || ! function_exists('json_decode')
29
+ || ini_get('register_globals')
30
+ )
31
+ return false;
32
+
33
+ $curl_version = curl_version();
34
+
35
+ if ( ! ( $curl_version['features'] & CURL_VERSION_SSL ) )
36
+ return false;
37
 
38
+ return true;
39
+ }
40
+
41
+ // --------------------------------------------------------------------
42
+
43
+ /** list of WSL components */
44
  $WORDPRESS_SOCIAL_LOGIN_COMPONENTS = ARRAY(
45
  "core" => array( "type" => "core" , "label" => __("WSL Core" , 'wordpress-social-login'), "description" => __("WordPress Social Login core.", 'wordpress-social-login') ),
46
  "networks" => array( "type" => "core" , "label" => __("Networks" , 'wordpress-social-login'), "description" => __("Social networks setup.", 'wordpress-social-login') ),
47
  "login-widget" => array( "type" => "core" , "label" => __("Widget" , 'wordpress-social-login'), "description" => __("Authentication widget customization.", 'wordpress-social-login') ),
48
  "bouncer" => array( "type" => "core" , "label" => __("Bouncer" , 'wordpress-social-login'), "description" => __("WordPress Social Login advanced configuration.", 'wordpress-social-login') ),
 
 
49
  "users" => array( "type" => "plugin", "label" => __("Users" , 'wordpress-social-login'), "description" => __("WordPress Social Login users manager.", 'wordpress-social-login') ),
50
  "contacts" => array( "type" => "plugin", "label" => __("Contacts" , 'wordpress-social-login'), "description" => __("WordPress Social Login users contacts manager", 'wordpress-social-login') ),
51
+ "buddypress" => array( "type" => "plugin", "label" => __("BuddyPress" , 'wordpress-social-login'), "description" => __("Makes WordPress Social Login compatible with BuddyPress: Widget integration, Users avatars and xProfiles mapping.", 'wordpress-social-login') ),
52
  );
53
 
54
+ /** list of WSL admin tabs */
55
  $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS = ARRAY(
56
+ "networks" => array( "label" => __("Networks" , 'wordpress-social-login') , "enabled" => true, "visible" => true , "component" => "networks" , "default" => true ),
57
+ "login-widget" => array( "label" => __("Widget" , 'wordpress-social-login') , "enabled" => true, "visible" => true , "component" => "login-widget" ),
58
+ "bouncer" => array( "label" => __("Bouncer" , 'wordpress-social-login') , "enabled" => true, "visible" => true , "component" => "bouncer" ),
59
+
60
+ "users" => array( "label" => __("Users" , 'wordpress-social-login') , "enabled" => false, "visible" => true , "component" => "users" ),
61
+ "contacts" => array( "label" => __("Contacts" , 'wordpress-social-login') , "enabled" => false, "visible" => true , "component" => "contacts" ),
62
+ "buddypress" => array( "label" => __("BuddyPress" , 'wordpress-social-login') , "enabled" => false, "visible" => true , "component" => "buddypress" ),
63
+
64
+ "watchdog" => array( "label" => __("Watchdog" , 'wordpress-social-login') , "enabled" => true , "visible" => false , "component" => "core" , "pull-right" => true ),
65
+ "diagnostics" => array( "label" => __("Diagnostics" , 'wordpress-social-login') , "enabled" => true , "visible" => false , "component" => "core" , "pull-right" => true ),
66
+ "help" => array( "label" => __('?' , 'wordpress-social-login') , "enabled" => true , "visible" => true , "component" => "core" , "pull-right" => true ),
67
+ "components" => array( "label" => __("Components" , 'wordpress-social-login') , "enabled" => true , "visible" => true , "component" => "core" , "pull-right" => true ),
68
  );
69
 
70
  // --------------------------------------------------------------------
71
 
72
  /**
73
+ * Register a new WSL component
74
  */
75
  function wsl_register_component( $component, $config, $tabs )
76
  {
78
 
79
  // sure it can be overwritten.. just not recommended
80
  if( isset( $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $component ] ) ){
81
+ return wsl_render_wsl_die( _wsl__("An installed plugin is trying to o-ver-write WordPress Social Login config in a bad way.", 'wordpress-social-login') );
82
  }
83
 
84
  $config["type"] = "plugin";
98
  // --------------------------------------------------------------------
99
 
100
  /**
101
+ * Register new WSL admin tab
102
  */
103
  function wsl_register_admin_tab( $tab, $config )
104
  {
106
 
107
  // sure it can be overwritten.. just not recommended
108
  if( isset( $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[ $tab ] ) ){
109
+ return wsl_render_wsl_die( _wsl__("An installed plugin is trying to o-ver-write WordPress Social Login config in a bad way.", 'wordpress-social-login') );
110
  }
111
 
112
  $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS[ $tab ] = $config;
131
  // --------------------------------------------------------------------
132
 
133
  /**
134
+ * Register WSL components (Bulk action)
135
  */
136
  function wsl_register_components()
137
  {
145
  foreach( $WORDPRESS_SOCIAL_LOGIN_COMPONENTS as $component => $config ){
146
  $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $component ][ "enabled" ] = false;
147
 
148
+ $is_component_enabled = get_option( "wsl_components_" . $component . "_enabled" );
149
+
150
+ if( $is_component_enabled == 1 ){
151
  $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $component ][ "enabled" ] = true;
152
  }
153
 
154
  if( $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $component ][ "type" ] == "core" ){
155
  $WORDPRESS_SOCIAL_LOGIN_COMPONENTS[ $component ][ "enabled" ] = true;
156
 
157
+ if( $is_component_enabled != 1 ){
158
+ update_option( "wsl_components_" . $component . "_enabled", 1 );
159
+ }
160
  }
161
 
162
  foreach( $WORDPRESS_SOCIAL_LOGIN_ADMIN_TABS as $tab => $tconfig ){
173
  // --------------------------------------------------------------------
174
 
175
  /**
176
+ * Register WSL core settings ( options; components )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  */
178
  function wsl_register_setting()
179
  {
188
 
189
  // idps credentials
190
  foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
191
+ $provider_id = isset( $item["provider_id"] ) ? $item["provider_id"] : null;
192
+ $require_client_id = isset( $item["require_client_id"] ) ? $item["require_client_id"] : null;
193
+ $require_registration = isset( $item["new_app_link"] ) ? $item["new_app_link"] : null;
194
 
195
  register_setting( 'wsl-settings-group', 'wsl_settings_' . $provider_id . '_enabled' );
196
 
212
  register_setting( 'wsl-settings-group-customize' , 'wsl_settings_use_popup' );
213
  register_setting( 'wsl-settings-group-customize' , 'wsl_settings_widget_display' );
214
  register_setting( 'wsl-settings-group-customize' , 'wsl_settings_redirect_url' );
215
+ register_setting( 'wsl-settings-group-customize' , 'wsl_settings_force_redirect_url' );
216
  register_setting( 'wsl-settings-group-customize' , 'wsl_settings_users_notification' );
217
  register_setting( 'wsl-settings-group-customize' , 'wsl_settings_authentication_widget_css' );
218
 
228
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_require_email' );
229
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_change_email' );
230
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_profile_completion_change_username' );
 
 
 
 
 
 
 
 
 
231
 
232
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_new_users_moderation_level' );
233
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_new_users_membership_default_role' );
242
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_new_users_restrict_profile_list' );
243
  register_setting( 'wsl-settings-group-bouncer' , 'wsl_settings_bouncer_new_users_restrict_profile_text_bounce' );
244
 
245
+ register_setting( 'wsl-settings-group-buddypress' , 'wsl_settings_buddypress_enable_mapping' );
246
+ register_setting( 'wsl-settings-group-buddypress' , 'wsl_settings_buddypress_xprofile_map' );
247
+
248
  register_setting( 'wsl-settings-group-development' , 'wsl_settings_development_mode_enabled' );
249
 
250
  add_option( 'wsl_settings_welcome_panel_enabled' );
251
 
 
 
 
252
  // HOOKABLE:
253
  do_action( 'wsl_register_setting_end' );
254
  }
255
 
256
  // --------------------------------------------------------------------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/settings/wsl.providers.php CHANGED
@@ -3,22 +3,31 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
  * List of supported providers by Hybridauth Library
11
  *
12
- * Here are defined a 24 idp or so. If you need even more of the Hybridauth additional providers,
13
- * then you need to download additional providers package at http://hybridauth.sf.net/download.html
14
- * and then copy needed additional providers to the library.
15
  *
16
- * For instance, to get Identica provider working you need to copy 'hybridauth-identica/Providers/Identica.php'
17
- * to 'plugins/wordpress-social-login/hybridauth/Hybrid/Providers/Identica.php' and then add it to
18
- * $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG.
 
 
 
 
 
 
 
 
 
 
19
  *
20
  * After that you just need to configure your application ID, private and secret keys at the plugin
21
- * configuration pages.
22
  */
23
 
24
  // Exit if accessed directly
@@ -31,58 +40,46 @@ $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG = ARRAY(
31
  "provider_id" => "Facebook",
32
  "provider_name" => "Facebook",
33
  "require_client_id" => true,
 
34
  "new_app_link" => "https://developers.facebook.com/apps",
35
 
36
- "default_network" => true,
37
  "cat" => "socialnetworks",
38
- )
39
- ,
40
  ARRAY(
41
  "provider_id" => "Google",
42
  "provider_name" => "Google",
43
  "callback" => true,
44
  "require_client_id" => true,
45
- "new_app_link" => "https://code.google.com/apis/console/",
46
 
47
- "default_network" => true,
48
  "cat" => "socialnetworks",
49
- )
50
- ,
51
  ARRAY(
52
  "provider_id" => "Twitter",
53
  "provider_name" => "Twitter",
 
54
  "new_app_link" => "https://dev.twitter.com/apps",
55
 
56
  "default_network" => true,
57
-
58
  "cat" => "microblogging",
59
- )
60
- ,
61
  ARRAY(
62
  "provider_id" => "Live",
63
  "provider_name" => "Windows Live",
64
  "require_client_id" => true,
65
- "new_app_link" => "https://manage.dev.live.com/ApplicationOverview.aspx",
66
 
67
  "cat" => "pleasedie",
68
- )
69
- ,
70
  ARRAY(
71
  "provider_id" => "Yahoo",
72
  "provider_name" => "Yahoo!",
73
  "new_app_link" => null,
74
 
75
  "cat" => "pleasedie",
76
- )
77
- ,
78
- ARRAY(
79
- "provider_id" => "MySpace",
80
- "provider_name" => "MySpace",
81
- "new_app_link" => "http://www.developer.myspace.com/",
82
-
83
- "cat" => "pleasedie",
84
- )
85
- ,
86
  ARRAY(
87
  "provider_id" => "Foursquare",
88
  "provider_name" => "Foursquare",
@@ -91,24 +88,21 @@ $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG = ARRAY(
91
  "new_app_link" => "https://www.foursquare.com/oauth/",
92
 
93
  "cat" => "microblogging",
94
- )
95
- ,
96
  ARRAY(
97
  "provider_id" => "LinkedIn",
98
  "provider_name" => "LinkedIn",
99
  "new_app_link" => "https://www.linkedin.com/secure/developer",
100
 
101
  "cat" => "professional",
102
- )
103
- ,
104
  ARRAY(
105
  "provider_id" => "AOL",
106
  "provider_name" => "AOL",
107
  "new_app_link" => null,
108
 
109
  "cat" => "pleasedie",
110
- )
111
- ,
112
  ARRAY(
113
  "provider_id" => "Vkontakte",
114
  "provider_name" => "Vkontakte",
@@ -117,16 +111,14 @@ $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG = ARRAY(
117
  "new_app_link" => "http://vk.com/developers.php",
118
 
119
  "cat" => "socialnetworks",
120
- )
121
- ,
122
  ARRAY(
123
  "provider_id" => "LastFM",
124
  "provider_name" => "Last.FM",
125
  "new_app_link" => "http://www.lastfm.com/api/account",
126
 
127
  "cat" => "media",
128
- )
129
- ,
130
  ARRAY(
131
  "provider_id" => "Instagram",
132
  "provider_name" => "Instagram",
@@ -135,16 +127,14 @@ $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG = ARRAY(
135
  "new_app_link" => "http://instagr.am/developer/clients/manage/",
136
 
137
  "cat" => "media",
138
- )
139
- ,
140
  ARRAY(
141
  "provider_id" => "Identica",
142
  "provider_name" => "Identica",
143
  "new_app_link" => "http://identi.ca/settings/oauthapps/new",
144
 
145
  "cat" => "microblogging",
146
- )
147
- ,
148
  ARRAY(
149
  "provider_id" => "Tumblr",
150
  "provider_name" => "Tumblr",
@@ -186,6 +176,7 @@ $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG = ARRAY(
186
  ARRAY(
187
  "provider_id" => "Skyrock",
188
  "provider_name" => "Skyrock",
 
189
  "new_app_link" => "https://www.skyrock.com/developer/application",
190
 
191
  "cat" => "socialnetworks",
@@ -227,7 +218,7 @@ $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG = ARRAY(
227
  "provider_name" => "Yandex",
228
  "require_client_id" => true,
229
  "callback" => true,
230
- "new_app_link" => "http://api.yandex.ru",
231
 
232
  "cat" => "misc",
233
  ),
@@ -240,6 +231,45 @@ $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG = ARRAY(
240
 
241
  "cat" => "socialnetworks",
242
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
  );
244
 
245
  // --------------------------------------------------------------------
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
  * List of supported providers by Hybridauth Library
11
  *
12
+ * If you need even more of the Hybridauth additional providers, then you need to download additional providers package
13
+ * at https://github.com/hybridauth/hybridauth/releases and then copy needed additional providers to the library.
 
14
  *
15
+ * For instance, to get XING provider working you need to copy 'hybridauth-identica/Providers/XING.php'
16
+ * to 'plugins/wordpress-social-login/hybridauth/Hybrid/Providers/XING.php' and then add it to
17
+ * $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG :
18
+ *
19
+ * ARRAY(
20
+ * 'provider_id' : Alphanumeric(a-zA-Z0-9) code/name of a provider
21
+ * 'provider_name' : Real provider name.
22
+ * 'require_client_id' : If a provider uses OAuth 2. Defaults to false.
23
+ * 'callback' : If the provide require to set a callback url. Defaults to false.
24
+ * 'new_app_link' : If the provide require to create a new application on his developer site.
25
+ * 'default_network' : If true, it will shows up by default on Admin > WordPress Social Login > Networks
26
+ * 'cat' : Provider category. (for future use)
27
+ * ),
28
  *
29
  * After that you just need to configure your application ID, private and secret keys at the plugin
30
+ * configuration pages (wp-admin/options-general.php?page=wordpress-social-login).
31
  */
32
 
33
  // Exit if accessed directly
40
  "provider_id" => "Facebook",
41
  "provider_name" => "Facebook",
42
  "require_client_id" => true,
43
+ "callback" => true,
44
  "new_app_link" => "https://developers.facebook.com/apps",
45
 
46
+ "default_network" => true,
47
  "cat" => "socialnetworks",
48
+ ),
 
49
  ARRAY(
50
  "provider_id" => "Google",
51
  "provider_name" => "Google",
52
  "callback" => true,
53
  "require_client_id" => true,
54
+ "new_app_link" => "https://console.developers.google.com",
55
 
56
+ "default_network" => true,
57
  "cat" => "socialnetworks",
58
+ ),
 
59
  ARRAY(
60
  "provider_id" => "Twitter",
61
  "provider_name" => "Twitter",
62
+ "callback" => true,
63
  "new_app_link" => "https://dev.twitter.com/apps",
64
 
65
  "default_network" => true,
 
66
  "cat" => "microblogging",
67
+ ),
 
68
  ARRAY(
69
  "provider_id" => "Live",
70
  "provider_name" => "Windows Live",
71
  "require_client_id" => true,
72
+ "new_app_link" => "https://account.live.com/developers/applications/create",
73
 
74
  "cat" => "pleasedie",
75
+ ),
 
76
  ARRAY(
77
  "provider_id" => "Yahoo",
78
  "provider_name" => "Yahoo!",
79
  "new_app_link" => null,
80
 
81
  "cat" => "pleasedie",
82
+ ),
 
 
 
 
 
 
 
 
 
83
  ARRAY(
84
  "provider_id" => "Foursquare",
85
  "provider_name" => "Foursquare",
88
  "new_app_link" => "https://www.foursquare.com/oauth/",
89
 
90
  "cat" => "microblogging",
91
+ ),
 
92
  ARRAY(
93
  "provider_id" => "LinkedIn",
94
  "provider_name" => "LinkedIn",
95
  "new_app_link" => "https://www.linkedin.com/secure/developer",
96
 
97
  "cat" => "professional",
98
+ ),
 
99
  ARRAY(
100
  "provider_id" => "AOL",
101
  "provider_name" => "AOL",
102
  "new_app_link" => null,
103
 
104
  "cat" => "pleasedie",
105
+ ),
 
106
  ARRAY(
107
  "provider_id" => "Vkontakte",
108
  "provider_name" => "Vkontakte",
111
  "new_app_link" => "http://vk.com/developers.php",
112
 
113
  "cat" => "socialnetworks",
114
+ ),
 
115
  ARRAY(
116
  "provider_id" => "LastFM",
117
  "provider_name" => "Last.FM",
118
  "new_app_link" => "http://www.lastfm.com/api/account",
119
 
120
  "cat" => "media",
121
+ ),
 
122
  ARRAY(
123
  "provider_id" => "Instagram",
124
  "provider_name" => "Instagram",
127
  "new_app_link" => "http://instagr.am/developer/clients/manage/",
128
 
129
  "cat" => "media",
130
+ ),
 
131
  ARRAY(
132
  "provider_id" => "Identica",
133
  "provider_name" => "Identica",
134
  "new_app_link" => "http://identi.ca/settings/oauthapps/new",
135
 
136
  "cat" => "microblogging",
137
+ ),
 
138
  ARRAY(
139
  "provider_id" => "Tumblr",
140
  "provider_name" => "Tumblr",
176
  ARRAY(
177
  "provider_id" => "Skyrock",
178
  "provider_name" => "Skyrock",
179
+ "callback" => true,
180
  "new_app_link" => "https://www.skyrock.com/developer/application",
181
 
182
  "cat" => "socialnetworks",
218
  "provider_name" => "Yandex",
219
  "require_client_id" => true,
220
  "callback" => true,
221
+ "new_app_link" => "https://oauth.yandex.ru",
222
 
223
  "cat" => "misc",
224
  ),
231
 
232
  "cat" => "socialnetworks",
233
  ),
234
+ ARRAY(
235
+ "provider_id" => "Reddit",
236
+ "provider_name" => "Reddit",
237
+ "require_client_id" => true,
238
+ "callback" => true,
239
+ "new_app_link" => "https://ssl.reddit.com/prefs/apps",
240
+
241
+ "cat" => "socialnetworks",
242
+ ),
243
+ ARRAY(
244
+ "provider_id" => "Disqus",
245
+ "provider_name" => "Disqus",
246
+ "require_client_id" => true,
247
+ "callback" => true,
248
+ "new_app_link" => "https://disqus.com/api/applications/",
249
+
250
+ "cat" => "misc",
251
+ ),
252
+
253
+ // Paypal needs further testing..
254
+ // ARRAY(
255
+ // "provider_id" => "Paypal",
256
+ // "provider_name" => "Paypal",
257
+ // "require_client_id" => true,
258
+ // "callback" => true,
259
+ // "new_app_link" => "https://developer.paypal.com/webapps/developer/applications/myapps",
260
+
261
+ // "cat" => "misc",
262
+ // ),
263
+
264
+ ARRAY(
265
+ "provider_id" => "PixelPin",
266
+ "provider_name" => "PixelPin",
267
+ "require_client_id" => true,
268
+ "callback" => true,
269
+ "new_app_link" => "https://login.pixelpin.co.uk/",
270
+
271
+ "cat" => "misc",
272
+ ),
273
  );
274
 
275
  // --------------------------------------------------------------------
includes/widgets/wsl.auth.widget.php CHANGED
@@ -3,21 +3,38 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
  * Authentication widgets generator
 
 
 
 
11
  */
12
 
13
  // Exit if accessed directly
14
  if ( !defined( 'ABSPATH' ) ) exit;
15
 
16
  // --------------------------------------------------------------------
17
-
 
 
 
 
 
 
 
 
 
18
  function wsl_render_login_form()
19
  {
 
20
  if ( is_user_logged_in() && ! is_admin() ){
 
 
 
21
  return;
22
  }
23
 
@@ -26,431 +43,268 @@ function wsl_render_login_form()
26
  return;
27
  }
28
 
29
- // HOOKABLE: want to generate your own widget? fine, but Bouncer rules tho
30
- if( apply_filters( 'wsl_render_login_form_takeover', null ) ){
31
- return;
32
- }
33
 
34
- // HOOKABLE:
35
  do_action( 'wsl_render_login_form_start' );
36
 
37
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
38
 
 
 
 
 
39
  if( empty( $social_icon_set ) ){
40
  $social_icon_set = "wpzoom/";
41
  }
42
- else{
43
- $social_icon_set .= "/";
44
- }
45
-
46
- $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/32x32/' . $social_icon_set;
47
 
48
  // HOOKABLE: allow use of other icon sets
49
- $assets_base_url = apply_filters( 'wsl_later_hook_assets_base_url', $assets_base_url );
50
 
51
- $wsl_settings_connect_with_label = get_option( 'wsl_settings_connect_with_label' );
52
-
53
- $current_page_url = 'http';
54
- if (isset($_SERVER["HTTPS"]) && ($_SERVER["HTTPS"] == "on")) {
55
- $current_page_url .= "s";
56
- }
57
- $current_page_url .= "://";
58
- if ($_SERVER["SERVER_PORT"] != "80") {
59
- $current_page_url .= $_SERVER["HTTP_HOST"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
60
- }
61
- else {
62
- $current_page_url .= $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
63
- }
64
 
 
65
  $authenticate_base_url = site_url( 'wp-login.php', 'login_post' ) . ( strpos( site_url( 'wp-login.php', 'login_post' ), '?' ) ? '&' : '?' ) . "action=wordpress_social_authenticate&";
66
-
67
- // overwrite endpoint_url if need'd
68
- if( get_option( 'wsl_settings_hide_wp_login' ) == 1 ){
69
- $authenticate_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . "/services/authenticate.php?";
70
- }
71
  ?>
 
72
  <!--
73
- wsl_render_login_form
74
- WordPress Social Login Plugin ( <?php echo $_SESSION["wsl::plugin"] ?> )
75
- http://wordpress.org/extend/plugins/wordpress-social-login/
76
  -->
 
77
  <?php
 
78
  $wsl_settings_authentication_widget_css = get_option( 'wsl_settings_authentication_widget_css' );
79
 
80
- // if not empty and not the default
81
  if( ! empty( $wsl_settings_authentication_widget_css ) ){
82
- ?>
83
  <style>
84
- <?php echo $wsl_settings_authentication_widget_css ?>
 
 
 
 
 
 
85
  </style>
86
  <?php
87
  }
88
  ?>
89
- <span id="wp-social-login-connect-with"><?php echo $wsl_settings_connect_with_label ?></span>
90
- <div id="wp-social-login-connect-options">
 
 
 
 
91
  <?php
 
 
 
92
  $nok = true;
93
 
94
  // display provider icons
95
  foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
96
- $provider_id = @ $item["provider_id"];
97
- $provider_name = @ $item["provider_name"];
98
 
 
99
  $authenticate_url = $authenticate_base_url . "provider=" . $provider_id . "&redirect_to=" . urlencode( $current_page_url );
100
 
101
- if( get_option( 'wsl_settings_' . $provider_id . '_enabled' ) ){
102
- // HOOKABLE: allow use of other icon sets
103
- $provider_icon_markup = apply_filters( 'wsl_alter_hook_provider_icon_markup', $provider_id );
104
 
105
- $wsl_settings_use_popup = get_option( 'wsl_settings_use_popup' ) ;
 
 
 
 
 
 
 
 
106
 
107
  if( $provider_icon_markup != $provider_id ){
108
  echo $provider_icon_markup;
109
  }
110
- elseif( $wsl_settings_use_popup == 1 ){
111
- ?>
112
- <a rel="nofollow" href="javascript:void(0);" title="Connect with <?php echo $provider_name ?>" class="wsl_connect_with_provider" data-provider="<?php echo $provider_id ?>">
113
- <img alt="<?php echo $provider_name ?>" title="<?php echo $provider_name ?>" src="<?php echo $assets_base_url . strtolower( $provider_id ) . '.png' ?>" />
114
- </a>
115
- <?php
116
- }
117
- elseif( $wsl_settings_use_popup == 2 ){
118
- ?>
119
- <a rel="nofollow" href="<?php echo esc_url( $authenticate_url ) ?>" title="Connect with <?php echo $provider_name ?>" class="wsl_connect_with_provider" >
120
- <img alt="<?php echo $provider_name ?>" title="<?php echo $provider_name ?>" src="<?php echo $assets_base_url . strtolower( $provider_id ) . '.png' ?>" />
121
- </a>
122
- <?php
123
  }
124
 
125
  $nok = false;
126
  }
127
  }
128
 
 
129
  if( $nok ){
130
- ?>
131
  <p style="background-color: #FFFFE0;border:1px solid #E6DB55;padding:5px;">
132
  <?php _wsl_e( '<strong style="color:red;">WordPress Social Login is not configured yet!</strong><br />Please visit the <strong>Settings\ WP Social Login</strong> administration page to configure this plugin.<br />For more information please refer to the plugin <a href="http://hybridauth.sourceforge.net/userguide/Plugin_WordPress_Social_Login.html">online user guide</a> or contact us at <a href="http://hybridauth.sourceforge.net/">hybridauth.sourceforge.net</a>' , 'wordpress-social-login') ?>
133
  </p>
134
- <style>
135
- #wp-social-login-connect-with{display:none;}
136
- </style>
137
- <?php
138
  }
139
 
140
  // provide popup url for hybridauth callback
141
- if( get_option( 'wsl_settings_use_popup' ) == 1 ){
142
  ?>
 
143
  <input id="wsl_popup_base_url" type="hidden" value="<?php echo esc_url( $authenticate_base_url ) ?>" />
144
  <input type="hidden" id="wsl_login_form_uri" value="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" />
 
145
  <?php
146
- }
147
- ?>
148
  </div>
149
- <!-- /wsl_render_login_form -->
150
- <?php
151
 
152
- // HOOKABLE:
153
- do_action( 'wsl_render_login_form_end' );
154
- }
155
 
156
- // --------------------------------------------------------------------
157
 
158
- # {{{ render widget
 
 
159
 
160
- function wsl_render_login_form_login()
161
- {
162
- wsl_render_login_form();
163
- }
164
 
165
- add_action( 'wordpress_social_login', 'wsl_render_login_form_login' );
 
166
 
167
  // --------------------------------------------------------------------
168
 
169
- // display on comment area
170
- function wsl_render_comment_form()
 
 
 
 
171
  {
172
- if( comments_open() && ! is_user_logged_in() ) {
173
- if( ! get_option( 'wsl_settings_widget_display' ) || get_option( 'wsl_settings_widget_display' ) == 1 || get_option( 'wsl_settings_widget_display' ) == 2 ){
174
- wsl_render_login_form();
175
- }
176
- }
177
  }
178
 
179
- add_action( 'comment_form_top', 'wsl_render_comment_form' );
180
 
181
  // --------------------------------------------------------------------
182
 
183
- // display on login form
184
- function wsl_render_login_form_login_form()
 
 
185
  {
186
- if( get_option( 'wsl_settings_widget_display' ) == 1 || get_option( 'wsl_settings_widget_display' ) == 3 ){
187
- wsl_render_login_form();
188
- }
189
  }
190
 
191
- add_action( 'login_form', 'wsl_render_login_form_login_form' );
192
- add_action ('bp_before_account_details_fields', 'wsl_render_login_form_login_form');
193
- add_action ('bp_before_sidebar_login_form', 'wsl_render_login_form_login_form');
194
 
195
  // --------------------------------------------------------------------
196
 
197
- // display on login & register form
198
- function wsl_render_login_form_login_on_register_and_login()
 
 
199
  {
200
- if( get_option( 'wsl_settings_widget_display' ) == 1 ){
201
- wsl_render_login_form();
202
- }
 
 
 
 
 
 
 
 
 
 
203
  }
204
 
205
- add_action( 'register_form', 'wsl_render_login_form_login_on_register_and_login' );
206
- add_action( 'after_signup_form', 'wsl_render_login_form_login_on_register_and_login' );
207
-
208
- # }}}
209
 
210
  // --------------------------------------------------------------------
211
 
212
- # {{{ shortcode, js and css injectors
213
- function wsl_shortcode_handler($args)
 
 
214
  {
215
- if ( ! is_user_logged_in () ){
216
- wsl_render_login_form();
217
- }
 
 
218
  }
219
 
220
- add_shortcode ( 'wordpress_social_login', 'wsl_shortcode_handler' );
 
 
221
 
222
  // --------------------------------------------------------------------
223
 
224
- function wsl_add_javascripts()
 
 
 
225
  {
226
- if( get_option( 'wsl_settings_use_popup' ) != 1 ){
227
- return null;
228
- }
229
 
230
- if( ! wp_script_is( 'wsl_js', 'registered' ) ) {
231
- wp_register_script( "wsl_js", WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . "/assets/js/connect.js" );
232
- }
233
-
234
- wp_print_scripts( "jquery" );
235
- wp_print_scripts( "wsl_js" );
236
  }
237
 
238
- add_action( 'login_head', 'wsl_add_javascripts' );
239
- add_action( 'wp_head', 'wsl_add_javascripts' );
240
 
241
  // --------------------------------------------------------------------
242
 
 
 
 
243
  function wsl_add_stylesheets()
244
  {
245
  if( ! wp_style_is( 'wsl_css', 'registered' ) ) {
246
  wp_register_style( "wsl_css", WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . "/assets/css/style.css" );
247
  }
248
 
249
- if ( did_action( 'wp_print_styles' ) ) {
250
- wp_print_styles( 'wsl_css' );
251
- }
252
- else{
253
- wp_enqueue_style( "social_connect" );
254
- }
255
  }
256
 
257
  add_action( 'login_head', 'wsl_add_stylesheets' );
258
- add_action( 'wp_head', 'wsl_add_stylesheets' );
259
- # }}}
260
 
261
  // --------------------------------------------------------------------
262
 
263
- # {{{ linking new accounts
264
-
265
- // render a new widget on wp-admin/profile.php to permit linking profiles
266
- // only one linked account per provider is permitted!!
267
- function wsl_render_login_form_admin_head_user_profile_generate_html()
268
- {
269
- if ( ! is_user_logged_in() ){
270
- return;
271
- }
272
-
273
- // HOOKABLE: allow users to generate their own
274
- if( apply_filters( 'wsl_hook_profile_widget', null ) ){
275
- return;
276
- }
277
-
278
- # if ob_start()/ob_end_clean() dont work for you then i can do nothing for you
279
- ob_start();
280
-
281
- global $current_user;
282
- global $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
283
-
284
- get_currentuserinfo();
285
-
286
- $user_id = $current_user->ID;
287
-
288
- $linked_accounts = wsl_get_user_linked_accounts_by_user_id( $user_id );
289
-
290
- // if not WSL user, then nothing to show, yet
291
- if( ! $linked_accounts ){
292
- return;
293
- }
294
-
295
- if( empty( $social_icon_set ) ){
296
- $social_icon_set = "wpzoom/";
297
- }
298
- else{
299
- $social_icon_set .= "/";
300
  }
301
 
302
- $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/32x32/' . $social_icon_set;
303
- ?>
304
- <h3><?php _wsl_e("Social networks", 'wordpress-social-login') ?></h3>
305
- <table class="form-table">
306
- <tr>
307
- <td valign="top">
308
- <table id="wsl-user-profile-injected-table-b">
309
- <tr>
310
- <th width="80"><?php _wsl_e("Provider", 'wordpress-social-login') ?></th>
311
- <th><?php _wsl_e("Identity", 'wordpress-social-login') ?></th>
312
- </tr>
313
- <?php
314
- foreach( $linked_accounts AS $item ){
315
- $identity = $item->profileurl;
316
- $photourl = $item->photourl;
317
-
318
- if( ! $identity ){
319
- $identity = $item->identifier;
320
- }
321
- ?>
322
- <tr>
323
- <td>
324
- <?php if( $photourl ) { ?>
325
- <img src="<?php echo $photourl ?>" style="vertical-align: top;width:16px;height:16px;" >
326
- <?php } else { ?>
327
- <img src="<?php echo $assets_base_url . strtolower( $item->provider ) . '.png' ?>" style="vertical-align: top;width:16px;height:16px;" />
328
- <?php } ?>
329
- <?php echo ucfirst( $item->provider ); ?>
330
- </td>
331
- <td><?php echo $identity; ?></td>
332
- </tr>
333
- <?php
334
- }
335
- ?>
336
- </table>
337
- </td>
338
- </tr>
339
- </tr>
340
- <?php
341
- // Bouncer :: Allow authentication && Linking accounts is enabled
342
- if( get_option( 'wsl_settings_bouncer_authentication_enabled' ) == 1 && get_option( 'wsl_settings_bouncer_linking_accounts_enabled' ) == 1 ){
343
- $list_connected_providers = wsl_get_list_connected_providers();
344
- ?>
345
- <tr>
346
- <td valign="top">
347
- <b><?php _wsl_e("Add more identities", 'wordpress-social-login') ?></b>
348
- <br />
349
- <?php
350
- foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
351
- $provider_id = @ $item["provider_id"];
352
- $provider_name = @ $item["provider_name"];
353
- $dispaly = true;
354
-
355
- // only one linked account per provider is permitted!!
356
- foreach( $linked_accounts AS $link ){
357
- if( $link->provider == $provider_id ){
358
- $dispaly = false;
359
- }
360
- }
361
-
362
- if( $dispaly ){
363
- $social_icon_set = get_option( 'wsl_settings_social_icon_set' );
364
-
365
- $current_page_url = admin_url("profile.php");
366
-
367
- if( get_option( 'wsl_settings_' . $provider_id . '_enabled' ) ){
368
- ?>
369
- <a href="<?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL; ?>/services/authenticate.php?provider=<?php echo $provider_id ?>&link=1&redirect_to=<?php echo urlencode($current_page_url) ?>" title="Connect with <?php echo $provider_name ?>" style="text-decoration:none;" target="_blank">
370
- <img alt="<?php echo $provider_name ?>" title="<?php echo $provider_name ?>" src="<?php echo $assets_base_url . strtolower( $provider_id ) . '.png' ?>" />
371
- </a>
372
- <?php
373
- }
374
- }
375
- }
376
- ?>
377
- </td>
378
- </tr>
379
- <?php
380
- }
381
-
382
- if( $list_connected_providers ){
383
- ?>
384
- <tr>
385
- <td>
386
- <b><?php _wsl_e("Currently connected to:", 'wordpress-social-login') ?></b>
387
- <?php echo implode( ', ', $list_connected_providers ); ?>
388
- </td>
389
- </tr>
390
- <?php
391
  }
392
- ?>
393
-
394
- </table>
395
- <?php
396
- $html = ob_get_contents();
397
-
398
- ob_end_clean();
399
 
400
- return addslashes( preg_replace('/\s+/',' ', $html ) );
401
- }
402
-
403
- function wsl_render_login_form_admin_head_user_profile()
404
- {
405
- // HOOKABLE:
406
- if( apply_filters( 'wsl_hook_alter_render_login_form_admin_head_user_profile', null ) ){
407
- return;
408
- }
409
- ?>
410
- <style>
411
- #wsl-user-profile-injected-table-b
412
- {
413
- font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
414
- font-size: 12px;
415
- background: #fff;
416
- border-collapse: collapse;
417
- text-align: left;
418
- }
419
- #wsl-user-profile-injected-table-b th
420
- {
421
- font-size: 14px;
422
- font-weight: normal;
423
- padding: 10px 8px;
424
- border-bottom: 2px solid #ccc;
425
- width: auto;
426
- }
427
- #wsl-user-profile-injected-table-b td
428
- {
429
- border-bottom: 1px solid #ccc;
430
- padding: 6px 8px;
431
- width: auto;
432
- }
433
- #wsl-user-profile-injected-table-b tbody tr:hover td
434
- {
435
- color: #009;
436
- }
437
- </style>
438
- <script>
439
- jQuery(document).ready(function($)
440
- {
441
- jQuery( '#user_login' )
442
- .parent()
443
- .parent()
444
- .parent()
445
- .parent()
446
- .after( '<?php echo wsl_render_login_form_admin_head_user_profile_generate_html() ?>' );
447
- });
448
- </script>
449
- <?php
450
  }
451
 
452
- add_action( 'admin_head-profile.php', 'wsl_render_login_form_admin_head_user_profile' );
453
-
454
- # }}} linking new accounts
455
 
456
  // --------------------------------------------------------------------
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
  * Authentication widgets generator
11
+ *
12
+ * http://hybridauth.sourceforge.net/wsl/customize.html
13
+ * http://hybridauth.sourceforge.net/wsl/themes.html
14
+ * http://hybridauth.sourceforge.net/wsl/developer.html
15
  */
16
 
17
  // Exit if accessed directly
18
  if ( !defined( 'ABSPATH' ) ) exit;
19
 
20
  // --------------------------------------------------------------------
21
+ /**
22
+ * Gnenerate the HTML content of WSL Widget
23
+ *
24
+ * Important Notes:
25
+ * Since WSL 2.2.1, all elements IDs generated by the widget are replaced by css classes :
26
+ * #wp-social-login-connect-with replaced with .wp-social-login-connect-with
27
+ * #wp-social-login-connect-options replaced with .wp-social-login-provider-list
28
+ * Class .wsl_connect_with_provider will be replaced with .wp-social-login-provider and .wp-social-login-provider-{provider}
29
+ * Those depreciated selectors are kept for backward compatibility and will be removed.
30
+ */
31
  function wsl_render_login_form()
32
  {
33
+ // WSL Widget won't show up for connected users
34
  if ( is_user_logged_in() && ! is_admin() ){
35
+ // HOOKABLE:
36
+ do_action( 'wsl_render_login_form_user_loggedin' );
37
+
38
  return;
39
  }
40
 
43
  return;
44
  }
45
 
46
+ ob_start();
 
 
 
47
 
48
+ // HOOKABLE: This action runs just before generating the WSL Widget.
49
  do_action( 'wsl_render_login_form_start' );
50
 
51
  GLOBAL $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
52
 
53
+ // Icon set. If eq 'none', we show text instead
54
+ $social_icon_set = get_option( 'wsl_settings_social_icon_set' );
55
+
56
+ // wpzoom icons set, is shown by default
57
  if( empty( $social_icon_set ) ){
58
  $social_icon_set = "wpzoom/";
59
  }
60
+
61
+ $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/32x32/' . $social_icon_set . '/';
 
 
 
62
 
63
  // HOOKABLE: allow use of other icon sets
64
+ $assets_base_url = apply_filters( 'wsl_hook_alter_assets_base_url', $assets_base_url );
65
 
66
+ // get the current page url, which we will use to redirect the user to,
67
+ // unless Widget::Force redirection is set to 'yes', then this will be ignored and Widget::Redirect URL will be used instead
68
+ $current_page_url = wsl_get_current_url();
 
 
 
 
 
 
 
 
 
 
69
 
70
+ // build the authentication url which will call for wsl_process_login() : action=wordpress_social_authenticate
71
  $authenticate_base_url = site_url( 'wp-login.php', 'login_post' ) . ( strpos( site_url( 'wp-login.php', 'login_post' ), '?' ) ? '&' : '?' ) . "action=wordpress_social_authenticate&";
 
 
 
 
 
72
  ?>
73
+
74
  <!--
75
+ wsl_render_login_form
76
+ WordPress Social Login Plugin <?php echo wsl_get_version(); ?>.
77
+ http://wordpress.org/extend/plugins/wordpress-social-login/
78
  -->
79
+
80
  <?php
81
+ // Widget::Custom CSS
82
  $wsl_settings_authentication_widget_css = get_option( 'wsl_settings_authentication_widget_css' );
83
 
84
+ // show the custom widget css if not empty
85
  if( ! empty( $wsl_settings_authentication_widget_css ) ){
86
+ ?>
87
  <style>
88
+ <?php
89
+ echo
90
+ preg_replace(
91
+ array( '%/\*(?:(?!\*/).)*\*/%s', '/\s{2,}/', "/\s*([;{}])[\r\n\t\s]/", '/\\s*;\\s*/', '/\\s*{\\s*/', '/;?\\s*}\\s*/' ),
92
+ array( '', ' ', '$1', ';', '{', '}' ),
93
+ $wsl_settings_authentication_widget_css );
94
+ ?>
95
  </style>
96
  <?php
97
  }
98
  ?>
99
+
100
+ <div class="wp-social-login-widget">
101
+
102
+ <div id="wp-social-login-connect-with" class="wp-social-login-connect-with"><?php _wsl_e( get_option( 'wsl_settings_connect_with_label' ), 'wordpress-social-login'); ?></div>
103
+
104
+ <div id="wp-social-login-connect-options" class="wp-social-login-provider-list">
105
  <?php
106
+ // Widget::Authentication display
107
+ $wsl_settings_use_popup = get_option( 'wsl_settings_use_popup' );
108
+
109
  $nok = true;
110
 
111
  // display provider icons
112
  foreach( $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG AS $item ){
113
+ $provider_id = isset( $item["provider_id"] ) ? $item["provider_id"] : '' ;
114
+ $provider_name = isset( $item["provider_name"] ) ? $item["provider_name"] : '' ;
115
 
116
+ // build authentication url
117
  $authenticate_url = $authenticate_base_url . "provider=" . $provider_id . "&redirect_to=" . urlencode( $current_page_url );
118
 
119
+ // http://codex.wordpress.org/Function_Reference/esc_url
120
+ $authenticate_url = esc_url( $authenticate_url );
 
121
 
122
+ if( get_option( 'wsl_settings_' . $provider_id . '_enabled' ) ){
123
+ // in case, Widget::Authentication display is set to 'popup', then we overwrite 'authenticate_url'
124
+ // > /assets/js/connect.js will take care of the rest
125
+ if( $wsl_settings_use_popup == 1 ){
126
+ $authenticate_url= "javascript:void(0);";
127
+ }
128
+
129
+ // HOOKABLE: allow use of other icon sets
130
+ $provider_icon_markup = apply_filters( 'wsl_render_login_form_alter_provider_icon_markup', $provider_id, $provider_name, $authenticate_url );
131
 
132
  if( $provider_icon_markup != $provider_id ){
133
  echo $provider_icon_markup;
134
  }
135
+ else{
136
+ ?>
137
+
138
+ <a rel="nofollow" href="<?php echo $authenticate_url; ?>" title="<?php echo sprintf( _wsl__("Connect with %s", 'wordpress-social-login'), $provider_name ) ?>" class="wsl_connect_with_provider wp-social-login-provider wp-social-login-provider-<?php echo strtolower( $provider_id ); ?>" data-provider="<?php echo $provider_id ?>">
139
+ <?php if( $social_icon_set == 'none' ){ echo $provider_name; } else { ?><img alt="<?php echo $provider_name ?>" title="<?php echo sprintf( _wsl__("Connect with %s", 'wordpress-social-login'), $provider_name ) ?>" src="<?php echo $assets_base_url . strtolower( $provider_id ) . '.png' ?>" /><?php } ?>
140
+ </a>
141
+
142
+ <?php
 
 
 
 
 
143
  }
144
 
145
  $nok = false;
146
  }
147
  }
148
 
149
+ // not provider enabled?
150
  if( $nok ){
151
+ ?>
152
  <p style="background-color: #FFFFE0;border:1px solid #E6DB55;padding:5px;">
153
  <?php _wsl_e( '<strong style="color:red;">WordPress Social Login is not configured yet!</strong><br />Please visit the <strong>Settings\ WP Social Login</strong> administration page to configure this plugin.<br />For more information please refer to the plugin <a href="http://hybridauth.sourceforge.net/userguide/Plugin_WordPress_Social_Login.html">online user guide</a> or contact us at <a href="http://hybridauth.sourceforge.net/">hybridauth.sourceforge.net</a>' , 'wordpress-social-login') ?>
154
  </p>
155
+ <style>#wp-social-login-connect-with{display:none;}</style>
156
+ <?php
 
 
157
  }
158
 
159
  // provide popup url for hybridauth callback
160
+ if( $wsl_settings_use_popup == 1 ){
161
  ?>
162
+
163
  <input id="wsl_popup_base_url" type="hidden" value="<?php echo esc_url( $authenticate_base_url ) ?>" />
164
  <input type="hidden" id="wsl_login_form_uri" value="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" />
165
+
166
  <?php
167
+ }
168
+ ?>
169
  </div>
 
 
170
 
171
+ <div class="wp-social-login-widget-clearing"></div>
172
+ </div>
 
173
 
174
+ <!-- wsl_render_login_form -->
175
 
176
+ <?php
177
+ // HOOKABLE: This action runs just after generating the WSL Widget.
178
+ do_action( 'wsl_render_login_form_end' );
179
 
180
+ // Display WSL debugging are bellow the widget.
181
+ // wsl_display_dev_mode_debugging_area(); // ! keep this line commented unless you know what you are doing :)
 
 
182
 
183
+ return ob_get_clean();
184
+ }
185
 
186
  // --------------------------------------------------------------------
187
 
188
+ /**
189
+ * WSL Widget hortcode tag
190
+ *
191
+ * Ref: http://codex.wordpress.org/Function_Reference/add_shortcode
192
+ */
193
+ function wsl_shortcode_handler($args)
194
  {
195
+ return wsl_render_login_form();
 
 
 
 
196
  }
197
 
198
+ add_shortcode( 'wordpress_social_login', 'wsl_shortcode_handler' );
199
 
200
  // --------------------------------------------------------------------
201
 
202
+ /**
203
+ * WSL Widget action
204
+ */
205
+ function wsl_render_login_form_login()
206
  {
207
+ echo wsl_render_login_form();
 
 
208
  }
209
 
210
+ add_action( 'wordpress_social_login', 'wsl_render_login_form_login' );
 
 
211
 
212
  // --------------------------------------------------------------------
213
 
214
+ /**
215
+ * Display on comment area
216
+ */
217
+ function wsl_render_wsl_widget_in_comment_form()
218
  {
219
+ $wsl_settings_widget_display = get_option( 'wsl_settings_widget_display' );
220
+
221
+ if( comments_open() ){
222
+ if(
223
+ ! $wsl_settings_widget_display
224
+ ||
225
+ $wsl_settings_widget_display == 1
226
+ ||
227
+ $wsl_settings_widget_display == 2
228
+ ){
229
+ echo wsl_render_login_form();
230
+ }
231
+ }
232
  }
233
 
234
+ add_action( 'comment_form_top', 'wsl_render_wsl_widget_in_comment_form' );
 
 
 
235
 
236
  // --------------------------------------------------------------------
237
 
238
+ /**
239
+ * Display on login form
240
+ */
241
+ function wsl_render_wsl_widget_in_wp_login_form()
242
  {
243
+ $wsl_settings_widget_display = get_option( 'wsl_settings_widget_display' );
244
+
245
+ if( $wsl_settings_widget_display == 1 || $wsl_settings_widget_display == 3 ){
246
+ echo wsl_render_login_form();
247
+ }
248
  }
249
 
250
+ add_action( 'login_form' , 'wsl_render_wsl_widget_in_wp_login_form' );
251
+ add_action( 'bp_before_account_details_fields', 'wsl_render_wsl_widget_in_wp_login_form' );
252
+ add_action( 'bp_before_sidebar_login_form' , 'wsl_render_wsl_widget_in_wp_login_form' );
253
 
254
  // --------------------------------------------------------------------
255
 
256
+ /**
257
+ * Display on login & register form
258
+ */
259
+ function wsl_render_wsl_widget_in_wp_register_form()
260
  {
261
+ $wsl_settings_widget_display = get_option( 'wsl_settings_widget_display' );
 
 
262
 
263
+ if( $wsl_settings_widget_display == 1 || $wsl_settings_widget_display == 3 ){
264
+ echo wsl_render_login_form();
265
+ }
 
 
 
266
  }
267
 
268
+ add_action( 'register_form' , 'wsl_render_wsl_widget_in_wp_register_form' );
269
+ add_action( 'after_signup_form', 'wsl_render_wsl_widget_in_wp_register_form' );
270
 
271
  // --------------------------------------------------------------------
272
 
273
+ /**
274
+ * Enqueue WSL CSS file
275
+ */
276
  function wsl_add_stylesheets()
277
  {
278
  if( ! wp_style_is( 'wsl_css', 'registered' ) ) {
279
  wp_register_style( "wsl_css", WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . "/assets/css/style.css" );
280
  }
281
 
282
+ wp_enqueue_style( "wsl_css" );
 
 
 
 
 
283
  }
284
 
285
  add_action( 'login_head', 'wsl_add_stylesheets' );
286
+ add_action( 'wp_head' , 'wsl_add_stylesheets' );
 
287
 
288
  // --------------------------------------------------------------------
289
 
290
+ /**
291
+ * Enqueue WSL Javascript, only if we use popup
292
+ */
293
+ function wsl_add_javascripts()
294
+ {
295
+ if( get_option( 'wsl_settings_use_popup' ) != 1 ){
296
+ return null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  }
298
 
299
+ if( ! wp_script_is( 'wsl_js', 'registered' ) ) {
300
+ wp_register_script( "wsl_js", WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . "/assets/js/script.js" );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
301
  }
 
 
 
 
 
 
 
302
 
303
+ wp_enqueue_script( "jquery" );
304
+ wp_enqueue_script( "wsl_js" );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
  }
306
 
307
+ add_action( 'login_head', 'wsl_add_javascripts' );
308
+ add_action( 'wp_head' , 'wsl_add_javascripts' );
 
309
 
310
  // --------------------------------------------------------------------
includes/widgets/wsl.complete.registration.php CHANGED
@@ -3,11 +3,11 @@
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
- * Page for users completing their registration (currently used only by Bouncer::Email Validation
11
  */
12
 
13
  // Exit if accessed directly
@@ -17,15 +17,16 @@ if ( !defined( 'ABSPATH' ) ) exit;
17
 
18
  function wsl_process_login_complete_registration( $provider, $redirect_to, $hybridauth_user_email, $hybridauth_user_login )
19
  {
20
- // print_r( "$provider, $redirect_to, $hybridauth_user_email, $hybridauth_user_login" );
 
21
 
22
  $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
23
 
24
  // check posted user email & login
25
- $request_user_login = @ $_REQUEST["user_login"];
26
- $request_user_email = @ $_REQUEST["user_email"];
27
 
28
- $request_user_login = sanitize_user( $request_user_login );
29
  $request_user_email = sanitize_email( $request_user_email );
30
 
31
  $request_user_login_exists = username_exists ( $request_user_login );
@@ -48,19 +49,19 @@ function wsl_process_login_complete_registration( $provider, $redirect_to, $hybr
48
  if( ! $request_user_email ){
49
  $shall_pass = false;
50
 
51
- $shall_pass_errors[ get_option( 'wsl_settings_bouncer_profile_completion_text_email_invalid' ) ] = true;
52
  }
53
 
54
  if( ! $request_user_email_validate ){
55
  $shall_pass = false;
56
 
57
- $shall_pass_errors[ get_option( 'wsl_settings_bouncer_profile_completion_text_email_invalid' ) ] = true;
58
  }
59
 
60
  if( $request_user_email_exists ){
61
  $shall_pass = false;
62
 
63
- $shall_pass_errors[ get_option( 'wsl_settings_bouncer_profile_completion_text_email_exists' ) ] = true;
64
  }
65
  }
66
 
@@ -68,88 +69,85 @@ function wsl_process_login_complete_registration( $provider, $redirect_to, $hybr
68
  if( ! $request_user_login ){
69
  $shall_pass = false;
70
 
71
- $shall_pass_errors[ get_option( 'wsl_settings_bouncer_profile_completion_text_username_invalid' ) ] = true;
72
  }
73
 
74
  if( ! $request_user_login_validate ){
75
  $shall_pass = false;
76
 
77
- $shall_pass_errors[ get_option( 'wsl_settings_bouncer_profile_completion_text_username_invalid' ) ] = true;
78
  }
79
 
80
  if( $request_user_login_exists ){
81
  $shall_pass = false;
82
 
83
- $shall_pass_errors[ get_option( 'wsl_settings_bouncer_profile_completion_text_username_exists' ) ] = true;
84
  }
85
  }
86
 
87
  if( ! $shall_pass ){
88
  ?>
89
  <!DOCTYPE html>
90
- <head>
91
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
92
- <title><?php echo get_bloginfo('name'); ?></title>
93
- <head>
94
- <style>
95
- body.login{background:0 repeat scroll 0 0 #fbfbfb;min-width:0}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body{font-family:sans-serif;font-size:12px;line-height:1.4em;min-width:600px}html,body{height:100%;margin:0;padding:0}#login{margin:auto;padding:114px 0 0;width:320px}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.message{margin:0 0 16px 8px;padding:12px;border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px}.info{font-family:sans-serif;font-size:12px;line-height:1.4em}.login form{background:0 repeat scroll 0 0 #fff;border:1px solid #e5e5e5;box-shadow:0 4px 10px -1px rgba(200,200,200,.7);font-weight:400;margin-left:8px;padding:26px 24px 46px;border-radius:3px 3px 3px 3px}.login label{color:#777;font-size:14px;cursor:pointer;vertical-align:middle}input[type="text"]{background:0 repeat scroll 0 0 #fbfbfb;border:1px solid #e5e5e5;box-shadow:1px 1px 2px rgba(200,200,200,.2) inset;color:#555;font-size:24px;font-weight:200;line-height:1;margin-bottom:16px;margin-right:6px;margin-top:2px;outline:0 none;padding:3px;width:100%}.button-primary{display:inline-block;text-decoration:none;font-size:12px;line-height:23px;height:24px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-radius:3px;-webkit-appearance:none;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#21759b;background-image:-webkit-gradient(linear,left top,left bottom,from(#2a95c5),to(#21759b));background-image:-webkit-linear-gradient(top,#2a95c5,#21759b);background-image:-moz-linear-gradient(top,#2a95c5,#21759b);background-image:-ms-linear-gradient(top,#2a95c5,#21759b);background-image:-o-linear-gradient(top,#2a95c5,#21759b);background-image:linear-gradient(to bottom,#2a95c5,#21759b);border-color:#21759b;border-bottom-color:#1e6a8d;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5);box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1);float:right;height:36px;}#login{width:580px}.error{margin:0 0 16px 8px;padding:12px;border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px;background-color: #FFEBE8;border:1px solid #CC0000;}
96
- </style>
97
- <script>
98
- function init() {
99
- if( document.getElementById('user_login') ) document.getElementById('user_login').focus()
100
- if( document.getElementById('user_email') ) document.getElementById('user_email').focus()
101
- }
102
- </script>
103
- <body class="login" onload="init();">
104
- <!--
105
- wsl_process_login_complete_registration
106
- WordPress Social Login Plugin ( <?php echo $_SESSION["wsl::plugin"] ?> )
107
- http://wordpress.org/extend/plugins/wordpress-social-login/
108
- -->
109
- <div id="login">
110
- <?php
111
- if( ! isset( $_REQUEST["bouncer_profile_completion"] ) ){
112
- ?><p class="message"><?php echo get_option( 'wsl_settings_bouncer_profile_completion_text_notice' ); ?></p><?php
113
  }
114
- elseif( $shall_pass_errors ){
115
- foreach( $shall_pass_errors as $k => $v ){
116
- ?><p class="error"><?php echo $k; ?></p><?php
 
 
 
 
117
  }
118
- }
119
- ?>
120
- <form method="post" action="<?php echo site_url( 'wp-login.php', 'login_post' ); ?>" id="loginform" name="loginform">
121
- <?php if( get_option( 'wsl_settings_bouncer_profile_completion_change_username' ) == 1 ){ ?>
122
- <p>
123
- <label for="user_login"><?php echo get_option( 'wsl_settings_bouncer_profile_completion_text_username' ); ?><br><input type="text" name="user_login" id="user_login" class="input" value="<?php echo $hybridauth_user_login ?>" size="25" /></label>
124
- </p>
125
- <?php } ?>
126
-
127
- <?php if( get_option( 'wsl_settings_bouncer_profile_completion_require_email' ) == 1 ){ ?>
128
- <p>
129
- <label for="user_email"><?php echo get_option( 'wsl_settings_bouncer_profile_completion_text_email' ); ?><br><input type="text" name="user_email" id="user_email" class="input" value="<?php echo $request_user_email ?>" size="25" /></label>
130
- </p>
131
- <?php } ?>
132
-
133
- <table width="100%" border="0">
134
- <tr>
135
- <td valign="bottom">
136
- <span class="info">
137
- <img src="<?php echo $assets_base_url . strtolower( $provider ) . '.png' ?>" style="vertical-align: top;width:16px;height:16px;" />
138
- <?php echo get_option( 'wsl_settings_bouncer_profile_completion_text_connected_with' ); ?> <b><?php echo ucfirst($provider) ?></b>.
139
- </span>
140
- </td>
141
- <td>
142
- <input type="submit" value="<?php echo get_option( 'wsl_settings_bouncer_profile_completion_text_submit_button' ); ?>" class="button button-primary button-large" id="wp-submit" name="wp-submit">
143
- </td>
144
- </tr>
145
- </table>
146
- <input type="hidden" id="redirect_to" name="redirect_to" value="<?php echo $redirect_to ?>">
147
- <input type="hidden" id="provider" name="provider" value="<?php echo $provider ?>">
148
- <input type="hidden" id="action" name="action" value="wordpress_social_login">
149
- <input type="hidden" id="bouncer_profile_completion" name="bouncer_profile_completion" value="1">
150
- </form>
151
- </div>
152
- </body>
 
 
 
 
 
153
  </html>
154
  <?php
155
  die();
3
  * WordPress Social Login
4
  *
5
  * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
  */
8
 
9
  /**
10
+ * Page for users completing their registration (currently used only by Bouncer::Email Validation)
11
  */
12
 
13
  // Exit if accessed directly
17
 
18
  function wsl_process_login_complete_registration( $provider, $redirect_to, $hybridauth_user_email, $hybridauth_user_login )
19
  {
20
+ // HOOKABLE:
21
+ do_action( "wsl_process_login_complete_registration_start", $provider, $redirect_to, $hybridauth_user_email, $hybridauth_user_login );
22
 
23
  $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/16x16/';
24
 
25
  // check posted user email & login
26
+ $request_user_login = isset( $_REQUEST["user_login"] ) ? $_REQUEST["user_login"] : '';
27
+ $request_user_email = isset( $_REQUEST["user_email"] ) ? $_REQUEST["user_email"] : '';
28
 
29
+ $request_user_login = sanitize_user( $request_user_login, true );
30
  $request_user_email = sanitize_email( $request_user_email );
31
 
32
  $request_user_login_exists = username_exists ( $request_user_login );
49
  if( ! $request_user_email ){
50
  $shall_pass = false;
51
 
52
+ $shall_pass_errors[ _wsl__("E-mail is not valid!", 'wordpress-social-login') ] = true;
53
  }
54
 
55
  if( ! $request_user_email_validate ){
56
  $shall_pass = false;
57
 
58
+ $shall_pass_errors[ _wsl__("E-mail is not valid!", 'wordpress-social-login') ] = true;
59
  }
60
 
61
  if( $request_user_email_exists ){
62
  $shall_pass = false;
63
 
64
+ $shall_pass_errors[ _wsl__("That E-mail is already registered!", 'wordpress-social-login') ] = true;
65
  }
66
  }
67
 
69
  if( ! $request_user_login ){
70
  $shall_pass = false;
71
 
72
+ $shall_pass_errors[ _wsl__("Username is not valid!", 'wordpress-social-login') ] = true;
73
  }
74
 
75
  if( ! $request_user_login_validate ){
76
  $shall_pass = false;
77
 
78
+ $shall_pass_errors[ _wsl__("Username is not valid!", 'wordpress-social-login') ] = true;
79
  }
80
 
81
  if( $request_user_login_exists ){
82
  $shall_pass = false;
83
 
84
+ $shall_pass_errors[ _wsl__("That Username is already registered!", 'wordpress-social-login') ] = true;
85
  }
86
  }
87
 
88
  if( ! $shall_pass ){
89
  ?>
90
  <!DOCTYPE html>
91
+ <head>
92
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
93
+ <title><?php echo get_bloginfo('name'); ?></title>
94
+ <head>
95
+ <style>
96
+ body.login{background:0 repeat scroll 0 0 #fbfbfb;min-width:0}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body{font-family:sans-serif;font-size:12px;line-height:1.4em;min-width:600px}html,body{height:100%;margin:0;padding:0}#login{margin:auto;padding:114px 0 0;width:320px}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.message{margin:0 0 16px 8px;padding:12px;border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px}.info{font-family:sans-serif;font-size:12px;line-height:1.4em}.login form{background:0 repeat scroll 0 0 #fff;border:1px solid #e5e5e5;box-shadow:0 4px 10px -1px rgba(200,200,200,.7);font-weight:400;margin-left:8px;padding:26px 24px 46px;border-radius:3px 3px 3px 3px}.login label{color:#777;font-size:14px;cursor:pointer;vertical-align:middle}input[type="text"]{background:0 repeat scroll 0 0 #fbfbfb;border:1px solid #e5e5e5;box-shadow:1px 1px 2px rgba(200,200,200,.2) inset;color:#555;font-size:24px;font-weight:200;line-height:1;margin-bottom:16px;margin-right:6px;margin-top:2px;outline:0 none;padding:3px;width:100%}.button-primary{display:inline-block;text-decoration:none;font-size:12px;line-height:23px;height:24px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-radius:3px;-webkit-appearance:none;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#21759b;background-image:-webkit-gradient(linear,left top,left bottom,from(#2a95c5),to(#21759b));background-image:-webkit-linear-gradient(top,#2a95c5,#21759b);background-image:-moz-linear-gradient(top,#2a95c5,#21759b);background-image:-ms-linear-gradient(top,#2a95c5,#21759b);background-image:-o-linear-gradient(top,#2a95c5,#21759b);background-image:linear-gradient(to bottom,#2a95c5,#21759b);border-color:#21759b;border-bottom-color:#1e6a8d;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5);box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1);float:right;height:36px;}#login{width:580px}.error{margin:0 0 16px 8px;padding:12px;border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px;background-color: #FFEBE8;border:1px solid #CC0000;}
97
+ </style>
98
+ <script>
99
+ function init() {
100
+ if( document.getElementById('user_login') ) document.getElementById('user_login').focus()
101
+ if( document.getElementById('user_email') ) document.getElementById('user_email').focus()
 
 
 
 
 
 
 
 
 
 
 
 
102
  }
103
+ </script>
104
+ </head>
105
+ <body class="login" onload="init();">
106
+ <div id="login">
107
+ <?php
108
+ if( ! isset( $_REQUEST["bouncer_profile_completion"] ) ){
109
+ ?><p class="message"><?php _wsl_e( "Almost there, we just need to check a couple of things", 'wordpress-social-login' ); ?></p><?php
110
  }
111
+ elseif( $shall_pass_errors ){
112
+ foreach( $shall_pass_errors as $k => $v ){
113
+ ?><p class="error"><?php echo $k; ?></p><?php
114
+ }
115
+ }
116
+ ?>
117
+ <form method="post" action="<?php echo site_url( 'wp-login.php', 'login_post' ); ?>" id="loginform" name="loginform">
118
+ <?php if( get_option( 'wsl_settings_bouncer_profile_completion_change_username' ) == 1 ){ ?>
119
+ <p>
120
+ <label for="user_login"><?php _wsl_e( "Username", 'wordpress-social-login' ); ?><br><input type="text" name="user_login" id="user_login" class="input" value="<?php echo $hybridauth_user_login ?>" size="25" /></label>
121
+ </p>
122
+ <?php } ?>
123
+
124
+ <?php if( get_option( 'wsl_settings_bouncer_profile_completion_require_email' ) == 1 ){ ?>
125
+ <p>
126
+ <label for="user_email"><?php _wsl_e( "E-mail", 'wordpress-social-login' ); ?><br><input type="text" name="user_email" id="user_email" class="input" value="<?php echo $request_user_email ?>" size="25" /></label>
127
+ </p>
128
+ <?php } ?>
129
+
130
+ <table width="100%" border="0">
131
+ <tr>
132
+ <td valign="bottom">
133
+ <span class="info">
134
+ <img src="<?php echo $assets_base_url . strtolower( $provider ) . '.png' ?>" style="vertical-align: top;width:16px;height:16px;" />
135
+ <?php _wsl_e("You are now connected via", 'wordpress-social-login' ); ?> <b><?php echo ucfirst($provider) ?></b>.
136
+ </span>
137
+ </td>
138
+ <td>
139
+ <input type="submit" value="<?php _wsl_e( "Continue", 'wordpress-social-login' ); ?>" class="button button-primary button-large" id="wp-submit" name="wp-submit">
140
+ </td>
141
+ </tr>
142
+ </table>
143
+
144
+ <input type="hidden" id="redirect_to" name="redirect_to" value="<?php echo $redirect_to ?>">
145
+ <input type="hidden" id="provider" name="provider" value="<?php echo $provider ?>">
146
+ <input type="hidden" id="action" name="action" value="wordpress_social_profile_completion">
147
+ <input type="hidden" id="bouncer_profile_completion" name="bouncer_profile_completion" value="1">
148
+ </form>
149
+ </div>
150
+ </body>
151
  </html>
152
  <?php
153
  die();
includes/widgets/wsl.error.pages.php ADDED
@@ -0,0 +1,285 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * WordPress Social Login
4
+ *
5
+ * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
+ */
8
+
9
+ /**
10
+ * Generate WSL notices end errors pages.
11
+ */
12
+
13
+ // Exit if accessed directly
14
+ if ( !defined( 'ABSPATH' ) ) exit;
15
+
16
+ // --------------------------------------------------------------------
17
+
18
+ /**
19
+ * Display a simple notice to the user and kill WordPress execution.
20
+ *
21
+ * This function is mainly used by bouncer
22
+ *
23
+ * Note:
24
+ * In case you want to customize the content generated, you may define this function in 'wordpress-social-login-custom.php'
25
+ * Just make sure the script DIES at the end.
26
+ *
27
+ * The $message to display for users is passed as a parameter.
28
+ */
29
+ if( ! function_exists( 'wsl_render_notice_page' ) )
30
+ {
31
+ function wsl_render_notice_page( $message )
32
+ {
33
+ $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/';
34
+ ?>
35
+ <!DOCTYPE html>
36
+ <head>
37
+ <meta name="robots" content="NOINDEX, NOFOLLOW">
38
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
39
+ <title><?php bloginfo('name'); ?></title>
40
+ <style type="text/css">
41
+ html {
42
+ background: #f1f1f1;
43
+ }
44
+ body {
45
+ background: #fff;
46
+ color: #444;
47
+ font-family: "Open Sans", sans-serif;
48
+ margin: 2em auto;
49
+ padding: 1em 2em;
50
+ max-width: 700px;
51
+ -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);
52
+ box-shadow: 0 1px 3px rgba(0,0,0,0.13);
53
+ }
54
+ h1 {
55
+ border-bottom: 1px solid #dadada;
56
+ clear: both;
57
+ color: #666;
58
+ font: 24px "Open Sans", sans-serif;
59
+ margin: 30px 0 0 0;
60
+ padding: 0;
61
+ padding-bottom: 7px;
62
+ }
63
+ #notice-page {
64
+ margin-top: 50px;
65
+ }
66
+ #notice-page p {
67
+ font-size: 14px;
68
+ line-height: 1.5;
69
+ margin: 25px 0 20px;
70
+ }
71
+ #notice-page code {
72
+ font-family: Consolas, Monaco, monospace;
73
+ }
74
+ .notice-message {
75
+ line-height: 26px;
76
+ padding: 8px;
77
+ background-color: #f2f2f2;
78
+ border: 1px solid #ccc;
79
+ padding: 10px;
80
+ text-align:center;
81
+ box-shadow: 0 1px 3px rgba(0,0,0,0.13);
82
+ margin-top:25px;
83
+ }
84
+ ul li {
85
+ margin-bottom: 10px;
86
+ font-size: 14px ;
87
+ }
88
+ a {
89
+ color: #21759B;
90
+ text-decoration: none;
91
+ }
92
+ a:hover {
93
+ color: #D54E21;
94
+ }
95
+ </style>
96
+ <head>
97
+ <body id="notice-page">
98
+ <table width="100%" border="0">
99
+ <tr>
100
+ <td align="center"><img src="<?php echo $assets_base_url ?>alert.png" /></td>
101
+ </tr>
102
+ <tr>
103
+ <td align="center">
104
+ <div class="notice-message">
105
+ <?php echo nl2br( $message ); ?>
106
+ </div>
107
+ </td>
108
+ </tr>
109
+ </table>
110
+ </body>
111
+ </html>
112
+ <?php
113
+ die();
114
+ }
115
+ }
116
+
117
+ // --------------------------------------------------------------------
118
+
119
+ /**
120
+ * Display an error page to the user and kill WordPress execution.
121
+ *
122
+ * This function differ than wsl_render_notice_page as it have some extra parameters and also should allow debugging
123
+ *
124
+ * This function is used when WSL fails to authenticated a user with social networks
125
+ *
126
+ * Note:
127
+ * In case you want to customize the content generated, you may define this function in 'wordpress-social-login-custom.php'
128
+ * Just make sure the script DIES at the end.
129
+ *
130
+ * The $message to display for users is passed as a parameter and is required.
131
+ */
132
+ if( ! function_exists( 'wsl_render_error_page' ) )
133
+ {
134
+ function wsl_render_error_page( $message, $notes = null, $php_exception = null, $php_extras_vars_to_debug = array() )
135
+ {
136
+ $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/';
137
+ ?>
138
+ <!DOCTYPE html>
139
+ <head>
140
+ <meta name="robots" content="NOINDEX, NOFOLLOW">
141
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
142
+ <title><?php bloginfo('name'); ?> - <?php _wsl_e("Oops! We ran into an issue", 'wordpress-social-login') ?>.</title>
143
+ <style type="text/css">
144
+ html {
145
+ background: #f1f1f1;
146
+ }
147
+ body {
148
+ background: #fff;
149
+ color: #444;
150
+ font-family: "Open Sans", sans-serif;
151
+ margin: 2em auto;
152
+ padding: 1em 2em;
153
+ max-width: 700px;
154
+ -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);
155
+ box-shadow: 0 1px 3px rgba(0,0,0,0.13);
156
+ }
157
+ h4 {
158
+ color: #666;
159
+ font: 20px "Open Sans", sans-serif;
160
+ margin: 0;
161
+ padding: 0;
162
+ padding-bottom: 7px;
163
+ }
164
+ #error-page {
165
+ margin-top: 50px;
166
+ }
167
+ #error-page p {
168
+ font-size: 14px;
169
+ line-height: 1.5;
170
+ margin: 15px 0;
171
+ line-height: 25px;
172
+ padding: 10px;
173
+ text-align:left;
174
+ }
175
+ #error-page pre {
176
+ max-width: 680px;
177
+ overflow: scroll;
178
+ padding: 5px;
179
+ background: none repeat scroll 0 0 #F5F5F5;
180
+ border-radius:3px;
181
+ font-family: Consolas, Monaco, monospace;
182
+ }
183
+ .error-message {
184
+ line-height: 26px;
185
+ padding: 8px;
186
+ background-color: #f2f2f2;
187
+ border: 1px solid #ccc;
188
+ padding: 10px;
189
+ text-align:center;
190
+ box-shadow: 0 1px 3px rgba(0,0,0,0.13);
191
+ margin-top:25px;
192
+ }
193
+ a {
194
+ color: #21759B;
195
+ text-decoration: none;
196
+ }
197
+ a:hover {
198
+ color: #D54E21;
199
+ }
200
+ </style>
201
+ </head>
202
+ <body id="error-page">
203
+ <table width="100%" border="0">
204
+ <tr>
205
+ <td align="center"><img src="<?php echo $assets_base_url ?>alert.png" /></td>
206
+ </tr>
207
+
208
+ <tr>
209
+ <td align="center"><h4><?php _wsl_e("Oops! We ran into an issue", 'wordpress-social-login') ?>.</h4></td>
210
+ </tr>
211
+
212
+ <tr>
213
+ <td>
214
+ <div class="error-message">
215
+ <?php echo $message ; ?>
216
+ </div>
217
+
218
+ <?php
219
+ // any hint or extra note?
220
+ if( $notes ) {
221
+ ?>
222
+ <p><?php _wsl_e( $notes, 'wordpress-social-login'); ?></p>
223
+ <?php
224
+ }
225
+ ?>
226
+ </td>
227
+ </tr>
228
+ </table>
229
+
230
+ <?php
231
+ // Development mode on?
232
+ if( get_option( 'wsl_settings_development_mode_enabled' ) ){
233
+ wsl_render_error_page_debug_section( $php_exception, $php_extras_vars_to_debug );
234
+ }
235
+ ?>
236
+ </body>
237
+ </html>
238
+ <?php
239
+ die();
240
+ }
241
+ }
242
+
243
+ // --------------------------------------------------------------------
244
+
245
+ /**
246
+ * Display an extra debugging section to the error page, in case Mode Dev is on
247
+ */
248
+ function wsl_render_error_page_debug_section( $php_exception, $php_extras_vars_to_debug )
249
+ {
250
+ ?>
251
+ <hr />
252
+
253
+ <h3>Backtrace</h3>
254
+ <pre><?php debug_print_backtrace(); ?></pre>
255
+
256
+ <h3>PHP Exception</h3>
257
+ <pre><?php print_r( $php_exception ) ?></pre>
258
+
259
+ <?php
260
+ // try to provide the previous if any
261
+ // Exception::getPrevious (PHP 5 >= 5.3.0) http://php.net/manual/en/exception.getprevious.php
262
+ if ( version_compare( PHP_VERSION, '5.3.0', '>=' ) ) {
263
+ if ( $php_exception->getPrevious() ) {
264
+ ?>
265
+ <h3>Previous Exception</h3>
266
+ <pre><?php print_r( $php_exception->getPrevious() ) ?></pre>
267
+ <?php
268
+ }
269
+ }
270
+ ?>
271
+
272
+ <h3>Extras vars to debug</h3>
273
+ <pre><?php print_r( $php_extras_vars_to_debug ) ?></pre>
274
+
275
+ <?php wsl_display_dev_mode_debugging_area(); ?>
276
+
277
+ <br />
278
+
279
+ <small>
280
+ <?php _wsl_e("<strong>Note:</strong> This debugging area can be disabled from the plugin settings by setting <b>Development mode</b> to <b>Disabled</b>", 'wordpress-social-login'); ?>.
281
+ </small>
282
+ <?php
283
+ }
284
+
285
+ // --------------------------------------------------------------------
includes/widgets/wsl.loading.screens.php ADDED
@@ -0,0 +1,200 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*!
3
+ * WordPress Social Login
4
+ *
5
+ * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
+ * (c) 2011-2014 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
+ */
8
+
9
+ /**
10
+ * Generate WSL loading screens.
11
+ */
12
+
13
+ // Exit if accessed directly
14
+ if ( !defined( 'ABSPATH' ) ) exit;
15
+
16
+ // --------------------------------------------------------------------
17
+
18
+ /**
19
+ * Display a loading screen while the WSL is redirecting the user to a given provider for authentication
20
+ *
21
+ * Note:
22
+ * In case you want to customize the content generated, you may define this function in 'wp-social-login-custom.php'
23
+ * This function should redirect to the current url PLUS '&redirect_to_provider=true', see javascript function init() defined bellow
24
+ * And make sure the script DIES at the end.
25
+ *
26
+ * The $provider name is passed as a parameter.
27
+ */
28
+ if( ! function_exists( 'wsl_render_redirect_to_provider_loading_screen' ) )
29
+ {
30
+ function wsl_render_redirect_to_provider_loading_screen( $provider )
31
+ {
32
+ $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/';
33
+ ?>
34
+ <!DOCTYPE html>
35
+ <head>
36
+ <meta name="robots" content="NOINDEX, NOFOLLOW">
37
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
38
+ <title><?php _wsl_e("Redirecting...", 'wordpress-social-login') ?> - <?php bloginfo('name'); ?></title>
39
+ <style type="text/css">
40
+ html {
41
+ background: #f1f1f1;
42
+ }
43
+ body {
44
+ background: #fff;
45
+ color: #444;
46
+ font-family: "Open Sans", sans-serif;
47
+ margin: 2em auto;
48
+ padding: 1em 2em;
49
+ max-width: 700px;
50
+ -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);
51
+ box-shadow: 0 1px 3px rgba(0,0,0,0.13);
52
+ }
53
+ #loading-screen {
54
+ margin-top: 50px;
55
+ }
56
+ #loading-screen div{
57
+ line-height: 20px;
58
+ padding: 8px;
59
+ background-color: #f2f2f2;
60
+ border: 1px solid #ccc;
61
+ padding: 10px;
62
+ text-align:center;
63
+ box-shadow: 0 1px 3px rgba(0,0,0,0.13);
64
+ margin-top:25px;
65
+ }
66
+ </style>
67
+ <script>
68
+ function init(){
69
+ window.location.replace( window.location.href + "&redirect_to_provider=true" );
70
+ }
71
+ </script>
72
+ </head>
73
+ <body id="loading-screen" onload="init();">
74
+ <table width="100%" border="0">
75
+ <tr>
76
+ <td align="center"><img src="<?php echo $assets_base_url ?>/loading.gif" /></td>
77
+ </tr>
78
+ <tr>
79
+ <td align="center">
80
+ <div>
81
+ <?php echo sprintf( _wsl__( "Contacting <b>%s</b>, please wait...", 'wordpress-social-login'), ucfirst( $provider ) ) ?>
82
+ </div>
83
+ </td>
84
+ </tr>
85
+ </table>
86
+ </body>
87
+ </html>
88
+ <?php
89
+ die();
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Display a loading screen after a user come back from provider and while WSL is procession his profile, contacts, etc.
95
+ *
96
+ * Note:
97
+ * In case you want to customize the content generated, you may define this function in 'wp-social-login-custom.php'
98
+ */
99
+ if( ! function_exists( 'wsl_render_return_from_provider_loading_screen' ) )
100
+ {
101
+ function wsl_render_return_from_provider_loading_screen( $provider, $authenticated_url, $redirect_to, $wsl_settings_use_popup )
102
+ {
103
+ $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . '/assets/img/';
104
+ ?>
105
+ <!DOCTYPE html>
106
+ <head>
107
+ <meta name="robots" content="NOINDEX, NOFOLLOW">
108
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
109
+ <title><?php _wsl_e("Redirecting...", 'wordpress-social-login') ?> - <?php bloginfo('name'); ?></title>
110
+ <style type="text/css">
111
+ html {
112
+ background: #f1f1f1;
113
+ }
114
+ body {
115
+ background: #fff;
116
+ color: #444;
117
+ font-family: "Open Sans", sans-serif;
118
+ margin: 2em auto;
119
+ padding: 1em 2em;
120
+ max-width: 700px;
121
+ -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);
122
+ box-shadow: 0 1px 3px rgba(0,0,0,0.13);
123
+ }
124
+ #loading-screen {
125
+ margin-top: 50px;
126
+ }
127
+ #loading-screen div{
128
+ line-height: 20px;
129
+ padding: 8px;
130
+ background-color: #f2f2f2;
131
+ border: 1px solid #ccc;
132
+ padding: 10px;
133
+ text-align:center;
134
+ box-shadow: 0 1px 3px rgba(0,0,0,0.13);
135
+ margin-top:25px;
136
+ }
137
+ </style>
138
+ <script>
139
+ function init()
140
+ {
141
+ <?php
142
+ // if Authentication display is undefined or eq Popup
143
+ // > create a from with javascript in parent window and submit it to wp-login.php
144
+ // > (with action=wordpress_social_authenticated), then close popup
145
+ if( $wsl_settings_use_popup == 1 || ! $wsl_settings_use_popup ){
146
+ ?>
147
+ if( window.opener )
148
+ {
149
+ window.opener.wsl_wordpress_social_login({
150
+ 'action' : 'wordpress_social_authenticated',
151
+ 'provider' : '<?php echo $provider ?>'
152
+ });
153
+
154
+ window.close();
155
+ }
156
+ else
157
+ {
158
+ document.loginform.submit();
159
+ }
160
+ <?php
161
+ }
162
+
163
+ // if Authentication display eq In Page
164
+ // > create a from in page then submit it to wp-login.php (with action=wordpress_social_authenticated)
165
+ elseif( $wsl_settings_use_popup == 2 ){
166
+ ?>
167
+ document.loginform.submit();
168
+ <?php
169
+ }
170
+ ?>
171
+ }
172
+ </script>
173
+ </head>
174
+ <body id="loading-screen" onload="init();">
175
+ <table width="100%" border="0">
176
+ <tr>
177
+ <td align="center"><img src="<?php echo $assets_base_url ?>/loading.gif" /></td>
178
+ </tr>
179
+ <tr>
180
+ <td align="center">
181
+ <div>
182
+ <?php echo _wsl_e( "Processing, please wait...", 'wordpress-social-login'); ?>
183
+ </div>
184
+ </td>
185
+ </tr>
186
+ </table>
187
+
188
+ <form name="loginform" method="post" action="<?php echo $authenticated_url; ?>">
189
+ <input type="hidden" id="redirect_to" name="redirect_to" value="<?php echo $authenticated_url; ?>">
190
+ <input type="hidden" id="provider" name="provider" value="<?php echo $provider ?>">
191
+ <input type="hidden" id="action" name="action" value="wordpress_social_authenticated">
192
+ </form>
193
+ </body>
194
+ </html>
195
+ <?php
196
+ die();
197
+ }
198
+ }
199
+
200
+ // --------------------------------------------------------------------
includes/widgets/wsl.notices.php DELETED
@@ -1,67 +0,0 @@
1
- <?php
2
- /*!
3
- * WordPress Social Login
4
- *
5
- * http://hybridauth.sourceforge.net/wsl/index.html | http://github.com/hybridauth/WordPress-Social-Login
6
- * (c) 2011-2013 Mohamed Mrassi and contributors | http://wordpress.org/extend/plugins/wordpress-social-login/
7
- */
8
-
9
- /**
10
- * Kill WordPress execution and display HTML message with error message.
11
- * similar to wp_die, but with (will have) more features or wp_die not defined
12
- */
13
-
14
- // Exit if accessed directly
15
- if ( !defined( 'ABSPATH' ) ) exit;
16
-
17
- // --------------------------------------------------------------------
18
-
19
- function wsl_render_notices_pages( $message )
20
- {
21
- // HOOKABLE:
22
- do_action( 'wsl_hook_alter_render_notices_pages', $message );
23
- ?>
24
- <!DOCTYPE html>
25
- <head>
26
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
27
- <title><?php echo get_bloginfo('name'); ?></title>
28
- <head>
29
- <style>
30
- html {
31
- background: #f9f9f9;
32
- }
33
- #wsl {
34
- background: #fff;
35
- color: #333;
36
- font-family: sans-serif;
37
- margin: 2em auto;
38
- padding: 1em 2em;
39
- -webkit-border-radius: 3px;
40
- border-radius: 3px;
41
- border: 1px solid #dfdfdf;
42
- max-width: 800px;
43
- font-size: 14px;
44
- }
45
- </style>
46
- </head>
47
- <body>
48
- <!--
49
- wsl_render_notices_pages
50
- WordPress Social Login Plugin ( <?php echo $_SESSION["wsl::plugin"] ?> )
51
- http://wordpress.org/extend/plugins/wordpress-social-login/
52
- -->
53
- <div id="wsl">
54
- <table width="100%" border="0">
55
- <tr>
56
- <td><?php echo $message ; ?></td>
57
- </tr>
58
- </table>
59
- </div>
60
- </body>
61
- </html>
62
- <?php
63
-
64
- die();
65
- }
66
-
67
- // --------------------------------------------------------------------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/readme.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ If you want to translate this plugin and you are new to WP/i18n, then we recommend check out this video:
2
+
3
+ Localizing and Translating WordPress Plugins
4
+ https://youtube.com/watch?v=aGN-hbMCPMg
5
+
6
+ Note: WSL uses _wsl_e() instead of _e() and _wsl__ instead of __()
languages/wordpress-social-login-ar.mo DELETED
Binary file
languages/wordpress-social-login-ar.po DELETED
@@ -1,1446 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WordPress Social Login\n"
4
- "POT-Creation-Date: 2013-02-16 06:40+0100\n"
5
- "PO-Revision-Date: 2013-02-16 06:41+0100\n"
6
- "Last-Translator: Miled <hybridauth@gmail.com>\n"
7
- "Language-Team: WordPress Social Login <hybridauth@gmail.com>\n"
8
- "Language: Arabic – عربي (ar)\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.5.5\n"
13
-
14
- #: includes/admin/wsl.admin.ui.php:332
15
- msgid "Development mode is enabled!"
16
- msgstr ""
17
-
18
- #: includes/admin/wsl.admin.ui.php:407
19
- #: includes/services/wsl.authentication.php:637
20
- msgid "Something wrong!"
21
- msgstr ""
22
-
23
- #: includes/admin/wsl.admin.ui.php:412
24
- msgid ""
25
- "Unknown or Disabled <b>Component</b>! Check the list of enabled components "
26
- "or the typed URL"
27
- msgstr ""
28
-
29
- #: includes/admin/wsl.admin.ui.php:416
30
- msgid ""
31
- "If you believe you've found a problem with <b>WordPress Social Login</b>, be "
32
- "sure to let us know so we can fix it"
33
- msgstr ""
34
-
35
- #: includes/admin/wsl.admin.ui.php:422
36
- msgid "Report as bug"
37
- msgstr ""
38
-
39
- #: includes/admin/wsl.admin.ui.php:423
40
- msgid "Check enabled components"
41
- msgstr ""
42
-
43
- #: includes/admin/wsl.admin.ui.php:567
44
- msgid "Welcome!"
45
- msgstr " مرحباً بك في WordPress Social Login"
46
-
47
- #: includes/admin/wsl.admin.ui.php:569
48
- msgid ""
49
- "If you are still new to WordPress Social Login, we have provided a few "
50
- "walkthroughs to get you started"
51
- msgstr "جمعنا لك بعض الروابط لمساعدتك على البدء"
52
-
53
- #: includes/admin/wsl.admin.ui.php:576
54
- msgid "Get Started"
55
- msgstr "الخطوات التالية"
56
-
57
- #: includes/admin/wsl.admin.ui.php:579
58
- msgid ""
59
- "<a href=\"http://hybridauth.sourceforge.net/wsl/configure.html\" target="
60
- "\"_blank\">Setup and Configuration</a>"
61
- msgstr ""
62
-
63
- #: includes/admin/wsl.admin.ui.php:580
64
- msgid ""
65
- "<a href=\"http://hybridauth.sourceforge.net/wsl/customize.html\" target="
66
- "\"_blank\">Customize WSL Widgets</a>"
67
- msgstr ""
68
-
69
- #: includes/admin/wsl.admin.ui.php:581
70
- msgid ""
71
- "<a href=\"http://hybridauth.sourceforge.net/wsl/userdata.html\" target="
72
- "\"_blank\">Manage users and contacts</a>"
73
- msgstr ""
74
-
75
- #: includes/admin/wsl.admin.ui.php:582
76
- msgid ""
77
- "<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
78
- "\">WSL User Guide</a> and <a href=\"http://hybridauth.sourceforge.net/wsl/"
79
- "faq.html\" target=\"_blank\">FAQ</a>"
80
- msgstr ""
81
-
82
- #: includes/admin/wsl.admin.ui.php:588
83
- #, php-format
84
- msgid "What's new on WSL %s"
85
- msgstr ""
86
-
87
- #: includes/admin/wsl.admin.ui.php:591
88
- msgid ""
89
- "In a similar way to WordPress plugins, WSL uses <a href=\"options-general."
90
- "php?page=wordpress-social-login&wslp=components\">Components</a>"
91
- msgstr ""
92
-
93
- #: includes/admin/wsl.admin.ui.php:592
94
- msgid "<b>Email Validation</b> is replaced with <b>Profile Completion</b>"
95
- msgstr ""
96
-
97
- #: includes/admin/wsl.admin.ui.php:593
98
- msgid ""
99
- "<b>User Moderation</b> made compatible with <a href=\"http://wordpress.org/"
100
- "extend/plugins/theme-my-login/\" target=\"_blank\">Theme My Login</a> plugin"
101
- msgstr ""
102
-
103
- #: includes/admin/wsl.admin.ui.php:594
104
- msgid "A number of enhancements and new options now available"
105
- msgstr ""
106
-
107
- #: includes/admin/wsl.admin.ui.php:644
108
- msgid "Contributor License Agreement"
109
- msgstr ""
110
-
111
- #: includes/admin/wsl.admin.ui.php:649
112
- msgid ""
113
- "You are about to submit your contributions to the WordPress Social Login "
114
- "Website to be reviewed for inclusion in future versions"
115
- msgstr ""
116
-
117
- #: includes/admin/wsl.admin.ui.php:651
118
- msgid ""
119
- "You hereby grant the permission to publish your contribution, in whole or in "
120
- "part, and to made it available under the <b>MIT License</b>, for the "
121
- "<b>Wordpress community</b> to, freely use or misuse"
122
- msgstr ""
123
-
124
- #: includes/admin/wsl.admin.ui.php:657
125
- msgid "Hell No"
126
- msgstr ""
127
-
128
- #: includes/admin/wsl.admin.ui.php:658
129
- msgid "Yes, I agree to contribute my translation"
130
- msgstr ""
131
-
132
- #: includes/admin/wsl.admin.ui.php:662
133
- msgid "Help us localize WordPress Social Login"
134
- msgstr "ساعدنا على ترجمة هذه الصفحة"
135
-
136
- #: includes/admin/wsl.admin.ui.php:666
137
- msgid ""
138
- "You can <b>translate as much you pleases</b> as much <b>as you want</b>. You "
139
- "don't have to translate everything in this page, but every word counts. "
140
- "Ignore any string you want or aleardy translated. You could also use this "
141
- "tool to fix any typo you may find or to improve the current language "
142
- "expressions"
143
- msgstr ""
144
-
145
- #: includes/admin/wsl.admin.ui.php:668
146
- msgid ""
147
- "Your name allows us to recognize your contributions and bypass manual "
148
- "review, especially when you've been contributing in the past. So do supply "
149
- "some unique string, even if it's not your real name"
150
- msgstr ""
151
-
152
- #: includes/admin/wsl.admin.ui.php:670
153
- msgid ""
154
- "All the texts on this page are automatically extracted and generated on the "
155
- "form beside. If the translation tool has scapped something you may consider "
156
- "as irrelevant, please leave that particular field empty"
157
- msgstr ""
158
-
159
- #: includes/admin/wsl.admin.ui.php:672
160
- msgid ""
161
- "Your contributions will be sent to the WordPress Social Login website for "
162
- "inclusion in future versions"
163
- msgstr ""
164
-
165
- #: includes/admin/wsl.admin.ui.php:674
166
- msgid "Thanks!"
167
- msgstr ""
168
-
169
- #: includes/admin/wsl.admin.ui.php:682
170
- msgid "Your Name"
171
- msgstr ""
172
-
173
- #: includes/admin/wsl.admin.ui.php:682 includes/admin/wsl.admin.ui.php:688
174
- msgid "optional"
175
- msgstr ""
176
-
177
- #: includes/admin/wsl.admin.ui.php:688
178
- msgid "Comment"
179
- msgstr ""
180
-
181
- #: includes/admin/wsl.admin.ui.php:694
182
- msgid "Target Language"
183
- msgstr ""
184
-
185
- #: includes/admin/wsl.admin.ui.php:703
186
- msgid "Submit changes"
187
- msgstr ""
188
-
189
- #: includes/admin/wsl.admin.ui.php:769
190
- msgid "Help us translate this page into your language"
191
- msgstr "ساعدنا على ترجمة هذه الصفحة"
192
-
193
- #: includes/admin/components/advanced/index.php:47
194
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:62
195
- msgid "Advanced Settings"
196
- msgstr ""
197
-
198
- #: includes/admin/components/advanced/index.php:52
199
- msgid ""
200
- "<b>Please</b> for the love of <b>God</b>, stay out of Advanced.. unless you "
201
- "are Advanced and you know what you are doing"
202
- msgstr ""
203
-
204
- #: includes/admin/components/advanced/index.php:61
205
- msgid "WSL Base URL"
206
- msgstr ""
207
-
208
- #: includes/admin/components/advanced/index.php:68
209
- msgid "WSL Base PATH"
210
- msgstr ""
211
-
212
- #: includes/admin/components/advanced/index.php:75
213
- msgid "Hybridauth endpoint URL"
214
- msgstr ""
215
-
216
- #: includes/admin/components/advanced/index.php:82
217
- msgid "WSL top bar menu"
218
- msgstr ""
219
-
220
- #: includes/admin/components/advanced/index.php:85
221
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:38
222
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:47
223
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:72
224
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:81
225
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:174
226
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:211
227
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:249
228
- msgid "Yes"
229
- msgstr ""
230
-
231
- #: includes/admin/components/advanced/index.php:86
232
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:39
233
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:48
234
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:73
235
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:82
236
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:175
237
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:212
238
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:250
239
- msgid "No"
240
- msgstr ""
241
-
242
- #: includes/admin/components/advanced/index.php:98
243
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:275
244
- #: includes/admin/components/contacts/index.php:98
245
- #: includes/admin/components/diagnostics/index.php:64
246
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:144
247
- #: includes/admin/components/networks/wsl.components.networks.setup.php:271
248
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:40
249
- msgid "Save Settings"
250
- msgstr ""
251
-
252
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:27
253
- msgid "WSL Widget"
254
- msgstr ""
255
-
256
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:31
257
- msgid ""
258
- "Here you can tell Bouncer if you are accepting new users registration and "
259
- "authentication into your website or not any more. Note that Bouncer only "
260
- "works for WSL and will not interfere with users authenticating through the "
261
- "regulars wordpress Login and Register pages with their usernames and "
262
- "passwords (to to achieve that kind of restrictions, you may need to use "
263
- "another plugin(s) in combination with WSL)."
264
- msgstr ""
265
-
266
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:35
267
- msgid "Accept new registration"
268
- msgstr ""
269
-
270
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:44
271
- msgid "Allow authentication"
272
- msgstr ""
273
-
274
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:58
275
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:45
276
- msgid "Profile Completion"
277
- msgstr ""
278
-
279
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:62
280
- msgid ""
281
- "Select required fields. If a social network doesn't return them, Bouncer "
282
- "will then ask your visitors to fill additional form to provide them when "
283
- "registering."
284
- msgstr ""
285
-
286
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:65
287
- msgid ""
288
- "You may activate <b>Profile Completion</b> for both <b>E-mail</b> and "
289
- "<b>Username</b>, but keep in mind, the idea behind <b>social login</b> is to "
290
- "avoid forms and remove all the hassle of registration"
291
- msgstr ""
292
-
293
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:69
294
- msgid "Require E-mail"
295
- msgstr ""
296
-
297
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:78
298
- msgid "Allow Username change"
299
- msgstr ""
300
-
301
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:92
302
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:111
303
- msgid "User Moderation"
304
- msgstr ""
305
-
306
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:96
307
- msgid ""
308
- "<b>User Moderation</b> will define how <b>Bouncer</b> should behave with new "
309
- "regsitred users:"
310
- msgstr ""
311
-
312
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:99
313
- msgid "<b>None</b>: No moderation required."
314
- msgstr ""
315
-
316
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:100
317
- msgid ""
318
- "<b>E-mail Confirmation</b>: New users will need to be confirm their e-mail "
319
- "address before they may log in"
320
- msgstr ""
321
-
322
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:101
323
- msgid ""
324
- "<b>Admin Approval</b>: New users will need to be approved by an "
325
- "administrator before they may log in"
326
- msgstr ""
327
-
328
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:104
329
- msgid ""
330
- "Both <b>Admin Approval</b> and <b>E-mail Confirmation</b> requires <a href="
331
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
332
- "\">Theme My Login</a> plugin to be installed. As there is no point for "
333
- "<b>WordPress Social Login</b> to reinvent the wheel"
334
- msgstr ""
335
-
336
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:107
337
- msgid ""
338
- "<b>User Moderation</b> was purposely made compatible with the <a href="
339
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
340
- "\">Theme My Login</a> for a number reasons: That plugin is good at what he "
341
- "does, a hell of a lot of people are using it and many have asked for it"
342
- msgstr ""
343
-
344
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:114
345
- msgid "None"
346
- msgstr ""
347
-
348
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:115
349
- msgid "E-mail Confirmation &mdash; Yield to Theme My Login plugin"
350
- msgstr ""
351
-
352
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:116
353
- msgid "Admin Approval &mdash; Yield to Theme My Login plugin"
354
- msgstr ""
355
-
356
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:126
357
- msgid "Membership level"
358
- msgstr ""
359
-
360
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:130
361
- msgid ""
362
- "Here you can define the default role for new users authenticating through "
363
- "WSL. The <code>Administrator</code> and <code>Editor</code> roles are not "
364
- "available for safety reasons"
365
- msgstr ""
366
-
367
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:133
368
- msgid ""
369
- "For more information about wordpress users roles and capabilities refer to "
370
- "<a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs."
371
- "_Role_Table\" target=\"_blank\">http://codex.wordpress.org/"
372
- "Roles_and_Capabilities</a>"
373
- msgstr ""
374
-
375
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:136
376
- msgid ""
377
- "If <b>User Moderation</b> is set to <code>Admin Approval</code> then "
378
- "<b>Membership level</b> will be ignored"
379
- msgstr ""
380
-
381
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:140
382
- msgid "New User Default Role"
383
- msgstr ""
384
-
385
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:143
386
- msgid "Safe"
387
- msgstr ""
388
-
389
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:144
390
- msgid "&mdash; Wordpress User Default Role &mdash;"
391
- msgstr ""
392
-
393
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:145
394
- msgid "&mdash; No role for this site &mdash;"
395
- msgstr ""
396
-
397
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:146
398
- msgid "Subscriber"
399
- msgstr ""
400
-
401
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:149
402
- msgid "Be careful with these"
403
- msgstr ""
404
-
405
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:150
406
- msgid "Author"
407
- msgstr ""
408
-
409
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:151
410
- msgid "Contributor"
411
- msgstr ""
412
-
413
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:162
414
- msgid "Filters by emails domains name"
415
- msgstr ""
416
-
417
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:166
418
- msgid "Restrict registration to a limited number of domains name."
419
- msgstr ""
420
-
421
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:167
422
- msgid ""
423
- "Insert one email address per line and try to keep this list short. On "
424
- "<code>Bounce text</code> insert the text you want to display for rejected "
425
- "users. ex: <code>gmail.com</code>, without '@'."
426
- msgstr ""
427
-
428
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:171
429
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:208
430
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:246
431
- #: includes/admin/components/contacts/index.php:51
432
- #: includes/admin/components/contacts/index.php:58
433
- #: includes/admin/components/contacts/index.php:65
434
- #: includes/admin/components/contacts/index.php:72
435
- #: includes/admin/components/contacts/index.php:79
436
- #: includes/admin/components/diagnostics/index.php:61
437
- #: includes/admin/components/networks/wsl.components.networks.setup.php:109
438
- msgid "Enabled"
439
- msgstr ""
440
-
441
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:180
442
- msgid "Domains list"
443
- msgstr ""
444
-
445
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:186
446
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:223
447
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:261
448
- msgid "Bounce text"
449
- msgstr ""
450
-
451
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:199
452
- msgid "Filters by e-mails addresses"
453
- msgstr ""
454
-
455
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:203
456
- msgid "Restrict registration to a limited number of emails addresses."
457
- msgstr ""
458
-
459
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:204
460
- msgid ""
461
- "Insert one email address per line and try to keep this list short. On "
462
- "<code>Bounce text</code> insert the text you want to display for rejected "
463
- "users. ex: <code>hybridauth@gmail.com</code>"
464
- msgstr ""
465
-
466
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:217
467
- msgid "E-mails list"
468
- msgstr ""
469
-
470
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:236
471
- msgid "Filters by profile urls"
472
- msgstr ""
473
-
474
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:240
475
- msgid "Restrict registration to a limited number of profile urls."
476
- msgstr ""
477
-
478
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:241
479
- msgid ""
480
- "<b>Note</b>: If a social network provide the user email, then use 'Filters "
481
- "by e-mails addresses' instead. Providers like Facebook provide multiples "
482
- "profiles URLs per user and WSL won't be able to reconize them."
483
- msgstr ""
484
-
485
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:242
486
- msgid ""
487
- "Insert one email address per line and try to keep this list short. On "
488
- "<code>Bounce text</code> insert the text you want to display for rejected "
489
- "users. ex: <code>http://twitter.com/HybridAuth</code>, <code>https://plus."
490
- "google.com/u/0/108839241301472312344</code>"
491
- msgstr ""
492
-
493
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:255
494
- msgid "Profile urls"
495
- msgstr ""
496
-
497
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:26
498
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:26
499
- msgid "What's This?"
500
- msgstr ""
501
-
502
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:30
503
- msgid "Hey, meet our friend, the Bouncer"
504
- msgstr ""
505
-
506
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:33
507
- msgid ""
508
- "Ever been in trouble with one of <a href=\"http://www.flickr.com/search/?"
509
- "q=bouncer+doorman&z=e\" target=\"_blank\">these guys</a>? Well, this module "
510
- "have more or less the same role, and he will try his best to piss your users "
511
- "off until they meet your requirements."
512
- msgstr ""
513
-
514
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:37
515
- msgid ""
516
- "This feature is most suited for small businesses and folks running a closed-"
517
- "door blog between friends or coworkers."
518
- msgstr ""
519
-
520
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:40
521
- msgid "Available settings"
522
- msgstr ""
523
-
524
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:43
525
- msgid "Enable/Disable Registration"
526
- msgstr ""
527
-
528
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:44
529
- msgid "Enable/Disable Authentication"
530
- msgstr ""
531
-
532
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:46
533
- msgid "Users moderation"
534
- msgstr ""
535
-
536
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:47
537
- msgid "Users roles"
538
- msgstr ""
539
-
540
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:48
541
- msgid "Restrictions (by emails, domains, profiles urls)"
542
- msgstr ""
543
-
544
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:51
545
- msgid "IMPORTANT!"
546
- msgstr ""
547
-
548
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:54
549
- msgid ""
550
- "All the settings on this page without exception are only valid for users "
551
- "authenticating through <b>WordPress Social Login Widget"
552
- msgstr ""
553
-
554
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:57
555
- msgid ""
556
- "Users authenticating through the regulars Wordpress Login and Register pages "
557
- "with their usernames and passwords WILL NOT be affected."
558
- msgstr ""
559
-
560
- #: includes/admin/components/components/wsl.components.help.gallery.php:30
561
- msgid "Other Components available"
562
- msgstr ""
563
-
564
- #: includes/admin/components/components/wsl.components.help.gallery.php:58
565
- msgid "WordPress Social Login for BuddyPress"
566
- msgstr ""
567
-
568
- #: includes/admin/components/components/wsl.components.help.gallery.php:60
569
- msgid "Make WordPress Social Login compatible with BuddyPress"
570
- msgstr ""
571
-
572
- #: includes/admin/components/components/wsl.components.help.gallery.php:61
573
- msgid "Widget integration, xProfiles mapping and more"
574
- msgstr ""
575
-
576
- #: includes/admin/components/components/wsl.components.help.gallery.php:63
577
- msgid "Install Now"
578
- msgstr ""
579
-
580
- #: includes/admin/components/components/wsl.components.help.gallery.php:64
581
- msgid "Visit plugin site"
582
- msgstr ""
583
-
584
- #: includes/admin/components/components/wsl.components.help.gallery.php:69
585
- msgid "Build yours"
586
- msgstr ""
587
-
588
- #: includes/admin/components/components/wsl.components.help.gallery.php:71
589
- msgid ""
590
- "Looking to build your own custom <b>WordPress Social Login</b> extenstion or "
591
- "component? Well, it's pretty easy. Just RTFM :)"
592
- msgstr ""
593
-
594
- #: includes/admin/components/components/wsl.components.help.gallery.php:74
595
- msgid "WSL Developer API"
596
- msgstr ""
597
-
598
- #: includes/admin/components/components/wsl.components.help.gallery.php:75
599
- msgid "WSL on Github"
600
- msgstr ""
601
-
602
- #: includes/admin/components/components/wsl.components.help.setup.php:29
603
- #: includes/admin/components/components/wsl.components.help.setup.php:37
604
- msgid "Component"
605
- msgstr ""
606
-
607
- #: includes/admin/components/components/wsl.components.help.setup.php:30
608
- #: includes/admin/components/components/wsl.components.help.setup.php:38
609
- msgid "Description"
610
- msgstr ""
611
-
612
- #: includes/admin/components/components/wsl.components.help.setup.php:67
613
- msgid "View"
614
- msgstr ""
615
-
616
- #: includes/admin/components/components/wsl.components.help.setup.php:72
617
- msgid "Disable"
618
- msgstr ""
619
-
620
- #: includes/admin/components/components/wsl.components.help.setup.php:74
621
- msgid "Enable"
622
- msgstr ""
623
-
624
- #: includes/admin/components/contacts/index.php:39
625
- msgid "Settings"
626
- msgstr ""
627
-
628
- #: includes/admin/components/contacts/index.php:43
629
- msgid ""
630
- "<b>WordPress Social Login</b> is now introducing <b>Contacts Import</b> as a "
631
- "new feature. When enabled, users authenticating through WordPress Social "
632
- "Login will be asked for the authorisation to import their contact list. Note "
633
- "that some social networks do not provide certains of their users information "
634
- "like contacts emails, photos and or profile urls"
635
- msgstr ""
636
-
637
- #: includes/admin/components/contacts/index.php:45
638
- msgid "Enable contacts import for"
639
- msgstr ""
640
-
641
- #: includes/admin/components/contacts/index.php:52
642
- #: includes/admin/components/contacts/index.php:59
643
- #: includes/admin/components/contacts/index.php:66
644
- #: includes/admin/components/contacts/index.php:73
645
- #: includes/admin/components/contacts/index.php:80
646
- #: includes/admin/components/diagnostics/index.php:62
647
- msgid "Disabled"
648
- msgstr ""
649
-
650
- #: includes/admin/components/contacts/index.php:86
651
- msgid "Notes"
652
- msgstr ""
653
-
654
- #: includes/admin/components/contacts/index.php:88
655
- msgid ""
656
- "To enable contacts import from these social network, you need first to "
657
- "enabled them on the <a href=\"options-general.php?page=wordpress-social-"
658
- "login&wslp=networks\"><b>Networks</b></a> tab and register the required "
659
- "application"
660
- msgstr ""
661
-
662
- #: includes/admin/components/contacts/index.php:89
663
- msgid ""
664
- "<b>WSL</b> will try to import as much information about a user contacts as "
665
- "he was able to pull from the social networks APIs."
666
- msgstr ""
667
-
668
- #: includes/admin/components/contacts/index.php:90
669
- msgid ""
670
- "All contacts data are sotred into your database on the table: "
671
- "<code>`wsluserscontacts`</code>"
672
- msgstr ""
673
-
674
- #: includes/admin/components/contacts/index.php:107
675
- msgid "Users contacts list preview"
676
- msgstr ""
677
-
678
- #: includes/admin/components/contacts/index.php:114
679
- #, php-format
680
- msgid "%s contact's list"
681
- msgstr ""
682
-
683
- #: includes/admin/components/contacts/index.php:121
684
- #: includes/admin/components/contacts/index.php:130
685
- #: includes/widgets/wsl.auth.widget.php:299
686
- msgid "Provider"
687
- msgstr ""
688
-
689
- #: includes/admin/components/contacts/index.php:122
690
- #: includes/admin/components/contacts/index.php:131
691
- msgid "User"
692
- msgstr ""
693
-
694
- #: includes/admin/components/contacts/index.php:123
695
- #: includes/admin/components/contacts/index.php:132
696
- msgid "Contact Name"
697
- msgstr ""
698
-
699
- #: includes/admin/components/contacts/index.php:124
700
- #: includes/admin/components/contacts/index.php:133
701
- msgid "Contact Email"
702
- msgstr ""
703
-
704
- #: includes/admin/components/contacts/index.php:125
705
- #: includes/admin/components/contacts/index.php:134
706
- msgid "Contact Profile Url"
707
- msgstr ""
708
-
709
- #: includes/admin/components/contacts/index.php:150
710
- msgid "No contacts found"
711
- msgstr ""
712
-
713
- #: includes/admin/components/diagnostics/index.php:24
714
- msgid "Requirements test"
715
- msgstr ""
716
-
717
- #: includes/admin/components/diagnostics/index.php:27
718
- msgid ""
719
- "In order for <b>WordPress Social Login</b> to work properly, your server "
720
- "should meet certain requirements. These \"requirements\" <br />and \"services"
721
- "\" are usually offered by default by most \"modern\" web hosting providers, "
722
- "however some complications may <br />occur with <b>shared hosting</b> and, "
723
- "or <b>custom wordpress installations</b>"
724
- msgstr ""
725
-
726
- #: includes/admin/components/diagnostics/index.php:30
727
- msgid "The minimum server requirements are"
728
- msgstr ""
729
-
730
- #: includes/admin/components/diagnostics/index.php:33
731
- msgid "PHP >= 5.2.0 installed"
732
- msgstr ""
733
-
734
- #: includes/admin/components/diagnostics/index.php:34
735
- msgid "WSL Endpoint URLs reachable"
736
- msgstr ""
737
-
738
- #: includes/admin/components/diagnostics/index.php:35
739
- msgid "PHP's default SESSION handling"
740
- msgstr ""
741
-
742
- #: includes/admin/components/diagnostics/index.php:36
743
- msgid "PHP/CURL/SSL Extension enabled"
744
- msgstr ""
745
-
746
- #: includes/admin/components/diagnostics/index.php:37
747
- msgid "PHP/JSON Extension enabled"
748
- msgstr ""
749
-
750
- #: includes/admin/components/diagnostics/index.php:38
751
- msgid "PHP/REGISTER_GLOBALS Off"
752
- msgstr ""
753
-
754
- #: includes/admin/components/diagnostics/index.php:39
755
- msgid "jQuery installed on WordPress backoffice"
756
- msgstr ""
757
-
758
- #: includes/admin/components/diagnostics/index.php:42
759
- msgid ""
760
- "You can run the <b>WordPress Social Login Requirements Test</b> by clicking "
761
- "the button bellow"
762
- msgstr ""
763
-
764
- #: includes/admin/components/diagnostics/index.php:46
765
- msgid "Run the plugin requirements test"
766
- msgstr ""
767
-
768
- #: includes/admin/components/diagnostics/index.php:47
769
- msgid "Website Information"
770
- msgstr ""
771
-
772
- #: includes/admin/components/diagnostics/index.php:53
773
- msgid "Development mode"
774
- msgstr ""
775
-
776
- #: includes/admin/components/diagnostics/index.php:56
777
- msgid ""
778
- "By enabling the development mode, this plugin will try generate and display "
779
- "a technical reports when something goes wrong. <br />This report can help "
780
- "your figure out the root of any issues you may runs into, or you can also "
781
- "send it to the plugin developer. <br />Its recommend to set the Development "
782
- "mode to <b style=\"color:red\">Disabled</b> on production."
783
- msgstr ""
784
-
785
- #: includes/admin/components/help/index.php:25
786
- msgid "Troubleshooting"
787
- msgstr ""
788
-
789
- #: includes/admin/components/help/index.php:27
790
- msgid "WSL Diagnostics"
791
- msgstr ""
792
-
793
- #: includes/admin/components/help/index.php:29
794
- msgid "System information"
795
- msgstr ""
796
-
797
- #: includes/admin/components/help/index.php:32
798
- msgid ""
799
- "If you run into any issue, you can access the <b>WordPress Social Login "
800
- "Diagnostics</b> to check the <b>Plugin Requirements</b> or to enable the "
801
- "<b>Development mode</b>"
802
- msgstr ""
803
-
804
- #: includes/admin/components/help/index.php:35
805
- msgid ""
806
- "Remember to include your System information when posting support requests"
807
- msgstr ""
808
-
809
- #: includes/admin/components/help/index.php:39
810
- msgid "Documentation"
811
- msgstr ""
812
-
813
- #: includes/admin/components/help/index.php:41
814
- msgid ""
815
- "The complete <b>User Guide</b> can be found at\n"
816
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target="
817
- "\"_blank\">hybridauth.sourceforge.net/wsl/index.html</a>"
818
- msgstr ""
819
-
820
- #: includes/admin/components/help/index.php:47
821
- msgid "FAQs"
822
- msgstr ""
823
-
824
- #: includes/admin/components/help/index.php:49
825
- msgid ""
826
- "A list of <b>Frequently asked questions</b> can be found at\n"
827
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/faq.html\" target="
828
- "\"_blank\">hybridauth.sourceforge.net/wsl/faq.html</a>"
829
- msgstr ""
830
-
831
- #: includes/admin/components/help/index.php:55
832
- msgid "Support"
833
- msgstr ""
834
-
835
- #: includes/admin/components/help/index.php:57
836
- msgid ""
837
- "To get help and support refer to <a href=\"http://hybridauth.sourceforge.net/"
838
- "wsl/support.html\" target=\"_blank\">http://hybridauth.sourceforge.net/wsl/"
839
- "support.html</a>"
840
- msgstr ""
841
-
842
- #: includes/admin/components/help/index.php:62
843
- msgid "Credits"
844
- msgstr ""
845
-
846
- #: includes/admin/components/help/index.php:64
847
- msgid ""
848
- "WordPress Social Login was created by <a href=\"http://profiles.wordpress."
849
- "org/miled/\" target=\"_blank\">Mohamed Mrassi</a> (a.k.a Miled) and <a href="
850
- "\"https://github.com/hybridauth/WordPress-Social-Login/graphs/contributors\" "
851
- "target=\"_blank\">contributors</a>"
852
- msgstr ""
853
-
854
- #: includes/admin/components/help/index.php:65
855
- msgid ""
856
- "Many other people have also contributed with <br />constructive discussions, "
857
- "support and by submitting patches"
858
- msgstr ""
859
-
860
- #: includes/admin/components/help/index.php:70
861
- msgid "License"
862
- msgstr ""
863
-
864
- #: includes/admin/components/help/index.php:72
865
- msgid ""
866
- "<b>WordPress Social Login</b> is an open source software licenced under The "
867
- "MIT License (MIT)"
868
- msgstr ""
869
-
870
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:27
871
- msgid "Basic Settings"
872
- msgstr ""
873
-
874
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:32
875
- msgid "Connect with caption"
876
- msgstr ""
877
-
878
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:38
879
- msgid "Social icon set"
880
- msgstr ""
881
-
882
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:41
883
- msgid "WPZOOM social networking icon set"
884
- msgstr ""
885
-
886
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:42
887
- msgid "Icondock vector social media icons"
888
- msgstr ""
889
-
890
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:47
891
- msgid "Users avatars"
892
- msgstr ""
893
-
894
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:50
895
- msgid "Display the default users avatars"
896
- msgstr ""
897
-
898
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:51
899
- msgid "Display users avatars from social networks when available"
900
- msgstr ""
901
-
902
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:67
903
- msgid "Redirect URL"
904
- msgstr ""
905
-
906
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:73
907
- msgid "Authentication flow"
908
- msgstr ""
909
-
910
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:76
911
- msgid "Using popup window"
912
- msgstr ""
913
-
914
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:77
915
- msgid "No popup window"
916
- msgstr ""
917
-
918
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:82
919
- msgid "Widget display"
920
- msgstr ""
921
-
922
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:85
923
- msgid "Display the widget in the comments area, login and register forms"
924
- msgstr ""
925
-
926
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:86
927
- msgid "Display the widget ONLY in the comments area"
928
- msgstr ""
929
-
930
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:87
931
- msgid "Display the widget ONLY in the login form"
932
- msgstr ""
933
-
934
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:92
935
- msgid "Notification"
936
- msgstr ""
937
-
938
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:95
939
- msgid "No notification"
940
- msgstr ""
941
-
942
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:96
943
- msgid "Notify ONLY the blog admin of a new user"
944
- msgstr ""
945
-
946
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:107
947
- msgid "Custom CSS"
948
- msgstr ""
949
-
950
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:112
951
- msgid "Widget CSS"
952
- msgstr ""
953
-
954
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:114
955
- msgid ""
956
- "To customize the default widget styles you can either: edit the css file "
957
- "<strong>/wordpress-social-login/assets/css/style.css</strong>, or change it "
958
- "from this text area"
959
- msgstr ""
960
-
961
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:118
962
- msgid "The basic widget markup is the following"
963
- msgstr ""
964
-
965
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:30
966
- msgid "Widget Customization"
967
- msgstr ""
968
-
969
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:33
970
- msgid ""
971
- "On this section you can fully customize <b>WordPress Social Login Widget</b> "
972
- "and define the way you want it to look and behave"
973
- msgstr ""
974
-
975
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:37
976
- msgid ""
977
- "<b>WordPress Social Login Widget</b> will be generated into the comments, "
978
- "login and register forms enabling your website vistors and customers to "
979
- "login via social networks"
980
- msgstr ""
981
-
982
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:41
983
- msgid ""
984
- "If this widget does not show up on your custom theme or you want to add it "
985
- "somewhere else then refer to the next section"
986
- msgstr ""
987
-
988
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:44
989
- msgid "Custom integration"
990
- msgstr ""
991
-
992
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:47
993
- msgid ""
994
- "If you want to add the social login widget to another location in your "
995
- "theme, you can insert the following code in that location"
996
- msgstr ""
997
-
998
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:49
999
- msgid "Or, for posts and pages"
1000
- msgstr ""
1001
-
1002
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:54
1003
- msgid ""
1004
- "<b>[wordpress_social_login]</b> shortcode can be used in combination with <a "
1005
- "href=\"http://wordpress.org/extend/plugins/html-javascript-adder/\" target="
1006
- "\"_blank\">HTML Javascript Adder</a> plugin to be add WSL Widget to your "
1007
- "website sidebar"
1008
- msgstr ""
1009
-
1010
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:58
1011
- msgid ""
1012
- "Also, if you are a developer or designer then you can customize it to your "
1013
- "heart's content. For more inofmation refer to <b><a href=\"http://hybridauth."
1014
- "sourceforge.net/wsl/customize.html\" target=\"_blank\">User Guide</a></b>"
1015
- msgstr ""
1016
-
1017
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:61
1018
- msgid "Widget preview"
1019
- msgstr ""
1020
-
1021
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:64
1022
- msgid "This is a preview of what should be on the comments area"
1023
- msgstr ""
1024
-
1025
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:65
1026
- msgid "Do not test it here"
1027
- msgstr ""
1028
-
1029
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:24
1030
- msgid ""
1031
- "And you could add even more of them, <b>Just Click</b> and we will guide you "
1032
- "through"
1033
- msgstr ""
1034
-
1035
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:48
1036
- msgid "Well! none left."
1037
- msgstr ""
1038
-
1039
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:36
1040
- msgid "Insights"
1041
- msgstr ""
1042
-
1043
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:40
1044
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:49
1045
- msgid "Conversions"
1046
- msgstr ""
1047
-
1048
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:43
1049
- msgid "WP users"
1050
- msgstr ""
1051
-
1052
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:46
1053
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:77
1054
- msgid "WSL users"
1055
- msgstr ""
1056
-
1057
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:59
1058
- msgid "By provider"
1059
- msgstr ""
1060
-
1061
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:85
1062
- msgid "By gender"
1063
- msgstr ""
1064
-
1065
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:108
1066
- msgid "By age"
1067
- msgstr ""
1068
-
1069
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:139
1070
- msgid "yrs in average"
1071
- msgstr ""
1072
-
1073
- #: includes/admin/components/networks/wsl.components.networks.setup.php:126
1074
- msgid "Application ID"
1075
- msgstr ""
1076
-
1077
- #: includes/admin/components/networks/wsl.components.networks.setup.php:128
1078
- #: includes/admin/components/networks/wsl.components.networks.setup.php:134
1079
- #: includes/admin/components/networks/wsl.components.networks.setup.php:140
1080
- msgid "Where do I get this info?"
1081
- msgstr ""
1082
-
1083
- #: includes/admin/components/networks/wsl.components.networks.setup.php:132
1084
- msgid "Application Key"
1085
- msgstr ""
1086
-
1087
- #: includes/admin/components/networks/wsl.components.networks.setup.php:138
1088
- msgid "Application Secret"
1089
- msgstr ""
1090
-
1091
- #: includes/admin/components/networks/wsl.components.networks.setup.php:149
1092
- msgid "Note"
1093
- msgstr ""
1094
-
1095
- #: includes/admin/components/networks/wsl.components.networks.setup.php:151
1096
- #, php-format
1097
- msgid ""
1098
- "<b>%s</b> do not provide their user's email address and by default a random "
1099
- "email will then be generated for them instead"
1100
- msgstr ""
1101
-
1102
- #: includes/admin/components/networks/wsl.components.networks.setup.php:153
1103
- msgid ""
1104
- "To change this behaviour and to force new registered users to provide their "
1105
- "emails before they get in, goto <b><a href=\"options-general.php?"
1106
- "page=wordpress-social-login&wslp=bouncer\">Bouncer</a></b> and enable "
1107
- "<b>Profile Completion</b>"
1108
- msgstr ""
1109
-
1110
- #: includes/admin/components/networks/wsl.components.networks.setup.php:163
1111
- msgid ""
1112
- "<span style=\"color:#CB4B16;\">Application</span> id and secret (also "
1113
- "sometimes referred as <span style=\"color:#CB4B16;\">Customer</span> key and "
1114
- "secret or <span style=\"color:#CB4B16;\">Client</span> id and secret) are "
1115
- "what we call an application credentials"
1116
- msgstr ""
1117
-
1118
- #: includes/admin/components/networks/wsl.components.networks.setup.php:165
1119
- #, php-format
1120
- msgid ""
1121
- "This application will link your website <code>%s</code> to <code>%s API</"
1122
- "code> and these credentials are needed in order for <b>%s</b> users to "
1123
- "access your website"
1124
- msgstr ""
1125
-
1126
- #: includes/admin/components/networks/wsl.components.networks.setup.php:168
1127
- msgid ""
1128
- "These credentials may also differ in format, name and content depending on "
1129
- "the social network."
1130
- msgstr ""
1131
-
1132
- #: includes/admin/components/networks/wsl.components.networks.setup.php:172
1133
- #, php-format
1134
- msgid ""
1135
- "To enable authentication with this provider and to register a new <b>%s API "
1136
- "Application</b>, carefully follow the steps"
1137
- msgstr ""
1138
-
1139
- #: includes/admin/components/networks/wsl.components.networks.setup.php:175
1140
- #, php-format
1141
- msgid "<b>Done.</b> Nothing more required for <b>%s</b>"
1142
- msgstr ""
1143
-
1144
- #: includes/admin/components/networks/wsl.components.networks.setup.php:259
1145
- msgid "And that's it!"
1146
- msgstr ""
1147
-
1148
- #: includes/admin/components/networks/wsl.components.networks.setup.php:261
1149
- #, php-format
1150
- msgid ""
1151
- "If for some reason you still can't figure it out, first try to a) <a class="
1152
- "\"button-primary\" href=\"https://www.google.com/search?q=%s API create "
1153
- "application\" target=\"_blank\">Google it</a>, then check it on b) <a class="
1154
- "\"button-primary\" href=\"http://www.youtube.com/results?search_query=%s API "
1155
- "create application \" target=\"_blank\">Youtube</a> and if nothing works c) "
1156
- "<a class=\"button-primary\" href=\"options-general.php?page=wordpress-social-"
1157
- "login&wslp=help\">ask for support</a>"
1158
- msgstr ""
1159
-
1160
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:21
1161
- msgid "Why, hello there"
1162
- msgstr ""
1163
-
1164
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:29
1165
- msgid ""
1166
- "If you are still new to things, we recommend that you read the <b><a href="
1167
- "\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
1168
- "\">Plugin User Guide</a></b> and to make sure your server settings meet this "
1169
- "<b><a href=\"options-general.php?page=wordpress-social-login&amp;"
1170
- "wslp=diagnostics\">Plugin Requirements</a></b>"
1171
- msgstr ""
1172
-
1173
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:32
1174
- msgid ""
1175
- "If you run into any issue then refer to <b><a href=\"options-general.php?"
1176
- "page=wordpress-social-login&wslp=help\">Help & Support</a></b> to konw how "
1177
- "to reach me"
1178
- msgstr ""
1179
-
1180
- #: includes/admin/components/users/wsl.components.users.list.php:30
1181
- #: includes/admin/components/users/wsl.components.users.list.php:41
1182
- msgid "Providers"
1183
- msgstr ""
1184
-
1185
- #: includes/admin/components/users/wsl.components.users.list.php:31
1186
- #: includes/admin/components/users/wsl.components.users.list.php:42
1187
- #: includes/settings/wsl.compatibilities.php:104
1188
- msgid "Username"
1189
- msgstr ""
1190
-
1191
- #: includes/admin/components/users/wsl.components.users.list.php:32
1192
- #: includes/admin/components/users/wsl.components.users.list.php:43
1193
- msgid "Full Name"
1194
- msgstr ""
1195
-
1196
- #: includes/admin/components/users/wsl.components.users.list.php:33
1197
- #: includes/admin/components/users/wsl.components.users.list.php:44
1198
- #: includes/settings/wsl.compatibilities.php:100
1199
- msgid "E-mail"
1200
- msgstr ""
1201
-
1202
- #: includes/admin/components/users/wsl.components.users.list.php:34
1203
- #: includes/admin/components/users/wsl.components.users.list.php:45
1204
- msgid "Profile URL"
1205
- msgstr ""
1206
-
1207
- #: includes/admin/components/users/wsl.components.users.list.php:35
1208
- #: includes/admin/components/users/wsl.components.users.list.php:46
1209
- #: includes/settings/wsl.initialization.php:400
1210
- msgid "Contacts"
1211
- msgstr ""
1212
-
1213
- #: includes/admin/components/users/wsl.components.users.list.php:36
1214
- #: includes/admin/components/users/wsl.components.users.list.php:47
1215
- msgid "Actions"
1216
- msgstr ""
1217
-
1218
- #: includes/admin/components/users/wsl.components.users.list.php:55
1219
- msgid "No users found"
1220
- msgstr ""
1221
-
1222
- #: includes/admin/components/users/wsl.components.users.profile.php:22
1223
- msgid "USER DOES NOT EXIST!"
1224
- msgstr ""
1225
-
1226
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1227
- msgid "User Profile"
1228
- msgstr ""
1229
-
1230
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1231
- #, php-format
1232
- msgid "as provided by %s"
1233
- msgstr ""
1234
-
1235
- #: includes/services/wsl.authentication.php:64
1236
- msgid "Bouncer say don't be silly!"
1237
- msgstr ""
1238
-
1239
- #: includes/services/wsl.authentication.php:70
1240
- msgid "Bouncer say this makes no sense."
1241
- msgstr ""
1242
-
1243
- #: includes/services/wsl.authentication.php:77
1244
- msgid "WSL is disabled!"
1245
- msgstr ""
1246
-
1247
- #: includes/services/wsl.authentication.php:99
1248
- msgid "Bouncer says this makes no sense."
1249
- msgstr ""
1250
-
1251
- #: includes/services/wsl.authentication.php:107
1252
- msgid "Bouncer say you are doin it wrong."
1253
- msgstr ""
1254
-
1255
- #: includes/services/wsl.authentication.php:114
1256
- msgid "You are already logged in as <b>%</b>."
1257
- msgstr ""
1258
-
1259
- #: includes/services/wsl.authentication.php:119
1260
- #: includes/services/wsl.authentication.php:559
1261
- msgid ""
1262
- "Error: Another plugin seems to be using HybridAuth Library and made "
1263
- "WordPress Social Login unusable. We recommand to find this plugin and to "
1264
- "kill it with fire!"
1265
- msgstr ""
1266
-
1267
- #: includes/services/wsl.authentication.php:130
1268
- msgid "Unknown or disabled provider"
1269
- msgstr ""
1270
-
1271
- #: includes/services/wsl.authentication.php:262
1272
- msgid "Unspecified error!"
1273
- msgstr ""
1274
-
1275
- #: includes/services/wsl.authentication.php:266
1276
- msgid "Unspecified error."
1277
- msgstr ""
1278
-
1279
- #: includes/services/wsl.authentication.php:267
1280
- msgid "Hybriauth configuration error."
1281
- msgstr ""
1282
-
1283
- #: includes/services/wsl.authentication.php:268
1284
- msgid "Provider not properly configured."
1285
- msgstr ""
1286
-
1287
- #: includes/services/wsl.authentication.php:269
1288
- msgid "Unknown or disabled provider."
1289
- msgstr ""
1290
-
1291
- #: includes/services/wsl.authentication.php:270
1292
- msgid "Missing provider application credentials."
1293
- msgstr ""
1294
-
1295
- #: includes/services/wsl.authentication.php:271
1296
- #, php-format
1297
- msgid ""
1298
- "<b>What does this error mean ?</b><br />Most likely, you didn't setup the "
1299
- "correct application credentials for this provider. These credentials are "
1300
- "required in order for <b>%s</b> users to access your website and for "
1301
- "WordPress Social Login to work."
1302
- msgstr ""
1303
-
1304
- #: includes/services/wsl.authentication.php:271
1305
- msgid ""
1306
- "<br />Instructions for use can be found in the <a href=\"http://hybridauth."
1307
- "sourceforge.net/wsl/configure.html\" target=\"_blank\">User Manual</a>."
1308
- msgstr ""
1309
-
1310
- #: includes/services/wsl.authentication.php:273
1311
- msgid ""
1312
- "Authentification failed. The user has canceled the authentication or the "
1313
- "provider refused the connection."
1314
- msgstr ""
1315
-
1316
- #: includes/services/wsl.authentication.php:274
1317
- msgid ""
1318
- "User profile request failed. Most likely the user is not connected to the "
1319
- "provider and he should to authenticate again."
1320
- msgstr ""
1321
-
1322
- #: includes/services/wsl.authentication.php:277
1323
- msgid "User not connected to the provider."
1324
- msgstr ""
1325
-
1326
- #: includes/services/wsl.authentication.php:280
1327
- msgid "Provider does not support this feature."
1328
- msgstr ""
1329
-
1330
- #: includes/services/wsl.authentication.php:323
1331
- msgid "Something bad happen!"
1332
- msgstr ""
1333
-
1334
- #: includes/services/wsl.authentication.php:389
1335
- msgid ""
1336
- "Note: This message can be disabled from the plugin settings by setting "
1337
- "<b>Development mode</b> to <b>Disabled</b>"
1338
- msgstr ""
1339
-
1340
- #: includes/services/wsl.authentication.php:418
1341
- msgid "Redirecting..."
1342
- msgstr ""
1343
-
1344
- #: includes/services/wsl.authentication.php:447
1345
- #, php-format
1346
- msgid "Contacting <b>%s</b>, please wait..."
1347
- msgstr ""
1348
-
1349
- #: includes/services/wsl.authentication.php:711
1350
- msgid "registration is now closed!"
1351
- msgstr ""
1352
-
1353
- #: includes/services/wsl.authentication.php:733
1354
- #, php-format
1355
- msgid "Unspecified error. #%d"
1356
- msgstr ""
1357
-
1358
- #: includes/services/wsl.authentication.php:882
1359
- msgid "An error occurred while creating a new user!"
1360
- msgstr ""
1361
-
1362
- #: includes/settings/wsl.compatibilities.php:92
1363
- msgid "Almost there, we just need to check a couple of things"
1364
- msgstr ""
1365
-
1366
- #: includes/settings/wsl.compatibilities.php:96
1367
- msgid "Continue"
1368
- msgstr ""
1369
-
1370
- #: includes/settings/wsl.compatibilities.php:108
1371
- msgid "E-mail is not valid!"
1372
- msgstr ""
1373
-
1374
- #: includes/settings/wsl.compatibilities.php:112
1375
- msgid "Username is not valid!"
1376
- msgstr ""
1377
-
1378
- #: includes/settings/wsl.compatibilities.php:116
1379
- msgid "That E-mail is already registered!"
1380
- msgstr ""
1381
-
1382
- #: includes/settings/wsl.compatibilities.php:120
1383
- msgid "That Username is already registered!"
1384
- msgstr ""
1385
-
1386
- #: includes/settings/wsl.compatibilities.php:124
1387
- msgid "You are now connected via"
1388
- msgstr ""
1389
-
1390
- #: includes/settings/wsl.compatibilities.php:140
1391
- msgid "Bouncer says no."
1392
- msgstr ""
1393
-
1394
- #: includes/settings/wsl.compatibilities.php:148
1395
- msgid "Bouncer say he refuses."
1396
- msgstr ""
1397
-
1398
- #: includes/settings/wsl.compatibilities.php:156
1399
- msgid "Bouncer say only Mundo can go where he pleases!"
1400
- msgstr ""
1401
-
1402
- #: includes/settings/wsl.initialization.php:59
1403
- #: includes/settings/wsl.initialization.php:87
1404
- msgid ""
1405
- "An installed plugin is trying to o-ver-write WordPress Social Login config "
1406
- "in a bad way."
1407
- msgstr ""
1408
-
1409
- #: includes/settings/wsl.initialization.php:373
1410
- msgid "WSL user profile"
1411
- msgstr ""
1412
-
1413
- #: includes/settings/wsl.initialization.php:374
1414
- msgid "WSL user contacts"
1415
- msgstr ""
1416
-
1417
- #: includes/settings/wsl.initialization.php:400
1418
- msgid "Profile"
1419
- msgstr ""
1420
-
1421
- #: includes/widgets/wsl.auth.widget.php:124
1422
- msgid ""
1423
- "<strong style=\"color:red;\">WordPress Social Login is not configured yet!</"
1424
- "strong><br />Please visit the <strong>Settings\\ WP Social Login</strong> "
1425
- "administration page to configure this plugin.<br />For more information "
1426
- "please refer to the plugin <a href=\"http://hybridauth.sourceforge.net/"
1427
- "userguide/Plugin_WordPress_Social_Login.html\">online user guide</a> or "
1428
- "contact us at <a href=\"http://hybridauth.sourceforge.net/\">hybridauth."
1429
- "sourceforge.net</a>"
1430
- msgstr ""
1431
-
1432
- #: includes/widgets/wsl.auth.widget.php:293
1433
- msgid "Social networks"
1434
- msgstr ""
1435
-
1436
- #: includes/widgets/wsl.auth.widget.php:300
1437
- msgid "Identity"
1438
- msgstr ""
1439
-
1440
- #: includes/widgets/wsl.auth.widget.php:336
1441
- msgid "Add more identities"
1442
- msgstr ""
1443
-
1444
- #: includes/widgets/wsl.auth.widget.php:375
1445
- msgid "Currently connected to:"
1446
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/wordpress-social-login-de_DE.mo DELETED
Binary file
languages/wordpress-social-login-de_DE.po DELETED
@@ -1,1449 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WordPress Social Login\n"
4
- "POT-Creation-Date: 2013-02-16 06:40+0100\n"
5
- "PO-Revision-Date: 2013-02-16 06:41+0100\n"
6
- "Last-Translator: Miled <hybridauth@gmail.com>\n"
7
- "Language-Team: WordPress Social Login <hybridauth@gmail.com>\n"
8
- "Language: German - Deutsch (de_DE)\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.5.5\n"
13
-
14
- #: includes/admin/wsl.admin.ui.php:332
15
- msgid "Development mode is enabled!"
16
- msgstr ""
17
-
18
- #: includes/admin/wsl.admin.ui.php:407
19
- #: includes/services/wsl.authentication.php:637
20
- msgid "Something wrong!"
21
- msgstr ""
22
-
23
- #: includes/admin/wsl.admin.ui.php:412
24
- msgid ""
25
- "Unknown or Disabled <b>Component</b>! Check the list of enabled components "
26
- "or the typed URL"
27
- msgstr ""
28
-
29
- #: includes/admin/wsl.admin.ui.php:416
30
- msgid ""
31
- "If you believe you've found a problem with <b>WordPress Social Login</b>, be "
32
- "sure to let us know so we can fix it"
33
- msgstr ""
34
-
35
- #: includes/admin/wsl.admin.ui.php:422
36
- msgid "Report as bug"
37
- msgstr ""
38
-
39
- #: includes/admin/wsl.admin.ui.php:423
40
- msgid "Check enabled components"
41
- msgstr ""
42
-
43
- #: includes/admin/wsl.admin.ui.php:567
44
- msgid "Welcome!"
45
- msgstr "Willkommen!"
46
-
47
- #: includes/admin/wsl.admin.ui.php:569
48
- msgid ""
49
- "If you are still new to WordPress Social Login, we have provided a few "
50
- "walkthroughs to get you started"
51
- msgstr ""
52
- "Wir haben einige Links zusammengestellt, um dir den Start zu erleichtern"
53
-
54
- #: includes/admin/wsl.admin.ui.php:576
55
- msgid "Get Started"
56
- msgstr "Nächster Schritt"
57
-
58
- #: includes/admin/wsl.admin.ui.php:579
59
- msgid ""
60
- "<a href=\"http://hybridauth.sourceforge.net/wsl/configure.html\" target="
61
- "\"_blank\">Setup and Configuration</a>"
62
- msgstr ""
63
-
64
- #: includes/admin/wsl.admin.ui.php:580
65
- msgid ""
66
- "<a href=\"http://hybridauth.sourceforge.net/wsl/customize.html\" target="
67
- "\"_blank\">Customize WSL Widgets</a>"
68
- msgstr ""
69
-
70
- #: includes/admin/wsl.admin.ui.php:581
71
- msgid ""
72
- "<a href=\"http://hybridauth.sourceforge.net/wsl/userdata.html\" target="
73
- "\"_blank\">Manage users and contacts</a>"
74
- msgstr ""
75
-
76
- #: includes/admin/wsl.admin.ui.php:582
77
- msgid ""
78
- "<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
79
- "\">WSL User Guide</a> and <a href=\"http://hybridauth.sourceforge.net/wsl/"
80
- "faq.html\" target=\"_blank\">FAQ</a>"
81
- msgstr ""
82
-
83
- #: includes/admin/wsl.admin.ui.php:588
84
- #, php-format
85
- msgid "What's new on WSL %s"
86
- msgstr ""
87
-
88
- #: includes/admin/wsl.admin.ui.php:591
89
- msgid ""
90
- "In a similar way to WordPress plugins, WSL uses <a href=\"options-general."
91
- "php?page=wordpress-social-login&wslp=components\">Components</a>"
92
- msgstr ""
93
-
94
- #: includes/admin/wsl.admin.ui.php:592
95
- msgid "<b>Email Validation</b> is replaced with <b>Profile Completion</b>"
96
- msgstr ""
97
-
98
- #: includes/admin/wsl.admin.ui.php:593
99
- msgid ""
100
- "<b>User Moderation</b> made compatible with <a href=\"http://wordpress.org/"
101
- "extend/plugins/theme-my-login/\" target=\"_blank\">Theme My Login</a> plugin"
102
- msgstr ""
103
-
104
- #: includes/admin/wsl.admin.ui.php:594
105
- msgid "A number of enhancements and new options now available"
106
- msgstr ""
107
-
108
- #: includes/admin/wsl.admin.ui.php:644
109
- msgid "Contributor License Agreement"
110
- msgstr ""
111
-
112
- #: includes/admin/wsl.admin.ui.php:649
113
- msgid ""
114
- "You are about to submit your contributions to the WordPress Social Login "
115
- "Website to be reviewed for inclusion in future versions"
116
- msgstr ""
117
-
118
- #: includes/admin/wsl.admin.ui.php:651
119
- msgid ""
120
- "You hereby grant the permission to publish your contribution, in whole or in "
121
- "part, and to made it available under the <b>MIT License</b>, for the "
122
- "<b>Wordpress community</b> to, freely use or misuse"
123
- msgstr ""
124
-
125
- #: includes/admin/wsl.admin.ui.php:657
126
- msgid "Hell No"
127
- msgstr ""
128
-
129
- #: includes/admin/wsl.admin.ui.php:658
130
- msgid "Yes, I agree to contribute my translation"
131
- msgstr ""
132
-
133
- #: includes/admin/wsl.admin.ui.php:662
134
- msgid "Help us localize WordPress Social Login"
135
- msgstr "Help ons om deze pagina te vertalen"
136
-
137
- #: includes/admin/wsl.admin.ui.php:666
138
- msgid ""
139
- "You can <b>translate as much you pleases</b> as much <b>as you want</b>. You "
140
- "don't have to translate everything in this page, but every word counts. "
141
- "Ignore any string you want or aleardy translated. You could also use this "
142
- "tool to fix any typo you may find or to improve the current language "
143
- "expressions"
144
- msgstr ""
145
-
146
- #: includes/admin/wsl.admin.ui.php:668
147
- msgid ""
148
- "Your name allows us to recognize your contributions and bypass manual "
149
- "review, especially when you've been contributing in the past. So do supply "
150
- "some unique string, even if it's not your real name"
151
- msgstr ""
152
-
153
- #: includes/admin/wsl.admin.ui.php:670
154
- msgid ""
155
- "All the texts on this page are automatically extracted and generated on the "
156
- "form beside. If the translation tool has scapped something you may consider "
157
- "as irrelevant, please leave that particular field empty"
158
- msgstr ""
159
-
160
- #: includes/admin/wsl.admin.ui.php:672
161
- msgid ""
162
- "Your contributions will be sent to the WordPress Social Login website for "
163
- "inclusion in future versions"
164
- msgstr ""
165
-
166
- #: includes/admin/wsl.admin.ui.php:674
167
- msgid "Thanks!"
168
- msgstr ""
169
-
170
- #: includes/admin/wsl.admin.ui.php:682
171
- msgid "Your Name"
172
- msgstr ""
173
-
174
- #: includes/admin/wsl.admin.ui.php:682 includes/admin/wsl.admin.ui.php:688
175
- msgid "optional"
176
- msgstr ""
177
-
178
- #: includes/admin/wsl.admin.ui.php:688
179
- msgid "Comment"
180
- msgstr ""
181
-
182
- #: includes/admin/wsl.admin.ui.php:694
183
- msgid "Target Language"
184
- msgstr ""
185
-
186
- #: includes/admin/wsl.admin.ui.php:703
187
- msgid "Submit changes"
188
- msgstr ""
189
-
190
- #: includes/admin/wsl.admin.ui.php:769
191
- msgid "Help us translate this page into your language"
192
- msgstr "Help ons om deze pagina te vertalen"
193
-
194
- #: includes/admin/components/advanced/index.php:47
195
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:62
196
- msgid "Advanced Settings"
197
- msgstr ""
198
-
199
- #: includes/admin/components/advanced/index.php:52
200
- msgid ""
201
- "<b>Please</b> for the love of <b>God</b>, stay out of Advanced.. unless you "
202
- "are Advanced and you know what you are doing"
203
- msgstr ""
204
-
205
- #: includes/admin/components/advanced/index.php:61
206
- msgid "WSL Base URL"
207
- msgstr ""
208
-
209
- #: includes/admin/components/advanced/index.php:68
210
- msgid "WSL Base PATH"
211
- msgstr ""
212
-
213
- #: includes/admin/components/advanced/index.php:75
214
- msgid "Hybridauth endpoint URL"
215
- msgstr ""
216
-
217
- #: includes/admin/components/advanced/index.php:82
218
- msgid "WSL top bar menu"
219
- msgstr ""
220
-
221
- #: includes/admin/components/advanced/index.php:85
222
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:38
223
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:47
224
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:72
225
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:81
226
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:174
227
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:211
228
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:249
229
- msgid "Yes"
230
- msgstr ""
231
-
232
- #: includes/admin/components/advanced/index.php:86
233
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:39
234
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:48
235
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:73
236
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:82
237
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:175
238
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:212
239
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:250
240
- msgid "No"
241
- msgstr ""
242
-
243
- #: includes/admin/components/advanced/index.php:98
244
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:275
245
- #: includes/admin/components/contacts/index.php:98
246
- #: includes/admin/components/diagnostics/index.php:64
247
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:144
248
- #: includes/admin/components/networks/wsl.components.networks.setup.php:271
249
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:40
250
- msgid "Save Settings"
251
- msgstr "Speichere Einstellungen"
252
-
253
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:27
254
- msgid "WSL Widget"
255
- msgstr ""
256
-
257
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:31
258
- msgid ""
259
- "Here you can tell Bouncer if you are accepting new users registration and "
260
- "authentication into your website or not any more. Note that Bouncer only "
261
- "works for WSL and will not interfere with users authenticating through the "
262
- "regulars wordpress Login and Register pages with their usernames and "
263
- "passwords (to to achieve that kind of restrictions, you may need to use "
264
- "another plugin(s) in combination with WSL)."
265
- msgstr ""
266
-
267
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:35
268
- msgid "Accept new registration"
269
- msgstr ""
270
-
271
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:44
272
- msgid "Allow authentication"
273
- msgstr ""
274
-
275
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:58
276
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:45
277
- msgid "Profile Completion"
278
- msgstr ""
279
-
280
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:62
281
- msgid ""
282
- "Select required fields. If a social network doesn't return them, Bouncer "
283
- "will then ask your visitors to fill additional form to provide them when "
284
- "registering."
285
- msgstr ""
286
-
287
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:65
288
- msgid ""
289
- "You may activate <b>Profile Completion</b> for both <b>E-mail</b> and "
290
- "<b>Username</b>, but keep in mind, the idea behind <b>social login</b> is to "
291
- "avoid forms and remove all the hassle of registration"
292
- msgstr ""
293
-
294
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:69
295
- msgid "Require E-mail"
296
- msgstr ""
297
-
298
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:78
299
- msgid "Allow Username change"
300
- msgstr ""
301
-
302
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:92
303
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:111
304
- msgid "User Moderation"
305
- msgstr ""
306
-
307
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:96
308
- msgid ""
309
- "<b>User Moderation</b> will define how <b>Bouncer</b> should behave with new "
310
- "regsitred users:"
311
- msgstr ""
312
-
313
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:99
314
- msgid "<b>None</b>: No moderation required."
315
- msgstr ""
316
-
317
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:100
318
- msgid ""
319
- "<b>E-mail Confirmation</b>: New users will need to be confirm their e-mail "
320
- "address before they may log in"
321
- msgstr ""
322
-
323
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:101
324
- msgid ""
325
- "<b>Admin Approval</b>: New users will need to be approved by an "
326
- "administrator before they may log in"
327
- msgstr ""
328
-
329
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:104
330
- msgid ""
331
- "Both <b>Admin Approval</b> and <b>E-mail Confirmation</b> requires <a href="
332
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
333
- "\">Theme My Login</a> plugin to be installed. As there is no point for "
334
- "<b>WordPress Social Login</b> to reinvent the wheel"
335
- msgstr ""
336
-
337
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:107
338
- msgid ""
339
- "<b>User Moderation</b> was purposely made compatible with the <a href="
340
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
341
- "\">Theme My Login</a> for a number reasons: That plugin is good at what he "
342
- "does, a hell of a lot of people are using it and many have asked for it"
343
- msgstr ""
344
-
345
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:114
346
- msgid "None"
347
- msgstr ""
348
-
349
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:115
350
- msgid "E-mail Confirmation &mdash; Yield to Theme My Login plugin"
351
- msgstr ""
352
-
353
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:116
354
- msgid "Admin Approval &mdash; Yield to Theme My Login plugin"
355
- msgstr ""
356
-
357
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:126
358
- msgid "Membership level"
359
- msgstr ""
360
-
361
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:130
362
- msgid ""
363
- "Here you can define the default role for new users authenticating through "
364
- "WSL. The <code>Administrator</code> and <code>Editor</code> roles are not "
365
- "available for safety reasons"
366
- msgstr ""
367
-
368
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:133
369
- msgid ""
370
- "For more information about wordpress users roles and capabilities refer to "
371
- "<a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs."
372
- "_Role_Table\" target=\"_blank\">http://codex.wordpress.org/"
373
- "Roles_and_Capabilities</a>"
374
- msgstr ""
375
-
376
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:136
377
- msgid ""
378
- "If <b>User Moderation</b> is set to <code>Admin Approval</code> then "
379
- "<b>Membership level</b> will be ignored"
380
- msgstr ""
381
-
382
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:140
383
- msgid "New User Default Role"
384
- msgstr ""
385
-
386
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:143
387
- msgid "Safe"
388
- msgstr ""
389
-
390
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:144
391
- msgid "&mdash; Wordpress User Default Role &mdash;"
392
- msgstr ""
393
-
394
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:145
395
- msgid "&mdash; No role for this site &mdash;"
396
- msgstr ""
397
-
398
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:146
399
- msgid "Subscriber"
400
- msgstr ""
401
-
402
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:149
403
- msgid "Be careful with these"
404
- msgstr ""
405
-
406
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:150
407
- msgid "Author"
408
- msgstr ""
409
-
410
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:151
411
- msgid "Contributor"
412
- msgstr ""
413
-
414
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:162
415
- msgid "Filters by emails domains name"
416
- msgstr ""
417
-
418
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:166
419
- msgid "Restrict registration to a limited number of domains name."
420
- msgstr ""
421
-
422
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:167
423
- msgid ""
424
- "Insert one email address per line and try to keep this list short. On "
425
- "<code>Bounce text</code> insert the text you want to display for rejected "
426
- "users. ex: <code>gmail.com</code>, without '@'."
427
- msgstr ""
428
-
429
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:171
430
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:208
431
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:246
432
- #: includes/admin/components/contacts/index.php:51
433
- #: includes/admin/components/contacts/index.php:58
434
- #: includes/admin/components/contacts/index.php:65
435
- #: includes/admin/components/contacts/index.php:72
436
- #: includes/admin/components/contacts/index.php:79
437
- #: includes/admin/components/diagnostics/index.php:61
438
- #: includes/admin/components/networks/wsl.components.networks.setup.php:109
439
- msgid "Enabled"
440
- msgstr "Aktiviert"
441
-
442
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:180
443
- msgid "Domains list"
444
- msgstr ""
445
-
446
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:186
447
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:223
448
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:261
449
- msgid "Bounce text"
450
- msgstr ""
451
-
452
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:199
453
- msgid "Filters by e-mails addresses"
454
- msgstr ""
455
-
456
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:203
457
- msgid "Restrict registration to a limited number of emails addresses."
458
- msgstr ""
459
-
460
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:204
461
- msgid ""
462
- "Insert one email address per line and try to keep this list short. On "
463
- "<code>Bounce text</code> insert the text you want to display for rejected "
464
- "users. ex: <code>hybridauth@gmail.com</code>"
465
- msgstr ""
466
-
467
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:217
468
- msgid "E-mails list"
469
- msgstr ""
470
-
471
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:236
472
- msgid "Filters by profile urls"
473
- msgstr ""
474
-
475
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:240
476
- msgid "Restrict registration to a limited number of profile urls."
477
- msgstr ""
478
-
479
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:241
480
- msgid ""
481
- "<b>Note</b>: If a social network provide the user email, then use 'Filters "
482
- "by e-mails addresses' instead. Providers like Facebook provide multiples "
483
- "profiles URLs per user and WSL won't be able to reconize them."
484
- msgstr ""
485
-
486
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:242
487
- msgid ""
488
- "Insert one email address per line and try to keep this list short. On "
489
- "<code>Bounce text</code> insert the text you want to display for rejected "
490
- "users. ex: <code>http://twitter.com/HybridAuth</code>, <code>https://plus."
491
- "google.com/u/0/108839241301472312344</code>"
492
- msgstr ""
493
-
494
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:255
495
- msgid "Profile urls"
496
- msgstr ""
497
-
498
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:26
499
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:26
500
- msgid "What's This?"
501
- msgstr ""
502
-
503
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:30
504
- msgid "Hey, meet our friend, the Bouncer"
505
- msgstr ""
506
-
507
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:33
508
- msgid ""
509
- "Ever been in trouble with one of <a href=\"http://www.flickr.com/search/?"
510
- "q=bouncer+doorman&z=e\" target=\"_blank\">these guys</a>? Well, this module "
511
- "have more or less the same role, and he will try his best to piss your users "
512
- "off until they meet your requirements."
513
- msgstr ""
514
-
515
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:37
516
- msgid ""
517
- "This feature is most suited for small businesses and folks running a closed-"
518
- "door blog between friends or coworkers."
519
- msgstr ""
520
-
521
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:40
522
- msgid "Available settings"
523
- msgstr ""
524
-
525
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:43
526
- msgid "Enable/Disable Registration"
527
- msgstr ""
528
-
529
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:44
530
- msgid "Enable/Disable Authentication"
531
- msgstr ""
532
-
533
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:46
534
- msgid "Users moderation"
535
- msgstr ""
536
-
537
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:47
538
- msgid "Users roles"
539
- msgstr ""
540
-
541
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:48
542
- msgid "Restrictions (by emails, domains, profiles urls)"
543
- msgstr ""
544
-
545
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:51
546
- msgid "IMPORTANT!"
547
- msgstr ""
548
-
549
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:54
550
- msgid ""
551
- "All the settings on this page without exception are only valid for users "
552
- "authenticating through <b>WordPress Social Login Widget"
553
- msgstr ""
554
-
555
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:57
556
- msgid ""
557
- "Users authenticating through the regulars Wordpress Login and Register pages "
558
- "with their usernames and passwords WILL NOT be affected."
559
- msgstr ""
560
-
561
- #: includes/admin/components/components/wsl.components.help.gallery.php:30
562
- msgid "Other Components available"
563
- msgstr ""
564
-
565
- #: includes/admin/components/components/wsl.components.help.gallery.php:58
566
- msgid "WordPress Social Login for BuddyPress"
567
- msgstr ""
568
-
569
- #: includes/admin/components/components/wsl.components.help.gallery.php:60
570
- msgid "Make WordPress Social Login compatible with BuddyPress"
571
- msgstr ""
572
-
573
- #: includes/admin/components/components/wsl.components.help.gallery.php:61
574
- msgid "Widget integration, xProfiles mapping and more"
575
- msgstr ""
576
-
577
- #: includes/admin/components/components/wsl.components.help.gallery.php:63
578
- msgid "Install Now"
579
- msgstr ""
580
-
581
- #: includes/admin/components/components/wsl.components.help.gallery.php:64
582
- msgid "Visit plugin site"
583
- msgstr ""
584
-
585
- #: includes/admin/components/components/wsl.components.help.gallery.php:69
586
- msgid "Build yours"
587
- msgstr ""
588
-
589
- #: includes/admin/components/components/wsl.components.help.gallery.php:71
590
- msgid ""
591
- "Looking to build your own custom <b>WordPress Social Login</b> extenstion or "
592
- "component? Well, it's pretty easy. Just RTFM :)"
593
- msgstr ""
594
-
595
- #: includes/admin/components/components/wsl.components.help.gallery.php:74
596
- msgid "WSL Developer API"
597
- msgstr ""
598
-
599
- #: includes/admin/components/components/wsl.components.help.gallery.php:75
600
- msgid "WSL on Github"
601
- msgstr ""
602
-
603
- #: includes/admin/components/components/wsl.components.help.setup.php:29
604
- #: includes/admin/components/components/wsl.components.help.setup.php:37
605
- msgid "Component"
606
- msgstr ""
607
-
608
- #: includes/admin/components/components/wsl.components.help.setup.php:30
609
- #: includes/admin/components/components/wsl.components.help.setup.php:38
610
- msgid "Description"
611
- msgstr ""
612
-
613
- #: includes/admin/components/components/wsl.components.help.setup.php:67
614
- msgid "View"
615
- msgstr ""
616
-
617
- #: includes/admin/components/components/wsl.components.help.setup.php:72
618
- msgid "Disable"
619
- msgstr ""
620
-
621
- #: includes/admin/components/components/wsl.components.help.setup.php:74
622
- msgid "Enable"
623
- msgstr ""
624
-
625
- #: includes/admin/components/contacts/index.php:39
626
- msgid "Settings"
627
- msgstr ""
628
-
629
- #: includes/admin/components/contacts/index.php:43
630
- msgid ""
631
- "<b>WordPress Social Login</b> is now introducing <b>Contacts Import</b> as a "
632
- "new feature. When enabled, users authenticating through WordPress Social "
633
- "Login will be asked for the authorisation to import their contact list. Note "
634
- "that some social networks do not provide certains of their users information "
635
- "like contacts emails, photos and or profile urls"
636
- msgstr ""
637
-
638
- #: includes/admin/components/contacts/index.php:45
639
- msgid "Enable contacts import for"
640
- msgstr ""
641
-
642
- #: includes/admin/components/contacts/index.php:52
643
- #: includes/admin/components/contacts/index.php:59
644
- #: includes/admin/components/contacts/index.php:66
645
- #: includes/admin/components/contacts/index.php:73
646
- #: includes/admin/components/contacts/index.php:80
647
- #: includes/admin/components/diagnostics/index.php:62
648
- msgid "Disabled"
649
- msgstr ""
650
-
651
- #: includes/admin/components/contacts/index.php:86
652
- msgid "Notes"
653
- msgstr ""
654
-
655
- #: includes/admin/components/contacts/index.php:88
656
- msgid ""
657
- "To enable contacts import from these social network, you need first to "
658
- "enabled them on the <a href=\"options-general.php?page=wordpress-social-"
659
- "login&wslp=networks\"><b>Networks</b></a> tab and register the required "
660
- "application"
661
- msgstr ""
662
-
663
- #: includes/admin/components/contacts/index.php:89
664
- msgid ""
665
- "<b>WSL</b> will try to import as much information about a user contacts as "
666
- "he was able to pull from the social networks APIs."
667
- msgstr ""
668
-
669
- #: includes/admin/components/contacts/index.php:90
670
- msgid ""
671
- "All contacts data are sotred into your database on the table: "
672
- "<code>`wsluserscontacts`</code>"
673
- msgstr ""
674
-
675
- #: includes/admin/components/contacts/index.php:107
676
- msgid "Users contacts list preview"
677
- msgstr ""
678
-
679
- #: includes/admin/components/contacts/index.php:114
680
- #, php-format
681
- msgid "%s contact's list"
682
- msgstr ""
683
-
684
- #: includes/admin/components/contacts/index.php:121
685
- #: includes/admin/components/contacts/index.php:130
686
- #: includes/widgets/wsl.auth.widget.php:299
687
- msgid "Provider"
688
- msgstr ""
689
-
690
- #: includes/admin/components/contacts/index.php:122
691
- #: includes/admin/components/contacts/index.php:131
692
- msgid "User"
693
- msgstr ""
694
-
695
- #: includes/admin/components/contacts/index.php:123
696
- #: includes/admin/components/contacts/index.php:132
697
- msgid "Contact Name"
698
- msgstr ""
699
-
700
- #: includes/admin/components/contacts/index.php:124
701
- #: includes/admin/components/contacts/index.php:133
702
- msgid "Contact Email"
703
- msgstr ""
704
-
705
- #: includes/admin/components/contacts/index.php:125
706
- #: includes/admin/components/contacts/index.php:134
707
- msgid "Contact Profile Url"
708
- msgstr ""
709
-
710
- #: includes/admin/components/contacts/index.php:150
711
- msgid "No contacts found"
712
- msgstr ""
713
-
714
- #: includes/admin/components/diagnostics/index.php:24
715
- msgid "Requirements test"
716
- msgstr ""
717
-
718
- #: includes/admin/components/diagnostics/index.php:27
719
- msgid ""
720
- "In order for <b>WordPress Social Login</b> to work properly, your server "
721
- "should meet certain requirements. These \"requirements\" <br />and \"services"
722
- "\" are usually offered by default by most \"modern\" web hosting providers, "
723
- "however some complications may <br />occur with <b>shared hosting</b> and, "
724
- "or <b>custom wordpress installations</b>"
725
- msgstr ""
726
-
727
- #: includes/admin/components/diagnostics/index.php:30
728
- msgid "The minimum server requirements are"
729
- msgstr ""
730
-
731
- #: includes/admin/components/diagnostics/index.php:33
732
- msgid "PHP >= 5.2.0 installed"
733
- msgstr ""
734
-
735
- #: includes/admin/components/diagnostics/index.php:34
736
- msgid "WSL Endpoint URLs reachable"
737
- msgstr ""
738
-
739
- #: includes/admin/components/diagnostics/index.php:35
740
- msgid "PHP's default SESSION handling"
741
- msgstr ""
742
-
743
- #: includes/admin/components/diagnostics/index.php:36
744
- msgid "PHP/CURL/SSL Extension enabled"
745
- msgstr ""
746
-
747
- #: includes/admin/components/diagnostics/index.php:37
748
- msgid "PHP/JSON Extension enabled"
749
- msgstr ""
750
-
751
- #: includes/admin/components/diagnostics/index.php:38
752
- msgid "PHP/REGISTER_GLOBALS Off"
753
- msgstr ""
754
-
755
- #: includes/admin/components/diagnostics/index.php:39
756
- msgid "jQuery installed on WordPress backoffice"
757
- msgstr ""
758
-
759
- #: includes/admin/components/diagnostics/index.php:42
760
- msgid ""
761
- "You can run the <b>WordPress Social Login Requirements Test</b> by clicking "
762
- "the button bellow"
763
- msgstr ""
764
-
765
- #: includes/admin/components/diagnostics/index.php:46
766
- msgid "Run the plugin requirements test"
767
- msgstr ""
768
-
769
- #: includes/admin/components/diagnostics/index.php:47
770
- msgid "Website Information"
771
- msgstr ""
772
-
773
- #: includes/admin/components/diagnostics/index.php:53
774
- msgid "Development mode"
775
- msgstr ""
776
-
777
- #: includes/admin/components/diagnostics/index.php:56
778
- msgid ""
779
- "By enabling the development mode, this plugin will try generate and display "
780
- "a technical reports when something goes wrong. <br />This report can help "
781
- "your figure out the root of any issues you may runs into, or you can also "
782
- "send it to the plugin developer. <br />Its recommend to set the Development "
783
- "mode to <b style=\"color:red\">Disabled</b> on production."
784
- msgstr ""
785
-
786
- #: includes/admin/components/help/index.php:25
787
- msgid "Troubleshooting"
788
- msgstr ""
789
-
790
- #: includes/admin/components/help/index.php:27
791
- msgid "WSL Diagnostics"
792
- msgstr ""
793
-
794
- #: includes/admin/components/help/index.php:29
795
- msgid "System information"
796
- msgstr ""
797
-
798
- #: includes/admin/components/help/index.php:32
799
- msgid ""
800
- "If you run into any issue, you can access the <b>WordPress Social Login "
801
- "Diagnostics</b> to check the <b>Plugin Requirements</b> or to enable the "
802
- "<b>Development mode</b>"
803
- msgstr ""
804
-
805
- #: includes/admin/components/help/index.php:35
806
- msgid ""
807
- "Remember to include your System information when posting support requests"
808
- msgstr ""
809
-
810
- #: includes/admin/components/help/index.php:39
811
- msgid "Documentation"
812
- msgstr ""
813
-
814
- #: includes/admin/components/help/index.php:41
815
- msgid ""
816
- "The complete <b>User Guide</b> can be found at\n"
817
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target="
818
- "\"_blank\">hybridauth.sourceforge.net/wsl/index.html</a>"
819
- msgstr ""
820
-
821
- #: includes/admin/components/help/index.php:47
822
- msgid "FAQs"
823
- msgstr ""
824
-
825
- #: includes/admin/components/help/index.php:49
826
- msgid ""
827
- "A list of <b>Frequently asked questions</b> can be found at\n"
828
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/faq.html\" target="
829
- "\"_blank\">hybridauth.sourceforge.net/wsl/faq.html</a>"
830
- msgstr ""
831
-
832
- #: includes/admin/components/help/index.php:55
833
- msgid "Support"
834
- msgstr ""
835
-
836
- #: includes/admin/components/help/index.php:57
837
- msgid ""
838
- "To get help and support refer to <a href=\"http://hybridauth.sourceforge.net/"
839
- "wsl/support.html\" target=\"_blank\">http://hybridauth.sourceforge.net/wsl/"
840
- "support.html</a>"
841
- msgstr ""
842
-
843
- #: includes/admin/components/help/index.php:62
844
- msgid "Credits"
845
- msgstr ""
846
-
847
- #: includes/admin/components/help/index.php:64
848
- msgid ""
849
- "WordPress Social Login was created by <a href=\"http://profiles.wordpress."
850
- "org/miled/\" target=\"_blank\">Mohamed Mrassi</a> (a.k.a Miled) and <a href="
851
- "\"https://github.com/hybridauth/WordPress-Social-Login/graphs/contributors\" "
852
- "target=\"_blank\">contributors</a>"
853
- msgstr ""
854
-
855
- #: includes/admin/components/help/index.php:65
856
- msgid ""
857
- "Many other people have also contributed with <br />constructive discussions, "
858
- "support and by submitting patches"
859
- msgstr ""
860
-
861
- #: includes/admin/components/help/index.php:70
862
- msgid "License"
863
- msgstr ""
864
-
865
- #: includes/admin/components/help/index.php:72
866
- msgid ""
867
- "<b>WordPress Social Login</b> is an open source software licenced under The "
868
- "MIT License (MIT)"
869
- msgstr ""
870
-
871
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:27
872
- msgid "Basic Settings"
873
- msgstr ""
874
-
875
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:32
876
- msgid "Connect with caption"
877
- msgstr ""
878
-
879
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:38
880
- msgid "Social icon set"
881
- msgstr ""
882
-
883
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:41
884
- msgid "WPZOOM social networking icon set"
885
- msgstr ""
886
-
887
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:42
888
- msgid "Icondock vector social media icons"
889
- msgstr ""
890
-
891
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:47
892
- msgid "Users avatars"
893
- msgstr ""
894
-
895
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:50
896
- msgid "Display the default users avatars"
897
- msgstr ""
898
-
899
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:51
900
- msgid "Display users avatars from social networks when available"
901
- msgstr ""
902
-
903
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:67
904
- msgid "Redirect URL"
905
- msgstr ""
906
-
907
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:73
908
- msgid "Authentication flow"
909
- msgstr ""
910
-
911
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:76
912
- msgid "Using popup window"
913
- msgstr ""
914
-
915
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:77
916
- msgid "No popup window"
917
- msgstr ""
918
-
919
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:82
920
- msgid "Widget display"
921
- msgstr ""
922
-
923
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:85
924
- msgid "Display the widget in the comments area, login and register forms"
925
- msgstr ""
926
-
927
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:86
928
- msgid "Display the widget ONLY in the comments area"
929
- msgstr ""
930
-
931
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:87
932
- msgid "Display the widget ONLY in the login form"
933
- msgstr ""
934
-
935
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:92
936
- msgid "Notification"
937
- msgstr ""
938
-
939
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:95
940
- msgid "No notification"
941
- msgstr ""
942
-
943
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:96
944
- msgid "Notify ONLY the blog admin of a new user"
945
- msgstr ""
946
-
947
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:107
948
- msgid "Custom CSS"
949
- msgstr ""
950
-
951
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:112
952
- msgid "Widget CSS"
953
- msgstr ""
954
-
955
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:114
956
- msgid ""
957
- "To customize the default widget styles you can either: edit the css file "
958
- "<strong>/wordpress-social-login/assets/css/style.css</strong>, or change it "
959
- "from this text area"
960
- msgstr ""
961
-
962
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:118
963
- msgid "The basic widget markup is the following"
964
- msgstr ""
965
-
966
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:30
967
- msgid "Widget Customization"
968
- msgstr ""
969
-
970
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:33
971
- msgid ""
972
- "On this section you can fully customize <b>WordPress Social Login Widget</b> "
973
- "and define the way you want it to look and behave"
974
- msgstr ""
975
-
976
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:37
977
- msgid ""
978
- "<b>WordPress Social Login Widget</b> will be generated into the comments, "
979
- "login and register forms enabling your website vistors and customers to "
980
- "login via social networks"
981
- msgstr ""
982
-
983
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:41
984
- msgid ""
985
- "If this widget does not show up on your custom theme or you want to add it "
986
- "somewhere else then refer to the next section"
987
- msgstr ""
988
-
989
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:44
990
- msgid "Custom integration"
991
- msgstr ""
992
-
993
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:47
994
- msgid ""
995
- "If you want to add the social login widget to another location in your "
996
- "theme, you can insert the following code in that location"
997
- msgstr ""
998
-
999
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:49
1000
- msgid "Or, for posts and pages"
1001
- msgstr ""
1002
-
1003
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:54
1004
- msgid ""
1005
- "<b>[wordpress_social_login]</b> shortcode can be used in combination with <a "
1006
- "href=\"http://wordpress.org/extend/plugins/html-javascript-adder/\" target="
1007
- "\"_blank\">HTML Javascript Adder</a> plugin to be add WSL Widget to your "
1008
- "website sidebar"
1009
- msgstr ""
1010
-
1011
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:58
1012
- msgid ""
1013
- "Also, if you are a developer or designer then you can customize it to your "
1014
- "heart's content. For more inofmation refer to <b><a href=\"http://hybridauth."
1015
- "sourceforge.net/wsl/customize.html\" target=\"_blank\">User Guide</a></b>"
1016
- msgstr ""
1017
-
1018
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:61
1019
- msgid "Widget preview"
1020
- msgstr ""
1021
-
1022
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:64
1023
- msgid "This is a preview of what should be on the comments area"
1024
- msgstr ""
1025
-
1026
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:65
1027
- msgid "Do not test it here"
1028
- msgstr ""
1029
-
1030
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:24
1031
- msgid ""
1032
- "And you could add even more of them, <b>Just Click</b> and we will guide you "
1033
- "through"
1034
- msgstr ""
1035
-
1036
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:48
1037
- msgid "Well! none left."
1038
- msgstr ""
1039
-
1040
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:36
1041
- msgid "Insights"
1042
- msgstr ""
1043
-
1044
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:40
1045
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:49
1046
- msgid "Conversions"
1047
- msgstr ""
1048
-
1049
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:43
1050
- msgid "WP users"
1051
- msgstr ""
1052
-
1053
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:46
1054
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:77
1055
- msgid "WSL users"
1056
- msgstr ""
1057
-
1058
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:59
1059
- msgid "By provider"
1060
- msgstr ""
1061
-
1062
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:85
1063
- msgid "By gender"
1064
- msgstr ""
1065
-
1066
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:108
1067
- msgid "By age"
1068
- msgstr ""
1069
-
1070
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:139
1071
- msgid "yrs in average"
1072
- msgstr ""
1073
-
1074
- #: includes/admin/components/networks/wsl.components.networks.setup.php:126
1075
- msgid "Application ID"
1076
- msgstr ""
1077
-
1078
- #: includes/admin/components/networks/wsl.components.networks.setup.php:128
1079
- #: includes/admin/components/networks/wsl.components.networks.setup.php:134
1080
- #: includes/admin/components/networks/wsl.components.networks.setup.php:140
1081
- msgid "Where do I get this info?"
1082
- msgstr "Woher bekomme ich diese Info?"
1083
-
1084
- #: includes/admin/components/networks/wsl.components.networks.setup.php:132
1085
- msgid "Application Key"
1086
- msgstr ""
1087
-
1088
- #: includes/admin/components/networks/wsl.components.networks.setup.php:138
1089
- msgid "Application Secret"
1090
- msgstr ""
1091
-
1092
- #: includes/admin/components/networks/wsl.components.networks.setup.php:149
1093
- msgid "Note"
1094
- msgstr ""
1095
-
1096
- #: includes/admin/components/networks/wsl.components.networks.setup.php:151
1097
- #, php-format
1098
- msgid ""
1099
- "<b>%s</b> do not provide their user's email address and by default a random "
1100
- "email will then be generated for them instead"
1101
- msgstr ""
1102
-
1103
- #: includes/admin/components/networks/wsl.components.networks.setup.php:153
1104
- msgid ""
1105
- "To change this behaviour and to force new registered users to provide their "
1106
- "emails before they get in, goto <b><a href=\"options-general.php?"
1107
- "page=wordpress-social-login&wslp=bouncer\">Bouncer</a></b> and enable "
1108
- "<b>Profile Completion</b>"
1109
- msgstr ""
1110
-
1111
- #: includes/admin/components/networks/wsl.components.networks.setup.php:163
1112
- msgid ""
1113
- "<span style=\"color:#CB4B16;\">Application</span> id and secret (also "
1114
- "sometimes referred as <span style=\"color:#CB4B16;\">Customer</span> key and "
1115
- "secret or <span style=\"color:#CB4B16;\">Client</span> id and secret) are "
1116
- "what we call an application credentials"
1117
- msgstr ""
1118
-
1119
- #: includes/admin/components/networks/wsl.components.networks.setup.php:165
1120
- #, php-format
1121
- msgid ""
1122
- "This application will link your website <code>%s</code> to <code>%s API</"
1123
- "code> and these credentials are needed in order for <b>%s</b> users to "
1124
- "access your website"
1125
- msgstr ""
1126
-
1127
- #: includes/admin/components/networks/wsl.components.networks.setup.php:168
1128
- msgid ""
1129
- "These credentials may also differ in format, name and content depending on "
1130
- "the social network."
1131
- msgstr ""
1132
-
1133
- #: includes/admin/components/networks/wsl.components.networks.setup.php:172
1134
- #, php-format
1135
- msgid ""
1136
- "To enable authentication with this provider and to register a new <b>%s API "
1137
- "Application</b>, carefully follow the steps"
1138
- msgstr ""
1139
-
1140
- #: includes/admin/components/networks/wsl.components.networks.setup.php:175
1141
- #, php-format
1142
- msgid "<b>Done.</b> Nothing more required for <b>%s</b>"
1143
- msgstr ""
1144
- "<b>Fertig.</b> Du musst keine weiteren Schritte für die Aktivierung bei <b>"
1145
- "%s</b> machen"
1146
-
1147
- #: includes/admin/components/networks/wsl.components.networks.setup.php:259
1148
- msgid "And that's it!"
1149
- msgstr "Und das war's!"
1150
-
1151
- #: includes/admin/components/networks/wsl.components.networks.setup.php:261
1152
- #, php-format
1153
- msgid ""
1154
- "If for some reason you still can't figure it out, first try to a) <a class="
1155
- "\"button-primary\" href=\"https://www.google.com/search?q=%s API create "
1156
- "application\" target=\"_blank\">Google it</a>, then check it on b) <a class="
1157
- "\"button-primary\" href=\"http://www.youtube.com/results?search_query=%s API "
1158
- "create application \" target=\"_blank\">Youtube</a> and if nothing works c) "
1159
- "<a class=\"button-primary\" href=\"options-general.php?page=wordpress-social-"
1160
- "login&wslp=help\">ask for support</a>"
1161
- msgstr ""
1162
-
1163
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:21
1164
- msgid "Why, hello there"
1165
- msgstr ""
1166
-
1167
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:29
1168
- msgid ""
1169
- "If you are still new to things, we recommend that you read the <b><a href="
1170
- "\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
1171
- "\">Plugin User Guide</a></b> and to make sure your server settings meet this "
1172
- "<b><a href=\"options-general.php?page=wordpress-social-login&amp;"
1173
- "wslp=diagnostics\">Plugin Requirements</a></b>"
1174
- msgstr ""
1175
-
1176
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:32
1177
- msgid ""
1178
- "If you run into any issue then refer to <b><a href=\"options-general.php?"
1179
- "page=wordpress-social-login&wslp=help\">Help & Support</a></b> to konw how "
1180
- "to reach me"
1181
- msgstr ""
1182
-
1183
- #: includes/admin/components/users/wsl.components.users.list.php:30
1184
- #: includes/admin/components/users/wsl.components.users.list.php:41
1185
- msgid "Providers"
1186
- msgstr ""
1187
-
1188
- #: includes/admin/components/users/wsl.components.users.list.php:31
1189
- #: includes/admin/components/users/wsl.components.users.list.php:42
1190
- #: includes/settings/wsl.compatibilities.php:104
1191
- msgid "Username"
1192
- msgstr ""
1193
-
1194
- #: includes/admin/components/users/wsl.components.users.list.php:32
1195
- #: includes/admin/components/users/wsl.components.users.list.php:43
1196
- msgid "Full Name"
1197
- msgstr ""
1198
-
1199
- #: includes/admin/components/users/wsl.components.users.list.php:33
1200
- #: includes/admin/components/users/wsl.components.users.list.php:44
1201
- #: includes/settings/wsl.compatibilities.php:100
1202
- msgid "E-mail"
1203
- msgstr ""
1204
-
1205
- #: includes/admin/components/users/wsl.components.users.list.php:34
1206
- #: includes/admin/components/users/wsl.components.users.list.php:45
1207
- msgid "Profile URL"
1208
- msgstr ""
1209
-
1210
- #: includes/admin/components/users/wsl.components.users.list.php:35
1211
- #: includes/admin/components/users/wsl.components.users.list.php:46
1212
- #: includes/settings/wsl.initialization.php:400
1213
- msgid "Contacts"
1214
- msgstr ""
1215
-
1216
- #: includes/admin/components/users/wsl.components.users.list.php:36
1217
- #: includes/admin/components/users/wsl.components.users.list.php:47
1218
- msgid "Actions"
1219
- msgstr ""
1220
-
1221
- #: includes/admin/components/users/wsl.components.users.list.php:55
1222
- msgid "No users found"
1223
- msgstr ""
1224
-
1225
- #: includes/admin/components/users/wsl.components.users.profile.php:22
1226
- msgid "USER DOES NOT EXIST!"
1227
- msgstr ""
1228
-
1229
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1230
- msgid "User Profile"
1231
- msgstr ""
1232
-
1233
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1234
- #, php-format
1235
- msgid "as provided by %s"
1236
- msgstr ""
1237
-
1238
- #: includes/services/wsl.authentication.php:64
1239
- msgid "Bouncer say don't be silly!"
1240
- msgstr ""
1241
-
1242
- #: includes/services/wsl.authentication.php:70
1243
- msgid "Bouncer say this makes no sense."
1244
- msgstr ""
1245
-
1246
- #: includes/services/wsl.authentication.php:77
1247
- msgid "WSL is disabled!"
1248
- msgstr ""
1249
-
1250
- #: includes/services/wsl.authentication.php:99
1251
- msgid "Bouncer says this makes no sense."
1252
- msgstr ""
1253
-
1254
- #: includes/services/wsl.authentication.php:107
1255
- msgid "Bouncer say you are doin it wrong."
1256
- msgstr ""
1257
-
1258
- #: includes/services/wsl.authentication.php:114
1259
- msgid "You are already logged in as <b>%</b>."
1260
- msgstr ""
1261
-
1262
- #: includes/services/wsl.authentication.php:119
1263
- #: includes/services/wsl.authentication.php:559
1264
- msgid ""
1265
- "Error: Another plugin seems to be using HybridAuth Library and made "
1266
- "WordPress Social Login unusable. We recommand to find this plugin and to "
1267
- "kill it with fire!"
1268
- msgstr ""
1269
-
1270
- #: includes/services/wsl.authentication.php:130
1271
- msgid "Unknown or disabled provider"
1272
- msgstr ""
1273
-
1274
- #: includes/services/wsl.authentication.php:262
1275
- msgid "Unspecified error!"
1276
- msgstr ""
1277
-
1278
- #: includes/services/wsl.authentication.php:266
1279
- msgid "Unspecified error."
1280
- msgstr ""
1281
-
1282
- #: includes/services/wsl.authentication.php:267
1283
- msgid "Hybriauth configuration error."
1284
- msgstr ""
1285
-
1286
- #: includes/services/wsl.authentication.php:268
1287
- msgid "Provider not properly configured."
1288
- msgstr ""
1289
-
1290
- #: includes/services/wsl.authentication.php:269
1291
- msgid "Unknown or disabled provider."
1292
- msgstr ""
1293
-
1294
- #: includes/services/wsl.authentication.php:270
1295
- msgid "Missing provider application credentials."
1296
- msgstr ""
1297
-
1298
- #: includes/services/wsl.authentication.php:271
1299
- #, php-format
1300
- msgid ""
1301
- "<b>What does this error mean ?</b><br />Most likely, you didn't setup the "
1302
- "correct application credentials for this provider. These credentials are "
1303
- "required in order for <b>%s</b> users to access your website and for "
1304
- "WordPress Social Login to work."
1305
- msgstr ""
1306
-
1307
- #: includes/services/wsl.authentication.php:271
1308
- msgid ""
1309
- "<br />Instructions for use can be found in the <a href=\"http://hybridauth."
1310
- "sourceforge.net/wsl/configure.html\" target=\"_blank\">User Manual</a>."
1311
- msgstr ""
1312
-
1313
- #: includes/services/wsl.authentication.php:273
1314
- msgid ""
1315
- "Authentification failed. The user has canceled the authentication or the "
1316
- "provider refused the connection."
1317
- msgstr ""
1318
-
1319
- #: includes/services/wsl.authentication.php:274
1320
- msgid ""
1321
- "User profile request failed. Most likely the user is not connected to the "
1322
- "provider and he should to authenticate again."
1323
- msgstr ""
1324
-
1325
- #: includes/services/wsl.authentication.php:277
1326
- msgid "User not connected to the provider."
1327
- msgstr ""
1328
-
1329
- #: includes/services/wsl.authentication.php:280
1330
- msgid "Provider does not support this feature."
1331
- msgstr ""
1332
-
1333
- #: includes/services/wsl.authentication.php:323
1334
- msgid "Something bad happen!"
1335
- msgstr ""
1336
-
1337
- #: includes/services/wsl.authentication.php:389
1338
- msgid ""
1339
- "Note: This message can be disabled from the plugin settings by setting "
1340
- "<b>Development mode</b> to <b>Disabled</b>"
1341
- msgstr ""
1342
-
1343
- #: includes/services/wsl.authentication.php:418
1344
- msgid "Redirecting..."
1345
- msgstr ""
1346
-
1347
- #: includes/services/wsl.authentication.php:447
1348
- #, php-format
1349
- msgid "Contacting <b>%s</b>, please wait..."
1350
- msgstr ""
1351
-
1352
- #: includes/services/wsl.authentication.php:711
1353
- msgid "registration is now closed!"
1354
- msgstr ""
1355
-
1356
- #: includes/services/wsl.authentication.php:733
1357
- #, php-format
1358
- msgid "Unspecified error. #%d"
1359
- msgstr ""
1360
-
1361
- #: includes/services/wsl.authentication.php:882
1362
- msgid "An error occurred while creating a new user!"
1363
- msgstr ""
1364
-
1365
- #: includes/settings/wsl.compatibilities.php:92
1366
- msgid "Almost there, we just need to check a couple of things"
1367
- msgstr ""
1368
-
1369
- #: includes/settings/wsl.compatibilities.php:96
1370
- msgid "Continue"
1371
- msgstr ""
1372
-
1373
- #: includes/settings/wsl.compatibilities.php:108
1374
- msgid "E-mail is not valid!"
1375
- msgstr ""
1376
-
1377
- #: includes/settings/wsl.compatibilities.php:112
1378
- msgid "Username is not valid!"
1379
- msgstr ""
1380
-
1381
- #: includes/settings/wsl.compatibilities.php:116
1382
- msgid "That E-mail is already registered!"
1383
- msgstr ""
1384
-
1385
- #: includes/settings/wsl.compatibilities.php:120
1386
- msgid "That Username is already registered!"
1387
- msgstr ""
1388
-
1389
- #: includes/settings/wsl.compatibilities.php:124
1390
- msgid "You are now connected via"
1391
- msgstr ""
1392
-
1393
- #: includes/settings/wsl.compatibilities.php:140
1394
- msgid "Bouncer says no."
1395
- msgstr ""
1396
-
1397
- #: includes/settings/wsl.compatibilities.php:148
1398
- msgid "Bouncer say he refuses."
1399
- msgstr ""
1400
-
1401
- #: includes/settings/wsl.compatibilities.php:156
1402
- msgid "Bouncer say only Mundo can go where he pleases!"
1403
- msgstr ""
1404
-
1405
- #: includes/settings/wsl.initialization.php:59
1406
- #: includes/settings/wsl.initialization.php:87
1407
- msgid ""
1408
- "An installed plugin is trying to o-ver-write WordPress Social Login config "
1409
- "in a bad way."
1410
- msgstr ""
1411
-
1412
- #: includes/settings/wsl.initialization.php:373
1413
- msgid "WSL user profile"
1414
- msgstr ""
1415
-
1416
- #: includes/settings/wsl.initialization.php:374
1417
- msgid "WSL user contacts"
1418
- msgstr ""
1419
-
1420
- #: includes/settings/wsl.initialization.php:400
1421
- msgid "Profile"
1422
- msgstr ""
1423
-
1424
- #: includes/widgets/wsl.auth.widget.php:124
1425
- msgid ""
1426
- "<strong style=\"color:red;\">WordPress Social Login is not configured yet!</"
1427
- "strong><br />Please visit the <strong>Settings\\ WP Social Login</strong> "
1428
- "administration page to configure this plugin.<br />For more information "
1429
- "please refer to the plugin <a href=\"http://hybridauth.sourceforge.net/"
1430
- "userguide/Plugin_WordPress_Social_Login.html\">online user guide</a> or "
1431
- "contact us at <a href=\"http://hybridauth.sourceforge.net/\">hybridauth."
1432
- "sourceforge.net</a>"
1433
- msgstr ""
1434
-
1435
- #: includes/widgets/wsl.auth.widget.php:293
1436
- msgid "Social networks"
1437
- msgstr ""
1438
-
1439
- #: includes/widgets/wsl.auth.widget.php:300
1440
- msgid "Identity"
1441
- msgstr ""
1442
-
1443
- #: includes/widgets/wsl.auth.widget.php:336
1444
- msgid "Add more identities"
1445
- msgstr ""
1446
-
1447
- #: includes/widgets/wsl.auth.widget.php:375
1448
- msgid "Currently connected to:"
1449
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/wordpress-social-login-es_ES.mo DELETED
Binary file
languages/wordpress-social-login-es_ES.po DELETED
@@ -1,1446 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WordPress Social Login\n"
4
- "POT-Creation-Date: 2013-02-16 06:40+0100\n"
5
- "PO-Revision-Date: 2013-02-16 06:41+0100\n"
6
- "Last-Translator: Miled <hybridauth@gmail.com>\n"
7
- "Language-Team: WordPress Social Login <hybridauth@gmail.com>\n"
8
- "Language: Español - España (es_ES)\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.5.5\n"
13
-
14
- #: includes/admin/wsl.admin.ui.php:332
15
- msgid "Development mode is enabled!"
16
- msgstr ""
17
-
18
- #: includes/admin/wsl.admin.ui.php:407
19
- #: includes/services/wsl.authentication.php:637
20
- msgid "Something wrong!"
21
- msgstr ""
22
-
23
- #: includes/admin/wsl.admin.ui.php:412
24
- msgid ""
25
- "Unknown or Disabled <b>Component</b>! Check the list of enabled components "
26
- "or the typed URL"
27
- msgstr ""
28
-
29
- #: includes/admin/wsl.admin.ui.php:416
30
- msgid ""
31
- "If you believe you've found a problem with <b>WordPress Social Login</b>, be "
32
- "sure to let us know so we can fix it"
33
- msgstr ""
34
-
35
- #: includes/admin/wsl.admin.ui.php:422
36
- msgid "Report as bug"
37
- msgstr ""
38
-
39
- #: includes/admin/wsl.admin.ui.php:423
40
- msgid "Check enabled components"
41
- msgstr ""
42
-
43
- #: includes/admin/wsl.admin.ui.php:567
44
- msgid "Welcome!"
45
- msgstr ""
46
-
47
- #: includes/admin/wsl.admin.ui.php:569
48
- msgid ""
49
- "If you are still new to WordPress Social Login, we have provided a few "
50
- "walkthroughs to get you started"
51
- msgstr ""
52
-
53
- #: includes/admin/wsl.admin.ui.php:576
54
- msgid "Get Started"
55
- msgstr ""
56
-
57
- #: includes/admin/wsl.admin.ui.php:579
58
- msgid ""
59
- "<a href=\"http://hybridauth.sourceforge.net/wsl/configure.html\" target="
60
- "\"_blank\">Setup and Configuration</a>"
61
- msgstr ""
62
-
63
- #: includes/admin/wsl.admin.ui.php:580
64
- msgid ""
65
- "<a href=\"http://hybridauth.sourceforge.net/wsl/customize.html\" target="
66
- "\"_blank\">Customize WSL Widgets</a>"
67
- msgstr ""
68
-
69
- #: includes/admin/wsl.admin.ui.php:581
70
- msgid ""
71
- "<a href=\"http://hybridauth.sourceforge.net/wsl/userdata.html\" target="
72
- "\"_blank\">Manage users and contacts</a>"
73
- msgstr ""
74
-
75
- #: includes/admin/wsl.admin.ui.php:582
76
- msgid ""
77
- "<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
78
- "\">WSL User Guide</a> and <a href=\"http://hybridauth.sourceforge.net/wsl/"
79
- "faq.html\" target=\"_blank\">FAQ</a>"
80
- msgstr ""
81
-
82
- #: includes/admin/wsl.admin.ui.php:588
83
- #, php-format
84
- msgid "What's new on WSL %s"
85
- msgstr ""
86
-
87
- #: includes/admin/wsl.admin.ui.php:591
88
- msgid ""
89
- "In a similar way to WordPress plugins, WSL uses <a href=\"options-general."
90
- "php?page=wordpress-social-login&wslp=components\">Components</a>"
91
- msgstr ""
92
-
93
- #: includes/admin/wsl.admin.ui.php:592
94
- msgid "<b>Email Validation</b> is replaced with <b>Profile Completion</b>"
95
- msgstr ""
96
-
97
- #: includes/admin/wsl.admin.ui.php:593
98
- msgid ""
99
- "<b>User Moderation</b> made compatible with <a href=\"http://wordpress.org/"
100
- "extend/plugins/theme-my-login/\" target=\"_blank\">Theme My Login</a> plugin"
101
- msgstr ""
102
-
103
- #: includes/admin/wsl.admin.ui.php:594
104
- msgid "A number of enhancements and new options now available"
105
- msgstr ""
106
-
107
- #: includes/admin/wsl.admin.ui.php:644
108
- msgid "Contributor License Agreement"
109
- msgstr ""
110
-
111
- #: includes/admin/wsl.admin.ui.php:649
112
- msgid ""
113
- "You are about to submit your contributions to the WordPress Social Login "
114
- "Website to be reviewed for inclusion in future versions"
115
- msgstr ""
116
-
117
- #: includes/admin/wsl.admin.ui.php:651
118
- msgid ""
119
- "You hereby grant the permission to publish your contribution, in whole or in "
120
- "part, and to made it available under the <b>MIT License</b>, for the "
121
- "<b>Wordpress community</b> to, freely use or misuse"
122
- msgstr ""
123
-
124
- #: includes/admin/wsl.admin.ui.php:657
125
- msgid "Hell No"
126
- msgstr ""
127
-
128
- #: includes/admin/wsl.admin.ui.php:658
129
- msgid "Yes, I agree to contribute my translation"
130
- msgstr ""
131
-
132
- #: includes/admin/wsl.admin.ui.php:662
133
- msgid "Help us localize WordPress Social Login"
134
- msgstr "Ayúdanos a traducir esta página"
135
-
136
- #: includes/admin/wsl.admin.ui.php:666
137
- msgid ""
138
- "You can <b>translate as much you pleases</b> as much <b>as you want</b>. You "
139
- "don't have to translate everything in this page, but every word counts. "
140
- "Ignore any string you want or aleardy translated. You could also use this "
141
- "tool to fix any typo you may find or to improve the current language "
142
- "expressions"
143
- msgstr ""
144
-
145
- #: includes/admin/wsl.admin.ui.php:668
146
- msgid ""
147
- "Your name allows us to recognize your contributions and bypass manual "
148
- "review, especially when you've been contributing in the past. So do supply "
149
- "some unique string, even if it's not your real name"
150
- msgstr ""
151
-
152
- #: includes/admin/wsl.admin.ui.php:670
153
- msgid ""
154
- "All the texts on this page are automatically extracted and generated on the "
155
- "form beside. If the translation tool has scapped something you may consider "
156
- "as irrelevant, please leave that particular field empty"
157
- msgstr ""
158
-
159
- #: includes/admin/wsl.admin.ui.php:672
160
- msgid ""
161
- "Your contributions will be sent to the WordPress Social Login website for "
162
- "inclusion in future versions"
163
- msgstr ""
164
-
165
- #: includes/admin/wsl.admin.ui.php:674
166
- msgid "Thanks!"
167
- msgstr ""
168
-
169
- #: includes/admin/wsl.admin.ui.php:682
170
- msgid "Your Name"
171
- msgstr ""
172
-
173
- #: includes/admin/wsl.admin.ui.php:682 includes/admin/wsl.admin.ui.php:688
174
- msgid "optional"
175
- msgstr ""
176
-
177
- #: includes/admin/wsl.admin.ui.php:688
178
- msgid "Comment"
179
- msgstr ""
180
-
181
- #: includes/admin/wsl.admin.ui.php:694
182
- msgid "Target Language"
183
- msgstr ""
184
-
185
- #: includes/admin/wsl.admin.ui.php:703
186
- msgid "Submit changes"
187
- msgstr ""
188
-
189
- #: includes/admin/wsl.admin.ui.php:769
190
- msgid "Help us translate this page into your language"
191
- msgstr "Ayúdanos a traducir esta página"
192
-
193
- #: includes/admin/components/advanced/index.php:47
194
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:62
195
- msgid "Advanced Settings"
196
- msgstr ""
197
-
198
- #: includes/admin/components/advanced/index.php:52
199
- msgid ""
200
- "<b>Please</b> for the love of <b>God</b>, stay out of Advanced.. unless you "
201
- "are Advanced and you know what you are doing"
202
- msgstr ""
203
-
204
- #: includes/admin/components/advanced/index.php:61
205
- msgid "WSL Base URL"
206
- msgstr ""
207
-
208
- #: includes/admin/components/advanced/index.php:68
209
- msgid "WSL Base PATH"
210
- msgstr ""
211
-
212
- #: includes/admin/components/advanced/index.php:75
213
- msgid "Hybridauth endpoint URL"
214
- msgstr ""
215
-
216
- #: includes/admin/components/advanced/index.php:82
217
- msgid "WSL top bar menu"
218
- msgstr ""
219
-
220
- #: includes/admin/components/advanced/index.php:85
221
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:38
222
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:47
223
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:72
224
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:81
225
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:174
226
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:211
227
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:249
228
- msgid "Yes"
229
- msgstr ""
230
-
231
- #: includes/admin/components/advanced/index.php:86
232
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:39
233
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:48
234
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:73
235
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:82
236
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:175
237
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:212
238
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:250
239
- msgid "No"
240
- msgstr ""
241
-
242
- #: includes/admin/components/advanced/index.php:98
243
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:275
244
- #: includes/admin/components/contacts/index.php:98
245
- #: includes/admin/components/diagnostics/index.php:64
246
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:144
247
- #: includes/admin/components/networks/wsl.components.networks.setup.php:271
248
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:40
249
- msgid "Save Settings"
250
- msgstr ""
251
-
252
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:27
253
- msgid "WSL Widget"
254
- msgstr ""
255
-
256
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:31
257
- msgid ""
258
- "Here you can tell Bouncer if you are accepting new users registration and "
259
- "authentication into your website or not any more. Note that Bouncer only "
260
- "works for WSL and will not interfere with users authenticating through the "
261
- "regulars wordpress Login and Register pages with their usernames and "
262
- "passwords (to to achieve that kind of restrictions, you may need to use "
263
- "another plugin(s) in combination with WSL)."
264
- msgstr ""
265
-
266
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:35
267
- msgid "Accept new registration"
268
- msgstr ""
269
-
270
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:44
271
- msgid "Allow authentication"
272
- msgstr ""
273
-
274
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:58
275
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:45
276
- msgid "Profile Completion"
277
- msgstr ""
278
-
279
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:62
280
- msgid ""
281
- "Select required fields. If a social network doesn't return them, Bouncer "
282
- "will then ask your visitors to fill additional form to provide them when "
283
- "registering."
284
- msgstr ""
285
-
286
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:65
287
- msgid ""
288
- "You may activate <b>Profile Completion</b> for both <b>E-mail</b> and "
289
- "<b>Username</b>, but keep in mind, the idea behind <b>social login</b> is to "
290
- "avoid forms and remove all the hassle of registration"
291
- msgstr ""
292
-
293
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:69
294
- msgid "Require E-mail"
295
- msgstr ""
296
-
297
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:78
298
- msgid "Allow Username change"
299
- msgstr ""
300
-
301
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:92
302
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:111
303
- msgid "User Moderation"
304
- msgstr ""
305
-
306
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:96
307
- msgid ""
308
- "<b>User Moderation</b> will define how <b>Bouncer</b> should behave with new "
309
- "regsitred users:"
310
- msgstr ""
311
-
312
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:99
313
- msgid "<b>None</b>: No moderation required."
314
- msgstr ""
315
-
316
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:100
317
- msgid ""
318
- "<b>E-mail Confirmation</b>: New users will need to be confirm their e-mail "
319
- "address before they may log in"
320
- msgstr ""
321
-
322
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:101
323
- msgid ""
324
- "<b>Admin Approval</b>: New users will need to be approved by an "
325
- "administrator before they may log in"
326
- msgstr ""
327
-
328
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:104
329
- msgid ""
330
- "Both <b>Admin Approval</b> and <b>E-mail Confirmation</b> requires <a href="
331
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
332
- "\">Theme My Login</a> plugin to be installed. As there is no point for "
333
- "<b>WordPress Social Login</b> to reinvent the wheel"
334
- msgstr ""
335
-
336
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:107
337
- msgid ""
338
- "<b>User Moderation</b> was purposely made compatible with the <a href="
339
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
340
- "\">Theme My Login</a> for a number reasons: That plugin is good at what he "
341
- "does, a hell of a lot of people are using it and many have asked for it"
342
- msgstr ""
343
-
344
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:114
345
- msgid "None"
346
- msgstr ""
347
-
348
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:115
349
- msgid "E-mail Confirmation &mdash; Yield to Theme My Login plugin"
350
- msgstr ""
351
-
352
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:116
353
- msgid "Admin Approval &mdash; Yield to Theme My Login plugin"
354
- msgstr ""
355
-
356
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:126
357
- msgid "Membership level"
358
- msgstr ""
359
-
360
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:130
361
- msgid ""
362
- "Here you can define the default role for new users authenticating through "
363
- "WSL. The <code>Administrator</code> and <code>Editor</code> roles are not "
364
- "available for safety reasons"
365
- msgstr ""
366
-
367
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:133
368
- msgid ""
369
- "For more information about wordpress users roles and capabilities refer to "
370
- "<a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs."
371
- "_Role_Table\" target=\"_blank\">http://codex.wordpress.org/"
372
- "Roles_and_Capabilities</a>"
373
- msgstr ""
374
-
375
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:136
376
- msgid ""
377
- "If <b>User Moderation</b> is set to <code>Admin Approval</code> then "
378
- "<b>Membership level</b> will be ignored"
379
- msgstr ""
380
-
381
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:140
382
- msgid "New User Default Role"
383
- msgstr ""
384
-
385
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:143
386
- msgid "Safe"
387
- msgstr ""
388
-
389
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:144
390
- msgid "&mdash; Wordpress User Default Role &mdash;"
391
- msgstr ""
392
-
393
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:145
394
- msgid "&mdash; No role for this site &mdash;"
395
- msgstr ""
396
-
397
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:146
398
- msgid "Subscriber"
399
- msgstr ""
400
-
401
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:149
402
- msgid "Be careful with these"
403
- msgstr ""
404
-
405
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:150
406
- msgid "Author"
407
- msgstr ""
408
-
409
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:151
410
- msgid "Contributor"
411
- msgstr ""
412
-
413
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:162
414
- msgid "Filters by emails domains name"
415
- msgstr ""
416
-
417
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:166
418
- msgid "Restrict registration to a limited number of domains name."
419
- msgstr ""
420
-
421
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:167
422
- msgid ""
423
- "Insert one email address per line and try to keep this list short. On "
424
- "<code>Bounce text</code> insert the text you want to display for rejected "
425
- "users. ex: <code>gmail.com</code>, without '@'."
426
- msgstr ""
427
-
428
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:171
429
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:208
430
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:246
431
- #: includes/admin/components/contacts/index.php:51
432
- #: includes/admin/components/contacts/index.php:58
433
- #: includes/admin/components/contacts/index.php:65
434
- #: includes/admin/components/contacts/index.php:72
435
- #: includes/admin/components/contacts/index.php:79
436
- #: includes/admin/components/diagnostics/index.php:61
437
- #: includes/admin/components/networks/wsl.components.networks.setup.php:109
438
- msgid "Enabled"
439
- msgstr ""
440
-
441
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:180
442
- msgid "Domains list"
443
- msgstr ""
444
-
445
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:186
446
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:223
447
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:261
448
- msgid "Bounce text"
449
- msgstr ""
450
-
451
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:199
452
- msgid "Filters by e-mails addresses"
453
- msgstr ""
454
-
455
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:203
456
- msgid "Restrict registration to a limited number of emails addresses."
457
- msgstr ""
458
-
459
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:204
460
- msgid ""
461
- "Insert one email address per line and try to keep this list short. On "
462
- "<code>Bounce text</code> insert the text you want to display for rejected "
463
- "users. ex: <code>hybridauth@gmail.com</code>"
464
- msgstr ""
465
-
466
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:217
467
- msgid "E-mails list"
468
- msgstr ""
469
-
470
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:236
471
- msgid "Filters by profile urls"
472
- msgstr ""
473
-
474
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:240
475
- msgid "Restrict registration to a limited number of profile urls."
476
- msgstr ""
477
-
478
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:241
479
- msgid ""
480
- "<b>Note</b>: If a social network provide the user email, then use 'Filters "
481
- "by e-mails addresses' instead. Providers like Facebook provide multiples "
482
- "profiles URLs per user and WSL won't be able to reconize them."
483
- msgstr ""
484
-
485
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:242
486
- msgid ""
487
- "Insert one email address per line and try to keep this list short. On "
488
- "<code>Bounce text</code> insert the text you want to display for rejected "
489
- "users. ex: <code>http://twitter.com/HybridAuth</code>, <code>https://plus."
490
- "google.com/u/0/108839241301472312344</code>"
491
- msgstr ""
492
-
493
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:255
494
- msgid "Profile urls"
495
- msgstr ""
496
-
497
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:26
498
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:26
499
- msgid "What's This?"
500
- msgstr ""
501
-
502
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:30
503
- msgid "Hey, meet our friend, the Bouncer"
504
- msgstr ""
505
-
506
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:33
507
- msgid ""
508
- "Ever been in trouble with one of <a href=\"http://www.flickr.com/search/?"
509
- "q=bouncer+doorman&z=e\" target=\"_blank\">these guys</a>? Well, this module "
510
- "have more or less the same role, and he will try his best to piss your users "
511
- "off until they meet your requirements."
512
- msgstr ""
513
-
514
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:37
515
- msgid ""
516
- "This feature is most suited for small businesses and folks running a closed-"
517
- "door blog between friends or coworkers."
518
- msgstr ""
519
-
520
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:40
521
- msgid "Available settings"
522
- msgstr ""
523
-
524
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:43
525
- msgid "Enable/Disable Registration"
526
- msgstr ""
527
-
528
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:44
529
- msgid "Enable/Disable Authentication"
530
- msgstr ""
531
-
532
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:46
533
- msgid "Users moderation"
534
- msgstr ""
535
-
536
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:47
537
- msgid "Users roles"
538
- msgstr ""
539
-
540
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:48
541
- msgid "Restrictions (by emails, domains, profiles urls)"
542
- msgstr ""
543
-
544
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:51
545
- msgid "IMPORTANT!"
546
- msgstr ""
547
-
548
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:54
549
- msgid ""
550
- "All the settings on this page without exception are only valid for users "
551
- "authenticating through <b>WordPress Social Login Widget"
552
- msgstr ""
553
-
554
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:57
555
- msgid ""
556
- "Users authenticating through the regulars Wordpress Login and Register pages "
557
- "with their usernames and passwords WILL NOT be affected."
558
- msgstr ""
559
-
560
- #: includes/admin/components/components/wsl.components.help.gallery.php:30
561
- msgid "Other Components available"
562
- msgstr ""
563
-
564
- #: includes/admin/components/components/wsl.components.help.gallery.php:58
565
- msgid "WordPress Social Login for BuddyPress"
566
- msgstr ""
567
-
568
- #: includes/admin/components/components/wsl.components.help.gallery.php:60
569
- msgid "Make WordPress Social Login compatible with BuddyPress"
570
- msgstr ""
571
-
572
- #: includes/admin/components/components/wsl.components.help.gallery.php:61
573
- msgid "Widget integration, xProfiles mapping and more"
574
- msgstr ""
575
-
576
- #: includes/admin/components/components/wsl.components.help.gallery.php:63
577
- msgid "Install Now"
578
- msgstr ""
579
-
580
- #: includes/admin/components/components/wsl.components.help.gallery.php:64
581
- msgid "Visit plugin site"
582
- msgstr ""
583
-
584
- #: includes/admin/components/components/wsl.components.help.gallery.php:69
585
- msgid "Build yours"
586
- msgstr ""
587
-
588
- #: includes/admin/components/components/wsl.components.help.gallery.php:71
589
- msgid ""
590
- "Looking to build your own custom <b>WordPress Social Login</b> extenstion or "
591
- "component? Well, it's pretty easy. Just RTFM :)"
592
- msgstr ""
593
-
594
- #: includes/admin/components/components/wsl.components.help.gallery.php:74
595
- msgid "WSL Developer API"
596
- msgstr ""
597
-
598
- #: includes/admin/components/components/wsl.components.help.gallery.php:75
599
- msgid "WSL on Github"
600
- msgstr ""
601
-
602
- #: includes/admin/components/components/wsl.components.help.setup.php:29
603
- #: includes/admin/components/components/wsl.components.help.setup.php:37
604
- msgid "Component"
605
- msgstr ""
606
-
607
- #: includes/admin/components/components/wsl.components.help.setup.php:30
608
- #: includes/admin/components/components/wsl.components.help.setup.php:38
609
- msgid "Description"
610
- msgstr ""
611
-
612
- #: includes/admin/components/components/wsl.components.help.setup.php:67
613
- msgid "View"
614
- msgstr ""
615
-
616
- #: includes/admin/components/components/wsl.components.help.setup.php:72
617
- msgid "Disable"
618
- msgstr ""
619
-
620
- #: includes/admin/components/components/wsl.components.help.setup.php:74
621
- msgid "Enable"
622
- msgstr ""
623
-
624
- #: includes/admin/components/contacts/index.php:39
625
- msgid "Settings"
626
- msgstr ""
627
-
628
- #: includes/admin/components/contacts/index.php:43
629
- msgid ""
630
- "<b>WordPress Social Login</b> is now introducing <b>Contacts Import</b> as a "
631
- "new feature. When enabled, users authenticating through WordPress Social "
632
- "Login will be asked for the authorisation to import their contact list. Note "
633
- "that some social networks do not provide certains of their users information "
634
- "like contacts emails, photos and or profile urls"
635
- msgstr ""
636
-
637
- #: includes/admin/components/contacts/index.php:45
638
- msgid "Enable contacts import for"
639
- msgstr ""
640
-
641
- #: includes/admin/components/contacts/index.php:52
642
- #: includes/admin/components/contacts/index.php:59
643
- #: includes/admin/components/contacts/index.php:66
644
- #: includes/admin/components/contacts/index.php:73
645
- #: includes/admin/components/contacts/index.php:80
646
- #: includes/admin/components/diagnostics/index.php:62
647
- msgid "Disabled"
648
- msgstr ""
649
-
650
- #: includes/admin/components/contacts/index.php:86
651
- msgid "Notes"
652
- msgstr ""
653
-
654
- #: includes/admin/components/contacts/index.php:88
655
- msgid ""
656
- "To enable contacts import from these social network, you need first to "
657
- "enabled them on the <a href=\"options-general.php?page=wordpress-social-"
658
- "login&wslp=networks\"><b>Networks</b></a> tab and register the required "
659
- "application"
660
- msgstr ""
661
-
662
- #: includes/admin/components/contacts/index.php:89
663
- msgid ""
664
- "<b>WSL</b> will try to import as much information about a user contacts as "
665
- "he was able to pull from the social networks APIs."
666
- msgstr ""
667
-
668
- #: includes/admin/components/contacts/index.php:90
669
- msgid ""
670
- "All contacts data are sotred into your database on the table: "
671
- "<code>`wsluserscontacts`</code>"
672
- msgstr ""
673
-
674
- #: includes/admin/components/contacts/index.php:107
675
- msgid "Users contacts list preview"
676
- msgstr ""
677
-
678
- #: includes/admin/components/contacts/index.php:114
679
- #, php-format
680
- msgid "%s contact's list"
681
- msgstr ""
682
-
683
- #: includes/admin/components/contacts/index.php:121
684
- #: includes/admin/components/contacts/index.php:130
685
- #: includes/widgets/wsl.auth.widget.php:299
686
- msgid "Provider"
687
- msgstr ""
688
-
689
- #: includes/admin/components/contacts/index.php:122
690
- #: includes/admin/components/contacts/index.php:131
691
- msgid "User"
692
- msgstr ""
693
-
694
- #: includes/admin/components/contacts/index.php:123
695
- #: includes/admin/components/contacts/index.php:132
696
- msgid "Contact Name"
697
- msgstr ""
698
-
699
- #: includes/admin/components/contacts/index.php:124
700
- #: includes/admin/components/contacts/index.php:133
701
- msgid "Contact Email"
702
- msgstr ""
703
-
704
- #: includes/admin/components/contacts/index.php:125
705
- #: includes/admin/components/contacts/index.php:134
706
- msgid "Contact Profile Url"
707
- msgstr ""
708
-
709
- #: includes/admin/components/contacts/index.php:150
710
- msgid "No contacts found"
711
- msgstr ""
712
-
713
- #: includes/admin/components/diagnostics/index.php:24
714
- msgid "Requirements test"
715
- msgstr ""
716
-
717
- #: includes/admin/components/diagnostics/index.php:27
718
- msgid ""
719
- "In order for <b>WordPress Social Login</b> to work properly, your server "
720
- "should meet certain requirements. These \"requirements\" <br />and \"services"
721
- "\" are usually offered by default by most \"modern\" web hosting providers, "
722
- "however some complications may <br />occur with <b>shared hosting</b> and, "
723
- "or <b>custom wordpress installations</b>"
724
- msgstr ""
725
-
726
- #: includes/admin/components/diagnostics/index.php:30
727
- msgid "The minimum server requirements are"
728
- msgstr ""
729
-
730
- #: includes/admin/components/diagnostics/index.php:33
731
- msgid "PHP >= 5.2.0 installed"
732
- msgstr ""
733
-
734
- #: includes/admin/components/diagnostics/index.php:34
735
- msgid "WSL Endpoint URLs reachable"
736
- msgstr ""
737
-
738
- #: includes/admin/components/diagnostics/index.php:35
739
- msgid "PHP's default SESSION handling"
740
- msgstr ""
741
-
742
- #: includes/admin/components/diagnostics/index.php:36
743
- msgid "PHP/CURL/SSL Extension enabled"
744
- msgstr ""
745
-
746
- #: includes/admin/components/diagnostics/index.php:37
747
- msgid "PHP/JSON Extension enabled"
748
- msgstr ""
749
-
750
- #: includes/admin/components/diagnostics/index.php:38
751
- msgid "PHP/REGISTER_GLOBALS Off"
752
- msgstr ""
753
-
754
- #: includes/admin/components/diagnostics/index.php:39
755
- msgid "jQuery installed on WordPress backoffice"
756
- msgstr ""
757
-
758
- #: includes/admin/components/diagnostics/index.php:42
759
- msgid ""
760
- "You can run the <b>WordPress Social Login Requirements Test</b> by clicking "
761
- "the button bellow"
762
- msgstr ""
763
-
764
- #: includes/admin/components/diagnostics/index.php:46
765
- msgid "Run the plugin requirements test"
766
- msgstr ""
767
-
768
- #: includes/admin/components/diagnostics/index.php:47
769
- msgid "Website Information"
770
- msgstr ""
771
-
772
- #: includes/admin/components/diagnostics/index.php:53
773
- msgid "Development mode"
774
- msgstr ""
775
-
776
- #: includes/admin/components/diagnostics/index.php:56
777
- msgid ""
778
- "By enabling the development mode, this plugin will try generate and display "
779
- "a technical reports when something goes wrong. <br />This report can help "
780
- "your figure out the root of any issues you may runs into, or you can also "
781
- "send it to the plugin developer. <br />Its recommend to set the Development "
782
- "mode to <b style=\"color:red\">Disabled</b> on production."
783
- msgstr ""
784
-
785
- #: includes/admin/components/help/index.php:25
786
- msgid "Troubleshooting"
787
- msgstr ""
788
-
789
- #: includes/admin/components/help/index.php:27
790
- msgid "WSL Diagnostics"
791
- msgstr ""
792
-
793
- #: includes/admin/components/help/index.php:29
794
- msgid "System information"
795
- msgstr ""
796
-
797
- #: includes/admin/components/help/index.php:32
798
- msgid ""
799
- "If you run into any issue, you can access the <b>WordPress Social Login "
800
- "Diagnostics</b> to check the <b>Plugin Requirements</b> or to enable the "
801
- "<b>Development mode</b>"
802
- msgstr ""
803
-
804
- #: includes/admin/components/help/index.php:35
805
- msgid ""
806
- "Remember to include your System information when posting support requests"
807
- msgstr ""
808
-
809
- #: includes/admin/components/help/index.php:39
810
- msgid "Documentation"
811
- msgstr ""
812
-
813
- #: includes/admin/components/help/index.php:41
814
- msgid ""
815
- "The complete <b>User Guide</b> can be found at\n"
816
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target="
817
- "\"_blank\">hybridauth.sourceforge.net/wsl/index.html</a>"
818
- msgstr ""
819
-
820
- #: includes/admin/components/help/index.php:47
821
- msgid "FAQs"
822
- msgstr ""
823
-
824
- #: includes/admin/components/help/index.php:49
825
- msgid ""
826
- "A list of <b>Frequently asked questions</b> can be found at\n"
827
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/faq.html\" target="
828
- "\"_blank\">hybridauth.sourceforge.net/wsl/faq.html</a>"
829
- msgstr ""
830
-
831
- #: includes/admin/components/help/index.php:55
832
- msgid "Support"
833
- msgstr ""
834
-
835
- #: includes/admin/components/help/index.php:57
836
- msgid ""
837
- "To get help and support refer to <a href=\"http://hybridauth.sourceforge.net/"
838
- "wsl/support.html\" target=\"_blank\">http://hybridauth.sourceforge.net/wsl/"
839
- "support.html</a>"
840
- msgstr ""
841
-
842
- #: includes/admin/components/help/index.php:62
843
- msgid "Credits"
844
- msgstr ""
845
-
846
- #: includes/admin/components/help/index.php:64
847
- msgid ""
848
- "WordPress Social Login was created by <a href=\"http://profiles.wordpress."
849
- "org/miled/\" target=\"_blank\">Mohamed Mrassi</a> (a.k.a Miled) and <a href="
850
- "\"https://github.com/hybridauth/WordPress-Social-Login/graphs/contributors\" "
851
- "target=\"_blank\">contributors</a>"
852
- msgstr ""
853
-
854
- #: includes/admin/components/help/index.php:65
855
- msgid ""
856
- "Many other people have also contributed with <br />constructive discussions, "
857
- "support and by submitting patches"
858
- msgstr ""
859
-
860
- #: includes/admin/components/help/index.php:70
861
- msgid "License"
862
- msgstr ""
863
-
864
- #: includes/admin/components/help/index.php:72
865
- msgid ""
866
- "<b>WordPress Social Login</b> is an open source software licenced under The "
867
- "MIT License (MIT)"
868
- msgstr ""
869
-
870
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:27
871
- msgid "Basic Settings"
872
- msgstr ""
873
-
874
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:32
875
- msgid "Connect with caption"
876
- msgstr ""
877
-
878
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:38
879
- msgid "Social icon set"
880
- msgstr ""
881
-
882
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:41
883
- msgid "WPZOOM social networking icon set"
884
- msgstr ""
885
-
886
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:42
887
- msgid "Icondock vector social media icons"
888
- msgstr ""
889
-
890
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:47
891
- msgid "Users avatars"
892
- msgstr ""
893
-
894
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:50
895
- msgid "Display the default users avatars"
896
- msgstr ""
897
-
898
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:51
899
- msgid "Display users avatars from social networks when available"
900
- msgstr ""
901
-
902
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:67
903
- msgid "Redirect URL"
904
- msgstr ""
905
-
906
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:73
907
- msgid "Authentication flow"
908
- msgstr ""
909
-
910
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:76
911
- msgid "Using popup window"
912
- msgstr ""
913
-
914
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:77
915
- msgid "No popup window"
916
- msgstr ""
917
-
918
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:82
919
- msgid "Widget display"
920
- msgstr ""
921
-
922
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:85
923
- msgid "Display the widget in the comments area, login and register forms"
924
- msgstr ""
925
-
926
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:86
927
- msgid "Display the widget ONLY in the comments area"
928
- msgstr ""
929
-
930
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:87
931
- msgid "Display the widget ONLY in the login form"
932
- msgstr ""
933
-
934
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:92
935
- msgid "Notification"
936
- msgstr ""
937
-
938
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:95
939
- msgid "No notification"
940
- msgstr ""
941
-
942
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:96
943
- msgid "Notify ONLY the blog admin of a new user"
944
- msgstr ""
945
-
946
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:107
947
- msgid "Custom CSS"
948
- msgstr ""
949
-
950
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:112
951
- msgid "Widget CSS"
952
- msgstr ""
953
-
954
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:114
955
- msgid ""
956
- "To customize the default widget styles you can either: edit the css file "
957
- "<strong>/wordpress-social-login/assets/css/style.css</strong>, or change it "
958
- "from this text area"
959
- msgstr ""
960
-
961
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:118
962
- msgid "The basic widget markup is the following"
963
- msgstr ""
964
-
965
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:30
966
- msgid "Widget Customization"
967
- msgstr ""
968
-
969
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:33
970
- msgid ""
971
- "On this section you can fully customize <b>WordPress Social Login Widget</b> "
972
- "and define the way you want it to look and behave"
973
- msgstr ""
974
-
975
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:37
976
- msgid ""
977
- "<b>WordPress Social Login Widget</b> will be generated into the comments, "
978
- "login and register forms enabling your website vistors and customers to "
979
- "login via social networks"
980
- msgstr ""
981
-
982
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:41
983
- msgid ""
984
- "If this widget does not show up on your custom theme or you want to add it "
985
- "somewhere else then refer to the next section"
986
- msgstr ""
987
-
988
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:44
989
- msgid "Custom integration"
990
- msgstr ""
991
-
992
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:47
993
- msgid ""
994
- "If you want to add the social login widget to another location in your "
995
- "theme, you can insert the following code in that location"
996
- msgstr ""
997
-
998
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:49
999
- msgid "Or, for posts and pages"
1000
- msgstr ""
1001
-
1002
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:54
1003
- msgid ""
1004
- "<b>[wordpress_social_login]</b> shortcode can be used in combination with <a "
1005
- "href=\"http://wordpress.org/extend/plugins/html-javascript-adder/\" target="
1006
- "\"_blank\">HTML Javascript Adder</a> plugin to be add WSL Widget to your "
1007
- "website sidebar"
1008
- msgstr ""
1009
-
1010
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:58
1011
- msgid ""
1012
- "Also, if you are a developer or designer then you can customize it to your "
1013
- "heart's content. For more inofmation refer to <b><a href=\"http://hybridauth."
1014
- "sourceforge.net/wsl/customize.html\" target=\"_blank\">User Guide</a></b>"
1015
- msgstr ""
1016
-
1017
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:61
1018
- msgid "Widget preview"
1019
- msgstr ""
1020
-
1021
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:64
1022
- msgid "This is a preview of what should be on the comments area"
1023
- msgstr ""
1024
-
1025
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:65
1026
- msgid "Do not test it here"
1027
- msgstr ""
1028
-
1029
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:24
1030
- msgid ""
1031
- "And you could add even more of them, <b>Just Click</b> and we will guide you "
1032
- "through"
1033
- msgstr ""
1034
-
1035
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:48
1036
- msgid "Well! none left."
1037
- msgstr ""
1038
-
1039
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:36
1040
- msgid "Insights"
1041
- msgstr ""
1042
-
1043
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:40
1044
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:49
1045
- msgid "Conversions"
1046
- msgstr ""
1047
-
1048
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:43
1049
- msgid "WP users"
1050
- msgstr ""
1051
-
1052
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:46
1053
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:77
1054
- msgid "WSL users"
1055
- msgstr ""
1056
-
1057
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:59
1058
- msgid "By provider"
1059
- msgstr ""
1060
-
1061
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:85
1062
- msgid "By gender"
1063
- msgstr ""
1064
-
1065
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:108
1066
- msgid "By age"
1067
- msgstr ""
1068
-
1069
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:139
1070
- msgid "yrs in average"
1071
- msgstr ""
1072
-
1073
- #: includes/admin/components/networks/wsl.components.networks.setup.php:126
1074
- msgid "Application ID"
1075
- msgstr ""
1076
-
1077
- #: includes/admin/components/networks/wsl.components.networks.setup.php:128
1078
- #: includes/admin/components/networks/wsl.components.networks.setup.php:134
1079
- #: includes/admin/components/networks/wsl.components.networks.setup.php:140
1080
- msgid "Where do I get this info?"
1081
- msgstr ""
1082
-
1083
- #: includes/admin/components/networks/wsl.components.networks.setup.php:132
1084
- msgid "Application Key"
1085
- msgstr ""
1086
-
1087
- #: includes/admin/components/networks/wsl.components.networks.setup.php:138
1088
- msgid "Application Secret"
1089
- msgstr ""
1090
-
1091
- #: includes/admin/components/networks/wsl.components.networks.setup.php:149
1092
- msgid "Note"
1093
- msgstr ""
1094
-
1095
- #: includes/admin/components/networks/wsl.components.networks.setup.php:151
1096
- #, php-format
1097
- msgid ""
1098
- "<b>%s</b> do not provide their user's email address and by default a random "
1099
- "email will then be generated for them instead"
1100
- msgstr ""
1101
-
1102
- #: includes/admin/components/networks/wsl.components.networks.setup.php:153
1103
- msgid ""
1104
- "To change this behaviour and to force new registered users to provide their "
1105
- "emails before they get in, goto <b><a href=\"options-general.php?"
1106
- "page=wordpress-social-login&wslp=bouncer\">Bouncer</a></b> and enable "
1107
- "<b>Profile Completion</b>"
1108
- msgstr ""
1109
-
1110
- #: includes/admin/components/networks/wsl.components.networks.setup.php:163
1111
- msgid ""
1112
- "<span style=\"color:#CB4B16;\">Application</span> id and secret (also "
1113
- "sometimes referred as <span style=\"color:#CB4B16;\">Customer</span> key and "
1114
- "secret or <span style=\"color:#CB4B16;\">Client</span> id and secret) are "
1115
- "what we call an application credentials"
1116
- msgstr ""
1117
-
1118
- #: includes/admin/components/networks/wsl.components.networks.setup.php:165
1119
- #, php-format
1120
- msgid ""
1121
- "This application will link your website <code>%s</code> to <code>%s API</"
1122
- "code> and these credentials are needed in order for <b>%s</b> users to "
1123
- "access your website"
1124
- msgstr ""
1125
-
1126
- #: includes/admin/components/networks/wsl.components.networks.setup.php:168
1127
- msgid ""
1128
- "These credentials may also differ in format, name and content depending on "
1129
- "the social network."
1130
- msgstr ""
1131
-
1132
- #: includes/admin/components/networks/wsl.components.networks.setup.php:172
1133
- #, php-format
1134
- msgid ""
1135
- "To enable authentication with this provider and to register a new <b>%s API "
1136
- "Application</b>, carefully follow the steps"
1137
- msgstr ""
1138
-
1139
- #: includes/admin/components/networks/wsl.components.networks.setup.php:175
1140
- #, php-format
1141
- msgid "<b>Done.</b> Nothing more required for <b>%s</b>"
1142
- msgstr ""
1143
-
1144
- #: includes/admin/components/networks/wsl.components.networks.setup.php:259
1145
- msgid "And that's it!"
1146
- msgstr ""
1147
-
1148
- #: includes/admin/components/networks/wsl.components.networks.setup.php:261
1149
- #, php-format
1150
- msgid ""
1151
- "If for some reason you still can't figure it out, first try to a) <a class="
1152
- "\"button-primary\" href=\"https://www.google.com/search?q=%s API create "
1153
- "application\" target=\"_blank\">Google it</a>, then check it on b) <a class="
1154
- "\"button-primary\" href=\"http://www.youtube.com/results?search_query=%s API "
1155
- "create application \" target=\"_blank\">Youtube</a> and if nothing works c) "
1156
- "<a class=\"button-primary\" href=\"options-general.php?page=wordpress-social-"
1157
- "login&wslp=help\">ask for support</a>"
1158
- msgstr ""
1159
-
1160
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:21
1161
- msgid "Why, hello there"
1162
- msgstr ""
1163
-
1164
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:29
1165
- msgid ""
1166
- "If you are still new to things, we recommend that you read the <b><a href="
1167
- "\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
1168
- "\">Plugin User Guide</a></b> and to make sure your server settings meet this "
1169
- "<b><a href=\"options-general.php?page=wordpress-social-login&amp;"
1170
- "wslp=diagnostics\">Plugin Requirements</a></b>"
1171
- msgstr ""
1172
-
1173
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:32
1174
- msgid ""
1175
- "If you run into any issue then refer to <b><a href=\"options-general.php?"
1176
- "page=wordpress-social-login&wslp=help\">Help & Support</a></b> to konw how "
1177
- "to reach me"
1178
- msgstr ""
1179
-
1180
- #: includes/admin/components/users/wsl.components.users.list.php:30
1181
- #: includes/admin/components/users/wsl.components.users.list.php:41
1182
- msgid "Providers"
1183
- msgstr ""
1184
-
1185
- #: includes/admin/components/users/wsl.components.users.list.php:31
1186
- #: includes/admin/components/users/wsl.components.users.list.php:42
1187
- #: includes/settings/wsl.compatibilities.php:104
1188
- msgid "Username"
1189
- msgstr ""
1190
-
1191
- #: includes/admin/components/users/wsl.components.users.list.php:32
1192
- #: includes/admin/components/users/wsl.components.users.list.php:43
1193
- msgid "Full Name"
1194
- msgstr ""
1195
-
1196
- #: includes/admin/components/users/wsl.components.users.list.php:33
1197
- #: includes/admin/components/users/wsl.components.users.list.php:44
1198
- #: includes/settings/wsl.compatibilities.php:100
1199
- msgid "E-mail"
1200
- msgstr ""
1201
-
1202
- #: includes/admin/components/users/wsl.components.users.list.php:34
1203
- #: includes/admin/components/users/wsl.components.users.list.php:45
1204
- msgid "Profile URL"
1205
- msgstr ""
1206
-
1207
- #: includes/admin/components/users/wsl.components.users.list.php:35
1208
- #: includes/admin/components/users/wsl.components.users.list.php:46
1209
- #: includes/settings/wsl.initialization.php:400
1210
- msgid "Contacts"
1211
- msgstr ""
1212
-
1213
- #: includes/admin/components/users/wsl.components.users.list.php:36
1214
- #: includes/admin/components/users/wsl.components.users.list.php:47
1215
- msgid "Actions"
1216
- msgstr ""
1217
-
1218
- #: includes/admin/components/users/wsl.components.users.list.php:55
1219
- msgid "No users found"
1220
- msgstr ""
1221
-
1222
- #: includes/admin/components/users/wsl.components.users.profile.php:22
1223
- msgid "USER DOES NOT EXIST!"
1224
- msgstr ""
1225
-
1226
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1227
- msgid "User Profile"
1228
- msgstr ""
1229
-
1230
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1231
- #, php-format
1232
- msgid "as provided by %s"
1233
- msgstr ""
1234
-
1235
- #: includes/services/wsl.authentication.php:64
1236
- msgid "Bouncer say don't be silly!"
1237
- msgstr ""
1238
-
1239
- #: includes/services/wsl.authentication.php:70
1240
- msgid "Bouncer say this makes no sense."
1241
- msgstr ""
1242
-
1243
- #: includes/services/wsl.authentication.php:77
1244
- msgid "WSL is disabled!"
1245
- msgstr ""
1246
-
1247
- #: includes/services/wsl.authentication.php:99
1248
- msgid "Bouncer says this makes no sense."
1249
- msgstr ""
1250
-
1251
- #: includes/services/wsl.authentication.php:107
1252
- msgid "Bouncer say you are doin it wrong."
1253
- msgstr ""
1254
-
1255
- #: includes/services/wsl.authentication.php:114
1256
- msgid "You are already logged in as <b>%</b>."
1257
- msgstr ""
1258
-
1259
- #: includes/services/wsl.authentication.php:119
1260
- #: includes/services/wsl.authentication.php:559
1261
- msgid ""
1262
- "Error: Another plugin seems to be using HybridAuth Library and made "
1263
- "WordPress Social Login unusable. We recommand to find this plugin and to "
1264
- "kill it with fire!"
1265
- msgstr ""
1266
-
1267
- #: includes/services/wsl.authentication.php:130
1268
- msgid "Unknown or disabled provider"
1269
- msgstr ""
1270
-
1271
- #: includes/services/wsl.authentication.php:262
1272
- msgid "Unspecified error!"
1273
- msgstr ""
1274
-
1275
- #: includes/services/wsl.authentication.php:266
1276
- msgid "Unspecified error."
1277
- msgstr ""
1278
-
1279
- #: includes/services/wsl.authentication.php:267
1280
- msgid "Hybriauth configuration error."
1281
- msgstr ""
1282
-
1283
- #: includes/services/wsl.authentication.php:268
1284
- msgid "Provider not properly configured."
1285
- msgstr ""
1286
-
1287
- #: includes/services/wsl.authentication.php:269
1288
- msgid "Unknown or disabled provider."
1289
- msgstr ""
1290
-
1291
- #: includes/services/wsl.authentication.php:270
1292
- msgid "Missing provider application credentials."
1293
- msgstr ""
1294
-
1295
- #: includes/services/wsl.authentication.php:271
1296
- #, php-format
1297
- msgid ""
1298
- "<b>What does this error mean ?</b><br />Most likely, you didn't setup the "
1299
- "correct application credentials for this provider. These credentials are "
1300
- "required in order for <b>%s</b> users to access your website and for "
1301
- "WordPress Social Login to work."
1302
- msgstr ""
1303
-
1304
- #: includes/services/wsl.authentication.php:271
1305
- msgid ""
1306
- "<br />Instructions for use can be found in the <a href=\"http://hybridauth."
1307
- "sourceforge.net/wsl/configure.html\" target=\"_blank\">User Manual</a>."
1308
- msgstr ""
1309
-
1310
- #: includes/services/wsl.authentication.php:273
1311
- msgid ""
1312
- "Authentification failed. The user has canceled the authentication or the "
1313
- "provider refused the connection."
1314
- msgstr ""
1315
-
1316
- #: includes/services/wsl.authentication.php:274
1317
- msgid ""
1318
- "User profile request failed. Most likely the user is not connected to the "
1319
- "provider and he should to authenticate again."
1320
- msgstr ""
1321
-
1322
- #: includes/services/wsl.authentication.php:277
1323
- msgid "User not connected to the provider."
1324
- msgstr ""
1325
-
1326
- #: includes/services/wsl.authentication.php:280
1327
- msgid "Provider does not support this feature."
1328
- msgstr ""
1329
-
1330
- #: includes/services/wsl.authentication.php:323
1331
- msgid "Something bad happen!"
1332
- msgstr ""
1333
-
1334
- #: includes/services/wsl.authentication.php:389
1335
- msgid ""
1336
- "Note: This message can be disabled from the plugin settings by setting "
1337
- "<b>Development mode</b> to <b>Disabled</b>"
1338
- msgstr ""
1339
-
1340
- #: includes/services/wsl.authentication.php:418
1341
- msgid "Redirecting..."
1342
- msgstr ""
1343
-
1344
- #: includes/services/wsl.authentication.php:447
1345
- #, php-format
1346
- msgid "Contacting <b>%s</b>, please wait..."
1347
- msgstr ""
1348
-
1349
- #: includes/services/wsl.authentication.php:711
1350
- msgid "registration is now closed!"
1351
- msgstr ""
1352
-
1353
- #: includes/services/wsl.authentication.php:733
1354
- #, php-format
1355
- msgid "Unspecified error. #%d"
1356
- msgstr ""
1357
-
1358
- #: includes/services/wsl.authentication.php:882
1359
- msgid "An error occurred while creating a new user!"
1360
- msgstr ""
1361
-
1362
- #: includes/settings/wsl.compatibilities.php:92
1363
- msgid "Almost there, we just need to check a couple of things"
1364
- msgstr ""
1365
-
1366
- #: includes/settings/wsl.compatibilities.php:96
1367
- msgid "Continue"
1368
- msgstr ""
1369
-
1370
- #: includes/settings/wsl.compatibilities.php:108
1371
- msgid "E-mail is not valid!"
1372
- msgstr ""
1373
-
1374
- #: includes/settings/wsl.compatibilities.php:112
1375
- msgid "Username is not valid!"
1376
- msgstr ""
1377
-
1378
- #: includes/settings/wsl.compatibilities.php:116
1379
- msgid "That E-mail is already registered!"
1380
- msgstr ""
1381
-
1382
- #: includes/settings/wsl.compatibilities.php:120
1383
- msgid "That Username is already registered!"
1384
- msgstr ""
1385
-
1386
- #: includes/settings/wsl.compatibilities.php:124
1387
- msgid "You are now connected via"
1388
- msgstr ""
1389
-
1390
- #: includes/settings/wsl.compatibilities.php:140
1391
- msgid "Bouncer says no."
1392
- msgstr ""
1393
-
1394
- #: includes/settings/wsl.compatibilities.php:148
1395
- msgid "Bouncer say he refuses."
1396
- msgstr ""
1397
-
1398
- #: includes/settings/wsl.compatibilities.php:156
1399
- msgid "Bouncer say only Mundo can go where he pleases!"
1400
- msgstr ""
1401
-
1402
- #: includes/settings/wsl.initialization.php:59
1403
- #: includes/settings/wsl.initialization.php:87
1404
- msgid ""
1405
- "An installed plugin is trying to o-ver-write WordPress Social Login config "
1406
- "in a bad way."
1407
- msgstr ""
1408
-
1409
- #: includes/settings/wsl.initialization.php:373
1410
- msgid "WSL user profile"
1411
- msgstr ""
1412
-
1413
- #: includes/settings/wsl.initialization.php:374
1414
- msgid "WSL user contacts"
1415
- msgstr ""
1416
-
1417
- #: includes/settings/wsl.initialization.php:400
1418
- msgid "Profile"
1419
- msgstr ""
1420
-
1421
- #: includes/widgets/wsl.auth.widget.php:124
1422
- msgid ""
1423
- "<strong style=\"color:red;\">WordPress Social Login is not configured yet!</"
1424
- "strong><br />Please visit the <strong>Settings\\ WP Social Login</strong> "
1425
- "administration page to configure this plugin.<br />For more information "
1426
- "please refer to the plugin <a href=\"http://hybridauth.sourceforge.net/"
1427
- "userguide/Plugin_WordPress_Social_Login.html\">online user guide</a> or "
1428
- "contact us at <a href=\"http://hybridauth.sourceforge.net/\">hybridauth."
1429
- "sourceforge.net</a>"
1430
- msgstr ""
1431
-
1432
- #: includes/widgets/wsl.auth.widget.php:293
1433
- msgid "Social networks"
1434
- msgstr ""
1435
-
1436
- #: includes/widgets/wsl.auth.widget.php:300
1437
- msgid "Identity"
1438
- msgstr ""
1439
-
1440
- #: includes/widgets/wsl.auth.widget.php:336
1441
- msgid "Add more identities"
1442
- msgstr ""
1443
-
1444
- #: includes/widgets/wsl.auth.widget.php:375
1445
- msgid "Currently connected to:"
1446
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/wordpress-social-login-fr_FR.mo DELETED
Binary file
languages/wordpress-social-login-fr_FR.po DELETED
@@ -1,1446 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WordPress Social Login\n"
4
- "POT-Creation-Date: 2013-02-16 06:40+0100\n"
5
- "PO-Revision-Date: 2013-02-16 06:41+0100\n"
6
- "Last-Translator: Miled <hybridauth@gmail.com>\n"
7
- "Language-Team: WordPress Social Login <hybridauth@gmail.com>\n"
8
- "Language: English\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.5.5\n"
13
-
14
- #: includes/admin/wsl.admin.ui.php:332
15
- msgid "Development mode is enabled!"
16
- msgstr ""
17
-
18
- #: includes/admin/wsl.admin.ui.php:407
19
- #: includes/services/wsl.authentication.php:637
20
- msgid "Something wrong!"
21
- msgstr ""
22
-
23
- #: includes/admin/wsl.admin.ui.php:412
24
- msgid ""
25
- "Unknown or Disabled <b>Component</b>! Check the list of enabled components "
26
- "or the typed URL"
27
- msgstr ""
28
-
29
- #: includes/admin/wsl.admin.ui.php:416
30
- msgid ""
31
- "If you believe you've found a problem with <b>WordPress Social Login</b>, be "
32
- "sure to let us know so we can fix it"
33
- msgstr ""
34
-
35
- #: includes/admin/wsl.admin.ui.php:422
36
- msgid "Report as bug"
37
- msgstr ""
38
-
39
- #: includes/admin/wsl.admin.ui.php:423
40
- msgid "Check enabled components"
41
- msgstr ""
42
-
43
- #: includes/admin/wsl.admin.ui.php:567
44
- msgid "Welcome!"
45
- msgstr "Bienvenue!"
46
-
47
- #: includes/admin/wsl.admin.ui.php:569
48
- msgid ""
49
- "If you are still new to WordPress Social Login, we have provided a few "
50
- "walkthroughs to get you started"
51
- msgstr ""
52
-
53
- #: includes/admin/wsl.admin.ui.php:576
54
- msgid "Get Started"
55
- msgstr ""
56
-
57
- #: includes/admin/wsl.admin.ui.php:579
58
- msgid ""
59
- "<a href=\"http://hybridauth.sourceforge.net/wsl/configure.html\" target="
60
- "\"_blank\">Setup and Configuration</a>"
61
- msgstr ""
62
-
63
- #: includes/admin/wsl.admin.ui.php:580
64
- msgid ""
65
- "<a href=\"http://hybridauth.sourceforge.net/wsl/customize.html\" target="
66
- "\"_blank\">Customize WSL Widgets</a>"
67
- msgstr ""
68
-
69
- #: includes/admin/wsl.admin.ui.php:581
70
- msgid ""
71
- "<a href=\"http://hybridauth.sourceforge.net/wsl/userdata.html\" target="
72
- "\"_blank\">Manage users and contacts</a>"
73
- msgstr ""
74
-
75
- #: includes/admin/wsl.admin.ui.php:582
76
- msgid ""
77
- "<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
78
- "\">WSL User Guide</a> and <a href=\"http://hybridauth.sourceforge.net/wsl/"
79
- "faq.html\" target=\"_blank\">FAQ</a>"
80
- msgstr ""
81
-
82
- #: includes/admin/wsl.admin.ui.php:588
83
- #, php-format
84
- msgid "What's new on WSL %s"
85
- msgstr ""
86
-
87
- #: includes/admin/wsl.admin.ui.php:591
88
- msgid ""
89
- "In a similar way to WordPress plugins, WSL uses <a href=\"options-general."
90
- "php?page=wordpress-social-login&wslp=components\">Components</a>"
91
- msgstr ""
92
-
93
- #: includes/admin/wsl.admin.ui.php:592
94
- msgid "<b>Email Validation</b> is replaced with <b>Profile Completion</b>"
95
- msgstr ""
96
-
97
- #: includes/admin/wsl.admin.ui.php:593
98
- msgid ""
99
- "<b>User Moderation</b> made compatible with <a href=\"http://wordpress.org/"
100
- "extend/plugins/theme-my-login/\" target=\"_blank\">Theme My Login</a> plugin"
101
- msgstr ""
102
-
103
- #: includes/admin/wsl.admin.ui.php:594
104
- msgid "A number of enhancements and new options now available"
105
- msgstr ""
106
-
107
- #: includes/admin/wsl.admin.ui.php:644
108
- msgid "Contributor License Agreement"
109
- msgstr ""
110
-
111
- #: includes/admin/wsl.admin.ui.php:649
112
- msgid ""
113
- "You are about to submit your contributions to the WordPress Social Login "
114
- "Website to be reviewed for inclusion in future versions"
115
- msgstr ""
116
-
117
- #: includes/admin/wsl.admin.ui.php:651
118
- msgid ""
119
- "You hereby grant the permission to publish your contribution, in whole or in "
120
- "part, and to made it available under the <b>MIT License</b>, for the "
121
- "<b>Wordpress community</b> to, freely use or misuse"
122
- msgstr ""
123
-
124
- #: includes/admin/wsl.admin.ui.php:657
125
- msgid "Hell No"
126
- msgstr ""
127
-
128
- #: includes/admin/wsl.admin.ui.php:658
129
- msgid "Yes, I agree to contribute my translation"
130
- msgstr ""
131
-
132
- #: includes/admin/wsl.admin.ui.php:662
133
- msgid "Help us localize WordPress Social Login"
134
- msgstr "Aidez-nous à traduire WordPress Social Login"
135
-
136
- #: includes/admin/wsl.admin.ui.php:666
137
- msgid ""
138
- "You can <b>translate as much you pleases</b> as much <b>as you want</b>. You "
139
- "don't have to translate everything in this page, but every word counts. "
140
- "Ignore any string you want or aleardy translated. You could also use this "
141
- "tool to fix any typo you may find or to improve the current language "
142
- "expressions"
143
- msgstr ""
144
-
145
- #: includes/admin/wsl.admin.ui.php:668
146
- msgid ""
147
- "Your name allows us to recognize your contributions and bypass manual "
148
- "review, especially when you've been contributing in the past. So do supply "
149
- "some unique string, even if it's not your real name"
150
- msgstr ""
151
-
152
- #: includes/admin/wsl.admin.ui.php:670
153
- msgid ""
154
- "All the texts on this page are automatically extracted and generated on the "
155
- "form beside. If the translation tool has scapped something you may consider "
156
- "as irrelevant, please leave that particular field empty"
157
- msgstr ""
158
-
159
- #: includes/admin/wsl.admin.ui.php:672
160
- msgid ""
161
- "Your contributions will be sent to the WordPress Social Login website for "
162
- "inclusion in future versions"
163
- msgstr ""
164
-
165
- #: includes/admin/wsl.admin.ui.php:674
166
- msgid "Thanks!"
167
- msgstr ""
168
-
169
- #: includes/admin/wsl.admin.ui.php:682
170
- msgid "Your Name"
171
- msgstr ""
172
-
173
- #: includes/admin/wsl.admin.ui.php:682 includes/admin/wsl.admin.ui.php:688
174
- msgid "optional"
175
- msgstr ""
176
-
177
- #: includes/admin/wsl.admin.ui.php:688
178
- msgid "Comment"
179
- msgstr ""
180
-
181
- #: includes/admin/wsl.admin.ui.php:694
182
- msgid "Target Language"
183
- msgstr ""
184
-
185
- #: includes/admin/wsl.admin.ui.php:703
186
- msgid "Submit changes"
187
- msgstr ""
188
-
189
- #: includes/admin/wsl.admin.ui.php:769
190
- msgid "Help us translate this page into your language"
191
- msgstr "Aidez-nous à traduire cette page"
192
-
193
- #: includes/admin/components/advanced/index.php:47
194
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:62
195
- msgid "Advanced Settings"
196
- msgstr ""
197
-
198
- #: includes/admin/components/advanced/index.php:52
199
- msgid ""
200
- "<b>Please</b> for the love of <b>God</b>, stay out of Advanced.. unless you "
201
- "are Advanced and you know what you are doing"
202
- msgstr ""
203
-
204
- #: includes/admin/components/advanced/index.php:61
205
- msgid "WSL Base URL"
206
- msgstr ""
207
-
208
- #: includes/admin/components/advanced/index.php:68
209
- msgid "WSL Base PATH"
210
- msgstr ""
211
-
212
- #: includes/admin/components/advanced/index.php:75
213
- msgid "Hybridauth endpoint URL"
214
- msgstr ""
215
-
216
- #: includes/admin/components/advanced/index.php:82
217
- msgid "WSL top bar menu"
218
- msgstr ""
219
-
220
- #: includes/admin/components/advanced/index.php:85
221
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:38
222
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:47
223
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:72
224
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:81
225
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:174
226
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:211
227
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:249
228
- msgid "Yes"
229
- msgstr ""
230
-
231
- #: includes/admin/components/advanced/index.php:86
232
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:39
233
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:48
234
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:73
235
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:82
236
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:175
237
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:212
238
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:250
239
- msgid "No"
240
- msgstr ""
241
-
242
- #: includes/admin/components/advanced/index.php:98
243
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:275
244
- #: includes/admin/components/contacts/index.php:98
245
- #: includes/admin/components/diagnostics/index.php:64
246
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:144
247
- #: includes/admin/components/networks/wsl.components.networks.setup.php:271
248
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:40
249
- msgid "Save Settings"
250
- msgstr ""
251
-
252
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:27
253
- msgid "WSL Widget"
254
- msgstr ""
255
-
256
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:31
257
- msgid ""
258
- "Here you can tell Bouncer if you are accepting new users registration and "
259
- "authentication into your website or not any more. Note that Bouncer only "
260
- "works for WSL and will not interfere with users authenticating through the "
261
- "regulars wordpress Login and Register pages with their usernames and "
262
- "passwords (to to achieve that kind of restrictions, you may need to use "
263
- "another plugin(s) in combination with WSL)."
264
- msgstr ""
265
-
266
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:35
267
- msgid "Accept new registration"
268
- msgstr ""
269
-
270
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:44
271
- msgid "Allow authentication"
272
- msgstr ""
273
-
274
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:58
275
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:45
276
- msgid "Profile Completion"
277
- msgstr ""
278
-
279
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:62
280
- msgid ""
281
- "Select required fields. If a social network doesn't return them, Bouncer "
282
- "will then ask your visitors to fill additional form to provide them when "
283
- "registering."
284
- msgstr ""
285
-
286
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:65
287
- msgid ""
288
- "You may activate <b>Profile Completion</b> for both <b>E-mail</b> and "
289
- "<b>Username</b>, but keep in mind, the idea behind <b>social login</b> is to "
290
- "avoid forms and remove all the hassle of registration"
291
- msgstr ""
292
-
293
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:69
294
- msgid "Require E-mail"
295
- msgstr ""
296
-
297
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:78
298
- msgid "Allow Username change"
299
- msgstr ""
300
-
301
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:92
302
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:111
303
- msgid "User Moderation"
304
- msgstr ""
305
-
306
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:96
307
- msgid ""
308
- "<b>User Moderation</b> will define how <b>Bouncer</b> should behave with new "
309
- "regsitred users:"
310
- msgstr ""
311
-
312
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:99
313
- msgid "<b>None</b>: No moderation required."
314
- msgstr ""
315
-
316
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:100
317
- msgid ""
318
- "<b>E-mail Confirmation</b>: New users will need to be confirm their e-mail "
319
- "address before they may log in"
320
- msgstr ""
321
-
322
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:101
323
- msgid ""
324
- "<b>Admin Approval</b>: New users will need to be approved by an "
325
- "administrator before they may log in"
326
- msgstr ""
327
-
328
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:104
329
- msgid ""
330
- "Both <b>Admin Approval</b> and <b>E-mail Confirmation</b> requires <a href="
331
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
332
- "\">Theme My Login</a> plugin to be installed. As there is no point for "
333
- "<b>WordPress Social Login</b> to reinvent the wheel"
334
- msgstr ""
335
-
336
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:107
337
- msgid ""
338
- "<b>User Moderation</b> was purposely made compatible with the <a href="
339
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
340
- "\">Theme My Login</a> for a number reasons: That plugin is good at what he "
341
- "does, a hell of a lot of people are using it and many have asked for it"
342
- msgstr ""
343
-
344
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:114
345
- msgid "None"
346
- msgstr ""
347
-
348
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:115
349
- msgid "E-mail Confirmation &mdash; Yield to Theme My Login plugin"
350
- msgstr ""
351
-
352
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:116
353
- msgid "Admin Approval &mdash; Yield to Theme My Login plugin"
354
- msgstr ""
355
-
356
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:126
357
- msgid "Membership level"
358
- msgstr ""
359
-
360
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:130
361
- msgid ""
362
- "Here you can define the default role for new users authenticating through "
363
- "WSL. The <code>Administrator</code> and <code>Editor</code> roles are not "
364
- "available for safety reasons"
365
- msgstr ""
366
-
367
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:133
368
- msgid ""
369
- "For more information about wordpress users roles and capabilities refer to "
370
- "<a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs."
371
- "_Role_Table\" target=\"_blank\">http://codex.wordpress.org/"
372
- "Roles_and_Capabilities</a>"
373
- msgstr ""
374
-
375
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:136
376
- msgid ""
377
- "If <b>User Moderation</b> is set to <code>Admin Approval</code> then "
378
- "<b>Membership level</b> will be ignored"
379
- msgstr ""
380
-
381
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:140
382
- msgid "New User Default Role"
383
- msgstr ""
384
-
385
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:143
386
- msgid "Safe"
387
- msgstr ""
388
-
389
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:144
390
- msgid "&mdash; Wordpress User Default Role &mdash;"
391
- msgstr ""
392
-
393
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:145
394
- msgid "&mdash; No role for this site &mdash;"
395
- msgstr ""
396
-
397
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:146
398
- msgid "Subscriber"
399
- msgstr ""
400
-
401
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:149
402
- msgid "Be careful with these"
403
- msgstr ""
404
-
405
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:150
406
- msgid "Author"
407
- msgstr ""
408
-
409
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:151
410
- msgid "Contributor"
411
- msgstr ""
412
-
413
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:162
414
- msgid "Filters by emails domains name"
415
- msgstr ""
416
-
417
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:166
418
- msgid "Restrict registration to a limited number of domains name."
419
- msgstr ""
420
-
421
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:167
422
- msgid ""
423
- "Insert one email address per line and try to keep this list short. On "
424
- "<code>Bounce text</code> insert the text you want to display for rejected "
425
- "users. ex: <code>gmail.com</code>, without '@'."
426
- msgstr ""
427
-
428
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:171
429
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:208
430
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:246
431
- #: includes/admin/components/contacts/index.php:51
432
- #: includes/admin/components/contacts/index.php:58
433
- #: includes/admin/components/contacts/index.php:65
434
- #: includes/admin/components/contacts/index.php:72
435
- #: includes/admin/components/contacts/index.php:79
436
- #: includes/admin/components/diagnostics/index.php:61
437
- #: includes/admin/components/networks/wsl.components.networks.setup.php:109
438
- msgid "Enabled"
439
- msgstr ""
440
-
441
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:180
442
- msgid "Domains list"
443
- msgstr ""
444
-
445
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:186
446
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:223
447
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:261
448
- msgid "Bounce text"
449
- msgstr ""
450
-
451
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:199
452
- msgid "Filters by e-mails addresses"
453
- msgstr ""
454
-
455
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:203
456
- msgid "Restrict registration to a limited number of emails addresses."
457
- msgstr ""
458
-
459
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:204
460
- msgid ""
461
- "Insert one email address per line and try to keep this list short. On "
462
- "<code>Bounce text</code> insert the text you want to display for rejected "
463
- "users. ex: <code>hybridauth@gmail.com</code>"
464
- msgstr ""
465
-
466
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:217
467
- msgid "E-mails list"
468
- msgstr ""
469
-
470
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:236
471
- msgid "Filters by profile urls"
472
- msgstr ""
473
-
474
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:240
475
- msgid "Restrict registration to a limited number of profile urls."
476
- msgstr ""
477
-
478
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:241
479
- msgid ""
480
- "<b>Note</b>: If a social network provide the user email, then use 'Filters "
481
- "by e-mails addresses' instead. Providers like Facebook provide multiples "
482
- "profiles URLs per user and WSL won't be able to reconize them."
483
- msgstr ""
484
-
485
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:242
486
- msgid ""
487
- "Insert one email address per line and try to keep this list short. On "
488
- "<code>Bounce text</code> insert the text you want to display for rejected "
489
- "users. ex: <code>http://twitter.com/HybridAuth</code>, <code>https://plus."
490
- "google.com/u/0/108839241301472312344</code>"
491
- msgstr ""
492
-
493
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:255
494
- msgid "Profile urls"
495
- msgstr ""
496
-
497
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:26
498
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:26
499
- msgid "What's This?"
500
- msgstr ""
501
-
502
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:30
503
- msgid "Hey, meet our friend, the Bouncer"
504
- msgstr ""
505
-
506
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:33
507
- msgid ""
508
- "Ever been in trouble with one of <a href=\"http://www.flickr.com/search/?"
509
- "q=bouncer+doorman&z=e\" target=\"_blank\">these guys</a>? Well, this module "
510
- "have more or less the same role, and he will try his best to piss your users "
511
- "off until they meet your requirements."
512
- msgstr ""
513
-
514
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:37
515
- msgid ""
516
- "This feature is most suited for small businesses and folks running a closed-"
517
- "door blog between friends or coworkers."
518
- msgstr ""
519
-
520
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:40
521
- msgid "Available settings"
522
- msgstr ""
523
-
524
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:43
525
- msgid "Enable/Disable Registration"
526
- msgstr ""
527
-
528
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:44
529
- msgid "Enable/Disable Authentication"
530
- msgstr ""
531
-
532
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:46
533
- msgid "Users moderation"
534
- msgstr ""
535
-
536
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:47
537
- msgid "Users roles"
538
- msgstr ""
539
-
540
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:48
541
- msgid "Restrictions (by emails, domains, profiles urls)"
542
- msgstr ""
543
-
544
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:51
545
- msgid "IMPORTANT!"
546
- msgstr ""
547
-
548
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:54
549
- msgid ""
550
- "All the settings on this page without exception are only valid for users "
551
- "authenticating through <b>WordPress Social Login Widget"
552
- msgstr ""
553
-
554
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:57
555
- msgid ""
556
- "Users authenticating through the regulars Wordpress Login and Register pages "
557
- "with their usernames and passwords WILL NOT be affected."
558
- msgstr ""
559
-
560
- #: includes/admin/components/components/wsl.components.help.gallery.php:30
561
- msgid "Other Components available"
562
- msgstr ""
563
-
564
- #: includes/admin/components/components/wsl.components.help.gallery.php:58
565
- msgid "WordPress Social Login for BuddyPress"
566
- msgstr ""
567
-
568
- #: includes/admin/components/components/wsl.components.help.gallery.php:60
569
- msgid "Make WordPress Social Login compatible with BuddyPress"
570
- msgstr ""
571
-
572
- #: includes/admin/components/components/wsl.components.help.gallery.php:61
573
- msgid "Widget integration, xProfiles mapping and more"
574
- msgstr ""
575
-
576
- #: includes/admin/components/components/wsl.components.help.gallery.php:63
577
- msgid "Install Now"
578
- msgstr ""
579
-
580
- #: includes/admin/components/components/wsl.components.help.gallery.php:64
581
- msgid "Visit plugin site"
582
- msgstr ""
583
-
584
- #: includes/admin/components/components/wsl.components.help.gallery.php:69
585
- msgid "Build yours"
586
- msgstr ""
587
-
588
- #: includes/admin/components/components/wsl.components.help.gallery.php:71
589
- msgid ""
590
- "Looking to build your own custom <b>WordPress Social Login</b> extenstion or "
591
- "component? Well, it's pretty easy. Just RTFM :)"
592
- msgstr ""
593
-
594
- #: includes/admin/components/components/wsl.components.help.gallery.php:74
595
- msgid "WSL Developer API"
596
- msgstr ""
597
-
598
- #: includes/admin/components/components/wsl.components.help.gallery.php:75
599
- msgid "WSL on Github"
600
- msgstr ""
601
-
602
- #: includes/admin/components/components/wsl.components.help.setup.php:29
603
- #: includes/admin/components/components/wsl.components.help.setup.php:37
604
- msgid "Component"
605
- msgstr ""
606
-
607
- #: includes/admin/components/components/wsl.components.help.setup.php:30
608
- #: includes/admin/components/components/wsl.components.help.setup.php:38
609
- msgid "Description"
610
- msgstr ""
611
-
612
- #: includes/admin/components/components/wsl.components.help.setup.php:67
613
- msgid "View"
614
- msgstr ""
615
-
616
- #: includes/admin/components/components/wsl.components.help.setup.php:72
617
- msgid "Disable"
618
- msgstr ""
619
-
620
- #: includes/admin/components/components/wsl.components.help.setup.php:74
621
- msgid "Enable"
622
- msgstr ""
623
-
624
- #: includes/admin/components/contacts/index.php:39
625
- msgid "Settings"
626
- msgstr ""
627
-
628
- #: includes/admin/components/contacts/index.php:43
629
- msgid ""
630
- "<b>WordPress Social Login</b> is now introducing <b>Contacts Import</b> as a "
631
- "new feature. When enabled, users authenticating through WordPress Social "
632
- "Login will be asked for the authorisation to import their contact list. Note "
633
- "that some social networks do not provide certains of their users information "
634
- "like contacts emails, photos and or profile urls"
635
- msgstr ""
636
-
637
- #: includes/admin/components/contacts/index.php:45
638
- msgid "Enable contacts import for"
639
- msgstr ""
640
-
641
- #: includes/admin/components/contacts/index.php:52
642
- #: includes/admin/components/contacts/index.php:59
643
- #: includes/admin/components/contacts/index.php:66
644
- #: includes/admin/components/contacts/index.php:73
645
- #: includes/admin/components/contacts/index.php:80
646
- #: includes/admin/components/diagnostics/index.php:62
647
- msgid "Disabled"
648
- msgstr ""
649
-
650
- #: includes/admin/components/contacts/index.php:86
651
- msgid "Notes"
652
- msgstr ""
653
-
654
- #: includes/admin/components/contacts/index.php:88
655
- msgid ""
656
- "To enable contacts import from these social network, you need first to "
657
- "enabled them on the <a href=\"options-general.php?page=wordpress-social-"
658
- "login&wslp=networks\"><b>Networks</b></a> tab and register the required "
659
- "application"
660
- msgstr ""
661
-
662
- #: includes/admin/components/contacts/index.php:89
663
- msgid ""
664
- "<b>WSL</b> will try to import as much information about a user contacts as "
665
- "he was able to pull from the social networks APIs."
666
- msgstr ""
667
-
668
- #: includes/admin/components/contacts/index.php:90
669
- msgid ""
670
- "All contacts data are sotred into your database on the table: "
671
- "<code>`wsluserscontacts`</code>"
672
- msgstr ""
673
-
674
- #: includes/admin/components/contacts/index.php:107
675
- msgid "Users contacts list preview"
676
- msgstr ""
677
-
678
- #: includes/admin/components/contacts/index.php:114
679
- #, php-format
680
- msgid "%s contact's list"
681
- msgstr ""
682
-
683
- #: includes/admin/components/contacts/index.php:121
684
- #: includes/admin/components/contacts/index.php:130
685
- #: includes/widgets/wsl.auth.widget.php:299
686
- msgid "Provider"
687
- msgstr ""
688
-
689
- #: includes/admin/components/contacts/index.php:122
690
- #: includes/admin/components/contacts/index.php:131
691
- msgid "User"
692
- msgstr ""
693
-
694
- #: includes/admin/components/contacts/index.php:123
695
- #: includes/admin/components/contacts/index.php:132
696
- msgid "Contact Name"
697
- msgstr ""
698
-
699
- #: includes/admin/components/contacts/index.php:124
700
- #: includes/admin/components/contacts/index.php:133
701
- msgid "Contact Email"
702
- msgstr ""
703
-
704
- #: includes/admin/components/contacts/index.php:125
705
- #: includes/admin/components/contacts/index.php:134
706
- msgid "Contact Profile Url"
707
- msgstr ""
708
-
709
- #: includes/admin/components/contacts/index.php:150
710
- msgid "No contacts found"
711
- msgstr ""
712
-
713
- #: includes/admin/components/diagnostics/index.php:24
714
- msgid "Requirements test"
715
- msgstr ""
716
-
717
- #: includes/admin/components/diagnostics/index.php:27
718
- msgid ""
719
- "In order for <b>WordPress Social Login</b> to work properly, your server "
720
- "should meet certain requirements. These \"requirements\" <br />and \"services"
721
- "\" are usually offered by default by most \"modern\" web hosting providers, "
722
- "however some complications may <br />occur with <b>shared hosting</b> and, "
723
- "or <b>custom wordpress installations</b>"
724
- msgstr ""
725
-
726
- #: includes/admin/components/diagnostics/index.php:30
727
- msgid "The minimum server requirements are"
728
- msgstr ""
729
-
730
- #: includes/admin/components/diagnostics/index.php:33
731
- msgid "PHP >= 5.2.0 installed"
732
- msgstr ""
733
-
734
- #: includes/admin/components/diagnostics/index.php:34
735
- msgid "WSL Endpoint URLs reachable"
736
- msgstr ""
737
-
738
- #: includes/admin/components/diagnostics/index.php:35
739
- msgid "PHP's default SESSION handling"
740
- msgstr ""
741
-
742
- #: includes/admin/components/diagnostics/index.php:36
743
- msgid "PHP/CURL/SSL Extension enabled"
744
- msgstr ""
745
-
746
- #: includes/admin/components/diagnostics/index.php:37
747
- msgid "PHP/JSON Extension enabled"
748
- msgstr ""
749
-
750
- #: includes/admin/components/diagnostics/index.php:38
751
- msgid "PHP/REGISTER_GLOBALS Off"
752
- msgstr ""
753
-
754
- #: includes/admin/components/diagnostics/index.php:39
755
- msgid "jQuery installed on WordPress backoffice"
756
- msgstr ""
757
-
758
- #: includes/admin/components/diagnostics/index.php:42
759
- msgid ""
760
- "You can run the <b>WordPress Social Login Requirements Test</b> by clicking "
761
- "the button bellow"
762
- msgstr ""
763
-
764
- #: includes/admin/components/diagnostics/index.php:46
765
- msgid "Run the plugin requirements test"
766
- msgstr ""
767
-
768
- #: includes/admin/components/diagnostics/index.php:47
769
- msgid "Website Information"
770
- msgstr ""
771
-
772
- #: includes/admin/components/diagnostics/index.php:53
773
- msgid "Development mode"
774
- msgstr ""
775
-
776
- #: includes/admin/components/diagnostics/index.php:56
777
- msgid ""
778
- "By enabling the development mode, this plugin will try generate and display "
779
- "a technical reports when something goes wrong. <br />This report can help "
780
- "your figure out the root of any issues you may runs into, or you can also "
781
- "send it to the plugin developer. <br />Its recommend to set the Development "
782
- "mode to <b style=\"color:red\">Disabled</b> on production."
783
- msgstr ""
784
-
785
- #: includes/admin/components/help/index.php:25
786
- msgid "Troubleshooting"
787
- msgstr ""
788
-
789
- #: includes/admin/components/help/index.php:27
790
- msgid "WSL Diagnostics"
791
- msgstr ""
792
-
793
- #: includes/admin/components/help/index.php:29
794
- msgid "System information"
795
- msgstr ""
796
-
797
- #: includes/admin/components/help/index.php:32
798
- msgid ""
799
- "If you run into any issue, you can access the <b>WordPress Social Login "
800
- "Diagnostics</b> to check the <b>Plugin Requirements</b> or to enable the "
801
- "<b>Development mode</b>"
802
- msgstr ""
803
-
804
- #: includes/admin/components/help/index.php:35
805
- msgid ""
806
- "Remember to include your System information when posting support requests"
807
- msgstr ""
808
-
809
- #: includes/admin/components/help/index.php:39
810
- msgid "Documentation"
811
- msgstr ""
812
-
813
- #: includes/admin/components/help/index.php:41
814
- msgid ""
815
- "The complete <b>User Guide</b> can be found at\n"
816
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target="
817
- "\"_blank\">hybridauth.sourceforge.net/wsl/index.html</a>"
818
- msgstr ""
819
-
820
- #: includes/admin/components/help/index.php:47
821
- msgid "FAQs"
822
- msgstr ""
823
-
824
- #: includes/admin/components/help/index.php:49
825
- msgid ""
826
- "A list of <b>Frequently asked questions</b> can be found at\n"
827
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/faq.html\" target="
828
- "\"_blank\">hybridauth.sourceforge.net/wsl/faq.html</a>"
829
- msgstr ""
830
-
831
- #: includes/admin/components/help/index.php:55
832
- msgid "Support"
833
- msgstr ""
834
-
835
- #: includes/admin/components/help/index.php:57
836
- msgid ""
837
- "To get help and support refer to <a href=\"http://hybridauth.sourceforge.net/"
838
- "wsl/support.html\" target=\"_blank\">http://hybridauth.sourceforge.net/wsl/"
839
- "support.html</a>"
840
- msgstr ""
841
-
842
- #: includes/admin/components/help/index.php:62
843
- msgid "Credits"
844
- msgstr ""
845
-
846
- #: includes/admin/components/help/index.php:64
847
- msgid ""
848
- "WordPress Social Login was created by <a href=\"http://profiles.wordpress."
849
- "org/miled/\" target=\"_blank\">Mohamed Mrassi</a> (a.k.a Miled) and <a href="
850
- "\"https://github.com/hybridauth/WordPress-Social-Login/graphs/contributors\" "
851
- "target=\"_blank\">contributors</a>"
852
- msgstr ""
853
-
854
- #: includes/admin/components/help/index.php:65
855
- msgid ""
856
- "Many other people have also contributed with <br />constructive discussions, "
857
- "support and by submitting patches"
858
- msgstr ""
859
-
860
- #: includes/admin/components/help/index.php:70
861
- msgid "License"
862
- msgstr ""
863
-
864
- #: includes/admin/components/help/index.php:72
865
- msgid ""
866
- "<b>WordPress Social Login</b> is an open source software licenced under The "
867
- "MIT License (MIT)"
868
- msgstr ""
869
-
870
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:27
871
- msgid "Basic Settings"
872
- msgstr ""
873
-
874
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:32
875
- msgid "Connect with caption"
876
- msgstr ""
877
-
878
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:38
879
- msgid "Social icon set"
880
- msgstr ""
881
-
882
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:41
883
- msgid "WPZOOM social networking icon set"
884
- msgstr ""
885
-
886
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:42
887
- msgid "Icondock vector social media icons"
888
- msgstr ""
889
-
890
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:47
891
- msgid "Users avatars"
892
- msgstr ""
893
-
894
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:50
895
- msgid "Display the default users avatars"
896
- msgstr ""
897
-
898
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:51
899
- msgid "Display users avatars from social networks when available"
900
- msgstr ""
901
-
902
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:67
903
- msgid "Redirect URL"
904
- msgstr ""
905
-
906
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:73
907
- msgid "Authentication flow"
908
- msgstr ""
909
-
910
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:76
911
- msgid "Using popup window"
912
- msgstr ""
913
-
914
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:77
915
- msgid "No popup window"
916
- msgstr ""
917
-
918
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:82
919
- msgid "Widget display"
920
- msgstr ""
921
-
922
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:85
923
- msgid "Display the widget in the comments area, login and register forms"
924
- msgstr ""
925
-
926
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:86
927
- msgid "Display the widget ONLY in the comments area"
928
- msgstr ""
929
-
930
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:87
931
- msgid "Display the widget ONLY in the login form"
932
- msgstr ""
933
-
934
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:92
935
- msgid "Notification"
936
- msgstr ""
937
-
938
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:95
939
- msgid "No notification"
940
- msgstr ""
941
-
942
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:96
943
- msgid "Notify ONLY the blog admin of a new user"
944
- msgstr ""
945
-
946
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:107
947
- msgid "Custom CSS"
948
- msgstr ""
949
-
950
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:112
951
- msgid "Widget CSS"
952
- msgstr ""
953
-
954
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:114
955
- msgid ""
956
- "To customize the default widget styles you can either: edit the css file "
957
- "<strong>/wordpress-social-login/assets/css/style.css</strong>, or change it "
958
- "from this text area"
959
- msgstr ""
960
-
961
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:118
962
- msgid "The basic widget markup is the following"
963
- msgstr ""
964
-
965
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:30
966
- msgid "Widget Customization"
967
- msgstr ""
968
-
969
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:33
970
- msgid ""
971
- "On this section you can fully customize <b>WordPress Social Login Widget</b> "
972
- "and define the way you want it to look and behave"
973
- msgstr ""
974
-
975
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:37
976
- msgid ""
977
- "<b>WordPress Social Login Widget</b> will be generated into the comments, "
978
- "login and register forms enabling your website vistors and customers to "
979
- "login via social networks"
980
- msgstr ""
981
-
982
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:41
983
- msgid ""
984
- "If this widget does not show up on your custom theme or you want to add it "
985
- "somewhere else then refer to the next section"
986
- msgstr ""
987
-
988
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:44
989
- msgid "Custom integration"
990
- msgstr ""
991
-
992
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:47
993
- msgid ""
994
- "If you want to add the social login widget to another location in your "
995
- "theme, you can insert the following code in that location"
996
- msgstr ""
997
-
998
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:49
999
- msgid "Or, for posts and pages"
1000
- msgstr ""
1001
-
1002
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:54
1003
- msgid ""
1004
- "<b>[wordpress_social_login]</b> shortcode can be used in combination with <a "
1005
- "href=\"http://wordpress.org/extend/plugins/html-javascript-adder/\" target="
1006
- "\"_blank\">HTML Javascript Adder</a> plugin to be add WSL Widget to your "
1007
- "website sidebar"
1008
- msgstr ""
1009
-
1010
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:58
1011
- msgid ""
1012
- "Also, if you are a developer or designer then you can customize it to your "
1013
- "heart's content. For more inofmation refer to <b><a href=\"http://hybridauth."
1014
- "sourceforge.net/wsl/customize.html\" target=\"_blank\">User Guide</a></b>"
1015
- msgstr ""
1016
-
1017
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:61
1018
- msgid "Widget preview"
1019
- msgstr ""
1020
-
1021
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:64
1022
- msgid "This is a preview of what should be on the comments area"
1023
- msgstr ""
1024
-
1025
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:65
1026
- msgid "Do not test it here"
1027
- msgstr ""
1028
-
1029
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:24
1030
- msgid ""
1031
- "And you could add even more of them, <b>Just Click</b> and we will guide you "
1032
- "through"
1033
- msgstr ""
1034
-
1035
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:48
1036
- msgid "Well! none left."
1037
- msgstr ""
1038
-
1039
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:36
1040
- msgid "Insights"
1041
- msgstr ""
1042
-
1043
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:40
1044
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:49
1045
- msgid "Conversions"
1046
- msgstr ""
1047
-
1048
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:43
1049
- msgid "WP users"
1050
- msgstr ""
1051
-
1052
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:46
1053
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:77
1054
- msgid "WSL users"
1055
- msgstr ""
1056
-
1057
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:59
1058
- msgid "By provider"
1059
- msgstr ""
1060
-
1061
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:85
1062
- msgid "By gender"
1063
- msgstr ""
1064
-
1065
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:108
1066
- msgid "By age"
1067
- msgstr ""
1068
-
1069
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:139
1070
- msgid "yrs in average"
1071
- msgstr ""
1072
-
1073
- #: includes/admin/components/networks/wsl.components.networks.setup.php:126
1074
- msgid "Application ID"
1075
- msgstr ""
1076
-
1077
- #: includes/admin/components/networks/wsl.components.networks.setup.php:128
1078
- #: includes/admin/components/networks/wsl.components.networks.setup.php:134
1079
- #: includes/admin/components/networks/wsl.components.networks.setup.php:140
1080
- msgid "Where do I get this info?"
1081
- msgstr ""
1082
-
1083
- #: includes/admin/components/networks/wsl.components.networks.setup.php:132
1084
- msgid "Application Key"
1085
- msgstr ""
1086
-
1087
- #: includes/admin/components/networks/wsl.components.networks.setup.php:138
1088
- msgid "Application Secret"
1089
- msgstr ""
1090
-
1091
- #: includes/admin/components/networks/wsl.components.networks.setup.php:149
1092
- msgid "Note"
1093
- msgstr ""
1094
-
1095
- #: includes/admin/components/networks/wsl.components.networks.setup.php:151
1096
- #, php-format
1097
- msgid ""
1098
- "<b>%s</b> do not provide their user's email address and by default a random "
1099
- "email will then be generated for them instead"
1100
- msgstr ""
1101
-
1102
- #: includes/admin/components/networks/wsl.components.networks.setup.php:153
1103
- msgid ""
1104
- "To change this behaviour and to force new registered users to provide their "
1105
- "emails before they get in, goto <b><a href=\"options-general.php?"
1106
- "page=wordpress-social-login&wslp=bouncer\">Bouncer</a></b> and enable "
1107
- "<b>Profile Completion</b>"
1108
- msgstr ""
1109
-
1110
- #: includes/admin/components/networks/wsl.components.networks.setup.php:163
1111
- msgid ""
1112
- "<span style=\"color:#CB4B16;\">Application</span> id and secret (also "
1113
- "sometimes referred as <span style=\"color:#CB4B16;\">Customer</span> key and "
1114
- "secret or <span style=\"color:#CB4B16;\">Client</span> id and secret) are "
1115
- "what we call an application credentials"
1116
- msgstr ""
1117
-
1118
- #: includes/admin/components/networks/wsl.components.networks.setup.php:165
1119
- #, php-format
1120
- msgid ""
1121
- "This application will link your website <code>%s</code> to <code>%s API</"
1122
- "code> and these credentials are needed in order for <b>%s</b> users to "
1123
- "access your website"
1124
- msgstr ""
1125
-
1126
- #: includes/admin/components/networks/wsl.components.networks.setup.php:168
1127
- msgid ""
1128
- "These credentials may also differ in format, name and content depending on "
1129
- "the social network."
1130
- msgstr ""
1131
-
1132
- #: includes/admin/components/networks/wsl.components.networks.setup.php:172
1133
- #, php-format
1134
- msgid ""
1135
- "To enable authentication with this provider and to register a new <b>%s API "
1136
- "Application</b>, carefully follow the steps"
1137
- msgstr ""
1138
-
1139
- #: includes/admin/components/networks/wsl.components.networks.setup.php:175
1140
- #, php-format
1141
- msgid "<b>Done.</b> Nothing more required for <b>%s</b>"
1142
- msgstr ""
1143
-
1144
- #: includes/admin/components/networks/wsl.components.networks.setup.php:259
1145
- msgid "And that's it!"
1146
- msgstr ""
1147
-
1148
- #: includes/admin/components/networks/wsl.components.networks.setup.php:261
1149
- #, php-format
1150
- msgid ""
1151
- "If for some reason you still can't figure it out, first try to a) <a class="
1152
- "\"button-primary\" href=\"https://www.google.com/search?q=%s API create "
1153
- "application\" target=\"_blank\">Google it</a>, then check it on b) <a class="
1154
- "\"button-primary\" href=\"http://www.youtube.com/results?search_query=%s API "
1155
- "create application \" target=\"_blank\">Youtube</a> and if nothing works c) "
1156
- "<a class=\"button-primary\" href=\"options-general.php?page=wordpress-social-"
1157
- "login&wslp=help\">ask for support</a>"
1158
- msgstr ""
1159
-
1160
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:21
1161
- msgid "Why, hello there"
1162
- msgstr ""
1163
-
1164
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:29
1165
- msgid ""
1166
- "If you are still new to things, we recommend that you read the <b><a href="
1167
- "\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
1168
- "\">Plugin User Guide</a></b> and to make sure your server settings meet this "
1169
- "<b><a href=\"options-general.php?page=wordpress-social-login&amp;"
1170
- "wslp=diagnostics\">Plugin Requirements</a></b>"
1171
- msgstr ""
1172
-
1173
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:32
1174
- msgid ""
1175
- "If you run into any issue then refer to <b><a href=\"options-general.php?"
1176
- "page=wordpress-social-login&wslp=help\">Help & Support</a></b> to konw how "
1177
- "to reach me"
1178
- msgstr ""
1179
-
1180
- #: includes/admin/components/users/wsl.components.users.list.php:30
1181
- #: includes/admin/components/users/wsl.components.users.list.php:41
1182
- msgid "Providers"
1183
- msgstr ""
1184
-
1185
- #: includes/admin/components/users/wsl.components.users.list.php:31
1186
- #: includes/admin/components/users/wsl.components.users.list.php:42
1187
- #: includes/settings/wsl.compatibilities.php:104
1188
- msgid "Username"
1189
- msgstr ""
1190
-
1191
- #: includes/admin/components/users/wsl.components.users.list.php:32
1192
- #: includes/admin/components/users/wsl.components.users.list.php:43
1193
- msgid "Full Name"
1194
- msgstr ""
1195
-
1196
- #: includes/admin/components/users/wsl.components.users.list.php:33
1197
- #: includes/admin/components/users/wsl.components.users.list.php:44
1198
- #: includes/settings/wsl.compatibilities.php:100
1199
- msgid "E-mail"
1200
- msgstr ""
1201
-
1202
- #: includes/admin/components/users/wsl.components.users.list.php:34
1203
- #: includes/admin/components/users/wsl.components.users.list.php:45
1204
- msgid "Profile URL"
1205
- msgstr ""
1206
-
1207
- #: includes/admin/components/users/wsl.components.users.list.php:35
1208
- #: includes/admin/components/users/wsl.components.users.list.php:46
1209
- #: includes/settings/wsl.initialization.php:400
1210
- msgid "Contacts"
1211
- msgstr ""
1212
-
1213
- #: includes/admin/components/users/wsl.components.users.list.php:36
1214
- #: includes/admin/components/users/wsl.components.users.list.php:47
1215
- msgid "Actions"
1216
- msgstr ""
1217
-
1218
- #: includes/admin/components/users/wsl.components.users.list.php:55
1219
- msgid "No users found"
1220
- msgstr ""
1221
-
1222
- #: includes/admin/components/users/wsl.components.users.profile.php:22
1223
- msgid "USER DOES NOT EXIST!"
1224
- msgstr ""
1225
-
1226
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1227
- msgid "User Profile"
1228
- msgstr ""
1229
-
1230
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1231
- #, php-format
1232
- msgid "as provided by %s"
1233
- msgstr ""
1234
-
1235
- #: includes/services/wsl.authentication.php:64
1236
- msgid "Bouncer say don't be silly!"
1237
- msgstr ""
1238
-
1239
- #: includes/services/wsl.authentication.php:70
1240
- msgid "Bouncer say this makes no sense."
1241
- msgstr ""
1242
-
1243
- #: includes/services/wsl.authentication.php:77
1244
- msgid "WSL is disabled!"
1245
- msgstr ""
1246
-
1247
- #: includes/services/wsl.authentication.php:99
1248
- msgid "Bouncer says this makes no sense."
1249
- msgstr ""
1250
-
1251
- #: includes/services/wsl.authentication.php:107
1252
- msgid "Bouncer say you are doin it wrong."
1253
- msgstr ""
1254
-
1255
- #: includes/services/wsl.authentication.php:114
1256
- msgid "You are already logged in as <b>%</b>."
1257
- msgstr ""
1258
-
1259
- #: includes/services/wsl.authentication.php:119
1260
- #: includes/services/wsl.authentication.php:559
1261
- msgid ""
1262
- "Error: Another plugin seems to be using HybridAuth Library and made "
1263
- "WordPress Social Login unusable. We recommand to find this plugin and to "
1264
- "kill it with fire!"
1265
- msgstr ""
1266
-
1267
- #: includes/services/wsl.authentication.php:130
1268
- msgid "Unknown or disabled provider"
1269
- msgstr ""
1270
-
1271
- #: includes/services/wsl.authentication.php:262
1272
- msgid "Unspecified error!"
1273
- msgstr ""
1274
-
1275
- #: includes/services/wsl.authentication.php:266
1276
- msgid "Unspecified error."
1277
- msgstr ""
1278
-
1279
- #: includes/services/wsl.authentication.php:267
1280
- msgid "Hybriauth configuration error."
1281
- msgstr ""
1282
-
1283
- #: includes/services/wsl.authentication.php:268
1284
- msgid "Provider not properly configured."
1285
- msgstr ""
1286
-
1287
- #: includes/services/wsl.authentication.php:269
1288
- msgid "Unknown or disabled provider."
1289
- msgstr ""
1290
-
1291
- #: includes/services/wsl.authentication.php:270
1292
- msgid "Missing provider application credentials."
1293
- msgstr ""
1294
-
1295
- #: includes/services/wsl.authentication.php:271
1296
- #, php-format
1297
- msgid ""
1298
- "<b>What does this error mean ?</b><br />Most likely, you didn't setup the "
1299
- "correct application credentials for this provider. These credentials are "
1300
- "required in order for <b>%s</b> users to access your website and for "
1301
- "WordPress Social Login to work."
1302
- msgstr ""
1303
-
1304
- #: includes/services/wsl.authentication.php:271
1305
- msgid ""
1306
- "<br />Instructions for use can be found in the <a href=\"http://hybridauth."
1307
- "sourceforge.net/wsl/configure.html\" target=\"_blank\">User Manual</a>."
1308
- msgstr ""
1309
-
1310
- #: includes/services/wsl.authentication.php:273
1311
- msgid ""
1312
- "Authentification failed. The user has canceled the authentication or the "
1313
- "provider refused the connection."
1314
- msgstr ""
1315
-
1316
- #: includes/services/wsl.authentication.php:274
1317
- msgid ""
1318
- "User profile request failed. Most likely the user is not connected to the "
1319
- "provider and he should to authenticate again."
1320
- msgstr ""
1321
-
1322
- #: includes/services/wsl.authentication.php:277
1323
- msgid "User not connected to the provider."
1324
- msgstr ""
1325
-
1326
- #: includes/services/wsl.authentication.php:280
1327
- msgid "Provider does not support this feature."
1328
- msgstr ""
1329
-
1330
- #: includes/services/wsl.authentication.php:323
1331
- msgid "Something bad happen!"
1332
- msgstr ""
1333
-
1334
- #: includes/services/wsl.authentication.php:389
1335
- msgid ""
1336
- "Note: This message can be disabled from the plugin settings by setting "
1337
- "<b>Development mode</b> to <b>Disabled</b>"
1338
- msgstr ""
1339
-
1340
- #: includes/services/wsl.authentication.php:418
1341
- msgid "Redirecting..."
1342
- msgstr ""
1343
-
1344
- #: includes/services/wsl.authentication.php:447
1345
- #, php-format
1346
- msgid "Contacting <b>%s</b>, please wait..."
1347
- msgstr ""
1348
-
1349
- #: includes/services/wsl.authentication.php:711
1350
- msgid "registration is now closed!"
1351
- msgstr ""
1352
-
1353
- #: includes/services/wsl.authentication.php:733
1354
- #, php-format
1355
- msgid "Unspecified error. #%d"
1356
- msgstr ""
1357
-
1358
- #: includes/services/wsl.authentication.php:882
1359
- msgid "An error occurred while creating a new user!"
1360
- msgstr ""
1361
-
1362
- #: includes/settings/wsl.compatibilities.php:92
1363
- msgid "Almost there, we just need to check a couple of things"
1364
- msgstr ""
1365
-
1366
- #: includes/settings/wsl.compatibilities.php:96
1367
- msgid "Continue"
1368
- msgstr ""
1369
-
1370
- #: includes/settings/wsl.compatibilities.php:108
1371
- msgid "E-mail is not valid!"
1372
- msgstr ""
1373
-
1374
- #: includes/settings/wsl.compatibilities.php:112
1375
- msgid "Username is not valid!"
1376
- msgstr ""
1377
-
1378
- #: includes/settings/wsl.compatibilities.php:116
1379
- msgid "That E-mail is already registered!"
1380
- msgstr ""
1381
-
1382
- #: includes/settings/wsl.compatibilities.php:120
1383
- msgid "That Username is already registered!"
1384
- msgstr ""
1385
-
1386
- #: includes/settings/wsl.compatibilities.php:124
1387
- msgid "You are now connected via"
1388
- msgstr ""
1389
-
1390
- #: includes/settings/wsl.compatibilities.php:140
1391
- msgid "Bouncer says no."
1392
- msgstr ""
1393
-
1394
- #: includes/settings/wsl.compatibilities.php:148
1395
- msgid "Bouncer say he refuses."
1396
- msgstr ""
1397
-
1398
- #: includes/settings/wsl.compatibilities.php:156
1399
- msgid "Bouncer say only Mundo can go where he pleases!"
1400
- msgstr ""
1401
-
1402
- #: includes/settings/wsl.initialization.php:59
1403
- #: includes/settings/wsl.initialization.php:87
1404
- msgid ""
1405
- "An installed plugin is trying to o-ver-write WordPress Social Login config "
1406
- "in a bad way."
1407
- msgstr ""
1408
-
1409
- #: includes/settings/wsl.initialization.php:373
1410
- msgid "WSL user profile"
1411
- msgstr ""
1412
-
1413
- #: includes/settings/wsl.initialization.php:374
1414
- msgid "WSL user contacts"
1415
- msgstr ""
1416
-
1417
- #: includes/settings/wsl.initialization.php:400
1418
- msgid "Profile"
1419
- msgstr ""
1420
-
1421
- #: includes/widgets/wsl.auth.widget.php:124
1422
- msgid ""
1423
- "<strong style=\"color:red;\">WordPress Social Login is not configured yet!</"
1424
- "strong><br />Please visit the <strong>Settings\\ WP Social Login</strong> "
1425
- "administration page to configure this plugin.<br />For more information "
1426
- "please refer to the plugin <a href=\"http://hybridauth.sourceforge.net/"
1427
- "userguide/Plugin_WordPress_Social_Login.html\">online user guide</a> or "
1428
- "contact us at <a href=\"http://hybridauth.sourceforge.net/\">hybridauth."
1429
- "sourceforge.net</a>"
1430
- msgstr ""
1431
-
1432
- #: includes/widgets/wsl.auth.widget.php:293
1433
- msgid "Social networks"
1434
- msgstr ""
1435
-
1436
- #: includes/widgets/wsl.auth.widget.php:300
1437
- msgid "Identity"
1438
- msgstr ""
1439
-
1440
- #: includes/widgets/wsl.auth.widget.php:336
1441
- msgid "Add more identities"
1442
- msgstr ""
1443
-
1444
- #: includes/widgets/wsl.auth.widget.php:375
1445
- msgid "Currently connected to:"
1446
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/wordpress-social-login-he_IL.mo DELETED
Binary file
languages/wordpress-social-login-he_IL.po DELETED
@@ -1,1446 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WordPress Social Login\n"
4
- "POT-Creation-Date: 2013-02-16 06:40+0100\n"
5
- "PO-Revision-Date: 2013-02-16 06:42+0100\n"
6
- "Last-Translator: Miled <hybridauth@gmail.com>\n"
7
- "Language-Team: WordPress Social Login <hybridauth@gmail.com>\n"
8
- "Language: Hebrew - עברית (he_IL)\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.5.5\n"
13
-
14
- #: includes/admin/wsl.admin.ui.php:332
15
- msgid "Development mode is enabled!"
16
- msgstr ""
17
-
18
- #: includes/admin/wsl.admin.ui.php:407
19
- #: includes/services/wsl.authentication.php:637
20
- msgid "Something wrong!"
21
- msgstr ""
22
-
23
- #: includes/admin/wsl.admin.ui.php:412
24
- msgid ""
25
- "Unknown or Disabled <b>Component</b>! Check the list of enabled components "
26
- "or the typed URL"
27
- msgstr ""
28
-
29
- #: includes/admin/wsl.admin.ui.php:416
30
- msgid ""
31
- "If you believe you've found a problem with <b>WordPress Social Login</b>, be "
32
- "sure to let us know so we can fix it"
33
- msgstr ""
34
-
35
- #: includes/admin/wsl.admin.ui.php:422
36
- msgid "Report as bug"
37
- msgstr ""
38
-
39
- #: includes/admin/wsl.admin.ui.php:423
40
- msgid "Check enabled components"
41
- msgstr ""
42
-
43
- #: includes/admin/wsl.admin.ui.php:567
44
- msgid "Welcome!"
45
- msgstr ""
46
-
47
- #: includes/admin/wsl.admin.ui.php:569
48
- msgid ""
49
- "If you are still new to WordPress Social Login, we have provided a few "
50
- "walkthroughs to get you started"
51
- msgstr ""
52
-
53
- #: includes/admin/wsl.admin.ui.php:576
54
- msgid "Get Started"
55
- msgstr ""
56
-
57
- #: includes/admin/wsl.admin.ui.php:579
58
- msgid ""
59
- "<a href=\"http://hybridauth.sourceforge.net/wsl/configure.html\" target="
60
- "\"_blank\">Setup and Configuration</a>"
61
- msgstr ""
62
-
63
- #: includes/admin/wsl.admin.ui.php:580
64
- msgid ""
65
- "<a href=\"http://hybridauth.sourceforge.net/wsl/customize.html\" target="
66
- "\"_blank\">Customize WSL Widgets</a>"
67
- msgstr ""
68
-
69
- #: includes/admin/wsl.admin.ui.php:581
70
- msgid ""
71
- "<a href=\"http://hybridauth.sourceforge.net/wsl/userdata.html\" target="
72
- "\"_blank\">Manage users and contacts</a>"
73
- msgstr ""
74
-
75
- #: includes/admin/wsl.admin.ui.php:582
76
- msgid ""
77
- "<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
78
- "\">WSL User Guide</a> and <a href=\"http://hybridauth.sourceforge.net/wsl/"
79
- "faq.html\" target=\"_blank\">FAQ</a>"
80
- msgstr ""
81
-
82
- #: includes/admin/wsl.admin.ui.php:588
83
- #, php-format
84
- msgid "What's new on WSL %s"
85
- msgstr ""
86
-
87
- #: includes/admin/wsl.admin.ui.php:591
88
- msgid ""
89
- "In a similar way to WordPress plugins, WSL uses <a href=\"options-general."
90
- "php?page=wordpress-social-login&wslp=components\">Components</a>"
91
- msgstr ""
92
-
93
- #: includes/admin/wsl.admin.ui.php:592
94
- msgid "<b>Email Validation</b> is replaced with <b>Profile Completion</b>"
95
- msgstr ""
96
-
97
- #: includes/admin/wsl.admin.ui.php:593
98
- msgid ""
99
- "<b>User Moderation</b> made compatible with <a href=\"http://wordpress.org/"
100
- "extend/plugins/theme-my-login/\" target=\"_blank\">Theme My Login</a> plugin"
101
- msgstr ""
102
-
103
- #: includes/admin/wsl.admin.ui.php:594
104
- msgid "A number of enhancements and new options now available"
105
- msgstr ""
106
-
107
- #: includes/admin/wsl.admin.ui.php:644
108
- msgid "Contributor License Agreement"
109
- msgstr ""
110
-
111
- #: includes/admin/wsl.admin.ui.php:649
112
- msgid ""
113
- "You are about to submit your contributions to the WordPress Social Login "
114
- "Website to be reviewed for inclusion in future versions"
115
- msgstr ""
116
-
117
- #: includes/admin/wsl.admin.ui.php:651
118
- msgid ""
119
- "You hereby grant the permission to publish your contribution, in whole or in "
120
- "part, and to made it available under the <b>MIT License</b>, for the "
121
- "<b>Wordpress community</b> to, freely use or misuse"
122
- msgstr ""
123
-
124
- #: includes/admin/wsl.admin.ui.php:657
125
- msgid "Hell No"
126
- msgstr ""
127
-
128
- #: includes/admin/wsl.admin.ui.php:658
129
- msgid "Yes, I agree to contribute my translation"
130
- msgstr ""
131
-
132
- #: includes/admin/wsl.admin.ui.php:662
133
- msgid "Help us localize WordPress Social Login"
134
- msgstr ""
135
-
136
- #: includes/admin/wsl.admin.ui.php:666
137
- msgid ""
138
- "You can <b>translate as much you pleases</b> as much <b>as you want</b>. You "
139
- "don't have to translate everything in this page, but every word counts. "
140
- "Ignore any string you want or aleardy translated. You could also use this "
141
- "tool to fix any typo you may find or to improve the current language "
142
- "expressions"
143
- msgstr ""
144
-
145
- #: includes/admin/wsl.admin.ui.php:668
146
- msgid ""
147
- "Your name allows us to recognize your contributions and bypass manual "
148
- "review, especially when you've been contributing in the past. So do supply "
149
- "some unique string, even if it's not your real name"
150
- msgstr ""
151
-
152
- #: includes/admin/wsl.admin.ui.php:670
153
- msgid ""
154
- "All the texts on this page are automatically extracted and generated on the "
155
- "form beside. If the translation tool has scapped something you may consider "
156
- "as irrelevant, please leave that particular field empty"
157
- msgstr ""
158
-
159
- #: includes/admin/wsl.admin.ui.php:672
160
- msgid ""
161
- "Your contributions will be sent to the WordPress Social Login website for "
162
- "inclusion in future versions"
163
- msgstr ""
164
-
165
- #: includes/admin/wsl.admin.ui.php:674
166
- msgid "Thanks!"
167
- msgstr ""
168
-
169
- #: includes/admin/wsl.admin.ui.php:682
170
- msgid "Your Name"
171
- msgstr ""
172
-
173
- #: includes/admin/wsl.admin.ui.php:682 includes/admin/wsl.admin.ui.php:688
174
- msgid "optional"
175
- msgstr ""
176
-
177
- #: includes/admin/wsl.admin.ui.php:688
178
- msgid "Comment"
179
- msgstr ""
180
-
181
- #: includes/admin/wsl.admin.ui.php:694
182
- msgid "Target Language"
183
- msgstr ""
184
-
185
- #: includes/admin/wsl.admin.ui.php:703
186
- msgid "Submit changes"
187
- msgstr ""
188
-
189
- #: includes/admin/wsl.admin.ui.php:769
190
- msgid "Help us translate this page into your language"
191
- msgstr ""
192
-
193
- #: includes/admin/components/advanced/index.php:47
194
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:62
195
- msgid "Advanced Settings"
196
- msgstr ""
197
-
198
- #: includes/admin/components/advanced/index.php:52
199
- msgid ""
200
- "<b>Please</b> for the love of <b>God</b>, stay out of Advanced.. unless you "
201
- "are Advanced and you know what you are doing"
202
- msgstr ""
203
-
204
- #: includes/admin/components/advanced/index.php:61
205
- msgid "WSL Base URL"
206
- msgstr ""
207
-
208
- #: includes/admin/components/advanced/index.php:68
209
- msgid "WSL Base PATH"
210
- msgstr ""
211
-
212
- #: includes/admin/components/advanced/index.php:75
213
- msgid "Hybridauth endpoint URL"
214
- msgstr ""
215
-
216
- #: includes/admin/components/advanced/index.php:82
217
- msgid "WSL top bar menu"
218
- msgstr ""
219
-
220
- #: includes/admin/components/advanced/index.php:85
221
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:38
222
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:47
223
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:72
224
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:81
225
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:174
226
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:211
227
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:249
228
- msgid "Yes"
229
- msgstr ""
230
-
231
- #: includes/admin/components/advanced/index.php:86
232
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:39
233
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:48
234
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:73
235
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:82
236
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:175
237
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:212
238
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:250
239
- msgid "No"
240
- msgstr ""
241
-
242
- #: includes/admin/components/advanced/index.php:98
243
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:275
244
- #: includes/admin/components/contacts/index.php:98
245
- #: includes/admin/components/diagnostics/index.php:64
246
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:144
247
- #: includes/admin/components/networks/wsl.components.networks.setup.php:271
248
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:40
249
- msgid "Save Settings"
250
- msgstr ""
251
-
252
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:27
253
- msgid "WSL Widget"
254
- msgstr ""
255
-
256
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:31
257
- msgid ""
258
- "Here you can tell Bouncer if you are accepting new users registration and "
259
- "authentication into your website or not any more. Note that Bouncer only "
260
- "works for WSL and will not interfere with users authenticating through the "
261
- "regulars wordpress Login and Register pages with their usernames and "
262
- "passwords (to to achieve that kind of restrictions, you may need to use "
263
- "another plugin(s) in combination with WSL)."
264
- msgstr ""
265
-
266
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:35
267
- msgid "Accept new registration"
268
- msgstr ""
269
-
270
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:44
271
- msgid "Allow authentication"
272
- msgstr ""
273
-
274
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:58
275
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:45
276
- msgid "Profile Completion"
277
- msgstr ""
278
-
279
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:62
280
- msgid ""
281
- "Select required fields. If a social network doesn't return them, Bouncer "
282
- "will then ask your visitors to fill additional form to provide them when "
283
- "registering."
284
- msgstr ""
285
-
286
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:65
287
- msgid ""
288
- "You may activate <b>Profile Completion</b> for both <b>E-mail</b> and "
289
- "<b>Username</b>, but keep in mind, the idea behind <b>social login</b> is to "
290
- "avoid forms and remove all the hassle of registration"
291
- msgstr ""
292
-
293
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:69
294
- msgid "Require E-mail"
295
- msgstr ""
296
-
297
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:78
298
- msgid "Allow Username change"
299
- msgstr ""
300
-
301
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:92
302
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:111
303
- msgid "User Moderation"
304
- msgstr ""
305
-
306
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:96
307
- msgid ""
308
- "<b>User Moderation</b> will define how <b>Bouncer</b> should behave with new "
309
- "regsitred users:"
310
- msgstr ""
311
-
312
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:99
313
- msgid "<b>None</b>: No moderation required."
314
- msgstr ""
315
-
316
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:100
317
- msgid ""
318
- "<b>E-mail Confirmation</b>: New users will need to be confirm their e-mail "
319
- "address before they may log in"
320
- msgstr ""
321
-
322
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:101
323
- msgid ""
324
- "<b>Admin Approval</b>: New users will need to be approved by an "
325
- "administrator before they may log in"
326
- msgstr ""
327
-
328
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:104
329
- msgid ""
330
- "Both <b>Admin Approval</b> and <b>E-mail Confirmation</b> requires <a href="
331
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
332
- "\">Theme My Login</a> plugin to be installed. As there is no point for "
333
- "<b>WordPress Social Login</b> to reinvent the wheel"
334
- msgstr ""
335
-
336
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:107
337
- msgid ""
338
- "<b>User Moderation</b> was purposely made compatible with the <a href="
339
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
340
- "\">Theme My Login</a> for a number reasons: That plugin is good at what he "
341
- "does, a hell of a lot of people are using it and many have asked for it"
342
- msgstr ""
343
-
344
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:114
345
- msgid "None"
346
- msgstr ""
347
-
348
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:115
349
- msgid "E-mail Confirmation &mdash; Yield to Theme My Login plugin"
350
- msgstr ""
351
-
352
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:116
353
- msgid "Admin Approval &mdash; Yield to Theme My Login plugin"
354
- msgstr ""
355
-
356
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:126
357
- msgid "Membership level"
358
- msgstr ""
359
-
360
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:130
361
- msgid ""
362
- "Here you can define the default role for new users authenticating through "
363
- "WSL. The <code>Administrator</code> and <code>Editor</code> roles are not "
364
- "available for safety reasons"
365
- msgstr ""
366
-
367
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:133
368
- msgid ""
369
- "For more information about wordpress users roles and capabilities refer to "
370
- "<a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs."
371
- "_Role_Table\" target=\"_blank\">http://codex.wordpress.org/"
372
- "Roles_and_Capabilities</a>"
373
- msgstr ""
374
-
375
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:136
376
- msgid ""
377
- "If <b>User Moderation</b> is set to <code>Admin Approval</code> then "
378
- "<b>Membership level</b> will be ignored"
379
- msgstr ""
380
-
381
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:140
382
- msgid "New User Default Role"
383
- msgstr ""
384
-
385
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:143
386
- msgid "Safe"
387
- msgstr ""
388
-
389
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:144
390
- msgid "&mdash; Wordpress User Default Role &mdash;"
391
- msgstr ""
392
-
393
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:145
394
- msgid "&mdash; No role for this site &mdash;"
395
- msgstr ""
396
-
397
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:146
398
- msgid "Subscriber"
399
- msgstr ""
400
-
401
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:149
402
- msgid "Be careful with these"
403
- msgstr ""
404
-
405
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:150
406
- msgid "Author"
407
- msgstr ""
408
-
409
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:151
410
- msgid "Contributor"
411
- msgstr ""
412
-
413
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:162
414
- msgid "Filters by emails domains name"
415
- msgstr ""
416
-
417
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:166
418
- msgid "Restrict registration to a limited number of domains name."
419
- msgstr ""
420
-
421
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:167
422
- msgid ""
423
- "Insert one email address per line and try to keep this list short. On "
424
- "<code>Bounce text</code> insert the text you want to display for rejected "
425
- "users. ex: <code>gmail.com</code>, without '@'."
426
- msgstr ""
427
-
428
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:171
429
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:208
430
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:246
431
- #: includes/admin/components/contacts/index.php:51
432
- #: includes/admin/components/contacts/index.php:58
433
- #: includes/admin/components/contacts/index.php:65
434
- #: includes/admin/components/contacts/index.php:72
435
- #: includes/admin/components/contacts/index.php:79
436
- #: includes/admin/components/diagnostics/index.php:61
437
- #: includes/admin/components/networks/wsl.components.networks.setup.php:109
438
- msgid "Enabled"
439
- msgstr ""
440
-
441
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:180
442
- msgid "Domains list"
443
- msgstr ""
444
-
445
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:186
446
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:223
447
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:261
448
- msgid "Bounce text"
449
- msgstr ""
450
-
451
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:199
452
- msgid "Filters by e-mails addresses"
453
- msgstr ""
454
-
455
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:203
456
- msgid "Restrict registration to a limited number of emails addresses."
457
- msgstr ""
458
-
459
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:204
460
- msgid ""
461
- "Insert one email address per line and try to keep this list short. On "
462
- "<code>Bounce text</code> insert the text you want to display for rejected "
463
- "users. ex: <code>hybridauth@gmail.com</code>"
464
- msgstr ""
465
-
466
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:217
467
- msgid "E-mails list"
468
- msgstr ""
469
-
470
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:236
471
- msgid "Filters by profile urls"
472
- msgstr ""
473
-
474
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:240
475
- msgid "Restrict registration to a limited number of profile urls."
476
- msgstr ""
477
-
478
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:241
479
- msgid ""
480
- "<b>Note</b>: If a social network provide the user email, then use 'Filters "
481
- "by e-mails addresses' instead. Providers like Facebook provide multiples "
482
- "profiles URLs per user and WSL won't be able to reconize them."
483
- msgstr ""
484
-
485
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:242
486
- msgid ""
487
- "Insert one email address per line and try to keep this list short. On "
488
- "<code>Bounce text</code> insert the text you want to display for rejected "
489
- "users. ex: <code>http://twitter.com/HybridAuth</code>, <code>https://plus."
490
- "google.com/u/0/108839241301472312344</code>"
491
- msgstr ""
492
-
493
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:255
494
- msgid "Profile urls"
495
- msgstr ""
496
-
497
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:26
498
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:26
499
- msgid "What's This?"
500
- msgstr ""
501
-
502
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:30
503
- msgid "Hey, meet our friend, the Bouncer"
504
- msgstr ""
505
-
506
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:33
507
- msgid ""
508
- "Ever been in trouble with one of <a href=\"http://www.flickr.com/search/?"
509
- "q=bouncer+doorman&z=e\" target=\"_blank\">these guys</a>? Well, this module "
510
- "have more or less the same role, and he will try his best to piss your users "
511
- "off until they meet your requirements."
512
- msgstr ""
513
-
514
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:37
515
- msgid ""
516
- "This feature is most suited for small businesses and folks running a closed-"
517
- "door blog between friends or coworkers."
518
- msgstr ""
519
-
520
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:40
521
- msgid "Available settings"
522
- msgstr ""
523
-
524
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:43
525
- msgid "Enable/Disable Registration"
526
- msgstr ""
527
-
528
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:44
529
- msgid "Enable/Disable Authentication"
530
- msgstr ""
531
-
532
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:46
533
- msgid "Users moderation"
534
- msgstr ""
535
-
536
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:47
537
- msgid "Users roles"
538
- msgstr ""
539
-
540
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:48
541
- msgid "Restrictions (by emails, domains, profiles urls)"
542
- msgstr ""
543
-
544
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:51
545
- msgid "IMPORTANT!"
546
- msgstr ""
547
-
548
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:54
549
- msgid ""
550
- "All the settings on this page without exception are only valid for users "
551
- "authenticating through <b>WordPress Social Login Widget"
552
- msgstr ""
553
-
554
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:57
555
- msgid ""
556
- "Users authenticating through the regulars Wordpress Login and Register pages "
557
- "with their usernames and passwords WILL NOT be affected."
558
- msgstr ""
559
-
560
- #: includes/admin/components/components/wsl.components.help.gallery.php:30
561
- msgid "Other Components available"
562
- msgstr ""
563
-
564
- #: includes/admin/components/components/wsl.components.help.gallery.php:58
565
- msgid "WordPress Social Login for BuddyPress"
566
- msgstr ""
567
-
568
- #: includes/admin/components/components/wsl.components.help.gallery.php:60
569
- msgid "Make WordPress Social Login compatible with BuddyPress"
570
- msgstr ""
571
-
572
- #: includes/admin/components/components/wsl.components.help.gallery.php:61
573
- msgid "Widget integration, xProfiles mapping and more"
574
- msgstr ""
575
-
576
- #: includes/admin/components/components/wsl.components.help.gallery.php:63
577
- msgid "Install Now"
578
- msgstr ""
579
-
580
- #: includes/admin/components/components/wsl.components.help.gallery.php:64
581
- msgid "Visit plugin site"
582
- msgstr ""
583
-
584
- #: includes/admin/components/components/wsl.components.help.gallery.php:69
585
- msgid "Build yours"
586
- msgstr ""
587
-
588
- #: includes/admin/components/components/wsl.components.help.gallery.php:71
589
- msgid ""
590
- "Looking to build your own custom <b>WordPress Social Login</b> extenstion or "
591
- "component? Well, it's pretty easy. Just RTFM :)"
592
- msgstr ""
593
-
594
- #: includes/admin/components/components/wsl.components.help.gallery.php:74
595
- msgid "WSL Developer API"
596
- msgstr ""
597
-
598
- #: includes/admin/components/components/wsl.components.help.gallery.php:75
599
- msgid "WSL on Github"
600
- msgstr ""
601
-
602
- #: includes/admin/components/components/wsl.components.help.setup.php:29
603
- #: includes/admin/components/components/wsl.components.help.setup.php:37
604
- msgid "Component"
605
- msgstr ""
606
-
607
- #: includes/admin/components/components/wsl.components.help.setup.php:30
608
- #: includes/admin/components/components/wsl.components.help.setup.php:38
609
- msgid "Description"
610
- msgstr ""
611
-
612
- #: includes/admin/components/components/wsl.components.help.setup.php:67
613
- msgid "View"
614
- msgstr ""
615
-
616
- #: includes/admin/components/components/wsl.components.help.setup.php:72
617
- msgid "Disable"
618
- msgstr ""
619
-
620
- #: includes/admin/components/components/wsl.components.help.setup.php:74
621
- msgid "Enable"
622
- msgstr ""
623
-
624
- #: includes/admin/components/contacts/index.php:39
625
- msgid "Settings"
626
- msgstr ""
627
-
628
- #: includes/admin/components/contacts/index.php:43
629
- msgid ""
630
- "<b>WordPress Social Login</b> is now introducing <b>Contacts Import</b> as a "
631
- "new feature. When enabled, users authenticating through WordPress Social "
632
- "Login will be asked for the authorisation to import their contact list. Note "
633
- "that some social networks do not provide certains of their users information "
634
- "like contacts emails, photos and or profile urls"
635
- msgstr ""
636
-
637
- #: includes/admin/components/contacts/index.php:45
638
- msgid "Enable contacts import for"
639
- msgstr ""
640
-
641
- #: includes/admin/components/contacts/index.php:52
642
- #: includes/admin/components/contacts/index.php:59
643
- #: includes/admin/components/contacts/index.php:66
644
- #: includes/admin/components/contacts/index.php:73
645
- #: includes/admin/components/contacts/index.php:80
646
- #: includes/admin/components/diagnostics/index.php:62
647
- msgid "Disabled"
648
- msgstr ""
649
-
650
- #: includes/admin/components/contacts/index.php:86
651
- msgid "Notes"
652
- msgstr ""
653
-
654
- #: includes/admin/components/contacts/index.php:88
655
- msgid ""
656
- "To enable contacts import from these social network, you need first to "
657
- "enabled them on the <a href=\"options-general.php?page=wordpress-social-"
658
- "login&wslp=networks\"><b>Networks</b></a> tab and register the required "
659
- "application"
660
- msgstr ""
661
-
662
- #: includes/admin/components/contacts/index.php:89
663
- msgid ""
664
- "<b>WSL</b> will try to import as much information about a user contacts as "
665
- "he was able to pull from the social networks APIs."
666
- msgstr ""
667
-
668
- #: includes/admin/components/contacts/index.php:90
669
- msgid ""
670
- "All contacts data are sotred into your database on the table: "
671
- "<code>`wsluserscontacts`</code>"
672
- msgstr ""
673
-
674
- #: includes/admin/components/contacts/index.php:107
675
- msgid "Users contacts list preview"
676
- msgstr ""
677
-
678
- #: includes/admin/components/contacts/index.php:114
679
- #, php-format
680
- msgid "%s contact's list"
681
- msgstr ""
682
-
683
- #: includes/admin/components/contacts/index.php:121
684
- #: includes/admin/components/contacts/index.php:130
685
- #: includes/widgets/wsl.auth.widget.php:299
686
- msgid "Provider"
687
- msgstr ""
688
-
689
- #: includes/admin/components/contacts/index.php:122
690
- #: includes/admin/components/contacts/index.php:131
691
- msgid "User"
692
- msgstr ""
693
-
694
- #: includes/admin/components/contacts/index.php:123
695
- #: includes/admin/components/contacts/index.php:132
696
- msgid "Contact Name"
697
- msgstr ""
698
-
699
- #: includes/admin/components/contacts/index.php:124
700
- #: includes/admin/components/contacts/index.php:133
701
- msgid "Contact Email"
702
- msgstr ""
703
-
704
- #: includes/admin/components/contacts/index.php:125
705
- #: includes/admin/components/contacts/index.php:134
706
- msgid "Contact Profile Url"
707
- msgstr ""
708
-
709
- #: includes/admin/components/contacts/index.php:150
710
- msgid "No contacts found"
711
- msgstr ""
712
-
713
- #: includes/admin/components/diagnostics/index.php:24
714
- msgid "Requirements test"
715
- msgstr ""
716
-
717
- #: includes/admin/components/diagnostics/index.php:27
718
- msgid ""
719
- "In order for <b>WordPress Social Login</b> to work properly, your server "
720
- "should meet certain requirements. These \"requirements\" <br />and \"services"
721
- "\" are usually offered by default by most \"modern\" web hosting providers, "
722
- "however some complications may <br />occur with <b>shared hosting</b> and, "
723
- "or <b>custom wordpress installations</b>"
724
- msgstr ""
725
-
726
- #: includes/admin/components/diagnostics/index.php:30
727
- msgid "The minimum server requirements are"
728
- msgstr ""
729
-
730
- #: includes/admin/components/diagnostics/index.php:33
731
- msgid "PHP >= 5.2.0 installed"
732
- msgstr ""
733
-
734
- #: includes/admin/components/diagnostics/index.php:34
735
- msgid "WSL Endpoint URLs reachable"
736
- msgstr ""
737
-
738
- #: includes/admin/components/diagnostics/index.php:35
739
- msgid "PHP's default SESSION handling"
740
- msgstr ""
741
-
742
- #: includes/admin/components/diagnostics/index.php:36
743
- msgid "PHP/CURL/SSL Extension enabled"
744
- msgstr ""
745
-
746
- #: includes/admin/components/diagnostics/index.php:37
747
- msgid "PHP/JSON Extension enabled"
748
- msgstr ""
749
-
750
- #: includes/admin/components/diagnostics/index.php:38
751
- msgid "PHP/REGISTER_GLOBALS Off"
752
- msgstr ""
753
-
754
- #: includes/admin/components/diagnostics/index.php:39
755
- msgid "jQuery installed on WordPress backoffice"
756
- msgstr ""
757
-
758
- #: includes/admin/components/diagnostics/index.php:42
759
- msgid ""
760
- "You can run the <b>WordPress Social Login Requirements Test</b> by clicking "
761
- "the button bellow"
762
- msgstr ""
763
-
764
- #: includes/admin/components/diagnostics/index.php:46
765
- msgid "Run the plugin requirements test"
766
- msgstr ""
767
-
768
- #: includes/admin/components/diagnostics/index.php:47
769
- msgid "Website Information"
770
- msgstr ""
771
-
772
- #: includes/admin/components/diagnostics/index.php:53
773
- msgid "Development mode"
774
- msgstr ""
775
-
776
- #: includes/admin/components/diagnostics/index.php:56
777
- msgid ""
778
- "By enabling the development mode, this plugin will try generate and display "
779
- "a technical reports when something goes wrong. <br />This report can help "
780
- "your figure out the root of any issues you may runs into, or you can also "
781
- "send it to the plugin developer. <br />Its recommend to set the Development "
782
- "mode to <b style=\"color:red\">Disabled</b> on production."
783
- msgstr ""
784
-
785
- #: includes/admin/components/help/index.php:25
786
- msgid "Troubleshooting"
787
- msgstr ""
788
-
789
- #: includes/admin/components/help/index.php:27
790
- msgid "WSL Diagnostics"
791
- msgstr ""
792
-
793
- #: includes/admin/components/help/index.php:29
794
- msgid "System information"
795
- msgstr ""
796
-
797
- #: includes/admin/components/help/index.php:32
798
- msgid ""
799
- "If you run into any issue, you can access the <b>WordPress Social Login "
800
- "Diagnostics</b> to check the <b>Plugin Requirements</b> or to enable the "
801
- "<b>Development mode</b>"
802
- msgstr ""
803
-
804
- #: includes/admin/components/help/index.php:35
805
- msgid ""
806
- "Remember to include your System information when posting support requests"
807
- msgstr ""
808
-
809
- #: includes/admin/components/help/index.php:39
810
- msgid "Documentation"
811
- msgstr ""
812
-
813
- #: includes/admin/components/help/index.php:41
814
- msgid ""
815
- "The complete <b>User Guide</b> can be found at\n"
816
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target="
817
- "\"_blank\">hybridauth.sourceforge.net/wsl/index.html</a>"
818
- msgstr ""
819
-
820
- #: includes/admin/components/help/index.php:47
821
- msgid "FAQs"
822
- msgstr ""
823
-
824
- #: includes/admin/components/help/index.php:49
825
- msgid ""
826
- "A list of <b>Frequently asked questions</b> can be found at\n"
827
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/faq.html\" target="
828
- "\"_blank\">hybridauth.sourceforge.net/wsl/faq.html</a>"
829
- msgstr ""
830
-
831
- #: includes/admin/components/help/index.php:55
832
- msgid "Support"
833
- msgstr ""
834
-
835
- #: includes/admin/components/help/index.php:57
836
- msgid ""
837
- "To get help and support refer to <a href=\"http://hybridauth.sourceforge.net/"
838
- "wsl/support.html\" target=\"_blank\">http://hybridauth.sourceforge.net/wsl/"
839
- "support.html</a>"
840
- msgstr ""
841
-
842
- #: includes/admin/components/help/index.php:62
843
- msgid "Credits"
844
- msgstr ""
845
-
846
- #: includes/admin/components/help/index.php:64
847
- msgid ""
848
- "WordPress Social Login was created by <a href=\"http://profiles.wordpress."
849
- "org/miled/\" target=\"_blank\">Mohamed Mrassi</a> (a.k.a Miled) and <a href="
850
- "\"https://github.com/hybridauth/WordPress-Social-Login/graphs/contributors\" "
851
- "target=\"_blank\">contributors</a>"
852
- msgstr ""
853
-
854
- #: includes/admin/components/help/index.php:65
855
- msgid ""
856
- "Many other people have also contributed with <br />constructive discussions, "
857
- "support and by submitting patches"
858
- msgstr ""
859
-
860
- #: includes/admin/components/help/index.php:70
861
- msgid "License"
862
- msgstr ""
863
-
864
- #: includes/admin/components/help/index.php:72
865
- msgid ""
866
- "<b>WordPress Social Login</b> is an open source software licenced under The "
867
- "MIT License (MIT)"
868
- msgstr ""
869
-
870
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:27
871
- msgid "Basic Settings"
872
- msgstr ""
873
-
874
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:32
875
- msgid "Connect with caption"
876
- msgstr ""
877
-
878
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:38
879
- msgid "Social icon set"
880
- msgstr ""
881
-
882
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:41
883
- msgid "WPZOOM social networking icon set"
884
- msgstr ""
885
-
886
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:42
887
- msgid "Icondock vector social media icons"
888
- msgstr ""
889
-
890
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:47
891
- msgid "Users avatars"
892
- msgstr ""
893
-
894
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:50
895
- msgid "Display the default users avatars"
896
- msgstr ""
897
-
898
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:51
899
- msgid "Display users avatars from social networks when available"
900
- msgstr ""
901
-
902
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:67
903
- msgid "Redirect URL"
904
- msgstr ""
905
-
906
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:73
907
- msgid "Authentication flow"
908
- msgstr ""
909
-
910
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:76
911
- msgid "Using popup window"
912
- msgstr ""
913
-
914
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:77
915
- msgid "No popup window"
916
- msgstr ""
917
-
918
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:82
919
- msgid "Widget display"
920
- msgstr ""
921
-
922
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:85
923
- msgid "Display the widget in the comments area, login and register forms"
924
- msgstr ""
925
-
926
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:86
927
- msgid "Display the widget ONLY in the comments area"
928
- msgstr ""
929
-
930
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:87
931
- msgid "Display the widget ONLY in the login form"
932
- msgstr ""
933
-
934
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:92
935
- msgid "Notification"
936
- msgstr ""
937
-
938
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:95
939
- msgid "No notification"
940
- msgstr ""
941
-
942
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:96
943
- msgid "Notify ONLY the blog admin of a new user"
944
- msgstr ""
945
-
946
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:107
947
- msgid "Custom CSS"
948
- msgstr ""
949
-
950
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:112
951
- msgid "Widget CSS"
952
- msgstr ""
953
-
954
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:114
955
- msgid ""
956
- "To customize the default widget styles you can either: edit the css file "
957
- "<strong>/wordpress-social-login/assets/css/style.css</strong>, or change it "
958
- "from this text area"
959
- msgstr ""
960
-
961
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:118
962
- msgid "The basic widget markup is the following"
963
- msgstr ""
964
-
965
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:30
966
- msgid "Widget Customization"
967
- msgstr ""
968
-
969
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:33
970
- msgid ""
971
- "On this section you can fully customize <b>WordPress Social Login Widget</b> "
972
- "and define the way you want it to look and behave"
973
- msgstr ""
974
-
975
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:37
976
- msgid ""
977
- "<b>WordPress Social Login Widget</b> will be generated into the comments, "
978
- "login and register forms enabling your website vistors and customers to "
979
- "login via social networks"
980
- msgstr ""
981
-
982
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:41
983
- msgid ""
984
- "If this widget does not show up on your custom theme or you want to add it "
985
- "somewhere else then refer to the next section"
986
- msgstr ""
987
-
988
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:44
989
- msgid "Custom integration"
990
- msgstr ""
991
-
992
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:47
993
- msgid ""
994
- "If you want to add the social login widget to another location in your "
995
- "theme, you can insert the following code in that location"
996
- msgstr ""
997
-
998
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:49
999
- msgid "Or, for posts and pages"
1000
- msgstr ""
1001
-
1002
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:54
1003
- msgid ""
1004
- "<b>[wordpress_social_login]</b> shortcode can be used in combination with <a "
1005
- "href=\"http://wordpress.org/extend/plugins/html-javascript-adder/\" target="
1006
- "\"_blank\">HTML Javascript Adder</a> plugin to be add WSL Widget to your "
1007
- "website sidebar"
1008
- msgstr ""
1009
-
1010
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:58
1011
- msgid ""
1012
- "Also, if you are a developer or designer then you can customize it to your "
1013
- "heart's content. For more inofmation refer to <b><a href=\"http://hybridauth."
1014
- "sourceforge.net/wsl/customize.html\" target=\"_blank\">User Guide</a></b>"
1015
- msgstr ""
1016
-
1017
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:61
1018
- msgid "Widget preview"
1019
- msgstr ""
1020
-
1021
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:64
1022
- msgid "This is a preview of what should be on the comments area"
1023
- msgstr ""
1024
-
1025
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:65
1026
- msgid "Do not test it here"
1027
- msgstr ""
1028
-
1029
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:24
1030
- msgid ""
1031
- "And you could add even more of them, <b>Just Click</b> and we will guide you "
1032
- "through"
1033
- msgstr ""
1034
-
1035
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:48
1036
- msgid "Well! none left."
1037
- msgstr ""
1038
-
1039
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:36
1040
- msgid "Insights"
1041
- msgstr ""
1042
-
1043
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:40
1044
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:49
1045
- msgid "Conversions"
1046
- msgstr ""
1047
-
1048
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:43
1049
- msgid "WP users"
1050
- msgstr ""
1051
-
1052
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:46
1053
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:77
1054
- msgid "WSL users"
1055
- msgstr ""
1056
-
1057
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:59
1058
- msgid "By provider"
1059
- msgstr ""
1060
-
1061
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:85
1062
- msgid "By gender"
1063
- msgstr ""
1064
-
1065
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:108
1066
- msgid "By age"
1067
- msgstr ""
1068
-
1069
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:139
1070
- msgid "yrs in average"
1071
- msgstr ""
1072
-
1073
- #: includes/admin/components/networks/wsl.components.networks.setup.php:126
1074
- msgid "Application ID"
1075
- msgstr ""
1076
-
1077
- #: includes/admin/components/networks/wsl.components.networks.setup.php:128
1078
- #: includes/admin/components/networks/wsl.components.networks.setup.php:134
1079
- #: includes/admin/components/networks/wsl.components.networks.setup.php:140
1080
- msgid "Where do I get this info?"
1081
- msgstr ""
1082
-
1083
- #: includes/admin/components/networks/wsl.components.networks.setup.php:132
1084
- msgid "Application Key"
1085
- msgstr ""
1086
-
1087
- #: includes/admin/components/networks/wsl.components.networks.setup.php:138
1088
- msgid "Application Secret"
1089
- msgstr ""
1090
-
1091
- #: includes/admin/components/networks/wsl.components.networks.setup.php:149
1092
- msgid "Note"
1093
- msgstr ""
1094
-
1095
- #: includes/admin/components/networks/wsl.components.networks.setup.php:151
1096
- #, php-format
1097
- msgid ""
1098
- "<b>%s</b> do not provide their user's email address and by default a random "
1099
- "email will then be generated for them instead"
1100
- msgstr ""
1101
-
1102
- #: includes/admin/components/networks/wsl.components.networks.setup.php:153
1103
- msgid ""
1104
- "To change this behaviour and to force new registered users to provide their "
1105
- "emails before they get in, goto <b><a href=\"options-general.php?"
1106
- "page=wordpress-social-login&wslp=bouncer\">Bouncer</a></b> and enable "
1107
- "<b>Profile Completion</b>"
1108
- msgstr ""
1109
-
1110
- #: includes/admin/components/networks/wsl.components.networks.setup.php:163
1111
- msgid ""
1112
- "<span style=\"color:#CB4B16;\">Application</span> id and secret (also "
1113
- "sometimes referred as <span style=\"color:#CB4B16;\">Customer</span> key and "
1114
- "secret or <span style=\"color:#CB4B16;\">Client</span> id and secret) are "
1115
- "what we call an application credentials"
1116
- msgstr ""
1117
-
1118
- #: includes/admin/components/networks/wsl.components.networks.setup.php:165
1119
- #, php-format
1120
- msgid ""
1121
- "This application will link your website <code>%s</code> to <code>%s API</"
1122
- "code> and these credentials are needed in order for <b>%s</b> users to "
1123
- "access your website"
1124
- msgstr ""
1125
-
1126
- #: includes/admin/components/networks/wsl.components.networks.setup.php:168
1127
- msgid ""
1128
- "These credentials may also differ in format, name and content depending on "
1129
- "the social network."
1130
- msgstr ""
1131
-
1132
- #: includes/admin/components/networks/wsl.components.networks.setup.php:172
1133
- #, php-format
1134
- msgid ""
1135
- "To enable authentication with this provider and to register a new <b>%s API "
1136
- "Application</b>, carefully follow the steps"
1137
- msgstr ""
1138
-
1139
- #: includes/admin/components/networks/wsl.components.networks.setup.php:175
1140
- #, php-format
1141
- msgid "<b>Done.</b> Nothing more required for <b>%s</b>"
1142
- msgstr ""
1143
-
1144
- #: includes/admin/components/networks/wsl.components.networks.setup.php:259
1145
- msgid "And that's it!"
1146
- msgstr ""
1147
-
1148
- #: includes/admin/components/networks/wsl.components.networks.setup.php:261
1149
- #, php-format
1150
- msgid ""
1151
- "If for some reason you still can't figure it out, first try to a) <a class="
1152
- "\"button-primary\" href=\"https://www.google.com/search?q=%s API create "
1153
- "application\" target=\"_blank\">Google it</a>, then check it on b) <a class="
1154
- "\"button-primary\" href=\"http://www.youtube.com/results?search_query=%s API "
1155
- "create application \" target=\"_blank\">Youtube</a> and if nothing works c) "
1156
- "<a class=\"button-primary\" href=\"options-general.php?page=wordpress-social-"
1157
- "login&wslp=help\">ask for support</a>"
1158
- msgstr ""
1159
-
1160
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:21
1161
- msgid "Why, hello there"
1162
- msgstr ""
1163
-
1164
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:29
1165
- msgid ""
1166
- "If you are still new to things, we recommend that you read the <b><a href="
1167
- "\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
1168
- "\">Plugin User Guide</a></b> and to make sure your server settings meet this "
1169
- "<b><a href=\"options-general.php?page=wordpress-social-login&amp;"
1170
- "wslp=diagnostics\">Plugin Requirements</a></b>"
1171
- msgstr ""
1172
-
1173
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:32
1174
- msgid ""
1175
- "If you run into any issue then refer to <b><a href=\"options-general.php?"
1176
- "page=wordpress-social-login&wslp=help\">Help & Support</a></b> to konw how "
1177
- "to reach me"
1178
- msgstr ""
1179
-
1180
- #: includes/admin/components/users/wsl.components.users.list.php:30
1181
- #: includes/admin/components/users/wsl.components.users.list.php:41
1182
- msgid "Providers"
1183
- msgstr ""
1184
-
1185
- #: includes/admin/components/users/wsl.components.users.list.php:31
1186
- #: includes/admin/components/users/wsl.components.users.list.php:42
1187
- #: includes/settings/wsl.compatibilities.php:104
1188
- msgid "Username"
1189
- msgstr ""
1190
-
1191
- #: includes/admin/components/users/wsl.components.users.list.php:32
1192
- #: includes/admin/components/users/wsl.components.users.list.php:43
1193
- msgid "Full Name"
1194
- msgstr ""
1195
-
1196
- #: includes/admin/components/users/wsl.components.users.list.php:33
1197
- #: includes/admin/components/users/wsl.components.users.list.php:44
1198
- #: includes/settings/wsl.compatibilities.php:100
1199
- msgid "E-mail"
1200
- msgstr ""
1201
-
1202
- #: includes/admin/components/users/wsl.components.users.list.php:34
1203
- #: includes/admin/components/users/wsl.components.users.list.php:45
1204
- msgid "Profile URL"
1205
- msgstr ""
1206
-
1207
- #: includes/admin/components/users/wsl.components.users.list.php:35
1208
- #: includes/admin/components/users/wsl.components.users.list.php:46
1209
- #: includes/settings/wsl.initialization.php:400
1210
- msgid "Contacts"
1211
- msgstr ""
1212
-
1213
- #: includes/admin/components/users/wsl.components.users.list.php:36
1214
- #: includes/admin/components/users/wsl.components.users.list.php:47
1215
- msgid "Actions"
1216
- msgstr ""
1217
-
1218
- #: includes/admin/components/users/wsl.components.users.list.php:55
1219
- msgid "No users found"
1220
- msgstr ""
1221
-
1222
- #: includes/admin/components/users/wsl.components.users.profile.php:22
1223
- msgid "USER DOES NOT EXIST!"
1224
- msgstr ""
1225
-
1226
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1227
- msgid "User Profile"
1228
- msgstr ""
1229
-
1230
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1231
- #, php-format
1232
- msgid "as provided by %s"
1233
- msgstr ""
1234
-
1235
- #: includes/services/wsl.authentication.php:64
1236
- msgid "Bouncer say don't be silly!"
1237
- msgstr ""
1238
-
1239
- #: includes/services/wsl.authentication.php:70
1240
- msgid "Bouncer say this makes no sense."
1241
- msgstr ""
1242
-
1243
- #: includes/services/wsl.authentication.php:77
1244
- msgid "WSL is disabled!"
1245
- msgstr ""
1246
-
1247
- #: includes/services/wsl.authentication.php:99
1248
- msgid "Bouncer says this makes no sense."
1249
- msgstr ""
1250
-
1251
- #: includes/services/wsl.authentication.php:107
1252
- msgid "Bouncer say you are doin it wrong."
1253
- msgstr ""
1254
-
1255
- #: includes/services/wsl.authentication.php:114
1256
- msgid "You are already logged in as <b>%</b>."
1257
- msgstr ""
1258
-
1259
- #: includes/services/wsl.authentication.php:119
1260
- #: includes/services/wsl.authentication.php:559
1261
- msgid ""
1262
- "Error: Another plugin seems to be using HybridAuth Library and made "
1263
- "WordPress Social Login unusable. We recommand to find this plugin and to "
1264
- "kill it with fire!"
1265
- msgstr ""
1266
-
1267
- #: includes/services/wsl.authentication.php:130
1268
- msgid "Unknown or disabled provider"
1269
- msgstr ""
1270
-
1271
- #: includes/services/wsl.authentication.php:262
1272
- msgid "Unspecified error!"
1273
- msgstr ""
1274
-
1275
- #: includes/services/wsl.authentication.php:266
1276
- msgid "Unspecified error."
1277
- msgstr ""
1278
-
1279
- #: includes/services/wsl.authentication.php:267
1280
- msgid "Hybriauth configuration error."
1281
- msgstr ""
1282
-
1283
- #: includes/services/wsl.authentication.php:268
1284
- msgid "Provider not properly configured."
1285
- msgstr ""
1286
-
1287
- #: includes/services/wsl.authentication.php:269
1288
- msgid "Unknown or disabled provider."
1289
- msgstr ""
1290
-
1291
- #: includes/services/wsl.authentication.php:270
1292
- msgid "Missing provider application credentials."
1293
- msgstr ""
1294
-
1295
- #: includes/services/wsl.authentication.php:271
1296
- #, php-format
1297
- msgid ""
1298
- "<b>What does this error mean ?</b><br />Most likely, you didn't setup the "
1299
- "correct application credentials for this provider. These credentials are "
1300
- "required in order for <b>%s</b> users to access your website and for "
1301
- "WordPress Social Login to work."
1302
- msgstr ""
1303
-
1304
- #: includes/services/wsl.authentication.php:271
1305
- msgid ""
1306
- "<br />Instructions for use can be found in the <a href=\"http://hybridauth."
1307
- "sourceforge.net/wsl/configure.html\" target=\"_blank\">User Manual</a>."
1308
- msgstr ""
1309
-
1310
- #: includes/services/wsl.authentication.php:273
1311
- msgid ""
1312
- "Authentification failed. The user has canceled the authentication or the "
1313
- "provider refused the connection."
1314
- msgstr ""
1315
-
1316
- #: includes/services/wsl.authentication.php:274
1317
- msgid ""
1318
- "User profile request failed. Most likely the user is not connected to the "
1319
- "provider and he should to authenticate again."
1320
- msgstr ""
1321
-
1322
- #: includes/services/wsl.authentication.php:277
1323
- msgid "User not connected to the provider."
1324
- msgstr ""
1325
-
1326
- #: includes/services/wsl.authentication.php:280
1327
- msgid "Provider does not support this feature."
1328
- msgstr ""
1329
-
1330
- #: includes/services/wsl.authentication.php:323
1331
- msgid "Something bad happen!"
1332
- msgstr ""
1333
-
1334
- #: includes/services/wsl.authentication.php:389
1335
- msgid ""
1336
- "Note: This message can be disabled from the plugin settings by setting "
1337
- "<b>Development mode</b> to <b>Disabled</b>"
1338
- msgstr ""
1339
-
1340
- #: includes/services/wsl.authentication.php:418
1341
- msgid "Redirecting..."
1342
- msgstr ""
1343
-
1344
- #: includes/services/wsl.authentication.php:447
1345
- #, php-format
1346
- msgid "Contacting <b>%s</b>, please wait..."
1347
- msgstr ""
1348
-
1349
- #: includes/services/wsl.authentication.php:711
1350
- msgid "registration is now closed!"
1351
- msgstr ""
1352
-
1353
- #: includes/services/wsl.authentication.php:733
1354
- #, php-format
1355
- msgid "Unspecified error. #%d"
1356
- msgstr ""
1357
-
1358
- #: includes/services/wsl.authentication.php:882
1359
- msgid "An error occurred while creating a new user!"
1360
- msgstr ""
1361
-
1362
- #: includes/settings/wsl.compatibilities.php:92
1363
- msgid "Almost there, we just need to check a couple of things"
1364
- msgstr ""
1365
-
1366
- #: includes/settings/wsl.compatibilities.php:96
1367
- msgid "Continue"
1368
- msgstr ""
1369
-
1370
- #: includes/settings/wsl.compatibilities.php:108
1371
- msgid "E-mail is not valid!"
1372
- msgstr ""
1373
-
1374
- #: includes/settings/wsl.compatibilities.php:112
1375
- msgid "Username is not valid!"
1376
- msgstr ""
1377
-
1378
- #: includes/settings/wsl.compatibilities.php:116
1379
- msgid "That E-mail is already registered!"
1380
- msgstr ""
1381
-
1382
- #: includes/settings/wsl.compatibilities.php:120
1383
- msgid "That Username is already registered!"
1384
- msgstr ""
1385
-
1386
- #: includes/settings/wsl.compatibilities.php:124
1387
- msgid "You are now connected via"
1388
- msgstr ""
1389
-
1390
- #: includes/settings/wsl.compatibilities.php:140
1391
- msgid "Bouncer says no."
1392
- msgstr ""
1393
-
1394
- #: includes/settings/wsl.compatibilities.php:148
1395
- msgid "Bouncer say he refuses."
1396
- msgstr ""
1397
-
1398
- #: includes/settings/wsl.compatibilities.php:156
1399
- msgid "Bouncer say only Mundo can go where he pleases!"
1400
- msgstr ""
1401
-
1402
- #: includes/settings/wsl.initialization.php:59
1403
- #: includes/settings/wsl.initialization.php:87
1404
- msgid ""
1405
- "An installed plugin is trying to o-ver-write WordPress Social Login config "
1406
- "in a bad way."
1407
- msgstr ""
1408
-
1409
- #: includes/settings/wsl.initialization.php:373
1410
- msgid "WSL user profile"
1411
- msgstr ""
1412
-
1413
- #: includes/settings/wsl.initialization.php:374
1414
- msgid "WSL user contacts"
1415
- msgstr ""
1416
-
1417
- #: includes/settings/wsl.initialization.php:400
1418
- msgid "Profile"
1419
- msgstr ""
1420
-
1421
- #: includes/widgets/wsl.auth.widget.php:124
1422
- msgid ""
1423
- "<strong style=\"color:red;\">WordPress Social Login is not configured yet!</"
1424
- "strong><br />Please visit the <strong>Settings\\ WP Social Login</strong> "
1425
- "administration page to configure this plugin.<br />For more information "
1426
- "please refer to the plugin <a href=\"http://hybridauth.sourceforge.net/"
1427
- "userguide/Plugin_WordPress_Social_Login.html\">online user guide</a> or "
1428
- "contact us at <a href=\"http://hybridauth.sourceforge.net/\">hybridauth."
1429
- "sourceforge.net</a>"
1430
- msgstr ""
1431
-
1432
- #: includes/widgets/wsl.auth.widget.php:293
1433
- msgid "Social networks"
1434
- msgstr ""
1435
-
1436
- #: includes/widgets/wsl.auth.widget.php:300
1437
- msgid "Identity"
1438
- msgstr ""
1439
-
1440
- #: includes/widgets/wsl.auth.widget.php:336
1441
- msgid "Add more identities"
1442
- msgstr ""
1443
-
1444
- #: includes/widgets/wsl.auth.widget.php:375
1445
- msgid "Currently connected to:"
1446
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/wordpress-social-login-ja.mo DELETED
Binary file
languages/wordpress-social-login-ja.po DELETED
@@ -1,1446 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WordPress Social Login\n"
4
- "POT-Creation-Date: 2013-02-16 06:40+0100\n"
5
- "PO-Revision-Date: 2013-02-16 06:42+0100\n"
6
- "Last-Translator: Miled <hybridauth@gmail.com>\n"
7
- "Language-Team: WordPress Social Login <hybridauth@gmail.com>\n"
8
- "Language: Japanese (日本語 - ja)\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.5.5\n"
13
-
14
- #: includes/admin/wsl.admin.ui.php:332
15
- msgid "Development mode is enabled!"
16
- msgstr ""
17
-
18
- #: includes/admin/wsl.admin.ui.php:407
19
- #: includes/services/wsl.authentication.php:637
20
- msgid "Something wrong!"
21
- msgstr ""
22
-
23
- #: includes/admin/wsl.admin.ui.php:412
24
- msgid ""
25
- "Unknown or Disabled <b>Component</b>! Check the list of enabled components "
26
- "or the typed URL"
27
- msgstr ""
28
-
29
- #: includes/admin/wsl.admin.ui.php:416
30
- msgid ""
31
- "If you believe you've found a problem with <b>WordPress Social Login</b>, be "
32
- "sure to let us know so we can fix it"
33
- msgstr ""
34
-
35
- #: includes/admin/wsl.admin.ui.php:422
36
- msgid "Report as bug"
37
- msgstr ""
38
-
39
- #: includes/admin/wsl.admin.ui.php:423
40
- msgid "Check enabled components"
41
- msgstr ""
42
-
43
- #: includes/admin/wsl.admin.ui.php:567
44
- msgid "Welcome!"
45
- msgstr ""
46
-
47
- #: includes/admin/wsl.admin.ui.php:569
48
- msgid ""
49
- "If you are still new to WordPress Social Login, we have provided a few "
50
- "walkthroughs to get you started"
51
- msgstr ""
52
-
53
- #: includes/admin/wsl.admin.ui.php:576
54
- msgid "Get Started"
55
- msgstr ""
56
-
57
- #: includes/admin/wsl.admin.ui.php:579
58
- msgid ""
59
- "<a href=\"http://hybridauth.sourceforge.net/wsl/configure.html\" target="
60
- "\"_blank\">Setup and Configuration</a>"
61
- msgstr ""
62
-
63
- #: includes/admin/wsl.admin.ui.php:580
64
- msgid ""
65
- "<a href=\"http://hybridauth.sourceforge.net/wsl/customize.html\" target="
66
- "\"_blank\">Customize WSL Widgets</a>"
67
- msgstr ""
68
-
69
- #: includes/admin/wsl.admin.ui.php:581
70
- msgid ""
71
- "<a href=\"http://hybridauth.sourceforge.net/wsl/userdata.html\" target="
72
- "\"_blank\">Manage users and contacts</a>"
73
- msgstr ""
74
-
75
- #: includes/admin/wsl.admin.ui.php:582
76
- msgid ""
77
- "<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
78
- "\">WSL User Guide</a> and <a href=\"http://hybridauth.sourceforge.net/wsl/"
79
- "faq.html\" target=\"_blank\">FAQ</a>"
80
- msgstr ""
81
-
82
- #: includes/admin/wsl.admin.ui.php:588
83
- #, php-format
84
- msgid "What's new on WSL %s"
85
- msgstr ""
86
-
87
- #: includes/admin/wsl.admin.ui.php:591
88
- msgid ""
89
- "In a similar way to WordPress plugins, WSL uses <a href=\"options-general."
90
- "php?page=wordpress-social-login&wslp=components\">Components</a>"
91
- msgstr ""
92
-
93
- #: includes/admin/wsl.admin.ui.php:592
94
- msgid "<b>Email Validation</b> is replaced with <b>Profile Completion</b>"
95
- msgstr ""
96
-
97
- #: includes/admin/wsl.admin.ui.php:593
98
- msgid ""
99
- "<b>User Moderation</b> made compatible with <a href=\"http://wordpress.org/"
100
- "extend/plugins/theme-my-login/\" target=\"_blank\">Theme My Login</a> plugin"
101
- msgstr ""
102
-
103
- #: includes/admin/wsl.admin.ui.php:594
104
- msgid "A number of enhancements and new options now available"
105
- msgstr ""
106
-
107
- #: includes/admin/wsl.admin.ui.php:644
108
- msgid "Contributor License Agreement"
109
- msgstr ""
110
-
111
- #: includes/admin/wsl.admin.ui.php:649
112
- msgid ""
113
- "You are about to submit your contributions to the WordPress Social Login "
114
- "Website to be reviewed for inclusion in future versions"
115
- msgstr ""
116
-
117
- #: includes/admin/wsl.admin.ui.php:651
118
- msgid ""
119
- "You hereby grant the permission to publish your contribution, in whole or in "
120
- "part, and to made it available under the <b>MIT License</b>, for the "
121
- "<b>Wordpress community</b> to, freely use or misuse"
122
- msgstr ""
123
-
124
- #: includes/admin/wsl.admin.ui.php:657
125
- msgid "Hell No"
126
- msgstr ""
127
-
128
- #: includes/admin/wsl.admin.ui.php:658
129
- msgid "Yes, I agree to contribute my translation"
130
- msgstr ""
131
-
132
- #: includes/admin/wsl.admin.ui.php:662
133
- msgid "Help us localize WordPress Social Login"
134
- msgstr ""
135
-
136
- #: includes/admin/wsl.admin.ui.php:666
137
- msgid ""
138
- "You can <b>translate as much you pleases</b> as much <b>as you want</b>. You "
139
- "don't have to translate everything in this page, but every word counts. "
140
- "Ignore any string you want or aleardy translated. You could also use this "
141
- "tool to fix any typo you may find or to improve the current language "
142
- "expressions"
143
- msgstr ""
144
-
145
- #: includes/admin/wsl.admin.ui.php:668
146
- msgid ""
147
- "Your name allows us to recognize your contributions and bypass manual "
148
- "review, especially when you've been contributing in the past. So do supply "
149
- "some unique string, even if it's not your real name"
150
- msgstr ""
151
-
152
- #: includes/admin/wsl.admin.ui.php:670
153
- msgid ""
154
- "All the texts on this page are automatically extracted and generated on the "
155
- "form beside. If the translation tool has scapped something you may consider "
156
- "as irrelevant, please leave that particular field empty"
157
- msgstr ""
158
-
159
- #: includes/admin/wsl.admin.ui.php:672
160
- msgid ""
161
- "Your contributions will be sent to the WordPress Social Login website for "
162
- "inclusion in future versions"
163
- msgstr ""
164
-
165
- #: includes/admin/wsl.admin.ui.php:674
166
- msgid "Thanks!"
167
- msgstr ""
168
-
169
- #: includes/admin/wsl.admin.ui.php:682
170
- msgid "Your Name"
171
- msgstr ""
172
-
173
- #: includes/admin/wsl.admin.ui.php:682 includes/admin/wsl.admin.ui.php:688
174
- msgid "optional"
175
- msgstr ""
176
-
177
- #: includes/admin/wsl.admin.ui.php:688
178
- msgid "Comment"
179
- msgstr ""
180
-
181
- #: includes/admin/wsl.admin.ui.php:694
182
- msgid "Target Language"
183
- msgstr ""
184
-
185
- #: includes/admin/wsl.admin.ui.php:703
186
- msgid "Submit changes"
187
- msgstr ""
188
-
189
- #: includes/admin/wsl.admin.ui.php:769
190
- msgid "Help us translate this page into your language"
191
- msgstr "私たちは、このページのローカライズに役立つ"
192
-
193
- #: includes/admin/components/advanced/index.php:47
194
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:62
195
- msgid "Advanced Settings"
196
- msgstr ""
197
-
198
- #: includes/admin/components/advanced/index.php:52
199
- msgid ""
200
- "<b>Please</b> for the love of <b>God</b>, stay out of Advanced.. unless you "
201
- "are Advanced and you know what you are doing"
202
- msgstr ""
203
-
204
- #: includes/admin/components/advanced/index.php:61
205
- msgid "WSL Base URL"
206
- msgstr ""
207
-
208
- #: includes/admin/components/advanced/index.php:68
209
- msgid "WSL Base PATH"
210
- msgstr ""
211
-
212
- #: includes/admin/components/advanced/index.php:75
213
- msgid "Hybridauth endpoint URL"
214
- msgstr ""
215
-
216
- #: includes/admin/components/advanced/index.php:82
217
- msgid "WSL top bar menu"
218
- msgstr ""
219
-
220
- #: includes/admin/components/advanced/index.php:85
221
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:38
222
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:47
223
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:72
224
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:81
225
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:174
226
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:211
227
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:249
228
- msgid "Yes"
229
- msgstr ""
230
-
231
- #: includes/admin/components/advanced/index.php:86
232
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:39
233
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:48
234
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:73
235
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:82
236
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:175
237
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:212
238
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:250
239
- msgid "No"
240
- msgstr ""
241
-
242
- #: includes/admin/components/advanced/index.php:98
243
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:275
244
- #: includes/admin/components/contacts/index.php:98
245
- #: includes/admin/components/diagnostics/index.php:64
246
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:144
247
- #: includes/admin/components/networks/wsl.components.networks.setup.php:271
248
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:40
249
- msgid "Save Settings"
250
- msgstr ""
251
-
252
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:27
253
- msgid "WSL Widget"
254
- msgstr ""
255
-
256
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:31
257
- msgid ""
258
- "Here you can tell Bouncer if you are accepting new users registration and "
259
- "authentication into your website or not any more. Note that Bouncer only "
260
- "works for WSL and will not interfere with users authenticating through the "
261
- "regulars wordpress Login and Register pages with their usernames and "
262
- "passwords (to to achieve that kind of restrictions, you may need to use "
263
- "another plugin(s) in combination with WSL)."
264
- msgstr ""
265
-
266
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:35
267
- msgid "Accept new registration"
268
- msgstr ""
269
-
270
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:44
271
- msgid "Allow authentication"
272
- msgstr ""
273
-
274
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:58
275
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:45
276
- msgid "Profile Completion"
277
- msgstr ""
278
-
279
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:62
280
- msgid ""
281
- "Select required fields. If a social network doesn't return them, Bouncer "
282
- "will then ask your visitors to fill additional form to provide them when "
283
- "registering."
284
- msgstr ""
285
-
286
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:65
287
- msgid ""
288
- "You may activate <b>Profile Completion</b> for both <b>E-mail</b> and "
289
- "<b>Username</b>, but keep in mind, the idea behind <b>social login</b> is to "
290
- "avoid forms and remove all the hassle of registration"
291
- msgstr ""
292
-
293
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:69
294
- msgid "Require E-mail"
295
- msgstr ""
296
-
297
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:78
298
- msgid "Allow Username change"
299
- msgstr ""
300
-
301
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:92
302
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:111
303
- msgid "User Moderation"
304
- msgstr ""
305
-
306
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:96
307
- msgid ""
308
- "<b>User Moderation</b> will define how <b>Bouncer</b> should behave with new "
309
- "regsitred users:"
310
- msgstr ""
311
-
312
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:99
313
- msgid "<b>None</b>: No moderation required."
314
- msgstr ""
315
-
316
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:100
317
- msgid ""
318
- "<b>E-mail Confirmation</b>: New users will need to be confirm their e-mail "
319
- "address before they may log in"
320
- msgstr ""
321
-
322
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:101
323
- msgid ""
324
- "<b>Admin Approval</b>: New users will need to be approved by an "
325
- "administrator before they may log in"
326
- msgstr ""
327
-
328
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:104
329
- msgid ""
330
- "Both <b>Admin Approval</b> and <b>E-mail Confirmation</b> requires <a href="
331
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
332
- "\">Theme My Login</a> plugin to be installed. As there is no point for "
333
- "<b>WordPress Social Login</b> to reinvent the wheel"
334
- msgstr ""
335
-
336
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:107
337
- msgid ""
338
- "<b>User Moderation</b> was purposely made compatible with the <a href="
339
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
340
- "\">Theme My Login</a> for a number reasons: That plugin is good at what he "
341
- "does, a hell of a lot of people are using it and many have asked for it"
342
- msgstr ""
343
-
344
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:114
345
- msgid "None"
346
- msgstr ""
347
-
348
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:115
349
- msgid "E-mail Confirmation &mdash; Yield to Theme My Login plugin"
350
- msgstr ""
351
-
352
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:116
353
- msgid "Admin Approval &mdash; Yield to Theme My Login plugin"
354
- msgstr ""
355
-
356
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:126
357
- msgid "Membership level"
358
- msgstr ""
359
-
360
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:130
361
- msgid ""
362
- "Here you can define the default role for new users authenticating through "
363
- "WSL. The <code>Administrator</code> and <code>Editor</code> roles are not "
364
- "available for safety reasons"
365
- msgstr ""
366
-
367
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:133
368
- msgid ""
369
- "For more information about wordpress users roles and capabilities refer to "
370
- "<a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs."
371
- "_Role_Table\" target=\"_blank\">http://codex.wordpress.org/"
372
- "Roles_and_Capabilities</a>"
373
- msgstr ""
374
-
375
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:136
376
- msgid ""
377
- "If <b>User Moderation</b> is set to <code>Admin Approval</code> then "
378
- "<b>Membership level</b> will be ignored"
379
- msgstr ""
380
-
381
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:140
382
- msgid "New User Default Role"
383
- msgstr ""
384
-
385
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:143
386
- msgid "Safe"
387
- msgstr ""
388
-
389
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:144
390
- msgid "&mdash; Wordpress User Default Role &mdash;"
391
- msgstr ""
392
-
393
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:145
394
- msgid "&mdash; No role for this site &mdash;"
395
- msgstr ""
396
-
397
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:146
398
- msgid "Subscriber"
399
- msgstr ""
400
-
401
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:149
402
- msgid "Be careful with these"
403
- msgstr ""
404
-
405
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:150
406
- msgid "Author"
407
- msgstr ""
408
-
409
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:151
410
- msgid "Contributor"
411
- msgstr ""
412
-
413
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:162
414
- msgid "Filters by emails domains name"
415
- msgstr ""
416
-
417
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:166
418
- msgid "Restrict registration to a limited number of domains name."
419
- msgstr ""
420
-
421
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:167
422
- msgid ""
423
- "Insert one email address per line and try to keep this list short. On "
424
- "<code>Bounce text</code> insert the text you want to display for rejected "
425
- "users. ex: <code>gmail.com</code>, without '@'."
426
- msgstr ""
427
-
428
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:171
429
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:208
430
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:246
431
- #: includes/admin/components/contacts/index.php:51
432
- #: includes/admin/components/contacts/index.php:58
433
- #: includes/admin/components/contacts/index.php:65
434
- #: includes/admin/components/contacts/index.php:72
435
- #: includes/admin/components/contacts/index.php:79
436
- #: includes/admin/components/diagnostics/index.php:61
437
- #: includes/admin/components/networks/wsl.components.networks.setup.php:109
438
- msgid "Enabled"
439
- msgstr ""
440
-
441
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:180
442
- msgid "Domains list"
443
- msgstr ""
444
-
445
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:186
446
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:223
447
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:261
448
- msgid "Bounce text"
449
- msgstr ""
450
-
451
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:199
452
- msgid "Filters by e-mails addresses"
453
- msgstr ""
454
-
455
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:203
456
- msgid "Restrict registration to a limited number of emails addresses."
457
- msgstr ""
458
-
459
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:204
460
- msgid ""
461
- "Insert one email address per line and try to keep this list short. On "
462
- "<code>Bounce text</code> insert the text you want to display for rejected "
463
- "users. ex: <code>hybridauth@gmail.com</code>"
464
- msgstr ""
465
-
466
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:217
467
- msgid "E-mails list"
468
- msgstr ""
469
-
470
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:236
471
- msgid "Filters by profile urls"
472
- msgstr ""
473
-
474
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:240
475
- msgid "Restrict registration to a limited number of profile urls."
476
- msgstr ""
477
-
478
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:241
479
- msgid ""
480
- "<b>Note</b>: If a social network provide the user email, then use 'Filters "
481
- "by e-mails addresses' instead. Providers like Facebook provide multiples "
482
- "profiles URLs per user and WSL won't be able to reconize them."
483
- msgstr ""
484
-
485
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:242
486
- msgid ""
487
- "Insert one email address per line and try to keep this list short. On "
488
- "<code>Bounce text</code> insert the text you want to display for rejected "
489
- "users. ex: <code>http://twitter.com/HybridAuth</code>, <code>https://plus."
490
- "google.com/u/0/108839241301472312344</code>"
491
- msgstr ""
492
-
493
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:255
494
- msgid "Profile urls"
495
- msgstr ""
496
-
497
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:26
498
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:26
499
- msgid "What's This?"
500
- msgstr ""
501
-
502
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:30
503
- msgid "Hey, meet our friend, the Bouncer"
504
- msgstr ""
505
-
506
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:33
507
- msgid ""
508
- "Ever been in trouble with one of <a href=\"http://www.flickr.com/search/?"
509
- "q=bouncer+doorman&z=e\" target=\"_blank\">these guys</a>? Well, this module "
510
- "have more or less the same role, and he will try his best to piss your users "
511
- "off until they meet your requirements."
512
- msgstr ""
513
-
514
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:37
515
- msgid ""
516
- "This feature is most suited for small businesses and folks running a closed-"
517
- "door blog between friends or coworkers."
518
- msgstr ""
519
-
520
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:40
521
- msgid "Available settings"
522
- msgstr ""
523
-
524
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:43
525
- msgid "Enable/Disable Registration"
526
- msgstr ""
527
-
528
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:44
529
- msgid "Enable/Disable Authentication"
530
- msgstr ""
531
-
532
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:46
533
- msgid "Users moderation"
534
- msgstr ""
535
-
536
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:47
537
- msgid "Users roles"
538
- msgstr ""
539
-
540
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:48
541
- msgid "Restrictions (by emails, domains, profiles urls)"
542
- msgstr ""
543
-
544
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:51
545
- msgid "IMPORTANT!"
546
- msgstr ""
547
-
548
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:54
549
- msgid ""
550
- "All the settings on this page without exception are only valid for users "
551
- "authenticating through <b>WordPress Social Login Widget"
552
- msgstr ""
553
-
554
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:57
555
- msgid ""
556
- "Users authenticating through the regulars Wordpress Login and Register pages "
557
- "with their usernames and passwords WILL NOT be affected."
558
- msgstr ""
559
-
560
- #: includes/admin/components/components/wsl.components.help.gallery.php:30
561
- msgid "Other Components available"
562
- msgstr ""
563
-
564
- #: includes/admin/components/components/wsl.components.help.gallery.php:58
565
- msgid "WordPress Social Login for BuddyPress"
566
- msgstr ""
567
-
568
- #: includes/admin/components/components/wsl.components.help.gallery.php:60
569
- msgid "Make WordPress Social Login compatible with BuddyPress"
570
- msgstr ""
571
-
572
- #: includes/admin/components/components/wsl.components.help.gallery.php:61
573
- msgid "Widget integration, xProfiles mapping and more"
574
- msgstr ""
575
-
576
- #: includes/admin/components/components/wsl.components.help.gallery.php:63
577
- msgid "Install Now"
578
- msgstr ""
579
-
580
- #: includes/admin/components/components/wsl.components.help.gallery.php:64
581
- msgid "Visit plugin site"
582
- msgstr ""
583
-
584
- #: includes/admin/components/components/wsl.components.help.gallery.php:69
585
- msgid "Build yours"
586
- msgstr ""
587
-
588
- #: includes/admin/components/components/wsl.components.help.gallery.php:71
589
- msgid ""
590
- "Looking to build your own custom <b>WordPress Social Login</b> extenstion or "
591
- "component? Well, it's pretty easy. Just RTFM :)"
592
- msgstr ""
593
-
594
- #: includes/admin/components/components/wsl.components.help.gallery.php:74
595
- msgid "WSL Developer API"
596
- msgstr ""
597
-
598
- #: includes/admin/components/components/wsl.components.help.gallery.php:75
599
- msgid "WSL on Github"
600
- msgstr ""
601
-
602
- #: includes/admin/components/components/wsl.components.help.setup.php:29
603
- #: includes/admin/components/components/wsl.components.help.setup.php:37
604
- msgid "Component"
605
- msgstr ""
606
-
607
- #: includes/admin/components/components/wsl.components.help.setup.php:30
608
- #: includes/admin/components/components/wsl.components.help.setup.php:38
609
- msgid "Description"
610
- msgstr ""
611
-
612
- #: includes/admin/components/components/wsl.components.help.setup.php:67
613
- msgid "View"
614
- msgstr ""
615
-
616
- #: includes/admin/components/components/wsl.components.help.setup.php:72
617
- msgid "Disable"
618
- msgstr ""
619
-
620
- #: includes/admin/components/components/wsl.components.help.setup.php:74
621
- msgid "Enable"
622
- msgstr ""
623
-
624
- #: includes/admin/components/contacts/index.php:39
625
- msgid "Settings"
626
- msgstr ""
627
-
628
- #: includes/admin/components/contacts/index.php:43
629
- msgid ""
630
- "<b>WordPress Social Login</b> is now introducing <b>Contacts Import</b> as a "
631
- "new feature. When enabled, users authenticating through WordPress Social "
632
- "Login will be asked for the authorisation to import their contact list. Note "
633
- "that some social networks do not provide certains of their users information "
634
- "like contacts emails, photos and or profile urls"
635
- msgstr ""
636
-
637
- #: includes/admin/components/contacts/index.php:45
638
- msgid "Enable contacts import for"
639
- msgstr ""
640
-
641
- #: includes/admin/components/contacts/index.php:52
642
- #: includes/admin/components/contacts/index.php:59
643
- #: includes/admin/components/contacts/index.php:66
644
- #: includes/admin/components/contacts/index.php:73
645
- #: includes/admin/components/contacts/index.php:80
646
- #: includes/admin/components/diagnostics/index.php:62
647
- msgid "Disabled"
648
- msgstr ""
649
-
650
- #: includes/admin/components/contacts/index.php:86
651
- msgid "Notes"
652
- msgstr ""
653
-
654
- #: includes/admin/components/contacts/index.php:88
655
- msgid ""
656
- "To enable contacts import from these social network, you need first to "
657
- "enabled them on the <a href=\"options-general.php?page=wordpress-social-"
658
- "login&wslp=networks\"><b>Networks</b></a> tab and register the required "
659
- "application"
660
- msgstr ""
661
-
662
- #: includes/admin/components/contacts/index.php:89
663
- msgid ""
664
- "<b>WSL</b> will try to import as much information about a user contacts as "
665
- "he was able to pull from the social networks APIs."
666
- msgstr ""
667
-
668
- #: includes/admin/components/contacts/index.php:90
669
- msgid ""
670
- "All contacts data are sotred into your database on the table: "
671
- "<code>`wsluserscontacts`</code>"
672
- msgstr ""
673
-
674
- #: includes/admin/components/contacts/index.php:107
675
- msgid "Users contacts list preview"
676
- msgstr ""
677
-
678
- #: includes/admin/components/contacts/index.php:114
679
- #, php-format
680
- msgid "%s contact's list"
681
- msgstr ""
682
-
683
- #: includes/admin/components/contacts/index.php:121
684
- #: includes/admin/components/contacts/index.php:130
685
- #: includes/widgets/wsl.auth.widget.php:299
686
- msgid "Provider"
687
- msgstr ""
688
-
689
- #: includes/admin/components/contacts/index.php:122
690
- #: includes/admin/components/contacts/index.php:131
691
- msgid "User"
692
- msgstr ""
693
-
694
- #: includes/admin/components/contacts/index.php:123
695
- #: includes/admin/components/contacts/index.php:132
696
- msgid "Contact Name"
697
- msgstr ""
698
-
699
- #: includes/admin/components/contacts/index.php:124
700
- #: includes/admin/components/contacts/index.php:133
701
- msgid "Contact Email"
702
- msgstr ""
703
-
704
- #: includes/admin/components/contacts/index.php:125
705
- #: includes/admin/components/contacts/index.php:134
706
- msgid "Contact Profile Url"
707
- msgstr ""
708
-
709
- #: includes/admin/components/contacts/index.php:150
710
- msgid "No contacts found"
711
- msgstr ""
712
-
713
- #: includes/admin/components/diagnostics/index.php:24
714
- msgid "Requirements test"
715
- msgstr ""
716
-
717
- #: includes/admin/components/diagnostics/index.php:27
718
- msgid ""
719
- "In order for <b>WordPress Social Login</b> to work properly, your server "
720
- "should meet certain requirements. These \"requirements\" <br />and \"services"
721
- "\" are usually offered by default by most \"modern\" web hosting providers, "
722
- "however some complications may <br />occur with <b>shared hosting</b> and, "
723
- "or <b>custom wordpress installations</b>"
724
- msgstr ""
725
-
726
- #: includes/admin/components/diagnostics/index.php:30
727
- msgid "The minimum server requirements are"
728
- msgstr ""
729
-
730
- #: includes/admin/components/diagnostics/index.php:33
731
- msgid "PHP >= 5.2.0 installed"
732
- msgstr ""
733
-
734
- #: includes/admin/components/diagnostics/index.php:34
735
- msgid "WSL Endpoint URLs reachable"
736
- msgstr ""
737
-
738
- #: includes/admin/components/diagnostics/index.php:35
739
- msgid "PHP's default SESSION handling"
740
- msgstr ""
741
-
742
- #: includes/admin/components/diagnostics/index.php:36
743
- msgid "PHP/CURL/SSL Extension enabled"
744
- msgstr ""
745
-
746
- #: includes/admin/components/diagnostics/index.php:37
747
- msgid "PHP/JSON Extension enabled"
748
- msgstr ""
749
-
750
- #: includes/admin/components/diagnostics/index.php:38
751
- msgid "PHP/REGISTER_GLOBALS Off"
752
- msgstr ""
753
-
754
- #: includes/admin/components/diagnostics/index.php:39
755
- msgid "jQuery installed on WordPress backoffice"
756
- msgstr ""
757
-
758
- #: includes/admin/components/diagnostics/index.php:42
759
- msgid ""
760
- "You can run the <b>WordPress Social Login Requirements Test</b> by clicking "
761
- "the button bellow"
762
- msgstr ""
763
-
764
- #: includes/admin/components/diagnostics/index.php:46
765
- msgid "Run the plugin requirements test"
766
- msgstr ""
767
-
768
- #: includes/admin/components/diagnostics/index.php:47
769
- msgid "Website Information"
770
- msgstr ""
771
-
772
- #: includes/admin/components/diagnostics/index.php:53
773
- msgid "Development mode"
774
- msgstr ""
775
-
776
- #: includes/admin/components/diagnostics/index.php:56
777
- msgid ""
778
- "By enabling the development mode, this plugin will try generate and display "
779
- "a technical reports when something goes wrong. <br />This report can help "
780
- "your figure out the root of any issues you may runs into, or you can also "
781
- "send it to the plugin developer. <br />Its recommend to set the Development "
782
- "mode to <b style=\"color:red\">Disabled</b> on production."
783
- msgstr ""
784
-
785
- #: includes/admin/components/help/index.php:25
786
- msgid "Troubleshooting"
787
- msgstr ""
788
-
789
- #: includes/admin/components/help/index.php:27
790
- msgid "WSL Diagnostics"
791
- msgstr ""
792
-
793
- #: includes/admin/components/help/index.php:29
794
- msgid "System information"
795
- msgstr ""
796
-
797
- #: includes/admin/components/help/index.php:32
798
- msgid ""
799
- "If you run into any issue, you can access the <b>WordPress Social Login "
800
- "Diagnostics</b> to check the <b>Plugin Requirements</b> or to enable the "
801
- "<b>Development mode</b>"
802
- msgstr ""
803
-
804
- #: includes/admin/components/help/index.php:35
805
- msgid ""
806
- "Remember to include your System information when posting support requests"
807
- msgstr ""
808
-
809
- #: includes/admin/components/help/index.php:39
810
- msgid "Documentation"
811
- msgstr ""
812
-
813
- #: includes/admin/components/help/index.php:41
814
- msgid ""
815
- "The complete <b>User Guide</b> can be found at\n"
816
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target="
817
- "\"_blank\">hybridauth.sourceforge.net/wsl/index.html</a>"
818
- msgstr ""
819
-
820
- #: includes/admin/components/help/index.php:47
821
- msgid "FAQs"
822
- msgstr ""
823
-
824
- #: includes/admin/components/help/index.php:49
825
- msgid ""
826
- "A list of <b>Frequently asked questions</b> can be found at\n"
827
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/faq.html\" target="
828
- "\"_blank\">hybridauth.sourceforge.net/wsl/faq.html</a>"
829
- msgstr ""
830
-
831
- #: includes/admin/components/help/index.php:55
832
- msgid "Support"
833
- msgstr ""
834
-
835
- #: includes/admin/components/help/index.php:57
836
- msgid ""
837
- "To get help and support refer to <a href=\"http://hybridauth.sourceforge.net/"
838
- "wsl/support.html\" target=\"_blank\">http://hybridauth.sourceforge.net/wsl/"
839
- "support.html</a>"
840
- msgstr ""
841
-
842
- #: includes/admin/components/help/index.php:62
843
- msgid "Credits"
844
- msgstr ""
845
-
846
- #: includes/admin/components/help/index.php:64
847
- msgid ""
848
- "WordPress Social Login was created by <a href=\"http://profiles.wordpress."
849
- "org/miled/\" target=\"_blank\">Mohamed Mrassi</a> (a.k.a Miled) and <a href="
850
- "\"https://github.com/hybridauth/WordPress-Social-Login/graphs/contributors\" "
851
- "target=\"_blank\">contributors</a>"
852
- msgstr ""
853
-
854
- #: includes/admin/components/help/index.php:65
855
- msgid ""
856
- "Many other people have also contributed with <br />constructive discussions, "
857
- "support and by submitting patches"
858
- msgstr ""
859
-
860
- #: includes/admin/components/help/index.php:70
861
- msgid "License"
862
- msgstr ""
863
-
864
- #: includes/admin/components/help/index.php:72
865
- msgid ""
866
- "<b>WordPress Social Login</b> is an open source software licenced under The "
867
- "MIT License (MIT)"
868
- msgstr ""
869
-
870
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:27
871
- msgid "Basic Settings"
872
- msgstr ""
873
-
874
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:32
875
- msgid "Connect with caption"
876
- msgstr ""
877
-
878
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:38
879
- msgid "Social icon set"
880
- msgstr ""
881
-
882
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:41
883
- msgid "WPZOOM social networking icon set"
884
- msgstr ""
885
-
886
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:42
887
- msgid "Icondock vector social media icons"
888
- msgstr ""
889
-
890
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:47
891
- msgid "Users avatars"
892
- msgstr ""
893
-
894
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:50
895
- msgid "Display the default users avatars"
896
- msgstr ""
897
-
898
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:51
899
- msgid "Display users avatars from social networks when available"
900
- msgstr ""
901
-
902
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:67
903
- msgid "Redirect URL"
904
- msgstr ""
905
-
906
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:73
907
- msgid "Authentication flow"
908
- msgstr ""
909
-
910
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:76
911
- msgid "Using popup window"
912
- msgstr ""
913
-
914
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:77
915
- msgid "No popup window"
916
- msgstr ""
917
-
918
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:82
919
- msgid "Widget display"
920
- msgstr ""
921
-
922
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:85
923
- msgid "Display the widget in the comments area, login and register forms"
924
- msgstr ""
925
-
926
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:86
927
- msgid "Display the widget ONLY in the comments area"
928
- msgstr ""
929
-
930
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:87
931
- msgid "Display the widget ONLY in the login form"
932
- msgstr ""
933
-
934
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:92
935
- msgid "Notification"
936
- msgstr ""
937
-
938
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:95
939
- msgid "No notification"
940
- msgstr ""
941
-
942
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:96
943
- msgid "Notify ONLY the blog admin of a new user"
944
- msgstr ""
945
-
946
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:107
947
- msgid "Custom CSS"
948
- msgstr ""
949
-
950
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:112
951
- msgid "Widget CSS"
952
- msgstr ""
953
-
954
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:114
955
- msgid ""
956
- "To customize the default widget styles you can either: edit the css file "
957
- "<strong>/wordpress-social-login/assets/css/style.css</strong>, or change it "
958
- "from this text area"
959
- msgstr ""
960
-
961
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:118
962
- msgid "The basic widget markup is the following"
963
- msgstr ""
964
-
965
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:30
966
- msgid "Widget Customization"
967
- msgstr ""
968
-
969
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:33
970
- msgid ""
971
- "On this section you can fully customize <b>WordPress Social Login Widget</b> "
972
- "and define the way you want it to look and behave"
973
- msgstr ""
974
-
975
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:37
976
- msgid ""
977
- "<b>WordPress Social Login Widget</b> will be generated into the comments, "
978
- "login and register forms enabling your website vistors and customers to "
979
- "login via social networks"
980
- msgstr ""
981
-
982
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:41
983
- msgid ""
984
- "If this widget does not show up on your custom theme or you want to add it "
985
- "somewhere else then refer to the next section"
986
- msgstr ""
987
-
988
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:44
989
- msgid "Custom integration"
990
- msgstr ""
991
-
992
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:47
993
- msgid ""
994
- "If you want to add the social login widget to another location in your "
995
- "theme, you can insert the following code in that location"
996
- msgstr ""
997
-
998
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:49
999
- msgid "Or, for posts and pages"
1000
- msgstr ""
1001
-
1002
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:54
1003
- msgid ""
1004
- "<b>[wordpress_social_login]</b> shortcode can be used in combination with <a "
1005
- "href=\"http://wordpress.org/extend/plugins/html-javascript-adder/\" target="
1006
- "\"_blank\">HTML Javascript Adder</a> plugin to be add WSL Widget to your "
1007
- "website sidebar"
1008
- msgstr ""
1009
-
1010
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:58
1011
- msgid ""
1012
- "Also, if you are a developer or designer then you can customize it to your "
1013
- "heart's content. For more inofmation refer to <b><a href=\"http://hybridauth."
1014
- "sourceforge.net/wsl/customize.html\" target=\"_blank\">User Guide</a></b>"
1015
- msgstr ""
1016
-
1017
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:61
1018
- msgid "Widget preview"
1019
- msgstr ""
1020
-
1021
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:64
1022
- msgid "This is a preview of what should be on the comments area"
1023
- msgstr ""
1024
-
1025
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:65
1026
- msgid "Do not test it here"
1027
- msgstr ""
1028
-
1029
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:24
1030
- msgid ""
1031
- "And you could add even more of them, <b>Just Click</b> and we will guide you "
1032
- "through"
1033
- msgstr ""
1034
-
1035
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:48
1036
- msgid "Well! none left."
1037
- msgstr ""
1038
-
1039
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:36
1040
- msgid "Insights"
1041
- msgstr ""
1042
-
1043
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:40
1044
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:49
1045
- msgid "Conversions"
1046
- msgstr ""
1047
-
1048
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:43
1049
- msgid "WP users"
1050
- msgstr ""
1051
-
1052
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:46
1053
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:77
1054
- msgid "WSL users"
1055
- msgstr ""
1056
-
1057
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:59
1058
- msgid "By provider"
1059
- msgstr ""
1060
-
1061
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:85
1062
- msgid "By gender"
1063
- msgstr ""
1064
-
1065
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:108
1066
- msgid "By age"
1067
- msgstr ""
1068
-
1069
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:139
1070
- msgid "yrs in average"
1071
- msgstr ""
1072
-
1073
- #: includes/admin/components/networks/wsl.components.networks.setup.php:126
1074
- msgid "Application ID"
1075
- msgstr ""
1076
-
1077
- #: includes/admin/components/networks/wsl.components.networks.setup.php:128
1078
- #: includes/admin/components/networks/wsl.components.networks.setup.php:134
1079
- #: includes/admin/components/networks/wsl.components.networks.setup.php:140
1080
- msgid "Where do I get this info?"
1081
- msgstr ""
1082
-
1083
- #: includes/admin/components/networks/wsl.components.networks.setup.php:132
1084
- msgid "Application Key"
1085
- msgstr ""
1086
-
1087
- #: includes/admin/components/networks/wsl.components.networks.setup.php:138
1088
- msgid "Application Secret"
1089
- msgstr ""
1090
-
1091
- #: includes/admin/components/networks/wsl.components.networks.setup.php:149
1092
- msgid "Note"
1093
- msgstr ""
1094
-
1095
- #: includes/admin/components/networks/wsl.components.networks.setup.php:151
1096
- #, php-format
1097
- msgid ""
1098
- "<b>%s</b> do not provide their user's email address and by default a random "
1099
- "email will then be generated for them instead"
1100
- msgstr ""
1101
-
1102
- #: includes/admin/components/networks/wsl.components.networks.setup.php:153
1103
- msgid ""
1104
- "To change this behaviour and to force new registered users to provide their "
1105
- "emails before they get in, goto <b><a href=\"options-general.php?"
1106
- "page=wordpress-social-login&wslp=bouncer\">Bouncer</a></b> and enable "
1107
- "<b>Profile Completion</b>"
1108
- msgstr ""
1109
-
1110
- #: includes/admin/components/networks/wsl.components.networks.setup.php:163
1111
- msgid ""
1112
- "<span style=\"color:#CB4B16;\">Application</span> id and secret (also "
1113
- "sometimes referred as <span style=\"color:#CB4B16;\">Customer</span> key and "
1114
- "secret or <span style=\"color:#CB4B16;\">Client</span> id and secret) are "
1115
- "what we call an application credentials"
1116
- msgstr ""
1117
-
1118
- #: includes/admin/components/networks/wsl.components.networks.setup.php:165
1119
- #, php-format
1120
- msgid ""
1121
- "This application will link your website <code>%s</code> to <code>%s API</"
1122
- "code> and these credentials are needed in order for <b>%s</b> users to "
1123
- "access your website"
1124
- msgstr ""
1125
-
1126
- #: includes/admin/components/networks/wsl.components.networks.setup.php:168
1127
- msgid ""
1128
- "These credentials may also differ in format, name and content depending on "
1129
- "the social network."
1130
- msgstr ""
1131
-
1132
- #: includes/admin/components/networks/wsl.components.networks.setup.php:172
1133
- #, php-format
1134
- msgid ""
1135
- "To enable authentication with this provider and to register a new <b>%s API "
1136
- "Application</b>, carefully follow the steps"
1137
- msgstr ""
1138
-
1139
- #: includes/admin/components/networks/wsl.components.networks.setup.php:175
1140
- #, php-format
1141
- msgid "<b>Done.</b> Nothing more required for <b>%s</b>"
1142
- msgstr ""
1143
-
1144
- #: includes/admin/components/networks/wsl.components.networks.setup.php:259
1145
- msgid "And that's it!"
1146
- msgstr ""
1147
-
1148
- #: includes/admin/components/networks/wsl.components.networks.setup.php:261
1149
- #, php-format
1150
- msgid ""
1151
- "If for some reason you still can't figure it out, first try to a) <a class="
1152
- "\"button-primary\" href=\"https://www.google.com/search?q=%s API create "
1153
- "application\" target=\"_blank\">Google it</a>, then check it on b) <a class="
1154
- "\"button-primary\" href=\"http://www.youtube.com/results?search_query=%s API "
1155
- "create application \" target=\"_blank\">Youtube</a> and if nothing works c) "
1156
- "<a class=\"button-primary\" href=\"options-general.php?page=wordpress-social-"
1157
- "login&wslp=help\">ask for support</a>"
1158
- msgstr ""
1159
-
1160
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:21
1161
- msgid "Why, hello there"
1162
- msgstr ""
1163
-
1164
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:29
1165
- msgid ""
1166
- "If you are still new to things, we recommend that you read the <b><a href="
1167
- "\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
1168
- "\">Plugin User Guide</a></b> and to make sure your server settings meet this "
1169
- "<b><a href=\"options-general.php?page=wordpress-social-login&amp;"
1170
- "wslp=diagnostics\">Plugin Requirements</a></b>"
1171
- msgstr ""
1172
-
1173
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:32
1174
- msgid ""
1175
- "If you run into any issue then refer to <b><a href=\"options-general.php?"
1176
- "page=wordpress-social-login&wslp=help\">Help & Support</a></b> to konw how "
1177
- "to reach me"
1178
- msgstr ""
1179
-
1180
- #: includes/admin/components/users/wsl.components.users.list.php:30
1181
- #: includes/admin/components/users/wsl.components.users.list.php:41
1182
- msgid "Providers"
1183
- msgstr ""
1184
-
1185
- #: includes/admin/components/users/wsl.components.users.list.php:31
1186
- #: includes/admin/components/users/wsl.components.users.list.php:42
1187
- #: includes/settings/wsl.compatibilities.php:104
1188
- msgid "Username"
1189
- msgstr ""
1190
-
1191
- #: includes/admin/components/users/wsl.components.users.list.php:32
1192
- #: includes/admin/components/users/wsl.components.users.list.php:43
1193
- msgid "Full Name"
1194
- msgstr ""
1195
-
1196
- #: includes/admin/components/users/wsl.components.users.list.php:33
1197
- #: includes/admin/components/users/wsl.components.users.list.php:44
1198
- #: includes/settings/wsl.compatibilities.php:100
1199
- msgid "E-mail"
1200
- msgstr ""
1201
-
1202
- #: includes/admin/components/users/wsl.components.users.list.php:34
1203
- #: includes/admin/components/users/wsl.components.users.list.php:45
1204
- msgid "Profile URL"
1205
- msgstr ""
1206
-
1207
- #: includes/admin/components/users/wsl.components.users.list.php:35
1208
- #: includes/admin/components/users/wsl.components.users.list.php:46
1209
- #: includes/settings/wsl.initialization.php:400
1210
- msgid "Contacts"
1211
- msgstr ""
1212
-
1213
- #: includes/admin/components/users/wsl.components.users.list.php:36
1214
- #: includes/admin/components/users/wsl.components.users.list.php:47
1215
- msgid "Actions"
1216
- msgstr ""
1217
-
1218
- #: includes/admin/components/users/wsl.components.users.list.php:55
1219
- msgid "No users found"
1220
- msgstr ""
1221
-
1222
- #: includes/admin/components/users/wsl.components.users.profile.php:22
1223
- msgid "USER DOES NOT EXIST!"
1224
- msgstr ""
1225
-
1226
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1227
- msgid "User Profile"
1228
- msgstr ""
1229
-
1230
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1231
- #, php-format
1232
- msgid "as provided by %s"
1233
- msgstr ""
1234
-
1235
- #: includes/services/wsl.authentication.php:64
1236
- msgid "Bouncer say don't be silly!"
1237
- msgstr ""
1238
-
1239
- #: includes/services/wsl.authentication.php:70
1240
- msgid "Bouncer say this makes no sense."
1241
- msgstr ""
1242
-
1243
- #: includes/services/wsl.authentication.php:77
1244
- msgid "WSL is disabled!"
1245
- msgstr ""
1246
-
1247
- #: includes/services/wsl.authentication.php:99
1248
- msgid "Bouncer says this makes no sense."
1249
- msgstr ""
1250
-
1251
- #: includes/services/wsl.authentication.php:107
1252
- msgid "Bouncer say you are doin it wrong."
1253
- msgstr ""
1254
-
1255
- #: includes/services/wsl.authentication.php:114
1256
- msgid "You are already logged in as <b>%</b>."
1257
- msgstr ""
1258
-
1259
- #: includes/services/wsl.authentication.php:119
1260
- #: includes/services/wsl.authentication.php:559
1261
- msgid ""
1262
- "Error: Another plugin seems to be using HybridAuth Library and made "
1263
- "WordPress Social Login unusable. We recommand to find this plugin and to "
1264
- "kill it with fire!"
1265
- msgstr ""
1266
-
1267
- #: includes/services/wsl.authentication.php:130
1268
- msgid "Unknown or disabled provider"
1269
- msgstr ""
1270
-
1271
- #: includes/services/wsl.authentication.php:262
1272
- msgid "Unspecified error!"
1273
- msgstr ""
1274
-
1275
- #: includes/services/wsl.authentication.php:266
1276
- msgid "Unspecified error."
1277
- msgstr ""
1278
-
1279
- #: includes/services/wsl.authentication.php:267
1280
- msgid "Hybriauth configuration error."
1281
- msgstr ""
1282
-
1283
- #: includes/services/wsl.authentication.php:268
1284
- msgid "Provider not properly configured."
1285
- msgstr ""
1286
-
1287
- #: includes/services/wsl.authentication.php:269
1288
- msgid "Unknown or disabled provider."
1289
- msgstr ""
1290
-
1291
- #: includes/services/wsl.authentication.php:270
1292
- msgid "Missing provider application credentials."
1293
- msgstr ""
1294
-
1295
- #: includes/services/wsl.authentication.php:271
1296
- #, php-format
1297
- msgid ""
1298
- "<b>What does this error mean ?</b><br />Most likely, you didn't setup the "
1299
- "correct application credentials for this provider. These credentials are "
1300
- "required in order for <b>%s</b> users to access your website and for "
1301
- "WordPress Social Login to work."
1302
- msgstr ""
1303
-
1304
- #: includes/services/wsl.authentication.php:271
1305
- msgid ""
1306
- "<br />Instructions for use can be found in the <a href=\"http://hybridauth."
1307
- "sourceforge.net/wsl/configure.html\" target=\"_blank\">User Manual</a>."
1308
- msgstr ""
1309
-
1310
- #: includes/services/wsl.authentication.php:273
1311
- msgid ""
1312
- "Authentification failed. The user has canceled the authentication or the "
1313
- "provider refused the connection."
1314
- msgstr ""
1315
-
1316
- #: includes/services/wsl.authentication.php:274
1317
- msgid ""
1318
- "User profile request failed. Most likely the user is not connected to the "
1319
- "provider and he should to authenticate again."
1320
- msgstr ""
1321
-
1322
- #: includes/services/wsl.authentication.php:277
1323
- msgid "User not connected to the provider."
1324
- msgstr ""
1325
-
1326
- #: includes/services/wsl.authentication.php:280
1327
- msgid "Provider does not support this feature."
1328
- msgstr ""
1329
-
1330
- #: includes/services/wsl.authentication.php:323
1331
- msgid "Something bad happen!"
1332
- msgstr ""
1333
-
1334
- #: includes/services/wsl.authentication.php:389
1335
- msgid ""
1336
- "Note: This message can be disabled from the plugin settings by setting "
1337
- "<b>Development mode</b> to <b>Disabled</b>"
1338
- msgstr ""
1339
-
1340
- #: includes/services/wsl.authentication.php:418
1341
- msgid "Redirecting..."
1342
- msgstr ""
1343
-
1344
- #: includes/services/wsl.authentication.php:447
1345
- #, php-format
1346
- msgid "Contacting <b>%s</b>, please wait..."
1347
- msgstr ""
1348
-
1349
- #: includes/services/wsl.authentication.php:711
1350
- msgid "registration is now closed!"
1351
- msgstr ""
1352
-
1353
- #: includes/services/wsl.authentication.php:733
1354
- #, php-format
1355
- msgid "Unspecified error. #%d"
1356
- msgstr ""
1357
-
1358
- #: includes/services/wsl.authentication.php:882
1359
- msgid "An error occurred while creating a new user!"
1360
- msgstr ""
1361
-
1362
- #: includes/settings/wsl.compatibilities.php:92
1363
- msgid "Almost there, we just need to check a couple of things"
1364
- msgstr ""
1365
-
1366
- #: includes/settings/wsl.compatibilities.php:96
1367
- msgid "Continue"
1368
- msgstr ""
1369
-
1370
- #: includes/settings/wsl.compatibilities.php:108
1371
- msgid "E-mail is not valid!"
1372
- msgstr ""
1373
-
1374
- #: includes/settings/wsl.compatibilities.php:112
1375
- msgid "Username is not valid!"
1376
- msgstr ""
1377
-
1378
- #: includes/settings/wsl.compatibilities.php:116
1379
- msgid "That E-mail is already registered!"
1380
- msgstr ""
1381
-
1382
- #: includes/settings/wsl.compatibilities.php:120
1383
- msgid "That Username is already registered!"
1384
- msgstr ""
1385
-
1386
- #: includes/settings/wsl.compatibilities.php:124
1387
- msgid "You are now connected via"
1388
- msgstr ""
1389
-
1390
- #: includes/settings/wsl.compatibilities.php:140
1391
- msgid "Bouncer says no."
1392
- msgstr ""
1393
-
1394
- #: includes/settings/wsl.compatibilities.php:148
1395
- msgid "Bouncer say he refuses."
1396
- msgstr ""
1397
-
1398
- #: includes/settings/wsl.compatibilities.php:156
1399
- msgid "Bouncer say only Mundo can go where he pleases!"
1400
- msgstr ""
1401
-
1402
- #: includes/settings/wsl.initialization.php:59
1403
- #: includes/settings/wsl.initialization.php:87
1404
- msgid ""
1405
- "An installed plugin is trying to o-ver-write WordPress Social Login config "
1406
- "in a bad way."
1407
- msgstr ""
1408
-
1409
- #: includes/settings/wsl.initialization.php:373
1410
- msgid "WSL user profile"
1411
- msgstr ""
1412
-
1413
- #: includes/settings/wsl.initialization.php:374
1414
- msgid "WSL user contacts"
1415
- msgstr ""
1416
-
1417
- #: includes/settings/wsl.initialization.php:400
1418
- msgid "Profile"
1419
- msgstr ""
1420
-
1421
- #: includes/widgets/wsl.auth.widget.php:124
1422
- msgid ""
1423
- "<strong style=\"color:red;\">WordPress Social Login is not configured yet!</"
1424
- "strong><br />Please visit the <strong>Settings\\ WP Social Login</strong> "
1425
- "administration page to configure this plugin.<br />For more information "
1426
- "please refer to the plugin <a href=\"http://hybridauth.sourceforge.net/"
1427
- "userguide/Plugin_WordPress_Social_Login.html\">online user guide</a> or "
1428
- "contact us at <a href=\"http://hybridauth.sourceforge.net/\">hybridauth."
1429
- "sourceforge.net</a>"
1430
- msgstr ""
1431
-
1432
- #: includes/widgets/wsl.auth.widget.php:293
1433
- msgid "Social networks"
1434
- msgstr ""
1435
-
1436
- #: includes/widgets/wsl.auth.widget.php:300
1437
- msgid "Identity"
1438
- msgstr ""
1439
-
1440
- #: includes/widgets/wsl.auth.widget.php:336
1441
- msgid "Add more identities"
1442
- msgstr ""
1443
-
1444
- #: includes/widgets/wsl.auth.widget.php:375
1445
- msgid "Currently connected to:"
1446
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/wordpress-social-login-ru_RU.mo DELETED
Binary file
languages/wordpress-social-login-ru_RU.po DELETED
@@ -1,1446 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WordPress Social Login\n"
4
- "POT-Creation-Date: 2013-02-16 06:40+0100\n"
5
- "PO-Revision-Date: 2013-02-16 06:42+0100\n"
6
- "Last-Translator: Miled <hybridauth@gmail.com>\n"
7
- "Language-Team: WordPress Social Login <hybridauth@gmail.com>\n"
8
- "Language: Russian — Русский (ru_RU)\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.5.5\n"
13
-
14
- #: includes/admin/wsl.admin.ui.php:332
15
- msgid "Development mode is enabled!"
16
- msgstr ""
17
-
18
- #: includes/admin/wsl.admin.ui.php:407
19
- #: includes/services/wsl.authentication.php:637
20
- msgid "Something wrong!"
21
- msgstr ""
22
-
23
- #: includes/admin/wsl.admin.ui.php:412
24
- msgid ""
25
- "Unknown or Disabled <b>Component</b>! Check the list of enabled components "
26
- "or the typed URL"
27
- msgstr ""
28
-
29
- #: includes/admin/wsl.admin.ui.php:416
30
- msgid ""
31
- "If you believe you've found a problem with <b>WordPress Social Login</b>, be "
32
- "sure to let us know so we can fix it"
33
- msgstr ""
34
-
35
- #: includes/admin/wsl.admin.ui.php:422
36
- msgid "Report as bug"
37
- msgstr ""
38
-
39
- #: includes/admin/wsl.admin.ui.php:423
40
- msgid "Check enabled components"
41
- msgstr ""
42
-
43
- #: includes/admin/wsl.admin.ui.php:567
44
- msgid "Welcome!"
45
- msgstr ""
46
-
47
- #: includes/admin/wsl.admin.ui.php:569
48
- msgid ""
49
- "If you are still new to WordPress Social Login, we have provided a few "
50
- "walkthroughs to get you started"
51
- msgstr ""
52
-
53
- #: includes/admin/wsl.admin.ui.php:576
54
- msgid "Get Started"
55
- msgstr ""
56
-
57
- #: includes/admin/wsl.admin.ui.php:579
58
- msgid ""
59
- "<a href=\"http://hybridauth.sourceforge.net/wsl/configure.html\" target="
60
- "\"_blank\">Setup and Configuration</a>"
61
- msgstr ""
62
-
63
- #: includes/admin/wsl.admin.ui.php:580
64
- msgid ""
65
- "<a href=\"http://hybridauth.sourceforge.net/wsl/customize.html\" target="
66
- "\"_blank\">Customize WSL Widgets</a>"
67
- msgstr ""
68
-
69
- #: includes/admin/wsl.admin.ui.php:581
70
- msgid ""
71
- "<a href=\"http://hybridauth.sourceforge.net/wsl/userdata.html\" target="
72
- "\"_blank\">Manage users and contacts</a>"
73
- msgstr ""
74
-
75
- #: includes/admin/wsl.admin.ui.php:582
76
- msgid ""
77
- "<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
78
- "\">WSL User Guide</a> and <a href=\"http://hybridauth.sourceforge.net/wsl/"
79
- "faq.html\" target=\"_blank\">FAQ</a>"
80
- msgstr ""
81
-
82
- #: includes/admin/wsl.admin.ui.php:588
83
- #, php-format
84
- msgid "What's new on WSL %s"
85
- msgstr ""
86
-
87
- #: includes/admin/wsl.admin.ui.php:591
88
- msgid ""
89
- "In a similar way to WordPress plugins, WSL uses <a href=\"options-general."
90
- "php?page=wordpress-social-login&wslp=components\">Components</a>"
91
- msgstr ""
92
-
93
- #: includes/admin/wsl.admin.ui.php:592
94
- msgid "<b>Email Validation</b> is replaced with <b>Profile Completion</b>"
95
- msgstr ""
96
-
97
- #: includes/admin/wsl.admin.ui.php:593
98
- msgid ""
99
- "<b>User Moderation</b> made compatible with <a href=\"http://wordpress.org/"
100
- "extend/plugins/theme-my-login/\" target=\"_blank\">Theme My Login</a> plugin"
101
- msgstr ""
102
-
103
- #: includes/admin/wsl.admin.ui.php:594
104
- msgid "A number of enhancements and new options now available"
105
- msgstr ""
106
-
107
- #: includes/admin/wsl.admin.ui.php:644
108
- msgid "Contributor License Agreement"
109
- msgstr ""
110
-
111
- #: includes/admin/wsl.admin.ui.php:649
112
- msgid ""
113
- "You are about to submit your contributions to the WordPress Social Login "
114
- "Website to be reviewed for inclusion in future versions"
115
- msgstr ""
116
-
117
- #: includes/admin/wsl.admin.ui.php:651
118
- msgid ""
119
- "You hereby grant the permission to publish your contribution, in whole or in "
120
- "part, and to made it available under the <b>MIT License</b>, for the "
121
- "<b>Wordpress community</b> to, freely use or misuse"
122
- msgstr ""
123
-
124
- #: includes/admin/wsl.admin.ui.php:657
125
- msgid "Hell No"
126
- msgstr ""
127
-
128
- #: includes/admin/wsl.admin.ui.php:658
129
- msgid "Yes, I agree to contribute my translation"
130
- msgstr ""
131
-
132
- #: includes/admin/wsl.admin.ui.php:662
133
- msgid "Help us localize WordPress Social Login"
134
- msgstr "Помогите нам перевести эту страницу"
135
-
136
- #: includes/admin/wsl.admin.ui.php:666
137
- msgid ""
138
- "You can <b>translate as much you pleases</b> as much <b>as you want</b>. You "
139
- "don't have to translate everything in this page, but every word counts. "
140
- "Ignore any string you want or aleardy translated. You could also use this "
141
- "tool to fix any typo you may find or to improve the current language "
142
- "expressions"
143
- msgstr ""
144
-
145
- #: includes/admin/wsl.admin.ui.php:668
146
- msgid ""
147
- "Your name allows us to recognize your contributions and bypass manual "
148
- "review, especially when you've been contributing in the past. So do supply "
149
- "some unique string, even if it's not your real name"
150
- msgstr ""
151
-
152
- #: includes/admin/wsl.admin.ui.php:670
153
- msgid ""
154
- "All the texts on this page are automatically extracted and generated on the "
155
- "form beside. If the translation tool has scapped something you may consider "
156
- "as irrelevant, please leave that particular field empty"
157
- msgstr ""
158
-
159
- #: includes/admin/wsl.admin.ui.php:672
160
- msgid ""
161
- "Your contributions will be sent to the WordPress Social Login website for "
162
- "inclusion in future versions"
163
- msgstr ""
164
-
165
- #: includes/admin/wsl.admin.ui.php:674
166
- msgid "Thanks!"
167
- msgstr ""
168
-
169
- #: includes/admin/wsl.admin.ui.php:682
170
- msgid "Your Name"
171
- msgstr ""
172
-
173
- #: includes/admin/wsl.admin.ui.php:682 includes/admin/wsl.admin.ui.php:688
174
- msgid "optional"
175
- msgstr ""
176
-
177
- #: includes/admin/wsl.admin.ui.php:688
178
- msgid "Comment"
179
- msgstr ""
180
-
181
- #: includes/admin/wsl.admin.ui.php:694
182
- msgid "Target Language"
183
- msgstr ""
184
-
185
- #: includes/admin/wsl.admin.ui.php:703
186
- msgid "Submit changes"
187
- msgstr ""
188
-
189
- #: includes/admin/wsl.admin.ui.php:769
190
- msgid "Help us translate this page into your language"
191
- msgstr "Помогите нам перевести эту страницу"
192
-
193
- #: includes/admin/components/advanced/index.php:47
194
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:62
195
- msgid "Advanced Settings"
196
- msgstr ""
197
-
198
- #: includes/admin/components/advanced/index.php:52
199
- msgid ""
200
- "<b>Please</b> for the love of <b>God</b>, stay out of Advanced.. unless you "
201
- "are Advanced and you know what you are doing"
202
- msgstr ""
203
-
204
- #: includes/admin/components/advanced/index.php:61
205
- msgid "WSL Base URL"
206
- msgstr ""
207
-
208
- #: includes/admin/components/advanced/index.php:68
209
- msgid "WSL Base PATH"
210
- msgstr ""
211
-
212
- #: includes/admin/components/advanced/index.php:75
213
- msgid "Hybridauth endpoint URL"
214
- msgstr ""
215
-
216
- #: includes/admin/components/advanced/index.php:82
217
- msgid "WSL top bar menu"
218
- msgstr ""
219
-
220
- #: includes/admin/components/advanced/index.php:85
221
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:38
222
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:47
223
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:72
224
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:81
225
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:174
226
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:211
227
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:249
228
- msgid "Yes"
229
- msgstr ""
230
-
231
- #: includes/admin/components/advanced/index.php:86
232
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:39
233
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:48
234
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:73
235
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:82
236
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:175
237
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:212
238
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:250
239
- msgid "No"
240
- msgstr ""
241
-
242
- #: includes/admin/components/advanced/index.php:98
243
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:275
244
- #: includes/admin/components/contacts/index.php:98
245
- #: includes/admin/components/diagnostics/index.php:64
246
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:144
247
- #: includes/admin/components/networks/wsl.components.networks.setup.php:271
248
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:40
249
- msgid "Save Settings"
250
- msgstr ""
251
-
252
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:27
253
- msgid "WSL Widget"
254
- msgstr ""
255
-
256
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:31
257
- msgid ""
258
- "Here you can tell Bouncer if you are accepting new users registration and "
259
- "authentication into your website or not any more. Note that Bouncer only "
260
- "works for WSL and will not interfere with users authenticating through the "
261
- "regulars wordpress Login and Register pages with their usernames and "
262
- "passwords (to to achieve that kind of restrictions, you may need to use "
263
- "another plugin(s) in combination with WSL)."
264
- msgstr ""
265
-
266
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:35
267
- msgid "Accept new registration"
268
- msgstr ""
269
-
270
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:44
271
- msgid "Allow authentication"
272
- msgstr ""
273
-
274
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:58
275
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:45
276
- msgid "Profile Completion"
277
- msgstr ""
278
-
279
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:62
280
- msgid ""
281
- "Select required fields. If a social network doesn't return them, Bouncer "
282
- "will then ask your visitors to fill additional form to provide them when "
283
- "registering."
284
- msgstr ""
285
-
286
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:65
287
- msgid ""
288
- "You may activate <b>Profile Completion</b> for both <b>E-mail</b> and "
289
- "<b>Username</b>, but keep in mind, the idea behind <b>social login</b> is to "
290
- "avoid forms and remove all the hassle of registration"
291
- msgstr ""
292
-
293
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:69
294
- msgid "Require E-mail"
295
- msgstr ""
296
-
297
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:78
298
- msgid "Allow Username change"
299
- msgstr ""
300
-
301
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:92
302
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:111
303
- msgid "User Moderation"
304
- msgstr ""
305
-
306
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:96
307
- msgid ""
308
- "<b>User Moderation</b> will define how <b>Bouncer</b> should behave with new "
309
- "regsitred users:"
310
- msgstr ""
311
-
312
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:99
313
- msgid "<b>None</b>: No moderation required."
314
- msgstr ""
315
-
316
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:100
317
- msgid ""
318
- "<b>E-mail Confirmation</b>: New users will need to be confirm their e-mail "
319
- "address before they may log in"
320
- msgstr ""
321
-
322
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:101
323
- msgid ""
324
- "<b>Admin Approval</b>: New users will need to be approved by an "
325
- "administrator before they may log in"
326
- msgstr ""
327
-
328
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:104
329
- msgid ""
330
- "Both <b>Admin Approval</b> and <b>E-mail Confirmation</b> requires <a href="
331
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
332
- "\">Theme My Login</a> plugin to be installed. As there is no point for "
333
- "<b>WordPress Social Login</b> to reinvent the wheel"
334
- msgstr ""
335
-
336
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:107
337
- msgid ""
338
- "<b>User Moderation</b> was purposely made compatible with the <a href="
339
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
340
- "\">Theme My Login</a> for a number reasons: That plugin is good at what he "
341
- "does, a hell of a lot of people are using it and many have asked for it"
342
- msgstr ""
343
-
344
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:114
345
- msgid "None"
346
- msgstr ""
347
-
348
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:115
349
- msgid "E-mail Confirmation &mdash; Yield to Theme My Login plugin"
350
- msgstr ""
351
-
352
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:116
353
- msgid "Admin Approval &mdash; Yield to Theme My Login plugin"
354
- msgstr ""
355
-
356
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:126
357
- msgid "Membership level"
358
- msgstr ""
359
-
360
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:130
361
- msgid ""
362
- "Here you can define the default role for new users authenticating through "
363
- "WSL. The <code>Administrator</code> and <code>Editor</code> roles are not "
364
- "available for safety reasons"
365
- msgstr ""
366
-
367
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:133
368
- msgid ""
369
- "For more information about wordpress users roles and capabilities refer to "
370
- "<a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs."
371
- "_Role_Table\" target=\"_blank\">http://codex.wordpress.org/"
372
- "Roles_and_Capabilities</a>"
373
- msgstr ""
374
-
375
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:136
376
- msgid ""
377
- "If <b>User Moderation</b> is set to <code>Admin Approval</code> then "
378
- "<b>Membership level</b> will be ignored"
379
- msgstr ""
380
-
381
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:140
382
- msgid "New User Default Role"
383
- msgstr ""
384
-
385
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:143
386
- msgid "Safe"
387
- msgstr ""
388
-
389
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:144
390
- msgid "&mdash; Wordpress User Default Role &mdash;"
391
- msgstr ""
392
-
393
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:145
394
- msgid "&mdash; No role for this site &mdash;"
395
- msgstr ""
396
-
397
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:146
398
- msgid "Subscriber"
399
- msgstr ""
400
-
401
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:149
402
- msgid "Be careful with these"
403
- msgstr ""
404
-
405
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:150
406
- msgid "Author"
407
- msgstr ""
408
-
409
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:151
410
- msgid "Contributor"
411
- msgstr ""
412
-
413
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:162
414
- msgid "Filters by emails domains name"
415
- msgstr ""
416
-
417
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:166
418
- msgid "Restrict registration to a limited number of domains name."
419
- msgstr ""
420
-
421
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:167
422
- msgid ""
423
- "Insert one email address per line and try to keep this list short. On "
424
- "<code>Bounce text</code> insert the text you want to display for rejected "
425
- "users. ex: <code>gmail.com</code>, without '@'."
426
- msgstr ""
427
-
428
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:171
429
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:208
430
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:246
431
- #: includes/admin/components/contacts/index.php:51
432
- #: includes/admin/components/contacts/index.php:58
433
- #: includes/admin/components/contacts/index.php:65
434
- #: includes/admin/components/contacts/index.php:72
435
- #: includes/admin/components/contacts/index.php:79
436
- #: includes/admin/components/diagnostics/index.php:61
437
- #: includes/admin/components/networks/wsl.components.networks.setup.php:109
438
- msgid "Enabled"
439
- msgstr ""
440
-
441
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:180
442
- msgid "Domains list"
443
- msgstr ""
444
-
445
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:186
446
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:223
447
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:261
448
- msgid "Bounce text"
449
- msgstr ""
450
-
451
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:199
452
- msgid "Filters by e-mails addresses"
453
- msgstr ""
454
-
455
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:203
456
- msgid "Restrict registration to a limited number of emails addresses."
457
- msgstr ""
458
-
459
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:204
460
- msgid ""
461
- "Insert one email address per line and try to keep this list short. On "
462
- "<code>Bounce text</code> insert the text you want to display for rejected "
463
- "users. ex: <code>hybridauth@gmail.com</code>"
464
- msgstr ""
465
-
466
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:217
467
- msgid "E-mails list"
468
- msgstr ""
469
-
470
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:236
471
- msgid "Filters by profile urls"
472
- msgstr ""
473
-
474
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:240
475
- msgid "Restrict registration to a limited number of profile urls."
476
- msgstr ""
477
-
478
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:241
479
- msgid ""
480
- "<b>Note</b>: If a social network provide the user email, then use 'Filters "
481
- "by e-mails addresses' instead. Providers like Facebook provide multiples "
482
- "profiles URLs per user and WSL won't be able to reconize them."
483
- msgstr ""
484
-
485
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:242
486
- msgid ""
487
- "Insert one email address per line and try to keep this list short. On "
488
- "<code>Bounce text</code> insert the text you want to display for rejected "
489
- "users. ex: <code>http://twitter.com/HybridAuth</code>, <code>https://plus."
490
- "google.com/u/0/108839241301472312344</code>"
491
- msgstr ""
492
-
493
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:255
494
- msgid "Profile urls"
495
- msgstr ""
496
-
497
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:26
498
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:26
499
- msgid "What's This?"
500
- msgstr ""
501
-
502
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:30
503
- msgid "Hey, meet our friend, the Bouncer"
504
- msgstr ""
505
-
506
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:33
507
- msgid ""
508
- "Ever been in trouble with one of <a href=\"http://www.flickr.com/search/?"
509
- "q=bouncer+doorman&z=e\" target=\"_blank\">these guys</a>? Well, this module "
510
- "have more or less the same role, and he will try his best to piss your users "
511
- "off until they meet your requirements."
512
- msgstr ""
513
-
514
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:37
515
- msgid ""
516
- "This feature is most suited for small businesses and folks running a closed-"
517
- "door blog between friends or coworkers."
518
- msgstr ""
519
-
520
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:40
521
- msgid "Available settings"
522
- msgstr ""
523
-
524
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:43
525
- msgid "Enable/Disable Registration"
526
- msgstr ""
527
-
528
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:44
529
- msgid "Enable/Disable Authentication"
530
- msgstr ""
531
-
532
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:46
533
- msgid "Users moderation"
534
- msgstr ""
535
-
536
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:47
537
- msgid "Users roles"
538
- msgstr ""
539
-
540
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:48
541
- msgid "Restrictions (by emails, domains, profiles urls)"
542
- msgstr ""
543
-
544
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:51
545
- msgid "IMPORTANT!"
546
- msgstr ""
547
-
548
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:54
549
- msgid ""
550
- "All the settings on this page without exception are only valid for users "
551
- "authenticating through <b>WordPress Social Login Widget"
552
- msgstr ""
553
-
554
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:57
555
- msgid ""
556
- "Users authenticating through the regulars Wordpress Login and Register pages "
557
- "with their usernames and passwords WILL NOT be affected."
558
- msgstr ""
559
-
560
- #: includes/admin/components/components/wsl.components.help.gallery.php:30
561
- msgid "Other Components available"
562
- msgstr ""
563
-
564
- #: includes/admin/components/components/wsl.components.help.gallery.php:58
565
- msgid "WordPress Social Login for BuddyPress"
566
- msgstr ""
567
-
568
- #: includes/admin/components/components/wsl.components.help.gallery.php:60
569
- msgid "Make WordPress Social Login compatible with BuddyPress"
570
- msgstr ""
571
-
572
- #: includes/admin/components/components/wsl.components.help.gallery.php:61
573
- msgid "Widget integration, xProfiles mapping and more"
574
- msgstr ""
575
-
576
- #: includes/admin/components/components/wsl.components.help.gallery.php:63
577
- msgid "Install Now"
578
- msgstr ""
579
-
580
- #: includes/admin/components/components/wsl.components.help.gallery.php:64
581
- msgid "Visit plugin site"
582
- msgstr ""
583
-
584
- #: includes/admin/components/components/wsl.components.help.gallery.php:69
585
- msgid "Build yours"
586
- msgstr ""
587
-
588
- #: includes/admin/components/components/wsl.components.help.gallery.php:71
589
- msgid ""
590
- "Looking to build your own custom <b>WordPress Social Login</b> extenstion or "
591
- "component? Well, it's pretty easy. Just RTFM :)"
592
- msgstr ""
593
-
594
- #: includes/admin/components/components/wsl.components.help.gallery.php:74
595
- msgid "WSL Developer API"
596
- msgstr ""
597
-
598
- #: includes/admin/components/components/wsl.components.help.gallery.php:75
599
- msgid "WSL on Github"
600
- msgstr ""
601
-
602
- #: includes/admin/components/components/wsl.components.help.setup.php:29
603
- #: includes/admin/components/components/wsl.components.help.setup.php:37
604
- msgid "Component"
605
- msgstr ""
606
-
607
- #: includes/admin/components/components/wsl.components.help.setup.php:30
608
- #: includes/admin/components/components/wsl.components.help.setup.php:38
609
- msgid "Description"
610
- msgstr ""
611
-
612
- #: includes/admin/components/components/wsl.components.help.setup.php:67
613
- msgid "View"
614
- msgstr ""
615
-
616
- #: includes/admin/components/components/wsl.components.help.setup.php:72
617
- msgid "Disable"
618
- msgstr ""
619
-
620
- #: includes/admin/components/components/wsl.components.help.setup.php:74
621
- msgid "Enable"
622
- msgstr ""
623
-
624
- #: includes/admin/components/contacts/index.php:39
625
- msgid "Settings"
626
- msgstr ""
627
-
628
- #: includes/admin/components/contacts/index.php:43
629
- msgid ""
630
- "<b>WordPress Social Login</b> is now introducing <b>Contacts Import</b> as a "
631
- "new feature. When enabled, users authenticating through WordPress Social "
632
- "Login will be asked for the authorisation to import their contact list. Note "
633
- "that some social networks do not provide certains of their users information "
634
- "like contacts emails, photos and or profile urls"
635
- msgstr ""
636
-
637
- #: includes/admin/components/contacts/index.php:45
638
- msgid "Enable contacts import for"
639
- msgstr ""
640
-
641
- #: includes/admin/components/contacts/index.php:52
642
- #: includes/admin/components/contacts/index.php:59
643
- #: includes/admin/components/contacts/index.php:66
644
- #: includes/admin/components/contacts/index.php:73
645
- #: includes/admin/components/contacts/index.php:80
646
- #: includes/admin/components/diagnostics/index.php:62
647
- msgid "Disabled"
648
- msgstr ""
649
-
650
- #: includes/admin/components/contacts/index.php:86
651
- msgid "Notes"
652
- msgstr ""
653
-
654
- #: includes/admin/components/contacts/index.php:88
655
- msgid ""
656
- "To enable contacts import from these social network, you need first to "
657
- "enabled them on the <a href=\"options-general.php?page=wordpress-social-"
658
- "login&wslp=networks\"><b>Networks</b></a> tab and register the required "
659
- "application"
660
- msgstr ""
661
-
662
- #: includes/admin/components/contacts/index.php:89
663
- msgid ""
664
- "<b>WSL</b> will try to import as much information about a user contacts as "
665
- "he was able to pull from the social networks APIs."
666
- msgstr ""
667
-
668
- #: includes/admin/components/contacts/index.php:90
669
- msgid ""
670
- "All contacts data are sotred into your database on the table: "
671
- "<code>`wsluserscontacts`</code>"
672
- msgstr ""
673
-
674
- #: includes/admin/components/contacts/index.php:107
675
- msgid "Users contacts list preview"
676
- msgstr ""
677
-
678
- #: includes/admin/components/contacts/index.php:114
679
- #, php-format
680
- msgid "%s contact's list"
681
- msgstr ""
682
-
683
- #: includes/admin/components/contacts/index.php:121
684
- #: includes/admin/components/contacts/index.php:130
685
- #: includes/widgets/wsl.auth.widget.php:299
686
- msgid "Provider"
687
- msgstr ""
688
-
689
- #: includes/admin/components/contacts/index.php:122
690
- #: includes/admin/components/contacts/index.php:131
691
- msgid "User"
692
- msgstr ""
693
-
694
- #: includes/admin/components/contacts/index.php:123
695
- #: includes/admin/components/contacts/index.php:132
696
- msgid "Contact Name"
697
- msgstr ""
698
-
699
- #: includes/admin/components/contacts/index.php:124
700
- #: includes/admin/components/contacts/index.php:133
701
- msgid "Contact Email"
702
- msgstr ""
703
-
704
- #: includes/admin/components/contacts/index.php:125
705
- #: includes/admin/components/contacts/index.php:134
706
- msgid "Contact Profile Url"
707
- msgstr ""
708
-
709
- #: includes/admin/components/contacts/index.php:150
710
- msgid "No contacts found"
711
- msgstr ""
712
-
713
- #: includes/admin/components/diagnostics/index.php:24
714
- msgid "Requirements test"
715
- msgstr ""
716
-
717
- #: includes/admin/components/diagnostics/index.php:27
718
- msgid ""
719
- "In order for <b>WordPress Social Login</b> to work properly, your server "
720
- "should meet certain requirements. These \"requirements\" <br />and \"services"
721
- "\" are usually offered by default by most \"modern\" web hosting providers, "
722
- "however some complications may <br />occur with <b>shared hosting</b> and, "
723
- "or <b>custom wordpress installations</b>"
724
- msgstr ""
725
-
726
- #: includes/admin/components/diagnostics/index.php:30
727
- msgid "The minimum server requirements are"
728
- msgstr ""
729
-
730
- #: includes/admin/components/diagnostics/index.php:33
731
- msgid "PHP >= 5.2.0 installed"
732
- msgstr ""
733
-
734
- #: includes/admin/components/diagnostics/index.php:34
735
- msgid "WSL Endpoint URLs reachable"
736
- msgstr ""
737
-
738
- #: includes/admin/components/diagnostics/index.php:35
739
- msgid "PHP's default SESSION handling"
740
- msgstr ""
741
-
742
- #: includes/admin/components/diagnostics/index.php:36
743
- msgid "PHP/CURL/SSL Extension enabled"
744
- msgstr ""
745
-
746
- #: includes/admin/components/diagnostics/index.php:37
747
- msgid "PHP/JSON Extension enabled"
748
- msgstr ""
749
-
750
- #: includes/admin/components/diagnostics/index.php:38
751
- msgid "PHP/REGISTER_GLOBALS Off"
752
- msgstr ""
753
-
754
- #: includes/admin/components/diagnostics/index.php:39
755
- msgid "jQuery installed on WordPress backoffice"
756
- msgstr ""
757
-
758
- #: includes/admin/components/diagnostics/index.php:42
759
- msgid ""
760
- "You can run the <b>WordPress Social Login Requirements Test</b> by clicking "
761
- "the button bellow"
762
- msgstr ""
763
-
764
- #: includes/admin/components/diagnostics/index.php:46
765
- msgid "Run the plugin requirements test"
766
- msgstr ""
767
-
768
- #: includes/admin/components/diagnostics/index.php:47
769
- msgid "Website Information"
770
- msgstr ""
771
-
772
- #: includes/admin/components/diagnostics/index.php:53
773
- msgid "Development mode"
774
- msgstr ""
775
-
776
- #: includes/admin/components/diagnostics/index.php:56
777
- msgid ""
778
- "By enabling the development mode, this plugin will try generate and display "
779
- "a technical reports when something goes wrong. <br />This report can help "
780
- "your figure out the root of any issues you may runs into, or you can also "
781
- "send it to the plugin developer. <br />Its recommend to set the Development "
782
- "mode to <b style=\"color:red\">Disabled</b> on production."
783
- msgstr ""
784
-
785
- #: includes/admin/components/help/index.php:25
786
- msgid "Troubleshooting"
787
- msgstr ""
788
-
789
- #: includes/admin/components/help/index.php:27
790
- msgid "WSL Diagnostics"
791
- msgstr ""
792
-
793
- #: includes/admin/components/help/index.php:29
794
- msgid "System information"
795
- msgstr ""
796
-
797
- #: includes/admin/components/help/index.php:32
798
- msgid ""
799
- "If you run into any issue, you can access the <b>WordPress Social Login "
800
- "Diagnostics</b> to check the <b>Plugin Requirements</b> or to enable the "
801
- "<b>Development mode</b>"
802
- msgstr ""
803
-
804
- #: includes/admin/components/help/index.php:35
805
- msgid ""
806
- "Remember to include your System information when posting support requests"
807
- msgstr ""
808
-
809
- #: includes/admin/components/help/index.php:39
810
- msgid "Documentation"
811
- msgstr ""
812
-
813
- #: includes/admin/components/help/index.php:41
814
- msgid ""
815
- "The complete <b>User Guide</b> can be found at\n"
816
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target="
817
- "\"_blank\">hybridauth.sourceforge.net/wsl/index.html</a>"
818
- msgstr ""
819
-
820
- #: includes/admin/components/help/index.php:47
821
- msgid "FAQs"
822
- msgstr ""
823
-
824
- #: includes/admin/components/help/index.php:49
825
- msgid ""
826
- "A list of <b>Frequently asked questions</b> can be found at\n"
827
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/faq.html\" target="
828
- "\"_blank\">hybridauth.sourceforge.net/wsl/faq.html</a>"
829
- msgstr ""
830
-
831
- #: includes/admin/components/help/index.php:55
832
- msgid "Support"
833
- msgstr ""
834
-
835
- #: includes/admin/components/help/index.php:57
836
- msgid ""
837
- "To get help and support refer to <a href=\"http://hybridauth.sourceforge.net/"
838
- "wsl/support.html\" target=\"_blank\">http://hybridauth.sourceforge.net/wsl/"
839
- "support.html</a>"
840
- msgstr ""
841
-
842
- #: includes/admin/components/help/index.php:62
843
- msgid "Credits"
844
- msgstr ""
845
-
846
- #: includes/admin/components/help/index.php:64
847
- msgid ""
848
- "WordPress Social Login was created by <a href=\"http://profiles.wordpress."
849
- "org/miled/\" target=\"_blank\">Mohamed Mrassi</a> (a.k.a Miled) and <a href="
850
- "\"https://github.com/hybridauth/WordPress-Social-Login/graphs/contributors\" "
851
- "target=\"_blank\">contributors</a>"
852
- msgstr ""
853
-
854
- #: includes/admin/components/help/index.php:65
855
- msgid ""
856
- "Many other people have also contributed with <br />constructive discussions, "
857
- "support and by submitting patches"
858
- msgstr ""
859
-
860
- #: includes/admin/components/help/index.php:70
861
- msgid "License"
862
- msgstr ""
863
-
864
- #: includes/admin/components/help/index.php:72
865
- msgid ""
866
- "<b>WordPress Social Login</b> is an open source software licenced under The "
867
- "MIT License (MIT)"
868
- msgstr ""
869
-
870
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:27
871
- msgid "Basic Settings"
872
- msgstr ""
873
-
874
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:32
875
- msgid "Connect with caption"
876
- msgstr ""
877
-
878
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:38
879
- msgid "Social icon set"
880
- msgstr ""
881
-
882
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:41
883
- msgid "WPZOOM social networking icon set"
884
- msgstr ""
885
-
886
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:42
887
- msgid "Icondock vector social media icons"
888
- msgstr ""
889
-
890
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:47
891
- msgid "Users avatars"
892
- msgstr ""
893
-
894
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:50
895
- msgid "Display the default users avatars"
896
- msgstr ""
897
-
898
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:51
899
- msgid "Display users avatars from social networks when available"
900
- msgstr ""
901
-
902
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:67
903
- msgid "Redirect URL"
904
- msgstr ""
905
-
906
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:73
907
- msgid "Authentication flow"
908
- msgstr ""
909
-
910
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:76
911
- msgid "Using popup window"
912
- msgstr ""
913
-
914
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:77
915
- msgid "No popup window"
916
- msgstr ""
917
-
918
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:82
919
- msgid "Widget display"
920
- msgstr ""
921
-
922
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:85
923
- msgid "Display the widget in the comments area, login and register forms"
924
- msgstr ""
925
-
926
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:86
927
- msgid "Display the widget ONLY in the comments area"
928
- msgstr ""
929
-
930
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:87
931
- msgid "Display the widget ONLY in the login form"
932
- msgstr ""
933
-
934
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:92
935
- msgid "Notification"
936
- msgstr ""
937
-
938
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:95
939
- msgid "No notification"
940
- msgstr ""
941
-
942
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:96
943
- msgid "Notify ONLY the blog admin of a new user"
944
- msgstr ""
945
-
946
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:107
947
- msgid "Custom CSS"
948
- msgstr ""
949
-
950
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:112
951
- msgid "Widget CSS"
952
- msgstr ""
953
-
954
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:114
955
- msgid ""
956
- "To customize the default widget styles you can either: edit the css file "
957
- "<strong>/wordpress-social-login/assets/css/style.css</strong>, or change it "
958
- "from this text area"
959
- msgstr ""
960
-
961
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:118
962
- msgid "The basic widget markup is the following"
963
- msgstr ""
964
-
965
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:30
966
- msgid "Widget Customization"
967
- msgstr ""
968
-
969
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:33
970
- msgid ""
971
- "On this section you can fully customize <b>WordPress Social Login Widget</b> "
972
- "and define the way you want it to look and behave"
973
- msgstr ""
974
-
975
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:37
976
- msgid ""
977
- "<b>WordPress Social Login Widget</b> will be generated into the comments, "
978
- "login and register forms enabling your website vistors and customers to "
979
- "login via social networks"
980
- msgstr ""
981
-
982
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:41
983
- msgid ""
984
- "If this widget does not show up on your custom theme or you want to add it "
985
- "somewhere else then refer to the next section"
986
- msgstr ""
987
-
988
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:44
989
- msgid "Custom integration"
990
- msgstr ""
991
-
992
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:47
993
- msgid ""
994
- "If you want to add the social login widget to another location in your "
995
- "theme, you can insert the following code in that location"
996
- msgstr ""
997
-
998
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:49
999
- msgid "Or, for posts and pages"
1000
- msgstr ""
1001
-
1002
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:54
1003
- msgid ""
1004
- "<b>[wordpress_social_login]</b> shortcode can be used in combination with <a "
1005
- "href=\"http://wordpress.org/extend/plugins/html-javascript-adder/\" target="
1006
- "\"_blank\">HTML Javascript Adder</a> plugin to be add WSL Widget to your "
1007
- "website sidebar"
1008
- msgstr ""
1009
-
1010
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:58
1011
- msgid ""
1012
- "Also, if you are a developer or designer then you can customize it to your "
1013
- "heart's content. For more inofmation refer to <b><a href=\"http://hybridauth."
1014
- "sourceforge.net/wsl/customize.html\" target=\"_blank\">User Guide</a></b>"
1015
- msgstr ""
1016
-
1017
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:61
1018
- msgid "Widget preview"
1019
- msgstr ""
1020
-
1021
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:64
1022
- msgid "This is a preview of what should be on the comments area"
1023
- msgstr ""
1024
-
1025
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:65
1026
- msgid "Do not test it here"
1027
- msgstr ""
1028
-
1029
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:24
1030
- msgid ""
1031
- "And you could add even more of them, <b>Just Click</b> and we will guide you "
1032
- "through"
1033
- msgstr ""
1034
-
1035
- #: includes/admin/components/networks/wsl.components.networks.addmore.php:48
1036
- msgid "Well! none left."
1037
- msgstr ""
1038
-
1039
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:36
1040
- msgid "Insights"
1041
- msgstr ""
1042
-
1043
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:40
1044
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:49
1045
- msgid "Conversions"
1046
- msgstr ""
1047
-
1048
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:43
1049
- msgid "WP users"
1050
- msgstr ""
1051
-
1052
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:46
1053
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:77
1054
- msgid "WSL users"
1055
- msgstr ""
1056
-
1057
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:59
1058
- msgid "By provider"
1059
- msgstr ""
1060
-
1061
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:85
1062
- msgid "By gender"
1063
- msgstr ""
1064
-
1065
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:108
1066
- msgid "By age"
1067
- msgstr ""
1068
-
1069
- #: includes/admin/components/networks/wsl.components.networks.basicinsights.php:139
1070
- msgid "yrs in average"
1071
- msgstr ""
1072
-
1073
- #: includes/admin/components/networks/wsl.components.networks.setup.php:126
1074
- msgid "Application ID"
1075
- msgstr ""
1076
-
1077
- #: includes/admin/components/networks/wsl.components.networks.setup.php:128
1078
- #: includes/admin/components/networks/wsl.components.networks.setup.php:134
1079
- #: includes/admin/components/networks/wsl.components.networks.setup.php:140
1080
- msgid "Where do I get this info?"
1081
- msgstr ""
1082
-
1083
- #: includes/admin/components/networks/wsl.components.networks.setup.php:132
1084
- msgid "Application Key"
1085
- msgstr ""
1086
-
1087
- #: includes/admin/components/networks/wsl.components.networks.setup.php:138
1088
- msgid "Application Secret"
1089
- msgstr ""
1090
-
1091
- #: includes/admin/components/networks/wsl.components.networks.setup.php:149
1092
- msgid "Note"
1093
- msgstr ""
1094
-
1095
- #: includes/admin/components/networks/wsl.components.networks.setup.php:151
1096
- #, php-format
1097
- msgid ""
1098
- "<b>%s</b> do not provide their user's email address and by default a random "
1099
- "email will then be generated for them instead"
1100
- msgstr ""
1101
-
1102
- #: includes/admin/components/networks/wsl.components.networks.setup.php:153
1103
- msgid ""
1104
- "To change this behaviour and to force new registered users to provide their "
1105
- "emails before they get in, goto <b><a href=\"options-general.php?"
1106
- "page=wordpress-social-login&wslp=bouncer\">Bouncer</a></b> and enable "
1107
- "<b>Profile Completion</b>"
1108
- msgstr ""
1109
-
1110
- #: includes/admin/components/networks/wsl.components.networks.setup.php:163
1111
- msgid ""
1112
- "<span style=\"color:#CB4B16;\">Application</span> id and secret (also "
1113
- "sometimes referred as <span style=\"color:#CB4B16;\">Customer</span> key and "
1114
- "secret or <span style=\"color:#CB4B16;\">Client</span> id and secret) are "
1115
- "what we call an application credentials"
1116
- msgstr ""
1117
-
1118
- #: includes/admin/components/networks/wsl.components.networks.setup.php:165
1119
- #, php-format
1120
- msgid ""
1121
- "This application will link your website <code>%s</code> to <code>%s API</"
1122
- "code> and these credentials are needed in order for <b>%s</b> users to "
1123
- "access your website"
1124
- msgstr ""
1125
-
1126
- #: includes/admin/components/networks/wsl.components.networks.setup.php:168
1127
- msgid ""
1128
- "These credentials may also differ in format, name and content depending on "
1129
- "the social network."
1130
- msgstr ""
1131
-
1132
- #: includes/admin/components/networks/wsl.components.networks.setup.php:172
1133
- #, php-format
1134
- msgid ""
1135
- "To enable authentication with this provider and to register a new <b>%s API "
1136
- "Application</b>, carefully follow the steps"
1137
- msgstr ""
1138
-
1139
- #: includes/admin/components/networks/wsl.components.networks.setup.php:175
1140
- #, php-format
1141
- msgid "<b>Done.</b> Nothing more required for <b>%s</b>"
1142
- msgstr ""
1143
-
1144
- #: includes/admin/components/networks/wsl.components.networks.setup.php:259
1145
- msgid "And that's it!"
1146
- msgstr ""
1147
-
1148
- #: includes/admin/components/networks/wsl.components.networks.setup.php:261
1149
- #, php-format
1150
- msgid ""
1151
- "If for some reason you still can't figure it out, first try to a) <a class="
1152
- "\"button-primary\" href=\"https://www.google.com/search?q=%s API create "
1153
- "application\" target=\"_blank\">Google it</a>, then check it on b) <a class="
1154
- "\"button-primary\" href=\"http://www.youtube.com/results?search_query=%s API "
1155
- "create application \" target=\"_blank\">Youtube</a> and if nothing works c) "
1156
- "<a class=\"button-primary\" href=\"options-general.php?page=wordpress-social-"
1157
- "login&wslp=help\">ask for support</a>"
1158
- msgstr ""
1159
-
1160
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:21
1161
- msgid "Why, hello there"
1162
- msgstr ""
1163
-
1164
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:29
1165
- msgid ""
1166
- "If you are still new to things, we recommend that you read the <b><a href="
1167
- "\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
1168
- "\">Plugin User Guide</a></b> and to make sure your server settings meet this "
1169
- "<b><a href=\"options-general.php?page=wordpress-social-login&amp;"
1170
- "wslp=diagnostics\">Plugin Requirements</a></b>"
1171
- msgstr ""
1172
-
1173
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:32
1174
- msgid ""
1175
- "If you run into any issue then refer to <b><a href=\"options-general.php?"
1176
- "page=wordpress-social-login&wslp=help\">Help & Support</a></b> to konw how "
1177
- "to reach me"
1178
- msgstr ""
1179
-
1180
- #: includes/admin/components/users/wsl.components.users.list.php:30
1181
- #: includes/admin/components/users/wsl.components.users.list.php:41
1182
- msgid "Providers"
1183
- msgstr ""
1184
-
1185
- #: includes/admin/components/users/wsl.components.users.list.php:31
1186
- #: includes/admin/components/users/wsl.components.users.list.php:42
1187
- #: includes/settings/wsl.compatibilities.php:104
1188
- msgid "Username"
1189
- msgstr ""
1190
-
1191
- #: includes/admin/components/users/wsl.components.users.list.php:32
1192
- #: includes/admin/components/users/wsl.components.users.list.php:43
1193
- msgid "Full Name"
1194
- msgstr ""
1195
-
1196
- #: includes/admin/components/users/wsl.components.users.list.php:33
1197
- #: includes/admin/components/users/wsl.components.users.list.php:44
1198
- #: includes/settings/wsl.compatibilities.php:100
1199
- msgid "E-mail"
1200
- msgstr ""
1201
-
1202
- #: includes/admin/components/users/wsl.components.users.list.php:34
1203
- #: includes/admin/components/users/wsl.components.users.list.php:45
1204
- msgid "Profile URL"
1205
- msgstr ""
1206
-
1207
- #: includes/admin/components/users/wsl.components.users.list.php:35
1208
- #: includes/admin/components/users/wsl.components.users.list.php:46
1209
- #: includes/settings/wsl.initialization.php:400
1210
- msgid "Contacts"
1211
- msgstr ""
1212
-
1213
- #: includes/admin/components/users/wsl.components.users.list.php:36
1214
- #: includes/admin/components/users/wsl.components.users.list.php:47
1215
- msgid "Actions"
1216
- msgstr ""
1217
-
1218
- #: includes/admin/components/users/wsl.components.users.list.php:55
1219
- msgid "No users found"
1220
- msgstr ""
1221
-
1222
- #: includes/admin/components/users/wsl.components.users.profile.php:22
1223
- msgid "USER DOES NOT EXIST!"
1224
- msgstr ""
1225
-
1226
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1227
- msgid "User Profile"
1228
- msgstr ""
1229
-
1230
- #: includes/admin/components/users/wsl.components.users.profile.php:43
1231
- #, php-format
1232
- msgid "as provided by %s"
1233
- msgstr ""
1234
-
1235
- #: includes/services/wsl.authentication.php:64
1236
- msgid "Bouncer say don't be silly!"
1237
- msgstr ""
1238
-
1239
- #: includes/services/wsl.authentication.php:70
1240
- msgid "Bouncer say this makes no sense."
1241
- msgstr ""
1242
-
1243
- #: includes/services/wsl.authentication.php:77
1244
- msgid "WSL is disabled!"
1245
- msgstr ""
1246
-
1247
- #: includes/services/wsl.authentication.php:99
1248
- msgid "Bouncer says this makes no sense."
1249
- msgstr ""
1250
-
1251
- #: includes/services/wsl.authentication.php:107
1252
- msgid "Bouncer say you are doin it wrong."
1253
- msgstr ""
1254
-
1255
- #: includes/services/wsl.authentication.php:114
1256
- msgid "You are already logged in as <b>%</b>."
1257
- msgstr ""
1258
-
1259
- #: includes/services/wsl.authentication.php:119
1260
- #: includes/services/wsl.authentication.php:559
1261
- msgid ""
1262
- "Error: Another plugin seems to be using HybridAuth Library and made "
1263
- "WordPress Social Login unusable. We recommand to find this plugin and to "
1264
- "kill it with fire!"
1265
- msgstr ""
1266
-
1267
- #: includes/services/wsl.authentication.php:130
1268
- msgid "Unknown or disabled provider"
1269
- msgstr ""
1270
-
1271
- #: includes/services/wsl.authentication.php:262
1272
- msgid "Unspecified error!"
1273
- msgstr ""
1274
-
1275
- #: includes/services/wsl.authentication.php:266
1276
- msgid "Unspecified error."
1277
- msgstr ""
1278
-
1279
- #: includes/services/wsl.authentication.php:267
1280
- msgid "Hybriauth configuration error."
1281
- msgstr ""
1282
-
1283
- #: includes/services/wsl.authentication.php:268
1284
- msgid "Provider not properly configured."
1285
- msgstr ""
1286
-
1287
- #: includes/services/wsl.authentication.php:269
1288
- msgid "Unknown or disabled provider."
1289
- msgstr ""
1290
-
1291
- #: includes/services/wsl.authentication.php:270
1292
- msgid "Missing provider application credentials."
1293
- msgstr ""
1294
-
1295
- #: includes/services/wsl.authentication.php:271
1296
- #, php-format
1297
- msgid ""
1298
- "<b>What does this error mean ?</b><br />Most likely, you didn't setup the "
1299
- "correct application credentials for this provider. These credentials are "
1300
- "required in order for <b>%s</b> users to access your website and for "
1301
- "WordPress Social Login to work."
1302
- msgstr ""
1303
-
1304
- #: includes/services/wsl.authentication.php:271
1305
- msgid ""
1306
- "<br />Instructions for use can be found in the <a href=\"http://hybridauth."
1307
- "sourceforge.net/wsl/configure.html\" target=\"_blank\">User Manual</a>."
1308
- msgstr ""
1309
-
1310
- #: includes/services/wsl.authentication.php:273
1311
- msgid ""
1312
- "Authentification failed. The user has canceled the authentication or the "
1313
- "provider refused the connection."
1314
- msgstr ""
1315
-
1316
- #: includes/services/wsl.authentication.php:274
1317
- msgid ""
1318
- "User profile request failed. Most likely the user is not connected to the "
1319
- "provider and he should to authenticate again."
1320
- msgstr ""
1321
-
1322
- #: includes/services/wsl.authentication.php:277
1323
- msgid "User not connected to the provider."
1324
- msgstr ""
1325
-
1326
- #: includes/services/wsl.authentication.php:280
1327
- msgid "Provider does not support this feature."
1328
- msgstr ""
1329
-
1330
- #: includes/services/wsl.authentication.php:323
1331
- msgid "Something bad happen!"
1332
- msgstr ""
1333
-
1334
- #: includes/services/wsl.authentication.php:389
1335
- msgid ""
1336
- "Note: This message can be disabled from the plugin settings by setting "
1337
- "<b>Development mode</b> to <b>Disabled</b>"
1338
- msgstr ""
1339
-
1340
- #: includes/services/wsl.authentication.php:418
1341
- msgid "Redirecting..."
1342
- msgstr ""
1343
-
1344
- #: includes/services/wsl.authentication.php:447
1345
- #, php-format
1346
- msgid "Contacting <b>%s</b>, please wait..."
1347
- msgstr ""
1348
-
1349
- #: includes/services/wsl.authentication.php:711
1350
- msgid "registration is now closed!"
1351
- msgstr ""
1352
-
1353
- #: includes/services/wsl.authentication.php:733
1354
- #, php-format
1355
- msgid "Unspecified error. #%d"
1356
- msgstr ""
1357
-
1358
- #: includes/services/wsl.authentication.php:882
1359
- msgid "An error occurred while creating a new user!"
1360
- msgstr ""
1361
-
1362
- #: includes/settings/wsl.compatibilities.php:92
1363
- msgid "Almost there, we just need to check a couple of things"
1364
- msgstr ""
1365
-
1366
- #: includes/settings/wsl.compatibilities.php:96
1367
- msgid "Continue"
1368
- msgstr ""
1369
-
1370
- #: includes/settings/wsl.compatibilities.php:108
1371
- msgid "E-mail is not valid!"
1372
- msgstr ""
1373
-
1374
- #: includes/settings/wsl.compatibilities.php:112
1375
- msgid "Username is not valid!"
1376
- msgstr ""
1377
-
1378
- #: includes/settings/wsl.compatibilities.php:116
1379
- msgid "That E-mail is already registered!"
1380
- msgstr ""
1381
-
1382
- #: includes/settings/wsl.compatibilities.php:120
1383
- msgid "That Username is already registered!"
1384
- msgstr ""
1385
-
1386
- #: includes/settings/wsl.compatibilities.php:124
1387
- msgid "You are now connected via"
1388
- msgstr ""
1389
-
1390
- #: includes/settings/wsl.compatibilities.php:140
1391
- msgid "Bouncer says no."
1392
- msgstr ""
1393
-
1394
- #: includes/settings/wsl.compatibilities.php:148
1395
- msgid "Bouncer say he refuses."
1396
- msgstr ""
1397
-
1398
- #: includes/settings/wsl.compatibilities.php:156
1399
- msgid "Bouncer say only Mundo can go where he pleases!"
1400
- msgstr ""
1401
-
1402
- #: includes/settings/wsl.initialization.php:59
1403
- #: includes/settings/wsl.initialization.php:87
1404
- msgid ""
1405
- "An installed plugin is trying to o-ver-write WordPress Social Login config "
1406
- "in a bad way."
1407
- msgstr ""
1408
-
1409
- #: includes/settings/wsl.initialization.php:373
1410
- msgid "WSL user profile"
1411
- msgstr ""
1412
-
1413
- #: includes/settings/wsl.initialization.php:374
1414
- msgid "WSL user contacts"
1415
- msgstr ""
1416
-
1417
- #: includes/settings/wsl.initialization.php:400
1418
- msgid "Profile"
1419
- msgstr ""
1420
-
1421
- #: includes/widgets/wsl.auth.widget.php:124
1422
- msgid ""
1423
- "<strong style=\"color:red;\">WordPress Social Login is not configured yet!</"
1424
- "strong><br />Please visit the <strong>Settings\\ WP Social Login</strong> "
1425
- "administration page to configure this plugin.<br />For more information "
1426
- "please refer to the plugin <a href=\"http://hybridauth.sourceforge.net/"
1427
- "userguide/Plugin_WordPress_Social_Login.html\">online user guide</a> or "
1428
- "contact us at <a href=\"http://hybridauth.sourceforge.net/\">hybridauth."
1429
- "sourceforge.net</a>"
1430
- msgstr ""
1431
-
1432
- #: includes/widgets/wsl.auth.widget.php:293
1433
- msgid "Social networks"
1434
- msgstr ""
1435
-
1436
- #: includes/widgets/wsl.auth.widget.php:300
1437
- msgid "Identity"
1438
- msgstr ""
1439
-
1440
- #: includes/widgets/wsl.auth.widget.php:336
1441
- msgid "Add more identities"
1442
- msgstr ""
1443
-
1444
- #: includes/widgets/wsl.auth.widget.php:375
1445
- msgid "Currently connected to:"
1446
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/wordpress-social-login-zh_CN.mo DELETED
Binary file
languages/wordpress-social-login-zh_CN.po DELETED
@@ -1,1446 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WordPress Social Login\n"
4
- "POT-Creation-Date: 2013-02-16 06:40+0100\n"
5
- "PO-Revision-Date: 2013-02-16 06:42+0100\n"
6
- "Last-Translator: Miled <hybridauth@gmail.com>\n"
7
- "Language-Team: WordPress Social Login <hybridauth@gmail.com>\n"
8
- "Language: Chinese - 中文 (zh_CN)\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.5.5\n"
13
-
14
- #: includes/admin/wsl.admin.ui.php:332
15
- msgid "Development mode is enabled!"
16
- msgstr ""
17
-
18
- #: includes/admin/wsl.admin.ui.php:407
19
- #: includes/services/wsl.authentication.php:637
20
- msgid "Something wrong!"
21
- msgstr ""
22
-
23
- #: includes/admin/wsl.admin.ui.php:412
24
- msgid ""
25
- "Unknown or Disabled <b>Component</b>! Check the list of enabled components "
26
- "or the typed URL"
27
- msgstr ""
28
-
29
- #: includes/admin/wsl.admin.ui.php:416
30
- msgid ""
31
- "If you believe you've found a problem with <b>WordPress Social Login</b>, be "
32
- "sure to let us know so we can fix it"
33
- msgstr ""
34
-
35
- #: includes/admin/wsl.admin.ui.php:422
36
- msgid "Report as bug"
37
- msgstr ""
38
-
39
- #: includes/admin/wsl.admin.ui.php:423
40
- msgid "Check enabled components"
41
- msgstr ""
42
-
43
- #: includes/admin/wsl.admin.ui.php:567
44
- msgid "Welcome!"
45
- msgstr ""
46
-
47
- #: includes/admin/wsl.admin.ui.php:569
48
- msgid ""
49
- "If you are still new to WordPress Social Login, we have provided a few "
50
- "walkthroughs to get you started"
51
- msgstr ""
52
-
53
- #: includes/admin/wsl.admin.ui.php:576
54
- msgid "Get Started"
55
- msgstr ""
56
-
57
- #: includes/admin/wsl.admin.ui.php:579
58
- msgid ""
59
- "<a href=\"http://hybridauth.sourceforge.net/wsl/configure.html\" target="
60
- "\"_blank\">Setup and Configuration</a>"
61
- msgstr ""
62
-
63
- #: includes/admin/wsl.admin.ui.php:580
64
- msgid ""
65
- "<a href=\"http://hybridauth.sourceforge.net/wsl/customize.html\" target="
66
- "\"_blank\">Customize WSL Widgets</a>"
67
- msgstr ""
68
-
69
- #: includes/admin/wsl.admin.ui.php:581
70
- msgid ""
71
- "<a href=\"http://hybridauth.sourceforge.net/wsl/userdata.html\" target="
72
- "\"_blank\">Manage users and contacts</a>"
73
- msgstr ""
74
-
75
- #: includes/admin/wsl.admin.ui.php:582
76
- msgid ""
77
- "<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target=\"_blank"
78
- "\">WSL User Guide</a> and <a href=\"http://hybridauth.sourceforge.net/wsl/"
79
- "faq.html\" target=\"_blank\">FAQ</a>"
80
- msgstr ""
81
-
82
- #: includes/admin/wsl.admin.ui.php:588
83
- #, php-format
84
- msgid "What's new on WSL %s"
85
- msgstr ""
86
-
87
- #: includes/admin/wsl.admin.ui.php:591
88
- msgid ""
89
- "In a similar way to WordPress plugins, WSL uses <a href=\"options-general."
90
- "php?page=wordpress-social-login&wslp=components\">Components</a>"
91
- msgstr ""
92
-
93
- #: includes/admin/wsl.admin.ui.php:592
94
- msgid "<b>Email Validation</b> is replaced with <b>Profile Completion</b>"
95
- msgstr ""
96
-
97
- #: includes/admin/wsl.admin.ui.php:593
98
- msgid ""
99
- "<b>User Moderation</b> made compatible with <a href=\"http://wordpress.org/"
100
- "extend/plugins/theme-my-login/\" target=\"_blank\">Theme My Login</a> plugin"
101
- msgstr ""
102
-
103
- #: includes/admin/wsl.admin.ui.php:594
104
- msgid "A number of enhancements and new options now available"
105
- msgstr ""
106
-
107
- #: includes/admin/wsl.admin.ui.php:644
108
- msgid "Contributor License Agreement"
109
- msgstr ""
110
-
111
- #: includes/admin/wsl.admin.ui.php:649
112
- msgid ""
113
- "You are about to submit your contributions to the WordPress Social Login "
114
- "Website to be reviewed for inclusion in future versions"
115
- msgstr ""
116
-
117
- #: includes/admin/wsl.admin.ui.php:651
118
- msgid ""
119
- "You hereby grant the permission to publish your contribution, in whole or in "
120
- "part, and to made it available under the <b>MIT License</b>, for the "
121
- "<b>Wordpress community</b> to, freely use or misuse"
122
- msgstr ""
123
-
124
- #: includes/admin/wsl.admin.ui.php:657
125
- msgid "Hell No"
126
- msgstr ""
127
-
128
- #: includes/admin/wsl.admin.ui.php:658
129
- msgid "Yes, I agree to contribute my translation"
130
- msgstr ""
131
-
132
- #: includes/admin/wsl.admin.ui.php:662
133
- msgid "Help us localize WordPress Social Login"
134
- msgstr ""
135
-
136
- #: includes/admin/wsl.admin.ui.php:666
137
- msgid ""
138
- "You can <b>translate as much you pleases</b> as much <b>as you want</b>. You "
139
- "don't have to translate everything in this page, but every word counts. "
140
- "Ignore any string you want or aleardy translated. You could also use this "
141
- "tool to fix any typo you may find or to improve the current language "
142
- "expressions"
143
- msgstr ""
144
-
145
- #: includes/admin/wsl.admin.ui.php:668
146
- msgid ""
147
- "Your name allows us to recognize your contributions and bypass manual "
148
- "review, especially when you've been contributing in the past. So do supply "
149
- "some unique string, even if it's not your real name"
150
- msgstr ""
151
-
152
- #: includes/admin/wsl.admin.ui.php:670
153
- msgid ""
154
- "All the texts on this page are automatically extracted and generated on the "
155
- "form beside. If the translation tool has scapped something you may consider "
156
- "as irrelevant, please leave that particular field empty"
157
- msgstr ""
158
-
159
- #: includes/admin/wsl.admin.ui.php:672
160
- msgid ""
161
- "Your contributions will be sent to the WordPress Social Login website for "
162
- "inclusion in future versions"
163
- msgstr ""
164
-
165
- #: includes/admin/wsl.admin.ui.php:674
166
- msgid "Thanks!"
167
- msgstr ""
168
-
169
- #: includes/admin/wsl.admin.ui.php:682
170
- msgid "Your Name"
171
- msgstr ""
172
-
173
- #: includes/admin/wsl.admin.ui.php:682 includes/admin/wsl.admin.ui.php:688
174
- msgid "optional"
175
- msgstr ""
176
-
177
- #: includes/admin/wsl.admin.ui.php:688
178
- msgid "Comment"
179
- msgstr ""
180
-
181
- #: includes/admin/wsl.admin.ui.php:694
182
- msgid "Target Language"
183
- msgstr ""
184
-
185
- #: includes/admin/wsl.admin.ui.php:703
186
- msgid "Submit changes"
187
- msgstr ""
188
-
189
- #: includes/admin/wsl.admin.ui.php:769
190
- msgid "Help us translate this page into your language"
191
- msgstr "帮助我们本地化当前页"
192
-
193
- #: includes/admin/components/advanced/index.php:47
194
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:62
195
- msgid "Advanced Settings"
196
- msgstr ""
197
-
198
- #: includes/admin/components/advanced/index.php:52
199
- msgid ""
200
- "<b>Please</b> for the love of <b>God</b>, stay out of Advanced.. unless you "
201
- "are Advanced and you know what you are doing"
202
- msgstr ""
203
-
204
- #: includes/admin/components/advanced/index.php:61
205
- msgid "WSL Base URL"
206
- msgstr ""
207
-
208
- #: includes/admin/components/advanced/index.php:68
209
- msgid "WSL Base PATH"
210
- msgstr ""
211
-
212
- #: includes/admin/components/advanced/index.php:75
213
- msgid "Hybridauth endpoint URL"
214
- msgstr ""
215
-
216
- #: includes/admin/components/advanced/index.php:82
217
- msgid "WSL top bar menu"
218
- msgstr ""
219
-
220
- #: includes/admin/components/advanced/index.php:85
221
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:38
222
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:47
223
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:72
224
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:81
225
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:174
226
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:211
227
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:249
228
- msgid "Yes"
229
- msgstr ""
230
-
231
- #: includes/admin/components/advanced/index.php:86
232
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:39
233
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:48
234
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:73
235
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:82
236
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:175
237
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:212
238
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:250
239
- msgid "No"
240
- msgstr ""
241
-
242
- #: includes/admin/components/advanced/index.php:98
243
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:275
244
- #: includes/admin/components/contacts/index.php:98
245
- #: includes/admin/components/diagnostics/index.php:64
246
- #: includes/admin/components/login-widget/wsl.components.loginwidget.setup.php:144
247
- #: includes/admin/components/networks/wsl.components.networks.setup.php:271
248
- #: includes/admin/components/networks/wsl.components.networks.whyhello.php:40
249
- msgid "Save Settings"
250
- msgstr ""
251
-
252
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:27
253
- msgid "WSL Widget"
254
- msgstr ""
255
-
256
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:31
257
- msgid ""
258
- "Here you can tell Bouncer if you are accepting new users registration and "
259
- "authentication into your website or not any more. Note that Bouncer only "
260
- "works for WSL and will not interfere with users authenticating through the "
261
- "regulars wordpress Login and Register pages with their usernames and "
262
- "passwords (to to achieve that kind of restrictions, you may need to use "
263
- "another plugin(s) in combination with WSL)."
264
- msgstr ""
265
-
266
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:35
267
- msgid "Accept new registration"
268
- msgstr ""
269
-
270
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:44
271
- msgid "Allow authentication"
272
- msgstr ""
273
-
274
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:58
275
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:45
276
- msgid "Profile Completion"
277
- msgstr ""
278
-
279
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:62
280
- msgid ""
281
- "Select required fields. If a social network doesn't return them, Bouncer "
282
- "will then ask your visitors to fill additional form to provide them when "
283
- "registering."
284
- msgstr ""
285
-
286
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:65
287
- msgid ""
288
- "You may activate <b>Profile Completion</b> for both <b>E-mail</b> and "
289
- "<b>Username</b>, but keep in mind, the idea behind <b>social login</b> is to "
290
- "avoid forms and remove all the hassle of registration"
291
- msgstr ""
292
-
293
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:69
294
- msgid "Require E-mail"
295
- msgstr ""
296
-
297
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:78
298
- msgid "Allow Username change"
299
- msgstr ""
300
-
301
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:92
302
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:111
303
- msgid "User Moderation"
304
- msgstr ""
305
-
306
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:96
307
- msgid ""
308
- "<b>User Moderation</b> will define how <b>Bouncer</b> should behave with new "
309
- "regsitred users:"
310
- msgstr ""
311
-
312
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:99
313
- msgid "<b>None</b>: No moderation required."
314
- msgstr ""
315
-
316
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:100
317
- msgid ""
318
- "<b>E-mail Confirmation</b>: New users will need to be confirm their e-mail "
319
- "address before they may log in"
320
- msgstr ""
321
-
322
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:101
323
- msgid ""
324
- "<b>Admin Approval</b>: New users will need to be approved by an "
325
- "administrator before they may log in"
326
- msgstr ""
327
-
328
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:104
329
- msgid ""
330
- "Both <b>Admin Approval</b> and <b>E-mail Confirmation</b> requires <a href="
331
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
332
- "\">Theme My Login</a> plugin to be installed. As there is no point for "
333
- "<b>WordPress Social Login</b> to reinvent the wheel"
334
- msgstr ""
335
-
336
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:107
337
- msgid ""
338
- "<b>User Moderation</b> was purposely made compatible with the <a href="
339
- "\"http://wordpress.org/extend/plugins/theme-my-login/\" target=\"_blank"
340
- "\">Theme My Login</a> for a number reasons: That plugin is good at what he "
341
- "does, a hell of a lot of people are using it and many have asked for it"
342
- msgstr ""
343
-
344
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:114
345
- msgid "None"
346
- msgstr ""
347
-
348
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:115
349
- msgid "E-mail Confirmation &mdash; Yield to Theme My Login plugin"
350
- msgstr ""
351
-
352
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:116
353
- msgid "Admin Approval &mdash; Yield to Theme My Login plugin"
354
- msgstr ""
355
-
356
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:126
357
- msgid "Membership level"
358
- msgstr ""
359
-
360
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:130
361
- msgid ""
362
- "Here you can define the default role for new users authenticating through "
363
- "WSL. The <code>Administrator</code> and <code>Editor</code> roles are not "
364
- "available for safety reasons"
365
- msgstr ""
366
-
367
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:133
368
- msgid ""
369
- "For more information about wordpress users roles and capabilities refer to "
370
- "<a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs."
371
- "_Role_Table\" target=\"_blank\">http://codex.wordpress.org/"
372
- "Roles_and_Capabilities</a>"
373
- msgstr ""
374
-
375
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:136
376
- msgid ""
377
- "If <b>User Moderation</b> is set to <code>Admin Approval</code> then "
378
- "<b>Membership level</b> will be ignored"
379
- msgstr ""
380
-
381
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:140
382
- msgid "New User Default Role"
383
- msgstr ""
384
-
385
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:143
386
- msgid "Safe"
387
- msgstr ""
388
-
389
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:144
390
- msgid "&mdash; Wordpress User Default Role &mdash;"
391
- msgstr ""
392
-
393
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:145
394
- msgid "&mdash; No role for this site &mdash;"
395
- msgstr ""
396
-
397
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:146
398
- msgid "Subscriber"
399
- msgstr ""
400
-
401
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:149
402
- msgid "Be careful with these"
403
- msgstr ""
404
-
405
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:150
406
- msgid "Author"
407
- msgstr ""
408
-
409
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:151
410
- msgid "Contributor"
411
- msgstr ""
412
-
413
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:162
414
- msgid "Filters by emails domains name"
415
- msgstr ""
416
-
417
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:166
418
- msgid "Restrict registration to a limited number of domains name."
419
- msgstr ""
420
-
421
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:167
422
- msgid ""
423
- "Insert one email address per line and try to keep this list short. On "
424
- "<code>Bounce text</code> insert the text you want to display for rejected "
425
- "users. ex: <code>gmail.com</code>, without '@'."
426
- msgstr ""
427
-
428
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:171
429
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:208
430
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:246
431
- #: includes/admin/components/contacts/index.php:51
432
- #: includes/admin/components/contacts/index.php:58
433
- #: includes/admin/components/contacts/index.php:65
434
- #: includes/admin/components/contacts/index.php:72
435
- #: includes/admin/components/contacts/index.php:79
436
- #: includes/admin/components/diagnostics/index.php:61
437
- #: includes/admin/components/networks/wsl.components.networks.setup.php:109
438
- msgid "Enabled"
439
- msgstr ""
440
-
441
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:180
442
- msgid "Domains list"
443
- msgstr ""
444
-
445
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:186
446
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:223
447
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:261
448
- msgid "Bounce text"
449
- msgstr ""
450
-
451
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:199
452
- msgid "Filters by e-mails addresses"
453
- msgstr ""
454
-
455
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:203
456
- msgid "Restrict registration to a limited number of emails addresses."
457
- msgstr ""
458
-
459
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:204
460
- msgid ""
461
- "Insert one email address per line and try to keep this list short. On "
462
- "<code>Bounce text</code> insert the text you want to display for rejected "
463
- "users. ex: <code>hybridauth@gmail.com</code>"
464
- msgstr ""
465
-
466
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:217
467
- msgid "E-mails list"
468
- msgstr ""
469
-
470
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:236
471
- msgid "Filters by profile urls"
472
- msgstr ""
473
-
474
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:240
475
- msgid "Restrict registration to a limited number of profile urls."
476
- msgstr ""
477
-
478
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:241
479
- msgid ""
480
- "<b>Note</b>: If a social network provide the user email, then use 'Filters "
481
- "by e-mails addresses' instead. Providers like Facebook provide multiples "
482
- "profiles URLs per user and WSL won't be able to reconize them."
483
- msgstr ""
484
-
485
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:242
486
- msgid ""
487
- "Insert one email address per line and try to keep this list short. On "
488
- "<code>Bounce text</code> insert the text you want to display for rejected "
489
- "users. ex: <code>http://twitter.com/HybridAuth</code>, <code>https://plus."
490
- "google.com/u/0/108839241301472312344</code>"
491
- msgstr ""
492
-
493
- #: includes/admin/components/bouncer/wsl.components.bouncer.setup.php:255
494
- msgid "Profile urls"
495
- msgstr ""
496
-
497
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:26
498
- #: includes/admin/components/login-widget/wsl.components.loginwidget.sidebar.php:26
499
- msgid "What's This?"
500
- msgstr ""
501
-
502
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:30
503
- msgid "Hey, meet our friend, the Bouncer"
504
- msgstr ""
505
-
506
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:33
507
- msgid ""
508
- "Ever been in trouble with one of <a href=\"http://www.flickr.com/search/?"
509
- "q=bouncer+doorman&z=e\" target=\"_blank\">these guys</a>? Well, this module "
510
- "have more or less the same role, and he will try his best to piss your users "
511
- "off until they meet your requirements."
512
- msgstr ""
513
-
514
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:37
515
- msgid ""
516
- "This feature is most suited for small businesses and folks running a closed-"
517
- "door blog between friends or coworkers."
518
- msgstr ""
519
-
520
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:40
521
- msgid "Available settings"
522
- msgstr ""
523
-
524
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:43
525
- msgid "Enable/Disable Registration"
526
- msgstr ""
527
-
528
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:44
529
- msgid "Enable/Disable Authentication"
530
- msgstr ""
531
-
532
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:46
533
- msgid "Users moderation"
534
- msgstr ""
535
-
536
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:47
537
- msgid "Users roles"
538
- msgstr ""
539
-
540
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:48
541
- msgid "Restrictions (by emails, domains, profiles urls)"
542
- msgstr ""
543
-
544
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:51
545
- msgid "IMPORTANT!"
546
- msgstr ""
547
-
548
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:54
549
- msgid ""
550
- "All the settings on this page without exception are only valid for users "
551
- "authenticating through <b>WordPress Social Login Widget"
552
- msgstr ""
553
-
554
- #: includes/admin/components/bouncer/wsl.components.bouncer.sidebar.php:57
555
- msgid ""
556
- "Users authenticating through the regulars Wordpress Login and Register pages "
557
- "with their usernames and passwords WILL NOT be affected."
558
- msgstr ""
559
-
560
- #: includes/admin/components/components/wsl.components.help.gallery.php:30
561
- msgid "Other Components available"
562
- msgstr ""
563
-
564
- #: includes/admin/components/components/wsl.components.help.gallery.php:58
565
- msgid "WordPress Social Login for BuddyPress"
566
- msgstr ""
567
-
568
- #: includes/admin/components/components/wsl.components.help.gallery.php:60
569
- msgid "Make WordPress Social Login compatible with BuddyPress"
570
- msgstr ""
571
-
572
- #: includes/admin/components/components/wsl.components.help.gallery.php:61
573
- msgid "Widget integration, xProfiles mapping and more"
574
- msgstr ""
575
-
576
- #: includes/admin/components/components/wsl.components.help.gallery.php:63
577
- msgid "Install Now"
578
- msgstr ""
579
-
580
- #: includes/admin/components/components/wsl.components.help.gallery.php:64
581
- msgid "Visit plugin site"
582
- msgstr ""
583
-
584
- #: includes/admin/components/components/wsl.components.help.gallery.php:69
585
- msgid "Build yours"
586
- msgstr ""
587
-
588
- #: includes/admin/components/components/wsl.components.help.gallery.php:71
589
- msgid ""
590
- "Looking to build your own custom <b>WordPress Social Login</b> extenstion or "
591
- "component? Well, it's pretty easy. Just RTFM :)"
592
- msgstr ""
593
-
594
- #: includes/admin/components/components/wsl.components.help.gallery.php:74
595
- msgid "WSL Developer API"
596
- msgstr ""
597
-
598
- #: includes/admin/components/components/wsl.components.help.gallery.php:75
599
- msgid "WSL on Github"
600
- msgstr ""
601
-
602
- #: includes/admin/components/components/wsl.components.help.setup.php:29
603
- #: includes/admin/components/components/wsl.components.help.setup.php:37
604
- msgid "Component"
605
- msgstr ""
606
-
607
- #: includes/admin/components/components/wsl.components.help.setup.php:30
608
- #: includes/admin/components/components/wsl.components.help.setup.php:38
609
- msgid "Description"
610
- msgstr ""
611
-
612
- #: includes/admin/components/components/wsl.components.help.setup.php:67
613
- msgid "View"
614
- msgstr ""
615
-
616
- #: includes/admin/components/components/wsl.components.help.setup.php:72
617
- msgid "Disable"
618
- msgstr ""
619
-
620
- #: includes/admin/components/components/wsl.components.help.setup.php:74
621
- msgid "Enable"
622
- msgstr ""
623
-
624
- #: includes/admin/components/contacts/index.php:39
625
- msgid "Settings"
626
- msgstr ""
627
-
628
- #: includes/admin/components/contacts/index.php:43
629
- msgid ""
630
- "<b>WordPress Social Login</b> is now introducing <b>Contacts Import</b> as a "
631
- "new feature. When enabled, users authenticating through WordPress Social "
632
- "Login will be asked for the authorisation to import their contact list. Note "
633
- "that some social networks do not provide certains of their users information "
634
- "like contacts emails, photos and or profile urls"
635
- msgstr ""
636
-
637
- #: includes/admin/components/contacts/index.php:45
638
- msgid "Enable contacts import for"
639
- msgstr ""
640
-
641
- #: includes/admin/components/contacts/index.php:52
642
- #: includes/admin/components/contacts/index.php:59
643
- #: includes/admin/components/contacts/index.php:66
644
- #: includes/admin/components/contacts/index.php:73
645
- #: includes/admin/components/contacts/index.php:80
646
- #: includes/admin/components/diagnostics/index.php:62
647
- msgid "Disabled"
648
- msgstr ""
649
-
650
- #: includes/admin/components/contacts/index.php:86
651
- msgid "Notes"
652
- msgstr ""
653
-
654
- #: includes/admin/components/contacts/index.php:88
655
- msgid ""
656
- "To enable contacts import from these social network, you need first to "
657
- "enabled them on the <a href=\"options-general.php?page=wordpress-social-"
658
- "login&wslp=networks\"><b>Networks</b></a> tab and register the required "
659
- "application"
660
- msgstr ""
661
-
662
- #: includes/admin/components/contacts/index.php:89
663
- msgid ""
664
- "<b>WSL</b> will try to import as much information about a user contacts as "
665
- "he was able to pull from the social networks APIs."
666
- msgstr ""
667
-
668
- #: includes/admin/components/contacts/index.php:90
669
- msgid ""
670
- "All contacts data are sotred into your database on the table: "
671
- "<code>`wsluserscontacts`</code>"
672
- msgstr ""
673
-
674
- #: includes/admin/components/contacts/index.php:107
675
- msgid "Users contacts list preview"
676
- msgstr ""
677
-
678
- #: includes/admin/components/contacts/index.php:114
679
- #, php-format
680
- msgid "%s contact's list"
681
- msgstr ""
682
-
683
- #: includes/admin/components/contacts/index.php:121
684
- #: includes/admin/components/contacts/index.php:130
685
- #: includes/widgets/wsl.auth.widget.php:299
686
- msgid "Provider"
687
- msgstr ""
688
-
689
- #: includes/admin/components/contacts/index.php:122
690
- #: includes/admin/components/contacts/index.php:131
691
- msgid "User"
692
- msgstr ""
693
-
694
- #: includes/admin/components/contacts/index.php:123
695
- #: includes/admin/components/contacts/index.php:132
696
- msgid "Contact Name"
697
- msgstr ""
698
-
699
- #: includes/admin/components/contacts/index.php:124
700
- #: includes/admin/components/contacts/index.php:133
701
- msgid "Contact Email"
702
- msgstr ""
703
-
704
- #: includes/admin/components/contacts/index.php:125
705
- #: includes/admin/components/contacts/index.php:134
706
- msgid "Contact Profile Url"
707
- msgstr ""
708
-
709
- #: includes/admin/components/contacts/index.php:150
710
- msgid "No contacts found"
711
- msgstr ""
712
-
713
- #: includes/admin/components/diagnostics/index.php:24
714
- msgid "Requirements test"
715
- msgstr ""
716
-
717
- #: includes/admin/components/diagnostics/index.php:27
718
- msgid ""
719
- "In order for <b>WordPress Social Login</b> to work properly, your server "
720
- "should meet certain requirements. These \"requirements\" <br />and \"services"
721
- "\" are usually offered by default by most \"modern\" web hosting providers, "
722
- "however some complications may <br />occur with <b>shared hosting</b> and, "
723
- "or <b>custom wordpress installations</b>"
724
- msgstr ""
725
-
726
- #: includes/admin/components/diagnostics/index.php:30
727
- msgid "The minimum server requirements are"
728
- msgstr ""
729
-
730
- #: includes/admin/components/diagnostics/index.php:33
731
- msgid "PHP >= 5.2.0 installed"
732
- msgstr ""
733
-
734
- #: includes/admin/components/diagnostics/index.php:34
735
- msgid "WSL Endpoint URLs reachable"
736
- msgstr ""
737
-
738
- #: includes/admin/components/diagnostics/index.php:35
739
- msgid "PHP's default SESSION handling"
740
- msgstr ""
741
-
742
- #: includes/admin/components/diagnostics/index.php:36
743
- msgid "PHP/CURL/SSL Extension enabled"
744
- msgstr ""
745
-
746
- #: includes/admin/components/diagnostics/index.php:37
747
- msgid "PHP/JSON Extension enabled"
748
- msgstr ""
749
-
750
- #: includes/admin/components/diagnostics/index.php:38
751
- msgid "PHP/REGISTER_GLOBALS Off"
752
- msgstr ""
753
-
754
- #: includes/admin/components/diagnostics/index.php:39
755
- msgid "jQuery installed on WordPress backoffice"
756
- msgstr ""
757
-
758
- #: includes/admin/components/diagnostics/index.php:42
759
- msgid ""
760
- "You can run the <b>WordPress Social Login Requirements Test</b> by clicking "
761
- "the button bellow"
762
- msgstr ""
763
-
764
- #: includes/admin/components/diagnostics/index.php:46
765
- msgid "Run the plugin requirements test"
766
- msgstr ""
767
-
768
- #: includes/admin/components/diagnostics/index.php:47
769
- msgid "Website Information"
770
- msgstr ""
771
-
772
- #: includes/admin/components/diagnostics/index.php:53
773
- msgid "Development mode"
774
- msgstr ""
775
-
776
- #: includes/admin/components/diagnostics/index.php:56
777
- msgid ""
778
- "By enabling the development mode, this plugin will try generate and display "
779
- "a technical reports when something goes wrong. <br />This report can help "
780
- "your figure out the root of any issues you may runs into, or you can also "
781
- "send it to the plugin developer. <br />Its recommend to set the Development "
782
- "mode to <b style=\"color:red\">Disabled</b> on production."
783
- msgstr ""
784
-
785
- #: includes/admin/components/help/index.php:25
786
- msgid "Troubleshooting"
787
- msgstr ""
788
-
789
- #: includes/admin/components/help/index.php:27
790
- msgid "WSL Diagnostics"
791
- msgstr ""
792
-
793
- #: includes/admin/components/help/index.php:29
794
- msgid "System information"
795
- msgstr ""
796
-
797
- #: includes/admin/components/help/index.php:32
798
- msgid ""
799
- "If you run into any issue, you can access the <b>WordPress Social Login "
800
- "Diagnostics</b> to check the <b>Plugin Requirements</b> or to enable the "
801
- "<b>Development mode</b>"
802
- msgstr ""
803
-
804
- #: includes/admin/components/help/index.php:35
805
- msgid ""
806
- "Remember to include your System information when posting support requests"
807
- msgstr ""
808
-
809
- #: includes/admin/components/help/index.php:39
810
- msgid "Documentation"
811
- msgstr ""
812
-
813
- #: includes/admin/components/help/index.php:41
814
- msgid ""
815
- "The complete <b>User Guide</b> can be found at\n"
816
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/index.html\" target="
817
- "\"_blank\">hybridauth.sourceforge.net/wsl/index.html</a>"
818
- msgstr ""
819
-
820
- #: includes/admin/components/help/index.php:47
821
- msgid "FAQs"
822
- msgstr ""
823
-
824
- #: includes/admin/components/help/index.php:49
825
- msgid ""
826
- "A list of <b>Frequently asked questions</b> can be found at\n"
827
- "\t\t<a href=\"http://hybridauth.sourceforge.net/wsl/f