dashboard-widgets.php ➔ give_dashboard_sales_widget()   B
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 77

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 0
dl 0
loc 77
rs 8.5018
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * Dashboard Widgets
4
 *
5
 * @package     Give
6
 * @subpackage  Admin/Dashboard
7
 * @copyright   Copyright (c) 2016, WordImpress
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_dashboard_sales_widget' );
26
	}
27
}
28
29
add_action( 'wp_dashboard_setup', 'give_register_dashboard_widgets', 10 );
30
31
/**
32
 * Sales Summary Dashboard Widget
33
 *
34
 * Builds and renders the statistics dashboard widget. This widget displays the current month's donations.
35
 *
36
 * @since       1.0
37
 * @return void
38
 */
39
function give_dashboard_sales_widget() {
40
41
	if ( ! current_user_can( apply_filters( 'give_dashboard_stats_cap', 'view_give_reports' ) ) ) {
42
		return;
43
	}
44
	$stats = new Give_Payment_Stats(); ?>
45
46
	<div class="give-dashboard-widget">
47
48
		<div class="give-dashboard-today give-clearfix">
49
			<h3 class="give-dashboard-date-today"><?php echo date_i18n( _x( 'F j, Y', 'dashboard widget', 'give' ) ); ?></h3>
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'date_i18n'
Loading history...
50
51
			<p class="give-dashboard-happy-day"><?php
52
				printf(
53
				/* translators: %s: day of the week */
0 ignored issues
show
Coding Style introduced by
This line of the multi-line function call does not seem to be indented correctly. Expected 20 spaces, but found 16.
Loading history...
54
					__( 'Happy %s!', 'give' ),
55
					date_i18n( 'l', current_time( 'timestamp' ) )
56
				);
57
			?></p>
58
59
			<p class="give-dashboard-today-earnings"><?php
60
				$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...
61
				echo give_currency_filter( give_format_amount( $earnings_today, array( 'sanitize' => false ) ) );
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'give_currency_filter'
Loading history...
62
			?></p>
63
64
			<p class="give-donations-today"><?php
65
				$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...
66
				printf(
67
					/* translators: %s: daily donation count */
68
					__( '%s donations today', 'give' ),
69
					give_format_amount( $donations_today, array( 'decimal' => false, 'sanitize' => false ) )
70
				);
71
			?></p>
72
73
		</div>
74
75
76
		<table class="give-table-stats">
77
			<thead style="display: none;">
78
			<tr>
79
				<th><?php _e( 'This Week', 'give' ); ?></th>
80
				<th><?php _e( 'This Month', 'give' ); ?></th>
81
				<th><?php _e( 'Past 30 Days', 'give' ); ?></th>
82
			</tr>
83
			</thead>
84
			<tbody>
85
			<tr id="give-table-stats-tr-1">
86
				<td>
87
					<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...
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'give_currency_filter'
Loading history...
88
89
					<p class="give-dashboard-stat-total-label"><?php _e( 'This Week', 'give' ); ?></p>
90
				</td>
91
				<td>
92
					<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...
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'give_currency_filter'
Loading history...
93
94
					<p class="give-dashboard-stat-total-label"><?php _e( 'This Month', 'give' ); ?></p>
95
				</td>
96
			</tr>
97
			<tr id="give-table-stats-tr-2">
98
				<td>
99
					<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...
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'give_currency_filter'
Loading history...
100
101
					<p class="give-dashboard-stat-total-label"><?php _e( 'Last Month', 'give' ); ?></p>
102
				</td>
103
				<td>
104
					<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...
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'give_currency_filter'
Loading history...
105
106
					<p class="give-dashboard-stat-total-label"><?php _e( 'This Quarter', 'give' ); ?></p>
107
				</td>
108
			</tr>
109
			</tbody>
110
		</table>
111
112
	</div>
113
114
	<?php
115
}
116
117
/**
118
 * Add donation forms count to dashboard "At a glance" widget
119
 *
120
 * @since  1.0
121
 *
122
 * @param $items
123
 *
124
 * @return array
125
 */
126
function give_dashboard_at_a_glance_widget( $items ) {
127
128
	$num_posts = wp_count_posts( 'give_forms' );
129
130
	if ( $num_posts && $num_posts->publish ) {
131
132
		$text = sprintf(
133
			/* translators: %s: number of posts published */
134
			_n( '%s Give Form', '%s Give Forms', $num_posts->publish, 'give' ),
135
			$num_posts->publish
136
		);
137
138
		$text = sprintf( $text, number_format_i18n( $num_posts->publish ) );
139
140
		if ( current_user_can( 'edit_give_forms', get_current_user_id() ) ) {
141
			$text = sprintf(
142
				'<a class="give-forms-count" href="%1$s">%2$s</a>',
143
				admin_url( 'edit.php?post_type=give_forms' ),
144
				$text
145
			);
146
		} else {
147
			$text = sprintf(
148
				'<span class="give-forms-count">%1$s</span>',
149
				$text
150
			);
151
		}
152
153
		$items[] = $text;
154
	}
155
156
	return $items;
157
}
158
159
add_filter( 'dashboard_glance_items', 'give_dashboard_at_a_glance_widget', 1, 1 );
160