Passed
Push — master ( 0a2cdb...97ebee )
by Brian
04:41
created
includes/api/class-wpinv-rest-invoice-controller.php 2 patches
Indentation   +125 added lines, -125 removed lines patch added patch discarded remove patch
@@ -15,132 +15,132 @@
 block discarded – undo
15 15
 class WPInv_REST_Invoice_Controller extends GetPaid_REST_Posts_Controller {
16 16
 
17 17
     /**
18
-	 * Post type.
19
-	 *
20
-	 * @var string
21
-	 */
22
-	protected $post_type = 'wpi_invoice';
23
-
24
-	/**
25
-	 * The base of this controller's route.
26
-	 *
27
-	 * @since 1.0.13
28
-	 * @var string
29
-	 */
30
-	protected $rest_base = 'invoices';
31
-
32
-	/** Contains this controller's class name.
33
-	 *
34
-	 * @var string
35
-	 */
36
-	public $crud_class = 'WPInv_Invoice';
18
+     * Post type.
19
+     *
20
+     * @var string
21
+     */
22
+    protected $post_type = 'wpi_invoice';
37 23
 
38 24
     /**
39
-	 * Retrieves the query params for the invoices collection.
40
-	 *
41
-	 * @since 1.0.13
42
-	 *
43
-	 * @return array Collection parameters.
44
-	 */
45
-	public function get_collection_params() {
46
-
47
-		$params = array_merge(
48
-			parent::get_collection_params(),
49
-			array(
50
-
51
-				'customers'         => array(
52
-					'description'       => __( 'Limit result set to invoices for specific user ids.', 'invoicing' ),
53
-					'type'              => 'array',
54
-					'items'             => array(
55
-						'type' => 'integer',
56
-					),
57
-					'default'           => array(),
58
-					'sanitize_callback' => 'wp_parse_id_list',
59
-				),
60
-
61
-				'exclude_customers' => array(
62
-					'description'       => __( 'Exclude invoices to specific users.', 'invoicing' ),
63
-					'type'              => 'array',
64
-					'items'             => array(
65
-						'type' => 'integer',
66
-					),
67
-					'default'           => array(),
68
-					'sanitize_callback' => 'wp_parse_id_list',
69
-				),
70
-
71
-				'parent'            => array(
72
-					'description'       => __( 'Limit result set to those of particular parent IDs.', 'invoicing' ),
73
-					'type'              => 'array',
74
-					'items'             => array(
75
-						'type' => 'integer',
76
-					),
77
-					'sanitize_callback' => 'wp_parse_id_list',
78
-					'default'           => array(),
79
-				),
80
-
81
-				'parent_exclude'    => array(
82
-					'description'       => __( 'Limit result set to all items except those of a particular parent ID.', 'invoicing' ),
83
-					'type'              => 'array',
84
-					'items'             => array(
85
-						'type' => 'integer',
86
-					),
87
-					'sanitize_callback' => 'wp_parse_id_list',
88
-					'default'           => array(),
89
-				),
90
-
91
-			)
92
-		);
93
-
94
-		// Filter collection parameters for the invoices controller.
95
-		return apply_filters( 'getpaid_rest_invoices_collection_params', $params, $this );
96
-	}
97
-
98
-	/**
99
-	 * Determine the allowed query_vars for a get_items() response and
100
-	 * prepare for WP_Query.
101
-	 *
102
-	 * @param array           $prepared_args Prepared arguments.
103
-	 * @param WP_REST_Request $request Request object.
104
-	 * @return array          $query_args
105
-	 */
106
-	protected function prepare_items_query( $prepared_args = array(), $request = null ) {
107
-
108
-		$query_args = parent::prepare_items_query( $prepared_args );
109
-
110
-		// Retrieve invoices for specific customers.
111
-		if ( ! empty( $request['customers'] ) ) {
112
-			$query_args['author__in'] = $request['customers'];
113
-		}
114
-
115
-		// Skip invoices for specific customers.
116
-		if ( ! empty( $request['exclude_customers'] ) ) {
117
-			$query_args['author__not_in'] = $request['exclude_customers'];
118
-		}
119
-
120
-		return apply_filters( 'getpaid_rest_invoices_prepare_items_query', $query_args, $request, $this );
121
-
122
-	}
123
-
124
-	/**
125
-	 * Retrieves a valid list of post statuses.
126
-	 *
127
-	 * @since 1.0.15
128
-	 *
129
-	 * @return array A list of registered item statuses.
130
-	 */
131
-	public function get_post_statuses() {
132
-		return array_keys( wpinv_get_invoice_statuses( true, false, $this->post_type ) );
133
-	}
134
-
135
-	/**
136
-	 * Saves a single invoice.
137
-	 *
138
-	 * @param WPInv_Invoice $invoice Invoice to save.
139
-	 * @return WP_Error|WPInv_Invoice
140
-	 */
141
-	protected function save_object( $invoice ) {
142
-		$invoice->recalculate_total();
143
-		return parent::save_object( $invoice );
144
-	}
25
+     * The base of this controller's route.
26
+     *
27
+     * @since 1.0.13
28
+     * @var string
29
+     */
30
+    protected $rest_base = 'invoices';
31
+
32
+    /** Contains this controller's class name.
33
+     *
34
+     * @var string
35
+     */
36
+    public $crud_class = 'WPInv_Invoice';
37
+
38
+    /**
39
+     * Retrieves the query params for the invoices collection.
40
+     *
41
+     * @since 1.0.13
42
+     *
43
+     * @return array Collection parameters.
44
+     */
45
+    public function get_collection_params() {
46
+
47
+        $params = array_merge(
48
+            parent::get_collection_params(),
49
+            array(
50
+
51
+                'customers'         => array(
52
+                    'description'       => __( 'Limit result set to invoices for specific user ids.', 'invoicing' ),
53
+                    'type'              => 'array',
54
+                    'items'             => array(
55
+                        'type' => 'integer',
56
+                    ),
57
+                    'default'           => array(),
58
+                    'sanitize_callback' => 'wp_parse_id_list',
59
+                ),
60
+
61
+                'exclude_customers' => array(
62
+                    'description'       => __( 'Exclude invoices to specific users.', 'invoicing' ),
63
+                    'type'              => 'array',
64
+                    'items'             => array(
65
+                        'type' => 'integer',
66
+                    ),
67
+                    'default'           => array(),
68
+                    'sanitize_callback' => 'wp_parse_id_list',
69
+                ),
70
+
71
+                'parent'            => array(
72
+                    'description'       => __( 'Limit result set to those of particular parent IDs.', 'invoicing' ),
73
+                    'type'              => 'array',
74
+                    'items'             => array(
75
+                        'type' => 'integer',
76
+                    ),
77
+                    'sanitize_callback' => 'wp_parse_id_list',
78
+                    'default'           => array(),
79
+                ),
80
+
81
+                'parent_exclude'    => array(
82
+                    'description'       => __( 'Limit result set to all items except those of a particular parent ID.', 'invoicing' ),
83
+                    'type'              => 'array',
84
+                    'items'             => array(
85
+                        'type' => 'integer',
86
+                    ),
87
+                    'sanitize_callback' => 'wp_parse_id_list',
88
+                    'default'           => array(),
89
+                ),
90
+
91
+            )
92
+        );
93
+
94
+        // Filter collection parameters for the invoices controller.
95
+        return apply_filters( 'getpaid_rest_invoices_collection_params', $params, $this );
96
+    }
97
+
98
+    /**
99
+     * Determine the allowed query_vars for a get_items() response and
100
+     * prepare for WP_Query.
101
+     *
102
+     * @param array           $prepared_args Prepared arguments.
103
+     * @param WP_REST_Request $request Request object.
104
+     * @return array          $query_args
105
+     */
106
+    protected function prepare_items_query( $prepared_args = array(), $request = null ) {
107
+
108
+        $query_args = parent::prepare_items_query( $prepared_args );
109
+
110
+        // Retrieve invoices for specific customers.
111
+        if ( ! empty( $request['customers'] ) ) {
112
+            $query_args['author__in'] = $request['customers'];
113
+        }
114
+
115
+        // Skip invoices for specific customers.
116
+        if ( ! empty( $request['exclude_customers'] ) ) {
117
+            $query_args['author__not_in'] = $request['exclude_customers'];
118
+        }
119
+
120
+        return apply_filters( 'getpaid_rest_invoices_prepare_items_query', $query_args, $request, $this );
121
+
122
+    }
123
+
124
+    /**
125
+     * Retrieves a valid list of post statuses.
126
+     *
127
+     * @since 1.0.15
128
+     *
129
+     * @return array A list of registered item statuses.
130
+     */
131
+    public function get_post_statuses() {
132
+        return array_keys( wpinv_get_invoice_statuses( true, false, $this->post_type ) );
133
+    }
134
+
135
+    /**
136
+     * Saves a single invoice.
137
+     *
138
+     * @param WPInv_Invoice $invoice Invoice to save.
139
+     * @return WP_Error|WPInv_Invoice
140
+     */
141
+    protected function save_object( $invoice ) {
142
+        $invoice->recalculate_total();
143
+        return parent::save_object( $invoice );
144
+    }
145 145
 
146 146
 }
Please login to merge, or discard this patch.
Spacing   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
  * @version 1.0.19
6 6
  */
7 7
 
8
-defined( 'ABSPATH' ) || exit;
8
+defined('ABSPATH') || exit;
9 9
 
10 10
 /**
11 11
  * REST API invoices controller class.
@@ -49,7 +49,7 @@  discard block
 block discarded – undo
49 49
 			array(
50 50
 
51 51
 				'customers'         => array(
52
-					'description'       => __( 'Limit result set to invoices for specific user ids.', 'invoicing' ),
52
+					'description'       => __('Limit result set to invoices for specific user ids.', 'invoicing'),
53 53
 					'type'              => 'array',
54 54
 					'items'             => array(
55 55
 						'type' => 'integer',
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 				),
60 60
 
61 61
 				'exclude_customers' => array(
62
-					'description'       => __( 'Exclude invoices to specific users.', 'invoicing' ),
62
+					'description'       => __('Exclude invoices to specific users.', 'invoicing'),
63 63
 					'type'              => 'array',
64 64
 					'items'             => array(
65 65
 						'type' => 'integer',
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 				),
70 70
 
71 71
 				'parent'            => array(
72
-					'description'       => __( 'Limit result set to those of particular parent IDs.', 'invoicing' ),
72
+					'description'       => __('Limit result set to those of particular parent IDs.', 'invoicing'),
73 73
 					'type'              => 'array',
74 74
 					'items'             => array(
75 75
 						'type' => 'integer',
@@ -79,7 +79,7 @@  discard block
 block discarded – undo
79 79
 				),
80 80
 
81 81
 				'parent_exclude'    => array(
82
-					'description'       => __( 'Limit result set to all items except those of a particular parent ID.', 'invoicing' ),
82
+					'description'       => __('Limit result set to all items except those of a particular parent ID.', 'invoicing'),
83 83
 					'type'              => 'array',
84 84
 					'items'             => array(
85 85
 						'type' => 'integer',
@@ -92,7 +92,7 @@  discard block
 block discarded – undo
92 92
 		);
93 93
 
94 94
 		// Filter collection parameters for the invoices controller.
95
-		return apply_filters( 'getpaid_rest_invoices_collection_params', $params, $this );
95
+		return apply_filters('getpaid_rest_invoices_collection_params', $params, $this);
96 96
 	}
97 97
 
98 98
 	/**
@@ -103,21 +103,21 @@  discard block
 block discarded – undo
103 103
 	 * @param WP_REST_Request $request Request object.
104 104
 	 * @return array          $query_args
105 105
 	 */
106
-	protected function prepare_items_query( $prepared_args = array(), $request = null ) {
106
+	protected function prepare_items_query($prepared_args = array(), $request = null) {
107 107
 
108
-		$query_args = parent::prepare_items_query( $prepared_args );
108
+		$query_args = parent::prepare_items_query($prepared_args);
109 109
 
110 110
 		// Retrieve invoices for specific customers.
111
-		if ( ! empty( $request['customers'] ) ) {
111
+		if (!empty($request['customers'])) {
112 112
 			$query_args['author__in'] = $request['customers'];
113 113
 		}
114 114
 
115 115
 		// Skip invoices for specific customers.
116
-		if ( ! empty( $request['exclude_customers'] ) ) {
116
+		if (!empty($request['exclude_customers'])) {
117 117
 			$query_args['author__not_in'] = $request['exclude_customers'];
118 118
 		}
119 119
 
120
-		return apply_filters( 'getpaid_rest_invoices_prepare_items_query', $query_args, $request, $this );
120
+		return apply_filters('getpaid_rest_invoices_prepare_items_query', $query_args, $request, $this);
121 121
 
122 122
 	}
123 123
 
@@ -129,7 +129,7 @@  discard block
 block discarded – undo
129 129
 	 * @return array A list of registered item statuses.
130 130
 	 */
131 131
 	public function get_post_statuses() {
132
-		return array_keys( wpinv_get_invoice_statuses( true, false, $this->post_type ) );
132
+		return array_keys(wpinv_get_invoice_statuses(true, false, $this->post_type));
133 133
 	}
134 134
 
135 135
 	/**
@@ -138,9 +138,9 @@  discard block
 block discarded – undo
138 138
 	 * @param WPInv_Invoice $invoice Invoice to save.
139 139
 	 * @return WP_Error|WPInv_Invoice
140 140
 	 */
141
-	protected function save_object( $invoice ) {
141
+	protected function save_object($invoice) {
142 142
 		$invoice->recalculate_total();
143
-		return parent::save_object( $invoice );
143
+		return parent::save_object($invoice);
144 144
 	}
145 145
 
146 146
 }
Please login to merge, or discard this patch.
includes/api/class-getpaid-rest-reports-controller.php 2 patches
Indentation   +170 added lines, -170 removed lines patch added patch discarded remove patch
@@ -18,178 +18,178 @@
 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(
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,
141 41
             array(
142
-				'self'       => array(
143
-					'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $report->slug ) ),
144
-				),
145
-				'collection' => array(
146
-					'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
147
-				),
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' ),
148 49
             )
149 50
         );
150 51
 
151
-		return apply_filters( 'getpaid_rest_prepare_report', $response, $report, $request );
152
-	}
153
-
154
-	/**
155
-	 * Get the Report's schema, conforming to JSON Schema.
156
-	 *
157
-	 * @since 2.0.0
158
-	 * @return array
159
-	 */
160
-	public function get_item_schema() {
161
-		$schema = array(
162
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
163
-			'title'      => 'report',
164
-			'type'       => 'object',
165
-			'properties' => array(
166
-				'slug'        => array(
167
-					'description' => __( 'An alphanumeric identifier for the resource.', 'invoicing' ),
168
-					'type'        => 'string',
169
-					'context'     => array( 'view' ),
170
-					'readonly'    => true,
171
-				),
172
-				'description' => array(
173
-					'description' => __( 'A human-readable description of the resource.', 'invoicing' ),
174
-					'type'        => 'string',
175
-					'context'     => array( 'view' ),
176
-					'readonly'    => true,
177
-				),
178
-			),
179
-		);
180
-
181
-		return $this->add_additional_fields_schema( $schema );
182
-	}
183
-
184
-	/**
185
-	 * Get the query params for collections.
186
-	 *
187
-	 * @since 2.0.0
188
-	 * @return array
189
-	 */
190
-	public function get_collection_params() {
191
-		return array(
192
-			'context' => $this->get_context_param( array( 'default' => 'view' ) ),
193
-		);
194
-	}
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(
141
+            array(
142
+                'self'       => array(
143
+                    'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $report->slug ) ),
144
+                ),
145
+                'collection' => array(
146
+                    'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
147
+                ),
148
+            )
149
+        );
150
+
151
+        return apply_filters( 'getpaid_rest_prepare_report', $response, $report, $request );
152
+    }
153
+
154
+    /**
155
+     * Get the Report's schema, conforming to JSON Schema.
156
+     *
157
+     * @since 2.0.0
158
+     * @return array
159
+     */
160
+    public function get_item_schema() {
161
+        $schema = array(
162
+            '$schema'    => 'http://json-schema.org/draft-04/schema#',
163
+            'title'      => 'report',
164
+            'type'       => 'object',
165
+            'properties' => array(
166
+                'slug'        => array(
167
+                    'description' => __( 'An alphanumeric identifier for the resource.', 'invoicing' ),
168
+                    'type'        => 'string',
169
+                    'context'     => array( 'view' ),
170
+                    'readonly'    => true,
171
+                ),
172
+                'description' => array(
173
+                    'description' => __( 'A human-readable description of the resource.', 'invoicing' ),
174
+                    'type'        => 'string',
175
+                    'context'     => array( 'view' ),
176
+                    'readonly'    => true,
177
+                ),
178
+            ),
179
+        );
180
+
181
+        return $this->add_additional_fields_schema( $schema );
182
+    }
183
+
184
+    /**
185
+     * Get the query params for collections.
186
+     *
187
+     * @since 2.0.0
188
+     * @return array
189
+     */
190
+    public function get_collection_params() {
191
+        return array(
192
+            'context' => $this->get_context_param( array( 'default' => 'view' ) ),
193
+        );
194
+    }
195 195
 }
Please login to merge, or discard this patch.
Spacing   +32 added lines, -32 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,30 +125,30 @@  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 );
139
+		$response = rest_ensure_response($data);
140 140
 		$response->add_links(
141 141
             array(
142 142
 				'self'       => array(
143
-					'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $report->slug ) ),
143
+					'href' => rest_url(sprintf('/%s/%s/%s', $this->namespace, $this->rest_base, $report->slug)),
144 144
 				),
145 145
 				'collection' => array(
146
-					'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
146
+					'href' => rest_url(sprintf('%s/%s', $this->namespace, $this->rest_base)),
147 147
 				),
148 148
             )
149 149
         );
150 150
 
151
-		return apply_filters( 'getpaid_rest_prepare_report', $response, $report, $request );
151
+		return apply_filters('getpaid_rest_prepare_report', $response, $report, $request);
152 152
 	}
153 153
 
154 154
 	/**
@@ -164,21 +164,21 @@  discard block
 block discarded – undo
164 164
 			'type'       => 'object',
165 165
 			'properties' => array(
166 166
 				'slug'        => array(
167
-					'description' => __( 'An alphanumeric identifier for the resource.', 'invoicing' ),
167
+					'description' => __('An alphanumeric identifier for the resource.', 'invoicing'),
168 168
 					'type'        => 'string',
169
-					'context'     => array( 'view' ),
169
+					'context'     => array('view'),
170 170
 					'readonly'    => true,
171 171
 				),
172 172
 				'description' => array(
173
-					'description' => __( 'A human-readable description of the resource.', 'invoicing' ),
173
+					'description' => __('A human-readable description of the resource.', 'invoicing'),
174 174
 					'type'        => 'string',
175
-					'context'     => array( 'view' ),
175
+					'context'     => array('view'),
176 176
 					'readonly'    => true,
177 177
 				),
178 178
 			),
179 179
 		);
180 180
 
181
-		return $this->add_additional_fields_schema( $schema );
181
+		return $this->add_additional_fields_schema($schema);
182 182
 	}
183 183
 
184 184
 	/**
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
 	 */
190 190
 	public function get_collection_params() {
191 191
 		return array(
192
-			'context' => $this->get_context_param( array( 'default' => 'view' ) ),
192
+			'context' => $this->get_context_param(array('default' => 'view')),
193 193
 		);
194 194
 	}
195 195
 }
Please login to merge, or discard this patch.
includes/api/class-getpaid-rest-posts-controller.php 2 patches
Indentation   +617 added lines, -617 removed lines patch added patch discarded remove patch
@@ -18,626 +18,626 @@
 block discarded – undo
