Passed
Push — master ( 869d1f...514302 )
by Brian
06:40
created
templates/payment-forms-admin/edit/textarea.php 1 patch
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -7,43 +7,43 @@
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 ?>
13 13
 
14 14
 <div class='form-group'>
15 15
     <label class="d-block">
16
-        <span><?php esc_html_e( 'Field Label', 'invoicing' ); ?></span>
16
+        <span><?php esc_html_e('Field Label', 'invoicing'); ?></span>
17 17
         <input v-model='active_form_element.label' class='form-control' type="text"/>
18 18
     </label>
19 19
 </div>
20 20
 
21 21
 <div class='form-group'>
22 22
     <label class="d-block">
23
-        <span><?php esc_html_e( 'Placeholder text', 'invoicing' ); ?></span>
23
+        <span><?php esc_html_e('Placeholder text', 'invoicing'); ?></span>
24 24
         <input v-model='active_form_element.placeholder' class='form-control' type="text"/>
25 25
     </label>
26 26
 </div>
27 27
 
28 28
 <div class='form-group'>
29 29
     <label class="d-block">
30
-        <span><?php esc_html_e( 'Help Text', 'invoicing' ); ?></span>
31
-        <textarea placeholder='<?php esc_attr_e( 'Add some help text for this field', 'invoicing' ); ?>' v-model='active_form_element.description' class='form-control' rows='3'></textarea>
30
+        <span><?php esc_html_e('Help Text', 'invoicing'); ?></span>
31
+        <textarea placeholder='<?php esc_attr_e('Add some help text for this field', 'invoicing'); ?>' v-model='active_form_element.description' class='form-control' rows='3'></textarea>
32 32
     </label>
33 33
 </div>
34 34
 
35 35
 <div class='form-group form-check'>
36 36
     <input :id="active_form_element.id + '_edit'" v-model='active_form_element.required' type='checkbox' class='form-check-input' />
37
-    <label class='form-check-label' :for="active_form_element.id + '_edit'"><?php esc_html_e( 'Is this field required?', 'invoicing' ); ?></label>
37
+    <label class='form-check-label' :for="active_form_element.id + '_edit'"><?php esc_html_e('Is this field required?', 'invoicing'); ?></label>
38 38
 </div>
39 39
 
40 40
 <hr class='featurette-divider mt-4'>
41 41
 
42 42
 <div class='form-group'>
43 43
     <label class="d-block">
44
-        <span><?php esc_html_e( 'Email Merge Tag', 'invoicing' ); ?></span>
44
+        <span><?php esc_html_e('Email Merge Tag', 'invoicing'); ?></span>
45 45
         <input :value='active_form_element.label | formatMergeTag' class='form-control bg-white' type="text" readonly onclick="this.select()" />
46
-        <span class="form-text text-muted"><?php esc_html_e( 'You can use this merge tag in notification emails', 'invoicing' ); ?></span>
46
+        <span class="form-text text-muted"><?php esc_html_e('You can use this merge tag in notification emails', 'invoicing'); ?></span>
47 47
     </label>
48 48
 </div>
49 49
 
Please login to merge, or discard this patch.
templates/payment-forms-admin/edit/website.php 1 patch
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -7,43 +7,43 @@
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 ?>
13 13
 
14 14
 <div class='form-group'>
15 15
     <label class="d-block">
16
-        <span><?php esc_html_e( 'Field Label', 'invoicing' ); ?></span>
16
+        <span><?php esc_html_e('Field Label', 'invoicing'); ?></span>
17 17
         <input v-model='active_form_element.label' class='form-control' type="text"/>
18 18
     </label>
19 19
 </div>
20 20
 
21 21
 <div class='form-group'>
22 22
     <label class="d-block">
23
-        <span><?php esc_html_e( 'Placeholder text', 'invoicing' ); ?></span>
23
+        <span><?php esc_html_e('Placeholder text', 'invoicing'); ?></span>
24 24
         <input v-model='active_form_element.placeholder' class='form-control' type="text"/>
25 25
     </label>
26 26
 </div>
27 27
 
28 28
 <div class='form-group'>
29 29
     <label class="d-block">
30
-        <span><?php esc_html_e( 'Help Text', 'invoicing' ); ?></span>
31
-        <textarea placeholder='<?php esc_attr_e( 'Add some help text for this field', 'invoicing' ); ?>' v-model='active_form_element.description' class='form-control' rows='3'></textarea>
30
+        <span><?php esc_html_e('Help Text', 'invoicing'); ?></span>
31
+        <textarea placeholder='<?php esc_attr_e('Add some help text for this field', 'invoicing'); ?>' v-model='active_form_element.description' class='form-control' rows='3'></textarea>
32 32
     </label>
33 33
 </div>
34 34
 
35 35
 <div class='form-group form-check'>
36 36
     <input :id="active_form_element.id + '_edit'" v-model='active_form_element.required' type='checkbox' class='form-check-input' />
37
-    <label class='form-check-label' :for="active_form_element.id + '_edit'"><?php esc_html_e( 'Is this field required?', 'invoicing' ); ?></label>
37
+    <label class='form-check-label' :for="active_form_element.id + '_edit'"><?php esc_html_e('Is this field required?', 'invoicing'); ?></label>
38 38
 </div>
39 39
 
40 40
 <hr class='featurette-divider mt-4'>
41 41
 
42 42
 <div class='form-group'>
43 43
     <label class="d-block">
44
-        <span><?php esc_html_e( 'Email Merge Tag', 'invoicing' ); ?></span>
44
+        <span><?php esc_html_e('Email Merge Tag', 'invoicing'); ?></span>
45 45
         <input :value='active_form_element.label | formatMergeTag' class='form-control bg-white' type="text" readonly onclick="this.select()" />
46
-        <span class="form-text text-muted"><?php esc_html_e( 'You can use this merge tag in notification emails', 'invoicing' ); ?></span>
46
+        <span class="form-text text-muted"><?php esc_html_e('You can use this merge tag in notification emails', 'invoicing'); ?></span>
47 47
     </label>
48 48
 </div>
49 49
 
Please login to merge, or discard this patch.
templates/payment-forms-admin/edit/number.php 1 patch
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -7,43 +7,43 @@
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 ?>
13 13
 
14 14
 <div class='form-group'>
15 15
     <label class="d-block">
16
-        <span><?php esc_html_e( 'Field Label', 'invoicing' ); ?></span>
16
+        <span><?php esc_html_e('Field Label', 'invoicing'); ?></span>
17 17
         <input v-model='active_form_element.label' class='form-control' type="text"/>
18 18
     </label>
19 19
 </div>
20 20
 
21 21
 <div class='form-group'>
22 22
     <label class="d-block">
23
-        <span><?php esc_html_e( 'Placeholder text', 'invoicing' ); ?></span>
23
+        <span><?php esc_html_e('Placeholder text', 'invoicing'); ?></span>
24 24
         <input v-model='active_form_element.placeholder' class='form-control' type="text"/>
25 25
     </label>
26 26
 </div>
27 27
 
28 28
 <div class='form-group'>
29 29
     <label class="d-block">
30
-        <span><?php esc_html_e( 'Help Text', 'invoicing' ); ?></span>
31
-        <textarea placeholder='<?php esc_attr_e( 'Add some help text for this field', 'invoicing' ); ?>' v-model='active_form_element.description' class='form-control' rows='3'></textarea>
30
+        <span><?php esc_html_e('Help Text', 'invoicing'); ?></span>
31
+        <textarea placeholder='<?php esc_attr_e('Add some help text for this field', 'invoicing'); ?>' v-model='active_form_element.description' class='form-control' rows='3'></textarea>
32 32
     </label>
33 33
 </div>
34 34
 
35 35
 <div class='form-group form-check'>
36 36
     <input :id="active_form_element.id + '_edit'" v-model='active_form_element.required' type='checkbox' class='form-check-input' />
37
-    <label class='form-check-label' :for="active_form_element.id + '_edit'"><?php esc_html_e( 'Is this field required?', 'invoicing' ); ?></label>
37
+    <label class='form-check-label' :for="active_form_element.id + '_edit'"><?php esc_html_e('Is this field required?', 'invoicing'); ?></label>
38 38
 </div>
39 39
 
40 40
 <hr class='featurette-divider mt-4'>
41 41
 
42 42
 <div class='form-group'>
43 43
     <label class="d-block">
44
-        <span><?php esc_html_e( 'Email Merge Tag', 'invoicing' ); ?></span>
44
+        <span><?php esc_html_e('Email Merge Tag', 'invoicing'); ?></span>
45 45
         <input :value='active_form_element.label | formatMergeTag' class='form-control bg-white' type="text" readonly onclick="this.select()" />
46
-        <span class="form-text text-muted"><?php esc_html_e( 'You can use this merge tag in notification emails', 'invoicing' ); ?></span>
46
+        <span class="form-text text-muted"><?php esc_html_e('You can use this merge tag in notification emails', 'invoicing'); ?></span>
47 47
     </label>
48 48
 </div>
49 49
 
Please login to merge, or discard this patch.
templates/payment-forms-admin/edit/time.php 1 patch
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -7,36 +7,36 @@
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 ?>
13 13
 
14 14
 <div class='form-group'>
15 15
     <label class="d-block">
16
-        <span><?php esc_html_e( 'Field Label', 'invoicing' ); ?></span>
16
+        <span><?php esc_html_e('Field Label', 'invoicing'); ?></span>
17 17
         <input v-model='active_form_element.label' class='form-control' type="text"/>
18 18
     </label>
19 19
 </div>
20 20
 
21 21
 <div class='form-group'>
22 22
     <label class="d-block">
23
-        <span><?php esc_html_e( 'Help Text', 'invoicing' ); ?></span>
24
-        <textarea placeholder='<?php esc_attr_e( 'Add some help text for this field', 'invoicing' ); ?>' v-model='active_form_element.description' class='form-control' rows='3'></textarea>
23
+        <span><?php esc_html_e('Help Text', 'invoicing'); ?></span>
24
+        <textarea placeholder='<?php esc_attr_e('Add some help text for this field', 'invoicing'); ?>' v-model='active_form_element.description' class='form-control' rows='3'></textarea>
25 25
     </label>
26 26
 </div>
27 27
 
28 28
 <div class='form-group form-check'>
29 29
     <input :id="active_form_element.id + '_edit'" v-model='active_form_element.required' type='checkbox' class='form-check-input' />
30
-    <label class='form-check-label' :for="active_form_element.id + '_edit'"><?php esc_html_e( 'Is this field required?', 'invoicing' ); ?></label>
30
+    <label class='form-check-label' :for="active_form_element.id + '_edit'"><?php esc_html_e('Is this field required?', 'invoicing'); ?></label>
31 31
 </div>
32 32
 
33 33
 <hr class='featurette-divider mt-4'>
34 34
 
35 35
 <div class='form-group'>
36 36
     <label class="d-block">
37
-        <span><?php esc_html_e( 'Email Merge Tag', 'invoicing' ); ?></span>
37
+        <span><?php esc_html_e('Email Merge Tag', 'invoicing'); ?></span>
38 38
         <input :value='active_form_element.label | formatMergeTag' class='form-control bg-white' type="text" readonly onclick="this.select()" />
39
-        <span class="form-text text-muted"><?php esc_html_e( 'You can use this merge tag in notification emails', 'invoicing' ); ?></span>
39
+        <span class="form-text text-muted"><?php esc_html_e('You can use this merge tag in notification emails', 'invoicing'); ?></span>
40 40
     </label>
41 41
 </div>
42 42
 
Please login to merge, or discard this patch.
includes/class-wpinv-item.php 2 patches
Indentation   +732 added lines, -732 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 if ( ! defined( 'ABSPATH' ) ) {
3
-	exit;
3
+    exit;
4 4
 }
5 5
 
6 6
 /**
@@ -10,30 +10,30 @@  discard block
 block discarded – undo
10 10
 class WPInv_Item  extends GetPaid_Data {
11 11
 
12 12
     /**
13
-	 * Which data store to load.
14
-	 *
15
-	 * @var string
16
-	 */
13
+     * Which data store to load.
14
+     *
15
+     * @var string
16
+     */
17 17
     protected $data_store_name = 'item';
18 18
 
19 19
     /**
20
-	 * This is the name of this object type.
21
-	 *
22
-	 * @var string
23
-	 */
24
-	protected $object_type = 'item';
20
+     * This is the name of this object type.
21
+     *
22
+     * @var string
23
+     */
24
+    protected $object_type = 'item';
25 25
 
