PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / trunk
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions vtrunk
260913 260909 260829 260814 260805 110710 110731 110812 110815 110912 110913 110915 110926 110927 111002 111003 111011 111017 111029 111105 111206 111216 111220 120213 120219 All 188 releases
s2member / src / includes / classes / login-customizations.inc.php

login-customizations.inc.php in s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions trunk, at src/includes/classes/login-customizations.inc.php

220 lines 12.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // @codingStandardsIgnoreFile
3 /**
4 * Login customizations.
5 *
6 * Copyright: © 2009-2011
7 * {@link http://websharks-inc.com/ WebSharks, Inc.}
8 * (coded in the USA)
9 *
10 * Released under the terms of the GNU General Public License.
11 * You should have received a copy of the GNU General Public License,
12 * along with this software. In the main directory, see: /licensing/
13 * If not, see: {@link http://www.gnu.org/licenses/}.
14 *
15 * @package s2Member\Login_Customizations
16 * @since 3.5
17 */
18 if(!defined('WPINC')) // MUST have WordPress.
19 exit('Do not access this file directly.');
20
21 if(!class_exists('c_ws_plugin__s2member_login_customizations'))
22 {
23 /**
24 * Login customizations.
25 *
26 * @package s2Member\Login_Customizations
27 * @since 3.5
28 */
29 class c_ws_plugin__s2member_login_customizations
30 {
31 /**
32 * Filters the login/registration logo URL.
33 *
34 * @package s2Member\Login_Customizations
35 * @since 3.5
36 *
37 * @attaches-to ``add_filter('login_headerurl');``
38 *
39 * @param string $url Expects a login header URL passed in by the Filter.
40 *
41 * @return string A URL based on s2Member's UI configuration.
42 */
43 public static function login_header_url($url = '')
44 {
45 if(!$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_design_enabled'])
46 return $url; // Login/registration design disabled in this case.
47
48 do_action('ws_plugin__s2member_before_login_header_url', get_defined_vars());
49
50 $url = $GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_logo_url'];
51
52 return apply_filters('ws_plugin__s2member_login_header_url', $url, get_defined_vars());
53 }
54
55 /**
56 * Filters the login/registration logo title.
57 *
58 * @package s2Member\Login_Customizations
59 * @since 3.5
60 *
61 * @attaches-to ``add_filter('login_headertext');``
62 *
63 * @param string $title Expects a title passed in by the Filter.
64 *
65 * @return string A title based on s2Member's UI configuration.
66 */
67 public static function login_header_title($title = '')
68 {
69 if(!$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_design_enabled'])
70 return $title; // Login/registration design disabled in this case.
71
72 do_action('ws_plugin__s2member_before_login_header_title', get_defined_vars());
73
74 $title = $GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_logo_title'];
75
76 return apply_filters('ws_plugin__s2member_login_header_title', $title, get_defined_vars());
77 }
78
79 /**
80 * Styles login/registration *( i.e., `/wp-login.php` )*.
81 *
82 * @package s2Member\Login_Customizations
83 * @since 3.5
84 *
85 * @attaches-to ``add_action('login_head');``
86 */
87 public static function login_header_styles()
88 {
89 if(!$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_design_enabled'])
90 return; // Login/registration design disabled in this case.
91
92 $s = ''; // Initialize styles string here to give hooks a chance.
93 $a = array(); // Initialize here to give filters a chance.
94
95 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
96 do_action('ws_plugin__s2member_before_login_header_styles', get_defined_vars());
97 unset($__refs, $__v);
98
99 $a[] = '<style type="text/css">'; // Open style tag, then give filters a chance below.
100 $i = apply_filters('ws_plugin__s2member_login_header_styles_important', ' !important', get_defined_vars());
101 $a = apply_filters('ws_plugin__s2member_login_header_styles_array_after_open', $a, get_defined_vars());
102
103 $a[] = 'html, body { border:0'.$i.'; background:none'.$i.'; }';
104 $a[] = 'html { background-color:#'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_background_color'].$i.'; }';
105 $a[] = 'html { background-image:url('.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_background_image'].')'.$i.'; }';
106 $a[] = 'html { background-repeat:'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_background_image_repeat'].$i.'; }';
107 $a[] = '@media (max-width: 767px) { html, body { background-size: contain '.$i.'; } }';
108
109 $a[] = 'body, body * { font-size:'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_font_size'].$i.'; }';
110 $a[] = 'body, body * { font-family:'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_font_family'].$i.'; }';
111 $a[] = '.dashicons { font-family:dashicons'.$i.'; }';
112
113 $a[] = 'div#login { width: 100% '.$i.'; max-width:'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_logo_src_width'].'px'.$i.'; }';
114 $a[] = 'div#login h1 a { background:url('.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_logo_src'].') no-repeat top center'.$i.'; background-size:contain'.$i.'; }';
115 $a[] = 'div#login h1 a { display:block'.$i.'; width:100%'.$i.'; height:'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_logo_src_height'].'px'.$i.'; }';
116
117 $a[] = 'div#login form { box-shadow:1px 1px 2px #'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_background_box_shadow_color'].', -1px -1px 2px #'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_background_box_shadow_color'].$i.'; border-radius:5px'.$i.'; padding-bottom:16px'.$i.'; }';
118
119 $a[] = 'div#login p#nav, div#login p#nav a, div#login p#nav a:hover, div#login p#nav a:active, div#login p#nav a:focus { color:#'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_background_text_color'].$i.'; text-shadow:1px 1px 3px #'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_background_text_shadow_color'].$i.'; }';
120 $a[] = 'div#login p#backtoblog, div#login p#backtoblog a, div#login p#backtoblog a:hover, div#login p#backtoblog a:active, div#login p#backtoblog a:focus { color:#'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_background_text_color'].$i.'; text-shadow:1px 1px 3px #'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_background_text_shadow_color'].$i.'; }';
121
122 $a[] = 'div#login form p { margin:2px 0 16px 0'.$i.'; }'; // Handles paragraph margins inside the form.
123 $a[] = 'div#login form input[type="text"], div#login form input[type="email"], div#login form input[type="password"], div#login form textarea, div#login form select { margin:0'.$i.'; padding:3px'.$i.'; border-radius:3px'.$i.'; box-sizing:border-box'.$i.'; width:100%'.$i.'; background:#FBFBFB repeat scroll 0 0'.$i.'; border:1px solid #E5E5E5'.$i.'; font-size:'.$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_font_field_size'].$i.'; font-weight:normal'.$i.'; color:#333333'.$i.'; }';
124 $a[] = '@supports (-moz-appearance: none){ div#login form select { font-size:'.min((int)$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_font_field_size'], 15).'px'.$i.'; } }'; // Mozilla doesn't like the larger font size. This corrects that issue in Firefox.
125 $a[] = 'div#login form label { cursor:pointer'.$i.'; } div#login form label.ws-plugin--s2member-custom-reg-field-op-l { opacity:0.7'.$i.'; font-size:90%'.$i.'; vertical-align:middle'.$i.'; }';
126 $a[] = 'div#login form input[type="checkbox"], div#login form input[type="radio"] { margin:0 3px 0 0'.$i.'; vertical-align:middle'.$i.'; }';
127 $a[] = 'div#login form input#ws-plugin--s2member-custom-reg-field-user-pass2[type="password"] { margin-top:5px'.$i.'; }';
128
129 $a[] = 'div#login form div.ws-plugin--s2member-custom-reg-field-divider-section { margin:2px 0 16px 0'.$i.'; border:0'.$i.'; height:1px'.$i.'; line-height:1px'.$i.'; background:#CCCCCC'.$i.'; }';
130 $a[] = 'div#login form div.ws-plugin--s2member-custom-reg-field-divider-section-title { margin:2px 0 16px 0'.$i.'; border:0 solid #CCCCCC'.$i.'; border-width:0 0 1px 0'.$i.'; padding:0 0 10px 0'.$i.'; font-size:110%'.$i.'; }';
131
132 $a[] = 'div#login form input[type="submit"], div#login form input[type="submit"]:hover, div#login form input[type="submit"]:active, div#login form input[type="submit"]:focus { color:#666666'.$i.'; text-shadow:2px 2px 5px #EEEEEE'.$i.'; border:1px solid #999999'.$i.'; border-radius:3px'.$i.'; background:#FBFBFB'.$i.'; box-shadow:0 -1px 2px 0 rgba(0,0,0,0.2) inset'.$i.'; }';
133 $a[] = 'div#login form input[type="submit"]:hover, div#login form input[type="submit"]:active, div#login form input[type="submit"]:focus { color:#000000'.$i.'; text-shadow:2px 2px 5px #CCCCCC'.$i.'; border-color:#000000'.$i.'; }';
134 $a[] = 'div#login form#registerform p.submit { float:none'.$i.'; margin-top:-10px'.$i.'; } div#login form#registerform input[type="submit"] { float:none'.$i.'; width:100%'.$i.'; box-sizing:border-box'.$i.'; }';
135 $a[] = 'div#login form#lostpasswordform p.submit { float:none'.$i.'; } div#login form#lostpasswordform input[type="submit"] { float:none'.$i.'; width:100%'.$i.'; box-sizing:border-box'.$i.'; }';
136 $a[] = 'div#login form#resetpassform #pass-strength-result { float:none'.$i.'; width:100%'.$i.'; box-sizing:border-box'.$i.'; } div#login form#resetpassform p.submit { float:none'.$i.'; } div#login form#resetpassform input[type="submit"] { float:none'.$i.'; width:100%'.$i.'; box-sizing:border-box'.$i.'; }';
137
138 $a[] = 'div.ws-plugin--s2member-password-strength { margin-top:3px'.$i.'; font-color:#000000'.$i.'; background-color:#EEEEEE'.$i.'; padding:3px'.$i.'; border-radius:3px'.$i.'; } div.ws-plugin--s2member-password-strength-short { background-color:#FFA0A0'.$i.'; } div.ws-plugin--s2member-password-strength-weak { background-color:#FFB78C'.$i.'; } div.ws-plugin--s2member-password-strength-good { background-color:#FFEC8B'.$i.'; } div.ws-plugin--s2member-password-strength-strong { background-color:#C3FF88'.$i.'; } div.ws-plugin--s2member-password-strength-mismatch { background-color:#D6C1AB'.$i.'; }';
139
140 $a[] = 'div#login form#registerform p#reg_passmail { font-style:italic'.$i.'; }';
141
142 if($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_password'])
143 $a[] = 'div#login form#registerform p#reg_passmail { display:none'.$i.'; }';
144
145 if(!$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_footer_backtoblog'])
146 $a[] = 'div#login p#backtoblog { display:none'.$i.'; }';
147
148 $a = apply_filters('ws_plugin__s2member_login_header_styles_array_before_close', $a, get_defined_vars());
149 $a[] = '</style>'; // Now close style tag. There are other filters below.
150
151 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
152 do_action('ws_plugin__s2member_during_login_header_styles', get_defined_vars());
153 unset($__refs, $__v);
154
155 $a = apply_filters('ws_plugin__s2member_login_header_styles_array', $a, get_defined_vars());
156 $s .= "\n".implode("\n", $a)."\n\n"; // Now put all array elements together.
157
158 echo apply_filters('ws_plugin__s2member_login_header_styles', $s, get_defined_vars());
159
160 do_action('ws_plugin__s2member_after_login_header_styles', get_defined_vars());
161 }
162
163 /**
164 * Displays login footer design.
165 *
166 * @package s2Member\Login_Customizations
167 * @since 3.5
168 *
169 * @attaches-to ``add_action('login_footer');``
170 *
171 * @return void
172 */
173 public static function login_footer_design()
174 {
175 if(!$GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_design_enabled'])
176 return; // Login/registration design disabled in this case.
177
178 do_action('ws_plugin__s2member_before_login_footer_design', get_defined_vars());
179
180 if(($code = $GLOBALS['WS_PLUGIN__']['s2member']['o']['login_reg_footer_design']))
181 if(is_multisite() && c_ws_plugin__s2member_utils_conds::is_multisite_farm() && !is_main_site())
182 {
183 echo $code."\n"; // No PHP here.
184 }
185 else // Otherwise, safe to allow PHP code.
186 {
187 eval('?>'.$code);
188 }
189 do_action('ws_plugin__s2member_after_login_footer_design', get_defined_vars());
190 }
191
192 /**
193 * Filters the Lost Password URL and changes the default behavior of wp_lostpassword_url()
194 * so that it uses site_url() instead of network_site_url(), but only if is_multisite()
195 * In a non-multisite environment, the default WordPress behavior (as of v4.3.1) is used.
196 *
197 * @package s2Member\Login_Customizations
198 * @since 140603
199 *
200 * @attaches-to ``add_filter('lostpassword_url');``
201 *
202 * @param string $lostpassword_url The lost password page URL.
203 * @param string $redirect The path to redirect to on login.
204 *
205 * @return string Lost password URL.
206 */
207 public static function lost_password_url($lostpassword_url, $redirect)
208 {
209 if(apply_filters('ws_plugin__s2member_tweak_lost_password_url', is_multisite(), get_defined_vars()))
210 {
211 $args = array('action' => 'lostpassword');
212 if(!empty($redirect)) $args['redirect_to'] = $redirect;
213
214 $lostpassword_url = add_query_arg(urlencode_deep($args), site_url('wp-login.php', 'login'));
215 }
216 return apply_filters('ws_plugin__s2member_lost_password_url', $lostpassword_url, $redirect, get_defined_vars());
217 }
218 }
219 }
220