18 18
 class GetPaid_REST_Posts_Controller extends GetPaid_REST_CRUD_Controller {
19 19
 
20 20
     /**
21
-	 * Post type.
22
-	 *
23
-	 * @var string
24
-	 */
25
-	protected $post_type;
26
-
27
-	/**
28
-	 * Controls visibility on frontend.
29
-	 *
30
-	 * @var string
31
-	 */
32
-	public $public = false;
33
-
34
-	/**
35
-	 * Registers the routes for the objects of the controller.
36
-	 *
37
-	 * @since 1.0.19
38
-	 *
39
-	 * @see register_rest_route()
40
-	 */
41
-	public function register_namespace_routes( $namespace ) {
42
-
43
-		parent::register_namespace_routes( $namespace );
44
-
45
-		register_rest_route(
46
-			$namespace,
47
-			'/' . $this->rest_base . '/batch',
48
-			array(
49
-				array(
50
-					'methods'             => WP_REST_Server::EDITABLE,
51
-					'callback'            => array( $this, 'batch_items' ),
52
-					'permission_callback' => array( $this, 'batch_items_permissions_check' ),
53
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
54
-				),
55
-				'schema' => array( $this, 'get_public_batch_schema' ),
56
-			)
57
-		);
58
-
59
-	}
60
-
61
-	/**
62
-	 * Check permissions of items on REST API.
63
-	 *
64
-	 * @since 1.0.19
65
-	 * @param string $context   Request context.
66
-	 * @param int    $object_id Post ID.
67
-	 * @return bool
68
-	 */
69
-	public function check_post_permissions( $context = 'read', $object_id = 0 ) {
70
-
71
-		$contexts = array(
72
-			'read'   => 'read_private_posts',
73
-			'create' => 'publish_posts',
74
-			'edit'   => 'edit_post',
75
-			'delete' => 'delete_post',
76
-			'batch'  => 'edit_others_posts',
77
-		);
78
-
79
-		$cap              = $contexts[ $context ];
80
-		$post_type_object = get_post_type_object( $this->post_type );
81
-		$permission       = current_user_can( $post_type_object->cap->$cap, $object_id );
82
-
83
-		return apply_filters( 'getpaid_rest_check_permissions', $permission, $context, $object_id, $this->post_type );
84
-	}
85
-
86
-	/**
87
-	 * Check if a given request has access to read items.
88
-	 *
89
-	 * @param  WP_REST_Request $request Full details about the request.
90
-	 * @return WP_Error|boolean
91
-	 */
92
-	public function get_items_permissions_check( $request ) {
93
-		return $this->check_post_permissions() ? true : new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
94
-	}
95
-
96
-	/**
97
-	 * Check if a given request has access to create an item.
98
-	 *
99
-	 * @param  WP_REST_Request $request Full details about the request.
100
-	 * @return WP_Error|boolean
101
-	 */
102
-	public function create_item_permissions_check( $request ) {
103
-		return $this->check_post_permissions( 'create' ) ? true : new WP_Error( 'rest_cannot_create', __( 'Sorry, you are not allowed to create resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
104
-	}
105
-
106
-	/**
107
-	 * Check if a given request has access to read an item.
108
-	 *
109
-	 * @param  WP_REST_Request $request Full details about the request.
110
-	 * @return WP_Error|boolean
111
-	 */
112
-	public function get_item_permissions_check( $request ) {
113
-		$post = get_post( (int) $request['id'] );
114
-
115
-		if ( $post && ! $this->check_post_permissions( 'read', $post->ID ) ) {
116
-			return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot view this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
117
-		}
118
-
119
-		return true;
120
-	}
121
-
122
-	/**
123
-	 * Check if a given request has access to update an item.
124
-	 *
125
-	 * @param  WP_REST_Request $request Full details about the request.
126
-	 * @return WP_Error|boolean
127
-	 */
128
-	public function update_item_permissions_check( $request ) {
129
-		$post = get_post( (int) $request['id'] );
130
-
131
-		if ( $post && ! $this->check_post_permissions( 'edit', $post->ID ) ) {
132
-			return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you are not allowed to edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
133
-		}
134
-
135
-		return true;
136
-	}
137
-
138
-	/**
139
-	 * Check if a given request has access to delete an item.
140
-	 *
141
-	 * @param  WP_REST_Request $request Full details about the request.
142
-	 * @return bool|WP_Error
143
-	 */
144
-	public function delete_item_permissions_check( $request ) {
145
-		$post = get_post( (int) $request['id'] );
146
-
147
-		if ( $post && ! $this->check_post_permissions( 'delete', $post->ID ) ) {
148
-			return new WP_Error( 'rest_cannot_delete', __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
149
-		}
150
-
151
-		return true;
152
-	}
153
-
154
-	/**
155
-	 * Check if a given request has access batch create, update and delete items.
156
-	 *
157
-	 * @param  WP_REST_Request $request Full details about the request.
158
-	 *
159
-	 * @return boolean|WP_Error
160
-	 */
161
-	public function batch_items_permissions_check( $request ) {
162
-		return $this->check_post_permissions( 'batch' ) ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
163
-	}
164
-
165
-	/**
166
-	 * @deprecated
167
-	 */
168
-	public function get_post( $object_id ) {
169
-		return $this->get_object( $object_id );
21
+     * Post type.
22
+     *
23
+     * @var string
24
+     */
25
+    protected $post_type;
26
+
27
+    /**
28
+     * Controls visibility on frontend.
29
+     *
30
+     * @var string
31
+     */
32
+    public $public = false;
33
+
34
+    /**
35
+     * Registers the routes for the objects of the controller.
36
+     *
37
+     * @since 1.0.19
38
+     *
39
+     * @see register_rest_route()
40
+     */
41
+    public function register_namespace_routes( $namespace ) {
42
+
43
+        parent::register_namespace_routes( $namespace );
44
+
45
+        register_rest_route(
46
+            $namespace,
47
+            '/' . $this->rest_base . '/batch',
48
+            array(
49
+                array(
50
+                    'methods'             => WP_REST_Server::EDITABLE,
51
+                    'callback'            => array( $this, 'batch_items' ),
52
+                    'permission_callback' => array( $this, 'batch_items_permissions_check' ),
53
+                    'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
54
+                ),
55
+                'schema' => array( $this, 'get_public_batch_schema' ),
56
+            )
57
+        );
58
+
59
+    }
60
+
61
+    /**
62
+     * Check permissions of items on REST API.
63
+     *
64
+     * @since 1.0.19
65
+     * @param string $context   Request context.
66
+     * @param int    $object_id Post ID.
67
+     * @return bool
68
+     */
69
+    public function check_post_permissions( $context = 'read', $object_id = 0 ) {
70
+
71
+        $contexts = array(
72
+            'read'   => 'read_private_posts',
73
+            'create' => 'publish_posts',
74
+            'edit'   => 'edit_post',
75
+            'delete' => 'delete_post',
76
+            'batch'  => 'edit_others_posts',
77
+        );
78
+
79
+        $cap              = $contexts[ $context ];
80
+        $post_type_object = get_post_type_object( $this->post_type );
81
+        $permission       = current_user_can( $post_type_object->cap->$cap, $object_id );
82
+
83
+        return apply_filters( 'getpaid_rest_check_permissions', $permission, $context, $object_id, $this->post_type );
84
+    }
85
+
86
+    /**
87
+     * Check if a given request has access to read items.
88
+     *
89
+     * @param  WP_REST_Request $request Full details about the request.
90
+     * @return WP_Error|boolean
91
+     */
92
+    public function get_items_permissions_check( $request ) {
93
+        return $this->check_post_permissions() ? true : new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
94
+    }
95
+
96
+    /**
97
+     * Check if a given request has access to create an item.
98
+     *
99
+     * @param  WP_REST_Request $request Full details about the request.
100
+     * @return WP_Error|boolean
101
+     */
102
+    public function create_item_permissions_check( $request ) {
103
+        return $this->check_post_permissions( 'create' ) ? true : new WP_Error( 'rest_cannot_create', __( 'Sorry, you are not allowed to create resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
104
+    }
105
+
106
+    /**
107
+     * Check if a given request has access to read an item.
108
+     *
109
+     * @param  WP_REST_Request $request Full details about the request.
110
+     * @return WP_Error|boolean
111
+     */
112
+    public function get_item_permissions_check( $request ) {
113
+        $post = get_post( (int) $request['id'] );
114
+
115
+        if ( $post && ! $this->check_post_permissions( 'read', $post->ID ) ) {
116
+            return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot view this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
117
+        }
118
+
119
+        return true;
120
+    }
121
+
122
+    /**
123
+     * Check if a given request has access to update an item.
124
+     *
125
+     * @param  WP_REST_Request $request Full details about the request.
126
+     * @return WP_Error|boolean
127
+     */
128
+    public function update_item_permissions_check( $request ) {
129
+        $post = get_post( (int) $request['id'] );
130
+
131
+        if ( $post && ! $this->check_post_permissions( 'edit', $post->ID ) ) {
132
+            return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you are not allowed to edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
133
+        }
134
+
135
+        return true;
136
+    }
137
+
138
+    /**
139
+     * Check if a given request has access to delete an item.
140
+     *
141
+     * @param  WP_REST_Request $request Full details about the request.
142
+     * @return bool|WP_Error
143
+     */
144
+    public function delete_item_permissions_check( $request ) {
145
+        $post = get_post( (int) $request['id'] );
146
+
147
+        if ( $post && ! $this->check_post_permissions( 'delete', $post->ID ) ) {
148
+            return new WP_Error( 'rest_cannot_delete', __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
149
+        }
150
+
151
+        return true;
152
+    }
153
+
154
+    /**
155
+     * Check if a given request has access batch create, update and delete items.
156
+     *
157
+     * @param  WP_REST_Request $request Full details about the request.
158
+     *
159
+     * @return boolean|WP_Error
160
+     */
161
+    public function batch_items_permissions_check( $request ) {
162
+        return $this->check_post_permissions( 'batch' ) ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
163
+    }
164
+
165
+    /**
166
+     * @deprecated
167
+     */
168
+    public function get_post( $object_id ) {
169
+        return $this->get_object( $object_id );
170
+    }
171
+
172
+    /**
173
+     * Get a single object.
174
+     *
175
+     * @param WP_REST_Request $request Full details about the request.
176
+     * @return WP_Error|WP_REST_Response
177
+     */
178
+    public function get_item( $request ) {
179
+
180
+        // Fetch item.
181
+        $response = parent::get_item( $request );
182
+
183
+        // (Maybe) add a link to the html pagee.
184
+        if ( $this->public && ! is_wp_error( $response ) ) {
185
+            $response->link_header( 'alternate', get_permalink( $this->data_object->get_id() ), array( 'type' => 'text/html' ) );
186
+        }
187
+
188
+        return $response;
189
+    }
190
+
191
+    /**
192
+     * Create a single object.
193
+     *
194
+     * @param WP_REST_Request $request Full details about the request.
195
+     * @return WP_Error|WP_REST_Response
196
+     */
197
+    public function create_item( $request ) {
198
+
199
+        // Create item.
200
+        $response = parent::create_item( $request );
201
+
202
+        // Fire a hook after an item is created.
203
+        if ( ! is_wp_error( $response ) ) {
204
+
205
+            /**
206
+             * Fires after a single item is created or updated via the REST API.
207
+             *
208
+             * @param WP_Post         $post      Post object.
209
+             * @param WP_REST_Request $request   Request object.
210
+             * @param boolean         $creating  True when creating item, false when updating.
211
+             */
212
+            do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, true );
213
+
214
+        }
215
+
216
+        return $response;
217
+
170 218
     }
171 219
 
172
-	/**
173
-	 * Get a single object.
174
-	 *
175
-	 * @param WP_REST_Request $request Full details about the request.
176
-	 * @return WP_Error|WP_REST_Response
177
-	 */
178
-	public function get_item( $request ) {
179
-
180
-		// Fetch item.
181
-		$response = parent::get_item( $request );
182
-
183
-		// (Maybe) add a link to the html pagee.
184
-		if ( $this->public && ! is_wp_error( $response ) ) {
185
-			$response->link_header( 'alternate', get_permalink( $this->data_object->get_id() ), array( 'type' => 'text/html' ) );
186
-		}
187
-
188
-		return $response;
189
-	}
190
-
191
-	/**
192
-	 * Create a single object.
193
-	 *
194
-	 * @param WP_REST_Request $request Full details about the request.
195
-	 * @return WP_Error|WP_REST_Response
196
-	 */
197
-	public function create_item( $request ) {
198
-
199
-		// Create item.
200
-		$response = parent::create_item( $request );
201
-
202
-		// Fire a hook after an item is created.
203
-		if ( ! is_wp_error( $response ) ) {
204
-
205
-			/**
206
-			 * Fires after a single item is created or updated via the REST API.
207
-			 *
208
-			 * @param WP_Post         $post      Post object.
209
-			 * @param WP_REST_Request $request   Request object.
210
-			 * @param boolean         $creating  True when creating item, false when updating.
211
-			 */
212
-			do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, true );
213
-
214
-		}
215
-
216
-		return $response;
217
-
218
-	}
219
-
220
-	/**
221
-	 * Update a single object.
222
-	 *
223
-	 * @param WP_REST_Request $request Full details about the request.
224
-	 * @return WP_Error|WP_REST_Response
225
-	 */
226
-	public function update_item( $request ) {
227
-
228
-		// Create item.
229
-		$response = parent::update_item( $request );
230
-
231
-		// Fire a hook after an item is created.
232
-		if ( ! is_wp_error( $response ) ) {
233
-
234
-			/**
235
-			 * Fires after a single item is created or updated via the REST API.
236
-			 *
237
-			 * @param WP_Post         $post      Post object.
238
-			 * @param WP_REST_Request $request   Request object.
239
-			 * @param boolean         $creating  True when creating item, false when updating.
240
-			 */
241
-			do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, false );
242
-
243
-		}
244
-
245
-		return $response;
246
-
247
-	}
248
-
249
-	/**
250
-	 * Get a collection of objects.
251
-	 *
252
-	 * @param WP_REST_Request $request Full details about the request.
253
-	 * @return WP_Error|WP_REST_Response
254
-	 */
255
-	public function get_items( $request ) {
256
-
257
-		$args                         = array();
258
-		$args['offset']               = $request['offset'];
259
-		$args['order']                = $request['order'];
260
-		$args['orderby']              = $request['orderby'];
261
-		$args['paged']                = $request['page'];
262
-		$args['post__in']             = $request['include'];
263
-		$args['post__not_in']         = $request['exclude'];
264
-		$args['posts_per_page']       = $request['per_page'];
265
-		$args['name']                 = $request['slug'];
266
-		$args['post_parent__in']      = $request['parent'];
267
-		$args['post_parent__not_in']  = $request['parent_exclude'];
268
-		$args['s']                    = $request['search'];
269
-		$args['post_status']          = wpinv_parse_list( $request['status'] );
270
-
271
-		$args['date_query'] = array();
272
-
273
-		// Set before into date query. Date query must be specified as an array of an array.
274
-		if ( isset( $request['before'] ) ) {
275
-			$args['date_query'][0]['before'] = $request['before'];
276
-		}
277
-
278
-		// Set after into date query. Date query must be specified as an array of an array.
279
-		if ( isset( $request['after'] ) ) {
280
-			$args['date_query'][0]['after'] = $request['after'];
281
-		}
282
-
283
-		// Force the post_type & fields arguments, since they're not a user input variable.
284
-		$args['post_type'] = $this->post_type;
285
-		$args['fields']    = 'ids';
286
-
287
-		// Filter the query arguments for a request.
288
-		$args       = apply_filters( "getpaid_rest_{$this->post_type}_query", $args, $request );
289
-		$query_args = $this->prepare_items_query( $args, $request );
290
-
291
-		$posts_query = new WP_Query();
292
-		$query_result = $posts_query->query( $query_args );
293
-
294
-		$posts = array();
295
-		foreach ( $query_result as $post_id ) {
296
-			if ( ! $this->check_post_permissions( 'read', $post_id ) ) {
297
-				continue;
298
-			}
299
-
300
-			$data    = $this->prepare_item_for_response( $this->get_object( $post_id ), $request );
301
-			$posts[] = $this->prepare_response_for_collection( $data );
302
-		}
303
-
304
-		$page        = (int) $query_args['paged'];
305
-		$total_posts = $posts_query->found_posts;
306
-
307
-		if ( $total_posts < 1 ) {
308
-			// Out-of-bounds, run the query again without LIMIT for total count.
309
-			unset( $query_args['paged'] );
310
-			$count_query = new WP_Query();
311
-			$count_query->query( $query_args );
312
-			$total_posts = $count_query->found_posts;
313
-		}
314
-
315
-		$max_pages = ceil( $total_posts / (int) $query_args['posts_per_page'] );
316
-
317
-		$response = rest_ensure_response( $posts );
318
-		$response->header( 'X-WP-Total', (int) $total_posts );
319
-		$response->header( 'X-WP-TotalPages', (int) $max_pages );
320
-
321
-		$request_params = $request->get_query_params();
322
-		$base = add_query_arg( $request_params, rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ) );
323
-
324
-		if ( $page > 1 ) {
325
-			$prev_page = $page - 1;
326
-			if ( $prev_page > $max_pages ) {
327
-				$prev_page = $max_pages;
328
-			}
329
-			$prev_link = add_query_arg( 'page', $prev_page, $base );
330
-			$response->link_header( 'prev', $prev_link );
331
-		}
332
-		if ( $max_pages > $page ) {
333
-			$next_page = $page + 1;
334
-			$next_link = add_query_arg( 'page', $next_page, $base );
335
-			$response->link_header( 'next', $next_link );
336
-		}
337
-
338
-		return $response;
339
-	}
340
-
341
-	/**
342
-	 * Delete a single item.
343
-	 *
344
-	 * @param WP_REST_Request $request Full details about the request.
345
-	 * @return WP_REST_Response|WP_Error
346
-	 */
347
-	public function delete_item( $request ) {
348
-
349
-		// Fetch the item.
350
-		$item = $this->get_object( $request['id'] );
351
-		if ( is_wp_error( $item ) ) {
352
-			return $item;
353
-		}
354
-
355
-		$supports_trash = EMPTY_TRASH_DAYS > 0;
356
-		$force          = $supports_trash && (bool) $request['force'];
357
-
358
-		if ( ! $this->check_post_permissions( 'delete', $item->ID ) ) {
359
-			return new WP_Error( 'cannot_delete', __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
360
-		}
361
-
362
-		$request->set_param( 'context', 'edit' );
363
-		$response = $this->prepare_item_for_response( $item, $request );
364
-
365
-		if ( ! wp_delete_post( $item->ID, $force ) ) {
366
-			return new WP_Error( 'rest_cannot_delete', sprintf( __( 'The resource cannot be deleted.', 'invoicing' ), $this->post_type ), array( 'status' => 500 ) );
367
-		}
368
-
369
-		return $response;
370
-	}
371
-
372
-	/**
373
-	 * Prepare links for the request.
374
-	 *
375
-	 * @param GetPaid_Data    $object GetPaid_Data object.
376
-	 * @return array Links for the given object.
377
-	 */
378
-	protected function prepare_links( $object ) {
379
-
380
-		$links = parent::prepare_links( $object );
381
-
382
-		if ( is_callable( array( $object, 'get_user_id' ) ) ) {
383
-			$links['user'] = array(
384
-				'href'       => rest_url( 'wp/v2/users/' . call_user_func( array( $object, 'get_user_id' ) ) ),
385
-				'embeddable' => true,
386
-			);
387
-		}
388
-
389
-		if ( is_callable( array( $object, 'get_owner' ) ) ) {
390
-			$links['owner']  = array(
391
-				'href'       => rest_url( 'wp/v2/users/' . call_user_func( array( $object, 'get_owner' ) ) ),
392
-				'embeddable' => true,
393
-			);
394
-		}
395
-
396
-		if ( is_callable( array( $object, 'get_parent_id' ) ) && call_user_func( array( $object, 'get_parent_id' ) ) ) {
397
-			$links['parent']  = array(
398
-				'href'       => rest_url( "$this->namespace/$this->rest_base/" . call_user_func( array( $object, 'get_parent_id' ) ) ),
399
-				'embeddable' => true,
400
-			);
401
-		}
402
-
403
-		return $links;
404
-	}
405
-
406
-	/**
407
-	 * Determine the allowed query_vars for a get_items() response and
408
-	 * prepare for WP_Query.
409
-	 *
410
-	 * @param array           $prepared_args Prepared arguments.
411
-	 * @param WP_REST_Request $request Request object.
412
-	 * @return array          $query_args
413
-	 */
414
-	protected function prepare_items_query( $prepared_args = array(), $request = null ) {
415
-
416
-		$valid_vars = array_flip( $this->get_allowed_query_vars() );
417
-		$query_args = array();
418
-		foreach ( $valid_vars as $var => $index ) {
419
-			if ( isset( $prepared_args[ $var ] ) ) {
420
-				$query_args[ $var ] = apply_filters( "getpaid_rest_query_var-{$var}", $prepared_args[ $var ], $index );
421
-			}
422
-		}
423
-
424
-		$query_args['ignore_sticky_posts'] = true;
425
-
426
-		if ( 'include' === $query_args['orderby'] ) {
427
-			$query_args['orderby'] = 'post__in';
428
-		} elseif ( 'id' === $query_args['orderby'] ) {
429
-			$query_args['orderby'] = 'ID'; // ID must be capitalized.
430
-		} elseif ( 'slug' === $query_args['orderby'] ) {
431
-			$query_args['orderby'] = 'name';
432
-		}
433
-
434
-		return apply_filters( 'getpaid_rest_prepare_items_query', $query_args, $request, $this );
435
-
436
-	}
437
-
438
-	/**
439
-	 * Get all the WP Query vars that are allowed for the API request.
440
-	 *
441
-	 * @return array
442
-	 */
443
-	protected function get_allowed_query_vars() {
444
-		global $wp;
445
-
446
-		/**
447
-		 * Filter the publicly allowed query vars.
448
-		 *
449
-		 * Allows adjusting of the default query vars that are made public.
450
-		 *
451
-		 * @param array  Array of allowed WP_Query query vars.
452
-		 */
453
-		$valid_vars = apply_filters( 'query_vars', $wp->public_query_vars );
454
-
455
-		$post_type_obj = get_post_type_object( $this->post_type );
456
-		if ( current_user_can( $post_type_obj->cap->edit_posts ) ) {
457
-			$private = apply_filters( 'getpaid_rest_private_query_vars', $wp->private_query_vars );
458
-			$valid_vars = array_merge( $valid_vars, $private );
459
-		}
460
-
461
-		// Define our own in addition to WP's normal vars.
462
-		$rest_valid = array(
463
-			'post_status',
464
-			'date_query',
465
-			'ignore_sticky_posts',
466
-			'offset',
467
-			'post__in',
468
-			'post__not_in',
469
-			'post_parent',
470
-			'post_parent__in',
471
-			'post_parent__not_in',
472
-			'posts_per_page',
473
-			'meta_query',
474
-			'tax_query',
475
-			'meta_key',
476
-			'meta_value',
477
-			'meta_compare',
478
-			'meta_value_num',
479
-		);
480
-		$valid_vars = array_merge( $valid_vars, $rest_valid );
481
-
482
-		// Filter allowed query vars for the REST API.
483
-		$valid_vars = apply_filters( 'getpaid_rest_query_vars', $valid_vars, $this );
484
-
485
-		return $valid_vars;
486
-	}
487
-
488
-	/**
489
-	 * Get the query params for collections of attachments.
490
-	 *
491
-	 * @return array
492
-	 */
493
-	public function get_collection_params() {
494
-
495
-		return array_merge(
496
-			parent::get_collection_params(),
497
-			array(
498
-				'status'  => array(
499
-					'default'           => $this->get_post_statuses(),
500
-					'description'       => __( 'Limit result set to resources assigned one or more statuses.', 'invoicing' ),
501
-					'type'              => array( 'array', 'string' ),
502
-					'items'             => array(
503
-						'enum' => $this->get_post_statuses(),
504
-						'type' => 'string',
505
-					),
506
-					'validate_callback' => 'rest_validate_request_arg',
507
-					'sanitize_callback' => array( $this, 'sanitize_post_statuses' ),
508
-				),
509
-				'after'   => array(
510
-					'description'       => __( 'Limit response to resources created after a given ISO8601 compliant date.', 'invoicing' ),
511
-					'type'              => 'string',
512
-					'format'            => 'string',
513
-					'validate_callback' => 'rest_validate_request_arg',
514
-					'sanitize_callback' => 'sanitize_text_field',
515
-				),
516
-				'before'  => array(
517
-					'description'       => __( 'Limit response to resources created before a given ISO8601 compliant date.', 'invoicing' ),
518
-					'type'              => 'string',
519
-					'format'            => 'string',
520
-					'validate_callback' => 'rest_validate_request_arg',
521
-					'sanitize_callback' => 'sanitize_text_field',
522
-				),
523
-				'exclude' => array(
524
-					'description'       => __( 'Ensure result set excludes specific IDs.', 'invoicing' ),
525
-					'type'              => 'array',
526
-					'items'             => array(
527
-						'type' => 'integer',
528
-					),
529
-					'default'           => array(),
530
-					'sanitize_callback' => 'wp_parse_id_list',
531
-					'validate_callback' => 'rest_validate_request_arg',
532
-				),
533
-				'include' => array(
534
-					'description'       => __( 'Limit result set to specific ids.', 'invoicing' ),
535
-					'type'              => 'array',
536
-					'items'             => array(
537
-						'type' => 'integer',
538
-					),
539
-					'default'           => array(),
540
-					'sanitize_callback' => 'wp_parse_id_list',
541
-					'validate_callback' => 'rest_validate_request_arg',
542
-				),
543
-				'offset'  => array(
544
-					'description'       => __( 'Offset the result set by a specific number of items.', 'invoicing' ),
545
-					'type'              => 'integer',
546
-					'sanitize_callback' => 'absint',
547
-					'validate_callback' => 'rest_validate_request_arg',
548
-				),
549
-				'order'   => array(
550
-					'description'       => __( 'Order sort attribute ascending or descending.', 'invoicing' ),
551
-					'type'              => 'string',
552
-					'default'           => 'desc',
553
-					'enum'              => array( 'asc', 'desc' ),
554
-					'validate_callback' => 'rest_validate_request_arg',
555
-				),
556
-				'orderby' => array(
557
-					'description'       => __( 'Sort collection by object attribute.', 'invoicing' ),
558
-					'type'              => 'string',
559
-					'default'           => 'date',
560
-					'enum'              => array(
561
-						'date',
562
-						'id',
563
-						'include',
564
-						'title',
565
-						'slug',
566
-						'modified',
567
-					),
568
-					'validate_callback' => 'rest_validate_request_arg',
569
-				),
570
-			)
571
-		);
572
-	}
573
-
574
-	/**
575
-	 * Retrieves the items's schema, conforming to JSON Schema.
576
-	 *
577
-	 * @since 1.0.19
578
-	 *
579
-	 * @return array Item schema data.
580
-	 */
581
-	public function get_item_schema() {
582
-
583
-		// Maybe retrieve the schema from cache.
584
-		if ( ! empty( $this->schema ) ) {
585
-			return $this->add_additional_fields_schema( $this->schema );
586
-		}
587
-
588
-		$type   = str_replace( 'wpi_', '', $this->post_type );
589
-		$schema = array(
590
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
591
-			'title'      => $this->post_type,
592
-			'type'       => 'object',
593
-			'properties' => wpinv_get_data( "$type-schema" ),
594
-		);
595
-
596
-		// Filters the invoice schema for the REST API.
220
+    /**
221
+     * Update a single object.
222
+     *
223
+     * @param WP_REST_Request $request Full details about the request.
224
+     * @return WP_Error|WP_REST_Response
225
+     */
226
+    public function update_item( $request ) {
227
+
228
+        // Create item.
229
+        $response = parent::update_item( $request );
230
+
231
+        // Fire a hook after an item is created.
232
+        if ( ! is_wp_error( $response ) ) {
233
+
234
+            /**
235
+             * Fires after a single item is created or updated via the REST API.
236
+             *
237
+             * @param WP_Post         $post      Post object.
238
+             * @param WP_REST_Request $request   Request object.
239
+             * @param boolean         $creating  True when creating item, false when updating.
240
+             */
241
+            do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, false );
242
+
243
+        }
244
+
245
+        return $response;
246
+
247
+    }
248
+
249
+    /**
250
+     * Get a collection of objects.
251
+     *
252
+     * @param WP_REST_Request $request Full details about the request.
253
+     * @return WP_Error|WP_REST_Response
254
+     */
255
+    public function get_items( $request ) {
256
+
257
+        $args                         = array();
258
+        $args['offset']               = $request['offset'];
259
+        $args['order']                = $request['order'];
260
+        $args['orderby']              = $request['orderby'];
261
+        $args['paged']                = $request['page'];
262
+        $args['post__in']             = $request['include'];
263
+        $args['post__not_in']         = $request['exclude'];
264
+        $args['posts_per_page']       = $request['per_page'];
265
+        $args['name']                 = $request['slug'];
266
+        $args['post_parent__in']      = $request['parent'];
267
+        $args['post_parent__not_in']  = $request['parent_exclude'];
268
+        $args['s']                    = $request['search'];
269
+        $args['post_status']          = wpinv_parse_list( $request['status'] );
270
+
271
+        $args['date_query'] = array();
272
+
273
+        // Set before into date query. Date query must be specified as an array of an array.
274
+        if ( isset( $request['before'] ) ) {
275
+            $args['date_query'][0]['before'] = $request['before'];
276
+        }
277
+
278
+        // Set after into date query. Date query must be specified as an array of an array.
279
+        if ( isset( $request['after'] ) ) {
280
+            $args['date_query'][0]['after'] = $request['after'];
281
+        }
282
+
283
+        // Force the post_type & fields arguments, since they're not a user input variable.
284
+        $args['post_type'] = $this->post_type;
285
+        $args['fields']    = 'ids';
286
+
287
+        // Filter the query arguments for a request.
288
+        $args       = apply_filters( "getpaid_rest_{$this->post_type}_query", $args, $request );
289
+        $query_args = $this->prepare_items_query( $args, $request );
290
+
291
+        $posts_query = new WP_Query();
292
+        $query_result = $posts_query->query( $query_args );
293
+
294
+        $posts = array();
295
+        foreach ( $query_result as $post_id ) {
296
+            if ( ! $this->check_post_permissions( 'read', $post_id ) ) {
297
+                continue;
298
+            }
299
+
300
+            $data    = $this->prepare_item_for_response( $this->get_object( $post_id ), $request );
301
+            $posts[] = $this->prepare_response_for_collection( $data );
302
+        }
303
+
304
+        $page        = (int) $query_args['paged'];
305
+        $total_posts = $posts_query->found_posts;
306
+
307
+        if ( $total_posts < 1 ) {
308
+            // Out-of-bounds, run the query again without LIMIT for total count.
309
+            unset( $query_args['paged'] );
310
+            $count_query = new WP_Query();
311
+            $count_query->query( $query_args );
312
+            $total_posts = $count_query->found_posts;
313
+        }
314
+
315
+        $max_pages = ceil( $total_posts / (int) $query_args['posts_per_page'] );
316
+
317
+        $response = rest_ensure_response( $posts );
318
+        $response->header( 'X-WP-Total', (int) $total_posts );
319
+        $response->header( 'X-WP-TotalPages', (int) $max_pages );
320
+
321
+        $request_params = $request->get_query_params();
322
+        $base = add_query_arg( $request_params, rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ) );
323
+
324
+        if ( $page > 1 ) {
325
+            $prev_page = $page - 1;
326
+            if ( $prev_page > $max_pages ) {
327
+                $prev_page = $max_pages;
328
+            }
329
+            $prev_link = add_query_arg( 'page', $prev_page, $base );
330
+            $response->link_header( 'prev', $prev_link );
331
+        }
332
+        if ( $max_pages > $page ) {
333
+            $next_page = $page + 1;
334
+            $next_link = add_query_arg( 'page', $next_page, $base );
335
+            $response->link_header( 'next', $next_link );
336
+        }
337
+
338
+        return $response;
339
+    }
340
+
341
+    /**
342
+     * Delete a single item.
343
+     *
344
+     * @param WP_REST_Request $request Full details about the request.
345
+     * @return WP_REST_Response|WP_Error
346
+     */
347
+    public function delete_item( $request ) {
348
+
349
+        // Fetch the item.
350
+        $item = $this->get_object( $request['id'] );
351
+        if ( is_wp_error( $item ) ) {
352
+            return $item;
353
+        }
354
+
355
+        $supports_trash = EMPTY_TRASH_DAYS > 0;
356
+        $force          = $supports_trash && (bool) $request['force'];
357
+
358
+        if ( ! $this->check_post_permissions( 'delete', $item->ID ) ) {
359
+            return new WP_Error( 'cannot_delete', __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
360
+        }
361
+
362
+        $request->set_param( 'context', 'edit' );
363
+        $response = $this->prepare_item_for_response( $item, $request );
364
+
365
+        if ( ! wp_delete_post( $item->ID, $force ) ) {
366
+            return new WP_Error( 'rest_cannot_delete', sprintf( __( 'The resource cannot be deleted.', 'invoicing' ), $this->post_type ), array( 'status' => 500 ) );
367
+        }
368
+
369
+        return $response;
370
+    }
371
+
372
+    /**
373
+     * Prepare links for the request.
374
+     *
375
+     * @param GetPaid_Data    $object GetPaid_Data object.
376
+     * @return array Links for the given object.
377
+     */
378
+    protected function prepare_links( $object ) {
379
+
380
+        $links = parent::prepare_links( $object );
381
+
382
+        if ( is_callable( array( $object, 'get_user_id' ) ) ) {
383
+            $links['user'] = array(
384
+                'href'       => rest_url( 'wp/v2/users/' . call_user_func( array( $object, 'get_user_id' ) ) ),
385
+                'embeddable' => true,
386
+            );
387
+        }
388
+
389
+        if ( is_callable( array( $object, 'get_owner' ) ) ) {
390
+            $links['owner']  = array(
391
+                'href'       => rest_url( 'wp/v2/users/' . call_user_func( array( $object, 'get_owner' ) ) ),
392
+                'embeddable' => true,
393
+            );
394
+        }
395
+
396
+        if ( is_callable( array( $object, 'get_parent_id' ) ) && call_user_func( array( $object, 'get_parent_id' ) ) ) {
397
+            $links['parent']  = array(
398
+                'href'       => rest_url( "$this->namespace/$this->rest_base/" . call_user_func( array( $object, 'get_parent_id' ) ) ),
399
+                'embeddable' => true,
400
+            );
401
+        }
402
+
403
+        return $links;
404
+    }
405
+
406
+    /**
407
+     * Determine the allowed query_vars for a get_items() response and
408
+     * prepare for WP_Query.
409
+     *
410
+     * @param array           $prepared_args Prepared arguments.
411
+     * @param WP_REST_Request $request Request object.
412
+     * @return array          $query_args
413
+     */
414
+    protected function prepare_items_query( $prepared_args = array(), $request = null ) {
415
+
416
+        $valid_vars = array_flip( $this->get_allowed_query_vars() );
417
+        $query_args = array();
418
+        foreach ( $valid_vars as $var => $index ) {
419
+            if ( isset( $prepared_args[ $var ] ) ) {
420
+                $query_args[ $var ] = apply_filters( "getpaid_rest_query_var-{$var}", $prepared_args[ $var ], $index );
421
+            }
422
+        }
423
+
424
+        $query_args['ignore_sticky_posts'] = true;
425
+
426
+        if ( 'include' === $query_args['orderby'] ) {
427
+            $query_args['orderby'] = 'post__in';
428
+        } elseif ( 'id' === $query_args['orderby'] ) {
429
+            $query_args['orderby'] = 'ID'; // ID must be capitalized.
430
+        } elseif ( 'slug' === $query_args['orderby'] ) {
431
+            $query_args['orderby'] = 'name';
432
+        }
433
+
434
+        return apply_filters( 'getpaid_rest_prepare_items_query', $query_args, $request, $this );
435
+
436
+    }
437
+
438
+    /**
439
+     * Get all the WP Query vars that are allowed for the API request.
440
+     *
441
+     * @return array
442
+     */
443
+    protected function get_allowed_query_vars() {
444
+        global $wp;
445
+
446
+        /**
447
+         * Filter the publicly allowed query vars.
448
+         *
449
+         * Allows adjusting of the default query vars that are made public.
450
+         *
451
+         * @param array  Array of allowed WP_Query query vars.
452
+         */
453
+        $valid_vars = apply_filters( 'query_vars', $wp->public_query_vars );
454
+
455
+        $post_type_obj = get_post_type_object( $this->post_type );
456
+        if ( current_user_can( $post_type_obj->cap->edit_posts ) ) {
457
+            $private = apply_filters( 'getpaid_rest_private_query_vars', $wp->private_query_vars );
458
+            $valid_vars = array_merge( $valid_vars, $private );
459
+        }
460
+
461
+        // Define our own in addition to WP's normal vars.
462
+        $rest_valid = array(
463
+            'post_status',
464
+            'date_query',
465
+            'ignore_sticky_posts',
466
+            'offset',
467
+            'post__in',
468
+            'post__not_in',
469
+            'post_parent',
470
+            'post_parent__in',
471
+            'post_parent__not_in',
472
+            'posts_per_page',
473
+            'meta_query',
474
+            'tax_query',
475
+            'meta_key',
476
+            'meta_value',
477
+            'meta_compare',
478
+            'meta_value_num',
479
+        );
480
+        $valid_vars = array_merge( $valid_vars, $rest_valid );
481
+
482
+        // Filter allowed query vars for the REST API.
483
+        $valid_vars = apply_filters( 'getpaid_rest_query_vars', $valid_vars, $this );
484
+
485
+        return $valid_vars;
486
+    }
487
+
488
+    /**
489
+     * Get the query params for collections of attachments.
490
+     *
491
+     * @return array
492
+     */
493
+    public function get_collection_params() {
494
+
495
+        return array_merge(
496
+            parent::get_collection_params(),
497
+            array(
498
+                'status'  => array(
499
+                    'default'           => $this->get_post_statuses(),
500
+                    'description'       => __( 'Limit result set to resources assigned one or more statuses.', 'invoicing' ),
501
+                    'type'              => array( 'array', 'string' ),
502
+                    'items'             => array(
503
+                        'enum' => $this->get_post_statuses(),
504
+                        'type' => 'string',
505
+                    ),
506
+                    'validate_callback' => 'rest_validate_request_arg',
507
+                    'sanitize_callback' => array( $this, 'sanitize_post_statuses' ),
508
+                ),
509
+                'after'   => array(
510
+                    'description'       => __( 'Limit response to resources created after a given ISO8601 compliant date.', 'invoicing' ),
511
+                    'type'              => 'string',
512
+                    'format'            => 'string',
513
+                    'validate_callback' => 'rest_validate_request_arg',
514
+                    'sanitize_callback' => 'sanitize_text_field',
515
+                ),
516
+                'before'  => array(
517
+                    'description'       => __( 'Limit response to resources created before a given ISO8601 compliant date.', 'invoicing' ),
518
+                    'type'              => 'string',
519
+                    'format'            => 'string',
520
+                    'validate_callback' => 'rest_validate_request_arg',
521
+                    'sanitize_callback' => 'sanitize_text_field',
522
+                ),
523
+                'exclude' => array(
524
+                    'description'       => __( 'Ensure result set excludes specific IDs.', 'invoicing' ),
525
+                    'type'              => 'array',
526
+                    'items'             => array(
527
+                        'type' => 'integer',
528
+                    ),
529
+                    'default'           => array(),
530
+                    'sanitize_callback' => 'wp_parse_id_list',
531
+                    'validate_callback' => 'rest_validate_request_arg',
532
+                ),
533
+                'include' => array(
534
+                    'description'       => __( 'Limit result set to specific ids.', 'invoicing' ),
535
+                    'type'              => 'array',
536
+                    'items'             => array(
537
+                        'type' => 'integer',
538
+                    ),
539
+                    'default'           => array(),
540
+                    'sanitize_callback' => 'wp_parse_id_list',
541
+                    'validate_callback' => 'rest_validate_request_arg',
542
+                ),
543
+                'offset'  => array(
544
+                    'description'       => __( 'Offset the result set by a specific number of items.', 'invoicing' ),
545
+                    'type'              => 'integer',
546
+                    'sanitize_callback' => 'absint',
547
+                    'validate_callback' => 'rest_validate_request_arg',
548
+                ),
549
+                'order'   => array(
550
+                    'description'       => __( 'Order sort attribute ascending or descending.', 'invoicing' ),
551
+                    'type'              => 'string',
552
+                    'default'           => 'desc',
553
+                    'enum'              => array( 'asc', 'desc' ),
554
+                    'validate_callback' => 'rest_validate_request_arg',
555
+                ),
556
+                'orderby' => array(
557
+                    'description'       => __( 'Sort collection by object attribute.', 'invoicing' ),
558
+                    'type'              => 'string',
559
+                    'default'           => 'date',
560
+                    'enum'              => array(
561
+                        'date',
562
+                        'id',
563
+                        'include',
564
+                        'title',
565
+                        'slug',
566
+                        'modified',
567
+                    ),
568
+                    'validate_callback' => 'rest_validate_request_arg',
569
+                ),
570
+            )
571
+        );
572
+    }
573
+
574
+    /**
575
+     * Retrieves the items's schema, conforming to JSON Schema.
576
+     *
577
+     * @since 1.0.19
578
+     *
579
+     * @return array Item schema data.
580
+     */
581
+    public function get_item_schema() {
582
+
583
+        // Maybe retrieve the schema from cache.
584
+        if ( ! empty( $this->schema ) ) {
585
+            return $this->add_additional_fields_schema( $this->schema );
586
+        }
587
+
588
+        $type   = str_replace( 'wpi_', '', $this->post_type );
589
+        $schema = array(
590
+            '$schema'    => 'http://json-schema.org/draft-04/schema#',
591
+            'title'      => $this->post_type,
592
+            'type'       => 'object',
593
+            'properties' => wpinv_get_data( "$type-schema" ),
594
+        );
595
+
596
+        // Filters the invoice schema for the REST API.
597 597
         $schema = apply_filters( "wpinv_rest_{$type}_schema", $schema );
598 598
 
599
-		// Cache the invoice schema.
600
-		$this->schema = $schema;
601
-
602
-		return $this->add_additional_fields_schema( $this->schema );
603
-	}
604
-
605
-	/**
606
-	 * Sanitizes and validates the list of post statuses.
607
-	 *
608
-	 * @since 1.0.13
609
-	 *
610
-	 * @param string|array    $statuses  One or more post statuses.
611
-	 * @param WP_REST_Request $request   Full details about the request.
612
-	 * @param string          $parameter Additional parameter to pass to validation.
613
-	 * @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
614
-	 */
615
-	public function sanitize_post_statuses( $statuses, $request, $parameter ) {
616
-		return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() );
617
-	}
618
-
619
-	/**
620
-	 * Retrieves a valid list of post statuses.
621
-	 *
622
-	 * @since 1.0.19
623
-	 *
624
-	 * @return array A list of registered item statuses.
625
-	 */
626
-	public function get_post_statuses() {
627
-		return get_post_stati();
628
-	}
629
-
630
-	/**
631
-	 * Checks if a key should be included in a response.
632
-	 *
633
-	 * @since  1.0.19
634
-	 * @param  GetPaid_Data $object  Data object.
635
-	 * @param  string       $field_key The key to check for.
636
-	 * @return bool
637
-	 */
638
-	public function object_supports_field( $object, $field_key ) {
639
-		$supports = parent::object_supports_field( $object, $field_key );
640
-		return apply_filters( "getpaid_rest_{$this->post_type}_object_supports_key", $supports, $object, $field_key );
641
-	}
599
+        // Cache the invoice schema.
600
+        $this->schema = $schema;
601
+
602
+        return $this->add_additional_fields_schema( $this->schema );
603
+    }
604
+
605
+    /**
606
+     * Sanitizes and validates the list of post statuses.
607
+     *
608
+     * @since 1.0.13
609
+     *
610
+     * @param string|array    $statuses  One or more post statuses.
611
+     * @param WP_REST_Request $request   Full details about the request.
612
+     * @param string          $parameter Additional parameter to pass to validation.
613
+     * @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
614
+     */
615
+    public function sanitize_post_statuses( $statuses, $request, $parameter ) {
616
+        return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() );
617
+    }
618
+
619
+    /**
620
+     * Retrieves a valid list of post statuses.
621
+     *
622
+     * @since 1.0.19
623
+     *
624
+     * @return array A list of registered item statuses.
625
+     */
626
+    public function get_post_statuses() {
627
+        return get_post_stati();
628
+    }
629
+
630
+    /**
631
+     * Checks if a key should be included in a response.
632
+     *
633
+     * @since  1.0.19
634
+     * @param  GetPaid_Data $object  Data object.
635
+     * @param  string       $field_key The key to check for.
636
+     * @return bool
637
+     */
638
+    public function object_supports_field( $object, $field_key ) {
639
+        $supports = parent::object_supports_field( $object, $field_key );
640
+        return apply_filters( "getpaid_rest_{$this->post_type}_object_supports_key", $supports, $object, $field_key );
641
+    }
642 642
 
643 643
 }
Please login to merge, or discard this patch.
Spacing   +127 added lines, -127 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
  * @version 1.0.19
9 9
  */
10 10
 
11
-defined( 'ABSPATH' ) || exit;
11
+defined('ABSPATH') || exit;
12 12
 
13 13
 /**
14 14
  * GetPaid REST Posts controller class.
@@ -38,9 +38,9 @@  discard block
 block discarded – undo
38 38
 	 *
39 39
 	 * @see register_rest_route()
40 40
 	 */
41
-	public function register_namespace_routes( $namespace ) {
41
+	public function register_namespace_routes($namespace) {
42 42
 
43
-		parent::register_namespace_routes( $namespace );
43
+		parent::register_namespace_routes($namespace);
44 44
 
45 45
 		register_rest_route(
46 46
 			$namespace,
@@ -48,11 +48,11 @@  discard block
 block discarded – undo
48 48
 			array(
49 49
 				array(
50 50
 					'methods'             => WP_REST_Server::EDITABLE,
51
-					'callback'            => array( $this, 'batch_items' ),
52
-					'permission_callback' => array( $this, 'batch_items_permissions_check' ),
53
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
51
+					'callback'            => array($this, 'batch_items'),
52
+					'permission_callback' => array($this, 'batch_items_permissions_check'),
53
+					'args'                => $this->get_endpoint_args_for_item_schema(WP_REST_Server::EDITABLE),
54 54
 				),
55
-				'schema' => array( $this, 'get_public_batch_schema' ),
55
+				'schema' => array($this, 'get_public_batch_schema'),
56 56
 			)
57 57
 		);
58 58
 
@@ -66,7 +66,7 @@  discard block
 block discarded – undo
66 66
 	 * @param int    $object_id Post ID.
67 67
 	 * @return bool
68 68
 	 */
69
-	public function check_post_permissions( $context = 'read', $object_id = 0 ) {
69
+	public function check_post_permissions($context = 'read', $object_id = 0) {
70 70
 
71 71
 		$contexts = array(
72 72
 			'read'   => 'read_private_posts',
@@ -76,11 +76,11 @@  discard block
 block discarded – undo
76 76
 			'batch'  => 'edit_others_posts',
77 77
 		);
78 78
 
79
-		$cap              = $contexts[ $context ];
80
-		$post_type_object = get_post_type_object( $this->post_type );
81
-		$permission       = current_user_can( $post_type_object->cap->$cap, $object_id );
79
+		$cap              = $contexts[$context];
80
+		$post_type_object = get_post_type_object($this->post_type);
81
+		$permission       = current_user_can($post_type_object->cap->$cap, $object_id);
82 82
 
83
-		return apply_filters( 'getpaid_rest_check_permissions', $permission, $context, $object_id, $this->post_type );
83
+		return apply_filters('getpaid_rest_check_permissions', $permission, $context, $object_id, $this->post_type);
84 84
 	}
85 85
 
86 86
 	/**
@@ -89,8 +89,8 @@  discard block
 block discarded – undo
89 89
 	 * @param  WP_REST_Request $request Full details about the request.
90 90
 	 * @return WP_Error|boolean
91 91
 	 */
92
-	public function get_items_permissions_check( $request ) {
93
-		return $this->check_post_permissions() ? true : new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
92
+	public function get_items_permissions_check($request) {
93
+		return $this->check_post_permissions() ? true : new WP_Error('rest_cannot_view', __('Sorry, you cannot list resources.', 'invoicing'), array('status' => rest_authorization_required_code()));
94 94
 	}
95 95
 
96 96
 	/**
@@ -99,8 +99,8 @@  discard block
 block discarded – undo
99 99
 	 * @param  WP_REST_Request $request Full details about the request.
100 100
 	 * @return WP_Error|boolean
101 101
 	 */
102
-	public function create_item_permissions_check( $request ) {
103
-		return $this->check_post_permissions( 'create' ) ? true : new WP_Error( 'rest_cannot_create', __( 'Sorry, you are not allowed to create resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
102
+	public function create_item_permissions_check($request) {
103
+		return $this->check_post_permissions('create') ? true : new WP_Error('rest_cannot_create', __('Sorry, you are not allowed to create resources.', 'invoicing'), array('status' => rest_authorization_required_code()));
104 104
 	}
105 105
 
106 106
 	/**
@@ -109,11 +109,11 @@  discard block
 block discarded – undo
109 109
 	 * @param  WP_REST_Request $request Full details about the request.
110 110
 	 * @return WP_Error|boolean
111 111
 	 */
112
-	public function get_item_permissions_check( $request ) {
113
-		$post = get_post( (int) $request['id'] );
112
+	public function get_item_permissions_check($request) {
113
+		$post = get_post((int) $request['id']);
114 114
 
115
-		if ( $post && ! $this->check_post_permissions( 'read', $post->ID ) ) {
116
-			return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot view this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
115
+		if ($post && !$this->check_post_permissions('read', $post->ID)) {
116
+			return new WP_Error('rest_cannot_view', __('Sorry, you cannot view this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
117 117
 		}
118 118
 
119 119
 		return true;
@@ -125,11 +125,11 @@  discard block
 block discarded – undo
125 125
 	 * @param  WP_REST_Request $request Full details about the request.
126 126
 	 * @return WP_Error|boolean
127 127
 	 */
128
-	public function update_item_permissions_check( $request ) {
129
-		$post = get_post( (int) $request['id'] );
128
+	public function update_item_permissions_check($request) {
129
+		$post = get_post((int) $request['id']);
130 130
 
131
-		if ( $post && ! $this->check_post_permissions( 'edit', $post->ID ) ) {
132
-			return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you are not allowed to edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
131
+		if ($post && !$this->check_post_permissions('edit', $post->ID)) {
132
+			return new WP_Error('rest_cannot_edit', __('Sorry, you are not allowed to edit this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
133 133
 		}
134 134
 
135 135
 		return true;
@@ -141,11 +141,11 @@  discard block
 block discarded – undo
141 141
 	 * @param  WP_REST_Request $request Full details about the request.
142 142
 	 * @return bool|WP_Error
143 143
 	 */
144
-	public function delete_item_permissions_check( $request ) {
145
-		$post = get_post( (int) $request['id'] );
144
+	public function delete_item_permissions_check($request) {
145
+		$post = get_post((int) $request['id']);
146 146
 
147
-		if ( $post && ! $this->check_post_permissions( 'delete', $post->ID ) ) {
148
-			return new WP_Error( 'rest_cannot_delete', __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
147
+		if ($post && !$this->check_post_permissions('delete', $post->ID)) {
148
+			return new WP_Error('rest_cannot_delete', __('Sorry, you are not allowed to delete this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
149 149
 		}
150 150
 
151 151
 		return true;
@@ -158,15 +158,15 @@  discard block
 block discarded – undo
158 158
 	 *
159 159
 	 * @return boolean|WP_Error
160 160
 	 */
161
-	public function batch_items_permissions_check( $request ) {
162
-		return $this->check_post_permissions( 'batch' ) ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
161
+	public function batch_items_permissions_check($request) {
162
+		return $this->check_post_permissions('batch') ? true : new WP_Error('rest_cannot_batch', __('Sorry, you are not allowed to batch manipulate this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
163 163
 	}
164 164
 
165 165
 	/**
166 166
 	 * @deprecated
167 167
 	 */
168
-	public function get_post( $object_id ) {
169
-		return $this->get_object( $object_id );
168
+	public function get_post($object_id) {
169
+		return $this->get_object($object_id);
170 170
     }
171 171
 
172 172
 	/**
@@ -175,14 +175,14 @@  discard block
 block discarded – undo
175 175
 	 * @param WP_REST_Request $request Full details about the request.
176 176
 	 * @return WP_Error|WP_REST_Response
177 177
 	 */
178
-	public function get_item( $request ) {
178
+	public function get_item($request) {
179 179
 
180 180
 		// Fetch item.
181
-		$response = parent::get_item( $request );
181
+		$response = parent::get_item($request);
182 182
 
183 183
 		// (Maybe) add a link to the html pagee.
184
-		if ( $this->public && ! is_wp_error( $response ) ) {
185
-			$response->link_header( 'alternate', get_permalink( $this->data_object->get_id() ), array( 'type' => 'text/html' ) );
184
+		if ($this->public && !is_wp_error($response)) {
185
+			$response->link_header('alternate', get_permalink($this->data_object->get_id()), array('type' => 'text/html'));
186 186
 		}
187 187
 
188 188
 		return $response;
@@ -194,13 +194,13 @@  discard block
 block discarded – undo
194 194
 	 * @param WP_REST_Request $request Full details about the request.
195 195
 	 * @return WP_Error|WP_REST_Response
196 196
 	 */
197
-	public function create_item( $request ) {
197
+	public function create_item($request) {
198 198
 
199 199
 		// Create item.
200
-		$response = parent::create_item( $request );
200
+		$response = parent::create_item($request);
201 201
 
202 202
 		// Fire a hook after an item is created.
203
-		if ( ! is_wp_error( $response ) ) {
203
+		if (!is_wp_error($response)) {
204 204
 
205 205
 			/**
206 206
 			 * Fires after a single item is created or updated via the REST API.
@@ -209,7 +209,7 @@  discard block
 block discarded – undo
209 209
 			 * @param WP_REST_Request $request   Request object.
210 210
 			 * @param boolean         $creating  True when creating item, false when updating.
211 211
 			 */
212
-			do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, true );
212
+			do_action("getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, true);
213 213
 
214 214
 		}
215 215
 
@@ -223,13 +223,13 @@  discard block
 block discarded – undo
223 223
 	 * @param WP_REST_Request $request Full details about the request.
224 224
 	 * @return WP_Error|WP_REST_Response
225 225
 	 */
226
-	public function update_item( $request ) {
226
+	public function update_item($request) {
227 227
 
228 228
 		// Create item.
229
-		$response = parent::update_item( $request );
229
+		$response = parent::update_item($request);
230 230
 
231 231
 		// Fire a hook after an item is created.
232
-		if ( ! is_wp_error( $response ) ) {
232
+		if (!is_wp_error($response)) {
233 233
 
234 234
 			/**
235 235
 			 * Fires after a single item is created or updated via the REST API.
@@ -238,7 +238,7 @@  discard block
 block discarded – undo
238 238
 			 * @param WP_REST_Request $request   Request object.
239 239
 			 * @param boolean         $creating  True when creating item, false when updating.
240 240
 			 */
241
-			do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, false );
241
+			do_action("getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, false);
242 242
 
243 243
 		}
244 244
 
@@ -252,7 +252,7 @@  discard block
 block discarded – undo
252 252
 	 * @param WP_REST_Request $request Full details about the request.
253 253
 	 * @return WP_Error|WP_REST_Response
254 254
 	 */
255
-	public function get_items( $request ) {
255
+	public function get_items($request) {
256 256
 
257 257
 		$args                         = array();
258 258
 		$args['offset']               = $request['offset'];
@@ -266,17 +266,17 @@  discard block
 block discarded – undo
266 266
 		$args['post_parent__in']      = $request['parent'];
267 267
 		$args['post_parent__not_in']  = $request['parent_exclude'];
268 268
 		$args['s']                    = $request['search'];
269
-		$args['post_status']          = wpinv_parse_list( $request['status'] );
269
+		$args['post_status']          = wpinv_parse_list($request['status']);
270 270
 
271 271
 		$args['date_query'] = array();
272 272
 
273 273
 		// Set before into date query. Date query must be specified as an array of an array.
274
-		if ( isset( $request['before'] ) ) {
274
+		if (isset($request['before'])) {
275 275
 			$args['date_query'][0]['before'] = $request['before'];
276 276
 		}
277 277
 
278 278
 		// Set after into date query. Date query must be specified as an array of an array.
279
-		if ( isset( $request['after'] ) ) {
279
+		if (isset($request['after'])) {
280 280
 			$args['date_query'][0]['after'] = $request['after'];
281 281
 		}
282 282
 
@@ -285,54 +285,54 @@  discard block
 block discarded – undo
285 285
 		$args['fields']    = 'ids';
286 286
 
287 287
 		// Filter the query arguments for a request.
288
-		$args       = apply_filters( "getpaid_rest_{$this->post_type}_query", $args, $request );
289
-		$query_args = $this->prepare_items_query( $args, $request );
288
+		$args       = apply_filters("getpaid_rest_{$this->post_type}_query", $args, $request);
289
+		$query_args = $this->prepare_items_query($args, $request);
290 290
 
291 291
 		$posts_query = new WP_Query();
292
-		$query_result = $posts_query->query( $query_args );
292
+		$query_result = $posts_query->query($query_args);
293 293
 
294 294
 		$posts = array();
295
-		foreach ( $query_result as $post_id ) {
296
-			if ( ! $this->check_post_permissions( 'read', $post_id ) ) {
295
+		foreach ($query_result as $post_id) {
296
+			if (!$this->check_post_permissions('read', $post_id)) {
297 297
 				continue;
298 298
 			}
299 299
 
300
-			$data    = $this->prepare_item_for_response( $this->get_object( $post_id ), $request );
301
-			$posts[] = $this->prepare_response_for_collection( $data );
300
+			$data    = $this->prepare_item_for_response($this->get_object($post_id), $request);
301
+			$posts[] = $this->prepare_response_for_collection($data);
302 302
 		}
303 303
 
304 304
 		$page        = (int) $query_args['paged'];
305 305
 		$total_posts = $posts_query->found_posts;
306 306
 
307
-		if ( $total_posts < 1 ) {
307
+		if ($total_posts < 1) {
308 308
 			// Out-of-bounds, run the query again without LIMIT for total count.
309
-			unset( $query_args['paged'] );
309
+			unset($query_args['paged']);
310 310
 			$count_query = new WP_Query();
311
-			$count_query->query( $query_args );
311
+			$count_query->query($query_args);
312 312
 			$total_posts = $count_query->found_posts;
313 313
 		}
314 314
 
315
-		$max_pages = ceil( $total_posts / (int) $query_args['posts_per_page'] );
315
+		$max_pages = ceil($total_posts / (int) $query_args['posts_per_page']);
316 316
 
317
-		$response = rest_ensure_response( $posts );
318
-		$response->header( 'X-WP-Total', (int) $total_posts );
319
-		$response->header( 'X-WP-TotalPages', (int) $max_pages );
317
+		$response = rest_ensure_response($posts);
318
+		$response->header('X-WP-Total', (int) $total_posts);
319
+		$response->header('X-WP-TotalPages', (int) $max_pages);
320 320
 
321 321
 		$request_params = $request->get_query_params();
322
-		$base = add_query_arg( $request_params, rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ) );
322
+		$base = add_query_arg($request_params, rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)));
323 323
 
324
-		if ( $page > 1 ) {
324
+		if ($page > 1) {
325 325
 			$prev_page = $page - 1;
326
-			if ( $prev_page > $max_pages ) {
326
+			if ($prev_page > $max_pages) {
327 327
 				$prev_page = $max_pages;
328 328
 			}
329
-			$prev_link = add_query_arg( 'page', $prev_page, $base );
330
-			$response->link_header( 'prev', $prev_link );
329
+			$prev_link = add_query_arg('page', $prev_page, $base);
330
+			$response->link_header('prev', $prev_link);
331 331
 		}
332
-		if ( $max_pages > $page ) {
332
+		if ($max_pages > $page) {
333 333
 			$next_page = $page + 1;
334
-			$next_link = add_query_arg( 'page', $next_page, $base );
335
-			$response->link_header( 'next', $next_link );
334
+			$next_link = add_query_arg('page', $next_page, $base);
335
+			$response->link_header('next', $next_link);
336 336
 		}
337 337
 
338 338
 		return $response;
@@ -344,26 +344,26 @@  discard block
 block discarded – undo
344 344
 	 * @param WP_REST_Request $request Full details about the request.
345 345
 	 * @return WP_REST_Response|WP_Error
346 346
 	 */
347
-	public function delete_item( $request ) {
347
+	public function delete_item($request) {
348 348
 
349 349
 		// Fetch the item.
350
-		$item = $this->get_object( $request['id'] );
351
-		if ( is_wp_error( $item ) ) {
350
+		$item = $this->get_object($request['id']);
351
+		if (is_wp_error($item)) {
352 352
 			return $item;
353 353
 		}
354 354
 
355 355
 		$supports_trash = EMPTY_TRASH_DAYS > 0;
356 356
 		$force          = $supports_trash && (bool) $request['force'];
357 357
 
358
-		if ( ! $this->check_post_permissions( 'delete', $item->ID ) ) {
359
-			return new WP_Error( 'cannot_delete', __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
358
+		if (!$this->check_post_permissions('delete', $item->ID)) {
359
+			return new WP_Error('cannot_delete', __('Sorry, you are not allowed to delete this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
360 360
 		}
361 361
 
362
-		$request->set_param( 'context', 'edit' );
363
-		$response = $this->prepare_item_for_response( $item, $request );
362
+		$request->set_param('context', 'edit');
363
+		$response = $this->prepare_item_for_response($item, $request);
364 364
 
365
-		if ( ! wp_delete_post( $item->ID, $force ) ) {
366
-			return new WP_Error( 'rest_cannot_delete', sprintf( __( 'The resource cannot be deleted.', 'invoicing' ), $this->post_type ), array( 'status' => 500 ) );
365
+		if (!wp_delete_post($item->ID, $force)) {
366
+			return new WP_Error('rest_cannot_delete', sprintf(__('The resource cannot be deleted.', 'invoicing'), $this->post_type), array('status' => 500));
367 367
 		}
368 368
 
369 369
 		return $response;
@@ -375,27 +375,27 @@  discard block
 block discarded – undo
375 375
 	 * @param GetPaid_Data    $object GetPaid_Data object.
376 376
 	 * @return array Links for the given object.
377 377
 	 */
378
-	protected function prepare_links( $object ) {
378
+	protected function prepare_links($object) {
379 379
 
380
-		$links = parent::prepare_links( $object );
380
+		$links = parent::prepare_links($object);
381 381
 
382
-		if ( is_callable( array( $object, 'get_user_id' ) ) ) {
382
+		if (is_callable(array($object, 'get_user_id'))) {
383 383
 			$links['user'] = array(
384
-				'href'       => rest_url( 'wp/v2/users/' . call_user_func( array( $object, 'get_user_id' ) ) ),
384
+				'href'       => rest_url('wp/v2/users/' . call_user_func(array($object, 'get_user_id'))),
385 385
 				'embeddable' => true,
386 386
 			);
387 387
 		}
388 388
 
389
-		if ( is_callable( array( $object, 'get_owner' ) ) ) {
390
-			$links['owner']  = array(
391
-				'href'       => rest_url( 'wp/v2/users/' . call_user_func( array( $object, 'get_owner' ) ) ),
389
+		if (is_callable(array($object, 'get_owner'))) {
390
+			$links['owner'] = array(
391
+				'href'       => rest_url('wp/v2/users/' . call_user_func(array($object, 'get_owner'))),
392 392
 				'embeddable' => true,
393 393
 			);
394 394
 		}
395 395
 
396
-		if ( is_callable( array( $object, 'get_parent_id' ) ) && call_user_func( array( $object, 'get_parent_id' ) ) ) {
397
-			$links['parent']  = array(
398
-				'href'       => rest_url( "$this->namespace/$this->rest_base/" . call_user_func( array( $object, 'get_parent_id' ) ) ),
396
+		if (is_callable(array($object, 'get_parent_id')) && call_user_func(array($object, 'get_parent_id'))) {
397
+			$links['parent'] = array(
398
+				'href'       => rest_url("$this->namespace/$this->rest_base/" . call_user_func(array($object, 'get_parent_id'))),
399 399
 				'embeddable' => true,
400 400
 			);
401 401
 		}
@@ -411,27 +411,27 @@  discard block
 block discarded – undo
411 411
 	 * @param WP_REST_Request $request Request object.
412 412
 	 * @return array          $query_args
413 413
 	 */
414
-	protected function prepare_items_query( $prepared_args = array(), $request = null ) {
414
+	protected function prepare_items_query($prepared_args = array(), $request = null) {
415 415
 
416
-		$valid_vars = array_flip( $this->get_allowed_query_vars() );
416
+		$valid_vars = array_flip($this->get_allowed_query_vars());
417 417
 		$query_args = array();
418
-		foreach ( $valid_vars as $var => $index ) {
419
-			if ( isset( $prepared_args[ $var ] ) ) {
420
-				$query_args[ $var ] = apply_filters( "getpaid_rest_query_var-{$var}", $prepared_args[ $var ], $index );
418
+		foreach ($valid_vars as $var => $index) {
419
+			if (isset($prepared_args[$var])) {
420
+				$query_args[$var] = apply_filters("getpaid_rest_query_var-{$var}", $prepared_args[$var], $index);
421 421
 			}
422 422
 		}
423 423
 
424 424
 		$query_args['ignore_sticky_posts'] = true;
425 425
 
426
-		if ( 'include' === $query_args['orderby'] ) {
426
+		if ('include' === $query_args['orderby']) {
427 427
 			$query_args['orderby'] = 'post__in';
428
-		} elseif ( 'id' === $query_args['orderby'] ) {
428
+		} elseif ('id' === $query_args['orderby']) {
429 429
 			$query_args['orderby'] = 'ID'; // ID must be capitalized.
430
-		} elseif ( 'slug' === $query_args['orderby'] ) {
430
+		} elseif ('slug' === $query_args['orderby']) {
431 431
 			$query_args['orderby'] = 'name';
432 432
 		}
433 433
 
434
-		return apply_filters( 'getpaid_rest_prepare_items_query', $query_args, $request, $this );
434
+		return apply_filters('getpaid_rest_prepare_items_query', $query_args, $request, $this);
435 435
 
436 436
 	}
437 437
 
@@ -450,12 +450,12 @@  discard block
 block discarded – undo
450 450
 		 *
451 451
 		 * @param array  Array of allowed WP_Query query vars.
452 452
 		 */
453
-		$valid_vars = apply_filters( 'query_vars', $wp->public_query_vars );
453
+		$valid_vars = apply_filters('query_vars', $wp->public_query_vars);
454 454
 
455
-		$post_type_obj = get_post_type_object( $this->post_type );
456
-		if ( current_user_can( $post_type_obj->cap->edit_posts ) ) {
457
-			$private = apply_filters( 'getpaid_rest_private_query_vars', $wp->private_query_vars );
458
-			$valid_vars = array_merge( $valid_vars, $private );
455
+		$post_type_obj = get_post_type_object($this->post_type);
456
+		if (current_user_can($post_type_obj->cap->edit_posts)) {
457
+			$private = apply_filters('getpaid_rest_private_query_vars', $wp->private_query_vars);
458
+			$valid_vars = array_merge($valid_vars, $private);
459 459
 		}
460 460
 
461 461
 		// Define our own in addition to WP's normal vars.
@@ -477,10 +477,10 @@  discard block
 block discarded – undo
477 477
 			'meta_compare',
478 478
 			'meta_value_num',
479 479
 		);
480
-		$valid_vars = array_merge( $valid_vars, $rest_valid );
480
+		$valid_vars = array_merge($valid_vars, $rest_valid);
481 481
 
482 482
 		// Filter allowed query vars for the REST API.
483
-		$valid_vars = apply_filters( 'getpaid_rest_query_vars', $valid_vars, $this );
483
+		$valid_vars = apply_filters('getpaid_rest_query_vars', $valid_vars, $this);
484 484
 
485 485
 		return $valid_vars;
486 486
 	}
@@ -497,31 +497,31 @@  discard block
 block discarded – undo
497 497
 			array(
498 498
 				'status'  => array(
499 499
 					'default'           => $this->get_post_statuses(),
500
-					'description'       => __( 'Limit result set to resources assigned one or more statuses.', 'invoicing' ),
501
-					'type'              => array( 'array', 'string' ),
500
+					'description'       => __('Limit result set to resources assigned one or more statuses.', 'invoicing'),
501
+					'type'              => array('array', 'string'),
502 502
 					'items'             => array(
503 503
 						'enum' => $this->get_post_statuses(),
504 504
 						'type' => 'string',
505 505
 					),
506 506
 					'validate_callback' => 'rest_validate_request_arg',
507
-					'sanitize_callback' => array( $this, 'sanitize_post_statuses' ),
507
+					'sanitize_callback' => array($this, 'sanitize_post_statuses'),
508 508
 				),
509 509
 				'after'   => array(
510
-					'description'       => __( 'Limit response to resources created after a given ISO8601 compliant date.', 'invoicing' ),
510
+					'description'       => __('Limit response to resources created after a given ISO8601 compliant date.', 'invoicing'),
511 511
 					'type'              => 'string',
512 512
 					'format'            => 'string',
513 513
 					'validate_callback' => 'rest_validate_request_arg',
514 514
 					'sanitize_callback' => 'sanitize_text_field',
515 515
 				),
516 516
 				'before'  => array(
517
-					'description'       => __( 'Limit response to resources created before a given ISO8601 compliant date.', 'invoicing' ),
517
+					'description'       => __('Limit response to resources created before a given ISO8601 compliant date.', 'invoicing'),
518 518
 					'type'              => 'string',
519 519
 					'format'            => 'string',
520 520
 					'validate_callback' => 'rest_validate_request_arg',
521 521
 					'sanitize_callback' => 'sanitize_text_field',
522 522
 				),
523 523
 				'exclude' => array(
524
-					'description'       => __( 'Ensure result set excludes specific IDs.', 'invoicing' ),
524
+					'description'       => __('Ensure result set excludes specific IDs.', 'invoicing'),
525 525
 					'type'              => 'array',
526 526
 					'items'             => array(
527 527
 						'type' => 'integer',
@@ -531,7 +531,7 @@  discard block
 block discarded – undo
531 531
 					'validate_callback' => 'rest_validate_request_arg',
532 532
 				),
533 533
 				'include' => array(
534
-					'description'       => __( 'Limit result set to specific ids.', 'invoicing' ),
534
+					'description'       => __('Limit result set to specific ids.', 'invoicing'),
535 535
 					'type'              => 'array',
536 536
 					'items'             => array(
537 537
 						'type' => 'integer',
@@ -541,20 +541,20 @@  discard block
 block discarded – undo
541 541
 					'validate_callback' => 'rest_validate_request_arg',
542 542
 				),
543 543
 				'offset'  => array(
544
-					'description'       => __( 'Offset the result set by a specific number of items.', 'invoicing' ),
544
+					'description'       => __('Offset the result set by a specific number of items.', 'invoicing'),
545 545
 					'type'              => 'integer',
546 546
 					'sanitize_callback' => 'absint',
547 547
 					'validate_callback' => 'rest_validate_request_arg',
548 548
 				),
549 549
 				'order'   => array(
550
-					'description'       => __( 'Order sort attribute ascending or descending.', 'invoicing' ),
550
+					'description'       => __('Order sort attribute ascending or descending.', 'invoicing'),
551 551
 					'type'              => 'string',
552 552
 					'default'           => 'desc',
553
-					'enum'              => array( 'asc', 'desc' ),
553
+					'enum'              => array('asc', 'desc'),
554 554
 					'validate_callback' => 'rest_validate_request_arg',
555 555
 				),
556 556
 				'orderby' => array(
557
-					'description'       => __( 'Sort collection by object attribute.', 'invoicing' ),
557
+					'description'       => __('Sort collection by object attribute.', 'invoicing'),
558 558
 					'type'              => 'string',
559 559
 					'default'           => 'date',
560 560
 					'enum'              => array(
@@ -581,25 +581,25 @@  discard block
 block discarded – undo
581 581
 	public function get_item_schema() {
582 582
 
583 583
 		// Maybe retrieve the schema from cache.
584
-		if ( ! empty( $this->schema ) ) {
585
-			return $this->add_additional_fields_schema( $this->schema );
584
+		if (!empty($this->schema)) {
585
+			return $this->add_additional_fields_schema($this->schema);
586 586
 		}
587 587
 
588
-		$type   = str_replace( 'wpi_', '', $this->post_type );
588
+		$type   = str_replace('wpi_', '', $this->post_type);
589 589
 		$schema = array(
590 590
 			'$schema'    => 'http://json-schema.org/draft-04/schema#',
591 591
 			'title'      => $this->post_type,
592 592
 			'type'       => 'object',
593
-			'properties' => wpinv_get_data( "$type-schema" ),
593
+			'properties' => wpinv_get_data("$type-schema"),
594 594
 		);
595 595
 
596 596
 		// Filters the invoice schema for the REST API.
597
-        $schema = apply_filters( "wpinv_rest_{$type}_schema", $schema );
597
+        $schema = apply_filters("wpinv_rest_{$type}_schema", $schema);
598 598
 
599 599
 		// Cache the invoice schema.
600 600
 		$this->schema = $schema;
601 601
 
602
-		return $this->add_additional_fields_schema( $this->schema );
602
+		return $this->add_additional_fields_schema($this->schema);
603 603
 	}
604 604
 
605 605
 	/**
@@ -612,8 +612,8 @@  discard block
 block discarded – undo
612 612
 	 * @param string          $parameter Additional parameter to pass to validation.
613 613
 	 * @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
614 614
 	 */
615
-	public function sanitize_post_statuses( $statuses, $request, $parameter ) {
616
-		return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() );
615
+	public function sanitize_post_statuses($statuses, $request, $parameter) {
616
+		return array_intersect(wp_parse_slug_list($statuses), $this->get_post_statuses());
617 617
 	}
618 618
 
619 619
 	/**
@@ -635,9 +635,9 @@  discard block
 block discarded – undo
635 635
 	 * @param  string       $field_key The key to check for.
636 636
 	 * @return bool
637 637
 	 */
638
-	public function object_supports_field( $object, $field_key ) {
639
-		$supports = parent::object_supports_field( $object, $field_key );
640
-		return apply_filters( "getpaid_rest_{$this->post_type}_object_supports_key", $supports, $object, $field_key );
638
+	public function object_supports_field($object, $field_key) {
639
+		$supports = parent::object_supports_field($object, $field_key);
640
+		return apply_filters("getpaid_rest_{$this->post_type}_object_supports_key", $supports, $object, $field_key);
641 641
 	}
642 642
 
643 643
 }
Please login to merge, or discard this patch.
includes/class-wpinv-cli.php 1 patch
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
  */
8 8
 
9 9
 // MUST have WordPress.
10
-if ( ! defined( 'WPINC' ) ) {
10
+if (!defined('WPINC')) {
11 11
     exit;
12 12
 }
13 13
 
@@ -24,40 +24,40 @@  discard block
 block discarded – undo
24 24
      *  @param Array $assoc_args Key value arguments stored in associated array format.
25 25
      *  @since 1.0.13
26 26
      */
27
-    public function insert_invoice( $args, $assoc_args ) {
27
+    public function insert_invoice($args, $assoc_args) {
28 28
 
29 29
         // Fetch invoice data from the args
30
-        $invoice_data = wp_unslash( $assoc_args );
30
+        $invoice_data = wp_unslash($assoc_args);
31 31
 
32 32
         // Abort if no invoice data is provided
33
-        if ( empty( $invoice_data ) ) {
34
-            return WP_CLI::error( __( 'Invoice data not provided', 'invoicing' ) );
33
+        if (empty($invoice_data)) {
34
+            return WP_CLI::error(__('Invoice data not provided', 'invoicing'));
35 35
         }
36 36
 
37 37
         //Cart details
38
-        if ( ! empty( $invoice_data['cart_details'] ) ) {
39
-            $invoice_data['cart_details'] = json_decode( $invoice_data['cart_details'], true );
38
+        if (!empty($invoice_data['cart_details'])) {
39
+            $invoice_data['cart_details'] = json_decode($invoice_data['cart_details'], true);
40 40
         }
41 41
 
42 42
         //User details
43
-        if ( ! empty( $invoice_data['user_info'] ) ) {
44
-            $invoice_data['user_info'] = json_decode( $invoice_data['user_info'], true );
43
+        if (!empty($invoice_data['user_info'])) {
44
+            $invoice_data['user_info'] = json_decode($invoice_data['user_info'], true);
45 45
         }
46 46
 
47 47
         //Payment info
48
-        if ( ! empty( $invoice_data['payment_details'] ) ) {
49
-            $invoice_data['payment_details'] = json_decode( $invoice_data['payment_details'], true );
48
+        if (!empty($invoice_data['payment_details'])) {
49
+            $invoice_data['payment_details'] = json_decode($invoice_data['payment_details'], true);
50 50
         }
51 51
 
52 52
         // Try creating the invoice
53
-        $invoice = wpinv_insert_invoice( $invoice_data, true );
53
+        $invoice = wpinv_insert_invoice($invoice_data, true);
54 54
 
55
-        if ( is_wp_error( $invoice ) ) {
56
-            return WP_CLI::error( $invoice->get_error_message() );
55
+        if (is_wp_error($invoice)) {
56
+            return WP_CLI::error($invoice->get_error_message());
57 57
         }
58 58
 
59
-        $message = sprintf( __( 'Invoice %s created', 'invoicing' ), $invoice->get_id() );
60
-        WP_CLI::success( $message );
59
+        $message = sprintf(__('Invoice %s created', 'invoicing'), $invoice->get_id());
60
+        WP_CLI::success($message);
61 61
     }
62 62
 
63 63
 
Please login to merge, or discard this patch.
includes/class-getpaid-template.php 2 patches
Indentation   +152 added lines, -152 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 if ( ! defined( 'ABSPATH' ) ) {
3
-	exit;
3
+    exit;
4 4
 }
5 5
 
6 6
 /**
@@ -20,29 +20,29 @@  discard block
 block discarded – undo
20 20
     public $templates_url;
21 21
 
22 22
     /**
23
-	 * Class constructor.
24
-	 *
25
-	 * @since 1.0.19
26
-	 */
27
-	public function __construct() {
23
+     * Class constructor.
24
+     *
25
+     * @since 1.0.19
26
+     */
27
+    public function __construct() {
28 28
 
29 29
         $this->templates_dir = apply_filters( 'getpaid_default_templates_dir', WPINV_PLUGIN_DIR . 'templates' );
30 30
         $this->templates_url = apply_filters( 'getpaid_default_templates_url', WPINV_PLUGIN_URL . 'templates' );
31 31
 
32 32
         // Oxygen plugin
33
-		if ( defined( 'CT_VERSION' ) ) {
34
-			add_filter( 'wpinv_locate_template', array( $this, 'oxygen_override_template' ), 11, 4 );
35
-		}
33
+        if ( defined( 'CT_VERSION' ) ) {
34
+            add_filter( 'wpinv_locate_template', array( $this, 'oxygen_override_template' ), 11, 4 );
35
+        }
36 36
 
37 37
     }
38 38
 
39 39
     /**
40
-	 * Checks if this is a preview page
41
-	 *
42
-	 * @since 1.0.19
43
-	 * @return bool
44
-	 */
45
-	public function is_preview() {
40
+     * Checks if this is a preview page
41
+     *
42
+     * @since 1.0.19
43
+     * @return bool
44
+     */
45
+    public function is_preview() {
46 46
         return $this->is_divi_preview() ||
47 47
             $this->is_elementor_preview() ||
48 48
             $this->is_beaver_preview() ||
@@ -53,73 +53,73 @@  discard block
 block discarded – undo
53 53
     }
54 54
 
55 55
     /**
56
-	 * Checks if this is an elementor preview page
57
-	 *
58
-	 * @since 1.0.19
59
-	 * @return bool
60
-	 */
61
-	public function is_elementor_preview() {
62
-		return isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' );
63
-	}
64
-
65
-	/**
66
-	 * Checks if this is a DIVI preview page
67
-	 *
68
-	 * @since 1.0.19
69
-	 * @return bool
70
-	 */
71
-	public function is_divi_preview() {
72
-		return isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'et_pb' );
73
-	}
74
-
75
-	/**
76
-	 * Checks if this is a beaver builder preview page
77
-	 *
78
-	 * @since 1.0.19
79
-	 * @return bool
80
-	 */
81
-	public function is_beaver_preview() {
82
-		return isset( $_REQUEST['fl_builder'] );
83
-	}
84
-
85
-	/**
86
-	 * Checks if this is a siteorigin builder preview page
87
-	 *
88
-	 * @since 1.0.19
89
-	 * @return bool
90
-	 */
91
-	public function is_siteorigin_preview() {
92
-		return ! empty( $_REQUEST['siteorigin_panels_live_editor'] );
93
-	}
94
-
95
-	/**
96
-	 * Checks if this is a cornerstone builder preview page
97
-	 *
98
-	 * @since 1.0.19
99
-	 * @return bool
100
-	 */
101
-	public function is_cornerstone_preview() {
102
-		return ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint';
103
-	}
104
-
105
-	/**
106
-	 * Checks if this is a fusion builder preview page
107
-	 *
108
-	 * @since 1.0.19
109
-	 * @return bool
110
-	 */
111
-	public function is_fusion_preview() {
112
-		return ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] );
113
-	}
114
-
115
-	/**
116
-	 * Checks if this is an oxygen builder preview page
117
-	 *
118
-	 * @since 1.0.19
119
-	 * @return bool
120
-	 */
121
-	public function is_oxygen_preview() {
122
-		return ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === 'oxy_render_' || substr( $_REQUEST['action'], 0, 10 ) === 'ct_render_' ) );
56
+     * Checks if this is an elementor preview page
57
+     *
58
+     * @since 1.0.19
59
+     * @return bool
60
+     */
61
+    public function is_elementor_preview() {
62
+        return isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' );
63
+    }
64
+
65
+    /**
66
+     * Checks if this is a DIVI preview page
67
+     *
68
+     * @since 1.0.19
69
+     * @return bool
70
+     */
71
+    public function is_divi_preview() {
72
+        return isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'et_pb' );
73
+    }
74
+
75
+    /**
76
+     * Checks if this is a beaver builder preview page
77
+     *
78
+     * @since 1.0.19
79
+     * @return bool
80
+     */
81
+    public function is_beaver_preview() {
82
+        return isset( $_REQUEST['fl_builder'] );
83
+    }
84
+
85
+    /**
86
+     * Checks if this is a siteorigin builder preview page
87
+     *
88
+     * @since 1.0.19
89
+     * @return bool
90
+     */
91
+    public function is_siteorigin_preview() {
92
+        return ! empty( $_REQUEST['siteorigin_panels_live_editor'] );
93
+    }
94
+
95
+    /**
96
+     * Checks if this is a cornerstone builder preview page
97
+     *
98
+     * @since 1.0.19
99
+     * @return bool
100
+     */
101
+    public function is_cornerstone_preview() {
102
+        return ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint';
103
+    }
104
+
105
+    /**
106
+     * Checks if this is a fusion builder preview page
107
+     *
108
+     * @since 1.0.19
109
+     * @return bool
110
+     */
111
+    public function is_fusion_preview() {
112
+        return ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] );
113
+    }
114
+
115
+    /**
116
+     * Checks if this is an oxygen builder preview page
117
+     *
118
+     * @since 1.0.19
119
+     * @return bool
120
+     */
121
+    public function is_oxygen_preview() {
122
+        return ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === 'oxy_render_' || substr( $_REQUEST['action'], 0, 10 ) === 'ct_render_' ) );
123 123
     }
124 124
 
125 125
     /**
@@ -129,7 +129,7 @@  discard block
 block discarded – undo
129 129
      * @param string $template_path The template path relative to the theme's root dir. Defaults to 'invoicing'.
130 130
      * @param string $default_path The root path to the default template. Defaults to invoicing/templates
131 131
      */
132
-	public function locate_template( $template_name, $template_path = '', $default_path = '' ) {
132
+    public function locate_template( $template_name, $template_path = '', $default_path = '' ) {
133 133
 
134 134
         // Load the defaults for the template path and default path.
135 135
         $template_path = empty( $template_path ) ? 'invoicing' : $template_path;
@@ -150,22 +150,22 @@  discard block
 block discarded – undo
150 150
     }
151 151
 
152 152
     /**
153
-	 * Loads a template
154
-	 *
155
-	 * @since 1.0.19
156
-	 * @return bool
157
-	 */
158
-	protected function load_template( $template_name, $template_path, $args ) {
153
+     * Loads a template
154
+     *
155
+     * @since 1.0.19
156
+     * @return bool
157
+     */
158
+    protected function load_template( $template_name, $template_path, $args ) {
159 159
 
160 160
         if ( is_array( $args ) ) {
161 161
             extract( $args );
162 162
         }
163 163
 
164 164
         // Fires before loading a template.
165
-	    do_action( 'wpinv_before_template_part', $template_name, $template_path, $args );
165
+        do_action( 'wpinv_before_template_part', $template_name, $template_path, $args );
166 166
 
167 167
         // Load the template.
168
-	    include $template_path;
168
+        include $template_path;
169 169
 
170 170
         // Fires after loading a template.
171 171
         do_action( 'wpinv_after_template_part', $template_name, $template_path, $args );
@@ -182,7 +182,7 @@  discard block
 block discarded – undo
182 182
      * @param string $template_path The templates directory relative to the theme's root dir. Defaults to 'invoicing'.
183 183
      * @param string $default_path The root path to the default template. Defaults to invoicing/templates
184 184
      */
185
-	public function display_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
185
+    public function display_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
186 186
 
187 187
         // Locate the template.
188 188
         $located = $this->locate_template( $template_name, $template_path, $default_path );
@@ -207,74 +207,74 @@  discard block
 block discarded – undo
207 207
      * @param string $template_path The templates directory relative to the theme's root dir. Defaults to 'invoicing'.
208 208
      * @param string $default_path The root path to the default template. Defaults to invoicing/templates
209 209
      */
210
-	public function get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
210
+    public function get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
211 211
         ob_start();
212 212
         $this->display_template( $template_name, $args, $template_path, $default_path );
213 213
         return ob_get_clean();
214 214
     }
215 215
 
216 216
     /**
217
-	 * Get the geodirectory templates theme path.
218
-	 *
219
-	 *
220
-	 * @return string Template path.
221
-	 */
222
-	public static function get_theme_template_path() {
223
-		$template   = get_template();
224
-		$theme_root = get_theme_root( $template );
225
-
226
-		return $theme_root . '/' . $template . '/' . untrailingslashit( wpinv_get_theme_template_dir_name() );
227
-
228
-	}
229
-
230
-	/**
231
-	 * Oxygen locate theme template.
232
-	 *
233
-	 * @param string $template The template.
234
-	 * @return string The theme template.
235
-	 */
236
-	public static function oxygen_locate_template( $template ) {
237
-
238
-		if ( empty( $template ) ) {
239
-			return '';
240
-		}
241
-
242
-		$has_filter = has_filter( 'template', 'ct_oxygen_template_name' );
243
-
244
-		// Remove template filter
245
-		if ( $has_filter ) {
246
-			remove_filter( 'template', 'ct_oxygen_template_name' );
247
-		}
248
-
249
-		$template = self::get_theme_template_path() . '/' . $template;
250
-
251
-		if ( ! file_exists( $template ) ) {
252
-			$template = '';
253
-		}
254
-
255
-		// Add template filter
256
-		if ( $has_filter ) {
257
-			add_filter( 'template', 'ct_oxygen_template_name' );
258
-		}
259
-
260
-		return $template;
261
-	}
262
-
263
-	/**
264
-	 * Oxygen override theme template.
265
-	 *
266
-	 * @param string $located Located template.
267
-	 * @param string $template_name Template name.
268
-	 * @return string Located template.
269
-	 */
270
-	public function oxygen_override_template( $located, $template_name ) {
217
+     * Get the geodirectory templates theme path.
218
+     *
219
+     *
220
+     * @return string Template path.
221
+     */
222
+    public static function get_theme_template_path() {
223
+        $template   = get_template();
224
+        $theme_root = get_theme_root( $template );
225
+
226
+        return $theme_root . '/' . $template . '/' . untrailingslashit( wpinv_get_theme_template_dir_name() );
227
+
228
+    }
229
+
230
+    /**
231
+     * Oxygen locate theme template.
232
+     *
233
+     * @param string $template The template.
234
+     * @return string The theme template.
235
+     */
236
+    public static function oxygen_locate_template( $template ) {
237
+
238
+        if ( empty( $template ) ) {
239
+            return '';
240
+        }
241
+
242
+        $has_filter = has_filter( 'template', 'ct_oxygen_template_name' );
243
+
244
+        // Remove template filter
245
+        if ( $has_filter ) {
246
+            remove_filter( 'template', 'ct_oxygen_template_name' );
247
+        }
248
+
249
+        $template = self::get_theme_template_path() . '/' . $template;
250
+
251
+        if ( ! file_exists( $template ) ) {
252
+            $template = '';
253
+        }
254
+
255
+        // Add template filter
256
+        if ( $has_filter ) {
257
+            add_filter( 'template', 'ct_oxygen_template_name' );
258
+        }
259
+
260
+        return $template;
261
+    }
262
+
263
+    /**
264
+     * Oxygen override theme template.
265
+     *
266
+     * @param string $located Located template.
267
+     * @param string $template_name Template name.
268
+     * @return string Located template.
269
+     */
270
+    public function oxygen_override_template( $located, $template_name ) {
271 271
 
272 272
         $oxygen_overide = self::oxygen_locate_template( $template_name );
273
-		if ( ! empty( $oxygen_overide ) ) {
274
-			return $oxygen_overide;
275
-		}
273
+        if ( ! empty( $oxygen_overide ) ) {
274
+            return $oxygen_overide;
275
+        }
276 276
 
277
-		return $located;
278
-	}
277
+        return $located;
278
+    }
279 279
 
280 280
 }
Please login to merge, or discard this patch.
Spacing   +45 added lines, -45 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) {
2
+if (!defined('ABSPATH')) {
3 3
 	exit;
4 4
 }
5 5
 
@@ -26,12 +26,12 @@  discard block
 block discarded – undo
26 26
 	 */
27 27
 	public function __construct() {
28 28
 
29
-        $this->templates_dir = apply_filters( 'getpaid_default_templates_dir', WPINV_PLUGIN_DIR . 'templates' );
30
-        $this->templates_url = apply_filters( 'getpaid_default_templates_url', WPINV_PLUGIN_URL . 'templates' );
29
+        $this->templates_dir = apply_filters('getpaid_default_templates_dir', WPINV_PLUGIN_DIR . 'templates');
30
+        $this->templates_url = apply_filters('getpaid_default_templates_url', WPINV_PLUGIN_URL . 'templates');
31 31
 
32 32
         // Oxygen plugin
33
-		if ( defined( 'CT_VERSION' ) ) {
34
-			add_filter( 'wpinv_locate_template', array( $this, 'oxygen_override_template' ), 11, 4 );
33
+		if (defined('CT_VERSION')) {
34
+			add_filter('wpinv_locate_template', array($this, 'oxygen_override_template'), 11, 4);
35 35
 		}
36 36
 
37 37
     }
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 	 * @return bool
60 60
 	 */
61 61
 	public function is_elementor_preview() {
62
-		return isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' );
62
+		return isset($_REQUEST['elementor-preview']) || (is_admin() && isset($_REQUEST['action']) && $_REQUEST['action'] == 'elementor') || (isset($_REQUEST['action']) && $_REQUEST['action'] == 'elementor_ajax');
63 63
 	}
64 64
 
65 65
 	/**
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 	 * @return bool
70 70
 	 */
71 71
 	public function is_divi_preview() {
72
-		return isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'et_pb' );
72
+		return isset($_REQUEST['et_fb']) || isset($_REQUEST['et_pb_preview']) || (is_admin() && isset($_REQUEST['action']) && $_REQUEST['action'] == 'et_pb');
73 73
 	}
74 74
 
75 75
 	/**
@@ -79,7 +79,7 @@  discard block
 block discarded – undo
79 79
 	 * @return bool
80 80
 	 */
81 81
 	public function is_beaver_preview() {
82
-		return isset( $_REQUEST['fl_builder'] );
82
+		return isset($_REQUEST['fl_builder']);
83 83
 	}
84 84
 
85 85
 	/**
@@ -89,7 +89,7 @@  discard block
 block discarded – undo
89 89
 	 * @return bool
90 90
 	 */
91 91
 	public function is_siteorigin_preview() {
92
-		return ! empty( $_REQUEST['siteorigin_panels_live_editor'] );
92
+		return !empty($_REQUEST['siteorigin_panels_live_editor']);
93 93
 	}
94 94
 
95 95
 	/**
@@ -99,7 +99,7 @@  discard block
 block discarded – undo
99 99
 	 * @return bool
100 100
 	 */
101 101
 	public function is_cornerstone_preview() {
102
-		return ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint';
102
+		return !empty($_REQUEST['cornerstone_preview']) || basename($_SERVER['REQUEST_URI']) == 'cornerstone-endpoint';
103 103
 	}
104 104
 
105 105
 	/**
@@ -109,7 +109,7 @@  discard block
 block discarded – undo
109 109
 	 * @return bool
110 110
 	 */
111 111
 	public function is_fusion_preview() {
112
-		return ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] );
112
+		return !empty($_REQUEST['fb-edit']) || !empty($_REQUEST['fusion_load_nonce']);
113 113
 	}
114 114
 
115 115
 	/**
@@ -119,7 +119,7 @@  discard block
 block discarded – undo
119 119
 	 * @return bool
120 120
 	 */
121 121
 	public function is_oxygen_preview() {
122
-		return ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === 'oxy_render_' || substr( $_REQUEST['action'], 0, 10 ) === 'ct_render_' ) );
122
+		return !empty($_REQUEST['ct_builder']) || (!empty($_REQUEST['action']) && (substr($_REQUEST['action'], 0, 11) === 'oxy_render_' || substr($_REQUEST['action'], 0, 10) === 'ct_render_'));
123 123
     }
124 124
 
125 125
     /**
@@ -129,24 +129,24 @@  discard block
 block discarded – undo
129 129
      * @param string $template_path The template path relative to the theme's root dir. Defaults to 'invoicing'.
130 130
      * @param string $default_path The root path to the default template. Defaults to invoicing/templates
131 131
      */
132
-	public function locate_template( $template_name, $template_path = '', $default_path = '' ) {
132
+	public function locate_template($template_name, $template_path = '', $default_path = '') {
133 133
 
134 134
         // Load the defaults for the template path and default path.
135
-        $template_path = empty( $template_path ) ? 'invoicing' : $template_path;
136
-        $default_path  = empty( $default_path ) ? $this->templates_dir : $default_path;
137
-        $default_path  = apply_filters( 'getpaid_template_default_template_path', $default_path, $template_name );
135
+        $template_path = empty($template_path) ? 'invoicing' : $template_path;
136
+        $default_path  = empty($default_path) ? $this->templates_dir : $default_path;
137
+        $default_path  = apply_filters('getpaid_template_default_template_path', $default_path, $template_name);
138 138
 
139 139
         // Is it overidden?
140 140
         $template = locate_template(
141
-            array( trailingslashit( $template_path ) . $template_name, 'wpinv-' . $template_name )
141
+            array(trailingslashit($template_path) . $template_name, 'wpinv-' . $template_name)
142 142
         );
143 143
 
144 144
         // If not, load the default template.
145
-        if ( empty( $template ) ) {
146
-            $template = trailingslashit( $default_path ) . $template_name;
145
+        if (empty($template)) {
146
+            $template = trailingslashit($default_path) . $template_name;
147 147
         }
148 148
 
149
-        return apply_filters( 'wpinv_locate_template', $template, $template_name, $template_path, $default_path );
149
+        return apply_filters('wpinv_locate_template', $template, $template_name, $template_path, $default_path);
150 150
     }
151 151
 
152 152
     /**
@@ -155,20 +155,20 @@  discard block
 block discarded – undo
155 155
 	 * @since 1.0.19
156 156
 	 * @return bool
157 157
 	 */
158
-	protected function load_template( $template_name, $template_path, $args ) {
158
+	protected function load_template($template_name, $template_path, $args) {
159 159
 
160
-        if ( is_array( $args ) ) {
161
-            extract( $args );
160
+        if (is_array($args)) {
161
+            extract($args);
162 162
         }
163 163
 
164 164
         // Fires before loading a template.
165
-	    do_action( 'wpinv_before_template_part', $template_name, $template_path, $args );
165
+	    do_action('wpinv_before_template_part', $template_name, $template_path, $args);
166 166
 
167 167
         // Load the template.
168 168
 	    include $template_path;
169 169
 
170 170
         // Fires after loading a template.
171
-        do_action( 'wpinv_after_template_part', $template_name, $template_path, $args );
171
+        do_action('wpinv_after_template_part', $template_name, $template_path, $args);
172 172
 
173 173
     }
174 174
 
@@ -182,18 +182,18 @@  discard block
 block discarded – undo
182 182
      * @param string $template_path The templates directory relative to the theme's root dir. Defaults to 'invoicing'.
183 183
      * @param string $default_path The root path to the default template. Defaults to invoicing/templates
184 184
      */
185
-	public function display_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
185
+	public function display_template($template_name, $args = array(), $template_path = '', $default_path = '') {
186 186
 
187 187
         // Locate the template.
188
-        $located = $this->locate_template( $template_name, $template_path, $default_path );
188
+        $located = $this->locate_template($template_name, $template_path, $default_path);
189 189
 
190 190
         // Abort if the file does not exist.
191
-        if ( ! file_exists( $located ) ) {
192
-            getpaid_doing_it_wrong( __METHOD__, sprintf( '<code>%s</code> does not exist.', $located ), '2.0.0' );
191
+        if (!file_exists($located)) {
192
+            getpaid_doing_it_wrong(__METHOD__, sprintf('<code>%s</code> does not exist.', $located), '2.0.0');
193 193
             return;
194 194
         }
195 195
 
196
-        $this->load_template( $template_name, $located, $args );
196
+        $this->load_template($template_name, $located, $args);
197 197
 
198 198
     }
199 199
 
@@ -207,9 +207,9 @@  discard block
 block discarded – undo
207 207
      * @param string $template_path The templates directory relative to the theme's root dir. Defaults to 'invoicing'.
208 208
      * @param string $default_path The root path to the default template. Defaults to invoicing/templates
209 209
      */
210
-	public function get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
210
+	public function get_template($template_name, $args = array(), $template_path = '', $default_path = '') {
211 211
         ob_start();
212
-        $this->display_template( $template_name, $args, $template_path, $default_path );
212
+        $this->display_template($template_name, $args, $template_path, $default_path);
213 213
         return ob_get_clean();
214 214
     }
215 215
 
@@ -221,9 +221,9 @@  discard block
 block discarded – undo
221 221
 	 */
222 222
 	public static function get_theme_template_path() {
223 223
 		$template   = get_template();
224
-		$theme_root = get_theme_root( $template );
224
+		$theme_root = get_theme_root($template);
225 225
 
226
-		return $theme_root . '/' . $template . '/' . untrailingslashit( wpinv_get_theme_template_dir_name() );
226
+		return $theme_root . '/' . $template . '/' . untrailingslashit(wpinv_get_theme_template_dir_name());
227 227
 
228 228
 	}
229 229
 
@@ -233,28 +233,28 @@  discard block
 block discarded – undo
233 233
 	 * @param string $template The template.
234 234
 	 * @return string The theme template.
235 235
 	 */
236
-	public static function oxygen_locate_template( $template ) {
236
+	public static function oxygen_locate_template($template) {
237 237
 
238
-		if ( empty( $template ) ) {
238
+		if (empty($template)) {
239 239
 			return '';
240 240
 		}
241 241
 
242
-		$has_filter = has_filter( 'template', 'ct_oxygen_template_name' );
242
+		$has_filter = has_filter('template', 'ct_oxygen_template_name');
243 243
 
244 244
 		// Remove template filter
245
-		if ( $has_filter ) {
246
-			remove_filter( 'template', 'ct_oxygen_template_name' );
245
+		if ($has_filter) {
246
+			remove_filter('template', 'ct_oxygen_template_name');
247 247
 		}
248 248
 
249 249
 		$template = self::get_theme_template_path() . '/' . $template;
250 250
 
251
-		if ( ! file_exists( $template ) ) {
251
+		if (!file_exists($template)) {
252 252
 			$template = '';
253 253
 		}
254 254
 
255 255
 		// Add template filter
256
-		if ( $has_filter ) {
257
-			add_filter( 'template', 'ct_oxygen_template_name' );
256
+		if ($has_filter) {
257
+			add_filter('template', 'ct_oxygen_template_name');
258 258
 		}
259 259
 
260 260
 		return $template;
@@ -267,10 +267,10 @@  discard block
 block discarded – undo
267 267
 	 * @param string $template_name Template name.
268 268
 	 * @return string Located template.
269 269
 	 */
270
-	public function oxygen_override_template( $located, $template_name ) {
270
+	public function oxygen_override_template($located, $template_name) {
271 271
 
272
-        $oxygen_overide = self::oxygen_locate_template( $template_name );
273
-		if ( ! empty( $oxygen_overide ) ) {
272
+        $oxygen_overide = self::oxygen_locate_template($template_name);
273
+		if (!empty($oxygen_overide)) {
274 274
 			return $oxygen_overide;
275 275
 		}
276 276
 
Please login to merge, or discard this patch.
includes/class-getpaid-subscriptions-query.php 2 patches
Indentation   +487 added lines, -487 removed lines patch added patch discarded remove patch
@@ -16,494 +16,494 @@
 block discarded – undo
16 16
  */
17 17
 class GetPaid_Subscriptions_Query {
18 18
 
19
-	/**
20
-	 * Query vars, after parsing
21
-	 *
22
-	 * @since 1.0.19
23
-	 * @var array
24
-	 */
25
-	public $query_vars = array();
26
-
27
-	/**
28
-	 * List of found subscriptions.
29
-	 *
30
-	 * @since 1.0.19
31
-	 * @var array
32
-	 */
33
-	private $results;
34
-
35
-	/**
36
-	 * Total number of found subscriptions for the current query
37
-	 *
38
-	 * @since 1.0.19
39
-	 * @var int
40
-	 */
41
-	private $total_subscriptions = 0;
42
-
43
-	/**
44
-	 * The SQL query used to fetch matching subscriptions.
45
-	 *
46
-	 * @since 1.0.19
47
-	 * @var string
48
-	 */
49
-	public $request;
50
-
51
-	// SQL clauses
52
-
53
-	/**
54
-	 * Contains the 'FIELDS' sql clause
55
-	 *
56
-	 * @since 1.0.19
57
-	 * @var string
58
-	 */
59
-	public $query_fields;
60
-
61
-	/**
62
-	 * Contains the 'FROM' sql clause
63
-	 *
64
-	 * @since 1.0.19
65
-	 * @var string
66
-	 */
67
-	public $query_from;
68
-
69
-	/**
70
-	 * Contains the 'WHERE' sql clause
71
-	 *
72
-	 * @since 1.0.19
73
-	 * @var string
74
-	 */
75
-	public $query_where;
76
-
77
-	/**
78
-	 * Contains the 'ORDER BY' sql clause
79
-	 *
80
-	 * @since 1.0.19
81
-	 * @var string
82
-	 */
83
-	public $query_orderby;
84
-
85
-	/**
86
-	 * Contains the 'LIMIT' sql clause
87
-	 *
88
-	 * @since 1.0.19
89
-	 * @var string
90
-	 */
91
-	public $query_limit;
92
-
93
-	/**
94
-	 * Class constructor.
95
-	 *
96
-	 * @since 1.0.19
97
-	 *
98
-	 * @param null|string|array $query Optional. The query variables.
99
-	 */
100
-	public function __construct( $query = null ) {
101
-		if ( ! is_null( $query ) ) {
102
-			$this->prepare_query( $query );
103
-			$this->query();
104
-		}
105
-	}
106
-
107
-	/**
108
-	 * Fills in missing query variables with default values.
109
-	 *
110
-	 * @since 1.0.19
111
-	 *
112
-	 * @param  string|array $args Query vars, as passed to `GetPaid_Subscriptions_Query`.
113
-	 * @return array Complete query variables with undefined ones filled in with defaults.
114
-	 */
115
-	public static function fill_query_vars( $args ) {
116
-		$defaults = array(
117
-			'status'          => 'all',
118
-			'customer_in'     => array(),
119
-			'customer_not_in' => array(),
120
-			'product_in'      => array(),
121
-			'product_not_in'  => array(),
122
-			'include'         => array(),
123
-			'exclude'         => array(),
124
-			'orderby'         => 'id',
125
-			'order'           => 'DESC',
126
-			'offset'          => '',
127
-			'number'          => 10,
128
-			'paged'           => 1,
129
-			'count_total'     => true,
130
-			'fields'          => 'all',
131
-		);
132
-
133
-		return wp_parse_args( $args, $defaults );
134
-	}
135
-
136
-	/**
137
-	 * Prepare the query variables.
138
-	 *
139
-	 * @since 1.0.19
140
-	 *
141
-	 * @global wpdb $wpdb WordPress database abstraction object.
142
-	 *
143
-	 * @param string|array $query {
144
-	 *     Optional. Array or string of Query parameters.
145
-	 *
146
-	 *     @type string|array $status              The subscription status to filter by. Can either be a single status or an array of statuses.
147
-	 *                                             Default is all.
148
-	 *     @type int[]        $customer_in         An array of customer ids to filter by.
149
-	 *     @type int[]        $customer_not_in     An array of customer ids whose subscriptions should be excluded.
150
-	 *     @type int[]        $invoice_in          An array of invoice ids to filter by.
151
-	 *     @type int[]        $invoice_not_in      An array of invoice ids whose subscriptions should be excluded.
152
-	 *     @type int[]        $product_in          An array of product ids to filter by.
153
-	 *     @type int[]        $product_not_in      An array of product ids whose subscriptions should be excluded.
154
-	 *     @type array        $date_created_query  A WP_Date_Query compatible array use to filter subscriptions by their date of creation.
155
-	 *     @type array        $date_expires_query  A WP_Date_Query compatible array use to filter subscriptions by their expiration date.
156
-	 *     @type array        $include             An array of subscription IDs to include. Default empty array.
157
-	 *     @type array        $exclude             An array of subscription IDs to exclude. Default empty array.
158
-	 *     @type string|array $orderby             Field(s) to sort the retrieved subscription by. May be a single value,
159
-	 *                                             an array of values, or a multi-dimensional array with fields as
160
-	 *                                             keys and orders ('ASC' or 'DESC') as values. Accepted values are
161
-	 *                                             'id', 'customer_id', 'frequency', 'period', 'initial_amount,
162
-	 *                                             'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration'
163
-	 *                                             'transaction_id', 'product_id', 'trial_period', 'include', 'status', 'profile_id'. Default array( 'id' ).
164
-	 *     @type string       $order               Designates ascending or descending order of subscriptions. Order values
165
-	 *                                             passed as part of an `$orderby` array take precedence over this
166
-	 *                                             parameter. Accepts 'ASC', 'DESC'. Default 'DESC'.
167
-	 *     @type int          $offset              Number of subscriptions to offset in retrieved results. Can be used in
168
-	 *                                             conjunction with pagination. Default 0.
169
-	 *     @type int          $number              Number of subscriptions to limit the query for. Can be used in
170
-	 *                                             conjunction with pagination. Value -1 (all) is supported, but
171
-	 *                                             should be used with caution on larger sites.
172
-	 *                                             Default 10.
173
-	 *     @type int          $paged               When used with number, defines the page of results to return.
174
-	 *                                             Default 1.
175
-	 *     @type bool         $count_total         Whether to count the total number of subscriptions found. If pagination
176
-	 *                                             is not needed, setting this to false can improve performance.
177
-	 *                                             Default true.
178
-	 *     @type string|array $fields              Which fields to return. Single or all fields (string), or array
179
-	 *                                             of fields. Accepts 'id', 'customer_id', 'frequency', 'period', 'initial_amount,
180
-	 *                                             'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration'
181
-	 *                                             'transaction_id', 'product_id', 'trial_period', 'status', 'profile_id'.
182
-	 *                                             Use 'all' for all fields. Default 'all'.
183
-	 * }
184
-	 */
185
-	public function prepare_query( $query = array() ) {
186
-		global $wpdb;
187
-
188
-		if ( empty( $this->query_vars ) || ! empty( $query ) ) {
189
-			$this->query_limit = null;
190
-			$this->query_vars  = $this->fill_query_vars( $query );
191
-		}
192
-
193
-		if ( ! empty( $this->query_vars['fields'] ) && 'all' !== $this->query_vars['fields'] ) {
194
-			$this->query_vars['fields'] = wpinv_parse_list( $this->query_vars['fields'] );
195
-		}
196
-
197
-		do_action( 'getpaid_pre_get_subscriptions', array( &$this ) );
198
-
199
-		// Ensure that query vars are filled after 'getpaid_pre_get_subscriptions'.
200
-		$qv                =& $this->query_vars;
201
-		$qv                = $this->fill_query_vars( $qv );
202
-		$table             = $wpdb->prefix . 'wpinv_subscriptions';
203
-		$this->query_from  = "FROM $table";
204
-
205
-		// Prepare query fields.
206
-		$this->prepare_query_fields( $qv, $table );
207
-
208
-		// Prepare query where.
209
-		$this->prepare_query_where( $qv, $table );
210
-
211
-		// Prepare query order.
212
-		$this->prepare_query_order( $qv, $table );
213
-
214
-		// limit
215
-		if ( isset( $qv['number'] ) && $qv['number'] > 0 ) {
216
-			if ( $qv['offset'] ) {
217
-				$this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['offset'], $qv['number'] );
218
-			} else {
219
-				$this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] );
220
-			}
221
-		}
222
-
223
-		do_action_ref_array( 'getpaid_after_subscriptions_query', array( &$this ) );
224
-	}
225
-
226
-	/**
227
-	 * Prepares the query fields.
228
-	 *
229
-	 * @since 1.0.19
230
-	 *
231
-	 * @param array $qv Query vars.
232
-	 * @param string $table Table name.
233
-	 */
234
-	protected function prepare_query_fields( &$qv, $table ) {
235
-
236
-		if ( is_array( $qv['fields'] ) ) {
237
-			$qv['fields'] = array_unique( $qv['fields'] );
238
-
239
-			$query_fields = array();
240
-			foreach ( $qv['fields'] as $field ) {
241
-				$field          = sanitize_key( $field );
242
-				$query_fields[] = "$table.`$field`";
243
-			}
244
-			$this->query_fields = implode( ',', $query_fields );
245
-		} else {
246
-			$this->query_fields = "$table.*";
247
-		}
248
-
249
-		if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
250
-			$this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields;
251
-		}
252
-
253
-	}
254
-
255
-	/**
256
-	 * Prepares the query where.
257
-	 *
258
-	 * @since 1.0.19
259
-	 *
260
-	 * @param array $qv Query vars.
261
-	 * @param string $table Table name.
262
-	 */
263
-	protected function prepare_query_where( &$qv, $table ) {
264
-		global $wpdb;
265
-		$this->query_where = 'WHERE 1=1';
266
-
267
-		// Status.
268
-		if ( 'all' !== $qv['status'] ) {
269
-			$statuses           = wpinv_clean( wpinv_parse_list( $qv['status'] ) );
270
-			$prepared_statuses  = join( ',', array_fill( 0, count( $statuses ), '%s' ) );
271
-			$this->query_where .= $wpdb->prepare( " AND $table.`status` IN ( $prepared_statuses )", $statuses );
272
-		}
273
-
274
-		if ( ! empty( $qv['customer_in'] ) ) {
275
-			$customer_in        = implode( ',', wp_parse_id_list( $qv['customer_in'] ) );
276
-			$this->query_where .= " AND $table.`customer_id` IN ($customer_in)";
277
-		} elseif ( ! empty( $qv['customer_not_in'] ) ) {
278
-			$customer_not_in    = implode( ',', wp_parse_id_list( $qv['customer_not_in'] ) );
279
-			$this->query_where .= " AND $table.`customer_id` NOT IN ($customer_not_in)";
280
-		}
281
-
282
-		if ( ! empty( $qv['product_in'] ) ) {
283
-			$product_in         = implode( ',', wp_parse_id_list( $qv['product_in'] ) );
284
-			$this->query_where .= " AND $table.`product_id` IN ($product_in)";
285
-		} elseif ( ! empty( $qv['product_not_in'] ) ) {
286
-			$product_not_in     = implode( ',', wp_parse_id_list( $qv['product_not_in'] ) );
287
-			$this->query_where .= " AND $table.`product_id` NOT IN ($product_not_in)";
288
-		}
289
-
290
-		if ( ! empty( $qv['invoice_in'] ) ) {
291
-			$invoice_in         = implode( ',', wp_parse_id_list( $qv['invoice_in'] ) );
292
-			$this->query_where .= " AND $table.`parent_payment_id` IN ($invoice_in)";
293
-		} elseif ( ! empty( $qv['invoice_not_in'] ) ) {
294
-			$invoice_not_in     = implode( ',', wp_parse_id_list( $qv['invoice_not_in'] ) );
295
-			$this->query_where .= " AND $table.`parent_payment_id` NOT IN ($invoice_not_in)";
296
-		}
297
-
298
-		if ( ! empty( $qv['include'] ) ) {
299
-			$include            = implode( ',', wp_parse_id_list( $qv['include'] ) );
300
-			$this->query_where .= " AND $table.`id` IN ($include)";
301
-		} elseif ( ! empty( $qv['exclude'] ) ) {
302
-			$exclude            = implode( ',', wp_parse_id_list( $qv['exclude'] ) );
303
-			$this->query_where .= " AND $table.`id` NOT IN ($exclude)";
304
-		}
305
-
306
-		// Date queries are allowed for the subscription creation date.
307
-		if ( ! empty( $qv['date_created_query'] ) && is_array( $qv['date_created_query'] ) ) {
308
-			$date_created_query = new WP_Date_Query( $qv['date_created_query'], "$table.created" );
309
-			$this->query_where .= $date_created_query->get_sql();
310
-		}
311
-
312
-		// Date queries are also allowed for the subscription expiration date.
313
-		if ( ! empty( $qv['date_expires_query'] ) && is_array( $qv['date_expires_query'] ) ) {
314
-			$date_expires_query = new WP_Date_Query( $qv['date_expires_query'], "$table.expiration" );
315
-			$this->query_where .= $date_expires_query->get_sql();
316
-		}
317
-
318
-	}
319
-
320
-	/**
321
-	 * Prepares the query order.
322
-	 *
323
-	 * @since 1.0.19
324
-	 *
325
-	 * @param array $qv Query vars.
326
-	 * @param string $table Table name.
327
-	 */
328
-	protected function prepare_query_order( &$qv, $table ) {
329
-
330
-		// sorting.
331
-		$qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : '';
332
-		$order       = $this->parse_order( $qv['order'] );
333
-
334
-		// Default order is by 'id' (latest subscriptions).
335
-		if ( empty( $qv['orderby'] ) ) {
336
-			$qv['orderby'] = array( 'id' );
337
-		}
338
-
339
-		// 'orderby' values may be an array, comma- or space-separated list.
340
-		$ordersby      = array_filter( wpinv_parse_list( $qv['orderby'] ) );
341
-
342
-		$orderby_array = array();
343
-		foreach ( $ordersby as $_key => $_value ) {
344
-
345
-			if ( is_int( $_key ) ) {
346
-				// Integer key means this is a flat array of 'orderby' fields.
347
-				$_orderby = $_value;
348
-				$_order   = $order;
349
-			} else {
350
-				// Non-integer key means that the key is the field and the value is ASC/DESC.
351
-				$_orderby = $_key;
352
-				$_order   = $_value;
353
-			}
354
-
355
-			$parsed = $this->parse_orderby( $_orderby, $table );
356
-
357
-			if ( $parsed ) {
358
-				$orderby_array[] = $parsed . ' ' . $this->parse_order( $_order );
359
-			}
19
+    /**
20
+     * Query vars, after parsing
21
+     *
22
+     * @since 1.0.19
23
+     * @var array
24
+     */
25
+    public $query_vars = array();
26
+
27
+    /**
28
+     * List of found subscriptions.
29
+     *
30
+     * @since 1.0.19
31
+     * @var array
32
+     */
33
+    private $results;
34
+
35
+    /**
36
+     * Total number of found subscriptions for the current query
37
+     *
38
+     * @since 1.0.19
39
+     * @var int
40
+     */
41
+    private $total_subscriptions = 0;
42
+
43
+    /**
44
+     * The SQL query used to fetch matching subscriptions.
45
+     *
46
+     * @since 1.0.19
47
+     * @var string
48
+     */
49
+    public $request;
50
+
51
+    // SQL clauses
52
+
53
+    /**
54
+     * Contains the 'FIELDS' sql clause
55
+     *
56
+     * @since 1.0.19
57
+     * @var string
58
+     */
59
+    public $query_fields;
60
+
61
+    /**
62
+     * Contains the 'FROM' sql clause
63
+     *
64
+     * @since 1.0.19
65
+     * @var string
66
+     */
67
+    public $query_from;
68
+
69
+    /**
70
+     * Contains the 'WHERE' sql clause
71
+     *
72
+     * @since 1.0.19
73
+     * @var string
74
+     */
75
+    public $query_where;
76
+
77
+    /**
78
+     * Contains the 'ORDER BY' sql clause
79
+     *
80
+     * @since 1.0.19
81
+     * @var string
82
+     */
83
+    public $query_orderby;
84
+
85
+    /**
86
+     * Contains the 'LIMIT' sql clause
87
+     *
88
+     * @since 1.0.19
89
+     * @var string
90
+     */
91
+    public $query_limit;
92
+
93
+    /**
94
+     * Class constructor.
95
+     *
96
+     * @since 1.0.19
97
+     *
98
+     * @param null|string|array $query Optional. The query variables.
99
+     */
100
+    public function __construct( $query = null ) {
101
+        if ( ! is_null( $query ) ) {
102
+            $this->prepare_query( $query );
103
+            $this->query();
104
+        }
105
+    }
106
+
107
+    /**
108
+     * Fills in missing query variables with default values.
109
+     *
110
+     * @since 1.0.19
111
+     *
112
+     * @param  string|array $args Query vars, as passed to `GetPaid_Subscriptions_Query`.
113
+     * @return array Complete query variables with undefined ones filled in with defaults.
114
+     */
115
+    public static function fill_query_vars( $args ) {
116
+        $defaults = array(
117
+            'status'          => 'all',
118
+            'customer_in'     => array(),
119
+            'customer_not_in' => array(),
120
+            'product_in'      => array(),
121
+            'product_not_in'  => array(),
122
+            'include'         => array(),
123
+            'exclude'         => array(),
124
+            'orderby'         => 'id',
125
+            'order'           => 'DESC',
126
+            'offset'          => '',
127
+            'number'          => 10,
128
+            'paged'           => 1,
129
+            'count_total'     => true,
130
+            'fields'          => 'all',
131
+        );
132
+
133
+        return wp_parse_args( $args, $defaults );
134
+    }
135
+
136
+    /**
137
+     * Prepare the query variables.
138
+     *
139
+     * @since 1.0.19
140
+     *
141
+     * @global wpdb $wpdb WordPress database abstraction object.
142
+     *
143
+     * @param string|array $query {
144
+     *     Optional. Array or string of Query parameters.
145
+     *
146
+     *     @type string|array $status              The subscription status to filter by. Can either be a single status or an array of statuses.
147
+     *                                             Default is all.
148
+     *     @type int[]        $customer_in         An array of customer ids to filter by.
149
+     *     @type int[]        $customer_not_in     An array of customer ids whose subscriptions should be excluded.
150
+     *     @type int[]        $invoice_in          An array of invoice ids to filter by.
151
+     *     @type int[]        $invoice_not_in      An array of invoice ids whose subscriptions should be excluded.
152
+     *     @type int[]        $product_in          An array of product ids to filter by.
153
+     *     @type int[]        $product_not_in      An array of product ids whose subscriptions should be excluded.
154
+     *     @type array        $date_created_query  A WP_Date_Query compatible array use to filter subscriptions by their date of creation.
155
+     *     @type array        $date_expires_query  A WP_Date_Query compatible array use to filter subscriptions by their expiration date.
156
+     *     @type array        $include             An array of subscription IDs to include. Default empty array.
157
+     *     @type array        $exclude             An array of subscription IDs to exclude. Default empty array.
158
+     *     @type string|array $orderby             Field(s) to sort the retrieved subscription by. May be a single value,
159
+     *                                             an array of values, or a multi-dimensional array with fields as
160
+     *                                             keys and orders ('ASC' or 'DESC') as values. Accepted values are
161
+     *                                             'id', 'customer_id', 'frequency', 'period', 'initial_amount,
162
+     *                                             'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration'
163
+     *                                             'transaction_id', 'product_id', 'trial_period', 'include', 'status', 'profile_id'. Default array( 'id' ).
164
+     *     @type string       $order               Designates ascending or descending order of subscriptions. Order values
165
+     *                                             passed as part of an `$orderby` array take precedence over this
166
+     *                                             parameter. Accepts 'ASC', 'DESC'. Default 'DESC'.
167
+     *     @type int          $offset              Number of subscriptions to offset in retrieved results. Can be used in
168
+     *                                             conjunction with pagination. Default 0.
169
+     *     @type int          $number              Number of subscriptions to limit the query for. Can be used in
170
+     *                                             conjunction with pagination. Value -1 (all) is supported, but
171
+     *                                             should be used with caution on larger sites.
172
+     *                                             Default 10.
173
+     *     @type int          $paged               When used with number, defines the page of results to return.
174
+     *                                             Default 1.
175
+     *     @type bool         $count_total         Whether to count the total number of subscriptions found. If pagination
176
+     *                                             is not needed, setting this to false can improve performance.
177
+     *                                             Default true.
178
+     *     @type string|array $fields              Which fields to return. Single or all fields (string), or array
179
+     *                                             of fields. Accepts 'id', 'customer_id', 'frequency', 'period', 'initial_amount,
180
+     *                                             'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration'
181
+     *                                             'transaction_id', 'product_id', 'trial_period', 'status', 'profile_id'.
182
+     *                                             Use 'all' for all fields. Default 'all'.
183
+     * }
184
+     */
185
+    public function prepare_query( $query = array() ) {
186
+        global $wpdb;
187
+
188
+        if ( empty( $this->query_vars ) || ! empty( $query ) ) {
189
+            $this->query_limit = null;
190
+            $this->query_vars  = $this->fill_query_vars( $query );
191
+        }
192
+
193
+        if ( ! empty( $this->query_vars['fields'] ) && 'all' !== $this->query_vars['fields'] ) {
194
+            $this->query_vars['fields'] = wpinv_parse_list( $this->query_vars['fields'] );
195
+        }
196
+
197
+        do_action( 'getpaid_pre_get_subscriptions', array( &$this ) );
198
+
199
+        // Ensure that query vars are filled after 'getpaid_pre_get_subscriptions'.
200
+        $qv                =& $this->query_vars;
201
+        $qv                = $this->fill_query_vars( $qv );
202
+        $table             = $wpdb->prefix . 'wpinv_subscriptions';
203
+        $this->query_from  = "FROM $table";
204
+
205
+        // Prepare query fields.
206
+        $this->prepare_query_fields( $qv, $table );
207
+
208
+        // Prepare query where.
209
+        $this->prepare_query_where( $qv, $table );
210
+
211
+        // Prepare query order.
212
+        $this->prepare_query_order( $qv, $table );
213
+
214
+        // limit
215
+        if ( isset( $qv['number'] ) && $qv['number'] > 0 ) {
216
+            if ( $qv['offset'] ) {
217
+                $this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['offset'], $qv['number'] );
218
+            } else {
219
+                $this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] );
220
+            }
221
+        }
222
+
223
+        do_action_ref_array( 'getpaid_after_subscriptions_query', array( &$this ) );
224
+    }
225
+
226
+    /**
227
+     * Prepares the query fields.
228
+     *
229
+     * @since 1.0.19
230
+     *
231
+     * @param array $qv Query vars.
232
+     * @param string $table Table name.
233
+     */
234
+    protected function prepare_query_fields( &$qv, $table ) {
235
+
236
+        if ( is_array( $qv['fields'] ) ) {
237
+            $qv['fields'] = array_unique( $qv['fields'] );
238
+
239
+            $query_fields = array();
240
+            foreach ( $qv['fields'] as $field ) {
241
+                $field          = sanitize_key( $field );
242
+                $query_fields[] = "$table.`$field`";
243
+            }
244
+            $this->query_fields = implode( ',', $query_fields );
245
+        } else {
246
+            $this->query_fields = "$table.*";
247
+        }
248
+
249
+        if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
250
+            $this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields;
251
+        }
252
+
253
+    }
254
+
255
+    /**
256
+     * Prepares the query where.
257
+     *
258
+     * @since 1.0.19
259
+     *
260
+     * @param array $qv Query vars.
261
+     * @param string $table Table name.
262
+     */
263
+    protected function prepare_query_where( &$qv, $table ) {
264
+        global $wpdb;
265
+        $this->query_where = 'WHERE 1=1';
266
+
267
+        // Status.
268
+        if ( 'all' !== $qv['status'] ) {
269
+            $statuses           = wpinv_clean( wpinv_parse_list( $qv['status'] ) );
270
+            $prepared_statuses  = join( ',', array_fill( 0, count( $statuses ), '%s' ) );
271
+            $this->query_where .= $wpdb->prepare( " AND $table.`status` IN ( $prepared_statuses )", $statuses );
272
+        }
273
+
274
+        if ( ! empty( $qv['customer_in'] ) ) {
275
+            $customer_in        = implode( ',', wp_parse_id_list( $qv['customer_in'] ) );
276
+            $this->query_where .= " AND $table.`customer_id` IN ($customer_in)";
277
+        } elseif ( ! empty( $qv['customer_not_in'] ) ) {
278
+            $customer_not_in    = implode( ',', wp_parse_id_list( $qv['customer_not_in'] ) );
279
+            $this->query_where .= " AND $table.`customer_id` NOT IN ($customer_not_in)";
280
+        }
281
+
282
+        if ( ! empty( $qv['product_in'] ) ) {
283
+            $product_in         = implode( ',', wp_parse_id_list( $qv['product_in'] ) );
284
+            $this->query_where .= " AND $table.`product_id` IN ($product_in)";
285
+        } elseif ( ! empty( $qv['product_not_in'] ) ) {
286
+            $product_not_in     = implode( ',', wp_parse_id_list( $qv['product_not_in'] ) );
287
+            $this->query_where .= " AND $table.`product_id` NOT IN ($product_not_in)";
288
+        }
289
+
290
+        if ( ! empty( $qv['invoice_in'] ) ) {
291
+            $invoice_in         = implode( ',', wp_parse_id_list( $qv['invoice_in'] ) );
292
+            $this->query_where .= " AND $table.`parent_payment_id` IN ($invoice_in)";
293
+        } elseif ( ! empty( $qv['invoice_not_in'] ) ) {
294
+            $invoice_not_in     = implode( ',', wp_parse_id_list( $qv['invoice_not_in'] ) );
295
+            $this->query_where .= " AND $table.`parent_payment_id` NOT IN ($invoice_not_in)";
296
+        }
297
+
298
+        if ( ! empty( $qv['include'] ) ) {
299
+            $include            = implode( ',', wp_parse_id_list( $qv['include'] ) );
300
+            $this->query_where .= " AND $table.`id` IN ($include)";
301
+        } elseif ( ! empty( $qv['exclude'] ) ) {
302
+            $exclude            = implode( ',', wp_parse_id_list( $qv['exclude'] ) );
303
+            $this->query_where .= " AND $table.`id` NOT IN ($exclude)";
304
+        }
305
+
306
+        // Date queries are allowed for the subscription creation date.
307
+        if ( ! empty( $qv['date_created_query'] ) && is_array( $qv['date_created_query'] ) ) {
308
+            $date_created_query = new WP_Date_Query( $qv['date_created_query'], "$table.created" );
309
+            $this->query_where .= $date_created_query->get_sql();
310
+        }
311
+
312
+        // Date queries are also allowed for the subscription expiration date.
313
+        if ( ! empty( $qv['date_expires_query'] ) && is_array( $qv['date_expires_query'] ) ) {
314
+            $date_expires_query = new WP_Date_Query( $qv['date_expires_query'], "$table.expiration" );
315
+            $this->query_where .= $date_expires_query->get_sql();
316
+        }
317
+
318
+    }
319
+
320
+    /**
321
+     * Prepares the query order.
322
+     *
323
+     * @since 1.0.19
324
+     *
325
+     * @param array $qv Query vars.
326
+     * @param string $table Table name.
327
+     */
328
+    protected function prepare_query_order( &$qv, $table ) {
329
+
330
+        // sorting.
331
+        $qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : '';
332
+        $order       = $this->parse_order( $qv['order'] );
333
+
334
+        // Default order is by 'id' (latest subscriptions).
335
+        if ( empty( $qv['orderby'] ) ) {
336
+            $qv['orderby'] = array( 'id' );
337
+        }
338
+
339
+        // 'orderby' values may be an array, comma- or space-separated list.
340
+        $ordersby      = array_filter( wpinv_parse_list( $qv['orderby'] ) );
341
+
342
+        $orderby_array = array();
343
+        foreach ( $ordersby as $_key => $_value ) {
344
+
345
+            if ( is_int( $_key ) ) {
346
+                // Integer key means this is a flat array of 'orderby' fields.
347
+                $_orderby = $_value;
348
+                $_order   = $order;
349
+            } else {
350
+                // Non-integer key means that the key is the field and the value is ASC/DESC.
351
+                $_orderby = $_key;
352
+                $_order   = $_value;
353
+            }
354
+
355
+            $parsed = $this->parse_orderby( $_orderby, $table );
356
+
357
+            if ( $parsed ) {
358
+                $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order );
359
+            }
360 360
 }
361 361
 
362
-		// If no valid clauses were found, order by id.
363
-		if ( empty( $orderby_array ) ) {
364
-			$orderby_array[] = "id $order";
365
-		}
366
-
367
-		$this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array );
368
-
369
-	}
370
-
371
-	/**
372
-	 * Execute the query, with the current variables.
373
-	 *
374
-	 * @since 1.0.19
375
-	 *
376
-	 * @global wpdb $wpdb WordPress database abstraction object.
377
-	 */
378
-	public function query() {
379
-		global $wpdb;
380
-
381
-		$qv =& $this->query_vars;
382
-
383
-		// Return a non-null value to bypass the default GetPaid subscriptions query and remember to set the
384
-		// total_subscriptions property.
385
-		$this->results = apply_filters_ref_array( 'getpaid_subscriptions_pre_query', array( null, &$this ) );
386
-
387
-		if ( null === $this->results ) {
388
-			$this->request = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit";
389
-
390
-			if ( ( is_array( $qv['fields'] ) && 1 != count( $qv['fields'] ) ) || 'all' == $qv['fields'] ) {
391
-				$this->results = $wpdb->get_results( $this->request );
392
-			} else {
393
-				$this->results = $wpdb->get_col( $this->request );
394
-			}
395
-
396
-			if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
397
-				$found_subscriptions_query = apply_filters( 'getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this );
398
-				$this->total_subscriptions   = (int) $wpdb->get_var( $found_subscriptions_query );
399
-			}
400
-		}
401
-
402
-		if ( 'all' == $qv['fields'] ) {
403
-			foreach ( $this->results as $key => $subscription ) {
404
-				wp_cache_set( $subscription->id, $subscription, 'getpaid_subscriptions' );
405
-				wp_cache_set( $subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids' );
406
-				wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
407
-				wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
408
-				$this->results[ $key ] = new WPInv_Subscription( $subscription );
409
-			}
410
-		}
411
-
412
-	}
413
-
414
-	/**
415
-	 * Retrieve query variable.
416
-	 *
417
-	 * @since 1.0.19
418
-	 *
419
-	 * @param string $query_var Query variable key.
420
-	 * @return mixed
421
-	 */
422
-	public function get( $query_var ) {
423
-		if ( isset( $this->query_vars[ $query_var ] ) ) {
424
-			return $this->query_vars[ $query_var ];
425
-		}
426
-
427
-		return null;
428
-	}
429
-
430
-	/**
431
-	 * Set query variable.
432
-	 *
433
-	 * @since 1.0.19
434
-	 *
435
-	 * @param string $query_var Query variable key.
436
-	 * @param mixed $value Query variable value.
437
-	 */
438
-	public function set( $query_var, $value ) {
439
-		$this->query_vars[ $query_var ] = $value;
440
-	}
441
-
442
-	/**
443
-	 * Return the list of subscriptions.
444
-	 *
445
-	 * @since 1.0.19
446
-	 *
447
-	 * @return WPInv_Subscription[]|array Found subscriptions.
448
-	 */
449
-	public function get_results() {
450
-		return $this->results;
451
-	}
452
-
453
-	/**
454
-	 * Return the total number of subscriptions for the current query.
455
-	 *
456
-	 * @since 1.0.19
457
-	 *
458
-	 * @return int Number of total subscriptions.
459
-	 */
460
-	public function get_total() {
461
-		return $this->total_subscriptions;
462
-	}
463
-
464
-	/**
465
-	 * Parse and sanitize 'orderby' keys passed to the subscriptions query.
466
-	 *
467
-	 * @since 1.0.19
468
-	 *
469
-	 * @param string $orderby Alias for the field to order by.
470
-	 *  @param string $table The current table.
471
-	 * @return string Value to use in the ORDER clause, if `$orderby` is valid.
472
-	 */
473
-	protected function parse_orderby( $orderby, $table ) {
474
-
475
-		$_orderby = '';
476
-		if ( in_array( $orderby, array( 'customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id' ) ) ) {
477
-			$_orderby = "$table.`$orderby`";
478
-		} elseif ( 'id' === strtolower( $orderby ) ) {
479
-			$_orderby = "$table.id";
480
-		} elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) {
481
-			$include     = wp_parse_id_list( $this->query_vars['include'] );
482
-			$include_sql = implode( ',', $include );
483
-			$_orderby    = "FIELD( $table.id, $include_sql )";
484
-		}
485
-
486
-		return $_orderby;
487
-	}
488
-
489
-	/**
490
-	 * Parse an 'order' query variable and cast it to ASC or DESC as necessary.
491
-	 *
492
-	 * @since 1.0.19
493
-	 *
494
-	 * @param string $order The 'order' query variable.
495
-	 * @return string The sanitized 'order' query variable.
496
-	 */
497
-	protected function parse_order( $order ) {
498
-		if ( ! is_string( $order ) || empty( $order ) ) {
499
-			return 'DESC';
500
-		}
501
-
502
-		if ( 'ASC' === strtoupper( $order ) ) {
503
-			return 'ASC';
504
-		} else {
505
-			return 'DESC';
506
-		}
507
-	}
362
+        // If no valid clauses were found, order by id.
363
+        if ( empty( $orderby_array ) ) {
364
+            $orderby_array[] = "id $order";
365
+        }
366
+
367
+        $this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array );
368
+
369
+    }
370
+
371
+    /**
372
+     * Execute the query, with the current variables.
373
+     *
374
+     * @since 1.0.19
375
+     *
376
+     * @global wpdb $wpdb WordPress database abstraction object.
377
+     */
378
+    public function query() {
379
+        global $wpdb;
380
+
381
+        $qv =& $this->query_vars;
382
+
383
+        // Return a non-null value to bypass the default GetPaid subscriptions query and remember to set the
384
+        // total_subscriptions property.
385
+        $this->results = apply_filters_ref_array( 'getpaid_subscriptions_pre_query', array( null, &$this ) );
386
+
387
+        if ( null === $this->results ) {
388
+            $this->request = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit";
389
+
390
+            if ( ( is_array( $qv['fields'] ) && 1 != count( $qv['fields'] ) ) || 'all' == $qv['fields'] ) {
391
+                $this->results = $wpdb->get_results( $this->request );
392
+            } else {
393
+                $this->results = $wpdb->get_col( $this->request );
394
+            }
395
+
396
+            if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
397
+                $found_subscriptions_query = apply_filters( 'getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this );
398
+                $this->total_subscriptions   = (int) $wpdb->get_var( $found_subscriptions_query );
399
+            }
400
+        }
401
+
402
+        if ( 'all' == $qv['fields'] ) {
403
+            foreach ( $this->results as $key => $subscription ) {
404
+                wp_cache_set( $subscription->id, $subscription, 'getpaid_subscriptions' );
405
+                wp_cache_set( $subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids' );
406
+                wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
407
+                wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
408
+                $this->results[ $key ] = new WPInv_Subscription( $subscription );
409
+            }
410
+        }
411
+
412
+    }
413
+
414
+    /**
415
+     * Retrieve query variable.
416
+     *
417
+     * @since 1.0.19
418
+     *
419
+     * @param string $query_var Query variable key.
420
+     * @return mixed
421
+     */
422
+    public function get( $query_var ) {
423
+        if ( isset( $this->query_vars[ $query_var ] ) ) {
424
+            return $this->query_vars[ $query_var ];
425
+        }
426
+
427
+        return null;
428
+    }
429
+
430
+    /**
431
+     * Set query variable.
432
+     *
433
+     * @since 1.0.19
434
+     *
435
+     * @param string $query_var Query variable key.
436
+     * @param mixed $value Query variable value.
437
+     */
438
+    public function set( $query_var, $value ) {
439
+        $this->query_vars[ $query_var ] = $value;
440
+    }
441
+
442
+    /**
443
+     * Return the list of subscriptions.
444
+     *
445
+     * @since 1.0.19
446
+     *
447
+     * @return WPInv_Subscription[]|array Found subscriptions.
448
+     */
449
+    public function get_results() {
450
+        return $this->results;
451
+    }
452
+
453
+    /**
454
+     * Return the total number of subscriptions for the current query.
455
+     *
456
+     * @since 1.0.19
457
+     *
458
+     * @return int Number of total subscriptions.
459
+     */
460
+    public function get_total() {
461
+        return $this->total_subscriptions;
462
+    }
463
+
464
+    /**
465
+     * Parse and sanitize 'orderby' keys passed to the subscriptions query.
466
+     *
467
+     * @since 1.0.19
468
+     *
469
+     * @param string $orderby Alias for the field to order by.
470
+     *  @param string $table The current table.
471
+     * @return string Value to use in the ORDER clause, if `$orderby` is valid.
472
+     */
473
+    protected function parse_orderby( $orderby, $table ) {
474
+
475
+        $_orderby = '';
476
+        if ( in_array( $orderby, array( 'customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id' ) ) ) {
477
+            $_orderby = "$table.`$orderby`";
478
+        } elseif ( 'id' === strtolower( $orderby ) ) {
479
+            $_orderby = "$table.id";
480
+        } elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) {
481
+            $include     = wp_parse_id_list( $this->query_vars['include'] );
482
+            $include_sql = implode( ',', $include );
483
+            $_orderby    = "FIELD( $table.id, $include_sql )";
484
+        }
485
+
486
+        return $_orderby;
487
+    }
488
+
489
+    /**
490
+     * Parse an 'order' query variable and cast it to ASC or DESC as necessary.
491
+     *
492
+     * @since 1.0.19
493
+     *
494
+     * @param string $order The 'order' query variable.
495
+     * @return string The sanitized 'order' query variable.
496
+     */
497
+    protected function parse_order( $order ) {
498
+        if ( ! is_string( $order ) || empty( $order ) ) {
499
+            return 'DESC';
500
+        }
501
+
502
+        if ( 'ASC' === strtoupper( $order ) ) {
503
+            return 'ASC';
504
+        } else {
505
+            return 'DESC';
506
+        }
507
+    }
508 508
 
509 509
 }
Please login to merge, or discard this patch.
Spacing   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -97,9 +97,9 @@  discard block
 block discarded – undo
97 97
 	 *
98 98
 	 * @param null|string|array $query Optional. The query variables.
99 99
 	 */
100
-	public function __construct( $query = null ) {
101
-		if ( ! is_null( $query ) ) {
102
-			$this->prepare_query( $query );
100
+	public function __construct($query = null) {
101
+		if (!is_null($query)) {
102
+			$this->prepare_query($query);
103 103
 			$this->query();
104 104
 		}
105 105
 	}
@@ -112,7 +112,7 @@  discard block
 block discarded – undo
112 112
 	 * @param  string|array $args Query vars, as passed to `GetPaid_Subscriptions_Query`.
113 113
 	 * @return array Complete query variables with undefined ones filled in with defaults.
114 114
 	 */
115
-	public static function fill_query_vars( $args ) {
115
+	public static function fill_query_vars($args) {
116 116
 		$defaults = array(
117 117
 			'status'          => 'all',
118 118
 			'customer_in'     => array(),
@@ -130,7 +130,7 @@  discard block
 block discarded – undo
130 130
 			'fields'          => 'all',
131 131
 		);
132 132
 
133
-		return wp_parse_args( $args, $defaults );
133
+		return wp_parse_args($args, $defaults);
134 134
 	}
135 135
 
136 136
 	/**
@@ -182,45 +182,45 @@  discard block
 block discarded – undo
182 182
 	 *                                             Use 'all' for all fields. Default 'all'.
183 183
 	 * }
184 184
 	 */
185
-	public function prepare_query( $query = array() ) {
185
+	public function prepare_query($query = array()) {
186 186
 		global $wpdb;
187 187
 
188
-		if ( empty( $this->query_vars ) || ! empty( $query ) ) {
188
+		if (empty($this->query_vars) || !empty($query)) {
189 189
 			$this->query_limit = null;
190
-			$this->query_vars  = $this->fill_query_vars( $query );
190
+			$this->query_vars  = $this->fill_query_vars($query);
191 191
 		}
192 192
 
193
-		if ( ! empty( $this->query_vars['fields'] ) && 'all' !== $this->query_vars['fields'] ) {
194
-			$this->query_vars['fields'] = wpinv_parse_list( $this->query_vars['fields'] );
193
+		if (!empty($this->query_vars['fields']) && 'all' !== $this->query_vars['fields']) {
194
+			$this->query_vars['fields'] = wpinv_parse_list($this->query_vars['fields']);
195 195
 		}
196 196
 
197
-		do_action( 'getpaid_pre_get_subscriptions', array( &$this ) );
197
+		do_action('getpaid_pre_get_subscriptions', array(&$this));
198 198
 
199 199
 		// Ensure that query vars are filled after 'getpaid_pre_get_subscriptions'.
200
-		$qv                =& $this->query_vars;
201
-		$qv                = $this->fill_query_vars( $qv );
200
+		$qv                = & $this->query_vars;
201
+		$qv                = $this->fill_query_vars($qv);
202 202
 		$table             = $wpdb->prefix . 'wpinv_subscriptions';
203 203
 		$this->query_from  = "FROM $table";
204 204
 
205 205
 		// Prepare query fields.
206
-		$this->prepare_query_fields( $qv, $table );
206
+		$this->prepare_query_fields($qv, $table);
207 207
 
208 208
 		// Prepare query where.
209
-		$this->prepare_query_where( $qv, $table );
209
+		$this->prepare_query_where($qv, $table);
210 210
 
211 211
 		// Prepare query order.
212
-		$this->prepare_query_order( $qv, $table );
212
+		$this->prepare_query_order($qv, $table);
213 213
 
214 214
 		// limit
215
-		if ( isset( $qv['number'] ) && $qv['number'] > 0 ) {
216
-			if ( $qv['offset'] ) {
217
-				$this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['offset'], $qv['number'] );
215
+		if (isset($qv['number']) && $qv['number'] > 0) {
216
+			if ($qv['offset']) {
217
+				$this->query_limit = $wpdb->prepare('LIMIT %d, %d', $qv['offset'], $qv['number']);
218 218
 			} else {
219
-				$this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] );
219
+				$this->query_limit = $wpdb->prepare('LIMIT %d, %d', $qv['number'] * ($qv['paged'] - 1), $qv['number']);
220 220
 			}
221 221
 		}
222 222
 
223
-		do_action_ref_array( 'getpaid_after_subscriptions_query', array( &$this ) );
223
+		do_action_ref_array('getpaid_after_subscriptions_query', array(&$this));
224 224
 	}
225 225
 
226 226
 	/**
@@ -231,22 +231,22 @@  discard block
 block discarded – undo
231 231
 	 * @param array $qv Query vars.
232 232
 	 * @param string $table Table name.
233 233
 	 */
234
-	protected function prepare_query_fields( &$qv, $table ) {
234
+	protected function prepare_query_fields(&$qv, $table) {
235 235
 
236
-		if ( is_array( $qv['fields'] ) ) {
237
-			$qv['fields'] = array_unique( $qv['fields'] );
236
+		if (is_array($qv['fields'])) {
237
+			$qv['fields'] = array_unique($qv['fields']);
238 238
 
239 239
 			$query_fields = array();
240
-			foreach ( $qv['fields'] as $field ) {
241
-				$field          = sanitize_key( $field );
240
+			foreach ($qv['fields'] as $field) {
241
+				$field          = sanitize_key($field);
242 242
 				$query_fields[] = "$table.`$field`";
243 243
 			}
244
-			$this->query_fields = implode( ',', $query_fields );
244
+			$this->query_fields = implode(',', $query_fields);
245 245
 		} else {
246 246
 			$this->query_fields = "$table.*";
247 247
 		}
248 248
 
249
-		if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
249
+		if (isset($qv['count_total']) && $qv['count_total']) {
250 250
 			$this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields;
251 251
 		}
252 252
 
@@ -260,58 +260,58 @@  discard block
 block discarded – undo
260 260
 	 * @param array $qv Query vars.
261 261
 	 * @param string $table Table name.
262 262
 	 */
263
-	protected function prepare_query_where( &$qv, $table ) {
263
+	protected function prepare_query_where(&$qv, $table) {
264 264
 		global $wpdb;
265 265
 		$this->query_where = 'WHERE 1=1';
266 266
 
267 267
 		// Status.
268
-		if ( 'all' !== $qv['status'] ) {
269
-			$statuses           = wpinv_clean( wpinv_parse_list( $qv['status'] ) );
270
-			$prepared_statuses  = join( ',', array_fill( 0, count( $statuses ), '%s' ) );
271
-			$this->query_where .= $wpdb->prepare( " AND $table.`status` IN ( $prepared_statuses )", $statuses );
268
+		if ('all' !== $qv['status']) {
269
+			$statuses           = wpinv_clean(wpinv_parse_list($qv['status']));
270
+			$prepared_statuses  = join(',', array_fill(0, count($statuses), '%s'));
271
+			$this->query_where .= $wpdb->prepare(" AND $table.`status` IN ( $prepared_statuses )", $statuses);
272 272
 		}
273 273
 
274
-		if ( ! empty( $qv['customer_in'] ) ) {
275
-			$customer_in        = implode( ',', wp_parse_id_list( $qv['customer_in'] ) );
274
+		if (!empty($qv['customer_in'])) {
275
+			$customer_in        = implode(',', wp_parse_id_list($qv['customer_in']));
276 276
 			$this->query_where .= " AND $table.`customer_id` IN ($customer_in)";
277
-		} elseif ( ! empty( $qv['customer_not_in'] ) ) {
278
-			$customer_not_in    = implode( ',', wp_parse_id_list( $qv['customer_not_in'] ) );
277
+		} elseif (!empty($qv['customer_not_in'])) {
278
+			$customer_not_in    = implode(',', wp_parse_id_list($qv['customer_not_in']));
279 279
 			$this->query_where .= " AND $table.`customer_id` NOT IN ($customer_not_in)";
280 280
 		}
281 281
 
282
-		if ( ! empty( $qv['product_in'] ) ) {
283
-			$product_in         = implode( ',', wp_parse_id_list( $qv['product_in'] ) );
282
+		if (!empty($qv['product_in'])) {
283
+			$product_in         = implode(',', wp_parse_id_list($qv['product_in']));
284 284
 			$this->query_where .= " AND $table.`product_id` IN ($product_in)";
285
-		} elseif ( ! empty( $qv['product_not_in'] ) ) {
286
-			$product_not_in     = implode( ',', wp_parse_id_list( $qv['product_not_in'] ) );
285
+		} elseif (!empty($qv['product_not_in'])) {
286
+			$product_not_in     = implode(',', wp_parse_id_list($qv['product_not_in']));
287 287
 			$this->query_where .= " AND $table.`product_id` NOT IN ($product_not_in)";
288 288
 		}
289 289
 
290
-		if ( ! empty( $qv['invoice_in'] ) ) {
291
-			$invoice_in         = implode( ',', wp_parse_id_list( $qv['invoice_in'] ) );
290
+		if (!empty($qv['invoice_in'])) {
291
+			$invoice_in         = implode(',', wp_parse_id_list($qv['invoice_in']));
292 292
 			$this->query_where .= " AND $table.`parent_payment_id` IN ($invoice_in)";
293
-		} elseif ( ! empty( $qv['invoice_not_in'] ) ) {
294
-			$invoice_not_in     = implode( ',', wp_parse_id_list( $qv['invoice_not_in'] ) );
293
+		} elseif (!empty($qv['invoice_not_in'])) {
294
+			$invoice_not_in     = implode(',', wp_parse_id_list($qv['invoice_not_in']));
295 295
 			$this->query_where .= " AND $table.`parent_payment_id` NOT IN ($invoice_not_in)";
296 296
 		}
297 297
 
298
-		if ( ! empty( $qv['include'] ) ) {
299
-			$include            = implode( ',', wp_parse_id_list( $qv['include'] ) );
298
+		if (!empty($qv['include'])) {
299
+			$include            = implode(',', wp_parse_id_list($qv['include']));
300 300
 			$this->query_where .= " AND $table.`id` IN ($include)";
301
-		} elseif ( ! empty( $qv['exclude'] ) ) {
302
-			$exclude            = implode( ',', wp_parse_id_list( $qv['exclude'] ) );
301
+		} elseif (!empty($qv['exclude'])) {
302
+			$exclude            = implode(',', wp_parse_id_list($qv['exclude']));
303 303
 			$this->query_where .= " AND $table.`id` NOT IN ($exclude)";
304 304
 		}
305 305
 
306 306
 		// Date queries are allowed for the subscription creation date.
307
-		if ( ! empty( $qv['date_created_query'] ) && is_array( $qv['date_created_query'] ) ) {
308
-			$date_created_query = new WP_Date_Query( $qv['date_created_query'], "$table.created" );
307
+		if (!empty($qv['date_created_query']) && is_array($qv['date_created_query'])) {
308
+			$date_created_query = new WP_Date_Query($qv['date_created_query'], "$table.created");
309 309
 			$this->query_where .= $date_created_query->get_sql();
310 310
 		}
311 311
 
312 312
 		// Date queries are also allowed for the subscription expiration date.
313
-		if ( ! empty( $qv['date_expires_query'] ) && is_array( $qv['date_expires_query'] ) ) {
314
-			$date_expires_query = new WP_Date_Query( $qv['date_expires_query'], "$table.expiration" );
313
+		if (!empty($qv['date_expires_query']) && is_array($qv['date_expires_query'])) {
314
+			$date_expires_query = new WP_Date_Query($qv['date_expires_query'], "$table.expiration");
315 315
 			$this->query_where .= $date_expires_query->get_sql();
316 316
 		}
317 317
 
@@ -325,24 +325,24 @@  discard block
 block discarded – undo
325 325
 	 * @param array $qv Query vars.
326 326
 	 * @param string $table Table name.
327 327
 	 */
328
-	protected function prepare_query_order( &$qv, $table ) {
328
+	protected function prepare_query_order(&$qv, $table) {
329 329
 
330 330
 		// sorting.
331
-		$qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : '';
332
-		$order       = $this->parse_order( $qv['order'] );
331
+		$qv['order'] = isset($qv['order']) ? strtoupper($qv['order']) : '';
332
+		$order       = $this->parse_order($qv['order']);
333 333
 
334 334
 		// Default order is by 'id' (latest subscriptions).
335
-		if ( empty( $qv['orderby'] ) ) {
336
-			$qv['orderby'] = array( 'id' );
335
+		if (empty($qv['orderby'])) {
336
+			$qv['orderby'] = array('id');
337 337
 		}
338 338
 
339 339
 		// 'orderby' values may be an array, comma- or space-separated list.
340
-		$ordersby      = array_filter( wpinv_parse_list( $qv['orderby'] ) );
340
+		$ordersby      = array_filter(wpinv_parse_list($qv['orderby']));
341 341
 
342 342
 		$orderby_array = array();
343
-		foreach ( $ordersby as $_key => $_value ) {
343
+		foreach ($ordersby as $_key => $_value) {
344 344
 
345
-			if ( is_int( $_key ) ) {
345
+			if (is_int($_key)) {
346 346
 				// Integer key means this is a flat array of 'orderby' fields.
347 347
 				$_orderby = $_value;
348 348
 				$_order   = $order;
@@ -352,19 +352,19 @@  discard block
 block discarded – undo
352 352
 				$_order   = $_value;
353 353
 			}
354 354
 
355
-			$parsed = $this->parse_orderby( $_orderby, $table );
355
+			$parsed = $this->parse_orderby($_orderby, $table);
356 356
 
357
-			if ( $parsed ) {
358
-				$orderby_array[] = $parsed . ' ' . $this->parse_order( $_order );
357
+			if ($parsed) {
358
+				$orderby_array[] = $parsed . ' ' . $this->parse_order($_order);
359 359
 			}
360 360
 }
361 361
 
362 362
 		// If no valid clauses were found, order by id.
363
-		if ( empty( $orderby_array ) ) {
363
+		if (empty($orderby_array)) {
364 364
 			$orderby_array[] = "id $order";
365 365
 		}
366 366
 
367
-		$this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array );
367
+		$this->query_orderby = 'ORDER BY ' . implode(', ', $orderby_array);
368 368
 
369 369
 	}
370 370
 
@@ -378,34 +378,34 @@  discard block
 block discarded – undo
378 378
 	public function query() {
379 379
 		global $wpdb;
380 380
 
381
-		$qv =& $this->query_vars;
381
+		$qv = & $this->query_vars;
382 382
 
383 383
 		// Return a non-null value to bypass the default GetPaid subscriptions query and remember to set the
384 384
 		// total_subscriptions property.
385
-		$this->results = apply_filters_ref_array( 'getpaid_subscriptions_pre_query', array( null, &$this ) );
385
+		$this->results = apply_filters_ref_array('getpaid_subscriptions_pre_query', array(null, &$this));
386 386
 
387
-		if ( null === $this->results ) {
387
+		if (null === $this->results) {
388 388
 			$this->request = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit";
389 389
 
390
-			if ( ( is_array( $qv['fields'] ) && 1 != count( $qv['fields'] ) ) || 'all' == $qv['fields'] ) {
391
-				$this->results = $wpdb->get_results( $this->request );
390
+			if ((is_array($qv['fields']) && 1 != count($qv['fields'])) || 'all' == $qv['fields']) {
391
+				$this->results = $wpdb->get_results($this->request);
392 392
 			} else {
393
-				$this->results = $wpdb->get_col( $this->request );
393
+				$this->results = $wpdb->get_col($this->request);
394 394
 			}
395 395
 
396
-			if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
397
-				$found_subscriptions_query = apply_filters( 'getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this );
398
-				$this->total_subscriptions   = (int) $wpdb->get_var( $found_subscriptions_query );
396
+			if (isset($qv['count_total']) && $qv['count_total']) {
397
+				$found_subscriptions_query = apply_filters('getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this);
398
+				$this->total_subscriptions = (int) $wpdb->get_var($found_subscriptions_query);
399 399
 			}
400 400
 		}
401 401
 
402
-		if ( 'all' == $qv['fields'] ) {
403
-			foreach ( $this->results as $key => $subscription ) {
404
-				wp_cache_set( $subscription->id, $subscription, 'getpaid_subscriptions' );
405
-				wp_cache_set( $subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids' );
406
-				wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
407
-				wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
408
-				$this->results[ $key ] = new WPInv_Subscription( $subscription );
402
+		if ('all' == $qv['fields']) {
403
+			foreach ($this->results as $key => $subscription) {
404
+				wp_cache_set($subscription->id, $subscription, 'getpaid_subscriptions');
405
+				wp_cache_set($subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids');
406
+				wp_cache_set($subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids');
407
+				wp_cache_set($subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids');
408
+				$this->results[$key] = new WPInv_Subscription($subscription);
409 409
 			}
410 410
 		}
411 411
 
@@ -419,9 +419,9 @@  discard block
 block discarded – undo
419 419
 	 * @param string $query_var Query variable key.
420 420
 	 * @return mixed
421 421
 	 */
422
-	public function get( $query_var ) {
423
-		if ( isset( $this->query_vars[ $query_var ] ) ) {
424
-			return $this->query_vars[ $query_var ];
422
+	public function get($query_var) {
423
+		if (isset($this->query_vars[$query_var])) {
424
+			return $this->query_vars[$query_var];
425 425
 		}
426 426
 
427 427
 		return null;
@@ -435,8 +435,8 @@  discard block
 block discarded – undo
435 435
 	 * @param string $query_var Query variable key.
436 436
 	 * @param mixed $value Query variable value.
437 437
 	 */
438
-	public function set( $query_var, $value ) {
439
-		$this->query_vars[ $query_var ] = $value;
438
+	public function set($query_var, $value) {
439
+		$this->query_vars[$query_var] = $value;
440 440
 	}
441 441
 
442 442
 	/**
@@ -470,16 +470,16 @@  discard block
 block discarded – undo
470 470
 	 *  @param string $table The current table.
471 471
 	 * @return string Value to use in the ORDER clause, if `$orderby` is valid.
472 472
 	 */
473
-	protected function parse_orderby( $orderby, $table ) {
473
+	protected function parse_orderby($orderby, $table) {
474 474
 
475 475
 		$_orderby = '';
476
-		if ( in_array( $orderby, array( 'customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id' ) ) ) {
476
+		if (in_array($orderby, array('customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id'))) {
477 477
 			$_orderby = "$table.`$orderby`";
478
-		} elseif ( 'id' === strtolower( $orderby ) ) {
478
+		} elseif ('id' === strtolower($orderby)) {
479 479
 			$_orderby = "$table.id";
480
-		} elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) {
481
-			$include     = wp_parse_id_list( $this->query_vars['include'] );
482
-			$include_sql = implode( ',', $include );
480
+		} elseif ('include' === $orderby && !empty($this->query_vars['include'])) {
481
+			$include     = wp_parse_id_list($this->query_vars['include']);
482
+			$include_sql = implode(',', $include);
483 483
 			$_orderby    = "FIELD( $table.id, $include_sql )";
484 484
 		}
485 485
 
@@ -494,12 +494,12 @@  discard block
 block discarded – undo
494 494
 	 * @param string $order The 'order' query variable.
495 495
 	 * @return string The sanitized 'order' query variable.
496 496
 	 */
497
-	protected function parse_order( $order ) {
498
-		if ( ! is_string( $order ) || empty( $order ) ) {
497
+	protected function parse_order($order) {
498
+		if (!is_string($order) || empty($order)) {
499 499
 			return 'DESC';
500 500
 		}
501 501
 
502
-		if ( 'ASC' === strtoupper( $order ) ) {
502
+		if ('ASC' === strtoupper($order)) {
503 503
 			return 'ASC';
504 504
 		} else {
505 505
 			return 'DESC';
Please login to merge, or discard this patch.
includes/class-wpinv-db.php 2 patches
Indentation   +232 added lines, -232 removed lines patch added patch discarded remove patch
@@ -7,237 +7,237 @@
 block discarded – undo
7 7
 
8 8
 abstract class Wpinv_DB {
9 9
 
10
-	/**
11
-	 * The name of our database table
12
-	 *
13
-	 * @access  public
14
-	 * @since   1.0.0
15
-	 */
16
-	public $table_name;
17
-
18
-	/**
19
-	 * The version of our database table
20
-	 *
21
-	 * @access  public
22
-	 * @since   1.0.0
23
-	 */
24
-	public $version;
25
-
26
-	/**
27
-	 * The name of the primary column
28
-	 *
29
-	 * @access  public
30
-	 * @since   1.0.0
31
-	 */
32
-	public $primary_key;
33
-
34
-	/**
35
-	 * Get things started
36
-	 *
37
-	 * @access  public
38
-	 * @since   1.0.0
39
-	 */
40
-	public function __construct() {}
41
-
42
-	/**
43
-	 * Whitelist of columns
44
-	 *
45
-	 * @access  public
46
-	 * @since   1.0.0
47
-	 * @return  array
48
-	 */
49
-	public function get_columns() {
50
-		return array();
51
-	}
52
-
53
-	/**
54
-	 * Default column values
55
-	 *
56
-	 * @access  public
57
-	 * @since   1.0.0
58
-	 * @return  array
59
-	 */
60
-	public function get_column_defaults() {
61
-		return array();
62
-	}
63
-
64
-	/**
65
-	 * Retrieve a row by the primary key
66
-	 *
67
-	 * @access  public
68
-	 * @since   1.0.0
69
-	 * @return  object
70
-	 */
71
-	public function get( $row_id ) {
72
-		global $wpdb;
73
-		return $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id ) );
74
-	}
75
-
76
-	/**
77
-	 * Retrieve a row by a specific column / value
78
-	 *
79
-	 * @access  public
80
-	 * @since   1.0.0
81
-	 * @return  object
82
-	 */
83
-	public function get_by( $column, $row_id ) {
84
-		global $wpdb;
85
-		$column = esc_sql( $column );
86
-		return $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $this->table_name WHERE $column = %s LIMIT 1;", $row_id ) );
87
-	}
88
-
89
-	/**
90
-	 * Retrieve a specific column's value by the primary key
91
-	 *
92
-	 * @access  public
93
-	 * @since   1.0.0
94
-	 * @return  string
95
-	 */
96
-	public function get_column( $column, $row_id ) {
97
-		global $wpdb;
98
-		$column = esc_sql( $column );
99
-		return $wpdb->get_var( $wpdb->prepare( "SELECT $column FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id ) );
100
-	}
101
-
102
-	/**
103
-	 * Retrieve a specific column's value by the the specified column / value
104
-	 *
105
-	 * @access  public
106
-	 * @since   1.0.0
107
-	 * @return  string
108
-	 */
109
-	public function get_column_by( $column, $column_where, $column_value ) {
110
-		global $wpdb;
111
-		$column_where = esc_sql( $column_where );
112
-		$column       = esc_sql( $column );
113
-		return $wpdb->get_var( $wpdb->prepare( "SELECT $column FROM $this->table_name WHERE $column_where = %s LIMIT 1;", $column_value ) );
114
-	}
115
-
116
-	/**
117
-	 * Insert a new row
118
-	 *
119
-	 * @access  public
120
-	 * @since   1.0.0
121
-	 * @return  int
122
-	 */
123
-	public function insert( $data, $type = '' ) {
124
-		global $wpdb;
125
-
126
-		// Set default values
127
-		$data = wp_parse_args( $data, $this->get_column_defaults() );
128
-
129
-		do_action( 'wpinv_pre_insert_' . $type, $data );
130
-
131
-		// Initialise column format array
132
-		$column_formats = $this->get_columns();
133
-
134
-		// Force fields to lower case
135
-		$data = array_change_key_case( $data );
136
-
137
-		// White list columns
138
-		$data = array_intersect_key( $data, $column_formats );
139
-
140
-		// Reorder $column_formats to match the order of columns given in $data
141
-		$data_keys = array_keys( $data );
142
-		$column_formats = array_merge( array_flip( $data_keys ), $column_formats );
143
-
144
-		$wpdb->insert( $this->table_name, $data, $column_formats );
145
-		$wpdb_insert_id = $wpdb->insert_id;
146
-
147
-		do_action( 'wpinv_post_insert_' . $type, $wpdb_insert_id, $data );
148
-
149
-		return $wpdb_insert_id;
150
-	}
151
-
152
-	/**
153
-	 * Update a row
154
-	 *
155
-	 * @access  public
156
-	 * @since   1.0.0
157
-	 * @return  bool
158
-	 */
159
-	public function update( $row_id, $data = array(), $where = '' ) {
160
-
161
-		global $wpdb;
162
-
163
-		// Row ID must be positive integer
164
-		$row_id = absint( $row_id );
165
-
166
-		if ( empty( $row_id ) ) {
167
-			return false;
168
-		}
169
-
170
-		if ( empty( $where ) ) {
171
-			$where = $this->primary_key;
172
-		}
173
-
174
-		// Initialise column format array
175
-		$column_formats = $this->get_columns();
176
-
177
-		// Force fields to lower case
178
-		$data = array_change_key_case( $data );
179
-
180
-		// White list columns
181
-		$data = array_intersect_key( $data, $column_formats );
182
-
183
-		// Reorder $column_formats to match the order of columns given in $data
184
-		$data_keys = array_keys( $data );
185
-		$column_formats = array_merge( array_flip( $data_keys ), $column_formats );
186
-
187
-		if ( false === $wpdb->update( $this->table_name, $data, array( $where => $row_id ), $column_formats ) ) {
188
-			return false;
189
-		}
190
-
191
-		return true;
192
-	}
193
-
194
-	/**
195
-	 * Delete a row identified by the primary key
196
-	 *
197
-	 * @access  public
198
-	 * @since   1.0.0
199
-	 * @return  bool
200
-	 */
201
-	public function delete( $row_id = 0 ) {
202
-
203
-		global $wpdb;
204
-
205
-		// Row ID must be positive integer
206
-		$row_id = absint( $row_id );
207
-
208
-		if ( empty( $row_id ) ) {
209
-			return false;
210
-		}
211
-
212
-		if ( false === $wpdb->query( $wpdb->prepare( "DELETE FROM $this->table_name WHERE $this->primary_key = %d", $row_id ) ) ) {
213
-			return false;
214
-		}
215
-
216
-		return true;
217
-	}
218
-
219
-	/**
220
-	 * Check if the given table exists
221
-	 *
222
-	 * @since  2.4
223
-	 * @param  string $table The table name
224
-	 * @return bool          If the table name exists
225
-	 */
226
-	public function table_exists( $table ) {
227
-		global $wpdb;
228
-		$table = sanitize_text_field( $table );
229
-
230
-		return $wpdb->get_var( $wpdb->prepare( "SHOW TABLES LIKE '%s'", $table ) ) === $table;
231
-	}
232
-
233
-	/**
234
-	 * Check if the table was ever installed
235
-	 *
236
-	 * @since  2.4
237
-	 * @return bool Returns if the customers table was installed and upgrade routine run
238
-	 */
239
-	public function installed() {
240
-		return $this->table_exists( $this->table_name );
241
-	}
10
+    /**
11
+     * The name of our database table
12
+     *
13
+     * @access  public
14
+     * @since   1.0.0
15
+     */
16
+    public $table_name;
17
+
18
+    /**
19
+     * The version of our database table
20
+     *
21
+     * @access  public
22
+     * @since   1.0.0
23
+     */
24
+    public $version;
25
+
26
+    /**
27
+     * The name of the primary column
28
+     *
29
+     * @access  public
30
+     * @since   1.0.0
31
+     */
32
+    public $primary_key;
33
+
34
+    /**
35
+     * Get things started
36
+     *
37
+     * @access  public
38
+     * @since   1.0.0
39
+     */
40
+    public function __construct() {}
41
+
42
+    /**
43
+     * Whitelist of columns
44
+     *
45
+     * @access  public
46
+     * @since   1.0.0
47
+     * @return  array
48
+     */
49
+    public function get_columns() {
50
+        return array();
51
+    }
52
+
53
+    /**
54
+     * Default column values
55
+     *
56
+     * @access  public
57
+     * @since   1.0.0
58
+     * @return  array
59
+     */
60
+    public function get_column_defaults() {
61
+        return array();
62
+    }
63
+
64
+    /**
65
+     * Retrieve a row by the primary key
66
+     *
67
+     * @access  public
68
+     * @since   1.0.0
69
+     * @return  object
70
+     */
71
+    public function get( $row_id ) {
72
+        global $wpdb;
73
+        return $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id ) );
74
+    }
75
+
76
+    /**
77
+     * Retrieve a row by a specific column / value
78
+     *
79
+     * @access  public
80
+     * @since   1.0.0
81
+     * @return  object
82
+     */
83
+    public function get_by( $column, $row_id ) {
84
+        global $wpdb;
85
+        $column = esc_sql( $column );
86
+        return $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $this->table_name WHERE $column = %s LIMIT 1;", $row_id ) );
87
+    }
88
+
89
+    /**
90
+     * Retrieve a specific column's value by the primary key
91
+     *
92
+     * @access  public
93
+     * @since   1.0.0
94
+     * @return  string
95
+     */
96
+    public function get_column( $column, $row_id ) {
97
+        global $wpdb;
98
+        $column = esc_sql( $column );
99
+        return $wpdb->get_var( $wpdb->prepare( "SELECT $column FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id ) );
100
+    }
101
+
102
+    /**
103
+     * Retrieve a specific column's value by the the specified column / value
104
+     *
105
+     * @access  public
106
+     * @since   1.0.0
107
+     * @return  string
108
+     */
109
+    public function get_column_by( $column, $column_where, $column_value ) {
110
+        global $wpdb;
111
+        $column_where = esc_sql( $column_where );
112
+        $column       = esc_sql( $column );
113
+        return $wpdb->get_var( $wpdb->prepare( "SELECT $column FROM $this->table_name WHERE $column_where = %s LIMIT 1;", $column_value ) );
114
+    }
115
+
116
+    /**
117
+     * Insert a new row
118
+     *
119
+     * @access  public
120
+     * @since   1.0.0
121
+     * @return  int
122
+     */
123
+    public function insert( $data, $type = '' ) {
124
+        global $wpdb;
125
+
126
+        // Set default values
127
+        $data = wp_parse_args( $data, $this->get_column_defaults() );
128
+
129
+        do_action( 'wpinv_pre_insert_' . $type, $data );
130
+
131
+        // Initialise column format array
132
+        $column_formats = $this->get_columns();
133
+
134
+        // Force fields to lower case
135
+        $data = array_change_key_case( $data );
136
+
137
+        // White list columns
138
+        $data = array_intersect_key( $data, $column_formats );
139
+
140
+        // Reorder $column_formats to match the order of columns given in $data
141
+        $data_keys = array_keys( $data );
142
+        $column_formats = array_merge( array_flip( $data_keys ), $column_formats );
143
+
144
+        $wpdb->insert( $this->table_name, $data, $column_formats );
145
+        $wpdb_insert_id = $wpdb->insert_id;
146
+
147
+        do_action( 'wpinv_post_insert_' . $type, $wpdb_insert_id, $data );
148
+
149
+        return $wpdb_insert_id;
150
+    }
151
+
152
+    /**
153
+     * Update a row
154
+     *
155
+     * @access  public
156
+     * @since   1.0.0
157
+     * @return  bool
158
+     */
159
+    public function update( $row_id, $data = array(), $where = '' ) {
160
+
161
+        global $wpdb;
162
+
163
+        // Row ID must be positive integer
164
+        $row_id = absint( $row_id );
165
+
166
+        if ( empty( $row_id ) ) {
167
+            return false;
168
+        }
169
+
170
+        if ( empty( $where ) ) {
171
+            $where = $this->primary_key;
172
+        }
173
+
174
+        // Initialise column format array
175
+        $column_formats = $this->get_columns();
176
+
177
+        // Force fields to lower case
178
+        $data = array_change_key_case( $data );
179
+
180
+        // White list columns
181
+        $data = array_intersect_key( $data, $column_formats );
182
+
183
+        // Reorder $column_formats to match the order of columns given in $data
184
+        $data_keys = array_keys( $data );
185
+        $column_formats = array_merge( array_flip( $data_keys ), $column_formats );
186
+
187
+        if ( false === $wpdb->update( $this->table_name, $data, array( $where => $row_id ), $column_formats ) ) {
188
+            return false;
189
+        }
190
+
191
+        return true;
192
+    }
193
+
194
+    /**
195
+     * Delete a row identified by the primary key
196
+     *
197
+     * @access  public
198
+     * @since   1.0.0
199
+     * @return  bool
200
+     */
201
+    public function delete( $row_id = 0 ) {
202
+
203
+        global $wpdb;
204
+
205
+        // Row ID must be positive integer
206
+        $row_id = absint( $row_id );
207
+
208
+        if ( empty( $row_id ) ) {
209
+            return false;
210
+        }
211
+
212
+        if ( false === $wpdb->query( $wpdb->prepare( "DELETE FROM $this->table_name WHERE $this->primary_key = %d", $row_id ) ) ) {
213
+            return false;
214
+        }
215
+
216
+        return true;
217
+    }
218
+
219
+    /**
220
+     * Check if the given table exists
221
+     *
222
+     * @since  2.4
223
+     * @param  string $table The table name
224
+     * @return bool          If the table name exists
225
+     */
226
+    public function table_exists( $table ) {
227
+        global $wpdb;
228
+        $table = sanitize_text_field( $table );
229
+
230
+        return $wpdb->get_var( $wpdb->prepare( "SHOW TABLES LIKE '%s'", $table ) ) === $table;
231
+    }
232
+
233
+    /**
234
+     * Check if the table was ever installed
235
+     *
236
+     * @since  2.4
237
+     * @return bool Returns if the customers table was installed and upgrade routine run
238
+     */
239
+    public function installed() {
240
+        return $this->table_exists( $this->table_name );
241
+    }
242 242
 
243 243
 }
Please login to merge, or discard this patch.
Spacing   +39 added lines, -39 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 // Exit if accessed directly
4
-if ( ! defined( 'ABSPATH' ) ) {
4
+if (!defined('ABSPATH')) {
5 5
 exit;
6 6
 }
7 7
 
@@ -68,9 +68,9 @@  discard block
 block discarded – undo
68 68
 	 * @since   1.0.0
69 69
 	 * @return  object
70 70
 	 */
71
-	public function get( $row_id ) {
71
+	public function get($row_id) {
72 72
 		global $wpdb;
73
-		return $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id ) );
73
+		return $wpdb->get_row($wpdb->prepare("SELECT * FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id));
74 74
 	}
75 75
 
76 76
 	/**
@@ -80,10 +80,10 @@  discard block
 block discarded – undo
80 80
 	 * @since   1.0.0
81 81
 	 * @return  object
82 82
 	 */
83
-	public function get_by( $column, $row_id ) {
83
+	public function get_by($column, $row_id) {
84 84
 		global $wpdb;
85
-		$column = esc_sql( $column );
86
-		return $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $this->table_name WHERE $column = %s LIMIT 1;", $row_id ) );
85
+		$column = esc_sql($column);
86
+		return $wpdb->get_row($wpdb->prepare("SELECT * FROM $this->table_name WHERE $column = %s LIMIT 1;", $row_id));
87 87
 	}
88 88
 
89 89
 	/**
@@ -93,10 +93,10 @@  discard block
 block discarded – undo
93 93
 	 * @since   1.0.0
94 94
 	 * @return  string
95 95
 	 */
96
-	public function get_column( $column, $row_id ) {
96
+	public function get_column($column, $row_id) {
97 97
 		global $wpdb;
98
-		$column = esc_sql( $column );
99
-		return $wpdb->get_var( $wpdb->prepare( "SELECT $column FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id ) );
98
+		$column = esc_sql($column);
99
+		return $wpdb->get_var($wpdb->prepare("SELECT $column FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id));
100 100
 	}
101 101
 
102 102
 	/**
@@ -106,11 +106,11 @@  discard block
 block discarded – undo
106 106
 	 * @since   1.0.0
107 107
 	 * @return  string
108 108
 	 */
109
-	public function get_column_by( $column, $column_where, $column_value ) {
109
+	public function get_column_by($column, $column_where, $column_value) {
110 110
 		global $wpdb;
111
-		$column_where = esc_sql( $column_where );
112
-		$column       = esc_sql( $column );
113
-		return $wpdb->get_var( $wpdb->prepare( "SELECT $column FROM $this->table_name WHERE $column_where = %s LIMIT 1;", $column_value ) );
111
+		$column_where = esc_sql($column_where);
112
+		$column       = esc_sql($column);
113
+		return $wpdb->get_var($wpdb->prepare("SELECT $column FROM $this->table_name WHERE $column_where = %s LIMIT 1;", $column_value));
114 114
 	}
115 115
 
116 116
 	/**
@@ -120,31 +120,31 @@  discard block
 block discarded – undo
120 120
 	 * @since   1.0.0
121 121
 	 * @return  int
122 122
 	 */
123
-	public function insert( $data, $type = '' ) {
123
+	public function insert($data, $type = '') {
124 124
 		global $wpdb;
125 125
 
126 126
 		// Set default values
127
-		$data = wp_parse_args( $data, $this->get_column_defaults() );
127
+		$data = wp_parse_args($data, $this->get_column_defaults());
128 128
 
129
-		do_action( 'wpinv_pre_insert_' . $type, $data );
129
+		do_action('wpinv_pre_insert_' . $type, $data);
130 130
 
131 131
 		// Initialise column format array
132 132
 		$column_formats = $this->get_columns();
133 133
 
134 134
 		// Force fields to lower case
135
-		$data = array_change_key_case( $data );
135
+		$data = array_change_key_case($data);
136 136
 
137 137
 		// White list columns
138
-		$data = array_intersect_key( $data, $column_formats );
138
+		$data = array_intersect_key($data, $column_formats);
139 139
 
140 140
 		// Reorder $column_formats to match the order of columns given in $data
141
-		$data_keys = array_keys( $data );
142
-		$column_formats = array_merge( array_flip( $data_keys ), $column_formats );
141
+		$data_keys = array_keys($data);
142
+		$column_formats = array_merge(array_flip($data_keys), $column_formats);
143 143
 
144
-		$wpdb->insert( $this->table_name, $data, $column_formats );
144
+		$wpdb->insert($this->table_name, $data, $column_formats);
145 145
 		$wpdb_insert_id = $wpdb->insert_id;
146 146
 
147
-		do_action( 'wpinv_post_insert_' . $type, $wpdb_insert_id, $data );
147
+		do_action('wpinv_post_insert_' . $type, $wpdb_insert_id, $data);
148 148
 
149 149
 		return $wpdb_insert_id;
150 150
 	}
@@ -156,18 +156,18 @@  discard block
 block discarded – undo
156 156
 	 * @since   1.0.0
157 157
 	 * @return  bool
158 158
 	 */
159
-	public function update( $row_id, $data = array(), $where = '' ) {
159
+	public function update($row_id, $data = array(), $where = '') {
160 160
 
161 161
 		global $wpdb;
162 162
 
163 163
 		// Row ID must be positive integer
164
-		$row_id = absint( $row_id );
164
+		$row_id = absint($row_id);
165 165
 
166
-		if ( empty( $row_id ) ) {
166
+		if (empty($row_id)) {
167 167
 			return false;
168 168
 		}
169 169
 
170
-		if ( empty( $where ) ) {
170
+		if (empty($where)) {
171 171
 			$where = $this->primary_key;
172 172
 		}
173 173
 
@@ -175,16 +175,16 @@  discard block
 block discarded – undo
175 175
 		$column_formats = $this->get_columns();
176 176
 
177 177
 		// Force fields to lower case
178
-		$data = array_change_key_case( $data );
178
+		$data = array_change_key_case($data);
179 179
 
180 180
 		// White list columns
181
-		$data = array_intersect_key( $data, $column_formats );
181
+		$data = array_intersect_key($data, $column_formats);
182 182
 
183 183
 		// Reorder $column_formats to match the order of columns given in $data
184
-		$data_keys = array_keys( $data );
185
-		$column_formats = array_merge( array_flip( $data_keys ), $column_formats );
184
+		$data_keys = array_keys($data);
185
+		$column_formats = array_merge(array_flip($data_keys), $column_formats);
186 186
 
187
-		if ( false === $wpdb->update( $this->table_name, $data, array( $where => $row_id ), $column_formats ) ) {
187
+		if (false === $wpdb->update($this->table_name, $data, array($where => $row_id), $column_formats)) {
188 188
 			return false;
189 189
 		}
190 190
 
@@ -198,18 +198,18 @@  discard block
 block discarded – undo
198 198
 	 * @since   1.0.0
199 199
 	 * @return  bool
200 200
 	 */
201
-	public function delete( $row_id = 0 ) {
201
+	public function delete($row_id = 0) {
202 202
 
203 203
 		global $wpdb;
204 204
 
205 205
 		// Row ID must be positive integer
206
-		$row_id = absint( $row_id );
206
+		$row_id = absint($row_id);
207 207
 
208
-		if ( empty( $row_id ) ) {
208
+		if (empty($row_id)) {
209 209
 			return false;
210 210
 		}
211 211
 
212
-		if ( false === $wpdb->query( $wpdb->prepare( "DELETE FROM $this->table_name WHERE $this->primary_key = %d", $row_id ) ) ) {
212
+		if (false === $wpdb->query($wpdb->prepare("DELETE FROM $this->table_name WHERE $this->primary_key = %d", $row_id))) {
213 213
 			return false;
214 214
 		}
215 215
 
@@ -223,11 +223,11 @@  discard block
 block discarded – undo
223 223
 	 * @param  string $table The table name
224 224
 	 * @return bool          If the table name exists
225 225
 	 */
226
-	public function table_exists( $table ) {
226
+	public function table_exists($table) {
227 227
 		global $wpdb;
228
-		$table = sanitize_text_field( $table );
228
+		$table = sanitize_text_field($table);
229 229
 
230
-		return $wpdb->get_var( $wpdb->prepare( "SHOW TABLES LIKE '%s'", $table ) ) === $table;
230
+		return $wpdb->get_var($wpdb->prepare("SHOW TABLES LIKE '%s'", $table)) === $table;
231 231
 	}
232 232
 
233 233
 	/**
@@ -237,7 +237,7 @@  discard block
 block discarded – undo
237 237
 	 * @return bool Returns if the customers table was installed and upgrade routine run
238 238
 	 */
239 239
 	public function installed() {
240
-		return $this->table_exists( $this->table_name );
240
+		return $this->table_exists($this->table_name);
241 241
 	}
242 242
 
243 243
 }
Please login to merge, or discard this patch.
includes/class-getpaid-daily-maintenance.php 2 patches
Indentation   +137 added lines, -137 removed lines patch added patch discarded remove patch
@@ -12,144 +12,144 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Daily_Maintenance {
14 14
 
15
-	/**
16
-	 * Class constructor.
17
-	 */
18
-	public function __construct() {
19
-
20
-		// Clear deprecated events.
21
-		add_action( 'wp', array( $this, 'maybe_clear_deprecated_events' ) );
22
-
23
-		// (Maybe) schedule a cron that runs daily.
24
-		add_action( 'wp', array( $this, 'maybe_create_scheduled_event' ) );
25
-
26
-		// Fired everyday at 7 a.m (this might vary for sites with few visitors)
27
-		add_action( 'getpaid_daily_maintenance', array( $this, 'log_cron_run' ) );
28
-		add_action( 'getpaid_daily_maintenance', array( $this, 'backwards_compat' ) );
29
-		add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_expire_subscriptions' ) );
30
-		add_action( 'getpaid_daily_maintenance', array( $this, 'check_renewing_subscriptions' ) );
31
-		add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_update_geoip_databases' ) );
32
-
33
-	}
34
-
35
-	/**
36
-	 * Schedules a cron to run every day at 7 a.m
37
-	 *
38
-	 */
39
-	public function maybe_create_scheduled_event() {
40
-
41
-		if ( ! wp_next_scheduled( 'getpaid_daily_maintenance' ) ) {
42
-			$timestamp = strtotime( 'tomorrow 07:00:00', current_time( 'timestamp' ) );
43
-			wp_schedule_event( $timestamp, 'daily', 'getpaid_daily_maintenance' );
44
-		}
45
-
46
-	}
47
-
48
-	/**
49
-	 * Clears deprecated events.
50
-	 *
51
-	 */
52
-	public function maybe_clear_deprecated_events() {
53
-
54
-		if ( ! get_option( 'wpinv_cleared_old_events' ) ) {
55
-			wp_clear_scheduled_hook( 'wpinv_register_schedule_event_twicedaily' );
56
-			wp_clear_scheduled_hook( 'wpinv_register_schedule_event_daily' );
57
-			update_option( 'wpinv_cleared_old_events', 1 );
58
-		}
59
-
60
-	}
61
-
62
-	/**
63
-	 * Fires the old hook for backwards compatibility.
64
-	 *
65
-	 */
66
-	public function backwards_compat() {
67
-		do_action( 'wpinv_register_schedule_event_daily' );
68
-	}
69
-
70
-	/**
71
-	 * Checks for subscriptions that are scheduled to renew.
72
-	 *
73
-	 */
74
-	public function check_renewing_subscriptions() {
75
-
76
-		// Fetch subscriptions that expire today.
77
-		$args  = array(
78
-			'number'             => -1,
79
-			'count_total'        => false,
80
-			'status'             => 'trialling active',
81
-			'date_expires_query' => array(
82
-				array(
83
-					'year'    => date( 'Y', current_time( 'timestamp' ) ),
84
-					'month'   => date( 'n', current_time( 'timestamp' ) ),
85
-					'day'     => date( 'j', current_time( 'timestamp' ) ),
86
-					'compare' => '=',
87
-				),
88
-			),
89
-		);
90
-
91
-		$subscriptions = new GetPaid_Subscriptions_Query( $args );
92
-
93
-		foreach ( $subscriptions->get_results() as $subscription ) {
94
-
95
-			/** @var WPInv_Subscription $subscription */
96
-			if ( $subscription->is_last_renewal() ) {
97
-				$subscription->complete();
98
-			} else {
99
-				do_action( 'getpaid_should_renew_subscription', $subscription );
100
-			}
15
+    /**
16
+     * Class constructor.
17
+     */
18
+    public function __construct() {
19
+
20
+        // Clear deprecated events.
21
+        add_action( 'wp', array( $this, 'maybe_clear_deprecated_events' ) );
22
+
23
+        // (Maybe) schedule a cron that runs daily.
24
+        add_action( 'wp', array( $this, 'maybe_create_scheduled_event' ) );
25
+
26
+        // Fired everyday at 7 a.m (this might vary for sites with few visitors)
27
+        add_action( 'getpaid_daily_maintenance', array( $this, 'log_cron_run' ) );
28
+        add_action( 'getpaid_daily_maintenance', array( $this, 'backwards_compat' ) );
29
+        add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_expire_subscriptions' ) );
30
+        add_action( 'getpaid_daily_maintenance', array( $this, 'check_renewing_subscriptions' ) );
31
+        add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_update_geoip_databases' ) );
32
+
33
+    }
34
+
35
+    /**
36
+     * Schedules a cron to run every day at 7 a.m
37
+     *
38
+     */
39
+    public function maybe_create_scheduled_event() {
40
+
41
+        if ( ! wp_next_scheduled( 'getpaid_daily_maintenance' ) ) {
42
+            $timestamp = strtotime( 'tomorrow 07:00:00', current_time( 'timestamp' ) );
43
+            wp_schedule_event( $timestamp, 'daily', 'getpaid_daily_maintenance' );
44
+        }
45
+
46
+    }
47
+
48
+    /**
49
+     * Clears deprecated events.
50
+     *
51
+     */
52
+    public function maybe_clear_deprecated_events() {
53
+
54
+        if ( ! get_option( 'wpinv_cleared_old_events' ) ) {
55
+            wp_clear_scheduled_hook( 'wpinv_register_schedule_event_twicedaily' );
56
+            wp_clear_scheduled_hook( 'wpinv_register_schedule_event_daily' );
57
+            update_option( 'wpinv_cleared_old_events', 1 );
58
+        }
59
+
60
+    }
61
+
62
+    /**
63
+     * Fires the old hook for backwards compatibility.
64
+     *
65
+     */
66
+    public function backwards_compat() {
67
+        do_action( 'wpinv_register_schedule_event_daily' );
68
+    }
69
+
70
+    /**
71
+     * Checks for subscriptions that are scheduled to renew.
72
+     *
73
+     */
74
+    public function check_renewing_subscriptions() {
75
+
76
+        // Fetch subscriptions that expire today.
77
+        $args  = array(
78
+            'number'             => -1,
79
+            'count_total'        => false,
80
+            'status'             => 'trialling active',
81
+            'date_expires_query' => array(
82
+                array(
83
+                    'year'    => date( 'Y', current_time( 'timestamp' ) ),
84
+                    'month'   => date( 'n', current_time( 'timestamp' ) ),
85
+                    'day'     => date( 'j', current_time( 'timestamp' ) ),
86
+                    'compare' => '=',
87
+                ),
88
+            ),
89
+        );
90
+
91
+        $subscriptions = new GetPaid_Subscriptions_Query( $args );
92
+
93
+        foreach ( $subscriptions->get_results() as $subscription ) {
94
+
95
+            /** @var WPInv_Subscription $subscription */
96
+            if ( $subscription->is_last_renewal() ) {
97
+                $subscription->complete();
98
+            } else {
99
+                do_action( 'getpaid_should_renew_subscription', $subscription );
100
+            }
101 101
 }
102 102
 
103
-	}
104
-
105
-	/**
106
-	 * Expires expired subscriptions.
107
-	 *
108
-	 */
109
-	public function maybe_expire_subscriptions() {
110
-
111
-		// Fetch expired subscriptions (skips those that expire today).
112
-		$args  = array(
113
-			'number'             => -1,
114
-			'count_total'        => false,
115
-			'status'             => 'trialling active failing cancelled',
116
-			'date_expires_query' => array(
117
-				'before'    => 'yesterday',
118
-				'inclusive' => false,
119
-			),
120
-		);
121
-
122
-		$subscriptions = new GetPaid_Subscriptions_Query( $args );
123
-
124
-		foreach ( $subscriptions->get_results() as $subscription ) {
125
-			if ( apply_filters( 'getpaid_daily_maintenance_should_expire_subscription', false, $subscription ) ) {
126
-				$subscription->set_status( 'expired' );
127
-				$subscription->save();
128
-			}
129
-		}
130
-
131
-	}
132
-
133
-	/**
134
-	 * Logs cron runs.
135
-	 *
136
-	 */
137
-	public function log_cron_run() {
138
-		wpinv_error_log( 'GetPaid Daily Cron', false );
139
-	}
140
-
141
-	/**
142
-	 * Updates GeoIP databases.
143
-	 *
144
-	 */
145
-	public function maybe_update_geoip_databases() {
146
-		$updated = get_transient( 'getpaid_updated_geoip_databases' );
147
-
148
-		if ( false === $updated ) {
149
-			set_transient( 'getpaid_updated_geoip_databases', 1, 15 * DAY_IN_SECONDS );
150
-			do_action( 'getpaid_update_geoip_databases' );
151
-		}
152
-
153
-	}
103
+    }
104
+
105
+    /**
106
+     * Expires expired subscriptions.
107
+     *
108
+     */
109
+    public function maybe_expire_subscriptions() {
110
+
111
+        // Fetch expired subscriptions (skips those that expire today).
112
+        $args  = array(
113
+            'number'             => -1,
114
+            'count_total'        => false,
115
+            'status'             => 'trialling active failing cancelled',
116
+            'date_expires_query' => array(
117
+                'before'    => 'yesterday',
118
+                'inclusive' => false,
119
+            ),
120
+        );
121
+
122
+        $subscriptions = new GetPaid_Subscriptions_Query( $args );
123
+
124
+        foreach ( $subscriptions->get_results() as $subscription ) {
125
+            if ( apply_filters( 'getpaid_daily_maintenance_should_expire_subscription', false, $subscription ) ) {
126
+                $subscription->set_status( 'expired' );
127
+                $subscription->save();
128
+            }
129
+        }
130
+
131
+    }
132
+
133
+    /**
134
+     * Logs cron runs.
135
+     *
136
+     */
137
+    public function log_cron_run() {
138
+        wpinv_error_log( 'GetPaid Daily Cron', false );
139
+    }
140
+
141
+    /**
142
+     * Updates GeoIP databases.
143
+     *
144
+     */
145
+    public function maybe_update_geoip_databases() {
146
+        $updated = get_transient( 'getpaid_updated_geoip_databases' );
147
+
148
+        if ( false === $updated ) {
149
+            set_transient( 'getpaid_updated_geoip_databases', 1, 15 * DAY_IN_SECONDS );
150
+            do_action( 'getpaid_update_geoip_databases' );
151
+        }
152
+
153
+    }
154 154
 
155 155
 }
Please login to merge, or discard this patch.
Spacing   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  *
5 5
  */
6 6
 
7
-defined( 'ABSPATH' ) || exit;
7
+defined('ABSPATH') || exit;
8 8
 
9 9
 /**
10 10
  * Daily maintenance class.
@@ -18,17 +18,17 @@  discard block
 block discarded – undo
18 18
 	public function __construct() {
19 19
 
20 20
 		// Clear deprecated events.
21
-		add_action( 'wp', array( $this, 'maybe_clear_deprecated_events' ) );
21
+		add_action('wp', array($this, 'maybe_clear_deprecated_events'));
22 22
 
23 23
 		// (Maybe) schedule a cron that runs daily.
24
-		add_action( 'wp', array( $this, 'maybe_create_scheduled_event' ) );
24
+		add_action('wp', array($this, 'maybe_create_scheduled_event'));
25 25
 
26 26
 		// Fired everyday at 7 a.m (this might vary for sites with few visitors)
27
-		add_action( 'getpaid_daily_maintenance', array( $this, 'log_cron_run' ) );
28
-		add_action( 'getpaid_daily_maintenance', array( $this, 'backwards_compat' ) );
29
-		add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_expire_subscriptions' ) );
30
-		add_action( 'getpaid_daily_maintenance', array( $this, 'check_renewing_subscriptions' ) );
31
-		add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_update_geoip_databases' ) );
27
+		add_action('getpaid_daily_maintenance', array($this, 'log_cron_run'));
28
+		add_action('getpaid_daily_maintenance', array($this, 'backwards_compat'));
29
+		add_action('getpaid_daily_maintenance', array($this, 'maybe_expire_subscriptions'));
30
+		add_action('getpaid_daily_maintenance', array($this, 'check_renewing_subscriptions'));
31
+		add_action('getpaid_daily_maintenance', array($this, 'maybe_update_geoip_databases'));
32 32
 
33 33
 	}
34 34
 
@@ -38,9 +38,9 @@  discard block
 block discarded – undo
38 38
 	 */
39 39
 	public function maybe_create_scheduled_event() {
40 40
 
41
-		if ( ! wp_next_scheduled( 'getpaid_daily_maintenance' ) ) {
42
-			$timestamp = strtotime( 'tomorrow 07:00:00', current_time( 'timestamp' ) );
43
-			wp_schedule_event( $timestamp, 'daily', 'getpaid_daily_maintenance' );
41
+		if (!wp_next_scheduled('getpaid_daily_maintenance')) {
42
+			$timestamp = strtotime('tomorrow 07:00:00', current_time('timestamp'));
43
+			wp_schedule_event($timestamp, 'daily', 'getpaid_daily_maintenance');
44 44
 		}
45 45
 
46 46
 	}
@@ -51,10 +51,10 @@  discard block
 block discarded – undo
51 51
 	 */
52 52
 	public function maybe_clear_deprecated_events() {
53 53
 
54
-		if ( ! get_option( 'wpinv_cleared_old_events' ) ) {
55
-			wp_clear_scheduled_hook( 'wpinv_register_schedule_event_twicedaily' );
56
-			wp_clear_scheduled_hook( 'wpinv_register_schedule_event_daily' );
57
-			update_option( 'wpinv_cleared_old_events', 1 );
54
+		if (!get_option('wpinv_cleared_old_events')) {
55
+			wp_clear_scheduled_hook('wpinv_register_schedule_event_twicedaily');
56
+			wp_clear_scheduled_hook('wpinv_register_schedule_event_daily');
57
+			update_option('wpinv_cleared_old_events', 1);
58 58
 		}
59 59
 
60 60
 	}
@@ -64,7 +64,7 @@  discard block
 block discarded – undo
64 64
 	 *
65 65
 	 */
66 66
 	public function backwards_compat() {
67
-		do_action( 'wpinv_register_schedule_event_daily' );
67
+		do_action('wpinv_register_schedule_event_daily');
68 68
 	}
69 69
 
70 70
 	/**
@@ -74,29 +74,29 @@  discard block
 block discarded – undo
74 74
 	public function check_renewing_subscriptions() {
75 75
 
76 76
 		// Fetch subscriptions that expire today.
77
-		$args  = array(
77
+		$args = array(
78 78
 			'number'             => -1,
79 79
 			'count_total'        => false,
80 80
 			'status'             => 'trialling active',
81 81
 			'date_expires_query' => array(
82 82
 				array(
83
-					'year'    => date( 'Y', current_time( 'timestamp' ) ),
84
-					'month'   => date( 'n', current_time( 'timestamp' ) ),
85
-					'day'     => date( 'j', current_time( 'timestamp' ) ),
83
+					'year'    => date('Y', current_time('timestamp')),
84
+					'month'   => date('n', current_time('timestamp')),
85
+					'day'     => date('j', current_time('timestamp')),
86 86
 					'compare' => '=',
87 87
 				),
88 88
 			),
89 89
 		);
90 90
 
91
-		$subscriptions = new GetPaid_Subscriptions_Query( $args );
91
+		$subscriptions = new GetPaid_Subscriptions_Query($args);
92 92
 
93
-		foreach ( $subscriptions->get_results() as $subscription ) {
93
+		foreach ($subscriptions->get_results() as $subscription) {
94 94
 
95 95
 			/** @var WPInv_Subscription $subscription */
96
-			if ( $subscription->is_last_renewal() ) {
96
+			if ($subscription->is_last_renewal()) {
97 97
 				$subscription->complete();
98 98
 			} else {
99
-				do_action( 'getpaid_should_renew_subscription', $subscription );
99
+				do_action('getpaid_should_renew_subscription', $subscription);
100 100
 			}
101 101
 }
102 102
 
@@ -109,7 +109,7 @@  discard block
 block discarded – undo
109 109
 	public function maybe_expire_subscriptions() {
110 110
 
111 111
 		// Fetch expired subscriptions (skips those that expire today).
112
-		$args  = array(
112
+		$args = array(
113 113
 			'number'             => -1,
114 114
 			'count_total'        => false,
115 115
 			'status'             => 'trialling active failing cancelled',
@@ -119,11 +119,11 @@  discard block
 block discarded – undo
119 119
 			),
120 120
 		);
121 121
 
122
-		$subscriptions = new GetPaid_Subscriptions_Query( $args );
122
+		$subscriptions = new GetPaid_Subscriptions_Query($args);
123 123
 
124
-		foreach ( $subscriptions->get_results() as $subscription ) {
125
-			if ( apply_filters( 'getpaid_daily_maintenance_should_expire_subscription', false, $subscription ) ) {
126
-				$subscription->set_status( 'expired' );
124
+		foreach ($subscriptions->get_results() as $subscription) {
125
+			if (apply_filters('getpaid_daily_maintenance_should_expire_subscription', false, $subscription)) {
126
+				$subscription->set_status('expired');
127 127
 				$subscription->save();
128 128
 			}
129 129
 		}
@@ -135,7 +135,7 @@  discard block
 block discarded – undo
135 135
 	 *
136 136
 	 */
137 137
 	public function log_cron_run() {
138
-		wpinv_error_log( 'GetPaid Daily Cron', false );
138
+		wpinv_error_log('GetPaid Daily Cron', false);
139 139
 	}
140 140
 
141 141
 	/**
@@ -143,11 +143,11 @@  discard block
 block discarded – undo
143 143
 	 *
144 144
 	 */
145 145
 	public function maybe_update_geoip_databases() {
146
-		$updated = get_transient( 'getpaid_updated_geoip_databases' );
146
+		$updated = get_transient('getpaid_updated_geoip_databases');
147 147
 
148
-		if ( false === $updated ) {
149
-			set_transient( 'getpaid_updated_geoip_databases', 1, 15 * DAY_IN_SECONDS );
150
-			do_action( 'getpaid_update_geoip_databases' );
148
+		if (false === $updated) {
149
+			set_transient('getpaid_updated_geoip_databases', 1, 15 * DAY_IN_SECONDS);
150
+			do_action('getpaid_update_geoip_databases');
151 151
 		}
152 152
 
153 153
 	}
Please login to merge, or discard this patch.
includes/class-wpinv-session-handler.php 2 patches
Indentation   +274 added lines, -274 removed lines patch added patch discarded remove patch
@@ -12,125 +12,125 @@  discard block
 block discarded – undo
12 12
  */
13 13
 class WPInv_Session_Handler extends WPInv_Session {
14 14
 
15
-	/**
16
-	 * Cookie name used for the session.
17
-	 *
18
-	 * @var string cookie name
19
-	 */
20
-	protected $_cookie;
21
-
22
-	/**
23
-	 * Stores session expiry.
24
-	 *
25
-	 * @var int session due to expire timestamp
26
-	 */
27
-	protected $_session_expiring;
28
-
29
-	/**
30
-	 * Stores session due to expire timestamp.
31
-	 *
32
-	 * @var string session expiration timestamp
33
-	 */
34
-	protected $_session_expiration;
35
-
36
-	/**
37
-	 * True when the cookie exists.
38
-	 *
39
-	 * @var bool Based on whether a cookie exists.
40
-	 */
41
-	protected $_has_cookie = false;
42
-
43
-	/**
44
-	 * Table name for session data.
45
-	 *
46
-	 * @var string Custom session table name
47
-	 */
48
-	protected $_table;
49
-
50
-	/**
51
-	 * Constructor for the session class.
52
-	 */
53
-	public function __construct() {
54
-
55
-	    $this->_cookie = apply_filters( 'wpinv_cookie', 'wpinv_session_' . COOKIEHASH );
15
+    /**
16
+     * Cookie name used for the session.
17
+     *
18
+     * @var string cookie name
19
+     */
20
+    protected $_cookie;
21
+
22
+    /**
23
+     * Stores session expiry.
24
+     *
25
+     * @var int session due to expire timestamp
26
+     */
27
+    protected $_session_expiring;
28
+
29
+    /**
30
+     * Stores session due to expire timestamp.
31
+     *
32
+     * @var string session expiration timestamp
33
+     */
34
+    protected $_session_expiration;
35
+
36
+    /**
37
+     * True when the cookie exists.
38
+     *
39
+     * @var bool Based on whether a cookie exists.
40
+     */
41
+    protected $_has_cookie = false;
42
+
43
+    /**
44
+     * Table name for session data.
45
+     *
46
+     * @var string Custom session table name
47
+     */
48
+    protected $_table;
49
+
50
+    /**
51
+     * Constructor for the session class.
52
+     */
53
+    public function __construct() {
54
+
55
+        $this->_cookie = apply_filters( 'wpinv_cookie', 'wpinv_session_' . COOKIEHASH );
56 56
         add_action( 'init', array( $this, 'init' ), -1 );
57
-		add_action( 'wp_logout', array( $this, 'destroy_session' ) );
58
-		add_action( 'wp', array( $this, 'set_customer_session_cookie' ), 10 );
59
-		add_action( 'shutdown', array( $this, 'save_data' ), 20 );
60
-
61
-	}
62
-
63
-	/**
64
-	 * Init hooks and session data.
65
-	 *
66
-	 * @since 3.3.0
67
-	 */
68
-	public function init() {
69
-		$this->init_session_cookie();
70
-
71
-		if ( ! is_user_logged_in() ) {
72
-			add_filter( 'nonce_user_logged_out', array( $this, 'nonce_user_logged_out' ), 10, 2 );
73
-		}
74
-	}
75
-
76
-	/**
77
-	 * Setup cookie and customer ID.
78
-	 *
79
-	 * @since 3.6.0
80
-	 */
81
-	public function init_session_cookie() {
82
-		$cookie = $this->get_session_cookie();
83
-
84
-		if ( $cookie ) {
85
-			$this->_customer_id        = $cookie[0];
86
-			$this->_session_expiration = $cookie[1];
87
-			$this->_session_expiring   = $cookie[2];
88
-			$this->_has_cookie         = true;
89
-			$this->_data               = $this->get_session_data();
90
-
91
-			// If the user logs in, update session.
92
-			if ( is_user_logged_in() && get_current_user_id() != $this->_customer_id ) {
93
-				$this->_customer_id = get_current_user_id();
94
-				$this->_dirty       = true;
95
-				$this->save_data();
96
-				$this->set_customer_session_cookie( true );
97
-			}
98
-
99
-			// Update session if its close to expiring.
100
-			if ( time() > $this->_session_expiring ) {
101
-				$this->set_session_expiration();
102
-				$this->update_session_timestamp( $this->_customer_id, $this->_session_expiration );
103
-			}
104
-		} else {
105
-			$this->set_session_expiration();
106
-			$this->_customer_id = $this->generate_customer_id();
107
-			$this->_data        = $this->get_session_data();
108
-		}
109
-	}
110
-
111
-	/**
112
-	 * Sets the session cookie on-demand (usually after adding an item to the cart).
113
-	 *
114
-	 * Since the cookie name (as of 2.1) is prepended with wp, cache systems like batcache will not cache pages when set.
115
-	 *
116
-	 * Warning: Cookies will only be set if this is called before the headers are sent.
117
-	 *
118
-	 * @param bool $set Should the session cookie be set.
119
-	 */
120
-	public function set_customer_session_cookie( $set ) {
121
-		if ( $set ) {
122
-			$to_hash           = $this->_customer_id . '|' . $this->_session_expiration;
123
-			$cookie_hash       = hash_hmac( 'md5', $to_hash, wp_hash( $to_hash ) );
124
-			$cookie_value      = $this->_customer_id . '||' . $this->_session_expiration . '||' . $this->_session_expiring . '||' . $cookie_hash;
125
-			$this->_has_cookie = true;
126
-
127
-			if ( ! isset( $_COOKIE[ $this->_cookie ] ) || $_COOKIE[ $this->_cookie ] !== $cookie_value ) {
128
-				$this->setcookie( $this->_cookie, $cookie_value, $this->_session_expiration, $this->use_secure_cookie(), true );
129
-			}
130
-		}
131
-	}
132
-
133
-	public function setcookie( $name, $value, $expire = 0, $secure = false, $httponly = false ) {
57
+        add_action( 'wp_logout', array( $this, 'destroy_session' ) );
58
+        add_action( 'wp', array( $this, 'set_customer_session_cookie' ), 10 );
59
+        add_action( 'shutdown', array( $this, 'save_data' ), 20 );
60
+
61
+    }
62
+
63
+    /**
64
+     * Init hooks and session data.
65
+     *
66
+     * @since 3.3.0
67
+     */
68
+    public function init() {
69
+        $this->init_session_cookie();
70
+
71
+        if ( ! is_user_logged_in() ) {
72
+            add_filter( 'nonce_user_logged_out', array( $this, 'nonce_user_logged_out' ), 10, 2 );
73
+        }
74
+    }
75
+
76
+    /**
77
+     * Setup cookie and customer ID.
78
+     *
79
+     * @since 3.6.0
80
+     */
81
+    public function init_session_cookie() {
82
+        $cookie = $this->get_session_cookie();
83
+
84
+        if ( $cookie ) {
85
+            $this->_customer_id        = $cookie[0];
86
+            $this->_session_expiration = $cookie[1];
87
+            $this->_session_expiring   = $cookie[2];
88
+            $this->_has_cookie         = true;
89
+            $this->_data               = $this->get_session_data();
90
+
91
+            // If the user logs in, update session.
92
+            if ( is_user_logged_in() && get_current_user_id() != $this->_customer_id ) {
93
+                $this->_customer_id = get_current_user_id();
94
+                $this->_dirty       = true;
95
+                $this->save_data();
96
+                $this->set_customer_session_cookie( true );
97
+            }
98
+
99
+            // Update session if its close to expiring.
100
+            if ( time() > $this->_session_expiring ) {
101
+                $this->set_session_expiration();
102
+                $this->update_session_timestamp( $this->_customer_id, $this->_session_expiration );
103
+            }
104
+        } else {
105
+            $this->set_session_expiration();
106
+            $this->_customer_id = $this->generate_customer_id();
107
+            $this->_data        = $this->get_session_data();
108
+        }
109
+    }
110
+
111
+    /**
112
+     * Sets the session cookie on-demand (usually after adding an item to the cart).
113
+     *
114
+     * Since the cookie name (as of 2.1) is prepended with wp, cache systems like batcache will not cache pages when set.
115
+     *
116
+     * Warning: Cookies will only be set if this is called before the headers are sent.
117
+     *
118
+     * @param bool $set Should the session cookie be set.
119
+     */
120
+    public function set_customer_session_cookie( $set ) {
121
+        if ( $set ) {
122
+            $to_hash           = $this->_customer_id . '|' . $this->_session_expiration;
123
+            $cookie_hash       = hash_hmac( 'md5', $to_hash, wp_hash( $to_hash ) );
124
+            $cookie_value      = $this->_customer_id . '||' . $this->_session_expiration . '||' . $this->_session_expiring . '||' . $cookie_hash;
125
+            $this->_has_cookie = true;
126
+
127
+            if ( ! isset( $_COOKIE[ $this->_cookie ] ) || $_COOKIE[ $this->_cookie ] !== $cookie_value ) {
128
+                $this->setcookie( $this->_cookie, $cookie_value, $this->_session_expiration, $this->use_secure_cookie(), true );
129
+            }
130
+        }
131
+    }
132
+
133
+    public function setcookie( $name, $value, $expire = 0, $secure = false, $httponly = false ) {
134 134
         if ( ! headers_sent() ) {
135 135
             setcookie( $name, $value, $expire, COOKIEPATH ? COOKIEPATH : '/', COOKIE_DOMAIN, $secure, apply_filters( 'wpinv_cookie_httponly', $httponly, $name, $value, $expire, $secure ) );
136 136
         } elseif ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
@@ -139,86 +139,86 @@  discard block
 block discarded – undo
139 139
         }
140 140
     }
141 141
 
142
-	/**
143
-	 * Should the session cookie be secure?
144
-	 *
145
-	 * @since 3.6.0
146
-	 * @return bool
147
-	 */
148
-	protected function use_secure_cookie() {
142
+    /**
143
+     * Should the session cookie be secure?
144
+     *
145
+     * @since 3.6.0
146
+     * @return bool
147
+     */
148
+    protected function use_secure_cookie() {
149 149
         $is_https = false !== strstr( get_option( 'home' ), 'https:' );
150
-		return apply_filters( 'wpinv_session_use_secure_cookie', $is_https && is_ssl() );
151
-	}
152
-
153
-	/**
154
-	 * Return true if the current user has an active session, i.e. a cookie to retrieve values.
155
-	 *
156
-	 * @return bool
157
-	 */
158
-	public function has_session() {
159
-		return isset( $_COOKIE[ $this->_cookie ] ) || $this->_has_cookie || is_user_logged_in(); // @codingStandardsIgnoreLine.
160
-	}
161
-
162
-	/**
163
-	 * Set session expiration.
164
-	 */
165
-	public function set_session_expiration() {
166
-		$this->_session_expiring   = time() + intval( apply_filters( 'wpinv_session_expiring', 60 * 60 * 47 ) ); // 47 Hours.
167
-		$this->_session_expiration = time() + intval( apply_filters( 'wpinv_session_expiration', 60 * 60 * 48 ) ); // 48 Hours.
168
-	}
169
-
170
-	/**
171
-	 * Generates session ids.
172
-	 *
173
-	 * @return string
174
-	 */
175
-	public function generate_customer_id() {
176
-		require_once ABSPATH . 'wp-includes/class-phpass.php';
177
-		$hasher      = new PasswordHash( 8, false );
178
-		return md5( $hasher->get_random_bytes( 32 ) );
179
-	}
180
-
181
-	/**
182
-	 * Get the session cookie, if set. Otherwise return false.
183
-	 *
184
-	 * Session cookies without a customer ID are invalid.
185
-	 *
186
-	 * @return bool|array
187
-	 */
188
-	public function get_session_cookie() {
189
-		$cookie_value = isset( $_COOKIE[ $this->_cookie ] ) ? wp_unslash( $_COOKIE[ $this->_cookie ] ) : false; // @codingStandardsIgnoreLine.
190
-
191
-		if ( empty( $cookie_value ) || ! is_string( $cookie_value ) ) {
192
-			return false;
193
-		}
194
-
195
-		list( $customer_id, $session_expiration, $session_expiring, $cookie_hash ) = explode( '||', $cookie_value );
196
-
197
-		if ( empty( $customer_id ) ) {
198
-			return false;
199
-		}
200
-
201
-		// Validate hash.
202
-		$to_hash = $customer_id . '|' . $session_expiration;
203
-		$hash    = hash_hmac( 'md5', $to_hash, wp_hash( $to_hash ) );
204
-
205
-		if ( empty( $cookie_hash ) || ! hash_equals( $hash, $cookie_hash ) ) {
206
-			return false;
207
-		}
208
-
209
-		return array( $customer_id, $session_expiration, $session_expiring, $cookie_hash );
210
-	}
211
-
212
-	/**
213
-	 * Get session data.
214
-	 *
215
-	 * @return array
216
-	 */
217
-	public function get_session_data() {
218
-		return $this->has_session() ? (array) $this->get_session( $this->_customer_id ) : array();
219
-	}
220
-
221
-	public function generate_key( $customer_id ) {
150
+        return apply_filters( 'wpinv_session_use_secure_cookie', $is_https && is_ssl() );
151
+    }
152
+
153
+    /**
154
+     * Return true if the current user has an active session, i.e. a cookie to retrieve values.
155
+     *
156
+     * @return bool
157
+     */
158
+    public function has_session() {
159
+        return isset( $_COOKIE[ $this->_cookie ] ) || $this->_has_cookie || is_user_logged_in(); // @codingStandardsIgnoreLine.
160
+    }
161
+
162
+    /**
163
+     * Set session expiration.
164
+     */
165
+    public function set_session_expiration() {
166
+        $this->_session_expiring   = time() + intval( apply_filters( 'wpinv_session_expiring', 60 * 60 * 47 ) ); // 47 Hours.
167
+        $this->_session_expiration = time() + intval( apply_filters( 'wpinv_session_expiration', 60 * 60 * 48 ) ); // 48 Hours.
168
+    }
169
+
170
+    /**
171
+     * Generates session ids.
172
+     *
173
+     * @return string
174
+     */
175
+    public function generate_customer_id() {
176
+        require_once ABSPATH . 'wp-includes/class-phpass.php';
177
+        $hasher      = new PasswordHash( 8, false );
178
+        return md5( $hasher->get_random_bytes( 32 ) );
179
+    }
180
+
181
+    /**
182
+     * Get the session cookie, if set. Otherwise return false.
183
+     *
184
+     * Session cookies without a customer ID are invalid.
185
+     *
186
+     * @return bool|array
187
+     */
188
+    public function get_session_cookie() {
189
+        $cookie_value = isset( $_COOKIE[ $this->_cookie ] ) ? wp_unslash( $_COOKIE[ $this->_cookie ] ) : false; // @codingStandardsIgnoreLine.
190
+
191
+        if ( empty( $cookie_value ) || ! is_string( $cookie_value ) ) {
192
+            return false;
193
+        }
194
+
195
+        list( $customer_id, $session_expiration, $session_expiring, $cookie_hash ) = explode( '||', $cookie_value );
196
+
197
+        if ( empty( $customer_id ) ) {
198
+            return false;
199
+        }
200
+
201
+        // Validate hash.
202
+        $to_hash = $customer_id . '|' . $session_expiration;
203
+        $hash    = hash_hmac( 'md5', $to_hash, wp_hash( $to_hash ) );
204
+
205
+        if ( empty( $cookie_hash ) || ! hash_equals( $hash, $cookie_hash ) ) {
206
+            return false;
207
+        }
208
+
209
+        return array( $customer_id, $session_expiration, $session_expiring, $cookie_hash );
210
+    }
211
+
212
+    /**
213
+     * Get session data.
214
+     *
215
+     * @return array
216
+     */
217
+    public function get_session_data() {
218
+        return $this->has_session() ? (array) $this->get_session( $this->_customer_id ) : array();
219
+    }
220
+
221
+    public function generate_key( $customer_id ) {
222 222
         if ( ! $customer_id ) {
223 223
             return;
224 224
         }
@@ -226,68 +226,68 @@  discard block
 block discarded – undo
226 226
         return 'wpi_trans_' . $customer_id;
227 227
     }
228 228
 
229
-	/**
230
-	 * Save data.
231
-	 */
232
-	public function save_data() {
233
-		// Dirty if something changed - prevents saving nothing new.
234
-		if ( $this->_dirty && $this->has_session() ) {
229
+    /**
230
+     * Save data.
231
+     */
232
+    public function save_data() {
233
+        // Dirty if something changed - prevents saving nothing new.
234
+        if ( $this->_dirty && $this->has_session() ) {
235 235
 
236 236
             set_transient( $this->generate_key( $this->_customer_id ), $this->_data, $this->_session_expiration );
237 237
 
238
-			$this->_dirty = false;
239
-		}
240
-	}
241
-
242
-	/**
243
-	 * Destroy all session data.
244
-	 */
245
-	public function destroy_session() {
246
-		$this->delete_session( $this->_customer_id );
247
-		$this->forget_session();
248
-	}
249
-
250
-	/**
251
-	 * Forget all session data without destroying it.
252
-	 */
253
-	public function forget_session() {
254
-		$this->setcookie( $this->_cookie, '', time() - YEAR_IN_SECONDS, $this->use_secure_cookie(), true );
255
-
256
-		wpinv_empty_cart();
257
-
258
-		$this->_data        = array();
259
-		$this->_dirty       = false;
260
-		$this->_customer_id = $this->generate_customer_id();
261
-	}
262
-
263
-	/**
264
-	 * When a user is logged out, ensure they have a unique nonce by using the customer/session ID.
265
-	 *
266
-	 * @param int $uid User ID.
267
-	 * @return string
268
-	 */
269
-	public function nonce_user_logged_out( $uid ) {
270
-
271
-		// Check if one of our nonces.
272
-		if ( substr( $uid, 0, 5 ) === 'wpinv' || substr( $uid, 0, 7 ) === 'getpaid' ) {
273
-			return $this->has_session() && $this->_customer_id ? $this->_customer_id : $uid;
274
-		}
275
-
276
-		return $uid;
277
-	}
278
-
279
-	/**
280
-	 * Returns the session.
281
-	 *
282
-	 * @param string $customer_id Customer ID.
283
-	 * @param mixed  $default Default session value.
284
-	 * @return string|array
285
-	 */
286
-	public function get_session( $customer_id, $default = false ) {
287
-
288
-		if ( defined( 'WP_SETUP_CONFIG' ) ) {
289
-			return array();
290
-		}
238
+            $this->_dirty = false;
239
+        }
240
+    }
241
+
242
+    /**
243
+     * Destroy all session data.
244
+     */
245
+    public function destroy_session() {
246
+        $this->delete_session( $this->_customer_id );
247
+        $this->forget_session();
248
+    }
249
+
250
+    /**
251
+     * Forget all session data without destroying it.
252
+     */
253
+    public function forget_session() {
254
+        $this->setcookie( $this->_cookie, '', time() - YEAR_IN_SECONDS, $this->use_secure_cookie(), true );
255
+
256
+        wpinv_empty_cart();
257
+
258
+        $this->_data        = array();
259
+        $this->_dirty       = false;
260
+        $this->_customer_id = $this->generate_customer_id();
261
+    }
262
+
263
+    /**
264
+     * When a user is logged out, ensure they have a unique nonce by using the customer/session ID.
265
+     *
266
+     * @param int $uid User ID.
267
+     * @return string
268
+     */
269
+    public function nonce_user_logged_out( $uid ) {
270
+
271
+        // Check if one of our nonces.
272
+        if ( substr( $uid, 0, 5 ) === 'wpinv' || substr( $uid, 0, 7 ) === 'getpaid' ) {
273
+            return $this->has_session() && $this->_customer_id ? $this->_customer_id : $uid;
274
+        }
275
+
276
+        return $uid;
277
+    }
278
+
279
+    /**
280
+     * Returns the session.
281
+     *
282
+     * @param string $customer_id Customer ID.
283
+     * @param mixed  $default Default session value.
284
+     * @return string|array
285
+     */
286
+    public function get_session( $customer_id, $default = false ) {
287
+
288
+        if ( defined( 'WP_SETUP_CONFIG' ) ) {
289
+            return array();
290
+        }
291 291
 
292 292
         $key = $this->generate_key( $customer_id );
293 293
         $value = get_transient( $key );
@@ -296,30 +296,30 @@  discard block
 block discarded – undo
296 296
             $value = $default;
297 297
         }
298 298
 
299
-		return maybe_unserialize( $value );
300
-	}
299
+        return maybe_unserialize( $value );
300
+    }
301 301
 
302
-	/**
303
-	 * Delete the session from the cache and database.
304
-	 *
305
-	 * @param int $customer_id Customer ID.
306
-	 */
307
-	public function delete_session( $customer_id ) {
302
+    /**
303
+     * Delete the session from the cache and database.
304
+     *
305
+     * @param int $customer_id Customer ID.
306
+     */
307
+    public function delete_session( $customer_id ) {
308 308
 
309 309
         $key = $this->generate_key( $customer_id );
310 310
 
311
-		delete_transient( $key );
312
-	}
311
+        delete_transient( $key );
312
+    }
313 313
 
314
-	/**
315
-	 * Update the session expiry timestamp.
316
-	 *
317
-	 * @param string $customer_id Customer ID.
318
-	 * @param int    $timestamp Timestamp to expire the cookie.
319
-	 */
320
-	public function update_session_timestamp( $customer_id, $timestamp ) {
314
+    /**
315
+     * Update the session expiry timestamp.
316
+     *
317
+     * @param string $customer_id Customer ID.
318
+     * @param int    $timestamp Timestamp to expire the cookie.
319
+     */
320
+    public function update_session_timestamp( $customer_id, $timestamp ) {
321 321
 
322 322
         set_transient( $this->generate_key( $customer_id ), maybe_serialize( $this->_data ), $timestamp );
323 323
 
324
-	}
324
+    }
325 325
 }
Please login to merge, or discard this patch.
Spacing   +58 added lines, -58 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
  * Session handler class.
@@ -52,11 +52,11 @@  discard block
 block discarded – undo
52 52
 	 */
53 53
 	public function __construct() {
54 54
 
55
-	    $this->_cookie = apply_filters( 'wpinv_cookie', 'wpinv_session_' . COOKIEHASH );
56
-        add_action( 'init', array( $this, 'init' ), -1 );
57
-		add_action( 'wp_logout', array( $this, 'destroy_session' ) );
58
-		add_action( 'wp', array( $this, 'set_customer_session_cookie' ), 10 );
59
-		add_action( 'shutdown', array( $this, 'save_data' ), 20 );
55
+	    $this->_cookie = apply_filters('wpinv_cookie', 'wpinv_session_' . COOKIEHASH);
56
+        add_action('init', array($this, 'init'), -1);
57
+		add_action('wp_logout', array($this, 'destroy_session'));
58
+		add_action('wp', array($this, 'set_customer_session_cookie'), 10);
59
+		add_action('shutdown', array($this, 'save_data'), 20);
60 60
 
61 61
 	}
62 62
 
@@ -68,8 +68,8 @@  discard block
 block discarded – undo
68 68
 	public function init() {
69 69
 		$this->init_session_cookie();
70 70
 
71
-		if ( ! is_user_logged_in() ) {
72
-			add_filter( 'nonce_user_logged_out', array( $this, 'nonce_user_logged_out' ), 10, 2 );
71
+		if (!is_user_logged_in()) {
72
+			add_filter('nonce_user_logged_out', array($this, 'nonce_user_logged_out'), 10, 2);
73 73
 		}
74 74
 	}
75 75
 
@@ -81,7 +81,7 @@  discard block
 block discarded – undo
81 81
 	public function init_session_cookie() {
82 82
 		$cookie = $this->get_session_cookie();
83 83
 
84
-		if ( $cookie ) {
84
+		if ($cookie) {
85 85
 			$this->_customer_id        = $cookie[0];
86 86
 			$this->_session_expiration = $cookie[1];
87 87
 			$this->_session_expiring   = $cookie[2];
@@ -89,17 +89,17 @@  discard block
 block discarded – undo
89 89
 			$this->_data               = $this->get_session_data();
90 90
 
91 91
 			// If the user logs in, update session.
92
-			if ( is_user_logged_in() && get_current_user_id() != $this->_customer_id ) {
92
+			if (is_user_logged_in() && get_current_user_id() != $this->_customer_id) {
93 93
 				$this->_customer_id = get_current_user_id();
94 94
 				$this->_dirty       = true;
95 95
 				$this->save_data();
96
-				$this->set_customer_session_cookie( true );
96
+				$this->set_customer_session_cookie(true);
97 97
 			}
98 98
 
99 99
 			// Update session if its close to expiring.
100
-			if ( time() > $this->_session_expiring ) {
100
+			if (time() > $this->_session_expiring) {
101 101
 				$this->set_session_expiration();
102
-				$this->update_session_timestamp( $this->_customer_id, $this->_session_expiration );
102
+				$this->update_session_timestamp($this->_customer_id, $this->_session_expiration);
103 103
 			}
104 104
 		} else {
105 105
 			$this->set_session_expiration();
@@ -117,25 +117,25 @@  discard block
 block discarded – undo
117 117
 	 *
118 118
 	 * @param bool $set Should the session cookie be set.
119 119
 	 */
120
-	public function set_customer_session_cookie( $set ) {
121
-		if ( $set ) {
120
+	public function set_customer_session_cookie($set) {
121
+		if ($set) {
122 122
 			$to_hash           = $this->_customer_id . '|' . $this->_session_expiration;
123
-			$cookie_hash       = hash_hmac( 'md5', $to_hash, wp_hash( $to_hash ) );
123
+			$cookie_hash       = hash_hmac('md5', $to_hash, wp_hash($to_hash));
124 124
 			$cookie_value      = $this->_customer_id . '||' . $this->_session_expiration . '||' . $this->_session_expiring . '||' . $cookie_hash;
125 125
 			$this->_has_cookie = true;
126 126
 
127
-			if ( ! isset( $_COOKIE[ $this->_cookie ] ) || $_COOKIE[ $this->_cookie ] !== $cookie_value ) {
128
-				$this->setcookie( $this->_cookie, $cookie_value, $this->_session_expiration, $this->use_secure_cookie(), true );
127
+			if (!isset($_COOKIE[$this->_cookie]) || $_COOKIE[$this->_cookie] !== $cookie_value) {
128
+				$this->setcookie($this->_cookie, $cookie_value, $this->_session_expiration, $this->use_secure_cookie(), true);
129 129
 			}
130 130
 		}
131 131
 	}
132 132
 
133
-	public function setcookie( $name, $value, $expire = 0, $secure = false, $httponly = false ) {
134
-        if ( ! headers_sent() ) {
135
-            setcookie( $name, $value, $expire, COOKIEPATH ? COOKIEPATH : '/', COOKIE_DOMAIN, $secure, apply_filters( 'wpinv_cookie_httponly', $httponly, $name, $value, $expire, $secure ) );
136
-        } elseif ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
137
-            headers_sent( $file, $line );
138
-            trigger_error( "{$name} cookie cannot be set - headers already sent by {$file} on line {$line}", E_USER_NOTICE ); // @codingStandardsIgnoreLine
133
+	public function setcookie($name, $value, $expire = 0, $secure = false, $httponly = false) {
134
+        if (!headers_sent()) {
135
+            setcookie($name, $value, $expire, COOKIEPATH ? COOKIEPATH : '/', COOKIE_DOMAIN, $secure, apply_filters('wpinv_cookie_httponly', $httponly, $name, $value, $expire, $secure));
136
+        } elseif (defined('WP_DEBUG') && WP_DEBUG) {
137
+            headers_sent($file, $line);
138
+            trigger_error("{$name} cookie cannot be set - headers already sent by {$file} on line {$line}", E_USER_NOTICE); // @codingStandardsIgnoreLine
139 139
         }
140 140
     }
141 141
 
@@ -146,8 +146,8 @@  discard block
 block discarded – undo
146 146
 	 * @return bool
147 147
 	 */
148 148
 	protected function use_secure_cookie() {
149
-        $is_https = false !== strstr( get_option( 'home' ), 'https:' );
150
-		return apply_filters( 'wpinv_session_use_secure_cookie', $is_https && is_ssl() );
149
+        $is_https = false !== strstr(get_option('home'), 'https:');
150
+		return apply_filters('wpinv_session_use_secure_cookie', $is_https && is_ssl());
151 151
 	}
152 152
 
153 153
 	/**
@@ -156,15 +156,15 @@  discard block
 block discarded – undo
156 156
 	 * @return bool
157 157
 	 */
158 158
 	public function has_session() {
159
-		return isset( $_COOKIE[ $this->_cookie ] ) || $this->_has_cookie || is_user_logged_in(); // @codingStandardsIgnoreLine.
159
+		return isset($_COOKIE[$this->_cookie]) || $this->_has_cookie || is_user_logged_in(); // @codingStandardsIgnoreLine.
160 160
 	}
161 161
 
162 162
 	/**
163 163
 	 * Set session expiration.
164 164
 	 */
165 165
 	public function set_session_expiration() {
166
-		$this->_session_expiring   = time() + intval( apply_filters( 'wpinv_session_expiring', 60 * 60 * 47 ) ); // 47 Hours.
167
-		$this->_session_expiration = time() + intval( apply_filters( 'wpinv_session_expiration', 60 * 60 * 48 ) ); // 48 Hours.
166
+		$this->_session_expiring   = time() + intval(apply_filters('wpinv_session_expiring', 60 * 60 * 47)); // 47 Hours.
167
+		$this->_session_expiration = time() + intval(apply_filters('wpinv_session_expiration', 60 * 60 * 48)); // 48 Hours.
168 168
 	}
169 169
 
170 170
 	/**
@@ -174,8 +174,8 @@  discard block
 block discarded – undo
174 174
 	 */
175 175
 	public function generate_customer_id() {
176 176
 		require_once ABSPATH . 'wp-includes/class-phpass.php';
177
-		$hasher      = new PasswordHash( 8, false );
178
-		return md5( $hasher->get_random_bytes( 32 ) );
177
+		$hasher = new PasswordHash(8, false);
178
+		return md5($hasher->get_random_bytes(32));
179 179
 	}
180 180
 
181 181
 	/**
@@ -186,27 +186,27 @@  discard block
 block discarded – undo
186 186
 	 * @return bool|array
187 187
 	 */
188 188
 	public function get_session_cookie() {
189
-		$cookie_value = isset( $_COOKIE[ $this->_cookie ] ) ? wp_unslash( $_COOKIE[ $this->_cookie ] ) : false; // @codingStandardsIgnoreLine.
189
+		$cookie_value = isset($_COOKIE[$this->_cookie]) ? wp_unslash($_COOKIE[$this->_cookie]) : false; // @codingStandardsIgnoreLine.
190 190
 
191
-		if ( empty( $cookie_value ) || ! is_string( $cookie_value ) ) {
191
+		if (empty($cookie_value) || !is_string($cookie_value)) {
192 192
 			return false;
193 193
 		}
194 194
 
195
-		list( $customer_id, $session_expiration, $session_expiring, $cookie_hash ) = explode( '||', $cookie_value );
195
+		list($customer_id, $session_expiration, $session_expiring, $cookie_hash) = explode('||', $cookie_value);
196 196
 
197
-		if ( empty( $customer_id ) ) {
197
+		if (empty($customer_id)) {
198 198
 			return false;
199 199
 		}
200 200
 
201 201
 		// Validate hash.
202 202
 		$to_hash = $customer_id . '|' . $session_expiration;
203
-		$hash    = hash_hmac( 'md5', $to_hash, wp_hash( $to_hash ) );
203
+		$hash    = hash_hmac('md5', $to_hash, wp_hash($to_hash));
204 204
 
205
-		if ( empty( $cookie_hash ) || ! hash_equals( $hash, $cookie_hash ) ) {
205
+		if (empty($cookie_hash) || !hash_equals($hash, $cookie_hash)) {
206 206
 			return false;
207 207
 		}
208 208
 
209
-		return array( $customer_id, $session_expiration, $session_expiring, $cookie_hash );
209
+		return array($customer_id, $session_expiration, $session_expiring, $cookie_hash);
210 210
 	}
211 211
 
212 212
 	/**
@@ -215,11 +215,11 @@  discard block
 block discarded – undo
215 215
 	 * @return array
216 216
 	 */
217 217
 	public function get_session_data() {
218
-		return $this->has_session() ? (array) $this->get_session( $this->_customer_id ) : array();
218
+		return $this->has_session() ? (array) $this->get_session($this->_customer_id) : array();
219 219
 	}
220 220
 
221
-	public function generate_key( $customer_id ) {
222
-        if ( ! $customer_id ) {
221
+	public function generate_key($customer_id) {
222
+        if (!$customer_id) {
223 223
             return;
224 224
         }
225 225
 
@@ -231,9 +231,9 @@  discard block
 block discarded – undo
231 231
 	 */
232 232
 	public function save_data() {
233 233
 		// Dirty if something changed - prevents saving nothing new.
234
-		if ( $this->_dirty && $this->has_session() ) {
234
+		if ($this->_dirty && $this->has_session()) {
235 235
 
236
-            set_transient( $this->generate_key( $this->_customer_id ), $this->_data, $this->_session_expiration );
236
+            set_transient($this->generate_key($this->_customer_id), $this->_data, $this->_session_expiration);
237 237
 
238 238
 			$this->_dirty = false;
239 239
 		}
@@ -243,7 +243,7 @@  discard block
 block discarded – undo
243 243
 	 * Destroy all session data.
244 244
 	 */
245 245
 	public function destroy_session() {
246
-		$this->delete_session( $this->_customer_id );
246
+		$this->delete_session($this->_customer_id);
247 247
 		$this->forget_session();
248 248
 	}
249 249
 
@@ -251,7 +251,7 @@  discard block
 block discarded – undo
251 251
 	 * Forget all session data without destroying it.
252 252
 	 */
253 253
 	public function forget_session() {
254
-		$this->setcookie( $this->_cookie, '', time() - YEAR_IN_SECONDS, $this->use_secure_cookie(), true );
254
+		$this->setcookie($this->_cookie, '', time() - YEAR_IN_SECONDS, $this->use_secure_cookie(), true);
255 255
 
256 256
 		wpinv_empty_cart();
257 257
 
@@ -266,10 +266,10 @@  discard block
 block discarded – undo
266 266
 	 * @param int $uid User ID.
267 267
 	 * @return string
268 268
 	 */
269
-	public function nonce_user_logged_out( $uid ) {
269
+	public function nonce_user_logged_out($uid) {
270 270
 
271 271
 		// Check if one of our nonces.
272
-		if ( substr( $uid, 0, 5 ) === 'wpinv' || substr( $uid, 0, 7 ) === 'getpaid' ) {
272
+		if (substr($uid, 0, 5) === 'wpinv' || substr($uid, 0, 7) === 'getpaid') {
273 273
 			return $this->has_session() && $this->_customer_id ? $this->_customer_id : $uid;
274 274
 		}
275 275
 
@@ -283,20 +283,20 @@  discard block
 block discarded – undo
283 283
 	 * @param mixed  $default Default session value.
284 284
 	 * @return string|array
285 285
 	 */
286
-	public function get_session( $customer_id, $default = false ) {
286
+	public function get_session($customer_id, $default = false) {
287 287
 
288
-		if ( defined( 'WP_SETUP_CONFIG' ) ) {
288
+		if (defined('WP_SETUP_CONFIG')) {
289 289
 			return array();
290 290
 		}
291 291
 
292
-        $key = $this->generate_key( $customer_id );
293
-        $value = get_transient( $key );
292
+        $key = $this->generate_key($customer_id);
293
+        $value = get_transient($key);
294 294
 
295
-        if ( ! $value ) {
295
+        if (!$value) {
296 296
             $value = $default;
297 297
         }
298 298
 
299
-		return maybe_unserialize( $value );
299
+		return maybe_unserialize($value);
300 300
 	}
301 301
 
302 302
 	/**
@@ -304,11 +304,11 @@  discard block
 block discarded – undo
304 304
 	 *
305 305
 	 * @param int $customer_id Customer ID.
306 306
 	 */
307
-	public function delete_session( $customer_id ) {
307
+	public function delete_session($customer_id) {
308 308
 
309
-        $key = $this->generate_key( $customer_id );
309
+        $key = $this->generate_key($customer_id);
310 310
 
311
-		delete_transient( $key );
311
+		delete_transient($key);
312 312
 	}
313 313
 
314 314
 	/**
@@ -317,9 +317,9 @@  discard block
 block discarded – undo
317 317
 	 * @param string $customer_id Customer ID.
318 318
 	 * @param int    $timestamp Timestamp to expire the cookie.
319 319
 	 */
320
-	public function update_session_timestamp( $customer_id, $timestamp ) {
320
+	public function update_session_timestamp($customer_id, $timestamp) {
321 321
 
322
-        set_transient( $this->generate_key( $customer_id ), maybe_serialize( $this->_data ), $timestamp );
322
+        set_transient($this->generate_key($customer_id), maybe_serialize($this->_data), $timestamp);
323 323
 
324 324
 	}
325 325
 }
Please login to merge, or discard this patch.