PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
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 CustomFields 2 years ago DataTransferObjects 2 years ago Endpoints 2 years ago Exceptions 2 years ago Factories 2 years ago ListTable 3 years ago Migrations 2 years ago Models 2 years ago Repositories 2 years ago ValueObjects 1 year ago resources 1 year ago DonorsAdminPage.php 1 year ago ServiceProvider.php 2 years ago
DonorsAdminPage.php
187 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', '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
89 /**
90 * Preload initial table data
91 * @since 2.20.0
92 */
93 public function getForms()
94 {
95 $options = DB::table('posts')
96 ->select(
97 ['ID', 'value'],
98 ['post_title', 'text']
99 )
100 ->where('post_type', 'give_forms')
101 ->whereIn('post_status', ['publish', 'draft', 'pending', 'private'])
102 ->getAll(ARRAY_A);
103
104 return array_merge([
105 [
106 'value' => '0',
107 'text' => __('Any', 'give'),
108 ],
109 ], $options);
110 }
111
112 /**
113 * Render admin page container
114 * @since 2.20.0
115 */
116 public function render()
117 {
118 echo '<div id="give-admin-donors-root"></div>';
119 }
120
121 /**
122 * Display a button on the old donation forms table that switches to the React view
123 *
124 * @since 2.20.0
125 */
126 public function renderReactSwitch()
127 {
128 ?>
129 <script type="text/javascript">
130 function showReactTable() {
131 fetch('<?php echo esc_url_raw(rest_url('give-api/v2/admin/donors/view?isLegacy=0')) ?>', {
132 method: 'GET',
133 headers: {
134 ['X-WP-Nonce']: '<?php echo wp_create_nonce('wp_rest') ?>',
135 },
136 })
137 .then((res) => {
138 window.location.reload();
139 });
140 }
141
142 jQuery(function () {
143 jQuery(jQuery(".wrap .wp-header-end")).before(
144 '<button class="page-title-action" onclick="showReactTable()"><?php _e('Switch to New View', 'give') ?></button>',
145 );
146 });
147 </script>
148 <?php
149 }
150
151 /**
152 * Helper function to determine if current page is Give Donors admin page
153 * @since 2.20.0
154 *
155 * @return bool
156 */
157 public static function isShowing()
158 {
159 return isset($_GET['page']) && $_GET['page'] === 'give-donors' && ! isset($_GET['id']);
160 }
161
162 /**
163 * Retrieve a list of dismissed recommendations.
164 *
165 * @since 2.27.1
166 *
167 * @return array
168 */
169 private function getDismissedRecommendations(): array
170 {
171 $dismissedRecommendations = [];
172
173 $feeRecoveryAddonIsActive = Utils::isPluginActive('give-fee-recovery/give-fee-recovery.php');
174
175 $optionName = 'givewp_donors_fee_recovery_recommendation_dismissed';
176
177 $dismissed = get_option($optionName, false);
178
179 if ($dismissed || $feeRecoveryAddonIsActive) {
180 $dismissedRecommendations[] = $optionName;
181 }
182
183 return $dismissedRecommendations;
184 }
185
186 }
187