dashboard-widgets.php ➔ give_render_dashboard_stats_widget()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 0
dl 0
loc 25
rs 9.52
c 0
b 0
f 0
1
<?php
2
/**
3
 * Dashboard Widgets
4
 *
5
 * @package     Give
6
 * @subpackage  Admin/Dashboard
7
 * @copyright   Copyright (c) 2016, GiveWP
8
 * @license     https://opensource.org/licenses/gpl-license GNU Public License
9
 * @since       1.0
10
 */
11
12
// Exit if accessed directly.
13
if ( ! defined( 'ABSPATH' ) ) {
14
	exit;
15
}
16
17
/**
18
 * Registers the dashboard widgets
19
 *
20
 * @since  1.0
21
 * @return void
22
 */
23
function give_register_dashboard_widgets() {
24
	if ( current_user_can( apply_filters( 'give_dashboard_stats_cap', 'view_give_reports' ) ) ) {
25
		wp_add_dashboard_widget( 'give_dashboard_sales', __( 'Give: Donation Statistics', 'give' ), 'give_render_dashboard_stats_widget' );
26
	}
27
}
28
29
add_action( 'wp_dashboard_setup', 'give_register_dashboard_widgets', 10 );
30
31
32
/**
33
 * Sales Summary Dashboard Widget render callback
34
 * Note: only for internal use
35
 *
36
 * Builds and renders the ajaxify statistics dashboard widget.
37
 * This widget displays the current month's donations.
38
 *
39
 * @since  2.4.0
40
 * @return void
41
 */
42
function give_render_dashboard_stats_widget() {
43
	if ( ! current_user_can( apply_filters( 'give_dashboard_stats_cap', 'view_give_reports' ) ) ) {
44
		return;
45
	}
46
47
	?>
48
	<div id="give-dashboard-sales-widget">
49
		<span class="spinner is-active" style="float: none;margin: auto 50%;padding-bottom: 15px;"></span>
50
51
		<script>
52
			jQuery(document).ready(function () {
53
				jQuery.ajax({
54
					url: ajaxurl,
55
					data: {
56
						action: 'give_render_dashboard_stats_widget'
57
					},
58
					success: function (response) {
59
						jQuery('#give-dashboard-sales-widget').html(response);
60
					}
61
				});
62
			})
63
		</script>
64
	</div>
65
	<?php
66
}
67
68
/**
69
 * Ajax handler for dashboard statistic widget render
70
 * Note: only for internal use
71
 *
72
 * @since 2.4.0
73
 */
74
function give_ajax_render_dashboard_stats_widget(){
75
	ob_start();
76
	give_dashboard_stats_widget();
77
78
	wp_send_json( ob_get_clean() );
79
80
}
81
add_action( 'wp_ajax_give_render_dashboard_stats_widget', 'give_ajax_render_dashboard_stats_widget' );
82
83
/**
84
 * Sales Summary Dashboard Widget
85
 *
86
 * Builds and renders the statistics dashboard widget. This widget displays the current month's donations.
87
 *
88
 * @since       1.0
89
 * @return void
90
 */
