PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.14.2
GiveWP – Donation Plugin and Fundraising Platform v4.14.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 5 months ago
Reports.php
154 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 use Give\Framework\Permissions\Facades\UserPermissions;
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', 'build/assets/dist/js/admin-reports.js')
69 ->loadInFooter()
70 ->dependencies(['wp-api'])
71 ->registerTranslations()
72 ->registerLocalizeData('giveReportsData', $data)->enqueue();
73 }
74
75 /**
76 * Add Reports submenu page to admin menu
77 * @since 4.14.0 update permission capability to use facade
78 */
79 public function add_page()
80 {
81 $render = [$this, 'render_template'];
82 if (isset($_GET['legacy'])) {
83 $render = [Give()->give_settings, 'output'];
84 }
85
86 add_submenu_page(
87 'edit.php?post_type=give_forms',
88 esc_html__('Donation Reports', 'give'),
89 esc_html__('Reports', 'give'),
90 UserPermissions::reports()->viewCap(),
91 'give-reports',
92 $render
93 );
94 }
95
96 public function render_template()
97 {
98 include_once GIVE_PLUGIN_DIR . 'src/Views/Admin/Pages/templates/reports-template.php';
99 }
100
101 public function get_all_time_start()
102 {
103 $start = date_create('01/01/2015');
104 $end = date_create();
105
106 // Setup donation query args (get sanitized start/end date from request)
107 $args = [
108 'number' => 1,
109 'paged' => 1,
110 'orderby' => 'date',
111 'order' => 'ASC',
112 'start_date' => $start->format('Y-m-d H:i:s'),
113 'end_date' => $end->format('Y-m-d H:i:s'),
114 ];
115
116 // Get array of 50 recent donations
117 $donations = new \Give_Payments_Query($args);
118 $donations = $donations->get_payments();
119
120 return isset($donations[0]) ? $donations[0]->date : $start->format('Y-m-d H:i:s');
121 }
122
123 /**
124 * Retrieve a list of dismissed recommendations.
125 *
126 * @since 2.27.1
127 *
128 * @return array
129 */
130 private function getDismissedRecommendations(): array
131 {
132 $dismissedRecommendations = [];
133
134 $recurringAddonIsActive = Utils::isPluginActive('give-recurring/give-recurring.php');
135 $feeRecoveryAddonIsActive = Utils::isPluginActive('give-fee-recovery/give-fee-recovery.php');
136
137 $optionNames = [
138 'givewp_reports_recurring_recommendation_dismissed' => $recurringAddonIsActive,
139 'givewp_reports_fee_recovery_recommendation_dismissed' => $feeRecoveryAddonIsActive,
140 ];
141
142 foreach ($optionNames as $optionName => $isActive) {
143 $dismissed = get_option($optionName, false);
144 if ($dismissed || $isActive) {
145 $dismissedRecommendations[] = $optionName;
146 }
147 }
148
149 return $dismissedRecommendations;
150 }
151 }
152
153
154