PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / 260814
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions v260814
260917 260913 260909 260829 260814 260805 110710 110731 110812 110815 110912 110913 110915 110926 110927 111002 111003 111011 111017 111029 111105 111206 111216 111220 120213 All 189 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 260814, at src/includes/classes/sc-profile-in.inc.php

311 lines 16.9 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 if(!empty($GLOBALS['ws_plugin__s2member_profile_saved'])) // Respond to successful updates.
70 {
71 echo '<div id="ws-plugin--s2member-profile-saved" class="alert alert-success">'."\n";
72 echo _x('Profile updated successfully.', 's2member-front', 's2member')."\n";
73 echo '</div>'."\n";
74 }
75 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
76 do_action('ws_plugin__s2member_during_profile_before_table', get_defined_vars());
77 unset($__refs, $__v);
78
79 echo '<table cellpadding="0" cellspacing="0">'."\n";
80 echo '<tbody>'."\n";
81
82 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
83 do_action('ws_plugin__s2member_during_profile_before_fields', get_defined_vars());
84 unset($__refs, $__v);
85
86 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_username', TRUE, get_defined_vars()))
87 {
88 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
89 do_action('ws_plugin__s2member_during_profile_during_fields_before_username', get_defined_vars());
90 unset($__refs, $__v);
91
92 echo '<tr>'."\n";
93 echo '<td>'."\n";
94 echo '<label for="ws-plugin--s2member-profile-login">'."\n";
95 echo '<strong>'._x('Username', 's2member-front', 's2member').' *</strong> <small>'._x('(cannot be changed)', 's2member-front', 's2member').'</small><br />'."\n";
96 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";
97 echo '</label>'."\n";
98 echo '</td>'."\n";
99 echo '</tr>'."\n";
100
101 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
102 do_action('ws_plugin__s2member_during_profile_during_fields_after_username', get_defined_vars());
103 unset($__refs, $__v);
104 }
105 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_email', TRUE, get_defined_vars()))
106 {
107 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
108 do_action('ws_plugin__s2member_during_profile_during_fields_before_email', get_defined_vars());
109 unset($__refs, $__v);
110
111 echo '<tr>'."\n";
112 echo '<td>'."\n";
113 echo '<label for="ws-plugin--s2member-profile-email">'."\n";
114 echo '<strong>'._x('Email Address', 's2member-front', 's2member').' *</strong><br />'."\n";
115 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";
116 echo '</label>'."\n";
117 echo '</td>'."\n";
118 echo '</tr>'."\n";
119
120 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
121 do_action('ws_plugin__s2member_during_profile_during_fields_after_email', get_defined_vars());
122 unset($__refs, $__v);
123 }
124 if($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_names'])
125 {
126 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_first_name', TRUE, get_defined_vars()))
127 {
128 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
129 do_action('ws_plugin__s2member_during_profile_during_fields_before_first_name', get_defined_vars());
130 unset($__refs, $__v);
131
132 echo '<tr>'."\n";
133 echo '<td>'."\n";
134 echo '<label for="ws-plugin--s2member-profile-first-name">'."\n";
135 echo '<strong>'._x('First Name', 's2member-front', 's2member').' *</strong><br />'."\n";
136 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";
137 echo '</label>'."\n";
138 echo '</td>'."\n";
139 echo '</tr>'."\n";
140
141 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
142 do_action('ws_plugin__s2member_during_profile_during_fields_after_first_name', get_defined_vars());
143 unset($__refs, $__v);
144 }
145 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_last_name', TRUE, get_defined_vars()))
146 {
147 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
148 do_action('ws_plugin__s2member_during_profile_during_fields_before_last_name', get_defined_vars());
149 unset($__refs, $__v);
150
151 echo '<tr>'."\n";
152 echo '<td>'."\n";
153 echo '<label for="ws-plugin--s2member-profile-last-name">'."\n";
154 echo '<strong>'._x('Last Name', 's2member-front', 's2member').' *</strong><br />'."\n";
155 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";
156 echo '</label>'."\n";
157 echo '</td>'."\n";
158 echo '</tr>'."\n";
159
160 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
161 do_action('ws_plugin__s2member_during_profile_during_fields_after_last_name', get_defined_vars());
162 unset($__refs, $__v);
163 }
164 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_display_name', TRUE, get_defined_vars()))
165 {
166 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
167 do_action('ws_plugin__s2member_during_profile_during_fields_before_display_name', get_defined_vars());
168 unset($__refs, $__v);
169
170 echo '<tr>'."\n";
171 echo '<td>'."\n";
172 echo '<label for="ws-plugin--s2member-profile-display-name">'."\n";
173 echo '<strong>'._x('Display Name', 's2member-front', 's2member').' *</strong><br />'."\n";
174 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";
175 echo '</label>'."\n";
176 echo '</td>'."\n";
177 echo '</tr>'."\n";
178
179 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
180 do_action('ws_plugin__s2member_during_profile_during_fields_after_display_name', get_defined_vars());
181 unset($__refs, $__v);
182 }
183 }
184 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_custom_fields', TRUE, get_defined_vars()))
185 {
186 if($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields']) // Now, do we have Custom Fields?
187 if($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level('auto-detection', 'profile'))
188 {
189 $fields = get_user_option('s2member_custom_fields', $user_id);
190
191 $tabindex = $tabindex + 9; // Start tabindex at +9 ( +1 below ).
192
193 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
194 do_action('ws_plugin__s2member_during_profile_during_fields_before_custom_fields', get_defined_vars());
195 unset($__refs, $__v);
196
197 foreach(json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], TRUE) as $field)
198 {
199 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
200 do_action('ws_plugin__s2member_during_profile_during_fields_during_custom_fields_before', get_defined_vars());
201 unset($__refs, $__v);
202
203 if(in_array($field['id'], $fields_applicable)) // Field applicable?
204 {
205 $field_var = preg_replace('/[^a-z0-9]/i', '_', strtolower($field['id']));
206 $field_id_class = preg_replace('/_/', '-', $field_var);
207
208 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
209 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_during_custom_fields_display', TRUE, get_defined_vars()))
210 {
211 if(!empty($field['section']) && $field['section'] === 'yes') // Starts a new section?
212 echo '<tr><td><div class="ws-plugin--s2member-profile-field-divider-section'.((!empty($field['sectitle'])) ? '-title' : '').'">'.((!empty($field['sectitle'])) ? $field['sectitle'] : '').'</div></td></tr>';
213
214 echo '<tr>'."\n";
215 echo '<td>'."\n";
216 echo '<label for="ws-plugin--s2member-profile-'.esc_attr($field_id_class).'">'."\n";
217 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";
218 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');
219 echo '</td>'."\n";
220 echo '</tr>'."\n";
221 }
222 unset($__refs, $__v);
223 }
224 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
225 do_action('ws_plugin__s2member_during_profile_during_fields_during_custom_fields_after', get_defined_vars());
226 unset($__refs, $__v);
227 }
228 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
229 do_action('ws_plugin__s2member_during_profile_during_fields_after_custom_fields', get_defined_vars());
230 unset($__refs, $__v);
231 }
232 }
233 if(apply_filters('ws_plugin__s2member_during_profile_during_fields_display_password', TRUE, get_defined_vars()))
234 {
235 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
236 do_action('ws_plugin__s2member_during_profile_during_fields_before_password', get_defined_vars());
237 unset($__refs, $__v);
238
239 echo '<tr><td><div class="ws-plugin--s2member-profile-field-divider-section"></div></td></tr>';
240
241 echo '<tr>'."\n";
242 echo '<td>'."\n";
243
244 echo '<label for="ws-plugin--s2member-profile-password1" title="'.esc_attr(_x('Please type your Password twice to confirm.', 's2member-front', 's2member')).'">'."\n";
245 echo '<strong>'._x('New Password?', 's2member-front', 's2member').'</strong> <em>'._x('(please type it twice)', 's2member-front', 's2member').'</em><br />'."\n";
246 echo '<em>'._x('Only if changing password, otherwise leave blank.', 's2member-front', 's2member').'</em><br />'."\n";
247 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";
248 echo '</label>'."\n";
249
250 echo '<label for="ws-plugin--s2member-profile-password2" title="'.esc_attr(_x('Please type your Password twice to confirm.', 's2member-front', 's2member')).'">'."\n";
251 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";
252 echo '</label>'."\n";
253
254 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";
255
256 echo '</td>'."\n";
257 echo '</tr>'."\n";
258
259 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
260 do_action('ws_plugin__s2member_during_profile_during_fields_after_password', get_defined_vars());
261 unset($__refs, $__v);
262 }
263 if($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in'] && c_ws_plugin__s2member_list_servers::list_servers_integrated())
264 {
265 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
266 do_action('ws_plugin__s2member_during_profile_during_fields_before_opt_in', get_defined_vars());
267 unset($__refs, $__v);
268
269 echo '<tr><td><div class="ws-plugin--s2member-profile-field-divider-section"></div></td></tr>';
270
271 echo '<tr>'."\n";
272 echo '<td>'."\n";
273 echo '<label for="ws-plugin--s2member-profile-opt-in">'."\n";
274 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";
275 echo $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in_label']."\n";
276 echo '</label>'."\n";
277 echo '</td>'."\n";
278 echo '</tr>'."\n";
279
280 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
281 do_action('ws_plugin__s2member_during_profile_during_fields_after_opt_in', get_defined_vars());
282 unset($__refs, $__v);
283 }
284 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
285 do_action('ws_plugin__s2member_during_profile_after_fields', get_defined_vars());
286 unset($__refs, $__v);
287
288 echo '<tr>'."\n";
289 echo '<td>'."\n";
290 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";
291 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";
292 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";
293 echo '</td>'."\n";
294 echo '</tr>'."\n";
295
296 echo '</tbody>'."\n";
297 echo '</table>'."\n";
298
299 foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
300 do_action('ws_plugin__s2member_during_profile_after_table', get_defined_vars());
301 unset($__refs, $__v);
302
303 echo '</form>'."\n";
304
305 $code = ob_get_clean();
306 }
307 return apply_filters('ws_plugin__s2member_sc_profile', ((!empty($code)) ? $code : NULL), get_defined_vars());
308 }
309 }
310 }
311