PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.3
GiveWP – Donation Plugin and Fundraising Platform v2.22.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 / Donors / DonorsAdminPage.php
give / src / Donors Last commit date
Controllers 4 years ago DataTransferObjects 4 years ago Endpoints 4 years ago Exceptions 4 years ago Factories 4 years ago Models 4 years ago Repositories 4 years ago ValueObjects 4 years ago resources 3 years ago DonorsAdminPage.php 4 years ago ServiceProvider.php 4 years ago
DonorsAdminPage.php
185 lines
1 <?php
2
3 namespace Give\Donors;
4
5 use Give\Helpers\EnqueueScript;
6
7 class DonorsAdminPage
8 {
9 /**
10 * Root URL for this page's endpoints
11 * @var string
12 */
13 private $apiRoot;
14
15 /**
16 * Nonce for authentication with WP REST API
17 * @var string
18 */
19 private $apiNonce;
20
21 /**
22 * @since 2.20.0
23 */
24 public function __construct()
25 {
26 $this->apiRoot = esc_url_raw(rest_url('give-api/v2/admin/donors'));
27 $this->apiNonce = wp_create_nonce('wp_rest');
28 }
29
30 /**
31 * @since 2.20.0
32 */
33 public function registerMenuItem()
34 {
35 remove_submenu_page(
36 'edit.php?post_type=give_forms',
37 'give-donors'
38 );
39
40 add_submenu_page(
41 'edit.php?post_type=give_forms',
42 esc_html__('Donors', 'give'),
43 esc_html__('Donors', 'give'),
44 'edit_give_forms',
45 'give-donors',
46 [$this, 'render'],
47 5
48 );
49 }
50
51 /**
52 * @since 2.20.0
53 */
54 public function loadScripts()
55 {
56 $data = [
57 'apiRoot' => $this->apiRoot,
58 'apiNonce' => $this->apiNonce,
59 'preload' => $this->preloadDonors(),
60 'forms' => $this->getForms(),
61 ];
62
63 EnqueueScript::make('give-admin-donors', 'assets/dist/js/give-admin-donors.js')
64 ->loadInFooter()
65 ->registerTranslations()
66 ->registerLocalizeData('GiveDonors', $data)->enqueue();
67
68 wp_enqueue_style(
69 'give-admin-ui-font',
70 'https://fonts.googleapis.com/css2?family=Open+Sans:wght@400..700&display=swap',
71 [],
72 null
73 );
74 }
75
76 /**
77 * Make REST request to Donors endpoint before page load
78 * @since 2.20.0
79 */
80 public function preloadDonors(){
81 $queryParameters = [
82 'page' => 1,
83 'perPage' => 30,
84 'search' => '',
85 ];
86
87 $url = add_query_arg(
88 $queryParameters,
89 $this->apiRoot
90 );
91
92 $request = \WP_REST_Request::from_url($url);
93 $response = rest_do_request($request);
94
95 return $response->get_data();
96 }
97
98 /**
99 * Preload initial table data
100 * @since 2.20.0
101 */
102 public function getForms(){
103 $queryParameters = [
104 'page' => 1,
105 'perPage' => 50,
106 'search' => '',
107 'status' => 'any'
108 ];
109
110 $url = esc_url_raw(add_query_arg(
111 $queryParameters,
112 rest_url('give-api/v2/admin/forms')
113 ));
114
115 $request = \WP_REST_Request::from_url($url);
116 $response = rest_do_request($request);
117
118 $response = $response->get_data();
119 $forms = $response['items'];
120
121 $emptyOption = [
122 [
123 'value' => '0',
124 'text' => 'Any',
125 ]
126 ];
127 $formOptions = array_map(function($form){
128 return [
129 'value' => $form['id'],
130 'text' => $form['name'],
131 ];
132 }, $forms);
133 return array_merge($emptyOption, $formOptions);
134 }
135
136 /**
137 * Render admin page container
138 * @since 2.20.0
139 */
140 public function render()
141 {
142 echo '<div id="give-admin-donors-root"></div>';
143 }
144
145 /**
146 * Display a button on the old donation forms table that switches to the React view
147 *
148 * @since 2.20.0
149 */
150 public function renderReactSwitch()
151 {
152 ?>
153 <script type="text/javascript">
154 function showReactTable () {
155 fetch( '<?php echo esc_url_raw(rest_url('give-api/v2/admin/donors/view?isLegacy=0')) ?>', {
156 method: 'GET',
157 headers: {
158 ['X-WP-Nonce']: '<?php echo wp_create_nonce('wp_rest') ?>'
159 }
160 })
161 .then((res) => {
162 window.location.reload();
163 });
164 }
165 jQuery( function() {
166 jQuery(jQuery(".wrap .wp-header-end")).before(
167 '<button class="page-title-action" onclick="showReactTable()">Switch to New View</button>'
168 );
169 });
170 </script>
171 <?php
172 }
173
174 /**
175 * Helper function to determine if current page is Give Donors admin page
176 * @since 2.20.0
177 *
178 * @return bool
179 */
180 public static function isShowing()
181 {
182 return isset($_GET['page']) && $_GET['page'] === 'give-donors' && !isset($_GET['id']);
183 }
184 }
185