Passed
Push — master ( 30cab3...67eff9 )
by Brian
05:11
created
includes/api/class-getpaid-rest-reports-controller.php 2 patches
Indentation   +172 added lines, -172 removed lines patch added patch discarded remove patch
@@ -18,176 +18,176 @@
 block discarded – undo
18 18
  */
19 19
 class GetPaid_REST_Reports_Controller extends GetPaid_REST_Controller {
20 20
 
21
-	/**
22
-	 * Route base.
23
-	 *
24
-	 * @var string
25
-	 */
26
-	protected $rest_base = 'reports';
27
-
28
-	/**
29
-	 * Registers the routes for the objects of the controller.
30
-	 *
31
-	 * @since 2.0.0
32
-	 *
33
-	 * @see register_rest_route()
34
-	 */
35
-	public function register_namespace_routes( $namespace ) {
36
-
37
-		// List all available reports.
38
-		register_rest_route(
39
-			$namespace,
40
-			$this->rest_base,
41
-			array(
42
-				array(
43
-					'methods'             => WP_REST_Server::READABLE,
44
-					'callback'            => array( $this, 'get_items' ),
45
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
46
-					'args'                => $this->get_collection_params(),
47
-				),
48
-				'schema' => array( $this, 'get_public_item_schema' ),
49
-			)
50
-		);
51
-
52
-	}
53
-
54
-	/**
55
-	 * Makes sure the current user has access to READ the report APIs.
56
-	 *
57
-	 * @since  2.0.0
58
-	 * @param WP_REST_Request $request Full data about the request.
59
-	 * @return WP_Error|boolean
60
-	 */
61
-	public function get_items_permissions_check( $request ) {
62
-
63
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
64
-			return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
65
-		}
66
-
67
-		return true;
68
-	}
69
-
70
-	/**
71
-	 * Get reports list.
72
-	 *
73
-	 * @since 2.0.0
74
-	 * @return array
75
-	 */
76
-	protected function get_reports() {
77
-
78
-		$reports = array(
79
-			array(
80
-				'slug'        => 'sales',
81
-				'description' => __( 'List of sales reports.', 'invoicing' ),
82
-			),
83
-			array(
84
-				'slug'        => 'top_sellers',
85
-				'description' => __( 'List of top selling items.', 'invoicing' ),
86
-			),
87
-			array(
88
-				'slug'        => 'top_earners',
89
-				'description' => __( 'List of top earning items.', 'invoicing' ),
90
-			),
91
-			array(
92
-				'slug'        => 'invoices/counts',
93
-				'description' => __( 'Invoice counts.', 'invoicing' ),
94
-			),
95
-		);
96
-
97
-		return apply_filters( 'getpaid_available_api_reports', $reports );
98
-
99
-	}
100
-
101
-	/**
102
-	 * Get all reports.
103
-	 *
104
-	 * @since 2.0.0
105
-	 * @param WP_REST_Request $request
106
-	 * @return array|WP_Error
107
-	 */
108
-	public function get_items( $request ) {
109
-		$data    = array();
110
-		$reports = $this->get_reports();
111
-
112
-		foreach ( $reports as $report ) {
113
-			$item   = $this->prepare_item_for_response( (object) $report, $request );
114
-			$data[] = $this->prepare_response_for_collection( $item );
115
-		}
116
-
117
-		return rest_ensure_response( $data );
118
-	}
119
-
120
-	/**
121
-	 * Prepare a report object for serialization.
122
-	 *
123
-	 * @since 2.0.0
124
-	 * @param stdClass $report Report data.
125
-	 * @param WP_REST_Request $request Request object.
126
-	 * @return WP_REST_Response $response Response data.
127
-	 */
128
-	public function prepare_item_for_response( $report, $request ) {
129
-		$data = array(
130
-			'slug'        => $report->slug,
131
-			'description' => $report->description,
132
-		);
133
-
134
-		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
135
-		$data = $this->add_additional_fields_to_object( $data, $request );
136
-		$data = $this->filter_response_by_context( $data, $context );
137
-
138
-		// Wrap the data in a response object.
139
-		$response = rest_ensure_response( $data );
140
-		$response->add_links( array(
141
-			'self' => array(
142
-				'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $report->slug ) ),
143
-			),
144
-			'collection' => array(
145
-				'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
146
-			),
147
-		) );
148
-
149
-		return apply_filters( 'getpaid_rest_prepare_report', $response, $report, $request );
150
-	}
151
-
152
-	/**
153
-	 * Get the Report's schema, conforming to JSON Schema.
154
-	 *
155
-	 * @since 2.0.0
156
-	 * @return array
157
-	 */
158
-	public function get_item_schema() {
159
-		$schema = array(
160
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
161
-			'title'      => 'report',
162
-			'type'       => 'object',
163
-			'properties' => array(
164
-				'slug' => array(
165
-					'description' => __( 'An alphanumeric identifier for the resource.', 'invoicing' ),
166
-					'type'        => 'string',
167
-					'context'     => array( 'view' ),
168
-					'readonly'    => true,
169
-				),
170
-				'description' => array(
171
-					'description' => __( 'A human-readable description of the resource.', 'invoicing' ),
172
-					'type'        => 'string',
173
-					'context'     => array( 'view' ),
174
-					'readonly'    => true,
175
-				),
176
-			),
177
-		);
178
-
179
-		return $this->add_additional_fields_schema( $schema );
180
-	}
181
-
182
-	/**
183
-	 * Get the query params for collections.
184
-	 *
185
-	 * @since 2.0.0
186
-	 * @return array
187
-	 */
188
-	public function get_collection_params() {
189
-		return array(
190
-			'context' => $this->get_context_param( array( 'default' => 'view' ) ),
191
-		);
192
-	}
21
+    /**
22
+     * Route base.
23
+     *
24
+     * @var string
25
+     */
26
+    protected $rest_base = 'reports';
27
+
28
+    /**
29
+     * Registers the routes for the objects of the controller.
30
+     *
31
+     * @since 2.0.0
32
+     *
33
+     * @see register_rest_route()
34
+     */
35
+    public function register_namespace_routes( $namespace ) {
36
+
37
+        // List all available reports.
38
+        register_rest_route(
39
+            $namespace,
40
+            $this->rest_base,
41
+            array(
42
+                array(
43
+                    'methods'             => WP_REST_Server::READABLE,
44
+                    'callback'            => array( $this, 'get_items' ),
45
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
46
+                    'args'                => $this->get_collection_params(),
47
+                ),
48
+                'schema' => array( $this, 'get_public_item_schema' ),
49
+            )
50
+        );
51
+
52
+    }
53
+
54
+    /**
55
+     * Makes sure the current user has access to READ the report APIs.
56
+     *
57
+     * @since  2.0.0
58
+     * @param WP_REST_Request $request Full data about the request.
59
+     * @return WP_Error|boolean
60
+     */
61
+    public function get_items_permissions_check( $request ) {
62
+
63
+        if ( ! wpinv_current_user_can_manage_invoicing() ) {
64
+            return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
65
+        }
66
+
67
+        return true;
68
+    }
69
+
70
+    /**
71
+     * Get reports list.
72
+     *
73
+     * @since 2.0.0
74
+     * @return array
75
+     */
76
+    protected function get_reports() {
77
+
78
+        $reports = array(
79
+            array(
80
+                'slug'        => 'sales',
81
+                'description' => __( 'List of sales reports.', 'invoicing' ),
82
+            ),
83
+            array(
84
+                'slug'        => 'top_sellers',
85
+                'description' => __( 'List of top selling items.', 'invoicing' ),
86
+            ),
87
+            array(
88
+                'slug'        => 'top_earners',
89
+                'description' => __( 'List of top earning items.', 'invoicing' ),
90
+            ),
91
+            array(
92
+                'slug'        => 'invoices/counts',
93
+                'description' => __( 'Invoice counts.', 'invoicing' ),
94
+            ),
95
+        );
96
+
97
+        return apply_filters( 'getpaid_available_api_reports', $reports );
98
+
99
+    }
100
+
101
+    /**
102
+     * Get all reports.
103
+     *
104
+     * @since 2.0.0
105
+     * @param WP_REST_Request $request
106
+     * @return array|WP_Error
107
+     */
108
+    public function get_items( $request ) {
109
+        $data    = array();
110
+        $reports = $this->get_reports();
111
+
112
+        foreach ( $reports as $report ) {
113
+            $item   = $this->prepare_item_for_response( (object) $report, $request );
114
+            $data[] = $this->prepare_response_for_collection( $item );
115
+        }
116
+
117
+        return rest_ensure_response( $data );
118
+    }
119
+
120
+    /**
121
+     * Prepare a report object for serialization.
122
+     *
123
+     * @since 2.0.0
124
+     * @param stdClass $report Report data.
125
+     * @param WP_REST_Request $request Request object.
126
+     * @return WP_REST_Response $response Response data.
127
+     */
128
+    public function prepare_item_for_response( $report, $request ) {
129
+        $data = array(
130
+            'slug'        => $report->slug,
131
+            'description' => $report->description,
132
+        );
133
+
134
+        $context = ! empty( $request['context'] ) ? $request['context'] : 'view';
135
+        $data = $this->add_additional_fields_to_object( $data, $request );
136
+        $data = $this->filter_response_by_context( $data, $context );
137
+
138
+        // Wrap the data in a response object.
139
+        $response = rest_ensure_response( $data );
140
+        $response->add_links( array(
141
+            'self' => array(
142
+                'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $report->slug ) ),
143
+            ),
144
+            'collection' => array(
145
+                'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
146
+            ),
147
+        ) );
148
+
149
+        return apply_filters( 'getpaid_rest_prepare_report', $response, $report, $request );
150
+    }
151
+
152
+    /**
153
+     * Get the Report's schema, conforming to JSON Schema.
154
+     *
155
+     * @since 2.0.0
156
+     * @return array
157
+     */
158
+    public function get_item_schema() {
159
+        $schema = array(
160
+            '$schema'    => 'http://json-schema.org/draft-04/schema#',
161
+            'title'      => 'report',
162
+            'type'       => 'object',
163
+            'properties' => array(
164
+                'slug' => array(
165
+                    'description' => __( 'An alphanumeric identifier for the resource.', 'invoicing' ),
166
+                    'type'        => 'string',
167
+                    'context'     => array( 'view' ),
168
+                    'readonly'    => true,
169
+                ),
170
+                'description' => array(
171
+                    'description' => __( 'A human-readable description of the resource.', 'invoicing' ),
172
+                    'type'        => 'string',
173
+                    'context'     => array( 'view' ),
174
+                    'readonly'    => true,
175
+                ),
176
+            ),
177
+        );
178
+
179
+        return $this->add_additional_fields_schema( $schema );
180
+    }
181
+
182
+    /**
183
+     * Get the query params for collections.
184
+     *
185
+     * @since 2.0.0
186
+     * @return array
187
+     */
188
+    public function get_collection_params() {
189
+        return array(
190
+            'context' => $this->get_context_param( array( 'default' => 'view' ) ),
191
+        );
192
+    }
193 193
 }
Please login to merge, or discard this patch.
Spacing   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -9,7 +9,7 @@  discard block
 block discarded – undo
9 9
  * @since   2.0.0
10 10
  */
11 11
 
12
-defined( 'ABSPATH' ) || exit;
12
+defined('ABSPATH') || exit;
13 13
 
14 14
 /**
15 15
  * GetPaid REST reports controller class.
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
 	 *
33 33
 	 * @see register_rest_route()
34 34
 	 */
