PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.12.2
GiveWP – Donation Plugin and Fundraising Platform v3.12.2
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 / Views / Admin / Pages / Reports.php
give / src / Views / Admin / Pages Last commit date
templates 4 years ago Reports.php 3 years ago
Reports.php
151 lines
1 <?php
2
3 /**
4 * Reports Page class
5 *
6 * @package Give
7 */
8
9 namespace Give\Views\Admin\Pages;
10
11 use Give\Helpers\EnqueueScript;
12 use Give\Helpers\Utils;
13
14 defined('ABSPATH') || exit;
15
16 /**
17 * Manages reports admin page
18 */
19 class Reports
20 {
21 /**
22 * Initialize Reports Admin page
23 */
24 public function init()
25 {
26 add_action('admin_menu', [$this, 'add_page'], 40);
27 add_action('admin_enqueue_scripts', [$this, 'enqueue_scripts']);
28 }
29
30 // Enqueue app scripts
31 public function enqueue_scripts($base)
32 {
33 if ($base !== 'give_forms_page_give-reports') {
34 return;
35 }
36
37 if (isset($_GET['legacy'])) {
38 $script = "
39 jQuery(document).ready(() => {
40 const anchors = [].slice.call(document.querySelectorAll('a[href*=give-reports]'));
41 anchors.forEach((anchor) => {
42 if (anchor.getAttribute('id') === 'new-reports-link') {
43 return;
44 }
45 anchor.setAttribute('href', anchor.getAttribute('href') + '&legacy=true');
46 });
47 });
48 ";
49 wp_add_inline_script('jquery', $script);
50
51 return;
52 }
53
54 wp_enqueue_style('givewp-design-system-foundation');
55
56 $data = [
57 'legacyReportsUrl' => admin_url('/edit.php?post_type=give_forms&page=give-reports&legacy=true'),
58 'allTimeStart' => $this->get_all_time_start(),
59 'currencies' => array_keys(give_get_currencies_list()),
60 'currency' => give_get_currency(),
61 'testMode' => give_is_test_mode(),
62 'pluginUrl' => GIVE_PLUGIN_URL,
63 'dismissedRecommendations' => $this->getDismissedRecommendations(),
64 'apiRoot' => esc_url_raw(rest_url('give-api/v2/reports')),
65 'apiNonce' => wp_create_nonce('wp_rest'),
66 ];
67
68 EnqueueScript::make('give-admin-reports-v3-js', 'assets/dist/js/admin-reports.js')
69 ->loadInFooter()
70 ->dependencies(['wp-api'])
71 ->registerTranslations()
72 ->registerLocalizeData('giveReportsData', $data)->enqueue();
73 }
74
75 // Add Reports submenu page to admin menu
76 public function add_page()
77 {
78 $render = [$this, 'render_template'];
79 if (isset($_GET['legacy'])) {
80 $render = [Give()->give_settings, 'output'];
81 }
82
83 add_submenu_page(
84 'edit.php?post_type=give_forms',
85 esc_html__('Donation Reports', 'give'),
86 esc_html__('Reports', 'give'),
87 'view_give_reports',
88 'give-reports',
89 $render
90 );
91 }
92
93 public function render_template()
94 {
95 include_once GIVE_PLUGIN_DIR . 'src/Views/Admin/Pages/templates/reports-template.php';
96 }
97
98 public function get_all_time_start()
99 {
100 $start = date_create('01/01/2015');
101 $end = date_create();
102
103 // Setup donation query args (get sanitized start/end date from request)
104 $args = [
105 'number' => 1,
106 'paged' => 1,
107 'orderby' => 'date',
108 'order' => 'ASC',
109 'start_date' => $start->format('Y-m-d H:i:s'),
110 'end_date' => $end->format('Y-m-d H:i:s'),
111 ];
112
113 // Get array of 50 recent donations
114 $donations = new \Give_Payments_Query($args);
115 $donations = $donations->get_payments();
116
117 return isset($donations[0]) ? $donations[0]->date : $start->format('Y-m-d H:i:s');
118 }
119
120 /**
121 * Retrieve a list of dismissed recommendations.
122 *
123 * @since 2.27.1
124 *
125 * @return array
126 */
127 private function getDismissedRecommendations(): array
128 {
129 $dismissedRecommendations = [];
130
131 $recurringAddonIsActive = Utils::isPluginActive('give-recurring/give-recurring.php');
132 $feeRecoveryAddonIsActive = Utils::isPluginActive('give-fee-recovery/give-fee-recovery.php');
133
134 $optionNames = [
135 'givewp_reports_recurring_recommendation_dismissed' => $recurringAddonIsActive,
136 'givewp_reports_fee_recovery_recommendation_dismissed' => $feeRecoveryAddonIsActive,
137 ];
138
139 foreach ($optionNames as $optionName => $isActive) {
140 $dismissed = get_option($optionName, false);
141 if ($dismissed || $isActive) {
142 $dismissedRecommendations[] = $optionName;
143 }
144 }
145
146 return $dismissedRecommendations;
147 }
148 }
149
150
151