Passed
Push — master ( c2a68e...bcea1f )
by Stiofan
03:51
created
widgets/buy-item.php 2 patches
Indentation   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -38,29 +38,29 @@  discard block
 block discarded – undo
38 38
                     'advanced'    => false
39 39
                 ),
40 40
                 'items'  => array(
41
-	                'title'       => __( 'Items to buy', 'invoicing' ),
42
-	                'desc'        => __( 'Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing' ),
43
-	                'type'        => 'text',
44
-	                'desc_tip'    => true,
45
-	                'default'     => '',
46
-	                'placeholder' => __('Items to buy','invoicing'),
47
-	                'advanced'    => false
41
+                    'title'       => __( 'Items to buy', 'invoicing' ),
42
+                    'desc'        => __( 'Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing' ),
43
+                    'type'        => 'text',
44
+                    'desc_tip'    => true,
45
+                    'default'     => '',
46
+                    'placeholder' => __('Items to buy','invoicing'),
47
+                    'advanced'    => false
48 48
                 ),
49 49
                 'label'  => array(
50
-	                'title'       => __( 'Button Label', 'invoicing' ),
51
-	                'desc'        => __( 'Enter button label. Default "Buy Now".', 'invoicing' ),
52
-	                'type'        => 'text',
53
-	                'desc_tip'    => true,
54
-	                'default'     => __( 'Buy Now', 'invoicing' ),
55
-	                'advanced'    => false
50
+                    'title'       => __( 'Button Label', 'invoicing' ),
51
+                    'desc'        => __( 'Enter button label. Default "Buy Now".', 'invoicing' ),
52
+                    'type'        => 'text',
53
+                    'desc_tip'    => true,
54
+                    'default'     => __( 'Buy Now', 'invoicing' ),
55
+                    'advanced'    => false
56 56
                 ),
57 57
                 'post_id'  => array(
58
-	                'title'       => __( 'Post ID', 'invoicing' ),
59
-	                'desc'        => __( 'Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing' ),
60
-	                'type'        => 'number',
61
-	                'desc_tip'    => true,
62
-	                'default'     => '',
63
-	                'advanced'    => true
58
+                    'title'       => __( 'Post ID', 'invoicing' ),
59
+                    'desc'        => __( 'Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing' ),
60
+                    'type'        => 'number',
61
+                    'desc_tip'    => true,
62
+                    'default'     => '',
63
+                    'advanced'    => true
64 64
                 ),
65 65
             )
66 66
 
@@ -70,43 +70,43 @@  discard block
 block discarded – undo
70 70
         parent::__construct( $options );
71 71
     }
72 72
 
73
-	/**
74
-	 * The Super block output function.
75
-	 *
76
-	 * @param array $args
77
-	 * @param array $widget_args
78
-	 * @param string $content
79
-	 *
80
-	 * @return string
81
-	 */
73
+    /**
74
+     * The Super block output function.
75
+     *
76
+     * @param array $args
77
+     * @param array $widget_args
78
+     * @param string $content
79
+     *
80
+     * @return string
81
+     */
82 82
     public function output( $args = array(), $widget_args = array(), $content = '' ) {
83 83
 
84
-	    $defaults = array(
85
-		    'items'     	=> '', // should be used like: item_id|quantity,item_id|quantity,item_id|quantity
86
-		    'label'  	    => __( 'Buy Now', 'invoicing' ), // the button title
87
-		    'post_id'   	=> '', // any related post_id
88
-	    );
84
+        $defaults = array(
85
+            'items'     	=> '', // should be used like: item_id|quantity,item_id|quantity,item_id|quantity
86
+            'label'  	    => __( 'Buy Now', 'invoicing' ), // the button title
87
+            'post_id'   	=> '', // any related post_id
88
+        );
89 89
 
90
-	    /**
91
-	     * Parse incoming $args into an array and merge it with $defaults
92
-	     */
93
-	    $args = wp_parse_args( $args, $defaults );
90
+        /**
91
+         * Parse incoming $args into an array and merge it with $defaults
92
+         */
93
+        $args = wp_parse_args( $args, $defaults );
94 94
 
95
-		$html = '<div class="wpi-buy-button-wrapper wpi-g">';
95
+        $html = '<div class="wpi-buy-button-wrapper wpi-g">';
96 96
 		
97
-		if ( empty( $args['items'] ) ) {
98
-			$html .= __( 'No items selected', 'invoicing' );
99
-		} else {
100
-			$post_id = isset( $args['post_id'] ) && is_numeric( $args['post_id'] ) ? sanitize_text_field( $args['post_id'] ) : 0;
101
-			$label   = isset( $args['label'] ) ? sanitize_text_field( $args['label'] ) : __( 'Buy Now', 'invoicing' );
102
-			$items   = esc_attr( $args['items'] );
103
-			$html   .= "<button class='button button-primary wpi-buy-button' type='button' onclick=\"wpi_buy(this, '$items','$post_id');\">$label</button>";
104
-		}
97
+        if ( empty( $args['items'] ) ) {
98
+            $html .= __( 'No items selected', 'invoicing' );
99
+        } else {
100
+            $post_id = isset( $args['post_id'] ) && is_numeric( $args['post_id'] ) ? sanitize_text_field( $args['post_id'] ) : 0;
101
+            $label   = isset( $args['label'] ) ? sanitize_text_field( $args['label'] ) : __( 'Buy Now', 'invoicing' );
102
+            $items   = esc_attr( $args['items'] );
103
+            $html   .= "<button class='button button-primary wpi-buy-button' type='button' onclick=\"wpi_buy(this, '$items','$post_id');\">$label</button>";
104
+        }
105 105
 	
106
-	    $html .= wp_nonce_field( 'wpinv_buy_items', 'wpinv_buy_nonce', true, false );
107
-	    $html .= '</div>';
106
+        $html .= wp_nonce_field( 'wpinv_buy_items', 'wpinv_buy_nonce', true, false );
107
+        $html .= '</div>';
108 108
 
109
-	    return $html;
109
+        return $html;
110 110
 
111 111
     }
112 112
 
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 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
 
@@ -23,40 +23,40 @@  discard block
 block discarded – undo
23 23
             'block-keywords'=> "['invoicing','buy', 'buy item']",
24 24
             'class_name'     => __CLASS__,
25 25
             'base_id'       => 'wpinv_buy',
26
-            'name'          => __('Invoicing > Buy Item Button','invoicing'),
26
+            'name'          => __('Invoicing > Buy Item Button', 'invoicing'),
27 27
             'widget_ops'    => array(
28 28
                 'classname'   => 'wpinv-buy-item-class  wpi-g',
29
-                'description' => esc_html__('Displays buy invoicing item button.','invoicing'),
29
+                'description' => esc_html__('Displays buy invoicing item button.', 'invoicing'),
30 30
             ),
31 31
             'arguments'     => array(
32 32
                 'title'  => array(
33
-                    'title'       => __( 'Widget title', 'invoicing' ),
34
-                    'desc'        => __( 'Enter widget title.', 'invoicing' ),
33
+                    'title'       => __('Widget title', 'invoicing'),
34
+                    'desc'        => __('Enter widget title.', 'invoicing'),
35 35
                     'type'        => 'text',
36 36
                     'desc_tip'    => true,
37 37
                     'default'     => '',
38 38
                     'advanced'    => false
39 39
                 ),
40 40
                 'items'  => array(
41
-	                'title'       => __( 'Items to buy', 'invoicing' ),
42
-	                'desc'        => __( 'Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing' ),
41
+	                'title'       => __('Items to buy', 'invoicing'),
42
+	                'desc'        => __('Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing'),
43 43
 	                'type'        => 'text',
44 44
 	                'desc_tip'    => true,
45 45
 	                'default'     => '',
46
-	                'placeholder' => __('Items to buy','invoicing'),
46
+	                'placeholder' => __('Items to buy', 'invoicing'),
47 47
 	                'advanced'    => false
48 48
                 ),
49 49
                 'label'  => array(
50
-	                'title'       => __( 'Button Label', 'invoicing' ),
51
-	                'desc'        => __( 'Enter button label. Default "Buy Now".', 'invoicing' ),
50
+	                'title'       => __('Button Label', 'invoicing'),
51
+	                'desc'        => __('Enter button label. Default "Buy Now".', 'invoicing'),
52 52
 	                'type'        => 'text',
53 53
 	                'desc_tip'    => true,
54
-	                'default'     => __( 'Buy Now', 'invoicing' ),
54
+	                'default'     => __('Buy Now', 'invoicing'),
55 55
 	                'advanced'    => false
56 56
                 ),
57 57
                 'post_id'  => array(
58
-	                'title'       => __( 'Post ID', 'invoicing' ),
59
-	                'desc'        => __( 'Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing' ),
58
+	                'title'       => __('Post ID', 'invoicing'),
59
+	                'desc'        => __('Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing'),
60 60
 	                'type'        => 'number',
61 61
 	                'desc_tip'    => true,
62 62
 	                'default'     => '',
@@ -67,7 +67,7 @@  discard block
 block discarded – undo
67 67
         );
68 68
 
69 69
 
70
-        parent::__construct( $options );
70
+        parent::__construct($options);
71 71
     }
72 72
 
73 73
 	/**
@@ -79,31 +79,31 @@  discard block
 block discarded – undo
79 79
 	 *
80 80
 	 * @return string
81 81
 	 */
82
-    public function output( $args = array(), $widget_args = array(), $content = '' ) {
82
+    public function output($args = array(), $widget_args = array(), $content = '') {
83 83
 
84 84
 	    $defaults = array(
85 85
 		    'items'     	=> '', // should be used like: item_id|quantity,item_id|quantity,item_id|quantity
86
-		    'label'  	    => __( 'Buy Now', 'invoicing' ), // the button title
86
+		    'label'  	    => __('Buy Now', 'invoicing'), // the button title
87 87
 		    'post_id'   	=> '', // any related post_id
88 88
 	    );
89 89
 
90 90
 	    /**
91 91
 	     * Parse incoming $args into an array and merge it with $defaults
92 92
 	     */
93
-	    $args = wp_parse_args( $args, $defaults );
93
+	    $args = wp_parse_args($args, $defaults);
94 94
 
95 95
 		$html = '<div class="wpi-buy-button-wrapper wpi-g">';
96 96
 		
97
-		if ( empty( $args['items'] ) ) {
98
-			$html .= __( 'No items selected', 'invoicing' );
97
+		if (empty($args['items'])) {
98
+			$html .= __('No items selected', 'invoicing');
99 99
 		} else {
100
-			$post_id = isset( $args['post_id'] ) && is_numeric( $args['post_id'] ) ? sanitize_text_field( $args['post_id'] ) : 0;
101
-			$label   = isset( $args['label'] ) ? sanitize_text_field( $args['label'] ) : __( 'Buy Now', 'invoicing' );
102
-			$items   = esc_attr( $args['items'] );
100
+			$post_id = isset($args['post_id']) && is_numeric($args['post_id']) ? sanitize_text_field($args['post_id']) : 0;
101
+			$label   = isset($args['label']) ? sanitize_text_field($args['label']) : __('Buy Now', 'invoicing');
102
+			$items   = esc_attr($args['items']);
103 103
 			$html   .= "<button class='button button-primary wpi-buy-button' type='button' onclick=\"wpi_buy(this, '$items','$post_id');\">$label</button>";
104 104
 		}
105 105
 	
106
-	    $html .= wp_nonce_field( 'wpinv_buy_items', 'wpinv_buy_nonce', true, false );
106
+	    $html .= wp_nonce_field('wpinv_buy_items', 'wpinv_buy_nonce', true, false);
107 107
 	    $html .= '</div>';
108 108
 
109 109
 	    return $html;
Please login to merge, or discard this patch.
includes/api/class-wpinv-rest-invoice-controller.php 2 patches
Indentation   +1272 added lines, -1272 removed lines patch added patch discarded remove patch
@@ -20,31 +20,31 @@  discard block
 block discarded – undo
20 20
 class WPInv_REST_Invoice_Controller extends WP_REST_Posts_Controller {
21 21
 
22 22
     /**
23
-	 * Post type.
24
-	 *
25
-	 * @var string
26
-	 */
27
-	protected $post_type = 'wpi_invoice';
23
+     * Post type.
24
+     *
25
+     * @var string
26
+     */
27
+    protected $post_type = 'wpi_invoice';
28 28
 	
29
-	/**
30
-	 * Cached results of get_item_schema.
31
-	 *
32
-	 * @since 1.0.13
33
-	 * @var array
34
-	 */
35
-	protected $schema;
29
+    /**
30
+     * Cached results of get_item_schema.
31
+     *
32
+     * @since 1.0.13
33
+     * @var array
34
+     */
35
+    protected $schema;
36 36
 
37 37
     /**
38
-	 * Constructor.
39
-	 *
40
-	 * @since 1.0.13
41
-	 *
42
-	 * @param string $namespace Api Namespace
43
-	 */
44
-	public function __construct( $namespace ) {
38
+     * Constructor.
39
+     *
40
+     * @since 1.0.13
41
+     *
42
+     * @param string $namespace Api Namespace
43
+     */
44
+    public function __construct( $namespace ) {
45 45
         
46 46
         // Set api namespace...
47
-		$this->namespace = $namespace;
47
+        $this->namespace = $namespace;
48 48
 
49 49
         // ... and the rest base
50 50
         $this->rest_base = 'invoices';
@@ -52,79 +52,79 @@  discard block
 block discarded – undo
52 52
     }
53 53
     
54 54
     /**
55
-	 * Checks if a given request has access to read invoices.
55
+     * Checks if a given request has access to read invoices.
56 56
      * 
57
-	 *
58
-	 * @since 1.0.13
59
-	 *
60
-	 * @param WP_REST_Request $request Full details about the request.
61
-	 * @return true|WP_Error True if the request has read access, WP_Error object otherwise.
62
-	 */
63
-	public function get_items_permissions_check( $request ) {
57
+     *
58
+     * @since 1.0.13
59
+     *
60
+     * @param WP_REST_Request $request Full details about the request.
61
+     * @return true|WP_Error True if the request has read access, WP_Error object otherwise.
62
+     */
63
+    public function get_items_permissions_check( $request ) {
64 64
 	
65 65
         $post_type = get_post_type_object( $this->post_type );
66 66
 
67
-		if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) {
68
-			return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
69
-		}
67
+        if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) {
68
+            return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
69
+        }
70 70
 
71
-		if ( ! is_user_logged_in() ) {
72
-			return new WP_Error( 'rest_forbidden', __( 'Sorry, you must be logged in to view items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
73
-		}
71
+        if ( ! is_user_logged_in() ) {
72
+            return new WP_Error( 'rest_forbidden', __( 'Sorry, you must be logged in to view items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
73
+        }
74 74
 
75
-		// Read checks will be evaluated on a per invoice basis
75
+        // Read checks will be evaluated on a per invoice basis
76 76
 
77
-		return true;
77
+        return true;
78 78
 
79 79
     }
80 80
     
81 81
     /**
82
-	 * Retrieves a collection of invoices.
83
-	 *
84
-	 * @since 1.0.13
85
-	 *
86
-	 * @param WP_REST_Request $request Full details about the request.
87
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
88
-	 */
89
-	public function get_items( $request ) {
82
+     * Retrieves a collection of invoices.
83
+     *
84
+     * @since 1.0.13
85
+     *
86
+     * @param WP_REST_Request $request Full details about the request.
87
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
88
+     */
89
+    public function get_items( $request ) {
90 90
 		
91
-		// Retrieve request query parameters.
92
-		$args          = $this->get_request_collection_params( $request );
91
+        // Retrieve request query parameters.
92
+        $args          = $this->get_request_collection_params( $request );
93 93
 		
94
-		// WP_Query Args.
95
-		$wp_query_args = $this->get_collection_wp_query_params( $args, $request );
94
+        // WP_Query Args.
95
+        $wp_query_args = $this->get_collection_wp_query_params( $args, $request );
96 96
 		
97
-		// Get invoice ids...
98
-		$query         = new WP_Query( $wp_query_args );
99
-
100
-		// ... and map them into invoice objects.
101
-		$_invoices     = array_map( array( $this, 'get_post' ), $query->posts );
102
-
103
-		// Prepare the retrieved invoices
104
-		$invoices      = array();
105
-
106
-		foreach( $_invoices as $invoice ) {
107
-			if ( $this->check_read_permission( $invoice ) ) {
108
-				$invoices[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $invoice, $request ) );
109
-			}
110
-		}
111
-
112
-		// Prepare the response.
113
-		$response = rest_ensure_response( $invoices );
114
-		$response->header( 'X-WP-Total', (int) $query->found_posts );
115
-		$response->header( 'X-WP-TotalPages', (int) $query->max_num_pages );
116
-
117
-		/**
118
-		 * Filters the responses for invoices requests.
119
-		 *
120
-		 *
121
-		 * @since 1.0.13
122
-		 *
123
-		 *
124
-		 * @param arrWP_REST_Response $response    Response object.
125
-		 * @param WP_REST_Request     $request The request used.
97
+        // Get invoice ids...
98
+        $query         = new WP_Query( $wp_query_args );
99
+
100
+        // ... and map them into invoice objects.
101
+        $_invoices     = array_map( array( $this, 'get_post' ), $query->posts );
102
+
103
+        // Prepare the retrieved invoices
104
+        $invoices      = array();
105
+
106
+        foreach( $_invoices as $invoice ) {
107
+            if ( $this->check_read_permission( $invoice ) ) {
108
+                $invoices[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $invoice, $request ) );
109
+            }
110
+        }
111
+
112
+        // Prepare the response.
113
+        $response = rest_ensure_response( $invoices );
114
+        $response->header( 'X-WP-Total', (int) $query->found_posts );
115
+        $response->header( 'X-WP-TotalPages', (int) $query->max_num_pages );
116
+
117
+        /**
118
+         * Filters the responses for invoices requests.
119
+         *
120
+         *
121
+         * @since 1.0.13
122
+         *
123
+         *
124
+         * @param arrWP_REST_Response $response    Response object.
125
+         * @param WP_REST_Request     $request The request used.
126 126
          * @param array               $args Array of args used to retrieve the invoices
127
-		 */
127
+         */
128 128
         $response       = apply_filters( "wpinv_rest_invoices_response", $response, $request, $args );
129 129
 
130 130
         return rest_ensure_response( $response );
@@ -132,25 +132,25 @@  discard block
 block discarded – undo
132 132
     }
133 133
 
134 134
     /**
135
-	 * Get the post, if the ID is valid.
136
-	 *
137
-	 * @since 1.0.13
138
-	 *
139
-	 * @param int $invoice_id Supplied ID.
140
-	 * @return WPInv_Invoice|WP_Error Invoice object if ID is valid, WP_Error otherwise.
141
-	 */
142
-	protected function get_post( $invoice_id ) {
135
+     * Get the post, if the ID is valid.
136
+     *
137
+     * @since 1.0.13
138
+     *
139
+     * @param int $invoice_id Supplied ID.
140
+     * @return WPInv_Invoice|WP_Error Invoice object if ID is valid, WP_Error otherwise.
141
+     */
142
+    protected function get_post( $invoice_id ) {
143 143
 		
144
-		$error     = new WP_Error( 'rest_invoice_invalid_id', __( 'Invalid item ID.', 'invoicing' ), array( 'status' => 404 ) );
144
+        $error     = new WP_Error( 'rest_invoice_invalid_id', __( 'Invalid item ID.', 'invoicing' ), array( 'status' => 404 ) );
145 145
 
146 146
         // Ids start from 1
147 147
         if ( (int) $invoice_id <= 0 ) {
148
-			return $error;
149
-		}
148
+            return $error;
149
+        }
150 150
 
151
-		$invoice = wpinv_get_invoice( (int) $invoice_id );
152
-		if ( empty( $invoice ) || $this->post_type !== $invoice->post_type ) {
153
-			return $error;
151
+        $invoice = wpinv_get_invoice( (int) $invoice_id );
152
+        if ( empty( $invoice ) || $this->post_type !== $invoice->post_type ) {
153
+            return $error;
154 154
         }
155 155
 
156 156
         return $invoice;
@@ -158,77 +158,77 @@  discard block
 block discarded – undo
158 158
     }
159 159
 
160 160
     /**
161
-	 * Checks if a given request has access to read an invoice.
162
-	 *
163
-	 * @since 1.0.13
164
-	 *
165
-	 * @param WP_REST_Request $request Full details about the request.
166
-	 * @return bool|WP_Error True if the request has read access for the invoice, WP_Error object otherwise.
167
-	 */
168
-	public function get_item_permissions_check( $request ) {
161
+     * Checks if a given request has access to read an invoice.
162
+     *
163
+     * @since 1.0.13
164
+     *
165
+     * @param WP_REST_Request $request Full details about the request.
166
+     * @return bool|WP_Error True if the request has read access for the invoice, WP_Error object otherwise.
167
+     */
168
+    public function get_item_permissions_check( $request ) {
169 169
 
170 170
         // Retrieve the invoice object.
171 171
         $invoice = $this->get_post( $request['id'] );
172 172
         
173 173
         // Ensure it is valid.
174
-		if ( is_wp_error( $invoice ) ) {
175
-			return $invoice;
176
-		}
174
+        if ( is_wp_error( $invoice ) ) {
175
+            return $invoice;
176
+        }
177 177
 
178
-		if ( $invoice ) {
179
-			return $this->check_read_permission( $invoice );
180
-		}
178
+        if ( $invoice ) {
179
+            return $this->check_read_permission( $invoice );
180
+        }
181 181
 
182
-		return true;
182
+        return true;
183 183
     }
184 184
     
185 185
     /**
186
-	 * Checks if an invoice can be read.
187
-	 * 
188
-	 * An invoice can be read by site admins and owners of the invoice
189
-	 *
190
-	 *
191
-	 * @since 1.0.13
192
-	 *
193
-	 * @param WPInv_Invoice $invoice WPInv_Invoice object.
194
-	 * @return bool Whether the post can be read.
195
-	 */
196
-	public function check_read_permission( $invoice ) {
197
-		return wpinv_user_can_view_invoice( $invoice->ID );
186
+     * Checks if an invoice can be read.
187
+     * 
188
+     * An invoice can be read by site admins and owners of the invoice
189
+     *
190
+     *
191
+     * @since 1.0.13
192
+     *
193
+     * @param WPInv_Invoice $invoice WPInv_Invoice object.
194
+     * @return bool Whether the post can be read.
195
+     */
196
+    public function check_read_permission( $invoice ) {
197
+        return wpinv_user_can_view_invoice( $invoice->ID );
198 198
     }
199 199
     
200 200
     /**
201
-	 * Retrieves a single invoice.
202
-	 *
203
-	 * @since 1.0.13
204
-	 *
205
-	 * @param WP_REST_Request $request Full details about the request.
206
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
207
-	 */
208
-	public function get_item( $request ) {
201
+     * Retrieves a single invoice.
202
+     *
203
+     * @since 1.0.13
204
+     *
205
+     * @param WP_REST_Request $request Full details about the request.
206
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
207
+     */
208
+    public function get_item( $request ) {
209 209
 
210 210
         // Fetch the invoice.
211 211
         $invoice = $this->get_post( $request['id'] );
212 212
         
213 213
         // Abort early if it does not exist
214
-		if ( is_wp_error( $invoice ) ) {
215
-			return $invoice;
216
-		}
217
-
218
-		// Prepare the response
219
-		$response = $this->prepare_item_for_response( $invoice, $request );
220
-		$response->link_header( 'alternate', esc_url( $invoice->get_view_url() ), array( 'type' => 'text/html' ) );
221
-
222
-		/**
223
-		 * Filters the responses for single invoice requests.
224
-		 *
225
-		 *
226
-		 * @since 1.0.13
227
-		 * @var WP_HTTP_Response
228
-		 *
229
-		 * @param WP_HTTP_Response $response Response.
230
-		 * @param WP_REST_Request  $request The request used.
231
-		 */
214
+        if ( is_wp_error( $invoice ) ) {
215
+            return $invoice;
216
+        }
217
+
218
+        // Prepare the response
219
+        $response = $this->prepare_item_for_response( $invoice, $request );
220
+        $response->link_header( 'alternate', esc_url( $invoice->get_view_url() ), array( 'type' => 'text/html' ) );
221
+
222
+        /**
223
+         * Filters the responses for single invoice requests.
224
+         *
225
+         *
226
+         * @since 1.0.13
227
+         * @var WP_HTTP_Response
228
+         *
229
+         * @param WP_HTTP_Response $response Response.
230
+         * @param WP_REST_Request  $request The request used.
231
+         */
232 232
         $response       = apply_filters( "wpinv_rest_get_invoice_response", $response, $request );
233 233
 
234 234
         return rest_ensure_response( $response );
@@ -236,23 +236,23 @@  discard block
 block discarded – undo
236 236
     }
237 237
     
238 238
     /**
239
-	 * Checks if a given request has access to create an invoice.
240
-	 *
241
-	 * @since 1.0.13
242
-	 *
243
-	 * @param WP_REST_Request $request Full details about the request.
244
-	 * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise.
245
-	 */
246
-	public function create_item_permissions_check( $request ) {
239
+     * Checks if a given request has access to create an invoice.
240
+     *
241
+     * @since 1.0.13
242
+     *
243
+     * @param WP_REST_Request $request Full details about the request.
244
+     * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise.
245
+     */
246
+    public function create_item_permissions_check( $request ) {
247 247
 	
248
-		if ( ! empty( $request['id'] ) ) {
249
-			return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) );
250
-		}
248
+        if ( ! empty( $request['id'] ) ) {
249
+            return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) );
250
+        }
251 251
 
252
-		$post_type = get_post_type_object( $this->post_type );
252
+        $post_type = get_post_type_object( $this->post_type );
253 253
 
254
-		if ( ! current_user_can( $post_type->cap->create_posts ) && ! wpinv_current_user_can_manage_invoicing() ) {
255
-			return new WP_Error( 
254
+        if ( ! current_user_can( $post_type->cap->create_posts ) && ! wpinv_current_user_can_manage_invoicing() ) {
255
+            return new WP_Error( 
256 256
                 'rest_cannot_create',
257 257
                 __( 'Sorry, you are not allowed to create items as this user.', 'invoicing' ), 
258 258
                 array( 
@@ -261,90 +261,90 @@  discard block
 block discarded – undo
261 261
             );
262 262
         }
263 263
 
264
-		return true;
264
+        return true;
265 265
     }
266 266
     
267 267
     /**
268
-	 * Creates a single invoice.
269
-	 *
270
-	 * @since 1.0.13
271
-	 *
272
-	 * @param WP_REST_Request $request Full details about the request.
273
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
274
-	 */
275
-	public function create_item( $request ) {
276
-
277
-		if ( ! empty( $request['id'] ) ) {
278
-			return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) );
279
-		}
280
-
281
-		$request->set_param( 'context', 'edit' );
282
-
283
-		// Prepare the updated data.
284
-		$invoice_data = $this->prepare_item_for_database( $request );
285
-
286
-		if ( is_wp_error( $invoice_data ) ) {
287
-			return $invoice_data;
288
-		}
289
-
290
-		// Try creating the invoice
291
-		$invoice_data['post_type']    = $this->post_type;
292
-		$invoice_data['private_note'] = __( 'Created via API.', 'invoicing' );
268
+     * Creates a single invoice.
269
+     *
270
+     * @since 1.0.13
271
+     *
272
+     * @param WP_REST_Request $request Full details about the request.
273
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
274
+     */
275
+    public function create_item( $request ) {
276
+
277
+        if ( ! empty( $request['id'] ) ) {
278
+            return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) );
279
+        }
280
+
281
+        $request->set_param( 'context', 'edit' );
282
+
283
+        // Prepare the updated data.
284
+        $invoice_data = $this->prepare_item_for_database( $request );
285
+
286
+        if ( is_wp_error( $invoice_data ) ) {
287
+            return $invoice_data;
288
+        }
289
+
290
+        // Try creating the invoice
291
+        $invoice_data['post_type']    = $this->post_type;
292
+        $invoice_data['private_note'] = __( 'Created via API.', 'invoicing' );
293 293
         $invoice = wpinv_insert_invoice( $invoice_data, true );
294 294
 
295
-		if ( is_wp_error( $invoice ) ) {
295
+        if ( is_wp_error( $invoice ) ) {
296 296
             return $invoice;
297
-		}
298
-
299
-		// Prepare the response
300
-		$response = $this->prepare_item_for_response( $invoice, $request );
301
-
302
-		/**
303
-		 * Fires after a single invoice is created or updated via the REST API.
304
-		 *
305
-		 * @since 1.0.13
306
-		 *
307
-		 * @param WPinv_Invoice   $invoice  Inserted or updated invoice object.
308
-		 * @param WP_REST_Request $request  Request object.
309
-		 * @param bool            $creating True when creating a post, false when updating.
310
-		 */
311
-		do_action( "wpinv_rest_insert_invoice", $invoice, $request, true );
312
-
313
-		/**
314
-		 * Filters the responses for creating single invoice requests.
315
-		 *
316
-		 *
317
-		 * @since 1.0.13
318
-		 *
319
-		 *
320
-		 * @param array           $invoice_data Invoice properties.
321
-		 * @param WP_REST_Request $request The request used.
322
-		 */
297
+        }
298
+
299
+        // Prepare the response
300
+        $response = $this->prepare_item_for_response( $invoice, $request );
301
+
302
+        /**
303
+         * Fires after a single invoice is created or updated via the REST API.
304
+         *
305
+         * @since 1.0.13
306
+         *
307
+         * @param WPinv_Invoice   $invoice  Inserted or updated invoice object.
308
+         * @param WP_REST_Request $request  Request object.
309
+         * @param bool            $creating True when creating a post, false when updating.
310
+         */
311
+        do_action( "wpinv_rest_insert_invoice", $invoice, $request, true );
312
+
313
+        /**
314
+         * Filters the responses for creating single invoice requests.
315
+         *
316
+         *
317
+         * @since 1.0.13
318
+         *
319
+         *
320
+         * @param array           $invoice_data Invoice properties.
321
+         * @param WP_REST_Request $request The request used.
322
+         */
323 323
         $response       = apply_filters( "wpinv_rest_create_invoice_response", $response, $request );
324 324
 
325 325
         return rest_ensure_response( $response );
326
-	}
327
-
328
-	/**
329
-	 * Checks if a given request has access to update an invoice.
330
-	 *
331
-	 * @since 1.0.13
332
-	 *
333
-	 * @param WP_REST_Request $request Full details about the request.
334
-	 * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise.
335
-	 */
336
-	public function update_item_permissions_check( $request ) {
337
-
338
-		// Retrieve the invoice.
339
-		$invoice = $this->get_post( $request['id'] );
340
-		if ( is_wp_error( $invoice ) ) {
341
-			return $invoice;
342
-		}
343
-
344
-		$post_type = get_post_type_object( $this->post_type );
345
-
346
-		if ( ! current_user_can(  $post_type->cap->edit_post, $invoice->ID  ) ) {
347
-			return new WP_Error( 
326
+    }
327
+
328
+    /**
329
+     * Checks if a given request has access to update an invoice.
330
+     *
331
+     * @since 1.0.13
332
+     *
333
+     * @param WP_REST_Request $request Full details about the request.
334
+     * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise.
335
+     */
336
+    public function update_item_permissions_check( $request ) {
337
+
338
+        // Retrieve the invoice.
339
+        $invoice = $this->get_post( $request['id'] );
340
+        if ( is_wp_error( $invoice ) ) {
341
+            return $invoice;
342
+        }
343
+
344
+        $post_type = get_post_type_object( $this->post_type );
345
+
346
+        if ( ! current_user_can(  $post_type->cap->edit_post, $invoice->ID  ) ) {
347
+            return new WP_Error( 
348 348
                 'rest_cannot_edit', 
349 349
                 __( 'Sorry, you are not allowed to update this item.', 'invoicing' ), 
350 350
                 array( 
@@ -353,162 +353,162 @@  discard block
 block discarded – undo
353 353
             );
354 354
         }
355 355
 
356
-		return true;
357
-	}
358
-
359
-	/**
360
-	 * Updates a single invoice.
361
-	 *
362
-	 * @since 1.0.13
363
-	 *
364
-	 * @param WP_REST_Request $request Full details about the request.
365
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
366
-	 */
367
-	public function update_item( $request ) {
356
+        return true;
357
+    }
358
+
359
+    /**
360
+     * Updates a single invoice.
361
+     *
362
+     * @since 1.0.13
363
+     *
364
+     * @param WP_REST_Request $request Full details about the request.
365
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
366
+     */
367
+    public function update_item( $request ) {
368 368
 		
369
-		// Ensure the invoice exists.
369
+        // Ensure the invoice exists.
370 370
         $valid_check = $this->get_post( $request['id'] );
371 371
         
372 372
         // Abort early if it does not exist
373
-		if ( is_wp_error( $valid_check ) ) {
374
-			return $valid_check;
375
-		}
373
+        if ( is_wp_error( $valid_check ) ) {
374
+            return $valid_check;
375
+        }
376 376
 
377
-		$request->set_param( 'context', 'edit' );
377
+        $request->set_param( 'context', 'edit' );
378 378
 
379
-		// Prepare the updated data.
380
-		$data_to_update = $this->prepare_item_for_database( $request );
379
+        // Prepare the updated data.
380
+        $data_to_update = $this->prepare_item_for_database( $request );
381 381
 
382
-		if ( is_wp_error( $data_to_update ) ) {
383
-			return $data_to_update;
384
-		}
382
+        if ( is_wp_error( $data_to_update ) ) {
383
+            return $data_to_update;
384
+        }
385 385
 
386
-		// Abort if no invoice data is provided
386
+        // Abort if no invoice data is provided
387 387
         if( empty( $data_to_update ) ) {
388 388
             return new WP_Error( 'missing_data', __( 'An update request cannot be empty.', 'invoicing' ) );
389 389
         }
390 390
 
391
-		// Include the invoice ID
392
-		$data_to_update['ID'] = $request['id'];
393
-
394
-		// Update the invoice
395
-		$updated_invoice = wpinv_update_invoice( $data_to_update, true );
396
-
397
-		// Incase the update operation failed...
398
-		if ( is_wp_error( $updated_invoice ) ) {
399
-			return $updated_invoice;
400
-		}
401
-
402
-		// Prepare the response
403
-		$response = $this->prepare_item_for_response( $updated_invoice, $request );
404
-
405
-		/** This action is documented in includes/class-wpinv-rest-invoice-controller.php */
406
-		do_action( "wpinv_rest_insert_invoice", $updated_invoice, $request, false );
407
-
408
-		/**
409
-		 * Filters the responses for updating single invoice requests.
410
-		 *
411
-		 *
412
-		 * @since 1.0.13
413
-		 *
414
-		 *
415
-		 * @param array           $invoice_data Invoice properties.
416
-		 * @param WP_REST_Request $request The request used.
417
-		 */
391
+        // Include the invoice ID
392
+        $data_to_update['ID'] = $request['id'];
393
+
394
+        // Update the invoice
395
+        $updated_invoice = wpinv_update_invoice( $data_to_update, true );
396
+
397
+        // Incase the update operation failed...
398
+        if ( is_wp_error( $updated_invoice ) ) {
399
+            return $updated_invoice;
400
+        }
401
+
402
+        // Prepare the response
403
+        $response = $this->prepare_item_for_response( $updated_invoice, $request );
404
+
405
+        /** This action is documented in includes/class-wpinv-rest-invoice-controller.php */
406
+        do_action( "wpinv_rest_insert_invoice", $updated_invoice, $request, false );
407
+
408
+        /**
409
+         * Filters the responses for updating single invoice requests.
410
+         *
411
+         *
412
+         * @since 1.0.13
413
+         *
414
+         *
415
+         * @param array           $invoice_data Invoice properties.
416
+         * @param WP_REST_Request $request The request used.
417
+         */
418 418
         $response       = apply_filters( "wpinv_rest_update_invoice_response", $response, $request );
419 419
 
420 420
         return rest_ensure_response( $response );
421
-	}
422
-
423
-	/**
424
-	 * Checks if a given request has access to delete an invoice.
425
-	 *
426
-	 * @since 1.0.13
427
-	 *
428
-	 * @param WP_REST_Request $request Full details about the request.
429
-	 * @return true|WP_Error True if the request has access to delete the invoice, WP_Error object otherwise.
430
-	 */
431
-	public function delete_item_permissions_check( $request ) {
432
-
433
-		// Retrieve the invoice.
434
-		$invoice = $this->get_post( $request['id'] );
435
-		if ( is_wp_error( $invoice ) ) {
436
-			return $invoice;
437
-		}
438
-
439
-		// Ensure the current user can delete invoices
440
-		if ( wpinv_current_user_can_manage_invoicing() ||  current_user_can( 'delete_invoices', $request['id'] ) ) {
441
-			return true;
442
-		}
443
-
444
-		return new WP_Error( 
445
-			'rest_cannot_delete', 
446
-			__( 'Sorry, you are not allowed to delete this item.', 'invoicing' ), 
447
-			array( 
448
-				'status' => rest_authorization_required_code(),
449
-			)
450
-		);
451
-	}
452
-
453
-	/**
454
-	 * Deletes a single invoice.
455
-	 *
456
-	 * @since 1.0.13
457
-	 *
458
-	 * @param WP_REST_Request $request Full details about the request.
459
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
460
-	 */
461
-	public function delete_item( $request ) {
421
+    }
422
+
423
+    /**
424
+     * Checks if a given request has access to delete an invoice.
425
+     *
426
+     * @since 1.0.13
427
+     *
428
+     * @param WP_REST_Request $request Full details about the request.
429
+     * @return true|WP_Error True if the request has access to delete the invoice, WP_Error object otherwise.
430
+     */
431
+    public function delete_item_permissions_check( $request ) {
432
+
433
+        // Retrieve the invoice.
434
+        $invoice = $this->get_post( $request['id'] );
435
+        if ( is_wp_error( $invoice ) ) {
436
+            return $invoice;
437
+        }
438
+
439
+        // Ensure the current user can delete invoices
440
+        if ( wpinv_current_user_can_manage_invoicing() ||  current_user_can( 'delete_invoices', $request['id'] ) ) {
441
+            return true;
442
+        }
443
+
444
+        return new WP_Error( 
445
+            'rest_cannot_delete', 
446
+            __( 'Sorry, you are not allowed to delete this item.', 'invoicing' ), 
447
+            array( 
448
+                'status' => rest_authorization_required_code(),
449
+            )
450
+        );
451
+    }
452
+
453
+    /**
454
+     * Deletes a single invoice.
455
+     *
456
+     * @since 1.0.13
457
+     *
458
+     * @param WP_REST_Request $request Full details about the request.
459
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
460
+     */
461
+    public function delete_item( $request ) {
462 462
 		
463
-		// Retrieve the invoice.
464
-		$invoice = $this->get_post( $request['id'] );
465
-		if ( is_wp_error( $invoice ) ) {
466
-			return $invoice;
467
-		}
463
+        // Retrieve the invoice.
464
+        $invoice = $this->get_post( $request['id'] );
465
+        if ( is_wp_error( $invoice ) ) {
466
+            return $invoice;
467
+        }
468 468
 
469
-		$request->set_param( 'context', 'edit' );
469
+        $request->set_param( 'context', 'edit' );
470 470
 
471
-		// Prepare the invoice id
472
-		$id    = $invoice->ID;
471
+        // Prepare the invoice id
472
+        $id    = $invoice->ID;
473 473
 
474
-		// Prepare the response
475
-		$response = $this->prepare_item_for_response( $invoice, $request );
474
+        // Prepare the response
475
+        $response = $this->prepare_item_for_response( $invoice, $request );
476 476
 
477
-		// Check if the user wants to bypass the trash...
478
-		$force_delete = (bool) $request['force'];
477
+        // Check if the user wants to bypass the trash...
478
+        $force_delete = (bool) $request['force'];
479 479
 
480
-		// Try deleting the invoice.
481
-		$deleted = wp_delete_post( $id, $force_delete );
480
+        // Try deleting the invoice.
481
+        $deleted = wp_delete_post( $id, $force_delete );
482 482
 
483
-		// Abort early if we can't delete the invoice.
484
-		if ( ! $deleted ) {
485
-			return new WP_Error( 'rest_cannot_delete', __( 'The item cannot be deleted.', 'invoicing' ), array( 'status' => 500 ) );
486
-		}
483
+        // Abort early if we can't delete the invoice.
484
+        if ( ! $deleted ) {
485
+            return new WP_Error( 'rest_cannot_delete', __( 'The item cannot be deleted.', 'invoicing' ), array( 'status' => 500 ) );
486
+        }
487 487
 
488
-		/**
489
-		 * Fires immediately after a single invoice is deleted or trashed via the REST API.
490
-		 *
491
-		 *
492
-		 * @since 1.0.13
493
-		 *
494
-		 * @param WPInv_Invoice    $invoice  The deleted or trashed invoice.
495
-		 * @param WP_REST_Request  $request  The request sent to the API.
496
-		 */
497
-		do_action( "wpinv_rest_delete_invoice", $invoice, $request );
488
+        /**
489
+         * Fires immediately after a single invoice is deleted or trashed via the REST API.
490
+         *
491
+         *
492
+         * @since 1.0.13
493
+         *
494
+         * @param WPInv_Invoice    $invoice  The deleted or trashed invoice.
495
+         * @param WP_REST_Request  $request  The request sent to the API.
496
+         */
497
+        do_action( "wpinv_rest_delete_invoice", $invoice, $request );
498 498
 
499
-		return $response;
499
+        return $response;
500 500
 
501
-	}
501
+    }
502 502
     
503 503
     
504 504
     /**
505
-	 * Retrieves the query params for the invoices collection.
506
-	 *
507
-	 * @since 1.0.13
508
-	 *
509
-	 * @return array Collection parameters.
510
-	 */
511
-	public function get_collection_params() {
505
+     * Retrieves the query params for the invoices collection.
506
+     *
507
+     * @since 1.0.13
508
+     *
509
+     * @return array Collection parameters.
510
+     */
511
+    public function get_collection_params() {
512 512
         
513 513
         $query_params               = array(
514 514
 
@@ -526,11 +526,11 @@  discard block
 block discarded – undo
526 526
 
527 527
             // User.
528 528
             'user'                  => array(
529
-				'description'       => __( 'Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing' ),
530
-				'type'              => 'string',
531
-			),
529
+                'description'       => __( 'Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing' ),
530
+                'type'              => 'string',
531
+            ),
532 532
 
533
-			// Exclude certain users
533
+            // Exclude certain users
534 534
             'exclude_users'  	    => array(
535 535
                 'description' 		=> __( 'Exclude items from specific users.', 'invoicing' ),
536 536
                 'type'        		=> 'array',
@@ -540,59 +540,59 @@  discard block
 block discarded – undo
540 540
                 'default'     		=> array(),
541 541
             ),
542 542
 			
543
-			// Items before.
543
+            // Items before.
544 544
             'before_date'           => array(
545
-				'description'       => __( 'Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing' ),
546
-				'type'              => 'string',
547
-			),
545
+                'description'       => __( 'Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing' ),
546
+                'type'              => 'string',
547
+            ),
548 548
 
549 549
             'meta_key'           => array(
550
-				'description'       => __( 'Filter items by custom field key.', 'invoicing' ),
551
-				'type'              => 'string',
552
-			),
550
+                'description'       => __( 'Filter items by custom field key.', 'invoicing' ),
551
+                'type'              => 'string',
552
+            ),
553 553
 
554 554
             'meta_compare_key'           => array(
555
-				'description'       => __( 'Comparison operator to test the `meta_key`.', 'invoicing' ),
556
-				'type'              => 'string',
557
-				'default'              => '=',
558
-				'enum'        		=> array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ),
559
-			),
555
+                'description'       => __( 'Comparison operator to test the `meta_key`.', 'invoicing' ),
556
+                'type'              => 'string',
557
+                'default'              => '=',
558
+                'enum'        		=> array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ),
559
+            ),
560 560
 
561 561
             'meta_value'           => array(
562
-				'description'       => __( 'Filter items by custom field value.', 'invoicing' ),
563
-				'type'              => 'string',
564
-			),
562
+                'description'       => __( 'Filter items by custom field value.', 'invoicing' ),
563
+                'type'              => 'string',
564
+            ),
565 565
 
566 566
             'meta_compare'           => array(
567
-				'description'       => __( 'Comparison operator to test the `meta_value`.', 'invoicing' ),
568
-				'type'              => 'string',
569
-				'default'              => '=',
570
-				'enum'        		=> array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ),
571
-			),
572
-
573
-			'meta_value_num'           => array(
574
-				'description'       => __( 'Filter items by a numeric custom field value.', 'invoicing' ),
575
-				'type'              => 'integer',
576
-			),
577
-
578
-			// items after.
567
+                'description'       => __( 'Comparison operator to test the `meta_value`.', 'invoicing' ),
568
+                'type'              => 'string',
569
+                'default'              => '=',
570
+                'enum'        		=> array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ),
571
+            ),
572
+
573
+            'meta_value_num'           => array(
574
+                'description'       => __( 'Filter items by a numeric custom field value.', 'invoicing' ),
575
+                'type'              => 'integer',
576
+            ),
577
+
578
+            // items after.
579 579
             'after_date'            => array(
580
-				'description'       => __( 'Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing' ),
581
-				'type'              => 'string',
580
+                'description'       => __( 'Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing' ),
581
+                'type'              => 'string',
582 582
             ),
583 583
             
584 584
             // Number of results per page
585 585
             'limit'                 => array(
586
-				'description'       => __( 'Number of items to fetch.', 'invoicing' ),
587
-				'type'              => 'integer',
588
-				'default'           => (int) get_option( 'posts_per_page' ),
586
+                'description'       => __( 'Number of items to fetch.', 'invoicing' ),
587
+                'type'              => 'integer',
588
+                'default'           => (int) get_option( 'posts_per_page' ),
589 589
             ),
590 590
 
591 591
             // Pagination
592 592
             'page'     => array(
593
-				'description'       => __( 'Current page to fetch.', 'invoicing' ),
594
-				'type'              => 'integer',
595
-				'default'           => 1,
593
+                'description'       => __( 'Current page to fetch.', 'invoicing' ),
594
+                'type'              => 'integer',
595
+                'default'           => 1,
596 596
             ),
597 597
 
598 598
             // limit to certain items
@@ -603,9 +603,9 @@  discard block
 block discarded – undo
603 603
                     'type' => 'integer',
604 604
                 ),
605 605
                 'default'     => array(),
606
-			),
606
+            ),
607 607
 			
608
-			// Exclude certain items
608
+            // Exclude certain items
609 609
             'exclude'  => array(
610 610
                 'description' => __( 'Ensure result set excludes specific IDs.', 'invoicing' ),
611 611
                 'type'        => 'array',
@@ -624,9 +624,9 @@  discard block
 block discarded – undo
624 624
                     'date',
625 625
                     'id',
626 626
                     'modified',
627
-					'title',
628
-					'meta_value',
629
-					'meta_value_num'
627
+                    'title',
628
+                    'meta_value',
629
+                    'meta_value_num'
630 630
                 ),
631 631
             ),
632 632
 
@@ -639,932 +639,932 @@  discard block
 block discarded – undo
639 639
             ),
640 640
         );
641 641
 
642
-		/**
643
-		 * Filter collection parameters for the invoices controller.
644
-		 *
645
-		 *
646
-		 * @since 1.0.13
647
-		 *
648
-		 * @param array        $query_params JSON Schema-formatted collection parameters.
649
-		 */
650
-		return apply_filters( "wpinv_rest_invoices_collection_params", $query_params );
651
-	}
642
+        /**
643
+         * Filter collection parameters for the invoices controller.
644
+         *
645
+         *
646
+         * @since 1.0.13
647
+         *
648
+         * @param array        $query_params JSON Schema-formatted collection parameters.
649
+         */
650
+        return apply_filters( "wpinv_rest_invoices_collection_params", $query_params );
651
+    }
652 652
 	
653
-	/**
654
-	 * Retrieves the request query params for the invoices collection.
655
-	 *
656
-	 * @since 1.0.15
657
-	 * @param WP_REST_Request $request Full details about the request.
658
-	 * @return array Request collection parameters.
659
-	 */
660
-	public function get_request_collection_params( $request ) {
653
+    /**
654
+     * Retrieves the request query params for the invoices collection.
655
+     *
656
+     * @since 1.0.15
657
+     * @param WP_REST_Request $request Full details about the request.
658
+     * @return array Request collection parameters.
659
+     */
660
+    public function get_request_collection_params( $request ) {
661 661
 		
662
-		// Retrieve the list of registered invoice query parameters.
663
-		$registered = $this->get_collection_params();
662
+        // Retrieve the list of registered invoice query parameters.
663
+        $registered = $this->get_collection_params();
664 664
 
665
-		// Default args
666
-		$args       = array(
665
+        // Default args
666
+        $args       = array(
667 667
             'status'                => $this->get_post_statuses(),
668 668
             'user'                  => null,
669 669
             'exclude_users'  	    => array(),
670
-			'before_date'           => null,
670
+            'before_date'           => null,
671 671
             'meta_key'              => null,
672 672
             'meta_compare_key'      => '=',
673 673
             'meta_value'            => null,
674 674
             'meta_compare'          => '=',
675
-			'meta_value_num'        => null,
675
+            'meta_value_num'        => null,
676 676
             'after_date'            => null,
677 677
             'limit'                 => (int) get_option( 'posts_per_page' ),
678
-			'page'     				=> 1,
679
-			'include'				=> array(),
678
+            'page'     				=> 1,
679
+            'include'				=> array(),
680 680
             'exclude'  				=> array(),
681 681
             'orderby'  		  		=> 'date',
682 682
             'order'    				=> 'DESC',
683
-		);
683
+        );
684 684
 
685
-		// Add any params from the requests.
686
-		foreach ( array_keys( $registered ) as $key ) {
685
+        // Add any params from the requests.
686
+        foreach ( array_keys( $registered ) as $key ) {
687 687
             if ( isset( $request[ $key] ) ) {
688 688
                 $args[ $key ] = $request[ $key];
689 689
             }
690 690
         }
691 691
 		
692
-		/**
693
-		 * Filters the requests collection parameters for the invoices controller.
694
-		 *
695
-		 *
696
-		 * @since 1.0.15
697
-		 *
698
-		 * @param array           $args    Request query args.
699
-		 * @param WP_REST_Request $request Full details about the request.
700
-		 */
701
-		return apply_filters( "wpinv_rest_invoices_collection_request_params", $args, $request );
702
-	}
692
+        /**
693
+         * Filters the requests collection parameters for the invoices controller.
694
+         *
695
+         *
696
+         * @since 1.0.15
697
+         *
698
+         * @param array           $args    Request query args.
699
+         * @param WP_REST_Request $request Full details about the request.
700
+         */
701
+        return apply_filters( "wpinv_rest_invoices_collection_request_params", $args, $request );
702
+    }
703 703
 	
704
-	/**
705
-	 * Retrieves the WP_Query params for the invoices collection.
706
-	 *
707
-	 * @since 1.0.15
708
-	 * @param array           $args Request args.
709
-	 * @param WP_REST_Request $request Full details about the request.
710
-	 * @return array WP_Query parameters.
711
-	 */
712
-	public function get_collection_wp_query_params( $args, $request ) {
704
+    /**
705
+     * Retrieves the WP_Query params for the invoices collection.
706
+     *
707
+     * @since 1.0.15
708
+     * @param array           $args Request args.
709
+     * @param WP_REST_Request $request Full details about the request.
710
+     * @return array WP_Query parameters.
711
+     */
712
+    public function get_collection_wp_query_params( $args, $request ) {
713 713
 		
714
-		// Prepare the parameters.
715
-		$wp_query_args = array(
716
-			'post_type'        => $this->post_type,
717
-			'post_status'      => $args['status'],
718
-			'author'           => $args['user'],
719
-			'author__not_in'   => $args['exclude_users'],
720
-			'posts_per_page'   => $args['limit'],
721
-			'paged'            => $args['page'],
722
-			'meta_key'         => $args['meta_key'],
723
-			'meta_compare_key' => $args['meta_compare_key'],
724
-			'meta_value'       => $args['meta_value'],
725
-			'meta_compare'     => $args['meta_compare'],
726
-			'meta_value_num'   => $args['meta_value_num'],
727
-			'post__in'         => $args['include'],
728
-			'post__in'         => $args['exclude'],
729
-			'date_query'       => array( array() ),
730
-			'fields'           => 'ids',
731
-			'orderby'          => $args['orderby'],
732
-			'order'            => $args['order'],
733
-		);
734
-
735
-		// Only admins can view other user's invoices.
736
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
737
-			$wp_query_args['author'] = get_current_user_id();
738
-		}
739
-
740
-		// No date specific params provided.
741
-		if ( empty( $args['before_date'] ) && empty( $args['after_date'] ) ) {
742
-			unset( $wp_query_args['date_query'] );
743
-		}
744
-
745
-		if ( ! empty( $args['before_date'] ) ) {
746
-			$wp_query_args['date_query'][0]['before'] = $args['before_date'];
747
-		}
748
-
749
-		if ( ! empty( $args['after_date'] ) ) {
750
-			$wp_query_args['date_query'][0]['after'] = $args['after_date'];
751
-		}
752
-
753
-		// Remove empty variables.
754
-		$wp_query_args = array_filter( $wp_query_args );
755
-
756
-		// This can be zero.
757
-		if ( ! is_null( $args['meta_value_num'] ) ) {
758
-			$wp_query_args['meta_value_num'] = $args['meta_value_num'];
759
-		}
714
+        // Prepare the parameters.
715
+        $wp_query_args = array(
716
+            'post_type'        => $this->post_type,
717
+            'post_status'      => $args['status'],
718
+            'author'           => $args['user'],
719
+            'author__not_in'   => $args['exclude_users'],
720
+            'posts_per_page'   => $args['limit'],
721
+            'paged'            => $args['page'],
722
+            'meta_key'         => $args['meta_key'],
723
+            'meta_compare_key' => $args['meta_compare_key'],
724
+            'meta_value'       => $args['meta_value'],
725
+            'meta_compare'     => $args['meta_compare'],
726
+            'meta_value_num'   => $args['meta_value_num'],
727
+            'post__in'         => $args['include'],
728
+            'post__in'         => $args['exclude'],
729
+            'date_query'       => array( array() ),
730
+            'fields'           => 'ids',
731
+            'orderby'          => $args['orderby'],
732
+            'order'            => $args['order'],
733
+        );
734
+
735
+        // Only admins can view other user's invoices.
736
+        if ( ! wpinv_current_user_can_manage_invoicing() ) {
737
+            $wp_query_args['author'] = get_current_user_id();
738
+        }
739
+
740
+        // No date specific params provided.
741
+        if ( empty( $args['before_date'] ) && empty( $args['after_date'] ) ) {
742
+            unset( $wp_query_args['date_query'] );
743
+        }
744
+
745
+        if ( ! empty( $args['before_date'] ) ) {
746
+            $wp_query_args['date_query'][0]['before'] = $args['before_date'];
747
+        }
748
+
749
+        if ( ! empty( $args['after_date'] ) ) {
750
+            $wp_query_args['date_query'][0]['after'] = $args['after_date'];
751
+        }
752
+
753
+        // Remove empty variables.
754
+        $wp_query_args = array_filter( $wp_query_args );
755
+
756
+        // This can be zero.
757
+        if ( ! is_null( $args['meta_value_num'] ) ) {
758
+            $wp_query_args['meta_value_num'] = $args['meta_value_num'];
759
+        }
760 760
 		
761
-		/**
762
-		 * Filters the invoices collection WP_Query parameters for the invoices controller.
763
-		 *
764
-		 *
765
-		 * @since 1.0.15
766
-		 *
767
-		 * @param array           $args          Request args.
768
-		 * @param array           $wp_query_args Generated WP_Query args args.
769
-		 * @param WP_REST_Request $request       Full details about the request.
770
-		 */
771
-		return apply_filters( "wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request );
761
+        /**
762
+         * Filters the invoices collection WP_Query parameters for the invoices controller.
763
+         *
764
+         *
765
+         * @since 1.0.15
766
+         *
767
+         * @param array           $args          Request args.
768
+         * @param array           $wp_query_args Generated WP_Query args args.
769
+         * @param WP_REST_Request $request       Full details about the request.
770
+         */
771
+        return apply_filters( "wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request );
772 772
     }
773 773
     
774 774
     /**
775
-	 * Checks if a given post type can be viewed or managed.
776
-	 *
777
-	 * @since 1.0.13
778
-	 *
779
-	 * @param object|string $post_type Post type name or object.
780
-	 * @return bool Whether the post type is allowed in REST.
781
-	 */
782
-	protected function check_is_post_type_allowed( $post_type ) {
783
-		return true;
784
-	}
785
-
786
-	/**
787
-	 * Prepares a single invoice for create or update.
788
-	 *
789
-	 * @since 1.0.13
790
-	 *
791
-	 * @param WP_REST_Request $request Request object.
792
-	 * @return array|WP_Error Invoice Properties or WP_Error.
793
-	 */
794
-	protected function prepare_item_for_database( $request ) {
795
-		$prepared_invoice = new stdClass();
796
-
797
-		// Post ID.
798
-		if ( isset( $request['id'] ) ) {
799
-			$existing_invoice = $this->get_post( $request['id'] );
800
-			if ( is_wp_error( $existing_invoice ) ) {
801
-				return $existing_invoice;
802
-			}
803
-
804
-			$prepared_invoice->ID 		  = $existing_invoice->ID;
805
-			$prepared_invoice->invoice_id = $existing_invoice->ID;
806
-		}
807
-
808
-		$schema = $this->get_item_schema();
809
-
810
-		// Invoice owner.
811
-		if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) {
812
-			$prepared_invoice->user_id = (int) $request['user_id'];
813
-		}
814
-
815
-		// Cart details.
816
-		if ( ! empty( $schema['properties']['cart_details'] ) && isset( $request['cart_details'] ) ) {
817
-			$prepared_invoice->cart_details = (array) $request['cart_details'];
818
-		}
819
-
820
-		// Invoice status.
821
-		if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) {
822
-
823
-			if ( in_array( $request['status'], $this->get_post_statuses(), true ) ) {
824
-				$prepared_invoice->status = $request['status'];
825
-			}
826
-
827
-		}
828
-
829
-		// User info
830
-		if ( ! empty( $schema['properties']['user_info'] ) && isset( $request['user_info'] ) ) {
831
-			$prepared_invoice->user_info = array();
832
-			$user_info = (array) $request['user_info'];
833
-
834
-			foreach( $user_info as $prop => $value ) {
835
-
836
-				if ( ! empty( $schema['properties']['user_info']['properties'][$prop] ) ) {
837
-
838
-					$prepared_invoice->user_info[$prop] = $value;
775
+     * Checks if a given post type can be viewed or managed.
776
+     *
777
+     * @since 1.0.13
778
+     *
779
+     * @param object|string $post_type Post type name or object.
780
+     * @return bool Whether the post type is allowed in REST.
781
+     */
782
+    protected function check_is_post_type_allowed( $post_type ) {
783
+        return true;
784
+    }
785
+
786
+    /**
787
+     * Prepares a single invoice for create or update.
788
+     *
789
+     * @since 1.0.13
790
+     *
791
+     * @param WP_REST_Request $request Request object.
792
+     * @return array|WP_Error Invoice Properties or WP_Error.
793
+     */
794
+    protected function prepare_item_for_database( $request ) {
795
+        $prepared_invoice = new stdClass();
796
+
797
+        // Post ID.
798
+        if ( isset( $request['id'] ) ) {
799
+            $existing_invoice = $this->get_post( $request['id'] );
800
+            if ( is_wp_error( $existing_invoice ) ) {
801
+                return $existing_invoice;
802
+            }
803
+
804
+            $prepared_invoice->ID 		  = $existing_invoice->ID;
805
+            $prepared_invoice->invoice_id = $existing_invoice->ID;
806
+        }
807
+
808
+        $schema = $this->get_item_schema();
809
+
810
+        // Invoice owner.
811
+        if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) {
812
+            $prepared_invoice->user_id = (int) $request['user_id'];
813
+        }
814
+
815
+        // Cart details.
816
+        if ( ! empty( $schema['properties']['cart_details'] ) && isset( $request['cart_details'] ) ) {
817
+            $prepared_invoice->cart_details = (array) $request['cart_details'];
818
+        }
819
+
820
+        // Invoice status.
821
+        if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) {
822
+
823
+            if ( in_array( $request['status'], $this->get_post_statuses(), true ) ) {
824
+                $prepared_invoice->status = $request['status'];
825
+            }
826
+
827
+        }
828
+
829
+        // User info
830
+        if ( ! empty( $schema['properties']['user_info'] ) && isset( $request['user_info'] ) ) {
831
+            $prepared_invoice->user_info = array();
832
+            $user_info = (array) $request['user_info'];
833
+
834
+            foreach( $user_info as $prop => $value ) {
835
+
836
+                if ( ! empty( $schema['properties']['user_info']['properties'][$prop] ) ) {
837
+
838
+                    $prepared_invoice->user_info[$prop] = $value;
839 839
 		
840
-				}
840
+                }
841 841
 
842
-			}
842
+            }
843 843
 
844
-		}
844
+        }
845 845
 
846
-		// IP
847
-		if ( ! empty( $schema['properties']['ip'] ) && isset( $request['ip'] ) ) {
848
-			$prepared_invoice->ip = $request['ip'];
849
-		}
846
+        // IP
847
+        if ( ! empty( $schema['properties']['ip'] ) && isset( $request['ip'] ) ) {
848
+            $prepared_invoice->ip = $request['ip'];
849
+        }
850 850
 
851
-		// Payment details
852
-		$prepared_invoice->payment_details = array();
851
+        // Payment details
852
+        $prepared_invoice->payment_details = array();
853 853
 
854
-		if ( ! empty( $schema['properties']['gateway'] ) && isset( $request['gateway'] ) ) {
855
-			$prepared_invoice->payment_details['gateway'] = $request['gateway'];
856
-		}
854
+        if ( ! empty( $schema['properties']['gateway'] ) && isset( $request['gateway'] ) ) {
855
+            $prepared_invoice->payment_details['gateway'] = $request['gateway'];
856
+        }
857 857
 
858
-		if ( ! empty( $schema['properties']['gateway_title'] ) && isset( $request['gateway_title'] ) ) {
859
-			$prepared_invoice->payment_details['gateway_title'] = $request['gateway_title'];
860
-		}
858
+        if ( ! empty( $schema['properties']['gateway_title'] ) && isset( $request['gateway_title'] ) ) {
859
+            $prepared_invoice->payment_details['gateway_title'] = $request['gateway_title'];
860
+        }
861 861
 
862
-		if ( ! empty( $schema['properties']['currency'] ) && isset( $request['currency'] ) ) {
863
-			$prepared_invoice->payment_details['currency'] = $request['currency'];
864
-		}
862
+        if ( ! empty( $schema['properties']['currency'] ) && isset( $request['currency'] ) ) {
863
+            $prepared_invoice->payment_details['currency'] = $request['currency'];
864
+        }
865 865
 
866
-		if ( ! empty( $schema['properties']['transaction_id'] ) && isset( $request['transaction_id'] ) ) {
867
-			$prepared_invoice->payment_details['transaction_id'] = $request['transaction_id'];
868
-		}
866
+        if ( ! empty( $schema['properties']['transaction_id'] ) && isset( $request['transaction_id'] ) ) {
867
+            $prepared_invoice->payment_details['transaction_id'] = $request['transaction_id'];
868
+        }
869 869
 
870
-		// Dates
871
-		if ( ! empty( $schema['properties']['date'] ) && isset( $request['date'] ) ) {
872
-			$post_date = rest_get_date_with_gmt( $request['date'] );
870
+        // Dates
871
+        if ( ! empty( $schema['properties']['date'] ) && isset( $request['date'] ) ) {
872
+            $post_date = rest_get_date_with_gmt( $request['date'] );
873 873
 
874
-			if ( ! empty( $post_date ) ) {
875
-				$prepared_invoice->post_date = $post_date[0];
876
-			}
874
+            if ( ! empty( $post_date ) ) {
875
+                $prepared_invoice->post_date = $post_date[0];
876
+            }
877 877
 			
878
-		}
878
+        }
879 879
 
880
-		if ( ! empty( $schema['properties']['due_date'] ) && isset( $request['due_date'] ) ) {
881
-			$due_date = rest_get_date_with_gmt( $request['due_date'] );
880
+        if ( ! empty( $schema['properties']['due_date'] ) && isset( $request['due_date'] ) ) {
881
+            $due_date = rest_get_date_with_gmt( $request['due_date'] );
882 882
 
883
-			if ( ! empty( $due_date ) ) {
884
-				$prepared_invoice->due_date = $due_date[0];
885
-			}
883
+            if ( ! empty( $due_date ) ) {
884
+                $prepared_invoice->due_date = $due_date[0];
885
+            }
886 886
 
887
-		}
887
+        }
888 888
 
889
-		if ( ! empty( $schema['properties']['valid_until'] ) && isset( $request['valid_until'] ) ) {
889
+        if ( ! empty( $schema['properties']['valid_until'] ) && isset( $request['valid_until'] ) ) {
890 890
 
891
-			if ( ! empty( $request['valid_until'] ) ) {
892
-				$prepared_invoice->valid_until = gmdate( 'Y-m-d', strtotime( $request['valid_until'] ) );
893
-			} else {
894
-				$prepared_invoice->valid_until = '';
895
-			}
891
+            if ( ! empty( $request['valid_until'] ) ) {
892
+                $prepared_invoice->valid_until = gmdate( 'Y-m-d', strtotime( $request['valid_until'] ) );
893
+            } else {
894
+                $prepared_invoice->valid_until = '';
895
+            }
896 896
 
897
-		}
897
+        }
898 898
 
899
-		$invoice_data = (array) wp_unslash( $prepared_invoice );
899
+        $invoice_data = (array) wp_unslash( $prepared_invoice );
900 900
 
901
-		/**
902
-		 * Filters an invoice before it is inserted via the REST API.
903
-		 *
904
-		 * @since 1.0.13
905
-		 *
906
-		 * @param array        $invoice_data An array of invoice data
907
-		 * @param WP_REST_Request $request       Request object.
908
-		 */
909
-		return apply_filters( "wpinv_rest_pre_insert_invoice", $invoice_data, $request );
901
+        /**
902
+         * Filters an invoice before it is inserted via the REST API.
903
+         *
904
+         * @since 1.0.13
905
+         *
906
+         * @param array        $invoice_data An array of invoice data
907
+         * @param WP_REST_Request $request       Request object.
908
+         */
909
+        return apply_filters( "wpinv_rest_pre_insert_invoice", $invoice_data, $request );
910 910
 
911
-	}
911
+    }
912 912
 
913
-	/**
914
-	 * Prepares a single invoice output for response.
915
-	 *
916
-	 * @since 1.0.13
917
-	 *
918
-	 * @param WPInv_Invoice   $invoice    Invoice object.
919
-	 * @param WP_REST_Request $request Request object.
920
-	 * @return WP_REST_Response Response object.
921
-	 */
922
-	public function prepare_item_for_response( $invoice, $request ) {
913
+    /**
914
+     * Prepares a single invoice output for response.
915
+     *
916
+     * @since 1.0.13
917
+     *
918
+     * @param WPInv_Invoice   $invoice    Invoice object.
919
+     * @param WP_REST_Request $request Request object.
920
+     * @return WP_REST_Response Response object.
921
+     */
922
+    public function prepare_item_for_response( $invoice, $request ) {
923 923
 
924
-		$GLOBALS['post'] = get_post( $invoice->ID );
924
+        $GLOBALS['post'] = get_post( $invoice->ID );
925 925
 
926
-		setup_postdata( $invoice->ID );
926
+        setup_postdata( $invoice->ID );
927 927
 
928
-		// Fetch the fields to include in this response.
929
-		$fields = $this->get_fields_for_response( $request );
928
+        // Fetch the fields to include in this response.
929
+        $fields = $this->get_fields_for_response( $request );
930 930
 
931
-		// Base fields for every invoice.
932
-		$data = array();
931
+        // Base fields for every invoice.
932
+        $data = array();
933 933
 
934
-		// Set up ID
935
-		if ( rest_is_field_included( 'id', $fields ) ) {
936
-			$data['id'] = $invoice->ID;
937
-		}
934
+        // Set up ID
935
+        if ( rest_is_field_included( 'id', $fields ) ) {
936
+            $data['id'] = $invoice->ID;
937
+        }
938 938
 
939 939
 
940
-		// Basic properties
941
-		$invoice_properties = array(
942
-			'title', 'email', 'ip', 
943
-			'key', 'number', 'transaction_id', 'mode',
944
-			'gateway', 'gateway_title',
945
-			'total', 'discount', 'discount_code', 
946
-			'tax', 'fees_total', 'subtotal', 'currency',
947
-			'status', 'status_nicename', 'post_type'
948
-		);
949
-
950
-		foreach( $invoice_properties as $property ) {
940
+        // Basic properties
941
+        $invoice_properties = array(
942
+            'title', 'email', 'ip', 
943
+            'key', 'number', 'transaction_id', 'mode',
944
+            'gateway', 'gateway_title',
945
+            'total', 'discount', 'discount_code', 
946
+            'tax', 'fees_total', 'subtotal', 'currency',
947
+            'status', 'status_nicename', 'post_type'
948
+        );
951 949
 
952
-			if ( rest_is_field_included( $property, $fields ) ) {
953
-				$data[$property] = $invoice->get( $property );
954
-			}
955
-
956
-		}
957
-
958
-		// Valid until
959
-		if ( rest_is_field_included( 'valid_until', $fields ) && $this->post_type === 'wpi_quote' ) {
960
-			$data['valid_until'] = get_post_meta( $invoice->ID, 'wpinv_quote_valid_until', true );
961
-		}
962
-
963
-		// Cart details
964
-		if ( rest_is_field_included( 'cart_details', $fields ) ) {
965
-			$data['cart_details'] = $invoice->get( 'cart_details' );
966
-		}
967
-
968
-		//Dates
969
-		$invoice_properties = array( 'date', 'due_date', 'completed_date' );
970
-
971
-		foreach( $invoice_properties as $property ) {
972
-
973
-			if ( rest_is_field_included( $property, $fields ) ) {
974
-				$data[$property] = $this->prepare_date_response( '0000-00-00 00:00:00', $invoice->get( $property ) );
975
-			}
976
-
977
-		}
978
-
979
-		// User id
980
-		if ( rest_is_field_included( 'user_id', $fields ) ) {
981
-			$data['user_id'] = (int) $invoice->get( 'user_id' );
982
-		}
983
-
984
-		// User info
985
-		$user_info = array( 'first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone' );
986
-
987
-		foreach( $user_info as $property ) {
988
-
989
-			if ( rest_is_field_included( "user_info.$property", $fields ) ) {
990
-				$data['user_info'][$property] = $invoice->get( $property );
991
-			}
992
-
993
-		}
994
-
995
-		// Slug
996
-		if ( rest_is_field_included( 'slug', $fields ) ) {
997
-			$data['slug'] = $invoice->get( 'post_name' );
998
-		}
999
-
1000
-		// View invoice link
1001
-		if ( rest_is_field_included( 'link', $fields ) ) {
1002
-			$data['link'] = esc_url( $invoice->get_view_url() );
1003
-		}
1004
-
1005
-
1006
-		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
1007
-		$data    = $this->add_additional_fields_to_object( $data, $request );
1008
-		$data    = $this->filter_response_by_context( $data, $context );
1009
-
1010
-		// Wrap the data in a response object.
1011
-		$response = rest_ensure_response( $data );
1012
-
1013
-		$links = $this->prepare_links( $invoice );
1014
-		$response->add_links( $links );
1015
-
1016
-		if ( ! empty( $links['self']['href'] ) ) {
1017
-			$actions = $this->get_available_actions( $invoice, $request );
1018
-
1019
-			$self = $links['self']['href'];
1020
-
1021
-			foreach ( $actions as $rel ) {
1022
-				$response->add_link( $rel, $self );
1023
-			}
1024
-		}
1025
-
1026
-		/**
1027
-		 * Filters the invoice data for a response.
1028
-		 *
1029
-		 * @since 1.0.13
1030
-		 *
1031
-		 * @param WP_REST_Response $response The response object.
1032
-		 * @param WPInv_Invoice    $invoice  The invoice object.
1033
-		 * @param WP_REST_Request  $request  Request object.
1034
-		 */
1035
-		return apply_filters( "wpinv_rest_prepare_invoice", $response, $invoice, $request );
1036
-	}
1037
-
1038
-	/**
1039
-	 * Gets an array of fields to be included on the response.
1040
-	 *
1041
-	 * Included fields are based on item schema and `_fields=` request argument.
1042
-	 *
1043
-	 * @since 1.0.13
1044
-	 *
1045
-	 * @param WP_REST_Request $request Full details about the request.
1046
-	 * @return array Fields to be included in the response.
1047
-	 */
1048
-	public function get_fields_for_response( $request ) {
1049
-		$schema     = $this->get_item_schema();
1050
-		$properties = isset( $schema['properties'] ) ? $schema['properties'] : array();
1051
-
1052
-		$additional_fields = $this->get_additional_fields();
1053
-		foreach ( $additional_fields as $field_name => $field_options ) {
1054
-			// For back-compat, include any field with an empty schema
1055
-			// because it won't be present in $this->get_item_schema().
1056
-			if ( is_null( $field_options['schema'] ) ) {
1057
-				$properties[ $field_name ] = $field_options;
1058
-			}
1059
-		}
1060
-
1061
-		// Exclude fields that specify a different context than the request context.
1062
-		$context = $request['context'];
1063
-		if ( $context ) {
1064
-			foreach ( $properties as $name => $options ) {
1065
-				if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) {
1066
-					unset( $properties[ $name ] );
1067
-				}
1068
-			}
1069
-		}
1070
-
1071
-		$fields = array_keys( $properties );
1072
-
1073
-		if ( ! isset( $request['_fields'] ) ) {
1074
-			return $fields;
1075
-		}
1076
-		$requested_fields = wpinv_parse_list( $request['_fields'] );
1077
-		if ( 0 === count( $requested_fields ) ) {
1078
-			return $fields;
1079
-		}
1080
-		// Trim off outside whitespace from the comma delimited list.
1081
-		$requested_fields = array_map( 'trim', $requested_fields );
1082
-		// Always persist 'id', because it can be needed for add_additional_fields_to_object().
1083
-		if ( in_array( 'id', $fields, true ) ) {
1084
-			$requested_fields[] = 'id';
1085
-		}
1086
-		// Return the list of all requested fields which appear in the schema.
1087
-		return array_reduce(
1088
-			$requested_fields,
1089
-			function( $response_fields, $field ) use ( $fields ) {
1090
-				if ( in_array( $field, $fields, true ) ) {
1091
-					$response_fields[] = $field;
1092
-					return $response_fields;
1093
-				}
1094
-				// Check for nested fields if $field is not a direct match.
1095
-				$nested_fields = explode( '.', $field );
1096
-				// A nested field is included so long as its top-level property is
1097
-				// present in the schema.
1098
-				if ( in_array( $nested_fields[0], $fields, true ) ) {
1099
-					$response_fields[] = $field;
1100
-				}
1101
-				return $response_fields;
1102
-			},
1103
-			array()
1104
-		);
1105
-	}
1106
-
1107
-	/**
1108
-	 * Retrieves the invoice's schema, conforming to JSON Schema.
1109
-	 *
1110
-	 * @since 1.0.13
1111
-	 *
1112
-	 * @return array Invoice schema data.
1113
-	 */
1114
-	public function get_item_schema() {
1115
-
1116
-		// Maybe retrieve the schema from cache.
1117
-		if ( $this->schema ) {
1118
-			return $this->add_additional_fields_schema( $this->schema );
1119
-		}
1120
-
1121
-		$schema = array(
1122
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
1123
-			'title'      => $this->post_type,
1124
-			'type'       => 'object',
1125
-
1126
-			// Base properties for every Invoice.
1127
-			'properties' 		  => array(
1128
-
1129
-				'title'			  => array(
1130
-					'description' => __( 'The title for the invoice.', 'invoicing' ),
1131
-					'type'        => 'string',
1132
-					'context'     => array( 'view', 'edit', 'embed' ),
1133
-					'readonly'    => true,
1134
-				),
1135
-
1136
-				'user_id'		  => array(
1137
-					'description' => __( 'The ID of the owner of the invoice.', 'invoicing' ),
1138
-					'type'        => 'integer',
1139
-					'context'     => array( 'view', 'edit', 'embed' ),
1140
-				),
1141
-
1142
-				'email'		  	  => array(
1143
-					'description' => __( 'The email of the owner of the invoice.', 'invoicing' ),
1144
-					'type'        => 'string',
1145
-					'context'     => array( 'view', 'edit', 'embed' ),
1146
-					'readonly'    => true,
1147
-				),
1148
-
1149
-				'ip'			  => array(
1150
-					'description' => __( 'The IP of the owner of the invoice.', 'invoicing' ),
1151
-					'type'        => 'string',
1152
-					'context'     => array( 'view', 'edit', 'embed' ),
1153
-				),
1154
-
1155
-				'user_info'       => array(
1156
-					'description' => __( 'Information about the owner of the invoice.', 'invoicing' ),
1157
-					'type'        => 'object',
1158
-					'context'     => array( 'view', 'edit', 'embed' ),
1159
-					'properties'  => array(
1160
-
1161
-						'first_name'      => array(
1162
-							'description' => __( 'The first name of the owner of the invoice.', 'invoicing' ),
1163
-							'type'        => 'string',
1164
-							'context'     => array( 'view', 'edit', 'embed' ),
1165
-						),
1166
-
1167
-						'last_name'       => array(
1168
-							'description' => __( 'The last name of the owner of the invoice.', 'invoicing' ),
1169
-							'type'        => 'string',
1170
-							'context'     => array( 'view', 'edit', 'embed' ),
1171
-						),
1172
-
1173
-						'company'         => array(
1174
-							'description' => __( 'The company of the owner of the invoice.', 'invoicing' ),
1175
-							'type'        => 'string',
1176
-							'context'     => array( 'view', 'edit', 'embed' ),
1177
-						),
1178
-
1179
-						'vat_number'      => array(
1180
-							'description' => __( 'The VAT number of the owner of the invoice.', 'invoicing' ),
1181
-							'type'        => 'string',
1182
-							'context'     => array( 'view', 'edit', 'embed' ),
1183
-						),
1184
-
1185
-						'vat_rate'        => array(
1186
-							'description' => __( 'The VAT rate applied on the invoice.', 'invoicing' ),
1187
-							'type'        => 'string',
1188
-							'context'     => array( 'view', 'edit', 'embed' ),
1189
-						),
1190
-
1191
-						'address'        => array(
1192
-							'description' => __( 'The address of the invoice owner.', 'invoicing' ),
1193
-							'type'        => 'string',
1194
-							'context'     => array( 'view', 'edit', 'embed' ),
1195
-						),
1196
-
1197
-						'city'            => array(
1198
-							'description' => __( 'The city of the invoice owner.', 'invoicing' ),
1199
-							'type'        => 'string',
1200
-							'context'     => array( 'view', 'edit', 'embed' ),
1201
-						),
1202
-
1203
-						'country'         => array(
1204
-							'description' => __( 'The country of the invoice owner.', 'invoicing' ),
1205
-							'type'        => 'string',
1206
-							'context'     => array( 'view', 'edit', 'embed' ),
1207
-						),
1208
-
1209
-						'state'           => array(
1210
-							'description' => __( 'The state of the invoice owner.', 'invoicing' ),
1211
-							'type'        => 'string',
1212
-							'context'     => array( 'view', 'edit', 'embed' ),
1213
-						),
1214
-
1215
-						'zip'             => array(
1216
-							'description' => __( 'The zip code of the invoice owner.', 'invoicing' ),
1217
-							'type'        => 'string',
1218
-							'context'     => array( 'view', 'edit', 'embed' ),
1219
-						),
1220
-
1221
-						'phone'             => array(
1222
-							'description' => __( 'The phone number of the invoice owner.', 'invoicing' ),
1223
-							'type'        => 'string',
1224
-							'context'     => array( 'view', 'edit', 'embed' ),
1225
-						),
1226
-					),
1227
-				),
1228
-
1229
-				'id'           => array(
1230
-					'description' => __( 'Unique identifier for the invoice.', 'invoicing' ),
1231
-					'type'        => 'integer',
1232
-					'context'     => array( 'view', 'edit', 'embed' ),
1233
-					'readonly'    => true,
1234
-				),
1235
-
1236
-				'key'			  => array(
1237
-					'description' => __( 'A unique key for the invoice.', 'invoicing' ),
1238
-					'type'        => 'string',
1239
-					'context'     => array( 'view', 'edit', 'embed' ),
1240
-					'readonly'    => true,
1241
-				),
1242
-
1243
-				'number'		  => array(
1244
-					'description' => __( 'The invoice number.', 'invoicing' ),
1245
-					'type'        => 'string',
1246
-					'context'     => array( 'view', 'edit', 'embed' ),
1247
-					'readonly'    => true,
1248
-				),
1249
-
1250
-				'transaction_id'  => array(
1251
-					'description' => __( 'The transaction id of the invoice.', 'invoicing' ),
1252
-					'type'        => 'string',
1253
-					'context'     => array( 'view', 'edit', 'embed' ),
1254
-				),
1255
-
1256
-				'gateway'		  => array(
1257
-					'description' => __( 'The gateway used to process the invoice.', 'invoicing' ),
1258
-					'type'        => 'string',
1259
-					'context'     => array( 'view', 'edit', 'embed' ),
1260
-				),
1261
-
1262
-				'gateway_title'	  => array(
1263
-					'description' => __( 'The title of the gateway used to process the invoice.', 'invoicing' ),
1264
-					'type'        => 'string',
1265
-					'context'     => array( 'view', 'edit', 'embed' ),
1266
-				),
1267
-
1268
-				'total'	  		  => array(
1269
-					'description' => __( 'The total amount of the invoice.', 'invoicing' ),
1270
-					'type'        => 'number',
1271
-					'context'     => array( 'view', 'edit', 'embed' ),
1272
-					'readonly'    => true,
1273
-				),
1274
-
1275
-				'discount'		  => array(
1276
-					'description' => __( 'The discount applied to the invoice.', 'invoicing' ),
1277
-					'type'        => 'number',
1278
-					'context'     => array( 'view', 'edit', 'embed' ),
1279
-					'readonly'    => true,
1280
-				),
1281
-
1282
-				'discount_code'	  => array(
1283
-					'description' => __( 'The discount code applied to the invoice.', 'invoicing' ),
1284
-					'type'        => 'string',
1285
-					'context'     => array( 'view', 'edit', 'embed' ),
1286
-					'readonly'    => true,
1287
-				),
1288
-
1289
-				'tax'	  		  => array(
1290
-					'description' => __( 'The tax applied to the invoice.', 'invoicing' ),
1291
-					'type'        => 'number',
1292
-					'context'     => array( 'view', 'edit', 'embed' ),
1293
-					'readonly'    => true,
1294
-				),
1295
-
1296
-				'fees_total'	  => array(
1297
-					'description' => __( 'The total fees applied to the invoice.', 'invoicing' ),
1298
-					'type'        => 'number',
1299
-					'context'     => array( 'view', 'edit', 'embed' ),
1300
-					'readonly'    => true,
1301
-				),
1302
-
1303
-				'subtotal'	  	  => array(
1304
-					'description' => __( 'The sub-total for the invoice.', 'invoicing' ),
1305
-					'type'        => 'number',
1306
-					'context'     => array( 'view', 'edit', 'embed' ),
1307
-					'readonly'    => true,
1308
-				),
1309
-
1310
-				'currency'	  	  => array(
1311
-					'description' => __( 'The currency used to process the invoice.', 'invoicing' ),
1312
-					'type'        => 'string',
1313
-					'context'     => array( 'view', 'edit', 'embed' ),
1314
-				),
1315
-
1316
-				'cart_details'	  => array(
1317
-					'description' => __( 'The cart details for invoice.', 'invoicing' ),
1318
-					'type'        => 'array',
1319
-					'context'     => array( 'view', 'edit', 'embed' ),
1320
-					'required'	  => true,
1321
-				),
1322
-
1323
-				'date'         => array(
1324
-					'description' => __( "The date the invoice was published, in the site's timezone.", 'invoicing' ),
1325
-					'type'        => array( 'string', 'null' ),
1326
-					'format'      => 'date-time',
1327
-					'context'     => array( 'view', 'edit', 'embed' ),
1328
-				),
1329
-
1330
-				'due_date'     => array(
1331
-					'description' => __( 'The due date for the invoice.', 'invoicing' ),
1332
-					'type'        => array( 'string', 'null' ),
1333
-					'format'      => 'date-time',
1334
-					'context'     => array( 'view', 'edit', 'embed' ),
1335
-				),
1336
-
1337
-				'completed_date'  => array(
1338
-					'description' => __( 'The completed date for the invoice.', 'invoicing' ),
1339
-					'type'        => array( 'string', 'null' ),
1340
-					'format'      => 'date-time',
1341
-					'context'     => array( 'view', 'edit', 'embed' ),
1342
-					'readonly'    => true,
1343
-				),
950
+        foreach( $invoice_properties as $property ) {
951
+
952
+            if ( rest_is_field_included( $property, $fields ) ) {
953
+                $data[$property] = $invoice->get( $property );
954
+            }
955
+
956
+        }
957
+
958
+        // Valid until
959
+        if ( rest_is_field_included( 'valid_until', $fields ) && $this->post_type === 'wpi_quote' ) {
960
+            $data['valid_until'] = get_post_meta( $invoice->ID, 'wpinv_quote_valid_until', true );
961
+        }
962
+
963
+        // Cart details
964
+        if ( rest_is_field_included( 'cart_details', $fields ) ) {
965
+            $data['cart_details'] = $invoice->get( 'cart_details' );
966
+        }
967
+
968
+        //Dates
969
+        $invoice_properties = array( 'date', 'due_date', 'completed_date' );
970
+
971
+        foreach( $invoice_properties as $property ) {
972
+
973
+            if ( rest_is_field_included( $property, $fields ) ) {
974
+                $data[$property] = $this->prepare_date_response( '0000-00-00 00:00:00', $invoice->get( $property ) );
975
+            }
976
+
977
+        }
978
+
979
+        // User id
980
+        if ( rest_is_field_included( 'user_id', $fields ) ) {
981
+            $data['user_id'] = (int) $invoice->get( 'user_id' );
982
+        }
983
+
984
+        // User info
985
+        $user_info = array( 'first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone' );
986
+
987
+        foreach( $user_info as $property ) {
988
+
989
+            if ( rest_is_field_included( "user_info.$property", $fields ) ) {
990
+                $data['user_info'][$property] = $invoice->get( $property );
991
+            }
992
+
993
+        }
994
+
995
+        // Slug
996
+        if ( rest_is_field_included( 'slug', $fields ) ) {
997
+            $data['slug'] = $invoice->get( 'post_name' );
998
+        }
999
+
1000
+        // View invoice link
1001
+        if ( rest_is_field_included( 'link', $fields ) ) {
1002
+            $data['link'] = esc_url( $invoice->get_view_url() );
1003
+        }
1004
+
1005
+
1006
+        $context = ! empty( $request['context'] ) ? $request['context'] : 'view';
1007
+        $data    = $this->add_additional_fields_to_object( $data, $request );
1008
+        $data    = $this->filter_response_by_context( $data, $context );
1009
+
1010
+        // Wrap the data in a response object.
1011
+        $response = rest_ensure_response( $data );
1012
+
1013
+        $links = $this->prepare_links( $invoice );
1014
+        $response->add_links( $links );
1015
+
1016
+        if ( ! empty( $links['self']['href'] ) ) {
1017
+            $actions = $this->get_available_actions( $invoice, $request );
1018
+
1019
+            $self = $links['self']['href'];
1020
+
1021
+            foreach ( $actions as $rel ) {
1022
+                $response->add_link( $rel, $self );
1023
+            }
1024
+        }
1025
+
1026
+        /**
1027
+         * Filters the invoice data for a response.
1028
+         *
1029
+         * @since 1.0.13
1030
+         *
1031
+         * @param WP_REST_Response $response The response object.
1032
+         * @param WPInv_Invoice    $invoice  The invoice object.
1033
+         * @param WP_REST_Request  $request  Request object.
1034
+         */
1035
+        return apply_filters( "wpinv_rest_prepare_invoice", $response, $invoice, $request );
1036
+    }
1037
+
1038
+    /**
1039
+     * Gets an array of fields to be included on the response.
1040
+     *
1041
+     * Included fields are based on item schema and `_fields=` request argument.
1042
+     *
1043
+     * @since 1.0.13
1044
+     *
1045
+     * @param WP_REST_Request $request Full details about the request.
1046
+     * @return array Fields to be included in the response.
1047
+     */
1048
+    public function get_fields_for_response( $request ) {
1049
+        $schema     = $this->get_item_schema();
1050
+        $properties = isset( $schema['properties'] ) ? $schema['properties'] : array();
1051
+
1052
+        $additional_fields = $this->get_additional_fields();
1053
+        foreach ( $additional_fields as $field_name => $field_options ) {
1054
+            // For back-compat, include any field with an empty schema
1055
+            // because it won't be present in $this->get_item_schema().
1056
+            if ( is_null( $field_options['schema'] ) ) {
1057
+                $properties[ $field_name ] = $field_options;
1058
+            }
1059
+        }
1060
+
1061
+        // Exclude fields that specify a different context than the request context.
1062
+        $context = $request['context'];
1063
+        if ( $context ) {
1064
+            foreach ( $properties as $name => $options ) {
1065
+                if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) {
1066
+                    unset( $properties[ $name ] );
1067
+                }
1068
+            }
1069
+        }
1070
+
1071
+        $fields = array_keys( $properties );
1072
+
1073
+        if ( ! isset( $request['_fields'] ) ) {
1074
+            return $fields;
1075
+        }
1076
+        $requested_fields = wpinv_parse_list( $request['_fields'] );
1077
+        if ( 0 === count( $requested_fields ) ) {
1078
+            return $fields;
1079
+        }
1080
+        // Trim off outside whitespace from the comma delimited list.
1081
+        $requested_fields = array_map( 'trim', $requested_fields );
1082
+        // Always persist 'id', because it can be needed for add_additional_fields_to_object().
1083
+        if ( in_array( 'id', $fields, true ) ) {
1084
+            $requested_fields[] = 'id';
1085
+        }
1086
+        // Return the list of all requested fields which appear in the schema.
1087
+        return array_reduce(
1088
+            $requested_fields,
1089
+            function( $response_fields, $field ) use ( $fields ) {
1090
+                if ( in_array( $field, $fields, true ) ) {
1091
+                    $response_fields[] = $field;
1092
+                    return $response_fields;
1093
+                }
1094
+                // Check for nested fields if $field is not a direct match.
1095
+                $nested_fields = explode( '.', $field );
1096
+                // A nested field is included so long as its top-level property is
1097
+                // present in the schema.
1098
+                if ( in_array( $nested_fields[0], $fields, true ) ) {
1099
+                    $response_fields[] = $field;
1100
+                }
1101
+                return $response_fields;
1102
+            },
1103
+            array()
1104
+        );
1105
+    }
1106
+
1107
+    /**
1108
+     * Retrieves the invoice's schema, conforming to JSON Schema.
1109
+     *
1110
+     * @since 1.0.13
1111
+     *
1112
+     * @return array Invoice schema data.
1113
+     */
1114
+    public function get_item_schema() {
1115
+
1116
+        // Maybe retrieve the schema from cache.
1117
+        if ( $this->schema ) {
1118
+            return $this->add_additional_fields_schema( $this->schema );
1119
+        }
1120
+
1121
+        $schema = array(
1122
+            '$schema'    => 'http://json-schema.org/draft-04/schema#',
1123
+            'title'      => $this->post_type,
1124
+            'type'       => 'object',
1125
+
1126
+            // Base properties for every Invoice.
1127
+            'properties' 		  => array(
1128
+
1129
+                'title'			  => array(
1130
+                    'description' => __( 'The title for the invoice.', 'invoicing' ),
1131
+                    'type'        => 'string',
1132
+                    'context'     => array( 'view', 'edit', 'embed' ),
1133
+                    'readonly'    => true,
1134
+                ),
1135
+
1136
+                'user_id'		  => array(
1137
+                    'description' => __( 'The ID of the owner of the invoice.', 'invoicing' ),
1138
+                    'type'        => 'integer',
1139
+                    'context'     => array( 'view', 'edit', 'embed' ),
1140
+                ),
1141
+
1142
+                'email'		  	  => array(
1143
+                    'description' => __( 'The email of the owner of the invoice.', 'invoicing' ),
1144
+                    'type'        => 'string',
1145
+                    'context'     => array( 'view', 'edit', 'embed' ),
1146
+                    'readonly'    => true,
1147
+                ),
1148
+
1149
+                'ip'			  => array(
1150
+                    'description' => __( 'The IP of the owner of the invoice.', 'invoicing' ),
1151
+                    'type'        => 'string',
1152
+                    'context'     => array( 'view', 'edit', 'embed' ),
1153
+                ),
1154
+
1155
+                'user_info'       => array(
1156
+                    'description' => __( 'Information about the owner of the invoice.', 'invoicing' ),
1157
+                    'type'        => 'object',
1158
+                    'context'     => array( 'view', 'edit', 'embed' ),
1159
+                    'properties'  => array(
1160
+
1161
+                        'first_name'      => array(
1162
+                            'description' => __( 'The first name of the owner of the invoice.', 'invoicing' ),
1163
+                            'type'        => 'string',
1164
+                            'context'     => array( 'view', 'edit', 'embed' ),
1165
+                        ),
1166
+
1167
+                        'last_name'       => array(
1168
+                            'description' => __( 'The last name of the owner of the invoice.', 'invoicing' ),
1169
+                            'type'        => 'string',
1170
+                            'context'     => array( 'view', 'edit', 'embed' ),
1171
+                        ),
1172
+
1173
+                        'company'         => array(
1174
+                            'description' => __( 'The company of the owner of the invoice.', 'invoicing' ),
1175
+                            'type'        => 'string',
1176
+                            'context'     => array( 'view', 'edit', 'embed' ),
1177
+                        ),
1178
+
1179
+                        'vat_number'      => array(
1180
+                            'description' => __( 'The VAT number of the owner of the invoice.', 'invoicing' ),
1181
+                            'type'        => 'string',
1182
+                            'context'     => array( 'view', 'edit', 'embed' ),
1183
+                        ),
1184
+
1185
+                        'vat_rate'        => array(
1186
+                            'description' => __( 'The VAT rate applied on the invoice.', 'invoicing' ),
1187
+                            'type'        => 'string',
1188
+                            'context'     => array( 'view', 'edit', 'embed' ),
1189
+                        ),
1190
+
1191
+                        'address'        => array(
1192
+                            'description' => __( 'The address of the invoice owner.', 'invoicing' ),
1193
+                            'type'        => 'string',
1194
+                            'context'     => array( 'view', 'edit', 'embed' ),
1195
+                        ),
1196
+
1197
+                        'city'            => array(
1198
+                            'description' => __( 'The city of the invoice owner.', 'invoicing' ),
1199
+                            'type'        => 'string',
1200
+                            'context'     => array( 'view', 'edit', 'embed' ),
1201
+                        ),
1202
+
1203
+                        'country'         => array(
1204
+                            'description' => __( 'The country of the invoice owner.', 'invoicing' ),
1205
+                            'type'        => 'string',
1206
+                            'context'     => array( 'view', 'edit', 'embed' ),
1207
+                        ),
1208
+
1209
+                        'state'           => array(
1210
+                            'description' => __( 'The state of the invoice owner.', 'invoicing' ),
1211
+                            'type'        => 'string',
1212
+                            'context'     => array( 'view', 'edit', 'embed' ),
1213
+                        ),
1214
+
1215
+                        'zip'             => array(
1216
+                            'description' => __( 'The zip code of the invoice owner.', 'invoicing' ),
1217
+                            'type'        => 'string',
1218
+                            'context'     => array( 'view', 'edit', 'embed' ),
1219
+                        ),
1220
+
1221
+                        'phone'             => array(
1222
+                            'description' => __( 'The phone number of the invoice owner.', 'invoicing' ),
1223
+                            'type'        => 'string',
1224
+                            'context'     => array( 'view', 'edit', 'embed' ),
1225
+                        ),
1226
+                    ),
1227
+                ),
1228
+
1229
+                'id'           => array(
1230
+                    'description' => __( 'Unique identifier for the invoice.', 'invoicing' ),
1231
+                    'type'        => 'integer',
1232
+                    'context'     => array( 'view', 'edit', 'embed' ),
1233
+                    'readonly'    => true,
1234
+                ),
1235
+
1236
+                'key'			  => array(
1237
+                    'description' => __( 'A unique key for the invoice.', 'invoicing' ),
1238
+                    'type'        => 'string',
1239
+                    'context'     => array( 'view', 'edit', 'embed' ),
1240
+                    'readonly'    => true,
1241
+                ),
1242
+
1243
+                'number'		  => array(
1244
+                    'description' => __( 'The invoice number.', 'invoicing' ),
1245
+                    'type'        => 'string',
1246
+                    'context'     => array( 'view', 'edit', 'embed' ),
1247
+                    'readonly'    => true,
1248
+                ),
1249
+
1250
+                'transaction_id'  => array(
1251
+                    'description' => __( 'The transaction id of the invoice.', 'invoicing' ),
1252
+                    'type'        => 'string',
1253
+                    'context'     => array( 'view', 'edit', 'embed' ),
1254
+                ),
1255
+
1256
+                'gateway'		  => array(
1257
+                    'description' => __( 'The gateway used to process the invoice.', 'invoicing' ),
1258
+                    'type'        => 'string',
1259
+                    'context'     => array( 'view', 'edit', 'embed' ),
1260
+                ),
1261
+
1262
+                'gateway_title'	  => array(
1263
+                    'description' => __( 'The title of the gateway used to process the invoice.', 'invoicing' ),
1264
+                    'type'        => 'string',
1265
+                    'context'     => array( 'view', 'edit', 'embed' ),
1266
+                ),
1267
+
1268
+                'total'	  		  => array(
1269
+                    'description' => __( 'The total amount of the invoice.', 'invoicing' ),
1270
+                    'type'        => 'number',
1271
+                    'context'     => array( 'view', 'edit', 'embed' ),
1272
+                    'readonly'    => true,
1273
+                ),
1274
+
1275
+                'discount'		  => array(
1276
+                    'description' => __( 'The discount applied to the invoice.', 'invoicing' ),
1277
+                    'type'        => 'number',
1278
+                    'context'     => array( 'view', 'edit', 'embed' ),
1279
+                    'readonly'    => true,
1280
+                ),
1281
+
1282
+                'discount_code'	  => array(
1283
+                    'description' => __( 'The discount code applied to the invoice.', 'invoicing' ),
1284
+                    'type'        => 'string',
1285
+                    'context'     => array( 'view', 'edit', 'embed' ),
1286
+                    'readonly'    => true,
1287
+                ),
1288
+
1289
+                'tax'	  		  => array(
1290
+                    'description' => __( 'The tax applied to the invoice.', 'invoicing' ),
1291
+                    'type'        => 'number',
1292
+                    'context'     => array( 'view', 'edit', 'embed' ),
1293
+                    'readonly'    => true,
1294
+                ),
1295
+
1296
+                'fees_total'	  => array(
1297
+                    'description' => __( 'The total fees applied to the invoice.', 'invoicing' ),
1298
+                    'type'        => 'number',
1299
+                    'context'     => array( 'view', 'edit', 'embed' ),
1300
+                    'readonly'    => true,
1301
+                ),
1302
+
1303
+                'subtotal'	  	  => array(
1304
+                    'description' => __( 'The sub-total for the invoice.', 'invoicing' ),
1305
+                    'type'        => 'number',
1306
+                    'context'     => array( 'view', 'edit', 'embed' ),
1307
+                    'readonly'    => true,
1308
+                ),
1309
+
1310
+                'currency'	  	  => array(
1311
+                    'description' => __( 'The currency used to process the invoice.', 'invoicing' ),
1312
+                    'type'        => 'string',
1313
+                    'context'     => array( 'view', 'edit', 'embed' ),
1314
+                ),
1315
+
1316
+                'cart_details'	  => array(
1317
+                    'description' => __( 'The cart details for invoice.', 'invoicing' ),
1318
+                    'type'        => 'array',
1319
+                    'context'     => array( 'view', 'edit', 'embed' ),
1320
+                    'required'	  => true,
1321
+                ),
1322
+
1323
+                'date'         => array(
1324
+                    'description' => __( "The date the invoice was published, in the site's timezone.", 'invoicing' ),
1325
+                    'type'        => array( 'string', 'null' ),
1326
+                    'format'      => 'date-time',
1327
+                    'context'     => array( 'view', 'edit', 'embed' ),
1328
+                ),
1329
+
1330
+                'due_date'     => array(
1331
+                    'description' => __( 'The due date for the invoice.', 'invoicing' ),
1332
+                    'type'        => array( 'string', 'null' ),
1333
+                    'format'      => 'date-time',
1334
+                    'context'     => array( 'view', 'edit', 'embed' ),
1335
+                ),
1336
+
1337
+                'completed_date'  => array(
1338
+                    'description' => __( 'The completed date for the invoice.', 'invoicing' ),
1339
+                    'type'        => array( 'string', 'null' ),
1340
+                    'format'      => 'date-time',
1341
+                    'context'     => array( 'view', 'edit', 'embed' ),
1342
+                    'readonly'    => true,
1343
+                ),
1344 1344
 				
1345
-				'link'         => array(
1346
-					'description' => __( 'URL to the invoice.', 'invoicing' ),
1347
-					'type'        => 'string',
1348
-					'format'      => 'uri',
1349
-					'context'     => array( 'view', 'edit', 'embed' ),
1350
-					'readonly'    => true,
1351
-				),
1352
-
1353
-				'mode'       	  => array(
1354
-					'description' => __( 'The mode used to process the invoice.', 'invoicing' ),
1355
-					'type'        => 'string',
1356
-					'enum'        => array( 'live', 'test' ),
1357
-					'context'     => array( 'view', 'edit', 'embed' ),
1358
-					'readonly'    => true,
1359
-				),
1360
-
1361
-				'slug'       	  => array(
1362
-					'description' => __( 'An alphanumeric identifier for the invoice.', 'invoicing' ),
1363
-					'type'        => 'string',
1364
-					'context'     => array( 'view', 'edit', 'embed' ),
1365
-					'arg_options' => array(
1366
-						'sanitize_callback' => array( $this, 'sanitize_slug' ),
1367
-					),
1368
-					'readonly'    => true,
1369
-				),
1370
-
1371
-				'status'       	  => array(
1372
-					'description' => __( 'A named status for the invoice.', 'invoicing' ),
1373
-					'type'        => 'string',
1374
-					'enum'        => $this->get_post_statuses(),
1375
-					'context'     => array( 'view', 'edit' ),
1376
-					'default'	  => 'wpi-pending',
1377
-				),
1378
-
1379
-				'status_nicename' => array(
1380
-					'description' => __( 'A human-readable status name for the invoice.', 'invoicing' ),
1381
-					'type'        => 'string',
1382
-					'context'     => array( 'view', 'embed' ),
1383
-					'readonly'    => true,
1384
-				),
1385
-
1386
-				'post_type'       => array(
1387
-					'description' => __( 'The post type for the invoice.', 'invoicing' ),
1388
-					'type'        => 'string',
1389
-					'context'     => array( 'view' ),
1390
-					'readonly'    => true,
1391
-				),
1392
-			),
1393
-		);
1394
-
1395
-		// Add helpful links to the invoice schem.
1396
-		$schema['links'] = $this->get_schema_links();
1397
-
1398
-		/**
1399
-		 * Filters the invoice schema for the REST API.
1400
-		 *
1401
-		 * Enables adding extra properties to invoices.
1402
-		 *
1403
-		 * @since 1.0.13
1404
-		 *
1405
-		 * @param array   $schema    The invoice schema.
1406
-		 */
1345
+                'link'         => array(
1346
+                    'description' => __( 'URL to the invoice.', 'invoicing' ),
1347
+                    'type'        => 'string',
1348
+                    'format'      => 'uri',
1349
+                    'context'     => array( 'view', 'edit', 'embed' ),
1350
+                    'readonly'    => true,
1351
+                ),
1352
+
1353
+                'mode'       	  => array(
1354
+                    'description' => __( 'The mode used to process the invoice.', 'invoicing' ),
1355
+                    'type'        => 'string',
1356
+                    'enum'        => array( 'live', 'test' ),
1357
+                    'context'     => array( 'view', 'edit', 'embed' ),
1358
+                    'readonly'    => true,
1359
+                ),
1360
+
1361
+                'slug'       	  => array(
1362
+                    'description' => __( 'An alphanumeric identifier for the invoice.', 'invoicing' ),
1363
+                    'type'        => 'string',
1364
+                    'context'     => array( 'view', 'edit', 'embed' ),
1365
+                    'arg_options' => array(
1366
+                        'sanitize_callback' => array( $this, 'sanitize_slug' ),
1367
+                    ),
1368
+                    'readonly'    => true,
1369
+                ),
1370
+
1371
+                'status'       	  => array(
1372
+                    'description' => __( 'A named status for the invoice.', 'invoicing' ),
1373
+                    'type'        => 'string',
1374
+                    'enum'        => $this->get_post_statuses(),
1375
+                    'context'     => array( 'view', 'edit' ),
1376
+                    'default'	  => 'wpi-pending',
1377
+                ),
1378
+
1379
+                'status_nicename' => array(
1380
+                    'description' => __( 'A human-readable status name for the invoice.', 'invoicing' ),
1381
+                    'type'        => 'string',
1382
+                    'context'     => array( 'view', 'embed' ),
1383
+                    'readonly'    => true,
1384
+                ),
1385
+
1386
+                'post_type'       => array(
1387
+                    'description' => __( 'The post type for the invoice.', 'invoicing' ),
1388
+                    'type'        => 'string',
1389
+                    'context'     => array( 'view' ),
1390
+                    'readonly'    => true,
1391
+                ),
1392
+            ),
1393
+        );
1394
+
1395
+        // Add helpful links to the invoice schem.
1396
+        $schema['links'] = $this->get_schema_links();
1397
+
1398
+        /**
1399
+         * Filters the invoice schema for the REST API.
1400
+         *
1401
+         * Enables adding extra properties to invoices.
1402
+         *
1403
+         * @since 1.0.13
1404
+         *
1405
+         * @param array   $schema    The invoice schema.
1406
+         */
1407 1407
         $schema = apply_filters( "wpinv_rest_invoice_schema", $schema );
1408 1408
 
1409
-		// Cache the invoice schema.
1410
-		$this->schema = $schema;
1409
+        // Cache the invoice schema.
1410
+        $this->schema = $schema;
1411 1411
 		
1412
-		return $this->add_additional_fields_schema( $this->schema );
1413
-	}
1414
-
1415
-	/**
1416
-	 * Retrieve Link Description Objects that should be added to the Schema for the invoices collection.
1417
-	 *
1418
-	 * @since 1.0.13
1419
-	 *
1420
-	 * @return array
1421
-	 */
1422
-	protected function get_schema_links() {
1423
-
1424
-		$href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" );
1425
-
1426
-		$links = array();
1427
-
1428
-		$links[] = array(
1429
-			'rel'          => 'https://api.w.org/action-publish',
1430
-			'title'        => __( 'The current user can mark this invoice as completed.', 'invoicing' ),
1431
-			'href'         => $href,
1432
-			'targetSchema' => array(
1433
-				'type'       => 'object',
1434
-				'properties' => array(
1435
-					'status' => array(
1436
-						'type' => 'string',
1437
-						'enum' => array( 'publish', 'wpi-renewal' ),
1438
-					),
1439
-				),
1440
-			),
1441
-		);
1442
-
1443
-		$links[] = array(
1444
-			'rel'          => 'https://api.w.org/action-assign-author',
1445
-			'title'        => __( 'The current user can change the owner of this invoice.', 'invoicing' ),
1446
-			'href'         => $href,
1447
-			'targetSchema' => array(
1448
-				'type'       => 'object',
1449
-				'properties'   => array(
1450
-					'user_id'  => array(
1451
-						'type' => 'integer',
1452
-					),
1453
-				),
1454
-			),
1455
-		);
1456
-
1457
-		return $links;
1458
-	}
1459
-
1460
-	/**
1461
-	 * Prepares links for the request.
1462
-	 *
1463
-	 * @since 1.0.13
1464
-	 *
1465
-	 * @param WPInv_Invoice $invoice Invoice Object.
1466
-	 * @return array Links for the given invoice.
1467
-	 */
1468
-	protected function prepare_links( $invoice ) {
1469
-
1470
-		// Prepare the base REST API endpoint for invoices.
1471
-		$base = sprintf( '%s/%s', $this->namespace, $this->rest_base );
1472
-
1473
-		// Entity meta.
1474
-		$links = array(
1475
-			'self'       => array(
1476
-				'href' => rest_url( trailingslashit( $base ) . $invoice->ID ),
1477
-			),
1478
-			'collection' => array(
1479
-				'href' => rest_url( $base ),
1480
-			),
1481
-		);
1482
-
1483
-		if ( ! empty( $invoice->user_id ) ) {
1484
-			$links['user'] = array(
1485
-				'href'       => rest_url( 'wp/v2/users/' . $invoice->user_id ),
1486
-				'embeddable' => true,
1487
-			);
1488
-		}
1489
-
1490
-		/**
1491
-		 * Filters the returned invoice links for the REST API.
1492
-		 *
1493
-		 * Enables adding extra links to invoice API responses.
1494
-		 *
1495
-		 * @since 1.0.13
1496
-		 *
1497
-		 * @param array   $links    Rest links.
1498
-		 */
1499
-		return apply_filters( "wpinv_rest_invoice_links", $links );
1500
-
1501
-	}
1502
-
1503
-	/**
1504
-	 * Get the link relations available for the post and current user.
1505
-	 *
1506
-	 * @since 1.0.13
1507
-	 *
1508
-	 * @param WPInv_Invoice   $invoice    Invoice object.
1509
-	 * @param WP_REST_Request $request Request object.
1510
-	 * @return array List of link relations.
1511
-	 */
1512
-	protected function get_available_actions( $invoice, $request ) {
1513
-
1514
-		if ( 'edit' !== $request['context'] ) {
1515
-			return array();
1516
-		}
1517
-
1518
-		$rels = array();
1519
-
1520
-		// Retrieve the post type object.
1521
-		$post_type = get_post_type_object( $invoice->post_type );
1522
-
1523
-		// Mark invoice as completed.
1524
-		if ( current_user_can( $post_type->cap->publish_posts ) ) {
1525
-			$rels[] = 'https://api.w.org/action-publish';
1526
-		}
1527
-
1528
-		// Change the owner of the invoice.
1529
-		if ( current_user_can( $post_type->cap->edit_others_posts ) ) {
1530
-			$rels[] = 'https://api.w.org/action-assign-author';
1531
-		}
1532
-
1533
-		/**
1534
-		 * Filters the available invoice link relations for the REST API.
1535
-		 *
1536
-		 * Enables adding extra link relation for the current user and request to invoice responses.
1537
-		 *
1538
-		 * @since 1.0.13
1539
-		 *
1540
-		 * @param array   $rels    Available link relations.
1541
-		 */
1542
-		return apply_filters( "wpinv_rest_invoice_link_relations", $rels );
1543
-	}
1544
-
1545
-	/**
1546
-	 * Sanitizes and validates the list of post statuses.
1547
-	 *
1548
-	 * @since 1.0.13
1549
-	 *
1550
-	 * @param string|array    $statuses  One or more post statuses.
1551
-	 * @param WP_REST_Request $request   Full details about the request.
1552
-	 * @param string          $parameter Additional parameter to pass to validation.
1553
-	 * @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
1554
-	 */
1555
-	public function sanitize_post_statuses( $statuses, $request, $parameter ) {
1556
-		return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() );
1557
-	}
1558
-
1559
-	/**
1560
-	 * Retrieves a valid list of post statuses.
1561
-	 *
1562
-	 * @since 1.0.15
1563
-	 *
1564
-	 * @return array A list of registered item statuses.
1565
-	 */
1566
-	public function get_post_statuses() {
1567
-		return array_keys( wpinv_get_invoice_statuses( true, true ) );
1568
-	}
1412
+        return $this->add_additional_fields_schema( $this->schema );
1413
+    }
1414
+
1415
+    /**
1416
+     * Retrieve Link Description Objects that should be added to the Schema for the invoices collection.
1417
+     *
1418
+     * @since 1.0.13
1419
+     *
1420
+     * @return array
1421
+     */
1422
+    protected function get_schema_links() {
1423
+
1424
+        $href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" );
1425
+
1426
+        $links = array();
1427
+
1428
+        $links[] = array(
1429
+            'rel'          => 'https://api.w.org/action-publish',
1430
+            'title'        => __( 'The current user can mark this invoice as completed.', 'invoicing' ),
1431
+            'href'         => $href,
1432
+            'targetSchema' => array(
1433
+                'type'       => 'object',
1434
+                'properties' => array(
1435
+                    'status' => array(
1436
+                        'type' => 'string',
1437
+                        'enum' => array( 'publish', 'wpi-renewal' ),
1438
+                    ),
1439
+                ),
1440
+            ),
1441
+        );
1442
+
1443
+        $links[] = array(
1444
+            'rel'          => 'https://api.w.org/action-assign-author',
1445
+            'title'        => __( 'The current user can change the owner of this invoice.', 'invoicing' ),
1446
+            'href'         => $href,
1447
+            'targetSchema' => array(
1448
+                'type'       => 'object',
1449
+                'properties'   => array(
1450
+                    'user_id'  => array(
1451
+                        'type' => 'integer',
1452
+                    ),
1453
+                ),
1454
+            ),
1455
+        );
1456
+
1457
+        return $links;
1458
+    }
1459
+
1460
+    /**
1461
+     * Prepares links for the request.
1462
+     *
1463
+     * @since 1.0.13
1464
+     *
1465
+     * @param WPInv_Invoice $invoice Invoice Object.
1466
+     * @return array Links for the given invoice.
1467
+     */
1468
+    protected function prepare_links( $invoice ) {
1469
+
1470
+        // Prepare the base REST API endpoint for invoices.
1471
+        $base = sprintf( '%s/%s', $this->namespace, $this->rest_base );
1472
+
1473
+        // Entity meta.
1474
+        $links = array(
1475
+            'self'       => array(
1476
+                'href' => rest_url( trailingslashit( $base ) . $invoice->ID ),
1477
+            ),
1478
+            'collection' => array(
1479
+                'href' => rest_url( $base ),
1480
+            ),
1481
+        );
1482
+
1483
+        if ( ! empty( $invoice->user_id ) ) {
1484
+            $links['user'] = array(
1485
+                'href'       => rest_url( 'wp/v2/users/' . $invoice->user_id ),
1486
+                'embeddable' => true,
1487
+            );
1488
+        }
1489
+
1490
+        /**
1491
+         * Filters the returned invoice links for the REST API.
1492
+         *
1493
+         * Enables adding extra links to invoice API responses.
1494
+         *
1495
+         * @since 1.0.13
1496
+         *
1497
+         * @param array   $links    Rest links.
1498
+         */
1499
+        return apply_filters( "wpinv_rest_invoice_links", $links );
1500
+
1501
+    }
1502
+
1503
+    /**
1504
+     * Get the link relations available for the post and current user.
1505
+     *
1506
+     * @since 1.0.13
1507
+     *
1508
+     * @param WPInv_Invoice   $invoice    Invoice object.
1509
+     * @param WP_REST_Request $request Request object.
1510
+     * @return array List of link relations.
1511
+     */
1512
+    protected function get_available_actions( $invoice, $request ) {
1513
+
1514
+        if ( 'edit' !== $request['context'] ) {
1515
+            return array();
1516
+        }
1517
+
1518
+        $rels = array();
1519
+
1520
+        // Retrieve the post type object.
1521
+        $post_type = get_post_type_object( $invoice->post_type );
1522
+
1523
+        // Mark invoice as completed.
1524
+        if ( current_user_can( $post_type->cap->publish_posts ) ) {
1525
+            $rels[] = 'https://api.w.org/action-publish';
1526
+        }
1527
+
1528
+        // Change the owner of the invoice.
1529
+        if ( current_user_can( $post_type->cap->edit_others_posts ) ) {
1530
+            $rels[] = 'https://api.w.org/action-assign-author';
1531
+        }
1532
+
1533
+        /**
1534
+         * Filters the available invoice link relations for the REST API.
1535
+         *
1536
+         * Enables adding extra link relation for the current user and request to invoice responses.
1537
+         *
1538
+         * @since 1.0.13
1539
+         *
1540
+         * @param array   $rels    Available link relations.
1541
+         */
1542
+        return apply_filters( "wpinv_rest_invoice_link_relations", $rels );
1543
+    }
1544
+
1545
+    /**
1546
+     * Sanitizes and validates the list of post statuses.
1547
+     *
1548
+     * @since 1.0.13
1549
+     *
1550
+     * @param string|array    $statuses  One or more post statuses.
1551
+     * @param WP_REST_Request $request   Full details about the request.
1552
+     * @param string          $parameter Additional parameter to pass to validation.
1553
+     * @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
1554
+     */
1555
+    public function sanitize_post_statuses( $statuses, $request, $parameter ) {
1556
+        return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() );
1557
+    }
1558
+
1559
+    /**
1560
+     * Retrieves a valid list of post statuses.
1561
+     *
1562
+     * @since 1.0.15
1563
+     *
1564
+     * @return array A list of registered item statuses.
1565
+     */
1566
+    public function get_post_statuses() {
1567
+        return array_keys( wpinv_get_invoice_statuses( true, true ) );
1568
+    }
1569 1569
     
1570 1570
 }
1571 1571
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +325 added lines, -325 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
  * @since    1.0.13
9 9
  */
10 10
 
11
-if ( !defined( 'WPINC' ) ) {
11
+if (!defined('WPINC')) {
12 12
     exit;
13 13
 }
14 14
 
@@ -41,7 +41,7 @@  discard block
 block discarded – undo
41 41
 	 *
42 42
 	 * @param string $namespace Api Namespace
43 43
 	 */
44
-	public function __construct( $namespace ) {
44
+	public function __construct($namespace) {
45 45
         
46 46
         // Set api namespace...
47 47
 		$this->namespace = $namespace;
@@ -60,16 +60,16 @@  discard block
 block discarded – undo
60 60
 	 * @param WP_REST_Request $request Full details about the request.
61 61
 	 * @return true|WP_Error True if the request has read access, WP_Error object otherwise.
62 62
 	 */
63
-	public function get_items_permissions_check( $request ) {
63
+	public function get_items_permissions_check($request) {
64 64
 	
65
-        $post_type = get_post_type_object( $this->post_type );
65
+        $post_type = get_post_type_object($this->post_type);
66 66
 
67
-		if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) {
68
-			return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
67
+		if ('edit' === $request['context'] && !current_user_can($post_type->cap->edit_posts)) {
68
+			return new WP_Error('rest_forbidden_context', __('Sorry, you are not allowed to edit items.', 'invoicing'), array('status' => rest_authorization_required_code()));
69 69
 		}
70 70
 
71
-		if ( ! is_user_logged_in() ) {
72
-			return new WP_Error( 'rest_forbidden', __( 'Sorry, you must be logged in to view items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
71
+		if (!is_user_logged_in()) {
72
+			return new WP_Error('rest_forbidden', __('Sorry, you must be logged in to view items.', 'invoicing'), array('status' => rest_authorization_required_code()));
73 73
 		}
74 74
 
75 75
 		// Read checks will be evaluated on a per invoice basis
@@ -86,33 +86,33 @@  discard block
 block discarded – undo
86 86
 	 * @param WP_REST_Request $request Full details about the request.
87 87
 	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
88 88
 	 */
89
-	public function get_items( $request ) {
89
+	public function get_items($request) {
90 90
 		
91 91
 		// Retrieve request query parameters.
92
-		$args          = $this->get_request_collection_params( $request );
92
+		$args          = $this->get_request_collection_params($request);
93 93
 		
94 94
 		// WP_Query Args.
95
-		$wp_query_args = $this->get_collection_wp_query_params( $args, $request );
95
+		$wp_query_args = $this->get_collection_wp_query_params($args, $request);
96 96
 		
97 97
 		// Get invoice ids...
98
-		$query         = new WP_Query( $wp_query_args );
98
+		$query         = new WP_Query($wp_query_args);
99 99
 
100 100
 		// ... and map them into invoice objects.
101
-		$_invoices     = array_map( array( $this, 'get_post' ), $query->posts );
101
+		$_invoices     = array_map(array($this, 'get_post'), $query->posts);
102 102
 
103 103
 		// Prepare the retrieved invoices
104 104
 		$invoices      = array();
105 105
 
106
-		foreach( $_invoices as $invoice ) {
107
-			if ( $this->check_read_permission( $invoice ) ) {
108
-				$invoices[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $invoice, $request ) );
106
+		foreach ($_invoices as $invoice) {
107
+			if ($this->check_read_permission($invoice)) {
108
+				$invoices[] = $this->prepare_response_for_collection($this->prepare_item_for_response($invoice, $request));
109 109
 			}
110 110
 		}
111 111
 
112 112
 		// Prepare the response.
113
-		$response = rest_ensure_response( $invoices );
114
-		$response->header( 'X-WP-Total', (int) $query->found_posts );
115
-		$response->header( 'X-WP-TotalPages', (int) $query->max_num_pages );
113
+		$response = rest_ensure_response($invoices);
114
+		$response->header('X-WP-Total', (int) $query->found_posts);
115
+		$response->header('X-WP-TotalPages', (int) $query->max_num_pages);
116 116
 
117 117
 		/**
118 118
 		 * Filters the responses for invoices requests.
@@ -125,9 +125,9 @@  discard block
 block discarded – undo
125 125
 		 * @param WP_REST_Request     $request The request used.
126 126
          * @param array               $args Array of args used to retrieve the invoices
127 127
 		 */
128
-        $response       = apply_filters( "wpinv_rest_invoices_response", $response, $request, $args );
128
+        $response = apply_filters("wpinv_rest_invoices_response", $response, $request, $args);
129 129
 
130
-        return rest_ensure_response( $response );
130
+        return rest_ensure_response($response);
131 131
         
132 132
     }
133 133
 
@@ -139,17 +139,17 @@  discard block
 block discarded – undo
139 139
 	 * @param int $invoice_id Supplied ID.
140 140
 	 * @return WPInv_Invoice|WP_Error Invoice object if ID is valid, WP_Error otherwise.
141 141
 	 */
142
-	protected function get_post( $invoice_id ) {
142
+	protected function get_post($invoice_id) {
143 143
 		
144
-		$error     = new WP_Error( 'rest_invoice_invalid_id', __( 'Invalid item ID.', 'invoicing' ), array( 'status' => 404 ) );
144
+		$error = new WP_Error('rest_invoice_invalid_id', __('Invalid item ID.', 'invoicing'), array('status' => 404));
145 145
 
146 146
         // Ids start from 1
147
-        if ( (int) $invoice_id <= 0 ) {
147
+        if ((int) $invoice_id <= 0) {
148 148
 			return $error;
149 149
 		}
150 150
 
151
-		$invoice = wpinv_get_invoice( (int) $invoice_id );
152
-		if ( empty( $invoice ) || $this->post_type !== $invoice->post_type ) {
151
+		$invoice = wpinv_get_invoice((int) $invoice_id);
152
+		if (empty($invoice) || $this->post_type !== $invoice->post_type) {
153 153
 			return $error;
154 154
         }
155 155
 
@@ -165,18 +165,18 @@  discard block
 block discarded – undo
165 165
 	 * @param WP_REST_Request $request Full details about the request.
166 166
 	 * @return bool|WP_Error True if the request has read access for the invoice, WP_Error object otherwise.
167 167
 	 */
168
-	public function get_item_permissions_check( $request ) {
168
+	public function get_item_permissions_check($request) {
169 169
 
170 170
         // Retrieve the invoice object.
171
-        $invoice = $this->get_post( $request['id'] );
171
+        $invoice = $this->get_post($request['id']);
172 172
         
173 173
         // Ensure it is valid.
174
-		if ( is_wp_error( $invoice ) ) {
174
+		if (is_wp_error($invoice)) {
175 175
 			return $invoice;
176 176
 		}
177 177
 
178
-		if ( $invoice ) {
179
-			return $this->check_read_permission( $invoice );
178
+		if ($invoice) {
179
+			return $this->check_read_permission($invoice);
180 180
 		}
181 181
 
182 182
 		return true;
@@ -193,8 +193,8 @@  discard block
 block discarded – undo
193 193
 	 * @param WPInv_Invoice $invoice WPInv_Invoice object.
194 194
 	 * @return bool Whether the post can be read.
195 195
 	 */
196
-	public function check_read_permission( $invoice ) {
197
-		return wpinv_user_can_view_invoice( $invoice->ID );
196
+	public function check_read_permission($invoice) {
197
+		return wpinv_user_can_view_invoice($invoice->ID);
198 198
     }
199 199
     
200 200
     /**
@@ -205,19 +205,19 @@  discard block
 block discarded – undo
205 205
 	 * @param WP_REST_Request $request Full details about the request.
206 206
 	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
207 207
 	 */
208
-	public function get_item( $request ) {
208
+	public function get_item($request) {
209 209
 
210 210
         // Fetch the invoice.
211
-        $invoice = $this->get_post( $request['id'] );
211
+        $invoice = $this->get_post($request['id']);
212 212
         
213 213
         // Abort early if it does not exist
214
-		if ( is_wp_error( $invoice ) ) {
214
+		if (is_wp_error($invoice)) {
215 215
 			return $invoice;
216 216
 		}
217 217
 
218 218
 		// Prepare the response
219
-		$response = $this->prepare_item_for_response( $invoice, $request );
220
-		$response->link_header( 'alternate', esc_url( $invoice->get_view_url() ), array( 'type' => 'text/html' ) );
219
+		$response = $this->prepare_item_for_response($invoice, $request);
220
+		$response->link_header('alternate', esc_url($invoice->get_view_url()), array('type' => 'text/html'));
221 221
 
222 222
 		/**
223 223
 		 * Filters the responses for single invoice requests.
@@ -229,9 +229,9 @@  discard block
 block discarded – undo
229 229
 		 * @param WP_HTTP_Response $response Response.
230 230
 		 * @param WP_REST_Request  $request The request used.
231 231
 		 */
232
-        $response       = apply_filters( "wpinv_rest_get_invoice_response", $response, $request );
232
+        $response = apply_filters("wpinv_rest_get_invoice_response", $response, $request);
233 233
 
234
-        return rest_ensure_response( $response );
234
+        return rest_ensure_response($response);
235 235
 
236 236
     }
237 237
     
@@ -243,18 +243,18 @@  discard block
 block discarded – undo
243 243
 	 * @param WP_REST_Request $request Full details about the request.
244 244
 	 * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise.
245 245
 	 */
246
-	public function create_item_permissions_check( $request ) {
246
+	public function create_item_permissions_check($request) {
247 247
 	
248
-		if ( ! empty( $request['id'] ) ) {
249
-			return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) );
248
+		if (!empty($request['id'])) {
249
+			return new WP_Error('rest_invoice_exists', __('Cannot create existing item.', 'invoicing'), array('status' => 400));
250 250
 		}
251 251
 
252
-		$post_type = get_post_type_object( $this->post_type );
252
+		$post_type = get_post_type_object($this->post_type);
253 253
 
254
-		if ( ! current_user_can( $post_type->cap->create_posts ) && ! wpinv_current_user_can_manage_invoicing() ) {
254
+		if (!current_user_can($post_type->cap->create_posts) && !wpinv_current_user_can_manage_invoicing()) {
255 255
 			return new WP_Error( 
256 256
                 'rest_cannot_create',
257
-                __( 'Sorry, you are not allowed to create items as this user.', 'invoicing' ), 
257
+                __('Sorry, you are not allowed to create items as this user.', 'invoicing'), 
258 258
                 array( 
259 259
                     'status' => rest_authorization_required_code(),
260 260
                 )
@@ -272,32 +272,32 @@  discard block
 block discarded – undo
272 272
 	 * @param WP_REST_Request $request Full details about the request.
273 273
 	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
274 274
 	 */
275
-	public function create_item( $request ) {
275
+	public function create_item($request) {
276 276
 
277
-		if ( ! empty( $request['id'] ) ) {
278
-			return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) );
277
+		if (!empty($request['id'])) {
278
+			return new WP_Error('rest_invoice_exists', __('Cannot create existing item.', 'invoicing'), array('status' => 400));
279 279
 		}
280 280
 
281
-		$request->set_param( 'context', 'edit' );
281
+		$request->set_param('context', 'edit');
282 282
 
283 283
 		// Prepare the updated data.
284
-		$invoice_data = $this->prepare_item_for_database( $request );
284
+		$invoice_data = $this->prepare_item_for_database($request);
285 285
 
286
-		if ( is_wp_error( $invoice_data ) ) {
286
+		if (is_wp_error($invoice_data)) {
287 287
 			return $invoice_data;
288 288
 		}
289 289
 
290 290
 		// Try creating the invoice
291 291
 		$invoice_data['post_type']    = $this->post_type;
292
-		$invoice_data['private_note'] = __( 'Created via API.', 'invoicing' );
293
-        $invoice = wpinv_insert_invoice( $invoice_data, true );
292
+		$invoice_data['private_note'] = __('Created via API.', 'invoicing');
293
+        $invoice = wpinv_insert_invoice($invoice_data, true);
294 294
 
295
-		if ( is_wp_error( $invoice ) ) {
295
+		if (is_wp_error($invoice)) {
296 296
             return $invoice;
297 297
 		}
298 298
 
299 299
 		// Prepare the response
300
-		$response = $this->prepare_item_for_response( $invoice, $request );
300
+		$response = $this->prepare_item_for_response($invoice, $request);
301 301
 
302 302
 		/**
303 303
 		 * Fires after a single invoice is created or updated via the REST API.
@@ -308,7 +308,7 @@  discard block
 block discarded – undo
308 308
 		 * @param WP_REST_Request $request  Request object.
309 309
 		 * @param bool            $creating True when creating a post, false when updating.
310 310
 		 */
311
-		do_action( "wpinv_rest_insert_invoice", $invoice, $request, true );
311
+		do_action("wpinv_rest_insert_invoice", $invoice, $request, true);
312 312
 
313 313
 		/**
314 314
 		 * Filters the responses for creating single invoice requests.
@@ -320,9 +320,9 @@  discard block
 block discarded – undo
320 320
 		 * @param array           $invoice_data Invoice properties.
321 321
 		 * @param WP_REST_Request $request The request used.
322 322
 		 */
323
-        $response       = apply_filters( "wpinv_rest_create_invoice_response", $response, $request );
323
+        $response = apply_filters("wpinv_rest_create_invoice_response", $response, $request);
324 324
 
325
-        return rest_ensure_response( $response );
325
+        return rest_ensure_response($response);
326 326
 	}
327 327
 
328 328
 	/**
@@ -333,20 +333,20 @@  discard block
 block discarded – undo
333 333
 	 * @param WP_REST_Request $request Full details about the request.
334 334
 	 * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise.
335 335
 	 */
336
-	public function update_item_permissions_check( $request ) {
336
+	public function update_item_permissions_check($request) {
337 337
 
338 338
 		// Retrieve the invoice.
339
-		$invoice = $this->get_post( $request['id'] );
340
-		if ( is_wp_error( $invoice ) ) {
339
+		$invoice = $this->get_post($request['id']);
340
+		if (is_wp_error($invoice)) {
341 341
 			return $invoice;
342 342
 		}
343 343
 
344
-		$post_type = get_post_type_object( $this->post_type );
344
+		$post_type = get_post_type_object($this->post_type);
345 345
 
346
-		if ( ! current_user_can(  $post_type->cap->edit_post, $invoice->ID  ) ) {
346
+		if (!current_user_can($post_type->cap->edit_post, $invoice->ID)) {
347 347
 			return new WP_Error( 
348 348
                 'rest_cannot_edit', 
349
-                __( 'Sorry, you are not allowed to update this item.', 'invoicing' ), 
349
+                __('Sorry, you are not allowed to update this item.', 'invoicing'), 
350 350
                 array( 
351 351
                     'status' => rest_authorization_required_code(),
352 352
                 )
@@ -364,46 +364,46 @@  discard block
 block discarded – undo
364 364
 	 * @param WP_REST_Request $request Full details about the request.
365 365
 	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
366 366
 	 */
367
-	public function update_item( $request ) {
367
+	public function update_item($request) {
368 368
 		
369 369
 		// Ensure the invoice exists.
370
-        $valid_check = $this->get_post( $request['id'] );
370
+        $valid_check = $this->get_post($request['id']);
371 371
         
372 372
         // Abort early if it does not exist
373
-		if ( is_wp_error( $valid_check ) ) {
373
+		if (is_wp_error($valid_check)) {
374 374
 			return $valid_check;
375 375
 		}
376 376
 
377
-		$request->set_param( 'context', 'edit' );
377
+		$request->set_param('context', 'edit');
378 378
 
379 379
 		// Prepare the updated data.
380
-		$data_to_update = $this->prepare_item_for_database( $request );
380
+		$data_to_update = $this->prepare_item_for_database($request);
381 381
 
382
-		if ( is_wp_error( $data_to_update ) ) {
382
+		if (is_wp_error($data_to_update)) {
383 383
 			return $data_to_update;
384 384
 		}
385 385
 
386 386
 		// Abort if no invoice data is provided
387
-        if( empty( $data_to_update ) ) {
388
-            return new WP_Error( 'missing_data', __( 'An update request cannot be empty.', 'invoicing' ) );
387
+        if (empty($data_to_update)) {
388
+            return new WP_Error('missing_data', __('An update request cannot be empty.', 'invoicing'));
389 389
         }
390 390
 
391 391
 		// Include the invoice ID
392 392
 		$data_to_update['ID'] = $request['id'];
393 393
 
394 394
 		// Update the invoice
395
-		$updated_invoice = wpinv_update_invoice( $data_to_update, true );
395
+		$updated_invoice = wpinv_update_invoice($data_to_update, true);
396 396
 
397 397
 		// Incase the update operation failed...
398
-		if ( is_wp_error( $updated_invoice ) ) {
398
+		if (is_wp_error($updated_invoice)) {
399 399
 			return $updated_invoice;
400 400
 		}
401 401
 
402 402
 		// Prepare the response
403
-		$response = $this->prepare_item_for_response( $updated_invoice, $request );
403
+		$response = $this->prepare_item_for_response($updated_invoice, $request);
404 404
 
405 405
 		/** This action is documented in includes/class-wpinv-rest-invoice-controller.php */
406
-		do_action( "wpinv_rest_insert_invoice", $updated_invoice, $request, false );
406
+		do_action("wpinv_rest_insert_invoice", $updated_invoice, $request, false);
407 407
 
408 408
 		/**
409 409
 		 * Filters the responses for updating single invoice requests.
@@ -415,9 +415,9 @@  discard block
 block discarded – undo
415 415
 		 * @param array           $invoice_data Invoice properties.
416 416
 		 * @param WP_REST_Request $request The request used.
417 417
 		 */
418
-        $response       = apply_filters( "wpinv_rest_update_invoice_response", $response, $request );
418
+        $response = apply_filters("wpinv_rest_update_invoice_response", $response, $request);
419 419
 
420
-        return rest_ensure_response( $response );
420
+        return rest_ensure_response($response);
421 421
 	}
422 422
 
423 423
 	/**
@@ -428,22 +428,22 @@  discard block
 block discarded – undo
428 428
 	 * @param WP_REST_Request $request Full details about the request.
429 429
 	 * @return true|WP_Error True if the request has access to delete the invoice, WP_Error object otherwise.
430 430
 	 */
431
-	public function delete_item_permissions_check( $request ) {
431
+	public function delete_item_permissions_check($request) {
432 432
 
433 433
 		// Retrieve the invoice.
434
-		$invoice = $this->get_post( $request['id'] );
435
-		if ( is_wp_error( $invoice ) ) {
434
+		$invoice = $this->get_post($request['id']);
435
+		if (is_wp_error($invoice)) {
436 436
 			return $invoice;
437 437
 		}
438 438
 
439 439
 		// Ensure the current user can delete invoices
440
-		if ( wpinv_current_user_can_manage_invoicing() ||  current_user_can( 'delete_invoices', $request['id'] ) ) {
440
+		if (wpinv_current_user_can_manage_invoicing() || current_user_can('delete_invoices', $request['id'])) {
441 441
 			return true;
442 442
 		}
443 443
 
444 444
 		return new WP_Error( 
445 445
 			'rest_cannot_delete', 
446
-			__( 'Sorry, you are not allowed to delete this item.', 'invoicing' ), 
446
+			__('Sorry, you are not allowed to delete this item.', 'invoicing'), 
447 447
 			array( 
448 448
 				'status' => rest_authorization_required_code(),
449 449
 			)
@@ -458,31 +458,31 @@  discard block
 block discarded – undo
458 458
 	 * @param WP_REST_Request $request Full details about the request.
459 459
 	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
460 460
 	 */
461
-	public function delete_item( $request ) {
461
+	public function delete_item($request) {
462 462
 		
463 463
 		// Retrieve the invoice.
464
-		$invoice = $this->get_post( $request['id'] );
465
-		if ( is_wp_error( $invoice ) ) {
464
+		$invoice = $this->get_post($request['id']);
465
+		if (is_wp_error($invoice)) {
466 466
 			return $invoice;
467 467
 		}
468 468
 
469
-		$request->set_param( 'context', 'edit' );
469
+		$request->set_param('context', 'edit');
470 470
 
471 471
 		// Prepare the invoice id
472
-		$id    = $invoice->ID;
472
+		$id = $invoice->ID;
473 473
 
474 474
 		// Prepare the response
475
-		$response = $this->prepare_item_for_response( $invoice, $request );
475
+		$response = $this->prepare_item_for_response($invoice, $request);
476 476
 
477 477
 		// Check if the user wants to bypass the trash...
478 478
 		$force_delete = (bool) $request['force'];
479 479
 
480 480
 		// Try deleting the invoice.
481
-		$deleted = wp_delete_post( $id, $force_delete );
481
+		$deleted = wp_delete_post($id, $force_delete);
482 482
 
483 483
 		// Abort early if we can't delete the invoice.
484
-		if ( ! $deleted ) {
485
-			return new WP_Error( 'rest_cannot_delete', __( 'The item cannot be deleted.', 'invoicing' ), array( 'status' => 500 ) );
484
+		if (!$deleted) {
485
+			return new WP_Error('rest_cannot_delete', __('The item cannot be deleted.', 'invoicing'), array('status' => 500));
486 486
 		}
487 487
 
488 488
 		/**
@@ -494,7 +494,7 @@  discard block
 block discarded – undo
494 494
 		 * @param WPInv_Invoice    $invoice  The deleted or trashed invoice.
495 495
 		 * @param WP_REST_Request  $request  The request sent to the API.
496 496
 		 */
497
-		do_action( "wpinv_rest_delete_invoice", $invoice, $request );
497
+		do_action("wpinv_rest_delete_invoice", $invoice, $request);
498 498
 
499 499
 		return $response;
500 500
 
@@ -510,29 +510,29 @@  discard block
 block discarded – undo
510 510
 	 */
511 511
 	public function get_collection_params() {
512 512
         
513
-        $query_params               = array(
513
+        $query_params = array(
514 514
 
515 515
             // item status.
516 516
             'status'                => array(
517 517
                 'default'           => $this->get_post_statuses(),
518
-                'description'       => __( 'Limit result set to items assigned one or more statuses.', 'invoicing' ),
518
+                'description'       => __('Limit result set to items assigned one or more statuses.', 'invoicing'),
519 519
                 'type'              => 'array',
520 520
                 'items'             => array(
521 521
                     'enum'          => $this->get_post_statuses(),
522 522
                     'type'          => 'string',
523 523
                 ),
524
-                'sanitize_callback' => array( $this, 'sanitize_post_statuses' ),
524
+                'sanitize_callback' => array($this, 'sanitize_post_statuses'),
525 525
             ),
526 526
 
527 527
             // User.
528 528
             'user'                  => array(
529
-				'description'       => __( 'Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing' ),
529
+				'description'       => __('Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing'),
530 530
 				'type'              => 'string',
531 531
 			),
532 532
 
533 533
 			// Exclude certain users
534 534
             'exclude_users'  	    => array(
535
-                'description' 		=> __( 'Exclude items from specific users.', 'invoicing' ),
535
+                'description' 		=> __('Exclude items from specific users.', 'invoicing'),
536 536
                 'type'        		=> 'array',
537 537
                 'items'       		=> array(
538 538
                     'type' => 'integer',
@@ -542,62 +542,62 @@  discard block
 block discarded – undo
542 542
 			
543 543
 			// Items before.
544 544
             'before_date'           => array(
545
-				'description'       => __( 'Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing' ),
545
+				'description'       => __('Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing'),
546 546
 				'type'              => 'string',
547 547
 			),
548 548
 
549 549
             'meta_key'           => array(
550
-				'description'       => __( 'Filter items by custom field key.', 'invoicing' ),
550
+				'description'       => __('Filter items by custom field key.', 'invoicing'),
551 551
 				'type'              => 'string',
552 552
 			),
553 553
 
554 554
             'meta_compare_key'           => array(
555
-				'description'       => __( 'Comparison operator to test the `meta_key`.', 'invoicing' ),
555
+				'description'       => __('Comparison operator to test the `meta_key`.', 'invoicing'),
556 556
 				'type'              => 'string',
557 557
 				'default'              => '=',
558
-				'enum'        		=> array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ),
558
+				'enum'        		=> array_map('trim', explode(',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE')),
559 559
 			),
560 560
 
561 561
             'meta_value'           => array(
562
-				'description'       => __( 'Filter items by custom field value.', 'invoicing' ),
562
+				'description'       => __('Filter items by custom field value.', 'invoicing'),
563 563
 				'type'              => 'string',
564 564
 			),
565 565
 
566 566
             'meta_compare'           => array(
567
-				'description'       => __( 'Comparison operator to test the `meta_value`.', 'invoicing' ),
567
+				'description'       => __('Comparison operator to test the `meta_value`.', 'invoicing'),
568 568
 				'type'              => 'string',
569 569
 				'default'              => '=',
570
-				'enum'        		=> array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ),
570
+				'enum'        		=> array_map('trim', explode(',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE')),
571 571
 			),
572 572
 
573 573
 			'meta_value_num'           => array(
574
-				'description'       => __( 'Filter items by a numeric custom field value.', 'invoicing' ),
574
+				'description'       => __('Filter items by a numeric custom field value.', 'invoicing'),
575 575
 				'type'              => 'integer',
576 576
 			),
577 577
 
578 578
 			// items after.
579 579
             'after_date'            => array(
580
-				'description'       => __( 'Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing' ),
580
+				'description'       => __('Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing'),
581 581
 				'type'              => 'string',
582 582
             ),
583 583
             
584 584
             // Number of results per page
585 585
             'limit'                 => array(
586
-				'description'       => __( 'Number of items to fetch.', 'invoicing' ),
586
+				'description'       => __('Number of items to fetch.', 'invoicing'),
587 587
 				'type'              => 'integer',
588
-				'default'           => (int) get_option( 'posts_per_page' ),
588
+				'default'           => (int) get_option('posts_per_page'),
589 589
             ),
590 590
 
591 591
             // Pagination
592 592
             'page'     => array(
593
-				'description'       => __( 'Current page to fetch.', 'invoicing' ),
593
+				'description'       => __('Current page to fetch.', 'invoicing'),
594 594
 				'type'              => 'integer',
595 595
 				'default'           => 1,
596 596
             ),
597 597
 
598 598
             // limit to certain items
599 599
             'include'  => array(
600
-                'description' => __( 'Limit result set to specific IDs.', 'invoicing' ),
600
+                'description' => __('Limit result set to specific IDs.', 'invoicing'),
601 601
                 'type'        => 'array',
602 602
                 'items'       => array(
603 603
                     'type' => 'integer',
@@ -607,7 +607,7 @@  discard block
 block discarded – undo
607 607
 			
608 608
 			// Exclude certain items
609 609
             'exclude'  => array(
610
-                'description' => __( 'Ensure result set excludes specific IDs.', 'invoicing' ),
610
+                'description' => __('Ensure result set excludes specific IDs.', 'invoicing'),
611 611
                 'type'        => 'array',
612 612
                 'items'       => array(
613 613
                     'type' => 'integer',
@@ -617,7 +617,7 @@  discard block
 block discarded – undo
617 617
 
618 618
             // Order items by
619 619
             'orderby'  		  => array(
620
-                'description' => __( 'Sort retrieved items by parameter.', 'invoicing' ),
620
+                'description' => __('Sort retrieved items by parameter.', 'invoicing'),
621 621
                 'type'        => 'string',
622 622
                 'default'     => 'date',
623 623
                 'enum'        => array(
@@ -632,10 +632,10 @@  discard block
 block discarded – undo
632 632
 
633 633
             // How to order
634 634
             'order'    => array(
635
-                'description' => __( 'Designates ascending or descending order of ítems.', 'invoicing' ),
635
+                'description' => __('Designates ascending or descending order of ítems.', 'invoicing'),
636 636
                 'type'        => 'string',
637 637
                 'default'     => 'DESC',
638
-                'enum'        => array( 'ASC', 'DESC' ),
638
+                'enum'        => array('ASC', 'DESC'),
639 639
             ),
640 640
         );
641 641
 
@@ -647,7 +647,7 @@  discard block
 block discarded – undo
647 647
 		 *
648 648
 		 * @param array        $query_params JSON Schema-formatted collection parameters.
649 649
 		 */
650
-		return apply_filters( "wpinv_rest_invoices_collection_params", $query_params );
650
+		return apply_filters("wpinv_rest_invoices_collection_params", $query_params);
651 651
 	}
652 652
 	
653 653
 	/**
@@ -657,7 +657,7 @@  discard block
 block discarded – undo
657 657
 	 * @param WP_REST_Request $request Full details about the request.
658 658
 	 * @return array Request collection parameters.
659 659
 	 */
660
-	public function get_request_collection_params( $request ) {
660
+	public function get_request_collection_params($request) {
661 661
 		
662 662
 		// Retrieve the list of registered invoice query parameters.
663 663
 		$registered = $this->get_collection_params();
@@ -674,7 +674,7 @@  discard block
 block discarded – undo
674 674
             'meta_compare'          => '=',
675 675
 			'meta_value_num'        => null,
676 676
             'after_date'            => null,
677
-            'limit'                 => (int) get_option( 'posts_per_page' ),
677
+            'limit'                 => (int) get_option('posts_per_page'),
678 678
 			'page'     				=> 1,
679 679
 			'include'				=> array(),
680 680
             'exclude'  				=> array(),
@@ -683,9 +683,9 @@  discard block
 block discarded – undo
683 683
 		);
684 684
 
685 685
 		// Add any params from the requests.
686
-		foreach ( array_keys( $registered ) as $key ) {
687
-            if ( isset( $request[ $key] ) ) {
688
-                $args[ $key ] = $request[ $key];
686
+		foreach (array_keys($registered) as $key) {
687
+            if (isset($request[$key])) {
688
+                $args[$key] = $request[$key];
689 689
             }
690 690
         }
691 691
 		
@@ -698,7 +698,7 @@  discard block
 block discarded – undo
698 698
 		 * @param array           $args    Request query args.
699 699
 		 * @param WP_REST_Request $request Full details about the request.
700 700
 		 */
701
-		return apply_filters( "wpinv_rest_invoices_collection_request_params", $args, $request );
701
+		return apply_filters("wpinv_rest_invoices_collection_request_params", $args, $request);
702 702
 	}
703 703
 	
704 704
 	/**
@@ -709,7 +709,7 @@  discard block
 block discarded – undo
709 709
 	 * @param WP_REST_Request $request Full details about the request.
710 710
 	 * @return array WP_Query parameters.
711 711
 	 */
712
-	public function get_collection_wp_query_params( $args, $request ) {
712
+	public function get_collection_wp_query_params($args, $request) {
713 713
 		
714 714
 		// Prepare the parameters.
715 715
 		$wp_query_args = array(
@@ -726,35 +726,35 @@  discard block
 block discarded – undo
726 726
 			'meta_value_num'   => $args['meta_value_num'],
727 727
 			'post__in'         => $args['include'],
728 728
 			'post__in'         => $args['exclude'],
729
-			'date_query'       => array( array() ),
729
+			'date_query'       => array(array()),
730 730
 			'fields'           => 'ids',
731 731
 			'orderby'          => $args['orderby'],
732 732
 			'order'            => $args['order'],
733 733
 		);
734 734
 
735 735
 		// Only admins can view other user's invoices.
736
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
736
+		if (!wpinv_current_user_can_manage_invoicing()) {
737 737
 			$wp_query_args['author'] = get_current_user_id();
738 738
 		}
739 739
 
740 740
 		// No date specific params provided.
741
-		if ( empty( $args['before_date'] ) && empty( $args['after_date'] ) ) {
742
-			unset( $wp_query_args['date_query'] );
741
+		if (empty($args['before_date']) && empty($args['after_date'])) {
742
+			unset($wp_query_args['date_query']);
743 743
 		}
744 744
 
745
-		if ( ! empty( $args['before_date'] ) ) {
745
+		if (!empty($args['before_date'])) {
746 746
 			$wp_query_args['date_query'][0]['before'] = $args['before_date'];
747 747
 		}
748 748
 
749
-		if ( ! empty( $args['after_date'] ) ) {
749
+		if (!empty($args['after_date'])) {
750 750
 			$wp_query_args['date_query'][0]['after'] = $args['after_date'];
751 751
 		}
752 752
 
753 753
 		// Remove empty variables.
754
-		$wp_query_args = array_filter( $wp_query_args );
754
+		$wp_query_args = array_filter($wp_query_args);
755 755
 
756 756
 		// This can be zero.
757
-		if ( ! is_null( $args['meta_value_num'] ) ) {
757
+		if (!is_null($args['meta_value_num'])) {
758 758
 			$wp_query_args['meta_value_num'] = $args['meta_value_num'];
759 759
 		}
760 760
 		
@@ -768,7 +768,7 @@  discard block
 block discarded – undo
768 768
 		 * @param array           $wp_query_args Generated WP_Query args args.
769 769
 		 * @param WP_REST_Request $request       Full details about the request.
770 770
 		 */
771
-		return apply_filters( "wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request );
771
+		return apply_filters("wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request);
772 772
     }
773 773
     
774 774
     /**
@@ -779,7 +779,7 @@  discard block
 block discarded – undo
779 779
 	 * @param object|string $post_type Post type name or object.
780 780
 	 * @return bool Whether the post type is allowed in REST.
781 781
 	 */
782
-	protected function check_is_post_type_allowed( $post_type ) {
782
+	protected function check_is_post_type_allowed($post_type) {
783 783
 		return true;
784 784
 	}
785 785
 
@@ -791,49 +791,49 @@  discard block
 block discarded – undo
791 791
 	 * @param WP_REST_Request $request Request object.
792 792
 	 * @return array|WP_Error Invoice Properties or WP_Error.
793 793
 	 */
794
-	protected function prepare_item_for_database( $request ) {
794
+	protected function prepare_item_for_database($request) {
795 795
 		$prepared_invoice = new stdClass();
796 796
 
797 797
 		// Post ID.
798
-		if ( isset( $request['id'] ) ) {
799
-			$existing_invoice = $this->get_post( $request['id'] );
800
-			if ( is_wp_error( $existing_invoice ) ) {
798
+		if (isset($request['id'])) {
799
+			$existing_invoice = $this->get_post($request['id']);
800
+			if (is_wp_error($existing_invoice)) {
801 801
 				return $existing_invoice;
802 802
 			}
803 803
 
804
-			$prepared_invoice->ID 		  = $existing_invoice->ID;
804
+			$prepared_invoice->ID = $existing_invoice->ID;
805 805
 			$prepared_invoice->invoice_id = $existing_invoice->ID;
806 806
 		}
807 807
 
808 808
 		$schema = $this->get_item_schema();
809 809
 
810 810
 		// Invoice owner.
811
-		if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) {
811
+		if (!empty($schema['properties']['user_id']) && isset($request['user_id'])) {
812 812
 			$prepared_invoice->user_id = (int) $request['user_id'];
813 813
 		}
814 814
 
815 815
 		// Cart details.
816
-		if ( ! empty( $schema['properties']['cart_details'] ) && isset( $request['cart_details'] ) ) {
816
+		if (!empty($schema['properties']['cart_details']) && isset($request['cart_details'])) {
817 817
 			$prepared_invoice->cart_details = (array) $request['cart_details'];
818 818
 		}
819 819
 
820 820
 		// Invoice status.
821
-		if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) {
821
+		if (!empty($schema['properties']['status']) && isset($request['status'])) {
822 822
 
823
-			if ( in_array( $request['status'], $this->get_post_statuses(), true ) ) {
823
+			if (in_array($request['status'], $this->get_post_statuses(), true)) {
824 824
 				$prepared_invoice->status = $request['status'];
825 825
 			}
826 826
 
827 827
 		}
828 828
 
829 829
 		// User info
830
-		if ( ! empty( $schema['properties']['user_info'] ) && isset( $request['user_info'] ) ) {
830
+		if (!empty($schema['properties']['user_info']) && isset($request['user_info'])) {
831 831
 			$prepared_invoice->user_info = array();
832 832
 			$user_info = (array) $request['user_info'];
833 833
 
834
-			foreach( $user_info as $prop => $value ) {
834
+			foreach ($user_info as $prop => $value) {
835 835
 
836
-				if ( ! empty( $schema['properties']['user_info']['properties'][$prop] ) ) {
836
+				if (!empty($schema['properties']['user_info']['properties'][$prop])) {
837 837
 
838 838
 					$prepared_invoice->user_info[$prop] = $value;
839 839
 		
@@ -844,59 +844,59 @@  discard block
 block discarded – undo
844 844
 		}
845 845
 
846 846
 		// IP
847
-		if ( ! empty( $schema['properties']['ip'] ) && isset( $request['ip'] ) ) {
847
+		if (!empty($schema['properties']['ip']) && isset($request['ip'])) {
848 848
 			$prepared_invoice->ip = $request['ip'];
849 849
 		}
850 850
 
851 851
 		// Payment details
852 852
 		$prepared_invoice->payment_details = array();
853 853
 
854
-		if ( ! empty( $schema['properties']['gateway'] ) && isset( $request['gateway'] ) ) {
854
+		if (!empty($schema['properties']['gateway']) && isset($request['gateway'])) {
855 855
 			$prepared_invoice->payment_details['gateway'] = $request['gateway'];
856 856
 		}
857 857
 
858
-		if ( ! empty( $schema['properties']['gateway_title'] ) && isset( $request['gateway_title'] ) ) {
858
+		if (!empty($schema['properties']['gateway_title']) && isset($request['gateway_title'])) {
859 859
 			$prepared_invoice->payment_details['gateway_title'] = $request['gateway_title'];
860 860
 		}
861 861
 
862
-		if ( ! empty( $schema['properties']['currency'] ) && isset( $request['currency'] ) ) {
862
+		if (!empty($schema['properties']['currency']) && isset($request['currency'])) {
863 863
 			$prepared_invoice->payment_details['currency'] = $request['currency'];
864 864
 		}
865 865
 
866
-		if ( ! empty( $schema['properties']['transaction_id'] ) && isset( $request['transaction_id'] ) ) {
866
+		if (!empty($schema['properties']['transaction_id']) && isset($request['transaction_id'])) {
867 867
 			$prepared_invoice->payment_details['transaction_id'] = $request['transaction_id'];
868 868
 		}
869 869
 
870 870
 		// Dates
871
-		if ( ! empty( $schema['properties']['date'] ) && isset( $request['date'] ) ) {
872
-			$post_date = rest_get_date_with_gmt( $request['date'] );
871
+		if (!empty($schema['properties']['date']) && isset($request['date'])) {
872
+			$post_date = rest_get_date_with_gmt($request['date']);
873 873
 
874
-			if ( ! empty( $post_date ) ) {
874
+			if (!empty($post_date)) {
875 875
 				$prepared_invoice->post_date = $post_date[0];
876 876
 			}
877 877
 			
878 878
 		}
879 879
 
880
-		if ( ! empty( $schema['properties']['due_date'] ) && isset( $request['due_date'] ) ) {
881
-			$due_date = rest_get_date_with_gmt( $request['due_date'] );
880
+		if (!empty($schema['properties']['due_date']) && isset($request['due_date'])) {
881
+			$due_date = rest_get_date_with_gmt($request['due_date']);
882 882
 
883
-			if ( ! empty( $due_date ) ) {
883
+			if (!empty($due_date)) {
884 884
 				$prepared_invoice->due_date = $due_date[0];
885 885
 			}
886 886
 
887 887
 		}
888 888
 
889
-		if ( ! empty( $schema['properties']['valid_until'] ) && isset( $request['valid_until'] ) ) {
889
+		if (!empty($schema['properties']['valid_until']) && isset($request['valid_until'])) {
890 890
 
891
-			if ( ! empty( $request['valid_until'] ) ) {
892
-				$prepared_invoice->valid_until = gmdate( 'Y-m-d', strtotime( $request['valid_until'] ) );
891
+			if (!empty($request['valid_until'])) {
892
+				$prepared_invoice->valid_until = gmdate('Y-m-d', strtotime($request['valid_until']));
893 893
 			} else {
894 894
 				$prepared_invoice->valid_until = '';
895 895
 			}
896 896
 
897 897
 		}
898 898
 
899
-		$invoice_data = (array) wp_unslash( $prepared_invoice );
899
+		$invoice_data = (array) wp_unslash($prepared_invoice);
900 900
 
901 901
 		/**
902 902
 		 * Filters an invoice before it is inserted via the REST API.
@@ -906,7 +906,7 @@  discard block
 block discarded – undo
906 906
 		 * @param array        $invoice_data An array of invoice data
907 907
 		 * @param WP_REST_Request $request       Request object.
908 908
 		 */
909
-		return apply_filters( "wpinv_rest_pre_insert_invoice", $invoice_data, $request );
909
+		return apply_filters("wpinv_rest_pre_insert_invoice", $invoice_data, $request);
910 910
 
911 911
 	}
912 912
 
@@ -919,20 +919,20 @@  discard block
 block discarded – undo
919 919
 	 * @param WP_REST_Request $request Request object.
920 920
 	 * @return WP_REST_Response Response object.
921 921
 	 */
922
-	public function prepare_item_for_response( $invoice, $request ) {
922
+	public function prepare_item_for_response($invoice, $request) {
923 923
 
924
-		$GLOBALS['post'] = get_post( $invoice->ID );
924
+		$GLOBALS['post'] = get_post($invoice->ID);
925 925
 
926
-		setup_postdata( $invoice->ID );
926
+		setup_postdata($invoice->ID);
927 927
 
928 928
 		// Fetch the fields to include in this response.
929
-		$fields = $this->get_fields_for_response( $request );
929
+		$fields = $this->get_fields_for_response($request);
930 930
 
931 931
 		// Base fields for every invoice.
932 932
 		$data = array();
933 933
 
934 934
 		// Set up ID
935
-		if ( rest_is_field_included( 'id', $fields ) ) {
935
+		if (rest_is_field_included('id', $fields)) {
936 936
 			$data['id'] = $invoice->ID;
937 937
 		}
938 938
 
@@ -947,79 +947,79 @@  discard block
 block discarded – undo
947 947
 			'status', 'status_nicename', 'post_type'
948 948
 		);
949 949
 
950
-		foreach( $invoice_properties as $property ) {
950
+		foreach ($invoice_properties as $property) {
951 951
 
952
-			if ( rest_is_field_included( $property, $fields ) ) {
953
-				$data[$property] = $invoice->get( $property );
952
+			if (rest_is_field_included($property, $fields)) {
953
+				$data[$property] = $invoice->get($property);
954 954
 			}
955 955
 
956 956
 		}
957 957
 
958 958
 		// Valid until
959
-		if ( rest_is_field_included( 'valid_until', $fields ) && $this->post_type === 'wpi_quote' ) {
960
-			$data['valid_until'] = get_post_meta( $invoice->ID, 'wpinv_quote_valid_until', true );
959
+		if (rest_is_field_included('valid_until', $fields) && $this->post_type === 'wpi_quote') {
960
+			$data['valid_until'] = get_post_meta($invoice->ID, 'wpinv_quote_valid_until', true);
961 961
 		}
962 962
 
963 963
 		// Cart details
964
-		if ( rest_is_field_included( 'cart_details', $fields ) ) {
965
-			$data['cart_details'] = $invoice->get( 'cart_details' );
964
+		if (rest_is_field_included('cart_details', $fields)) {
965
+			$data['cart_details'] = $invoice->get('cart_details');
966 966
 		}
967 967
 
968 968
 		//Dates
969
-		$invoice_properties = array( 'date', 'due_date', 'completed_date' );
969
+		$invoice_properties = array('date', 'due_date', 'completed_date');
970 970
 
971
-		foreach( $invoice_properties as $property ) {
971
+		foreach ($invoice_properties as $property) {
972 972
 
973
-			if ( rest_is_field_included( $property, $fields ) ) {
974
-				$data[$property] = $this->prepare_date_response( '0000-00-00 00:00:00', $invoice->get( $property ) );
973
+			if (rest_is_field_included($property, $fields)) {
974
+				$data[$property] = $this->prepare_date_response('0000-00-00 00:00:00', $invoice->get($property));
975 975
 			}
976 976
 
977 977
 		}
978 978
 
979 979
 		// User id
980
-		if ( rest_is_field_included( 'user_id', $fields ) ) {
981
-			$data['user_id'] = (int) $invoice->get( 'user_id' );
980
+		if (rest_is_field_included('user_id', $fields)) {
981
+			$data['user_id'] = (int) $invoice->get('user_id');
982 982
 		}
983 983
 
984 984
 		// User info
985
-		$user_info = array( 'first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone' );
985
+		$user_info = array('first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone');
986 986
 
987
-		foreach( $user_info as $property ) {
987
+		foreach ($user_info as $property) {
988 988
 
989
-			if ( rest_is_field_included( "user_info.$property", $fields ) ) {
990
-				$data['user_info'][$property] = $invoice->get( $property );
989
+			if (rest_is_field_included("user_info.$property", $fields)) {
990
+				$data['user_info'][$property] = $invoice->get($property);
991 991
 			}
992 992
 
993 993
 		}
994 994
 
995 995
 		// Slug
996
-		if ( rest_is_field_included( 'slug', $fields ) ) {
997
-			$data['slug'] = $invoice->get( 'post_name' );
996
+		if (rest_is_field_included('slug', $fields)) {
997
+			$data['slug'] = $invoice->get('post_name');
998 998
 		}
999 999
 
1000 1000
 		// View invoice link
1001
-		if ( rest_is_field_included( 'link', $fields ) ) {
1002
-			$data['link'] = esc_url( $invoice->get_view_url() );
1001
+		if (rest_is_field_included('link', $fields)) {
1002
+			$data['link'] = esc_url($invoice->get_view_url());
1003 1003
 		}
1004 1004
 
1005 1005
 
1006
-		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
1007
-		$data    = $this->add_additional_fields_to_object( $data, $request );
1008
-		$data    = $this->filter_response_by_context( $data, $context );
1006
+		$context = !empty($request['context']) ? $request['context'] : 'view';
1007
+		$data    = $this->add_additional_fields_to_object($data, $request);
1008
+		$data    = $this->filter_response_by_context($data, $context);
1009 1009
 
1010 1010
 		// Wrap the data in a response object.
1011
-		$response = rest_ensure_response( $data );
1011
+		$response = rest_ensure_response($data);
1012 1012
 
1013
-		$links = $this->prepare_links( $invoice );
1014
-		$response->add_links( $links );
1013
+		$links = $this->prepare_links($invoice);
1014
+		$response->add_links($links);
1015 1015
 
1016
-		if ( ! empty( $links['self']['href'] ) ) {
1017
-			$actions = $this->get_available_actions( $invoice, $request );
1016
+		if (!empty($links['self']['href'])) {
1017
+			$actions = $this->get_available_actions($invoice, $request);
1018 1018
 
1019 1019
 			$self = $links['self']['href'];
1020 1020
 
1021
-			foreach ( $actions as $rel ) {
1022
-				$response->add_link( $rel, $self );
1021
+			foreach ($actions as $rel) {
1022
+				$response->add_link($rel, $self);
1023 1023
 			}
1024 1024
 		}
1025 1025
 
@@ -1032,7 +1032,7 @@  discard block
 block discarded – undo
1032 1032
 		 * @param WPInv_Invoice    $invoice  The invoice object.
1033 1033
 		 * @param WP_REST_Request  $request  Request object.
1034 1034
 		 */
1035
-		return apply_filters( "wpinv_rest_prepare_invoice", $response, $invoice, $request );
1035
+		return apply_filters("wpinv_rest_prepare_invoice", $response, $invoice, $request);
1036 1036
 	}
1037 1037
 
1038 1038
 	/**
@@ -1045,57 +1045,57 @@  discard block
 block discarded – undo
1045 1045
 	 * @param WP_REST_Request $request Full details about the request.
1046 1046
 	 * @return array Fields to be included in the response.
1047 1047
 	 */
1048
-	public function get_fields_for_response( $request ) {
1048
+	public function get_fields_for_response($request) {
1049 1049
 		$schema     = $this->get_item_schema();
1050
-		$properties = isset( $schema['properties'] ) ? $schema['properties'] : array();
1050
+		$properties = isset($schema['properties']) ? $schema['properties'] : array();
1051 1051
 
1052 1052
 		$additional_fields = $this->get_additional_fields();
1053
-		foreach ( $additional_fields as $field_name => $field_options ) {
1053
+		foreach ($additional_fields as $field_name => $field_options) {
1054 1054
 			// For back-compat, include any field with an empty schema
1055 1055
 			// because it won't be present in $this->get_item_schema().
1056
-			if ( is_null( $field_options['schema'] ) ) {
1057
-				$properties[ $field_name ] = $field_options;
1056
+			if (is_null($field_options['schema'])) {
1057
+				$properties[$field_name] = $field_options;
1058 1058
 			}
1059 1059
 		}
1060 1060
 
1061 1061
 		// Exclude fields that specify a different context than the request context.
1062 1062
 		$context = $request['context'];
1063
-		if ( $context ) {
1064
-			foreach ( $properties as $name => $options ) {
1065
-				if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) {
1066
-					unset( $properties[ $name ] );
1063
+		if ($context) {
1064
+			foreach ($properties as $name => $options) {
1065
+				if (!empty($options['context']) && !in_array($context, $options['context'], true)) {
1066
+					unset($properties[$name]);
1067 1067
 				}
1068 1068
 			}
1069 1069
 		}
1070 1070
 
1071
-		$fields = array_keys( $properties );
1071
+		$fields = array_keys($properties);
1072 1072
 
1073
-		if ( ! isset( $request['_fields'] ) ) {
1073
+		if (!isset($request['_fields'])) {
1074 1074
 			return $fields;
1075 1075
 		}
1076
-		$requested_fields = wpinv_parse_list( $request['_fields'] );
1077
-		if ( 0 === count( $requested_fields ) ) {
1076
+		$requested_fields = wpinv_parse_list($request['_fields']);
1077
+		if (0 === count($requested_fields)) {
1078 1078
 			return $fields;
1079 1079
 		}
1080 1080
 		// Trim off outside whitespace from the comma delimited list.
1081
-		$requested_fields = array_map( 'trim', $requested_fields );
1081
+		$requested_fields = array_map('trim', $requested_fields);
1082 1082
 		// Always persist 'id', because it can be needed for add_additional_fields_to_object().
1083
-		if ( in_array( 'id', $fields, true ) ) {
1083
+		if (in_array('id', $fields, true)) {
1084 1084
 			$requested_fields[] = 'id';
1085 1085
 		}
1086 1086
 		// Return the list of all requested fields which appear in the schema.
1087 1087
 		return array_reduce(
1088 1088
 			$requested_fields,
1089
-			function( $response_fields, $field ) use ( $fields ) {
1090
-				if ( in_array( $field, $fields, true ) ) {
1089
+			function($response_fields, $field) use ($fields) {
1090
+				if (in_array($field, $fields, true)) {
1091 1091
 					$response_fields[] = $field;
1092 1092
 					return $response_fields;
1093 1093
 				}
1094 1094
 				// Check for nested fields if $field is not a direct match.
1095
-				$nested_fields = explode( '.', $field );
1095
+				$nested_fields = explode('.', $field);
1096 1096
 				// A nested field is included so long as its top-level property is
1097 1097
 				// present in the schema.
1098
-				if ( in_array( $nested_fields[0], $fields, true ) ) {
1098
+				if (in_array($nested_fields[0], $fields, true)) {
1099 1099
 					$response_fields[] = $field;
1100 1100
 				}
1101 1101
 				return $response_fields;
@@ -1114,8 +1114,8 @@  discard block
 block discarded – undo
1114 1114
 	public function get_item_schema() {
1115 1115
 
1116 1116
 		// Maybe retrieve the schema from cache.
1117
-		if ( $this->schema ) {
1118
-			return $this->add_additional_fields_schema( $this->schema );
1117
+		if ($this->schema) {
1118
+			return $this->add_additional_fields_schema($this->schema);
1119 1119
 		}
1120 1120
 
1121 1121
 		$schema = array(
@@ -1127,266 +1127,266 @@  discard block
 block discarded – undo
1127 1127
 			'properties' 		  => array(
1128 1128
 
1129 1129
 				'title'			  => array(
1130
-					'description' => __( 'The title for the invoice.', 'invoicing' ),
1130
+					'description' => __('The title for the invoice.', 'invoicing'),
1131 1131
 					'type'        => 'string',
1132
-					'context'     => array( 'view', 'edit', 'embed' ),
1132
+					'context'     => array('view', 'edit', 'embed'),
1133 1133
 					'readonly'    => true,
1134 1134
 				),
1135 1135
 
1136 1136
 				'user_id'		  => array(
1137
-					'description' => __( 'The ID of the owner of the invoice.', 'invoicing' ),
1137
+					'description' => __('The ID of the owner of the invoice.', 'invoicing'),
1138 1138
 					'type'        => 'integer',
1139
-					'context'     => array( 'view', 'edit', 'embed' ),
1139
+					'context'     => array('view', 'edit', 'embed'),
1140 1140
 				),
1141 1141
 
1142 1142
 				'email'		  	  => array(
1143
-					'description' => __( 'The email of the owner of the invoice.', 'invoicing' ),
1143
+					'description' => __('The email of the owner of the invoice.', 'invoicing'),
1144 1144
 					'type'        => 'string',
1145
-					'context'     => array( 'view', 'edit', 'embed' ),
1145
+					'context'     => array('view', 'edit', 'embed'),
1146 1146
 					'readonly'    => true,
1147 1147
 				),
1148 1148
 
1149 1149
 				'ip'			  => array(
1150
-					'description' => __( 'The IP of the owner of the invoice.', 'invoicing' ),
1150
+					'description' => __('The IP of the owner of the invoice.', 'invoicing'),
1151 1151
 					'type'        => 'string',
1152
-					'context'     => array( 'view', 'edit', 'embed' ),
1152
+					'context'     => array('view', 'edit', 'embed'),
1153 1153
 				),
1154 1154
 
1155 1155
 				'user_info'       => array(
1156
-					'description' => __( 'Information about the owner of the invoice.', 'invoicing' ),
1156
+					'description' => __('Information about the owner of the invoice.', 'invoicing'),
1157 1157
 					'type'        => 'object',
1158
-					'context'     => array( 'view', 'edit', 'embed' ),
1158
+					'context'     => array('view', 'edit', 'embed'),
1159 1159
 					'properties'  => array(
1160 1160
 
1161 1161
 						'first_name'      => array(
1162
-							'description' => __( 'The first name of the owner of the invoice.', 'invoicing' ),
1162
+							'description' => __('The first name of the owner of the invoice.', 'invoicing'),
1163 1163
 							'type'        => 'string',
1164
-							'context'     => array( 'view', 'edit', 'embed' ),
1164
+							'context'     => array('view', 'edit', 'embed'),
1165 1165
 						),
1166 1166
 
1167 1167
 						'last_name'       => array(
1168
-							'description' => __( 'The last name of the owner of the invoice.', 'invoicing' ),
1168
+							'description' => __('The last name of the owner of the invoice.', 'invoicing'),
1169 1169
 							'type'        => 'string',
1170
-							'context'     => array( 'view', 'edit', 'embed' ),
1170
+							'context'     => array('view', 'edit', 'embed'),
1171 1171
 						),
1172 1172
 
1173 1173
 						'company'         => array(
1174
-							'description' => __( 'The company of the owner of the invoice.', 'invoicing' ),
1174
+							'description' => __('The company of the owner of the invoice.', 'invoicing'),
1175 1175
 							'type'        => 'string',
1176
-							'context'     => array( 'view', 'edit', 'embed' ),
1176
+							'context'     => array('view', 'edit', 'embed'),
1177 1177
 						),
1178 1178
 
1179 1179
 						'vat_number'      => array(
1180
-							'description' => __( 'The VAT number of the owner of the invoice.', 'invoicing' ),
1180
+							'description' => __('The VAT number of the owner of the invoice.', 'invoicing'),
1181 1181
 							'type'        => 'string',
1182
-							'context'     => array( 'view', 'edit', 'embed' ),
1182
+							'context'     => array('view', 'edit', 'embed'),
1183 1183
 						),
1184 1184
 
1185 1185
 						'vat_rate'        => array(
1186
-							'description' => __( 'The VAT rate applied on the invoice.', 'invoicing' ),
1186
+							'description' => __('The VAT rate applied on the invoice.', 'invoicing'),
1187 1187
 							'type'        => 'string',
1188
-							'context'     => array( 'view', 'edit', 'embed' ),
1188
+							'context'     => array('view', 'edit', 'embed'),
1189 1189
 						),
1190 1190
 
1191 1191
 						'address'        => array(
1192
-							'description' => __( 'The address of the invoice owner.', 'invoicing' ),
1192
+							'description' => __('The address of the invoice owner.', 'invoicing'),
1193 1193
 							'type'        => 'string',
1194
-							'context'     => array( 'view', 'edit', 'embed' ),
1194
+							'context'     => array('view', 'edit', 'embed'),
1195 1195
 						),
1196 1196
 
1197 1197
 						'city'            => array(
1198
-							'description' => __( 'The city of the invoice owner.', 'invoicing' ),
1198
+							'description' => __('The city of the invoice owner.', 'invoicing'),
1199 1199
 							'type'        => 'string',
1200
-							'context'     => array( 'view', 'edit', 'embed' ),
1200
+							'context'     => array('view', 'edit', 'embed'),
1201 1201
 						),
1202 1202
 
1203 1203
 						'country'         => array(
1204
-							'description' => __( 'The country of the invoice owner.', 'invoicing' ),
1204
+							'description' => __('The country of the invoice owner.', 'invoicing'),
1205 1205
 							'type'        => 'string',
1206
-							'context'     => array( 'view', 'edit', 'embed' ),
1206
+							'context'     => array('view', 'edit', 'embed'),
1207 1207
 						),
1208 1208
 
1209 1209
 						'state'           => array(
1210
-							'description' => __( 'The state of the invoice owner.', 'invoicing' ),
1210
+							'description' => __('The state of the invoice owner.', 'invoicing'),
1211 1211
 							'type'        => 'string',
1212
-							'context'     => array( 'view', 'edit', 'embed' ),
1212
+							'context'     => array('view', 'edit', 'embed'),
1213 1213
 						),
1214 1214
 
1215 1215
 						'zip'             => array(
1216
-							'description' => __( 'The zip code of the invoice owner.', 'invoicing' ),
1216
+							'description' => __('The zip code of the invoice owner.', 'invoicing'),
1217 1217
 							'type'        => 'string',
1218
-							'context'     => array( 'view', 'edit', 'embed' ),
1218
+							'context'     => array('view', 'edit', 'embed'),
1219 1219
 						),
1220 1220
 
1221 1221
 						'phone'             => array(
1222
-							'description' => __( 'The phone number of the invoice owner.', 'invoicing' ),
1222
+							'description' => __('The phone number of the invoice owner.', 'invoicing'),
1223 1223
 							'type'        => 'string',
1224
-							'context'     => array( 'view', 'edit', 'embed' ),
1224
+							'context'     => array('view', 'edit', 'embed'),
1225 1225
 						),
1226 1226
 					),
1227 1227
 				),
1228 1228
 
1229 1229
 				'id'           => array(
1230
-					'description' => __( 'Unique identifier for the invoice.', 'invoicing' ),
1230
+					'description' => __('Unique identifier for the invoice.', 'invoicing'),
1231 1231
 					'type'        => 'integer',
1232
-					'context'     => array( 'view', 'edit', 'embed' ),
1232
+					'context'     => array('view', 'edit', 'embed'),
1233 1233
 					'readonly'    => true,
1234 1234
 				),
1235 1235
 
1236 1236
 				'key'			  => array(
1237
-					'description' => __( 'A unique key for the invoice.', 'invoicing' ),
1237
+					'description' => __('A unique key for the invoice.', 'invoicing'),
1238 1238
 					'type'        => 'string',
1239
-					'context'     => array( 'view', 'edit', 'embed' ),
1239
+					'context'     => array('view', 'edit', 'embed'),
1240 1240
 					'readonly'    => true,
1241 1241
 				),
1242 1242
 
1243 1243
 				'number'		  => array(
1244
-					'description' => __( 'The invoice number.', 'invoicing' ),
1244
+					'description' => __('The invoice number.', 'invoicing'),
1245 1245
 					'type'        => 'string',
1246
-					'context'     => array( 'view', 'edit', 'embed' ),
1246
+					'context'     => array('view', 'edit', 'embed'),
1247 1247
 					'readonly'    => true,
1248 1248
 				),
1249 1249
 
1250 1250
 				'transaction_id'  => array(
1251
-					'description' => __( 'The transaction id of the invoice.', 'invoicing' ),
1251
+					'description' => __('The transaction id of the invoice.', 'invoicing'),
1252 1252
 					'type'        => 'string',
1253
-					'context'     => array( 'view', 'edit', 'embed' ),
1253
+					'context'     => array('view', 'edit', 'embed'),
1254 1254
 				),
1255 1255
 
1256 1256
 				'gateway'		  => array(
1257
-					'description' => __( 'The gateway used to process the invoice.', 'invoicing' ),
1257
+					'description' => __('The gateway used to process the invoice.', 'invoicing'),
1258 1258
 					'type'        => 'string',
1259
-					'context'     => array( 'view', 'edit', 'embed' ),
1259
+					'context'     => array('view', 'edit', 'embed'),
1260 1260
 				),
1261 1261
 
1262 1262
 				'gateway_title'	  => array(
1263
-					'description' => __( 'The title of the gateway used to process the invoice.', 'invoicing' ),
1263
+					'description' => __('The title of the gateway used to process the invoice.', 'invoicing'),
1264 1264
 					'type'        => 'string',
1265
-					'context'     => array( 'view', 'edit', 'embed' ),
1265
+					'context'     => array('view', 'edit', 'embed'),
1266 1266
 				),
1267 1267
 
1268 1268
 				'total'	  		  => array(
1269
-					'description' => __( 'The total amount of the invoice.', 'invoicing' ),
1269
+					'description' => __('The total amount of the invoice.', 'invoicing'),
1270 1270
 					'type'        => 'number',
1271
-					'context'     => array( 'view', 'edit', 'embed' ),
1271
+					'context'     => array('view', 'edit', 'embed'),
1272 1272
 					'readonly'    => true,
1273 1273
 				),
1274 1274
 
1275 1275
 				'discount'		  => array(
1276
-					'description' => __( 'The discount applied to the invoice.', 'invoicing' ),
1276
+					'description' => __('The discount applied to the invoice.', 'invoicing'),
1277 1277
 					'type'        => 'number',
1278
-					'context'     => array( 'view', 'edit', 'embed' ),
1278
+					'context'     => array('view', 'edit', 'embed'),
1279 1279
 					'readonly'    => true,
1280 1280
 				),
1281 1281
 
1282 1282
 				'discount_code'	  => array(
1283
-					'description' => __( 'The discount code applied to the invoice.', 'invoicing' ),
1283
+					'description' => __('The discount code applied to the invoice.', 'invoicing'),
1284 1284
 					'type'        => 'string',
1285
-					'context'     => array( 'view', 'edit', 'embed' ),
1285
+					'context'     => array('view', 'edit', 'embed'),
1286 1286
 					'readonly'    => true,
1287 1287
 				),
1288 1288
 
1289 1289
 				'tax'	  		  => array(
1290
-					'description' => __( 'The tax applied to the invoice.', 'invoicing' ),
1290
+					'description' => __('The tax applied to the invoice.', 'invoicing'),
1291 1291
 					'type'        => 'number',
1292
-					'context'     => array( 'view', 'edit', 'embed' ),
1292
+					'context'     => array('view', 'edit', 'embed'),
1293 1293
 					'readonly'    => true,
1294 1294
 				),
1295 1295
 
1296 1296
 				'fees_total'	  => array(
1297
-					'description' => __( 'The total fees applied to the invoice.', 'invoicing' ),
1297
+					'description' => __('The total fees applied to the invoice.', 'invoicing'),
1298 1298
 					'type'        => 'number',
1299
-					'context'     => array( 'view', 'edit', 'embed' ),
1299
+					'context'     => array('view', 'edit', 'embed'),
1300 1300
 					'readonly'    => true,
1301 1301
 				),
1302 1302
 
1303 1303
 				'subtotal'	  	  => array(
1304
-					'description' => __( 'The sub-total for the invoice.', 'invoicing' ),
1304
+					'description' => __('The sub-total for the invoice.', 'invoicing'),
1305 1305
 					'type'        => 'number',
1306
-					'context'     => array( 'view', 'edit', 'embed' ),
1306
+					'context'     => array('view', 'edit', 'embed'),
1307 1307
 					'readonly'    => true,
1308 1308
 				),
1309 1309
 
1310 1310
 				'currency'	  	  => array(
1311
-					'description' => __( 'The currency used to process the invoice.', 'invoicing' ),
1311
+					'description' => __('The currency used to process the invoice.', 'invoicing'),
1312 1312
 					'type'        => 'string',
1313
-					'context'     => array( 'view', 'edit', 'embed' ),
1313
+					'context'     => array('view', 'edit', 'embed'),
1314 1314
 				),
1315 1315
 
1316 1316
 				'cart_details'	  => array(
1317
-					'description' => __( 'The cart details for invoice.', 'invoicing' ),
1317
+					'description' => __('The cart details for invoice.', 'invoicing'),
1318 1318
 					'type'        => 'array',
1319
-					'context'     => array( 'view', 'edit', 'embed' ),
1319
+					'context'     => array('view', 'edit', 'embed'),
1320 1320
 					'required'	  => true,
1321 1321
 				),
1322 1322
 
1323 1323
 				'date'         => array(
1324
-					'description' => __( "The date the invoice was published, in the site's timezone.", 'invoicing' ),
1325
-					'type'        => array( 'string', 'null' ),
1324
+					'description' => __("The date the invoice was published, in the site's timezone.", 'invoicing'),
1325
+					'type'        => array('string', 'null'),
1326 1326
 					'format'      => 'date-time',
1327
-					'context'     => array( 'view', 'edit', 'embed' ),
1327
+					'context'     => array('view', 'edit', 'embed'),
1328 1328
 				),
1329 1329
 
1330 1330
 				'due_date'     => array(
1331
-					'description' => __( 'The due date for the invoice.', 'invoicing' ),
1332
-					'type'        => array( 'string', 'null' ),
1331
+					'description' => __('The due date for the invoice.', 'invoicing'),
1332
+					'type'        => array('string', 'null'),
1333 1333
 					'format'      => 'date-time',
1334
-					'context'     => array( 'view', 'edit', 'embed' ),
1334
+					'context'     => array('view', 'edit', 'embed'),
1335 1335
 				),
1336 1336
 
1337 1337
 				'completed_date'  => array(
1338
-					'description' => __( 'The completed date for the invoice.', 'invoicing' ),
1339
-					'type'        => array( 'string', 'null' ),
1338
+					'description' => __('The completed date for the invoice.', 'invoicing'),
1339
+					'type'        => array('string', 'null'),
1340 1340
 					'format'      => 'date-time',
1341
-					'context'     => array( 'view', 'edit', 'embed' ),
1341
+					'context'     => array('view', 'edit', 'embed'),
1342 1342
 					'readonly'    => true,
1343 1343
 				),
1344 1344
 				
1345 1345
 				'link'         => array(
1346
-					'description' => __( 'URL to the invoice.', 'invoicing' ),
1346
+					'description' => __('URL to the invoice.', 'invoicing'),
1347 1347
 					'type'        => 'string',
1348 1348
 					'format'      => 'uri',
1349
-					'context'     => array( 'view', 'edit', 'embed' ),
1349
+					'context'     => array('view', 'edit', 'embed'),
1350 1350
 					'readonly'    => true,
1351 1351
 				),
1352 1352
 
1353 1353
 				'mode'       	  => array(
1354
-					'description' => __( 'The mode used to process the invoice.', 'invoicing' ),
1354
+					'description' => __('The mode used to process the invoice.', 'invoicing'),
1355 1355
 					'type'        => 'string',
1356
-					'enum'        => array( 'live', 'test' ),
1357
-					'context'     => array( 'view', 'edit', 'embed' ),
1356
+					'enum'        => array('live', 'test'),
1357
+					'context'     => array('view', 'edit', 'embed'),
1358 1358
 					'readonly'    => true,
1359 1359
 				),
1360 1360
 
1361 1361
 				'slug'       	  => array(
1362
-					'description' => __( 'An alphanumeric identifier for the invoice.', 'invoicing' ),
1362
+					'description' => __('An alphanumeric identifier for the invoice.', 'invoicing'),
1363 1363
 					'type'        => 'string',
1364
-					'context'     => array( 'view', 'edit', 'embed' ),
1364
+					'context'     => array('view', 'edit', 'embed'),
1365 1365
 					'arg_options' => array(
1366
-						'sanitize_callback' => array( $this, 'sanitize_slug' ),
1366
+						'sanitize_callback' => array($this, 'sanitize_slug'),
1367 1367
 					),
1368 1368
 					'readonly'    => true,
1369 1369
 				),
1370 1370
 
1371 1371
 				'status'       	  => array(
1372
-					'description' => __( 'A named status for the invoice.', 'invoicing' ),
1372
+					'description' => __('A named status for the invoice.', 'invoicing'),
1373 1373
 					'type'        => 'string',
1374 1374
 					'enum'        => $this->get_post_statuses(),
1375
-					'context'     => array( 'view', 'edit' ),
1375
+					'context'     => array('view', 'edit'),
1376 1376
 					'default'	  => 'wpi-pending',
1377 1377
 				),
1378 1378
 
1379 1379
 				'status_nicename' => array(
1380
-					'description' => __( 'A human-readable status name for the invoice.', 'invoicing' ),
1380
+					'description' => __('A human-readable status name for the invoice.', 'invoicing'),
1381 1381
 					'type'        => 'string',
1382
-					'context'     => array( 'view', 'embed' ),
1382
+					'context'     => array('view', 'embed'),
1383 1383
 					'readonly'    => true,
1384 1384
 				),
1385 1385
 
1386 1386
 				'post_type'       => array(
1387
-					'description' => __( 'The post type for the invoice.', 'invoicing' ),
1387
+					'description' => __('The post type for the invoice.', 'invoicing'),
1388 1388
 					'type'        => 'string',
1389
-					'context'     => array( 'view' ),
1389
+					'context'     => array('view'),
1390 1390
 					'readonly'    => true,
1391 1391
 				),
1392 1392
 			),
@@ -1404,12 +1404,12 @@  discard block
 block discarded – undo
1404 1404
 		 *
1405 1405
 		 * @param array   $schema    The invoice schema.
1406 1406
 		 */
1407
-        $schema = apply_filters( "wpinv_rest_invoice_schema", $schema );
1407
+        $schema = apply_filters("wpinv_rest_invoice_schema", $schema);
1408 1408
 
1409 1409
 		// Cache the invoice schema.
1410 1410
 		$this->schema = $schema;
1411 1411
 		
1412
-		return $this->add_additional_fields_schema( $this->schema );
1412
+		return $this->add_additional_fields_schema($this->schema);
1413 1413
 	}
1414 1414
 
1415 1415
 	/**
@@ -1421,20 +1421,20 @@  discard block
 block discarded – undo
1421 1421
 	 */
1422 1422
 	protected function get_schema_links() {
1423 1423
 
1424
-		$href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" );
1424
+		$href = rest_url("{$this->namespace}/{$this->rest_base}/{id}");
1425 1425
 
1426 1426
 		$links = array();
1427 1427
 
1428 1428
 		$links[] = array(
1429 1429
 			'rel'          => 'https://api.w.org/action-publish',
1430
-			'title'        => __( 'The current user can mark this invoice as completed.', 'invoicing' ),
1430
+			'title'        => __('The current user can mark this invoice as completed.', 'invoicing'),
1431 1431
 			'href'         => $href,
1432 1432
 			'targetSchema' => array(
1433 1433
 				'type'       => 'object',
1434 1434
 				'properties' => array(
1435 1435
 					'status' => array(
1436 1436
 						'type' => 'string',
1437
-						'enum' => array( 'publish', 'wpi-renewal' ),
1437
+						'enum' => array('publish', 'wpi-renewal'),
1438 1438
 					),
1439 1439
 				),
1440 1440
 			),
@@ -1442,7 +1442,7 @@  discard block
 block discarded – undo
1442 1442
 
1443 1443
 		$links[] = array(
1444 1444
 			'rel'          => 'https://api.w.org/action-assign-author',
1445
-			'title'        => __( 'The current user can change the owner of this invoice.', 'invoicing' ),
1445
+			'title'        => __('The current user can change the owner of this invoice.', 'invoicing'),
1446 1446
 			'href'         => $href,
1447 1447
 			'targetSchema' => array(
1448 1448
 				'type'       => 'object',
@@ -1465,24 +1465,24 @@  discard block
 block discarded – undo
1465 1465
 	 * @param WPInv_Invoice $invoice Invoice Object.
1466 1466
 	 * @return array Links for the given invoice.
1467 1467
 	 */
1468
-	protected function prepare_links( $invoice ) {
1468
+	protected function prepare_links($invoice) {
1469 1469
 
1470 1470
 		// Prepare the base REST API endpoint for invoices.
1471
-		$base = sprintf( '%s/%s', $this->namespace, $this->rest_base );
1471
+		$base = sprintf('%s/%s', $this->namespace, $this->rest_base);
1472 1472
 
1473 1473
 		// Entity meta.
1474 1474
 		$links = array(
1475 1475
 			'self'       => array(
1476
-				'href' => rest_url( trailingslashit( $base ) . $invoice->ID ),
1476
+				'href' => rest_url(trailingslashit($base) . $invoice->ID),
1477 1477
 			),
1478 1478
 			'collection' => array(
1479
-				'href' => rest_url( $base ),
1479
+				'href' => rest_url($base),
1480 1480
 			),
1481 1481
 		);
1482 1482
 
1483
-		if ( ! empty( $invoice->user_id ) ) {
1483
+		if (!empty($invoice->user_id)) {
1484 1484
 			$links['user'] = array(
1485
-				'href'       => rest_url( 'wp/v2/users/' . $invoice->user_id ),
1485
+				'href'       => rest_url('wp/v2/users/' . $invoice->user_id),
1486 1486
 				'embeddable' => true,
1487 1487
 			);
1488 1488
 		}
@@ -1496,7 +1496,7 @@  discard block
 block discarded – undo
1496 1496
 		 *
1497 1497
 		 * @param array   $links    Rest links.
1498 1498
 		 */
1499
-		return apply_filters( "wpinv_rest_invoice_links", $links );
1499
+		return apply_filters("wpinv_rest_invoice_links", $links);
1500 1500
 
1501 1501
 	}
1502 1502
 
@@ -1509,24 +1509,24 @@  discard block
 block discarded – undo
1509 1509
 	 * @param WP_REST_Request $request Request object.
1510 1510
 	 * @return array List of link relations.
1511 1511
 	 */
1512
-	protected function get_available_actions( $invoice, $request ) {
1512
+	protected function get_available_actions($invoice, $request) {
1513 1513
 
1514
-		if ( 'edit' !== $request['context'] ) {
1514
+		if ('edit' !== $request['context']) {
1515 1515
 			return array();
1516 1516
 		}
1517 1517
 
1518 1518
 		$rels = array();
1519 1519
 
1520 1520
 		// Retrieve the post type object.
1521
-		$post_type = get_post_type_object( $invoice->post_type );
1521
+		$post_type = get_post_type_object($invoice->post_type);
1522 1522
 
1523 1523
 		// Mark invoice as completed.
1524
-		if ( current_user_can( $post_type->cap->publish_posts ) ) {
1524
+		if (current_user_can($post_type->cap->publish_posts)) {
1525 1525
 			$rels[] = 'https://api.w.org/action-publish';
1526 1526
 		}
1527 1527
 
1528 1528
 		// Change the owner of the invoice.
1529
-		if ( current_user_can( $post_type->cap->edit_others_posts ) ) {
1529
+		if (current_user_can($post_type->cap->edit_others_posts)) {
1530 1530
 			$rels[] = 'https://api.w.org/action-assign-author';
1531 1531
 		}
1532 1532
 
@@ -1539,7 +1539,7 @@  discard block
 block discarded – undo
1539 1539
 		 *
1540 1540
 		 * @param array   $rels    Available link relations.
1541 1541
 		 */
1542
-		return apply_filters( "wpinv_rest_invoice_link_relations", $rels );
1542
+		return apply_filters("wpinv_rest_invoice_link_relations", $rels);
1543 1543
 	}
1544 1544
 
1545 1545
 	/**
@@ -1552,8 +1552,8 @@  discard block
 block discarded – undo
1552 1552
 	 * @param string          $parameter Additional parameter to pass to validation.
1553 1553
 	 * @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
1554 1554
 	 */
1555
-	public function sanitize_post_statuses( $statuses, $request, $parameter ) {
1556
-		return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() );
1555
+	public function sanitize_post_statuses($statuses, $request, $parameter) {
1556
+		return array_intersect(wp_parse_slug_list($statuses), $this->get_post_statuses());
1557 1557
 	}
1558 1558
 
1559 1559
 	/**
@@ -1564,7 +1564,7 @@  discard block
 block discarded – undo
1564 1564
 	 * @return array A list of registered item statuses.
1565 1565
 	 */
1566 1566
 	public function get_post_statuses() {
1567
-		return array_keys( wpinv_get_invoice_statuses( true, true ) );
1567
+		return array_keys(wpinv_get_invoice_statuses(true, true));
1568 1568
 	}
1569 1569
     
1570 1570
 }
1571 1571
\ No newline at end of file
Please login to merge, or discard this patch.
includes/class-wpinv-api.php 2 patches
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -58,14 +58,14 @@  discard block
 block discarded – undo
58 58
     }
59 59
 
60 60
 
61
-	/**
62
-	 * Registers routes
63
-	 *
61
+    /**
62
+     * Registers routes
63
+     *
64 64
      * @since 1.0.13
65
-	 */
66
-	public function register_rest_routes() {
65
+     */
66
+    public function register_rest_routes() {
67 67
 
68
-		// Invoices.
68
+        // Invoices.
69 69
         $this->invoices_controller->register_routes();
70 70
         
71 71
         // Items.
@@ -75,15 +75,15 @@  discard block
 block discarded – undo
75 75
         $this->discounts_controller->register_routes();
76 76
 
77 77
         /**
78
-		 * Fires when registering Invoicing REST routes.
79
-		 *
80
-		 *
81
-		 * @since 1.0.15
82
-		 *
83
-		 *
84
-		 * @param array           $invoice_data Invoice properties.
85
-		 * @param WP_REST_Request $request The request used.
86
-		 */
78
+         * Fires when registering Invoicing REST routes.
79
+         *
80
+         *
81
+         * @since 1.0.15
82
+         *
83
+         *
84
+         * @param array           $invoice_data Invoice properties.
85
+         * @param WP_REST_Request $request The request used.
86
+         */
87 87
         do_action( "wpinv_register_rest_routes", $this );
88 88
         
89 89
     }
Please login to merge, or discard this patch.
Spacing   +12 added lines, -12 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
 
@@ -19,7 +19,7 @@  discard block
 block discarded – undo
19 19
     /**
20 20
      * @param string A prefix for our REST routes
21 21
      */
22
-    public $api_namespace    = '';
22
+    public $api_namespace = '';
23 23
 
24 24
     /**
25 25
      * @param WPInv_REST_Invoice_Controller Invoices controller
@@ -42,19 +42,19 @@  discard block
 block discarded – undo
42 42
      * @since 1.0.13
43 43
      * Sets the API namespace and inits hooks
44 44
      */
45
-    public function __construct( $api_namespace = 'invoicing/v1' ) {
45
+    public function __construct($api_namespace = 'invoicing/v1') {
46 46
 
47 47
         // Include controllers and related files
48 48
         $this->includes();
49 49
 
50 50
         // Set up class variables
51
-        $this->api_namespace       = apply_filters( 'wpinv_rest_api_namespace', $api_namespace );
52
-        $this->invoices_controller = new WPInv_REST_Invoice_Controller( $this->api_namespace );
53
-        $this->items_controller    = new WPInv_REST_Items_Controller( $this->api_namespace );
54
-        $this->discounts_controller= new WPInv_REST_Discounts_Controller( $this->api_namespace );
51
+        $this->api_namespace       = apply_filters('wpinv_rest_api_namespace', $api_namespace);
52
+        $this->invoices_controller = new WPInv_REST_Invoice_Controller($this->api_namespace);
53
+        $this->items_controller    = new WPInv_REST_Items_Controller($this->api_namespace);
54
+        $this->discounts_controller = new WPInv_REST_Discounts_Controller($this->api_namespace);
55 55
 
56 56
         //Register REST routes
57
-        add_action( 'rest_api_init', array( $this, 'register_rest_routes' ) );
57
+        add_action('rest_api_init', array($this, 'register_rest_routes'));
58 58
     }
59 59
 
60 60
 
@@ -84,7 +84,7 @@  discard block
 block discarded – undo
84 84
 		 * @param array           $invoice_data Invoice properties.
85 85
 		 * @param WP_REST_Request $request The request used.
86 86
 		 */
87
-        do_action( "wpinv_register_rest_routes", $this );
87
+        do_action("wpinv_register_rest_routes", $this);
88 88
         
89 89
     }
90 90
 
@@ -97,13 +97,13 @@  discard block
 block discarded – undo
97 97
     protected function includes() {
98 98
         
99 99
         // Invoices
100
-        require_once( WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-invoice-controller.php' );
100
+        require_once(WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-invoice-controller.php');
101 101
 
102 102
         // Items
103
-        require_once( WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-items-controller.php' );
103
+        require_once(WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-items-controller.php');
104 104
 
105 105
         // Discounts
106
-        require_once( WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-discounts-controller.php' );
106
+        require_once(WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-discounts-controller.php');
107 107
 
108 108
     }
109 109
     
Please login to merge, or discard this patch.
includes/wpinv-subscription.php 2 patches
Indentation   +456 added lines, -456 removed lines patch added patch discarded remove patch
@@ -2,7 +2,7 @@  discard block
 block discarded – undo
2 2
 
3 3
 // Exit if accessed directly
4 4
 if ( ! defined( 'ABSPATH' ) ) {
5
-	exit;
5
+    exit;
6 6
 }
7 7
 
8 8
 
@@ -13,183 +13,183 @@  discard block
 block discarded – undo
13 13
  */
14 14
 class WPInv_Subscription {
15 15
 
16
-	private $subs_db;
16
+    private $subs_db;
17
+
18
+    public $id                = 0;
19
+    public $customer_id       = 0;
20
+    public $period            = '';
21
+    public $initial_amount    = '';
22
+    public $recurring_amount  = '';
23
+    public $bill_times        = 0;
24
+    public $transaction_id    = '';
25
+    public $parent_payment_id = 0;
26
+    public $product_id        = 0;
27
+    public $created           = '0000-00-00 00:00:00';
28
+    public $expiration        = '0000-00-00 00:00:00';
29
+    public $trial_period      = '';
30
+    public $status            = 'pending';
31
+    public $profile_id        = '';
32
+    public $gateway           = '';
33
+    public $customer;
17 34
 
18
-	public $id                = 0;
19
-	public $customer_id       = 0;
20
-	public $period            = '';
21
-	public $initial_amount    = '';
22
-	public $recurring_amount  = '';
23
-	public $bill_times        = 0;
24
-	public $transaction_id    = '';
25
-	public $parent_payment_id = 0;
26
-	public $product_id        = 0;
27
-	public $created           = '0000-00-00 00:00:00';
28
-	public $expiration        = '0000-00-00 00:00:00';
29
-	public $trial_period      = '';
30
-	public $status            = 'pending';
31
-	public $profile_id        = '';
32
-	public $gateway           = '';
33
-	public $customer;
34
-
35
-	/**
36
-	 * Get us started
37
-	 *
38
-	 * @since  1.0.0
39
-	 * @return void
40
-	 */
41
-	function __construct( $_id_or_object = 0, $_by_profile_id = false ) {
35
+    /**
36
+     * Get us started
37
+     *
38
+     * @since  1.0.0
39
+     * @return void
40
+     */
41
+    function __construct( $_id_or_object = 0, $_by_profile_id = false ) {
42 42
 
43
-		$this->subs_db = new WPInv_Subscriptions_DB;
43
+        $this->subs_db = new WPInv_Subscriptions_DB;
44 44
 
45
-		if( $_by_profile_id ) {
45
+        if( $_by_profile_id ) {
46 46
 
47
-			$_sub = $this->subs_db->get_by( 'profile_id', $_id_or_object );
47
+            $_sub = $this->subs_db->get_by( 'profile_id', $_id_or_object );
48 48
 
49
-			if( empty( $_sub ) ) {
50
-				return false;
51
-			}
49
+            if( empty( $_sub ) ) {
50
+                return false;
51
+            }
52 52
 
53
-			$_id_or_object = $_sub;
53
+            $_id_or_object = $_sub;
54 54
 
55
-		}
55
+        }
56 56
 
57
-		return $this->setup_subscription( $_id_or_object );
58
-	}
57
+        return $this->setup_subscription( $_id_or_object );
58
+    }
59 59
 
60
-	/**
61
-	 * Setup the subscription object
62
-	 *
63
-	 * @since  1.0.0
64
-	 * @return void
65
-	 */
66
-	private function setup_subscription( $id_or_object = 0 ) {
60
+    /**
61
+     * Setup the subscription object
62
+     *
63
+     * @since  1.0.0
64
+     * @return void
65
+     */
66
+    private function setup_subscription( $id_or_object = 0 ) {
67 67
 
68
-		if( empty( $id_or_object ) ) {
69
-			return false;
70
-		}
68
+        if( empty( $id_or_object ) ) {
69
+            return false;
70
+        }
71 71
 
72
-		if( is_numeric( $id_or_object ) ) {
72
+        if( is_numeric( $id_or_object ) ) {
73 73
 
74
-			$sub = $this->subs_db->get( $id_or_object );
74
+            $sub = $this->subs_db->get( $id_or_object );
75 75
 
76
-		} elseif( is_object( $id_or_object ) ) {
76
+        } elseif( is_object( $id_or_object ) ) {
77 77
 
78
-			$sub = $id_or_object;
78
+            $sub = $id_or_object;
79 79
 
80
-		}
80
+        }
81 81
 
82
-		if( empty( $sub ) ) {
83
-			return false;
84
-		}
82
+        if( empty( $sub ) ) {
83
+            return false;
84
+        }
85 85
 
86
-		foreach( $sub as $key => $value ) {
87
-			$this->$key = $value;
88
-		}
86
+        foreach( $sub as $key => $value ) {
87
+            $this->$key = $value;
88
+        }
89 89
 
90
-		$this->customer = get_userdata( $this->customer_id );
91
-		$this->gateway  = wpinv_get_payment_gateway( $this->parent_payment_id );
90
+        $this->customer = get_userdata( $this->customer_id );
91
+        $this->gateway  = wpinv_get_payment_gateway( $this->parent_payment_id );
92 92
 
93
-		do_action( 'wpinv_recurring_setup_subscription', $this );
93
+        do_action( 'wpinv_recurring_setup_subscription', $this );
94 94
 
95
-		return $this;
96
-	}
95
+        return $this;
96
+    }
97 97
 
98
-	/**
99
-	 * Magic __get function to dispatch a call to retrieve a private property
100
-	 *
101
-	 * @since 1.0.0
102
-	 */
103
-	public function __get( $key ) {
98
+    /**
99
+     * Magic __get function to dispatch a call to retrieve a private property
100
+     *
101
+     * @since 1.0.0
102
+     */
103
+    public function __get( $key ) {
104 104
 
105
-		if( method_exists( $this, 'get_' . $key ) ) {
105
+        if( method_exists( $this, 'get_' . $key ) ) {
106 106
 
107
-			return call_user_func( array( $this, 'get_' . $key ) );
107
+            return call_user_func( array( $this, 'get_' . $key ) );
108 108
 
109
-		} else {
109
+        } else {
110 110
 
111
-			return new WP_Error( 'wpinv-subscription-invalid-property', sprintf( __( 'Can\'t get property %s', 'invoicing' ), $key ) );
111
+            return new WP_Error( 'wpinv-subscription-invalid-property', sprintf( __( 'Can\'t get property %s', 'invoicing' ), $key ) );
112 112
 
113
-		}
113
+        }
114 114
 
115
-	}
115
+    }
116 116
 
117
-	/**
118
-	 * Creates a subscription
119
-	 *
120
-	 * @since  1.0.0
121
-	 * @param  array  $data Array of attributes for a subscription
122
-	 * @return mixed  false if data isn't passed and class not instantiated for creation
123
-	 */
124
-	public function create( $data = array() ) {
117
+    /**
118
+     * Creates a subscription
119
+     *
120
+     * @since  1.0.0
121
+     * @param  array  $data Array of attributes for a subscription
122
+     * @return mixed  false if data isn't passed and class not instantiated for creation
123
+     */
124
+    public function create( $data = array() ) {
125 125
 
126
-		if ( $this->id != 0 ) {
127
-			return false;
128
-		}
126
+        if ( $this->id != 0 ) {
127
+            return false;
128
+        }
129 129
 
130
-		$defaults = array(
131
-			'customer_id'       => 0,
132
-			'frequency'         => '',
133
-			'period'            => '',
134
-			'initial_amount'    => '',
135
-			'recurring_amount'  => '',
136
-			'bill_times'        => 0,
137
-			'parent_payment_id' => 0,
138
-			'product_id'        => 0,
139
-			'created'           => '',
140
-			'expiration'        => '',
141
-			'status'            => '',
142
-			'profile_id'        => '',
143
-		);
130
+        $defaults = array(
131
+            'customer_id'       => 0,
132
+            'frequency'         => '',
133
+            'period'            => '',
134
+            'initial_amount'    => '',
135
+            'recurring_amount'  => '',
136
+            'bill_times'        => 0,
137
+            'parent_payment_id' => 0,
138
+            'product_id'        => 0,
139
+            'created'           => '',
140
+            'expiration'        => '',
141
+            'status'            => '',
142
+            'profile_id'        => '',
143
+        );
144 144
 
145
-		$args = wp_parse_args( $data, $defaults );
145
+        $args = wp_parse_args( $data, $defaults );
146 146
 
147
-		if( $args['expiration'] && strtotime( 'NOW', current_time( 'timestamp' ) ) > strtotime( $args['expiration'], current_time( 'timestamp' ) ) ) {
147
+        if( $args['expiration'] && strtotime( 'NOW', current_time( 'timestamp' ) ) > strtotime( $args['expiration'], current_time( 'timestamp' ) ) ) {
148 148
 
149
-			if( 'active' == $args['status'] || 'trialling' == $args['status'] ) {
149
+            if( 'active' == $args['status'] || 'trialling' == $args['status'] ) {
150 150
 
151
-				// Force an active subscription to expired if expiration date is in the past
152
-				$args['status'] = 'expired';
151
+                // Force an active subscription to expired if expiration date is in the past
152
+                $args['status'] = 'expired';
153 153
 
154
-			}
155
-		}
154
+            }
155
+        }
156 156
 
157
-		do_action( 'wpinv_subscription_pre_create', $args );
157
+        do_action( 'wpinv_subscription_pre_create', $args );
158 158
 
159
-		$id = $this->subs_db->insert( $args, 'subscription' );
159
+        $id = $this->subs_db->insert( $args, 'subscription' );
160 160
 
161
-		do_action( 'wpinv_subscription_post_create', $id, $args );
161
+        do_action( 'wpinv_subscription_post_create', $id, $args );
162 162
 
163
-		return $this->setup_subscription( $id );
163
+        return $this->setup_subscription( $id );
164 164
 
165
-	}
165
+    }
166 166
 
167
-	/**
168
-	 * Updates a subscription
169
-	 *
170
-	 * @since  1.0.0
171
-	 * @param  array $args Array of fields to update
172
-	 * @return bool
173
-	 */
174
-	public function update( $args = array() ) {
167
+    /**
168
+     * Updates a subscription
169
+     *
170
+     * @since  1.0.0
171
+     * @param  array $args Array of fields to update
172
+     * @return bool
173
+     */
174
+    public function update( $args = array() ) {
175 175
 
176
-		$ret = $this->subs_db->update( $this->id, $args );
176
+        $ret = $this->subs_db->update( $this->id, $args );
177 177
 
178
-		do_action( 'wpinv_recurring_update_subscription', $this->id, $args, $this );
178
+        do_action( 'wpinv_recurring_update_subscription', $this->id, $args, $this );
179 179
 
180
-		return $ret;
180
+        return $ret;
181 181
 
182
-	}
182
+    }
183 183
 
184
-	/**
185
-	 * Delete the subscription
186
-	 *
187
-	 * @since  1.0.0
188
-	 * @return bool
189
-	 */
190
-	public function delete() {
191
-		return $this->subs_db->delete( $this->id );
192
-	}
184
+    /**
185
+     * Delete the subscription
186
+     *
187
+     * @since  1.0.0
188
+     * @return bool
189
+     */
190
+    public function delete() {
191
+        return $this->subs_db->delete( $this->id );
192
+    }
193 193
 
194 194
     /**
195 195
      * Retrieves the parent payment ID
@@ -357,8 +357,8 @@  discard block
 block discarded – undo
357 357
             
358 358
             $invoice = wpinv_get_invoice( $invoice->ID );
359 359
 
360
-			// Send email notifications.
361
-			wpinv_completed_invoice_notification( $invoice->ID );
360
+            // Send email notifications.
361
+            wpinv_completed_invoice_notification( $invoice->ID );
362 362
 
363 363
             do_action( 'wpinv_recurring_add_subscription_payment', $invoice, $this );
364 364
             do_action( 'wpinv_recurring_record_payment', $invoice->ID, $this->parent_payment_id, $args['amount'], $args['transaction_id'] );
@@ -369,185 +369,185 @@  discard block
 block discarded – undo
369 369
         return false;
370 370
     }
371 371
 
372
-	/**
373
-	 * Retrieves the transaction ID from the subscription
374
-	 *
375
-	 * @since  1.0.0
376
-	 * @return bool
377
-	 */
378
-	public function get_transaction_id() {
372
+    /**
373
+     * Retrieves the transaction ID from the subscription
374
+     *
375
+     * @since  1.0.0
376
+     * @return bool
377
+     */
378
+    public function get_transaction_id() {
379 379
 
380
-		if( empty( $this->transaction_id ) ) {
380
+        if( empty( $this->transaction_id ) ) {
381 381
 
382
-			$txn_id = wpinv_get_payment_transaction_id( $this->parent_payment_id );
382
+            $txn_id = wpinv_get_payment_transaction_id( $this->parent_payment_id );
383 383
 
384
-			if( ! empty( $txn_id ) && (int) $this->parent_payment_id !== (int) $txn_id ) {
385
-				$this->set_transaction_id( $txn_id );
386
-			}
384
+            if( ! empty( $txn_id ) && (int) $this->parent_payment_id !== (int) $txn_id ) {
385
+                $this->set_transaction_id( $txn_id );
386
+            }
387 387
 
388
-		}
388
+        }
389 389
 
390
-		return $this->transaction_id;
390
+        return $this->transaction_id;
391 391
 
392
-	}
392
+    }
393 393
 
394
-	/**
395
-	 * Stores the transaction ID for the subscription purchase
396
-	 *
397
-	 * @since  1.0.0.4
398
-	 * @return bool
399
-	 */
400
-	public function set_transaction_id( $txn_id = '' ) {
401
-		$this->update( array( 'transaction_id' => $txn_id ) );
402
-		$this->transaction_id = $txn_id;
403
-	}
394
+    /**
395
+     * Stores the transaction ID for the subscription purchase
396
+     *
397
+     * @since  1.0.0.4
398
+     * @return bool
399
+     */
400
+    public function set_transaction_id( $txn_id = '' ) {
401
+        $this->update( array( 'transaction_id' => $txn_id ) );
402
+        $this->transaction_id = $txn_id;
403
+    }
404 404
 
405
-	/**
406
-	 * Renews a subscription
407
-	 *
408
-	 * @since  1.0.0
409
-	 * @return bool
410
-	 */
411
-	public function renew() {
405
+    /**
406
+     * Renews a subscription
407
+     *
408
+     * @since  1.0.0
409
+     * @return bool
410
+     */
411
+    public function renew() {
412 412
 
413
-		$expires = $this->get_expiration_time();
413
+        $expires = $this->get_expiration_time();
414 414
 
415 415
 
416
-		// Determine what date to use as the start for the new expiration calculation
417
-		if( $expires > current_time( 'timestamp' ) && $this->is_active() ) {
416
+        // Determine what date to use as the start for the new expiration calculation
417
+        if( $expires > current_time( 'timestamp' ) && $this->is_active() ) {
418 418
 
419
-			$base_date  = $expires;
419
+            $base_date  = $expires;
420 420
 
421
-		} else {
421
+        } else {
422 422
 
423
-			$base_date  = current_time( 'timestamp' );
423
+            $base_date  = current_time( 'timestamp' );
424 424
 
425
-		}
425
+        }
426 426
 
427
-		$last_day = wpinv_cal_days_in_month( CAL_GREGORIAN, date( 'n', $base_date ), date( 'Y', $base_date ) );
427
+        $last_day = wpinv_cal_days_in_month( CAL_GREGORIAN, date( 'n', $base_date ), date( 'Y', $base_date ) );
428 428
 
429 429
 
430
-		$frequency = isset($this->frequency) ? $this->frequency : 1;
431
-		$expiration = date( 'Y-m-d H:i:s', strtotime( '+' . $frequency . ' ' . $this->period  . ' 23:59:59', $base_date ) );
430
+        $frequency = isset($this->frequency) ? $this->frequency : 1;
431
+        $expiration = date( 'Y-m-d H:i:s', strtotime( '+' . $frequency . ' ' . $this->period  . ' 23:59:59', $base_date ) );
432 432
 
433
-		if( date( 'j', $base_date ) == $last_day && 'day' != $this->period ) {
434
-			$expiration = date( 'Y-m-d H:i:s', strtotime( $expiration . ' +2 days' ) );
435
-		}
433
+        if( date( 'j', $base_date ) == $last_day && 'day' != $this->period ) {
434
+            $expiration = date( 'Y-m-d H:i:s', strtotime( $expiration . ' +2 days' ) );
435
+        }
436 436
 
437
-		$expiration  = apply_filters( 'wpinv_subscription_renewal_expiration', $expiration, $this->id, $this );
437
+        $expiration  = apply_filters( 'wpinv_subscription_renewal_expiration', $expiration, $this->id, $this );
438 438
 
439
-		do_action( 'wpinv_subscription_pre_renew', $this->id, $expiration, $this );
439
+        do_action( 'wpinv_subscription_pre_renew', $this->id, $expiration, $this );
440 440
 
441
-		$this->status = 'active';
442
-		$times_billed = $this->get_times_billed();
441
+        $this->status = 'active';
442
+        $times_billed = $this->get_times_billed();
443 443
 
444
-		// Complete subscription if applicable
445
-		if ( $this->bill_times > 0 && $times_billed >= $this->bill_times ) {
446
-			$this->complete();
447
-			$this->status = 'completed';
448
-		}
444
+        // Complete subscription if applicable
445
+        if ( $this->bill_times > 0 && $times_billed >= $this->bill_times ) {
446
+            $this->complete();
447
+            $this->status = 'completed';
448
+        }
449 449
 
450
-		$args = array(
451
-			'expiration' => $expiration,
452
-			'status'     => $this->status,
453
-		);
450
+        $args = array(
451
+            'expiration' => $expiration,
452
+            'status'     => $this->status,
453
+        );
454 454
 
455 455
         $this->subs_db->update( $this->id, $args );
456 456
 
457
-		do_action( 'wpinv_subscription_post_renew', $this->id, $expiration, $this );
458
-		do_action( 'wpinv_recurring_set_subscription_status', $this->id, $this->status, $this );
457
+        do_action( 'wpinv_subscription_post_renew', $this->id, $expiration, $this );
458
+        do_action( 'wpinv_recurring_set_subscription_status', $this->id, $this->status, $this );
459 459
 
460
-	}
460
+    }
461 461
 
462
-	/**
463
-	 * Marks a subscription as completed
464
-	 *
465
-	 * Subscription is completed when the number of payments matches the billing_times field
466
-	 *
467
-	 * @since  1.0.0
468
-	 * @return void
469
-	 */
470
-	public function complete() {
462
+    /**
463
+     * Marks a subscription as completed
464
+     *
465
+     * Subscription is completed when the number of payments matches the billing_times field
466
+     *
467
+     * @since  1.0.0
468
+     * @return void
469
+     */
470
+    public function complete() {
471 471
 
472
-		// Only mark a subscription as complete if it's not already cancelled.
473
-		if ( 'cancelled' === $this->status ) {
474
-			return;
475
-		}
472
+        // Only mark a subscription as complete if it's not already cancelled.
473
+        if ( 'cancelled' === $this->status ) {
474
+            return;
475
+        }
476 476
 
477
-		$args = array(
478
-			'status' => 'completed'
479
-		);
477
+        $args = array(
478
+            'status' => 'completed'
479
+        );
480 480
 
481
-		if( $this->subs_db->update( $this->id, $args ) ) {
481
+        if( $this->subs_db->update( $this->id, $args ) ) {
482 482
 
483
-			$this->status = 'completed';
483
+            $this->status = 'completed';
484 484
 
485
-			do_action( 'wpinv_subscription_completed', $this->id, $this );
485
+            do_action( 'wpinv_subscription_completed', $this->id, $this );
486 486
 
487
-		}
487
+        }
488 488
 
489
-	}
489
+    }
490 490
 
491
-	/**
492
-	 * Marks a subscription as expired
493
-	 *
494
-	 * Subscription is completed when the billing times is reached
495
-	 *
496
-	 * @since  1.0.0
497
-	 * @param  $check_expiration bool True if expiration date should be checked with merchant processor before expiring
498
-	 * @return void
499
-	 */
500
-	public function expire( $check_expiration = false ) {
491
+    /**
492
+     * Marks a subscription as expired
493
+     *
494
+     * Subscription is completed when the billing times is reached
495
+     *
496
+     * @since  1.0.0
497
+     * @param  $check_expiration bool True if expiration date should be checked with merchant processor before expiring
498
+     * @return void
499
+     */
500
+    public function expire( $check_expiration = false ) {
501 501
 
502
-		$expiration = $this->expiration;
502
+        $expiration = $this->expiration;
503 503
 
504
-		if( $check_expiration ) {
504
+        if( $check_expiration ) {
505 505
 
506
-			// check_expiration() updates $this->expiration so compare to $expiration above
506
+            // check_expiration() updates $this->expiration so compare to $expiration above
507 507
 
508
-			if( $expiration < $this->get_expiration() && current_time( 'timestamp' ) < $this->get_expiration_time() ) {
508
+            if( $expiration < $this->get_expiration() && current_time( 'timestamp' ) < $this->get_expiration_time() ) {
509 509
 
510
-				return false; // Do not mark as expired since real expiration date is in the future
511
-			}
510
+                return false; // Do not mark as expired since real expiration date is in the future
511
+            }
512 512
 
513
-		}
513
+        }
514 514
 
515
-		$args = array(
516
-			'status' => 'expired'
517
-		);
515
+        $args = array(
516
+            'status' => 'expired'
517
+        );
518 518
 
519
-		if( $this->subs_db->update( $this->id, $args ) ) {
519
+        if( $this->subs_db->update( $this->id, $args ) ) {
520 520
 
521
-			$this->status = 'expired';
521
+            $this->status = 'expired';
522 522
 
523
-			do_action( 'wpinv_subscription_expired', $this->id, $this );
523
+            do_action( 'wpinv_subscription_expired', $this->id, $this );
524 524
 
525
-		}
525
+        }
526 526
 
527
-	}
527
+    }
528 528
 
529
-	/**
530
-	 * Marks a subscription as failing
531
-	 *
532
-	 * @since  2.4.2
533
-	 * @return void
534
-	 */
535
-	public function failing() {
529
+    /**
530
+     * Marks a subscription as failing
531
+     *
532
+     * @since  2.4.2
533
+     * @return void
534
+     */
535
+    public function failing() {
536 536
 
537
-		$args = array(
538
-			'status' => 'failing'
539
-		);
537
+        $args = array(
538
+            'status' => 'failing'
539
+        );
540 540
 
541
-		if( $this->subs_db->update( $this->id, $args ) ) {
541
+        if( $this->subs_db->update( $this->id, $args ) ) {
542 542
 
543
-			$this->status = 'failing';
543
+            $this->status = 'failing';
544 544
 
545
-			do_action( 'wpinv_subscription_failing', $this->id, $this );
545
+            do_action( 'wpinv_subscription_failing', $this->id, $this );
546 546
 
547 547
 
548
-		}
548
+        }
549 549
 
550
-	}
550
+    }
551 551
 
552 552
     /**
553 553
      * Marks a subscription as cancelled
@@ -581,22 +581,22 @@  discard block
 block discarded – undo
581 581
         }
582 582
     }
583 583
 
584
-	/**
585
-	 * Determines if subscription can be cancelled
586
-	 *
587
-	 * This method is filtered by payment gateways in order to return true on subscriptions
588
-	 * that can be cancelled with a profile ID through the merchant processor
589
-	 *
590
-	 * @since  1.0.0
591
-	 * @return bool
592
-	 */
593
-	public function can_cancel() {
584
+    /**
585
+     * Determines if subscription can be cancelled
586
+     *
587
+     * This method is filtered by payment gateways in order to return true on subscriptions
588
+     * that can be cancelled with a profile ID through the merchant processor
589
+     *
590
+     * @since  1.0.0
591
+     * @return bool
592
+     */
593
+    public function can_cancel() {
594 594
         $ret = false;
595
-	    if( $this->gateway === 'manual' || in_array( $this->status, $this->get_cancellable_statuses() ) ) {
595
+        if( $this->gateway === 'manual' || in_array( $this->status, $this->get_cancellable_statuses() ) ) {
596 596
             $ret = true;
597 597
         }
598
-		return apply_filters( 'wpinv_subscription_can_cancel', $ret, $this );
599
-	}
598
+        return apply_filters( 'wpinv_subscription_can_cancel', $ret, $this );
599
+    }
600 600
 
601 601
     /**
602 602
      * Returns an array of subscription statuses that can be cancelled
@@ -609,197 +609,197 @@  discard block
 block discarded – undo
609 609
         return apply_filters( 'wpinv_recurring_cancellable_statuses', array( 'active', 'trialling', 'failing' ) );
610 610
     }
611 611
 
612
-	/**
613
-	 * Retrieves the URL to cancel subscription
614
-	 *
615
-	 * @since  1.0.0
616
-	 * @return string
617
-	 */
618
-	public function get_cancel_url() {
612
+    /**
613
+     * Retrieves the URL to cancel subscription
614
+     *
615
+     * @since  1.0.0
616
+     * @return string
617
+     */
618
+    public function get_cancel_url() {
619 619
 
620
-		$url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'cancel_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-cancel' );
620
+        $url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'cancel_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-cancel' );
621 621
 
622
-		return apply_filters( 'wpinv_subscription_cancel_url', $url, $this );
623
-	}
622
+        return apply_filters( 'wpinv_subscription_cancel_url', $url, $this );
623
+    }
624 624
 
625
-	/**
626
-	 * Determines if subscription can be manually renewed
627
-	 *
628
-	 * This method is filtered by payment gateways in order to return true on subscriptions
629
-	 * that can be renewed manually
630
-	 *
631
-	 * @since  2.5
632
-	 * @return bool
633
-	 */
634
-	public function can_renew() {
625
+    /**
626
+     * Determines if subscription can be manually renewed
627
+     *
628
+     * This method is filtered by payment gateways in order to return true on subscriptions
629
+     * that can be renewed manually
630
+     *
631
+     * @since  2.5
632
+     * @return bool
633
+     */
634
+    public function can_renew() {
635 635
 
636
-		return apply_filters( 'wpinv_subscription_can_renew', true, $this );
637
-	}
638
-
639
-	/**
640
-	 * Retrieves the URL to renew a subscription
641
-	 *
642
-	 * @since  2.5
643
-	 * @return string
644
-	 */
645
-	public function get_renew_url() {
646
-
647
-		$url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'renew_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-renew' );
648
-
649
-		return apply_filters( 'wpinv_subscription_renew_url', $url, $this );
650
-	}
651
-
652
-	/**
653
-	 * Determines if subscription can have their payment method updated
654
-	 *
655
-	 * @since  1.0.0
656
-	 * @return bool
657
-	 */
658
-	public function can_update() {
659
-		return apply_filters( 'wpinv_subscription_can_update', false, $this );
660
-	}
661
-
662
-	/**
663
-	 * Retrieves the URL to update subscription
664
-	 *
665
-	 * @since  1.0.0
666
-	 * @return void
667
-	 */
668
-	public function get_update_url() {
669
-
670
-		$url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->id ) );
671
-
672
-		return apply_filters( 'wpinv_subscription_update_url', $url, $this );
673
-	}
674
-
675
-	/**
676
-	 * Determines if subscription is active
677
-	 *
678
-	 * @since  1.0.0
679
-	 * @return void
680
-	 */
681
-	public function is_active() {
682
-
683
-		$ret = false;
684
-
685
-		if( ! $this->is_expired() && ( $this->status == 'active' || $this->status == 'cancelled' || $this->status == 'trialling' ) ) {
686
-			$ret = true;
687
-		}
688
-
689
-		return apply_filters( 'wpinv_subscription_is_active', $ret, $this->id, $this );
690
-
691
-	}
692
-
693
-	/**
694
-	 * Determines if subscription is expired
695
-	 *
696
-	 * @since  1.0.0
697
-	 * @return void
698
-	 */
699
-	public function is_expired() {
700
-
701
-		$ret = false;
702
-
703
-		if ( $this->status == 'expired' ) {
704
-
705
-			$ret = true;
706
-
707
-		} elseif( 'active' === $this->status || 'cancelled' === $this->status || $this->status == 'trialling'  ) {
708
-
709
-			$ret        = false;
710
-			$expiration = $this->get_expiration_time();
711
-
712
-			if( $expiration && strtotime( 'NOW', current_time( 'timestamp' ) ) > $expiration ) {
713
-				$ret = true;
714
-
715
-				if ( 'active' === $this->status || $this->status == 'trialling'  ) {
716
-					$this->expire();
717
-				}
718
-			}
719
-
720
-		}
721
-
722
-		return apply_filters( 'wpinv_subscription_is_expired', $ret, $this->id, $this );
723
-
724
-	}
725
-
726
-	/**
727
-	 * Retrieves the expiration date
728
-	 *
729
-	 * @since  1.0.0
730
-	 * @return string
731
-	 */
732
-	public function get_expiration() {
733
-		return $this->expiration;
734
-	}
735
-
736
-	/**
737
-	 * Retrieves the expiration date in a timestamp
738
-	 *
739
-	 * @since  1.0.0
740
-	 * @return int
741
-	 */
742
-	public function get_expiration_time() {
743
-		return strtotime( $this->expiration, current_time( 'timestamp' ) );
744
-	}
745
-
746
-	/**
747
-	 * Retrieves the subscription status
748
-	 *
749
-	 * @since  1.0.0
750
-	 * @return int
751
-	 */
752
-	public function get_status() {
753
-
754
-		// Monitor for page load delays on pages with large subscription lists (IE: Subscriptions table in admin)
755
-		$this->is_expired();
756
-		return $this->status;
757
-	}
758
-
759
-	/**
760
-	 * Retrieves the subscription status label
761
-	 *
762
-	 * @since  1.0.0
763
-	 * @return int
764
-	 */
765
-	public function get_status_label() {
766
-
767
-		switch( $this->get_status() ) {
768
-			case 'active' :
769
-				$status = __( 'Active', 'invoicing' );
770
-				break;
771
-
772
-			case 'cancelled' :
773
-				$status = __( 'Cancelled', 'invoicing' );
774
-				break;
775
-
776
-			case 'expired' :
777
-				$status = __( 'Expired', 'invoicing' );
778
-				break;
779
-
780
-			case 'pending' :
781
-				$status = __( 'Pending', 'invoicing' );
782
-				break;
783
-
784
-			case 'failing' :
785
-				$status = __( 'Failing', 'invoicing' );
786
-				break;
787
-
788
-			case 'trialling' :
789
-				$status = __( 'Trialling', 'invoicing' );
790
-				break;
791
-
792
-			case 'completed' :
793
-				$status = __( 'Completed', 'invoicing' );
794
-				break;
795
-
796
-			default:
797
-				$status = ucfirst( $this->get_status() );
798
-				break;
799
-		}
800
-
801
-		return $status;
802
-	}
636
+        return apply_filters( 'wpinv_subscription_can_renew', true, $this );
637
+    }
638
+
639
+    /**
640
+     * Retrieves the URL to renew a subscription
641
+     *
642
+     * @since  2.5
643
+     * @return string
644
+     */
645
+    public function get_renew_url() {
646
+
647
+        $url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'renew_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-renew' );
648
+
649
+        return apply_filters( 'wpinv_subscription_renew_url', $url, $this );
650
+    }
651
+
652
+    /**
653
+     * Determines if subscription can have their payment method updated
654
+     *
655
+     * @since  1.0.0
656
+     * @return bool
657
+     */
658
+    public function can_update() {
659
+        return apply_filters( 'wpinv_subscription_can_update', false, $this );
660
+    }
661
+
662
+    /**
663
+     * Retrieves the URL to update subscription
664
+     *
665
+     * @since  1.0.0
666
+     * @return void
667
+     */
668
+    public function get_update_url() {
669
+
670
+        $url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->id ) );
671
+
672
+        return apply_filters( 'wpinv_subscription_update_url', $url, $this );
673
+    }
674
+
675
+    /**
676
+     * Determines if subscription is active
677
+     *
678
+     * @since  1.0.0
679
+     * @return void
680
+     */
681
+    public function is_active() {
682
+
683
+        $ret = false;
684
+
685
+        if( ! $this->is_expired() && ( $this->status == 'active' || $this->status == 'cancelled' || $this->status == 'trialling' ) ) {
686
+            $ret = true;
687
+        }
688
+
689
+        return apply_filters( 'wpinv_subscription_is_active', $ret, $this->id, $this );
690
+
691
+    }
692
+
693
+    /**
694
+     * Determines if subscription is expired
695
+     *
696
+     * @since  1.0.0
697
+     * @return void
698
+     */
699
+    public function is_expired() {
700
+
701
+        $ret = false;
702
+
703
+        if ( $this->status == 'expired' ) {
704
+
705
+            $ret = true;
706
+
707
+        } elseif( 'active' === $this->status || 'cancelled' === $this->status || $this->status == 'trialling'  ) {
708
+
709
+            $ret        = false;
710
+            $expiration = $this->get_expiration_time();
711
+
712
+            if( $expiration && strtotime( 'NOW', current_time( 'timestamp' ) ) > $expiration ) {
713
+                $ret = true;
714
+
715
+                if ( 'active' === $this->status || $this->status == 'trialling'  ) {
716
+                    $this->expire();
717
+                }
718
+            }
719
+
720
+        }
721
+
722
+        return apply_filters( 'wpinv_subscription_is_expired', $ret, $this->id, $this );
723
+
724
+    }
725
+
726
+    /**
727
+     * Retrieves the expiration date
728
+     *
729
+     * @since  1.0.0
730
+     * @return string
731
+     */
732
+    public function get_expiration() {
733
+        return $this->expiration;
734
+    }
735
+
736
+    /**
737
+     * Retrieves the expiration date in a timestamp
738
+     *
739
+     * @since  1.0.0
740
+     * @return int
741
+     */
742
+    public function get_expiration_time() {
743
+        return strtotime( $this->expiration, current_time( 'timestamp' ) );
744
+    }
745
+
746
+    /**
747
+     * Retrieves the subscription status
748
+     *
749
+     * @since  1.0.0
750
+     * @return int
751
+     */
752
+    public function get_status() {
753
+
754
+        // Monitor for page load delays on pages with large subscription lists (IE: Subscriptions table in admin)
755
+        $this->is_expired();
756
+        return $this->status;
757
+    }
758
+
759
+    /**
760
+     * Retrieves the subscription status label
761
+     *
762
+     * @since  1.0.0
763
+     * @return int
764
+     */
765
+    public function get_status_label() {
766
+
767
+        switch( $this->get_status() ) {
768
+            case 'active' :
769
+                $status = __( 'Active', 'invoicing' );
770
+                break;
771
+
772
+            case 'cancelled' :
773
+                $status = __( 'Cancelled', 'invoicing' );
774
+                break;
775
+
776
+            case 'expired' :
777
+                $status = __( 'Expired', 'invoicing' );
778
+                break;
779
+
780
+            case 'pending' :
781
+                $status = __( 'Pending', 'invoicing' );
782
+                break;
783
+
784
+            case 'failing' :
785
+                $status = __( 'Failing', 'invoicing' );
786
+                break;
787
+
788
+            case 'trialling' :
789
+                $status = __( 'Trialling', 'invoicing' );
790
+                break;
791
+
792
+            case 'completed' :
793
+                $status = __( 'Completed', 'invoicing' );
794
+                break;
795
+
796
+            default:
797
+                $status = ucfirst( $this->get_status() );
798
+                break;
799
+        }
800
+
801
+        return $status;
802
+    }
803 803
 
804 804
     /**
805 805
      * Retrieves the subscription status label
Please login to merge, or discard this patch.
Spacing   +168 added lines, -168 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
 
@@ -38,15 +38,15 @@  discard block
 block discarded – undo
38 38
 	 * @since  1.0.0
39 39
 	 * @return void
40 40
 	 */
41
-	function __construct( $_id_or_object = 0, $_by_profile_id = false ) {
41
+	function __construct($_id_or_object = 0, $_by_profile_id = false) {
42 42
 
43 43
 		$this->subs_db = new WPInv_Subscriptions_DB;
44 44
 
45
-		if( $_by_profile_id ) {
45
+		if ($_by_profile_id) {
46 46
 
47
-			$_sub = $this->subs_db->get_by( 'profile_id', $_id_or_object );
47
+			$_sub = $this->subs_db->get_by('profile_id', $_id_or_object);
48 48
 
49
-			if( empty( $_sub ) ) {
49
+			if (empty($_sub)) {
50 50
 				return false;
51 51
 			}
52 52
 
@@ -54,7 +54,7 @@  discard block
 block discarded – undo
54 54
 
55 55
 		}
56 56
 
57
-		return $this->setup_subscription( $_id_or_object );
57
+		return $this->setup_subscription($_id_or_object);
58 58
 	}
59 59
 
60 60
 	/**
@@ -63,34 +63,34 @@  discard block
 block discarded – undo
63 63
 	 * @since  1.0.0
64 64
 	 * @return void
65 65
 	 */
66
-	private function setup_subscription( $id_or_object = 0 ) {
66
+	private function setup_subscription($id_or_object = 0) {
67 67
 
68
-		if( empty( $id_or_object ) ) {
68
+		if (empty($id_or_object)) {
69 69
 			return false;
70 70
 		}
71 71
 
72
-		if( is_numeric( $id_or_object ) ) {
72
+		if (is_numeric($id_or_object)) {
73 73
 
74
-			$sub = $this->subs_db->get( $id_or_object );
74
+			$sub = $this->subs_db->get($id_or_object);
75 75
 
76
-		} elseif( is_object( $id_or_object ) ) {
76
+		} elseif (is_object($id_or_object)) {
77 77
 
78 78
 			$sub = $id_or_object;
79 79
 
80 80
 		}
81 81
 
82
-		if( empty( $sub ) ) {
82
+		if (empty($sub)) {
83 83
 			return false;
84 84
 		}
85 85
 
86
-		foreach( $sub as $key => $value ) {
86
+		foreach ($sub as $key => $value) {
87 87
 			$this->$key = $value;
88 88
 		}
89 89
 
90
-		$this->customer = get_userdata( $this->customer_id );
91
-		$this->gateway  = wpinv_get_payment_gateway( $this->parent_payment_id );
90
+		$this->customer = get_userdata($this->customer_id);
91
+		$this->gateway  = wpinv_get_payment_gateway($this->parent_payment_id);
92 92
 
93
-		do_action( 'wpinv_recurring_setup_subscription', $this );
93
+		do_action('wpinv_recurring_setup_subscription', $this);
94 94
 
95 95
 		return $this;
96 96
 	}
@@ -100,15 +100,15 @@  discard block
 block discarded – undo
100 100
 	 *
101 101
 	 * @since 1.0.0
102 102
 	 */
103
-	public function __get( $key ) {
103
+	public function __get($key) {
104 104
 
105
-		if( method_exists( $this, 'get_' . $key ) ) {
105
+		if (method_exists($this, 'get_' . $key)) {
106 106
 
107
-			return call_user_func( array( $this, 'get_' . $key ) );
107
+			return call_user_func(array($this, 'get_' . $key));
108 108
 
109 109
 		} else {
110 110
 
111
-			return new WP_Error( 'wpinv-subscription-invalid-property', sprintf( __( 'Can\'t get property %s', 'invoicing' ), $key ) );
111
+			return new WP_Error('wpinv-subscription-invalid-property', sprintf(__('Can\'t get property %s', 'invoicing'), $key));
112 112
 
113 113
 		}
114 114
 
@@ -121,9 +121,9 @@  discard block
 block discarded – undo
121 121
 	 * @param  array  $data Array of attributes for a subscription
122 122
 	 * @return mixed  false if data isn't passed and class not instantiated for creation
123 123
 	 */
124
-	public function create( $data = array() ) {
124
+	public function create($data = array()) {
125 125
 
126
-		if ( $this->id != 0 ) {
126
+		if ($this->id != 0) {
127 127
 			return false;
128 128
 		}
129 129
 
@@ -142,11 +142,11 @@  discard block
 block discarded – undo
142 142
 			'profile_id'        => '',
143 143
 		);
144 144
 
145
-		$args = wp_parse_args( $data, $defaults );
145
+		$args = wp_parse_args($data, $defaults);
146 146
 
147
-		if( $args['expiration'] && strtotime( 'NOW', current_time( 'timestamp' ) ) > strtotime( $args['expiration'], current_time( 'timestamp' ) ) ) {
147
+		if ($args['expiration'] && strtotime('NOW', current_time('timestamp')) > strtotime($args['expiration'], current_time('timestamp'))) {
148 148
 
149
-			if( 'active' == $args['status'] || 'trialling' == $args['status'] ) {
149
+			if ('active' == $args['status'] || 'trialling' == $args['status']) {
150 150
 
151 151
 				// Force an active subscription to expired if expiration date is in the past
152 152
 				$args['status'] = 'expired';
@@ -154,13 +154,13 @@  discard block
 block discarded – undo
154 154
 			}
155 155
 		}
156 156
 
157
-		do_action( 'wpinv_subscription_pre_create', $args );
157
+		do_action('wpinv_subscription_pre_create', $args);
158 158
 
159
-		$id = $this->subs_db->insert( $args, 'subscription' );
159
+		$id = $this->subs_db->insert($args, 'subscription');
160 160
 
161
-		do_action( 'wpinv_subscription_post_create', $id, $args );
161
+		do_action('wpinv_subscription_post_create', $id, $args);
162 162
 
163
-		return $this->setup_subscription( $id );
163
+		return $this->setup_subscription($id);
164 164
 
165 165
 	}
166 166
 
@@ -171,11 +171,11 @@  discard block
 block discarded – undo
171 171
 	 * @param  array $args Array of fields to update
172 172
 	 * @return bool
173 173
 	 */
174
-	public function update( $args = array() ) {
174
+	public function update($args = array()) {
175 175
 
176
-		$ret = $this->subs_db->update( $this->id, $args );
176
+		$ret = $this->subs_db->update($this->id, $args);
177 177
 
178
-		do_action( 'wpinv_recurring_update_subscription', $this->id, $args, $this );
178
+		do_action('wpinv_recurring_update_subscription', $this->id, $args, $this);
179 179
 
180 180
 		return $ret;
181 181
 
@@ -188,7 +188,7 @@  discard block
 block discarded – undo
188 188
 	 * @return bool
189 189
 	 */
190 190
 	public function delete() {
191
-		return $this->subs_db->delete( $this->id );
191
+		return $this->subs_db->delete($this->id);
192 192
 	}
193 193
 
194 194
     /**
@@ -208,14 +208,14 @@  discard block
 block discarded – undo
208 208
      * @return array
209 209
      */
210 210
     public function get_child_payments() {
211
-        $payments = get_posts( array(
211
+        $payments = get_posts(array(
212 212
             'post_parent'    => (int) $this->parent_payment_id,
213 213
             'posts_per_page' => '999',
214
-            'post_status'    => array( 'publish', 'wpi-processing', 'wpi-renewal' ),
214
+            'post_status'    => array('publish', 'wpi-processing', 'wpi-renewal'),
215 215
             'orderby'           => 'ID',
216 216
             'order'             => 'DESC',
217 217
             'post_type'      => 'wpi_invoice'
218
-        ) );
218
+        ));
219 219
 
220 220
         return $payments;
221 221
     }
@@ -228,9 +228,9 @@  discard block
 block discarded – undo
228 228
      */
229 229
     public function get_total_payments() {
230 230
         $child_payments = $this->get_child_payments();
231
-        $total_payments = !empty( $child_payments ) ? count( $child_payments ) : 0;
231
+        $total_payments = !empty($child_payments) ? count($child_payments) : 0;
232 232
 
233
-        if ( 'pending' != $this->status ) {
233
+        if ('pending' != $this->status) {
234 234
                 $total_payments++;
235 235
         }
236 236
 
@@ -244,9 +244,9 @@  discard block
 block discarded – undo
244 244
      * @return int
245 245
      */
246 246
     public function get_times_billed() {
247
-        $times_billed = (int)$this->get_total_payments();
247
+        $times_billed = (int) $this->get_total_payments();
248 248
 
249
-        if ( ! empty( $this->trial_period ) && $times_billed > 0 ) {
249
+        if (!empty($this->trial_period) && $times_billed > 0) {
250 250
             $times_billed--;
251 251
         }
252 252
 
@@ -260,51 +260,51 @@  discard block
 block discarded – undo
260 260
      * @param  array $args Array of values for the payment, including amount and transaction ID
261 261
      * @return bool
262 262
      */
263
-    public function add_payment( $args = array() ) {
264
-        if ( ! $this->parent_payment_id ) {
263
+    public function add_payment($args = array()) {
264
+        if (!$this->parent_payment_id) {
265 265
             return false;
266 266
         }
267 267
 
268
-        $args = wp_parse_args( $args, array(
268
+        $args = wp_parse_args($args, array(
269 269
             'amount'         => '',
270 270
             'transaction_id' => '',
271 271
             'gateway'        => ''
272
-        ) );
272
+        ));
273 273
         
274
-        if ( empty( $args['transaction_id'] ) || $this->payment_exists( $args['transaction_id'] ) ) {
274
+        if (empty($args['transaction_id']) || $this->payment_exists($args['transaction_id'])) {
275 275
             return false;
276 276
         }
277 277
         
278
-        $parent_invoice = wpinv_get_invoice( $this->parent_payment_id );
279
-        if ( empty( $parent_invoice->ID ) ) {
278
+        $parent_invoice = wpinv_get_invoice($this->parent_payment_id);
279
+        if (empty($parent_invoice->ID)) {
280 280
             return false;
281 281
         }
282 282
 
283 283
         $invoice = new WPInv_Invoice();
284
-        $invoice->set( 'post_type', 'wpi_invoice' );
285
-        $invoice->set( 'parent_invoice', $this->parent_payment_id );
286
-        $invoice->set( 'currency', $parent_invoice->get_currency() );
287
-        $invoice->set( 'transaction_id', $args['transaction_id'] );
288
-        $invoice->set( 'key', $parent_invoice->generate_key() );
289
-        $invoice->set( 'ip', $parent_invoice->ip );
290
-        $invoice->set( 'user_id', $parent_invoice->get_user_id() );
291
-        $invoice->set( 'first_name', $parent_invoice->get_first_name() );
292
-        $invoice->set( 'last_name', $parent_invoice->get_last_name() );
293
-        $invoice->set( 'phone', $parent_invoice->phone );
294
-        $invoice->set( 'address', $parent_invoice->address );
295
-        $invoice->set( 'city', $parent_invoice->city );
296
-        $invoice->set( 'country', $parent_invoice->country );
297
-        $invoice->set( 'state', $parent_invoice->state );
298
-        $invoice->set( 'zip', $parent_invoice->zip );
299
-        $invoice->set( 'company', $parent_invoice->company );
300
-        $invoice->set( 'vat_number', $parent_invoice->vat_number );
301
-        $invoice->set( 'vat_rate', $parent_invoice->vat_rate );
302
-        $invoice->set( 'adddress_confirmed', $parent_invoice->adddress_confirmed );
303
-
304
-        if ( empty( $args['gateway'] ) ) {
305
-            $invoice->set( 'gateway', $parent_invoice->get_gateway() );
284
+        $invoice->set('post_type', 'wpi_invoice');
285
+        $invoice->set('parent_invoice', $this->parent_payment_id);
286
+        $invoice->set('currency', $parent_invoice->get_currency());
287
+        $invoice->set('transaction_id', $args['transaction_id']);
288
+        $invoice->set('key', $parent_invoice->generate_key());
289
+        $invoice->set('ip', $parent_invoice->ip);
290
+        $invoice->set('user_id', $parent_invoice->get_user_id());
291
+        $invoice->set('first_name', $parent_invoice->get_first_name());
292
+        $invoice->set('last_name', $parent_invoice->get_last_name());
293
+        $invoice->set('phone', $parent_invoice->phone);
294
+        $invoice->set('address', $parent_invoice->address);
295
+        $invoice->set('city', $parent_invoice->city);
296
+        $invoice->set('country', $parent_invoice->country);
297
+        $invoice->set('state', $parent_invoice->state);
298
+        $invoice->set('zip', $parent_invoice->zip);
299
+        $invoice->set('company', $parent_invoice->company);
300
+        $invoice->set('vat_number', $parent_invoice->vat_number);
301
+        $invoice->set('vat_rate', $parent_invoice->vat_rate);
302
+        $invoice->set('adddress_confirmed', $parent_invoice->adddress_confirmed);
303
+
304
+        if (empty($args['gateway'])) {
305
+            $invoice->set('gateway', $parent_invoice->get_gateway());
306 306
         } else {
307
-            $invoice->set( 'gateway', $args['gateway'] );
307
+            $invoice->set('gateway', $args['gateway']);
308 308
         }
309 309
         
310 310
         $recurring_details = $parent_invoice->get_recurring_details();
@@ -312,11 +312,11 @@  discard block
 block discarded – undo
312 312
         // increase the earnings for each item in the subscription
313 313
         $items = $recurring_details['cart_details'];
314 314
         
315
-        if ( $items ) {        
315
+        if ($items) {        
316 316
             $add_items      = array();
317 317
             $cart_details   = array();
318 318
             
319
-            foreach ( $items as $item ) {
319
+            foreach ($items as $item) {
320 320
                 $add_item             = array();
321 321
                 $add_item['id']       = $item['id'];
322 322
                 $add_item['quantity'] = $item['quantity'];
@@ -326,7 +326,7 @@  discard block
 block discarded – undo
326 326
                 break;
327 327
             }
328 328
             
329
-            $invoice->set( 'items', $add_items );
329
+            $invoice->set('items', $add_items);
330 330
             $invoice->cart_details = $cart_details;
331 331
         }
332 332
         
@@ -336,32 +336,32 @@  discard block
 block discarded – undo
336 336
         $tax                = $recurring_details['tax'];
337 337
         $discount           = $recurring_details['discount'];
338 338
         
339
-        if ( $discount > 0 ) {
340
-            $invoice->set( 'discount_code', $parent_invoice->discount_code );
339
+        if ($discount > 0) {
340
+            $invoice->set('discount_code', $parent_invoice->discount_code);
341 341
         }
342 342
         
343
-        $invoice->subtotal = wpinv_round_amount( $subtotal );
344
-        $invoice->tax      = wpinv_round_amount( $tax );
345
-        $invoice->discount = wpinv_round_amount( $discount );
346
-        $invoice->total    = wpinv_round_amount( $total );
343
+        $invoice->subtotal = wpinv_round_amount($subtotal);
344
+        $invoice->tax      = wpinv_round_amount($tax);
345
+        $invoice->discount = wpinv_round_amount($discount);
346
+        $invoice->total    = wpinv_round_amount($total);
347 347
 
348
-        $invoice  = apply_filters( 'wpinv_subscription_add_payment_save', $invoice, $this, $args );
348
+        $invoice = apply_filters('wpinv_subscription_add_payment_save', $invoice, $this, $args);
349 349
 
350 350
         $invoice->save();
351
-        $invoice->update_meta( '_wpinv_subscription_id', $this->id );
351
+        $invoice->update_meta('_wpinv_subscription_id', $this->id);
352 352
         
353
-        if ( !empty( $invoice->ID ) ) {
354
-            wpinv_update_payment_status( $invoice->ID, 'publish' );
353
+        if (!empty($invoice->ID)) {
354
+            wpinv_update_payment_status($invoice->ID, 'publish');
355 355
             sleep(1);
356
-            wpinv_update_payment_status( $invoice->ID, 'wpi-renewal' );
356
+            wpinv_update_payment_status($invoice->ID, 'wpi-renewal');
357 357
             
358
-            $invoice = wpinv_get_invoice( $invoice->ID );
358
+            $invoice = wpinv_get_invoice($invoice->ID);
359 359
 
360 360
 			// Send email notifications.
361
-			wpinv_completed_invoice_notification( $invoice->ID );
361
+			wpinv_completed_invoice_notification($invoice->ID);
362 362
 
363
-            do_action( 'wpinv_recurring_add_subscription_payment', $invoice, $this );
364
-            do_action( 'wpinv_recurring_record_payment', $invoice->ID, $this->parent_payment_id, $args['amount'], $args['transaction_id'] );
363
+            do_action('wpinv_recurring_add_subscription_payment', $invoice, $this);
364
+            do_action('wpinv_recurring_record_payment', $invoice->ID, $this->parent_payment_id, $args['amount'], $args['transaction_id']);
365 365
             
366 366
             return $invoice->ID;
367 367
         }
@@ -377,12 +377,12 @@  discard block
 block discarded – undo
377 377
 	 */
378 378
 	public function get_transaction_id() {
379 379
 
380
-		if( empty( $this->transaction_id ) ) {
380
+		if (empty($this->transaction_id)) {
381 381
 
382
-			$txn_id = wpinv_get_payment_transaction_id( $this->parent_payment_id );
382
+			$txn_id = wpinv_get_payment_transaction_id($this->parent_payment_id);
383 383
 
384
-			if( ! empty( $txn_id ) && (int) $this->parent_payment_id !== (int) $txn_id ) {
385
-				$this->set_transaction_id( $txn_id );
384
+			if (!empty($txn_id) && (int) $this->parent_payment_id !== (int) $txn_id) {
385
+				$this->set_transaction_id($txn_id);
386 386
 			}
387 387
 
388 388
 		}
@@ -397,8 +397,8 @@  discard block
 block discarded – undo
397 397
 	 * @since  1.0.0.4
398 398
 	 * @return bool
399 399
 	 */
400
-	public function set_transaction_id( $txn_id = '' ) {
401
-		$this->update( array( 'transaction_id' => $txn_id ) );
400
+	public function set_transaction_id($txn_id = '') {
401
+		$this->update(array('transaction_id' => $txn_id));
402 402
 		$this->transaction_id = $txn_id;
403 403
 	}
404 404
 
@@ -414,35 +414,35 @@  discard block
 block discarded – undo
414 414
 
415 415
 
416 416
 		// Determine what date to use as the start for the new expiration calculation
417
-		if( $expires > current_time( 'timestamp' ) && $this->is_active() ) {
417
+		if ($expires > current_time('timestamp') && $this->is_active()) {
418 418
 
419
-			$base_date  = $expires;
419
+			$base_date = $expires;
420 420
 
421 421
 		} else {
422 422
 
423
-			$base_date  = current_time( 'timestamp' );
423
+			$base_date = current_time('timestamp');
424 424
 
425 425
 		}
426 426
 
427
-		$last_day = wpinv_cal_days_in_month( CAL_GREGORIAN, date( 'n', $base_date ), date( 'Y', $base_date ) );
427
+		$last_day = wpinv_cal_days_in_month(CAL_GREGORIAN, date('n', $base_date), date('Y', $base_date));
428 428
 
429 429
 
430 430
 		$frequency = isset($this->frequency) ? $this->frequency : 1;
431
-		$expiration = date( 'Y-m-d H:i:s', strtotime( '+' . $frequency . ' ' . $this->period  . ' 23:59:59', $base_date ) );
431
+		$expiration = date('Y-m-d H:i:s', strtotime('+' . $frequency . ' ' . $this->period . ' 23:59:59', $base_date));
432 432
 
433
-		if( date( 'j', $base_date ) == $last_day && 'day' != $this->period ) {
434
-			$expiration = date( 'Y-m-d H:i:s', strtotime( $expiration . ' +2 days' ) );
433
+		if (date('j', $base_date) == $last_day && 'day' != $this->period) {
434
+			$expiration = date('Y-m-d H:i:s', strtotime($expiration . ' +2 days'));
435 435
 		}
436 436
 
437
-		$expiration  = apply_filters( 'wpinv_subscription_renewal_expiration', $expiration, $this->id, $this );
437
+		$expiration  = apply_filters('wpinv_subscription_renewal_expiration', $expiration, $this->id, $this);
438 438
 
439
-		do_action( 'wpinv_subscription_pre_renew', $this->id, $expiration, $this );
439
+		do_action('wpinv_subscription_pre_renew', $this->id, $expiration, $this);
440 440
 
441 441
 		$this->status = 'active';
442 442
 		$times_billed = $this->get_times_billed();
443 443
 
444 444
 		// Complete subscription if applicable
445
-		if ( $this->bill_times > 0 && $times_billed >= $this->bill_times ) {
445
+		if ($this->bill_times > 0 && $times_billed >= $this->bill_times) {
446 446
 			$this->complete();
447 447
 			$this->status = 'completed';
448 448
 		}
@@ -452,10 +452,10 @@  discard block
 block discarded – undo
452 452
 			'status'     => $this->status,
453 453
 		);
454 454
 
455
-        $this->subs_db->update( $this->id, $args );
455
+        $this->subs_db->update($this->id, $args);
456 456
 
457
-		do_action( 'wpinv_subscription_post_renew', $this->id, $expiration, $this );
458
-		do_action( 'wpinv_recurring_set_subscription_status', $this->id, $this->status, $this );
457
+		do_action('wpinv_subscription_post_renew', $this->id, $expiration, $this);
458
+		do_action('wpinv_recurring_set_subscription_status', $this->id, $this->status, $this);
459 459
 
460 460
 	}
461 461
 
@@ -470,7 +470,7 @@  discard block
 block discarded – undo
470 470
 	public function complete() {
471 471
 
472 472
 		// Only mark a subscription as complete if it's not already cancelled.
473
-		if ( 'cancelled' === $this->status ) {
473
+		if ('cancelled' === $this->status) {
474 474
 			return;
475 475
 		}
476 476
 
@@ -478,11 +478,11 @@  discard block
 block discarded – undo
478 478
 			'status' => 'completed'
479 479
 		);
480 480
 
481
-		if( $this->subs_db->update( $this->id, $args ) ) {
481
+		if ($this->subs_db->update($this->id, $args)) {
482 482
 
483 483
 			$this->status = 'completed';
484 484
 
485
-			do_action( 'wpinv_subscription_completed', $this->id, $this );
485
+			do_action('wpinv_subscription_completed', $this->id, $this);
486 486
 
487 487
 		}
488 488
 
@@ -497,15 +497,15 @@  discard block
 block discarded – undo
497 497
 	 * @param  $check_expiration bool True if expiration date should be checked with merchant processor before expiring
498 498
 	 * @return void
499 499
 	 */
500
-	public function expire( $check_expiration = false ) {
500
+	public function expire($check_expiration = false) {
501 501
 
502 502
 		$expiration = $this->expiration;
503 503
 
504
-		if( $check_expiration ) {
504
+		if ($check_expiration) {
505 505
 
506 506
 			// check_expiration() updates $this->expiration so compare to $expiration above
507 507
 
508
-			if( $expiration < $this->get_expiration() && current_time( 'timestamp' ) < $this->get_expiration_time() ) {
508
+			if ($expiration < $this->get_expiration() && current_time('timestamp') < $this->get_expiration_time()) {
509 509
 
510 510
 				return false; // Do not mark as expired since real expiration date is in the future
511 511
 			}
@@ -516,11 +516,11 @@  discard block
 block discarded – undo
516 516
 			'status' => 'expired'
517 517
 		);
518 518
 
519
-		if( $this->subs_db->update( $this->id, $args ) ) {
519
+		if ($this->subs_db->update($this->id, $args)) {
520 520
 
521 521
 			$this->status = 'expired';
522 522
 
523
-			do_action( 'wpinv_subscription_expired', $this->id, $this );
523
+			do_action('wpinv_subscription_expired', $this->id, $this);
524 524
 
525 525
 		}
526 526
 
@@ -538,11 +538,11 @@  discard block
 block discarded – undo
538 538
 			'status' => 'failing'
539 539
 		);
540 540
 
541
-		if( $this->subs_db->update( $this->id, $args ) ) {
541
+		if ($this->subs_db->update($this->id, $args)) {
542 542
 
543 543
 			$this->status = 'failing';
544 544
 
545
-			do_action( 'wpinv_subscription_failing', $this->id, $this );
545
+			do_action('wpinv_subscription_failing', $this->id, $this);
546 546
 
547 547
 
548 548
 		}
@@ -556,7 +556,7 @@  discard block
 block discarded – undo
556 556
      * @return void
557 557
      */
558 558
     public function cancel() {
559
-        if ( 'cancelled' === $this->status ) {
559
+        if ('cancelled' === $this->status) {
560 560
             return; // Already cancelled
561 561
         }
562 562
 
@@ -564,20 +564,20 @@  discard block
 block discarded – undo
564 564
             'status' => 'cancelled'
565 565
         );
566 566
 
567
-        if ( $this->subs_db->update( $this->id, $args ) ) {
568
-            if ( is_user_logged_in() ) {
569
-                $userdata = get_userdata( get_current_user_id() );
567
+        if ($this->subs_db->update($this->id, $args)) {
568
+            if (is_user_logged_in()) {
569
+                $userdata = get_userdata(get_current_user_id());
570 570
                 $user     = $userdata->display_name;
571 571
             } else {
572
-                $user = __( 'gateway', 'invoicing' );
572
+                $user = __('gateway', 'invoicing');
573 573
             }
574 574
 
575
-            $note = sprintf( __( 'Subscription has been cancelled by %s', 'invoicing' ), $user );
576
-            wpinv_insert_payment_note( $this->parent_payment_id, $note, '', '', true );
575
+            $note = sprintf(__('Subscription has been cancelled by %s', 'invoicing'), $user);
576
+            wpinv_insert_payment_note($this->parent_payment_id, $note, '', '', true);
577 577
 
578 578
             $this->status = 'cancelled';
579 579
 
580
-            do_action( 'wpinv_subscription_cancelled', $this->id, $this );
580
+            do_action('wpinv_subscription_cancelled', $this->id, $this);
581 581
         }
582 582
     }
583 583
 
@@ -592,10 +592,10 @@  discard block
 block discarded – undo
592 592
 	 */
593 593
 	public function can_cancel() {
594 594
         $ret = false;
595
-	    if( $this->gateway === 'manual' || in_array( $this->status, $this->get_cancellable_statuses() ) ) {
595
+	    if ($this->gateway === 'manual' || in_array($this->status, $this->get_cancellable_statuses())) {
596 596
             $ret = true;
597 597
         }
598
-		return apply_filters( 'wpinv_subscription_can_cancel', $ret, $this );
598
+		return apply_filters('wpinv_subscription_can_cancel', $ret, $this);
599 599
 	}
600 600
 
601 601
     /**
@@ -606,7 +606,7 @@  discard block
 block discarded – undo
606 606
      * @return      array
607 607
      */
608 608
     public function get_cancellable_statuses() {
609
-        return apply_filters( 'wpinv_recurring_cancellable_statuses', array( 'active', 'trialling', 'failing' ) );
609
+        return apply_filters('wpinv_recurring_cancellable_statuses', array('active', 'trialling', 'failing'));
610 610
     }
611 611
 
612 612
 	/**
@@ -617,9 +617,9 @@  discard block
 block discarded – undo
617 617
 	 */
618 618
 	public function get_cancel_url() {
619 619
 
620
-		$url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'cancel_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-cancel' );
620
+		$url = wp_nonce_url(add_query_arg(array('wpinv_action' => 'cancel_subscription', 'sub_id' => $this->id)), 'wpinv-recurring-cancel');
621 621
 
622
-		return apply_filters( 'wpinv_subscription_cancel_url', $url, $this );
622
+		return apply_filters('wpinv_subscription_cancel_url', $url, $this);
623 623
 	}
624 624
 
625 625
 	/**
@@ -633,7 +633,7 @@  discard block
 block discarded – undo
633 633
 	 */
634 634
 	public function can_renew() {
635 635
 
636
-		return apply_filters( 'wpinv_subscription_can_renew', true, $this );
636
+		return apply_filters('wpinv_subscription_can_renew', true, $this);
637 637
 	}
638 638
 
639 639
 	/**
@@ -644,9 +644,9 @@  discard block
 block discarded – undo
644 644
 	 */
645 645
 	public function get_renew_url() {
646 646
 
647
-		$url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'renew_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-renew' );
647
+		$url = wp_nonce_url(add_query_arg(array('wpinv_action' => 'renew_subscription', 'sub_id' => $this->id)), 'wpinv-recurring-renew');
648 648
 
649
-		return apply_filters( 'wpinv_subscription_renew_url', $url, $this );
649
+		return apply_filters('wpinv_subscription_renew_url', $url, $this);
650 650
 	}
651 651
 
652 652
 	/**
@@ -656,7 +656,7 @@  discard block
 block discarded – undo
656 656
 	 * @return bool
657 657
 	 */
658 658
 	public function can_update() {
659
-		return apply_filters( 'wpinv_subscription_can_update', false, $this );
659
+		return apply_filters('wpinv_subscription_can_update', false, $this);
660 660
 	}
661 661
 
662 662
 	/**
@@ -667,9 +667,9 @@  discard block
 block discarded – undo
667 667
 	 */
668 668
 	public function get_update_url() {
669 669
 
670
-		$url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->id ) );
670
+		$url = add_query_arg(array('action' => 'update', 'subscription_id' => $this->id));
671 671
 
672
-		return apply_filters( 'wpinv_subscription_update_url', $url, $this );
672
+		return apply_filters('wpinv_subscription_update_url', $url, $this);
673 673
 	}
674 674
 
675 675
 	/**
@@ -682,11 +682,11 @@  discard block
 block discarded – undo
682 682
 
683 683
 		$ret = false;
684 684
 
685
-		if( ! $this->is_expired() && ( $this->status == 'active' || $this->status == 'cancelled' || $this->status == 'trialling' ) ) {
685
+		if (!$this->is_expired() && ($this->status == 'active' || $this->status == 'cancelled' || $this->status == 'trialling')) {
686 686
 			$ret = true;
687 687
 		}
688 688
 
689
-		return apply_filters( 'wpinv_subscription_is_active', $ret, $this->id, $this );
689
+		return apply_filters('wpinv_subscription_is_active', $ret, $this->id, $this);
690 690
 
691 691
 	}
692 692
 
@@ -700,26 +700,26 @@  discard block
 block discarded – undo
700 700
 
701 701
 		$ret = false;
702 702
 
703
-		if ( $this->status == 'expired' ) {
703
+		if ($this->status == 'expired') {
704 704
 
705 705
 			$ret = true;
706 706
 
707
-		} elseif( 'active' === $this->status || 'cancelled' === $this->status || $this->status == 'trialling'  ) {
707
+		} elseif ('active' === $this->status || 'cancelled' === $this->status || $this->status == 'trialling') {
708 708
 
709 709
 			$ret        = false;
710 710
 			$expiration = $this->get_expiration_time();
711 711
 
712
-			if( $expiration && strtotime( 'NOW', current_time( 'timestamp' ) ) > $expiration ) {
712
+			if ($expiration && strtotime('NOW', current_time('timestamp')) > $expiration) {
713 713
 				$ret = true;
714 714
 
715
-				if ( 'active' === $this->status || $this->status == 'trialling'  ) {
715
+				if ('active' === $this->status || $this->status == 'trialling') {
716 716
 					$this->expire();
717 717
 				}
718 718
 			}
719 719
 
720 720
 		}
721 721
 
722
-		return apply_filters( 'wpinv_subscription_is_expired', $ret, $this->id, $this );
722
+		return apply_filters('wpinv_subscription_is_expired', $ret, $this->id, $this);
723 723
 
724 724
 	}
725 725
 
@@ -740,7 +740,7 @@  discard block
 block discarded – undo
740 740
 	 * @return int
741 741
 	 */
742 742
 	public function get_expiration_time() {
743
-		return strtotime( $this->expiration, current_time( 'timestamp' ) );
743
+		return strtotime($this->expiration, current_time('timestamp'));
744 744
 	}
745 745
 
746 746
 	/**
@@ -764,37 +764,37 @@  discard block
 block discarded – undo
764 764
 	 */
765 765
 	public function get_status_label() {
766 766
 
767
-		switch( $this->get_status() ) {
767
+		switch ($this->get_status()) {
768 768
 			case 'active' :
769
-				$status = __( 'Active', 'invoicing' );
769
+				$status = __('Active', 'invoicing');
770 770
 				break;
771 771
 
772 772
 			case 'cancelled' :
773
-				$status = __( 'Cancelled', 'invoicing' );
773
+				$status = __('Cancelled', 'invoicing');
774 774
 				break;
775 775
 
776 776
 			case 'expired' :
777
-				$status = __( 'Expired', 'invoicing' );
777
+				$status = __('Expired', 'invoicing');
778 778
 				break;
779 779
 
780 780
 			case 'pending' :
781
-				$status = __( 'Pending', 'invoicing' );
781
+				$status = __('Pending', 'invoicing');
782 782
 				break;
783 783
 
784 784
 			case 'failing' :
785
-				$status = __( 'Failing', 'invoicing' );
785
+				$status = __('Failing', 'invoicing');
786 786
 				break;
787 787
 
788 788
 			case 'trialling' :
789
-				$status = __( 'Trialling', 'invoicing' );
789
+				$status = __('Trialling', 'invoicing');
790 790
 				break;
791 791
 
792 792
 			case 'completed' :
793
-				$status = __( 'Completed', 'invoicing' );
793
+				$status = __('Completed', 'invoicing');
794 794
 				break;
795 795
 
796 796
 			default:
797
-				$status = ucfirst( $this->get_status() );
797
+				$status = ucfirst($this->get_status());
798 798
 				break;
799 799
 		}
800 800
 
@@ -809,51 +809,51 @@  discard block
 block discarded – undo
809 809
      */
810 810
     public function get_status_label_html() {
811 811
 
812
-        switch( $get_status = $this->get_status() ) {
812
+        switch ($get_status = $this->get_status()) {
813 813
             case 'active' :
814
-                $status = __( 'Active', 'invoicing' );
814
+                $status = __('Active', 'invoicing');
815 815
                 $class = 'label-info';
816 816
                 break;
817 817
 
818 818
             case 'cancelled' :
819
-                $status = __( 'Cancelled', 'invoicing' );
819
+                $status = __('Cancelled', 'invoicing');
820 820
                 $class = 'label-danger';
821 821
                 break;
822 822
 
823 823
             case 'expired' :
824
-                $status = __( 'Expired', 'invoicing' );
824
+                $status = __('Expired', 'invoicing');
825 825
                 $class = 'label-default';
826 826
                 break;
827 827
 
828 828
             case 'pending' :
829
-                $status = __( 'Pending', 'invoicing' );
829
+                $status = __('Pending', 'invoicing');
830 830
                 $class = 'label-primary';
831 831
                 break;
832 832
 
833 833
             case 'failing' :
834
-                $status = __( 'Failing', 'invoicing' );
834
+                $status = __('Failing', 'invoicing');
835 835
                 $class = 'label-danger';
836 836
                 break;
837 837
 
838 838
             case 'trialling' :
839
-                $status = __( 'Trialling', 'invoicing' );
839
+                $status = __('Trialling', 'invoicing');
840 840
                 $class = 'label-info';
841 841
                 break;
842 842
 
843 843
             case 'completed' :
844
-                $status = __( 'Completed', 'invoicing' );
844
+                $status = __('Completed', 'invoicing');
845 845
                 $class = 'label-success';
846 846
                 break;
847 847
 
848 848
             default:
849
-                $status = ucfirst( $this->get_status() );
849
+                $status = ucfirst($this->get_status());
850 850
                 $class = 'label-default';
851 851
                 break;
852 852
         }
853 853
 
854 854
         $label = '<span class="sub-status label label-sub-' . $get_status . ' ' . $class . '">' . $status . '</span>';
855 855
 
856
-        return apply_filters( 'wpinv_subscription_status_label_html', $label, $get_status, $status );
856
+        return apply_filters('wpinv_subscription_status_label_html', $label, $get_status, $status);
857 857
     }
858 858
 
859 859
     /**
@@ -863,18 +863,18 @@  discard block
 block discarded – undo
863 863
      * @param  string $txn_id The transaction ID from the merchant processor
864 864
      * @return bool
865 865
      */
866
-    public function payment_exists( $txn_id = '' ) {
866
+    public function payment_exists($txn_id = '') {
867 867
         global $wpdb;
868 868
 
869
-        if ( empty( $txn_id ) ) {
869
+        if (empty($txn_id)) {
870 870
             return false;
871 871
         }
872 872
 
873
-        $txn_id = esc_sql( $txn_id );
873
+        $txn_id = esc_sql($txn_id);
874 874
 
875
-        $purchase = $wpdb->get_var( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wpinv_transaction_id' AND meta_value = '{$txn_id}' LIMIT 1" );
875
+        $purchase = $wpdb->get_var("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wpinv_transaction_id' AND meta_value = '{$txn_id}' LIMIT 1");
876 876
 
877
-        if ( $purchase != null ) {
877
+        if ($purchase != null) {
878 878
             return true;
879 879
         }
880 880
 
Please login to merge, or discard this patch.
includes/class-wpinv-discount.php 3 patches
Indentation   +668 added lines, -668 removed lines patch added patch discarded remove patch
@@ -33,173 +33,173 @@  discard block
 block discarded – undo
33 33
  */
34 34
 class WPInv_Discount {
35 35
 	
36
-	/**
37
-	 * Discount ID.
38
-	 *
39
-	 * @since 1.0.15
40
-	 * @var integer|null
41
-	 */
42
-	public $ID = null;
43
-
44
-	/**
45
-	 * Old discount status.
46
-	 *
47
-	 * @since 1.0.15
48
-	 * @var string
49
-	 */
50
-	public $old_status = 'draft';
36
+    /**
37
+     * Discount ID.
38
+     *
39
+     * @since 1.0.15
40
+     * @var integer|null
41
+     */
42
+    public $ID = null;
43
+
44
+    /**
45
+     * Old discount status.
46
+     *
47
+     * @since 1.0.15
48
+     * @var string
49
+     */
50
+    public $old_status = 'draft';
51 51
 	
52
-	/**
53
-	 * Data array.
54
-	 *
55
-	 * @since 1.0.15
56
-	 * @var array
57
-	 */
58
-	protected $data = array();
59
-
60
-	/**
61
-	 * Discount constructor.
62
-	 *
63
-	 * @param int|array|string|WPInv_Discount $discount discount data, object, ID or code.
64
-	 * @since 1.0.15
65
-	 */
66
-	public function __construct( $discount = array() ) {
52
+    /**
53
+     * Data array.
54
+     *
55
+     * @since 1.0.15
56
+     * @var array
57
+     */
58
+    protected $data = array();
59
+
60
+    /**
61
+     * Discount constructor.
62
+     *
63
+     * @param int|array|string|WPInv_Discount $discount discount data, object, ID or code.
64
+     * @since 1.0.15
65
+     */
66
+    public function __construct( $discount = array() ) {
67 67
         
68 68
         // If the discount is an instance of this class...
69
-		if ( $discount instanceof WPInv_Discount ) {
70
-			$this->init( $discount->data );
71
-			return;
69
+        if ( $discount instanceof WPInv_Discount ) {
70
+            $this->init( $discount->data );
71
+            return;
72 72
         }
73 73
         
74 74
         // If the discount is an array of discount details...
75 75
         if ( is_array( $discount ) ) {
76
-			$this->init( $discount );
77
-			return;
78
-		}
76
+            $this->init( $discount );
77
+            return;
78
+        }
79 79
 		
80
-		// Try fetching the discount by its post id.
81
-		$data = false;
80
+        // Try fetching the discount by its post id.
81
+        $data = false;
82 82
 		
83
-		if ( ! empty( $discount ) && is_numeric( $discount ) ) {
84
-			$discount = absint( $discount );
85
-			$data = self::get_data_by( 'id', $discount );
86
-		}
87
-
88
-		if ( is_array( $data ) ) {
89
-			$this->init( $data );
90
-			return;
91
-		}
83
+        if ( ! empty( $discount ) && is_numeric( $discount ) ) {
84
+            $discount = absint( $discount );
85
+            $data = self::get_data_by( 'id', $discount );
86
+        }
87
+
88
+        if ( is_array( $data ) ) {
89
+            $this->init( $data );
90
+            return;
91
+        }
92 92
 		
93
-		// Try fetching the discount by its discount code.
94
-		if ( ! empty( $discount ) && is_string( $discount ) ) {
95
-			$data = self::get_data_by( 'discount_code', $discount );
96
-		}
97
-
98
-		if ( is_array( $data ) ) {
99
-			$this->init( $data );
100
-			return;
101
-		} 
93
+        // Try fetching the discount by its discount code.
94
+        if ( ! empty( $discount ) && is_string( $discount ) ) {
95
+            $data = self::get_data_by( 'discount_code', $discount );
96
+        }
97
+
98
+        if ( is_array( $data ) ) {
99
+            $this->init( $data );
100
+            return;
101
+        } 
102 102
 		
103
-		// If we are here then the discount does not exist.
104
-		$this->init( array() );
105
-	}
103
+        // If we are here then the discount does not exist.
104
+        $this->init( array() );
105
+    }
106 106
 	
107
-	/**
108
-	 * Sets up object properties
109
-	 *
110
-	 * @since 1.0.15
111
-	 * @param array $data An array containing the discount's data
112
-	 */
113
-	public function init( $data ) {
114
-		$data       	  = self::sanitize_discount_data( $data );
115
-		$this->data 	  = $data;
116
-		$this->old_status = $data['status'];
117
-		$this->ID   	  = $data['ID'];
118
-	}
107
+    /**
108
+     * Sets up object properties
109
+     *
110
+     * @since 1.0.15
111
+     * @param array $data An array containing the discount's data
112
+     */
113
+    public function init( $data ) {
114
+        $data       	  = self::sanitize_discount_data( $data );
115
+        $this->data 	  = $data;
116
+        $this->old_status = $data['status'];
117
+        $this->ID   	  = $data['ID'];
118
+    }
119 119
 	
120
-	/**
121
-	 * Fetch a discount from the db/cache
122
-	 *
123
-	 *
124
-	 * @static
125
-	 * @param string $field The field to query against: 'ID', 'discount_code'
126
-	 * @param string|int $value The field value
127
-	 * @since 1.0.15
128
-	 * @return array|bool array of discount details on success. False otherwise.
129
-	 */
130
-	public static function get_data_by( $field, $value ) {
131
-
132
-		if ( 'id' == strtolower( $field ) ) {
133
-			// Make sure the value is numeric to avoid casting objects, for example,
134
-			// to int 1.
135
-			if ( ! is_numeric( $value ) )
136
-				return false;
137
-			$value = intval( $value );
138
-			if ( $value < 1 )
139
-				return false;
140
-		}
141
-
142
-		if ( ! $value || ! is_string( $field ) ) {
143
-			return false;
144
-		}
120
+    /**
121
+     * Fetch a discount from the db/cache
122
+     *
123
+     *
124
+     * @static
125
+     * @param string $field The field to query against: 'ID', 'discount_code'
126
+     * @param string|int $value The field value
127
+     * @since 1.0.15
128
+     * @return array|bool array of discount details on success. False otherwise.
129
+     */
130
+    public static function get_data_by( $field, $value ) {
131
+
132
+        if ( 'id' == strtolower( $field ) ) {
133
+            // Make sure the value is numeric to avoid casting objects, for example,
134
+            // to int 1.
135
+            if ( ! is_numeric( $value ) )
136
+                return false;
137
+            $value = intval( $value );
138
+            if ( $value < 1 )
139
+                return false;
140
+        }
141
+
142
+        if ( ! $value || ! is_string( $field ) ) {
143
+            return false;
144
+        }
145 145
 		
146
-		$field = trim( $field );
147
-
148
-		// prepare query args
149
-		switch ( strtolower( $field ) ) {
150
-			case 'id':
151
-				$discount_id = $value;
152
-				$args		 = array( 'include' => array( $value ) );
153
-				break;
154
-			case 'discount_code':
155
-			case 'code':
156
-				$value       = trim( $value );
157
-				$discount_id = wp_cache_get( $value, 'WPInv_Discount_Codes' );
158
-				$args		 = array( 'meta_key' => '_wpi_discount_code', 'meta_value' => $value );
159
-				break;
160
-			case 'name':
161
-				$discount_id = 0;
162
-				$args		 = array( 'name' => trim( $value ) );
163
-				break;
164
-			default:
165
-				$args		 = apply_filters( "wpinv_discount_get_data_by_{$field}_args", null, $value );
166
-				if ( ! is_array( $args ) ) {
167
-					return apply_filters( "wpinv_discount_get_data_by_$field", false, $value );
168
-				}
169
-
170
-		}
171
-
172
-		// Check if there is a cached value.
173
-		if ( ! empty( $discount_id ) && $discount = wp_cache_get( (int) $discount_id, 'WPInv_Discounts' ) ) {
174
-			return $discount;
175
-		}
176
-
177
-		$args = array_merge(
178
-			$args,
179
-			array(
180
-				'post_type'      => 'wpi_discount',
181
-				'posts_per_page' => 1,
182
-				'post_status'    => array( 'publish', 'pending', 'draft', 'expired' )
183
-			)
184
-		);
185
-
186
-		$discount = get_posts( $args );
146
+        $field = trim( $field );
147
+
148
+        // prepare query args
149
+        switch ( strtolower( $field ) ) {
150
+            case 'id':
151
+                $discount_id = $value;
152
+                $args		 = array( 'include' => array( $value ) );
153
+                break;
154
+            case 'discount_code':
155
+            case 'code':
156
+                $value       = trim( $value );
157
+                $discount_id = wp_cache_get( $value, 'WPInv_Discount_Codes' );
158
+                $args		 = array( 'meta_key' => '_wpi_discount_code', 'meta_value' => $value );
159
+                break;
160
+            case 'name':
161
+                $discount_id = 0;
162
+                $args		 = array( 'name' => trim( $value ) );
163
+                break;
164
+            default:
165
+                $args		 = apply_filters( "wpinv_discount_get_data_by_{$field}_args", null, $value );
166
+                if ( ! is_array( $args ) ) {
167
+                    return apply_filters( "wpinv_discount_get_data_by_$field", false, $value );
168
+                }
169
+
170
+        }
171
+
172
+        // Check if there is a cached value.
173
+        if ( ! empty( $discount_id ) && $discount = wp_cache_get( (int) $discount_id, 'WPInv_Discounts' ) ) {
174
+            return $discount;
175
+        }
176
+
177
+        $args = array_merge(
178
+            $args,
179
+            array(
180
+                'post_type'      => 'wpi_discount',
181
+                'posts_per_page' => 1,
182
+                'post_status'    => array( 'publish', 'pending', 'draft', 'expired' )
183
+            )
184
+        );
185
+
186
+        $discount = get_posts( $args );
187 187
 				
188
-		if( empty( $discount ) ) {
189
-			return false;
190
-		}
188
+        if( empty( $discount ) ) {
189
+            return false;
190
+        }
191 191
 
192
-		$discount = $discount[0];
192
+        $discount = $discount[0];
193 193
 		
194
-		// Prepare the return data.
195
-		$return = array(
194
+        // Prepare the return data.
195
+        $return = array(
196 196
             'ID'                          => $discount->ID,
197 197
             'code'                        => get_post_meta( $discount->ID, '_wpi_discount_code', true ),
198 198
             'amount'                      => get_post_meta( $discount->ID, '_wpi_discount_amount', true ),
199 199
             'date_created'                => $discount->post_date,
200
-			'date_modified'               => $discount->post_modified,
201
-			'status'               		  => $discount->post_status,
202
-			'start'                  	  => get_post_meta( $discount->ID, '_wpi_discount_start', true ),
200
+            'date_modified'               => $discount->post_modified,
201
+            'status'               		  => $discount->post_status,
202
+            'start'                  	  => get_post_meta( $discount->ID, '_wpi_discount_start', true ),
203 203
             'expiration'                  => get_post_meta( $discount->ID, '_wpi_discount_expiration', true ),
204 204
             'type'               		  => get_post_meta( $discount->ID, '_wpi_discount_type', true ),
205 205
             'description'                 => $discount->post_excerpt,
@@ -213,38 +213,38 @@  discard block
 block discarded – undo
213 213
             'max_total'                   => get_post_meta( $discount->ID, '_wpi_discount_max_total', true ),
214 214
         );
215 215
 		
216
-		$return = self::sanitize_discount_data( $return );
217
-		$return = apply_filters( 'wpinv_discount_properties', $return );
216
+        $return = self::sanitize_discount_data( $return );
217
+        $return = apply_filters( 'wpinv_discount_properties', $return );
218 218
 
219
-		// Update the cache with our data
220
-		wp_cache_add( $discount->ID, $return, 'WPInv_Discounts' );
221
-		wp_cache_add( $return['code'], $discount->ID, 'WPInv_Discount_Codes' );
219
+        // Update the cache with our data
220
+        wp_cache_add( $discount->ID, $return, 'WPInv_Discounts' );
221
+        wp_cache_add( $return['code'], $discount->ID, 'WPInv_Discount_Codes' );
222 222
 
223
-		return $return;
224
-	}
223
+        return $return;
224
+    }
225 225
 	
226
-	/**
227
-	 * Sanitizes discount data
228
-	 *
229
-	 * @static
230
-	 * @since 1.0.15
231
-	 * @access public
232
-	 *
233
-	 * @return array the sanitized data
234
-	 */
235
-	public static function sanitize_discount_data( $data ) {
226
+    /**
227
+     * Sanitizes discount data
228
+     *
229
+     * @static
230
+     * @since 1.0.15
231
+     * @access public
232
+     *
233
+     * @return array the sanitized data
234
+     */
235
+    public static function sanitize_discount_data( $data ) {
236 236
 		
237
-		$allowed_discount_types = array_keys( wpinv_get_discount_types() );
237
+        $allowed_discount_types = array_keys( wpinv_get_discount_types() );
238 238
 		
239
-		$return = array(
239
+        $return = array(
240 240
             'ID'                          => null,
241 241
             'code'                        => '',
242 242
             'amount'                      => 0,
243 243
             'date_created'                => current_time('mysql'),
244 244
             'date_modified'               => current_time('mysql'),
245
-			'expiration'                  => null,
246
-			'start'                  	  => current_time('mysql'),
247
-			'status'                  	  => 'draft',
245
+            'expiration'                  => null,
246
+            'start'                  	  => current_time('mysql'),
247
+            'status'                  	  => 'draft',
248 248
             'type'               		  => 'percent',
249 249
             'description'                 => '',
250 250
             'uses'                        => 0,
@@ -254,426 +254,426 @@  discard block
 block discarded – undo
254 254
             'max_uses'                    => 0,
255 255
             'is_recurring'                => false,
256 256
             'min_total'                   => '',
257
-			'max_total'              	  => '',
258
-		);
257
+            'max_total'              	  => '',
258
+        );
259 259
 		
260 260
 				
261
-		// Arrays only please.
262
-		if ( ! is_array( $data ) ) {
261
+        // Arrays only please.
262
+        if ( ! is_array( $data ) ) {
263 263
             return $return;
264 264
         }
265 265
 
266
-		// If an id is provided, ensure it is a valid discount.
266
+        // If an id is provided, ensure it is a valid discount.
267 267
         if ( ! empty( $data['ID'] ) && ( ! is_numeric( $data['ID'] ) || 'wpi_discount' !== get_post_type( $data['ID'] ) ) ) {
268 268
             return $return;
269
-		}
269
+        }
270 270
 
271 271
         $return = array_merge( $return, $data );
272 272
 
273 273
         // Sanitize some keys.
274 274
         $return['amount']         = wpinv_sanitize_amount( $return['amount'] );
275
-		$return['is_single_use']  = (bool) $return['is_single_use'];
276
-		$return['is_recurring']   = (bool) $return['is_recurring'];
277
-		$return['uses']	          = (int) $return['uses'];
278
-		$return['max_uses']	      = (int) $return['max_uses'];
279
-		$return['min_total'] 	  = wpinv_sanitize_amount( $return['min_total'] );
275
+        $return['is_single_use']  = (bool) $return['is_single_use'];
276
+        $return['is_recurring']   = (bool) $return['is_recurring'];
277
+        $return['uses']	          = (int) $return['uses'];
278
+        $return['max_uses']	      = (int) $return['max_uses'];
279
+        $return['min_total'] 	  = wpinv_sanitize_amount( $return['min_total'] );
280 280
         $return['max_total'] 	  = wpinv_sanitize_amount( $return['max_total'] );
281 281
 
282
-		// Trim all values.
283
-		$return = wpinv_clean( $return );
282
+        // Trim all values.
283
+        $return = wpinv_clean( $return );
284 284
 		
285
-		// Ensure the discount type is supported.
285
+        // Ensure the discount type is supported.
286 286
         if ( ! in_array( $return['type'], $allowed_discount_types, true ) ) {
287 287
             $return['type'] = 'percent';
288
-		}
289
-		$return['type_name'] = wpinv_get_discount_type_name( $return['type'] );
288
+        }
289
+        $return['type_name'] = wpinv_get_discount_type_name( $return['type'] );
290 290
 		
291
-		// Do not offer more than a 100% discount.
292
-		if ( $return['type'] == 'percent' && (float) $return['amount'] > 100 ) {
293
-			$return['amount'] = 100;
294
-		}
295
-
296
-		// Format dates.
297
-		foreach( wpinv_parse_list( 'date_created date_modified expiration start') as $prop ) {
298
-			if( ! empty( $return[$prop] ) ) {
299
-				$return[$prop]      = date_i18n( 'Y-m-d H:i:s', strtotime( $return[$prop] ) );
300
-			}
301
-		}
302
-
303
-		// Formart items.
304
-		foreach( array( 'excluded_items', 'items' ) as $prop ) {
305
-
306
-			if( ! empty( $return[$prop] ) ) {
307
-				// Ensure that the property is an array of non-empty integers.
308
-				$return[$prop]      = array_filter( array_map( 'intval', wpinv_parse_list( $return[$prop] ) ) );
309
-			} else {
310
-				$return[$prop]      = array();
311
-			}
312
-
313
-		}
291
+        // Do not offer more than a 100% discount.
292
+        if ( $return['type'] == 'percent' && (float) $return['amount'] > 100 ) {
293
+            $return['amount'] = 100;
294
+        }
295
+
296
+        // Format dates.
297
+        foreach( wpinv_parse_list( 'date_created date_modified expiration start') as $prop ) {
298
+            if( ! empty( $return[$prop] ) ) {
299
+                $return[$prop]      = date_i18n( 'Y-m-d H:i:s', strtotime( $return[$prop] ) );
300
+            }
301
+        }
302
+
303
+        // Formart items.
304
+        foreach( array( 'excluded_items', 'items' ) as $prop ) {
305
+
306
+            if( ! empty( $return[$prop] ) ) {
307
+                // Ensure that the property is an array of non-empty integers.
308
+                $return[$prop]      = array_filter( array_map( 'intval', wpinv_parse_list( $return[$prop] ) ) );
309
+            } else {
310
+                $return[$prop]      = array();
311
+            }
312
+
313
+        }
314 314
 		
315
-		return apply_filters( 'wpinv_sanitize_discount_data', $return, $data );
316
-	}
315
+        return apply_filters( 'wpinv_sanitize_discount_data', $return, $data );
316
+    }
317 317
 	
318
-	/**
319
-	 * Magic method for checking the existence of a certain custom field.
320
-	 *
321
-	 * @since 1.0.15
322
-	 * @access public
323
-	 *
324
-	 * @return bool Whether the given discount field is set.
325
-	 */
326
-	public function __isset( $key ){
327
-		return isset( $this->data[$key] ) || method_exists( $this, "get_$key");
328
-	}
318
+    /**
319
+     * Magic method for checking the existence of a certain custom field.
320
+     *
321
+     * @since 1.0.15
322
+     * @access public
323
+     *
324
+     * @return bool Whether the given discount field is set.
325
+     */
326
+    public function __isset( $key ){
327
+        return isset( $this->data[$key] ) || method_exists( $this, "get_$key");
328
+    }
329 329
 	
330
-	/**
331
-	 * Magic method for accessing discount properties.
332
-	 *
333
-	 * @since 1.0.15
334
-	 * @access public
335
-	 *
336
-	 * @param string $key Discount data to retrieve
337
-	 * @return mixed Value of the given discount property (if set).
338
-	 */
339
-	public function __get( $key ) {
340
-		return $this->get( $key );
341
-	}
342
-
343
-	/**
344
-	 * Magic method for accessing discount properties.
345
-	 *
346
-	 * @since 1.0.15
347
-	 * @access public
348
-	 *
349
-	 * @param string $key Discount data to retrieve
350
-	 * @return mixed Value of the given discount property (if set).
351
-	 */
352
-	public function get( $key ) {
330
+    /**
331
+     * Magic method for accessing discount properties.
332
+     *
333
+     * @since 1.0.15
334
+     * @access public
335
+     *
336
+     * @param string $key Discount data to retrieve
337
+     * @return mixed Value of the given discount property (if set).
338
+     */
339
+    public function __get( $key ) {
340
+        return $this->get( $key );
341
+    }
342
+
343
+    /**
344
+     * Magic method for accessing discount properties.
345
+     *
346
+     * @since 1.0.15
347
+     * @access public
348
+     *
349
+     * @param string $key Discount data to retrieve
350
+     * @return mixed Value of the given discount property (if set).
351
+     */
352
+    public function get( $key ) {
353 353
 		
354
-		if ( $key == 'id' ) {
355
-			$key = 'ID';
356
-		}
354
+        if ( $key == 'id' ) {
355
+            $key = 'ID';
356
+        }
357 357
 		
358
-		if( method_exists( $this, "get_$key") ) {
359
-			$value 	= call_user_func( array( $this, "get_$key" ) );
360
-		} else if( isset( $this->data[$key] ) ) {
361
-			$value 	= $this->data[$key];
362
-		} else {
363
-			$value = null;
364
-		}
358
+        if( method_exists( $this, "get_$key") ) {
359
+            $value 	= call_user_func( array( $this, "get_$key" ) );
360
+        } else if( isset( $this->data[$key] ) ) {
361
+            $value 	= $this->data[$key];
362
+        } else {
363
+            $value = null;
364
+        }
365 365
 		
366
-		/**
367
-		 * Filters a discount's property value.
368
-		 * 
369
-		 * The dynamic part ($key) can be any property name e.g items, code, type etc.
370
-		 * 
371
-		 * @param mixed          $value    The property's value.
372
-		 * @param int            $ID       The discount's ID.
373
-		 * @param WPInv_Discount $discount The discount object.
374
-		 * @param string         $code     The discount's discount code.
375
-		 * @param array          $data     The discount's data array.
376
-		 */
377
-		return apply_filters( "wpinv_get_discount_{$key}", $value, $this->ID, $this, $this->data['code'], $this->data );
378
-
379
-	}
366
+        /**
367
+         * Filters a discount's property value.
368
+         * 
369
+         * The dynamic part ($key) can be any property name e.g items, code, type etc.
370
+         * 
371
+         * @param mixed          $value    The property's value.
372
+         * @param int            $ID       The discount's ID.
373
+         * @param WPInv_Discount $discount The discount object.
374
+         * @param string         $code     The discount's discount code.
375
+         * @param array          $data     The discount's data array.
376
+         */
377
+        return apply_filters( "wpinv_get_discount_{$key}", $value, $this->ID, $this, $this->data['code'], $this->data );
378
+
379
+    }
380 380
 	
381
-	/**
382
-	 * Magic method for setting discount fields.
383
-	 *
384
-	 * This method does not update custom fields in the database.
385
-	 *
386
-	 * @since 1.0.15
387
-	 * @access public
388
-	 *
389
-	 */
390
-	public function __set( $key, $value ) {
381
+    /**
382
+     * Magic method for setting discount fields.
383
+     *
384
+     * This method does not update custom fields in the database.
385
+     *
386
+     * @since 1.0.15
387
+     * @access public
388
+     *
389
+     */
390
+    public function __set( $key, $value ) {
391 391
 		
392
-		if ( 'id' == strtolower( $key ) ) {
392
+        if ( 'id' == strtolower( $key ) ) {
393 393
 			
394
-			$this->ID = $value;
395
-			$this->data['ID'] = $value;
396
-			return;
394
+            $this->ID = $value;
395
+            $this->data['ID'] = $value;
396
+            return;
397 397
 			
398
-		}
398
+        }
399 399
 		
400
-		/**
401
-		 * Filters a discount's property value before it is saved.
402
-		 * 
403
-		 * 
404
-		 * 
405
-		 * The dynamic part ($key) can be any property name e.g items, code, type etc.
406
-		 * 
407
-		 * @param mixed          $value    The property's value.
408
-		 * @param int            $ID       The discount's ID.
409
-		 * @param WPInv_Discount $discount The discount object.
410
-		 * @param string         $code     The discount's discount code.
411
-		 * @param array          $data     The discount's data array.
412
-		 */
413
-		$value = apply_filters( "wpinv_set_discount_{$key}", $value, $this->ID, $this, $this->code, $this->data );
414
-
415
-		if( method_exists( $this, "set_$key") ) {
416
-			call_user_func( array( $this, "set_$key" ), $value );
417
-		} else {
418
-			$this->data[$key] = $value;
419
-		}
400
+        /**
401
+         * Filters a discount's property value before it is saved.
402
+         * 
403
+         * 
404
+         * 
405
+         * The dynamic part ($key) can be any property name e.g items, code, type etc.
406
+         * 
407
+         * @param mixed          $value    The property's value.
408
+         * @param int            $ID       The discount's ID.
409
+         * @param WPInv_Discount $discount The discount object.
410
+         * @param string         $code     The discount's discount code.
411
+         * @param array          $data     The discount's data array.
412
+         */
413
+        $value = apply_filters( "wpinv_set_discount_{$key}", $value, $this->ID, $this, $this->code, $this->data );
414
+
415
+        if( method_exists( $this, "set_$key") ) {
416
+            call_user_func( array( $this, "set_$key" ), $value );
417
+        } else {
418
+            $this->data[$key] = $value;
419
+        }
420 420
 		
421
-	}
421
+    }
422 422
 	
423
-	/**
424
-	 * Saves (or updates) a discount to the database
425
-	 *
426
-	 * @since 1.0.15
427
-	 * @access public
428
-	 * @return bool
429
-	 *
430
-	 */
431
-	public function save(){
423
+    /**
424
+     * Saves (or updates) a discount to the database
425
+     *
426
+     * @since 1.0.15
427
+     * @access public
428
+     * @return bool
429
+     *
430
+     */
431
+    public function save(){
432 432
 		
433
-		$data = self::sanitize_discount_data( $this->data );
433
+        $data = self::sanitize_discount_data( $this->data );
434 434
 
435
-		// Should we create a new post?
436
-		if( ! $data[ 'ID' ] ) {
435
+        // Should we create a new post?
436
+        if( ! $data[ 'ID' ] ) {
437 437
 
438
-			$id = wp_insert_post( array(
439
-				'post_status'           => $data['status'],
440
-				'post_type'             => 'wpi_discount',
441
-				'post_excerpt'          => $data['description'],
442
-			) );
438
+            $id = wp_insert_post( array(
439
+                'post_status'           => $data['status'],
440
+                'post_type'             => 'wpi_discount',
441
+                'post_excerpt'          => $data['description'],
442
+            ) );
443 443
 
444
-			if( empty( $id ) ) {
445
-				return false;
446
-			}
444
+            if( empty( $id ) ) {
445
+                return false;
446
+            }
447 447
 
448
-			$data[ 'ID' ] = (int) $id;
449
-			$this->ID = $data[ 'ID' ];
450
-			$this->data['ID'] = $data[ 'ID' ];
448
+            $data[ 'ID' ] = (int) $id;
449
+            $this->ID = $data[ 'ID' ];
450
+            $this->data['ID'] = $data[ 'ID' ];
451 451
 
452
-		} else {
453
-			$this->update_status( $data['status'] );
454
-		}
452
+        } else {
453
+            $this->update_status( $data['status'] );
454
+        }
455 455
 
456
-		$meta = apply_filters( 'wpinv_update_discount', $data, $this->ID, $this );
456
+        $meta = apply_filters( 'wpinv_update_discount', $data, $this->ID, $this );
457 457
 
458
-		do_action( 'wpinv_pre_update_discount', $meta, $this->ID, $this );
458
+        do_action( 'wpinv_pre_update_discount', $meta, $this->ID, $this );
459 459
 
460
-		foreach( wpinv_parse_list( 'ID date_created date_modified status description type_name' ) as $prop ) {
461
-			if ( isset( $meta[$prop] ) ) {
462
-				unset( $meta[$prop] );
463
-			}
464
-		}
460
+        foreach( wpinv_parse_list( 'ID date_created date_modified status description type_name' ) as $prop ) {
461
+            if ( isset( $meta[$prop] ) ) {
462
+                unset( $meta[$prop] );
463
+            }
464
+        }
465 465
 
466
-		if( isset( $meta['uses'] ) && empty( $meta['uses'] ) ) {
467
-			unset( $meta['uses'] );
468
-		}
466
+        if( isset( $meta['uses'] ) && empty( $meta['uses'] ) ) {
467
+            unset( $meta['uses'] );
468
+        }
469 469
 
470
-		// Save the metadata.
471
-		foreach( $meta as $key => $value ) {
472
-			update_post_meta( $this->ID, "_wpi_discount_$key", $value );
473
-		}
470
+        // Save the metadata.
471
+        foreach( $meta as $key => $value ) {
472
+            update_post_meta( $this->ID, "_wpi_discount_$key", $value );
473
+        }
474 474
 
475
-		$this->refresh();
475
+        $this->refresh();
476 476
 
477
-		do_action( 'wpinv_post_update_discount', $meta, $this->ID );
477
+        do_action( 'wpinv_post_update_discount', $meta, $this->ID );
478 478
 
479
-		return true;		
480
-	}
479
+        return true;		
480
+    }
481 481
 
482
-	/**
483
-	 * Refreshes the discount data.
484
-	 *
485
-	 * @since 1.0.15
486
-	 * @access public
487
-	 * @return bool
488
-	 *
489
-	 */
490
-	public function refresh(){
482
+    /**
483
+     * Refreshes the discount data.
484
+     *
485
+     * @since 1.0.15
486
+     * @access public
487
+     * @return bool
488
+     *
489
+     */
490
+    public function refresh(){
491 491
 
492
-		// Empty the cache for this discount.
493
-		wp_cache_delete( $this->ID, 'WPInv_Discounts' );
494
-		wp_cache_delete( $this->get( 'code' ), 'WPInv_Discount_Codes' );
492
+        // Empty the cache for this discount.
493
+        wp_cache_delete( $this->ID, 'WPInv_Discounts' );
494
+        wp_cache_delete( $this->get( 'code' ), 'WPInv_Discount_Codes' );
495 495
 
496
-		$data = self::get_data_by( 'id', $this->ID );
497
-		if( is_array( $data ) ) {
498
-			$this->init( $data );
499
-		} else {
500
-			$this->init( array() );
501
-		}
496
+        $data = self::get_data_by( 'id', $this->ID );
497
+        if( is_array( $data ) ) {
498
+            $this->init( $data );
499
+        } else {
500
+            $this->init( array() );
501
+        }
502 502
 
503
-	}
503
+    }
504 504
 
505
-	/**
506
-	 * Saves (or updates) a discount to the database
507
-	 *
508
-	 * @since 1.0.15
509
-	 * @access public
510
-	 * @return bool
511
-	 *
512
-	 */
513
-	public function update_status( $status = 'publish' ){
505
+    /**
506
+     * Saves (or updates) a discount to the database
507
+     *
508
+     * @since 1.0.15
509
+     * @access public
510
+     * @return bool
511
+     *
512
+     */
513
+    public function update_status( $status = 'publish' ){
514 514
 
515 515
 
516
-		if ( $this->exists() && $this->old_status != $status ) {
516
+        if ( $this->exists() && $this->old_status != $status ) {
517 517
 
518
-			do_action( 'wpinv_pre_update_discount_status', $this->ID, $this->old_status, $status );
519
-        	$updated = wp_update_post( array( 'ID' => $this->ID, 'post_status' => $status ) );
520
-			do_action( 'wpinv_post_update_discount_status', $this->ID, $this->old_status, $status );
518
+            do_action( 'wpinv_pre_update_discount_status', $this->ID, $this->old_status, $status );
519
+            $updated = wp_update_post( array( 'ID' => $this->ID, 'post_status' => $status ) );
520
+            do_action( 'wpinv_post_update_discount_status', $this->ID, $this->old_status, $status );
521 521
 
522
-			$this->refresh();
522
+            $this->refresh();
523 523
 
524
-			return $updated !== 0;
524
+            return $updated !== 0;
525 525
 			
526
-		}
526
+        }
527 527
 
528
-		return false;		
529
-	}
528
+        return false;		
529
+    }
530 530
 	
531 531
 	
532
-	/**
533
-	 * Checks whether a discount exists in the database or not
534
-	 * 
535
-	 * @since 1.0.15
536
-	 */
537
-	public function exists(){
538
-		return ! empty( $this->ID );
539
-	}
532
+    /**
533
+     * Checks whether a discount exists in the database or not
534
+     * 
535
+     * @since 1.0.15
536
+     */
537
+    public function exists(){
538
+        return ! empty( $this->ID );
539
+    }
540 540
 	
541
-	// Boolean methods
541
+    // Boolean methods
542 542
 	
543
-	/**
544
-	 * Checks the discount type.
545
-	 * 
546
-	 * 
547
-	 * @param  string $type the discount type to check against
548
-	 * @since 1.0.15
549
-	 * @return bool
550
-	 */
551
-	public function is_type( $type ) {
552
-		return $this->type == $type;
553
-	}
543
+    /**
544
+     * Checks the discount type.
545
+     * 
546
+     * 
547
+     * @param  string $type the discount type to check against
548
+     * @since 1.0.15
549
+     * @return bool
550
+     */
551
+    public function is_type( $type ) {
552
+        return $this->type == $type;
553
+    }
554 554
 	
555
-	/**
556
-	 * Checks whether the discount is published or not
557
-	 * 
558
-	 * @since 1.0.15
559
-	 * @return bool
560
-	 */
561
-	public function is_active() {
562
-		return $this->status == 'publish';
563
-	}
555
+    /**
556
+     * Checks whether the discount is published or not
557
+     * 
558
+     * @since 1.0.15
559
+     * @return bool
560
+     */
561
+    public function is_active() {
562
+        return $this->status == 'publish';
563
+    }
564 564
 	
565
-	/**
566
-	 * Checks whether the discount is has exided the usage limit or not
567
-	 * 
568
-	 * @since 1.0.15
569
-	 * @return bool
570
-	 */
571
-	public function has_exceeded_limit() {
572
-		if( empty( $this->max_uses ) || empty( $this->uses ) ) { 
573
-			return false ;
574
-		}
565
+    /**
566
+     * Checks whether the discount is has exided the usage limit or not
567
+     * 
568
+     * @since 1.0.15
569
+     * @return bool
570
+     */
571
+    public function has_exceeded_limit() {
572
+        if( empty( $this->max_uses ) || empty( $this->uses ) ) { 
573
+            return false ;
574
+        }
575 575
 		
576
-		$exceeded =  $this->uses >= $this->max_uses;
577
-		return apply_filters( 'wpinv_is_discount_maxed_out', $exceeded, $this->ID, $this, $this->code );
578
-	}
576
+        $exceeded =  $this->uses >= $this->max_uses;
577
+        return apply_filters( 'wpinv_is_discount_maxed_out', $exceeded, $this->ID, $this, $this->code );
578
+    }
579 579
 	
580
-	/**
581
-	 * Checks if the discount is expired
582
-	 * 
583
-	 * @since 1.0.15
584
-	 * @return bool
585
-	 */
586
-	public function is_expired() {
587
-		$expired = empty ( $this->expiration ) ? false : current_time( 'timestamp' ) > strtotime( $this->expiration );
588
-		return apply_filters( 'wpinv_is_discount_expired', $expired, $this->ID, $this, $this->code );
589
-	}
590
-
591
-	/**
592
-	 * Checks the discount start date.
593
-	 * 
594
-	 * @since 1.0.15
595
-	 * @return bool
596
-	 */
597
-	public function has_started() {
598
-		$started = empty ( $this->start ) ? true : current_time( 'timestamp' ) > strtotime( $this->start );
599
-		return apply_filters( 'wpinv_is_discount_started', $started, $this->ID, $this, $this->code );		
600
-	}
580
+    /**
581
+     * Checks if the discount is expired
582
+     * 
583
+     * @since 1.0.15
584
+     * @return bool
585
+     */
586
+    public function is_expired() {
587
+        $expired = empty ( $this->expiration ) ? false : current_time( 'timestamp' ) > strtotime( $this->expiration );
588
+        return apply_filters( 'wpinv_is_discount_expired', $expired, $this->ID, $this, $this->code );
589
+    }
590
+
591
+    /**
592
+     * Checks the discount start date.
593
+     * 
594
+     * @since 1.0.15
595
+     * @return bool
596
+     */
597
+    public function has_started() {
598
+        $started = empty ( $this->start ) ? true : current_time( 'timestamp' ) > strtotime( $this->start );
599
+        return apply_filters( 'wpinv_is_discount_started', $started, $this->ID, $this, $this->code );		
600
+    }
601 601
 	
602
-	/**
603
-	 * Check if a discount is valid for a given item id.
604
-	 *
605
-	 * @param  int|int[]  $item_ids
606
-	 * @since 1.0.15
607
-	 * @return boolean
608
-	 */
609
-	public function is_valid_for_items( $item_ids ) {
602
+    /**
603
+     * Check if a discount is valid for a given item id.
604
+     *
605
+     * @param  int|int[]  $item_ids
606
+     * @since 1.0.15
607
+     * @return boolean
608
+     */
609
+    public function is_valid_for_items( $item_ids ) {
610 610
 		 
611
-		$item_ids = array_map( 'intval',  wpinv_parse_list( $item_ids ) );
612
-		$included = array_intersect( $item_ids, $this->items );
613
-		$excluded = array_intersect( $item_ids, $this->excluded_items );
614
-
615
-		if( ! empty( $this->excluded_items ) && ! empty( $excluded ) ) {
616
-			return false;
617
-		}
618
-
619
-		if( ! empty( $this->items ) && empty( $included ) ) {
620
-			return false;
621
-		}
622
-		return true;
623
-	}
611
+        $item_ids = array_map( 'intval',  wpinv_parse_list( $item_ids ) );
612
+        $included = array_intersect( $item_ids, $this->items );
613
+        $excluded = array_intersect( $item_ids, $this->excluded_items );
614
+
615
+        if( ! empty( $this->excluded_items ) && ! empty( $excluded ) ) {
616
+            return false;
617
+        }
618
+
619
+        if( ! empty( $this->items ) && empty( $included ) ) {
620
+            return false;
621
+        }
622
+        return true;
623
+    }
624 624
 	
625
-	/**
626
-	 * Check if a discount is valid for the given amount
627
-	 *
628
-	 * @param  float  $amount The amount to check against
629
-	 * @since 1.0.15
630
-	 * @return boolean
631
-	 */
632
-	public function is_valid_for_amount( $amount ) {
633
-		return $this->is_minimum_amount_met( $amount ) && $this->is_maximum_amount_met( $amount );
634
-	}
635
-
636
-	/**
637
-	 * Checks if the minimum amount is met
638
-	 *
639
-	 * @param  float  $amount The amount to check against
640
-	 * @since 1.0.15
641
-	 * @return boolean
642
-	 */
643
-	public function is_minimum_amount_met( $amount ) {
644
-		$amount = floatval( $amount );
645
-		$min_met= ! ( $this->min_total > 0 && $amount < $this->min_total );
646
-		return apply_filters( 'wpinv_is_discount_min_met', $min_met, $this->ID, $this, $this->code, $amount );
647
-	}
648
-
649
-	/**
650
-	 * Checks if the maximum amount is met
651
-	 *
652
-	 * @param  float  $amount The amount to check against
653
-	 * @since 1.0.15
654
-	 * @return boolean
655
-	 */
656
-	public function is_maximum_amount_met( $amount ) {
657
-		$amount = floatval( $amount );
658
-		$max_met= ! ( $this->max_total > 0 && $amount > $this->max_total );
659
-		return apply_filters( 'wpinv_is_discount_max_met', $max_met, $this->ID, $this, $this->code, $amount );
660
-	}
661
-
662
-	/**
663
-	 * Check if a discount is valid for the given user
664
-	 *
665
-	 * @param  int|string  $user
666
-	 * @since 1.0.15
667
-	 * @return boolean
668
-	 */
669
-	public function is_valid_for_user( $user ) {
670
-		global $wpi_checkout_id;
671
-
672
-		if( empty( $user ) || empty( $this->is_single_use ) ) {
673
-			return true;
674
-		}
675
-
676
-		$user_id = 0;
625
+    /**
626
+     * Check if a discount is valid for the given amount
627
+     *
628
+     * @param  float  $amount The amount to check against
629
+     * @since 1.0.15
630
+     * @return boolean
631
+     */
632
+    public function is_valid_for_amount( $amount ) {
633
+        return $this->is_minimum_amount_met( $amount ) && $this->is_maximum_amount_met( $amount );
634
+    }
635
+
636
+    /**
637
+     * Checks if the minimum amount is met
638
+     *
639
+     * @param  float  $amount The amount to check against
640
+     * @since 1.0.15
641
+     * @return boolean
642
+     */
643
+    public function is_minimum_amount_met( $amount ) {
644
+        $amount = floatval( $amount );
645
+        $min_met= ! ( $this->min_total > 0 && $amount < $this->min_total );
646
+        return apply_filters( 'wpinv_is_discount_min_met', $min_met, $this->ID, $this, $this->code, $amount );
647
+    }
648
+
649
+    /**
650
+     * Checks if the maximum amount is met
651
+     *
652
+     * @param  float  $amount The amount to check against
653
+     * @since 1.0.15
654
+     * @return boolean
655
+     */
656
+    public function is_maximum_amount_met( $amount ) {
657
+        $amount = floatval( $amount );
658
+        $max_met= ! ( $this->max_total > 0 && $amount > $this->max_total );
659
+        return apply_filters( 'wpinv_is_discount_max_met', $max_met, $this->ID, $this, $this->code, $amount );
660
+    }
661
+
662
+    /**
663
+     * Check if a discount is valid for the given user
664
+     *
665
+     * @param  int|string  $user
666
+     * @since 1.0.15
667
+     * @return boolean
668
+     */
669
+    public function is_valid_for_user( $user ) {
670
+        global $wpi_checkout_id;
671
+
672
+        if( empty( $user ) || empty( $this->is_single_use ) ) {
673
+            return true;
674
+        }
675
+
676
+        $user_id = 0;
677 677
         if ( is_int( $user ) ) {
678 678
             $user_id = absint( $user );
679 679
         } else if ( is_email( $user ) && $user_data = get_user_by( 'email', $user ) ) {
@@ -682,164 +682,164 @@  discard block
 block discarded – undo
682 682
             $user_id = $user_data->ID;
683 683
         } else if ( absint( $user ) > 0 ) {
684 684
             $user_id = absint( $user );
685
-		}
685
+        }
686 686
 
687
-		if ( empty( $user_id ) ) {
688
-			return true;
689
-		}
687
+        if ( empty( $user_id ) ) {
688
+            return true;
689
+        }
690 690
 		
691
-		// Get all payments with matching user id
691
+        // Get all payments with matching user id
692 692
         $payments = wpinv_get_invoices( array( 'user' => $user_id, 'limit' => false ) ); 
693
-		$code     = strtolower( $this->code );
693
+        $code     = strtolower( $this->code );
694 694
 
695
-		foreach ( $payments as $payment ) {
695
+        foreach ( $payments as $payment ) {
696 696
 
697
-			// Don't count discount used for current invoice checkout.
698
-			if ( ! empty( $wpi_checkout_id ) && $wpi_checkout_id == $payment->ID ) {
699
-				continue;
700
-			}
697
+            // Don't count discount used for current invoice checkout.
698
+            if ( ! empty( $wpi_checkout_id ) && $wpi_checkout_id == $payment->ID ) {
699
+                continue;
700
+            }
701 701
 			
702
-			if ( $payment->has_status( array( 'wpi-cancelled', 'wpi-failed' ) ) ) {
703
-				continue;
704
-			}
705
-
706
-			$discounts = $payment->get_discounts( true );
707
-			if ( empty( $discounts ) ) {
708
-				continue;
709
-			}
710
-
711
-			$discounts = array_map( 'strtolower', wpinv_parse_list( $discounts ) );
712
-			if ( ! empty( $discounts ) && in_array( $code, $discounts ) ) {
713
-				return false;
714
-			}
715
-		}
716
-
717
-		return true;
718
-	}
719
-
720
-	/**
721
-	 * Deletes the discount from the database
722
-	 *
723
-	 * @since 1.0.15
724
-	 * @return boolean
725
-	 */
726
-	public function remove() {
727
-
728
-		if ( empty( $this->ID ) ) {
729
-			return true;
730
-		}
731
-
732
-		do_action( 'wpinv_pre_delete_discount', $this->ID, $this->data );
733
-		wp_cache_delete( $this->ID, 'WPInv_Discounts' );
734
-    	wp_delete_post( $this->ID, true );
735
-		wp_cache_delete( $this->code, 'WPInv_Discount_Codes' );
736
-    	do_action( 'wpinv_post_delete_discount', $this->ID, $this->data );
737
-
738
-		$this->ID = null;
739
-		$this->data['id'] = null;
740
-		return true;
741
-	}
742
-
743
-	/**
744
-	 * Increases a discount's usage.
745
-	 *
746
-	 * @since 1.0.15
747
-	 * @param int $by The number of usages to increas by.
748
-	 * @return int
749
-	 */
750
-	public function increase_usage( $by = 1 ) {
751
-
752
-		$this->uses = $this->uses + $by;
753
-
754
-		if( $this->uses  < 0 ) {
755
-			$this->uses = 0;
756
-			update_post_meta( $this->ID, "_wpi_discount_uses", 0 );
757
-		}
758
-
759
-		$this->save();
760
-
761
-		if( $by > 0 ) {
762
-			do_action( 'wpinv_discount_increase_use_count', $this->uses, $this->ID, $this->code, $by );
763
-		} else {
764
-			do_action( 'wpinv_discount_decrease_use_count', $this->uses, $this->ID, $this->code, absint( $by ) );
765
-		}
702
+            if ( $payment->has_status( array( 'wpi-cancelled', 'wpi-failed' ) ) ) {
703
+                continue;
704
+            }
705
+
706
+            $discounts = $payment->get_discounts( true );
707
+            if ( empty( $discounts ) ) {
708
+                continue;
709
+            }
710
+
711
+            $discounts = array_map( 'strtolower', wpinv_parse_list( $discounts ) );
712
+            if ( ! empty( $discounts ) && in_array( $code, $discounts ) ) {
713
+                return false;
714
+            }
715
+        }
716
+
717
+        return true;
718
+    }
719
+
720
+    /**
721
+     * Deletes the discount from the database
722
+     *
723
+     * @since 1.0.15
724
+     * @return boolean
725
+     */
726
+    public function remove() {
727
+
728
+        if ( empty( $this->ID ) ) {
729
+            return true;
730
+        }
731
+
732
+        do_action( 'wpinv_pre_delete_discount', $this->ID, $this->data );
733
+        wp_cache_delete( $this->ID, 'WPInv_Discounts' );
734
+        wp_delete_post( $this->ID, true );
735
+        wp_cache_delete( $this->code, 'WPInv_Discount_Codes' );
736
+        do_action( 'wpinv_post_delete_discount', $this->ID, $this->data );
737
+
738
+        $this->ID = null;
739
+        $this->data['id'] = null;
740
+        return true;
741
+    }
742
+
743
+    /**
744
+     * Increases a discount's usage.
745
+     *
746
+     * @since 1.0.15
747
+     * @param int $by The number of usages to increas by.
748
+     * @return int
749
+     */
750
+    public function increase_usage( $by = 1 ) {
751
+
752
+        $this->uses = $this->uses + $by;
753
+
754
+        if( $this->uses  < 0 ) {
755
+            $this->uses = 0;
756
+            update_post_meta( $this->ID, "_wpi_discount_uses", 0 );
757
+        }
758
+
759
+        $this->save();
760
+
761
+        if( $by > 0 ) {
762
+            do_action( 'wpinv_discount_increase_use_count', $this->uses, $this->ID, $this->code, $by );
763
+        } else {
764
+            do_action( 'wpinv_discount_decrease_use_count', $this->uses, $this->ID, $this->code, absint( $by ) );
765
+        }
766 766
 		
767
-		return $this->uses;
768
-	}
769
-
770
-	/**
771
-	 * Retrieves discount data
772
-	 *
773
-	 * @since 1.0.15
774
-	 * @return array
775
-	 */
776
-	public function get_data() {
777
-		$return = array();
778
-		foreach( array_keys( $this->data ) as $key ) {
779
-			$return[ $key ] = $this->get( $key );
780
-		}
781
-		return $return;
782
-	}
783
-
784
-	/**
785
-	 * Retrieves discount data as json
786
-	 *
787
-	 * @since 1.0.15
788
-	 * @return string|false
789
-	 */
790
-	public function get_data_as_json() {
791
-		return wp_json_encode( $this->get_data() );
792
-	}
793
-
794
-	/**
795
-	 * Checks if a discount can only be used once per user.
796
-	 *
797
-	 * @since 1.0.15
798
-	 * @return bool
799
-	 */
800
-	public function get_is_single_use() {
801
-		return (bool) apply_filters( 'wpinv_is_discount_single_use', $this->data['is_single_use'], $this->ID, $this, $this->code );
802
-	}
803
-
804
-	/**
805
-	 * Checks if a discount is recurring.
806
-	 *
807
-	 * @since 1.0.15
808
-	 * @return bool
809
-	 */
810
-	public function get_is_recurring() {
811
-		return (bool) apply_filters( 'wpinv_is_discount_recurring', $this->data['is_recurring'], $this->ID, $this->code, $this );
812
-	}
813
-
814
-	/**
815
-	 * Returns a discount's included items.
816
-	 *
817
-	 * @since 1.0.15
818
-	 * @return array
819
-	 */
820
-	public function get_items() {
821
-		return wpinv_parse_list( apply_filters( 'wpinv_get_discount_item_reqs', $this->data['items'], $this->ID, $this, $this->code ) );
822
-	}
823
-
824
-	/**
825
-	 * Returns a discount's discounted amount.
826
-	 *
827
-	 * @since 1.0.15
828
-	 * @return float
829
-	 */
830
-	public function get_discounted_amount( $amount ) {
831
-
832
-		if ( $this->type == 'flat' ) {
767
+        return $this->uses;
768
+    }
769
+
770
+    /**
771
+     * Retrieves discount data
772
+     *
773
+     * @since 1.0.15
774
+     * @return array
775
+     */
776
+    public function get_data() {
777
+        $return = array();
778
+        foreach( array_keys( $this->data ) as $key ) {
779
+            $return[ $key ] = $this->get( $key );
780
+        }
781
+        return $return;
782
+    }
783
+
784
+    /**
785
+     * Retrieves discount data as json
786
+     *
787
+     * @since 1.0.15
788
+     * @return string|false
789
+     */
790
+    public function get_data_as_json() {
791
+        return wp_json_encode( $this->get_data() );
792
+    }
793
+
794
+    /**
795
+     * Checks if a discount can only be used once per user.
796
+     *
797
+     * @since 1.0.15
798
+     * @return bool
799
+     */
800
+    public function get_is_single_use() {
801
+        return (bool) apply_filters( 'wpinv_is_discount_single_use', $this->data['is_single_use'], $this->ID, $this, $this->code );
802
+    }
803
+
804
+    /**
805
+     * Checks if a discount is recurring.
806
+     *
807
+     * @since 1.0.15
808
+     * @return bool
809
+     */
810
+    public function get_is_recurring() {
811
+        return (bool) apply_filters( 'wpinv_is_discount_recurring', $this->data['is_recurring'], $this->ID, $this->code, $this );
812
+    }
813
+
814
+    /**
815
+     * Returns a discount's included items.
816
+     *
817
+     * @since 1.0.15
818
+     * @return array
819
+     */
820
+    public function get_items() {
821
+        return wpinv_parse_list( apply_filters( 'wpinv_get_discount_item_reqs', $this->data['items'], $this->ID, $this, $this->code ) );
822
+    }
823
+
824
+    /**
825
+     * Returns a discount's discounted amount.
826
+     *
827
+     * @since 1.0.15
828
+     * @return float
829
+     */
830
+    public function get_discounted_amount( $amount ) {
831
+
832
+        if ( $this->type == 'flat' ) {
833 833
             $amount = $amount - $this->amount;
834
-		} else {
834
+        } else {
835 835
             $amount = $amount - ( $amount * ( $this->amount / 100 ) );
836
-		}
836
+        }
837 837
 
838
-		if ( $amount < 0 ) {
839
-			$amount = 0;
840
-		}
838
+        if ( $amount < 0 ) {
839
+            $amount = 0;
840
+        }
841 841
 
842
-		return apply_filters( 'wpinv_discounted_amount', $amount, $this->ID, $this, $this->code, $this->amount );
843
-	}
842
+        return apply_filters( 'wpinv_discounted_amount', $amount, $this->ID, $this, $this->code, $this->amount );
843
+    }
844 844
 	
845 845
 }
Please login to merge, or discard this patch.
Spacing   +189 added lines, -189 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
  * @since   1.0.15
6 6
  */
7 7
 
8
-defined( 'ABSPATH' ) || exit;
8
+defined('ABSPATH') || exit;
9 9
 
10 10
 /**
11 11
  * Discount class.
@@ -63,45 +63,45 @@  discard block
 block discarded – undo
63 63
 	 * @param int|array|string|WPInv_Discount $discount discount data, object, ID or code.
64 64
 	 * @since 1.0.15
65 65
 	 */
66
-	public function __construct( $discount = array() ) {
66
+	public function __construct($discount = array()) {
67 67
         
68 68
         // If the discount is an instance of this class...
69
-		if ( $discount instanceof WPInv_Discount ) {
70
-			$this->init( $discount->data );
69
+		if ($discount instanceof WPInv_Discount) {
70
+			$this->init($discount->data);
71 71
 			return;
72 72
         }
73 73
         
74 74
         // If the discount is an array of discount details...
75
-        if ( is_array( $discount ) ) {
76
-			$this->init( $discount );
75
+        if (is_array($discount)) {
76
+			$this->init($discount);
77 77
 			return;
78 78
 		}
79 79
 		
80 80
 		// Try fetching the discount by its post id.
81 81
 		$data = false;
82 82
 		
83
-		if ( ! empty( $discount ) && is_numeric( $discount ) ) {
84
-			$discount = absint( $discount );
85
-			$data = self::get_data_by( 'id', $discount );
83
+		if (!empty($discount) && is_numeric($discount)) {
84
+			$discount = absint($discount);
85
+			$data = self::get_data_by('id', $discount);
86 86
 		}
87 87
 
88
-		if ( is_array( $data ) ) {
89
-			$this->init( $data );
88
+		if (is_array($data)) {
89
+			$this->init($data);
90 90
 			return;
91 91
 		}
92 92
 		
93 93
 		// Try fetching the discount by its discount code.
94
-		if ( ! empty( $discount ) && is_string( $discount ) ) {
95
-			$data = self::get_data_by( 'discount_code', $discount );
94
+		if (!empty($discount) && is_string($discount)) {
95
+			$data = self::get_data_by('discount_code', $discount);
96 96
 		}
97 97
 
98
-		if ( is_array( $data ) ) {
99
-			$this->init( $data );
98
+		if (is_array($data)) {
99
+			$this->init($data);
100 100
 			return;
101 101
 		} 
102 102
 		
103 103
 		// If we are here then the discount does not exist.
104
-		$this->init( array() );
104
+		$this->init(array());
105 105
 	}
106 106
 	
107 107
 	/**
@@ -110,8 +110,8 @@  discard block
 block discarded – undo
110 110
 	 * @since 1.0.15
111 111
 	 * @param array $data An array containing the discount's data
112 112
 	 */
113
-	public function init( $data ) {
114
-		$data       	  = self::sanitize_discount_data( $data );
113
+	public function init($data) {
114
+		$data       	  = self::sanitize_discount_data($data);
115 115
 		$this->data 	  = $data;
116 116
 		$this->old_status = $data['status'];
117 117
 		$this->ID   	  = $data['ID'];
@@ -127,50 +127,50 @@  discard block
 block discarded – undo
127 127
 	 * @since 1.0.15
128 128
 	 * @return array|bool array of discount details on success. False otherwise.
129 129
 	 */
130
-	public static function get_data_by( $field, $value ) {
130
+	public static function get_data_by($field, $value) {
131 131
 
132
-		if ( 'id' == strtolower( $field ) ) {
132
+		if ('id' == strtolower($field)) {
133 133
 			// Make sure the value is numeric to avoid casting objects, for example,
134 134
 			// to int 1.
135
-			if ( ! is_numeric( $value ) )
135
+			if (!is_numeric($value))
136 136
 				return false;
137
-			$value = intval( $value );
138
-			if ( $value < 1 )
137
+			$value = intval($value);
138
+			if ($value < 1)
139 139
 				return false;
140 140
 		}
141 141
 
142
-		if ( ! $value || ! is_string( $field ) ) {
142
+		if (!$value || !is_string($field)) {
143 143
 			return false;
144 144
 		}
145 145
 		
146
-		$field = trim( $field );
146
+		$field = trim($field);
147 147
 
148 148
 		// prepare query args
149
-		switch ( strtolower( $field ) ) {
149
+		switch (strtolower($field)) {
150 150
 			case 'id':
151 151
 				$discount_id = $value;
152
-				$args		 = array( 'include' => array( $value ) );
152
+				$args = array('include' => array($value));
153 153
 				break;
154 154
 			case 'discount_code':
155 155
 			case 'code':
156
-				$value       = trim( $value );
157
-				$discount_id = wp_cache_get( $value, 'WPInv_Discount_Codes' );
158
-				$args		 = array( 'meta_key' => '_wpi_discount_code', 'meta_value' => $value );
156
+				$value       = trim($value);
157
+				$discount_id = wp_cache_get($value, 'WPInv_Discount_Codes');
158
+				$args = array('meta_key' => '_wpi_discount_code', 'meta_value' => $value);
159 159
 				break;
160 160
 			case 'name':
161 161
 				$discount_id = 0;
162
-				$args		 = array( 'name' => trim( $value ) );
162
+				$args		 = array('name' => trim($value));
163 163
 				break;
164 164
 			default:
165
-				$args		 = apply_filters( "wpinv_discount_get_data_by_{$field}_args", null, $value );
166
-				if ( ! is_array( $args ) ) {
167
-					return apply_filters( "wpinv_discount_get_data_by_$field", false, $value );
165
+				$args		 = apply_filters("wpinv_discount_get_data_by_{$field}_args", null, $value);
166
+				if (!is_array($args)) {
167
+					return apply_filters("wpinv_discount_get_data_by_$field", false, $value);
168 168
 				}
169 169
 
170 170
 		}
171 171
 
172 172
 		// Check if there is a cached value.
173
-		if ( ! empty( $discount_id ) && $discount = wp_cache_get( (int) $discount_id, 'WPInv_Discounts' ) ) {
173
+		if (!empty($discount_id) && $discount = wp_cache_get((int) $discount_id, 'WPInv_Discounts')) {
174 174
 			return $discount;
175 175
 		}
176 176
 
@@ -179,13 +179,13 @@  discard block
 block discarded – undo
179 179
 			array(
180 180
 				'post_type'      => 'wpi_discount',
181 181
 				'posts_per_page' => 1,
182
-				'post_status'    => array( 'publish', 'pending', 'draft', 'expired' )
182
+				'post_status'    => array('publish', 'pending', 'draft', 'expired')
183 183
 			)
184 184
 		);
185 185
 
186
-		$discount = get_posts( $args );
186
+		$discount = get_posts($args);
187 187
 				
188
-		if( empty( $discount ) ) {
188
+		if (empty($discount)) {
189 189
 			return false;
190 190
 		}
191 191
 
@@ -194,31 +194,31 @@  discard block
 block discarded – undo
194 194
 		// Prepare the return data.
195 195
 		$return = array(
196 196
             'ID'                          => $discount->ID,
197
-            'code'                        => get_post_meta( $discount->ID, '_wpi_discount_code', true ),
198
-            'amount'                      => get_post_meta( $discount->ID, '_wpi_discount_amount', true ),
197
+            'code'                        => get_post_meta($discount->ID, '_wpi_discount_code', true),
198
+            'amount'                      => get_post_meta($discount->ID, '_wpi_discount_amount', true),
199 199
             'date_created'                => $discount->post_date,
200 200
 			'date_modified'               => $discount->post_modified,
201 201
 			'status'               		  => $discount->post_status,
202
-			'start'                  	  => get_post_meta( $discount->ID, '_wpi_discount_start', true ),
203
-            'expiration'                  => get_post_meta( $discount->ID, '_wpi_discount_expiration', true ),
204
-            'type'               		  => get_post_meta( $discount->ID, '_wpi_discount_type', true ),
202
+			'start'                  	  => get_post_meta($discount->ID, '_wpi_discount_start', true),
203
+            'expiration'                  => get_post_meta($discount->ID, '_wpi_discount_expiration', true),
204
+            'type'               		  => get_post_meta($discount->ID, '_wpi_discount_type', true),
205 205
             'description'                 => $discount->post_excerpt,
206
-            'uses'                 		  => get_post_meta( $discount->ID, '_wpi_discount_uses', true ),
207
-            'is_single_use'               => get_post_meta( $discount->ID, '_wpi_discount_is_single_use', true ),
208
-            'items'              	      => get_post_meta( $discount->ID, '_wpi_discount_items', true ),
209
-            'excluded_items'              => get_post_meta( $discount->ID, '_wpi_discount_excluded_items', true ),
210
-            'max_uses'                    => get_post_meta( $discount->ID, '_wpi_discount_max_uses', true ),
211
-            'is_recurring'                => get_post_meta( $discount->ID, '_wpi_discount_is_recurring', true ),
212
-            'min_total'                   => get_post_meta( $discount->ID, '_wpi_discount_min_total', true ),
213
-            'max_total'                   => get_post_meta( $discount->ID, '_wpi_discount_max_total', true ),
206
+            'uses'                 		  => get_post_meta($discount->ID, '_wpi_discount_uses', true),
207
+            'is_single_use'               => get_post_meta($discount->ID, '_wpi_discount_is_single_use', true),
208
+            'items'              	      => get_post_meta($discount->ID, '_wpi_discount_items', true),
209
+            'excluded_items'              => get_post_meta($discount->ID, '_wpi_discount_excluded_items', true),
210
+            'max_uses'                    => get_post_meta($discount->ID, '_wpi_discount_max_uses', true),
211
+            'is_recurring'                => get_post_meta($discount->ID, '_wpi_discount_is_recurring', true),
212
+            'min_total'                   => get_post_meta($discount->ID, '_wpi_discount_min_total', true),
213
+            'max_total'                   => get_post_meta($discount->ID, '_wpi_discount_max_total', true),
214 214
         );
215 215
 		
216
-		$return = self::sanitize_discount_data( $return );
217
-		$return = apply_filters( 'wpinv_discount_properties', $return );
216
+		$return = self::sanitize_discount_data($return);
217
+		$return = apply_filters('wpinv_discount_properties', $return);
218 218
 
219 219
 		// Update the cache with our data
220
-		wp_cache_add( $discount->ID, $return, 'WPInv_Discounts' );
221
-		wp_cache_add( $return['code'], $discount->ID, 'WPInv_Discount_Codes' );
220
+		wp_cache_add($discount->ID, $return, 'WPInv_Discounts');
221
+		wp_cache_add($return['code'], $discount->ID, 'WPInv_Discount_Codes');
222 222
 
223 223
 		return $return;
224 224
 	}
@@ -232,9 +232,9 @@  discard block
 block discarded – undo
232 232
 	 *
233 233
 	 * @return array the sanitized data
234 234
 	 */
235
-	public static function sanitize_discount_data( $data ) {
235
+	public static function sanitize_discount_data($data) {
236 236
 		
237
-		$allowed_discount_types = array_keys( wpinv_get_discount_types() );
237
+		$allowed_discount_types = array_keys(wpinv_get_discount_types());
238 238
 		
239 239
 		$return = array(
240 240
             'ID'                          => null,
@@ -259,60 +259,60 @@  discard block
 block discarded – undo
259 259
 		
260 260
 				
261 261
 		// Arrays only please.
262
-		if ( ! is_array( $data ) ) {
262
+		if (!is_array($data)) {
263 263
             return $return;
264 264
         }
265 265
 
266 266
 		// If an id is provided, ensure it is a valid discount.
267
-        if ( ! empty( $data['ID'] ) && ( ! is_numeric( $data['ID'] ) || 'wpi_discount' !== get_post_type( $data['ID'] ) ) ) {
267
+        if (!empty($data['ID']) && (!is_numeric($data['ID']) || 'wpi_discount' !== get_post_type($data['ID']))) {
268 268
             return $return;
269 269
 		}
270 270
 
271
-        $return = array_merge( $return, $data );
271
+        $return = array_merge($return, $data);
272 272
 
273 273
         // Sanitize some keys.
274
-        $return['amount']         = wpinv_sanitize_amount( $return['amount'] );
274
+        $return['amount'] = wpinv_sanitize_amount($return['amount']);
275 275
 		$return['is_single_use']  = (bool) $return['is_single_use'];
276 276
 		$return['is_recurring']   = (bool) $return['is_recurring'];
277 277
 		$return['uses']	          = (int) $return['uses'];
278 278
 		$return['max_uses']	      = (int) $return['max_uses'];
279
-		$return['min_total'] 	  = wpinv_sanitize_amount( $return['min_total'] );
280
-        $return['max_total'] 	  = wpinv_sanitize_amount( $return['max_total'] );
279
+		$return['min_total'] = wpinv_sanitize_amount($return['min_total']);
280
+        $return['max_total'] = wpinv_sanitize_amount($return['max_total']);
281 281
 
282 282
 		// Trim all values.
283
-		$return = wpinv_clean( $return );
283
+		$return = wpinv_clean($return);
284 284
 		
285 285
 		// Ensure the discount type is supported.
286
-        if ( ! in_array( $return['type'], $allowed_discount_types, true ) ) {
286
+        if (!in_array($return['type'], $allowed_discount_types, true)) {
287 287
             $return['type'] = 'percent';
288 288
 		}
289
-		$return['type_name'] = wpinv_get_discount_type_name( $return['type'] );
289
+		$return['type_name'] = wpinv_get_discount_type_name($return['type']);
290 290
 		
291 291
 		// Do not offer more than a 100% discount.
292
-		if ( $return['type'] == 'percent' && (float) $return['amount'] > 100 ) {
292
+		if ($return['type'] == 'percent' && (float) $return['amount'] > 100) {
293 293
 			$return['amount'] = 100;
294 294
 		}
295 295
 
296 296
 		// Format dates.
297
-		foreach( wpinv_parse_list( 'date_created date_modified expiration start') as $prop ) {
298
-			if( ! empty( $return[$prop] ) ) {
299
-				$return[$prop]      = date_i18n( 'Y-m-d H:i:s', strtotime( $return[$prop] ) );
297
+		foreach (wpinv_parse_list('date_created date_modified expiration start') as $prop) {
298
+			if (!empty($return[$prop])) {
299
+				$return[$prop] = date_i18n('Y-m-d H:i:s', strtotime($return[$prop]));
300 300
 			}
301 301
 		}
302 302
 
303 303
 		// Formart items.
304
-		foreach( array( 'excluded_items', 'items' ) as $prop ) {
304
+		foreach (array('excluded_items', 'items') as $prop) {
305 305
 
306
-			if( ! empty( $return[$prop] ) ) {
306
+			if (!empty($return[$prop])) {
307 307
 				// Ensure that the property is an array of non-empty integers.
308
-				$return[$prop]      = array_filter( array_map( 'intval', wpinv_parse_list( $return[$prop] ) ) );
308
+				$return[$prop]      = array_filter(array_map('intval', wpinv_parse_list($return[$prop])));
309 309
 			} else {
310 310
 				$return[$prop]      = array();
311 311
 			}
312 312
 
313 313
 		}
314 314
 		
315
-		return apply_filters( 'wpinv_sanitize_discount_data', $return, $data );
315
+		return apply_filters('wpinv_sanitize_discount_data', $return, $data);
316 316
 	}
317 317
 	
318 318
 	/**
@@ -323,8 +323,8 @@  discard block
 block discarded – undo
323 323
 	 *
324 324
 	 * @return bool Whether the given discount field is set.
325 325
 	 */
326
-	public function __isset( $key ){
327
-		return isset( $this->data[$key] ) || method_exists( $this, "get_$key");
326
+	public function __isset($key) {
327
+		return isset($this->data[$key]) || method_exists($this, "get_$key");
328 328
 	}
329 329
 	
330 330
 	/**
@@ -336,8 +336,8 @@  discard block
 block discarded – undo
336 336
 	 * @param string $key Discount data to retrieve
337 337
 	 * @return mixed Value of the given discount property (if set).
338 338
 	 */
339
-	public function __get( $key ) {
340
-		return $this->get( $key );
339
+	public function __get($key) {
340
+		return $this->get($key);
341 341
 	}
342 342
 
343 343
 	/**
@@ -349,15 +349,15 @@  discard block
 block discarded – undo
349 349
 	 * @param string $key Discount data to retrieve
350 350
 	 * @return mixed Value of the given discount property (if set).
351 351
 	 */
352
-	public function get( $key ) {
352
+	public function get($key) {
353 353
 		
354
-		if ( $key == 'id' ) {
354
+		if ($key == 'id') {
355 355
 			$key = 'ID';
356 356
 		}
357 357
 		
358
-		if( method_exists( $this, "get_$key") ) {
359
-			$value 	= call_user_func( array( $this, "get_$key" ) );
360
-		} else if( isset( $this->data[$key] ) ) {
358
+		if (method_exists($this, "get_$key")) {
359
+			$value 	= call_user_func(array($this, "get_$key"));
360
+		} else if (isset($this->data[$key])) {
361 361
 			$value 	= $this->data[$key];
362 362
 		} else {
363 363
 			$value = null;
@@ -374,7 +374,7 @@  discard block
 block discarded – undo
374 374
 		 * @param string         $code     The discount's discount code.
375 375
 		 * @param array          $data     The discount's data array.
376 376
 		 */
377
-		return apply_filters( "wpinv_get_discount_{$key}", $value, $this->ID, $this, $this->data['code'], $this->data );
377
+		return apply_filters("wpinv_get_discount_{$key}", $value, $this->ID, $this, $this->data['code'], $this->data);
378 378
 
379 379
 	}
380 380
 	
@@ -387,9 +387,9 @@  discard block
 block discarded – undo
387 387
 	 * @access public
388 388
 	 *
389 389
 	 */
390
-	public function __set( $key, $value ) {
390
+	public function __set($key, $value) {
391 391
 		
392
-		if ( 'id' == strtolower( $key ) ) {
392
+		if ('id' == strtolower($key)) {
393 393
 			
394 394
 			$this->ID = $value;
395 395
 			$this->data['ID'] = $value;
@@ -410,10 +410,10 @@  discard block
 block discarded – undo
410 410
 		 * @param string         $code     The discount's discount code.
411 411
 		 * @param array          $data     The discount's data array.
412 412
 		 */
413
-		$value = apply_filters( "wpinv_set_discount_{$key}", $value, $this->ID, $this, $this->code, $this->data );
413
+		$value = apply_filters("wpinv_set_discount_{$key}", $value, $this->ID, $this, $this->code, $this->data);
414 414
 
415
-		if( method_exists( $this, "set_$key") ) {
416
-			call_user_func( array( $this, "set_$key" ), $value );
415
+		if (method_exists($this, "set_$key")) {
416
+			call_user_func(array($this, "set_$key"), $value);
417 417
 		} else {
418 418
 			$this->data[$key] = $value;
419 419
 		}
@@ -428,53 +428,53 @@  discard block
 block discarded – undo
428 428
 	 * @return bool
429 429
 	 *
430 430
 	 */
431
-	public function save(){
431
+	public function save() {
432 432
 		
433
-		$data = self::sanitize_discount_data( $this->data );
433
+		$data = self::sanitize_discount_data($this->data);
434 434
 
435 435
 		// Should we create a new post?
436
-		if( ! $data[ 'ID' ] ) {
436
+		if (!$data['ID']) {
437 437
 
438
-			$id = wp_insert_post( array(
438
+			$id = wp_insert_post(array(
439 439
 				'post_status'           => $data['status'],
440 440
 				'post_type'             => 'wpi_discount',
441 441
 				'post_excerpt'          => $data['description'],
442
-			) );
442
+			));
443 443
 
444
-			if( empty( $id ) ) {
444
+			if (empty($id)) {
445 445
 				return false;
446 446
 			}
447 447
 
448
-			$data[ 'ID' ] = (int) $id;
449
-			$this->ID = $data[ 'ID' ];
450
-			$this->data['ID'] = $data[ 'ID' ];
448
+			$data['ID'] = (int) $id;
449
+			$this->ID = $data['ID'];
450
+			$this->data['ID'] = $data['ID'];
451 451
 
452 452
 		} else {
453
-			$this->update_status( $data['status'] );
453
+			$this->update_status($data['status']);
454 454
 		}
455 455
 
456
-		$meta = apply_filters( 'wpinv_update_discount', $data, $this->ID, $this );
456
+		$meta = apply_filters('wpinv_update_discount', $data, $this->ID, $this);
457 457
 
458
-		do_action( 'wpinv_pre_update_discount', $meta, $this->ID, $this );
458
+		do_action('wpinv_pre_update_discount', $meta, $this->ID, $this);
459 459
 
460
-		foreach( wpinv_parse_list( 'ID date_created date_modified status description type_name' ) as $prop ) {
461
-			if ( isset( $meta[$prop] ) ) {
462
-				unset( $meta[$prop] );
460
+		foreach (wpinv_parse_list('ID date_created date_modified status description type_name') as $prop) {
461
+			if (isset($meta[$prop])) {
462
+				unset($meta[$prop]);
463 463
 			}
464 464
 		}
465 465
 
466
-		if( isset( $meta['uses'] ) && empty( $meta['uses'] ) ) {
467
-			unset( $meta['uses'] );
466
+		if (isset($meta['uses']) && empty($meta['uses'])) {
467
+			unset($meta['uses']);
468 468
 		}
469 469
 
470 470
 		// Save the metadata.
471
-		foreach( $meta as $key => $value ) {
472
-			update_post_meta( $this->ID, "_wpi_discount_$key", $value );
471
+		foreach ($meta as $key => $value) {
472
+			update_post_meta($this->ID, "_wpi_discount_$key", $value);
473 473
 		}
474 474
 
475 475
 		$this->refresh();
476 476
 
477
-		do_action( 'wpinv_post_update_discount', $meta, $this->ID );
477
+		do_action('wpinv_post_update_discount', $meta, $this->ID);
478 478
 
479 479
 		return true;		
480 480
 	}
@@ -487,17 +487,17 @@  discard block
 block discarded – undo
487 487
 	 * @return bool
488 488
 	 *
489 489
 	 */
490
-	public function refresh(){
490
+	public function refresh() {
491 491
 
492 492
 		// Empty the cache for this discount.
493
-		wp_cache_delete( $this->ID, 'WPInv_Discounts' );
494
-		wp_cache_delete( $this->get( 'code' ), 'WPInv_Discount_Codes' );
493
+		wp_cache_delete($this->ID, 'WPInv_Discounts');
494
+		wp_cache_delete($this->get('code'), 'WPInv_Discount_Codes');
495 495
 
496
-		$data = self::get_data_by( 'id', $this->ID );
497
-		if( is_array( $data ) ) {
498
-			$this->init( $data );
496
+		$data = self::get_data_by('id', $this->ID);
497
+		if (is_array($data)) {
498
+			$this->init($data);
499 499
 		} else {
500
-			$this->init( array() );
500
+			$this->init(array());
501 501
 		}
502 502
 
503 503
 	}
@@ -510,14 +510,14 @@  discard block
 block discarded – undo
510 510
 	 * @return bool
511 511
 	 *
512 512
 	 */
513
-	public function update_status( $status = 'publish' ){
513
+	public function update_status($status = 'publish') {
514 514
 
515 515
 
516
-		if ( $this->exists() && $this->old_status != $status ) {
516
+		if ($this->exists() && $this->old_status != $status) {
517 517
 
518
-			do_action( 'wpinv_pre_update_discount_status', $this->ID, $this->old_status, $status );
519
-        	$updated = wp_update_post( array( 'ID' => $this->ID, 'post_status' => $status ) );
520
-			do_action( 'wpinv_post_update_discount_status', $this->ID, $this->old_status, $status );
518
+			do_action('wpinv_pre_update_discount_status', $this->ID, $this->old_status, $status);
519
+        	$updated = wp_update_post(array('ID' => $this->ID, 'post_status' => $status));
520
+			do_action('wpinv_post_update_discount_status', $this->ID, $this->old_status, $status);
521 521
 
522 522
 			$this->refresh();
523 523
 
@@ -534,8 +534,8 @@  discard block
 block discarded – undo
534 534
 	 * 
535 535
 	 * @since 1.0.15
536 536
 	 */
537
-	public function exists(){
538
-		return ! empty( $this->ID );
537
+	public function exists() {
538
+		return !empty($this->ID);
539 539
 	}
540 540
 	
541 541
 	// Boolean methods
@@ -548,7 +548,7 @@  discard block
 block discarded – undo
548 548
 	 * @since 1.0.15
549 549
 	 * @return bool
550 550
 	 */
551
-	public function is_type( $type ) {
551
+	public function is_type($type) {
552 552
 		return $this->type == $type;
553 553
 	}
554 554
 	
@@ -569,12 +569,12 @@  discard block
 block discarded – undo
569 569
 	 * @return bool
570 570
 	 */
571 571
 	public function has_exceeded_limit() {
572
-		if( empty( $this->max_uses ) || empty( $this->uses ) ) { 
573
-			return false ;
572
+		if (empty($this->max_uses) || empty($this->uses)) { 
573
+			return false;
574 574
 		}
575 575
 		
576
-		$exceeded =  $this->uses >= $this->max_uses;
577
-		return apply_filters( 'wpinv_is_discount_maxed_out', $exceeded, $this->ID, $this, $this->code );
576
+		$exceeded = $this->uses >= $this->max_uses;
577
+		return apply_filters('wpinv_is_discount_maxed_out', $exceeded, $this->ID, $this, $this->code);
578 578
 	}
579 579
 	
580 580
 	/**
@@ -584,8 +584,8 @@  discard block
 block discarded – undo
584 584
 	 * @return bool
585 585
 	 */
586 586
 	public function is_expired() {
587
-		$expired = empty ( $this->expiration ) ? false : current_time( 'timestamp' ) > strtotime( $this->expiration );
588
-		return apply_filters( 'wpinv_is_discount_expired', $expired, $this->ID, $this, $this->code );
587
+		$expired = empty ($this->expiration) ? false : current_time('timestamp') > strtotime($this->expiration);
588
+		return apply_filters('wpinv_is_discount_expired', $expired, $this->ID, $this, $this->code);
589 589
 	}
590 590
 
591 591
 	/**
@@ -595,8 +595,8 @@  discard block
 block discarded – undo
595 595
 	 * @return bool
596 596
 	 */
597 597
 	public function has_started() {
598
-		$started = empty ( $this->start ) ? true : current_time( 'timestamp' ) > strtotime( $this->start );
599
-		return apply_filters( 'wpinv_is_discount_started', $started, $this->ID, $this, $this->code );		
598
+		$started = empty ($this->start) ? true : current_time('timestamp') > strtotime($this->start);
599
+		return apply_filters('wpinv_is_discount_started', $started, $this->ID, $this, $this->code);		
600 600
 	}
601 601
 	
602 602
 	/**
@@ -606,17 +606,17 @@  discard block
 block discarded – undo
606 606
 	 * @since 1.0.15
607 607
 	 * @return boolean
608 608
 	 */
609
-	public function is_valid_for_items( $item_ids ) {
609
+	public function is_valid_for_items($item_ids) {
610 610
 		 
611
-		$item_ids = array_map( 'intval',  wpinv_parse_list( $item_ids ) );
612
-		$included = array_intersect( $item_ids, $this->items );
613
-		$excluded = array_intersect( $item_ids, $this->excluded_items );
611
+		$item_ids = array_map('intval', wpinv_parse_list($item_ids));
612
+		$included = array_intersect($item_ids, $this->items);
613
+		$excluded = array_intersect($item_ids, $this->excluded_items);
614 614
 
615
-		if( ! empty( $this->excluded_items ) && ! empty( $excluded ) ) {
615
+		if (!empty($this->excluded_items) && !empty($excluded)) {
616 616
 			return false;
617 617
 		}
618 618
 
619
-		if( ! empty( $this->items ) && empty( $included ) ) {
619
+		if (!empty($this->items) && empty($included)) {
620 620
 			return false;
621 621
 		}
622 622
 		return true;
@@ -629,8 +629,8 @@  discard block
 block discarded – undo
629 629
 	 * @since 1.0.15
630 630
 	 * @return boolean
631 631
 	 */
632
-	public function is_valid_for_amount( $amount ) {
633
-		return $this->is_minimum_amount_met( $amount ) && $this->is_maximum_amount_met( $amount );
632
+	public function is_valid_for_amount($amount) {
633
+		return $this->is_minimum_amount_met($amount) && $this->is_maximum_amount_met($amount);
634 634
 	}
635 635
 
636 636
 	/**
@@ -640,10 +640,10 @@  discard block
 block discarded – undo
640 640
 	 * @since 1.0.15
641 641
 	 * @return boolean
642 642
 	 */
643
-	public function is_minimum_amount_met( $amount ) {
644
-		$amount = floatval( $amount );
645
-		$min_met= ! ( $this->min_total > 0 && $amount < $this->min_total );
646
-		return apply_filters( 'wpinv_is_discount_min_met', $min_met, $this->ID, $this, $this->code, $amount );
643
+	public function is_minimum_amount_met($amount) {
644
+		$amount = floatval($amount);
645
+		$min_met = !($this->min_total > 0 && $amount < $this->min_total);
646
+		return apply_filters('wpinv_is_discount_min_met', $min_met, $this->ID, $this, $this->code, $amount);
647 647
 	}
648 648
 
649 649
 	/**
@@ -653,10 +653,10 @@  discard block
 block discarded – undo
653 653
 	 * @since 1.0.15
654 654
 	 * @return boolean
655 655
 	 */
656
-	public function is_maximum_amount_met( $amount ) {
657
-		$amount = floatval( $amount );
658
-		$max_met= ! ( $this->max_total > 0 && $amount > $this->max_total );
659
-		return apply_filters( 'wpinv_is_discount_max_met', $max_met, $this->ID, $this, $this->code, $amount );
656
+	public function is_maximum_amount_met($amount) {
657
+		$amount = floatval($amount);
658
+		$max_met = !($this->max_total > 0 && $amount > $this->max_total);
659
+		return apply_filters('wpinv_is_discount_max_met', $max_met, $this->ID, $this, $this->code, $amount);
660 660
 	}
661 661
 
662 662
 	/**
@@ -666,50 +666,50 @@  discard block
 block discarded – undo
666 666
 	 * @since 1.0.15
667 667
 	 * @return boolean
668 668
 	 */
669
-	public function is_valid_for_user( $user ) {
669
+	public function is_valid_for_user($user) {
670 670
 		global $wpi_checkout_id;
671 671
 
672
-		if( empty( $user ) || empty( $this->is_single_use ) ) {
672
+		if (empty($user) || empty($this->is_single_use)) {
673 673
 			return true;
674 674
 		}
675 675
 
676 676
 		$user_id = 0;
677
-        if ( is_int( $user ) ) {
678
-            $user_id = absint( $user );
679
-        } else if ( is_email( $user ) && $user_data = get_user_by( 'email', $user ) ) {
677
+        if (is_int($user)) {
678
+            $user_id = absint($user);
679
+        } else if (is_email($user) && $user_data = get_user_by('email', $user)) {
680 680
             $user_id = $user_data->ID;
681
-        } else if ( $user_data = get_user_by( 'login', $user ) ) {
681
+        } else if ($user_data = get_user_by('login', $user)) {
682 682
             $user_id = $user_data->ID;
683
-        } else if ( absint( $user ) > 0 ) {
684
-            $user_id = absint( $user );
683
+        } else if (absint($user) > 0) {
684
+            $user_id = absint($user);
685 685
 		}
686 686
 
687
-		if ( empty( $user_id ) ) {
687
+		if (empty($user_id)) {
688 688
 			return true;
689 689
 		}
690 690
 		
691 691
 		// Get all payments with matching user id
692
-        $payments = wpinv_get_invoices( array( 'user' => $user_id, 'limit' => false ) ); 
693
-		$code     = strtolower( $this->code );
692
+        $payments = wpinv_get_invoices(array('user' => $user_id, 'limit' => false)); 
693
+		$code = strtolower($this->code);
694 694
 
695
-		foreach ( $payments as $payment ) {
695
+		foreach ($payments as $payment) {
696 696
 
697 697
 			// Don't count discount used for current invoice checkout.
698
-			if ( ! empty( $wpi_checkout_id ) && $wpi_checkout_id == $payment->ID ) {
698
+			if (!empty($wpi_checkout_id) && $wpi_checkout_id == $payment->ID) {
699 699
 				continue;
700 700
 			}
701 701
 			
702
-			if ( $payment->has_status( array( 'wpi-cancelled', 'wpi-failed' ) ) ) {
702
+			if ($payment->has_status(array('wpi-cancelled', 'wpi-failed'))) {
703 703
 				continue;
704 704
 			}
705 705
 
706
-			$discounts = $payment->get_discounts( true );
707
-			if ( empty( $discounts ) ) {
706
+			$discounts = $payment->get_discounts(true);
707
+			if (empty($discounts)) {
708 708
 				continue;
709 709
 			}
710 710
 
711
-			$discounts = array_map( 'strtolower', wpinv_parse_list( $discounts ) );
712
-			if ( ! empty( $discounts ) && in_array( $code, $discounts ) ) {
711
+			$discounts = array_map('strtolower', wpinv_parse_list($discounts));
712
+			if (!empty($discounts) && in_array($code, $discounts)) {
713 713
 				return false;
714 714
 			}
715 715
 		}
@@ -725,15 +725,15 @@  discard block
 block discarded – undo
725 725
 	 */
726 726
 	public function remove() {
727 727
 
728
-		if ( empty( $this->ID ) ) {
728
+		if (empty($this->ID)) {
729 729
 			return true;
730 730
 		}
731 731
 
732
-		do_action( 'wpinv_pre_delete_discount', $this->ID, $this->data );
733
-		wp_cache_delete( $this->ID, 'WPInv_Discounts' );
734
-    	wp_delete_post( $this->ID, true );
735
-		wp_cache_delete( $this->code, 'WPInv_Discount_Codes' );
736
-    	do_action( 'wpinv_post_delete_discount', $this->ID, $this->data );
732
+		do_action('wpinv_pre_delete_discount', $this->ID, $this->data);
733
+		wp_cache_delete($this->ID, 'WPInv_Discounts');
734
+    	wp_delete_post($this->ID, true);
735
+		wp_cache_delete($this->code, 'WPInv_Discount_Codes');
736
+    	do_action('wpinv_post_delete_discount', $this->ID, $this->data);
737 737
 
738 738
 		$this->ID = null;
739 739
 		$this->data['id'] = null;
@@ -747,21 +747,21 @@  discard block
 block discarded – undo
747 747
 	 * @param int $by The number of usages to increas by.
748 748
 	 * @return int
749 749
 	 */
750
-	public function increase_usage( $by = 1 ) {
750
+	public function increase_usage($by = 1) {
751 751
 
752 752
 		$this->uses = $this->uses + $by;
753 753
 
754
-		if( $this->uses  < 0 ) {
754
+		if ($this->uses < 0) {
755 755
 			$this->uses = 0;
756
-			update_post_meta( $this->ID, "_wpi_discount_uses", 0 );
756
+			update_post_meta($this->ID, "_wpi_discount_uses", 0);
757 757
 		}
758 758
 
759 759
 		$this->save();
760 760
 
761
-		if( $by > 0 ) {
762
-			do_action( 'wpinv_discount_increase_use_count', $this->uses, $this->ID, $this->code, $by );
761
+		if ($by > 0) {
762
+			do_action('wpinv_discount_increase_use_count', $this->uses, $this->ID, $this->code, $by);
763 763
 		} else {
764
-			do_action( 'wpinv_discount_decrease_use_count', $this->uses, $this->ID, $this->code, absint( $by ) );
764
+			do_action('wpinv_discount_decrease_use_count', $this->uses, $this->ID, $this->code, absint($by));
765 765
 		}
766 766
 		
767 767
 		return $this->uses;
@@ -775,8 +775,8 @@  discard block
 block discarded – undo
775 775
 	 */
776 776
 	public function get_data() {
777 777
 		$return = array();
778
-		foreach( array_keys( $this->data ) as $key ) {
779
-			$return[ $key ] = $this->get( $key );
778
+		foreach (array_keys($this->data) as $key) {
779
+			$return[$key] = $this->get($key);
780 780
 		}
781 781
 		return $return;
782 782
 	}
@@ -788,7 +788,7 @@  discard block
 block discarded – undo
788 788
 	 * @return string|false
789 789
 	 */
790 790
 	public function get_data_as_json() {
791
-		return wp_json_encode( $this->get_data() );
791
+		return wp_json_encode($this->get_data());
792 792
 	}
793 793
 
794 794
 	/**
@@ -798,7 +798,7 @@  discard block
 block discarded – undo
798 798
 	 * @return bool
799 799
 	 */
800 800
 	public function get_is_single_use() {
801
-		return (bool) apply_filters( 'wpinv_is_discount_single_use', $this->data['is_single_use'], $this->ID, $this, $this->code );
801
+		return (bool) apply_filters('wpinv_is_discount_single_use', $this->data['is_single_use'], $this->ID, $this, $this->code);
802 802
 	}
803 803
 
804 804
 	/**
@@ -808,7 +808,7 @@  discard block
 block discarded – undo
808 808
 	 * @return bool
809 809
 	 */
810 810
 	public function get_is_recurring() {
811
-		return (bool) apply_filters( 'wpinv_is_discount_recurring', $this->data['is_recurring'], $this->ID, $this->code, $this );
811
+		return (bool) apply_filters('wpinv_is_discount_recurring', $this->data['is_recurring'], $this->ID, $this->code, $this);
812 812
 	}
813 813
 
814 814
 	/**
@@ -818,7 +818,7 @@  discard block
 block discarded – undo
818 818
 	 * @return array
819 819
 	 */
820 820
 	public function get_items() {
821
-		return wpinv_parse_list( apply_filters( 'wpinv_get_discount_item_reqs', $this->data['items'], $this->ID, $this, $this->code ) );
821
+		return wpinv_parse_list(apply_filters('wpinv_get_discount_item_reqs', $this->data['items'], $this->ID, $this, $this->code));
822 822
 	}
823 823
 
824 824
 	/**
@@ -827,19 +827,19 @@  discard block
 block discarded – undo
827 827
 	 * @since 1.0.15
828 828
 	 * @return float
829 829
 	 */
830
-	public function get_discounted_amount( $amount ) {
830
+	public function get_discounted_amount($amount) {
831 831
 
832
-		if ( $this->type == 'flat' ) {
832
+		if ($this->type == 'flat') {
833 833
             $amount = $amount - $this->amount;
834 834
 		} else {
835
-            $amount = $amount - ( $amount * ( $this->amount / 100 ) );
835
+            $amount = $amount - ($amount * ($this->amount / 100));
836 836
 		}
837 837
 
838
-		if ( $amount < 0 ) {
838
+		if ($amount < 0) {
839 839
 			$amount = 0;
840 840
 		}
841 841
 
842
-		return apply_filters( 'wpinv_discounted_amount', $amount, $this->ID, $this, $this->code, $this->amount );
842
+		return apply_filters('wpinv_discounted_amount', $amount, $this->ID, $this, $this->code, $this->amount);
843 843
 	}
844 844
 	
845 845
 }
Please login to merge, or discard this patch.
Braces   +6 added lines, -4 removed lines patch added patch discarded remove patch
@@ -132,11 +132,13 @@
 block discarded – undo
132 132
 		if ( 'id' == strtolower( $field ) ) {
133 133
 			// Make sure the value is numeric to avoid casting objects, for example,
134 134
 			// to int 1.
135
-			if ( ! is_numeric( $value ) )
136
-				return false;
135
+			if ( ! is_numeric( $value ) ) {
136
+							return false;
137
+			}
137 138
 			$value = intval( $value );
138
-			if ( $value < 1 )
139
-				return false;
139
+			if ( $value < 1 ) {
140
+							return false;
141
+			}
140 142
 		}
141 143
 
142 144
 		if ( ! $value || ! is_string( $field ) ) {
Please login to merge, or discard this patch.
includes/wpinv-helper-functions.php 2 patches
Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -700,7 +700,7 @@  discard block
 block discarded – undo
700 700
 }
701 701
 
702 702
 function wpinv_get_php_arg_separator_output() {
703
-	return ini_get( 'arg_separator.output' );
703
+    return ini_get( 'arg_separator.output' );
704 704
 }
705 705
 
706 706
 function wpinv_rgb_from_hex( $color ) {
@@ -1038,11 +1038,11 @@  discard block
 block discarded – undo
1038 1038
  * @return array Sanitized array of values.
1039 1039
  */
1040 1040
 function wpinv_parse_list( $list ) {
1041
-	if ( ! is_array( $list ) ) {
1042
-		return preg_split( '/[\s,]+/', $list, -1, PREG_SPLIT_NO_EMPTY );
1043
-	}
1041
+    if ( ! is_array( $list ) ) {
1042
+        return preg_split( '/[\s,]+/', $list, -1, PREG_SPLIT_NO_EMPTY );
1043
+    }
1044 1044
 
1045
-	return $list;
1045
+    return $list;
1046 1046
 }
1047 1047
 
1048 1048
 /**
@@ -1062,9 +1062,9 @@  discard block
 block discarded – undo
1062 1062
     }
1063 1063
 
1064 1064
     $data = apply_filters( "wpinv_get_$key", include WPINV_PLUGIN_DIR . "includes/data/$key.php" );
1065
-	wp_cache_set( "wpinv-$key", $data, 'wpinv' );
1065
+    wp_cache_set( "wpinv-$key", $data, 'wpinv' );
1066 1066
 
1067
-	return $data;
1067
+    return $data;
1068 1068
 }
1069 1069
 
1070 1070
 /**
@@ -1093,17 +1093,17 @@  discard block
 block discarded – undo
1093 1093
  */
1094 1094
 function wpinv_clean( $var ) {
1095 1095
 
1096
-	if ( is_array( $var ) ) {
1097
-		return array_map( 'wpinv_clean', $var );
1096
+    if ( is_array( $var ) ) {
1097
+        return array_map( 'wpinv_clean', $var );
1098 1098
     }
1099 1099
 
1100 1100
     if ( is_object( $var ) ) {
1101
-		$object_vars = get_object_vars( $var );
1102
-		foreach ( $object_vars as $property_name => $property_value ) {
1103
-			$var->$property_name = wpinv_clean( $property_value );
1101
+        $object_vars = get_object_vars( $var );
1102
+        foreach ( $object_vars as $property_name => $property_value ) {
1103
+            $var->$property_name = wpinv_clean( $property_value );
1104 1104
         }
1105 1105
         return $var;
1106
-	}
1106
+    }
1107 1107
     
1108 1108
     return is_string( $var ) ? sanitize_text_field( $var ) : $var;
1109 1109
 }
1110 1110
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +408 added lines, -408 removed lines patch added patch discarded remove patch
@@ -7,132 +7,132 @@  discard block
 block discarded – undo
7 7
  */
8 8
 
9 9
 // MUST have WordPress.
10
-if ( !defined( 'WPINC' ) ) {
11
-    exit( 'Do NOT access this file directly: ' . basename( __FILE__ ) );
10
+if (!defined('WPINC')) {
11
+    exit('Do NOT access this file directly: ' . basename(__FILE__));
12 12
 }
13 13
 
14 14
 function wpinv_item_quantities_enabled() {
15
-    $ret = wpinv_get_option( 'item_quantities', true );
15
+    $ret = wpinv_get_option('item_quantities', true);
16 16
 
17
-    return (bool) apply_filters( 'wpinv_item_quantities_enabled', $ret );
17
+    return (bool) apply_filters('wpinv_item_quantities_enabled', $ret);
18 18
 }
19 19
 
20 20
 function wpinv_get_ip() {
21 21
     $ip = '127.0.0.1';
22 22
 
23
-    if ( !empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
24
-        $ip = sanitize_text_field( $_SERVER['HTTP_CLIENT_IP'] );
25
-    } elseif ( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
26
-        $ip = sanitize_text_field( $_SERVER['HTTP_X_FORWARDED_FOR'] );
27
-    } elseif( !empty( $_SERVER['REMOTE_ADDR'] ) ) {
28
-        $ip = sanitize_text_field( $_SERVER['REMOTE_ADDR'] );
23
+    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
24
+        $ip = sanitize_text_field($_SERVER['HTTP_CLIENT_IP']);
25
+    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
26
+        $ip = sanitize_text_field($_SERVER['HTTP_X_FORWARDED_FOR']);
27
+    } elseif (!empty($_SERVER['REMOTE_ADDR'])) {
28
+        $ip = sanitize_text_field($_SERVER['REMOTE_ADDR']);
29 29
     }
30 30
 
31
-    return apply_filters( 'wpinv_get_ip', $ip );
31
+    return apply_filters('wpinv_get_ip', $ip);
32 32
 }
33 33
 
34 34
 function wpinv_get_user_agent() {
35
-    if ( ! empty( $_SERVER['HTTP_USER_AGENT'] ) ) {
36
-        $user_agent = sanitize_text_field( $_SERVER['HTTP_USER_AGENT'] );
35
+    if (!empty($_SERVER['HTTP_USER_AGENT'])) {
36
+        $user_agent = sanitize_text_field($_SERVER['HTTP_USER_AGENT']);
37 37
     } else {
38 38
         $user_agent = '';
39 39
     }
40 40
 
41
-    return apply_filters( 'wpinv_get_user_agent', $user_agent );
41
+    return apply_filters('wpinv_get_user_agent', $user_agent);
42 42
 }
43 43
 
44
-function wpinv_sanitize_amount( $amount, $decimals = NULL ) {
44
+function wpinv_sanitize_amount($amount, $decimals = NULL) {
45 45
     $is_negative   = false;
46 46
     $thousands_sep = wpinv_thousands_separator();
47 47
     $decimal_sep   = wpinv_decimal_separator();
48
-    if ( $decimals === NULL ) {
48
+    if ($decimals === NULL) {
49 49
         $decimals = wpinv_decimals();
50 50
     }
51 51
 
52 52
     // Sanitize the amount
53
-    if ( $decimal_sep == ',' && false !== ( $found = strpos( $amount, $decimal_sep ) ) ) {
54
-        if ( ( $thousands_sep == '.' || $thousands_sep == ' ' ) && false !== ( $found = strpos( $amount, $thousands_sep ) ) ) {
55
-            $amount = str_replace( $thousands_sep, '', $amount );
56
-        } elseif( empty( $thousands_sep ) && false !== ( $found = strpos( $amount, '.' ) ) ) {
57
-            $amount = str_replace( '.', '', $amount );
53
+    if ($decimal_sep == ',' && false !== ($found = strpos($amount, $decimal_sep))) {
54
+        if (($thousands_sep == '.' || $thousands_sep == ' ') && false !== ($found = strpos($amount, $thousands_sep))) {
55
+            $amount = str_replace($thousands_sep, '', $amount);
56
+        } elseif (empty($thousands_sep) && false !== ($found = strpos($amount, '.'))) {
57
+            $amount = str_replace('.', '', $amount);
58 58
         }
59 59
 
60
-        $amount = str_replace( $decimal_sep, '.', $amount );
61
-    } elseif( $thousands_sep == ',' && false !== ( $found = strpos( $amount, $thousands_sep ) ) ) {
62
-        $amount = str_replace( $thousands_sep, '', $amount );
60
+        $amount = str_replace($decimal_sep, '.', $amount);
61
+    } elseif ($thousands_sep == ',' && false !== ($found = strpos($amount, $thousands_sep))) {
62
+        $amount = str_replace($thousands_sep, '', $amount);
63 63
     }
64 64
 
65
-    if( $amount < 0 ) {
65
+    if ($amount < 0) {
66 66
         $is_negative = true;
67 67
     }
68 68
 
69
-    $amount   = preg_replace( '/[^0-9\.]/', '', $amount );
69
+    $amount   = preg_replace('/[^0-9\.]/', '', $amount);
70 70
 
71
-    $decimals = apply_filters( 'wpinv_sanitize_amount_decimals', absint( $decimals ), $amount );
72
-    $amount   = number_format( (double) $amount, absint( $decimals ), '.', '' );
71
+    $decimals = apply_filters('wpinv_sanitize_amount_decimals', absint($decimals), $amount);
72
+    $amount   = number_format((double) $amount, absint($decimals), '.', '');
73 73
 
74
-    if( $is_negative ) {
74
+    if ($is_negative) {
75 75
         $amount *= -1;
76 76
     }
77 77
 
78
-    return apply_filters( 'wpinv_sanitize_amount', $amount, $decimals );
78
+    return apply_filters('wpinv_sanitize_amount', $amount, $decimals);
79 79
 }
80
-add_filter( 'wpinv_sanitize_amount_decimals', 'wpinv_currency_decimal_filter', 10, 1 );
80
+add_filter('wpinv_sanitize_amount_decimals', 'wpinv_currency_decimal_filter', 10, 1);
81 81
 
82
-function wpinv_round_amount( $amount, $decimals = NULL ) {
83
-    if ( $decimals === NULL ) {
82
+function wpinv_round_amount($amount, $decimals = NULL) {
83
+    if ($decimals === NULL) {
84 84
         $decimals = wpinv_decimals();
85 85
     }
86 86
     
87
-    $amount = round( (double)$amount, wpinv_currency_decimal_filter( absint( $decimals ) ) );
87
+    $amount = round((double) $amount, wpinv_currency_decimal_filter(absint($decimals)));
88 88
 
89
-    return apply_filters( 'wpinv_round_amount', $amount, $decimals );
89
+    return apply_filters('wpinv_round_amount', $amount, $decimals);
90 90
 }
91 91
 
92
-function wpinv_get_invoice_statuses( $draft = false, $trashed = false, $invoice = false ) {
92
+function wpinv_get_invoice_statuses($draft = false, $trashed = false, $invoice = false) {
93 93
     global $post;
94 94
 
95 95
     $invoice_statuses = array(
96
-        'wpi-pending' => __( 'Pending Payment', 'invoicing' ),
97
-        'publish' => __( 'Paid', 'invoicing'),
98
-        'wpi-processing' => __( 'Processing', 'invoicing' ),
99
-        'wpi-onhold' => __( 'On Hold', 'invoicing' ),
100
-        'wpi-refunded' => __( 'Refunded', 'invoicing' ),
101
-        'wpi-cancelled' => __( 'Cancelled', 'invoicing' ),
102
-        'wpi-failed' => __( 'Failed', 'invoicing' ),
103
-        'wpi-renewal' => __( 'Renewal Payment', 'invoicing' )
96
+        'wpi-pending' => __('Pending Payment', 'invoicing'),
97
+        'publish' => __('Paid', 'invoicing'),
98
+        'wpi-processing' => __('Processing', 'invoicing'),
99
+        'wpi-onhold' => __('On Hold', 'invoicing'),
100
+        'wpi-refunded' => __('Refunded', 'invoicing'),
101
+        'wpi-cancelled' => __('Cancelled', 'invoicing'),
102
+        'wpi-failed' => __('Failed', 'invoicing'),
103
+        'wpi-renewal' => __('Renewal Payment', 'invoicing')
104 104
     );
105 105
 
106
-    if ( $draft ) {
107
-        $invoice_statuses['draft'] = __( 'Draft', 'invoicing' );
106
+    if ($draft) {
107
+        $invoice_statuses['draft'] = __('Draft', 'invoicing');
108 108
     }
109 109
 
110
-    if ( $trashed ) {
111
-        $invoice_statuses['trash'] = __( 'Trash', 'invoicing' );
110
+    if ($trashed) {
111
+        $invoice_statuses['trash'] = __('Trash', 'invoicing');
112 112
     }
113 113
 
114
-    return apply_filters( 'wpinv_statuses', $invoice_statuses, $invoice );
114
+    return apply_filters('wpinv_statuses', $invoice_statuses, $invoice);
115 115
 }
116 116
 
117
-function wpinv_status_nicename( $status ) {
118
-    $statuses = wpinv_get_invoice_statuses( true, true );
119
-    $status   = isset( $statuses[$status] ) ? $statuses[$status] : __( $status, 'invoicing' );
117
+function wpinv_status_nicename($status) {
118
+    $statuses = wpinv_get_invoice_statuses(true, true);
119
+    $status   = isset($statuses[$status]) ? $statuses[$status] : __($status, 'invoicing');
120 120
 
121 121
     return $status;
122 122
 }
123 123
 
124 124
 function wpinv_get_currency() {
125
-    $currency = wpinv_get_option( 'currency', 'USD' );
125
+    $currency = wpinv_get_option('currency', 'USD');
126 126
     
127
-    return apply_filters( 'wpinv_currency', $currency );
127
+    return apply_filters('wpinv_currency', $currency);
128 128
 }
129 129
 
130
-function wpinv_currency_symbol( $currency = '' ) {
131
-    if ( empty( $currency ) ) {
130
+function wpinv_currency_symbol($currency = '') {
131
+    if (empty($currency)) {
132 132
         $currency = wpinv_get_currency();
133 133
     }
134 134
     
135
-    $symbols = apply_filters( 'wpinv_currency_symbols', array(
135
+    $symbols = apply_filters('wpinv_currency_symbols', array(
136 136
         'AED' => '&#x62f;.&#x625;',
137 137
         'AFN' => '&#x60b;',
138 138
         'ALL' => 'L',
@@ -295,209 +295,209 @@  discard block
 block discarded – undo
295 295
         'YER' => '&#xfdfc;',
296 296
         'ZAR' => '&#82;',
297 297
         'ZMW' => 'ZK',
298
-    ) );
298
+    ));
299 299
 
300
-    $currency_symbol = isset( $symbols[$currency] ) ? $symbols[$currency] : $currency;
300
+    $currency_symbol = isset($symbols[$currency]) ? $symbols[$currency] : $currency;
301 301
 
302
-    return apply_filters( 'wpinv_currency_symbol', $currency_symbol, $currency );
302
+    return apply_filters('wpinv_currency_symbol', $currency_symbol, $currency);
303 303
 }
304 304
 
305 305
 function wpinv_currency_position() {
306
-    $position = wpinv_get_option( 'currency_position', 'left' );
306
+    $position = wpinv_get_option('currency_position', 'left');
307 307
     
308
-    return apply_filters( 'wpinv_currency_position', $position );
308
+    return apply_filters('wpinv_currency_position', $position);
309 309
 }
310 310
 
311 311
 function wpinv_thousands_separator() {
312
-    $thousand_sep = wpinv_get_option( 'thousands_separator', ',' );
312
+    $thousand_sep = wpinv_get_option('thousands_separator', ',');
313 313
     
314
-    return apply_filters( 'wpinv_thousands_separator', $thousand_sep );
314
+    return apply_filters('wpinv_thousands_separator', $thousand_sep);
315 315
 }
316 316
 
317 317
 function wpinv_decimal_separator() {
318
-    $decimal_sep = wpinv_get_option( 'decimal_separator', '.' );
318
+    $decimal_sep = wpinv_get_option('decimal_separator', '.');
319 319
     
320
-    return apply_filters( 'wpinv_decimal_separator', $decimal_sep );
320
+    return apply_filters('wpinv_decimal_separator', $decimal_sep);
321 321
 }
322 322
 
323 323
 function wpinv_decimals() {
324
-    $decimals = apply_filters( 'wpinv_decimals', wpinv_get_option( 'decimals', 2 ) );
324
+    $decimals = apply_filters('wpinv_decimals', wpinv_get_option('decimals', 2));
325 325
     
326
-    return absint( $decimals );
326
+    return absint($decimals);
327 327
 }
328 328
 
329 329
 function wpinv_get_currencies() {
330 330
     $currencies = array(
331
-        'USD' => __( 'US Dollar', 'invoicing' ),
332
-        'EUR' => __( 'Euro', 'invoicing' ),
333
-        'GBP' => __( 'Pound Sterling', 'invoicing' ),
334
-        'AED' => __( 'United Arab Emirates', 'invoicing' ),
335
-        'AFN' => __( 'Afghan Afghani', 'invoicing' ),
336
-        'ALL' => __( 'Albanian Lek', 'invoicing' ),
337
-        'AMD' => __( 'Armenian Dram', 'invoicing' ),
338
-        'ANG' => __( 'Netherlands Antillean Guilder', 'invoicing' ),
339
-        'AOA' => __( 'Angolan Kwanza', 'invoicing' ),
340
-        'ARS' => __( 'Argentine Peso', 'invoicing' ),
341
-        'AUD' => __( 'Australian Dollar', 'invoicing' ),
342
-        'AWG' => __( 'Aruban Florin', 'invoicing' ),
343
-        'AZN' => __( 'Azerbaijani Manat', 'invoicing' ),
344
-        'BAM' => __( 'Bosnia and Herzegovina Convertible Marka', 'invoicing' ),
345
-        'BBD' => __( 'Barbadian Dollar', 'invoicing' ),
346
-        'BDT' => __( 'Bangladeshi Taka', 'invoicing' ),
347
-        'BGN' => __( 'Bulgarian Lev', 'invoicing' ),
348
-        'BHD' => __( 'Bahraini Dinar', 'invoicing' ),
349
-        'BIF' => __( 'Burundian Franc', 'invoicing' ),
350
-        'BMD' => __( 'Bermudian Dollar', 'invoicing' ),
351
-        'BND' => __( 'Brunei Dollar', 'invoicing' ),
352
-        'BOB' => __( 'Bolivian Boliviano', 'invoicing' ),
353
-        'BRL' => __( 'Brazilian Real', 'invoicing' ),
354
-        'BSD' => __( 'Bahamian Dollar', 'invoicing' ),
355
-        'BTC' => __( 'Bitcoin', 'invoicing' ),
356
-        'BTN' => __( 'Bhutanese Ngultrum', 'invoicing' ),
357
-        'BWP' => __( 'Botswana Pula', 'invoicing' ),
358
-        'BYN' => __( 'Belarusian Ruble', 'invoicing' ),
359
-        'BZD' => __( 'Belize Dollar', 'invoicing' ),
360
-        'CAD' => __( 'Canadian Dollar', 'invoicing' ),
361
-        'CDF' => __( 'Congolese Franc', 'invoicing' ),
362
-        'CHF' => __( 'Swiss Franc', 'invoicing' ),
363
-        'CLP' => __( 'Chilean Peso', 'invoicing' ),
364
-        'CNY' => __( 'Chinese Yuan', 'invoicing' ),
365
-        'COP' => __( 'Colombian Peso', 'invoicing' ),
366
-        'CRC' => __( 'Costa Rican Colon', 'invoicing' ),
367
-        'CUC' => __( 'Cuban Convertible Peso', 'invoicing' ),
368
-        'CUP' => __( 'Cuban Peso', 'invoicing' ),
369
-        'CVE' => __( 'Cape Verdean escudo', 'invoicing' ),
370
-        'CZK' => __( 'Czech Koruna', 'invoicing' ),
371
-        'DJF' => __( 'Djiboutian Franc', 'invoicing' ),
372
-        'DKK' => __( 'Danish Krone', 'invoicing' ),
373
-        'DOP' => __( 'Dominican Peso', 'invoicing' ),
374
-        'DZD' => __( 'Algerian Dinar', 'invoicing' ),
375
-        'EGP' => __( 'Egyptian Pound', 'invoicing' ),
376
-        'ERN' => __( 'Eritrean Nakfa', 'invoicing' ),
377
-        'ETB' => __( 'Ethiopian Irr', 'invoicing' ),
378
-        'FJD' => __( 'Fijian Dollar', 'invoicing' ),
379
-        'FKP' => __( 'Falkland Islands Pound', 'invoicing' ),
380
-        'GEL' => __( 'Georgian Lari', 'invoicing' ),
381
-        'GGP' => __( 'Guernsey Pound', 'invoicing' ),
382
-        'GHS' => __( 'Ghana Cedi', 'invoicing' ),
383
-        'GIP' => __( 'Gibraltar Pound', 'invoicing' ),
384
-        'GMD' => __( 'Gambian Dalasi', 'invoicing' ),
385
-        'GNF' => __( 'Guinean Franc', 'invoicing' ),
386
-        'GTQ' => __( 'Guatemalan Quetzal', 'invoicing' ),
387
-        'GYD' => __( 'Guyanese Dollar', 'invoicing' ),
388
-        'HKD' => __( 'Hong Kong Dollar', 'invoicing' ),
389
-        'HNL' => __( 'Honduran Lempira', 'invoicing' ),
390
-        'HRK' => __( 'Croatian Kuna', 'invoicing' ),
391
-        'HTG' => __( 'Haitian Gourde', 'invoicing' ),
392
-        'HUF' => __( 'Hungarian Forint', 'invoicing' ),
393
-        'IDR' => __( 'Indonesian Rupiah', 'invoicing' ),
394
-        'ILS' => __( 'Israeli New Shekel', 'invoicing' ),
395
-        'IMP' => __( 'Manx Pound', 'invoicing' ),
396
-        'INR' => __( 'Indian Rupee', 'invoicing' ),
397
-        'IQD' => __( 'Iraqi Dinar', 'invoicing' ),
398
-        'IRR' => __( 'Iranian Rial', 'invoicing' ),
399
-        'IRT' => __( 'Iranian Toman', 'invoicing' ),
400
-        'ISK' => __( 'Icelandic Krona', 'invoicing' ),
401
-        'JEP' => __( 'Jersey Pound', 'invoicing' ),
402
-        'JMD' => __( 'Jamaican Dollar', 'invoicing' ),
403
-        'JOD' => __( 'Jordanian Dinar', 'invoicing' ),
404
-        'JPY' => __( 'Japanese Yen', 'invoicing' ),
405
-        'KES' => __( 'Kenyan Shilling', 'invoicing' ),
406
-        'KGS' => __( 'Kyrgyzstani Som', 'invoicing' ),
407
-        'KHR' => __( 'Cambodian Riel', 'invoicing' ),
408
-        'KMF' => __( 'Comorian Franc', 'invoicing' ),
409
-        'KPW' => __( 'North Korean Won', 'invoicing' ),
410
-        'KRW' => __( 'South Korean Won', 'invoicing' ),
411
-        'KWD' => __( 'Kuwaiti Dinar', 'invoicing' ),
412
-        'KYD' => __( 'Cayman Islands Dollar', 'invoicing' ),
413
-        'KZT' => __( 'Kazakhstani Tenge', 'invoicing' ),
414
-        'LAK' => __( 'Lao Kip', 'invoicing' ),
415
-        'LBP' => __( 'Lebanese Pound', 'invoicing' ),
416
-        'LKR' => __( 'Sri Lankan Rupee', 'invoicing' ),
417
-        'LRD' => __( 'Liberian Dollar', 'invoicing' ),
418
-        'LSL' => __( 'Lesotho Loti', 'invoicing' ),
419
-        'LYD' => __( 'Libyan Dinar', 'invoicing' ),
420
-        'MAD' => __( 'Moroccan Dirham', 'invoicing' ),
421
-        'MDL' => __( 'Moldovan Leu', 'invoicing' ),
422
-        'MGA' => __( 'Malagasy Ariary', 'invoicing' ),
423
-        'MKD' => __( 'Macedonian Denar', 'invoicing' ),
424
-        'MMK' => __( 'Burmese Kyat', 'invoicing' ),
425
-        'MNT' => __( 'Mongolian Tughrik', 'invoicing' ),
426
-        'MOP' => __( 'Macanese Pataca', 'invoicing' ),
427
-        'MRO' => __( 'Mauritanian Ouguiya', 'invoicing' ),
428
-        'MUR' => __( 'Mauritian Rupee', 'invoicing' ),
429
-        'MVR' => __( 'Maldivian Rufiyaa', 'invoicing' ),
430
-        'MWK' => __( 'Malawian Kwacha', 'invoicing' ),
431
-        'MXN' => __( 'Mexican Peso', 'invoicing' ),
432
-        'MYR' => __( 'Malaysian Ringgit', 'invoicing' ),
433
-        'MZN' => __( 'Mozambican Metical', 'invoicing' ),
434
-        'NAD' => __( 'Namibian Dollar', 'invoicing' ),
435
-        'NGN' => __( 'Nigerian Naira', 'invoicing' ),
436
-        'NIO' => __( 'Nicaraguan Cordoba', 'invoicing' ),
437
-        'NOK' => __( 'Norwegian Krone', 'invoicing' ),
438
-        'NPR' => __( 'Nepalese Rupee', 'invoicing' ),
439
-        'NZD' => __( 'New Zealand Dollar', 'invoicing' ),
440
-        'OMR' => __( 'Omani Rial', 'invoicing' ),
441
-        'PAB' => __( 'Panamanian Balboa', 'invoicing' ),
442
-        'PEN' => __( 'Peruvian Nuevo Sol', 'invoicing' ),
443
-        'PGK' => __( 'Papua New Guinean Kina', 'invoicing' ),
444
-        'PHP' => __( 'Philippine Peso', 'invoicing' ),
445
-        'PKR' => __( 'Pakistani Rupee', 'invoicing' ),
446
-        'PLN' => __( 'Polish Zloty', 'invoicing' ),
447
-        'PRB' => __( 'Transnistrian Ruble', 'invoicing' ),
448
-        'PYG' => __( 'Paraguayan Guarani', 'invoicing' ),
449
-        'QAR' => __( 'Qatari Riyal', 'invoicing' ),
450
-        'RON' => __( 'Romanian Leu', 'invoicing' ),
451
-        'RSD' => __( 'Serbian Dinar', 'invoicing' ),
452
-        'RUB' => __( 'Russian Ruble', 'invoicing' ),
453
-        'RWF' => __( 'Rwandan Franc', 'invoicing' ),
454
-        'SAR' => __( 'Saudi Riyal', 'invoicing' ),
455
-        'SBD' => __( 'Solomon Islands Dollar', 'invoicing' ),
456
-        'SCR' => __( 'Seychellois Rupee', 'invoicing' ),
457
-        'SDG' => __( 'Sudanese Pound', 'invoicing' ),
458
-        'SEK' => __( 'Swedish Krona', 'invoicing' ),
459
-        'SGD' => __( 'Singapore Dollar', 'invoicing' ),
460
-        'SHP' => __( 'Saint Helena Pound', 'invoicing' ),
461
-        'SLL' => __( 'Sierra Leonean Leone', 'invoicing' ),
462
-        'SOS' => __( 'Somali Shilling', 'invoicing' ),
463
-        'SRD' => __( 'Surinamese Dollar', 'invoicing' ),
464
-        'SSP' => __( 'South Sudanese Pound', 'invoicing' ),
465
-        'STD' => __( 'Sao Tomean Dobra', 'invoicing' ),
466
-        'SYP' => __( 'Syrian Pound', 'invoicing' ),
467
-        'SZL' => __( 'Swazi Lilangeni', 'invoicing' ),
468
-        'THB' => __( 'Thai Baht', 'invoicing' ),
469
-        'TJS' => __( 'Tajikistani Somoni', 'invoicing' ),
470
-        'TMT' => __( 'Turkmenistan Manat', 'invoicing' ),
471
-        'TND' => __( 'Tunisian Dinar', 'invoicing' ),
472
-        'TOP' => __( 'Tongan Pa&#x2bb;anga', 'invoicing' ),
473
-        'TRY' => __( 'Turkish Lira', 'invoicing' ),
474
-        'TTD' => __( 'Trinidad and Tobago Dollar', 'invoicing' ),
475
-        'TWD' => __( 'New Taiwan Dollar', 'invoicing' ),
476
-        'TZS' => __( 'Tanzanian Shilling', 'invoicing' ),
477
-        'UAH' => __( 'Ukrainian Hryvnia', 'invoicing' ),
478
-        'UGX' => __( 'Ugandan Shilling', 'invoicing' ),
479
-        'UYU' => __( 'Uruguayan Peso', 'invoicing' ),
480
-        'UZS' => __( 'Uzbekistani Som', 'invoicing' ),
481
-        'VEF' => __( 'Venezuelan Bol&iacute;var', 'invoicing' ),
482
-        'VND' => __( 'Vietnamese Dong', 'invoicing' ),
483
-        'VUV' => __( 'Vanuatu Vatu', 'invoicing' ),
484
-        'WST' => __( 'Samoan Tala', 'invoicing' ),
485
-        'XAF' => __( 'Central African CFA Franc', 'invoicing' ),
486
-        'XCD' => __( 'East Caribbean Dollar', 'invoicing' ),
487
-        'XOF' => __( 'West African CFA Franc', 'invoicing' ),
488
-        'XPF' => __( 'CFP Franc', 'invoicing' ),
489
-        'YER' => __( 'Yemeni Rial', 'invoicing' ),
490
-        'ZAR' => __( 'South African Rand', 'invoicing' ),
491
-        'ZMW' => __( 'Zambian Kwacha', 'invoicing' ),
331
+        'USD' => __('US Dollar', 'invoicing'),
332
+        'EUR' => __('Euro', 'invoicing'),
333
+        'GBP' => __('Pound Sterling', 'invoicing'),
334
+        'AED' => __('United Arab Emirates', 'invoicing'),
335
+        'AFN' => __('Afghan Afghani', 'invoicing'),
336
+        'ALL' => __('Albanian Lek', 'invoicing'),
337
+        'AMD' => __('Armenian Dram', 'invoicing'),
338
+        'ANG' => __('Netherlands Antillean Guilder', 'invoicing'),
339
+        'AOA' => __('Angolan Kwanza', 'invoicing'),
340
+        'ARS' => __('Argentine Peso', 'invoicing'),
341
+        'AUD' => __('Australian Dollar', 'invoicing'),
342
+        'AWG' => __('Aruban Florin', 'invoicing'),
343
+        'AZN' => __('Azerbaijani Manat', 'invoicing'),
344
+        'BAM' => __('Bosnia and Herzegovina Convertible Marka', 'invoicing'),
345
+        'BBD' => __('Barbadian Dollar', 'invoicing'),
346
+        'BDT' => __('Bangladeshi Taka', 'invoicing'),
347
+        'BGN' => __('Bulgarian Lev', 'invoicing'),
348
+        'BHD' => __('Bahraini Dinar', 'invoicing'),
349
+        'BIF' => __('Burundian Franc', 'invoicing'),
350
+        'BMD' => __('Bermudian Dollar', 'invoicing'),
351
+        'BND' => __('Brunei Dollar', 'invoicing'),
352
+        'BOB' => __('Bolivian Boliviano', 'invoicing'),
353
+        'BRL' => __('Brazilian Real', 'invoicing'),
354
+        'BSD' => __('Bahamian Dollar', 'invoicing'),
355
+        'BTC' => __('Bitcoin', 'invoicing'),
356
+        'BTN' => __('Bhutanese Ngultrum', 'invoicing'),
357
+        'BWP' => __('Botswana Pula', 'invoicing'),
358
+        'BYN' => __('Belarusian Ruble', 'invoicing'),
359
+        'BZD' => __('Belize Dollar', 'invoicing'),
360
+        'CAD' => __('Canadian Dollar', 'invoicing'),
361
+        'CDF' => __('Congolese Franc', 'invoicing'),
362
+        'CHF' => __('Swiss Franc', 'invoicing'),
363
+        'CLP' => __('Chilean Peso', 'invoicing'),
364
+        'CNY' => __('Chinese Yuan', 'invoicing'),
365
+        'COP' => __('Colombian Peso', 'invoicing'),
366
+        'CRC' => __('Costa Rican Colon', 'invoicing'),
367
+        'CUC' => __('Cuban Convertible Peso', 'invoicing'),
368
+        'CUP' => __('Cuban Peso', 'invoicing'),
369
+        'CVE' => __('Cape Verdean escudo', 'invoicing'),
370
+        'CZK' => __('Czech Koruna', 'invoicing'),
371
+        'DJF' => __('Djiboutian Franc', 'invoicing'),
372
+        'DKK' => __('Danish Krone', 'invoicing'),
373
+        'DOP' => __('Dominican Peso', 'invoicing'),
374
+        'DZD' => __('Algerian Dinar', 'invoicing'),
375
+        'EGP' => __('Egyptian Pound', 'invoicing'),
376
+        'ERN' => __('Eritrean Nakfa', 'invoicing'),
377
+        'ETB' => __('Ethiopian Irr', 'invoicing'),
378
+        'FJD' => __('Fijian Dollar', 'invoicing'),
379
+        'FKP' => __('Falkland Islands Pound', 'invoicing'),
380
+        'GEL' => __('Georgian Lari', 'invoicing'),
381
+        'GGP' => __('Guernsey Pound', 'invoicing'),
382
+        'GHS' => __('Ghana Cedi', 'invoicing'),
383
+        'GIP' => __('Gibraltar Pound', 'invoicing'),
384
+        'GMD' => __('Gambian Dalasi', 'invoicing'),
385
+        'GNF' => __('Guinean Franc', 'invoicing'),
386
+        'GTQ' => __('Guatemalan Quetzal', 'invoicing'),
387
+        'GYD' => __('Guyanese Dollar', 'invoicing'),
388
+        'HKD' => __('Hong Kong Dollar', 'invoicing'),
389
+        'HNL' => __('Honduran Lempira', 'invoicing'),
390
+        'HRK' => __('Croatian Kuna', 'invoicing'),
391
+        'HTG' => __('Haitian Gourde', 'invoicing'),
392
+        'HUF' => __('Hungarian Forint', 'invoicing'),
393
+        'IDR' => __('Indonesian Rupiah', 'invoicing'),
394
+        'ILS' => __('Israeli New Shekel', 'invoicing'),
395
+        'IMP' => __('Manx Pound', 'invoicing'),
396
+        'INR' => __('Indian Rupee', 'invoicing'),
397
+        'IQD' => __('Iraqi Dinar', 'invoicing'),
398
+        'IRR' => __('Iranian Rial', 'invoicing'),
399
+        'IRT' => __('Iranian Toman', 'invoicing'),
400
+        'ISK' => __('Icelandic Krona', 'invoicing'),
401
+        'JEP' => __('Jersey Pound', 'invoicing'),
402
+        'JMD' => __('Jamaican Dollar', 'invoicing'),
403
+        'JOD' => __('Jordanian Dinar', 'invoicing'),
404
+        'JPY' => __('Japanese Yen', 'invoicing'),
405
+        'KES' => __('Kenyan Shilling', 'invoicing'),
406
+        'KGS' => __('Kyrgyzstani Som', 'invoicing'),
407
+        'KHR' => __('Cambodian Riel', 'invoicing'),
408
+        'KMF' => __('Comorian Franc', 'invoicing'),
409
+        'KPW' => __('North Korean Won', 'invoicing'),
410
+        'KRW' => __('South Korean Won', 'invoicing'),
411
+        'KWD' => __('Kuwaiti Dinar', 'invoicing'),
412
+        'KYD' => __('Cayman Islands Dollar', 'invoicing'),
413
+        'KZT' => __('Kazakhstani Tenge', 'invoicing'),
414
+        'LAK' => __('Lao Kip', 'invoicing'),
415
+        'LBP' => __('Lebanese Pound', 'invoicing'),
416
+        'LKR' => __('Sri Lankan Rupee', 'invoicing'),
417
+        'LRD' => __('Liberian Dollar', 'invoicing'),
418
+        'LSL' => __('Lesotho Loti', 'invoicing'),
419
+        'LYD' => __('Libyan Dinar', 'invoicing'),
420
+        'MAD' => __('Moroccan Dirham', 'invoicing'),
421
+        'MDL' => __('Moldovan Leu', 'invoicing'),
422
+        'MGA' => __('Malagasy Ariary', 'invoicing'),
423
+        'MKD' => __('Macedonian Denar', 'invoicing'),
424
+        'MMK' => __('Burmese Kyat', 'invoicing'),
425
+        'MNT' => __('Mongolian Tughrik', 'invoicing'),
426
+        'MOP' => __('Macanese Pataca', 'invoicing'),
427
+        'MRO' => __('Mauritanian Ouguiya', 'invoicing'),
428
+        'MUR' => __('Mauritian Rupee', 'invoicing'),
429
+        'MVR' => __('Maldivian Rufiyaa', 'invoicing'),
430
+        'MWK' => __('Malawian Kwacha', 'invoicing'),
431
+        'MXN' => __('Mexican Peso', 'invoicing'),
432
+        'MYR' => __('Malaysian Ringgit', 'invoicing'),
433
+        'MZN' => __('Mozambican Metical', 'invoicing'),
434
+        'NAD' => __('Namibian Dollar', 'invoicing'),
435
+        'NGN' => __('Nigerian Naira', 'invoicing'),
436
+        'NIO' => __('Nicaraguan Cordoba', 'invoicing'),
437
+        'NOK' => __('Norwegian Krone', 'invoicing'),
438
+        'NPR' => __('Nepalese Rupee', 'invoicing'),
439
+        'NZD' => __('New Zealand Dollar', 'invoicing'),
440
+        'OMR' => __('Omani Rial', 'invoicing'),
441
+        'PAB' => __('Panamanian Balboa', 'invoicing'),
442
+        'PEN' => __('Peruvian Nuevo Sol', 'invoicing'),
443
+        'PGK' => __('Papua New Guinean Kina', 'invoicing'),
444
+        'PHP' => __('Philippine Peso', 'invoicing'),
445
+        'PKR' => __('Pakistani Rupee', 'invoicing'),
446
+        'PLN' => __('Polish Zloty', 'invoicing'),
447
+        'PRB' => __('Transnistrian Ruble', 'invoicing'),
448
+        'PYG' => __('Paraguayan Guarani', 'invoicing'),
449
+        'QAR' => __('Qatari Riyal', 'invoicing'),
450
+        'RON' => __('Romanian Leu', 'invoicing'),
451
+        'RSD' => __('Serbian Dinar', 'invoicing'),
452
+        'RUB' => __('Russian Ruble', 'invoicing'),
453
+        'RWF' => __('Rwandan Franc', 'invoicing'),
454
+        'SAR' => __('Saudi Riyal', 'invoicing'),
455
+        'SBD' => __('Solomon Islands Dollar', 'invoicing'),
456
+        'SCR' => __('Seychellois Rupee', 'invoicing'),
457
+        'SDG' => __('Sudanese Pound', 'invoicing'),
458
+        'SEK' => __('Swedish Krona', 'invoicing'),
459
+        'SGD' => __('Singapore Dollar', 'invoicing'),
460
+        'SHP' => __('Saint Helena Pound', 'invoicing'),
461
+        'SLL' => __('Sierra Leonean Leone', 'invoicing'),
462
+        'SOS' => __('Somali Shilling', 'invoicing'),
463
+        'SRD' => __('Surinamese Dollar', 'invoicing'),
464
+        'SSP' => __('South Sudanese Pound', 'invoicing'),
465
+        'STD' => __('Sao Tomean Dobra', 'invoicing'),
466
+        'SYP' => __('Syrian Pound', 'invoicing'),
467
+        'SZL' => __('Swazi Lilangeni', 'invoicing'),
468
+        'THB' => __('Thai Baht', 'invoicing'),
469
+        'TJS' => __('Tajikistani Somoni', 'invoicing'),
470
+        'TMT' => __('Turkmenistan Manat', 'invoicing'),
471
+        'TND' => __('Tunisian Dinar', 'invoicing'),
472
+        'TOP' => __('Tongan Pa&#x2bb;anga', 'invoicing'),
473
+        'TRY' => __('Turkish Lira', 'invoicing'),
474
+        'TTD' => __('Trinidad and Tobago Dollar', 'invoicing'),
475
+        'TWD' => __('New Taiwan Dollar', 'invoicing'),
476
+        'TZS' => __('Tanzanian Shilling', 'invoicing'),
477
+        'UAH' => __('Ukrainian Hryvnia', 'invoicing'),
478
+        'UGX' => __('Ugandan Shilling', 'invoicing'),
479
+        'UYU' => __('Uruguayan Peso', 'invoicing'),
480
+        'UZS' => __('Uzbekistani Som', 'invoicing'),
481
+        'VEF' => __('Venezuelan Bol&iacute;var', 'invoicing'),
482
+        'VND' => __('Vietnamese Dong', 'invoicing'),
483
+        'VUV' => __('Vanuatu Vatu', 'invoicing'),
484
+        'WST' => __('Samoan Tala', 'invoicing'),
485
+        'XAF' => __('Central African CFA Franc', 'invoicing'),
486
+        'XCD' => __('East Caribbean Dollar', 'invoicing'),
487
+        'XOF' => __('West African CFA Franc', 'invoicing'),
488
+        'XPF' => __('CFP Franc', 'invoicing'),
489
+        'YER' => __('Yemeni Rial', 'invoicing'),
490
+        'ZAR' => __('South African Rand', 'invoicing'),
491
+        'ZMW' => __('Zambian Kwacha', 'invoicing'),
492 492
     );
493 493
     
494 494
     //asort( $currencies ); // this
495 495
 
496
-    return apply_filters( 'wpinv_currencies', $currencies );
496
+    return apply_filters('wpinv_currencies', $currencies);
497 497
 }
498 498
 
499
-function wpinv_price( $amount = '', $currency = '' ) {
500
-    if( empty( $currency ) ) {
499
+function wpinv_price($amount = '', $currency = '') {
500
+    if (empty($currency)) {
501 501
         $currency = wpinv_get_currency();
502 502
     }
503 503
 
@@ -505,14 +505,14 @@  discard block
 block discarded – undo
505 505
 
506 506
     $negative = $amount < 0;
507 507
 
508
-    if ( $negative ) {
509
-        $amount = substr( $amount, 1 );
508
+    if ($negative) {
509
+        $amount = substr($amount, 1);
510 510
     }
511 511
 
512
-    $symbol = wpinv_currency_symbol( $currency );
512
+    $symbol = wpinv_currency_symbol($currency);
513 513
 
514
-    if ( $position == 'left' || $position == 'left_space' ) {
515
-        switch ( $currency ) {
514
+    if ($position == 'left' || $position == 'left_space') {
515
+        switch ($currency) {
516 516
             case "GBP" :
517 517
             case "BRL" :
518 518
             case "EUR" :
@@ -524,15 +524,15 @@  discard block
 block discarded – undo
524 524
             case "NZD" :
525 525
             case "SGD" :
526 526
             case "JPY" :
527
-                $price = $position == 'left_space' ? $symbol . ' ' .  $amount : $symbol . $amount;
527
+                $price = $position == 'left_space' ? $symbol . ' ' . $amount : $symbol . $amount;
528 528
                 break;
529 529
             default :
530 530
                 //$price = $currency . ' ' . $amount;
531
-                $price = $position == 'left_space' ? $symbol . ' ' .  $amount : $symbol . $amount;
531
+                $price = $position == 'left_space' ? $symbol . ' ' . $amount : $symbol . $amount;
532 532
                 break;
533 533
         }
534 534
     } else {
535
-        switch ( $currency ) {
535
+        switch ($currency) {
536 536
             case "GBP" :
537 537
             case "BRL" :
538 538
             case "EUR" :
@@ -543,83 +543,83 @@  discard block
 block discarded – undo
543 543
             case "MXN" :
544 544
             case "SGD" :
545 545
             case "JPY" :
546
-                $price = $position == 'right_space' ? $amount . ' ' .  $symbol : $amount . $symbol;
546
+                $price = $position == 'right_space' ? $amount . ' ' . $symbol : $amount . $symbol;
547 547
                 break;
548 548
             default :
549 549
                 //$price = $amount . ' ' . $currency;
550
-                $price = $position == 'right_space' ? $amount . ' ' .  $symbol : $amount . $symbol;
550
+                $price = $position == 'right_space' ? $amount . ' ' . $symbol : $amount . $symbol;
551 551
                 break;
552 552
         }
553 553
     }
554 554
     
555
-    if ( $negative ) {
555
+    if ($negative) {
556 556
         $price = '-' . $price;
557 557
     }
558 558
     
559
-    $price = apply_filters( 'wpinv_' . strtolower( $currency ) . '_currency_filter_' . $position, $price, $currency, $amount );
559
+    $price = apply_filters('wpinv_' . strtolower($currency) . '_currency_filter_' . $position, $price, $currency, $amount);
560 560
 
561 561
     return $price;
562 562
 }
563 563
 
564
-function wpinv_format_amount( $amount, $decimals = NULL, $calculate = false ) {
564
+function wpinv_format_amount($amount, $decimals = NULL, $calculate = false) {
565 565
     $thousands_sep = wpinv_thousands_separator();
566 566
     $decimal_sep   = wpinv_decimal_separator();
567 567
 
568
-    if ( $decimals === NULL ) {
568
+    if ($decimals === NULL) {
569 569
         $decimals = wpinv_decimals();
570 570
     }
571 571
 
572
-    if ( $decimal_sep == ',' && false !== ( $sep_found = strpos( $amount, $decimal_sep ) ) ) {
573
-        $whole = substr( $amount, 0, $sep_found );
574
-        $part = substr( $amount, $sep_found + 1, ( strlen( $amount ) - 1 ) );
572
+    if ($decimal_sep == ',' && false !== ($sep_found = strpos($amount, $decimal_sep))) {
573
+        $whole = substr($amount, 0, $sep_found);
574
+        $part = substr($amount, $sep_found + 1, (strlen($amount) - 1));
575 575
         $amount = $whole . '.' . $part;
576 576
     }
577 577
 
578
-    if ( $thousands_sep == ',' && false !== ( $found = strpos( $amount, $thousands_sep ) ) ) {
579
-        $amount = str_replace( ',', '', $amount );
578
+    if ($thousands_sep == ',' && false !== ($found = strpos($amount, $thousands_sep))) {
579
+        $amount = str_replace(',', '', $amount);
580 580
     }
581 581
 
582
-    if ( $thousands_sep == ' ' && false !== ( $found = strpos( $amount, $thousands_sep ) ) ) {
583
-        $amount = str_replace( ' ', '', $amount );
582
+    if ($thousands_sep == ' ' && false !== ($found = strpos($amount, $thousands_sep))) {
583
+        $amount = str_replace(' ', '', $amount);
584 584
     }
585 585
 
586
-    if ( empty( $amount ) ) {
586
+    if (empty($amount)) {
587 587
         $amount = 0;
588 588
     }
589 589
     
590
-    $decimals  = apply_filters( 'wpinv_amount_format_decimals', $decimals ? $decimals : 0, $amount, $calculate );
591
-    $formatted = number_format( (float)$amount, $decimals, $decimal_sep, $thousands_sep );
590
+    $decimals  = apply_filters('wpinv_amount_format_decimals', $decimals ? $decimals : 0, $amount, $calculate);
591
+    $formatted = number_format((float) $amount, $decimals, $decimal_sep, $thousands_sep);
592 592
     
593
-    if ( $calculate ) {
594
-        if ( $thousands_sep === "," ) {
595
-            $formatted = str_replace( ",", "", $formatted );
593
+    if ($calculate) {
594
+        if ($thousands_sep === ",") {
595
+            $formatted = str_replace(",", "", $formatted);
596 596
         }
597 597
         
598
-        if ( $decimal_sep === "," ) {
599
-            $formatted = str_replace( ",", ".", $formatted );
598
+        if ($decimal_sep === ",") {
599
+            $formatted = str_replace(",", ".", $formatted);
600 600
         }
601 601
     }
602 602
 
603
-    return apply_filters( 'wpinv_amount_format', $formatted, $amount, $decimals, $decimal_sep, $thousands_sep, $calculate );
603
+    return apply_filters('wpinv_amount_format', $formatted, $amount, $decimals, $decimal_sep, $thousands_sep, $calculate);
604 604
 }
605
-add_filter( 'wpinv_amount_format_decimals', 'wpinv_currency_decimal_filter', 10, 1 );
605
+add_filter('wpinv_amount_format_decimals', 'wpinv_currency_decimal_filter', 10, 1);
606 606
 
607
-function wpinv_sanitize_key( $key ) {
607
+function wpinv_sanitize_key($key) {
608 608
     $raw_key = $key;
609
-    $key = preg_replace( '/[^a-zA-Z0-9_\-\.\:\/]/', '', $key );
609
+    $key = preg_replace('/[^a-zA-Z0-9_\-\.\:\/]/', '', $key);
610 610
 
611
-    return apply_filters( 'wpinv_sanitize_key', $key, $raw_key );
611
+    return apply_filters('wpinv_sanitize_key', $key, $raw_key);
612 612
 }
613 613
 
614
-function wpinv_get_file_extension( $str ) {
615
-    $parts = explode( '.', $str );
616
-    return end( $parts );
614
+function wpinv_get_file_extension($str) {
615
+    $parts = explode('.', $str);
616
+    return end($parts);
617 617
 }
618 618
 
619
-function wpinv_string_is_image_url( $str ) {
620
-    $ext = wpinv_get_file_extension( $str );
619
+function wpinv_string_is_image_url($str) {
620
+    $ext = wpinv_get_file_extension($str);
621 621
 
622
-    switch ( strtolower( $ext ) ) {
622
+    switch (strtolower($ext)) {
623 623
         case 'jpeg';
624 624
         case 'jpg';
625 625
             $return = true;
@@ -635,32 +635,32 @@  discard block
 block discarded – undo
635 635
             break;
636 636
     }
637 637
 
638
-    return (bool)apply_filters( 'wpinv_string_is_image', $return, $str );
638
+    return (bool) apply_filters('wpinv_string_is_image', $return, $str);
639 639
 }
640 640
 
641
-function wpinv_error_log( $log, $title = '', $file = '', $line = '', $exit = false ) {
642
-    $should_log = apply_filters( 'wpinv_log_errors', WP_DEBUG );
641
+function wpinv_error_log($log, $title = '', $file = '', $line = '', $exit = false) {
642
+    $should_log = apply_filters('wpinv_log_errors', WP_DEBUG);
643 643
     
644
-    if ( true === $should_log ) {
644
+    if (true === $should_log) {
645 645
         $label = '';
646
-        if ( $file && $file !== '' ) {
647
-            $label .= basename( $file ) . ( $line ? '(' . $line . ')' : '' );
646
+        if ($file && $file !== '') {
647
+            $label .= basename($file) . ($line ? '(' . $line . ')' : '');
648 648
         }
649 649
         
650
-        if ( $title && $title !== '' ) {
650
+        if ($title && $title !== '') {
651 651
             $label = $label !== '' ? $label . ' ' : '';
652 652
             $label .= $title . ' ';
653 653
         }
654 654
         
655
-        $label = $label !== '' ? trim( $label ) . ' : ' : '';
655
+        $label = $label !== '' ? trim($label) . ' : ' : '';
656 656
         
657
-        if ( is_array( $log ) || is_object( $log ) ) {
658
-            error_log( $label . print_r( $log, true ) );
657
+        if (is_array($log) || is_object($log)) {
658
+            error_log($label . print_r($log, true));
659 659
         } else {
660
-            error_log( $label . $log );
660
+            error_log($label . $log);
661 661
         }
662 662
         
663
-        if ( $exit ) {
663
+        if ($exit) {
664 664
             exit;
665 665
         }
666 666
     }
@@ -668,65 +668,65 @@  discard block
 block discarded – undo
668 668
 
669 669
 function wpinv_is_ajax_disabled() {
670 670
     $retval = false;
671
-    return apply_filters( 'wpinv_is_ajax_disabled', $retval );
671
+    return apply_filters('wpinv_is_ajax_disabled', $retval);
672 672
 }
673 673
 
674
-function wpinv_get_current_page_url( $nocache = false ) {
674
+function wpinv_get_current_page_url($nocache = false) {
675 675
     global $wp;
676 676
 
677
-    if ( get_option( 'permalink_structure' ) ) {
678
-        $base = trailingslashit( home_url( $wp->request ) );
677
+    if (get_option('permalink_structure')) {
678
+        $base = trailingslashit(home_url($wp->request));
679 679
     } else {
680
-        $base = add_query_arg( $wp->query_string, '', trailingslashit( home_url( $wp->request ) ) );
681
-        $base = remove_query_arg( array( 'post_type', 'name' ), $base );
680
+        $base = add_query_arg($wp->query_string, '', trailingslashit(home_url($wp->request)));
681
+        $base = remove_query_arg(array('post_type', 'name'), $base);
682 682
     }
683 683
 
684 684
     $scheme = is_ssl() ? 'https' : 'http';
685
-    $uri    = set_url_scheme( $base, $scheme );
685
+    $uri    = set_url_scheme($base, $scheme);
686 686
 
687
-    if ( is_front_page() ) {
688
-        $uri = home_url( '/' );
689
-    } elseif ( wpinv_is_checkout( array(), false ) ) {
687
+    if (is_front_page()) {
688
+        $uri = home_url('/');
689
+    } elseif (wpinv_is_checkout(array(), false)) {
690 690
         $uri = wpinv_get_checkout_uri();
691 691
     }
692 692
 
693
-    $uri = apply_filters( 'wpinv_get_current_page_url', $uri );
693
+    $uri = apply_filters('wpinv_get_current_page_url', $uri);
694 694
 
695
-    if ( $nocache ) {
696
-        $uri = wpinv_add_cache_busting( $uri );
695
+    if ($nocache) {
696
+        $uri = wpinv_add_cache_busting($uri);
697 697
     }
698 698
 
699 699
     return $uri;
700 700
 }
701 701
 
702 702
 function wpinv_get_php_arg_separator_output() {
703
-	return ini_get( 'arg_separator.output' );
703
+	return ini_get('arg_separator.output');
704 704
 }
705 705
 
706
-function wpinv_rgb_from_hex( $color ) {
707
-    $color = str_replace( '#', '', $color );
706
+function wpinv_rgb_from_hex($color) {
707
+    $color = str_replace('#', '', $color);
708 708
     // Convert shorthand colors to full format, e.g. "FFF" -> "FFFFFF"
709
-    $color = preg_replace( '~^(.)(.)(.)$~', '$1$1$2$2$3$3', $color );
709
+    $color = preg_replace('~^(.)(.)(.)$~', '$1$1$2$2$3$3', $color);
710 710
 
711 711
     $rgb      = array();
712
-    $rgb['R'] = hexdec( $color{0}.$color{1} );
713
-    $rgb['G'] = hexdec( $color{2}.$color{3} );
714
-    $rgb['B'] = hexdec( $color{4}.$color{5} );
712
+    $rgb['R'] = hexdec($color{0} . $color{1} );
713
+    $rgb['G'] = hexdec($color{2} . $color{3} );
714
+    $rgb['B'] = hexdec($color{4} . $color{5} );
715 715
 
716 716
     return $rgb;
717 717
 }
718 718
 
719
-function wpinv_hex_darker( $color, $factor = 30 ) {
720
-    $base  = wpinv_rgb_from_hex( $color );
719
+function wpinv_hex_darker($color, $factor = 30) {
720
+    $base  = wpinv_rgb_from_hex($color);
721 721
     $color = '#';
722 722
 
723
-    foreach ( $base as $k => $v ) {
723
+    foreach ($base as $k => $v) {
724 724
         $amount      = $v / 100;
725
-        $amount      = round( $amount * $factor );
725
+        $amount      = round($amount * $factor);
726 726
         $new_decimal = $v - $amount;
727 727
 
728
-        $new_hex_component = dechex( $new_decimal );
729
-        if ( strlen( $new_hex_component ) < 2 ) {
728
+        $new_hex_component = dechex($new_decimal);
729
+        if (strlen($new_hex_component) < 2) {
730 730
             $new_hex_component = "0" . $new_hex_component;
731 731
         }
732 732
         $color .= $new_hex_component;
@@ -735,18 +735,18 @@  discard block
 block discarded – undo
735 735
     return $color;
736 736
 }
737 737
 
738
-function wpinv_hex_lighter( $color, $factor = 30 ) {
739
-    $base  = wpinv_rgb_from_hex( $color );
738
+function wpinv_hex_lighter($color, $factor = 30) {
739
+    $base  = wpinv_rgb_from_hex($color);
740 740
     $color = '#';
741 741
 
742
-    foreach ( $base as $k => $v ) {
742
+    foreach ($base as $k => $v) {
743 743
         $amount      = 255 - $v;
744 744
         $amount      = $amount / 100;
745
-        $amount      = round( $amount * $factor );
745
+        $amount      = round($amount * $factor);
746 746
         $new_decimal = $v + $amount;
747 747
 
748
-        $new_hex_component = dechex( $new_decimal );
749
-        if ( strlen( $new_hex_component ) < 2 ) {
748
+        $new_hex_component = dechex($new_decimal);
749
+        if (strlen($new_hex_component) < 2) {
750 750
             $new_hex_component = "0" . $new_hex_component;
751 751
         }
752 752
         $color .= $new_hex_component;
@@ -755,22 +755,22 @@  discard block
 block discarded – undo
755 755
     return $color;
756 756
 }
757 757
 
758
-function wpinv_light_or_dark( $color, $dark = '#000000', $light = '#FFFFFF' ) {
759
-    $hex = str_replace( '#', '', $color );
758
+function wpinv_light_or_dark($color, $dark = '#000000', $light = '#FFFFFF') {
759
+    $hex = str_replace('#', '', $color);
760 760
 
761
-    $c_r = hexdec( substr( $hex, 0, 2 ) );
762
-    $c_g = hexdec( substr( $hex, 2, 2 ) );
763
-    $c_b = hexdec( substr( $hex, 4, 2 ) );
761
+    $c_r = hexdec(substr($hex, 0, 2));
762
+    $c_g = hexdec(substr($hex, 2, 2));
763
+    $c_b = hexdec(substr($hex, 4, 2));
764 764
 
765
-    $brightness = ( ( $c_r * 299 ) + ( $c_g * 587 ) + ( $c_b * 114 ) ) / 1000;
765
+    $brightness = (($c_r * 299) + ($c_g * 587) + ($c_b * 114)) / 1000;
766 766
 
767 767
     return $brightness > 155 ? $dark : $light;
768 768
 }
769 769
 
770
-function wpinv_format_hex( $hex ) {
771
-    $hex = trim( str_replace( '#', '', $hex ) );
770
+function wpinv_format_hex($hex) {
771
+    $hex = trim(str_replace('#', '', $hex));
772 772
 
773
-    if ( strlen( $hex ) == 3 ) {
773
+    if (strlen($hex) == 3) {
774 774
         $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
775 775
     }
776 776
 
@@ -790,12 +790,12 @@  discard block
 block discarded – undo
790 790
  * @param string $encoding The encoding parameter is the character encoding. Default "UTF-8".
791 791
  * @return string
792 792
  */
793
-function wpinv_utf8_strimwidth( $str, $start, $width, $trimmaker = '', $encoding = 'UTF-8' ) {
794
-    if ( function_exists( 'mb_strimwidth' ) ) {
795
-        return mb_strimwidth( $str, $start, $width, $trimmaker, $encoding );
793
+function wpinv_utf8_strimwidth($str, $start, $width, $trimmaker = '', $encoding = 'UTF-8') {
794
+    if (function_exists('mb_strimwidth')) {
795
+        return mb_strimwidth($str, $start, $width, $trimmaker, $encoding);
796 796
     }
797 797
     
798
-    return wpinv_utf8_substr( $str, $start, $width, $encoding ) . $trimmaker;
798
+    return wpinv_utf8_substr($str, $start, $width, $encoding) . $trimmaker;
799 799
 }
800 800
 
801 801
 /**
@@ -807,28 +807,28 @@  discard block
 block discarded – undo
807 807
  * @param string $encoding The encoding parameter is the character encoding. Default "UTF-8".
808 808
  * @return int Returns the number of characters in string.
809 809
  */
810
-function wpinv_utf8_strlen( $str, $encoding = 'UTF-8' ) {
811
-    if ( function_exists( 'mb_strlen' ) ) {
812
-        return mb_strlen( $str, $encoding );
810
+function wpinv_utf8_strlen($str, $encoding = 'UTF-8') {
811
+    if (function_exists('mb_strlen')) {
812
+        return mb_strlen($str, $encoding);
813 813
     }
814 814
         
815
-    return strlen( $str );
815
+    return strlen($str);
816 816
 }
817 817
 
818
-function wpinv_utf8_strtolower( $str, $encoding = 'UTF-8' ) {
819
-    if ( function_exists( 'mb_strtolower' ) ) {
820
-        return mb_strtolower( $str, $encoding );
818
+function wpinv_utf8_strtolower($str, $encoding = 'UTF-8') {
819
+    if (function_exists('mb_strtolower')) {
820
+        return mb_strtolower($str, $encoding);
821 821
     }
822 822
     
823
-    return strtolower( $str );
823
+    return strtolower($str);
824 824
 }
825 825
 
826
-function wpinv_utf8_strtoupper( $str, $encoding = 'UTF-8' ) {
827
-    if ( function_exists( 'mb_strtoupper' ) ) {
828
-        return mb_strtoupper( $str, $encoding );
826
+function wpinv_utf8_strtoupper($str, $encoding = 'UTF-8') {
827
+    if (function_exists('mb_strtoupper')) {
828
+        return mb_strtoupper($str, $encoding);
829 829
     }
830 830
     
831
-    return strtoupper( $str );
831
+    return strtoupper($str);
832 832
 }
833 833
 
834 834
 /**
@@ -842,12 +842,12 @@  discard block
 block discarded – undo
842 842
  * @param string $encoding The encoding parameter is the character encoding. Default "UTF-8".
843 843
  * @return int Returns the position of the first occurrence of search in the string.
844 844
  */
845
-function wpinv_utf8_strpos( $str, $find, $offset = 0, $encoding = 'UTF-8' ) {
846
-    if ( function_exists( 'mb_strpos' ) ) {
847
-        return mb_strpos( $str, $find, $offset, $encoding );
845
+function wpinv_utf8_strpos($str, $find, $offset = 0, $encoding = 'UTF-8') {
846
+    if (function_exists('mb_strpos')) {
847
+        return mb_strpos($str, $find, $offset, $encoding);
848 848
     }
849 849
         
850
-    return strpos( $str, $find, $offset );
850
+    return strpos($str, $find, $offset);
851 851
 }
852 852
 
853 853
 /**
@@ -861,12 +861,12 @@  discard block
 block discarded – undo
861 861
  * @param string $encoding The encoding parameter is the character encoding. Default "UTF-8".
862 862
  * @return int Returns the position of the last occurrence of search.
863 863
  */
864
-function wpinv_utf8_strrpos( $str, $find, $offset = 0, $encoding = 'UTF-8' ) {
865
-    if ( function_exists( 'mb_strrpos' ) ) {
866
-        return mb_strrpos( $str, $find, $offset, $encoding );
864
+function wpinv_utf8_strrpos($str, $find, $offset = 0, $encoding = 'UTF-8') {
865
+    if (function_exists('mb_strrpos')) {
866
+        return mb_strrpos($str, $find, $offset, $encoding);
867 867
     }
868 868
         
869
-    return strrpos( $str, $find, $offset );
869
+    return strrpos($str, $find, $offset);
870 870
 }
871 871
 
872 872
 /**
@@ -881,16 +881,16 @@  discard block
 block discarded – undo
881 881
  * @param string $encoding The encoding parameter is the character encoding. Default "UTF-8".
882 882
  * @return string
883 883
  */
884
-function wpinv_utf8_substr( $str, $start, $length = null, $encoding = 'UTF-8' ) {
885
-    if ( function_exists( 'mb_substr' ) ) {
886
-        if ( $length === null ) {
887
-            return mb_substr( $str, $start, wpinv_utf8_strlen( $str, $encoding ), $encoding );
884
+function wpinv_utf8_substr($str, $start, $length = null, $encoding = 'UTF-8') {
885
+    if (function_exists('mb_substr')) {
886
+        if ($length === null) {
887
+            return mb_substr($str, $start, wpinv_utf8_strlen($str, $encoding), $encoding);
888 888
         } else {
889
-            return mb_substr( $str, $start, $length, $encoding );
889
+            return mb_substr($str, $start, $length, $encoding);
890 890
         }
891 891
     }
892 892
         
893
-    return substr( $str, $start, $length );
893
+    return substr($str, $start, $length);
894 894
 }
895 895
 
896 896
 /**
@@ -902,48 +902,48 @@  discard block
 block discarded – undo
902 902
  * @param string $encoding The encoding parameter is the character encoding. Default "UTF-8".
903 903
  * @return string The width of string.
904 904
  */
905
-function wpinv_utf8_strwidth( $str, $encoding = 'UTF-8' ) {
906
-    if ( function_exists( 'mb_strwidth' ) ) {
907
-        return mb_strwidth( $str, $encoding );
905
+function wpinv_utf8_strwidth($str, $encoding = 'UTF-8') {
906
+    if (function_exists('mb_strwidth')) {
907
+        return mb_strwidth($str, $encoding);
908 908
     }
909 909
     
910
-    return wpinv_utf8_strlen( $str, $encoding );
910
+    return wpinv_utf8_strlen($str, $encoding);
911 911
 }
912 912
 
913
-function wpinv_utf8_ucfirst( $str, $lower_str_end = false, $encoding = 'UTF-8' ) {
914
-    if ( function_exists( 'mb_strlen' ) ) {
915
-        $first_letter = wpinv_utf8_strtoupper( wpinv_utf8_substr( $str, 0, 1, $encoding ), $encoding );
913
+function wpinv_utf8_ucfirst($str, $lower_str_end = false, $encoding = 'UTF-8') {
914
+    if (function_exists('mb_strlen')) {
915
+        $first_letter = wpinv_utf8_strtoupper(wpinv_utf8_substr($str, 0, 1, $encoding), $encoding);
916 916
         $str_end = "";
917 917
         
918
-        if ( $lower_str_end ) {
919
-            $str_end = wpinv_utf8_strtolower( wpinv_utf8_substr( $str, 1, wpinv_utf8_strlen( $str, $encoding ), $encoding ), $encoding );
918
+        if ($lower_str_end) {
919
+            $str_end = wpinv_utf8_strtolower(wpinv_utf8_substr($str, 1, wpinv_utf8_strlen($str, $encoding), $encoding), $encoding);
920 920
         } else {
921
-            $str_end = wpinv_utf8_substr( $str, 1, wpinv_utf8_strlen( $str, $encoding ), $encoding );
921
+            $str_end = wpinv_utf8_substr($str, 1, wpinv_utf8_strlen($str, $encoding), $encoding);
922 922
         }
923 923
 
924 924
         return $first_letter . $str_end;
925 925
     }
926 926
     
927
-    return ucfirst( $str );
927
+    return ucfirst($str);
928 928
 }
929 929
 
930
-function wpinv_utf8_ucwords( $str, $encoding = 'UTF-8' ) {
931
-    if ( function_exists( 'mb_convert_case' ) ) {
932
-        return mb_convert_case( $str, MB_CASE_TITLE, $encoding );
930
+function wpinv_utf8_ucwords($str, $encoding = 'UTF-8') {
931
+    if (function_exists('mb_convert_case')) {
932
+        return mb_convert_case($str, MB_CASE_TITLE, $encoding);
933 933
     }
934 934
     
935
-    return ucwords( $str );
935
+    return ucwords($str);
936 936
 }
937 937
 
938
-function wpinv_period_in_days( $period, $unit ) {
939
-    $period = absint( $period );
938
+function wpinv_period_in_days($period, $unit) {
939
+    $period = absint($period);
940 940
     
941
-    if ( $period > 0 ) {
942
-        if ( in_array( strtolower( $unit ), array( 'w', 'week', 'weeks' ) ) ) {
941
+    if ($period > 0) {
942
+        if (in_array(strtolower($unit), array('w', 'week', 'weeks'))) {
943 943
             $period = $period * 7;
944
-        } else if ( in_array( strtolower( $unit ), array( 'm', 'month', 'months' ) ) ) {
944
+        } else if (in_array(strtolower($unit), array('m', 'month', 'months'))) {
945 945
             $period = $period * 30;
946
-        } else if ( in_array( strtolower( $unit ), array( 'y', 'year', 'years' ) ) ) {
946
+        } else if (in_array(strtolower($unit), array('y', 'year', 'years'))) {
947 947
             $period = $period * 365;
948 948
         }
949 949
     }
@@ -951,14 +951,14 @@  discard block
 block discarded – undo
951 951
     return $period;
952 952
 }
953 953
 
954
-function wpinv_cal_days_in_month( $calendar, $month, $year ) {
955
-    if ( function_exists( 'cal_days_in_month' ) ) {
956
-        return cal_days_in_month( $calendar, $month, $year );
954
+function wpinv_cal_days_in_month($calendar, $month, $year) {
955
+    if (function_exists('cal_days_in_month')) {
956
+        return cal_days_in_month($calendar, $month, $year);
957 957
     }
958 958
 
959 959
     // Fallback in case the calendar extension is not loaded in PHP
960 960
     // Only supports Gregorian calendar
961
-    return date( 't', mktime( 0, 0, 0, $month, 1, $year ) );
961
+    return date('t', mktime(0, 0, 0, $month, 1, $year));
962 962
 }
963 963
 
964 964
 /**
@@ -969,11 +969,11 @@  discard block
 block discarded – undo
969 969
  *
970 970
  * @return string
971 971
  */
972
-function wpi_help_tip( $tip, $allow_html = false ) {
973
-    if ( $allow_html ) {
974
-        $tip = wpi_sanitize_tooltip( $tip );
972
+function wpi_help_tip($tip, $allow_html = false) {
973
+    if ($allow_html) {
974
+        $tip = wpi_sanitize_tooltip($tip);
975 975
     } else {
976
-        $tip = esc_attr( $tip );
976
+        $tip = esc_attr($tip);
977 977
     }
978 978
 
979 979
     return '<span class="wpi-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>';
@@ -987,8 +987,8 @@  discard block
 block discarded – undo
987 987
  * @param string $var
988 988
  * @return string
989 989
  */
990
-function wpi_sanitize_tooltip( $var ) {
991
-    return htmlspecialchars( wp_kses( html_entity_decode( $var ), array(
990
+function wpi_sanitize_tooltip($var) {
991
+    return htmlspecialchars(wp_kses(html_entity_decode($var), array(
992 992
         'br'     => array(),
993 993
         'em'     => array(),
994 994
         'strong' => array(),
@@ -998,7 +998,7 @@  discard block
 block discarded – undo
998 998
         'li'     => array(),
999 999
         'ol'     => array(),
1000 1000
         'p'      => array(),
1001
-    ) ) );
1001
+    )));
1002 1002
 }
1003 1003
 
1004 1004
 /**
@@ -1008,7 +1008,7 @@  discard block
 block discarded – undo
1008 1008
  */
1009 1009
 function wpinv_get_screen_ids() {
1010 1010
 
1011
-    $screen_id = sanitize_title( __( 'Invoicing', 'invoicing' ) );
1011
+    $screen_id = sanitize_title(__('Invoicing', 'invoicing'));
1012 1012
 
1013 1013
     $screen_ids = array(
1014 1014
         'toplevel_page_' . $screen_id,
@@ -1026,7 +1026,7 @@  discard block
 block discarded – undo
1026 1026
         'invoicing_page_wpi-addons',
1027 1027
     );
1028 1028
 
1029
-    return apply_filters( 'wpinv_screen_ids', $screen_ids );
1029
+    return apply_filters('wpinv_screen_ids', $screen_ids);
1030 1030
 }
1031 1031
 
1032 1032
 /**
@@ -1037,9 +1037,9 @@  discard block
 block discarded – undo
1037 1037
  * @param array|string $list List of values.
1038 1038
  * @return array Sanitized array of values.
1039 1039
  */
1040
-function wpinv_parse_list( $list ) {
1041
-	if ( ! is_array( $list ) ) {
1042
-		return preg_split( '/[\s,]+/', $list, -1, PREG_SPLIT_NO_EMPTY );
1040
+function wpinv_parse_list($list) {
1041
+	if (!is_array($list)) {
1042
+		return preg_split('/[\s,]+/', $list, -1, PREG_SPLIT_NO_EMPTY);
1043 1043
 	}
1044 1044
 
1045 1045
 	return $list;
@@ -1053,16 +1053,16 @@  discard block
 block discarded – undo
1053 1053
  * @param string $key Type of data to fetch.
1054 1054
  * @return mixed Fetched data.
1055 1055
  */
1056
-function wpinv_get_data( $key ) {
1056
+function wpinv_get_data($key) {
1057 1057
     
1058 1058
     // Try fetching it from the cache.
1059
-    $data = wp_cache_get( "wpinv-$key", 'wpinv' );
1060
-    if( $data ) {
1059
+    $data = wp_cache_get("wpinv-$key", 'wpinv');
1060
+    if ($data) {
1061 1061
         return $data;
1062 1062
     }
1063 1063
 
1064
-    $data = apply_filters( "wpinv_get_$key", include WPINV_PLUGIN_DIR . "includes/data/$key.php" );
1065
-	wp_cache_set( "wpinv-$key", $data, 'wpinv' );
1064
+    $data = apply_filters("wpinv_get_$key", include WPINV_PLUGIN_DIR . "includes/data/$key.php");
1065
+	wp_cache_set("wpinv-$key", $data, 'wpinv');
1066 1066
 
1067 1067
 	return $data;
1068 1068
 }
@@ -1076,10 +1076,10 @@  discard block
 block discarded – undo
1076 1076
  * @param bool $first_empty Whether or not the first item in the list should be empty
1077 1077
  * @return mixed Fetched data.
1078 1078
  */
1079
-function wpinv_maybe_add_empty_option( $options, $first_empty ) {
1079
+function wpinv_maybe_add_empty_option($options, $first_empty) {
1080 1080
 
1081
-    if ( ! empty( $options ) && $first_empty ) {
1082
-        return array_merge( array( '' => '' ), $options );
1081
+    if (!empty($options) && $first_empty) {
1082
+        return array_merge(array('' => ''), $options);
1083 1083
     }
1084 1084
     return $options;
1085 1085
 
@@ -1091,19 +1091,19 @@  discard block
 block discarded – undo
1091 1091
  * @param mixed $var Data to sanitize.
1092 1092
  * @return string|array
1093 1093
  */
1094
-function wpinv_clean( $var ) {
1094
+function wpinv_clean($var) {
1095 1095
 
1096
-	if ( is_array( $var ) ) {
1097
-		return array_map( 'wpinv_clean', $var );
1096
+	if (is_array($var)) {
1097
+		return array_map('wpinv_clean', $var);
1098 1098
     }
1099 1099
 
1100
-    if ( is_object( $var ) ) {
1101
-		$object_vars = get_object_vars( $var );
1102
-		foreach ( $object_vars as $property_name => $property_value ) {
1103
-			$var->$property_name = wpinv_clean( $property_value );
1100
+    if (is_object($var)) {
1101
+		$object_vars = get_object_vars($var);
1102
+		foreach ($object_vars as $property_name => $property_value) {
1103
+			$var->$property_name = wpinv_clean($property_value);
1104 1104
         }
1105 1105
         return $var;
1106 1106
 	}
1107 1107
     
1108
-    return is_string( $var ) ? sanitize_text_field( $var ) : $var;
1108
+    return is_string($var) ? sanitize_text_field($var) : $var;
1109 1109
 }
1110 1110
\ No newline at end of file
Please login to merge, or discard this patch.
vendor/composer/autoload_static.php 1 patch
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -6,32 +6,32 @@
 block discarded – undo
6 6
 
7 7
 class ComposerStaticInit8b6d4385c391849a80038f0b0e87c8b5
8 8
 {
9
-    public static $files = array (
9
+    public static $files = array(
10 10
         '24583d3588ebda5228dd453cfaa070da' => __DIR__ . '/..' . '/ayecode/wp-font-awesome-settings/wp-font-awesome-settings.php',
11 11
     );
12 12
 
13
-    public static $prefixLengthsPsr4 = array (
13
+    public static $prefixLengthsPsr4 = array(
14 14
         'C' => 
15
-        array (
15
+        array(
16 16
             'Composer\\Installers\\' => 20,
17 17
         ),
18 18
     );
19 19
 
20
-    public static $prefixDirsPsr4 = array (
20
+    public static $prefixDirsPsr4 = array(
21 21
         'Composer\\Installers\\' => 
22
-        array (
22
+        array(
23 23
             0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers',
24 24
         ),
25 25
     );
26 26
 
27
-    public static $classMap = array (
27
+    public static $classMap = array(
28 28
         'AyeCode_Connect_Helper' => __DIR__ . '/..' . '/ayecode/ayecode-connect-helper/ayecode-connect-helper.php',
29 29
         'WP_Super_Duper' => __DIR__ . '/..' . '/ayecode/wp-super-duper/wp-super-duper.php',
30 30
     );
31 31
 
32 32
     public static function getInitializer(ClassLoader $loader)
33 33
     {
34
-        return \Closure::bind(function () use ($loader) {
34
+        return \Closure::bind(function() use ($loader) {
35 35
             $loader->prefixLengthsPsr4 = ComposerStaticInit8b6d4385c391849a80038f0b0e87c8b5::$prefixLengthsPsr4;
36 36
             $loader->prefixDirsPsr4 = ComposerStaticInit8b6d4385c391849a80038f0b0e87c8b5::$prefixDirsPsr4;
37 37
             $loader->classMap = ComposerStaticInit8b6d4385c391849a80038f0b0e87c8b5::$classMap;
Please login to merge, or discard this patch.
invoicing.php 1 patch
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -12,19 +12,19 @@
 block discarded – undo
12 12
 */
13 13
 
14 14
 // MUST have WordPress.
15
-if ( !defined( 'WPINC' ) ) {
16
-    exit( 'Do NOT access this file directly: ' . basename( __FILE__ ) );
15
+if (!defined('WPINC')) {
16
+    exit('Do NOT access this file directly: ' . basename(__FILE__));
17 17
 }
18 18
 
19
-if ( !defined( 'WPINV_VERSION' ) ) {
20
-    define( 'WPINV_VERSION', '1.0.15' );
19
+if (!defined('WPINV_VERSION')) {
20
+    define('WPINV_VERSION', '1.0.15');
21 21
 }
22 22
 
23
-if ( !defined( 'WPINV_PLUGIN_FILE' ) ) {
24
-    define( 'WPINV_PLUGIN_FILE', __FILE__ );
23
+if (!defined('WPINV_PLUGIN_FILE')) {
24
+    define('WPINV_PLUGIN_FILE', __FILE__);
25 25
 }
26 26
 
27
-require plugin_dir_path( __FILE__ ) . 'includes/class-wpinv.php';
27
+require plugin_dir_path(__FILE__) . 'includes/class-wpinv.php';
28 28
 
29 29
 function wpinv_run() {
30 30
     global $invoicing;
Please login to merge, or discard this patch.
vendor/ayecode/ayecode-connect-helper/ayecode-connect-helper.php 2 patches
Indentation   +310 added lines, -310 removed lines patch added patch discarded remove patch
@@ -1,271 +1,271 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if ( ! defined( 'ABSPATH' ) ) {
4
-	exit;
4
+    exit;
5 5
 }
6 6
 
7 7
 if ( ! class_exists( "AyeCode_Connect_Helper" ) ) {
8
-	/**
9
-	 * Allow the quick setup and connection of our AyeCode Connect plugin.
10
-	 *
11
-	 * Class AyeCode_Connect_Helper
12
-	 */
13
-	class AyeCode_Connect_Helper {
14
-
15
-		// Hold the version number
16
-		var $version = "1.0.3";
17
-
18
-		// Hold the default strings.
19
-		var $strings = array();
20
-
21
-		// Hold the default pages.
22
-		var $pages = array();
23
-
24
-		/**
25
-		 * The constructor.
26
-		 *
27
-		 * AyeCode_Connect_Helper constructor.
28
-		 *
29
-		 * @param array $strings
30
-		 * @param array $pages
31
-		 */
32
-		public function __construct( $strings = array(), $pages = array() ) {
33
-
34
-			// Only fire if not localhost and the current user has the right permissions.
35
-			if ( ! $this->is_localhost() && current_user_can( 'manage_options' ) ) {
36
-
37
-
38
-				// set default strings
39
-				$default_strings = array(
40
-					'connect_title'     => __( "Thanks for choosing an AyeCode Product!" ),
41
-					'connect_external'  => __( "Please confirm you wish to connect your site?" ),
42
-					'connect'           => sprintf( __( "<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s" ), "<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>", "</a>" ),
43
-					'connect_button'    => __( "Connect Site" ),
44
-					'connecting_button' => __( "Connecting..." ),
45
-					'error_localhost'   => __( "This service will only work with a live domain, not a localhost." ),
46
-					'error'             => __( "Something went wrong, please refresh and try again." ),
47
-				);
48
-				$this->strings   = array_merge( $default_strings, $strings );
49
-
50
-
51
-				// set default pages
52
-				$default_pages = array();
53
-				$this->pages   = array_merge( $default_pages, $pages );
54
-
55
-				// maybe show connect site notice
56
-				add_action( 'admin_notices', array( $this, 'ayecode_connect_install_notice' ) );
57
-
58
-				// add ajax action if not already added
59
-				if ( ! has_action( 'wp_ajax_ayecode_connect_helper' ) ) {
60
-					add_action( 'wp_ajax_ayecode_connect_helper', array( $this, 'ayecode_connect_install' ) );
61
-				}
62
-			}
63
-
64
-			// add ajax action if not already added
65
-			if ( ! has_action( 'wp_ajax_nopriv_ayecode_connect_helper_installed' ) ) {
66
-				add_action( 'wp_ajax_nopriv_ayecode_connect_helper_installed', array( $this, 'ayecode_connect_helper_installed' ) );
67
-			}
68
-
69
-		}
70
-
71
-		/**
72
-		 * Give a way to check we can connect via a external redirect.
73
-		 */
74
-		public function ayecode_connect_helper_installed(){
75
-			$active = array(
76
-				'gd'    =>  defined('GEODIRECTORY_VERSION') && version_compare(GEODIRECTORY_VERSION,'2.0.0.79','>') ? 1 : 0,
77
-				'uwp'    =>  defined('USERSWP_VERSION') && version_compare(USERSWP_VERSION,'1.2.1.5','>') ? 1 : 0,
78
-				'wpi'    =>  defined('WPINV_VERSION') && version_compare(WPINV_VERSION,'1.0.14','>') ? 1 : 0,
79
-			);
80
-			wp_send_json_success( $active );
81
-			wp_die();
82
-		}
83
-
84
-		/**
85
-		 * Get slug from path
86
-		 *
87
-		 * @param  string $key
88
-		 *
89
-		 * @return string
90
-		 */
91
-		private function format_plugin_slug( $key ) {
92
-			$slug = explode( '/', $key );
93
-			$slug = explode( '.', end( $slug ) );
94
-
95
-			return $slug[0];
96
-		}
97
-
98
-		/**
99
-		 * Install and activate the AyeCode Connect Plugin
100
-		 */
101
-		public function ayecode_connect_install() {
102
-
103
-			// bail if localhost
104
-			if ( $this->is_localhost() ) {
105
-				wp_send_json_error( $this->strings['error_localhost'] );
106
-			}
107
-
108
-			// Explicitly clear the event.
109
-			wp_clear_scheduled_hook( 'geodir_plugin_background_installer', func_get_args() );
110
-
111
-			$success     = true;
112
-			$plugin_slug = "ayecode-connect";
113
-			if ( ! empty( $plugin_slug ) ) {
114
-				require_once( ABSPATH . 'wp-admin/includes/file.php' );
115
-				require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
116
-				require_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
117
-				require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
118
-
119
-				WP_Filesystem();
120
-
121
-				$skin              = new Automatic_Upgrader_Skin;
122
-				$upgrader          = new WP_Upgrader( $skin );
123
-				$installed_plugins = array_map( array( $this, 'format_plugin_slug' ), array_keys( get_plugins() ) );
124
-				$plugin_slug       = $plugin_slug;
125
-				$plugin            = $plugin_slug . '/' . $plugin_slug . '.php';
126
-				$installed         = false;
127
-				$activate          = false;
128
-
129
-				// See if the plugin is installed already
130
-				if ( in_array( $plugin_slug, $installed_plugins ) ) {
131
-					$installed = true;
132
-					$activate  = ! is_plugin_active( $plugin );
133
-				}
134
-
135
-				// Install this thing!
136
-				if ( ! $installed ) {
137
-
138
-					// Suppress feedback
139
-					ob_start();
140
-
141
-					try {
142
-						$plugin_information = plugins_api( 'plugin_information', array(
143
-							'slug'   => $plugin_slug,
144
-							'fields' => array(
145
-								'short_description' => false,
146
-								'sections'          => false,
147
-								'requires'          => false,
148
-								'rating'            => false,
149
-								'ratings'           => false,
150
-								'downloaded'        => false,
151
-								'last_updated'      => false,
152
-								'added'             => false,
153
-								'tags'              => false,
154
-								'homepage'          => false,
155
-								'donate_link'       => false,
156
-								'author_profile'    => false,
157
-								'author'            => false,
158
-							),
159
-						) );
160
-
161
-						if ( is_wp_error( $plugin_information ) ) {
162
-							throw new Exception( $plugin_information->get_error_message() );
163
-						}
164
-
165
-						$package  = $plugin_information->download_link;
166
-						$download = $upgrader->download_package( $package );
167
-
168
-						if ( is_wp_error( $download ) ) {
169
-							throw new Exception( $download->get_error_message() );
170
-						}
171
-
172
-						$working_dir = $upgrader->unpack_package( $download, true );
173
-
174
-						if ( is_wp_error( $working_dir ) ) {
175
-							throw new Exception( $working_dir->get_error_message() );
176
-						}
177
-
178
-						$result = $upgrader->install_package( array(
179
-							'source'                      => $working_dir,
180
-							'destination'                 => WP_PLUGIN_DIR,
181
-							'clear_destination'           => false,
182
-							'abort_if_destination_exists' => false,
183
-							'clear_working'               => true,
184
-							'hook_extra'                  => array(
185
-								'type'   => 'plugin',
186
-								'action' => 'install',
187
-							),
188
-						) );
189
-
190
-						if ( is_wp_error( $result ) ) {
191
-							throw new Exception( $result->get_error_message() );
192
-						}
193
-
194
-						$activate = true;
195
-
196
-					} catch ( Exception $e ) {
197
-						$success = false;
198
-					}
199
-
200
-					// Discard feedback
201
-					ob_end_clean();
202
-				}
203
-
204
-				wp_clean_plugins_cache();
205
-
206
-				// Activate this thing
207
-				if ( $activate ) {
208
-					try {
209
-						$result = activate_plugin( $plugin );
210
-
211
-						if ( is_wp_error( $result ) ) {
212
-							$success = false;
213
-						} else {
214
-							$success = true;
215
-						}
216
-					} catch ( Exception $e ) {
217
-						$success = false;
218
-					}
219
-				}
220
-			}
221
-
222
-			if ( $success && function_exists( 'ayecode_connect_args' ) ) {
223
-				ayecode_connect();// init
224
-				$args        = ayecode_connect_args();
225
-				$client      = new AyeCode_Connect( $args );
226
-				$redirect_to = ! empty( $_POST['redirect_to'] ) ? esc_url_raw( $_POST['redirect_to'] ) : '';
227
-				$redirect    = $client->build_connect_url( $redirect_to );
228
-				wp_send_json_success( array( 'connect_url' => $redirect ) );
229
-			} else {
230
-				wp_send_json_error( $this->strings['error_localhost'] );
231
-			}
232
-			wp_die();
233
-		}
234
-
235
-		/**
236
-		 * Check if maybe localhost.
237
-		 *
238
-		 * @return bool
239
-		 */
240
-		public function is_localhost() {
241
-			$localhost = false;
242
-
243
-			$host              = isset( $_SERVER['HTTP_HOST'] ) ? $_SERVER['HTTP_HOST'] : '';
244
-			$localhost_domains = array(
245
-				'localhost',
246
-				'localhost.localdomain',
247
-				'127.0.0.1',
248
-				'::1'
249
-			);
250
-
251
-			if ( in_array( $host, $localhost_domains ) ) {
252
-				$localhost = true;
253
-			}
254
-
255
-			return $localhost;
256
-		}
257
-
258
-		/**
259
-		 * Show notice to connect site.
260
-		 */
261
-		public function ayecode_connect_install_notice() {
262
-			if ( $this->maybe_show() ) {
263
-				$connect_title_string     = $this->strings['connect_title'];
264
-				$connect_external_string  = $this->strings['connect_external'];
265
-				$connect_string           = $this->strings['connect'];
266
-				$connect_button_string    = $this->strings['connect_button'];
267
-				$connecting_button_string = $this->strings['connecting_button'];
268
-				?>
8
+    /**
9
+     * Allow the quick setup and connection of our AyeCode Connect plugin.
10
+     *
11
+     * Class AyeCode_Connect_Helper
12
+     */
13
+    class AyeCode_Connect_Helper {
14
+
15
+        // Hold the version number
16
+        var $version = "1.0.3";
17
+
18
+        // Hold the default strings.
19
+        var $strings = array();
20
+
21
+        // Hold the default pages.
22
+        var $pages = array();
23
+
24
+        /**
25
+         * The constructor.
26
+         *
27
+         * AyeCode_Connect_Helper constructor.
28
+         *
29
+         * @param array $strings
30
+         * @param array $pages
31
+         */
32
+        public function __construct( $strings = array(), $pages = array() ) {
33
+
34
+            // Only fire if not localhost and the current user has the right permissions.
35
+            if ( ! $this->is_localhost() && current_user_can( 'manage_options' ) ) {
36
+
37
+
38
+                // set default strings
39
+                $default_strings = array(
40
+                    'connect_title'     => __( "Thanks for choosing an AyeCode Product!" ),
41
+                    'connect_external'  => __( "Please confirm you wish to connect your site?" ),
42
+                    'connect'           => sprintf( __( "<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s" ), "<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>", "</a>" ),
43
+                    'connect_button'    => __( "Connect Site" ),
44
+                    'connecting_button' => __( "Connecting..." ),
45
+                    'error_localhost'   => __( "This service will only work with a live domain, not a localhost." ),
46
+                    'error'             => __( "Something went wrong, please refresh and try again." ),
47
+                );
48
+                $this->strings   = array_merge( $default_strings, $strings );
49
+
50
+
51
+                // set default pages
52
+                $default_pages = array();
53
+                $this->pages   = array_merge( $default_pages, $pages );
54
+
55
+                // maybe show connect site notice
56
+                add_action( 'admin_notices', array( $this, 'ayecode_connect_install_notice' ) );
57
+
58
+                // add ajax action if not already added
59
+                if ( ! has_action( 'wp_ajax_ayecode_connect_helper' ) ) {
60
+                    add_action( 'wp_ajax_ayecode_connect_helper', array( $this, 'ayecode_connect_install' ) );
61
+                }
62
+            }
63
+
64
+            // add ajax action if not already added
65
+            if ( ! has_action( 'wp_ajax_nopriv_ayecode_connect_helper_installed' ) ) {
66
+                add_action( 'wp_ajax_nopriv_ayecode_connect_helper_installed', array( $this, 'ayecode_connect_helper_installed' ) );
67
+            }
68
+
69
+        }
70
+
71
+        /**
72
+         * Give a way to check we can connect via a external redirect.
73
+         */
74
+        public function ayecode_connect_helper_installed(){
75
+            $active = array(
76
+                'gd'    =>  defined('GEODIRECTORY_VERSION') && version_compare(GEODIRECTORY_VERSION,'2.0.0.79','>') ? 1 : 0,
77
+                'uwp'    =>  defined('USERSWP_VERSION') && version_compare(USERSWP_VERSION,'1.2.1.5','>') ? 1 : 0,
78
+                'wpi'    =>  defined('WPINV_VERSION') && version_compare(WPINV_VERSION,'1.0.14','>') ? 1 : 0,
79
+            );
80
+            wp_send_json_success( $active );
81
+            wp_die();
82
+        }
83
+
84
+        /**
85
+         * Get slug from path
86
+         *
87
+         * @param  string $key
88
+         *
89
+         * @return string
90
+         */
91
+        private function format_plugin_slug( $key ) {
92
+            $slug = explode( '/', $key );
93
+            $slug = explode( '.', end( $slug ) );
94
+
95
+            return $slug[0];
96
+        }
97
+
98
+        /**
99
+         * Install and activate the AyeCode Connect Plugin
100
+         */
101
+        public function ayecode_connect_install() {
102
+
103
+            // bail if localhost
104
+            if ( $this->is_localhost() ) {
105
+                wp_send_json_error( $this->strings['error_localhost'] );
106
+            }
107
+
108
+            // Explicitly clear the event.
109
+            wp_clear_scheduled_hook( 'geodir_plugin_background_installer', func_get_args() );
110
+
111
+            $success     = true;
112
+            $plugin_slug = "ayecode-connect";
113
+            if ( ! empty( $plugin_slug ) ) {
114
+                require_once( ABSPATH . 'wp-admin/includes/file.php' );
115
+                require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
116
+                require_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
117
+                require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
118
+
119
+                WP_Filesystem();
120
+
121
+                $skin              = new Automatic_Upgrader_Skin;
122
+                $upgrader          = new WP_Upgrader( $skin );
123
+                $installed_plugins = array_map( array( $this, 'format_plugin_slug' ), array_keys( get_plugins() ) );
124
+                $plugin_slug       = $plugin_slug;
125
+                $plugin            = $plugin_slug . '/' . $plugin_slug . '.php';
126
+                $installed         = false;
127
+                $activate          = false;
128
+
129
+                // See if the plugin is installed already
130
+                if ( in_array( $plugin_slug, $installed_plugins ) ) {
131
+                    $installed = true;
132
+                    $activate  = ! is_plugin_active( $plugin );
133
+                }
134
+
135
+                // Install this thing!
136
+                if ( ! $installed ) {
137
+
138
+                    // Suppress feedback
139
+                    ob_start();
140
+
141
+                    try {
142
+                        $plugin_information = plugins_api( 'plugin_information', array(
143
+                            'slug'   => $plugin_slug,
144
+                            'fields' => array(
145
+                                'short_description' => false,
146
+                                'sections'          => false,
147
+                                'requires'          => false,
148
+                                'rating'            => false,
149
+                                'ratings'           => false,
150
+                                'downloaded'        => false,
151
+                                'last_updated'      => false,
152
+                                'added'             => false,
153
+                                'tags'              => false,
154
+                                'homepage'          => false,
155
+                                'donate_link'       => false,
156
+                                'author_profile'    => false,
157
+                                'author'            => false,
158
+                            ),
159
+                        ) );
160
+
161
+                        if ( is_wp_error( $plugin_information ) ) {
162
+                            throw new Exception( $plugin_information->get_error_message() );
163
+                        }
164
+
165
+                        $package  = $plugin_information->download_link;
166
+                        $download = $upgrader->download_package( $package );
167
+
168
+                        if ( is_wp_error( $download ) ) {
169
+                            throw new Exception( $download->get_error_message() );
170
+                        }
171
+
172
+                        $working_dir = $upgrader->unpack_package( $download, true );
173
+
174
+                        if ( is_wp_error( $working_dir ) ) {
175
+                            throw new Exception( $working_dir->get_error_message() );
176
+                        }
177
+
178
+                        $result = $upgrader->install_package( array(
179
+                            'source'                      => $working_dir,
180
+                            'destination'                 => WP_PLUGIN_DIR,
181
+                            'clear_destination'           => false,
182
+                            'abort_if_destination_exists' => false,
183
+                            'clear_working'               => true,
184
+                            'hook_extra'                  => array(
185
+                                'type'   => 'plugin',
186
+                                'action' => 'install',
187
+                            ),
188
+                        ) );
189
+
190
+                        if ( is_wp_error( $result ) ) {
191
+                            throw new Exception( $result->get_error_message() );
192
+                        }
193
+
194
+                        $activate = true;
195
+
196
+                    } catch ( Exception $e ) {
197
+                        $success = false;
198
+                    }
199
+
200
+                    // Discard feedback
201
+                    ob_end_clean();
202
+                }
203
+
204
+                wp_clean_plugins_cache();
205
+
206
+                // Activate this thing
207
+                if ( $activate ) {
208
+                    try {
209
+                        $result = activate_plugin( $plugin );
210
+
211
+                        if ( is_wp_error( $result ) ) {
212
+                            $success = false;
213
+                        } else {
214
+                            $success = true;
215
+                        }
216
+                    } catch ( Exception $e ) {
217
+                        $success = false;
218
+                    }
219
+                }
220
+            }
221
+
222
+            if ( $success && function_exists( 'ayecode_connect_args' ) ) {
223
+                ayecode_connect();// init
224
+                $args        = ayecode_connect_args();
225
+                $client      = new AyeCode_Connect( $args );
226
+                $redirect_to = ! empty( $_POST['redirect_to'] ) ? esc_url_raw( $_POST['redirect_to'] ) : '';
227
+                $redirect    = $client->build_connect_url( $redirect_to );
228
+                wp_send_json_success( array( 'connect_url' => $redirect ) );
229
+            } else {
230
+                wp_send_json_error( $this->strings['error_localhost'] );
231
+            }
232
+            wp_die();
233
+        }
234
+
235
+        /**
236
+         * Check if maybe localhost.
237
+         *
238
+         * @return bool
239
+         */
240
+        public function is_localhost() {
241
+            $localhost = false;
242
+
243
+            $host              = isset( $_SERVER['HTTP_HOST'] ) ? $_SERVER['HTTP_HOST'] : '';
244
+            $localhost_domains = array(
245
+                'localhost',
246
+                'localhost.localdomain',
247
+                '127.0.0.1',
248
+                '::1'
249
+            );
250
+
251
+            if ( in_array( $host, $localhost_domains ) ) {
252
+                $localhost = true;
253
+            }
254
+
255
+            return $localhost;
256
+        }
257
+
258
+        /**
259
+         * Show notice to connect site.
260
+         */
261
+        public function ayecode_connect_install_notice() {
262
+            if ( $this->maybe_show() ) {
263
+                $connect_title_string     = $this->strings['connect_title'];
264
+                $connect_external_string  = $this->strings['connect_external'];
265
+                $connect_string           = $this->strings['connect'];
266
+                $connect_button_string    = $this->strings['connect_button'];
267
+                $connecting_button_string = $this->strings['connecting_button'];
268
+                ?>
269 269
 				<div class="notice notice-info acch-notice">
270 270
 					<span class="acch-float-left">
271 271
 						<svg width="61px" height="61px" viewBox="0 0 61 61" version="1.1"
@@ -304,8 +304,8 @@  discard block
 block discarded – undo
304 304
 						<h3 class="acch-title"><?php echo esc_attr( $connect_title_string ); ?></h3>
305 305
 					<p>
306 306
 						<?php
307
-						echo $connect_string;
308
-						?>
307
+                        echo $connect_string;
308
+                        ?>
309 309
 					</p>
310 310
 					</span>
311 311
 
@@ -318,9 +318,9 @@  discard block
 block discarded – undo
318 318
 				</div>
319 319
 
320 320
 				<?php
321
-				// only include the popup HTML if needed.
322
-				if ( ! empty( $_REQUEST['external-connect-request'] ) ) {
323
-					?>
321
+                // only include the popup HTML if needed.
322
+                if ( ! empty( $_REQUEST['external-connect-request'] ) ) {
323
+                    ?>
324 324
 					<div id="ayecode-connect-helper-external-confirm" style="display:none;">
325 325
 						<div class="noticex notice-info acch-notice" style="border: none;">
326 326
 					<span class="acch-float-left">
@@ -369,23 +369,23 @@  discard block
 block discarded – undo
369 369
 						</div>
370 370
 					</div>
371 371
 					<?php
372
-				}
373
-
374
-				// add required scripts
375
-				$this->script();
376
-			}
377
-		}
378
-
379
-		/**
380
-		 * Get the JS Script.
381
-		 */
382
-		public function script() {
383
-
384
-			// add thickbox if external request is requested
385
-			if ( ! empty( $_REQUEST['external-connect-request'] ) ) {
386
-				add_thickbox();
387
-			}
388
-			?>
372
+                }
373
+
374
+                // add required scripts
375
+                $this->script();
376
+            }
377
+        }
378
+
379
+        /**
380
+         * Get the JS Script.
381
+         */
382
+        public function script() {
383
+
384
+            // add thickbox if external request is requested
385
+            if ( ! empty( $_REQUEST['external-connect-request'] ) ) {
386
+                add_thickbox();
387
+            }
388
+            ?>
389 389
 			<style>
390 390
 				.acch-title {
391 391
 					margin: 0;
@@ -454,43 +454,43 @@  discard block
 block discarded – undo
454 454
 
455 455
 
456 456
 				<?php
457
-				// add thickbox if external request is requested
458
-				if(! empty( $_REQUEST['external-connect-request'] )) {
459
-				?>
457
+                // add thickbox if external request is requested
458
+                if(! empty( $_REQUEST['external-connect-request'] )) {
459
+                ?>
460 460
 				jQuery(function () {
461 461
 					setTimeout(function () {
462 462
 						tb_show("AyeCode Connect", "?TB_inline?width=300&height=80&inlineId=ayecode-connect-helper-external-confirm");
463 463
 					}, 200);
464 464
 				});
465 465
 				<?php
466
-				}
467
-				?>
466
+                }
467
+                ?>
468 468
 
469 469
 			</script>
470 470
 			<?php
471
-		}
472
-
473
-		/**
474
-		 * Decide what pages to show on.
475
-		 *
476
-		 * @return bool
477
-		 */
478
-		public function maybe_show() {
479
-			$show = false;
480
-
481
-			// check if on a page set to show
482
-			if ( isset( $_REQUEST['page'] ) && in_array( $_REQUEST['page'], $this->pages ) ) {
483
-
484
-				// check if not active and connected
485
-				if ( ! defined( 'AYECODE_CONNECT_VERSION' ) || ! get_option( 'ayecode_connect_blog_token' ) ) {
486
-					$show = true;
487
-				}
471
+        }
472
+
473
+        /**
474
+         * Decide what pages to show on.
475
+         *
476
+         * @return bool
477
+         */
478
+        public function maybe_show() {
479
+            $show = false;
480
+
481
+            // check if on a page set to show
482
+            if ( isset( $_REQUEST['page'] ) && in_array( $_REQUEST['page'], $this->pages ) ) {
483
+
484
+                // check if not active and connected
485
+                if ( ! defined( 'AYECODE_CONNECT_VERSION' ) || ! get_option( 'ayecode_connect_blog_token' ) ) {
486
+                    $show = true;
487
+                }
488 488
 
489
-			}
489
+            }
490 490
 
491
-			return $show;
492
-		}
491
+            return $show;
492
+        }
493 493
 
494
-	}
494
+    }
495 495
 
496 496
 }
Please login to merge, or discard this patch.
Spacing   +78 added lines, -78 removed lines patch added patch discarded remove patch
@@ -1,10 +1,10 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if ( ! defined( 'ABSPATH' ) ) {
3
+if (!defined('ABSPATH')) {
4 4
 	exit;
5 5
 }
6 6
 
7
-if ( ! class_exists( "AyeCode_Connect_Helper" ) ) {
7
+if (!class_exists("AyeCode_Connect_Helper")) {
8 8
 	/**
9 9
 	 * Allow the quick setup and connection of our AyeCode Connect plugin.
10 10
 	 *
@@ -29,41 +29,41 @@  discard block
 block discarded – undo
29 29
 		 * @param array $strings
30 30
 		 * @param array $pages
31 31
 		 */
32
-		public function __construct( $strings = array(), $pages = array() ) {
32
+		public function __construct($strings = array(), $pages = array()) {
33 33
 
34 34
 			// Only fire if not localhost and the current user has the right permissions.
35
-			if ( ! $this->is_localhost() && current_user_can( 'manage_options' ) ) {
35
+			if (!$this->is_localhost() && current_user_can('manage_options')) {
36 36
 
37 37
 
38 38
 				// set default strings
39 39
 				$default_strings = array(
40
-					'connect_title'     => __( "Thanks for choosing an AyeCode Product!" ),
41
-					'connect_external'  => __( "Please confirm you wish to connect your site?" ),
42
-					'connect'           => sprintf( __( "<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s" ), "<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>", "</a>" ),
43
-					'connect_button'    => __( "Connect Site" ),
44
-					'connecting_button' => __( "Connecting..." ),
45
-					'error_localhost'   => __( "This service will only work with a live domain, not a localhost." ),
46
-					'error'             => __( "Something went wrong, please refresh and try again." ),
40
+					'connect_title'     => __("Thanks for choosing an AyeCode Product!"),
41
+					'connect_external'  => __("Please confirm you wish to connect your site?"),
42
+					'connect'           => sprintf(__("<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s"), "<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>", "</a>"),
43
+					'connect_button'    => __("Connect Site"),
44
+					'connecting_button' => __("Connecting..."),
45
+					'error_localhost'   => __("This service will only work with a live domain, not a localhost."),
46
+					'error'             => __("Something went wrong, please refresh and try again."),
47 47
 				);
48
-				$this->strings   = array_merge( $default_strings, $strings );
48
+				$this->strings = array_merge($default_strings, $strings);
49 49
 
50 50
 
51 51
 				// set default pages
52 52
 				$default_pages = array();
53
-				$this->pages   = array_merge( $default_pages, $pages );
53
+				$this->pages   = array_merge($default_pages, $pages);
54 54
 
55 55
 				// maybe show connect site notice
56
-				add_action( 'admin_notices', array( $this, 'ayecode_connect_install_notice' ) );
56
+				add_action('admin_notices', array($this, 'ayecode_connect_install_notice'));
57 57
 
58 58
 				// add ajax action if not already added
59
-				if ( ! has_action( 'wp_ajax_ayecode_connect_helper' ) ) {
60
-					add_action( 'wp_ajax_ayecode_connect_helper', array( $this, 'ayecode_connect_install' ) );
59
+				if (!has_action('wp_ajax_ayecode_connect_helper')) {
60
+					add_action('wp_ajax_ayecode_connect_helper', array($this, 'ayecode_connect_install'));
61 61
 				}
62 62
 			}
63 63
 
64 64
 			// add ajax action if not already added
65
-			if ( ! has_action( 'wp_ajax_nopriv_ayecode_connect_helper_installed' ) ) {
66
-				add_action( 'wp_ajax_nopriv_ayecode_connect_helper_installed', array( $this, 'ayecode_connect_helper_installed' ) );
65
+			if (!has_action('wp_ajax_nopriv_ayecode_connect_helper_installed')) {
66
+				add_action('wp_ajax_nopriv_ayecode_connect_helper_installed', array($this, 'ayecode_connect_helper_installed'));
67 67
 			}
68 68
 
69 69
 		}
@@ -71,13 +71,13 @@  discard block
 block discarded – undo
71 71
 		/**
72 72
 		 * Give a way to check we can connect via a external redirect.
73 73
 		 */
74
-		public function ayecode_connect_helper_installed(){
74
+		public function ayecode_connect_helper_installed() {
75 75
 			$active = array(
76
-				'gd'    =>  defined('GEODIRECTORY_VERSION') && version_compare(GEODIRECTORY_VERSION,'2.0.0.79','>') ? 1 : 0,
77
-				'uwp'    =>  defined('USERSWP_VERSION') && version_compare(USERSWP_VERSION,'1.2.1.5','>') ? 1 : 0,
78
-				'wpi'    =>  defined('WPINV_VERSION') && version_compare(WPINV_VERSION,'1.0.14','>') ? 1 : 0,
76
+				'gd'    =>  defined('GEODIRECTORY_VERSION') && version_compare(GEODIRECTORY_VERSION, '2.0.0.79', '>') ? 1 : 0,
77
+				'uwp'    =>  defined('USERSWP_VERSION') && version_compare(USERSWP_VERSION, '1.2.1.5', '>') ? 1 : 0,
78
+				'wpi'    =>  defined('WPINV_VERSION') && version_compare(WPINV_VERSION, '1.0.14', '>') ? 1 : 0,
79 79
 			);
80
-			wp_send_json_success( $active );
80
+			wp_send_json_success($active);
81 81
 			wp_die();
82 82
 		}
83 83
 
@@ -88,9 +88,9 @@  discard block
 block discarded – undo
88 88
 		 *
89 89
 		 * @return string
90 90
 		 */
91
-		private function format_plugin_slug( $key ) {
92
-			$slug = explode( '/', $key );
93
-			$slug = explode( '.', end( $slug ) );
91
+		private function format_plugin_slug($key) {
92
+			$slug = explode('/', $key);
93
+			$slug = explode('.', end($slug));
94 94
 
95 95
 			return $slug[0];
96 96
 		}
@@ -101,45 +101,45 @@  discard block
 block discarded – undo
101 101
 		public function ayecode_connect_install() {
102 102
 
103 103
 			// bail if localhost
104
-			if ( $this->is_localhost() ) {
105
-				wp_send_json_error( $this->strings['error_localhost'] );
104
+			if ($this->is_localhost()) {
105
+				wp_send_json_error($this->strings['error_localhost']);
106 106
 			}
107 107
 
108 108
 			// Explicitly clear the event.
109
-			wp_clear_scheduled_hook( 'geodir_plugin_background_installer', func_get_args() );
109
+			wp_clear_scheduled_hook('geodir_plugin_background_installer', func_get_args());
110 110
 
111 111
 			$success     = true;
112 112
 			$plugin_slug = "ayecode-connect";
113
-			if ( ! empty( $plugin_slug ) ) {
114
-				require_once( ABSPATH . 'wp-admin/includes/file.php' );
115
-				require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
116
-				require_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
117
-				require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
113
+			if (!empty($plugin_slug)) {
114
+				require_once(ABSPATH . 'wp-admin/includes/file.php');
115
+				require_once(ABSPATH . 'wp-admin/includes/plugin-install.php');
116
+				require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
117
+				require_once(ABSPATH . 'wp-admin/includes/plugin.php');
118 118
 
119 119
 				WP_Filesystem();
120 120
 
121 121
 				$skin              = new Automatic_Upgrader_Skin;
122
-				$upgrader          = new WP_Upgrader( $skin );
123
-				$installed_plugins = array_map( array( $this, 'format_plugin_slug' ), array_keys( get_plugins() ) );
122
+				$upgrader          = new WP_Upgrader($skin);
123
+				$installed_plugins = array_map(array($this, 'format_plugin_slug'), array_keys(get_plugins()));
124 124
 				$plugin_slug       = $plugin_slug;
125 125
 				$plugin            = $plugin_slug . '/' . $plugin_slug . '.php';
126 126
 				$installed         = false;
127 127
 				$activate          = false;
128 128
 
129 129
 				// See if the plugin is installed already
130
-				if ( in_array( $plugin_slug, $installed_plugins ) ) {
130
+				if (in_array($plugin_slug, $installed_plugins)) {
131 131
 					$installed = true;
132
-					$activate  = ! is_plugin_active( $plugin );
132
+					$activate  = !is_plugin_active($plugin);
133 133
 				}
134 134
 
135 135
 				// Install this thing!
136
-				if ( ! $installed ) {
136
+				if (!$installed) {
137 137
 
138 138
 					// Suppress feedback
139 139
 					ob_start();
140 140
 
141 141
 					try {
142
-						$plugin_information = plugins_api( 'plugin_information', array(
142
+						$plugin_information = plugins_api('plugin_information', array(
143 143
 							'slug'   => $plugin_slug,
144 144
 							'fields' => array(
145 145
 								'short_description' => false,
@@ -156,26 +156,26 @@  discard block
 block discarded – undo
156 156
 								'author_profile'    => false,
157 157
 								'author'            => false,
158 158
 							),
159
-						) );
159
+						));
160 160
 
161
-						if ( is_wp_error( $plugin_information ) ) {
162
-							throw new Exception( $plugin_information->get_error_message() );
161
+						if (is_wp_error($plugin_information)) {
162
+							throw new Exception($plugin_information->get_error_message());
163 163
 						}
164 164
 
165 165
 						$package  = $plugin_information->download_link;
166
-						$download = $upgrader->download_package( $package );
166
+						$download = $upgrader->download_package($package);
167 167
 
168
-						if ( is_wp_error( $download ) ) {
169
-							throw new Exception( $download->get_error_message() );
168
+						if (is_wp_error($download)) {
169
+							throw new Exception($download->get_error_message());
170 170
 						}
171 171
 
172
-						$working_dir = $upgrader->unpack_package( $download, true );
172
+						$working_dir = $upgrader->unpack_package($download, true);
173 173
 
174
-						if ( is_wp_error( $working_dir ) ) {
175
-							throw new Exception( $working_dir->get_error_message() );
174
+						if (is_wp_error($working_dir)) {
175
+							throw new Exception($working_dir->get_error_message());
176 176
 						}
177 177
 
178
-						$result = $upgrader->install_package( array(
178
+						$result = $upgrader->install_package(array(
179 179
 							'source'                      => $working_dir,
180 180
 							'destination'                 => WP_PLUGIN_DIR,
181 181
 							'clear_destination'           => false,
@@ -185,15 +185,15 @@  discard block
 block discarded – undo
185 185
 								'type'   => 'plugin',
186 186
 								'action' => 'install',
187 187
 							),
188
-						) );
188
+						));
189 189
 
190
-						if ( is_wp_error( $result ) ) {
191
-							throw new Exception( $result->get_error_message() );
190
+						if (is_wp_error($result)) {
191
+							throw new Exception($result->get_error_message());
192 192
 						}
193 193
 
194 194
 						$activate = true;
195 195
 
196
-					} catch ( Exception $e ) {
196
+					} catch (Exception $e) {
197 197
 						$success = false;
198 198
 					}
199 199
 
@@ -204,30 +204,30 @@  discard block
 block discarded – undo
204 204
 				wp_clean_plugins_cache();
205 205
 
206 206
 				// Activate this thing
207
-				if ( $activate ) {
207
+				if ($activate) {
208 208
 					try {
209
-						$result = activate_plugin( $plugin );
209
+						$result = activate_plugin($plugin);
210 210
 
211
-						if ( is_wp_error( $result ) ) {
211
+						if (is_wp_error($result)) {
212 212
 							$success = false;
213 213
 						} else {
214 214
 							$success = true;
215 215
 						}
216
-					} catch ( Exception $e ) {
216
+					} catch (Exception $e) {
217 217
 						$success = false;
218 218
 					}
219 219
 				}
220 220
 			}
221 221
 
222
-			if ( $success && function_exists( 'ayecode_connect_args' ) ) {
223
-				ayecode_connect();// init
222
+			if ($success && function_exists('ayecode_connect_args')) {
223
+				ayecode_connect(); // init
224 224
 				$args        = ayecode_connect_args();
225
-				$client      = new AyeCode_Connect( $args );
226
-				$redirect_to = ! empty( $_POST['redirect_to'] ) ? esc_url_raw( $_POST['redirect_to'] ) : '';
227
-				$redirect    = $client->build_connect_url( $redirect_to );
228
-				wp_send_json_success( array( 'connect_url' => $redirect ) );
225
+				$client      = new AyeCode_Connect($args);
226
+				$redirect_to = !empty($_POST['redirect_to']) ? esc_url_raw($_POST['redirect_to']) : '';
227
+				$redirect    = $client->build_connect_url($redirect_to);
228
+				wp_send_json_success(array('connect_url' => $redirect));
229 229
 			} else {
230
-				wp_send_json_error( $this->strings['error_localhost'] );
230
+				wp_send_json_error($this->strings['error_localhost']);
231 231
 			}
232 232
 			wp_die();
233 233
 		}
@@ -240,7 +240,7 @@  discard block
 block discarded – undo
240 240
 		public function is_localhost() {
241 241
 			$localhost = false;
242 242
 
243
-			$host              = isset( $_SERVER['HTTP_HOST'] ) ? $_SERVER['HTTP_HOST'] : '';
243
+			$host              = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '';
244 244
 			$localhost_domains = array(
245 245
 				'localhost',
246 246
 				'localhost.localdomain',
@@ -248,7 +248,7 @@  discard block
 block discarded – undo
248 248
 				'::1'
249 249
 			);
250 250
 
251
-			if ( in_array( $host, $localhost_domains ) ) {
251
+			if (in_array($host, $localhost_domains)) {
252 252
 				$localhost = true;
253 253
 			}
254 254
 
@@ -259,7 +259,7 @@  discard block
 block discarded – undo
259 259
 		 * Show notice to connect site.
260 260
 		 */
261 261
 		public function ayecode_connect_install_notice() {
262
-			if ( $this->maybe_show() ) {
262
+			if ($this->maybe_show()) {
263 263
 				$connect_title_string     = $this->strings['connect_title'];
264 264
 				$connect_external_string  = $this->strings['connect_external'];
265 265
 				$connect_string           = $this->strings['connect'];
@@ -301,7 +301,7 @@  discard block
 block discarded – undo
301 301
 					</svg>
302 302
 					</span>
303 303
 					<span class="acch-float-left acch-text">
304
-						<h3 class="acch-title"><?php echo esc_attr( $connect_title_string ); ?></h3>
304
+						<h3 class="acch-title"><?php echo esc_attr($connect_title_string); ?></h3>
305 305
 					<p>
306 306
 						<?php
307 307
 						echo $connect_string;
@@ -312,14 +312,14 @@  discard block
 block discarded – undo
312 312
 					<span class="acch-float-left acch-button">
313 313
 						<button onclick="ayecode_connect_helper(this);" id="gd-connect-site"
314 314
 						        class="button button-primary"
315
-						        data-connecting="<?php echo esc_attr( $connecting_button_string ); ?>"><?php echo esc_attr( $connect_button_string ) ?></button>
315
+						        data-connecting="<?php echo esc_attr($connecting_button_string); ?>"><?php echo esc_attr($connect_button_string) ?></button>
316 316
 					</span>
317 317
 
318 318
 				</div>
319 319
 
320 320
 				<?php
321 321
 				// only include the popup HTML if needed.
322
-				if ( ! empty( $_REQUEST['external-connect-request'] ) ) {
322
+				if (!empty($_REQUEST['external-connect-request'])) {
323 323
 					?>
324 324
 					<div id="ayecode-connect-helper-external-confirm" style="display:none;">
325 325
 						<div class="noticex notice-info acch-notice" style="border: none;">
@@ -357,13 +357,13 @@  discard block
 block discarded – undo
357 357
 					</svg>
358 358
 					</span>
359 359
 					<span class="acch-float-left acch-text">
360
-						<h3 class="acch-title"><?php echo esc_attr( $connect_external_string ); ?></h3>
360
+						<h3 class="acch-title"><?php echo esc_attr($connect_external_string); ?></h3>
361 361
 					</span>
362 362
 
363 363
 					<span class="acch-float-left acch-button">
364 364
 						<button onclick="ayecode_connect_helper(this);" id="gd-connect-site"
365 365
 						        class="button button-primary"
366
-						        data-connecting="<?php echo esc_attr( $connecting_button_string ); ?>"><?php echo esc_attr( $connect_button_string ) ?></button>
366
+						        data-connecting="<?php echo esc_attr($connecting_button_string); ?>"><?php echo esc_attr($connect_button_string) ?></button>
367 367
 					</span>
368 368
 
369 369
 						</div>
@@ -382,7 +382,7 @@  discard block
 block discarded – undo
382 382
 		public function script() {
383 383
 
384 384
 			// add thickbox if external request is requested
385
-			if ( ! empty( $_REQUEST['external-connect-request'] ) ) {
385
+			if (!empty($_REQUEST['external-connect-request'])) {
386 386
 				add_thickbox();
387 387
 			}
388 388
 			?>
@@ -434,7 +434,7 @@  discard block
 block discarded – undo
434 434
 						url: ajaxurl,
435 435
 						data: {
436 436
 							action: 'ayecode_connect_helper',
437
-							security: '<?php echo wp_create_nonce( 'ayecode-connect-helper' );?>',
437
+							security: '<?php echo wp_create_nonce('ayecode-connect-helper'); ?>',
438 438
 							redirect_to: $current_url
439 439
 						},
440 440
 						beforeSend: function () {
@@ -455,7 +455,7 @@  discard block
 block discarded – undo
455 455
 
456 456
 				<?php
457 457
 				// add thickbox if external request is requested
458
-				if(! empty( $_REQUEST['external-connect-request'] )) {
458
+				if (!empty($_REQUEST['external-connect-request'])) {
459 459
 				?>
460 460
 				jQuery(function () {
461 461
 					setTimeout(function () {
@@ -479,10 +479,10 @@  discard block
 block discarded – undo
479 479
 			$show = false;
480 480
 
481 481
 			// check if on a page set to show
482
-			if ( isset( $_REQUEST['page'] ) && in_array( $_REQUEST['page'], $this->pages ) ) {
482
+			if (isset($_REQUEST['page']) && in_array($_REQUEST['page'], $this->pages)) {
483 483
 
484 484
 				// check if not active and connected
485
-				if ( ! defined( 'AYECODE_CONNECT_VERSION' ) || ! get_option( 'ayecode_connect_blog_token' ) ) {
485
+				if (!defined('AYECODE_CONNECT_VERSION') || !get_option('ayecode_connect_blog_token')) {
486 486
 					$show = true;
487 487
 				}
488 488
 
Please login to merge, or discard this patch.