PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / 261011
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions v261011
261011 261001 260927 260917 260913 260909 260829 260814 260805 110710 110731 110812 110815 110912 110913 110915 110926 110927 111002 111003 111011 111017 111029 111105 111206 All 192 releases
s2member / src / includes / classes / sc-profile-in.inc.php

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

318 lines 17.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // @codingStandardsIgnoreFile
3 /**
4 * Shortcode for `[s2Member-Profile /]` (inner processing routines).
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\Profiles
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_sc_profile_in'))
22 {
23 /**
24 * Shortcode for `[s2Member-Profile /]` (inner processing routines).
25 *
26 * @package s2Member\Profiles
27 * @since 3.5
28 */
29 class c_ws_plugin__s2member_sc_profile_in
30 {
31 /**
32 * Handles the Shortcode for: `[s2Member-Profile /]`.
33 *
34 * @package s2Member\Profiles
35 * @since 3.5
36 *
37 * @attaches-to ``add_shortcode('s2Member-Profile');``
38 *
39 * @param array $attr An array of Attributes.
40 * @param string $content Content inside the Shortcode.
41 * @param string $shortcode The actual Shortcode name itself.
42 *
43 * @return string|null The resulting Profile Modifiation Form *(inline)*, or null if not logged-in.
44 */
45 public static function sc_profile($attr = FALSE, $content = FALSE, $shortcode = FALSE)
46 {
47 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
48 do_action('ws_plugin__s2member_before_sc_profile', get_defined_vars());
49 unset($__refs, $__v);
50
51 c_ws_plugin__s2member_no_cache::no_cache_constants(true);
52
53 $tabindex = apply_filters('ws_plugin__s2member_sc_profile_tabindex', 0, get_defined_vars());
54
55 if(($user = (is_user_logged_in()) ? wp_get_current_user() : FALSE) && ($user_id = $user->ID))
56 {
57 $attr = c_ws_plugin__s2member_utils_strings::trim_qts_deep((array)$attr);
58
59 $attr = shortcode_atts(array(), $attr); // Possible Attributes. None.
60
61 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
62 do_action('ws_plugin__s2member_before_sc_profile_after_shortcode_atts', get_defined_vars());
63 unset($__refs, $__v);
64
65 ob_start(); // Start buffering. Allows Hooks to echo output like: `/?s2member_profile=1`.
66
67 echo '<form method="post" name="ws_plugin__s2member_profile" id="ws-plugin--s2member-profile" autocomplete="off">'."\n";
68
69 //261005.0548 Surface server-side profile validation failures inline instead of reporting a successful save when an email-domain change is rejected.
70 if(!empty($GLOBALS['ws_plugin__s2member_profile_error']))
71 {
72 echo '<div id="ws-plugin--s2member-profile-error" class="alert alert-error" style="margin-bottom:15px;font-weight:bold;font-size:110%;">'."\n";
73 echo esc_html($GLOBALS['ws_plugin__s2member_profile_error'])."\n";
74 echo '</div>'."\n";
75 }
76 if(!empty($GLOBALS['ws_plugin__s2member_profile_saved'])) // Respond to successful updates.
77 {
78 echo '<div id="ws-plugin--s2member-profile-saved" class="alert alert-success">'."\n";
79 echo _x('Profile updated successfully.', 's2member-front', 's2member')."\n";
80 echo '</div>'."\n";
81 }
82 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
83 do_action('ws_plugin__s2member_during_profile_before_table', get_defined_vars());
84 unset($__refs, $__v);
85
86 echo '<table cellpadding="0" cellspacing="0">'."\n";
87 echo '<tbody>'."\n";
88
89 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
90 do_action('ws_plugin__s2member_during_profile_before_fields', get_defined_vars());
91 unset($__refs, $__v);
92
93 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_username', TRUE, get_defined_vars()))
94 {
95 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
96 do_action('ws_plugin__s2member_during_profile_during_fields_before_username', get_defined_vars());
97 unset($__refs, $__v);
98
99 echo '<tr>'."\n";
100 echo '<td>'."\n";
101 echo '<label for="ws-plugin--s2member-profile-login">'."\n";
102 echo '<strong>'._x('Username', 's2member-front', 's2member').' *</strong> <small>'._x('(cannot be changed)', 's2member-front', 's2member').'</small><br />'."\n";
103 echo '<input type="text" aria-required="true" maxlength="60" autocomplete="off" name="ws_plugin__s2member_profile_login" id="ws-plugin--s2member-profile-login" class="ws-plugin--s2member-profile-field form-control" value="'.format_to_edit($user->user_login).'" disabled="disabled" />'."\n";
104 echo '</label>'."\n";
105 echo '</td>'."\n";
106 echo '</tr>'."\n";
107
108 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
109 do_action('ws_plugin__s2member_during_profile_during_fields_after_username', get_defined_vars());
110 unset($__refs, $__v);
111 }
112 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_email', TRUE, get_defined_vars()))
113 {
114 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
115 do_action('ws_plugin__s2member_during_profile_during_fields_before_email', get_defined_vars());
116 unset($__refs, $__v);
117
118 echo '<tr>'."\n";
119 echo '<td>'."\n";
120 echo '<label for="ws-plugin--s2member-profile-email">'."\n";
121 echo '<strong>'._x('Email Address', 's2member-front', 's2member').' *</strong><br />'."\n";
122 echo '<input type="email" aria-required="true" data-expected="email" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_email" id="ws-plugin--s2member-profile-email" class="ws-plugin--s2member-profile-field form-control" value="'.format_to_edit($user->user_email).'" tabindex="'.esc_attr(($tabindex = $tabindex + 10)).'" />'."\n";
123 echo '</label>'."\n";
124 echo '</td>'."\n";
125 echo '</tr>'."\n";
126
127 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
128 do_action('ws_plugin__s2member_during_profile_during_fields_after_email', get_defined_vars());
129 unset($__refs, $__v);
130 }
131 if($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_names'])
132 {
133 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_first_name', TRUE, get_defined_vars()))
134 {
135 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
136 do_action('ws_plugin__s2member_during_profile_during_fields_before_first_name', get_defined_vars());
137 unset($__refs, $__v);
138
139 echo '<tr>'."\n";
140 echo '<td>'."\n";
141 echo '<label for="ws-plugin--s2member-profile-first-name">'."\n";
142 echo '<strong>'._x('First Name', 's2member-front', 's2member').' *</strong><br />'."\n";
143 echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_first_name" id="ws-plugin--s2member-profile-first-name" class="ws-plugin--s2member-profile-field form-control" value="'.esc_attr($user->first_name).'" tabindex="'.esc_attr(($tabindex = $tabindex + 10)).'" />'."\n";
144 echo '</label>'."\n";
145 echo '</td>'."\n";
146 echo '</tr>'."\n";
147
148 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
149 do_action('ws_plugin__s2member_during_profile_during_fields_after_first_name', get_defined_vars());
150 unset($__refs, $__v);
151 }
152 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_last_name', TRUE, get_defined_vars()))
153 {
154 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
155 do_action('ws_plugin__s2member_during_profile_during_fields_before_last_name', get_defined_vars());
156 unset($__refs, $__v);
157
158 echo '<tr>'."\n";
159 echo '<td>'."\n";
160 echo '<label for="ws-plugin--s2member-profile-last-name">'."\n";
161 echo '<strong>'._x('Last Name', 's2member-front', 's2member').' *</strong><br />'."\n";
162 echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_last_name" id="ws-plugin--s2member-profile-last-name" class="ws-plugin--s2member-profile-field form-control" value="'.esc_attr($user->last_name).'" tabindex="'.esc_attr(($tabindex = $tabindex + 10)).'" />'."\n";
163 echo '</label>'."\n";
164 echo '</td>'."\n";
165 echo '</tr>'."\n";
166
167 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
168 do_action('ws_plugin__s2member_during_profile_during_fields_after_last_name', get_defined_vars());
169 unset($__refs, $__v);
170 }
171 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_display_name', TRUE, get_defined_vars()))
172 {
173 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
174 do_action('ws_plugin__s2member_during_profile_during_fields_before_display_name', get_defined_vars());
175 unset($__refs, $__v);
176
177 echo '<tr>'."\n";
178 echo '<td>'."\n";
179 echo '<label for="ws-plugin--s2member-profile-display-name">'."\n";
180 echo '<strong>'._x('Display Name', 's2member-front', 's2member').' *</strong><br />'."\n";
181 echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_display_name" id="ws-plugin--s2member-profile-display-name" class="ws-plugin--s2member-profile-field form-control" value="'.esc_attr($user->display_name).'" tabindex="'.esc_attr(($tabindex = $tabindex + 10)).'" />'."\n";
182 echo '</label>'."\n";
183 echo '</td>'."\n";
184 echo '</tr>'."\n";
185
186 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
187 do_action('ws_plugin__s2member_during_profile_during_fields_after_display_name', get_defined_vars());
188 unset($__refs, $__v);
189 }
190 }
191 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_custom_fields', TRUE, get_defined_vars()))
192 {
193 if($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields']) // Now, do we have Custom Fields?
194 if($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level('auto-detection', 'profile'))
195 {
196 $fields = get_user_option('s2member_custom_fields', $user_id);
197
198 $tabindex = $tabindex + 9; // Start tabindex at +9 ( +1 below ).
199
200 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
201 do_action('ws_plugin__s2member_during_profile_during_fields_before_custom_fields', get_defined_vars());
202 unset($__refs, $__v);
203
204 foreach(json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], TRUE) as $field)
205 {
206 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
207 do_action('ws_plugin__s2member_during_profile_during_fields_during_custom_fields_before', get_defined_vars());
208 unset($__refs, $__v);
209
210 if(in_array($field['id'], $fields_applicable)) // Field applicable?
211 {
212 $field_var = preg_replace('/[^a-z0-9]/i', '_', strtolower($field['id']));
213 $field_id_class = preg_replace('/_/', '-', $field_var);
214
215 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
216 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_during_custom_fields_display', TRUE, get_defined_vars()))
217 {
218 if(!empty($field['section']) && $field['section'] === 'yes') // Starts a new section?
219 echo '<tr><td><div class="ws-plugin--s2member-profile-field-divider-section'.((!empty($field['sectitle'])) ? '-title' : '').'">'.((!empty($field['sectitle'])) ? $field['sectitle'] : '').'</div></td></tr>';
220
221 echo '<tr>'."\n";
222 echo '<td>'."\n";
223 echo '<label for="ws-plugin--s2member-profile-'.esc_attr($field_id_class).'">'."\n";
224 echo '<strong'.((preg_match('/^(checkbox|pre_checkbox)$/', $field['type'])) ? ' style="display:none;"' : '').'>'.$field['label'].(($field['required'] === 'yes') ? ' *' : '').'</strong></label>'.((preg_match('/^(checkbox|pre_checkbox)$/', $field['type'])) ? '' : '<br />')."\n";
225 echo c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, 'ws_plugin__s2member_profile_', 'ws-plugin--s2member-profile-', 'ws-plugin--s2member-profile-field', '', ($tabindex = $tabindex + 1), '', $fields, @$fields[$field_var], 'profile');
226 echo '</td>'."\n";
227 echo '</tr>'."\n";
228 }
229 unset($__refs, $__v);
230 }
231 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
232 do_action('ws_plugin__s2member_during_profile_during_fields_during_custom_fields_after', get_defined_vars());
233 unset($__refs, $__v);
234 }
235 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
236 do_action('ws_plugin__s2member_during_profile_during_fields_after_custom_fields', get_defined_vars());
237 unset($__refs, $__v);
238 }
239 }
240 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_password', TRUE, get_defined_vars()))
241 {
242 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
243 do_action('ws_plugin__s2member_during_profile_during_fields_before_password', get_defined_vars());
244 unset($__refs, $__v);
245
246 echo '<tr><td><div class="ws-plugin--s2member-profile-field-divider-section"></div></td></tr>';
247
248 echo '<tr>'."\n";
249 echo '<td>'."\n";
250
251 echo '<label for="ws-plugin--s2member-profile-password1" title="'.esc_attr(_x('Please type your Password twice to confirm.', 's2member-front', 's2member')).'">'."\n";
252 echo '<strong>'._x('New Password?', 's2member-front', 's2member').'</strong> <em>'._x('(please type it twice)', 's2member-front', 's2member').'</em><br />'."\n";
253 echo '<em>'._x('Only if changing password, otherwise leave blank.', 's2member-front', 's2member').'</em><br />'."\n";
254 echo '<input type="password" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_password1" id="ws-plugin--s2member-profile-password1" class="ws-plugin--s2member-profile-field form-control" value="" tabindex="'.esc_attr(($tabindex = $tabindex + 10)).'"'.(($user->user_login === 'demo') ? ' disabled="disabled"' : '').' />'."\n";
255 echo '</label>'."\n";
256
257 echo '<label for="ws-plugin--s2member-profile-password2" title="'.esc_attr(_x('Please type your Password twice to confirm.', 's2member-front', 's2member')).'">'."\n";
258 echo '<input type="password" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_password2" id="ws-plugin--s2member-profile-password2" class="ws-plugin--s2member-profile-field form-control" value="" tabindex="'.esc_attr(($tabindex = $tabindex + 10)).'"'.(($user->user_login === 'demo') ? ' disabled="disabled"' : '').' />'."\n";
259 echo '</label>'."\n";
260
261 echo '<div id="ws-plugin--s2member-profile-password-strength" class="ws-plugin--s2member-password-strength"><em>'._x('password strength indicator', 's2member-front', 's2member').'</em></div>'."\n";
262
263 echo '</td>'."\n";
264 echo '</tr>'."\n";
265
266 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
267 do_action('ws_plugin__s2member_during_profile_during_fields_after_password', get_defined_vars());
268 unset($__refs, $__v);
269 }
270 if($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in'] && c_ws_plugin__s2member_list_servers::list_servers_integrated())
271 {
272 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
273 do_action('ws_plugin__s2member_during_profile_during_fields_before_opt_in', get_defined_vars());
274 unset($__refs, $__v);
275
276 echo '<tr><td><div class="ws-plugin--s2member-profile-field-divider-section"></div></td></tr>';
277
278 echo '<tr>'."\n";
279 echo '<td>'."\n";
280 echo '<label for="ws-plugin--s2member-profile-opt-in">'."\n";
281 echo '<input type="checkbox" name="ws_plugin__s2member_profile_opt_in" id="ws-plugin--s2member-profile-opt-in" class="ws-plugin--s2member-profile-field" value="1"'.((get_user_option('s2member_opt_in', $user_id)) ? ' checked="checked"' : '').' tabindex="'.esc_attr(($tabindex = $tabindex + 10)).'" />'."\n";
282 echo $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in_label']."\n";
283 echo '</label>'."\n";
284 echo '</td>'."\n";
285 echo '</tr>'."\n";
286
287 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
288 do_action('ws_plugin__s2member_during_profile_during_fields_after_opt_in', get_defined_vars());
289 unset($__refs, $__v);
290 }
291 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
292 do_action('ws_plugin__s2member_during_profile_after_fields', get_defined_vars());
293 unset($__refs, $__v);
294
295 echo '<tr>'."\n";
296 echo '<td>'."\n";
297 echo '<input type="hidden" name="ws_plugin__s2member_sc_profile_save" id="ws-plugin--s2member-sc-profile-save" value="'.esc_attr(wp_create_nonce('ws-plugin--s2member-sc-profile-save')).'" />'."\n";
298 echo '<input type="hidden" name="ws_plugin__s2member_profile_save" id="ws-plugin--s2member-profile-save" value="'.esc_attr(wp_create_nonce('ws-plugin--s2member-profile-save')).'" />'."\n";
299 echo '<input type="submit" id="ws-plugin--s2member-profile-submit" class="btn btn-primary" value="'.esc_attr(_x('Save All Changes', 's2member-front', 's2member')).'" tabindex="'.esc_attr(($tabindex = $tabindex + 10)).'" />'."\n";
300 echo '</td>'."\n";
301 echo '</tr>'."\n";
302
303 echo '</tbody>'."\n";
304 echo '</table>'."\n";
305
306 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
307 do_action('ws_plugin__s2member_during_profile_after_table', get_defined_vars());
308 unset($__refs, $__v);
309
310 echo '</form>'."\n";
311
312 $code = ob_get_clean();
313 }
314 return apply_filters('ws_plugin__s2member_sc_profile', ((!empty($code)) ? $code : NULL), get_defined_vars());
315 }
316 }
317 }
318