PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.1
GiveWP – Donation Plugin and Fundraising Platform v3.19.1
4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonorDashboards / Tabs / EditProfileTab / AvatarRoute.php
give / src / DonorDashboards / Tabs / EditProfileTab Last commit date
AvatarRoute.php 1 year ago LocationRoute.php 4 years ago PasswordRoute.php 2 years ago ProfileRoute.php 4 years ago Tab.php 2 years ago
AvatarRoute.php
123 lines
1 <?php
2
3 namespace Give\DonorDashboards\Tabs\EditProfileTab;
4
5 use Give\DonorDashboards\Tabs\Contracts\Route as RouteAbstract;
6 use WP_REST_Request;
7 use WP_REST_Response;
8
9 /**
10 * @since 3.14.2 added security measure avatarBelongsToCurrentUser to handleRequest
11 * @since 2.10.3
12 */
13 class AvatarRoute extends RouteAbstract
14 {
15
16 /**
17 * @inheritdoc
18 */
19 public function endpoint()
20 {
21 return 'avatar';
22 }
23
24 /**
25 * @inheritdoc
26 */
27 public function args()
28 {
29 return [];
30 }
31
32 /**
33 * @inheritDoc
34 *
35 * @return array|WP_REST_Response
36 */
37 public function handleRequest(WP_REST_Request $request)
38 {
39 if (!(is_array($_POST) && is_array($_FILES))) {
40 return new WP_REST_Response(
41 [
42 'status' => 400,
43 'response' => 'missing_files',
44 'body_response' => [
45 'message' => __('No files were included in request for upload.', 'give'),
46 ],
47 ]
48 );
49 }
50
51 // Delete existing Donor profile avatar attachment
52 if (give()->donorDashboard->getAvatarId()) {
53 if (!give()->donorDashboard->avatarBelongsToCurrentUser()) {
54 return new WP_REST_Response(
55 [
56 'status' => 401,
57 'response' => 'unauthorized',
58 'body_response' => [
59 'message' => __('Permission denied.', 'give'),
60 ],
61 ]
62 );
63 }
64
65 wp_delete_attachment(give()->donorDashboard->getAvatarId(), true);
66 }
67
68
69 if (!function_exists('wp_handle_upload')) {
70 require_once(ABSPATH . 'wp-admin/includes/file.php');
71 }
72
73 foreach ($_FILES as $file) {
74 $upload = wp_handle_upload(
75 $file,
76 [
77 'test_form' => false,
78 ]
79 );
80
81 if (isset($upload['url'])) {
82 $path = $upload['url'];
83
84 // Check the type of file. We'll use this as the 'post_mime_type'.
85 $filetype = wp_check_filetype(basename($path), null);
86
87 // Prepare an array of post data for the attachment.
88 $attachment = [
89 'guid' => $path,
90 'post_mime_type' => $filetype['type'],
91 'post_title' => preg_replace('/\.[^.]+$/', '', basename($path)),
92 'post_content' => '',
93 'post_status' => 'inherit',
94 ];
95
96 // Insert the attachment.
97 $attachmentId = wp_insert_attachment($attachment, $path);
98
99 // Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
100 require_once(ABSPATH . 'wp-admin/includes/image.php');
101
102 // Generate the metadata for the attachment, and update the database record.
103 $attachmentData = wp_generate_attachment_metadata($attachmentId, $path);
104 wp_update_attachment_metadata($attachmentId, $attachmentData);
105
106 return [
107 'id' => $attachmentId,
108 ];
109 }
110 }
111
112 return new WP_REST_Response(
113 [
114 'status' => 404,
115 'response' => 'not_found',
116 'body_response' => [
117 'message' => __('No file with an upload URL was found', 'give'),
118 ],
119 ]
120 );
121 }
122 }
123