91
function give_dashboard_stats_widget() {
92
93
	if ( ! current_user_can( apply_filters( 'give_dashboard_stats_cap', 'view_give_reports' ) ) ) {
94
		return;
95
	}
96
	$stats = new Give_Payment_Stats(); ?>
97
98
	<div class="give-dashboard-widget">
99
100
		<div class="give-dashboard-today give-clearfix">
101
			<h3 class="give-dashboard-date-today"><?php echo date_i18n( _x( 'F j, Y', 'dashboard widget', 'give' ) ); ?></h3>
102
103
			<p class="give-dashboard-happy-day"><?php
104
				printf(
105
				/* translators: %s: day of the week */
106
					__( 'Happy %s!', 'give' ),
107
					date_i18n( 'l', current_time( 'timestamp' ) )
108
				);
109
			?></p>
110
111
			<p class="give-dashboard-today-earnings"><?php
112
				$earnings_today = $stats->get_earnings( 0, 'today', false );
0 ignored issues
show
Documentation introduced by
'today' is of type string, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
113
				echo give_currency_filter( give_format_amount( $earnings_today, array( 'sanitize' => false ) ) );
114
			?></p>
115
116
			<p class="give-donations-today"><?php
117
				$donations_today = $stats->get_sales( 0, 'today', false );
0 ignored issues
show
Documentation introduced by
'today' is of type string, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
118
				printf(
119
					/* translators: %s: daily donation count */
120
					__( '%s donations today', 'give' ),
121
					give_format_amount( $donations_today, array( 'decimal' => false, 'sanitize' => false ) )
122
				);
123
			?></p>
124
125
		</div>
126
127
128
		<table class="give-table-stats">
129
			<thead style="display: none;">
130
			<tr>
131
				<th><?php _e( 'This Week', 'give' ); ?></th>
132
				<th><?php _e( 'This Month', 'give' ); ?></th>
133
				<th><?php _e( 'Past 30 Days', 'give' ); ?></th>
134
			</tr>
135
			</thead>
136
			<tbody>
137
			<tr id="give-table-stats-tr-1">
138
				<td>
139
					<p class="give-dashboard-stat-total"><?php echo give_currency_filter( give_format_amount( $stats->get_earnings( 0, 'this_week' ), array( 'sanitize' => false ) ) ); ?></p>
0 ignored issues
show
Documentation introduced by
'this_week' is of type string, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
140
141
					<p class="give-dashboard-stat-total-label"><?php _e( 'This Week', 'give' ); ?></p>
142
				</td>
143
				<td>
144
					<p class="give-dashboard-stat-total"><?php echo give_currency_filter( give_format_amount( $stats->get_earnings( 0, 'this_month' ), array( 'sanitize' => false ) ) ); ?></p>
0 ignored issues
show
Documentation introduced by
'this_month' is of type string, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
145
146
					<p class="give-dashboard-stat-total-label"><?php _e( 'This Month', 'give' ); ?></p>
147
				</td>
148
			</tr>
149
			<tr id="give-table-stats-tr-2">
150
				<td>
151
					<p class="give-dashboard-stat-total"><?php echo give_currency_filter( give_format_amount( $stats->get_earnings( 0, 'last_month' ), array( 'sanitize' => false ) ) ) ?></p>
0 ignored issues
show
Documentation introduced by
'last_month' is of type string, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
152
153
					<p class="give-dashboard-stat-total-label"><?php _e( 'Last Month', 'give' ); ?></p>
154
				</td>
155
				<td>
156
					<p class="give-dashboard-stat-total"><?php echo give_currency_filter( give_format_amount( $stats->get_earnings( 0, 'this_quarter' ), array( 'sanitize' => false ) ) ) ?></p>
0 ignored issues
show
Documentation introduced by
'this_quarter' is of type string, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
157
158
					<p class="give-dashboard-stat-total-label"><?php _e( 'This Quarter', 'give' ); ?></p>
159
				</td>
160
			</tr>
161
			</tbody>
162
		</table>
163
164
	</div>
165
166
	<?php
167
}
168
169
/**
170
 * Add donation forms count to dashboard "At a glance" widget
171
 *
172
 * @since  1.0
173
 *
174
 * @param $items
175
 *
176
 * @return array
177
 */
178
function give_dashboard_at_a_glance_widget( $items ) {
179
180
	$num_posts = wp_count_posts( 'give_forms' );
181
182
	if ( $num_posts && $num_posts->publish ) {
183
184
		$text = sprintf(
185
			/* translators: %s: number of posts published */
186
			_n( '%s Give Form', '%s Give Forms', $num_posts->publish, 'give' ),
187
			$num_posts->publish
188
		);
189
190
		$text = sprintf( $text, number_format_i18n( $num_posts->publish ) );
191
192
		if ( current_user_can( 'edit_give_forms', get_current_user_id() ) ) {
193
			$text = sprintf(
194
				'<a class="give-forms-count" href="%1$s">%2$s</a>',
195
				admin_url( 'edit.php?post_type=give_forms' ),
196
				$text
197
			);
198
		} else {
199
			$text = sprintf(
200
				'<span class="give-forms-count">%1$s</span>',
201
				$text
202
			);
203
		}
204
205
		$items[] = $text;
206
	}
207
208
	return $items;
209
}
210
211
add_filter( 'dashboard_glance_items', 'give_dashboard_at_a_glance_widget', 1, 1 );
212