PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.0.3
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.0.3
4.17.2 4.17.1 4.17.0 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 / Classes / UserAvatar.php
wp-user-avatar / src / Classes Last commit date
Installer 5 years ago AdminNotices.php 4 years ago AjaxHandler.php 4 years ago Autologin.php 4 years ago BuddyPressBbPress.php 5 years ago EditUserProfile.php 4 years ago ExtensionManager.php 4 years ago FileUploader.php 4 years ago FormPreviewHandler.php 5 years ago FormRepository.php 4 years ago FormShortcodeDefaults.php 5 years ago GDPR.php 4 years ago Geolocation.php 4 years ago GlobalSiteAccess.php 4 years ago ImageUploader.php 4 years ago LoginAuth.php 4 years ago Miscellaneous.php 4 years ago ModifyRedirectDefaultLinks.php 4 years ago PPRESS_Session.php 4 years ago PROFILEPRESS_sql.php 4 years ago PasswordReset.php 4 years ago ProfileUrlRewrite.php 4 years ago RegistrationAuth.php 4 years ago SendEmail.php 4 years ago ShortcodeThemeFactory.php 5 years ago UserAvatar.php 4 years ago UserSignupLocationListingPage.php 4 years ago UsernameEmailRestrictLogin.php 4 years ago WPProfileFieldParserTrait.php 4 years ago WelcomeEmailAfterSignup.php 4 years ago default-email-template.php 4 years ago index.php 5 years ago
UserAvatar.php
240 lines
1 <?php
2
3 namespace ProfilePress\Core\Classes;
4
5 class UserAvatar
6 {
7 public function __construct()
8 {
9 add_filter('pre_get_avatar_data', function ($args, $id_or_email) {
10
11 if (ppress_var($args, 'force_default') === true || ppress_var($args, 'ppress_skip') === true) return $args;
12
13 $size = apply_filters('ppress_user_avatar_image_size', ppress_var($args, 'size'), $id_or_email);
14
15 $original = ppress_var($args, 'ppress-full') === true;
16
17 if ( ! empty($size)) $size = absint($size);
18
19 if (self::user_has_pp_avatar($id_or_email)) {
20
21 $args['url'] = self::get_pp_avatar_url($id_or_email, $size, $original);
22
23 } else {
24 /** WP User Avatar Adapter STARTS */
25 global $wpua_disable_gravatar, $wpua_functions;
26
27 // First checking custom avatar.
28 if ($wpua_disable_gravatar == '1') {
29 $args['url'] = $wpua_functions->wpua_get_default_avatar_url($size);
30 } else {
31
32 $has_valid_url = false;
33
34 if (method_exists($wpua_functions, 'wpua_has_gravatar')) {
35 $has_valid_url = $wpua_functions->wpua_has_gravatar($id_or_email);
36 } elseif (class_exists('\WP_User_Avatar_Functions')) {
37
38 $obj = new \WP_User_Avatar_Functions();
39 if (method_exists($obj, 'wpua_has_gravatar')) {
40 $has_valid_url = $obj->wpua_has_gravatar($id_or_email);
41 }
42 }
43
44 if ( ! $has_valid_url) {
45 $wpua_size = ! empty($size) ? $size : 96;
46
47 if (method_exists($wpua_functions, 'wpua_get_default_avatar_url')) {
48 $args['url'] = $wpua_functions->wpua_get_default_avatar_url($wpua_size);
49 }
50 }
51 }
52 /** WP User Avatar Adapter ENDS */
53 }
54
55 if ( ! empty($args['url'])) {
56 $args['found_avatar'] = true;
57 }
58
59 return $args;
60
61 }, PHP_INT_MAX - 1, 2);
62
63 add_filter('get_avatar', function ($avatar, $id_or_email, $size, $default, $alt, $args) {
64
65 if (ppress_var($args, 'force_default') !== true && ppress_var($args, 'ppress_skip') !== true) {
66 if (self::user_has_pp_avatar($id_or_email)) {
67 $class = [];
68 if (isset($args['class'])) {
69 if (is_array($args['class'])) {
70 $class = array_merge($class, $args['class']);
71 } else {
72 $class[] = $args['class'];
73 }
74 }
75
76 $class = esc_attr(implode(' ', $class));
77
78 $original = ppress_var($args, 'ppress-full') === true;
79
80 $avatar = self::get_avatar_img($id_or_email, $size, $alt, $class, '', $original);
81 }
82 }
83
84 return $avatar;
85
86 }, PHP_INT_MAX - 1, 6);
87 }
88
89 public static function user_has_pp_avatar($id_or_email)
90 {
91 $user_id = self::get_avatar_user_id($id_or_email);
92
93 $avatar_url = get_user_meta($user_id, 'pp_profile_avatar', true);
94
95 if ( ! empty($avatar_url) && is_string($avatar_url)) return true;
96
97 /** WP User Avatar Adapter STARTS */
98 global $wpdb, $blog_id, $avatar_default, $wpua_avatar_default;
99
100 $attachment_id = get_user_meta($user_id, $wpdb->get_blog_prefix($blog_id) . 'user_avatar', true);
101 // Check if avatar is same as default avatar or on excluded list
102 if ( ! empty($attachment_id) && ($avatar_default != 'wp_user_avatar' || $attachment_id != $wpua_avatar_default) && wp_attachment_is_image($attachment_id)) {
103 return true;
104 }
105
106 /** WP User Avatar Adapter ENDS */
107
108 return false;
109 }
110
111 /**
112 * @param $id_or_email
113 *
114 * @param bool $size
115 *
116 * @return string
117 */
118 public static function get_pp_avatar_url($id_or_email, $size = false, $original = false)
119 {
120 $user_id = self::get_avatar_user_id($id_or_email);
121
122 $avatar_url = get_user_meta($user_id, 'pp_profile_avatar', true);
123
124 if ( ! empty($avatar_url) && is_string($avatar_url)) {
125
126 return PPRESS_AVATAR_UPLOAD_URL . "$avatar_url";
127 }
128
129 /** WP User Avatar Adapter STARTS */
130 global $wpdb, $blog_id;
131
132 $attachment_id = get_the_author_meta($wpdb->get_blog_prefix($blog_id) . 'user_avatar', $user_id);
133
134 if ( ! empty($attachment_id) && wp_attachment_is_image($attachment_id)) {
135
136 if ( ! empty($size) && ! $original) {
137
138 $size = is_numeric($size) ? [$size, $size] : $size;
139
140 return ppress_var(wp_get_attachment_image_src($attachment_id, $size), 0);
141 }
142
143 return wp_get_attachment_url($attachment_id);
144 }
145
146 /** WP User Avatar Adapter ENDS */
147
148 return false;
149 }
150
151 /**
152 * HTML image for the user profile
153 *
154 * @param $id_or_email
155 * @param string $size
156 * @param string $alt
157 * @param string $class
158 * @param string $css_id
159 * @param bool $original
160 *
161 * @return mixed
162 */
163 public static function get_avatar_img($id_or_email, $size = '96', $alt = '', $class = '', $css_id = '', $original = true)
164 {
165 $alt = esc_attr($alt);
166
167 if ( ! is_numeric($size)) $size = '96';
168
169 if ( ! empty($css_id)) $css_id = " id='$css_id'";
170
171 $size = apply_filters('ppress_user_avatar_image_size', absint($size), $id_or_email);
172
173 $avatar_url = get_avatar_url($id_or_email, ['size' => $size, 'ppress-full' => $original]);
174
175 $alt_attr = apply_filters('ppress_avatar_img_alt', ! empty($alt) ? " alt=\"{$alt}\"" : '', $id_or_email);
176
177 return "<img data-del=\"avatar\"" . $alt_attr . " src='{$avatar_url}' class='avatar pp-user-avatar avatar-{$size} photo {$class}' height='{$size}' width='{$size}'$css_id/>";
178 }
179
180 /**
181 * Culled from get_avatar_data()
182 *
183 * @param mixed $id_or_email
184 *
185 * @return bool|int
186 */
187 public static function get_avatar_user_id($id_or_email)
188 {
189 if (is_object($id_or_email) && isset($id_or_email->comment_ID)) {
190
191 $email = get_comment($id_or_email)->comment_author_email;
192
193 return ppress_var_obj(get_user_by('email', $email), 'ID');
194 }
195
196 if (is_numeric($id_or_email)) {
197 return ppress_var_obj(get_user_by('id', absint($id_or_email)), 'ID');
198 }
199
200 if (is_string($id_or_email)) {
201
202 if ( ! strpos($id_or_email, '@md5.gravatar.com')) {
203 // email address
204 return ppress_var_obj(get_user_by('email', $id_or_email), 'ID');
205 }
206 }
207
208 if ($id_or_email instanceof \WP_User) {
209 return $id_or_email->ID;
210 }
211
212 if ($id_or_email instanceof \WP_Post) {
213 return get_user_by('id', (int)$id_or_email->post_author)->ID;
214 }
215
216 if ($id_or_email instanceof \WP_Comment) {
217
218 if ( ! is_avatar_comment_type(get_comment_type($id_or_email))) return false;
219
220 if ( ! empty($id_or_email->user_id)) return $id_or_email->user_id;
221
222 if ( ! empty($id_or_email->comment_author_email)) {
223 return get_user_by('email', $id_or_email->comment_author_email)->ID;
224 }
225 }
226
227 return false;
228 }
229
230 public static function get_instance()
231 {
232 static $instance = null;
233
234 if (is_null($instance)) {
235 $instance = new self();
236 }
237
238 return $instance;
239 }
240 }