26 26
     /**
27
-	 * Item Data array. This is the core item data exposed in APIs.
28
-	 *
29
-	 * @since 1.0.19
30
-	 * @var array
31
-	 */
32
-	protected $data = array(
33
-		'parent_id'            => 0,
34
-		'status'               => 'draft',
35
-		'version'              => '',
36
-		'date_created'         => null,
27
+     * Item Data array. This is the core item data exposed in APIs.
28
+     *
29
+     * @since 1.0.19
30
+     * @var array
31
+     */
32
+    protected $data = array(
33
+        'parent_id'            => 0,
34
+        'status'               => 'draft',
35
+        'version'              => '',
36
+        'date_created'         => null,
37 37
         'date_modified'        => null,
38 38
         'name'                 => '',
39 39
         'description'          => '',
@@ -58,13 +58,13 @@  discard block
 block discarded – undo
58 58
     );
59 59
 
60 60
     /**
61
-	 * Stores meta in cache for future reads.
62
-	 *
63
-	 * A group must be set to to enable caching.
64
-	 *
65
-	 * @var string
66
-	 */
67
-	protected $cache_group = 'getpaid_items';
61
+     * Stores meta in cache for future reads.
62
+     *
63
+     * A group must be set to to enable caching.
64
+     *
65
+     * @var string
66
+     */
67
+    protected $cache_group = 'getpaid_items';
68 68
 
69 69
     /**
70 70
      * Stores a reference to the original WP_Post object
@@ -74,37 +74,37 @@  discard block
 block discarded – undo
74 74
     protected $post = null;
75 75
 
76 76
     /**
77
-	 * Get the item if ID is passed, otherwise the item is new and empty.
78
-	 *
79
-	 * @param  int|object|WPInv_Item|WP_Post $item Item to read.
80
-	 */
81
-	public function __construct( $item = 0 ) {
82
-		parent::__construct( $item );
83
-
84
-		if ( ! empty( $item ) && is_numeric( $item ) && 'wpi_item' == get_post_type( $item ) ) {
85
-			$this->set_id( $item );
86
-		} elseif ( $item instanceof self ) {
87
-			$this->set_id( $item->get_id() );
88
-		} elseif ( ! empty( $item->ID ) ) {
89
-			$this->set_id( $item->ID );
90
-		} elseif ( is_scalar( $item ) && $item_id = self::get_item_id_by_field( $item, 'custom_id' ) ) {
91
-			$this->set_id( $item_id );
92
-		} elseif ( is_scalar( $item ) && $item_id = self::get_item_id_by_field( $item, 'name' ) ) {
93
-			$this->set_id( $item_id );
94
-		} else {
95
-			$this->set_object_read( true );
96
-		}
77
+     * Get the item if ID is passed, otherwise the item is new and empty.
78
+     *
79
+     * @param  int|object|WPInv_Item|WP_Post $item Item to read.
80
+     */
81
+    public function __construct( $item = 0 ) {
82
+        parent::__construct( $item );
83
+
84
+        if ( ! empty( $item ) && is_numeric( $item ) && 'wpi_item' == get_post_type( $item ) ) {
85
+            $this->set_id( $item );
86
+        } elseif ( $item instanceof self ) {
87
+            $this->set_id( $item->get_id() );
88
+        } elseif ( ! empty( $item->ID ) ) {
89
+            $this->set_id( $item->ID );
90
+        } elseif ( is_scalar( $item ) && $item_id = self::get_item_id_by_field( $item, 'custom_id' ) ) {
91
+            $this->set_id( $item_id );
92
+        } elseif ( is_scalar( $item ) && $item_id = self::get_item_id_by_field( $item, 'name' ) ) {
93
+            $this->set_id( $item_id );
94
+        } else {
95
+            $this->set_object_read( true );
96
+        }
97 97
 
98 98
         // Load the datastore.
99
-		$this->data_store = GetPaid_Data_Store::load( $this->data_store_name );
99
+        $this->data_store = GetPaid_Data_Store::load( $this->data_store_name );
100 100
 
101
-		if ( $this->get_id() > 0 ) {
101
+        if ( $this->get_id() > 0 ) {
102 102
             $this->post = get_post( $this->get_id() );
103 103
             $this->ID   = $this->get_id();
104
-			$this->data_store->read( $this );
104
+            $this->data_store->read( $this );
105 105
         }
106 106
 
107
-	}
107
+    }
108 108
 
109 109
     /*
110 110
 	|--------------------------------------------------------------------------
@@ -122,401 +122,401 @@  discard block
 block discarded – undo
122 122
     */
123 123
 
124 124
     /**
125
-	 * Get parent item ID.
126
-	 *
127
-	 * @since 1.0.19
128
-	 * @param  string $context View or edit context.
129
-	 * @return int
130
-	 */
131
-	public function get_parent_id( $context = 'view' ) {
132
-		return (int) $this->get_prop( 'parent_id', $context );
125
+     * Get parent item ID.
126
+     *
127
+     * @since 1.0.19
128
+     * @param  string $context View or edit context.
129
+     * @return int
130
+     */
131
+    public function get_parent_id( $context = 'view' ) {
132
+        return (int) $this->get_prop( 'parent_id', $context );
133 133
     }
134 134
 
135 135
     /**
136
-	 * Get item status.
137
-	 *
138
-	 * @since 1.0.19
139
-	 * @param  string $context View or edit context.
140
-	 * @return string
141
-	 */
142
-	public function get_status( $context = 'view' ) {
143
-		return $this->get_prop( 'status', $context );
136
+     * Get item status.
137
+     *
138
+     * @since 1.0.19
139
+     * @param  string $context View or edit context.
140
+     * @return string
141
+     */
142
+    public function get_status( $context = 'view' ) {
143
+        return $this->get_prop( 'status', $context );
144 144
     }
145 145
 
146 146
     /**
147
-	 * Get plugin version when the item was created.
148
-	 *
149
-	 * @since 1.0.19
150
-	 * @param  string $context View or edit context.
151
-	 * @return string
152
-	 */
153
-	public function get_version( $context = 'view' ) {
154
-		return $this->get_prop( 'version', $context );
147
+     * Get plugin version when the item was created.
148
+     *
149
+     * @since 1.0.19
150
+     * @param  string $context View or edit context.
151
+     * @return string
152
+     */
153
+    public function get_version( $context = 'view' ) {
154
+        return $this->get_prop( 'version', $context );
155 155
     }
156 156
 
157 157
     /**
158
-	 * Get date when the item was created.
159
-	 *
160
-	 * @since 1.0.19
161
-	 * @param  string $context View or edit context.
162
-	 * @return string
163
-	 */
164
-	public function get_date_created( $context = 'view' ) {
165
-		return $this->get_prop( 'date_created', $context );
158
+     * Get date when the item was created.
159
+     *
160
+     * @since 1.0.19
161
+     * @param  string $context View or edit context.
162
+     * @return string
163
+     */
164
+    public function get_date_created( $context = 'view' ) {
165
+        return $this->get_prop( 'date_created', $context );
166 166
     }
167 167
 
168 168
     /**
169
-	 * Get GMT date when the item was created.
170
-	 *
171
-	 * @since 1.0.19
172
-	 * @param  string $context View or edit context.
173
-	 * @return string
174
-	 */
175
-	public function get_date_created_gmt( $context = 'view' ) {
169
+     * Get GMT date when the item was created.
170
+     *
171
+     * @since 1.0.19
172
+     * @param  string $context View or edit context.
173
+     * @return string
174
+     */
175
+    public function get_date_created_gmt( $context = 'view' ) {
176 176
         $date = $this->get_date_created( $context );
177 177
 
178 178
         if ( $date ) {
179 179
             $date = get_gmt_from_date( $date );
180 180
         }
181
-		return $date;
181
+        return $date;
182 182
     }
183 183
 
184 184
     /**
185
-	 * Get date when the item was last modified.
186
-	 *
187
-	 * @since 1.0.19
188
-	 * @param  string $context View or edit context.
189
-	 * @return string
190
-	 */
191
-	public function get_date_modified( $context = 'view' ) {
192
-		return $this->get_prop( 'date_modified', $context );
185
+     * Get date when the item was last modified.
186
+     *
187
+     * @since 1.0.19
188
+     * @param  string $context View or edit context.
189
+     * @return string
190
+     */
191
+    public function get_date_modified( $context = 'view' ) {
192
+        return $this->get_prop( 'date_modified', $context );
193 193
     }
194 194
 
195 195
     /**
196
-	 * Get GMT date when the item was last modified.
197
-	 *
198
-	 * @since 1.0.19
199
-	 * @param  string $context View or edit context.
200
-	 * @return string
201
-	 */
202
-	public function get_date_modified_gmt( $context = 'view' ) {
196
+     * Get GMT date when the item was last modified.
197
+     *
198
+     * @since 1.0.19
199
+     * @param  string $context View or edit context.
200
+     * @return string
201
+     */
202
+    public function get_date_modified_gmt( $context = 'view' ) {
203 203
         $date = $this->get_date_modified( $context );
204 204
 
205 205
         if ( $date ) {
206 206
             $date = get_gmt_from_date( $date );
207 207
         }
208
-		return $date;
208
+        return $date;
209 209
     }
210 210
 
211 211
     /**
212
-	 * Get the item name.
213
-	 *
214
-	 * @since 1.0.19
215
-	 * @param  string $context View or edit context.
216
-	 * @return string
217
-	 */
218
-	public function get_name( $context = 'view' ) {
219
-		return $this->get_prop( 'name', $context );
212
+     * Get the item name.
213
+     *
214
+     * @since 1.0.19
215
+     * @param  string $context View or edit context.
216
+     * @return string
217
+     */
218
+    public function get_name( $context = 'view' ) {
219
+        return $this->get_prop( 'name', $context );
220 220
     }
221 221
 
222 222
     /**
223
-	 * Alias of self::get_name().
224
-	 *
225
-	 * @since 1.0.19
226
-	 * @param  string $context View or edit context.
227
-	 * @return string
228
-	 */
229
-	public function get_title( $context = 'view' ) {
230
-		return $this->get_name( $context );
223
+     * Alias of self::get_name().
224
+     *
225
+     * @since 1.0.19
226
+     * @param  string $context View or edit context.
227
+     * @return string
228
+     */
229
+    public function get_title( $context = 'view' ) {
230
+        return $this->get_name( $context );
231 231
     }
232 232
 
233 233
     /**
234
-	 * Get the item description.
235
-	 *
236
-	 * @since 1.0.19
237
-	 * @param  string $context View or edit context.
238
-	 * @return string
239
-	 */
240
-	public function get_description( $context = 'view' ) {
241
-		return $this->get_prop( 'description', $context );
234
+     * Get the item description.
235
+     *
236
+     * @since 1.0.19
237
+     * @param  string $context View or edit context.
238
+     * @return string
239
+     */
240
+    public function get_description( $context = 'view' ) {
241
+        return $this->get_prop( 'description', $context );
242 242
     }
243 243
 
244 244
     /**
245
-	 * Alias of self::get_description().
246
-	 *
247
-	 * @since 1.0.19
248
-	 * @param  string $context View or edit context.
249
-	 * @return string
250
-	 */
251
-	public function get_excerpt( $context = 'view' ) {
252
-		return $this->get_description( $context );
245
+     * Alias of self::get_description().
246
+     *
247
+     * @since 1.0.19
248
+     * @param  string $context View or edit context.
249
+     * @return string
250
+     */
251
+    public function get_excerpt( $context = 'view' ) {
252
+        return $this->get_description( $context );
253 253
     }
254 254
 
255 255
     /**
256
-	 * Alias of self::get_description().
257
-	 *
258
-	 * @since 1.0.19
259
-	 * @param  string $context View or edit context.
260
-	 * @return string
261
-	 */
262
-	public function get_summary( $context = 'view' ) {
263
-		return $this->get_description( $context );
256
+     * Alias of self::get_description().
257
+     *
258
+     * @since 1.0.19
259
+     * @param  string $context View or edit context.
260
+     * @return string
261
+     */
262
+    public function get_summary( $context = 'view' ) {
263
+        return $this->get_description( $context );
264 264
     }
265 265
 
266 266
     /**
267
-	 * Get the owner of the item.
268
-	 *
269
-	 * @since 1.0.19
270
-	 * @param  string $context View or edit context.
271
-	 * @return int
272
-	 */
273
-	public function get_author( $context = 'view' ) {
274
-		return (int) $this->get_prop( 'author', $context );
275
-	}
267
+     * Get the owner of the item.
268
+     *
269
+     * @since 1.0.19
270
+     * @param  string $context View or edit context.
271
+     * @return int
272
+     */
273
+    public function get_author( $context = 'view' ) {
274
+        return (int) $this->get_prop( 'author', $context );
275
+    }
276 276
 	
277
-	/**
278
-	 * Alias of self::get_author().
279
-	 *
280
-	 * @since 1.0.19
281
-	 * @param  string $context View or edit context.
282
-	 * @return int
283
-	 */
284
-	public function get_owner( $context = 'view' ) {
285
-		return $this->get_author( $context );
286
-    }
287
-
288
-    /**
289
-	 * Get the price of the item.
290
-	 *
291
-	 * @since 1.0.19
292
-	 * @param  string $context View or edit context.
293
-	 * @return float
294
-	 */
295
-	public function get_price( $context = 'view' ) {
277
+    /**
278
+     * Alias of self::get_author().
279
+     *
280
+     * @since 1.0.19
281
+     * @param  string $context View or edit context.
282
+     * @return int
283
+     */
284
+    public function get_owner( $context = 'view' ) {
285
+        return $this->get_author( $context );
286
+    }
287
+
288
+    /**
289
+     * Get the price of the item.
290
+     *
291
+     * @since 1.0.19
292
+     * @param  string $context View or edit context.
293
+     * @return float
294
+     */
295
+    public function get_price( $context = 'view' ) {
296 296
         return wpinv_sanitize_amount( $this->get_prop( 'price', $context ) );
297
-	}
297
+    }
298 298
 	
299
-	/**
300
-	 * Get the inital price of the item.
301
-	 *
302
-	 * @since 1.0.19
303
-	 * @param  string $context View or edit context.
304
-	 * @return float
305
-	 */
306
-	public function get_initial_price( $context = 'view' ) {
299
+    /**
300
+     * Get the inital price of the item.
301
+     *
302
+     * @since 1.0.19
303
+     * @param  string $context View or edit context.
304
+     * @return float
305
+     */
306
+    public function get_initial_price( $context = 'view' ) {
307 307
 
308
-		$price = (float) $this->get_price( $context );
308
+        $price = (float) $this->get_price( $context );
309 309
 
310
-		if ( $this->has_free_trial() ) {
311
-			$price = 0;
312
-		}
310
+        if ( $this->has_free_trial() ) {
311
+            $price = 0;
312
+        }
313 313
 
314 314
         return wpinv_sanitize_amount( apply_filters( 'wpinv_get_initial_item_price', $price, $this ) );
315 315
     }
316 316
 
317 317
     /**
318
-	 * Returns a formated price.
319
-	 *
320
-	 * @since 1.0.19
321
-	 * @param  string $context View or edit context.
322
-	 * @return string
323
-	 */
318
+     * Returns a formated price.
319
+     *
320
+     * @since 1.0.19
321
+     * @param  string $context View or edit context.
322
+     * @return string
323
+     */
324 324
     public function get_the_price() {
325 325
         return wpinv_price( $this->get_price() );
326
-	}
327
-
328
-	/**
329
-	 * Returns the formated initial price.
330
-	 *
331
-	 * @since 1.0.19
332
-	 * @param  string $context View or edit context.
333
-	 * @return string
334
-	 */
326
+    }
327
+
328
+    /**
329
+     * Returns the formated initial price.
330
+     *
331
+     * @since 1.0.19
332
+     * @param  string $context View or edit context.
333
+     * @return string
334
+     */
335 335
     public function get_the_initial_price() {
336 336
         return wpinv_price( $this->get_initial_price() );
337 337
     }
338 338
 
339 339
     /**
340
-	 * Get the VAT rule of the item.
341
-	 *
342
-	 * @since 1.0.19
343
-	 * @param  string $context View or edit context.
344
-	 * @return string
345
-	 */
346
-	public function get_vat_rule( $context = 'view' ) {
340
+     * Get the VAT rule of the item.
341
+     *
342
+     * @since 1.0.19
343
+     * @param  string $context View or edit context.
344
+     * @return string
345
+     */
346
+    public function get_vat_rule( $context = 'view' ) {
347 347
         return $this->get_prop( 'vat_rule', $context );
348 348
     }
349 349
 
350 350
     /**
351
-	 * Get the VAT class of the item.
352
-	 *
353
-	 * @since 1.0.19
354
-	 * @param  string $context View or edit context.
355
-	 * @return string
356
-	 */
357
-	public function get_vat_class( $context = 'view' ) {
351
+     * Get the VAT class of the item.
352
+     *
353
+     * @since 1.0.19
354
+     * @param  string $context View or edit context.
355
+     * @return string
356
+     */
357
+    public function get_vat_class( $context = 'view' ) {
358 358
         return $this->get_prop( 'vat_class', $context );
359 359
     }
360 360
 
361 361
     /**
362
-	 * Get the type of the item.
363
-	 *
364
-	 * @since 1.0.19
365
-	 * @param  string $context View or edit context.
366
-	 * @return string
367
-	 */
368
-	public function get_type( $context = 'view' ) {
362
+     * Get the type of the item.
363
+     *
364
+     * @since 1.0.19
365
+     * @param  string $context View or edit context.
366
+     * @return string
367
+     */
368
+    public function get_type( $context = 'view' ) {
369 369
         return $this->get_prop( 'type', $context );
370 370
     }
371 371
 
372 372
     /**
373
-	 * Get the custom id of the item.
374
-	 *
375
-	 * @since 1.0.19
376
-	 * @param  string $context View or edit context.
377
-	 * @return string
378
-	 */
379
-	public function get_custom_id( $context = 'view' ) {
373
+     * Get the custom id of the item.
374
+     *
375
+     * @since 1.0.19
376
+     * @param  string $context View or edit context.
377
+     * @return string
378
+     */
379
+    public function get_custom_id( $context = 'view' ) {
380 380
         return $this->get_prop( 'custom_id', $context );
381 381
     }
382 382
 
383 383
     /**
384
-	 * Get the custom name of the item.
385
-	 *
386
-	 * @since 1.0.19
387
-	 * @param  string $context View or edit context.
388
-	 * @return string
389
-	 */
390
-	public function get_custom_name( $context = 'view' ) {
384
+     * Get the custom name of the item.
385
+     *
386
+     * @since 1.0.19
387
+     * @param  string $context View or edit context.
388
+     * @return string
389
+     */
390
+    public function get_custom_name( $context = 'view' ) {
391 391
         return $this->get_prop( 'custom_name', $context );
392 392
     }
393 393
 
394 394
     /**
395
-	 * Get the custom singular name of the item.
396
-	 *
397
-	 * @since 1.0.19
398
-	 * @param  string $context View or edit context.
399
-	 * @return string
400
-	 */
401
-	public function get_custom_singular_name( $context = 'view' ) {
395
+     * Get the custom singular name of the item.
396
+     *
397
+     * @since 1.0.19
398
+     * @param  string $context View or edit context.
399
+     * @return string
400
+     */
401
+    public function get_custom_singular_name( $context = 'view' ) {
402 402
         return $this->get_prop( 'custom_singular_name', $context );
403 403
     }
404 404
 
405 405
     /**
406
-	 * Checks if an item is editable..
407
-	 *
408
-	 * @since 1.0.19
409
-	 * @param  string $context View or edit context.
410
-	 * @return int
411
-	 */
412
-	public function get_is_editable( $context = 'view' ) {
406
+     * Checks if an item is editable..
407
+     *
408
+     * @since 1.0.19
409
+     * @param  string $context View or edit context.
410
+     * @return int
411
+     */
412
+    public function get_is_editable( $context = 'view' ) {
413 413
         return (int) $this->get_prop( 'is_editable', $context );
414 414
     }
415 415
 
416 416
     /**
417
-	 * Alias of self::get_is_editable().
418
-	 *
419
-	 * @since 1.0.19
420
-	 * @param  string $context View or edit context.
421
-	 * @return int
422
-	 */
423
-	public function get_editable( $context = 'view' ) {
424
-		return $this->get_is_editable( $context );
417
+     * Alias of self::get_is_editable().
418
+     *
419
+     * @since 1.0.19
420
+     * @param  string $context View or edit context.
421
+     * @return int
422
+     */
423
+    public function get_editable( $context = 'view' ) {
424
+        return $this->get_is_editable( $context );
425 425
     }
426 426
 
427 427
     /**
428
-	 * Checks if dynamic pricing is enabled.
429
-	 *
430
-	 * @since 1.0.19
431
-	 * @param  string $context View or edit context.
432
-	 * @return int
433
-	 */
434
-	public function get_is_dynamic_pricing( $context = 'view' ) {
428
+     * Checks if dynamic pricing is enabled.
429
+     *
430
+     * @since 1.0.19
431
+     * @param  string $context View or edit context.
432
+     * @return int
433
+     */
434
+    public function get_is_dynamic_pricing( $context = 'view' ) {
435 435
         return (int) $this->get_prop( 'is_dynamic_pricing', $context );
436 436
     }
437 437
 
438 438
     /**
439
-	 * Returns the minimum price if dynamic pricing is enabled.
440
-	 *
441
-	 * @since 1.0.19
442
-	 * @param  string $context View or edit context.
443
-	 * @return float
444
-	 */
445
-	public function get_minimum_price( $context = 'view' ) {
439
+     * Returns the minimum price if dynamic pricing is enabled.
440
+     *
441
+     * @since 1.0.19
442
+     * @param  string $context View or edit context.
443
+     * @return float
444
+     */
445
+    public function get_minimum_price( $context = 'view' ) {
446 446
         return wpinv_sanitize_amount( $this->get_prop( 'minimum_price', $context ) );
447 447
     }
448 448
 
449 449
     /**
450
-	 * Checks if this is a recurring item.
451
-	 *
452
-	 * @since 1.0.19
453
-	 * @param  string $context View or edit context.
454
-	 * @return int
455
-	 */
456
-	public function get_is_recurring( $context = 'view' ) {
450
+     * Checks if this is a recurring item.
451
+     *
452
+     * @since 1.0.19
453
+     * @param  string $context View or edit context.
454
+     * @return int
455
+     */
456
+    public function get_is_recurring( $context = 'view' ) {
457 457
         return (int) $this->get_prop( 'is_recurring', $context );
458
-	}
458
+    }
459 459
 	
460
-	/**
461
-	 * Get the recurring price of the item.
462
-	 *
463
-	 * @since 1.0.19
464
-	 * @param  string $context View or edit context.
465
-	 * @return float
466
-	 */
467
-	public function get_recurring_price( $context = 'view' ) {
468
-		$price = $this->get_price( $context );
460
+    /**
461
+     * Get the recurring price of the item.
462
+     *
463
+     * @since 1.0.19
464
+     * @param  string $context View or edit context.
465
+     * @return float
466
+     */
467
+    public function get_recurring_price( $context = 'view' ) {
468
+        $price = $this->get_price( $context );
469 469
         return wpinv_sanitize_amount( apply_filters( 'wpinv_get_recurring_item_price', $price, $this->ID ) );
470
-	}
471
-
472
-	/**
473
-	 * Get the formatted recurring price of the item.
474
-	 *
475
-	 * @since 1.0.19
476
-	 * @param  string $context View or edit context.
477
-	 * @return string
478
-	 */
470
+    }
471
+
472
+    /**
473
+     * Get the formatted recurring price of the item.
474
+     *
475
+     * @since 1.0.19
476
+     * @param  string $context View or edit context.
477
+     * @return string
478
+     */
479 479
     public function get_the_recurring_price() {
480 480
         return wpinv_price( $this->get_recurring_price() );
481
-	}
482
-
483
-	/**
484
-	 * Get the first renewal date (in timestamps) of the item.
485
-	 *
486
-	 * @since 1.0.19
487
-	 * @return int
488
-	 */
489
-	public function get_first_renewal_date() {
490
-
491
-		$periods = array(
492
-			'D' => 'days',
493
-			'W' => 'weeks',
494
-			'M' => 'months',
495
-			'Y' => 'years',
496
-		);
497
-
498
-		$period   = $this->get_recurring_period();
499
-		$interval = $this->get_recurring_interval();
500
-
501
-		if ( $this->has_free_trial() ) {
502
-			$period   = $this->get_trial_period();
503
-			$interval = $this->get_trial_interval();
504
-		}
505
-
506
-		$period       = $periods[ $period ];
507
-		$interval     = empty( $interval ) ? 1 : $interval;
508
-		$next_renewal = strtotime( "+$interval $period", current_time( 'timestamp' ) );
481
+    }
482
+
483
+    /**
484
+     * Get the first renewal date (in timestamps) of the item.
485
+     *
486
+     * @since 1.0.19
487
+     * @return int
488
+     */
489
+    public function get_first_renewal_date() {
490
+
491
+        $periods = array(
492
+            'D' => 'days',
493
+            'W' => 'weeks',
494
+            'M' => 'months',
495
+            'Y' => 'years',
496
+        );
497
+
498
+        $period   = $this->get_recurring_period();
499
+        $interval = $this->get_recurring_interval();
500
+
501
+        if ( $this->has_free_trial() ) {
502
+            $period   = $this->get_trial_period();
503
+            $interval = $this->get_trial_interval();
504
+        }
505
+
506
+        $period       = $periods[ $period ];
507
+        $interval     = empty( $interval ) ? 1 : $interval;
508
+        $next_renewal = strtotime( "+$interval $period", current_time( 'timestamp' ) );
509 509
         return apply_filters( 'wpinv_get_first_renewal_date', $next_renewal, $this );
510 510
     }
511 511
 
512 512
     /**
513
-	 * Get the recurring period.
514
-	 *
515
-	 * @since 1.0.19
516
-	 * @param  bool $full Return abbreviation or in full.
517
-	 * @return string
518
-	 */
519
-	public function get_recurring_period( $full = false ) {
513
+     * Get the recurring period.
514
+     *
515
+     * @since 1.0.19
516
+     * @param  bool $full Return abbreviation or in full.
517
+     * @return string
518
+     */
519
+    public function get_recurring_period( $full = false ) {
520 520
         $period = $this->get_prop( 'recurring_period', 'view' );
521 521
 
522 522
         if ( $full && ! is_bool( $full ) ) {
@@ -527,58 +527,58 @@  discard block
 block discarded – undo
527 527
     }
528 528
 
529 529
     /**
530
-	 * Get the recurring interval.
531
-	 *
532
-	 * @since 1.0.19
533
-	 * @param  string $context View or edit context.
534
-	 * @return int
535
-	 */
536
-	public function get_recurring_interval( $context = 'view' ) {
537
-		$interval = absint( $this->get_prop( 'recurring_interval', $context ) );
538
-		return max( 1, $interval );
530
+     * Get the recurring interval.
531
+     *
532
+     * @since 1.0.19
533
+     * @param  string $context View or edit context.
534
+     * @return int
535
+     */
536
+    public function get_recurring_interval( $context = 'view' ) {
537
+        $interval = absint( $this->get_prop( 'recurring_interval', $context ) );
538
+        return max( 1, $interval );
539 539
     }
540 540
 
541 541
     /**
542
-	 * Get the recurring limit.
543
-	 *
544
-	 * @since 1.0.19
545
-	 * @param  string $context View or edit context.
546
-	 * @return int
547
-	 */
548
-	public function get_recurring_limit( $context = 'view' ) {
542
+     * Get the recurring limit.
543
+     *
544
+     * @since 1.0.19
545
+     * @param  string $context View or edit context.
546
+     * @return int
547
+     */
548
+    public function get_recurring_limit( $context = 'view' ) {
549 549
         return (int) $this->get_prop( 'recurring_limit', $context );
550 550
     }
551 551
 
552 552
     /**
553
-	 * Checks if we have a free trial.
554
-	 *
555
-	 * @since 1.0.19
556
-	 * @param  string $context View or edit context.
557
-	 * @return int
558
-	 */
559
-	public function get_is_free_trial( $context = 'view' ) {
553
+     * Checks if we have a free trial.
554
+     *
555
+     * @since 1.0.19
556
+     * @param  string $context View or edit context.
557
+     * @return int
558
+     */
559
+    public function get_is_free_trial( $context = 'view' ) {
560 560
         return (int) $this->get_prop( 'is_free_trial', $context );
561 561
     }
562 562
 
563 563
     /**
564
-	 * Alias for self::get_is_free_trial().
565
-	 *
566
-	 * @since 1.0.19
567
-	 * @param  string $context View or edit context.
568
-	 * @return int
569
-	 */
570
-	public function get_free_trial( $context = 'view' ) {
564
+     * Alias for self::get_is_free_trial().
565
+     *
566
+     * @since 1.0.19
567
+     * @param  string $context View or edit context.
568
+     * @return int
569
+     */
570
+    public function get_free_trial( $context = 'view' ) {
571 571
         return $this->get_is_free_trial( $context );
572 572
     }
573 573
 
574 574
     /**
575
-	 * Get the trial period.
576
-	 *
577
-	 * @since 1.0.19
578
-	 * @param  bool $full Return abbreviation or in full.
579
-	 * @return string
580
-	 */
581
-	public function get_trial_period( $full = false ) {
575
+     * Get the trial period.
576
+     *
577
+     * @since 1.0.19
578
+     * @param  bool $full Return abbreviation or in full.
579
+     * @return string
580
+     */
581
+    public function get_trial_period( $full = false ) {
582 582
         $period = $this->get_prop( 'trial_period', 'view' );
583 583
 
584 584
         if ( $full && ! is_bool( $full ) ) {
@@ -589,104 +589,104 @@  discard block
 block discarded – undo
589 589
     }
590 590
 
591 591
     /**
592
-	 * Get the trial interval.
593
-	 *
594
-	 * @since 1.0.19
595
-	 * @param  string $context View or edit context.
596
-	 * @return int
597
-	 */
598
-	public function get_trial_interval( $context = 'view' ) {
592
+     * Get the trial interval.
593
+     *
594
+     * @since 1.0.19
595
+     * @param  string $context View or edit context.
596
+     * @return int
597
+     */
598
+    public function get_trial_interval( $context = 'view' ) {
599 599
         return (int) $this->get_prop( 'trial_interval', $context );
600
-	}
600
+    }
601 601
 	
602
-	/**
603
-	 * Get the item's edit url.
604
-	 *
605
-	 * @since 1.0.19
606
-	 * @return string
607
-	 */
608
-	public function get_edit_url() {
602
+    /**
603
+     * Get the item's edit url.
604
+     *
605
+     * @since 1.0.19
606
+     * @return string
607
+     */
608
+    public function get_edit_url() {
609 609
         return get_edit_post_link( $this->get_id() );
610
-	}
611
-
612
-	/**
613
-	 * Given an item's name/custom id, it returns its id.
614
-	 *
615
-	 *
616
-	 * @static
617
-	 * @param string $value The item name or custom id.
618
-	 * @param string $field Either name or custom_id.
619
-	 * @param string $type in case you need to search for a given type.
620
-	 * @since 1.0.15
621
-	 * @return int
622
-	 */
623
-	public static function get_item_id_by_field( $value, $field = 'custom_id', $type = '' ) {
624
-
625
-		// Trim the value.
626
-		$value = sanitize_text_field( $value );
627
-		if ( empty( $value ) ) {
628
-			return 0;
629
-		}
610
+    }
611
+
612
+    /**
613
+     * Given an item's name/custom id, it returns its id.
614
+     *
615
+     *
616
+     * @static
617
+     * @param string $value The item name or custom id.
618
+     * @param string $field Either name or custom_id.
619
+     * @param string $type in case you need to search for a given type.
620
+     * @since 1.0.15
621
+     * @return int
622
+     */
623
+    public static function get_item_id_by_field( $value, $field = 'custom_id', $type = '' ) {
624
+
625
+        // Trim the value.
626
+        $value = sanitize_text_field( $value );
627
+        if ( empty( $value ) ) {
628
+            return 0;
629
+        }
630 630
 
631 631
         // Valid fields.
632 632
         $fields = array( 'custom_id', 'name', 'slug' );
633 633
 
634
-		// Ensure a field has been passed.
635
-		if ( empty( $field ) || ! in_array( $field, $fields ) ) {
636
-			return 0;
637
-		}
638
-
639
-		if ( $field == 'name' ) {
640
-			$field = 'slug';
641
-		}
642
-
643
-		// Maybe retrieve from the cache.
644
-		$item_id = wp_cache_get( $value, "getpaid_{$type}_item_{$field}s_to_item_ids" );
645
-		if ( ! empty( $item_id ) ) {
646
-			return $item_id;
647
-		}
648
-
649
-		// Fetch from the db.
650
-		$items = array();
651
-		if ( $field == 'slug' ) {
652
-			$items = get_posts(
653
-				array(
654
-					'post_type'      => 'wpi_item',
655
-					'name'           => $value,
656
-					'posts_per_page' => 1,
657
-					'post_status'    => 'any',
658
-				)
659
-			);
660
-		}
661
-
662
-		if ( $field =='custom_id' ) {
663
-			$items = get_posts(
664
-				array(
665
-					'post_type'      => 'wpi_item',
666
-					'posts_per_page' => 1,
667
-					'post_status'    => 'any',
668
-					'meta_query'     => array(
669
-						array(
670
-							'key'   => '_wpinv_type',
671
-                			'value' => $type,
672
-						),
673
-						array(
674
-							'key'   => '_wpinv_custom_id',
675
-                			'value' => $value,
676
-						)
677
-					)
678
-				)
679
-			);
680
-		}
681
-
682
-		if ( empty( $items ) ) {
683
-			return 0;
684
-		}
685
-
686
-		// Update the cache with our data
687
-		wp_cache_set( $value, $items[0]->ID, "getpaid_{$type}_item_{$field}s_to_item_ids" );
688
-
689
-		return $items[0]->ID;
634
+        // Ensure a field has been passed.
635
+        if ( empty( $field ) || ! in_array( $field, $fields ) ) {
636
+            return 0;
637
+        }
638
+
639
+        if ( $field == 'name' ) {
640
+            $field = 'slug';
641
+        }
642
+
643
+        // Maybe retrieve from the cache.
644
+        $item_id = wp_cache_get( $value, "getpaid_{$type}_item_{$field}s_to_item_ids" );
645
+        if ( ! empty( $item_id ) ) {
646
+            return $item_id;
647
+        }
648
+
649
+        // Fetch from the db.
650
+        $items = array();
651
+        if ( $field == 'slug' ) {
652
+            $items = get_posts(
653
+                array(
654
+                    'post_type'      => 'wpi_item',
655
+                    'name'           => $value,
656
+                    'posts_per_page' => 1,
657
+                    'post_status'    => 'any',
658
+                )
659
+            );
660
+        }
661
+
662
+        if ( $field =='custom_id' ) {
663
+            $items = get_posts(
664
+                array(
665
+                    'post_type'      => 'wpi_item',
666
+                    'posts_per_page' => 1,
667
+                    'post_status'    => 'any',
668
+                    'meta_query'     => array(
669
+                        array(
670
+                            'key'   => '_wpinv_type',
671
+                            'value' => $type,
672
+                        ),
673
+                        array(
674
+                            'key'   => '_wpinv_custom_id',
675
+                            'value' => $value,
676
+                        )
677
+                    )
678
+                )
679
+            );
680
+        }
681
+
682
+        if ( empty( $items ) ) {
683
+            return 0;
684
+        }
685
+
686
+        // Update the cache with our data
687
+        wp_cache_set( $value, $items[0]->ID, "getpaid_{$type}_item_{$field}s_to_item_ids" );
688
+
689
+        return $items[0]->ID;
690 690
     }
691 691
 
692 692
     /**
@@ -719,52 +719,52 @@  discard block
 block discarded – undo
719 719
     */
720 720
 
721 721
     /**
722
-	 * Set parent order ID.
723
-	 *
724
-	 * @since 1.0.19
725
-	 */
726
-	public function set_parent_id( $value ) {
727
-		if ( $value && ( $value === $this->get_id() || ! get_post( $value ) ) ) {
728
-			return;
729
-		}
730
-		$this->set_prop( 'parent_id', absint( $value ) );
731
-	}
732
-
733
-    /**
734
-	 * Sets item status.
735
-	 *
736
-	 * @since 1.0.19
737
-	 * @param  string $status New status.
738
-	 * @return array details of change.
739
-	 */
740
-	public function set_status( $status ) {
722
+     * Set parent order ID.
723
+     *
724
+     * @since 1.0.19
725
+     */
726
+    public function set_parent_id( $value ) {
727
+        if ( $value && ( $value === $this->get_id() || ! get_post( $value ) ) ) {
728
+            return;
729
+        }
730
+        $this->set_prop( 'parent_id', absint( $value ) );
731
+    }
732
+
733
+    /**
734
+     * Sets item status.
735
+     *
736
+     * @since 1.0.19
737
+     * @param  string $status New status.
738
+     * @return array details of change.
739
+     */
740
+    public function set_status( $status ) {
741 741
         $old_status = $this->get_status();
742 742
 
743 743
         $this->set_prop( 'status', $status );
744 744
 
745
-		return array(
746
-			'from' => $old_status,
747
-			'to'   => $status,
748
-		);
745
+        return array(
746
+            'from' => $old_status,
747
+            'to'   => $status,
748
+        );
749 749
     }
750 750
 
751 751
     /**
752
-	 * Set plugin version when the item was created.
753
-	 *
754
-	 * @since 1.0.19
755
-	 */
756
-	public function set_version( $value ) {
757
-		$this->set_prop( 'version', $value );
752
+     * Set plugin version when the item was created.
753
+     *
754
+     * @since 1.0.19
755
+     */
756
+    public function set_version( $value ) {
757
+        $this->set_prop( 'version', $value );
758 758
     }
759 759
 
760 760
     /**
761
-	 * Set date when the item was created.
762
-	 *
763
-	 * @since 1.0.19
764
-	 * @param string $value Value to set.
761
+     * Set date when the item was created.
762
+     *
763
+     * @since 1.0.19
764
+     * @param string $value Value to set.
765 765
      * @return bool Whether or not the date was set.
766
-	 */
767
-	public function set_date_created( $value ) {
766
+     */
767
+    public function set_date_created( $value ) {
768 768
         $date = strtotime( $value );
769 769
 
770 770
         if ( $date ) {
@@ -777,13 +777,13 @@  discard block
 block discarded – undo
777 777
     }
778 778
 
779 779
     /**
780
-	 * Set date when the item was last modified.
781
-	 *
782
-	 * @since 1.0.19
783
-	 * @param string $value Value to set.
780
+     * Set date when the item was last modified.
781
+     *
782
+     * @since 1.0.19
783
+     * @param string $value Value to set.
784 784
      * @return bool Whether or not the date was set.
785
-	 */
786
-	public function set_date_modified( $value ) {
785
+     */
786
+    public function set_date_modified( $value ) {
787 787
         $date = strtotime( $value );
788 788
 
789 789
         if ( $date ) {
@@ -796,115 +796,115 @@  discard block
 block discarded – undo
796 796
     }
797 797
 
798 798
     /**
799
-	 * Set the item name.
800
-	 *
801
-	 * @since 1.0.19
802
-	 * @param  string $value New name.
803
-	 */
804
-	public function set_name( $value ) {
799
+     * Set the item name.
800
+     *
801
+     * @since 1.0.19
802
+     * @param  string $value New name.
803
+     */
804
+    public function set_name( $value ) {
805 805
         $name = sanitize_text_field( $value );
806
-		$this->set_prop( 'name', $name );
806
+        $this->set_prop( 'name', $name );
807 807
     }
808 808
 
809 809
     /**
810
-	 * Alias of self::set_name().
811
-	 *
812
-	 * @since 1.0.19
813
-	 * @param  string $value New name.
814
-	 */
815
-	public function set_title( $value ) {
816
-		$this->set_name( $value );
810
+     * Alias of self::set_name().
811
+     *
812
+     * @since 1.0.19
813
+     * @param  string $value New name.
814
+     */
815
+    public function set_title( $value ) {
816
+        $this->set_name( $value );
817 817
     }
818 818
 
819 819
     /**
820
-	 * Set the item description.
821
-	 *
822
-	 * @since 1.0.19
823
-	 * @param  string $value New description.
824
-	 */
825
-	public function set_description( $value ) {
826
-		$description = wp_kses_post( $value );
827
-		return $this->set_prop( 'description', $description );
820
+     * Set the item description.
821
+     *
822
+     * @since 1.0.19
823
+     * @param  string $value New description.
824
+     */
825
+    public function set_description( $value ) {
826
+        $description = wp_kses_post( $value );
827
+        return $this->set_prop( 'description', $description );
828 828
     }
829 829
 
830 830
     /**
831
-	 * Alias of self::set_description().
832
-	 *
833
-	 * @since 1.0.19
834
-	 * @param  string $value New description.
835
-	 */
836
-	public function set_excerpt( $value ) {
837
-		$this->set_description( $value );
831
+     * Alias of self::set_description().
832
+     *
833
+     * @since 1.0.19
834
+     * @param  string $value New description.
835
+     */
836
+    public function set_excerpt( $value ) {
837
+        $this->set_description( $value );
838 838
     }
839 839
 
840 840
     /**
841
-	 * Alias of self::set_description().
842
-	 *
843
-	 * @since 1.0.19
844
-	 * @param  string $value New description.
845
-	 */
846
-	public function set_summary( $value ) {
847
-		$this->set_description( $value );
841
+     * Alias of self::set_description().
842
+     *
843
+     * @since 1.0.19
844
+     * @param  string $value New description.
845
+     */
846
+    public function set_summary( $value ) {
847
+        $this->set_description( $value );
848 848
     }
849 849
 
850 850
     /**
851
-	 * Set the owner of the item.
852
-	 *
853
-	 * @since 1.0.19
854
-	 * @param  int $value New author.
855
-	 */
856
-	public function set_author( $value ) {
857
-		$this->set_prop( 'author', (int) $value );
858
-	}
851
+     * Set the owner of the item.
852
+     *
853
+     * @since 1.0.19
854
+     * @param  int $value New author.
855
+     */
856
+    public function set_author( $value ) {
857
+        $this->set_prop( 'author', (int) $value );
858
+    }
859 859
 	
860
-	/**
861
-	 * Alias of self::set_author().
862
-	 *
863
-	 * @since 1.0.19
864
-	 * @param  int $value New author.
865
-	 */
866
-	public function set_owner( $value ) {
867
-		$this->set_author( $value );
868
-    }
869
-
870
-    /**
871
-	 * Set the price of the item.
872
-	 *
873
-	 * @since 1.0.19
874
-	 * @param  float $value New price.
875
-	 */
876
-	public function set_price( $value ) {
860
+    /**
861
+     * Alias of self::set_author().
862
+     *
863
+     * @since 1.0.19
864
+     * @param  int $value New author.
865
+     */
866
+    public function set_owner( $value ) {
867
+        $this->set_author( $value );
868
+    }
869
+
870
+    /**
871
+     * Set the price of the item.
872
+     *
873
+     * @since 1.0.19
874
+     * @param  float $value New price.
875
+     */
876
+    public function set_price( $value ) {
877 877
         $this->set_prop( 'price', (float) wpinv_sanitize_amount( $value ) );
878 878
     }
879 879
 
880 880
     /**
881
-	 * Set the VAT rule of the item.
882
-	 *
883
-	 * @since 1.0.19
884
-	 * @param  string $value new rule.
885
-	 */
886
-	public function set_vat_rule( $value ) {
881
+     * Set the VAT rule of the item.
882
+     *
883
+     * @since 1.0.19
884
+     * @param  string $value new rule.
885
+     */
886
+    public function set_vat_rule( $value ) {
887 887
         $this->set_prop( 'vat_rule', $value );
888 888
     }
889 889
 
890 890
     /**
891
-	 * Set the VAT class of the item.
892
-	 *
893
-	 * @since 1.0.19
894
-	 * @param  string $value new class.
895
-	 */
896
-	public function set_vat_class( $value ) {
891
+     * Set the VAT class of the item.
892
+     *
893
+     * @since 1.0.19
894
+     * @param  string $value new class.
895
+     */
896
+    public function set_vat_class( $value ) {
897 897
         $this->set_prop( 'vat_class', $value );
898 898
     }
899 899
 
900 900
     /**
901
-	 * Set the type of the item.
902
-	 *
903
-	 * @since 1.0.19
904
-	 * @param  string $value new item type.
905
-	 * @return string
906
-	 */
907
-	public function set_type( $value ) {
901
+     * Set the type of the item.
902
+     *
903
+     * @since 1.0.19
904
+     * @param  string $value new item type.
905
+     * @return string
906
+     */
907
+    public function set_type( $value ) {
908 908
 
909 909
         if ( empty( $value ) ) {
910 910
             $value = 'custom';
@@ -914,132 +914,132 @@  discard block
 block discarded – undo
914 914
     }
915 915
 
916 916
     /**
917
-	 * Set the custom id of the item.
918
-	 *
919
-	 * @since 1.0.19
920
-	 * @param  string $value new custom id.
921
-	 */
922
-	public function set_custom_id( $value ) {
917
+     * Set the custom id of the item.
918
+     *
919
+     * @since 1.0.19
920
+     * @param  string $value new custom id.
921
+     */
922
+    public function set_custom_id( $value ) {
923 923
         $this->set_prop( 'custom_id', $value );
924 924
     }
925 925
 
926 926
     /**
927
-	 * Set the custom name of the item.
928
-	 *
929
-	 * @since 1.0.19
930
-	 * @param  string $value new custom name.
931
-	 */
932
-	public function set_custom_name( $value ) {
927
+     * Set the custom name of the item.
928
+     *
929
+     * @since 1.0.19
930
+     * @param  string $value new custom name.
931
+     */
932
+    public function set_custom_name( $value ) {
933 933
         $this->set_prop( 'custom_name', $value );
934 934
     }
935 935
 
936 936
     /**
937
-	 * Set the custom singular name of the item.
938
-	 *
939
-	 * @since 1.0.19
940
-	 * @param  string $value new custom singular name.
941
-	 */
942
-	public function set_custom_singular_name( $value ) {
937
+     * Set the custom singular name of the item.
938
+     *
939
+     * @since 1.0.19
940
+     * @param  string $value new custom singular name.
941
+     */
942
+    public function set_custom_singular_name( $value ) {
943 943
         $this->set_prop( 'custom_singular_name', $value );
944 944
     }
945 945
 
946 946
     /**
947
-	 * Sets if an item is editable..
948
-	 *
949
-	 * @since 1.0.19
950
-	 * @param  int|bool $value whether or not the item is editable.
951
-	 */
952
-	public function set_is_editable( $value ) {
953
-		$this->set_prop( 'is_editable', (int) $value );
947
+     * Sets if an item is editable..
948
+     *
949
+     * @since 1.0.19
950
+     * @param  int|bool $value whether or not the item is editable.
951
+     */
952
+    public function set_is_editable( $value ) {
953
+        $this->set_prop( 'is_editable', (int) $value );
954 954
     }
955 955
 
956 956
     /**
957
-	 * Sets if dynamic pricing is enabled.
958
-	 *
959
-	 * @since 1.0.19
960
-	 * @param  int|bool $value whether or not dynamic pricing is allowed.
961
-	 */
962
-	public function set_is_dynamic_pricing( $value ) {
957
+     * Sets if dynamic pricing is enabled.
958
+     *
959
+     * @since 1.0.19
960
+     * @param  int|bool $value whether or not dynamic pricing is allowed.
961
+     */
962
+    public function set_is_dynamic_pricing( $value ) {
963 963
         $this->set_prop( 'is_dynamic_pricing', (int) $value );
964 964
     }
965 965
 
966 966
     /**
967
-	 * Sets the minimum price if dynamic pricing is enabled.
968
-	 *
969
-	 * @since 1.0.19
970
-	 * @param  float $value minimum price.
971
-	 */
972
-	public function set_minimum_price( $value ) {
967
+     * Sets the minimum price if dynamic pricing is enabled.
968
+     *
969
+     * @since 1.0.19
970
+     * @param  float $value minimum price.
971
+     */
972
+    public function set_minimum_price( $value ) {
973 973
         $this->set_prop( 'minimum_price',  (float) wpinv_sanitize_amount( $value ) );
974 974
     }
975 975
 
976 976
     /**
977
-	 * Sets if this is a recurring item.
978
-	 *
979
-	 * @since 1.0.19
980
-	 * @param  int|bool $value whether or not dynamic pricing is allowed.
981
-	 */
982
-	public function set_is_recurring( $value ) {
977
+     * Sets if this is a recurring item.
978
+     *
979
+     * @since 1.0.19
980
+     * @param  int|bool $value whether or not dynamic pricing is allowed.
981
+     */
982
+    public function set_is_recurring( $value ) {
983 983
         $this->set_prop( 'is_recurring', (int) $value );
984 984
     }
985 985
 
986 986
     /**
987
-	 * Set the recurring period.
988
-	 *
989
-	 * @since 1.0.19
990
-	 * @param  string $value new period.
991
-	 */
992
-	public function set_recurring_period( $value ) {
987
+     * Set the recurring period.
988
+     *
989
+     * @since 1.0.19
990
+     * @param  string $value new period.
991
+     */
992
+    public function set_recurring_period( $value ) {
993 993
         $this->set_prop( 'recurring_period', $value );
994 994
     }
995 995
 
996 996
     /**
997
-	 * Set the recurring interval.
998
-	 *
999
-	 * @since 1.0.19
1000
-	 * @param  int $value recurring interval.
1001
-	 */
1002
-	public function set_recurring_interval( $value ) {
997
+     * Set the recurring interval.
998
+     *
999
+     * @since 1.0.19
1000
+     * @param  int $value recurring interval.
1001
+     */
1002
+    public function set_recurring_interval( $value ) {
1003 1003
         return $this->set_prop( 'recurring_interval', (int) $value );
1004 1004
     }
1005 1005
 
1006 1006
     /**
1007
-	 * Get the recurring limit.
1008
-	 * @since 1.0.19
1009
-	 * @param  int $value The recurring limit.
1010
-	 * @return int
1011
-	 */
1012
-	public function set_recurring_limit( $value ) {
1007
+     * Get the recurring limit.
1008
+     * @since 1.0.19
1009
+     * @param  int $value The recurring limit.
1010
+     * @return int
1011
+     */
1012
+    public function set_recurring_limit( $value ) {
1013 1013
         $this->set_prop( 'recurring_limit', (int) $value );
1014 1014
     }
1015 1015
 
1016 1016
     /**
1017
-	 * Checks if we have a free trial.
1018
-	 *
1019
-	 * @since 1.0.19
1020
-	 * @param  int|bool $value whether or not it has a free trial.
1021
-	 */
1022
-	public function set_is_free_trial( $value ) {
1017
+     * Checks if we have a free trial.
1018
+     *
1019
+     * @since 1.0.19
1020
+     * @param  int|bool $value whether or not it has a free trial.
1021
+     */
1022
+    public function set_is_free_trial( $value ) {
1023 1023
         $this->set_prop( 'is_free_trial', (int) $value );
1024 1024
     }
1025 1025
 
1026 1026
     /**
1027
-	 * Set the trial period.
1028
-	 *
1029
-	 * @since 1.0.19
1030
-	 * @param  string $value trial period.
1031
-	 */
1032
-	public function set_trial_period( $value ) {
1027
+     * Set the trial period.
1028
+     *
1029
+     * @since 1.0.19
1030
+     * @param  string $value trial period.
1031
+     */
1032
+    public function set_trial_period( $value ) {
1033 1033
         $this->set_prop( 'trial_period', $value );
1034 1034
     }
1035 1035
 
1036 1036
     /**
1037
-	 * Set the trial interval.
1038
-	 *
1039
-	 * @since 1.0.19
1040
-	 * @param  int $value trial interval.
1041
-	 */
1042
-	public function set_trial_interval( $value ) {
1037
+     * Set the trial interval.
1038
+     *
1039
+     * @since 1.0.19
1040
+     * @param  int $value trial interval.
1041
+     */
1042
+    public function set_trial_interval( $value ) {
1043 1043
         $this->set_prop( 'trial_interval', $value );
1044 1044
     }
1045 1045
 
@@ -1047,17 +1047,17 @@  discard block
 block discarded – undo
1047 1047
      * Create an item. For backwards compatibilty.
1048 1048
      * 
1049 1049
      * @deprecated
1050
-	 * @return int item id
1050
+     * @return int item id
1051 1051
      */
1052 1052
     public function create( $data = array() ) {
1053 1053
 
1054
-		// Set the properties.
1055
-		if ( is_array( $data ) ) {
1056
-			$this->set_props( $data );
1057
-		}
1054
+        // Set the properties.
1055
+        if ( is_array( $data ) ) {
1056
+            $this->set_props( $data );
1057
+        }
1058 1058
 
1059
-		// Save the item.
1060
-		return $this->save();
1059
+        // Save the item.
1060
+        return $this->save();
1061 1061
 
1062 1062
     }
1063 1063
 
@@ -1065,7 +1065,7 @@  discard block
 block discarded – undo
1065 1065
      * Updates an item. For backwards compatibilty.
1066 1066
      * 
1067 1067
      * @deprecated
1068
-	 * @return int item id
1068
+     * @return int item id
1069 1069
      */
1070 1070
     public function update( $data = array() ) {
1071 1071
         return $this->create( $data );
@@ -1081,93 +1081,93 @@  discard block
 block discarded – undo
1081 1081
 	*/
1082 1082
 
1083 1083
     /**
1084
-	 * Checks whether the item has enabled dynamic pricing.
1085
-	 *
1086
-	 * @since 1.0.19
1087
-	 * @return bool
1088
-	 */
1089
-	public function user_can_set_their_price() {
1084
+     * Checks whether the item has enabled dynamic pricing.
1085
+     *
1086
+     * @since 1.0.19
1087
+     * @return bool
1088
+     */
1089
+    public function user_can_set_their_price() {
1090 1090
         return (bool) $this->get_is_dynamic_pricing();
1091
-	}
1091
+    }
1092 1092
 	
1093
-	/**
1094
-	 * Checks whether the item is recurring.
1095
-	 *
1096
-	 * @since 1.0.19
1097
-	 * @return bool
1098
-	 */
1099
-	public function is_recurring() {
1093
+    /**
1094
+     * Checks whether the item is recurring.
1095
+     *
1096
+     * @since 1.0.19
1097
+     * @return bool
1098
+     */
1099
+    public function is_recurring() {
1100 1100
         return (bool) $this->get_is_recurring();
1101 1101
     }
1102 1102
 
1103 1103
     /**
1104
-	 * Checks whether the item has a free trial.
1105
-	 *
1106
-	 * @since 1.0.19
1107
-	 * @return bool
1108
-	 */
1104
+     * Checks whether the item has a free trial.
1105
+     *
1106
+     * @since 1.0.19
1107
+     * @return bool
1108
+     */
1109 1109
     public function has_free_trial() {
1110 1110
         $has_trial = $this->is_recurring() && (bool) $this->get_free_trial() ? true : false;
1111 1111
         return (bool) apply_filters( 'wpinv_item_has_free_trial', $has_trial, $this->ID, $this );
1112 1112
     }
1113 1113
 
1114 1114
     /**
1115
-	 * Checks whether the item is free.
1116
-	 *
1117
-	 * @since 1.0.19
1118
-	 * @return bool
1119
-	 */
1115
+     * Checks whether the item is free.
1116
+     *
1117
+     * @since 1.0.19
1118
+     * @return bool
1119
+     */
1120 1120
     public function is_free() {
1121 1121
         $is_free   = $this->get_price() == 0;
1122 1122
         return (bool) apply_filters( 'wpinv_is_free_item', $is_free, $this->ID, $this );
1123 1123
     }
1124 1124
 
1125 1125
     /**
1126
-	 * Checks the item status against a passed in status.
1127
-	 *
1128
-	 * @param array|string $status Status to check.
1129
-	 * @return bool
1130
-	 */
1131
-	public function has_status( $status ) {
1132
-		$has_status = ( is_array( $status ) && in_array( $this->get_status(), $status, true ) ) || $this->get_status() === $status;
1133
-		return (bool) apply_filters( 'getpaid_item_has_status', $has_status, $this, $status );
1126
+     * Checks the item status against a passed in status.
1127
+     *
1128
+     * @param array|string $status Status to check.
1129
+     * @return bool
1130
+     */
1131
+    public function has_status( $status ) {
1132
+        $has_status = ( is_array( $status ) && in_array( $this->get_status(), $status, true ) ) || $this->get_status() === $status;
1133
+        return (bool) apply_filters( 'getpaid_item_has_status', $has_status, $this, $status );
1134 1134
     }
1135 1135
 
1136 1136
     /**
1137
-	 * Checks the item type against a passed in types.
1138
-	 *
1139
-	 * @param array|string $type Type to check.
1140
-	 * @return bool
1141
-	 */
1142
-	public function is_type( $type ) {
1143
-		$is_type = ( is_array( $type ) && in_array( $this->get_type(), $type, true ) ) || $this->get_type() === $type;
1144
-		return (bool) apply_filters( 'getpaid_item_is_type', $is_type, $this, $type );
1145
-	}
1137
+     * Checks the item type against a passed in types.
1138
+     *
1139
+     * @param array|string $type Type to check.
1140
+     * @return bool
1141
+     */
1142
+    public function is_type( $type ) {
1143
+        $is_type = ( is_array( $type ) && in_array( $this->get_type(), $type, true ) ) || $this->get_type() === $type;
1144
+        return (bool) apply_filters( 'getpaid_item_is_type', $is_type, $this, $type );
1145
+    }
1146 1146
 
1147 1147
     /**
1148
-	 * Checks whether the item is editable.
1149
-	 *
1150
-	 * @since 1.0.19
1151
-	 * @return bool
1152
-	 */
1148
+     * Checks whether the item is editable.
1149
+     *
1150
+     * @since 1.0.19
1151
+     * @return bool
1152
+     */
1153 1153
     public function is_editable() {
1154 1154
         $is_editable = $this->get_is_editable();
1155 1155
         return (bool) apply_filters( 'wpinv_item_is_editable', $is_editable, $this->ID, $this );
1156
-	}
1156
+    }
1157 1157
 
1158
-	/**
1159
-	 * Returns an array of cart fees.
1160
-	 */
1161
-	public function get_fees() {
1158
+    /**
1159
+     * Returns an array of cart fees.
1160
+     */
1161
+    public function get_fees() {
1162 1162
         return array();
1163 1163
     }
1164 1164
 
1165 1165
     /**
1166
-	 * Checks whether the item is purchasable.
1167
-	 *
1168
-	 * @since 1.0.19
1169
-	 * @return bool
1170
-	 */
1166
+     * Checks whether the item is purchasable.
1167
+     *
1168
+     * @since 1.0.19
1169
+     * @return bool
1170
+     */
1171 1171
     public function can_purchase() {
1172 1172
         $can_purchase = $this->exists();
1173 1173
 
@@ -1179,11 +1179,11 @@  discard block
 block discarded – undo
1179 1179
     }
1180 1180
 
1181 1181
     /**
1182
-	 * Checks whether the item supports dynamic pricing.
1183
-	 *
1184
-	 * @since 1.0.19
1185
-	 * @return bool
1186
-	 */
1182
+     * Checks whether the item supports dynamic pricing.
1183
+     *
1184
+     * @since 1.0.19
1185
+     * @return bool
1186
+     */
1187 1187
     public function supports_dynamic_pricing() {
1188 1188
         return (bool) apply_filters( 'wpinv_item_supports_dynamic_pricing', true, $this );
1189 1189
     }
Please login to merge, or discard this patch.
Spacing   +211 added lines, -211 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
 
@@ -78,30 +78,30 @@  discard block
 block discarded – undo
78 78
 	 *
79 79
 	 * @param  int|object|WPInv_Item|WP_Post $item Item to read.
80 80
 	 */
81
-	public function __construct( $item = 0 ) {
82
-		parent::__construct( $item );
83
-
84
-		if ( ! empty( $item ) && is_numeric( $item ) && 'wpi_item' == get_post_type( $item ) ) {
85
-			$this->set_id( $item );
86
-		} elseif ( $item instanceof self ) {
87
-			$this->set_id( $item->get_id() );
88
-		} elseif ( ! empty( $item->ID ) ) {
89
-			$this->set_id( $item->ID );
90
-		} elseif ( is_scalar( $item ) && $item_id = self::get_item_id_by_field( $item, 'custom_id' ) ) {
91
-			$this->set_id( $item_id );
92
-		} elseif ( is_scalar( $item ) && $item_id = self::get_item_id_by_field( $item, 'name' ) ) {
93
-			$this->set_id( $item_id );
81
+	public function __construct($item = 0) {
82
+		parent::__construct($item);
83
+
84
+		if (!empty($item) && is_numeric($item) && 'wpi_item' == get_post_type($item)) {
85
+			$this->set_id($item);
86
+		} elseif ($item instanceof self) {
87
+			$this->set_id($item->get_id());
88
+		} elseif (!empty($item->ID)) {
89
+			$this->set_id($item->ID);
90
+		} elseif (is_scalar($item) && $item_id = self::get_item_id_by_field($item, 'custom_id')) {
91
+			$this->set_id($item_id);
92
+		} elseif (is_scalar($item) && $item_id = self::get_item_id_by_field($item, 'name')) {
93
+			$this->set_id($item_id);
94 94
 		} else {
95
-			$this->set_object_read( true );
95
+			$this->set_object_read(true);
96 96
 		}
97 97
 
98 98
         // Load the datastore.
99
-		$this->data_store = GetPaid_Data_Store::load( $this->data_store_name );
99
+		$this->data_store = GetPaid_Data_Store::load($this->data_store_name);
100 100
 
101
-		if ( $this->get_id() > 0 ) {
102
-            $this->post = get_post( $this->get_id() );
101
+		if ($this->get_id() > 0) {
102
+            $this->post = get_post($this->get_id());
103 103
             $this->ID   = $this->get_id();
104
-			$this->data_store->read( $this );
104
+			$this->data_store->read($this);
105 105
         }
106 106
 
107 107
 	}
@@ -128,8 +128,8 @@  discard block
 block discarded – undo
128 128
 	 * @param  string $context View or edit context.
129 129
 	 * @return int
130 130
 	 */
131
-	public function get_parent_id( $context = 'view' ) {
132
-		return (int) $this->get_prop( 'parent_id', $context );
131
+	public function get_parent_id($context = 'view') {
132
+		return (int) $this->get_prop('parent_id', $context);
133 133
     }
134 134
 
135 135
     /**
@@ -139,8 +139,8 @@  discard block
 block discarded – undo
139 139
 	 * @param  string $context View or edit context.
140 140
 	 * @return string
141 141
 	 */
142
-	public function get_status( $context = 'view' ) {
143
-		return $this->get_prop( 'status', $context );
142
+	public function get_status($context = 'view') {
143
+		return $this->get_prop('status', $context);
144 144
     }
145 145
 
146 146
     /**
@@ -150,8 +150,8 @@  discard block
 block discarded – undo
150 150
 	 * @param  string $context View or edit context.
151 151
 	 * @return string
152 152
 	 */
153
-	public function get_version( $context = 'view' ) {
154
-		return $this->get_prop( 'version', $context );
153
+	public function get_version($context = 'view') {
154
+		return $this->get_prop('version', $context);
155 155
     }
156 156
 
157 157
     /**
@@ -161,8 +161,8 @@  discard block
 block discarded – undo
161 161
 	 * @param  string $context View or edit context.
162 162
 	 * @return string
163 163
 	 */
164
-	public function get_date_created( $context = 'view' ) {
165
-		return $this->get_prop( 'date_created', $context );
164
+	public function get_date_created($context = 'view') {
165
+		return $this->get_prop('date_created', $context);
166 166
     }
167 167
 
168 168
     /**
@@ -172,11 +172,11 @@  discard block
 block discarded – undo
172 172
 	 * @param  string $context View or edit context.
173 173
 	 * @return string
174 174
 	 */
175
-	public function get_date_created_gmt( $context = 'view' ) {
176
-        $date = $this->get_date_created( $context );
175
+	public function get_date_created_gmt($context = 'view') {
176
+        $date = $this->get_date_created($context);
177 177
 
178
-        if ( $date ) {
179
-            $date = get_gmt_from_date( $date );
178
+        if ($date) {
179
+            $date = get_gmt_from_date($date);
180 180
         }
181 181
 		return $date;
182 182
     }
@@ -188,8 +188,8 @@  discard block
 block discarded – undo
188 188
 	 * @param  string $context View or edit context.
189 189
 	 * @return string
190 190
 	 */
191
-	public function get_date_modified( $context = 'view' ) {
192
-		return $this->get_prop( 'date_modified', $context );
191
+	public function get_date_modified($context = 'view') {
192
+		return $this->get_prop('date_modified', $context);
193 193
     }
194 194
 
195 195
     /**
@@ -199,11 +199,11 @@  discard block
 block discarded – undo
199 199
 	 * @param  string $context View or edit context.
200 200
 	 * @return string
201 201
 	 */
202
-	public function get_date_modified_gmt( $context = 'view' ) {
203
-        $date = $this->get_date_modified( $context );
202
+	public function get_date_modified_gmt($context = 'view') {
203
+        $date = $this->get_date_modified($context);
204 204
 
205
-        if ( $date ) {
206
-            $date = get_gmt_from_date( $date );
205
+        if ($date) {
206
+            $date = get_gmt_from_date($date);
207 207
         }
208 208
 		return $date;
209 209
     }
@@ -215,8 +215,8 @@  discard block
 block discarded – undo
215 215
 	 * @param  string $context View or edit context.
216 216
 	 * @return string
217 217
 	 */
218
-	public function get_name( $context = 'view' ) {
219
-		return $this->get_prop( 'name', $context );
218
+	public function get_name($context = 'view') {
219
+		return $this->get_prop('name', $context);
220 220
     }
221 221
 
222 222
     /**
@@ -226,8 +226,8 @@  discard block
 block discarded – undo
226 226
 	 * @param  string $context View or edit context.
227 227
 	 * @return string
228 228
 	 */
229
-	public function get_title( $context = 'view' ) {
230
-		return $this->get_name( $context );
229
+	public function get_title($context = 'view') {
230
+		return $this->get_name($context);
231 231
     }
232 232
 
233 233
     /**
@@ -237,8 +237,8 @@  discard block
 block discarded – undo
237 237
 	 * @param  string $context View or edit context.
238 238
 	 * @return string
239 239
 	 */
240
-	public function get_description( $context = 'view' ) {
241
-		return $this->get_prop( 'description', $context );
240
+	public function get_description($context = 'view') {
241
+		return $this->get_prop('description', $context);
242 242
     }
243 243
 
244 244
     /**
@@ -248,8 +248,8 @@  discard block
 block discarded – undo
248 248
 	 * @param  string $context View or edit context.
249 249
 	 * @return string
250 250
 	 */
251
-	public function get_excerpt( $context = 'view' ) {
252
-		return $this->get_description( $context );
251
+	public function get_excerpt($context = 'view') {
252
+		return $this->get_description($context);
253 253
     }
254 254
 
255 255
     /**
@@ -259,8 +259,8 @@  discard block
 block discarded – undo
259 259
 	 * @param  string $context View or edit context.
260 260
 	 * @return string
261 261
 	 */
262
-	public function get_summary( $context = 'view' ) {
263
-		return $this->get_description( $context );
262
+	public function get_summary($context = 'view') {
263
+		return $this->get_description($context);
264 264
     }
265 265
 
266 266
     /**
@@ -270,8 +270,8 @@  discard block
 block discarded – undo
270 270
 	 * @param  string $context View or edit context.
271 271
 	 * @return int
272 272
 	 */
273
-	public function get_author( $context = 'view' ) {
274
-		return (int) $this->get_prop( 'author', $context );
273
+	public function get_author($context = 'view') {
274
+		return (int) $this->get_prop('author', $context);
275 275
 	}
276 276
 	
277 277
 	/**
@@ -281,8 +281,8 @@  discard block
 block discarded – undo
281 281
 	 * @param  string $context View or edit context.
282 282
 	 * @return int
283 283
 	 */
284
-	public function get_owner( $context = 'view' ) {
285
-		return $this->get_author( $context );
284
+	public function get_owner($context = 'view') {
285
+		return $this->get_author($context);
286 286
     }
287 287
 
288 288
     /**
@@ -292,8 +292,8 @@  discard block
 block discarded – undo
292 292
 	 * @param  string $context View or edit context.
293 293
 	 * @return float
294 294
 	 */
295
-	public function get_price( $context = 'view' ) {
296
-        return wpinv_sanitize_amount( $this->get_prop( 'price', $context ) );
295
+	public function get_price($context = 'view') {
296
+        return wpinv_sanitize_amount($this->get_prop('price', $context));
297 297
 	}
298 298
 	
299 299
 	/**
@@ -303,15 +303,15 @@  discard block
 block discarded – undo
303 303
 	 * @param  string $context View or edit context.
304 304
 	 * @return float
305 305
 	 */
306
-	public function get_initial_price( $context = 'view' ) {
306
+	public function get_initial_price($context = 'view') {
307 307
 
308
-		$price = (float) $this->get_price( $context );
308
+		$price = (float) $this->get_price($context);
309 309
 
310
-		if ( $this->has_free_trial() ) {
310
+		if ($this->has_free_trial()) {
311 311
 			$price = 0;
312 312
 		}
313 313
 
314
-        return wpinv_sanitize_amount( apply_filters( 'wpinv_get_initial_item_price', $price, $this ) );
314
+        return wpinv_sanitize_amount(apply_filters('wpinv_get_initial_item_price', $price, $this));
315 315
     }
316 316
 
317 317
     /**
@@ -322,7 +322,7 @@  discard block
 block discarded – undo
322 322
 	 * @return string
323 323
 	 */
324 324
     public function get_the_price() {
325
-        return wpinv_price( $this->get_price() );
325
+        return wpinv_price($this->get_price());
326 326
 	}
327 327
 
328 328
 	/**
@@ -333,7 +333,7 @@  discard block
 block discarded – undo
333 333
 	 * @return string
334 334
 	 */
335 335
     public function get_the_initial_price() {
336
-        return wpinv_price( $this->get_initial_price() );
336
+        return wpinv_price($this->get_initial_price());
337 337
     }
338 338
 
339 339
     /**
@@ -343,8 +343,8 @@  discard block
 block discarded – undo
343 343
 	 * @param  string $context View or edit context.
344 344
 	 * @return string
345 345
 	 */
346
-	public function get_vat_rule( $context = 'view' ) {
347
-        return $this->get_prop( 'vat_rule', $context );
346
+	public function get_vat_rule($context = 'view') {
347
+        return $this->get_prop('vat_rule', $context);
348 348
     }
349 349
 
350 350
     /**
@@ -354,8 +354,8 @@  discard block
 block discarded – undo
354 354
 	 * @param  string $context View or edit context.
355 355
 	 * @return string
356 356
 	 */
357
-	public function get_vat_class( $context = 'view' ) {
358
-        return $this->get_prop( 'vat_class', $context );
357
+	public function get_vat_class($context = 'view') {
358
+        return $this->get_prop('vat_class', $context);
359 359
     }
360 360
 
361 361
     /**
@@ -365,8 +365,8 @@  discard block
 block discarded – undo
365 365
 	 * @param  string $context View or edit context.
366 366
 	 * @return string
367 367
 	 */
368
-	public function get_type( $context = 'view' ) {
369
-        return $this->get_prop( 'type', $context );
368
+	public function get_type($context = 'view') {
369
+        return $this->get_prop('type', $context);
370 370
     }
371 371
 
372 372
     /**
@@ -376,8 +376,8 @@  discard block
 block discarded – undo
376 376
 	 * @param  string $context View or edit context.
377 377
 	 * @return string
378 378
 	 */
379
-	public function get_custom_id( $context = 'view' ) {
380
-        return $this->get_prop( 'custom_id', $context );
379
+	public function get_custom_id($context = 'view') {
380
+        return $this->get_prop('custom_id', $context);
381 381
     }
382 382
 
383 383
     /**
@@ -387,8 +387,8 @@  discard block
 block discarded – undo
387 387
 	 * @param  string $context View or edit context.
388 388
 	 * @return string
389 389
 	 */
390
-	public function get_custom_name( $context = 'view' ) {
391
-        return $this->get_prop( 'custom_name', $context );
390
+	public function get_custom_name($context = 'view') {
391
+        return $this->get_prop('custom_name', $context);
392 392
     }
393 393
 
394 394
     /**
@@ -398,8 +398,8 @@  discard block
 block discarded – undo
398 398
 	 * @param  string $context View or edit context.
399 399
 	 * @return string
400 400
 	 */
401
-	public function get_custom_singular_name( $context = 'view' ) {
402
-        return $this->get_prop( 'custom_singular_name', $context );
401
+	public function get_custom_singular_name($context = 'view') {
402
+        return $this->get_prop('custom_singular_name', $context);
403 403
     }
404 404
 
405 405
     /**
@@ -409,8 +409,8 @@  discard block
 block discarded – undo
409 409
 	 * @param  string $context View or edit context.
410 410
 	 * @return int
411 411
 	 */
412
-	public function get_is_editable( $context = 'view' ) {
413
-        return (int) $this->get_prop( 'is_editable', $context );
412
+	public function get_is_editable($context = 'view') {
413
+        return (int) $this->get_prop('is_editable', $context);
414 414
     }
415 415
 
416 416
     /**
@@ -420,8 +420,8 @@  discard block
 block discarded – undo
420 420
 	 * @param  string $context View or edit context.
421 421
 	 * @return int
422 422
 	 */
423
-	public function get_editable( $context = 'view' ) {
424
-		return $this->get_is_editable( $context );
423
+	public function get_editable($context = 'view') {
424
+		return $this->get_is_editable($context);
425 425
     }
426 426
 
427 427
     /**
@@ -431,8 +431,8 @@  discard block
 block discarded – undo
431 431
 	 * @param  string $context View or edit context.
432 432
 	 * @return int
433 433
 	 */
434
-	public function get_is_dynamic_pricing( $context = 'view' ) {
435
-        return (int) $this->get_prop( 'is_dynamic_pricing', $context );
434
+	public function get_is_dynamic_pricing($context = 'view') {
435
+        return (int) $this->get_prop('is_dynamic_pricing', $context);
436 436
     }
437 437
 
438 438
     /**
@@ -442,8 +442,8 @@  discard block
 block discarded – undo
442 442
 	 * @param  string $context View or edit context.
443 443
 	 * @return float
444 444
 	 */
445
-	public function get_minimum_price( $context = 'view' ) {
446
-        return wpinv_sanitize_amount( $this->get_prop( 'minimum_price', $context ) );
445
+	public function get_minimum_price($context = 'view') {
446
+        return wpinv_sanitize_amount($this->get_prop('minimum_price', $context));
447 447
     }
448 448
 
449 449
     /**
@@ -453,8 +453,8 @@  discard block
 block discarded – undo
453 453
 	 * @param  string $context View or edit context.
454 454
 	 * @return int
455 455
 	 */
456
-	public function get_is_recurring( $context = 'view' ) {
457
-        return (int) $this->get_prop( 'is_recurring', $context );
456
+	public function get_is_recurring($context = 'view') {
457
+        return (int) $this->get_prop('is_recurring', $context);
458 458
 	}
459 459
 	
460 460
 	/**
@@ -464,9 +464,9 @@  discard block
 block discarded – undo
464 464
 	 * @param  string $context View or edit context.
465 465
 	 * @return float
466 466
 	 */
467
-	public function get_recurring_price( $context = 'view' ) {
468
-		$price = $this->get_price( $context );
469
-        return wpinv_sanitize_amount( apply_filters( 'wpinv_get_recurring_item_price', $price, $this->ID ) );
467
+	public function get_recurring_price($context = 'view') {
468
+		$price = $this->get_price($context);
469
+        return wpinv_sanitize_amount(apply_filters('wpinv_get_recurring_item_price', $price, $this->ID));
470 470
 	}
471 471
 
472 472
 	/**
@@ -477,7 +477,7 @@  discard block
 block discarded – undo
477 477
 	 * @return string
478 478
 	 */
479 479
     public function get_the_recurring_price() {
480
-        return wpinv_price( $this->get_recurring_price() );
480
+        return wpinv_price($this->get_recurring_price());
481 481
 	}
482 482
 
483 483
 	/**
@@ -498,15 +498,15 @@  discard block
 block discarded – undo
498 498
 		$period   = $this->get_recurring_period();
499 499
 		$interval = $this->get_recurring_interval();
500 500
 
501
-		if ( $this->has_free_trial() ) {
501
+		if ($this->has_free_trial()) {
502 502
 			$period   = $this->get_trial_period();
503 503
 			$interval = $this->get_trial_interval();
504 504
 		}
505 505
 
506
-		$period       = $periods[ $period ];
507
-		$interval     = empty( $interval ) ? 1 : $interval;
508
-		$next_renewal = strtotime( "+$interval $period", current_time( 'timestamp' ) );
509
-        return apply_filters( 'wpinv_get_first_renewal_date', $next_renewal, $this );
506
+		$period       = $periods[$period];
507
+		$interval     = empty($interval) ? 1 : $interval;
508
+		$next_renewal = strtotime("+$interval $period", current_time('timestamp'));
509
+        return apply_filters('wpinv_get_first_renewal_date', $next_renewal, $this);
510 510
     }
511 511
 
512 512
     /**
@@ -516,14 +516,14 @@  discard block
 block discarded – undo
516 516
 	 * @param  bool $full Return abbreviation or in full.
517 517
 	 * @return string
518 518
 	 */
519
-	public function get_recurring_period( $full = false ) {
520
-        $period = $this->get_prop( 'recurring_period', 'view' );
519
+	public function get_recurring_period($full = false) {
520
+        $period = $this->get_prop('recurring_period', 'view');
521 521
 
522
-        if ( $full && ! is_bool( $full ) ) {
522
+        if ($full && !is_bool($full)) {
523 523
             $full = false;
524 524
         }
525 525
 
526
-        return getpaid_sanitize_recurring_period( $period, $full );
526
+        return getpaid_sanitize_recurring_period($period, $full);
527 527
     }
528 528
 
529 529
     /**
@@ -533,9 +533,9 @@  discard block
 block discarded – undo
533 533
 	 * @param  string $context View or edit context.
534 534
 	 * @return int
535 535
 	 */
536
-	public function get_recurring_interval( $context = 'view' ) {
537
-		$interval = absint( $this->get_prop( 'recurring_interval', $context ) );
538
-		return max( 1, $interval );
536
+	public function get_recurring_interval($context = 'view') {
537
+		$interval = absint($this->get_prop('recurring_interval', $context));
538
+		return max(1, $interval);
539 539
     }
540 540
 
541 541
     /**
@@ -545,8 +545,8 @@  discard block
 block discarded – undo
545 545
 	 * @param  string $context View or edit context.
546 546
 	 * @return int
547 547
 	 */
548
-	public function get_recurring_limit( $context = 'view' ) {
549
-        return (int) $this->get_prop( 'recurring_limit', $context );
548
+	public function get_recurring_limit($context = 'view') {
549
+        return (int) $this->get_prop('recurring_limit', $context);
550 550
     }
551 551
 
552 552
     /**
@@ -556,8 +556,8 @@  discard block
 block discarded – undo
556 556
 	 * @param  string $context View or edit context.
557 557
 	 * @return int
558 558
 	 */
559
-	public function get_is_free_trial( $context = 'view' ) {
560
-        return (int) $this->get_prop( 'is_free_trial', $context );
559
+	public function get_is_free_trial($context = 'view') {
560
+        return (int) $this->get_prop('is_free_trial', $context);
561 561
     }
562 562
 
563 563
     /**
@@ -567,8 +567,8 @@  discard block
 block discarded – undo
567 567
 	 * @param  string $context View or edit context.
568 568
 	 * @return int
569 569
 	 */
570
-	public function get_free_trial( $context = 'view' ) {
571
-        return $this->get_is_free_trial( $context );
570
+	public function get_free_trial($context = 'view') {
571
+        return $this->get_is_free_trial($context);
572 572
     }
573 573
 
574 574
     /**
@@ -578,14 +578,14 @@  discard block
 block discarded – undo
578 578
 	 * @param  bool $full Return abbreviation or in full.
579 579
 	 * @return string
580 580
 	 */
581
-	public function get_trial_period( $full = false ) {
582
-        $period = $this->get_prop( 'trial_period', 'view' );
581
+	public function get_trial_period($full = false) {
582
+        $period = $this->get_prop('trial_period', 'view');
583 583
 
584
-        if ( $full && ! is_bool( $full ) ) {
584
+        if ($full && !is_bool($full)) {
585 585
             $full = false;
586 586
         }
587 587
 
588
-        return getpaid_sanitize_recurring_period( $period, $full );
588
+        return getpaid_sanitize_recurring_period($period, $full);
589 589
     }
590 590
 
591 591
     /**
@@ -595,8 +595,8 @@  discard block
 block discarded – undo
595 595
 	 * @param  string $context View or edit context.
596 596
 	 * @return int
597 597
 	 */
598
-	public function get_trial_interval( $context = 'view' ) {
599
-        return (int) $this->get_prop( 'trial_interval', $context );
598
+	public function get_trial_interval($context = 'view') {
599
+        return (int) $this->get_prop('trial_interval', $context);
600 600
 	}
601 601
 	
602 602
 	/**
@@ -606,7 +606,7 @@  discard block
 block discarded – undo
606 606
 	 * @return string
607 607
 	 */
608 608
 	public function get_edit_url() {
609
-        return get_edit_post_link( $this->get_id() );
609
+        return get_edit_post_link($this->get_id());
610 610
 	}
611 611
 
612 612
 	/**
@@ -620,35 +620,35 @@  discard block
 block discarded – undo
620 620
 	 * @since 1.0.15
621 621
 	 * @return int
622 622
 	 */
623
-	public static function get_item_id_by_field( $value, $field = 'custom_id', $type = '' ) {
623
+	public static function get_item_id_by_field($value, $field = 'custom_id', $type = '') {
624 624
 
625 625
 		// Trim the value.
626
-		$value = sanitize_text_field( $value );
627
-		if ( empty( $value ) ) {
626
+		$value = sanitize_text_field($value);
627
+		if (empty($value)) {
628 628
 			return 0;
629 629
 		}
630 630
 
631 631
         // Valid fields.
632
-        $fields = array( 'custom_id', 'name', 'slug' );
632
+        $fields = array('custom_id', 'name', 'slug');
633 633
 
634 634
 		// Ensure a field has been passed.
635
-		if ( empty( $field ) || ! in_array( $field, $fields ) ) {
635
+		if (empty($field) || !in_array($field, $fields)) {
636 636
 			return 0;
637 637
 		}
638 638
 
639
-		if ( $field == 'name' ) {
639
+		if ($field == 'name') {
640 640
 			$field = 'slug';
641 641
 		}
642 642
 
643 643
 		// Maybe retrieve from the cache.
644
-		$item_id = wp_cache_get( $value, "getpaid_{$type}_item_{$field}s_to_item_ids" );
645
-		if ( ! empty( $item_id ) ) {
644
+		$item_id = wp_cache_get($value, "getpaid_{$type}_item_{$field}s_to_item_ids");
645
+		if (!empty($item_id)) {
646 646
 			return $item_id;
647 647
 		}
648 648
 
649 649
 		// Fetch from the db.
650 650
 		$items = array();
651
-		if ( $field == 'slug' ) {
651
+		if ($field == 'slug') {
652 652
 			$items = get_posts(
653 653
 				array(
654 654
 					'post_type'      => 'wpi_item',
@@ -659,7 +659,7 @@  discard block
 block discarded – undo
659 659
 			);
660 660
 		}
661 661
 
662
-		if ( $field =='custom_id' ) {
662
+		if ($field == 'custom_id') {
663 663
 			$items = get_posts(
664 664
 				array(
665 665
 					'post_type'      => 'wpi_item',
@@ -679,12 +679,12 @@  discard block
 block discarded – undo
679 679
 			);
680 680
 		}
681 681
 
682
-		if ( empty( $items ) ) {
682
+		if (empty($items)) {
683 683
 			return 0;
684 684
 		}
685 685
 
686 686
 		// Update the cache with our data
687
-		wp_cache_set( $value, $items[0]->ID, "getpaid_{$type}_item_{$field}s_to_item_ids" );
687
+		wp_cache_set($value, $items[0]->ID, "getpaid_{$type}_item_{$field}s_to_item_ids");
688 688
 
689 689
 		return $items[0]->ID;
690 690
     }
@@ -692,19 +692,19 @@  discard block
 block discarded – undo
692 692
     /**
693 693
      * Margic method for retrieving a property.
694 694
      */
695
-    public function __get( $key ) {
695
+    public function __get($key) {
696 696
 
697 697
         // Check if we have a helper method for that.
698
-        if ( method_exists( $this, 'get_' . $key ) ) {
699
-            return call_user_func( array( $this, 'get_' . $key ) );
698
+        if (method_exists($this, 'get_' . $key)) {
699
+            return call_user_func(array($this, 'get_' . $key));
700 700
         }
701 701
 
702 702
         // Check if the key is in the associated $post object.
703
-        if ( ! empty( $this->post ) && isset( $this->post->$key ) ) {
703
+        if (!empty($this->post) && isset($this->post->$key)) {
704 704
             return $this->post->$key;
705 705
         }
706 706
 
707
-        return $this->get_prop( $key );
707
+        return $this->get_prop($key);
708 708
 
709 709
     }
710 710
 
@@ -723,11 +723,11 @@  discard block
 block discarded – undo
723 723
 	 *
724 724
 	 * @since 1.0.19
725 725
 	 */
726
-	public function set_parent_id( $value ) {
727
-		if ( $value && ( $value === $this->get_id() || ! get_post( $value ) ) ) {
726
+	public function set_parent_id($value) {
727
+		if ($value && ($value === $this->get_id() || !get_post($value))) {
728 728
 			return;
729 729
 		}
730
-		$this->set_prop( 'parent_id', absint( $value ) );
730
+		$this->set_prop('parent_id', absint($value));
731 731
 	}
732 732
 
733 733
     /**
@@ -737,10 +737,10 @@  discard block
 block discarded – undo
737 737
 	 * @param  string $status New status.
738 738
 	 * @return array details of change.
739 739
 	 */
740
-	public function set_status( $status ) {
740
+	public function set_status($status) {
741 741
         $old_status = $this->get_status();
742 742
 
743
-        $this->set_prop( 'status', $status );
743
+        $this->set_prop('status', $status);
744 744
 
745 745
 		return array(
746 746
 			'from' => $old_status,
@@ -753,8 +753,8 @@  discard block
 block discarded – undo
753 753
 	 *
754 754
 	 * @since 1.0.19
755 755
 	 */
756
-	public function set_version( $value ) {
757
-		$this->set_prop( 'version', $value );
756
+	public function set_version($value) {
757
+		$this->set_prop('version', $value);
758 758
     }
759 759
 
760 760
     /**
@@ -764,11 +764,11 @@  discard block
 block discarded – undo
764 764
 	 * @param string $value Value to set.
765 765
      * @return bool Whether or not the date was set.
766 766
 	 */
767
-	public function set_date_created( $value ) {
768
-        $date = strtotime( $value );
767
+	public function set_date_created($value) {
768
+        $date = strtotime($value);
769 769
 
770
-        if ( $date ) {
771
-            $this->set_prop( 'date_created', date( 'Y-m-d H:i:s', $date ) );
770
+        if ($date) {
771
+            $this->set_prop('date_created', date('Y-m-d H:i:s', $date));
772 772
             return true;
773 773
         }
774 774
 
@@ -783,11 +783,11 @@  discard block
 block discarded – undo
783 783
 	 * @param string $value Value to set.
784 784
      * @return bool Whether or not the date was set.
785 785
 	 */
786
-	public function set_date_modified( $value ) {
787
-        $date = strtotime( $value );
786
+	public function set_date_modified($value) {
787
+        $date = strtotime($value);
788 788
 
789
-        if ( $date ) {
790
-            $this->set_prop( 'date_modified', date( 'Y-m-d H:i:s', $date ) );
789
+        if ($date) {
790
+            $this->set_prop('date_modified', date('Y-m-d H:i:s', $date));
791 791
             return true;
792 792
         }
793 793
 
@@ -801,9 +801,9 @@  discard block
 block discarded – undo
801 801
 	 * @since 1.0.19
802 802
 	 * @param  string $value New name.
803 803
 	 */
804
-	public function set_name( $value ) {
805
-        $name = sanitize_text_field( $value );
806
-		$this->set_prop( 'name', $name );
804
+	public function set_name($value) {
805
+        $name = sanitize_text_field($value);
806
+		$this->set_prop('name', $name);
807 807
     }
808 808
 
809 809
     /**
@@ -812,8 +812,8 @@  discard block
 block discarded – undo
812 812
 	 * @since 1.0.19
813 813
 	 * @param  string $value New name.
814 814
 	 */
815
-	public function set_title( $value ) {
816
-		$this->set_name( $value );
815
+	public function set_title($value) {
816
+		$this->set_name($value);
817 817
     }
818 818
 
819 819
     /**
@@ -822,9 +822,9 @@  discard block
 block discarded – undo
822 822
 	 * @since 1.0.19
823 823
 	 * @param  string $value New description.
824 824
 	 */
825
-	public function set_description( $value ) {
826
-		$description = wp_kses_post( $value );
827
-		return $this->set_prop( 'description', $description );
825
+	public function set_description($value) {
826
+		$description = wp_kses_post($value);
827
+		return $this->set_prop('description', $description);
828 828
     }
829 829
 
830 830
     /**
@@ -833,8 +833,8 @@  discard block
 block discarded – undo
833 833
 	 * @since 1.0.19
834 834
 	 * @param  string $value New description.
835 835
 	 */
836
-	public function set_excerpt( $value ) {
837
-		$this->set_description( $value );
836
+	public function set_excerpt($value) {
837
+		$this->set_description($value);
838 838
     }
839 839
 
840 840
     /**
@@ -843,8 +843,8 @@  discard block
 block discarded – undo
843 843
 	 * @since 1.0.19
844 844
 	 * @param  string $value New description.
845 845
 	 */
846
-	public function set_summary( $value ) {
847
-		$this->set_description( $value );
846
+	public function set_summary($value) {
847
+		$this->set_description($value);
848 848
     }
849 849
 
850 850
     /**
@@ -853,8 +853,8 @@  discard block
 block discarded – undo
853 853
 	 * @since 1.0.19
854 854
 	 * @param  int $value New author.
855 855
 	 */
856
-	public function set_author( $value ) {
857
-		$this->set_prop( 'author', (int) $value );
856
+	public function set_author($value) {
857
+		$this->set_prop('author', (int) $value);
858 858
 	}
859 859
 	
860 860
 	/**
@@ -863,8 +863,8 @@  discard block
 block discarded – undo
863 863
 	 * @since 1.0.19
864 864
 	 * @param  int $value New author.
865 865
 	 */
866
-	public function set_owner( $value ) {
867
-		$this->set_author( $value );
866
+	public function set_owner($value) {
867
+		$this->set_author($value);
868 868
     }
869 869
 
870 870
     /**
@@ -873,8 +873,8 @@  discard block
 block discarded – undo
873 873
 	 * @since 1.0.19
874 874
 	 * @param  float $value New price.
875 875
 	 */
876
-	public function set_price( $value ) {
877
-        $this->set_prop( 'price', (float) wpinv_sanitize_amount( $value ) );
876
+	public function set_price($value) {
877
+        $this->set_prop('price', (float) wpinv_sanitize_amount($value));
878 878
     }
879 879
 
880 880
     /**
@@ -883,8 +883,8 @@  discard block
 block discarded – undo
883 883
 	 * @since 1.0.19
884 884
 	 * @param  string $value new rule.
885 885
 	 */
886
-	public function set_vat_rule( $value ) {
887
-        $this->set_prop( 'vat_rule', $value );
886
+	public function set_vat_rule($value) {
887
+        $this->set_prop('vat_rule', $value);
888 888
     }
889 889
 
890 890
     /**
@@ -893,8 +893,8 @@  discard block
 block discarded – undo
893 893
 	 * @since 1.0.19
894 894
 	 * @param  string $value new class.
895 895
 	 */
896
-	public function set_vat_class( $value ) {
897
-        $this->set_prop( 'vat_class', $value );
896
+	public function set_vat_class($value) {
897
+        $this->set_prop('vat_class', $value);
898 898
     }
899 899
 
900 900
     /**
@@ -904,13 +904,13 @@  discard block
 block discarded – undo
904 904
 	 * @param  string $value new item type.
905 905
 	 * @return string
906 906
 	 */
907
-	public function set_type( $value ) {
907
+	public function set_type($value) {
908 908
 
909
-        if ( empty( $value ) ) {
909
+        if (empty($value)) {
910 910
             $value = 'custom';
911 911
         }
912 912
 
913
-        $this->set_prop( 'type', $value );
913
+        $this->set_prop('type', $value);
914 914
     }
915 915
 
916 916
     /**
@@ -919,8 +919,8 @@  discard block
 block discarded – undo
919 919
 	 * @since 1.0.19
920 920
 	 * @param  string $value new custom id.
921 921
 	 */
922
-	public function set_custom_id( $value ) {
923
-        $this->set_prop( 'custom_id', $value );
922
+	public function set_custom_id($value) {
923
+        $this->set_prop('custom_id', $value);
924 924
     }
925 925
 
926 926
     /**
@@ -929,8 +929,8 @@  discard block
 block discarded – undo
929 929
 	 * @since 1.0.19
930 930
 	 * @param  string $value new custom name.
931 931
 	 */
932
-	public function set_custom_name( $value ) {
933
-        $this->set_prop( 'custom_name', $value );
932
+	public function set_custom_name($value) {
933
+        $this->set_prop('custom_name', $value);
934 934
     }
935 935
 
936 936
     /**
@@ -939,8 +939,8 @@  discard block
 block discarded – undo
939 939
 	 * @since 1.0.19
940 940
 	 * @param  string $value new custom singular name.
941 941
 	 */
942
-	public function set_custom_singular_name( $value ) {
943
-        $this->set_prop( 'custom_singular_name', $value );
942
+	public function set_custom_singular_name($value) {
943
+        $this->set_prop('custom_singular_name', $value);
944 944
     }
945 945
 
946 946
     /**
@@ -949,8 +949,8 @@  discard block
 block discarded – undo
949 949
 	 * @since 1.0.19
950 950
 	 * @param  int|bool $value whether or not the item is editable.
951 951
 	 */
952
-	public function set_is_editable( $value ) {
953
-		$this->set_prop( 'is_editable', (int) $value );
952
+	public function set_is_editable($value) {
953
+		$this->set_prop('is_editable', (int) $value);
954 954
     }
955 955
 
956 956
     /**
@@ -959,8 +959,8 @@  discard block
 block discarded – undo
959 959
 	 * @since 1.0.19
960 960
 	 * @param  int|bool $value whether or not dynamic pricing is allowed.
961 961
 	 */
962
-	public function set_is_dynamic_pricing( $value ) {
963
-        $this->set_prop( 'is_dynamic_pricing', (int) $value );
962
+	public function set_is_dynamic_pricing($value) {
963
+        $this->set_prop('is_dynamic_pricing', (int) $value);
964 964
     }
965 965
 
966 966
     /**
@@ -969,8 +969,8 @@  discard block
 block discarded – undo
969 969
 	 * @since 1.0.19
970 970
 	 * @param  float $value minimum price.
971 971
 	 */
972
-	public function set_minimum_price( $value ) {
973
-        $this->set_prop( 'minimum_price',  (float) wpinv_sanitize_amount( $value ) );
972
+	public function set_minimum_price($value) {
973
+        $this->set_prop('minimum_price', (float) wpinv_sanitize_amount($value));
974 974
     }
975 975
 
976 976
     /**
@@ -979,8 +979,8 @@  discard block
 block discarded – undo
979 979
 	 * @since 1.0.19
980 980
 	 * @param  int|bool $value whether or not dynamic pricing is allowed.
981 981
 	 */
982
-	public function set_is_recurring( $value ) {
983
-        $this->set_prop( 'is_recurring', (int) $value );
982
+	public function set_is_recurring($value) {
983
+        $this->set_prop('is_recurring', (int) $value);
984 984
     }
985 985
 
986 986
     /**
@@ -989,8 +989,8 @@  discard block
 block discarded – undo
989 989
 	 * @since 1.0.19
990 990
 	 * @param  string $value new period.
991 991
 	 */
992
-	public function set_recurring_period( $value ) {
993
-        $this->set_prop( 'recurring_period', $value );
992
+	public function set_recurring_period($value) {
993
+        $this->set_prop('recurring_period', $value);
994 994
     }
995 995
 
996 996
     /**
@@ -999,8 +999,8 @@  discard block
 block discarded – undo
999 999
 	 * @since 1.0.19
1000 1000
 	 * @param  int $value recurring interval.
1001 1001
 	 */
1002
-	public function set_recurring_interval( $value ) {
1003
-        return $this->set_prop( 'recurring_interval', (int) $value );
1002
+	public function set_recurring_interval($value) {
1003
+        return $this->set_prop('recurring_interval', (int) $value);
1004 1004
     }
1005 1005
 
1006 1006
     /**
@@ -1009,8 +1009,8 @@  discard block
 block discarded – undo
1009 1009
 	 * @param  int $value The recurring limit.
1010 1010
 	 * @return int
1011 1011
 	 */
1012
-	public function set_recurring_limit( $value ) {
1013
-        $this->set_prop( 'recurring_limit', (int) $value );
1012
+	public function set_recurring_limit($value) {
1013
+        $this->set_prop('recurring_limit', (int) $value);
1014 1014
     }
1015 1015
 
1016 1016
     /**
@@ -1019,8 +1019,8 @@  discard block
 block discarded – undo
1019 1019
 	 * @since 1.0.19
1020 1020
 	 * @param  int|bool $value whether or not it has a free trial.
1021 1021
 	 */
1022
-	public function set_is_free_trial( $value ) {
1023
-        $this->set_prop( 'is_free_trial', (int) $value );
1022
+	public function set_is_free_trial($value) {
1023
+        $this->set_prop('is_free_trial', (int) $value);
1024 1024
     }
1025 1025
 
1026 1026
     /**
@@ -1029,8 +1029,8 @@  discard block
 block discarded – undo
1029 1029
 	 * @since 1.0.19
1030 1030
 	 * @param  string $value trial period.
1031 1031
 	 */
1032
-	public function set_trial_period( $value ) {
1033
-        $this->set_prop( 'trial_period', $value );
1032
+	public function set_trial_period($value) {
1033
+        $this->set_prop('trial_period', $value);
1034 1034
     }
1035 1035
 
1036 1036
     /**
@@ -1039,8 +1039,8 @@  discard block
 block discarded – undo
1039 1039
 	 * @since 1.0.19
1040 1040
 	 * @param  int $value trial interval.
1041 1041
 	 */
1042
-	public function set_trial_interval( $value ) {
1043
-        $this->set_prop( 'trial_interval', $value );
1042
+	public function set_trial_interval($value) {
1043
+        $this->set_prop('trial_interval', $value);
1044 1044
     }
1045 1045
 
1046 1046
     /**
@@ -1049,11 +1049,11 @@  discard block
 block discarded – undo
1049 1049
      * @deprecated
1050 1050
 	 * @return int item id
1051 1051
      */
1052
-    public function create( $data = array() ) {
1052
+    public function create($data = array()) {
1053 1053
 
1054 1054
 		// Set the properties.
1055
-		if ( is_array( $data ) ) {
1056
-			$this->set_props( $data );
1055
+		if (is_array($data)) {
1056
+			$this->set_props($data);
1057 1057
 		}
1058 1058
 
1059 1059
 		// Save the item.
@@ -1067,8 +1067,8 @@  discard block
 block discarded – undo
1067 1067
      * @deprecated
1068 1068
 	 * @return int item id
1069 1069
      */
1070
-    public function update( $data = array() ) {
1071
-        return $this->create( $data );
1070
+    public function update($data = array()) {
1071
+        return $this->create($data);
1072 1072
     }
1073 1073
 
1074 1074
     /*
@@ -1108,7 +1108,7 @@  discard block
 block discarded – undo
1108 1108
 	 */
1109 1109
     public function has_free_trial() {
1110 1110
         $has_trial = $this->is_recurring() && (bool) $this->get_free_trial() ? true : false;
1111
-        return (bool) apply_filters( 'wpinv_item_has_free_trial', $has_trial, $this->ID, $this );
1111
+        return (bool) apply_filters('wpinv_item_has_free_trial', $has_trial, $this->ID, $this);
1112 1112
     }
1113 1113
 
1114 1114
     /**
@@ -1118,8 +1118,8 @@  discard block
 block discarded – undo
1118 1118
 	 * @return bool
1119 1119
 	 */
1120 1120
     public function is_free() {
1121
-        $is_free   = $this->get_price() == 0;
1122
-        return (bool) apply_filters( 'wpinv_is_free_item', $is_free, $this->ID, $this );
1121
+        $is_free = $this->get_price() == 0;
1122
+        return (bool) apply_filters('wpinv_is_free_item', $is_free, $this->ID, $this);
1123 1123
     }
1124 1124
 
1125 1125
     /**
@@ -1128,9 +1128,9 @@  discard block
 block discarded – undo
1128 1128
 	 * @param array|string $status Status to check.
1129 1129
 	 * @return bool
1130 1130
 	 */
1131
-	public function has_status( $status ) {
1132
-		$has_status = ( is_array( $status ) && in_array( $this->get_status(), $status, true ) ) || $this->get_status() === $status;
1133
-		return (bool) apply_filters( 'getpaid_item_has_status', $has_status, $this, $status );
1131
+	public function has_status($status) {
1132
+		$has_status = (is_array($status) && in_array($this->get_status(), $status, true)) || $this->get_status() === $status;
1133
+		return (bool) apply_filters('getpaid_item_has_status', $has_status, $this, $status);
1134 1134
     }
1135 1135
 
1136 1136
     /**
@@ -1139,9 +1139,9 @@  discard block
 block discarded – undo
1139 1139
 	 * @param array|string $type Type to check.
1140 1140
 	 * @return bool
1141 1141
 	 */
1142
-	public function is_type( $type ) {
1143
-		$is_type = ( is_array( $type ) && in_array( $this->get_type(), $type, true ) ) || $this->get_type() === $type;
1144
-		return (bool) apply_filters( 'getpaid_item_is_type', $is_type, $this, $type );
1142
+	public function is_type($type) {
1143
+		$is_type = (is_array($type) && in_array($this->get_type(), $type, true)) || $this->get_type() === $type;
1144
+		return (bool) apply_filters('getpaid_item_is_type', $is_type, $this, $type);
1145 1145
 	}
1146 1146
 
1147 1147
     /**
@@ -1152,7 +1152,7 @@  discard block
 block discarded – undo
1152 1152
 	 */
1153 1153
     public function is_editable() {
1154 1154
         $is_editable = $this->get_is_editable();
1155
-        return (bool) apply_filters( 'wpinv_item_is_editable', $is_editable, $this->ID, $this );
1155
+        return (bool) apply_filters('wpinv_item_is_editable', $is_editable, $this->ID, $this);
1156 1156
 	}
1157 1157
 
1158 1158
 	/**
@@ -1171,11 +1171,11 @@  discard block
 block discarded – undo
1171 1171
     public function can_purchase() {
1172 1172
         $can_purchase = $this->exists();
1173 1173
 
1174
-        if ( ! current_user_can( 'edit_post', $this->ID ) && $this->post_status != 'publish' ) {
1174
+        if (!current_user_can('edit_post', $this->ID) && $this->post_status != 'publish') {
1175 1175
             $can_purchase = false;
1176 1176
         }
1177 1177
 
1178
-        return (bool) apply_filters( 'wpinv_can_purchase_item', $can_purchase, $this );
1178
+        return (bool) apply_filters('wpinv_can_purchase_item', $can_purchase, $this);
1179 1179
     }
1180 1180
 
1181 1181
     /**
@@ -1185,6 +1185,6 @@  discard block
 block discarded – undo
1185 1185
 	 * @return bool
1186 1186
 	 */
1187 1187
     public function supports_dynamic_pricing() {
1188
-        return (bool) apply_filters( 'wpinv_item_supports_dynamic_pricing', true, $this );
1188
+        return (bool) apply_filters('wpinv_item_supports_dynamic_pricing', true, $this);
1189 1189
     }
1190 1190
 }
Please login to merge, or discard this patch.
includes/class-getpaid-invoice-notification-emails.php 2 patches
Indentation   +408 added lines, -408 removed lines patch added patch discarded remove patch
@@ -12,472 +12,472 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Invoice_Notification_Emails {
14 14
 
15
-	/**
16
-	 * The array of invoice email actions.
17
-	 *
18
-	 * @param array
19
-	 */
20
-	public $invoice_actions;
21
-
22
-	/**
23
-	 * Class constructor
24
-	 *
25
-	 */
26
-	public function __construct() {
27
-
28
-		$this->invoice_actions = apply_filters(
29
-			'getpaid_notification_email_invoice_triggers',
30
-			array(
31
-				'getpaid_new_invoice'                   => array( 'new_invoice', 'user_invoice' ),
32
-				'getpaid_invoice_status_wpi-cancelled'  => 'cancelled_invoice',
33
-				'getpaid_invoice_status_wpi-failed'     => 'failed_invoice',
34
-				'getpaid_invoice_status_wpi-onhold'     => 'onhold_invoice',
35
-				'getpaid_invoice_status_wpi-processing' => 'processing_invoice',
36
-				'getpaid_invoice_status_publish'        => 'completed_invoice',
37
-				'getpaid_invoice_status_wpi-renewal'    => 'completed_invoice',
38
-				'getpaid_invoice_status_wpi-refunded'   => 'refunded_invoice',
39
-				'getpaid_new_customer_note'             => 'user_note',
40
-				'getpaid_daily_maintenance'             => 'overdue',
41
-			)
42
-		);
43
-
44
-		$this->init_hooks();
45
-
46
-	}
47
-
48
-	/**
49
-	 * Registers email hooks.
50
-	 */
51
-	public function init_hooks() {
52
-
53
-		add_filter( 'getpaid_get_email_merge_tags', array( $this, 'invoice_merge_tags' ), 10, 2 );
54
-		add_filter( 'getpaid_invoice_email_recipients', array( $this, 'filter_email_recipients' ), 10, 2 );
55
-
56
-		foreach ( $this->invoice_actions as $hook => $email_type ) {
57
-			$this->init_email_type_hook( $hook, $email_type );
58
-		}
59
-	}
60
-
61
-	/**
62
-	 * Registers an email hook for an invoice action.
63
-	 * 
64
-	 * @param string $hook
65
-	 * @param string|array $email_type
66
-	 */
67
-	public function init_email_type_hook( $hook, $email_type ) {
68
-
69
-		$email_type = wpinv_parse_list( $email_type );
70
-
71
-		foreach ( $email_type as $type ) {
72
-
73
-			$email = new GetPaid_Notification_Email( $type );
74
-
75
-			// Abort if it is not active.
76
-			if ( ! $email->is_active() ) {
77
-				continue;
78
-			}
79
-
80
-			if ( method_exists( $this, $type ) ) {
81
-				add_action( $hook, array( $this, $type ), 100, 2 );
82
-				continue;
83
-			}
84
-
85
-			do_action( 'getpaid_invoice_init_email_type_hook', $type, $hook );
86
-		}
87
-
88
-	}
89
-
90
-	/**
91
-	 * Filters invoice merge tags.
92
-	 *
93
-	 * @param array $merge_tags
94
-	 * @param mixed|WPInv_Invoice|WPInv_Subscription $object
95
-	 */
96
-	public function invoice_merge_tags( $merge_tags, $object ) {
97
-
98
-		if ( is_a( $object, 'WPInv_Invoice' ) ) {
99
-			return array_merge(
100
-				$merge_tags,
101
-				$this->get_invoice_merge_tags( $object )
102
-			);
103
-		}
104
-
105
-		if ( is_a( $object, 'WPInv_Subscription' ) ) {
106
-			return array_merge(
107
-				$merge_tags,
108
-				$this->get_invoice_merge_tags( $object->get_parent_payment() )
109
-			);
110
-		}
111
-
112
-		return $merge_tags;
113
-
114
-	}
115
-
116
-	/**
117
-	 * Generates invoice merge tags.
118
-	 *
119
-	 * @param WPInv_Invoice $invoice
120
-	 * @return array
121
-	 */
122
-	public function get_invoice_merge_tags( $invoice ) {
123
-
124
-		// Abort if it does not exist.
125
-		if ( ! $invoice->get_id() ) {
126
-			return array();
127
-		}
128
-
129
-		$merge_tags = array(
130
-			'{name}'                => sanitize_text_field( $invoice->get_user_full_name() ),
131
-			'{full_name}'           => sanitize_text_field( $invoice->get_user_full_name() ),
132
-			'{first_name}'          => sanitize_text_field( $invoice->get_first_name() ),
133
-			'{last_name}'           => sanitize_text_field( $invoice->get_last_name() ),
134
-			'{email}'               => sanitize_email( $invoice->get_email() ),
135
-			'{invoice_number}'      => sanitize_text_field( $invoice->get_number() ),
136
-			'{invoice_currency}'    => sanitize_text_field( $invoice->get_currency() ),
137
-			'{invoice_total}'       => sanitize_text_field( wpinv_price( $invoice->get_total(), $invoice->get_currency() ) ),
138
-			'{invoice_link}'        => esc_url( $invoice->get_view_url() ),
139
-			'{invoice_pay_link}'    => esc_url( $invoice->get_checkout_payment_url() ),
140
-			'{invoice_receipt_link}'=> esc_url( $invoice->get_receipt_url() ),
141
-			'{invoice_date}'        => getpaid_format_date_value( $invoice->get_date_created() ),
142
-			'{invoice_due_date}'    => getpaid_format_date_value( $invoice->get_due_date(), __( 'on receipt', 'invoicing' ) ),
143
-			'{invoice_quote}'       => sanitize_text_field( strtolower( $invoice->get_label() ) ),
144
-			'{invoice_label}'       => sanitize_text_field( ucfirst( $invoice->get_label() ) ),
145
-			'{invoice_description}' => wp_kses_post( $invoice->get_description() ),
146
-			'{subscription_name}'   => wp_kses_post( $invoice->get_subscription_name() ),
147
-			'{is_was}'              => strtotime( $invoice->get_due_date() ) < current_time( 'timestamp' ) ? __( 'was', 'invoicing' ) : __( 'is', 'invoicing' ),
148
-		);
149
-
150
-		$payment_form_data = $invoice->get_meta( 'payment_form_data', true );
151
-
152
-		if ( is_array( $payment_form_data ) ) {
153
-
154
-			foreach ( $payment_form_data as $label => $value ) {
155
-
156
-				$label = preg_replace( '/[^a-z0-9]+/', '_', strtolower( $label ) );
157
-				$value = is_array( $value ) ? implode( ', ', $value ) : $value;
158
-
159
-				if ( is_scalar ( $value ) ) {
160
-					$merge_tags[ "{{$label}}" ] = wp_kses_post( $value );
161
-				}
162
-
163
-			}
164
-
165
-		}
166
-
167
-		return apply_filters( 'getpaid_invoice_email_merge_tags', $merge_tags, $invoice );
168
-	}
169
-
170
-	/**
171
-	 * Helper function to send an email.
172
-	 *
173
-	 * @param WPInv_Invoice $invoice
174
-	 * @param GetPaid_Notification_Email $email
175
-	 * @param string $type
176
-	 * @param string|array $recipients
177
-	 * @param array $extra_args Extra template args.
178
-	 */
179
-	public function send_email( $invoice, $email, $type, $recipients, $extra_args = array() ) {
180
-
181
-		do_action( 'getpaid_before_send_invoice_notification', $type, $invoice, $email );
182
-
183
-		if ( apply_filters( 'getpaid_skip_invoice_email', false, $type, $invoice ) ) {
184
-			return;
185
-		}
186
-
187
-		$mailer     = new GetPaid_Notification_Email_Sender();
188
-		$merge_tags = $email->get_merge_tags();
189
-
190
-		$result = $mailer->send(
191
-			apply_filters( 'getpaid_invoice_email_recipients', wpinv_parse_list( $recipients ), $email ),
192
-			$email->add_merge_tags( $email->get_subject(), $merge_tags ),
193
-			$email->get_content( $merge_tags, $extra_args ),
194
-			$email->get_attachments()
195
-		);
196
-
197
-		// Maybe send a copy to the admin.
198
-		if ( $email->include_admin_bcc() ) {
199
-			$mailer->send(
200
-				wpinv_get_admin_email(),
201
-				$email->add_merge_tags( $email->get_subject() . __( ' - ADMIN BCC COPY', 'invoicing' ), $merge_tags ),
202
-				$email->get_content( $merge_tags ),
203
-				$email->get_attachments()
204
-			);
205
-		}
206
-
207
-		if ( $result ) {
208
-			$invoice->add_note( sprintf( __( 'Successfully sent %s notification email.', 'invoicing' ), sanitize_key( $type ) ), false, false, true );
209
-		} else {
210
-			$invoice->add_note( sprintf( __( 'Failed sending %s notification email.', 'invoicing' ), sanitize_key( $type ) ), false, false, true );	
211
-		}
212
-
213
-		do_action( 'getpaid_after_send_invoice_notification', $type, $invoice, $email );
214
-
215
-		return $result;
216
-	}
217
-
218
-	/**
219
-	 * Also send emails to any cc users.
220
-	 *
221
-	 * @param array $recipients
222
-	 * @param GetPaid_Notification_Email $email
223
-	 */
224
-	public function filter_email_recipients( $recipients, $email ) {
225
-
226
-		if ( ! $email->is_admin_email() ) {
227
-			$cc = $email->object->get_email_cc();
228
-
229
-			if ( ! empty( $cc ) ) {
230
-				$cc = array_map( 'sanitize_email', wpinv_parse_list( $cc ) );
231
-				$recipients = array_filter( array_unique( array_merge( $recipients, $cc ) ) );
232
-			}
15
+    /**
16
+     * The array of invoice email actions.
17
+     *
18
+     * @param array
19
+     */
20
+    public $invoice_actions;
21
+
22
+    /**
23
+     * Class constructor
24
+     *
25
+     */
26
+    public function __construct() {
27
+
28
+        $this->invoice_actions = apply_filters(
29
+            'getpaid_notification_email_invoice_triggers',
30
+            array(
31
+                'getpaid_new_invoice'                   => array( 'new_invoice', 'user_invoice' ),
32
+                'getpaid_invoice_status_wpi-cancelled'  => 'cancelled_invoice',
33
+                'getpaid_invoice_status_wpi-failed'     => 'failed_invoice',
34
+                'getpaid_invoice_status_wpi-onhold'     => 'onhold_invoice',
35
+                'getpaid_invoice_status_wpi-processing' => 'processing_invoice',
36
+                'getpaid_invoice_status_publish'        => 'completed_invoice',
37
+                'getpaid_invoice_status_wpi-renewal'    => 'completed_invoice',
38
+                'getpaid_invoice_status_wpi-refunded'   => 'refunded_invoice',
39
+                'getpaid_new_customer_note'             => 'user_note',
40
+                'getpaid_daily_maintenance'             => 'overdue',
41
+            )
42
+        );
43
+
44
+        $this->init_hooks();
45
+
46
+    }
47
+
48
+    /**
49
+     * Registers email hooks.
50
+     */
51
+    public function init_hooks() {
52
+
53
+        add_filter( 'getpaid_get_email_merge_tags', array( $this, 'invoice_merge_tags' ), 10, 2 );
54
+        add_filter( 'getpaid_invoice_email_recipients', array( $this, 'filter_email_recipients' ), 10, 2 );
55
+
56
+        foreach ( $this->invoice_actions as $hook => $email_type ) {
57
+            $this->init_email_type_hook( $hook, $email_type );
58
+        }
59
+    }
60
+
61
+    /**
62
+     * Registers an email hook for an invoice action.
63
+     * 
64
+     * @param string $hook
65
+     * @param string|array $email_type
66
+     */
67
+    public function init_email_type_hook( $hook, $email_type ) {
68
+
69
+        $email_type = wpinv_parse_list( $email_type );
70
+
71
+        foreach ( $email_type as $type ) {
72
+
73
+            $email = new GetPaid_Notification_Email( $type );
74
+
75
+            // Abort if it is not active.
76
+            if ( ! $email->is_active() ) {
77
+                continue;
78
+            }
79
+
80
+            if ( method_exists( $this, $type ) ) {
81
+                add_action( $hook, array( $this, $type ), 100, 2 );
82
+                continue;
83
+            }
84
+
85
+            do_action( 'getpaid_invoice_init_email_type_hook', $type, $hook );
86
+        }
87
+
88
+    }
89
+
90
+    /**
91
+     * Filters invoice merge tags.
92
+     *
93
+     * @param array $merge_tags
94
+     * @param mixed|WPInv_Invoice|WPInv_Subscription $object
95
+     */
96
+    public function invoice_merge_tags( $merge_tags, $object ) {
97
+
98
+        if ( is_a( $object, 'WPInv_Invoice' ) ) {
99
+            return array_merge(
100
+                $merge_tags,
101
+                $this->get_invoice_merge_tags( $object )
102
+            );
103
+        }
104
+
105
+        if ( is_a( $object, 'WPInv_Subscription' ) ) {
106
+            return array_merge(
107
+                $merge_tags,
108
+                $this->get_invoice_merge_tags( $object->get_parent_payment() )
109
+            );
110
+        }
111
+
112
+        return $merge_tags;
113
+
114
+    }
115
+
116
+    /**
117
+     * Generates invoice merge tags.
118
+     *
119
+     * @param WPInv_Invoice $invoice
120
+     * @return array
121
+     */
122
+    public function get_invoice_merge_tags( $invoice ) {
123
+
124
+        // Abort if it does not exist.
125
+        if ( ! $invoice->get_id() ) {
126
+            return array();
127
+        }
128
+
129
+        $merge_tags = array(
130
+            '{name}'                => sanitize_text_field( $invoice->get_user_full_name() ),
131
+            '{full_name}'           => sanitize_text_field( $invoice->get_user_full_name() ),
132
+            '{first_name}'          => sanitize_text_field( $invoice->get_first_name() ),
133
+            '{last_name}'           => sanitize_text_field( $invoice->get_last_name() ),
134
+            '{email}'               => sanitize_email( $invoice->get_email() ),
135
+            '{invoice_number}'      => sanitize_text_field( $invoice->get_number() ),
136
+            '{invoice_currency}'    => sanitize_text_field( $invoice->get_currency() ),
137
+            '{invoice_total}'       => sanitize_text_field( wpinv_price( $invoice->get_total(), $invoice->get_currency() ) ),
138
+            '{invoice_link}'        => esc_url( $invoice->get_view_url() ),
139
+            '{invoice_pay_link}'    => esc_url( $invoice->get_checkout_payment_url() ),
140
+            '{invoice_receipt_link}'=> esc_url( $invoice->get_receipt_url() ),
141
+            '{invoice_date}'        => getpaid_format_date_value( $invoice->get_date_created() ),
142
+            '{invoice_due_date}'    => getpaid_format_date_value( $invoice->get_due_date(), __( 'on receipt', 'invoicing' ) ),
143
+            '{invoice_quote}'       => sanitize_text_field( strtolower( $invoice->get_label() ) ),
144
+            '{invoice_label}'       => sanitize_text_field( ucfirst( $invoice->get_label() ) ),
145
+            '{invoice_description}' => wp_kses_post( $invoice->get_description() ),
146
+            '{subscription_name}'   => wp_kses_post( $invoice->get_subscription_name() ),
147
+            '{is_was}'              => strtotime( $invoice->get_due_date() ) < current_time( 'timestamp' ) ? __( 'was', 'invoicing' ) : __( 'is', 'invoicing' ),
148
+        );
149
+
150
+        $payment_form_data = $invoice->get_meta( 'payment_form_data', true );
151
+
152
+        if ( is_array( $payment_form_data ) ) {
153
+
154
+            foreach ( $payment_form_data as $label => $value ) {
155
+
156
+                $label = preg_replace( '/[^a-z0-9]+/', '_', strtolower( $label ) );
157
+                $value = is_array( $value ) ? implode( ', ', $value ) : $value;
158
+
159
+                if ( is_scalar ( $value ) ) {
160
+                    $merge_tags[ "{{$label}}" ] = wp_kses_post( $value );
161
+                }
162
+
163
+            }
164
+
165
+        }
166
+
167
+        return apply_filters( 'getpaid_invoice_email_merge_tags', $merge_tags, $invoice );
168
+    }
169
+
170
+    /**
171
+     * Helper function to send an email.
172
+     *
173
+     * @param WPInv_Invoice $invoice
174
+     * @param GetPaid_Notification_Email $email
175
+     * @param string $type
176
+     * @param string|array $recipients
177
+     * @param array $extra_args Extra template args.
178
+     */
179
+    public function send_email( $invoice, $email, $type, $recipients, $extra_args = array() ) {
180
+
181
+        do_action( 'getpaid_before_send_invoice_notification', $type, $invoice, $email );
182
+
183
+        if ( apply_filters( 'getpaid_skip_invoice_email', false, $type, $invoice ) ) {
184
+            return;
185
+        }
186
+
187
+        $mailer     = new GetPaid_Notification_Email_Sender();
188
+        $merge_tags = $email->get_merge_tags();
189
+
190
+        $result = $mailer->send(
191
+            apply_filters( 'getpaid_invoice_email_recipients', wpinv_parse_list( $recipients ), $email ),
192
+            $email->add_merge_tags( $email->get_subject(), $merge_tags ),
193
+            $email->get_content( $merge_tags, $extra_args ),
194
+            $email->get_attachments()
195
+        );
196
+
197
+        // Maybe send a copy to the admin.
198
+        if ( $email->include_admin_bcc() ) {
199
+            $mailer->send(
200
+                wpinv_get_admin_email(),
201
+                $email->add_merge_tags( $email->get_subject() . __( ' - ADMIN BCC COPY', 'invoicing' ), $merge_tags ),
202
+                $email->get_content( $merge_tags ),
203
+                $email->get_attachments()
204
+            );
205
+        }
206
+
207
+        if ( $result ) {
208
+            $invoice->add_note( sprintf( __( 'Successfully sent %s notification email.', 'invoicing' ), sanitize_key( $type ) ), false, false, true );
209
+        } else {
210
+            $invoice->add_note( sprintf( __( 'Failed sending %s notification email.', 'invoicing' ), sanitize_key( $type ) ), false, false, true );	
211
+        }
212
+
213
+        do_action( 'getpaid_after_send_invoice_notification', $type, $invoice, $email );
214
+
215
+        return $result;
216
+    }
217
+
218
+    /**
219
+     * Also send emails to any cc users.
220
+     *
221
+     * @param array $recipients
222
+     * @param GetPaid_Notification_Email $email
223
+     */
224
+    public function filter_email_recipients( $recipients, $email ) {
225
+
226
+        if ( ! $email->is_admin_email() ) {
227
+            $cc = $email->object->get_email_cc();
228
+
229
+            if ( ! empty( $cc ) ) {
230
+                $cc = array_map( 'sanitize_email', wpinv_parse_list( $cc ) );
231
+                $recipients = array_filter( array_unique( array_merge( $recipients, $cc ) ) );
232
+            }
233 233
 
234
-		}
234
+        }
235 235
 
236
-		return $recipients;
236
+        return $recipients;
237 237
 
238
-	}
238
+    }
239 239
 
240
-	/**
241
-	 * Sends a new invoice notification.
242
-	 *
243
-	 * @param WPInv_Invoice $invoice
244
-	 */
245
-	public function new_invoice( $invoice ) {
240
+    /**
241
+     * Sends a new invoice notification.
242
+     *
243
+     * @param WPInv_Invoice $invoice
244
+     */
245
+    public function new_invoice( $invoice ) {
246 246
 
247
-		// Only send this email for invoices created via the admin page.
248
-		if ( ! $invoice->is_type( 'invoice' ) || $this->is_payment_form_invoice( $invoice->get_id() ) ) {
249
-			return;
250
-		}
247
+        // Only send this email for invoices created via the admin page.
248
+        if ( ! $invoice->is_type( 'invoice' ) || $this->is_payment_form_invoice( $invoice->get_id() ) ) {
249
+            return;
250
+        }
251 251
 
252
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
253
-		$recipient = wpinv_get_admin_email();
252
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
253
+        $recipient = wpinv_get_admin_email();
254 254
 
255
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
255
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
256 256
 
257
-	}
257
+    }
258 258
 
259
-	/**
260
-	 * Sends a cancelled invoice notification.
261
-	 *
262
-	 * @param WPInv_Invoice $invoice
263
-	 */
264
-	public function cancelled_invoice( $invoice ) {
259
+    /**
260
+     * Sends a cancelled invoice notification.
261
+     *
262
+     * @param WPInv_Invoice $invoice
263
+     */
264
+    public function cancelled_invoice( $invoice ) {
265 265
 
266
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
267
-		$recipient = wpinv_get_admin_email();
266
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
267
+        $recipient = wpinv_get_admin_email();
268 268
 
269
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
269
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
270 270
 
271
-	}
271
+    }
272 272
 
273
-	/**
274
-	 * Sends a failed invoice notification.
275
-	 *
276
-	 * @param WPInv_Invoice $invoice
277
-	 */
278
-	public function failed_invoice( $invoice ) {
273
+    /**
274
+     * Sends a failed invoice notification.
275
+     *
276
+     * @param WPInv_Invoice $invoice
277
+     */
278
+    public function failed_invoice( $invoice ) {
279 279
 
280
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
281
-		$recipient = wpinv_get_admin_email();
280
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
281
+        $recipient = wpinv_get_admin_email();
282 282
 
283
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
283
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
284 284
 
285
-	}
285
+    }
286 286
 
287
-	/**
288
-	 * Sends a notification whenever an invoice is put on hold.
289
-	 *
290
-	 * @param WPInv_Invoice $invoice
291
-	 */
292
-	public function onhold_invoice( $invoice ) {
287
+    /**
288
+     * Sends a notification whenever an invoice is put on hold.
289
+     *
290
+     * @param WPInv_Invoice $invoice
291
+     */
292
+    public function onhold_invoice( $invoice ) {
293 293
 
294
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
295
-		$recipient = $invoice->get_email();
294
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
295
+        $recipient = $invoice->get_email();
296 296
 
297
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
297
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
298 298
 
299
-	}
299
+    }
300 300
 
301
-	/**
302
-	 * Sends a notification whenever an invoice is marked as processing payment.
303
-	 *
304
-	 * @param WPInv_Invoice $invoice
305
-	 */
306
-	public function processing_invoice( $invoice ) {
301
+    /**
302
+     * Sends a notification whenever an invoice is marked as processing payment.
303
+     *
304
+     * @param WPInv_Invoice $invoice
305
+     */
306
+    public function processing_invoice( $invoice ) {
307 307
 
308
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
309
-		$recipient = $invoice->get_email();
308
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
309
+        $recipient = $invoice->get_email();
310 310
 
311
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
311
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
312 312
 
313
-	}
313
+    }
314 314
 
315
-	/**
316
-	 * Sends a notification whenever an invoice is paid.
317
-	 *
318
-	 * @param WPInv_Invoice $invoice
319
-	 */
320
-	public function completed_invoice( $invoice ) {
315
+    /**
316
+     * Sends a notification whenever an invoice is paid.
317
+     *
318
+     * @param WPInv_Invoice $invoice
319
+     */
320
+    public function completed_invoice( $invoice ) {
321 321
 
322
-		// (Maybe) abort if it is a renewal invoice.
323
-		if ( $invoice->is_renewal() && ! wpinv_get_option( 'email_completed_invoice_renewal_active', false ) ) {
324
-			return;
325
-		}
322
+        // (Maybe) abort if it is a renewal invoice.
323
+        if ( $invoice->is_renewal() && ! wpinv_get_option( 'email_completed_invoice_renewal_active', false ) ) {
324
+            return;
325
+        }
326 326
 
327
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
328
-		$recipient = $invoice->get_email();
327
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
328
+        $recipient = $invoice->get_email();
329 329
 
330
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
330
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
331 331
 
332
-	}
332
+    }
333 333
 
334
-	/**
335
-	 * Sends a notification whenever an invoice is refunded.
336
-	 *
337
-	 * @param WPInv_Invoice $invoice
338
-	 */
339
-	public function refunded_invoice( $invoice ) {
334
+    /**
335
+     * Sends a notification whenever an invoice is refunded.
336
+     *
337
+     * @param WPInv_Invoice $invoice
338
+     */
339
+    public function refunded_invoice( $invoice ) {
340 340
 
341
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
342
-		$recipient = $invoice->get_email();
341
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
342
+        $recipient = $invoice->get_email();
343 343
 
344
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
344
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
345 345
 
346
-	}
346
+    }
347 347
 
348
-	/**
349
-	 * Notifies a user about new invoices
350
-	 *
351
-	 * @param WPInv_Invoice $invoice
352
-	 * @param bool $force
353
-	 */
354
-	public function user_invoice( $invoice, $force = false ) {
348
+    /**
349
+     * Notifies a user about new invoices
350
+     *
351
+     * @param WPInv_Invoice $invoice
352
+     * @param bool $force
353
+     */
354
+    public function user_invoice( $invoice, $force = false ) {
355 355
 
356
-		if ( ! empty( $GLOBALS['wpinv_skip_invoice_notification'] ) ) {
357
-			return;
358
-		}
356
+        if ( ! empty( $GLOBALS['wpinv_skip_invoice_notification'] ) ) {
357
+            return;
358
+        }
359 359
 
360
-		// Only send this email for invoices created via the admin page.
361
-		if ( ! $invoice->is_type( 'invoice' ) || ( empty( $force ) && $this->is_payment_form_invoice( $invoice->get_id() ) ) ) {
362
-			return;
363
-		}
360
+        // Only send this email for invoices created via the admin page.
361
+        if ( ! $invoice->is_type( 'invoice' ) || ( empty( $force ) && $this->is_payment_form_invoice( $invoice->get_id() ) ) ) {
362
+            return;
363
+        }
364 364
 
365
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
366
-		$recipient = $invoice->get_email();
365
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
366
+        $recipient = $invoice->get_email();
367 367
 
368
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
368
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
369 369
 
370
-	}
370
+    }
371 371
 
372
-	/**
373
-	 * Checks if an invoice is a payment form invoice.
374
-	 *
375
-	 * @param int $invoice
376
-	 * @return bool
377
-	 */
378
-	public function is_payment_form_invoice( $invoice ) {
379
-		return empty( $_GET['getpaid-admin-action'] ) && ( 'payment_form' == get_post_meta( $invoice, 'wpinv_created_via', true ) || 'geodirectory' == get_post_meta( $invoice, 'wpinv_created_via', true ) );
380
-	}
372
+    /**
373
+     * Checks if an invoice is a payment form invoice.
374
+     *
375
+     * @param int $invoice
376
+     * @return bool
377
+     */
378
+    public function is_payment_form_invoice( $invoice ) {
379
+        return empty( $_GET['getpaid-admin-action'] ) && ( 'payment_form' == get_post_meta( $invoice, 'wpinv_created_via', true ) || 'geodirectory' == get_post_meta( $invoice, 'wpinv_created_via', true ) );
380
+    }
381 381
 
382
-	/**
383
-	 * Notifies admin about new invoice notes
384
-	 *
385
-	 * @param WPInv_Invoice $invoice
386
-	 * @param string $note
387
-	 */
388
-	public function user_note( $invoice, $note ) {
389
-
390
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
391
-		$recipient = $invoice->get_email();
382
+    /**
383
+     * Notifies admin about new invoice notes
384
+     *
385
+     * @param WPInv_Invoice $invoice
386
+     * @param string $note
387
+     */
388
+    public function user_note( $invoice, $note ) {
389
+
390
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
391
+        $recipient = $invoice->get_email();
392 392
 
393
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient, array( 'customer_note' => $note ) );
394
-
395
-	}
393
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient, array( 'customer_note' => $note ) );
394
+
395
+    }
396 396
 
397
-	/**
398
-	 * (Force) Sends overdue notices.
399
-	 *
400
-	 * @param WPInv_Invoice $invoice
401
-	 */
402
-	public function force_send_overdue_notice( $invoice ) {
403
-		$email = new GetPaid_Notification_Email( 'overdue', $invoice );
404
-		return $this->send_email( $invoice, $email, 'overdue', $invoice->get_email() );
405
-	}
406
-
407
-	/**
408
-	 * Sends overdue notices.
409
-	 *
410
-	 * @TODO: Create an invoices query class.
411
-	 */
412
-	public function overdue() {
413
-		global $wpdb;
414
-
415
-		$email = new GetPaid_Notification_Email( __FUNCTION__ );
416
-
417
-		// Fetch reminder days.
418
-		$reminder_days = array_unique( wp_parse_id_list( $email->get_option( 'days' ) ) );
419
-
420
-		// Abort if non is set.
421
-		if ( empty( $reminder_days ) ) {
422
-			return;
423
-		}
424
-
425
-		// Retrieve date query.
426
-		$date_query = $this->get_date_query( $reminder_days );
427
-
428
-		// Invoices table.
429
-		$table = $wpdb->prefix . 'getpaid_invoices';
430
-
431
-		// Fetch invoices.
432
-		$invoices  = $wpdb->get_col(
433
-			"SELECT posts.ID FROM $wpdb->posts as posts
397
+    /**
398
+     * (Force) Sends overdue notices.
399
+     *
400
+     * @param WPInv_Invoice $invoice
401
+     */
402
+    public function force_send_overdue_notice( $invoice ) {
403
+        $email = new GetPaid_Notification_Email( 'overdue', $invoice );
404
+        return $this->send_email( $invoice, $email, 'overdue', $invoice->get_email() );
405
+    }
406
+
407
+    /**
408
+     * Sends overdue notices.
409
+     *
410
+     * @TODO: Create an invoices query class.
411
+     */
412
+    public function overdue() {
413
+        global $wpdb;
414
+
415
+        $email = new GetPaid_Notification_Email( __FUNCTION__ );
416
+
417
+        // Fetch reminder days.
418
+        $reminder_days = array_unique( wp_parse_id_list( $email->get_option( 'days' ) ) );
419
+
420
+        // Abort if non is set.
421
+        if ( empty( $reminder_days ) ) {
422
+            return;
423
+        }
424
+
425
+        // Retrieve date query.
426
+        $date_query = $this->get_date_query( $reminder_days );
427
+
428
+        // Invoices table.
429
+        $table = $wpdb->prefix . 'getpaid_invoices';
430
+
431
+        // Fetch invoices.
432
+        $invoices  = $wpdb->get_col(
433
+            "SELECT posts.ID FROM $wpdb->posts as posts
434 434
 			LEFT JOIN $table as invoices ON invoices.post_id = posts.ID
435 435
 			WHERE posts.post_type = 'wpi_invoice' AND posts.post_status = 'wpi-pending' $date_query");
436 436
 
437
-		foreach ( $invoices as $invoice ) {
437
+        foreach ( $invoices as $invoice ) {
438 438
 
439
-			// Only send this email for invoices created via the admin page.
440
-			if ( ! $this->is_payment_form_invoice( $invoice ) ) {
441
-				$invoice       = new WPInv_Invoice( $invoice );
442
-				$email->object = $invoice;
439
+            // Only send this email for invoices created via the admin page.
440
+            if ( ! $this->is_payment_form_invoice( $invoice ) ) {
441
+                $invoice       = new WPInv_Invoice( $invoice );
442
+                $email->object = $invoice;
443 443
 
444
-				if ( $invoice->needs_payment() ) {
445
-					$this->send_email( $invoice, $email, __FUNCTION__, $invoice->get_email() );
446
-				}
444
+                if ( $invoice->needs_payment() ) {
445
+                    $this->send_email( $invoice, $email, __FUNCTION__, $invoice->get_email() );
446
+                }
447 447
 
448
-			}
448
+            }
449 449
 
450
-		}
450
+        }
451 451
 
452
-	}
452
+    }
453 453
 
454
-	/**
455
-	 * Calculates the date query for an invoices query
456
-	 *
457
-	 * @param array $reminder_days
458
-	 * @return string
459
-	 */
460
-	public function get_date_query( $reminder_days ) {
454
+    /**
455
+     * Calculates the date query for an invoices query
456
+     *
457
+     * @param array $reminder_days
458
+     * @return string
459
+     */
460
+    public function get_date_query( $reminder_days ) {
461 461
 
462
-		$date_query = array(
463
-			'relation'  => 'OR'
464
-		);
462
+        $date_query = array(
463
+            'relation'  => 'OR'
464
+        );
465 465
 
466
-		foreach ( $reminder_days as $days ) {
467
-			$date = date_parse( date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) ) );
466
+        foreach ( $reminder_days as $days ) {
467
+            $date = date_parse( date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) ) );
468 468
 
469
-			$date_query[] = array(
470
-				'year'  => $date['year'],
471
-				'month' => $date['month'],
472
-				'day'   => $date['day'],
473
-			);
469
+            $date_query[] = array(
470
+                'year'  => $date['year'],
471
+                'month' => $date['month'],
472
+                'day'   => $date['day'],
473
+            );
474 474
 
475
-		}
475
+        }
476 476
 
477
-		$date_query = new WP_Date_Query( $date_query, 'invoices.due_date' );
477
+        $date_query = new WP_Date_Query( $date_query, 'invoices.due_date' );
478 478
 
479
-		return $date_query->get_sql();
479
+        return $date_query->get_sql();
480 480
 
481
-	}
481
+    }
482 482
 
483 483
 }
Please login to merge, or discard this patch.
Spacing   +115 added lines, -115 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  *
5 5
  */
6 6
 
7
-defined( 'ABSPATH' ) || exit;
7
+defined('ABSPATH') || exit;
8 8
 
9 9
 /**
10 10
  * This class handles invoice notificaiton emails.
@@ -28,7 +28,7 @@  discard block
 block discarded – undo
28 28
 		$this->invoice_actions = apply_filters(
29 29
 			'getpaid_notification_email_invoice_triggers',
30 30
 			array(
31
-				'getpaid_new_invoice'                   => array( 'new_invoice', 'user_invoice' ),
31
+				'getpaid_new_invoice'                   => array('new_invoice', 'user_invoice'),
32 32
 				'getpaid_invoice_status_wpi-cancelled'  => 'cancelled_invoice',
33 33
 				'getpaid_invoice_status_wpi-failed'     => 'failed_invoice',
34 34
 				'getpaid_invoice_status_wpi-onhold'     => 'onhold_invoice',
@@ -50,11 +50,11 @@  discard block
 block discarded – undo
50 50
 	 */
51 51
 	public function init_hooks() {
52 52
 
53
-		add_filter( 'getpaid_get_email_merge_tags', array( $this, 'invoice_merge_tags' ), 10, 2 );
54
-		add_filter( 'getpaid_invoice_email_recipients', array( $this, 'filter_email_recipients' ), 10, 2 );
53
+		add_filter('getpaid_get_email_merge_tags', array($this, 'invoice_merge_tags'), 10, 2);
54
+		add_filter('getpaid_invoice_email_recipients', array($this, 'filter_email_recipients'), 10, 2);
55 55
 
56
-		foreach ( $this->invoice_actions as $hook => $email_type ) {
57
-			$this->init_email_type_hook( $hook, $email_type );
56
+		foreach ($this->invoice_actions as $hook => $email_type) {
57
+			$this->init_email_type_hook($hook, $email_type);
58 58
 		}
59 59
 	}
60 60
 
@@ -64,25 +64,25 @@  discard block
 block discarded – undo
64 64
 	 * @param string $hook
65 65
 	 * @param string|array $email_type
66 66
 	 */
67
-	public function init_email_type_hook( $hook, $email_type ) {
67
+	public function init_email_type_hook($hook, $email_type) {
68 68
 
69
-		$email_type = wpinv_parse_list( $email_type );
69
+		$email_type = wpinv_parse_list($email_type);
70 70
 
71
-		foreach ( $email_type as $type ) {
71
+		foreach ($email_type as $type) {
72 72
 
73
-			$email = new GetPaid_Notification_Email( $type );
73
+			$email = new GetPaid_Notification_Email($type);
74 74
 
75 75
 			// Abort if it is not active.
76
-			if ( ! $email->is_active() ) {
76
+			if (!$email->is_active()) {
77 77
 				continue;
78 78
 			}
79 79
 
80
-			if ( method_exists( $this, $type ) ) {
81
-				add_action( $hook, array( $this, $type ), 100, 2 );
80
+			if (method_exists($this, $type)) {
81
+				add_action($hook, array($this, $type), 100, 2);
82 82
 				continue;
83 83
 			}
84 84
 
85
-			do_action( 'getpaid_invoice_init_email_type_hook', $type, $hook );
85
+			do_action('getpaid_invoice_init_email_type_hook', $type, $hook);
86 86
 		}
87 87
 
88 88
 	}
@@ -93,19 +93,19 @@  discard block
 block discarded – undo
93 93
 	 * @param array $merge_tags
94 94
 	 * @param mixed|WPInv_Invoice|WPInv_Subscription $object
95 95
 	 */
96
-	public function invoice_merge_tags( $merge_tags, $object ) {
96
+	public function invoice_merge_tags($merge_tags, $object) {
97 97
 
98
-		if ( is_a( $object, 'WPInv_Invoice' ) ) {
98
+		if (is_a($object, 'WPInv_Invoice')) {
99 99
 			return array_merge(
100 100
 				$merge_tags,
101
-				$this->get_invoice_merge_tags( $object )
101
+				$this->get_invoice_merge_tags($object)
102 102
 			);
103 103
 		}
104 104
 
105
-		if ( is_a( $object, 'WPInv_Subscription' ) ) {
105
+		if (is_a($object, 'WPInv_Subscription')) {
106 106
 			return array_merge(
107 107
 				$merge_tags,
108
-				$this->get_invoice_merge_tags( $object->get_parent_payment() )
108
+				$this->get_invoice_merge_tags($object->get_parent_payment())
109 109
 			);
110 110
 		}
111 111
 
@@ -119,52 +119,52 @@  discard block
 block discarded – undo
119 119
 	 * @param WPInv_Invoice $invoice
120 120
 	 * @return array
121 121
 	 */
122
-	public function get_invoice_merge_tags( $invoice ) {
122
+	public function get_invoice_merge_tags($invoice) {
123 123
 
124 124
 		// Abort if it does not exist.
125
-		if ( ! $invoice->get_id() ) {
125
+		if (!$invoice->get_id()) {
126 126
 			return array();
127 127
 		}
128 128
 
129 129
 		$merge_tags = array(
130
-			'{name}'                => sanitize_text_field( $invoice->get_user_full_name() ),
131
-			'{full_name}'           => sanitize_text_field( $invoice->get_user_full_name() ),
132
-			'{first_name}'          => sanitize_text_field( $invoice->get_first_name() ),
133
-			'{last_name}'           => sanitize_text_field( $invoice->get_last_name() ),
134
-			'{email}'               => sanitize_email( $invoice->get_email() ),
135
-			'{invoice_number}'      => sanitize_text_field( $invoice->get_number() ),
136
-			'{invoice_currency}'    => sanitize_text_field( $invoice->get_currency() ),
137
-			'{invoice_total}'       => sanitize_text_field( wpinv_price( $invoice->get_total(), $invoice->get_currency() ) ),
138
-			'{invoice_link}'        => esc_url( $invoice->get_view_url() ),
139
-			'{invoice_pay_link}'    => esc_url( $invoice->get_checkout_payment_url() ),
140
-			'{invoice_receipt_link}'=> esc_url( $invoice->get_receipt_url() ),
141
-			'{invoice_date}'        => getpaid_format_date_value( $invoice->get_date_created() ),
142
-			'{invoice_due_date}'    => getpaid_format_date_value( $invoice->get_due_date(), __( 'on receipt', 'invoicing' ) ),
143
-			'{invoice_quote}'       => sanitize_text_field( strtolower( $invoice->get_label() ) ),
144
-			'{invoice_label}'       => sanitize_text_field( ucfirst( $invoice->get_label() ) ),
145
-			'{invoice_description}' => wp_kses_post( $invoice->get_description() ),
146
-			'{subscription_name}'   => wp_kses_post( $invoice->get_subscription_name() ),
147
-			'{is_was}'              => strtotime( $invoice->get_due_date() ) < current_time( 'timestamp' ) ? __( 'was', 'invoicing' ) : __( 'is', 'invoicing' ),
130
+			'{name}'                => sanitize_text_field($invoice->get_user_full_name()),
131
+			'{full_name}'           => sanitize_text_field($invoice->get_user_full_name()),
132
+			'{first_name}'          => sanitize_text_field($invoice->get_first_name()),
133
+			'{last_name}'           => sanitize_text_field($invoice->get_last_name()),
134
+			'{email}'               => sanitize_email($invoice->get_email()),
135
+			'{invoice_number}'      => sanitize_text_field($invoice->get_number()),
136
+			'{invoice_currency}'    => sanitize_text_field($invoice->get_currency()),
137
+			'{invoice_total}'       => sanitize_text_field(wpinv_price($invoice->get_total(), $invoice->get_currency())),
138
+			'{invoice_link}'        => esc_url($invoice->get_view_url()),
139
+			'{invoice_pay_link}'    => esc_url($invoice->get_checkout_payment_url()),
140
+			'{invoice_receipt_link}'=> esc_url($invoice->get_receipt_url()),
141
+			'{invoice_date}'        => getpaid_format_date_value($invoice->get_date_created()),
142
+			'{invoice_due_date}'    => getpaid_format_date_value($invoice->get_due_date(), __('on receipt', 'invoicing')),
143
+			'{invoice_quote}'       => sanitize_text_field(strtolower($invoice->get_label())),
144
+			'{invoice_label}'       => sanitize_text_field(ucfirst($invoice->get_label())),
145
+			'{invoice_description}' => wp_kses_post($invoice->get_description()),
146
+			'{subscription_name}'   => wp_kses_post($invoice->get_subscription_name()),
147
+			'{is_was}'              => strtotime($invoice->get_due_date()) < current_time('timestamp') ? __('was', 'invoicing') : __('is', 'invoicing'),
148 148
 		);
149 149
 
150
-		$payment_form_data = $invoice->get_meta( 'payment_form_data', true );
150
+		$payment_form_data = $invoice->get_meta('payment_form_data', true);
151 151
 
152
-		if ( is_array( $payment_form_data ) ) {
152
+		if (is_array($payment_form_data)) {
153 153
 
154
-			foreach ( $payment_form_data as $label => $value ) {
154
+			foreach ($payment_form_data as $label => $value) {
155 155
 
156
-				$label = preg_replace( '/[^a-z0-9]+/', '_', strtolower( $label ) );
157
-				$value = is_array( $value ) ? implode( ', ', $value ) : $value;
156
+				$label = preg_replace('/[^a-z0-9]+/', '_', strtolower($label));
157
+				$value = is_array($value) ? implode(', ', $value) : $value;
158 158
 
159
-				if ( is_scalar ( $value ) ) {
160
-					$merge_tags[ "{{$label}}" ] = wp_kses_post( $value );
159
+				if (is_scalar($value)) {
160
+					$merge_tags["{{$label}}"] = wp_kses_post($value);
161 161
 				}
162 162
 
163 163
 			}
164 164
 
165 165
 		}
166 166
 
167
-		return apply_filters( 'getpaid_invoice_email_merge_tags', $merge_tags, $invoice );
167
+		return apply_filters('getpaid_invoice_email_merge_tags', $merge_tags, $invoice);
168 168
 	}
169 169
 
170 170
 	/**
@@ -176,11 +176,11 @@  discard block
 block discarded – undo
176 176
 	 * @param string|array $recipients
177 177
 	 * @param array $extra_args Extra template args.
178 178
 	 */
179
-	public function send_email( $invoice, $email, $type, $recipients, $extra_args = array() ) {
179
+	public function send_email($invoice, $email, $type, $recipients, $extra_args = array()) {
180 180
 
181
-		do_action( 'getpaid_before_send_invoice_notification', $type, $invoice, $email );
181
+		do_action('getpaid_before_send_invoice_notification', $type, $invoice, $email);
182 182
 
183
-		if ( apply_filters( 'getpaid_skip_invoice_email', false, $type, $invoice ) ) {
183
+		if (apply_filters('getpaid_skip_invoice_email', false, $type, $invoice)) {
184 184
 			return;
185 185
 		}
186 186
 
@@ -188,29 +188,29 @@  discard block
 block discarded – undo
188 188
 		$merge_tags = $email->get_merge_tags();
189 189
 
190 190
 		$result = $mailer->send(
191
-			apply_filters( 'getpaid_invoice_email_recipients', wpinv_parse_list( $recipients ), $email ),
192
-			$email->add_merge_tags( $email->get_subject(), $merge_tags ),
193
-			$email->get_content( $merge_tags, $extra_args ),
191
+			apply_filters('getpaid_invoice_email_recipients', wpinv_parse_list($recipients), $email),
192
+			$email->add_merge_tags($email->get_subject(), $merge_tags),
193
+			$email->get_content($merge_tags, $extra_args),
194 194
 			$email->get_attachments()
195 195
 		);
196 196
 
197 197
 		// Maybe send a copy to the admin.
198
-		if ( $email->include_admin_bcc() ) {
198
+		if ($email->include_admin_bcc()) {
199 199
 			$mailer->send(
200 200
 				wpinv_get_admin_email(),
201
-				$email->add_merge_tags( $email->get_subject() . __( ' - ADMIN BCC COPY', 'invoicing' ), $merge_tags ),
202
-				$email->get_content( $merge_tags ),
201
+				$email->add_merge_tags($email->get_subject() . __(' - ADMIN BCC COPY', 'invoicing'), $merge_tags),
202
+				$email->get_content($merge_tags),
203 203
 				$email->get_attachments()
204 204
 			);
205 205
 		}
206 206
 
207
-		if ( $result ) {
208
-			$invoice->add_note( sprintf( __( 'Successfully sent %s notification email.', 'invoicing' ), sanitize_key( $type ) ), false, false, true );
207
+		if ($result) {
208
+			$invoice->add_note(sprintf(__('Successfully sent %s notification email.', 'invoicing'), sanitize_key($type)), false, false, true);
209 209
 		} else {
210
-			$invoice->add_note( sprintf( __( 'Failed sending %s notification email.', 'invoicing' ), sanitize_key( $type ) ), false, false, true );	
210
+			$invoice->add_note(sprintf(__('Failed sending %s notification email.', 'invoicing'), sanitize_key($type)), false, false, true);	
211 211
 		}
212 212
 
213
-		do_action( 'getpaid_after_send_invoice_notification', $type, $invoice, $email );
213
+		do_action('getpaid_after_send_invoice_notification', $type, $invoice, $email);
214 214
 
215 215
 		return $result;
216 216
 	}
@@ -221,14 +221,14 @@  discard block
 block discarded – undo
221 221
 	 * @param array $recipients
222 222
 	 * @param GetPaid_Notification_Email $email
223 223
 	 */
224
-	public function filter_email_recipients( $recipients, $email ) {
224
+	public function filter_email_recipients($recipients, $email) {
225 225
 
226
-		if ( ! $email->is_admin_email() ) {
226
+		if (!$email->is_admin_email()) {
227 227
 			$cc = $email->object->get_email_cc();
228 228
 
229
-			if ( ! empty( $cc ) ) {
230
-				$cc = array_map( 'sanitize_email', wpinv_parse_list( $cc ) );
231
-				$recipients = array_filter( array_unique( array_merge( $recipients, $cc ) ) );
229
+			if (!empty($cc)) {
230
+				$cc = array_map('sanitize_email', wpinv_parse_list($cc));
231
+				$recipients = array_filter(array_unique(array_merge($recipients, $cc)));
232 232
 			}
233 233
 
234 234
 		}
@@ -242,17 +242,17 @@  discard block
 block discarded – undo
242 242
 	 *
243 243
 	 * @param WPInv_Invoice $invoice
244 244
 	 */
245
-	public function new_invoice( $invoice ) {
245
+	public function new_invoice($invoice) {
246 246
 
247 247
 		// Only send this email for invoices created via the admin page.
248
-		if ( ! $invoice->is_type( 'invoice' ) || $this->is_payment_form_invoice( $invoice->get_id() ) ) {
248
+		if (!$invoice->is_type('invoice') || $this->is_payment_form_invoice($invoice->get_id())) {
249 249
 			return;
250 250
 		}
251 251
 
252
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
252
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
253 253
 		$recipient = wpinv_get_admin_email();
254 254
 
255
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
255
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
256 256
 
257 257
 	}
258 258
 
@@ -261,12 +261,12 @@  discard block
 block discarded – undo
261 261
 	 *
262 262
 	 * @param WPInv_Invoice $invoice
263 263
 	 */
264
-	public function cancelled_invoice( $invoice ) {
264
+	public function cancelled_invoice($invoice) {
265 265
 
266
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
266
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
267 267
 		$recipient = wpinv_get_admin_email();
268 268
 
269
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
269
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
270 270
 
271 271
 	}
272 272
 
@@ -275,12 +275,12 @@  discard block
 block discarded – undo
275 275
 	 *
276 276
 	 * @param WPInv_Invoice $invoice
277 277
 	 */
278
-	public function failed_invoice( $invoice ) {
278
+	public function failed_invoice($invoice) {
279 279
 
280
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
280
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
281 281
 		$recipient = wpinv_get_admin_email();
282 282
 
283
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
283
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
284 284
 
285 285
 	}
286 286
 
@@ -289,12 +289,12 @@  discard block
 block discarded – undo
289 289
 	 *
290 290
 	 * @param WPInv_Invoice $invoice
291 291
 	 */
292
-	public function onhold_invoice( $invoice ) {
292
+	public function onhold_invoice($invoice) {
293 293
 
294
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
294
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
295 295
 		$recipient = $invoice->get_email();
296 296
 
297
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
297
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
298 298
 
299 299
 	}
300 300
 
@@ -303,12 +303,12 @@  discard block
 block discarded – undo
303 303
 	 *
304 304
 	 * @param WPInv_Invoice $invoice
305 305
 	 */
306
-	public function processing_invoice( $invoice ) {
306
+	public function processing_invoice($invoice) {
307 307
 
308
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
308
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
309 309
 		$recipient = $invoice->get_email();
310 310
 
311
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
311
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
312 312
 
313 313
 	}
314 314
 
@@ -317,17 +317,17 @@  discard block
 block discarded – undo
317 317
 	 *
318 318
 	 * @param WPInv_Invoice $invoice
319 319
 	 */
320
-	public function completed_invoice( $invoice ) {
320
+	public function completed_invoice($invoice) {
321 321
 
322 322
 		// (Maybe) abort if it is a renewal invoice.
323
-		if ( $invoice->is_renewal() && ! wpinv_get_option( 'email_completed_invoice_renewal_active', false ) ) {
323
+		if ($invoice->is_renewal() && !wpinv_get_option('email_completed_invoice_renewal_active', false)) {
324 324
 			return;
325 325
 		}
326 326
 
327
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
327
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
328 328
 		$recipient = $invoice->get_email();
329 329
 
330
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
330
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
331 331
 
332 332
 	}
333 333
 
@@ -336,12 +336,12 @@  discard block
 block discarded – undo
336 336
 	 *
337 337
 	 * @param WPInv_Invoice $invoice
338 338
 	 */
339
-	public function refunded_invoice( $invoice ) {
339
+	public function refunded_invoice($invoice) {
340 340
 
341
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
341
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
342 342
 		$recipient = $invoice->get_email();
343 343
 
344
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
344
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
345 345
 
346 346
 	}
347 347
 
@@ -351,21 +351,21 @@  discard block
 block discarded – undo
351 351
 	 * @param WPInv_Invoice $invoice
352 352
 	 * @param bool $force
353 353
 	 */
354
-	public function user_invoice( $invoice, $force = false ) {
354
+	public function user_invoice($invoice, $force = false) {
355 355
 
356
-		if ( ! empty( $GLOBALS['wpinv_skip_invoice_notification'] ) ) {
356
+		if (!empty($GLOBALS['wpinv_skip_invoice_notification'])) {
357 357
 			return;
358 358
 		}
359 359
 
360 360
 		// Only send this email for invoices created via the admin page.
361
-		if ( ! $invoice->is_type( 'invoice' ) || ( empty( $force ) && $this->is_payment_form_invoice( $invoice->get_id() ) ) ) {
361
+		if (!$invoice->is_type('invoice') || (empty($force) && $this->is_payment_form_invoice($invoice->get_id()))) {
362 362
 			return;
363 363
 		}
364 364
 
365
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
365
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
366 366
 		$recipient = $invoice->get_email();
367 367
 
368
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
368
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
369 369
 
370 370
 	}
371 371
 
@@ -375,8 +375,8 @@  discard block
 block discarded – undo
375 375
 	 * @param int $invoice
376 376
 	 * @return bool
377 377
 	 */
378
-	public function is_payment_form_invoice( $invoice ) {
379
-		return empty( $_GET['getpaid-admin-action'] ) && ( 'payment_form' == get_post_meta( $invoice, 'wpinv_created_via', true ) || 'geodirectory' == get_post_meta( $invoice, 'wpinv_created_via', true ) );
378
+	public function is_payment_form_invoice($invoice) {
379
+		return empty($_GET['getpaid-admin-action']) && ('payment_form' == get_post_meta($invoice, 'wpinv_created_via', true) || 'geodirectory' == get_post_meta($invoice, 'wpinv_created_via', true));
380 380
 	}
381 381
 
382 382
 	/**
@@ -385,12 +385,12 @@  discard block
 block discarded – undo
385 385
 	 * @param WPInv_Invoice $invoice
386 386
 	 * @param string $note
387 387
 	 */
388
-	public function user_note( $invoice, $note ) {
388
+	public function user_note($invoice, $note) {
389 389
 
390
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
390
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
391 391
 		$recipient = $invoice->get_email();
392 392
 
393
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient, array( 'customer_note' => $note ) );
393
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient, array('customer_note' => $note));
394 394
 
395 395
 	}
396 396
 
@@ -399,9 +399,9 @@  discard block
 block discarded – undo
399 399
 	 *
400 400
 	 * @param WPInv_Invoice $invoice
401 401
 	 */
402
-	public function force_send_overdue_notice( $invoice ) {
403
-		$email = new GetPaid_Notification_Email( 'overdue', $invoice );
404
-		return $this->send_email( $invoice, $email, 'overdue', $invoice->get_email() );
402
+	public function force_send_overdue_notice($invoice) {
403
+		$email = new GetPaid_Notification_Email('overdue', $invoice);
404
+		return $this->send_email($invoice, $email, 'overdue', $invoice->get_email());
405 405
 	}
406 406
 
407 407
 	/**
@@ -412,37 +412,37 @@  discard block
 block discarded – undo
412 412
 	public function overdue() {
413 413
 		global $wpdb;
414 414
 
415
-		$email = new GetPaid_Notification_Email( __FUNCTION__ );
415
+		$email = new GetPaid_Notification_Email(__FUNCTION__);
416 416
 
417 417
 		// Fetch reminder days.
418
-		$reminder_days = array_unique( wp_parse_id_list( $email->get_option( 'days' ) ) );
418
+		$reminder_days = array_unique(wp_parse_id_list($email->get_option('days')));
419 419
 
420 420
 		// Abort if non is set.
421
-		if ( empty( $reminder_days ) ) {
421
+		if (empty($reminder_days)) {
422 422
 			return;
423 423
 		}
424 424
 
425 425
 		// Retrieve date query.
426
-		$date_query = $this->get_date_query( $reminder_days );
426
+		$date_query = $this->get_date_query($reminder_days);
427 427
 
428 428
 		// Invoices table.
429 429
 		$table = $wpdb->prefix . 'getpaid_invoices';
430 430
 
431 431
 		// Fetch invoices.
432
-		$invoices  = $wpdb->get_col(
432
+		$invoices = $wpdb->get_col(
433 433
 			"SELECT posts.ID FROM $wpdb->posts as posts
434 434
 			LEFT JOIN $table as invoices ON invoices.post_id = posts.ID
435 435
 			WHERE posts.post_type = 'wpi_invoice' AND posts.post_status = 'wpi-pending' $date_query");
436 436
 
437
-		foreach ( $invoices as $invoice ) {
437
+		foreach ($invoices as $invoice) {
438 438
 
439 439
 			// Only send this email for invoices created via the admin page.
440
-			if ( ! $this->is_payment_form_invoice( $invoice ) ) {
441
-				$invoice       = new WPInv_Invoice( $invoice );
440
+			if (!$this->is_payment_form_invoice($invoice)) {
441
+				$invoice       = new WPInv_Invoice($invoice);
442 442
 				$email->object = $invoice;
443 443
 
444
-				if ( $invoice->needs_payment() ) {
445
-					$this->send_email( $invoice, $email, __FUNCTION__, $invoice->get_email() );
444
+				if ($invoice->needs_payment()) {
445
+					$this->send_email($invoice, $email, __FUNCTION__, $invoice->get_email());
446 446
 				}
447 447
 
448 448
 			}
@@ -457,14 +457,14 @@  discard block
 block discarded – undo
457 457
 	 * @param array $reminder_days
458 458
 	 * @return string
459 459
 	 */
460
-	public function get_date_query( $reminder_days ) {
460
+	public function get_date_query($reminder_days) {
461 461
 
462 462
 		$date_query = array(
463 463
 			'relation'  => 'OR'
464 464
 		);
465 465
 
466
-		foreach ( $reminder_days as $days ) {
467
-			$date = date_parse( date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) ) );
466
+		foreach ($reminder_days as $days) {
467
+			$date = date_parse(date('Y-m-d', strtotime("-$days days", current_time('timestamp'))));
468 468
 
469 469
 			$date_query[] = array(
470 470
 				'year'  => $date['year'],
@@ -474,7 +474,7 @@  discard block
 block discarded – undo
474 474
 
475 475
 		}
476 476
 
477
-		$date_query = new WP_Date_Query( $date_query, 'invoices.due_date' );
477
+		$date_query = new WP_Date_Query($date_query, 'invoices.due_date');
478 478
 
479 479
 		return $date_query->get_sql();
480 480
 
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-form-submission.php 2 patches
Indentation   +813 added lines, -813 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 if ( ! defined( 'ABSPATH' ) ) {
3
-	exit;
3
+    exit;
4 4
 }
5 5
 
6 6
 /**
@@ -10,206 +10,206 @@  discard block
 block discarded – undo
10 10
 class GetPaid_Payment_Form_Submission {
11 11
 
12 12
     /**
13
-	 * Submission ID
14
-	 *
15
-	 * @var string
16
-	 */
17
-	public $id = null;
18
-
19
-	/**
20
-	 * The raw submission data.
21
-	 *
22
-	 * @var array
23
-	 */
24
-	protected $data = null;
25
-
26
-	/**
27
-	 * Submission totals
28
-	 *
29
-	 * @var array
30
-	 */
31
-	protected $totals = array(
32
-
33
-		'subtotal'      => array(
34
-			'initial'   => 0,
35
-			'recurring' => 0,
36
-		),
37
-
38
-		'discount'      => array(
39
-			'initial'   => 0,
40
-			'recurring' => 0,
41
-		),
42
-
43
-		'fees'          => array(
44
-			'initial'   => 0,
45
-			'recurring' => 0,
46
-		),
47
-
48
-		'taxes'         => array(
49
-			'initial'   => 0,
50
-			'recurring' => 0,
51
-		),
52
-
53
-	);
54
-
55
-	/**
56
-	 * Sets the associated payment form.
57
-	 *
58
-	 * @var GetPaid_Payment_Form
59
-	 */
13
+     * Submission ID
14
+     *
15
+     * @var string
16
+     */
17
+    public $id = null;
18
+
19
+    /**
20
+     * The raw submission data.
21
+     *
22
+     * @var array
23
+     */
24
+    protected $data = null;
25
+
26
+    /**
27
+     * Submission totals
28
+     *
29
+     * @var array
30
+     */
31
+    protected $totals = array(
32
+
33
+        'subtotal'      => array(
34
+            'initial'   => 0,
35
+            'recurring' => 0,
36
+        ),
37
+
38
+        'discount'      => array(
39
+            'initial'   => 0,
40
+            'recurring' => 0,
41
+        ),
42
+
43
+        'fees'          => array(
44
+            'initial'   => 0,
45
+            'recurring' => 0,
46
+        ),
47
+
48
+        'taxes'         => array(
49
+            'initial'   => 0,
50
+            'recurring' => 0,
51
+        ),
52
+
53
+    );
54
+
55
+    /**
56
+     * Sets the associated payment form.
57
+     *
58
+     * @var GetPaid_Payment_Form
59
+     */
60 60
     protected $payment_form = null;
61 61
 
62 62
     /**
63
-	 * The country for the submission.
64
-	 *
65
-	 * @var string
66
-	 */
67
-	public $country = null;
68
-
69
-    /**
70
-	 * The state for the submission.
71
-	 *
72
-	 * @since 1.0.19
73
-	 * @var string
74
-	 */
75
-	public $state = null;
76
-
77
-	/**
78
-	 * The invoice associated with the submission.
79
-	 *
80
-	 * @var WPInv_Invoice
81
-	 */
82
-	protected $invoice = null;
83
-
84
-	/**
85
-	 * The recurring item for the submission.
86
-	 *
87
-	 * @var int
88
-	 */
89
-	public $has_recurring = 0;
90
-
91
-	/**
92
-	 * The subscription groups. If more than 2, ensure the gateway
93
-	 * supports multiple subscriptions.
94
-	 *
95
-	 * @var array
96
-	 */
97
-	public $subscription_groups = array();
98
-
99
-	/**
100
-	 * An array of fees for the submission.
101
-	 *
102
-	 * @var array
103
-	 */
104
-	protected $fees = array();
105
-
106
-	/**
107
-	 * An array of discounts for the submission.
108
-	 *
109
-	 * @var array
110
-	 */
111
-	protected $discounts = array();
112
-
113
-	/**
114
-	 * An array of taxes for the submission.
115
-	 *
116
-	 * @var array
117
-	 */
118
-	protected $taxes = array();
119
-
120
-	/**
121
-	 * An array of items for the submission.
122
-	 *
123
-	 * @var GetPaid_Form_Item[]
124
-	 */
125
-	protected $items = array();
126
-
127
-	/**
128
-	 * The last error.
129
-	 *
130
-	 * @var string
131
-	 */
132
-	public $last_error = null;
133
-
134
-	/**
135
-	 * The last error code.
136
-	 *
137
-	 * @var string
138
-	 */
139
-	public $last_error_code = null;
140
-
141
-    /**
142
-	 * Class constructor.
143
-	 *
144
-	 */
145
-	public function __construct() {
146
-
147
-		// Set the state and country to the default state and country.
148
-		$this->country = wpinv_default_billing_country();
149
-		$this->state   = wpinv_get_default_state();
150
-
151
-		// Do we have an actual submission?
152
-		if ( isset( $_POST['getpaid_payment_form_submission'] ) ) {
153
-			$this->load_data( $_POST );
154
-		}
155
-
156
-	}
157
-
158
-	/**
159
-	 * Loads submission data.
160
-	 *
161
-	 * @param array $data
162
-	 */
163
-	public function load_data( $data ) {
164
-
165
-		// Remove slashes from the submitted data...
166
-		$data       = wp_unslash( $data );
167
-
168
-		// Allow plugins to filter the data.
169
-		$data       = apply_filters( 'getpaid_submission_data', $data, $this );
170
-
171
-		// Cache it...
172
-		$this->data = $data;
173
-
174
-		// Then generate a unique id from the data.
175
-		$this->id   = md5( wp_json_encode( $data ) );
176
-
177
-		// Finally, process the submission.
178
-		try {
179
-
180
-			// Each process is passed an instance of the class (with reference)
181
-			// and should throw an Exception whenever it encounters one.
182
-			$processors = apply_filters(
183
-				'getpaid_payment_form_submission_processors',
184
-				array(
185
-					array( $this, 'process_payment_form' ),
186
-					array( $this, 'process_invoice' ),
187
-					array( $this, 'process_fees' ),
188
-					array( $this, 'process_items' ),
189
-					array( $this, 'process_discount' ),
190
-					array( $this, 'process_taxes' ),
191
-				),
192
-				$this		
193
-			);
194
-
195
-			foreach ( $processors as $processor ) {
196
-				call_user_func_array( $processor, array( &$this ) );
197
-			}
198
-
199
-		} catch( GetPaid_Payment_Exception $e ) {
200
-			$this->last_error      = $e->getMessage();
201
-			$this->last_error_code = $e->getErrorCode();
202
-		} catch ( Exception $e ) {
203
-			$this->last_error      = $e->getMessage();
204
-			$this->last_error_code = $e->getCode();
205
-		}
206
-
207
-		// Fired when we are done processing a submission.
208
-		do_action_ref_array( 'getpaid_process_submission', array( &$this ) );
209
-
210
-	}
211
-
212
-	/*
63
+     * The country for the submission.
64
+     *
65
+     * @var string
66
+     */
67
+    public $country = null;
68
+
69
+    /**
70
+     * The state for the submission.
71
+     *
72
+     * @since 1.0.19
73
+     * @var string
74
+     */
75
+    public $state = null;
76
+
77
+    /**
78
+     * The invoice associated with the submission.
79
+     *
80
+     * @var WPInv_Invoice
81
+     */
82
+    protected $invoice = null;
83
+
84
+    /**
85
+     * The recurring item for the submission.
86
+     *
87
+     * @var int
88
+     */
89
+    public $has_recurring = 0;
90
+
91
+    /**
92
+     * The subscription groups. If more than 2, ensure the gateway
93
+     * supports multiple subscriptions.
94
+     *
95
+     * @var array
96
+     */
97
+    public $subscription_groups = array();
98
+
99
+    /**
100
+     * An array of fees for the submission.
101
+     *
102
+     * @var array
103
+     */
104
+    protected $fees = array();
105
+
106
+    /**
107
+     * An array of discounts for the submission.
108
+     *
109
+     * @var array
110
+     */
111
+    protected $discounts = array();
112
+
113
+    /**
114
+     * An array of taxes for the submission.
115
+     *
116
+     * @var array
117
+     */
118
+    protected $taxes = array();
119
+
120
+    /**
121
+     * An array of items for the submission.
122
+     *
123
+     * @var GetPaid_Form_Item[]
124
+     */
125
+    protected $items = array();
126
+
127
+    /**
128
+     * The last error.
129
+     *
130
+     * @var string
131
+     */
132
+    public $last_error = null;
133
+
134
+    /**
135
+     * The last error code.
136
+     *
137
+     * @var string
138
+     */
139
+    public $last_error_code = null;
140
+
141
+    /**
142
+     * Class constructor.
143
+     *
144
+     */
145
+    public function __construct() {
146
+
147
+        // Set the state and country to the default state and country.
148
+        $this->country = wpinv_default_billing_country();
149
+        $this->state   = wpinv_get_default_state();
150
+
151
+        // Do we have an actual submission?
152
+        if ( isset( $_POST['getpaid_payment_form_submission'] ) ) {
153
+            $this->load_data( $_POST );
154
+        }
155
+
156
+    }
157
+
158
+    /**
159
+     * Loads submission data.
160
+     *
161
+     * @param array $data
162
+     */
163
+    public function load_data( $data ) {
164
+
165
+        // Remove slashes from the submitted data...
166
+        $data       = wp_unslash( $data );
167
+
168
+        // Allow plugins to filter the data.
169
+        $data       = apply_filters( 'getpaid_submission_data', $data, $this );
170
+
171
+        // Cache it...
172
+        $this->data = $data;
173
+
174
+        // Then generate a unique id from the data.
175
+        $this->id   = md5( wp_json_encode( $data ) );
176
+
177
+        // Finally, process the submission.
178
+        try {
179
+
180
+            // Each process is passed an instance of the class (with reference)
181
+            // and should throw an Exception whenever it encounters one.
182
+            $processors = apply_filters(
183
+                'getpaid_payment_form_submission_processors',
184
+                array(
185
+                    array( $this, 'process_payment_form' ),
186
+                    array( $this, 'process_invoice' ),
187
+                    array( $this, 'process_fees' ),
188
+                    array( $this, 'process_items' ),
189
+                    array( $this, 'process_discount' ),
190
+                    array( $this, 'process_taxes' ),
191
+                ),
192
+                $this		
193
+            );
194
+
195
+            foreach ( $processors as $processor ) {
196
+                call_user_func_array( $processor, array( &$this ) );
197
+            }
198
+
199
+        } catch( GetPaid_Payment_Exception $e ) {
200
+            $this->last_error      = $e->getMessage();
201
+            $this->last_error_code = $e->getErrorCode();
202
+        } catch ( Exception $e ) {
203
+            $this->last_error      = $e->getMessage();
204
+            $this->last_error_code = $e->getCode();
205
+        }
206
+
207
+        // Fired when we are done processing a submission.
208
+        do_action_ref_array( 'getpaid_process_submission', array( &$this ) );
209
+
210
+    }
211
+
212
+    /*
213 213
 	|--------------------------------------------------------------------------
214 214
 	| Payment Forms.
215 215
 	|--------------------------------------------------------------------------
@@ -218,39 +218,39 @@  discard block
 block discarded – undo
218 218
 	| submission has an active payment form etc.
219 219
     */
220 220
 
221
-	/**
222
-	 * Prepares the submission's payment form.
223
-	 *
224
-	 * @since 1.0.19
225
-	 */
226
-	public function process_payment_form() {
221
+    /**
222
+     * Prepares the submission's payment form.
223
+     *
224
+     * @since 1.0.19
225
+     */
226
+    public function process_payment_form() {
227 227
 
228
-		// Every submission needs an active payment form.
229
-		if ( empty( $this->data['form_id'] ) ) {
230
-			throw new Exception( __( 'Missing payment form', 'invoicing' ) );
231
-		}
228
+        // Every submission needs an active payment form.
229
+        if ( empty( $this->data['form_id'] ) ) {
230
+            throw new Exception( __( 'Missing payment form', 'invoicing' ) );
231
+        }
232 232
 
233
-		// Fetch the payment form.
234
-		$this->payment_form = new GetPaid_Payment_Form( $this->data['form_id'] );
233
+        // Fetch the payment form.
234
+        $this->payment_form = new GetPaid_Payment_Form( $this->data['form_id'] );
235 235
 
236
-		if ( ! $this->payment_form->is_active() ) {
237
-			throw new Exception( __( 'Payment form not active', 'invoicing' ) );
238
-		}
236
+        if ( ! $this->payment_form->is_active() ) {
237
+            throw new Exception( __( 'Payment form not active', 'invoicing' ) );
238
+        }
239 239
 
240
-		do_action_ref_array( 'getpaid_submissions_process_payment_form', array( &$this ) );
241
-	}
240
+        do_action_ref_array( 'getpaid_submissions_process_payment_form', array( &$this ) );
241
+    }
242 242
 
243 243
     /**
244
-	 * Returns the payment form.
245
-	 *
246
-	 * @since 1.0.19
247
-	 * @return GetPaid_Payment_Form
248
-	 */
249
-	public function get_payment_form() {
250
-		return $this->payment_form;
251
-	}
244
+     * Returns the payment form.
245
+     *
246
+     * @since 1.0.19
247
+     * @return GetPaid_Payment_Form
248
+     */
249
+    public function get_payment_form() {
250
+        return $this->payment_form;
251
+    }
252 252
 
253
-	/*
253
+    /*
254 254
 	|--------------------------------------------------------------------------
255 255
 	| Invoices.
256 256
 	|--------------------------------------------------------------------------
@@ -259,84 +259,84 @@  discard block
 block discarded – undo
259 259
 	| might be for an existing invoice.
260 260
 	*/
261 261
 
262
-	/**
263
-	 * Prepares the submission's invoice.
264
-	 *
265
-	 * @since 1.0.19
266
-	 */
267
-	public function process_invoice() {
262
+    /**
263
+     * Prepares the submission's invoice.
264
+     *
265
+     * @since 1.0.19
266
+     */
267
+    public function process_invoice() {
268 268
 
269
-		// Abort if there is no invoice.
270
-		if ( empty( $this->data['invoice_id'] ) ) {
271
-			return;
272
-		}
269
+        // Abort if there is no invoice.
270
+        if ( empty( $this->data['invoice_id'] ) ) {
271
+            return;
272
+        }
273 273
 
274
-		// If the submission is for an existing invoice, ensure that it exists
275
-		// and that it is not paid for.
276
-		$invoice = wpinv_get_invoice( $this->data['invoice_id'] );
274
+        // If the submission is for an existing invoice, ensure that it exists
275
+        // and that it is not paid for.
276
+        $invoice = wpinv_get_invoice( $this->data['invoice_id'] );
277 277
 
278 278
         if ( empty( $invoice ) ) {
279
-			throw new Exception( __( 'Invalid invoice', 'invoicing' ) );
280
-		}
279
+            throw new Exception( __( 'Invalid invoice', 'invoicing' ) );
280
+        }
281 281
 
282
-		if ( $invoice->is_paid() ) {
283
-			throw new Exception( __( 'This invoice is already paid for.', 'invoicing' ) );
284
-		}
282
+        if ( $invoice->is_paid() ) {
283
+            throw new Exception( __( 'This invoice is already paid for.', 'invoicing' ) );
284
+        }
285 285
 
286
-		$this->payment_form->invoice = $invoice;
287
-		if ( ! $this->payment_form->is_default() ) {
286
+        $this->payment_form->invoice = $invoice;
287
+        if ( ! $this->payment_form->is_default() ) {
288 288
 
289
-			$items    = array();
290
-			$item_ids = array();
289
+            $items    = array();
290
+            $item_ids = array();
291 291
 	
292
-			foreach ( $invoice->get_items() as $item ) {
293
-				if ( ! in_array( $item->get_id(), $item_ids ) ) {
294
-					$item_ids[] = $item->get_id();
295
-					$items[]    = $item;
296
-				}
297
-			}
292
+            foreach ( $invoice->get_items() as $item ) {
293
+                if ( ! in_array( $item->get_id(), $item_ids ) ) {
294
+                    $item_ids[] = $item->get_id();
295
+                    $items[]    = $item;
296
+                }
297
+            }
298 298
 	
299
-			foreach ( $this->payment_form->get_items() as $item ) {
300
-				if ( ! in_array( $item->get_id(), $item_ids ) ) {
301
-					$item_ids[] = $item->get_id();
302
-					$items[]    = $item;
303
-				}
304
-			}
299
+            foreach ( $this->payment_form->get_items() as $item ) {
300
+                if ( ! in_array( $item->get_id(), $item_ids ) ) {
301
+                    $item_ids[] = $item->get_id();
302
+                    $items[]    = $item;
303
+                }
304
+            }
305 305
 	
306
-			$this->payment_form->set_items( $items );
306
+            $this->payment_form->set_items( $items );
307 307
 	
308
-		} else {
309
-			$this->payment_form->set_items( $invoice->get_items() );
310
-		}
311
-
312
-		$this->country = $invoice->get_country();
313
-		$this->state   = $invoice->get_state();
314
-		$this->invoice = $invoice;
315
-
316
-		do_action_ref_array( 'getpaid_submissions_process_invoice', array( &$this ) );
317
-	}
318
-
319
-	/**
320
-	 * Returns the associated invoice.
321
-	 *
322
-	 * @since 1.0.19
323
-	 * @return WPInv_Invoice
324
-	 */
325
-	public function get_invoice() {
326
-		return $this->invoice;
327
-	}
328
-
329
-	/**
330
-	 * Checks whether there is an invoice associated with this submission.
331
-	 *
332
-	 * @since 1.0.19
333
-	 * @return bool
334
-	 */
335
-	public function has_invoice() {
336
-		return ! empty( $this->invoice );
337
-	}
338
-
339
-	/*
308
+        } else {
309
+            $this->payment_form->set_items( $invoice->get_items() );
310
+        }
311
+
312
+        $this->country = $invoice->get_country();
313
+        $this->state   = $invoice->get_state();
314
+        $this->invoice = $invoice;
315
+
316
+        do_action_ref_array( 'getpaid_submissions_process_invoice', array( &$this ) );
317
+    }
318
+
319
+    /**
320
+     * Returns the associated invoice.
321
+     *
322
+     * @since 1.0.19
323
+     * @return WPInv_Invoice
324
+     */
325
+    public function get_invoice() {
326
+        return $this->invoice;
327
+    }
328
+
329
+    /**
330
+     * Checks whether there is an invoice associated with this submission.
331
+     *
332
+     * @since 1.0.19
333
+     * @return bool
334
+     */
335
+    public function has_invoice() {
336
+        return ! empty( $this->invoice );
337
+    }
338
+
339
+    /*
340 340
 	|--------------------------------------------------------------------------
341 341
 	| Items.
342 342
 	|--------------------------------------------------------------------------
@@ -345,116 +345,116 @@  discard block
 block discarded – undo
345 345
 	| recurring item. But can have an unlimited number of non-recurring items.
346 346
 	*/
347 347
 
348
-	/**
349
-	 * Prepares the submission's items.
350
-	 *
351
-	 * @since 1.0.19
352
-	 */
353
-	public function process_items() {
354
-
355
-		$processor = new GetPaid_Payment_Form_Submission_Items( $this );
356
-
357
-		foreach ( $processor->items as $item ) {
358
-			$this->add_item( $item );
359
-		}
360
-
361
-		do_action_ref_array( 'getpaid_submissions_process_items', array( &$this ) );
362
-	}
363
-
364
-	/**
365
-	 * Adds an item to the submission.
366
-	 *
367
-	 * @since 1.0.19
368
-	 * @param GetPaid_Form_Item $item
369
-	 */
370
-	public function add_item( $item ) {
371
-
372
-		// Make sure that it is available for purchase.
373
-		if ( ! $item->can_purchase() || isset( $this->items[ $item->get_id() ] ) ) {
374
-			return;
375
-		}
376
-
377
-		// Each submission can only contain one recurring item.
378
-		if ( $item->is_recurring() ) {
379
-
380
-			if ( $this->has_recurring != 0 ) {
381
-				throw new Exception( __( 'You can only buy one recurring item at a time.', 'invoicing' ) );
382
-			}
383
-
384
-			$this->has_recurring = $item->get_id();
385
-
386
-		}
387
-
388
-		// Update the items and totals.
389
-		$this->items[ $item->get_id() ]         = $item;
390
-		$this->totals['subtotal']['initial']   += $item->get_sub_total();
391
-		$this->totals['subtotal']['recurring'] += $item->get_recurring_sub_total();
392
-
393
-		$this->subscription_groups = getpaid_calculate_subscription_totals( $this );
394
-	}
395
-
396
-	/**
397
-	 * Removes a specific item.
398
-	 * 
399
-	 * You should not call this method after the discounts and taxes
400
-	 * have been calculated.
401
-	 *
402
-	 * @since 1.0.19
403
-	 */
404
-	public function remove_item( $item_id ) {
405
-
406
-		if ( isset( $this->items[ $item_id ] ) ) {
407
-			$this->totals['subtotal']['initial']   -= $this->items[ $item_id ]->get_sub_total();
408
-			$this->totals['subtotal']['recurring'] -= $this->items[ $item_id ]->get_recurring_sub_total();
409
-
410
-			if ( $this->items[ $item_id ]->is_recurring() ) {
411
-				$this->has_recurring = 0;
412
-			}
413
-
414
-			unset( $this->items[ $item_id ] );
415
-		}
416
-
417
-	}
418
-
419
-	/**
420
-	 * Returns the subtotal.
421
-	 *
422
-	 * @since 1.0.19
423
-	 */
424
-	public function get_subtotal() {
425
-
426
-		if ( wpinv_prices_include_tax() ) {
427
-			return $this->totals['subtotal']['initial'] - $this->totals['taxes']['initial'];
428
-		}
429
-
430
-		return $this->totals['subtotal']['initial'];
431
-	}
432
-
433
-	/**
434
-	 * Returns the recurring subtotal.
435
-	 *
436
-	 * @since 1.0.19
437
-	 */
438
-	public function get_recurring_subtotal() {
439
-
440
-		if ( wpinv_prices_include_tax() ) {
441
-			return $this->totals['subtotal']['recurring'] - $this->totals['taxes']['recurring'];
442
-		}
443
-
444
-		return $this->totals['subtotal']['recurring'];
445
-	}
446
-
447
-	/**
448
-	 * Returns all items.
449
-	 *
450
-	 * @since 1.0.19
451
-	 * @return GetPaid_Form_Item[]
452
-	 */
453
-	public function get_items() {
454
-		return $this->items;
455
-	}
456
-
457
-	/*
348
+    /**
349
+     * Prepares the submission's items.
350
+     *
351
+     * @since 1.0.19
352
+     */
353
+    public function process_items() {
354
+
355
+        $processor = new GetPaid_Payment_Form_Submission_Items( $this );
356
+
357
+        foreach ( $processor->items as $item ) {
358
+            $this->add_item( $item );
359
+        }
360
+
361
+        do_action_ref_array( 'getpaid_submissions_process_items', array( &$this ) );
362
+    }
363
+
364
+    /**
365
+     * Adds an item to the submission.
366
+     *
367
+     * @since 1.0.19
368
+     * @param GetPaid_Form_Item $item
369
+     */
370
+    public function add_item( $item ) {
371
+
372
+        // Make sure that it is available for purchase.
373
+        if ( ! $item->can_purchase() || isset( $this->items[ $item->get_id() ] ) ) {
374
+            return;
375
+        }
376
+
377
+        // Each submission can only contain one recurring item.
378
+        if ( $item->is_recurring() ) {
379
+
380
+            if ( $this->has_recurring != 0 ) {
381
+                throw new Exception( __( 'You can only buy one recurring item at a time.', 'invoicing' ) );
382
+            }
383
+
384
+            $this->has_recurring = $item->get_id();
385
+
386
+        }
387
+
388
+        // Update the items and totals.
389
+        $this->items[ $item->get_id() ]         = $item;
390
+        $this->totals['subtotal']['initial']   += $item->get_sub_total();
391
+        $this->totals['subtotal']['recurring'] += $item->get_recurring_sub_total();
392
+
393
+        $this->subscription_groups = getpaid_calculate_subscription_totals( $this );
394
+    }
395
+
396
+    /**
397
+     * Removes a specific item.
398
+     * 
399
+     * You should not call this method after the discounts and taxes
400
+     * have been calculated.
401
+     *
402
+     * @since 1.0.19
403
+     */
404
+    public function remove_item( $item_id ) {
405
+
406
+        if ( isset( $this->items[ $item_id ] ) ) {
407
+            $this->totals['subtotal']['initial']   -= $this->items[ $item_id ]->get_sub_total();
408
+            $this->totals['subtotal']['recurring'] -= $this->items[ $item_id ]->get_recurring_sub_total();
409
+
410
+            if ( $this->items[ $item_id ]->is_recurring() ) {
411
+                $this->has_recurring = 0;
412
+            }
413
+
414
+            unset( $this->items[ $item_id ] );
415
+        }
416
+
417
+    }
418
+
419
+    /**
420
+     * Returns the subtotal.
421
+     *
422
+     * @since 1.0.19
423
+     */
424
+    public function get_subtotal() {
425
+
426
+        if ( wpinv_prices_include_tax() ) {
427
+            return $this->totals['subtotal']['initial'] - $this->totals['taxes']['initial'];
428
+        }
429
+
430
+        return $this->totals['subtotal']['initial'];
431
+    }
432
+
433
+    /**
434
+     * Returns the recurring subtotal.
435
+     *
436
+     * @since 1.0.19
437
+     */
438
+    public function get_recurring_subtotal() {
439
+
440
+        if ( wpinv_prices_include_tax() ) {
441
+            return $this->totals['subtotal']['recurring'] - $this->totals['taxes']['recurring'];
442
+        }
443
+
444
+        return $this->totals['subtotal']['recurring'];
445
+    }
446
+
447
+    /**
448
+     * Returns all items.
449
+     *
450
+     * @since 1.0.19
451
+     * @return GetPaid_Form_Item[]
452
+     */
453
+    public function get_items() {
454
+        return $this->items;
455
+    }
456
+
457
+    /*
458 458
 	|--------------------------------------------------------------------------
459 459
 	| Taxes
460 460
 	|--------------------------------------------------------------------------
@@ -463,128 +463,128 @@  discard block
 block discarded – undo
463 463
 	| or only one-time.
464 464
     */
465 465
 
466
-	/**
467
-	 * Prepares the submission's taxes.
468
-	 *
469
-	 * @since 1.0.19
470
-	 */
471
-	public function process_taxes() {
472
-
473
-		// Abort if we're not using taxes.
474
-		if ( ! $this->use_taxes() ) {
475
-			return;
476
-		}
477
-
478
-		// If a custom country && state has been passed in, use it to calculate taxes.
479
-		$country = $this->get_field( 'wpinv_country', 'billing' );
480
-		if ( ! empty( $country ) ) {
481
-			$this->country = $country;
482
-		}
483
-
484
-		$state = $this->get_field( 'wpinv_state', 'billing' );
485
-		if ( ! empty( $state ) ) {
486
-			$this->state = $state;
487
-		}
488
-
489
-		// Confirm if the provided country and the ip country are similar.
490
-		$address_confirmed = $this->get_field( 'confirm-address' );
491
-		if ( wpinv_should_validate_vat_number() && getpaid_get_ip_country() != $this->country && empty( $address_confirmed ) ) {
492
-			throw new Exception( __( 'The country of your current location must be the same as the country of your billing location or you must confirm the billing address is your home country.', 'invoicing' ) );
493
-		}
494
-
495
-		// Abort if the country is not taxable.
496
-		if ( ! wpinv_is_country_taxable( $this->country ) ) {
497
-			return;
498
-		}
499
-
500
-		$processor = new GetPaid_Payment_Form_Submission_Taxes( $this );
501
-
502
-		foreach ( $processor->taxes as $tax ) {
503
-			$this->add_tax( $tax );
504
-		}
505
-
506
-		do_action_ref_array( 'getpaid_submissions_process_taxes', array( &$this ) );
507
-	}
508
-
509
-	/**
510
-	 * Adds a tax to the submission.
511
-	 *
512
-	 * @param array $tax An array of tax details. name, initial_tax, and recurring_tax are required.
513
-	 * @since 1.0.19
514
-	 */
515
-	public function add_tax( $tax ) {
516
-
517
-		if ( wpinv_round_tax_per_tax_rate() ) {
518
-			$tax['initial_tax']   = wpinv_round_amount( $tax['initial_tax'] );
519
-			$tax['recurring_tax'] = wpinv_round_amount( $tax['recurring_tax'] );
520
-		}
521
-
522
-		$this->taxes[ $tax['name'] ]         = $tax;
523
-		$this->totals['taxes']['initial']   += wpinv_sanitize_amount( $tax['initial_tax'] );
524
-		$this->totals['taxes']['recurring'] += wpinv_sanitize_amount( $tax['recurring_tax'] );
525
-
526
-	}
527
-
528
-	/**
529
-	 * Removes a specific tax.
530
-	 *
531
-	 * @since 1.0.19
532
-	 */
533
-	public function remove_tax( $tax_name ) {
534
-
535
-		if ( isset( $this->taxes[ $tax_name ] ) ) {
536
-			$this->totals['taxes']['initial']   -= $this->taxes[ $tax_name ]['initial_tax'];
537
-			$this->totals['taxes']['recurring'] -= $this->taxes[ $tax_name ]['recurring_tax'];
538
-			unset( $this->taxes[ $tax_name ] );
539
-		}
540
-
541
-	}
542
-
543
-	/**
544
-	 * Whether or not we'll use taxes for the submission.
545
-	 *
546
-	 * @since 1.0.19
547
-	 */
548
-	public function use_taxes() {
549
-
550
-		$use_taxes = wpinv_use_taxes();
551
-
552
-		if ( $this->has_invoice() && ! $this->invoice->is_taxable() ) {
553
-			$use_taxes = false;
554
-		}
555
-
556
-		return apply_filters( 'getpaid_submission_use_taxes', $use_taxes, $this );
557
-
558
-	}
559
-
560
-	/**
561
-	 * Returns the tax.
562
-	 *
563
-	 * @since 1.0.19
564
-	 */
565
-	public function get_tax() {
566
-		return $this->totals['taxes']['initial'];
567
-	}
568
-
569
-	/**
570
-	 * Returns the recurring tax.
571
-	 *
572
-	 * @since 1.0.19
573
-	 */
574
-	public function get_recurring_tax() {
575
-		return $this->totals['taxes']['recurring'];
576
-	}
577
-
578
-	/**
579
-	 * Returns all taxes.
580
-	 *
581
-	 * @since 1.0.19
582
-	 */
583
-	public function get_taxes() {
584
-		return $this->taxes;
585
-	}
586
-
587
-	/*
466
+    /**
467
+     * Prepares the submission's taxes.
468
+     *
469
+     * @since 1.0.19
470
+     */
471
+    public function process_taxes() {
472
+
473
+        // Abort if we're not using taxes.
474
+        if ( ! $this->use_taxes() ) {
475
+            return;
476
+        }
477
+
478
+        // If a custom country && state has been passed in, use it to calculate taxes.
479
+        $country = $this->get_field( 'wpinv_country', 'billing' );
480
+        if ( ! empty( $country ) ) {
481
+            $this->country = $country;
482
+        }
483
+
484
+        $state = $this->get_field( 'wpinv_state', 'billing' );
485
+        if ( ! empty( $state ) ) {
486
+            $this->state = $state;
487
+        }
488
+
489
+        // Confirm if the provided country and the ip country are similar.
490
+        $address_confirmed = $this->get_field( 'confirm-address' );
491
+        if ( wpinv_should_validate_vat_number() && getpaid_get_ip_country() != $this->country && empty( $address_confirmed ) ) {
492
+            throw new Exception( __( 'The country of your current location must be the same as the country of your billing location or you must confirm the billing address is your home country.', 'invoicing' ) );
493
+        }
494
+
495
+        // Abort if the country is not taxable.
496
+        if ( ! wpinv_is_country_taxable( $this->country ) ) {
497
+            return;
498
+        }
499
+
500
+        $processor = new GetPaid_Payment_Form_Submission_Taxes( $this );
501
+
502
+        foreach ( $processor->taxes as $tax ) {
503
+            $this->add_tax( $tax );
504
+        }
505
+
506
+        do_action_ref_array( 'getpaid_submissions_process_taxes', array( &$this ) );
507
+    }
508
+
509
+    /**
510
+     * Adds a tax to the submission.
511
+     *
512
+     * @param array $tax An array of tax details. name, initial_tax, and recurring_tax are required.
513
+     * @since 1.0.19
514
+     */
515
+    public function add_tax( $tax ) {
516
+
517
+        if ( wpinv_round_tax_per_tax_rate() ) {
518
+            $tax['initial_tax']   = wpinv_round_amount( $tax['initial_tax'] );
519
+            $tax['recurring_tax'] = wpinv_round_amount( $tax['recurring_tax'] );
520
+        }
521
+
522
+        $this->taxes[ $tax['name'] ]         = $tax;
523
+        $this->totals['taxes']['initial']   += wpinv_sanitize_amount( $tax['initial_tax'] );
524
+        $this->totals['taxes']['recurring'] += wpinv_sanitize_amount( $tax['recurring_tax'] );
525
+
526
+    }
527
+
528
+    /**
529
+     * Removes a specific tax.
530
+     *
531
+     * @since 1.0.19
532
+     */
533
+    public function remove_tax( $tax_name ) {
534
+
535
+        if ( isset( $this->taxes[ $tax_name ] ) ) {
536
+            $this->totals['taxes']['initial']   -= $this->taxes[ $tax_name ]['initial_tax'];
537
+            $this->totals['taxes']['recurring'] -= $this->taxes[ $tax_name ]['recurring_tax'];
538
+            unset( $this->taxes[ $tax_name ] );
539
+        }
540
+
541
+    }
542
+
543
+    /**
544
+     * Whether or not we'll use taxes for the submission.
545
+     *
546
+     * @since 1.0.19
547
+     */
548
+    public function use_taxes() {
549
+
550
+        $use_taxes = wpinv_use_taxes();
551
+
552
+        if ( $this->has_invoice() && ! $this->invoice->is_taxable() ) {
553
+            $use_taxes = false;
554
+        }
555
+
556
+        return apply_filters( 'getpaid_submission_use_taxes', $use_taxes, $this );
557
+
558
+    }
559
+
560
+    /**
561
+     * Returns the tax.
562
+     *
563
+     * @since 1.0.19
564
+     */
565
+    public function get_tax() {
566
+        return $this->totals['taxes']['initial'];
567
+    }
568
+
569
+    /**
570
+     * Returns the recurring tax.
571
+     *
572
+     * @since 1.0.19
573
+     */
574
+    public function get_recurring_tax() {
575
+        return $this->totals['taxes']['recurring'];
576
+    }
577
+
578
+    /**
579
+     * Returns all taxes.
580
+     *
581
+     * @since 1.0.19
582
+     */
583
+    public function get_taxes() {
584
+        return $this->taxes;
585
+    }
586
+
587
+    /*
588 588
 	|--------------------------------------------------------------------------
589 589
 	| Discounts
590 590
 	|--------------------------------------------------------------------------
@@ -593,99 +593,99 @@  discard block
 block discarded – undo
593 593
 	| or only one-time. They also do not have to come from a discount code.
594 594
     */
595 595
 
596
-	/**
597
-	 * Prepares the submission's discount.
598
-	 *
599
-	 * @since 1.0.19
600
-	 */
601
-	public function process_discount() {
602
-
603
-		$initial_total    = $this->get_subtotal() + $this->get_fee() + $this->get_tax();
604
-		$recurring_total  = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax();
605
-		$processor        = new GetPaid_Payment_Form_Submission_Discount( $this, $initial_total, $recurring_total );
606
-
607
-		foreach ( $processor->discounts as $discount ) {
608
-			$this->add_discount( $discount );
609
-		}
610
-
611
-		do_action_ref_array( 'getpaid_submissions_process_discounts', array( &$this ) );
612
-	}
613
-
614
-	/**
615
-	 * Adds a discount to the submission.
616
-	 *
617
-	 * @param array $discount An array of discount details. name, initial_discount, and recurring_discount are required. Include discount_code if the discount is from a discount code.
618
-	 * @since 1.0.19
619
-	 */
620
-	public function add_discount( $discount ) {
621
-		$this->discounts[ $discount['name'] ]   = $discount;
622
-		$this->totals['discount']['initial']   += wpinv_sanitize_amount( $discount['initial_discount'] );
623
-		$this->totals['discount']['recurring'] += wpinv_sanitize_amount( $discount['recurring_discount'] );
624
-	}
625
-
626
-	/**
627
-	 * Removes a discount from the submission.
628
-	 *
629
-	 * @since 1.0.19
630
-	 */
631
-	public function remove_discount( $name ) {
632
-
633
-		if ( isset( $this->discounts[ $name ] ) ) {
634
-			$this->totals['discount']['initial']   -= $this->discounts[ $name ]['initial_discount'];
635
-			$this->totals['discount']['recurring'] -= $this->discounts[ $name ]['recurring_discount'];
636
-			unset( $this->discounts[ $name ] );
637
-		}
638
-
639
-	}
640
-
641
-	/**
642
-	 * Checks whether there is a discount code associated with this submission.
643
-	 *
644
-	 * @since 1.0.19
645
-	 * @return bool
646
-	 */
647
-	public function has_discount_code() {
648
-		return ! empty( $this->discounts['discount_code'] );
649
-	}
650
-
651
-	/**
652
-	 * Returns the discount code.
653
-	 *
654
-	 * @since 1.0.19
655
-	 * @return string
656
-	 */
657
-	public function get_discount_code() {
658
-		return $this->has_discount_code() ? $this->discounts['discount_code']['discount_code'] : '';
659
-	}
660
-
661
-	/**
662
-	 * Returns the discount.
663
-	 *
664
-	 * @since 1.0.19
665
-	 */
666
-	public function get_discount() {
667
-		return $this->totals['discount']['initial'];
668
-	}
669
-
670
-	/**
671
-	 * Returns the recurring discount.
672
-	 *
673
-	 * @since 1.0.19
674
-	 */
675
-	public function get_recurring_discount() {
676
-		return $this->totals['discount']['recurring'];
677
-	}
678
-
679
-	/**
680
-	 * Returns all discounts.
681
-	 *
682
-	 * @since 1.0.19
683
-	 */
684
-	public function get_discounts() {
685
-		return $this->discounts;
686
-	}
687
-
688
-	/*
596
+    /**
597
+     * Prepares the submission's discount.
598
+     *
599
+     * @since 1.0.19
600
+     */
601
+    public function process_discount() {
602
+
603
+        $initial_total    = $this->get_subtotal() + $this->get_fee() + $this->get_tax();
604
+        $recurring_total  = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax();
605
+        $processor        = new GetPaid_Payment_Form_Submission_Discount( $this, $initial_total, $recurring_total );
606
+
607
+        foreach ( $processor->discounts as $discount ) {
608
+            $this->add_discount( $discount );
609
+        }
610
+
611
+        do_action_ref_array( 'getpaid_submissions_process_discounts', array( &$this ) );
612
+    }
613
+
614
+    /**
615
+     * Adds a discount to the submission.
616
+     *
617
+     * @param array $discount An array of discount details. name, initial_discount, and recurring_discount are required. Include discount_code if the discount is from a discount code.
618
+     * @since 1.0.19
619
+     */
620
+    public function add_discount( $discount ) {
621
+        $this->discounts[ $discount['name'] ]   = $discount;
622
+        $this->totals['discount']['initial']   += wpinv_sanitize_amount( $discount['initial_discount'] );
623
+        $this->totals['discount']['recurring'] += wpinv_sanitize_amount( $discount['recurring_discount'] );
624
+    }
625
+
626
+    /**
627
+     * Removes a discount from the submission.
628
+     *
629
+     * @since 1.0.19
630
+     */
631
+    public function remove_discount( $name ) {
632
+
633
+        if ( isset( $this->discounts[ $name ] ) ) {
634
+            $this->totals['discount']['initial']   -= $this->discounts[ $name ]['initial_discount'];
635
+            $this->totals['discount']['recurring'] -= $this->discounts[ $name ]['recurring_discount'];
636
+            unset( $this->discounts[ $name ] );
637
+        }
638
+
639
+    }
640
+
641
+    /**
642
+     * Checks whether there is a discount code associated with this submission.
643
+     *
644
+     * @since 1.0.19
645
+     * @return bool
646
+     */
647
+    public function has_discount_code() {
648
+        return ! empty( $this->discounts['discount_code'] );
649
+    }
650
+
651
+    /**
652
+     * Returns the discount code.
653
+     *
654
+     * @since 1.0.19
655
+     * @return string
656
+     */
657
+    public function get_discount_code() {
658
+        return $this->has_discount_code() ? $this->discounts['discount_code']['discount_code'] : '';
659
+    }
660
+
661
+    /**
662
+     * Returns the discount.
663
+     *
664
+     * @since 1.0.19
665
+     */
666
+    public function get_discount() {
667
+        return $this->totals['discount']['initial'];
668
+    }
669
+
670
+    /**
671
+     * Returns the recurring discount.
672
+     *
673
+     * @since 1.0.19
674
+     */
675
+    public function get_recurring_discount() {
676
+        return $this->totals['discount']['recurring'];
677
+    }
678
+
679
+    /**
680
+     * Returns all discounts.
681
+     *
682
+     * @since 1.0.19
683
+     */
684
+    public function get_discounts() {
685
+        return $this->discounts;
686
+    }
687
+
688
+    /*
689 689
 	|--------------------------------------------------------------------------
690 690
 	| Fees
691 691
 	|--------------------------------------------------------------------------
@@ -695,89 +695,89 @@  discard block
 block discarded – undo
695 695
 	| fees.
696 696
     */
697 697
 
698
-	/**
699
-	 * Prepares the submission's fees.
700
-	 *
701
-	 * @since 1.0.19
702
-	 */
703
-	public function process_fees() {
704
-
705
-		$fees_processor = new GetPaid_Payment_Form_Submission_Fees( $this );
706
-
707
-		foreach ( $fees_processor->fees as $fee ) {
708
-			$this->add_fee( $fee );
709
-		}
710
-
711
-		do_action_ref_array( 'getpaid_submissions_process_fees', array( &$this ) );
712
-	}
713
-
714
-	/**
715
-	 * Adds a fee to the submission.
716
-	 *
717
-	 * @param array $fee An array of fee details. name, initial_fee, and recurring_fee are required.
718
-	 * @since 1.0.19
719
-	 */
720
-	public function add_fee( $fee ) {
721
-
722
-		$this->fees[ $fee['name'] ]         = $fee;
723
-		$this->totals['fees']['initial']   += wpinv_sanitize_amount( $fee['initial_fee'] );
724
-		$this->totals['fees']['recurring'] += wpinv_sanitize_amount( $fee['recurring_fee'] );
725
-
726
-	}
727
-
728
-	/**
729
-	 * Removes a fee from the submission.
730
-	 *
731
-	 * @since 1.0.19
732
-	 */
733
-	public function remove_fee( $name ) {
734
-
735
-		if ( isset( $this->fees[ $name ] ) ) {
736
-			$this->totals['fees']['initial']   -= $this->fees[ $name ]['initial_fee'];
737
-			$this->totals['fees']['recurring'] -= $this->fees[ $name ]['recurring_fee'];
738
-			unset( $this->fees[ $name ] );
739
-		}
740
-
741
-	}
742
-
743
-	/**
744
-	 * Returns the fees.
745
-	 *
746
-	 * @since 1.0.19
747
-	 */
748
-	public function get_fee() {
749
-		return $this->totals['fees']['initial'];
750
-	}
751
-
752
-	/**
753
-	 * Returns the recurring fees.
754
-	 *
755
-	 * @since 1.0.19
756
-	 */
757
-	public function get_recurring_fee() {
758
-		return $this->totals['fees']['recurring'];
759
-	}
760
-
761
-	/**
762
-	 * Returns all fees.
763
-	 *
764
-	 * @since 1.0.19
765
-	 */
766
-	public function get_fees() {
767
-		return $this->fees;
768
-	}
769
-
770
-	/**
771
-	 * Checks if there are any fees for the form.
772
-	 *
773
-	 * @return bool
774
-	 * @since 1.0.19
775
-	 */
776
-	public function has_fees() {
777
-		return count( $this->fees ) !== 0;
778
-	}
779
-
780
-	/*
698
+    /**
699
+     * Prepares the submission's fees.
700
+     *
701
+     * @since 1.0.19
702
+     */
703
+    public function process_fees() {
704
+
705
+        $fees_processor = new GetPaid_Payment_Form_Submission_Fees( $this );
706
+
707
+        foreach ( $fees_processor->fees as $fee ) {
708
+            $this->add_fee( $fee );
709
+        }
710
+
711
+        do_action_ref_array( 'getpaid_submissions_process_fees', array( &$this ) );
712
+    }
713
+
714
+    /**
715
+     * Adds a fee to the submission.
716
+     *
717
+     * @param array $fee An array of fee details. name, initial_fee, and recurring_fee are required.
718
+     * @since 1.0.19
719
+     */
720
+    public function add_fee( $fee ) {
721
+
722
+        $this->fees[ $fee['name'] ]         = $fee;
723
+        $this->totals['fees']['initial']   += wpinv_sanitize_amount( $fee['initial_fee'] );
724
+        $this->totals['fees']['recurring'] += wpinv_sanitize_amount( $fee['recurring_fee'] );
725
+
726
+    }
727
+
728
+    /**
729
+     * Removes a fee from the submission.
730
+     *
731
+     * @since 1.0.19
732
+     */
733
+    public function remove_fee( $name ) {
734
+
735
+        if ( isset( $this->fees[ $name ] ) ) {
736
+            $this->totals['fees']['initial']   -= $this->fees[ $name ]['initial_fee'];
737
+            $this->totals['fees']['recurring'] -= $this->fees[ $name ]['recurring_fee'];
738
+            unset( $this->fees[ $name ] );
739
+        }
740
+
741
+    }
742
+
743
+    /**
744
+     * Returns the fees.
745
+     *
746
+     * @since 1.0.19
747
+     */
748
+    public function get_fee() {
749
+        return $this->totals['fees']['initial'];
750
+    }
751
+
752
+    /**
753
+     * Returns the recurring fees.
754
+     *
755
+     * @since 1.0.19
756
+     */
757
+    public function get_recurring_fee() {
758
+        return $this->totals['fees']['recurring'];
759
+    }
760
+
761
+    /**
762
+     * Returns all fees.
763
+     *
764
+     * @since 1.0.19
765
+     */
766
+    public function get_fees() {
767
+        return $this->fees;
768
+    }
769
+
770
+    /**
771
+     * Checks if there are any fees for the form.
772
+     *
773
+     * @return bool
774
+     * @since 1.0.19
775
+     */
776
+    public function has_fees() {
777
+        return count( $this->fees ) !== 0;
778
+    }
779
+
780
+    /*
781 781
 	|--------------------------------------------------------------------------
782 782
 	| MISC
783 783
 	|--------------------------------------------------------------------------
@@ -785,119 +785,119 @@  discard block
 block discarded – undo
785 785
 	| Extra submission functions.
786 786
     */
787 787
 
788
-	/**
789
-	 * Checks if this is the initial fetch.
790
-	 *
791
-	 * @return bool
792
-	 * @since 1.0.19
793
-	 */
794
-	public function is_initial_fetch() {
795
-		return empty( $this->data['initial_state'] );
796
-	}
797
-
798
-	/**
799
-	 * Returns the total amount to collect for this submission.
800
-	 *
801
-	 * @since 1.0.19
802
-	 */
803
-	public function get_total() {
804
-		$total = $this->get_subtotal() + $this->get_fee() + $this->get_tax() - $this->get_discount();
805
-		return max( $total, 0 );
806
-	}
807
-
808
-	/**
809
-	 * Returns the recurring total amount to collect for this submission.
810
-	 *
811
-	 * @since 1.0.19
812
-	 */
813
-	public function get_recurring_total() {
814
-		$total = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax() - $this->get_recurring_discount();
815
-		return max( $total, 0 );
816
-	}
817
-
818
-	/**
819
-	 * Whether payment details should be collected for this submission.
820
-	 *
821
-	 * @since 1.0.19
822
-	 */
823
-	public function should_collect_payment_details() {
824
-		$initial   = $this->get_total();
825
-		$recurring = $this->get_recurring_total();
826
-
827
-		if ( $this->has_recurring == 0 ) {
828
-			$recurring = 0;
829
-		}
830
-
831
-		$collect = $initial > 0 || $recurring > 0;
832
-		return apply_filters( 'getpaid_submission_should_collect_payment_details', $collect, $this  );
833
-	}
834
-
835
-	/**
836
-	 * Returns the billing email of the user.
837
-	 *
838
-	 * @since 1.0.19
839
-	 */
840
-	public function get_billing_email() {
841
-		return apply_filters( 'getpaid_get_submission_billing_email', $this->get_field( 'billing_email' ), $this  );
842
-	}
843
-
844
-	/**
845
-	 * Checks if the submitter has a billing email.
846
-	 *
847
-	 * @since 1.0.19
848
-	 */
849
-	public function has_billing_email() {
850
-		$billing_email = $this->get_billing_email();
851
-		return ! empty( $billing_email ) && is_email( $billing_email );
852
-	}
853
-
854
-	/**
855
-	 * Returns the appropriate currency for the submission.
856
-	 *
857
-	 * @since 1.0.19
858
-	 * @return string
859
-	 */
860
-	public function get_currency() {
861
-		return $this->has_invoice() ? $this->invoice->get_currency() : wpinv_get_currency();
862
-    }
863
-
864
-    /**
865
-	 * Returns the raw submission data.
866
-	 *
867
-	 * @since 1.0.19
868
-	 * @return array
869
-	 */
870
-	public function get_data() {
871
-		return $this->data;
872
-	}
873
-
874
-	/**
875
-	 * Returns a field from the submission data
876
-	 *
877
-	 * @param string $field
878
-	 * @since 1.0.19
879
-	 * @return mixed|null
880
-	 */
881
-	public function get_field( $field, $sub_array_key = null ) {
882
-		return getpaid_get_array_field( $this->data, $field, $sub_array_key );
883
-	}
884
-
885
-	/**
886
-	 * Checks if a required field is set.
887
-	 *
888
-	 * @since 1.0.19
889
-	 */
890
-	public function is_required_field_set( $field ) {
891
-		return empty( $field['required'] ) || ! empty( $this->data[ $field['id'] ] );
892
-	}
893
-
894
-	/**
895
-	 * Formats an amount
896
-	 *
897
-	 * @since 1.0.19
898
-	 */
899
-	public function format_amount( $amount ) {
900
-		return wpinv_price( $amount, $this->get_currency() );
901
-	}
788
+    /**
789
+     * Checks if this is the initial fetch.
790
+     *
791
+     * @return bool
792
+     * @since 1.0.19
793
+     */
794
+    public function is_initial_fetch() {
795
+        return empty( $this->data['initial_state'] );
796
+    }
797
+
798
+    /**
799
+     * Returns the total amount to collect for this submission.
800
+     *
801
+     * @since 1.0.19
802
+     */
803
+    public function get_total() {
804
+        $total = $this->get_subtotal() + $this->get_fee() + $this->get_tax() - $this->get_discount();
805
+        return max( $total, 0 );
806
+    }
807
+
808
+    /**
809
+     * Returns the recurring total amount to collect for this submission.
810
+     *
811
+     * @since 1.0.19
812
+     */
813
+    public function get_recurring_total() {
814
+        $total = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax() - $this->get_recurring_discount();
815
+        return max( $total, 0 );
816
+    }
817
+
818
+    /**
819
+     * Whether payment details should be collected for this submission.
820
+     *
821
+     * @since 1.0.19
822
+     */
823
+    public function should_collect_payment_details() {
824
+        $initial   = $this->get_total();
825
+        $recurring = $this->get_recurring_total();
826
+
827
+        if ( $this->has_recurring == 0 ) {
828
+            $recurring = 0;
829
+        }
830
+
831
+        $collect = $initial > 0 || $recurring > 0;
832
+        return apply_filters( 'getpaid_submission_should_collect_payment_details', $collect, $this  );
833
+    }
834
+
835
+    /**
836
+     * Returns the billing email of the user.
837
+     *
838
+     * @since 1.0.19
839
+     */
840
+    public function get_billing_email() {
841
+        return apply_filters( 'getpaid_get_submission_billing_email', $this->get_field( 'billing_email' ), $this  );
842
+    }
843
+
844
+    /**
845
+     * Checks if the submitter has a billing email.
846
+     *
847
+     * @since 1.0.19
848
+     */
849
+    public function has_billing_email() {
850
+        $billing_email = $this->get_billing_email();
851
+        return ! empty( $billing_email ) && is_email( $billing_email );
852
+    }
853
+
854
+    /**
855
+     * Returns the appropriate currency for the submission.
856
+     *
857
+     * @since 1.0.19
858
+     * @return string
859
+     */
860
+    public function get_currency() {
861
+        return $this->has_invoice() ? $this->invoice->get_currency() : wpinv_get_currency();
862
+    }
863
+
864
+    /**
865
+     * Returns the raw submission data.
866
+     *
867
+     * @since 1.0.19
868
+     * @return array
869
+     */
870
+    public function get_data() {
871
+        return $this->data;
872
+    }
873
+
874
+    /**
875
+     * Returns a field from the submission data
876
+     *
877
+     * @param string $field
878
+     * @since 1.0.19
879
+     * @return mixed|null
880
+     */
881
+    public function get_field( $field, $sub_array_key = null ) {
882
+        return getpaid_get_array_field( $this->data, $field, $sub_array_key );
883
+    }
884
+
885
+    /**
886
+     * Checks if a required field is set.
887
+     *
888
+     * @since 1.0.19
889
+     */
890
+    public function is_required_field_set( $field ) {
891
+        return empty( $field['required'] ) || ! empty( $this->data[ $field['id'] ] );
892
+    }
893
+
894
+    /**
895
+     * Formats an amount
896
+     *
897
+     * @since 1.0.19
898
+     */
899
+    public function format_amount( $amount ) {
900
+        return wpinv_price( $amount, $this->get_currency() );
901
+    }
902 902
 
903 903
 }
Please login to merge, or discard this patch.
Spacing   +126 added lines, -126 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
 
@@ -149,8 +149,8 @@  discard block
 block discarded – undo
149 149
 		$this->state   = wpinv_get_default_state();
150 150
 
151 151
 		// Do we have an actual submission?
152
-		if ( isset( $_POST['getpaid_payment_form_submission'] ) ) {
153
-			$this->load_data( $_POST );
152
+		if (isset($_POST['getpaid_payment_form_submission'])) {
153
+			$this->load_data($_POST);
154 154
 		}
155 155
 
156 156
 	}
@@ -160,19 +160,19 @@  discard block
 block discarded – undo
160 160
 	 *
161 161
 	 * @param array $data
162 162
 	 */
163
-	public function load_data( $data ) {
163
+	public function load_data($data) {
164 164
 
165 165
 		// Remove slashes from the submitted data...
166
-		$data       = wp_unslash( $data );
166
+		$data       = wp_unslash($data);
167 167
 
168 168
 		// Allow plugins to filter the data.
169
-		$data       = apply_filters( 'getpaid_submission_data', $data, $this );
169
+		$data       = apply_filters('getpaid_submission_data', $data, $this);
170 170
 
171 171
 		// Cache it...
172 172
 		$this->data = $data;
173 173
 
174 174
 		// Then generate a unique id from the data.
175
-		$this->id   = md5( wp_json_encode( $data ) );
175
+		$this->id   = md5(wp_json_encode($data));
176 176
 
177 177
 		// Finally, process the submission.
178 178
 		try {
@@ -182,30 +182,30 @@  discard block
 block discarded – undo
182 182
 			$processors = apply_filters(
183 183
 				'getpaid_payment_form_submission_processors',
184 184
 				array(
185
-					array( $this, 'process_payment_form' ),
186
-					array( $this, 'process_invoice' ),
187
-					array( $this, 'process_fees' ),
188
-					array( $this, 'process_items' ),
189
-					array( $this, 'process_discount' ),
190
-					array( $this, 'process_taxes' ),
185
+					array($this, 'process_payment_form'),
186
+					array($this, 'process_invoice'),
187
+					array($this, 'process_fees'),
188
+					array($this, 'process_items'),
189
+					array($this, 'process_discount'),
190
+					array($this, 'process_taxes'),
191 191
 				),
192 192
 				$this		
193 193
 			);
194 194
 
195
-			foreach ( $processors as $processor ) {
196
-				call_user_func_array( $processor, array( &$this ) );
195
+			foreach ($processors as $processor) {
196
+				call_user_func_array($processor, array(&$this));
197 197
 			}
198 198
 
199
-		} catch( GetPaid_Payment_Exception $e ) {
199
+		} catch (GetPaid_Payment_Exception $e) {
200 200
 			$this->last_error      = $e->getMessage();
201 201
 			$this->last_error_code = $e->getErrorCode();
202
-		} catch ( Exception $e ) {
202
+		} catch (Exception $e) {
203 203
 			$this->last_error      = $e->getMessage();
204 204
 			$this->last_error_code = $e->getCode();
205 205
 		}
206 206
 
207 207
 		// Fired when we are done processing a submission.
208
-		do_action_ref_array( 'getpaid_process_submission', array( &$this ) );
208
+		do_action_ref_array('getpaid_process_submission', array(&$this));
209 209
 
210 210
 	}
211 211
 
@@ -226,18 +226,18 @@  discard block
 block discarded – undo
226 226
 	public function process_payment_form() {
227 227
 
228 228
 		// Every submission needs an active payment form.
229
-		if ( empty( $this->data['form_id'] ) ) {
230
-			throw new Exception( __( 'Missing payment form', 'invoicing' ) );
229
+		if (empty($this->data['form_id'])) {
230
+			throw new Exception(__('Missing payment form', 'invoicing'));
231 231
 		}
232 232
 
233 233
 		// Fetch the payment form.
234
-		$this->payment_form = new GetPaid_Payment_Form( $this->data['form_id'] );
234
+		$this->payment_form = new GetPaid_Payment_Form($this->data['form_id']);
235 235
 
236
-		if ( ! $this->payment_form->is_active() ) {
237
-			throw new Exception( __( 'Payment form not active', 'invoicing' ) );
236
+		if (!$this->payment_form->is_active()) {
237
+			throw new Exception(__('Payment form not active', 'invoicing'));
238 238
 		}
239 239
 
240
-		do_action_ref_array( 'getpaid_submissions_process_payment_form', array( &$this ) );
240
+		do_action_ref_array('getpaid_submissions_process_payment_form', array(&$this));
241 241
 	}
242 242
 
243 243
     /**
@@ -267,53 +267,53 @@  discard block
 block discarded – undo
267 267
 	public function process_invoice() {
268 268
 
269 269
 		// Abort if there is no invoice.
270
-		if ( empty( $this->data['invoice_id'] ) ) {
270
+		if (empty($this->data['invoice_id'])) {
271 271
 			return;
272 272
 		}
273 273
 
274 274
 		// If the submission is for an existing invoice, ensure that it exists
275 275
 		// and that it is not paid for.
276
-		$invoice = wpinv_get_invoice( $this->data['invoice_id'] );
276
+		$invoice = wpinv_get_invoice($this->data['invoice_id']);
277 277
 
278
-        if ( empty( $invoice ) ) {
279
-			throw new Exception( __( 'Invalid invoice', 'invoicing' ) );
278
+        if (empty($invoice)) {
279
+			throw new Exception(__('Invalid invoice', 'invoicing'));
280 280
 		}
281 281
 
282
-		if ( $invoice->is_paid() ) {
283
-			throw new Exception( __( 'This invoice is already paid for.', 'invoicing' ) );
282
+		if ($invoice->is_paid()) {
283
+			throw new Exception(__('This invoice is already paid for.', 'invoicing'));
284 284
 		}
285 285
 
286 286
 		$this->payment_form->invoice = $invoice;
287
-		if ( ! $this->payment_form->is_default() ) {
287
+		if (!$this->payment_form->is_default()) {
288 288
 
289 289
 			$items    = array();
290 290
 			$item_ids = array();
291 291
 	
292
-			foreach ( $invoice->get_items() as $item ) {
293
-				if ( ! in_array( $item->get_id(), $item_ids ) ) {
292
+			foreach ($invoice->get_items() as $item) {
293
+				if (!in_array($item->get_id(), $item_ids)) {
294 294
 					$item_ids[] = $item->get_id();
295 295
 					$items[]    = $item;
296 296
 				}
297 297
 			}
298 298
 	
299
-			foreach ( $this->payment_form->get_items() as $item ) {
300
-				if ( ! in_array( $item->get_id(), $item_ids ) ) {
299
+			foreach ($this->payment_form->get_items() as $item) {
300
+				if (!in_array($item->get_id(), $item_ids)) {
301 301
 					$item_ids[] = $item->get_id();
302 302
 					$items[]    = $item;
303 303
 				}
304 304
 			}
305 305
 	
306
-			$this->payment_form->set_items( $items );
306
+			$this->payment_form->set_items($items);
307 307
 	
308 308
 		} else {
309
-			$this->payment_form->set_items( $invoice->get_items() );
309
+			$this->payment_form->set_items($invoice->get_items());
310 310
 		}
311 311
 
312 312
 		$this->country = $invoice->get_country();
313 313
 		$this->state   = $invoice->get_state();
314 314
 		$this->invoice = $invoice;
315 315
 
316
-		do_action_ref_array( 'getpaid_submissions_process_invoice', array( &$this ) );
316
+		do_action_ref_array('getpaid_submissions_process_invoice', array(&$this));
317 317
 	}
318 318
 
319 319
 	/**
@@ -333,7 +333,7 @@  discard block
 block discarded – undo
333 333
 	 * @return bool
334 334
 	 */
335 335
 	public function has_invoice() {
336
-		return ! empty( $this->invoice );
336
+		return !empty($this->invoice);
337 337
 	}
338 338
 
339 339
 	/*
@@ -352,13 +352,13 @@  discard block
 block discarded – undo
352 352
 	 */
353 353
 	public function process_items() {
354 354
 
355
-		$processor = new GetPaid_Payment_Form_Submission_Items( $this );
355
+		$processor = new GetPaid_Payment_Form_Submission_Items($this);
356 356
 
357
-		foreach ( $processor->items as $item ) {
358
-			$this->add_item( $item );
357
+		foreach ($processor->items as $item) {
358
+			$this->add_item($item);
359 359
 		}
360 360
 
361
-		do_action_ref_array( 'getpaid_submissions_process_items', array( &$this ) );
361
+		do_action_ref_array('getpaid_submissions_process_items', array(&$this));
362 362
 	}
363 363
 
364 364
 	/**
@@ -367,18 +367,18 @@  discard block
 block discarded – undo
367 367
 	 * @since 1.0.19
368 368
 	 * @param GetPaid_Form_Item $item
369 369
 	 */
370
-	public function add_item( $item ) {
370
+	public function add_item($item) {
371 371
 
372 372
 		// Make sure that it is available for purchase.
373
-		if ( ! $item->can_purchase() || isset( $this->items[ $item->get_id() ] ) ) {
373
+		if (!$item->can_purchase() || isset($this->items[$item->get_id()])) {
374 374
 			return;
375 375
 		}
376 376
 
377 377
 		// Each submission can only contain one recurring item.
378
-		if ( $item->is_recurring() ) {
378
+		if ($item->is_recurring()) {
379 379
 
380
-			if ( $this->has_recurring != 0 ) {
381
-				throw new Exception( __( 'You can only buy one recurring item at a time.', 'invoicing' ) );
380
+			if ($this->has_recurring != 0) {
381
+				throw new Exception(__('You can only buy one recurring item at a time.', 'invoicing'));
382 382
 			}
383 383
 
384 384
 			$this->has_recurring = $item->get_id();
@@ -386,11 +386,11 @@  discard block
 block discarded – undo
386 386
 		}
387 387
 
388 388
 		// Update the items and totals.
389
-		$this->items[ $item->get_id() ]         = $item;
389
+		$this->items[$item->get_id()]         = $item;
390 390
 		$this->totals['subtotal']['initial']   += $item->get_sub_total();
391 391
 		$this->totals['subtotal']['recurring'] += $item->get_recurring_sub_total();
392 392
 
393
-		$this->subscription_groups = getpaid_calculate_subscription_totals( $this );
393
+		$this->subscription_groups = getpaid_calculate_subscription_totals($this);
394 394
 	}
395 395
 
396 396
 	/**
@@ -401,17 +401,17 @@  discard block
 block discarded – undo
401 401
 	 *
402 402
 	 * @since 1.0.19
403 403
 	 */
404
-	public function remove_item( $item_id ) {
404
+	public function remove_item($item_id) {
405 405
 
406
-		if ( isset( $this->items[ $item_id ] ) ) {
407
-			$this->totals['subtotal']['initial']   -= $this->items[ $item_id ]->get_sub_total();
408
-			$this->totals['subtotal']['recurring'] -= $this->items[ $item_id ]->get_recurring_sub_total();
406
+		if (isset($this->items[$item_id])) {
407
+			$this->totals['subtotal']['initial']   -= $this->items[$item_id]->get_sub_total();
408
+			$this->totals['subtotal']['recurring'] -= $this->items[$item_id]->get_recurring_sub_total();
409 409
 
410
-			if ( $this->items[ $item_id ]->is_recurring() ) {
410
+			if ($this->items[$item_id]->is_recurring()) {
411 411
 				$this->has_recurring = 0;
412 412
 			}
413 413
 
414
-			unset( $this->items[ $item_id ] );
414
+			unset($this->items[$item_id]);
415 415
 		}
416 416
 
417 417
 	}
@@ -423,7 +423,7 @@  discard block
 block discarded – undo
423 423
 	 */
424 424
 	public function get_subtotal() {
425 425
 
426
-		if ( wpinv_prices_include_tax() ) {
426
+		if (wpinv_prices_include_tax()) {
427 427
 			return $this->totals['subtotal']['initial'] - $this->totals['taxes']['initial'];
428 428
 		}
429 429
 
@@ -437,7 +437,7 @@  discard block
 block discarded – undo
437 437
 	 */
438 438
 	public function get_recurring_subtotal() {
439 439
 
440
-		if ( wpinv_prices_include_tax() ) {
440
+		if (wpinv_prices_include_tax()) {
441 441
 			return $this->totals['subtotal']['recurring'] - $this->totals['taxes']['recurring'];
442 442
 		}
443 443
 
@@ -471,39 +471,39 @@  discard block
 block discarded – undo
471 471
 	public function process_taxes() {
472 472
 
473 473
 		// Abort if we're not using taxes.
474
-		if ( ! $this->use_taxes() ) {
474
+		if (!$this->use_taxes()) {
475 475
 			return;
476 476
 		}
477 477
 
478 478
 		// If a custom country && state has been passed in, use it to calculate taxes.
479
-		$country = $this->get_field( 'wpinv_country', 'billing' );
480
-		if ( ! empty( $country ) ) {
479
+		$country = $this->get_field('wpinv_country', 'billing');
480
+		if (!empty($country)) {
481 481
 			$this->country = $country;
482 482
 		}
483 483
 
484
-		$state = $this->get_field( 'wpinv_state', 'billing' );
485
-		if ( ! empty( $state ) ) {
484
+		$state = $this->get_field('wpinv_state', 'billing');
485
+		if (!empty($state)) {
486 486
 			$this->state = $state;
487 487
 		}
488 488
 
489 489
 		// Confirm if the provided country and the ip country are similar.
490
-		$address_confirmed = $this->get_field( 'confirm-address' );
491
-		if ( wpinv_should_validate_vat_number() && getpaid_get_ip_country() != $this->country && empty( $address_confirmed ) ) {
492
-			throw new Exception( __( 'The country of your current location must be the same as the country of your billing location or you must confirm the billing address is your home country.', 'invoicing' ) );
490
+		$address_confirmed = $this->get_field('confirm-address');
491
+		if (wpinv_should_validate_vat_number() && getpaid_get_ip_country() != $this->country && empty($address_confirmed)) {
492
+			throw new Exception(__('The country of your current location must be the same as the country of your billing location or you must confirm the billing address is your home country.', 'invoicing'));
493 493
 		}
494 494
 
495 495
 		// Abort if the country is not taxable.
496
-		if ( ! wpinv_is_country_taxable( $this->country ) ) {
496
+		if (!wpinv_is_country_taxable($this->country)) {
497 497
 			return;
498 498
 		}
499 499
 
500
-		$processor = new GetPaid_Payment_Form_Submission_Taxes( $this );
500
+		$processor = new GetPaid_Payment_Form_Submission_Taxes($this);
501 501
 
502
-		foreach ( $processor->taxes as $tax ) {
503
-			$this->add_tax( $tax );
502
+		foreach ($processor->taxes as $tax) {
503
+			$this->add_tax($tax);
504 504
 		}
505 505
 
506
-		do_action_ref_array( 'getpaid_submissions_process_taxes', array( &$this ) );
506
+		do_action_ref_array('getpaid_submissions_process_taxes', array(&$this));
507 507
 	}
508 508
 
509 509
 	/**
@@ -512,16 +512,16 @@  discard block
 block discarded – undo
512 512
 	 * @param array $tax An array of tax details. name, initial_tax, and recurring_tax are required.
513 513
 	 * @since 1.0.19
514 514
 	 */
515
-	public function add_tax( $tax ) {
515
+	public function add_tax($tax) {
516 516
 
517
-		if ( wpinv_round_tax_per_tax_rate() ) {
518
-			$tax['initial_tax']   = wpinv_round_amount( $tax['initial_tax'] );
519
-			$tax['recurring_tax'] = wpinv_round_amount( $tax['recurring_tax'] );
517
+		if (wpinv_round_tax_per_tax_rate()) {
518
+			$tax['initial_tax']   = wpinv_round_amount($tax['initial_tax']);
519
+			$tax['recurring_tax'] = wpinv_round_amount($tax['recurring_tax']);
520 520
 		}
521 521
 
522
-		$this->taxes[ $tax['name'] ]         = $tax;
523
-		$this->totals['taxes']['initial']   += wpinv_sanitize_amount( $tax['initial_tax'] );
524
-		$this->totals['taxes']['recurring'] += wpinv_sanitize_amount( $tax['recurring_tax'] );
522
+		$this->taxes[$tax['name']]         = $tax;
523
+		$this->totals['taxes']['initial']   += wpinv_sanitize_amount($tax['initial_tax']);
524
+		$this->totals['taxes']['recurring'] += wpinv_sanitize_amount($tax['recurring_tax']);
525 525
 
526 526
 	}
527 527
 
@@ -530,12 +530,12 @@  discard block
 block discarded – undo
530 530
 	 *
531 531
 	 * @since 1.0.19
532 532
 	 */
533
-	public function remove_tax( $tax_name ) {
533
+	public function remove_tax($tax_name) {
534 534
 
535
-		if ( isset( $this->taxes[ $tax_name ] ) ) {
536
-			$this->totals['taxes']['initial']   -= $this->taxes[ $tax_name ]['initial_tax'];
537
-			$this->totals['taxes']['recurring'] -= $this->taxes[ $tax_name ]['recurring_tax'];
538
-			unset( $this->taxes[ $tax_name ] );
535
+		if (isset($this->taxes[$tax_name])) {
536
+			$this->totals['taxes']['initial']   -= $this->taxes[$tax_name]['initial_tax'];
537
+			$this->totals['taxes']['recurring'] -= $this->taxes[$tax_name]['recurring_tax'];
538
+			unset($this->taxes[$tax_name]);
539 539
 		}
540 540
 
541 541
 	}
@@ -549,11 +549,11 @@  discard block
 block discarded – undo
549 549
 
550 550
 		$use_taxes = wpinv_use_taxes();
551 551
 
552
-		if ( $this->has_invoice() && ! $this->invoice->is_taxable() ) {
552
+		if ($this->has_invoice() && !$this->invoice->is_taxable()) {
553 553
 			$use_taxes = false;
554 554
 		}
555 555
 
556
-		return apply_filters( 'getpaid_submission_use_taxes', $use_taxes, $this );
556
+		return apply_filters('getpaid_submission_use_taxes', $use_taxes, $this);
557 557
 
558 558
 	}
559 559
 
@@ -602,13 +602,13 @@  discard block
 block discarded – undo
602 602
 
603 603
 		$initial_total    = $this->get_subtotal() + $this->get_fee() + $this->get_tax();
604 604
 		$recurring_total  = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax();
605
-		$processor        = new GetPaid_Payment_Form_Submission_Discount( $this, $initial_total, $recurring_total );
605
+		$processor        = new GetPaid_Payment_Form_Submission_Discount($this, $initial_total, $recurring_total);
606 606
 
607
-		foreach ( $processor->discounts as $discount ) {
608
-			$this->add_discount( $discount );
607
+		foreach ($processor->discounts as $discount) {
608
+			$this->add_discount($discount);
609 609
 		}
610 610
 
611
-		do_action_ref_array( 'getpaid_submissions_process_discounts', array( &$this ) );
611
+		do_action_ref_array('getpaid_submissions_process_discounts', array(&$this));
612 612
 	}
613 613
 
614 614
 	/**
@@ -617,10 +617,10 @@  discard block
 block discarded – undo
617 617
 	 * @param array $discount An array of discount details. name, initial_discount, and recurring_discount are required. Include discount_code if the discount is from a discount code.
618 618
 	 * @since 1.0.19
619 619
 	 */
620
-	public function add_discount( $discount ) {
621
-		$this->discounts[ $discount['name'] ]   = $discount;
622
-		$this->totals['discount']['initial']   += wpinv_sanitize_amount( $discount['initial_discount'] );
623
-		$this->totals['discount']['recurring'] += wpinv_sanitize_amount( $discount['recurring_discount'] );
620
+	public function add_discount($discount) {
621
+		$this->discounts[$discount['name']]   = $discount;
622
+		$this->totals['discount']['initial']   += wpinv_sanitize_amount($discount['initial_discount']);
623
+		$this->totals['discount']['recurring'] += wpinv_sanitize_amount($discount['recurring_discount']);
624 624
 	}
625 625
 
626 626
 	/**
@@ -628,12 +628,12 @@  discard block
 block discarded – undo
628 628
 	 *
629 629
 	 * @since 1.0.19
630 630
 	 */
631
-	public function remove_discount( $name ) {
631
+	public function remove_discount($name) {
632 632
 
633
-		if ( isset( $this->discounts[ $name ] ) ) {
634
-			$this->totals['discount']['initial']   -= $this->discounts[ $name ]['initial_discount'];
635
-			$this->totals['discount']['recurring'] -= $this->discounts[ $name ]['recurring_discount'];
636
-			unset( $this->discounts[ $name ] );
633
+		if (isset($this->discounts[$name])) {
634
+			$this->totals['discount']['initial']   -= $this->discounts[$name]['initial_discount'];
635
+			$this->totals['discount']['recurring'] -= $this->discounts[$name]['recurring_discount'];
636
+			unset($this->discounts[$name]);
637 637
 		}
638 638
 
639 639
 	}
@@ -645,7 +645,7 @@  discard block
 block discarded – undo
645 645
 	 * @return bool
646 646
 	 */
647 647
 	public function has_discount_code() {
648
-		return ! empty( $this->discounts['discount_code'] );
648
+		return !empty($this->discounts['discount_code']);
649 649
 	}
650 650
 
651 651
 	/**
@@ -702,13 +702,13 @@  discard block
 block discarded – undo
702 702
 	 */
703 703
 	public function process_fees() {
704 704
 
705
-		$fees_processor = new GetPaid_Payment_Form_Submission_Fees( $this );
705
+		$fees_processor = new GetPaid_Payment_Form_Submission_Fees($this);
706 706
 
707
-		foreach ( $fees_processor->fees as $fee ) {
708
-			$this->add_fee( $fee );
707
+		foreach ($fees_processor->fees as $fee) {
708
+			$this->add_fee($fee);
709 709
 		}
710 710
 
711
-		do_action_ref_array( 'getpaid_submissions_process_fees', array( &$this ) );
711
+		do_action_ref_array('getpaid_submissions_process_fees', array(&$this));
712 712
 	}
713 713
 
714 714
 	/**
@@ -717,11 +717,11 @@  discard block
 block discarded – undo
717 717
 	 * @param array $fee An array of fee details. name, initial_fee, and recurring_fee are required.
718 718
 	 * @since 1.0.19
719 719
 	 */
720
-	public function add_fee( $fee ) {
720
+	public function add_fee($fee) {
721 721
 
722
-		$this->fees[ $fee['name'] ]         = $fee;
723
-		$this->totals['fees']['initial']   += wpinv_sanitize_amount( $fee['initial_fee'] );
724
-		$this->totals['fees']['recurring'] += wpinv_sanitize_amount( $fee['recurring_fee'] );
722
+		$this->fees[$fee['name']]         = $fee;
723
+		$this->totals['fees']['initial']   += wpinv_sanitize_amount($fee['initial_fee']);
724
+		$this->totals['fees']['recurring'] += wpinv_sanitize_amount($fee['recurring_fee']);
725 725
 
726 726
 	}
727 727
 
@@ -730,12 +730,12 @@  discard block
 block discarded – undo
730 730
 	 *
731 731
 	 * @since 1.0.19
732 732
 	 */
733
-	public function remove_fee( $name ) {
733
+	public function remove_fee($name) {
734 734
 
735
-		if ( isset( $this->fees[ $name ] ) ) {
736
-			$this->totals['fees']['initial']   -= $this->fees[ $name ]['initial_fee'];
737
-			$this->totals['fees']['recurring'] -= $this->fees[ $name ]['recurring_fee'];
738
-			unset( $this->fees[ $name ] );
735
+		if (isset($this->fees[$name])) {
736
+			$this->totals['fees']['initial']   -= $this->fees[$name]['initial_fee'];
737
+			$this->totals['fees']['recurring'] -= $this->fees[$name]['recurring_fee'];
738
+			unset($this->fees[$name]);
739 739
 		}
740 740
 
741 741
 	}
@@ -774,7 +774,7 @@  discard block
 block discarded – undo
774 774
 	 * @since 1.0.19
775 775
 	 */
776 776
 	public function has_fees() {
777
-		return count( $this->fees ) !== 0;
777
+		return count($this->fees) !== 0;
778 778
 	}
779 779
 
780 780
 	/*
@@ -792,7 +792,7 @@  discard block
 block discarded – undo
792 792
 	 * @since 1.0.19
793 793
 	 */
794 794
 	public function is_initial_fetch() {
795
-		return empty( $this->data['initial_state'] );
795
+		return empty($this->data['initial_state']);
796 796
 	}
797 797
 
798 798
 	/**
@@ -802,7 +802,7 @@  discard block
 block discarded – undo
802 802
 	 */
803 803
 	public function get_total() {
804 804
 		$total = $this->get_subtotal() + $this->get_fee() + $this->get_tax() - $this->get_discount();
805
-		return max( $total, 0 );
805
+		return max($total, 0);
806 806
 	}
807 807
 
808 808
 	/**
@@ -812,7 +812,7 @@  discard block
 block discarded – undo
812 812
 	 */
813 813
 	public function get_recurring_total() {
814 814
 		$total = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax() - $this->get_recurring_discount();
815
-		return max( $total, 0 );
815
+		return max($total, 0);
816 816
 	}
817 817
 
818 818
 	/**
@@ -824,12 +824,12 @@  discard block
 block discarded – undo
824 824
 		$initial   = $this->get_total();
825 825
 		$recurring = $this->get_recurring_total();
826 826
 
827
-		if ( $this->has_recurring == 0 ) {
827
+		if ($this->has_recurring == 0) {
828 828
 			$recurring = 0;
829 829
 		}
830 830
 
831 831
 		$collect = $initial > 0 || $recurring > 0;
832
-		return apply_filters( 'getpaid_submission_should_collect_payment_details', $collect, $this  );
832
+		return apply_filters('getpaid_submission_should_collect_payment_details', $collect, $this);
833 833
 	}
834 834
 
835 835
 	/**
@@ -838,7 +838,7 @@  discard block
 block discarded – undo
838 838
 	 * @since 1.0.19
839 839
 	 */
840 840
 	public function get_billing_email() {
841
-		return apply_filters( 'getpaid_get_submission_billing_email', $this->get_field( 'billing_email' ), $this  );
841
+		return apply_filters('getpaid_get_submission_billing_email', $this->get_field('billing_email'), $this);
842 842
 	}
843 843
 
844 844
 	/**
@@ -848,7 +848,7 @@  discard block
 block discarded – undo
848 848
 	 */
849 849
 	public function has_billing_email() {
850 850
 		$billing_email = $this->get_billing_email();
851
-		return ! empty( $billing_email ) && is_email( $billing_email );
851
+		return !empty($billing_email) && is_email($billing_email);
852 852
 	}
853 853
 
854 854
 	/**
@@ -878,8 +878,8 @@  discard block
 block discarded – undo
878 878
 	 * @since 1.0.19
879 879
 	 * @return mixed|null
880 880
 	 */
881
-	public function get_field( $field, $sub_array_key = null ) {
882
-		return getpaid_get_array_field( $this->data, $field, $sub_array_key );
881
+	public function get_field($field, $sub_array_key = null) {
882
+		return getpaid_get_array_field($this->data, $field, $sub_array_key);
883 883
 	}
884 884
 
885 885
 	/**
@@ -887,8 +887,8 @@  discard block
 block discarded – undo
887 887
 	 *
888 888
 	 * @since 1.0.19
889 889
 	 */
890
-	public function is_required_field_set( $field ) {
891
-		return empty( $field['required'] ) || ! empty( $this->data[ $field['id'] ] );
890
+	public function is_required_field_set($field) {
891
+		return empty($field['required']) || !empty($this->data[$field['id']]);
892 892
 	}
893 893
 
894 894
 	/**
@@ -896,8 +896,8 @@  discard block
 block discarded – undo
896 896
 	 *
897 897
 	 * @since 1.0.19
898 898
 	 */
899
-	public function format_amount( $amount ) {
900
-		return wpinv_price( $amount, $this->get_currency() );
899
+	public function format_amount($amount) {
900
+		return wpinv_price($amount, $this->get_currency());
901 901
 	}
902 902
 
903 903
 }
Please login to merge, or discard this patch.
includes/class-getpaid-tax.php 2 patches
Indentation   +163 added lines, -163 removed lines patch added patch discarded remove patch
@@ -13,168 +13,168 @@
 block discarded – undo
13 13
  */
14 14
 class GetPaid_Tax {
15 15
 
16
-	/**
17
-	 * Calculates tax for a line item.
18
-	 *
19
-	 * @param  float   $price              The price to calc tax on.
20
-	 * @param  array   $rates              The rates to apply.
21
-	 * @param  boolean $price_includes_tax Whether the passed price has taxes included.
22
-	 * @return array                       Array of tax name => tax amount.
23
-	 */
24
-	public static function calc_tax( $price, $rates, $price_includes_tax = false ) {
25
-
26
-		if ( $price_includes_tax ) {
27
-			$taxes = self::calc_inclusive_tax( $price, $rates );
28
-		} else {
29
-			$taxes = self::calc_exclusive_tax( $price, $rates );
30
-		}
31
-
32
-		return apply_filters( 'getpaid_calc_tax', $taxes, $price, $rates, $price_includes_tax );
33
-
34
-	}
35
-
36
-	/**
37
-	 * Calc tax from inclusive price.
38
-	 *
39
-	 * @param  float $price Price to calculate tax for.
40
-	 * @param  array $rates Array of tax rates.
41
-	 * @return array
42
-	 */
43
-	public static function calc_inclusive_tax( $price, $rates ) {
44
-		$taxes     = array();
45
-		$tax_rates = wp_list_pluck( $rates, 'rate', 'name' );
46
-
47
-		// Add tax rates.
48
-		$tax_rate  = 1 + ( array_sum( $tax_rates ) / 100 );
49
-
50
-		foreach ( $tax_rates as $name => $rate ) {
51
-			$the_rate       = ( $rate / 100 ) / $tax_rate;
52
-			$net_price      = $price - ( $the_rate * $price );
53
-			$tax_amount     = apply_filters( 'getpaid_price_inc_tax_amount', $price - $net_price, $name, $rate, $price );
54
-			$taxes[ $name ] = $tax_amount;
55
-		}
56
-
57
-		// Round all taxes to precision (4DP) before passing them back.
58
-		$taxes = array_map( array( __CLASS__, 'round' ), $taxes );
59
-
60
-		return $taxes;
61
-	}
62
-
63
-	/**
64
-	 * Calc tax from exclusive price.
65
-	 *
66
-	 * @param  float $price Price to calculate tax for.
67
-	 * @param  array $rates Array of tax rates.
68
-	 * @return array
69
-	 */
70
-	public static function calc_exclusive_tax( $price, $rates ) {
71
-		$taxes     = array();
72
-		$tax_rates = wp_list_pluck( $rates, 'rate', 'name' );
73
-
74
-		foreach ( $tax_rates as $name => $rate ) {
75
-
76
-			$tax_amount     = $price * ( $rate / 100 );
77
-			$taxes[ $name ] = apply_filters( 'getpaid_price_ex_tax_amount', $tax_amount, $name, $rate, $price );
78
-
79
-		}
80
-
81
-		// Round all taxes to precision (4DP) before passing them back.
82
-		$taxes = array_map( array( __CLASS__, 'round' ), $taxes );
83
-
84
-		return $taxes;
85
-	}
86
-
87
-	/**
88
-	 * Get's an array of all tax rates.
89
-	 *
90
-	 * @return array
91
-	 */
92
-	public static function get_all_tax_rates() {
93
-
94
-		$rates = get_option( 'wpinv_tax_rates', array() );
95
-
96
-		return apply_filters(
97
-			'getpaid_get_all_tax_rates',
98
-			array_filter( wpinv_parse_list( $rates ) )
99
-		);
100
-
101
-	}
102
-
103
-	/**
104
-	 * Get's an array of default tax rates.
105
-	 *
106
-	 * @return array
107
-	 */
108
-	public static function get_default_tax_rates() {
109
-
110
-		return apply_filters(
111
-			'getpaid_get_default_tax_rates',
112
-			array(
113
-				array(
114
-					'country'   => wpinv_get_default_country(),
115
-					'state'     => wpinv_get_default_state(),
116
-					'global'    => true,
117
-					'rate'      => wpinv_get_default_tax_rate(),
118
-					'name'      => __( 'Base Tax', 'invoicing' ),
119
-				)
120
-			)
121
-		);
122
-
123
-	}
124
-
125
-	/**
126
-	 * Get's an array of tax rates for a given address.
127
-	 *
128
-	 * @param string $country
129
-	 * @param string $state
130
-	 * @return array
131
-	 */
132
-	public static function get_address_tax_rates( $country, $state ) {
133
-
134
-		$all_tax_rates  = self::get_all_tax_rates();
135
-		$matching_rates = array_merge(
136
-			wp_list_filter( $all_tax_rates, array( 'country' => $country ) ),
137
-			wp_list_filter( $all_tax_rates, array( 'country' => '' ) )
138
-		);
139
-
140
-		foreach ( $matching_rates as $i => $rate ) {
141
-
142
-			$states = array_filter( wpinv_clean( explode( ',', strtolower( $rate['state'] ) ) ) );
143
-			if ( empty( $rate['global'] ) && ! in_array( strtolower( $state ), $states ) ) {
144
-				unset( $matching_rates[ $i ] );
145
-			}
146
-
147
-		}
148
-
149
-		return apply_filters( 'getpaid_get_address_tax_rates', $matching_rates, $country, $state );
150
-
151
-	}
152
-
153
-	/**
154
-	 * Sums a set of taxes to form a single total. Result is rounded to precision.
155
-	 *
156
-	 * @param  array $taxes Array of taxes.
157
-	 * @return float
158
-	 */
159
-	public static function get_tax_total( $taxes ) {
160
-		return self::round( array_sum( $taxes ) );
161
-	}
162
-
163
-	/**
164
-	 * Round to precision.
165
-	 *
166
-	 * Filter example: to return rounding to .5 cents you'd use:
167
-	 *
168
-	 * function euro_5cent_rounding( $in ) {
169
-	 *      return round( $in / 5, 2 ) * 5;
170
-	 * }
171
-	 * add_filter( 'getpaid_tax_round', 'euro_5cent_rounding' );
172
-	 *
173
-	 * @param float|int $in Value to round.
174
-	 * @return float
175
-	 */
176
-	public static function round( $in ) {
177
-		return apply_filters( 'getpaid_tax_round', round( $in, 4 ), $in );
178
-	}
16
+    /**
17
+     * Calculates tax for a line item.
18
+     *
19
+     * @param  float   $price              The price to calc tax on.
20
+     * @param  array   $rates              The rates to apply.
21
+     * @param  boolean $price_includes_tax Whether the passed price has taxes included.
22
+     * @return array                       Array of tax name => tax amount.
23
+     */
24
+    public static function calc_tax( $price, $rates, $price_includes_tax = false ) {
25
+
26
+        if ( $price_includes_tax ) {
27
+            $taxes = self::calc_inclusive_tax( $price, $rates );
28
+        } else {
29
+            $taxes = self::calc_exclusive_tax( $price, $rates );
30
+        }
31
+
32
+        return apply_filters( 'getpaid_calc_tax', $taxes, $price, $rates, $price_includes_tax );
33
+
34
+    }
35
+
36
+    /**
37
+     * Calc tax from inclusive price.
38
+     *
39
+     * @param  float $price Price to calculate tax for.
40
+     * @param  array $rates Array of tax rates.
41
+     * @return array
42
+     */
43
+    public static function calc_inclusive_tax( $price, $rates ) {
44
+        $taxes     = array();
45
+        $tax_rates = wp_list_pluck( $rates, 'rate', 'name' );
46
+
47
+        // Add tax rates.
48
+        $tax_rate  = 1 + ( array_sum( $tax_rates ) / 100 );
49
+
50
+        foreach ( $tax_rates as $name => $rate ) {
51
+            $the_rate       = ( $rate / 100 ) / $tax_rate;
52
+            $net_price      = $price - ( $the_rate * $price );
53
+            $tax_amount     = apply_filters( 'getpaid_price_inc_tax_amount', $price - $net_price, $name, $rate, $price );
54
+            $taxes[ $name ] = $tax_amount;
55
+        }
56
+
57
+        // Round all taxes to precision (4DP) before passing them back.
58
+        $taxes = array_map( array( __CLASS__, 'round' ), $taxes );
59
+
60
+        return $taxes;
61
+    }
62
+
63
+    /**
64
+     * Calc tax from exclusive price.
65
+     *
66
+     * @param  float $price Price to calculate tax for.
67
+     * @param  array $rates Array of tax rates.
68
+     * @return array
69
+     */
70
+    public static function calc_exclusive_tax( $price, $rates ) {
71
+        $taxes     = array();
72
+        $tax_rates = wp_list_pluck( $rates, 'rate', 'name' );
73
+
74
+        foreach ( $tax_rates as $name => $rate ) {
75
+
76
+            $tax_amount     = $price * ( $rate / 100 );
77
+            $taxes[ $name ] = apply_filters( 'getpaid_price_ex_tax_amount', $tax_amount, $name, $rate, $price );
78
+
79
+        }
80
+
81
+        // Round all taxes to precision (4DP) before passing them back.
82
+        $taxes = array_map( array( __CLASS__, 'round' ), $taxes );
83
+
84
+        return $taxes;
85
+    }
86
+
87
+    /**
88
+     * Get's an array of all tax rates.
89
+     *
90
+     * @return array
91
+     */
92
+    public static function get_all_tax_rates() {
93
+
94
+        $rates = get_option( 'wpinv_tax_rates', array() );
95
+
96
+        return apply_filters(
97
+            'getpaid_get_all_tax_rates',
98
+            array_filter( wpinv_parse_list( $rates ) )
99
+        );
100
+
101
+    }
102
+
103
+    /**
104
+     * Get's an array of default tax rates.
105
+     *
106
+     * @return array
107
+     */
108
+    public static function get_default_tax_rates() {
109
+
110
+        return apply_filters(
111
+            'getpaid_get_default_tax_rates',
112
+            array(
113
+                array(
114
+                    'country'   => wpinv_get_default_country(),
115
+                    'state'     => wpinv_get_default_state(),
116
+                    'global'    => true,
117
+                    'rate'      => wpinv_get_default_tax_rate(),
118
+                    'name'      => __( 'Base Tax', 'invoicing' ),
119
+                )
120
+            )
121
+        );
122
+
123
+    }
124
+
125
+    /**
126
+     * Get's an array of tax rates for a given address.
127
+     *
128
+     * @param string $country
129
+     * @param string $state
130
+     * @return array
131
+     */
132
+    public static function get_address_tax_rates( $country, $state ) {
133
+
134
+        $all_tax_rates  = self::get_all_tax_rates();
135
+        $matching_rates = array_merge(
136
+            wp_list_filter( $all_tax_rates, array( 'country' => $country ) ),
137
+            wp_list_filter( $all_tax_rates, array( 'country' => '' ) )
138
+        );
139
+
140
+        foreach ( $matching_rates as $i => $rate ) {
141
+
142
+            $states = array_filter( wpinv_clean( explode( ',', strtolower( $rate['state'] ) ) ) );
143
+            if ( empty( $rate['global'] ) && ! in_array( strtolower( $state ), $states ) ) {
144
+                unset( $matching_rates[ $i ] );
145
+            }
146
+
147
+        }
148
+
149
+        return apply_filters( 'getpaid_get_address_tax_rates', $matching_rates, $country, $state );
150
+
151
+    }
152
+
153
+    /**
154
+     * Sums a set of taxes to form a single total. Result is rounded to precision.
155
+     *
156
+     * @param  array $taxes Array of taxes.
157
+     * @return float
158
+     */
159
+    public static function get_tax_total( $taxes ) {
160
+        return self::round( array_sum( $taxes ) );
161
+    }
162
+
163
+    /**
164
+     * Round to precision.
165
+     *
166
+     * Filter example: to return rounding to .5 cents you'd use:
167
+     *
168
+     * function euro_5cent_rounding( $in ) {
169
+     *      return round( $in / 5, 2 ) * 5;
170
+     * }
171
+     * add_filter( 'getpaid_tax_round', 'euro_5cent_rounding' );
172
+     *
173
+     * @param float|int $in Value to round.
174
+     * @return float
175
+     */
176
+    public static function round( $in ) {
177
+        return apply_filters( 'getpaid_tax_round', round( $in, 4 ), $in );
178
+    }
179 179
 
180 180
 }
Please login to merge, or discard this patch.
Spacing   +36 added lines, -36 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
  *
6 6
  */
7 7
 
8
-defined( 'ABSPATH' ) || exit;
8
+defined('ABSPATH') || exit;
9 9
 
10 10
 /**
11 11
  * Class GetPaid_Tax
@@ -21,15 +21,15 @@  discard block
 block discarded – undo
21 21
 	 * @param  boolean $price_includes_tax Whether the passed price has taxes included.
22 22
 	 * @return array                       Array of tax name => tax amount.
23 23
 	 */
24
-	public static function calc_tax( $price, $rates, $price_includes_tax = false ) {
24
+	public static function calc_tax($price, $rates, $price_includes_tax = false) {
25 25
 
26
-		if ( $price_includes_tax ) {
27
-			$taxes = self::calc_inclusive_tax( $price, $rates );
26
+		if ($price_includes_tax) {
27
+			$taxes = self::calc_inclusive_tax($price, $rates);
28 28
 		} else {
29
-			$taxes = self::calc_exclusive_tax( $price, $rates );
29
+			$taxes = self::calc_exclusive_tax($price, $rates);
30 30
 		}
31 31
 
32
-		return apply_filters( 'getpaid_calc_tax', $taxes, $price, $rates, $price_includes_tax );
32
+		return apply_filters('getpaid_calc_tax', $taxes, $price, $rates, $price_includes_tax);
33 33
 
34 34
 	}
35 35
 
@@ -40,22 +40,22 @@  discard block
 block discarded – undo
40 40
 	 * @param  array $rates Array of tax rates.
41 41
 	 * @return array
42 42
 	 */
43
-	public static function calc_inclusive_tax( $price, $rates ) {
43
+	public static function calc_inclusive_tax($price, $rates) {
44 44
 		$taxes     = array();
45
-		$tax_rates = wp_list_pluck( $rates, 'rate', 'name' );
45
+		$tax_rates = wp_list_pluck($rates, 'rate', 'name');
46 46
 
47 47
 		// Add tax rates.
48
-		$tax_rate  = 1 + ( array_sum( $tax_rates ) / 100 );
48
+		$tax_rate  = 1 + (array_sum($tax_rates) / 100);
49 49
 
50
-		foreach ( $tax_rates as $name => $rate ) {
51
-			$the_rate       = ( $rate / 100 ) / $tax_rate;
52
-			$net_price      = $price - ( $the_rate * $price );
53
-			$tax_amount     = apply_filters( 'getpaid_price_inc_tax_amount', $price - $net_price, $name, $rate, $price );
54
-			$taxes[ $name ] = $tax_amount;
50
+		foreach ($tax_rates as $name => $rate) {
51
+			$the_rate       = ($rate / 100) / $tax_rate;
52
+			$net_price      = $price - ($the_rate * $price);
53
+			$tax_amount     = apply_filters('getpaid_price_inc_tax_amount', $price - $net_price, $name, $rate, $price);
54
+			$taxes[$name] = $tax_amount;
55 55
 		}
56 56
 
57 57
 		// Round all taxes to precision (4DP) before passing them back.
58
-		$taxes = array_map( array( __CLASS__, 'round' ), $taxes );
58
+		$taxes = array_map(array(__CLASS__, 'round'), $taxes);
59 59
 
60 60
 		return $taxes;
61 61
 	}
@@ -67,19 +67,19 @@  discard block
 block discarded – undo
67 67
 	 * @param  array $rates Array of tax rates.
68 68
 	 * @return array
69 69
 	 */
70
-	public static function calc_exclusive_tax( $price, $rates ) {
70
+	public static function calc_exclusive_tax($price, $rates) {
71 71
 		$taxes     = array();
72
-		$tax_rates = wp_list_pluck( $rates, 'rate', 'name' );
72
+		$tax_rates = wp_list_pluck($rates, 'rate', 'name');
73 73
 
74
-		foreach ( $tax_rates as $name => $rate ) {
74
+		foreach ($tax_rates as $name => $rate) {
75 75
 
76
-			$tax_amount     = $price * ( $rate / 100 );
77
-			$taxes[ $name ] = apply_filters( 'getpaid_price_ex_tax_amount', $tax_amount, $name, $rate, $price );
76
+			$tax_amount     = $price * ($rate / 100);
77
+			$taxes[$name] = apply_filters('getpaid_price_ex_tax_amount', $tax_amount, $name, $rate, $price);
78 78
 
79 79
 		}
80 80
 
81 81
 		// Round all taxes to precision (4DP) before passing them back.
82
-		$taxes = array_map( array( __CLASS__, 'round' ), $taxes );
82
+		$taxes = array_map(array(__CLASS__, 'round'), $taxes);
83 83
 
84 84
 		return $taxes;
85 85
 	}
@@ -91,11 +91,11 @@  discard block
 block discarded – undo
91 91
 	 */
92 92
 	public static function get_all_tax_rates() {
93 93
 
94
-		$rates = get_option( 'wpinv_tax_rates', array() );
94
+		$rates = get_option('wpinv_tax_rates', array());
95 95
 
96 96
 		return apply_filters(
97 97
 			'getpaid_get_all_tax_rates',
98
-			array_filter( wpinv_parse_list( $rates ) )
98
+			array_filter(wpinv_parse_list($rates))
99 99
 		);
100 100
 
101 101
 	}
@@ -115,7 +115,7 @@  discard block
 block discarded – undo
115 115
 					'state'     => wpinv_get_default_state(),
116 116
 					'global'    => true,
117 117
 					'rate'      => wpinv_get_default_tax_rate(),
118
-					'name'      => __( 'Base Tax', 'invoicing' ),
118
+					'name'      => __('Base Tax', 'invoicing'),
119 119
 				)
120 120
 			)
121 121
 		);
@@ -129,24 +129,24 @@  discard block
 block discarded – undo
129 129
 	 * @param string $state
130 130
 	 * @return array
131 131
 	 */
132
-	public static function get_address_tax_rates( $country, $state ) {
132
+	public static function get_address_tax_rates($country, $state) {
133 133
 
134 134
 		$all_tax_rates  = self::get_all_tax_rates();
135 135
 		$matching_rates = array_merge(
136
-			wp_list_filter( $all_tax_rates, array( 'country' => $country ) ),
137
-			wp_list_filter( $all_tax_rates, array( 'country' => '' ) )
136
+			wp_list_filter($all_tax_rates, array('country' => $country)),
137
+			wp_list_filter($all_tax_rates, array('country' => ''))
138 138
 		);
139 139
 
140
-		foreach ( $matching_rates as $i => $rate ) {
140
+		foreach ($matching_rates as $i => $rate) {
141 141
 
142
-			$states = array_filter( wpinv_clean( explode( ',', strtolower( $rate['state'] ) ) ) );
143
-			if ( empty( $rate['global'] ) && ! in_array( strtolower( $state ), $states ) ) {
144
-				unset( $matching_rates[ $i ] );
142
+			$states = array_filter(wpinv_clean(explode(',', strtolower($rate['state']))));
143
+			if (empty($rate['global']) && !in_array(strtolower($state), $states)) {
144
+				unset($matching_rates[$i]);
145 145
 			}
146 146
 
147 147
 		}
148 148
 
149
-		return apply_filters( 'getpaid_get_address_tax_rates', $matching_rates, $country, $state );
149
+		return apply_filters('getpaid_get_address_tax_rates', $matching_rates, $country, $state);
150 150
 
151 151
 	}
152 152
 
@@ -156,8 +156,8 @@  discard block
 block discarded – undo
156 156
 	 * @param  array $taxes Array of taxes.
157 157
 	 * @return float
158 158
 	 */
159
-	public static function get_tax_total( $taxes ) {
160
-		return self::round( array_sum( $taxes ) );
159
+	public static function get_tax_total($taxes) {
160
+		return self::round(array_sum($taxes));
161 161
 	}
162 162
 
163 163
 	/**
@@ -173,8 +173,8 @@  discard block
 block discarded – undo
173 173
 	 * @param float|int $in Value to round.
174 174
 	 * @return float
175 175
 	 */
176
-	public static function round( $in ) {
177
-		return apply_filters( 'getpaid_tax_round', round( $in, 4 ), $in );
176
+	public static function round($in) {
177
+		return apply_filters('getpaid_tax_round', round($in, 4), $in);
178 178
 	}
179 179
 
180 180
 }
Please login to merge, or discard this patch.
invoicing.php 2 patches
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -19,16 +19,16 @@  discard block
 block discarded – undo
19 19
 
20 20
 // Define constants.
21 21
 if ( ! defined( 'WPINV_PLUGIN_FILE' ) ) {
22
-	define( 'WPINV_PLUGIN_FILE', __FILE__ );
22
+    define( 'WPINV_PLUGIN_FILE', __FILE__ );
23 23
 }
24 24
 
25 25
 if ( ! defined( 'WPINV_VERSION' ) ) {
26
-	define( 'WPINV_VERSION', '2.2.6' );
26
+    define( 'WPINV_VERSION', '2.2.6' );
27 27
 }
28 28
 
29 29
 // Include the main Invoicing class.
30 30
 if ( ! class_exists( 'WPInv_Plugin', false ) ) {
31
-	require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php';
31
+    require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php';
32 32
 }
33 33
 
34 34
 /**
@@ -43,7 +43,7 @@  discard block
 block discarded – undo
43 43
         $GLOBALS['invoicing'] = new WPInv_Plugin();
44 44
     }
45 45
 
46
-	return $GLOBALS['invoicing'];
46
+    return $GLOBALS['invoicing'];
47 47
 }
48 48
 
49 49
 /**
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -15,20 +15,20 @@  discard block
 block discarded – undo
15 15
  * @package GetPaid
16 16
  */
17 17
 
18
-defined( 'ABSPATH' ) || exit;
18
+defined('ABSPATH') || exit;
19 19
 
20 20
 // Define constants.
21
-if ( ! defined( 'WPINV_PLUGIN_FILE' ) ) {
22
-	define( 'WPINV_PLUGIN_FILE', __FILE__ );
21
+if (!defined('WPINV_PLUGIN_FILE')) {
22
+	define('WPINV_PLUGIN_FILE', __FILE__);
23 23
 }
24 24
 
25
-if ( ! defined( 'WPINV_VERSION' ) ) {
26
-	define( 'WPINV_VERSION', '2.2.6' );
25
+if (!defined('WPINV_VERSION')) {
26
+	define('WPINV_VERSION', '2.2.6');
27 27
 }
28 28
 
29 29
 // Include the main Invoicing class.
30
-if ( ! class_exists( 'WPInv_Plugin', false ) ) {
31
-	require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php';
30
+if (!class_exists('WPInv_Plugin', false)) {
31
+	require_once plugin_dir_path(WPINV_PLUGIN_FILE) . 'includes/class-wpinv.php';
32 32
 }
33 33
 
34 34
 /**
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
  */
40 40
 function getpaid() {
41 41
 
42
-    if ( empty( $GLOBALS['invoicing'] ) ) {
42
+    if (empty($GLOBALS['invoicing'])) {
43 43
         $GLOBALS['invoicing'] = new WPInv_Plugin();
44 44
     }
45 45
 
@@ -52,9 +52,9 @@  discard block
 block discarded – undo
52 52
  * @since  2.0.8
53 53
  */
54 54
 function getpaid_deactivation_hook() {
55
-    update_option( 'wpinv_flush_permalinks', 1 );
55
+    update_option('wpinv_flush_permalinks', 1);
56 56
 }
57
-register_deactivation_hook( __FILE__, 'getpaid_deactivation_hook' );
57
+register_deactivation_hook(__FILE__, 'getpaid_deactivation_hook');
58 58
 
59 59
 /**
60 60
  * @deprecated
@@ -64,4 +64,4 @@  discard block
 block discarded – undo
64 64
 }
65 65
 
66 66
 // Kickstart the plugin.
67
-add_action( 'plugins_loaded', 'getpaid', -100 );
67
+add_action('plugins_loaded', 'getpaid', -100);
Please login to merge, or discard this patch.