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