PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 3.2.2
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v3.2.2
4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / ShortcodeParser / FrontendProfileTag.php
wp-user-avatar / src / ShortcodeParser Last commit date
Builder 4 years ago MyAccount 4 years ago EditProfileTag.php 5 years ago FormProcessor.php 4 years ago FrontendProfileTag.php 5 years ago LoginFormTag.php 4 years ago MelangeTag.php 5 years ago MemberDirectoryTag.php 4 years ago PasswordResetTag.php 5 years ago RegistrationFormTag.php 4 years ago index.php 5 years ago
FrontendProfileTag.php
217 lines
1 <?php
2
3 namespace ProfilePress\Core\ShortcodeParser;
4
5 use ProfilePress\Core\Classes\FormRepository as FR;
6 use ProfilePress\Core\ShortcodeParser\Builder\FrontendProfileBuilder;
7
8 /**
9 * Parse the individual profile shortcode of "Edit profile" builder
10 */
11 class FrontendProfileTag
12 {
13 public function __construct()
14 {
15 add_shortcode('profilepress-user-profile', array($this, 'user_profile_parser'));
16
17 add_action('wp', array($this, 'set_up_detected_profile'));
18
19 add_filter('pre_get_document_title', array($this, 'rewrite_profile_title'), 999999999, 1);
20 add_filter('wp_title', array($this, 'rewrite_profile_title'), 999999999, 1);
21 }
22
23 /**
24 * Get currently logged in user object_data
25 *
26 * @return \WP_User
27 */
28 function get_current_user_data()
29 {
30 return wp_get_current_user();
31 }
32
33 public function set_up_detected_profile()
34 {
35 global $ppress_frontend_profile_user_obj;
36
37 $who = get_query_var('who');
38
39 $user = '';
40
41 if (empty($who)) {
42 if (is_user_logged_in()) {
43 $user = $this->get_current_user_data();
44 } else {
45
46 if (strpos($_SERVER['REQUEST_URI'], '/' . ppress_get_profile_slug() . '/') !== false) {
47 wp_safe_redirect(home_url());
48 exit;
49 }
50 }
51 } else {
52
53 $username_or_nicename = apply_filters('ppress_frontend_user_profile_username', rawurldecode($who));
54
55 // attempt to check if the slug is a nice-name and then retrieve the username of the user.
56 $check = ppress_is_slug_nice_name($username_or_nicename);
57
58 if (is_string($check)) $username_or_nicename = $check;
59
60 $user = get_user_by('login', $username_or_nicename);
61
62 if ( ! $user) {
63 wp_safe_redirect(home_url());
64 exit;
65 }
66 }
67
68 $user = apply_filters('ppress_frontend_profile_wp_user_object', $user);
69
70 $ppress_frontend_profile_user_obj = $user;
71
72 FrontendProfileBuilder::get_instance($user);
73 }
74
75 /**
76 * Shortcode callback function to parse the shortcode.
77 *
78 * @param $atts
79 *
80 * @return string
81 */
82 public function user_profile_parser($atts)
83 {
84 if ( ! is_user_logged_in() && ppress_get_setting('disable_guests_can_view_profiles') == 'on') {
85 return wpautop(sprintf(
86 __('This content is available to members only. Please <a href="%1$s">login</a> or <a href="%2$s">register</a> to view this area.', 'wp-user-avatar'),
87 ppress_login_url(),
88 ppress_registration_url()
89 ));
90 }
91
92 if (is_user_logged_in() && ppress_get_setting('disable_members_can_view_profiles') == 'on' && ! ppress_is_my_own_profile()) {
93 return wpautop(esc_html__('You are not authorized to access this area.', 'wp-user-avatar'));
94 }
95
96 $id = absint($atts['id']);
97
98 $user = '';
99
100 if ( ! empty($atts['user-id'])) {
101
102 $user = apply_filters('ppress_frontend_profile_wp_user_object', get_user_by('ID', absint($atts['user-id'])));
103
104 // we are instantiating the class directly because it has already been called by set_up_detected_profile hooked into wp
105 // action. If we had used the singleton instance method, it would have returned the previous instance.
106 new FrontendProfileBuilder($user);
107 }
108
109 do_action('ppress_frond_end_profile_id', $id);
110
111 $attribution_start = apply_filters('ppress_hide_attribution', '<!-- This WordPress front-end profile is built and powered by ProfilePress WordPress plugin - https://profilepress.net -->' . "\r\n");
112 $attribution_end = apply_filters('ppress_hide_attribution', "\r\n" . '<!-- / ProfilePress WordPress plugin. -->' . "\r\n");
113 $css = self::get_user_profile_css($id);
114
115 // call the registration structure/design
116 return apply_filters('ppress_front_end_profile', $attribution_start . $css . $this->get_user_profile_structure($id) . $attribution_end, $user, $id);
117 }
118
119
120 /**
121 * Get the registration structure from the database
122 *
123 * @param int $id
124 *
125 * @return string
126 */
127 public static function get_user_profile_structure($id)
128 {
129 if (FR::is_drag_drop($id, FR::USER_PROFILE_TYPE)) {
130 $form_instance = FR::dnd_class_instance($id, FR::USER_PROFILE_TYPE);
131 if ( ! $form_instance) return esc_html__('Form class not found. Please check if this user profile actually exist in ProfilePress.', 'wp-user-avatar');
132 $user_profile_structure = $form_instance->form_structure();
133 } else {
134 $user_profile_structure = FR::get_form_meta($id, FR::USER_PROFILE_TYPE, FR::FORM_STRUCTURE);
135 }
136
137 return do_shortcode($user_profile_structure);
138 }
139
140
141 /**
142 * Get the CSS stylesheet for the ID registration
143 *
144 * @return mixed
145 */
146 public static function get_user_profile_css($id)
147 {
148 if (FR::is_drag_drop($id, FR::USER_PROFILE_TYPE)) {
149 $form_instance = FR::dnd_class_instance($id, FR::USER_PROFILE_TYPE);
150 if ( ! $form_instance) return '';
151 $user_profile_css = $form_instance->minified_form_css();
152 } else {
153 $user_profile_css = FR::get_form_meta($id, FR::USER_PROFILE_TYPE, FR::FORM_CSS);
154 }
155
156 return "<style type=\"text/css\">\r\n $user_profile_css \r\n</style>";
157 }
158
159 /** Rewrite the title of the profile */
160 public function rewrite_profile_title($title)
161 {
162 global $post, $ppress_frontend_profile_user_obj;
163
164 // if currently viewed page is the page with the front-end profile, rewrite the title accordingly.
165 if (@$post->ID == ppress_get_setting('set_user_profile_shortcode')
166 || has_shortcode('profilepress-user-profile', @$post->post_content)
167 ) {
168
169 $user_object = $ppress_frontend_profile_user_obj;
170
171 if (isset($user_object) && is_object($user_object)) {
172
173 // if first and last name is set, use the combo as title
174 if ( ! empty($user_object->first_name) && ! empty($user_object->last_name)) {
175 $title = "$user_object->first_name {$user_object->last_name}";
176 } // if either first or last name is set, use either as title
177 elseif ( ! empty($user_object->first_name) || ! empty($user_object->last_name)) {
178 $title = "$user_object->first_name {$user_object->last_name}";
179 } // else use their username
180 else {
181 $title = $user_object->user_login;
182 }
183
184 $title = apply_filters('ppress_profile_username_title', self::title_possessiveness($title), $title);
185 }
186 }
187
188 return $title;
189 }
190
191 public static function title_possessiveness($string)
192 {
193 $string = trim($string);
194 $lastchar = substr($string, -1);
195
196 $profile_string = esc_html__('Profile', 'wp-user-avatar');
197
198 if ('s' == $lastchar) {
199 $title = ucwords($string) . "' $profile_string";
200 } else {
201 $title = ucwords($string) . "'s $profile_string";
202 }
203
204 return $title;
205 }
206
207 public static function get_instance()
208 {
209 static $instance = false;
210
211 if ( ! $instance) {
212 $instance = new self;
213 }
214
215 return $instance;
216 }
217 }