35
-	public function register_namespace_routes( $namespace ) {
35
+	public function register_namespace_routes($namespace) {
36 36
 
37 37
 		// List all available reports.
38 38
 		register_rest_route(
@@ -41,11 +41,11 @@  discard block
 block discarded – undo
41 41
 			array(
42 42
 				array(
43 43
 					'methods'             => WP_REST_Server::READABLE,
44
-					'callback'            => array( $this, 'get_items' ),
45
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
44
+					'callback'            => array($this, 'get_items'),
45
+					'permission_callback' => array($this, 'get_items_permissions_check'),
46 46
 					'args'                => $this->get_collection_params(),
47 47
 				),
48
-				'schema' => array( $this, 'get_public_item_schema' ),
48
+				'schema' => array($this, 'get_public_item_schema'),
49 49
 			)
50 50
 		);
51 51
 
@@ -58,10 +58,10 @@  discard block
 block discarded – undo
58 58
 	 * @param WP_REST_Request $request Full data about the request.
59 59
 	 * @return WP_Error|boolean
60 60
 	 */
61
-	public function get_items_permissions_check( $request ) {
61
+	public function get_items_permissions_check($request) {
62 62
 
63
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
64
-			return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
63
+		if (!wpinv_current_user_can_manage_invoicing()) {
64
+			return new WP_Error('rest_cannot_view', __('Sorry, you cannot list resources.', 'invoicing'), array('status' => rest_authorization_required_code()));
65 65
 		}
66 66
 
67 67
 		return true;
@@ -78,23 +78,23 @@  discard block
 block discarded – undo
78 78
 		$reports = array(
79 79
 			array(
80 80
 				'slug'        => 'sales',
81
-				'description' => __( 'List of sales reports.', 'invoicing' ),
81
+				'description' => __('List of sales reports.', 'invoicing'),
82 82
 			),
83 83
 			array(
84 84
 				'slug'        => 'top_sellers',
85
-				'description' => __( 'List of top selling items.', 'invoicing' ),
85
+				'description' => __('List of top selling items.', 'invoicing'),
86 86
 			),
87 87
 			array(
88 88
 				'slug'        => 'top_earners',
89
-				'description' => __( 'List of top earning items.', 'invoicing' ),
89
+				'description' => __('List of top earning items.', 'invoicing'),
90 90
 			),
91 91
 			array(
92 92
 				'slug'        => 'invoices/counts',
93
-				'description' => __( 'Invoice counts.', 'invoicing' ),
93
+				'description' => __('Invoice counts.', 'invoicing'),
94 94
 			),
95 95
 		);
96 96
 
97
-		return apply_filters( 'getpaid_available_api_reports', $reports );
97
+		return apply_filters('getpaid_available_api_reports', $reports);
98 98
 
99 99
 	}
100 100
 
@@ -105,16 +105,16 @@  discard block
 block discarded – undo
105 105
 	 * @param WP_REST_Request $request
106 106
 	 * @return array|WP_Error
107 107
 	 */
108
-	public function get_items( $request ) {
108
+	public function get_items($request) {
109 109
 		$data    = array();
110 110
 		$reports = $this->get_reports();
111 111
 
112
-		foreach ( $reports as $report ) {
113
-			$item   = $this->prepare_item_for_response( (object) $report, $request );
114
-			$data[] = $this->prepare_response_for_collection( $item );
112
+		foreach ($reports as $report) {
113
+			$item   = $this->prepare_item_for_response((object) $report, $request);
114
+			$data[] = $this->prepare_response_for_collection($item);
115 115
 		}
116 116
 
117
-		return rest_ensure_response( $data );
117
+		return rest_ensure_response($data);
118 118
 	}
119 119
 
120 120
 	/**
@@ -125,28 +125,28 @@  discard block
 block discarded – undo
125 125
 	 * @param WP_REST_Request $request Request object.
126 126
 	 * @return WP_REST_Response $response Response data.
127 127
 	 */
128
-	public function prepare_item_for_response( $report, $request ) {
128
+	public function prepare_item_for_response($report, $request) {
129 129
 		$data = array(
130 130
 			'slug'        => $report->slug,
131 131
 			'description' => $report->description,
132 132
 		);
133 133
 
134
-		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
135
-		$data = $this->add_additional_fields_to_object( $data, $request );
136
-		$data = $this->filter_response_by_context( $data, $context );
134
+		$context = !empty($request['context']) ? $request['context'] : 'view';
135
+		$data = $this->add_additional_fields_to_object($data, $request);
136
+		$data = $this->filter_response_by_context($data, $context);
137 137
 
138 138
 		// Wrap the data in a response object.
139
-		$response = rest_ensure_response( $data );
140
-		$response->add_links( array(
139
+		$response = rest_ensure_response($data);
140
+		$response->add_links(array(
141 141
 			'self' => array(
142
-				'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $report->slug ) ),
142
+				'href' => rest_url(sprintf('/%s/%s/%s', $this->namespace, $this->rest_base, $report->slug)),
143 143
 			),
144 144
 			'collection' => array(
145
-				'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
145
+				'href' => rest_url(sprintf('%s/%s', $this->namespace, $this->rest_base)),
146 146
 			),
147
-		) );
147
+		));
148 148
 
149
-		return apply_filters( 'getpaid_rest_prepare_report', $response, $report, $request );
149
+		return apply_filters('getpaid_rest_prepare_report', $response, $report, $request);
150 150
 	}
151 151
 
152 152
 	/**
@@ -162,21 +162,21 @@  discard block
 block discarded – undo
162 162
 			'type'       => 'object',
163 163
 			'properties' => array(
164 164
 				'slug' => array(
165
-					'description' => __( 'An alphanumeric identifier for the resource.', 'invoicing' ),
165
+					'description' => __('An alphanumeric identifier for the resource.', 'invoicing'),
166 166
 					'type'        => 'string',
167
-					'context'     => array( 'view' ),
167
+					'context'     => array('view'),
168 168
 					'readonly'    => true,
169 169
 				),
170 170
 				'description' => array(
171
-					'description' => __( 'A human-readable description of the resource.', 'invoicing' ),
171
+					'description' => __('A human-readable description of the resource.', 'invoicing'),
172 172
 					'type'        => 'string',
173
-					'context'     => array( 'view' ),
173
+					'context'     => array('view'),
174 174
 					'readonly'    => true,
175 175
 				),
176 176
 			),
177 177
 		);
178 178
 
179
-		return $this->add_additional_fields_schema( $schema );
179
+		return $this->add_additional_fields_schema($schema);
180 180
 	}
181 181
 
182 182
 	/**
@@ -187,7 +187,7 @@  discard block
 block discarded – undo
187 187
 	 */
188 188
 	public function get_collection_params() {
189 189
 		return array(
190
-			'context' => $this->get_context_param( array( 'default' => 'view' ) ),
190
+			'context' => $this->get_context_param(array('default' => 'view')),
191 191
 		);
192 192
 	}
193 193
 }
Please login to merge, or discard this patch.
includes/reports/class-getpaid-reports-report-earnings.php 2 patches
Indentation   +133 added lines, -133 removed lines patch added patch discarded remove patch
@@ -12,43 +12,43 @@  discard block
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Reports_Report_Earnings extends GetPaid_Reports_Abstract_Report {
14 14
 
15
-	/**
16
-	 * Retrieves the earning graphs.
17
-	 *
18
-	 */
19
-	public function get_graphs() {
15
+    /**
16
+     * Retrieves the earning graphs.
17
+     *
18
+     */
19
+    public function get_graphs() {
20 20
 
21
-		$graphs = array(
21
+        $graphs = array(
22 22
 
23 23
             'total'      => __( 'Earnings', 'invoicing' ),
24 24
             'discount'   => __( 'Discount', 'invoicing' ),
25
-			'fees_total' => __( 'Fees', 'invoicing' ),
26
-			'tax'        => __( 'Tax', 'invoicing' ),
25
+            'fees_total' => __( 'Fees', 'invoicing' ),
26
+            'tax'        => __( 'Tax', 'invoicing' ),
27 27
 
28
-		);
28
+        );
29 29
 
30
-		return apply_filters( 'getpaid_earning_graphs', $graphs );
30
+        return apply_filters( 'getpaid_earning_graphs', $graphs );
31 31
 
32
-	}
32
+    }
33 33
 
34
-	/**
35
-	 * Retrieves the earning sql.
36
-	 *
37
-	 */
38
-	public function get_sql( $range ) {
39
-		global $wpdb;
34
+    /**
35
+     * Retrieves the earning sql.
36
+     *
37
+     */
38
+    public function get_sql( $range ) {
39
+        global $wpdb;
40 40
 
41
-		$table      = $wpdb->prefix . 'getpaid_invoices';
42
-		$clauses    = $this->get_range_sql( $range );
43
-		$graphs     = array_keys( $this->get_graphs() );
44
-		$graphs_sql = array();
41
+        $table      = $wpdb->prefix . 'getpaid_invoices';
42
+        $clauses    = $this->get_range_sql( $range );
43
+        $graphs     = array_keys( $this->get_graphs() );
44
+        $graphs_sql = array();
45 45
 
46
-		foreach ( $graphs as $graph ) {
47
-			$graphs_sql[] = "SUM( meta.$graph ) AS $graph";
48
-		}
46
+        foreach ( $graphs as $graph ) {
47
+            $graphs_sql[] = "SUM( meta.$graph ) AS $graph";
48
+        }
49 49
 
50
-		$graphs_sql = implode( ', ', $graphs_sql );
51
-		$sql        = "SELECT {$clauses[0]} AS completed_date, $graphs_sql
50
+        $graphs_sql = implode( ', ', $graphs_sql );
51
+        $sql        = "SELECT {$clauses[0]} AS completed_date, $graphs_sql
52 52
             FROM $wpdb->posts
53 53
             LEFT JOIN $table as meta ON meta.post_id = $wpdb->posts.ID
54 54
             WHERE meta.post_id IS NOT NULL
@@ -58,94 +58,94 @@  discard block
 block discarded – undo
58 58
             GROUP BY {$clauses[0]}
59 59
         ";
60 60
 
61
-		return apply_filters( 'getpaid_earning_graphs_get_sql', $sql, $range );
62
-
63
-	}
64
-
65
-	/**
66
-	 * Prepares the report stats.
67
-	 *
68
-	 */
69
-	public function prepare_stats() {
70
-		global $wpdb;
71
-		$this->stats = $wpdb->get_results( $this->get_sql( $this->get_range() ) );
72
-	}
73
-
74
-	/**
75
-	 * Retrieves report labels.
76
-	 *
77
-	 */
78
-	public function get_labels( $range ) {
79
-
80
-		$labels = array(
81
-			'today'     => $this->get_hours_in_a_day(),
82
-			'yesterday' => $this->get_hours_in_a_day(),
83
-			'7_days'    => $this->get_days_in_period( 7 ),
84
-			'30_days'   => $this->get_days_in_period( 30 ),
85
-			'60_days'   => $this->get_days_in_period( 60 ),
86
-			'90_days'   => $this->get_weeks_in_period( 90 ),
87
-			'180_days'  => $this->get_weeks_in_period( 180 ),
88
-			'360_days'  => $this->get_weeks_in_period( 360 ),
89
-		);
90
-
91
-		$label = isset( $labels[ $range ] ) ? $labels[ $range ] : $labels[ '7_days' ];
92
-		return apply_filters( 'getpaid_earning_graphs_get_labels', $label, $range );
93
-	}
94
-
95
-	/**
96
-	 * Retrieves report datasets.
97
-	 *
98
-	 */
99
-	public function get_datasets( $labels ) {
100
-
101
-		$datasets = array();
102
-
103
-		foreach ( $this->get_graphs() as $key => $label ) {
104
-			$datasets[ $key ] = array(
105
-				'label' => $label,
106
-				'data'  => $this->get_data( $key, $labels )
107
-			);
108
-		}
109
-
110
-		return apply_filters( 'getpaid_earning_graphs_get_datasets', $datasets, $labels );
111
-	}
112
-
113
-	/**
114
-	 * Retrieves report data.
115
-	 *
116
-	 */
117
-	public function get_data( $key, $labels ) {
118
-
119
-		$data     = wp_list_pluck( $this->stats, $key, 'completed_date' );
120
-		$prepared = array();
121
-
122
-		foreach ( $labels as $label ) {
123
-
124
-			$value = 0;
125
-			if ( isset( $data[ $label ] ) ) {
126
-				$value = wpinv_round_amount( wpinv_sanitize_amount( $data[ $label ] ) );
127
-			}
128
-
129
-			$prepared[] = $value;
130
-		}
131
-
132
-		return apply_filters( 'getpaid_earning_graphs_get_data', $prepared, $key, $labels );
133
-
134
-	}
135
-
136
-	/**
137
-	 * Displays the report card.
138
-	 *
139
-	 */
140
-	public function display() {
141
-
142
-		$labels     = $this->get_labels( $this->get_range() );
143
-		$chart_data = array(
144
-			'labels'   => array_values( $labels ),
145
-			'datasets' => $this->get_datasets( array_keys( $labels ) ),
146
-		);
147
-
148
-		?>
61
+        return apply_filters( 'getpaid_earning_graphs_get_sql', $sql, $range );
62
+
63
+    }
64
+
65
+    /**
66
+     * Prepares the report stats.
67
+     *
68
+     */
69
+    public function prepare_stats() {
70
+        global $wpdb;
71
+        $this->stats = $wpdb->get_results( $this->get_sql( $this->get_range() ) );
72
+    }
73
+
74
+    /**
75
+     * Retrieves report labels.
76
+     *
77
+     */
78
+    public function get_labels( $range ) {
79
+
80
+        $labels = array(
81
+            'today'     => $this->get_hours_in_a_day(),
82
+            'yesterday' => $this->get_hours_in_a_day(),
83
+            '7_days'    => $this->get_days_in_period( 7 ),
84
+            '30_days'   => $this->get_days_in_period( 30 ),
85
+            '60_days'   => $this->get_days_in_period( 60 ),
86
+            '90_days'   => $this->get_weeks_in_period( 90 ),
87
+            '180_days'  => $this->get_weeks_in_period( 180 ),
88
+            '360_days'  => $this->get_weeks_in_period( 360 ),
89
+        );
90
+
91
+        $label = isset( $labels[ $range ] ) ? $labels[ $range ] : $labels[ '7_days' ];
92
+        return apply_filters( 'getpaid_earning_graphs_get_labels', $label, $range );
93
+    }
94
+
95
+    /**
96
+     * Retrieves report datasets.
97
+     *
98
+     */
99
+    public function get_datasets( $labels ) {
100
+
101
+        $datasets = array();
102
+
103
+        foreach ( $this->get_graphs() as $key => $label ) {
104
+            $datasets[ $key ] = array(
105
+                'label' => $label,
106
+                'data'  => $this->get_data( $key, $labels )
107
+            );
108
+        }
109
+
110
+        return apply_filters( 'getpaid_earning_graphs_get_datasets', $datasets, $labels );
111
+    }
112
+
113
+    /**
114
+     * Retrieves report data.
115
+     *
116
+     */
117
+    public function get_data( $key, $labels ) {
118
+
119
+        $data     = wp_list_pluck( $this->stats, $key, 'completed_date' );
120
+        $prepared = array();
121
+
122
+        foreach ( $labels as $label ) {
123
+
124
+            $value = 0;
125
+            if ( isset( $data[ $label ] ) ) {
126
+                $value = wpinv_round_amount( wpinv_sanitize_amount( $data[ $label ] ) );
127
+            }
128
+
129
+            $prepared[] = $value;
130
+        }
131
+
132
+        return apply_filters( 'getpaid_earning_graphs_get_data', $prepared, $key, $labels );
133
+
134
+    }
135
+
136
+    /**
137
+     * Displays the report card.
138
+     *
139
+     */
140
+    public function display() {
141
+
142
+        $labels     = $this->get_labels( $this->get_range() );
143
+        $chart_data = array(
144
+            'labels'   => array_values( $labels ),
145
+            'datasets' => $this->get_datasets( array_keys( $labels ) ),
146
+        );
147
+
148
+        ?>
149 149
 
150 150
 			<?php foreach ( $chart_data['datasets'] as $key => $dataset ) : ?>
151 151
 				<div class="row mb-4">
@@ -165,15 +165,15 @@  discard block
 block discarded – undo
165 165
 
166 166
 		<?php
167 167
 
168
-	}
168
+    }
169 169
 
170
-	/**
171
-	 * Displays the actual report.
172
-	 *
173
-	 */
174
-	public function display_graph( $key, $dataset, $labels ) {
170
+    /**
171
+     * Displays the actual report.
172
+     *
173
+     */
174
+    public function display_graph( $key, $dataset, $labels ) {
175 175
 
176
-		?>
176
+        ?>
177 177
 
178 178
 		<canvas id="getpaid-chartjs-earnings-<?php echo sanitize_key( $key ); ?>"></canvas>
179 179
 
@@ -223,20 +223,20 @@  discard block
 block discarded – undo
223 223
 		</script>
224 224
 
225 225
 		<?php
226
-	}
226
+    }
227 227
 
228
-	/**
229
-	 * Displays the actual report.
230
-	 *
231
-	 */
232
-	public function display_stats() {}
228
+    /**
229
+     * Displays the actual report.
230
+     *
231
+     */
232
+    public function display_stats() {}
233 233
 
234
-	/**
235
-	 * Displays the range selector.
236
-	 *
237
-	 */
238
-	public function display_range_selector() {
234
+    /**
235
+     * Displays the range selector.
236
+     *
237
+     */
238
+    public function display_range_selector() {
239 239
 
240
-	}
240
+    }
241 241
 
242 242
 }
Please login to merge, or discard this patch.
Spacing   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
  *
6 6
  */
7 7
 
8
-defined( 'ABSPATH' ) || exit;
8
+defined('ABSPATH') || exit;
9 9
 
10 10
 /**
11 11
  * GetPaid_Reports_Report_Earnings Class.
@@ -20,14 +20,14 @@  discard block
 block discarded – undo
20 20
 
21 21
 		$graphs = array(
22 22
 
23
-            'total'      => __( 'Earnings', 'invoicing' ),
24
-            'discount'   => __( 'Discount', 'invoicing' ),
25
-			'fees_total' => __( 'Fees', 'invoicing' ),
26
-			'tax'        => __( 'Tax', 'invoicing' ),
23
+            'total'      => __('Earnings', 'invoicing'),
24
+            'discount'   => __('Discount', 'invoicing'),
25
+			'fees_total' => __('Fees', 'invoicing'),
26
+			'tax'        => __('Tax', 'invoicing'),
27 27
 
28 28
 		);
29 29
 
30
-		return apply_filters( 'getpaid_earning_graphs', $graphs );
30
+		return apply_filters('getpaid_earning_graphs', $graphs);
31 31
 
32 32
 	}
33 33
 
@@ -35,19 +35,19 @@  discard block
 block discarded – undo
35 35
 	 * Retrieves the earning sql.
36 36
 	 *
37 37
 	 */
38
-	public function get_sql( $range ) {
38
+	public function get_sql($range) {
39 39
 		global $wpdb;
40 40
 
41 41
 		$table      = $wpdb->prefix . 'getpaid_invoices';
42
-		$clauses    = $this->get_range_sql( $range );
43
-		$graphs     = array_keys( $this->get_graphs() );
42
+		$clauses    = $this->get_range_sql($range);
43
+		$graphs     = array_keys($this->get_graphs());
44 44
 		$graphs_sql = array();
45 45
 
46
-		foreach ( $graphs as $graph ) {
46
+		foreach ($graphs as $graph) {
47 47
 			$graphs_sql[] = "SUM( meta.$graph ) AS $graph";
48 48
 		}
49 49
 
50
-		$graphs_sql = implode( ', ', $graphs_sql );
50
+		$graphs_sql = implode(', ', $graphs_sql);
51 51
 		$sql        = "SELECT {$clauses[0]} AS completed_date, $graphs_sql
52 52
             FROM $wpdb->posts
53 53
             LEFT JOIN $table as meta ON meta.post_id = $wpdb->posts.ID
@@ -58,7 +58,7 @@  discard block
 block discarded – undo
58 58
             GROUP BY {$clauses[0]}
59 59
         ";
60 60
 
61
-		return apply_filters( 'getpaid_earning_graphs_get_sql', $sql, $range );
61
+		return apply_filters('getpaid_earning_graphs_get_sql', $sql, $range);
62 62
 
63 63
 	}
64 64
 
@@ -68,68 +68,68 @@  discard block
 block discarded – undo
68 68
 	 */
69 69
 	public function prepare_stats() {
70 70
 		global $wpdb;
71
-		$this->stats = $wpdb->get_results( $this->get_sql( $this->get_range() ) );
71
+		$this->stats = $wpdb->get_results($this->get_sql($this->get_range()));
72 72
 	}
73 73
 
74 74
 	/**
75 75
 	 * Retrieves report labels.
76 76
 	 *
77 77
 	 */
78
-	public function get_labels( $range ) {
78
+	public function get_labels($range) {
79 79
 
80 80
 		$labels = array(
81 81
 			'today'     => $this->get_hours_in_a_day(),
82 82
 			'yesterday' => $this->get_hours_in_a_day(),
83
-			'7_days'    => $this->get_days_in_period( 7 ),
84
-			'30_days'   => $this->get_days_in_period( 30 ),
85
-			'60_days'   => $this->get_days_in_period( 60 ),
86
-			'90_days'   => $this->get_weeks_in_period( 90 ),
87
-			'180_days'  => $this->get_weeks_in_period( 180 ),
88
-			'360_days'  => $this->get_weeks_in_period( 360 ),
83
+			'7_days'    => $this->get_days_in_period(7),
84
+			'30_days'   => $this->get_days_in_period(30),
85
+			'60_days'   => $this->get_days_in_period(60),
86
+			'90_days'   => $this->get_weeks_in_period(90),
87
+			'180_days'  => $this->get_weeks_in_period(180),
88
+			'360_days'  => $this->get_weeks_in_period(360),
89 89
 		);
90 90
 
91
-		$label = isset( $labels[ $range ] ) ? $labels[ $range ] : $labels[ '7_days' ];
92
-		return apply_filters( 'getpaid_earning_graphs_get_labels', $label, $range );
91
+		$label = isset($labels[$range]) ? $labels[$range] : $labels['7_days'];
92
+		return apply_filters('getpaid_earning_graphs_get_labels', $label, $range);
93 93
 	}
94 94
 
95 95
 	/**
96 96
 	 * Retrieves report datasets.
97 97
 	 *
98 98
 	 */
99
-	public function get_datasets( $labels ) {
99
+	public function get_datasets($labels) {
100 100
 
101 101
 		$datasets = array();
102 102
 
103
-		foreach ( $this->get_graphs() as $key => $label ) {
104
-			$datasets[ $key ] = array(
103
+		foreach ($this->get_graphs() as $key => $label) {
104
+			$datasets[$key] = array(
105 105
 				'label' => $label,
106
-				'data'  => $this->get_data( $key, $labels )
106
+				'data'  => $this->get_data($key, $labels)
107 107
 			);
108 108
 		}
109 109
 
110
-		return apply_filters( 'getpaid_earning_graphs_get_datasets', $datasets, $labels );
110
+		return apply_filters('getpaid_earning_graphs_get_datasets', $datasets, $labels);
111 111
 	}
112 112
 
113 113
 	/**
114 114
 	 * Retrieves report data.
115 115
 	 *
116 116
 	 */
117
-	public function get_data( $key, $labels ) {
117
+	public function get_data($key, $labels) {
118 118
 
119
-		$data     = wp_list_pluck( $this->stats, $key, 'completed_date' );
119
+		$data     = wp_list_pluck($this->stats, $key, 'completed_date');
120 120
 		$prepared = array();
121 121
 
122
-		foreach ( $labels as $label ) {
122
+		foreach ($labels as $label) {
123 123
 
124 124
 			$value = 0;
125
-			if ( isset( $data[ $label ] ) ) {
126
-				$value = wpinv_round_amount( wpinv_sanitize_amount( $data[ $label ] ) );
125
+			if (isset($data[$label])) {
126
+				$value = wpinv_round_amount(wpinv_sanitize_amount($data[$label]));
127 127
 			}
128 128
 
129 129
 			$prepared[] = $value;
130 130
 		}
131 131
 
132
-		return apply_filters( 'getpaid_earning_graphs_get_data', $prepared, $key, $labels );
132
+		return apply_filters('getpaid_earning_graphs_get_data', $prepared, $key, $labels);
133 133
 
134 134
 	}
135 135
 
@@ -139,15 +139,15 @@  discard block
 block discarded – undo
139 139
 	 */
140 140
 	public function display() {
141 141
 
142
-		$labels     = $this->get_labels( $this->get_range() );
142
+		$labels     = $this->get_labels($this->get_range());
143 143
 		$chart_data = array(
144
-			'labels'   => array_values( $labels ),
145
-			'datasets' => $this->get_datasets( array_keys( $labels ) ),
144
+			'labels'   => array_values($labels),
145
+			'datasets' => $this->get_datasets(array_keys($labels)),
146 146
 		);
147 147
 
148 148
 		?>
149 149
 
150
-			<?php foreach ( $chart_data['datasets'] as $key => $dataset ) : ?>
150
+			<?php foreach ($chart_data['datasets'] as $key => $dataset) : ?>
151 151
 				<div class="row mb-4">
152 152
 					<div class="col-12">
153 153
 						<div class="card m-0 p-0" style="max-width:100%">
@@ -156,7 +156,7 @@  discard block
 block discarded – undo
156 156
 								<?php $this->display_range_selector(); ?>
157 157
 							</div>
158 158
 							<div class="card-body">
159
-								<?php $this->display_graph( $key, $dataset, $chart_data['labels'] ); ?>
159
+								<?php $this->display_graph($key, $dataset, $chart_data['labels']); ?>
160 160
 							</div>
161 161
 						</div>
162 162
 					</div>
@@ -171,26 +171,26 @@  discard block
 block discarded – undo
171 171
 	 * Displays the actual report.
172 172
 	 *
173 173
 	 */
174
-	public function display_graph( $key, $dataset, $labels ) {
174
+	public function display_graph($key, $dataset, $labels) {
175 175
 
176 176
 		?>
177 177
 
178
-		<canvas id="getpaid-chartjs-earnings-<?php echo sanitize_key( $key ); ?>"></canvas>
178
+		<canvas id="getpaid-chartjs-earnings-<?php echo sanitize_key($key); ?>"></canvas>
179 179
 
180 180
 		<script>
181 181
 			window.addEventListener( 'DOMContentLoaded', function() {
182 182
 
183
-				var ctx = document.getElementById( 'getpaid-chartjs-earnings-<?php echo sanitize_key( $key ); ?>' ).getContext('2d');
183
+				var ctx = document.getElementById( 'getpaid-chartjs-earnings-<?php echo sanitize_key($key); ?>' ).getContext('2d');
184 184
 				new Chart(
185 185
 					ctx,
186 186
 					{
187 187
 						type: 'line',
188 188
 						data: {
189
-							'labels': <?php echo wp_json_encode( $labels ); ?>,
189
+							'labels': <?php echo wp_json_encode($labels); ?>,
190 190
 							'datasets': [
191 191
 								{
192
-									label: '<?php echo esc_attr( $dataset['label'] ); ?>',
193
-									data: <?php echo wp_json_encode( $dataset['data'] ); ?>,
192
+									label: '<?php echo esc_attr($dataset['label']); ?>',
193
+									data: <?php echo wp_json_encode($dataset['data']); ?>,
194 194
 									backgroundColor: 'rgba(54, 162, 235, 0.1)',
195 195
 									borderColor: 'rgb(54, 162, 235)',
196 196
 									borderWidth: 4,
Please login to merge, or discard this patch.
includes/api/class-getpaid-rest-date-based-controller.php 2 patches
Indentation   +573 added lines, -573 removed lines patch added patch discarded remove patch
@@ -16,577 +16,577 @@
 block discarded – undo
16 16
  */
17 17
 class GetPaid_REST_Date_Based_Controller extends GetPaid_REST_Controller {
18 18
 
19
-	/**
20
-	 * Group response items by day or month.
21
-	 *
22
-	 * @var string
23
-	 */
24
-	public $groupby = 'day';
25
-
26
-	/**
27
-	 * Returns an array with arguments to request the previous report.
28
-	 *
29
-	 * @var array
30
-	 */
31
-	public $previous_range = array();
32
-
33
-	/**
34
-	 * The period interval.
35
-	 *
36
-	 * @var int
37
-	 */
38
-	public $interval;
39
-
40
-	/**
41
-	 * Retrieves the before and after dates.
42
-	 *
43
-	 * @param WP_REST_Request $request Request object.
44
-	 * @return array The appropriate date range.
45
-	 */
46
-	public function get_date_range( $request ) {
47
-
48
-		// If not supported, assume all time.
49
-		if ( ! in_array( $request['period'], array( 'custom', 'today', 'yesterday', 'week', 'last_week', '7_days', '30_days', '60_days', '90_days', '180_days', 'month', 'last_month', 'quarter', 'last_quarter', 'year', 'last_year' ) ) ) {
50
-			$request['period'] = '7_days';
51
-		}
52
-
53
-		$date_range = call_user_func( array( $this, 'get_' . $request['period'] . '_date_range' ), $request );
54
-		$this->prepare_interval( $date_range );
55
-
56
-		return $date_range;
57
-
58
-	}
59
-
60
-	/**
61
-	 * Groups by month or days.
62
-	 *
63
-	 * @param array $range Date range.
64
-	 * @return array The appropriate date range.
65
-	 */
66
-	public function prepare_interval( $range ) {
67
-
68
-		$before = strtotime( $range['before'] ) - DAY_IN_SECONDS;
69
-		$after  = strtotime( $range['after'] ) + DAY_IN_SECONDS;
70
-		if ( 'day' === $this->groupby ) {
71
-			$difference     = max( DAY_IN_SECONDS, ( DAY_IN_SECONDS + $before - $after ) ); // Prevent division by 0;
72
-			$this->interval = absint( ceil( max( 1, $difference / DAY_IN_SECONDS ) ) );
73
-			return;
74
-		}
75
-
76
-		$this->interval = 0;
77
-		$min_date       = strtotime( date( 'Y-m-01', $after ) );
78
-
79
-		while ( $min_date <= $before ) {
80
-			$this->interval ++;
81
-			$min_date = strtotime( '+1 MONTH', $min_date );
82
-		}
83
-
84
-		$this->interval = max( 1, $this->interval );
85
-
86
-	}
87
-
88
-	/**
89
-	 * Retrieves a custom date range.
90
-	 *
91
-	 * @param WP_REST_Request $request Request object.
92
-	 * @return array The appropriate date range.
93
-	 */
94
-	public function get_custom_date_range( $request ) {
95
-
96
-		$after  = max( strtotime( '-20 years' ), strtotime( sanitize_text_field( $request['after'] ) ) );
97
-		$before = strtotime( '+1 day', current_time( 'timestamp' ) );
98
-
99
-		if ( ! empty( $request['before'] ) ) {
100
-			$before  = min( $before, strtotime( sanitize_text_field( $request['before'] ) ) );
101
-		}
102
-
103
-		// 3 months max for day view
104
-		if ( floor( ( $before - $after ) / MONTH_IN_SECONDS ) > 3 ) {
105
-			$this->groupby = 'month';
106
-		}
107
-
108
-		// Set the previous date range.
109
-		$difference           = $before - $after;
110
-		$this->previous_range = array(
111
-			'period' => 'custom',
112
-			'before' => date( 'Y-m-d', $before - $difference ),
113
-			'after'  => date( 'Y-m-d', $after - $difference ),
114
-		);
115
-
116
-		// Generate the report.
117
-		return array(
118
-			'before' => date( 'Y-m-d', $before ),
119
-			'after' => date( 'Y-m-d', $after ),
120
-		);
121
-
122
-	}
123
-
124
-	/**
125
-	 * Retrieves todays date range.
126
-	 *
127
-	 * @return array The appropriate date range.
128
-	 */
129
-	public function get_today_date_range() {
130
-
131
-		// Set the previous date range.
132
-		$this->previous_range = array(
133
-			'period' => 'yesterday',
134
-		);
135
-
136
-		// Generate the report.
137
-		return array(
138
-			'before' => date( 'Y-m-d', strtotime( '+1 day', current_time( 'timestamp' ) ) ),
139
-			'after'  => date( 'Y-m-d', strtotime( '-1 day', current_time( 'timestamp' ) ) ),
140
-		);
141
-
142
-	}
143
-
144
-	/**
145
-	 * Retrieves yesterdays date range.
146
-	 *
147
-	 * @return array The appropriate date range.
148
-	 */
149
-	public function get_yesterday_date_range() {
150
-
151
-		// Set the previous date range.
152
-		$this->previous_range = array(
153
-			'period' => 'custom',
154
-			'before' => date( 'Y-m-d', strtotime( '-1 day', current_time( 'timestamp' ) ) ),
155
-			'after'  => date( 'Y-m-d', strtotime( '-3 days', current_time( 'timestamp' ) ) ),
156
-		);
157
-
158
-		// Generate the report.
159
-		return array(
160
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
161
-			'after'  => date( 'Y-m-d', strtotime( '-2 days', current_time( 'timestamp' ) ) ),
162
-		);
163
-
164
-	}
165
-
166
-	/**
167
-	 * Retrieves this week's date range.
168
-	 *
169
-	 * @return array The appropriate date range.
170
-	 */
171
-	public function get_week_date_range() {
172
-
173
-		// Set the previous date range.
174
-		$this->previous_range = array(
175
-			'period' => 'last_week',
176
-		);
177
-
178
-		// Generate the report.
179
-		return array(
180
-			'before' => date( 'Y-m-d', strtotime( 'sunday last week', current_time( 'timestamp' )  ) + 8 * DAY_IN_SECONDS ),
181
-			'after'  => date( 'Y-m-d', strtotime( 'sunday last week', current_time( 'timestamp' )  ) ),
182
-		);
183
-
184
-	}
185
-
186
-	/**
187
-	 * Retrieves last week's date range.
188
-	 *
189
-	 * @return array The appropriate date range.
190
-	 */
191
-	public function get_last_week_date_range() {
192
-
193
-		// Set the previous date range.
194
-		$this->previous_range = array(
195
-			'period' => 'custom',
196
-			'before' => date( 'Y-m-d', strtotime( 'monday last week', current_time( 'timestamp' )  ) ),
197
-			'after'  => date( 'Y-m-d', strtotime( 'monday last week', current_time( 'timestamp' )  ) - 8 * DAY_IN_SECONDS ),
198
-		);
199
-
200
-		// Generate the report.
201
-		return array(
202
-			'before' => date( 'Y-m-d', strtotime( 'monday this week', current_time( 'timestamp' )  ) ),
203
-			'after'  => date( 'Y-m-d', strtotime( 'monday last week', current_time( 'timestamp' )  ) - DAY_IN_SECONDS ),
204
-		);
205
-
206
-	}
207
-
208
-	/**
209
-	 * Retrieves last 7 days date range.
210
-	 *
211
-	 * @return array The appropriate date range.
212
-	 */
213
-	public function get_7_days_date_range() {
214
-
215
-		// Set the previous date range.
216
-		$this->previous_range = array(
217
-			'period' => 'custom',
218
-			'before' => date( 'Y-m-d', strtotime( '-7 days', current_time( 'timestamp' ) ) ),
219
-			'after'  => date( 'Y-m-d', strtotime( '-15 days', current_time( 'timestamp' ) ) ),
220
-		);
221
-
222
-		// Generate the report.
223
-		return array(
224
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
225
-			'after'  => date( 'Y-m-d', strtotime( '-8 days', current_time( 'timestamp' ) ) ),
226
-		);
227
-
228
-	}
229
-
230
-	/**
231
-	 * Retrieves last 30 days date range.
232
-	 *
233
-	 * @return array The appropriate date range.
234
-	 */
235
-	public function get_30_days_date_range() {
236
-
237
-		// Set the previous date range.
238
-		$this->previous_range = array(
239
-			'period' => 'custom',
240
-			'before' => date( 'Y-m-d', strtotime( '-30 days', current_time( 'timestamp' ) ) ),
241
-			'after'  => date( 'Y-m-d', strtotime( '-61 days', current_time( 'timestamp' ) ) ),
242
-		);
243
-
244
-		// Generate the report.
245
-		return array(
246
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
247
-			'after'  => date( 'Y-m-d', strtotime( '-31 days', current_time( 'timestamp' ) ) ),
248
-		);
249
-
250
-	}
251
-
252
-	/**
253
-	 * Retrieves last 90 days date range.
254
-	 *
255
-	 * @return array The appropriate date range.
256
-	 */
257
-	public function get_90_days_date_range() {
258
-
259
-		$this->groupby = 'month';
260
-
261
-		// Set the previous date range.
262
-		$this->previous_range = array(
263
-			'period' => 'custom',
264
-			'before' => date( 'Y-m-d', strtotime( '-90 days', current_time( 'timestamp' ) ) ),
265
-			'after'  => date( 'Y-m-d', strtotime( '-181 days', current_time( 'timestamp' ) ) ),
266
-		);
267
-
268
-		// Generate the report.
269
-		return array(
270
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
271
-			'after'  => date( 'Y-m-d', strtotime( '-91 days', current_time( 'timestamp' ) ) ),
272
-		);
273
-
274
-	}
275
-
276
-	/**
277
-	 * Retrieves last 180 days date range.
278
-	 *
279
-	 * @return array The appropriate date range.
280
-	 */
281
-	public function get_180_days_date_range() {
282
-
283
-		$this->groupby = 'month';
284
-
285
-		// Set the previous date range.
286
-		$this->previous_range = array(
287
-			'period' => 'custom',
288
-			'before' => date( 'Y-m-d', strtotime( '-180 days', current_time( 'timestamp' ) ) ),
289
-			'after'  => date( 'Y-m-d', strtotime( '-361 days', current_time( 'timestamp' ) ) ),
290
-		);
291
-
292
-		// Generate the report.
293
-		return array(
294
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
295
-			'after'  => date( 'Y-m-d', strtotime( '-181 days', current_time( 'timestamp' ) ) ),
296
-		);
297
-
298
-	}
299
-
300
-	/**
301
-	 * Retrieves last 60 days date range.
302
-	 *
303
-	 * @return array The appropriate date range.
304
-	 */
305
-	public function get_60_days_date_range() {
306
-
307
-		// Set the previous date range.
308
-		$this->previous_range = array(
309
-			'period' => 'custom',
310
-			'before' => date( 'Y-m-d', strtotime( '-60 days', current_time( 'timestamp' ) ) ),
311
-			'after'  => date( 'Y-m-d', strtotime( '-121 days', current_time( 'timestamp' ) ) ),
312
-		);
313
-
314
-		// Generate the report.
315
-		return array(
316
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
317
-			'after'  => date( 'Y-m-d', strtotime( '-61 days', current_time( 'timestamp' ) ) ),
318
-		);
319
-
320
-	}
321
-
322
-	/**
323
-	 * Retrieves this month date range.
324
-	 *
325
-	 * @return array The appropriate date range.
326
-	 */
327
-	public function get_month_date_range() {
328
-
329
-		// Set the previous date range.
330
-		$this->previous_range = array(
331
-			'period' => 'last_month',
332
-		);
333
-
334
-		// Generate the report.
335
-		return array(
336
-			'before' => date( 'Y-m-01', strtotime( 'next month', current_time( 'timestamp' ) ) ),
337
-			'after'  => date( 'Y-m-t', strtotime( 'last month', current_time( 'timestamp' ) ) ),
338
-		);
339
-
340
-	}
341
-
342
-	/**
343
-	 * Retrieves last month's date range.
344
-	 *
345
-	 * @return array The appropriate date range.
346
-	 */
347
-	public function get_last_month_date_range() {
348
-
349
-		// Set the previous date range.
350
-		$this->previous_range = array(
351
-			'period' => 'custom',
352
-			'before' => date( 'Y-m-1', strtotime( 'last month', current_time( 'timestamp' ) ) ),
353
-			'after'  => date( 'Y-m-t', strtotime( "-3 months", current_time( 'timestamp' ) ) ),
354
-		);
355
-
356
-		// Generate the report.
357
-		return array(
358
-			'before' => date( 'Y-m-1', current_time( 'timestamp' ) ),
359
-			'after'  => date( 'Y-m-t', strtotime( "-2 months", current_time( 'timestamp' ) ) ),
360
-		);
361
-
362
-	}
363
-
364
-	/**
365
-	 * Retrieves this quarter date range.
366
-	 *
367
-	 * @return array The available quarters.
368
-	 */
369
-	public function get_quarters() {
370
-
371
-		$last_year = (int) date('Y') - 1;
372
-		$next_year = (int) date('Y') + 1;
373
-		$year      = (int) date('Y');
374
-		return array(
375
-
376
-			array(
377
-				'after'  => "$last_year-06-30",
378
-				'before' => "$last_year-10-01",
379
-			),
380
-
381
-			array(
382
-				'before' => "$year-01-01",
383
-				'after'  => "$last_year-09-30",
384
-			),
385
-
386
-			array(
387
-				'before' => "$year-04-01",
388
-				'after'  => "$last_year-12-31",
389
-			),
390
-
391
-			array(
392
-				'before' => "$year-07-01",
393
-				'after'  => "$year-03-31",
394
-			),
395
-
396
-			array(
397
-				'after'  => "$year-06-30",
398
-				'before' => "$year-10-01",
399
-			),
400
-
401
-			array(
402
-				'before' => "$next_year-01-01",
403
-				'after'  => "$year-09-30",
404
-			)
405
-
406
-		);
407
-
408
-	}
409
-
410
-	/**
411
-	 * Retrieves the current quater.
412
-	 *
413
-	 * @return int The current quarter.
414
-	 */
415
-	public function get_quarter() {
416
-
417
-		$month    = (int) date( 'n', current_time( 'timestamp' ) );
418
-		$quarters = array( 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4 );
419
-		return $quarters[ $month - 1 ];
420
-
421
-	}
422
-
423
-	/**
424
-	 * Retrieves this quarter date range.
425
-	 *
426
-	 * @return array The appropriate date range.
427
-	 */
428
-	public function get_quarter_date_range() {
429
-
430
-		// Set the previous date range.
431
-		$this->previous_range = array(
432
-			'period' => 'last_quarter',
433
-		);
434
-
435
-		// Generate the report.
436
-		$quarters = $this->get_quarters();
437
-		return $quarters[ $this->get_quarter() + 1 ];
438
-
439
-	}
440
-
441
-	/**
442
-	 * Retrieves last quarter's date range.
443
-	 *
444
-	 * @return array The appropriate date range.
445
-	 */
446
-	public function get_last_quarter_date_range() {
447
-
448
-		$quarters = $this->get_quarters();
449
-		$quarter  = $this->get_quarter();
450
-
451
-		// Set the previous date range.
452
-		$this->previous_range = array_merge(
453
-			$quarters[ $quarter - 1 ],
454
-			array( 'period' => 'custom' )
455
-		);
456
-
457
-		// Generate the report.
458
-		return $quarters[ $quarter ];
459
-
460
-	}
461
-
462
-	/**
463
-	 * Retrieves this year date range.
464
-	 *
465
-	 * @return array The appropriate date range.
466
-	 */
467
-	public function get_year_date_range() {
468
-
469
-		$this->groupby = 'month';
470
-
471
-		// Set the previous date range.
472
-		$this->previous_range = array(
473
-			'period' => 'last_year',
474
-		);
475
-
476
-		// Generate the report.
477
-		return array(
478
-			'before' => date( 'Y-m-d', strtotime( 'next year January 1st', current_time( 'timestamp' ) ) ),
479
-			'after'  => date( 'Y-m-d', strtotime( 'last year December 31st', current_time( 'timestamp' ) ) ),
480
-		);
481
-
482
-	}
483
-
484
-	/**
485
-	 * Retrieves last year date range.
486
-	 *
487
-	 * @return array The appropriate date range.
488
-	 */
489
-	public function get_last_year_date_range() {
490
-
491
-		$this->groupby = 'month';
492
-
493
-		// Set the previous date range.
494
-		$year          = (int) date('Y') - 3;
495
-		$this->previous_range = array(
496
-			'period' => 'custom',
497
-			'before' => date( 'Y-m-d', strtotime( 'first day of january last year', current_time( 'timestamp' ) ) ),
498
-			'after'  => "$year-12-31",
499
-		);
500
-
501
-		// Generate the report.
502
-		$year          = (int) date('Y') - 2;
503
-		return array(
504
-			'after'  => "$year-12-31",
505
-			'before' => date( 'Y-m-d', strtotime( 'first day of january this year', current_time( 'timestamp' ) ) ),
506
-		);
507
-
508
-	}
509
-
510
-	/**
511
-	 * Prepare a the request date for SQL usage.
512
-	 *
513
-	 * @param WP_REST_Request $request Request object.
514
-	 * @param string $date_field The date field.
515
-	 * @return string The appropriate SQL.
516
-	 */
517
-	public function get_date_range_sql( $request, $date_field ) {
518
-		global $wpdb;
519
-
520
-		$sql = '1=1';
521
-		$range = $this->get_date_range( $request );
522
-
523
-		if ( ! empty( $range['after'] ) ) {
524
-			$sql .= ' AND ' .  $wpdb->prepare(
525
-				"$date_field > %s",
526
-				$range['after']
527
-			);
528
-		}
529
-
530
-		if ( ! empty( $range['before'] ) ) {
531
-			$sql .= ' AND ' .  $wpdb->prepare(
532
-				"$date_field < %s",
533
-				$range['before']
534
-			);
535
-		}
536
-
537
-		return $sql;
538
-
539
-	}
540
-
541
-	/**
542
-	 * Prepares a group by query.
543
-	 *
544
-	 * @param string $date_field The date field.
545
-	 * @return string The appropriate SQL.
546
-	 */
547
-	public function get_group_by_sql( $date_field ) {
548
-
549
-		if ( 'day' === $this->groupby ) {
550
-			return "YEAR($date_field), MONTH($date_field), DAY($date_field)";
551
-		}
552
-
553
-		return "YEAR($date_field), MONTH($date_field)";
554
-	}
555
-
556
-	/**
557
-	 * Get the query params for collections.
558
-	 *
559
-	 * @return array
560
-	 */
561
-	public function get_collection_params() {
562
-		return array(
563
-			'context' => $this->get_context_param( array( 'default' => 'view' ) ),
564
-			'period' => array(
565
-				'description'       => __( 'Limit to results of a specific period.', 'invoicing' ),
566
-				'type'              => 'string',
567
-				'enum'              => array( 'custom', 'today', 'yesterday', 'week', 'last_week', '7_days', '30_days', '60_days' , '90_days', '180_days', 'month', 'last_month', 'quarter', 'last_quarter', 'year', 'last_year', 'quarter', 'last_quarter' ),
568
-				'validate_callback' => 'rest_validate_request_arg',
569
-				'sanitize_callback' => 'sanitize_text_field',
570
-				'default'           => '7_days',
571
-			),
572
-			'after' => array(
573
-				/* translators: %s: date format */
574
-				'description'       => sprintf( __( 'Limit to results after a specific date, the date needs to be in the %s format.', 'invoicing' ), 'YYYY-MM-DD' ),
575
-				'type'              => 'string',
576
-				'format'            => 'date',
577
-				'validate_callback' => 'rest_validate_request_arg',
578
-				'sanitize_callback' => 'sanitize_text_field',
579
-				'default'           => date( 'Y-m-d', strtotime( '-8 days', current_time( 'timestamp' ) ) ),
580
-			),
581
-			'before' => array(
582
-				/* translators: %s: date format */
583
-				'description'       => sprintf( __( 'Limit to results before a specific date, the date needs to be in the %s format.', 'invoicing' ), 'YYYY-MM-DD' ),
584
-				'type'              => 'string',
585
-				'format'            => 'date',
586
-				'validate_callback' => 'rest_validate_request_arg',
587
-				'sanitize_callback' => 'sanitize_text_field',
588
-				'default'           => date( 'Y-m-d', current_time( 'timestamp' ) ),
589
-			),
590
-		);
591
-	}
19
+    /**
20
+     * Group response items by day or month.
21
+     *
22
+     * @var string
23
+     */
24
+    public $groupby = 'day';
25
+
26
+    /**
27
+     * Returns an array with arguments to request the previous report.
28
+     *
29
+     * @var array
30
+     */
31
+    public $previous_range = array();
32
+
33
+    /**
34
+     * The period interval.
35
+     *
36
+     * @var int
37
+     */
38
+    public $interval;
39
+
40
+    /**
41
+     * Retrieves the before and after dates.
42
+     *
43
+     * @param WP_REST_Request $request Request object.
44
+     * @return array The appropriate date range.
45
+     */
46
+    public function get_date_range( $request ) {
47
+
48
+        // If not supported, assume all time.
49
+        if ( ! in_array( $request['period'], array( 'custom', 'today', 'yesterday', 'week', 'last_week', '7_days', '30_days', '60_days', '90_days', '180_days', 'month', 'last_month', 'quarter', 'last_quarter', 'year', 'last_year' ) ) ) {
50
+            $request['period'] = '7_days';
51
+        }
52
+
53
+        $date_range = call_user_func( array( $this, 'get_' . $request['period'] . '_date_range' ), $request );
54
+        $this->prepare_interval( $date_range );
55
+
56
+        return $date_range;
57
+
58
+    }
59
+
60
+    /**
61
+     * Groups by month or days.
62
+     *
63
+     * @param array $range Date range.
64
+     * @return array The appropriate date range.
65
+     */
66
+    public function prepare_interval( $range ) {
67
+
68
+        $before = strtotime( $range['before'] ) - DAY_IN_SECONDS;
69
+        $after  = strtotime( $range['after'] ) + DAY_IN_SECONDS;
70
+        if ( 'day' === $this->groupby ) {
71
+            $difference     = max( DAY_IN_SECONDS, ( DAY_IN_SECONDS + $before - $after ) ); // Prevent division by 0;
72
+            $this->interval = absint( ceil( max( 1, $difference / DAY_IN_SECONDS ) ) );
73
+            return;
74
+        }
75
+
76
+        $this->interval = 0;
77
+        $min_date       = strtotime( date( 'Y-m-01', $after ) );
78
+
79
+        while ( $min_date <= $before ) {
80
+            $this->interval ++;
81
+            $min_date = strtotime( '+1 MONTH', $min_date );
82
+        }
83
+
84
+        $this->interval = max( 1, $this->interval );
85
+
86
+    }
87
+
88
+    /**
89
+     * Retrieves a custom date range.
90
+     *
91
+     * @param WP_REST_Request $request Request object.
92
+     * @return array The appropriate date range.
93
+     */
94
+    public function get_custom_date_range( $request ) {
95
+
96
+        $after  = max( strtotime( '-20 years' ), strtotime( sanitize_text_field( $request['after'] ) ) );
97
+        $before = strtotime( '+1 day', current_time( 'timestamp' ) );
98
+
99
+        if ( ! empty( $request['before'] ) ) {
100
+            $before  = min( $before, strtotime( sanitize_text_field( $request['before'] ) ) );
101
+        }
102
+
103
+        // 3 months max for day view
104
+        if ( floor( ( $before - $after ) / MONTH_IN_SECONDS ) > 3 ) {
105
+            $this->groupby = 'month';
106
+        }
107
+
108
+        // Set the previous date range.
109
+        $difference           = $before - $after;
110
+        $this->previous_range = array(
111
+            'period' => 'custom',
112
+            'before' => date( 'Y-m-d', $before - $difference ),
113
+            'after'  => date( 'Y-m-d', $after - $difference ),
114
+        );
115
+
116
+        // Generate the report.
117
+        return array(
118
+            'before' => date( 'Y-m-d', $before ),
119
+            'after' => date( 'Y-m-d', $after ),
120
+        );
121
+
122
+    }
123
+
124
+    /**
125
+     * Retrieves todays date range.
126
+     *
127
+     * @return array The appropriate date range.
128
+     */
129
+    public function get_today_date_range() {
130
+
131
+        // Set the previous date range.
132
+        $this->previous_range = array(
133
+            'period' => 'yesterday',
134
+        );
135
+
136
+        // Generate the report.
137
+        return array(
138
+            'before' => date( 'Y-m-d', strtotime( '+1 day', current_time( 'timestamp' ) ) ),
139
+            'after'  => date( 'Y-m-d', strtotime( '-1 day', current_time( 'timestamp' ) ) ),
140
+        );
141
+
142
+    }
143
+
144
+    /**
145
+     * Retrieves yesterdays date range.
146
+     *
147
+     * @return array The appropriate date range.
148
+     */
149
+    public function get_yesterday_date_range() {
150
+
151
+        // Set the previous date range.
152
+        $this->previous_range = array(
153
+            'period' => 'custom',
154
+            'before' => date( 'Y-m-d', strtotime( '-1 day', current_time( 'timestamp' ) ) ),
155
+            'after'  => date( 'Y-m-d', strtotime( '-3 days', current_time( 'timestamp' ) ) ),
156
+        );
157
+
158
+        // Generate the report.
159
+        return array(
160
+            'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
161
+            'after'  => date( 'Y-m-d', strtotime( '-2 days', current_time( 'timestamp' ) ) ),
162
+        );
163
+
164
+    }
165
+
166
+    /**
167
+     * Retrieves this week's date range.
168
+     *
169
+     * @return array The appropriate date range.
170
+     */
171
+    public function get_week_date_range() {
172
+
173
+        // Set the previous date range.
174
+        $this->previous_range = array(
175
+            'period' => 'last_week',
176
+        );
177
+
178
+        // Generate the report.
179
+        return array(
180
+            'before' => date( 'Y-m-d', strtotime( 'sunday last week', current_time( 'timestamp' )  ) + 8 * DAY_IN_SECONDS ),
181
+            'after'  => date( 'Y-m-d', strtotime( 'sunday last week', current_time( 'timestamp' )  ) ),
182
+        );
183
+
184
+    }
185
+
186
+    /**
187
+     * Retrieves last week's date range.
188
+     *
189
+     * @return array The appropriate date range.
190
+     */
191
+    public function get_last_week_date_range() {
192
+
193
+        // Set the previous date range.
194
+        $this->previous_range = array(
195
+            'period' => 'custom',
196
+            'before' => date( 'Y-m-d', strtotime( 'monday last week', current_time( 'timestamp' )  ) ),
197
+            'after'  => date( 'Y-m-d', strtotime( 'monday last week', current_time( 'timestamp' )  ) - 8 * DAY_IN_SECONDS ),
198
+        );
199
+
200
+        // Generate the report.
201
+        return array(
202
+            'before' => date( 'Y-m-d', strtotime( 'monday this week', current_time( 'timestamp' )  ) ),
203
+            'after'  => date( 'Y-m-d', strtotime( 'monday last week', current_time( 'timestamp' )  ) - DAY_IN_SECONDS ),
204
+        );
205
+
206
+    }
207
+
208
+    /**
209
+     * Retrieves last 7 days date range.
210
+     *
211
+     * @return array The appropriate date range.
212
+     */
213
+    public function get_7_days_date_range() {
214
+
215
+        // Set the previous date range.
216
+        $this->previous_range = array(
217
+            'period' => 'custom',
218
+            'before' => date( 'Y-m-d', strtotime( '-7 days', current_time( 'timestamp' ) ) ),
219
+            'after'  => date( 'Y-m-d', strtotime( '-15 days', current_time( 'timestamp' ) ) ),
220
+        );
221
+
222
+        // Generate the report.
223
+        return array(
224
+            'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
225
+            'after'  => date( 'Y-m-d', strtotime( '-8 days', current_time( 'timestamp' ) ) ),
226
+        );
227
+
228
+    }
229
+
230
+    /**
231
+     * Retrieves last 30 days date range.
232
+     *
233
+     * @return array The appropriate date range.
234
+     */
235
+    public function get_30_days_date_range() {
236
+
237
+        // Set the previous date range.
238
+        $this->previous_range = array(
239
+            'period' => 'custom',
240
+            'before' => date( 'Y-m-d', strtotime( '-30 days', current_time( 'timestamp' ) ) ),
241
+            'after'  => date( 'Y-m-d', strtotime( '-61 days', current_time( 'timestamp' ) ) ),
242
+        );
243
+
244
+        // Generate the report.
245
+        return array(
246
+            'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
247
+            'after'  => date( 'Y-m-d', strtotime( '-31 days', current_time( 'timestamp' ) ) ),
248
+        );
249
+
250
+    }
251
+
252
+    /**
253
+     * Retrieves last 90 days date range.
254
+     *
255
+     * @return array The appropriate date range.
256
+     */
257
+    public function get_90_days_date_range() {
258
+
259
+        $this->groupby = 'month';
260
+
261
+        // Set the previous date range.
262
+        $this->previous_range = array(
263
+            'period' => 'custom',
264
+            'before' => date( 'Y-m-d', strtotime( '-90 days', current_time( 'timestamp' ) ) ),
265
+            'after'  => date( 'Y-m-d', strtotime( '-181 days', current_time( 'timestamp' ) ) ),
266
+        );
267
+
268
+        // Generate the report.
269
+        return array(
270
+            'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
271
+            'after'  => date( 'Y-m-d', strtotime( '-91 days', current_time( 'timestamp' ) ) ),
272
+        );
273
+
274
+    }
275
+
276
+    /**
277
+     * Retrieves last 180 days date range.
278
+     *
279
+     * @return array The appropriate date range.
280
+     */
281
+    public function get_180_days_date_range() {
282
+
283
+        $this->groupby = 'month';
284
+
285
+        // Set the previous date range.
286
+        $this->previous_range = array(
287
+            'period' => 'custom',
288
+            'before' => date( 'Y-m-d', strtotime( '-180 days', current_time( 'timestamp' ) ) ),
289
+            'after'  => date( 'Y-m-d', strtotime( '-361 days', current_time( 'timestamp' ) ) ),
290
+        );
291
+
292
+        // Generate the report.
293
+        return array(
294
+            'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
295
+            'after'  => date( 'Y-m-d', strtotime( '-181 days', current_time( 'timestamp' ) ) ),
296
+        );
297
+
298
+    }
299
+
300
+    /**
301
+     * Retrieves last 60 days date range.
302
+     *
303
+     * @return array The appropriate date range.
304
+     */
305
+    public function get_60_days_date_range() {
306
+
307
+        // Set the previous date range.
308
+        $this->previous_range = array(
309
+            'period' => 'custom',
310
+            'before' => date( 'Y-m-d', strtotime( '-60 days', current_time( 'timestamp' ) ) ),
311
+            'after'  => date( 'Y-m-d', strtotime( '-121 days', current_time( 'timestamp' ) ) ),
312
+        );
313
+
314
+        // Generate the report.
315
+        return array(
316
+            'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
317
+            'after'  => date( 'Y-m-d', strtotime( '-61 days', current_time( 'timestamp' ) ) ),
318
+        );
319
+
320
+    }
321
+
322
+    /**
323
+     * Retrieves this month date range.
324
+     *
325
+     * @return array The appropriate date range.
326
+     */
327
+    public function get_month_date_range() {
328
+
329
+        // Set the previous date range.
330
+        $this->previous_range = array(
331
+            'period' => 'last_month',
332
+        );
333
+
334
+        // Generate the report.
335
+        return array(
336
+            'before' => date( 'Y-m-01', strtotime( 'next month', current_time( 'timestamp' ) ) ),
337
+            'after'  => date( 'Y-m-t', strtotime( 'last month', current_time( 'timestamp' ) ) ),
338
+        );
339
+
340
+    }
341
+
342
+    /**
343
+     * Retrieves last month's date range.
344
+     *
345
+     * @return array The appropriate date range.
346
+     */
347
+    public function get_last_month_date_range() {
348
+
349
+        // Set the previous date range.
350
+        $this->previous_range = array(
351
+            'period' => 'custom',
352
+            'before' => date( 'Y-m-1', strtotime( 'last month', current_time( 'timestamp' ) ) ),
353
+            'after'  => date( 'Y-m-t', strtotime( "-3 months", current_time( 'timestamp' ) ) ),
354
+        );
355
+
356
+        // Generate the report.
357
+        return array(
358
+            'before' => date( 'Y-m-1', current_time( 'timestamp' ) ),
359
+            'after'  => date( 'Y-m-t', strtotime( "-2 months", current_time( 'timestamp' ) ) ),
360
+        );
361
+
362
+    }
363
+
364
+    /**
365
+     * Retrieves this quarter date range.
366
+     *
367
+     * @return array The available quarters.
368
+     */
369
+    public function get_quarters() {
370
+
371
+        $last_year = (int) date('Y') - 1;
372
+        $next_year = (int) date('Y') + 1;
373
+        $year      = (int) date('Y');
374
+        return array(
375
+
376
+            array(
377
+                'after'  => "$last_year-06-30",
378
+                'before' => "$last_year-10-01",
379
+            ),
380
+
381
+            array(
382
+                'before' => "$year-01-01",
383
+                'after'  => "$last_year-09-30",
384
+            ),
385
+
386
+            array(
387
+                'before' => "$year-04-01",
388
+                'after'  => "$last_year-12-31",
389
+            ),
390
+
391
+            array(
392
+                'before' => "$year-07-01",
393
+                'after'  => "$year-03-31",
394
+            ),
395
+
396
+            array(
397
+                'after'  => "$year-06-30",
398
+                'before' => "$year-10-01",
399
+            ),
400
+
401
+            array(
402
+                'before' => "$next_year-01-01",
403
+                'after'  => "$year-09-30",
404
+            )
405
+
406
+        );
407
+
408
+    }
409
+
410
+    /**
411
+     * Retrieves the current quater.
412
+     *
413
+     * @return int The current quarter.
414
+     */
415
+    public function get_quarter() {
416
+
417
+        $month    = (int) date( 'n', current_time( 'timestamp' ) );
418
+        $quarters = array( 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4 );
419
+        return $quarters[ $month - 1 ];
420
+
421
+    }
422
+
423
+    /**
424
+     * Retrieves this quarter date range.
425
+     *
426
+     * @return array The appropriate date range.
427
+     */
428
+    public function get_quarter_date_range() {
429
+
430
+        // Set the previous date range.
431
+        $this->previous_range = array(
432
+            'period' => 'last_quarter',
433
+        );
434
+
435
+        // Generate the report.
436
+        $quarters = $this->get_quarters();
437
+        return $quarters[ $this->get_quarter() + 1 ];
438
+
439
+    }
440
+
441
+    /**
442
+     * Retrieves last quarter's date range.
443
+     *
444
+     * @return array The appropriate date range.
445
+     */
446
+    public function get_last_quarter_date_range() {
447
+
448
+        $quarters = $this->get_quarters();
449
+        $quarter  = $this->get_quarter();
450
+
451
+        // Set the previous date range.
452
+        $this->previous_range = array_merge(
453
+            $quarters[ $quarter - 1 ],
454
+            array( 'period' => 'custom' )
455
+        );
456
+
457
+        // Generate the report.
458
+        return $quarters[ $quarter ];
459
+
460
+    }
461
+
462
+    /**
463
+     * Retrieves this year date range.
464
+     *
465
+     * @return array The appropriate date range.
466
+     */
467
+    public function get_year_date_range() {
468
+
469
+        $this->groupby = 'month';
470
+
471
+        // Set the previous date range.
472
+        $this->previous_range = array(
473
+            'period' => 'last_year',
474
+        );
475
+
476
+        // Generate the report.
477
+        return array(
478
+            'before' => date( 'Y-m-d', strtotime( 'next year January 1st', current_time( 'timestamp' ) ) ),
479
+            'after'  => date( 'Y-m-d', strtotime( 'last year December 31st', current_time( 'timestamp' ) ) ),
480
+        );
481
+
482
+    }
483
+
484
+    /**
485
+     * Retrieves last year date range.
486
+     *
487
+     * @return array The appropriate date range.
488
+     */
489
+    public function get_last_year_date_range() {
490
+
491
+        $this->groupby = 'month';
492
+
493
+        // Set the previous date range.
494
+        $year          = (int) date('Y') - 3;
495
+        $this->previous_range = array(
496
+            'period' => 'custom',
497
+            'before' => date( 'Y-m-d', strtotime( 'first day of january last year', current_time( 'timestamp' ) ) ),
498
+            'after'  => "$year-12-31",
499
+        );
500
+
501
+        // Generate the report.
502
+        $year          = (int) date('Y') - 2;
503
+        return array(
504
+            'after'  => "$year-12-31",
505
+            'before' => date( 'Y-m-d', strtotime( 'first day of january this year', current_time( 'timestamp' ) ) ),
506
+        );
507
+
508
+    }
509
+
510
+    /**
511
+     * Prepare a the request date for SQL usage.
512
+     *
513
+     * @param WP_REST_Request $request Request object.
514
+     * @param string $date_field The date field.
515
+     * @return string The appropriate SQL.
516
+     */
517
+    public function get_date_range_sql( $request, $date_field ) {
518
+        global $wpdb;
519
+
520
+        $sql = '1=1';
521
+        $range = $this->get_date_range( $request );
522
+
523
+        if ( ! empty( $range['after'] ) ) {
524
+            $sql .= ' AND ' .  $wpdb->prepare(
525
+                "$date_field > %s",
526
+                $range['after']
527
+            );
528
+        }
529
+
530
+        if ( ! empty( $range['before'] ) ) {
531
+            $sql .= ' AND ' .  $wpdb->prepare(
532
+                "$date_field < %s",
533
+                $range['before']
534
+            );
535
+        }
536
+
537
+        return $sql;
538
+
539
+    }
540
+
541
+    /**
542
+     * Prepares a group by query.
543
+     *
544
+     * @param string $date_field The date field.
545
+     * @return string The appropriate SQL.
546
+     */
547
+    public function get_group_by_sql( $date_field ) {
548
+
549
+        if ( 'day' === $this->groupby ) {
550
+            return "YEAR($date_field), MONTH($date_field), DAY($date_field)";
551
+        }
552
+
553
+        return "YEAR($date_field), MONTH($date_field)";
554
+    }
555
+
556
+    /**
557
+     * Get the query params for collections.
558
+     *
559
+     * @return array
560
+     */
561
+    public function get_collection_params() {
562
+        return array(
563
+            'context' => $this->get_context_param( array( 'default' => 'view' ) ),
564
+            'period' => array(
565
+                'description'       => __( 'Limit to results of a specific period.', 'invoicing' ),
566
+                'type'              => 'string',
567
+                'enum'              => array( 'custom', 'today', 'yesterday', 'week', 'last_week', '7_days', '30_days', '60_days' , '90_days', '180_days', 'month', 'last_month', 'quarter', 'last_quarter', 'year', 'last_year', 'quarter', 'last_quarter' ),
568
+                'validate_callback' => 'rest_validate_request_arg',
569
+                'sanitize_callback' => 'sanitize_text_field',
570
+                'default'           => '7_days',
571
+            ),
572
+            'after' => array(
573
+                /* translators: %s: date format */
574
+                'description'       => sprintf( __( 'Limit to results after a specific date, the date needs to be in the %s format.', 'invoicing' ), 'YYYY-MM-DD' ),
575
+                'type'              => 'string',
576
+                'format'            => 'date',
577
+                'validate_callback' => 'rest_validate_request_arg',
578
+                'sanitize_callback' => 'sanitize_text_field',
579
+                'default'           => date( 'Y-m-d', strtotime( '-8 days', current_time( 'timestamp' ) ) ),
580
+            ),
581
+            'before' => array(
582
+                /* translators: %s: date format */
583
+                'description'       => sprintf( __( 'Limit to results before a specific date, the date needs to be in the %s format.', 'invoicing' ), 'YYYY-MM-DD' ),
584
+                'type'              => 'string',
585
+                'format'            => 'date',
586
+                'validate_callback' => 'rest_validate_request_arg',
587
+                'sanitize_callback' => 'sanitize_text_field',
588
+                'default'           => date( 'Y-m-d', current_time( 'timestamp' ) ),
589
+            ),
590
+        );
591
+    }
592 592
 }
Please login to merge, or discard this patch.
Spacing   +91 added lines, -91 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
  * @since   2.0.0
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 /**
13 13
  * GetPaid REST date based controller class.
@@ -43,15 +43,15 @@  discard block
 block discarded – undo
43 43
 	 * @param WP_REST_Request $request Request object.
44 44
 	 * @return array The appropriate date range.
45 45
 	 */
46
-	public function get_date_range( $request ) {
46
+	public function get_date_range($request) {
47 47
 
48 48
 		// If not supported, assume all time.
49
-		if ( ! in_array( $request['period'], array( 'custom', 'today', 'yesterday', 'week', 'last_week', '7_days', '30_days', '60_days', '90_days', '180_days', 'month', 'last_month', 'quarter', 'last_quarter', 'year', 'last_year' ) ) ) {
49
+		if (!in_array($request['period'], array('custom', 'today', 'yesterday', 'week', 'last_week', '7_days', '30_days', '60_days', '90_days', '180_days', 'month', 'last_month', 'quarter', 'last_quarter', 'year', 'last_year'))) {
50 50
 			$request['period'] = '7_days';
51 51
 		}
52 52
 
53
-		$date_range = call_user_func( array( $this, 'get_' . $request['period'] . '_date_range' ), $request );
54
-		$this->prepare_interval( $date_range );
53
+		$date_range = call_user_func(array($this, 'get_' . $request['period'] . '_date_range'), $request);
54
+		$this->prepare_interval($date_range);
55 55
 
56 56
 		return $date_range;
57 57
 
@@ -63,25 +63,25 @@  discard block
 block discarded – undo
63 63
 	 * @param array $range Date range.
64 64
 	 * @return array The appropriate date range.
65 65
 	 */
66
-	public function prepare_interval( $range ) {
66
+	public function prepare_interval($range) {
67 67
 
68
-		$before = strtotime( $range['before'] ) - DAY_IN_SECONDS;
69
-		$after  = strtotime( $range['after'] ) + DAY_IN_SECONDS;
70
-		if ( 'day' === $this->groupby ) {
71
-			$difference     = max( DAY_IN_SECONDS, ( DAY_IN_SECONDS + $before - $after ) ); // Prevent division by 0;
72
-			$this->interval = absint( ceil( max( 1, $difference / DAY_IN_SECONDS ) ) );
68
+		$before = strtotime($range['before']) - DAY_IN_SECONDS;
69
+		$after  = strtotime($range['after']) + DAY_IN_SECONDS;
70
+		if ('day' === $this->groupby) {
71
+			$difference     = max(DAY_IN_SECONDS, (DAY_IN_SECONDS + $before - $after)); // Prevent division by 0;
72
+			$this->interval = absint(ceil(max(1, $difference / DAY_IN_SECONDS)));
73 73
 			return;
74 74
 		}
75 75
 
76 76
 		$this->interval = 0;
77
-		$min_date       = strtotime( date( 'Y-m-01', $after ) );
77
+		$min_date       = strtotime(date('Y-m-01', $after));
78 78
 
79
-		while ( $min_date <= $before ) {
80
-			$this->interval ++;
81
-			$min_date = strtotime( '+1 MONTH', $min_date );
79
+		while ($min_date <= $before) {
80
+			$this->interval++;
81
+			$min_date = strtotime('+1 MONTH', $min_date);
82 82
 		}
83 83
 
84
-		$this->interval = max( 1, $this->interval );
84
+		$this->interval = max(1, $this->interval);
85 85
 
86 86
 	}
87 87
 
@@ -91,17 +91,17 @@  discard block
 block discarded – undo
91 91
 	 * @param WP_REST_Request $request Request object.
92 92
 	 * @return array The appropriate date range.
93 93
 	 */
94
-	public function get_custom_date_range( $request ) {
94
+	public function get_custom_date_range($request) {
95 95
 
96
-		$after  = max( strtotime( '-20 years' ), strtotime( sanitize_text_field( $request['after'] ) ) );
97
-		$before = strtotime( '+1 day', current_time( 'timestamp' ) );
96
+		$after  = max(strtotime('-20 years'), strtotime(sanitize_text_field($request['after'])));
97
+		$before = strtotime('+1 day', current_time('timestamp'));
98 98
 
99
-		if ( ! empty( $request['before'] ) ) {
100
-			$before  = min( $before, strtotime( sanitize_text_field( $request['before'] ) ) );
99
+		if (!empty($request['before'])) {
100
+			$before = min($before, strtotime(sanitize_text_field($request['before'])));
101 101
 		}
102 102
 
103 103
 		// 3 months max for day view
104
-		if ( floor( ( $before - $after ) / MONTH_IN_SECONDS ) > 3 ) {
104
+		if (floor(($before - $after) / MONTH_IN_SECONDS) > 3) {
105 105
 			$this->groupby = 'month';
106 106
 		}
107 107
 
@@ -109,14 +109,14 @@  discard block
 block discarded – undo
109 109
 		$difference           = $before - $after;
110 110
 		$this->previous_range = array(
111 111
 			'period' => 'custom',
112
-			'before' => date( 'Y-m-d', $before - $difference ),
113
-			'after'  => date( 'Y-m-d', $after - $difference ),
112
+			'before' => date('Y-m-d', $before - $difference),
113
+			'after'  => date('Y-m-d', $after - $difference),
114 114
 		);
115 115
 
116 116
 		// Generate the report.
117 117
 		return array(
118
-			'before' => date( 'Y-m-d', $before ),
119
-			'after' => date( 'Y-m-d', $after ),
118
+			'before' => date('Y-m-d', $before),
119
+			'after' => date('Y-m-d', $after),
120 120
 		);
121 121
 
122 122
 	}
@@ -135,8 +135,8 @@  discard block
 block discarded – undo
135 135
 
136 136
 		// Generate the report.
137 137
 		return array(
138
-			'before' => date( 'Y-m-d', strtotime( '+1 day', current_time( 'timestamp' ) ) ),
139
-			'after'  => date( 'Y-m-d', strtotime( '-1 day', current_time( 'timestamp' ) ) ),
138
+			'before' => date('Y-m-d', strtotime('+1 day', current_time('timestamp'))),
139
+			'after'  => date('Y-m-d', strtotime('-1 day', current_time('timestamp'))),
140 140
 		);
141 141
 
142 142
 	}
@@ -151,14 +151,14 @@  discard block
 block discarded – undo
151 151
 		// Set the previous date range.
152 152
 		$this->previous_range = array(
153 153
 			'period' => 'custom',
154
-			'before' => date( 'Y-m-d', strtotime( '-1 day', current_time( 'timestamp' ) ) ),
155
-			'after'  => date( 'Y-m-d', strtotime( '-3 days', current_time( 'timestamp' ) ) ),
154
+			'before' => date('Y-m-d', strtotime('-1 day', current_time('timestamp'))),
155
+			'after'  => date('Y-m-d', strtotime('-3 days', current_time('timestamp'))),
156 156
 		);
157 157
 
158 158
 		// Generate the report.
159 159
 		return array(
160
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
161
-			'after'  => date( 'Y-m-d', strtotime( '-2 days', current_time( 'timestamp' ) ) ),
160
+			'before' => date('Y-m-d', current_time('timestamp')),
161
+			'after'  => date('Y-m-d', strtotime('-2 days', current_time('timestamp'))),
162 162
 		);
163 163
 
164 164
 	}
@@ -177,8 +177,8 @@  discard block
 block discarded – undo
177 177
 
178 178
 		// Generate the report.
179 179
 		return array(
180
-			'before' => date( 'Y-m-d', strtotime( 'sunday last week', current_time( 'timestamp' )  ) + 8 * DAY_IN_SECONDS ),
181
-			'after'  => date( 'Y-m-d', strtotime( 'sunday last week', current_time( 'timestamp' )  ) ),
180
+			'before' => date('Y-m-d', strtotime('sunday last week', current_time('timestamp')) + 8 * DAY_IN_SECONDS),
181
+			'after'  => date('Y-m-d', strtotime('sunday last week', current_time('timestamp'))),
182 182
 		);
183 183
 
184 184
 	}
@@ -193,14 +193,14 @@  discard block
 block discarded – undo
193 193
 		// Set the previous date range.
194 194
 		$this->previous_range = array(
195 195
 			'period' => 'custom',
196
-			'before' => date( 'Y-m-d', strtotime( 'monday last week', current_time( 'timestamp' )  ) ),
197
-			'after'  => date( 'Y-m-d', strtotime( 'monday last week', current_time( 'timestamp' )  ) - 8 * DAY_IN_SECONDS ),
196
+			'before' => date('Y-m-d', strtotime('monday last week', current_time('timestamp'))),
197
+			'after'  => date('Y-m-d', strtotime('monday last week', current_time('timestamp')) - 8 * DAY_IN_SECONDS),
198 198
 		);
199 199
 
200 200
 		// Generate the report.
201 201
 		return array(
202
-			'before' => date( 'Y-m-d', strtotime( 'monday this week', current_time( 'timestamp' )  ) ),
203
-			'after'  => date( 'Y-m-d', strtotime( 'monday last week', current_time( 'timestamp' )  ) - DAY_IN_SECONDS ),
202
+			'before' => date('Y-m-d', strtotime('monday this week', current_time('timestamp'))),
203
+			'after'  => date('Y-m-d', strtotime('monday last week', current_time('timestamp')) - DAY_IN_SECONDS),
204 204
 		);
205 205
 
206 206
 	}
@@ -215,14 +215,14 @@  discard block
 block discarded – undo
215 215
 		// Set the previous date range.
216 216
 		$this->previous_range = array(
217 217
 			'period' => 'custom',
218
-			'before' => date( 'Y-m-d', strtotime( '-7 days', current_time( 'timestamp' ) ) ),
219
-			'after'  => date( 'Y-m-d', strtotime( '-15 days', current_time( 'timestamp' ) ) ),
218
+			'before' => date('Y-m-d', strtotime('-7 days', current_time('timestamp'))),
219
+			'after'  => date('Y-m-d', strtotime('-15 days', current_time('timestamp'))),
220 220
 		);
221 221
 
222 222
 		// Generate the report.
223 223
 		return array(
224
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
225
-			'after'  => date( 'Y-m-d', strtotime( '-8 days', current_time( 'timestamp' ) ) ),
224
+			'before' => date('Y-m-d', current_time('timestamp')),
225
+			'after'  => date('Y-m-d', strtotime('-8 days', current_time('timestamp'))),
226 226
 		);
227 227
 
228 228
 	}
@@ -237,14 +237,14 @@  discard block
 block discarded – undo
237 237
 		// Set the previous date range.
238 238
 		$this->previous_range = array(
239 239
 			'period' => 'custom',
240
-			'before' => date( 'Y-m-d', strtotime( '-30 days', current_time( 'timestamp' ) ) ),
241
-			'after'  => date( 'Y-m-d', strtotime( '-61 days', current_time( 'timestamp' ) ) ),
240
+			'before' => date('Y-m-d', strtotime('-30 days', current_time('timestamp'))),
241
+			'after'  => date('Y-m-d', strtotime('-61 days', current_time('timestamp'))),
242 242
 		);
243 243
 
244 244
 		// Generate the report.
245 245
 		return array(
246
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
247
-			'after'  => date( 'Y-m-d', strtotime( '-31 days', current_time( 'timestamp' ) ) ),
246
+			'before' => date('Y-m-d', current_time('timestamp')),
247
+			'after'  => date('Y-m-d', strtotime('-31 days', current_time('timestamp'))),
248 248
 		);
249 249
 
250 250
 	}
@@ -261,14 +261,14 @@  discard block
 block discarded – undo
261 261
 		// Set the previous date range.
262 262
 		$this->previous_range = array(
263 263
 			'period' => 'custom',
264
-			'before' => date( 'Y-m-d', strtotime( '-90 days', current_time( 'timestamp' ) ) ),
265
-			'after'  => date( 'Y-m-d', strtotime( '-181 days', current_time( 'timestamp' ) ) ),
264
+			'before' => date('Y-m-d', strtotime('-90 days', current_time('timestamp'))),
265
+			'after'  => date('Y-m-d', strtotime('-181 days', current_time('timestamp'))),
266 266
 		);
267 267
 
268 268
 		// Generate the report.
269 269
 		return array(
270
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
271
-			'after'  => date( 'Y-m-d', strtotime( '-91 days', current_time( 'timestamp' ) ) ),
270
+			'before' => date('Y-m-d', current_time('timestamp')),
271
+			'after'  => date('Y-m-d', strtotime('-91 days', current_time('timestamp'))),
272 272
 		);
273 273
 
274 274
 	}
@@ -285,14 +285,14 @@  discard block
 block discarded – undo
285 285
 		// Set the previous date range.
286 286
 		$this->previous_range = array(
287 287
 			'period' => 'custom',
288
-			'before' => date( 'Y-m-d', strtotime( '-180 days', current_time( 'timestamp' ) ) ),
289
-			'after'  => date( 'Y-m-d', strtotime( '-361 days', current_time( 'timestamp' ) ) ),
288
+			'before' => date('Y-m-d', strtotime('-180 days', current_time('timestamp'))),
289
+			'after'  => date('Y-m-d', strtotime('-361 days', current_time('timestamp'))),
290 290
 		);
291 291
 
292 292
 		// Generate the report.
293 293
 		return array(
294
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
295
-			'after'  => date( 'Y-m-d', strtotime( '-181 days', current_time( 'timestamp' ) ) ),
294
+			'before' => date('Y-m-d', current_time('timestamp')),
295
+			'after'  => date('Y-m-d', strtotime('-181 days', current_time('timestamp'))),
296 296
 		);
297 297
 
298 298
 	}
@@ -307,14 +307,14 @@  discard block
 block discarded – undo
307 307
 		// Set the previous date range.
308 308
 		$this->previous_range = array(
309 309
 			'period' => 'custom',
310
-			'before' => date( 'Y-m-d', strtotime( '-60 days', current_time( 'timestamp' ) ) ),
311
-			'after'  => date( 'Y-m-d', strtotime( '-121 days', current_time( 'timestamp' ) ) ),
310
+			'before' => date('Y-m-d', strtotime('-60 days', current_time('timestamp'))),
311
+			'after'  => date('Y-m-d', strtotime('-121 days', current_time('timestamp'))),
312 312
 		);
313 313
 
314 314
 		// Generate the report.
315 315
 		return array(
316
-			'before' => date( 'Y-m-d', current_time( 'timestamp' ) ),
317
-			'after'  => date( 'Y-m-d', strtotime( '-61 days', current_time( 'timestamp' ) ) ),
316
+			'before' => date('Y-m-d', current_time('timestamp')),
317
+			'after'  => date('Y-m-d', strtotime('-61 days', current_time('timestamp'))),
318 318
 		);
319 319
 
320 320
 	}
@@ -333,8 +333,8 @@  discard block
 block discarded – undo
333 333
 
334 334
 		// Generate the report.
335 335
 		return array(
336
-			'before' => date( 'Y-m-01', strtotime( 'next month', current_time( 'timestamp' ) ) ),
337
-			'after'  => date( 'Y-m-t', strtotime( 'last month', current_time( 'timestamp' ) ) ),
336
+			'before' => date('Y-m-01', strtotime('next month', current_time('timestamp'))),
337
+			'after'  => date('Y-m-t', strtotime('last month', current_time('timestamp'))),
338 338
 		);
339 339
 
340 340
 	}
@@ -349,14 +349,14 @@  discard block
 block discarded – undo
349 349
 		// Set the previous date range.
350 350
 		$this->previous_range = array(
351 351
 			'period' => 'custom',
352
-			'before' => date( 'Y-m-1', strtotime( 'last month', current_time( 'timestamp' ) ) ),
353
-			'after'  => date( 'Y-m-t', strtotime( "-3 months", current_time( 'timestamp' ) ) ),
352
+			'before' => date('Y-m-1', strtotime('last month', current_time('timestamp'))),
353
+			'after'  => date('Y-m-t', strtotime("-3 months", current_time('timestamp'))),
354 354
 		);
355 355
 
356 356
 		// Generate the report.
357 357
 		return array(
358
-			'before' => date( 'Y-m-1', current_time( 'timestamp' ) ),
359
-			'after'  => date( 'Y-m-t', strtotime( "-2 months", current_time( 'timestamp' ) ) ),
358
+			'before' => date('Y-m-1', current_time('timestamp')),
359
+			'after'  => date('Y-m-t', strtotime("-2 months", current_time('timestamp'))),
360 360
 		);
361 361
 
362 362
 	}
@@ -414,9 +414,9 @@  discard block
 block discarded – undo
414 414
 	 */
415 415
 	public function get_quarter() {
416 416
 
417
-		$month    = (int) date( 'n', current_time( 'timestamp' ) );
418
-		$quarters = array( 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4 );
419
-		return $quarters[ $month - 1 ];
417
+		$month    = (int) date('n', current_time('timestamp'));
418
+		$quarters = array(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4);
419
+		return $quarters[$month - 1];
420 420
 
421 421
 	}
422 422
 
@@ -434,7 +434,7 @@  discard block
 block discarded – undo
434 434
 
435 435
 		// Generate the report.
436 436
 		$quarters = $this->get_quarters();
437
-		return $quarters[ $this->get_quarter() + 1 ];
437
+		return $quarters[$this->get_quarter() + 1];
438 438
 
439 439
 	}
440 440
 
@@ -450,12 +450,12 @@  discard block
 block discarded – undo
450 450
 
451 451
 		// Set the previous date range.
452 452
 		$this->previous_range = array_merge(
453
-			$quarters[ $quarter - 1 ],
454
-			array( 'period' => 'custom' )
453
+			$quarters[$quarter - 1],
454
+			array('period' => 'custom')
455 455
 		);
456 456
 
457 457
 		// Generate the report.
458
-		return $quarters[ $quarter ];
458
+		return $quarters[$quarter];
459 459
 
460 460
 	}
461 461
 
@@ -475,8 +475,8 @@  discard block
 block discarded – undo
475 475
 
476 476
 		// Generate the report.
477 477
 		return array(
478
-			'before' => date( 'Y-m-d', strtotime( 'next year January 1st', current_time( 'timestamp' ) ) ),
479
-			'after'  => date( 'Y-m-d', strtotime( 'last year December 31st', current_time( 'timestamp' ) ) ),
478
+			'before' => date('Y-m-d', strtotime('next year January 1st', current_time('timestamp'))),
479
+			'after'  => date('Y-m-d', strtotime('last year December 31st', current_time('timestamp'))),
480 480
 		);
481 481
 
482 482
 	}
@@ -494,15 +494,15 @@  discard block
 block discarded – undo
494 494
 		$year          = (int) date('Y') - 3;
495 495
 		$this->previous_range = array(
496 496
 			'period' => 'custom',
497
-			'before' => date( 'Y-m-d', strtotime( 'first day of january last year', current_time( 'timestamp' ) ) ),
497
+			'before' => date('Y-m-d', strtotime('first day of january last year', current_time('timestamp'))),
498 498
 			'after'  => "$year-12-31",
499 499
 		);
500 500
 
501 501
 		// Generate the report.
502
-		$year          = (int) date('Y') - 2;
502
+		$year = (int) date('Y') - 2;
503 503
 		return array(
504 504
 			'after'  => "$year-12-31",
505
-			'before' => date( 'Y-m-d', strtotime( 'first day of january this year', current_time( 'timestamp' ) ) ),
505
+			'before' => date('Y-m-d', strtotime('first day of january this year', current_time('timestamp'))),
506 506
 		);
507 507
 
508 508
 	}
@@ -514,21 +514,21 @@  discard block
 block discarded – undo
514 514
 	 * @param string $date_field The date field.
515 515
 	 * @return string The appropriate SQL.
516 516
 	 */
517
-	public function get_date_range_sql( $request, $date_field ) {
517
+	public function get_date_range_sql($request, $date_field) {
518 518
 		global $wpdb;
519 519
 
520 520
 		$sql = '1=1';
521
-		$range = $this->get_date_range( $request );
521
+		$range = $this->get_date_range($request);
522 522
 
523
-		if ( ! empty( $range['after'] ) ) {
524
-			$sql .= ' AND ' .  $wpdb->prepare(
523
+		if (!empty($range['after'])) {
524
+			$sql .= ' AND ' . $wpdb->prepare(
525 525
 				"$date_field > %s",
526 526
 				$range['after']
527 527
 			);
528 528
 		}
529 529
 
530
-		if ( ! empty( $range['before'] ) ) {
531
-			$sql .= ' AND ' .  $wpdb->prepare(
530
+		if (!empty($range['before'])) {
531
+			$sql .= ' AND ' . $wpdb->prepare(
532 532
 				"$date_field < %s",
533 533
 				$range['before']
534 534
 			);
@@ -544,9 +544,9 @@  discard block
 block discarded – undo
544 544
 	 * @param string $date_field The date field.
545 545
 	 * @return string The appropriate SQL.
546 546
 	 */
547
-	public function get_group_by_sql( $date_field ) {
547
+	public function get_group_by_sql($date_field) {
548 548
 
549
-		if ( 'day' === $this->groupby ) {
549
+		if ('day' === $this->groupby) {
550 550
 			return "YEAR($date_field), MONTH($date_field), DAY($date_field)";
551 551
 		}
552 552
 
@@ -560,32 +560,32 @@  discard block
 block discarded – undo
560 560
 	 */
561 561
 	public function get_collection_params() {
562 562
 		return array(
563
-			'context' => $this->get_context_param( array( 'default' => 'view' ) ),
563
+			'context' => $this->get_context_param(array('default' => 'view')),
564 564
 			'period' => array(
565
-				'description'       => __( 'Limit to results of a specific period.', 'invoicing' ),
565
+				'description'       => __('Limit to results of a specific period.', 'invoicing'),
566 566
 				'type'              => 'string',
567
-				'enum'              => array( 'custom', 'today', 'yesterday', 'week', 'last_week', '7_days', '30_days', '60_days' , '90_days', '180_days', 'month', 'last_month', 'quarter', 'last_quarter', 'year', 'last_year', 'quarter', 'last_quarter' ),
567
+				'enum'              => array('custom', 'today', 'yesterday', 'week', 'last_week', '7_days', '30_days', '60_days', '90_days', '180_days', 'month', 'last_month', 'quarter', 'last_quarter', 'year', 'last_year', 'quarter', 'last_quarter'),
568 568
 				'validate_callback' => 'rest_validate_request_arg',
569 569
 				'sanitize_callback' => 'sanitize_text_field',
570 570
 				'default'           => '7_days',
571 571
 			),
572 572
 			'after' => array(
573 573
 				/* translators: %s: date format */
574
-				'description'       => sprintf( __( 'Limit to results after a specific date, the date needs to be in the %s format.', 'invoicing' ), 'YYYY-MM-DD' ),
574
+				'description'       => sprintf(__('Limit to results after a specific date, the date needs to be in the %s format.', 'invoicing'), 'YYYY-MM-DD'),
575 575
 				'type'              => 'string',
576 576
 				'format'            => 'date',
577 577
 				'validate_callback' => 'rest_validate_request_arg',
578 578
 				'sanitize_callback' => 'sanitize_text_field',
579
-				'default'           => date( 'Y-m-d', strtotime( '-8 days', current_time( 'timestamp' ) ) ),
579
+				'default'           => date('Y-m-d', strtotime('-8 days', current_time('timestamp'))),
580 580
 			),
581 581
 			'before' => array(
582 582
 				/* translators: %s: date format */
583
-				'description'       => sprintf( __( 'Limit to results before a specific date, the date needs to be in the %s format.', 'invoicing' ), 'YYYY-MM-DD' ),
583
+				'description'       => sprintf(__('Limit to results before a specific date, the date needs to be in the %s format.', 'invoicing'), 'YYYY-MM-DD'),
584 584
 				'type'              => 'string',
585 585
 				'format'            => 'date',
586 586
 				'validate_callback' => 'rest_validate_request_arg',
587 587
 				'sanitize_callback' => 'sanitize_text_field',
588
-				'default'           => date( 'Y-m-d', current_time( 'timestamp' ) ),
588
+				'default'           => date('Y-m-d', current_time('timestamp')),
589 589
 			),
590 590
 		);
591 591
 	}
Please login to merge, or discard this patch.
templates/payment-forms/variations/select.php 1 patch
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -7,17 +7,17 @@  discard block
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 // Prepare the selectable items.
13 13
 $selectable = array();
14
-foreach ( $form->get_items() as $item ) {
15
-    if ( ! $item->is_required ) {
16
-        $selectable[$item->get_id()] = strip_tags( $item->get_name() . ' &mdash; ' . wpinv_price( $item->get_initial_price() ) );
14
+foreach ($form->get_items() as $item) {
15
+    if (!$item->is_required) {
16
+        $selectable[$item->get_id()] = strip_tags($item->get_name() . ' &mdash; ' . wpinv_price($item->get_initial_price()));
17 17
     }
18 18
 }
19 19
 
20
-if ( empty( $selectable ) ) {
20
+if (empty($selectable)) {
21 21
     return;
22 22
 }
23 23
 
@@ -27,9 +27,9 @@  discard block
 block discarded – undo
27 27
 echo aui()->select(
28 28
     array(
29 29
         'name'       => 'getpaid-payment-form-selected-item',
30
-        'id'         => 'getpaid-payment-form-selected-item' . uniqid( '_' ),
30
+        'id'         => 'getpaid-payment-form-selected-item' . uniqid('_'),
31 31
         'required'   => true,
32
-        'label'      => __( 'Select Item', 'invoicing' ),
32
+        'label'      => __('Select Item', 'invoicing'),
33 33
         'label_type' => 'vertical',
34 34
         'inline'     => false,
35 35
         'options'    => $selectable,
Please login to merge, or discard this patch.
templates/invoice/header-right-actions.php 1 patch
Spacing   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
  * @var WPInv_Invoice $invoice
9 9
  */
10 10
 
11
-defined( 'ABSPATH' ) || exit;
11
+defined('ABSPATH') || exit;
12 12
 
13 13
 ?>
14 14
 
@@ -21,43 +21,43 @@  discard block
 block discarded – undo
21 21
             $actions[] = sprintf(
22 22
                 '<a href="javascript:void(0)" class="btn btn-sm m-1 d-inline-block btn-secondary invoice-action-print d-none d-lg-inline-block" onclick="window.print();">%s</a>',
23 23
                 sprintf(
24
-                    __( 'Print %s', 'invoicing' ),
25
-                    ucfirst( $invoice->get_invoice_quote_type() )
24
+                    __('Print %s', 'invoicing'),
25
+                    ucfirst($invoice->get_invoice_quote_type())
26 26
                 )
27 27
             );
28 28
 
29
-            if ( is_user_logged_in() ) {
29
+            if (is_user_logged_in()) {
30 30
 
31 31
                 $actions[] = sprintf(
32 32
                     '<a href="%s" class="btn btn-sm btn-secondary m-1 d-inline-block invoice-action-history">%s</a>',
33
-                    esc_url( wpinv_get_history_page_uri( $invoice->get_post_type() ) ),
33
+                    esc_url(wpinv_get_history_page_uri($invoice->get_post_type())),
34 34
                     sprintf(
35
-                        __( '%s History', 'invoicing' ),
36
-                        ucfirst( $invoice->get_invoice_quote_type() )
35
+                        __('%s History', 'invoicing'),
36
+                        ucfirst($invoice->get_invoice_quote_type())
37 37
                     )
38 38
                 );
39 39
 
40 40
             }
41 41
 
42
-            if ( wpinv_current_user_can_manage_invoicing() ) {
42
+            if (wpinv_current_user_can_manage_invoicing()) {
43 43
 
44 44
                 $actions[] = sprintf(
45 45
                     '<a href="%s" class="btn btn-sm btn-secondary m-1 d-inline-block invoice-action-edit">%s</a>',
46
-                    esc_url( get_edit_post_link( $invoice->get_id() ) ),
46
+                    esc_url(get_edit_post_link($invoice->get_id())),
47 47
                     sprintf(
48
-                        __( 'Edit %s', 'invoicing' ),
49
-                        ucfirst( $invoice->get_invoice_quote_type() )
48
+                        __('Edit %s', 'invoicing'),
49
+                        ucfirst($invoice->get_invoice_quote_type())
50 50
                     )
51 51
                 );
52 52
 
53 53
             }
54 54
 
55
-            $actions = apply_filters( 'getpaid_invoice_header_right_actions_array', $actions, $invoice );
56
-            echo implode( '', $actions );
55
+            $actions = apply_filters('getpaid_invoice_header_right_actions_array', $actions, $invoice);
56
+            echo implode('', $actions);
57 57
 
58 58
         ?>
59 59
 
60
-        <?php do_action('wpinv_invoice_display_right_actions', $invoice ); ?>
60
+        <?php do_action('wpinv_invoice_display_right_actions', $invoice); ?>
61 61
     </div>
62 62
 
63 63
 <?php
Please login to merge, or discard this patch.
templates/invoice/invoice-type.php 1 patch
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -7,11 +7,11 @@
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 ?>
13 13
 <h2 class="h3 text-dark">
14
-    <?php echo apply_filters( 'getpaid_invoice_type_label', ucfirst( $invoice->get_invoice_quote_type() ), $invoice ); ?>
14
+    <?php echo apply_filters('getpaid_invoice_type_label', ucfirst($invoice->get_invoice_quote_type()), $invoice); ?>
15 15
 </h2>
16 16
 
17 17
 <?php
Please login to merge, or discard this patch.
templates/emails/wpinv-email-footer.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -1,10 +1,10 @@
 block discarded – undo
1 1
 <?php
2 2
 // don't load directly
3
-if ( !defined('ABSPATH') )
3
+if (!defined('ABSPATH'))
4 4
     die('-1');
5 5
 
6
-$email_footer = apply_filters( 'wpinv_email_footer_text', wpinv_get_option( 'email_footer_text', get_bloginfo( 'name', 'display' ) . ' - ' . __( 'Powered by GetPaid', 'invoicing' ) ) );
7
-$email_footer = $email_footer ? wpautop( wp_kses_post( wptexturize( $email_footer ) ) ) : '';
6
+$email_footer = apply_filters('wpinv_email_footer_text', wpinv_get_option('email_footer_text', get_bloginfo('name', 'display') . ' - ' . __('Powered by GetPaid', 'invoicing')));
7
+$email_footer = $email_footer ? wpautop(wp_kses_post(wptexturize($email_footer))) : '';
8 8
 ?>
9 9
                                                             </div>
10 10
                                                         </td>
Please login to merge, or discard this patch.
Braces   +2 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,7 +1,8 @@
 block discarded – undo
1 1
 <?php
2 2
 // don't load directly
3
-if ( !defined('ABSPATH') )
3
+if ( !defined('ABSPATH') ) {
4 4
     die('-1');
5
+}
5 6
 
6 7
 $email_footer = apply_filters( 'wpinv_email_footer_text', wpinv_get_option( 'email_footer_text', get_bloginfo( 'name', 'display' ) . ' - ' . __( 'Powered by GetPaid', 'invoicing' ) ) );
7 8
 $email_footer = $email_footer ? wpautop( wp_kses_post( wptexturize( $email_footer ) ) ) : '';
Please login to merge, or discard this patch.
templates/payment-forms/elements/billing_email.php 1 patch
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -7,35 +7,35 @@  discard block
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 $value = '';
13 13
 $class = '';
14 14
 
15
-if ( ! empty( $form->invoice ) ) {
16
-    $value   = sanitize_email( $form->invoice->get_email() );
17
-} else if ( is_user_logged_in() ) {
15
+if (!empty($form->invoice)) {
16
+    $value = sanitize_email($form->invoice->get_email());
17
+} else if (is_user_logged_in()) {
18 18
     $user  = wp_get_current_user();
19
-    $value = sanitize_email( $user->user_email );
19
+    $value = sanitize_email($user->user_email);
20 20
 }
21 21
 
22
-if ( ! empty( $value ) && ! empty( $hide_billing_email ) ) {
22
+if (!empty($value) && !empty($hide_billing_email)) {
23 23
     $class = 'd-none';
24 24
 }
25 25
 
26
-do_action( 'getpaid_before_payment_form_billing_email', $form );
26
+do_action('getpaid_before_payment_form_billing_email', $form);
27 27
 
28 28
 echo "<span class='$class'>";
29 29
 
30 30
 echo aui()->input(
31 31
     array(
32 32
         'name'       => 'billing_email',
33
-        'id'         => esc_attr( $id ) . uniqid( '_' ),
34
-        'placeholder'=> empty( $placeholder ) ? '' : esc_attr( $placeholder ),
35
-        'required'   => ! empty( $required ),
36
-        'label'      => empty( $label ) ? '' : wp_kses_post( $label ) . '<span class="text-danger"> *</span>',
33
+        'id'         => esc_attr($id) . uniqid('_'),
34
+        'placeholder'=> empty($placeholder) ? '' : esc_attr($placeholder),
35
+        'required'   => !empty($required),
36
+        'label'      => empty($label) ? '' : wp_kses_post($label) . '<span class="text-danger"> *</span>',
37 37
         'label_type' => 'vertical',
38
-        'help_text'  => empty( $description ) ? '' : wp_kses_post( $description ),
38
+        'help_text'  => empty($description) ? '' : wp_kses_post($description),
39 39
         'type'       => 'email',
40 40
         'value'      => $value,
41 41
         'class'      => 'wpinv_billing_email',
@@ -47,4 +47,4 @@  discard block
 block discarded – undo
47 47
 
48 48
 echo '</span>';
49 49
 
50
-do_action( 'getpaid_after_payment_form_billing_email', $form );
50
+do_action('getpaid_after_payment_form_billing_email', $form);
Please login to merge, or discard this patch.
includes/data/vat-number-regexes.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -6,7 +6,7 @@
 block discarded – undo
6 6
  * @package Invoicing/data
7 7
  */
8 8
 
9
-defined( 'ABSPATH' ) || exit;
9
+defined('ABSPATH') || exit;
10 10
 
11 11
 return array(
12 12
 
Please login to merge, or discard this patch.