PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.0.20
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.0.20
1.2.72 1.2.71 1.2.70 1.2.69 1.2.68 1.2.67 1.2.66 1.2.65 1.2.64 1.2.63 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 All 172 releases
userswp / includes / class-templates.php

class-templates.php in UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP 1.0.20, at includes/class-templates.php

698 lines 24.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Template related functions
4 *
5 * This class defines all code necessary for UsersWP templates like login. register etc.
6 *
7 * @since 1.0.0
8 * @author GeoDirectory Team <info@wpgeodirectory.com>
9 */
10 class UsersWP_Templates {
11
12 /**
13 * Locates UsersWP templates based on template type.
14 *
15 * @since 1.0.0
16 * @package userswp
17 * @param string $template Template type.
18 * @return string The template filename if one is located.
19 */
20 public function uwp_locate_template( $template ) {
21
22 switch ($template) {
23 case 'register':
24 return $this->uwp_generic_locate_template('register');
25 break;
26
27 case 'login':
28 return $this->uwp_generic_locate_template('login');
29 break;
30
31 case 'forgot':
32 return $this->uwp_generic_locate_template('forgot');
33 break;
34
35 case 'change':
36 return $this->uwp_generic_locate_template('change');
37 break;
38
39 case 'reset':
40 return $this->uwp_generic_locate_template('reset');
41 break;
42
43 case 'account':
44 return $this->uwp_generic_locate_template('account');
45 break;
46
47 case 'profile':
48 return $this->uwp_generic_locate_template('profile');
49 break;
50
51 case 'users':
52 return $this->uwp_generic_locate_template('users');
53 break;
54 }
55
56 return apply_filters('uwp_locate_template', false, $template);
57 }
58
59 /**
60 * Locates UsersWP templates based on template type.
61 * Fallback to core templates when no custom templates found.
62 *
63 * @since 1.0.0
64 * @package userswp
65 * @param string $type Template type.
66 * @return string The template filename if one is located.
67 */
68 public function uwp_generic_locate_template($type = 'register') {
69
70 $plugin_path = dirname( dirname( __FILE__ ) );
71
72 $template = locate_template(array("userswp/".$type.".php"));
73 if (!$template) {
74 $template = $plugin_path . '/templates/'.$type.'.php';
75 }
76 $template = apply_filters('uwp_template_'.$type, $template);
77 return $template;
78 }
79
80 /**
81 * Doing some access checks for UsersWP related pages.
82 *
83 * @since 1.0.0
84 * @package userswp
85 * @return bool
86 */
87 public function access_checks() {
88 global $post;
89
90 if (!is_page()) {
91 return false;
92 }
93
94 $current_page_id = $post->ID;
95
96 $register_page = uwp_get_page_id('register_page', false);
97 $login_page = uwp_get_page_id('login_page', false);
98 $forgot_page = uwp_get_page_id('forgot_page', false);
99 $reset_page = uwp_get_page_id('reset_page', false);
100
101 $change_page = uwp_get_page_id('change_page', false);
102 $account_page = uwp_get_page_id('account_page', false);
103
104 if (( $register_page && ((int) $register_page == $current_page_id )) ||
105 ( $login_page && ((int) $login_page == $current_page_id ) ) ||
106 ( $forgot_page && ((int) $forgot_page == $current_page_id ) ) ||
107 ( $reset_page && ((int) $reset_page == $current_page_id ) )) {
108 if (is_user_logged_in()) {
109 $redirect_page_id = uwp_get_page_id('account_page', false);
110 if (empty($redirect_page_id)) {
111 $redirect_to = home_url('/');
112 } else {
113 $redirect_to = get_permalink($redirect_page_id);
114 }
115 $redirect_to = apply_filters('uwp_logged_in_redirect', $redirect_to);
116 wp_redirect($redirect_to);
117 exit();
118 }
119 } elseif ( $account_page && ((int) $account_page == $current_page_id ) ||
120 ( $change_page && ((int) $change_page == $current_page_id ) )) {
121 if (!is_user_logged_in()) {
122 wp_redirect(get_permalink($login_page));
123 exit();
124 } else {
125 $can_user_can_edit_account = apply_filters('uwp_user_can_edit_own_profile', true, get_current_user_id());
126 if (!$can_user_can_edit_account && ((int) $account_page == $current_page_id )) {
127 wp_redirect(home_url('/'));
128 exit();
129 }
130 }
131 } else {
132 return false;
133 }
134
135 return false;
136 }
137
138 /**
139 * If auto generated password, redirects to change password page.
140 *
141 * @since 1.0.0
142 * @package userswp
143 * @return void
144 */
145 public function change_default_password_redirect() {
146 if (!is_user_logged_in()) {
147 return;
148 }
149 if(1 == uwp_get_option('change_disable_password_nag')) {
150 return;
151 }
152 $change_page = uwp_get_page_id('change_page', false);
153 $password_nag = get_user_option('default_password_nag', get_current_user_id());
154
155 if ($password_nag) {
156 if (is_page()) {
157 global $post;
158 $current_page_id = $post->ID;
159 if ( $change_page && ((int) $change_page == $current_page_id ) ) {
160 return;
161 }
162 }
163 if ($change_page) {
164 wp_redirect( get_permalink($change_page) );
165 exit();
166 }
167 }
168 }
169
170 /**
171 * Redirects /profile to /profile/{username} for loggedin users.
172 *
173 * @since 1.0.0
174 * @package userswp
175 * @return void
176 */
177 public function profile_redirect() {
178 if (is_page()) {
179 global $wp_query, $post;
180 $current_page_id = $post->ID;
181 $profile_page = uwp_get_page_id('profile_page', false);
182 if ( $profile_page && ((int) $profile_page == $current_page_id ) ) {
183
184 if (isset($wp_query->query_vars['uwp_profile'])) {
185 //must be profile page
186 $url_type = apply_filters('uwp_profile_url_type', 'slug');
187 $author_slug = $wp_query->query_vars['uwp_profile'];
188 if ($url_type == 'id') {
189 $user = get_user_by('id', $author_slug);
190 } else {
191 $user = get_user_by('slug', $author_slug);
192 }
193
194 if (!isset($user->ID)) {
195 global $wp_query;
196 $wp_query->set_404();
197 status_header( 404 );
198 get_template_part( 404 ); exit();
199 }
200
201 } else {
202 if (is_user_logged_in()) {
203 $user_id = get_current_user_id();
204 $profile_url = uwp_build_profile_tab_url($user_id);
205 wp_redirect( $profile_url );
206 exit();
207 } else {
208 wp_redirect( home_url('/') );
209 exit();
210 }
211
212 }
213
214 }
215 }
216 }
217
218 /**
219 * Redirects user to a predefined page after logging out.
220 *
221 * @since 1.0.0
222 * @package userswp
223 * @return void
224 */
225 public function logout_redirect() {
226 $redirect_page_id = uwp_get_option('logout_redirect_to', '');
227 if(isset( $_REQUEST['redirect_to'] )){
228 $redirect_to = esc_url($_REQUEST['redirect_to']);
229 } elseif ( isset($redirect_page_id) && (int)$redirect_page_id > 0) {
230 $redirect_to = get_permalink($redirect_page_id);
231 } else {
232 $redirect_to = home_url('/');
233 }
234 $redirect_to = apply_filters('uwp_logout_redirect', $redirect_to);
235 wp_redirect( $redirect_to );
236 exit();
237 }
238
239
240 /**
241 * Redirects wp-login.php to UsersWP login page.
242 *
243 * @since 1.0.0
244 * @package userswp
245 * @return void
246 */
247 public function wp_login_redirect() {
248 $login_page_id = uwp_get_page_id('login_page', false);
249 $block_wp_login = uwp_get_option('block_wp_login', '');
250 if ($login_page_id && $block_wp_login == '1') {
251 global $pagenow;
252 if( 'wp-login.php' == $pagenow && !isset($_REQUEST['action']) ) {
253 $redirect_to = get_permalink($login_page_id);
254 wp_redirect( $redirect_to );
255 exit();
256 }
257 }
258 }
259
260 /**
261 * Changes the login url to the UWP login page.
262 *
263 * @param $login_url string The URL for login.
264 * @param $redirect string The URL to redirect back to upon successful login.
265 * @param $force_reauth bool Whether to force reauthorization, even if a cookie is present.
266 * @since 1.0.12
267 * @package userswp
268 *
269 * @return string The login url.
270 */
271 public function wp_login_url($login_url, $redirect, $force_reauth) {
272 $login_page_id = uwp_get_page_id('login_page', false);
273 $redirect_page_id = uwp_get_option('login_redirect_to', -1);
274 if (!is_admin() && $login_page_id) {
275 $login_page = get_permalink($login_page_id);
276 if($redirect){
277 $login_url = add_query_arg( 'redirect_to', $redirect, $login_page );
278 }elseif(isset($redirect_page_id) && (int)$redirect_page_id == -1 && wp_get_referer()) {
279 $redirect_to = esc_url(wp_get_referer());
280 $login_url = add_query_arg( 'redirect_to', $redirect_to, $login_page );
281 }elseif($redirect_page_id){
282 $redirect_to = get_permalink($redirect_page_id);
283 $login_url = add_query_arg( 'redirect_to', $redirect_to, $login_page );
284 }else{
285 $login_url = $login_page;
286 }
287 }
288
289 return $login_url;
290 }
291
292 /**
293 * Prints html for form fields of that particular form.
294 *
295 * @since 1.0.0
296 * @package userswp
297 * @param string $form_type Form type.
298 * @return void
299 */
300 public function uwp_template_fields($form_type) {
301
302 global $wpdb;
303 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
304 $extras_table_name = uwp_get_table_prefix() . 'uwp_form_extras';
305
306 if ($form_type == 'register') {
307 $fields = get_register_form_fields();
308 } elseif ($form_type == 'account') {
309 $fields = get_account_form_fields();
310 } elseif ($form_type == 'change') {
311 $fields = get_change_form_fields();
312 } else {
313 $fields = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $table_name . " WHERE form_type = %s AND is_active = '1' AND for_admin_use != '1' ORDER BY sort_order ASC", array($form_type)));
314 }
315
316 if (!empty($fields)) {
317 foreach ($fields as $field) {
318
319 if ($form_type == 'account') {
320 if ($field->htmlvar_name == 'uwp_account_display_name') {
321 if ($field->is_active != '1') {
322 continue;
323 }
324 }
325 if ($field->htmlvar_name == 'uwp_account_bio') {
326 if ($field->is_active != '1') {
327 continue;
328 }
329 }
330 }
331
332 if ($form_type == 'register') {
333 if ($field->is_active != '1') {
334 continue;
335 }
336 $count = $wpdb->get_var($wpdb->prepare("select count(*) from ".$extras_table_name." where site_htmlvar_name=%s AND form_type = %s", array($field->htmlvar_name, $form_type)));
337 if ($count == 1) {
338 $this->uwp_template_fields_html($field, $form_type);
339 }
340 } else {
341 $this->uwp_template_fields_html($field, $form_type);
342 }
343 }
344 }
345 }
346
347 /**
348 * Adds "Edit Account" form on account page.
349 *
350 * @since 1.0.0
351 * @package userswp
352 * @param string $type Template type.
353 * @return void
354 */
355 public function uwp_account_edit_form_display($type) {
356 if ($type == 'account') {
357 ?>
358 <form class="uwp-account-form uwp_form" method="post" enctype="multipart/form-data">
359 <?php do_action('uwp_template_fields', 'account'); ?>
360 <input type="hidden" name="uwp_account_nonce" value="<?php echo wp_create_nonce( 'uwp-account-nonce' ); ?>" />
361 <input name="uwp_account_submit" value="<?php echo __( 'Update Account', 'userswp' ); ?>" type="submit">
362 </form>
363 <?php }
364 }
365
366 /**
367 * Prints field html based on field type.
368 *
369 * @since 1.0.0
370 * @package userswp
371 * @param object $field Field info.
372 * @param string $form_type Form type.
373 * @param int|bool $user_id User ID.
374 * @return void
375 */
376 public function uwp_template_fields_html($field, $form_type, $user_id = false) {
377 if (!$user_id) {
378 $user_id = get_current_user_id();
379 }
380
381 $value = $this->uwp_get_default_form_value($field);
382 if ($form_type == 'account') {
383 $user_data = get_userdata($user_id);
384
385 if ($field->htmlvar_name == 'uwp_account_email') {
386 $value = $user_data->user_email;
387 } elseif ($field->htmlvar_name == 'uwp_account_password') {
388 $value = '';
389 $field->is_required = 0;
390 } elseif ($field->htmlvar_name == 'uwp_account_confirm_password') {
391 $value = '';
392 $field->is_required = 0;
393 } else {
394 $value = uwp_get_usermeta($user_id, $field->htmlvar_name, false);
395 if ($value != '0' && !$value) {
396 $value = $this->uwp_get_default_form_value($field);
397 }
398 }
399
400 }
401
402 if (empty($value)) {
403 $value = "";
404 }
405
406 if (isset($_POST[$field->htmlvar_name]) && $field->field_type != 'password') {
407 $value = $_POST[$field->htmlvar_name];
408 }
409
410 $field = apply_filters("uwp_form_input_field_{$field->field_type}", $field, $value, $form_type);
411
412 $html = apply_filters("uwp_form_input_html_{$field->field_type}", "", $field, $value, $form_type);
413
414 if (empty($html)) {
415 $label = $site_title = uwp_get_form_label($field);
416 if (!is_admin()) { ?>
417 <label>
418 <?php echo (trim($label)) ? $label : '&nbsp;'; ?>
419 <?php if ($field->is_required == 1) echo '<span>*</span>';?>
420 </label>
421 <?php }
422 ?>
423 <input name="<?php echo $field->htmlvar_name; ?>"
424 class="<?php echo $field->css_class; ?>"
425 placeholder="<?php echo $label; ?>"
426 title="<?php echo $label; ?>"
427 <?php if ($field->for_admin_use == 1) { echo 'readonly="readonly"'; } ?>
428 <?php if ($field->is_required == 1) { echo 'required="required"'; } ?>
429 type="<?php echo $field->field_type; ?>"
430 value="<?php echo esc_html($value); ?>">
431 <?php
432 } else {
433 echo $html;
434 }
435 }
436
437 /**
438 * Returns default value based on field type.
439 *
440 * @since 1.0.0
441 * @package userswp
442 * @param object $field Field info.
443 * @return string Field default value.
444 */
445 public function uwp_get_default_form_value($field) {
446 if ($field->field_type == 'url') {
447 if (substr( $field->default_value, 0, 4 ) === "http") {
448 $value = $field->default_value;
449 } else {
450 $value = "";
451 }
452 } else {
453 $value = $field->default_value;
454 }
455
456 return $value;
457 }
458
459 /**
460 * Modifies the author page content with UsersWP profile content.
461 *
462 * @since 1.0.0
463 * @package userswp
464 * @param string $content Original page content.
465 * @return string Modified page content.
466 */
467 public function uwp_author_page_content($content) {
468 if (is_author() && apply_filters( 'uwp_use_author_page_content', true ) ) {
469 return do_shortcode('[uwp_profile]');
470 } else {
471 return $content;
472 }
473
474 }
475
476 /**
477 * Modifies the menu item visibility based on UsersWP page type.
478 *
479 * @since 1.0.0
480 * @package userswp
481 * @param object $menu_item Menu item info.
482 * @return object Modified menu item.
483 */
484 public function uwp_setup_nav_menu_item( $menu_item ) {
485
486 if ( is_admin() ) {
487 return $menu_item;
488 }
489
490 // Prevent a notice error when using the customizer
491 $menu_classes = $menu_item->classes;
492
493 if ( is_array( $menu_classes ) ) {
494 $menu_classes = implode( ' ', $menu_item->classes );
495 $str = 'users-wp-menu ';
496 if (strpos($menu_classes, 'users-wp-menu ') !== false) {
497 $menu_classes = str_replace($str, '', $menu_classes);
498 }
499 }
500
501 $register_slug = uwp_get_page_slug('register_page');
502 $login_slug = uwp_get_page_slug('login_page');
503 $change_slug = uwp_get_page_slug('change_page');
504 $account_slug = uwp_get_page_slug('account_page');
505 $profile_slug = uwp_get_page_slug('profile_page');
506 $forgot_slug = uwp_get_page_slug('forgot_page');
507 $logout_slug = "logout";
508
509 $register_class = "users-wp-{$register_slug}-nav";
510 $login_class = "users-wp-{$login_slug}-nav";
511 $change_class = "users-wp-{$change_slug}-nav";
512 $account_class = "users-wp-{$account_slug}-nav";
513 $profile_class = "users-wp-{$profile_slug}-nav";
514 $forgot_class = "users-wp-{$forgot_slug}-nav";
515 $logout_class = "users-wp-{$logout_slug}-nav";
516
517 switch ( $menu_classes ) {
518 case $register_class:
519 if ( is_user_logged_in() ) {
520 $menu_item->_invalid = true;
521 } else {
522 $menu_item->url = uwp_get_page_id('register_page', true);
523 }
524 break;
525 case $login_class:
526 if ( is_user_logged_in() ) {
527 $menu_item->_invalid = true;
528 } else {
529 $menu_item->url = uwp_get_page_id('login_page', true);
530 }
531 break;
532 case $account_class:
533 if ( ! is_user_logged_in() ) {
534 $menu_item->_invalid = true;
535 } else {
536 $menu_item->url = uwp_get_page_id('account_page', true);
537 }
538 break;
539 case $profile_class:
540 if ( ! is_user_logged_in() ) {
541 $menu_item->_invalid = true;
542 } else {
543 $menu_item->url = uwp_get_page_id('profile_page', true);
544 }
545 break;
546 case $change_class:
547 if ( ! is_user_logged_in() ) {
548 $menu_item->_invalid = true;
549 } else {
550 $menu_item->url = uwp_get_page_id('change_page', true);
551 }
552 break;
553 case $forgot_class:
554 if ( is_user_logged_in() ) {
555 $menu_item->_invalid = true;
556 } else {
557 $menu_item->url = uwp_get_page_id('forgot_page', true);
558 }
559 break;
560 case $logout_class:
561 if ( ! is_user_logged_in() ) {
562 $menu_item->_invalid = true;
563 } else {
564 $menu_item->url = $this->uwp_logout_url();
565 }
566 break;
567 }
568
569 $menu_item = apply_filters('uwp_setup_nav_menu_item', $menu_item, $menu_classes);
570
571 return $menu_item;
572
573 }
574
575 /**
576 * Returns the logout url by adding redirect page link.
577 *
578 * @since 1.0.0
579 * @package userswp
580 * @param null $custom_redirect Redirect page link.
581 * @return string Logout url.
582 */
583 public function uwp_logout_url( $custom_redirect = null ) {
584
585 $redirect = null;
586
587 if ( !empty( $custom_redirect ) ) {
588 $redirect = esc_url( $custom_redirect );
589 } else if ( uwp_get_option('logout_redirect_to', false) ) {
590 $redirect = esc_url( get_permalink( uwp_get_option('logout_redirect_to', 0) ) );
591 }
592
593 return wp_logout_url( apply_filters( 'uwp_logout_url', $redirect, $custom_redirect ) );
594
595 }
596
597 /**
598 * Redirects to UsersWP info page after plugin activation.
599 *
600 * @since 1.0.0
601 * @package userswp
602 * @return void
603 */
604 public function uwp_activation_redirect() {
605
606 if (get_option('uwp_activation_redirect', false)) {
607 delete_option('uwp_activation_redirect');
608 wp_redirect(admin_url('admin.php?page=userswp&tab=main&subtab=info'));
609 exit;
610
611 }
612
613 }
614
615 /**
616 * Prints UsersWP fields in WP-Admin Users Edit page.
617 *
618 * @since 1.0.0
619 * @package userswp
620 * @param object $user User Object.
621 */
622 public function get_profile_extra_admin_edit($user) {
623 echo $this->get_profile_extra_edit($user);
624 }
625
626 /**
627 * Gets UsersWP fields in WP-Admin Users Edit page.
628 *
629 * @since 1.0.0
630 * @package userswp
631 * @param object $user User Object.
632 * @return string HTML string.
633 */
634 public function get_profile_extra_edit($user) {
635 ob_start();
636 global $wpdb;
637 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
638 $excluded_fields = apply_filters('uwp_exclude_edit_profile_fields', array());
639 $query = "SELECT * FROM " . $table_name . " WHERE form_type = 'account' AND is_default = '0'";
640 if(is_array($excluded_fields) && count($excluded_fields) > 0){
641 $query .= 'AND htmlvar_name NOT IN ('.implode(',', $excluded_fields).')';
642 }
643 $query .= ' ORDER BY sort_order ASC';
644 $fields = $wpdb->get_results($query);
645 if ($fields) {
646 ?>
647 <div class="uwp-profile-extra">
648 <table class="uwp-profile-extra-table form-table">
649 <?php
650 foreach ($fields as $field) {
651
652 // Icon
653 $icon = uwp_get_field_icon( $field->field_icon );
654
655 if ($field->field_type == 'fieldset') {
656 ?>
657 <tr style="margin: 0; padding: 0">
658 <th class="uwp-profile-extra-key" style="margin: 0; padding: 0"><h3 style="margin: 10px 0;"><?php echo $icon.$field->site_title; ?></h3></th>
659 <td></td>
660 </tr>
661 <?php
662 } else { ?>
663 <tr>
664 <th class="uwp-profile-extra-key"><?php echo $icon.$field->site_title; ?></th>
665 <td class="uwp-profile-extra-value">
666 <?php $this->uwp_template_fields_html($field, 'account', $user->ID); ?>
667 </td>
668 </tr>
669 <?php
670 }
671 }
672 ?>
673 </table>
674 </div>
675 <?php
676 }
677 $output = ob_get_contents();
678 ob_end_clean();
679 return trim($output);
680 }
681
682 /**
683 * Adds the UsersWP body class to body tag.
684 *
685 * @since 1.0.0
686 * @package userswp
687 * @param array $classes Existing class array.
688 * @return array Modified class array.
689 */
690 public function uwp_add_body_class( $classes ) {
691
692 if ( is_uwp_page() ) {
693 $classes[] = 'uwp_page';
694 }
695
696 return $classes;
697 }
698 }