PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.0.12
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.0.12
1.2.73 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 All 173 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.12, at includes/class-templates.php

689 lines 23.9 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_option('register_page', false);
97 $login_page = uwp_get_option('login_page', false);
98 $forgot_page = uwp_get_option('forgot_page', false);
99 $reset_page = uwp_get_option('reset_page', false);
100
101 $change_page = uwp_get_option('change_page', false);
102 $account_page = uwp_get_option('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_option('account_page', '');
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 $change_page = uwp_get_option('change_page', false);
150 $password_nag = get_user_option('default_password_nag', get_current_user_id());
151
152 if ($password_nag) {
153 if (is_page()) {
154 global $post;
155 $current_page_id = $post->ID;
156 if ( $change_page && ((int) $change_page == $current_page_id ) ) {
157 return;
158 }
159 }
160 if ($change_page) {
161 wp_redirect( get_permalink($change_page) );
162 exit();
163 }
164 }
165 }
166
167 /**
168 * Redirects /profile to /profile/{username} for loggedin users.
169 *
170 * @since 1.0.0
171 * @package userswp
172 * @return void
173 */
174 public function profile_redirect() {
175 if (is_page()) {
176 global $wp_query, $post;
177 $current_page_id = $post->ID;
178 $profile_page = uwp_get_option('profile_page', false);
179 if ( $profile_page && ((int) $profile_page == $current_page_id ) ) {
180
181 if (isset($wp_query->query_vars['uwp_profile'])) {
182 //must be profile page
183 $url_type = apply_filters('uwp_profile_url_type', 'slug');
184 $author_slug = $wp_query->query_vars['uwp_profile'];
185 if ($url_type == 'id') {
186 $user = get_user_by('id', $author_slug);
187 } else {
188 $user = get_user_by('slug', $author_slug);
189 }
190
191 if (!isset($user->ID)) {
192 global $wp_query;
193 $wp_query->set_404();
194 status_header( 404 );
195 get_template_part( 404 ); exit();
196 }
197
198 } else {
199 if (is_user_logged_in()) {
200 $user_id = get_current_user_id();
201 $profile_url = uwp_build_profile_tab_url($user_id);
202 wp_redirect( $profile_url );
203 exit();
204 } else {
205 wp_redirect( home_url('/') );
206 exit();
207 }
208
209 }
210
211 }
212 }
213 }
214
215 /**
216 * Redirects user to a predefined page after logging out.
217 *
218 * @since 1.0.0
219 * @package userswp
220 * @return void
221 */
222 public function logout_redirect() {
223 $redirect_page_id = uwp_get_option('logout_redirect_to', '');
224 if(isset( $_REQUEST['redirect_to'] )){
225 $redirect_to = esc_url($_REQUEST['redirect_to']);
226 } elseif ( isset($redirect_page_id) && (int)$redirect_page_id > 0) {
227 $redirect_to = get_permalink($redirect_page_id);
228 } else {
229 $redirect_to = home_url('/');
230 }
231 $redirect_to = apply_filters('uwp_logout_redirect', $redirect_to);
232 wp_redirect( $redirect_to );
233 exit();
234 }
235
236
237 /**
238 * Redirects wp-login.php to UsersWP login page.
239 *
240 * @since 1.0.0
241 * @package userswp
242 * @return void
243 */
244 public function wp_login_redirect() {
245 $login_page_id = uwp_get_option('login_page', false);
246 $block_wp_login = uwp_get_option('block_wp_login', '');
247 if ($login_page_id && $block_wp_login == '1') {
248 global $pagenow;
249 if( 'wp-login.php' == $pagenow && !isset($_REQUEST['action']) ) {
250 $redirect_to = get_permalink($login_page_id);
251 wp_redirect( $redirect_to );
252 exit();
253 }
254 }
255 }
256
257 /**
258 * Changes the login url to the UWP login page.
259 *
260 * @param $login_url string The URL for login.
261 * @param $redirect string The URL to redirect back to upon successful login.
262 * @param $force_reauth bool Whether to force reauthorization, even if a cookie is present.
263 * @since 1.0.12
264 * @package userswp
265 *
266 * @return string The login url.
267 */
268 public function wp_login_url($login_url, $redirect, $force_reauth) {
269 $login_page_id = uwp_get_option('login_page', false);
270 $redirect_page_id = uwp_get_option('login_redirect_to', -1);
271 if (!is_admin() && $login_page_id) {
272 $login_page = get_permalink($login_page_id);
273 if($redirect){
274 $login_url = add_query_arg( 'redirect_to', $redirect, $login_page );
275 }elseif(isset($redirect_page_id) && (int)$redirect_page_id == -1 && wp_get_referer()) {
276 $redirect_to = esc_url(wp_get_referer());
277 $login_url = add_query_arg( 'redirect_to', $redirect_to, $login_page );
278 }elseif($redirect_page_id){
279 $redirect_to = get_permalink($redirect_page_id);
280 $login_url = add_query_arg( 'redirect_to', $redirect_to, $login_page );
281 }else{
282 $login_url = $login_page;
283 }
284 }
285
286 return $login_url;
287 }
288
289 /**
290 * Prints html for form fields of that particular form.
291 *
292 * @since 1.0.0
293 * @package userswp
294 * @param string $form_type Form type.
295 * @return void
296 */
297 public function uwp_template_fields($form_type) {
298
299 global $wpdb;
300 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
301 $extras_table_name = uwp_get_table_prefix() . 'uwp_form_extras';
302
303 if ($form_type == 'register') {
304 $fields = get_register_form_fields();
305 } elseif ($form_type == 'account') {
306 $fields = get_account_form_fields();
307 } elseif ($form_type == 'change') {
308 $fields = get_change_form_fields();
309 } else {
310 $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)));
311 }
312
313 if (!empty($fields)) {
314 foreach ($fields as $field) {
315
316 if ($form_type == 'account') {
317 if ($field->htmlvar_name == 'uwp_account_display_name') {
318 if ($field->is_active != '1') {
319 continue;
320 }
321 }
322 if ($field->htmlvar_name == 'uwp_account_bio') {
323 if ($field->is_active != '1') {
324 continue;
325 }
326 }
327 }
328
329 if ($form_type == 'register') {
330 if ($field->is_active != '1') {
331 continue;
332 }
333 $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)));
334 if ($count == 1) {
335 $this->uwp_template_fields_html($field, $form_type);
336 }
337 } else {
338 $this->uwp_template_fields_html($field, $form_type);
339 }
340 }
341 }
342 }
343
344 /**
345 * Adds "Edit Account" form on account page.
346 *
347 * @since 1.0.0
348 * @package userswp
349 * @param string $type Template type.
350 * @return void
351 */
352 public function uwp_account_edit_form_display($type) {
353 if ($type == 'account') {
354 ?>
355 <form class="uwp-account-form uwp_form" method="post" enctype="multipart/form-data">
356 <?php do_action('uwp_template_fields', 'account'); ?>
357 <input type="hidden" name="uwp_account_nonce" value="<?php echo wp_create_nonce( 'uwp-account-nonce' ); ?>" />
358 <input name="uwp_account_submit" value="<?php echo __( 'Update Account', 'userswp' ); ?>" type="submit">
359 </form>
360 <?php }
361 }
362
363 /**
364 * Prints field html based on field type.
365 *
366 * @since 1.0.0
367 * @package userswp
368 * @param object $field Field info.
369 * @param string $form_type Form type.
370 * @param int|bool $user_id User ID.
371 * @return void
372 */
373 public function uwp_template_fields_html($field, $form_type, $user_id = false) {
374 if (!$user_id) {
375 $user_id = get_current_user_id();
376 }
377
378 $value = $this->uwp_get_default_form_value($field);
379 if ($form_type == 'account') {
380 $user_data = get_userdata($user_id);
381
382 if ($field->htmlvar_name == 'uwp_account_email') {
383 $value = $user_data->user_email;
384 } elseif ($field->htmlvar_name == 'uwp_account_password') {
385 $value = '';
386 $field->is_required = 0;
387 } elseif ($field->htmlvar_name == 'uwp_account_confirm_password') {
388 $value = '';
389 $field->is_required = 0;
390 } else {
391 $value = uwp_get_usermeta($user_id, $field->htmlvar_name, false);
392 if ($value != '0' && !$value) {
393 $value = $this->uwp_get_default_form_value($field);
394 }
395 }
396
397 }
398
399 if (empty($value)) {
400 $value = "";
401 }
402
403 if (isset($_POST[$field->htmlvar_name]) && $field->field_type != 'password') {
404 $value = $_POST[$field->htmlvar_name];
405 }
406
407 $field = apply_filters("uwp_form_input_field_{$field->field_type}", $field, $value, $form_type);
408
409 $html = apply_filters("uwp_form_input_html_{$field->field_type}", "", $field, $value, $form_type);
410
411 if (empty($html)) {
412 $label = $site_title = uwp_get_form_label($field);
413 if (!is_admin()) { ?>
414 <label>
415 <?php echo (trim($label)) ? $label : '&nbsp;'; ?>
416 <?php if ($field->is_required == 1) echo '<span>*</span>';?>
417 </label>
418 <?php }
419 ?>
420 <input name="<?php echo $field->htmlvar_name; ?>"
421 class="<?php echo $field->css_class; ?>"
422 placeholder="<?php echo $label; ?>"
423 title="<?php echo $label; ?>"
424 <?php if ($field->for_admin_use == 1) { echo 'readonly="readonly"'; } ?>
425 <?php if ($field->is_required == 1) { echo 'required="required"'; } ?>
426 type="<?php echo $field->field_type; ?>"
427 value="<?php echo esc_html($value); ?>">
428 <?php
429 } else {
430 echo $html;
431 }
432 }
433
434 /**
435 * Returns default value based on field type.
436 *
437 * @since 1.0.0
438 * @package userswp
439 * @param object $field Field info.
440 * @return string Field default value.
441 */
442 public function uwp_get_default_form_value($field) {
443 if ($field->field_type == 'url') {
444 if (substr( $field->default_value, 0, 4 ) === "http") {
445 $value = $field->default_value;
446 } else {
447 $value = "";
448 }
449 } else {
450 $value = $field->default_value;
451 }
452
453 return $value;
454 }
455
456 /**
457 * Modifies the author page content with UsersWP profile content.
458 *
459 * @since 1.0.0
460 * @package userswp
461 * @param string $content Original page content.
462 * @return string Modified page content.
463 */
464 public function uwp_author_page_content($content) {
465 if (is_author() && apply_filters( 'uwp_use_author_page_content', true ) ) {
466 return do_shortcode('[uwp_profile]');
467 } else {
468 return $content;
469 }
470
471 }
472
473 /**
474 * Modifies the menu item visibility based on UsersWP page type.
475 *
476 * @since 1.0.0
477 * @package userswp
478 * @param object $menu_item Menu item info.
479 * @return object Modified menu item.
480 */
481 public function uwp_setup_nav_menu_item( $menu_item ) {
482
483 if ( is_admin() ) {
484 return $menu_item;
485 }
486
487 // Prevent a notice error when using the customizer
488 $menu_classes = $menu_item->classes;
489
490 if ( is_array( $menu_classes ) ) {
491 $menu_classes = implode( ' ', $menu_item->classes );
492 $str = 'users-wp-menu ';
493 if (strpos($menu_classes, 'users-wp-menu ') !== false) {
494 $menu_classes = str_replace($str, '', $menu_classes);
495 }
496 }
497
498 $register_slug = uwp_get_page_slug('register_page');
499 $login_slug = uwp_get_page_slug('login_page');
500 $change_slug = uwp_get_page_slug('change_page');
501 $account_slug = uwp_get_page_slug('account_page');
502 $profile_slug = uwp_get_page_slug('profile_page');
503 $forgot_slug = uwp_get_page_slug('forgot_page');
504 $logout_slug = "logout";
505
506 $register_class = "users-wp-{$register_slug}-nav";
507 $login_class = "users-wp-{$login_slug}-nav";
508 $change_class = "users-wp-{$change_slug}-nav";
509 $account_class = "users-wp-{$account_slug}-nav";
510 $profile_class = "users-wp-{$profile_slug}-nav";
511 $forgot_class = "users-wp-{$forgot_slug}-nav";
512 $logout_class = "users-wp-{$logout_slug}-nav";
513
514 switch ( $menu_classes ) {
515 case $register_class:
516 if ( is_user_logged_in() ) {
517 $menu_item->_invalid = true;
518 } else {
519 $menu_item->url = get_permalink(uwp_get_option('register_page', 0));
520 }
521 break;
522 case $login_class:
523 if ( is_user_logged_in() ) {
524 $menu_item->_invalid = true;
525 } else {
526 $menu_item->url = get_permalink(uwp_get_option('login_page', 0));
527 }
528 break;
529 case $account_class:
530 if ( ! is_user_logged_in() ) {
531 $menu_item->_invalid = true;
532 } else {
533 $menu_item->url = get_permalink(uwp_get_option('account_page', 0));
534 }
535 break;
536 case $profile_class:
537 if ( ! is_user_logged_in() ) {
538 $menu_item->_invalid = true;
539 } else {
540 $menu_item->url = get_permalink(uwp_get_option('profile_page', 0));
541 }
542 break;
543 case $change_class:
544 if ( ! is_user_logged_in() ) {
545 $menu_item->_invalid = true;
546 } else {
547 $menu_item->url = get_permalink(uwp_get_option('change_page', 0));
548 }
549 break;
550 case $forgot_class:
551 if ( is_user_logged_in() ) {
552 $menu_item->_invalid = true;
553 } else {
554 $menu_item->url = get_permalink(uwp_get_option('forgot_page', 0));
555 }
556 break;
557 case $logout_class:
558 if ( ! is_user_logged_in() ) {
559 $menu_item->_invalid = true;
560 } else {
561 $menu_item->url = $this->uwp_logout_url();
562 }
563 break;
564 }
565
566 $menu_item = apply_filters('uwp_setup_nav_menu_item', $menu_item, $menu_classes);
567
568 return $menu_item;
569
570 }
571
572 /**
573 * Returns the logout url by adding redirect page link.
574 *
575 * @since 1.0.0
576 * @package userswp
577 * @param null $custom_redirect Redirect page link.
578 * @return string Logout url.
579 */
580 public function uwp_logout_url( $custom_redirect = null ) {
581
582 $redirect = null;
583
584 if ( !empty( $custom_redirect ) ) {
585 $redirect = esc_url( $custom_redirect );
586 } else if ( uwp_get_option('logout_redirect_to', false) ) {
587 $redirect = esc_url( get_permalink( uwp_get_option('logout_redirect_to', 0) ) );
588 }
589
590 return wp_logout_url( apply_filters( 'uwp_logout_url', $redirect, $custom_redirect ) );
591
592 }
593
594 /**
595 * Redirects to UsersWP info page after plugin activation.
596 *
597 * @since 1.0.0
598 * @package userswp
599 * @return void
600 */
601 public function uwp_activation_redirect() {
602
603 if (get_option('uwp_activation_redirect', false)) {
604 delete_option('uwp_activation_redirect');
605 wp_redirect(admin_url('admin.php?page=userswp&tab=main&subtab=info'));
606 exit;
607
608 }
609
610 }
611
612 /**
613 * Prints UsersWP fields in WP-Admin Users Edit page.
614 *
615 * @since 1.0.0
616 * @package userswp
617 * @param object $user User Object.
618 */
619 public function get_profile_extra_admin_edit($user) {
620 echo $this->get_profile_extra_edit($user);
621 }
622
623 /**
624 * Gets UsersWP fields in WP-Admin Users Edit page.
625 *
626 * @since 1.0.0
627 * @package userswp
628 * @param object $user User Object.
629 * @return string HTML string.
630 */
631 public function get_profile_extra_edit($user) {
632 ob_start();
633 global $wpdb;
634 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
635 $fields = $wpdb->get_results("SELECT * FROM " . $table_name . " WHERE form_type = 'account' AND is_default = '0' ORDER BY sort_order ASC");
636 if ($fields) {
637 ?>
638 <div class="uwp-profile-extra">
639 <table class="uwp-profile-extra-table form-table">
640 <?php
641 foreach ($fields as $field) {
642
643 // Icon
644 $icon = uwp_get_field_icon( $field->field_icon );
645
646 if ($field->field_type == 'fieldset') {
647 ?>
648 <tr style="margin: 0; padding: 0">
649 <th class="uwp-profile-extra-key" style="margin: 0; padding: 0"><h3 style="margin: 10px 0;"><?php echo $icon.$field->site_title; ?></h3></th>
650 <td></td>
651 </tr>
652 <?php
653 } else { ?>
654 <tr>
655 <th class="uwp-profile-extra-key"><?php echo $icon.$field->site_title; ?></th>
656 <td class="uwp-profile-extra-value">
657 <?php $this->uwp_template_fields_html($field, 'account', $user->ID); ?>
658 </td>
659 </tr>
660 <?php
661 }
662 }
663 ?>
664 </table>
665 </div>
666 <?php
667 }
668 $output = ob_get_contents();
669 ob_end_clean();
670 return trim($output);
671 }
672
673 /**
674 * Adds the UsersWP body class to body tag.
675 *
676 * @since 1.0.0
677 * @package userswp
678 * @param array $classes Existing class array.
679 * @return array Modified class array.
680 */
681 public function uwp_add_body_class( $classes ) {
682
683 if ( is_uwp_page() ) {
684 $classes[] = 'uwp_page';
685 }
686
687 return $classes;
688 }
689 }