PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.13.0
GiveWP – Donation Plugin and Fundraising Platform v4.13.0
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 / API / REST / V3 / Routes / Campaigns / GetCampaignComments.php
give / src / API / REST / V3 / Routes / Campaigns Last commit date
Permissions 9 months ago ValueObjects 1 year ago GetCampaignComments.php 8 months ago GetCampaignRevenue.php 8 months ago GetCampaignStatistics.php 8 months ago RegisterCampaignRoutes.php 8 months ago
GetCampaignComments.php
136 lines
1 <?php
2
3 namespace Give\API\REST\V3\Routes\Campaigns;
4
5 use Exception;
6 use Give\API\REST\V3\Routes\Campaigns\ValueObjects\CampaignRoute;
7 use Give\API\RestRoute;
8 use Give\Campaigns\CampaignDonationQuery;
9 use Give\Campaigns\Models\Campaign;
10 use Give\Donations\ValueObjects\DonationMetaKeys;
11 use WP_REST_Response;
12 use WP_REST_Server;
13
14 class GetCampaignComments implements RestRoute
15 {
16 /**
17 * @since 4.13.0 add schema
18 * @since 4.0.0
19 */
20 public function registerRoute()
21 {
22 register_rest_route(
23 CampaignRoute::NAMESPACE,
24 CampaignRoute::CAMPAIGN . '/comments',
25 [
26 [
27 'methods' => WP_REST_Server::READABLE,
28 'callback' => [$this, 'handleRequest'],
29 'permission_callback' => '__return_true',
30 ],
31 'args' => [
32 'id' => [
33 'type' => 'integer',
34 'required' => true,
35 'sanitize_callback' => 'absint',
36 ],
37 'perPage' => [
38 'type' => 'integer',
39 'required' => false,
40 'sanitize_callback' => 'absint',
41 ],
42 'anonymous' => [
43 'type' => 'boolean',
44 'required' => false,
45 'default' => true,
46 ],
47 ],
48 'schema' => [$this, 'getSchema'],
49 ]
50 );
51 }
52
53 /**
54 * @since 4.0.0
55 *
56 * @throws Exception
57 */
58 public function handleRequest($request): WP_REST_Response
59 {
60 $campaignId = $request->get_param('id');
61 $perPage = $request->get_param('perPage');
62 $anonymous = $request->get_param('anonymous');
63
64 $campaign = Campaign::find($campaignId);
65
66 if ( ! $campaign) {
67 return new WP_REST_Response('Campaign not found', 404);
68 }
69
70 $query = (new CampaignDonationQuery($campaign))
71 ->joinDonationMeta(DonationMetaKeys::DONOR_ID, 'donorIdMeta')
72 ->joinDonationMeta(DonationMetaKeys::COMMENT, 'commentMeta')
73 ->joinDonationMeta(DonationMetaKeys::ANONYMOUS, 'anonymousMeta')
74 ->leftJoin('give_donors', 'donorIdMeta.meta_value', 'donors.id', 'donors');
75
76
77 if ( ! $anonymous) {
78 $query->where('anonymousMeta.meta_value', '1', '!=');
79 }
80
81 $query->where('commentMeta.meta_value', '', '!=');
82 $query->whereIsNotNull('commentMeta.meta_value');
83
84 $query->select(
85 'donorIdMeta.meta_value as donorId',
86 'commentMeta.meta_value as comment',
87 'anonymousMeta.meta_value as anonymous',
88 'donation.post_date as date',
89 'donors.name as donorName'
90 );
91
92 $donations = $query->limit($perPage)->getAll();
93
94 $formattedComments = array_map(function ($donation) {
95 $donorName = $donation->anonymous === '1' ? __('Anonymous') : $donation->donorName;
96
97 return [
98 'donorName' => $donorName,
99 'comment' => $donation->comment,
100 'anonymous' => $donation->anonymous === '1',
101 'date' => human_time_diff(strtotime($donation->date)),
102 'avatar' => (string)get_avatar_url($donation->email),
103 ];
104 }, $donations);
105
106 return new WP_REST_Response($formattedComments);
107 }
108
109 /**
110 * @since 4.13.0
111 */
112 public function getSchema(): array
113 {
114 return [
115 'title' => 'givewp/campaign-comments',
116 'description' => esc_html__('Provides comments for a specific campaign.', 'give'),
117 'type' => 'object',
118 'properties' => [
119 'id' => [
120 'type' => 'integer',
121 'description' => esc_html__('The Campaign ID.', 'give'),
122 'required' => true,
123 ],
124 'perPage' => [
125 'type' => 'integer',
126 'description' => esc_html__('Comments per page', 'give'),
127 ],
128 'anonymous' => [
129 'type' => 'boolean',
130 'description' => esc_html__('Include anonymous comments', 'give'),
131 ]
132 ]
133 ];
134 }
135 }
136