Passed
Push — master ( 0a2cdb...97ebee )
by Brian
04:41
created
includes/class-getpaid-post-types.php 2 patches
Indentation   +295 added lines, -295 removed lines patch added patch discarded remove patch
@@ -15,321 +15,321 @@
 block discarded – undo
15 15
 class GetPaid_Post_Types {
16 16
 
17 17
     /**
18
-	 * Hook in methods.
19
-	 */
20
-	public function __construct() {
21
-		add_action( 'init', array( __CLASS__, 'register_post_types' ), 1 );
22
-		add_action( 'init', array( __CLASS__, 'register_post_status' ), 4 );
23
-		add_action( 'getpaid_flush_rewrite_rules', array( __CLASS__, 'flush_rewrite_rules' ) );
24
-		add_action( 'getpaid_after_register_post_types', array( __CLASS__, 'maybe_flush_rewrite_rules' ) );
25
-	}
18
+     * Hook in methods.
19
+     */
20
+    public function __construct() {
21
+        add_action( 'init', array( __CLASS__, 'register_post_types' ), 1 );
22
+        add_action( 'init', array( __CLASS__, 'register_post_status' ), 4 );
23
+        add_action( 'getpaid_flush_rewrite_rules', array( __CLASS__, 'flush_rewrite_rules' ) );
24
+        add_action( 'getpaid_after_register_post_types', array( __CLASS__, 'maybe_flush_rewrite_rules' ) );
25
+    }
26 26
 
27
-	/**
28
-	 * Register core post types.
29
-	 */
30
-	public static function register_post_types() {
27
+    /**
28
+     * Register core post types.
29
+     */
30
+    public static function register_post_types() {
31 31
 
32
-		if ( ! is_blog_installed() || post_type_exists( 'wpi_item' ) ) {
33
-			return;
34
-		}
32
+        if ( ! is_blog_installed() || post_type_exists( 'wpi_item' ) ) {
33
+            return;
34
+        }
35 35
 
36
-		$capabilities = wpinv_current_user_can_manage_invoicing();
36
+        $capabilities = wpinv_current_user_can_manage_invoicing();
37 37
 
38
-		// Fires before registering post types.
39
-		do_action( 'getpaid_register_post_types' );
38
+        // Fires before registering post types.
39
+        do_action( 'getpaid_register_post_types' );
40 40
 
41
-		// Register item post type.
42
-		register_post_type(
43
-			'wpi_item',
44
-			apply_filters(
45
-				'wpinv_register_post_type_invoice_item',
46
-				array(
47
-					'labels'            => array(
48
-						'name'               => _x( 'Items', 'post type general name', 'invoicing' ),
49
-						'singular_name'      => _x( 'Item', 'post type singular name', 'invoicing' ),
50
-						'menu_name'          => _x( 'Items', 'admin menu', 'invoicing' ),
51
-						'name_admin_bar'     => _x( 'Item', 'add new on admin bar', 'invoicing' ),
52
-						'add_new'            => _x( 'Add New', 'Item', 'invoicing' ),
53
-						'add_new_item'       => __( 'Add New Item', 'invoicing' ),
54
-						'new_item'           => __( 'New Item', 'invoicing' ),
55
-						'edit_item'          => __( 'Edit Item', 'invoicing' ),
56
-						'view_item'          => __( 'View Item', 'invoicing' ),
57
-						'all_items'          => __( 'Items', 'invoicing' ),
58
-						'search_items'       => __( 'Search items', 'invoicing' ),
59
-						'parent_item_colon'  => __( 'Parent item:', 'invoicing' ),
60
-						'not_found'          => __( 'No items found.', 'invoicing' ),
61
-						'not_found_in_trash' => __( 'No items found in trash.', 'invoicing' ),
62
-					),
63
-					'description'       => __( 'This is where you can add new invoice items.', 'invoicing' ),
64
-					'public'            => false,
65
-					'has_archive'       => false,
66
-					'_builtin'          => false,
67
-					'show_ui'           => true,
68
-					'show_in_menu'      => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
69
-					'show_in_nav_menus' => false,
70
-					'supports'          => array( 'title', 'excerpt', 'thumbnail' ),
71
-					'rewrite'           => false,
72
-					'query_var'         => false,
73
-					'map_meta_cap'      => true,
74
-					'show_in_admin_bar' => true,
75
-					'can_export'        => true,
76
-				)
77
-			)
78
-		);
41
+        // Register item post type.
42
+        register_post_type(
43
+            'wpi_item',
44
+            apply_filters(
45
+                'wpinv_register_post_type_invoice_item',
46
+                array(
47
+                    'labels'            => array(
48
+                        'name'               => _x( 'Items', 'post type general name', 'invoicing' ),
49
+                        'singular_name'      => _x( 'Item', 'post type singular name', 'invoicing' ),
50
+                        'menu_name'          => _x( 'Items', 'admin menu', 'invoicing' ),
51
+                        'name_admin_bar'     => _x( 'Item', 'add new on admin bar', 'invoicing' ),
52
+                        'add_new'            => _x( 'Add New', 'Item', 'invoicing' ),
53
+                        'add_new_item'       => __( 'Add New Item', 'invoicing' ),
54
+                        'new_item'           => __( 'New Item', 'invoicing' ),
55
+                        'edit_item'          => __( 'Edit Item', 'invoicing' ),
56
+                        'view_item'          => __( 'View Item', 'invoicing' ),
57
+                        'all_items'          => __( 'Items', 'invoicing' ),
58
+                        'search_items'       => __( 'Search items', 'invoicing' ),
59
+                        'parent_item_colon'  => __( 'Parent item:', 'invoicing' ),
60
+                        'not_found'          => __( 'No items found.', 'invoicing' ),
61
+                        'not_found_in_trash' => __( 'No items found in trash.', 'invoicing' ),
62
+                    ),
63
+                    'description'       => __( 'This is where you can add new invoice items.', 'invoicing' ),
64
+                    'public'            => false,
65
+                    'has_archive'       => false,
66
+                    '_builtin'          => false,
67
+                    'show_ui'           => true,
68
+                    'show_in_menu'      => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
69
+                    'show_in_nav_menus' => false,
70
+                    'supports'          => array( 'title', 'excerpt', 'thumbnail' ),
71
+                    'rewrite'           => false,
72
+                    'query_var'         => false,
73
+                    'map_meta_cap'      => true,
74
+                    'show_in_admin_bar' => true,
75
+                    'can_export'        => true,
76
+                )
77
+            )
78
+        );
79 79
 
80
-		// Register payment form post type.
81
-		register_post_type(
82
-			'wpi_payment_form',
83
-			apply_filters(
84
-				'wpinv_register_post_type_payment_form',
85
-				array(
86
-					'labels'            => array(
87
-						'name'               => _x( 'Payment Forms', 'post type general name', 'invoicing' ),
88
-						'singular_name'      => _x( 'Payment Form', 'post type singular name', 'invoicing' ),
89
-						'menu_name'          => _x( 'Payment Forms', 'admin menu', 'invoicing' ),
90
-						'name_admin_bar'     => _x( 'Payment Form', 'add new on admin bar', 'invoicing' ),
91
-						'add_new'            => _x( 'Add New', 'Payment Form', 'invoicing' ),
92
-						'add_new_item'       => __( 'Add New Payment Form', 'invoicing' ),
93
-						'new_item'           => __( 'New Payment Form', 'invoicing' ),
94
-						'edit_item'          => __( 'Edit Payment Form', 'invoicing' ),
95
-						'view_item'          => __( 'View Payment Form', 'invoicing' ),
96
-						'all_items'          => __( 'Payment Forms', 'invoicing' ),
97
-						'search_items'       => __( 'Search Payment Forms', 'invoicing' ),
98
-						'parent_item_colon'  => __( 'Parent Payment Forms:', 'invoicing' ),
99
-						'not_found'          => __( 'No payment forms found.', 'invoicing' ),
100
-						'not_found_in_trash' => __( 'No payment forms found in trash.', 'invoicing' ),
101
-					),
102
-					'description'       => __( 'Add new payment forms.', 'invoicing' ),
103
-					'public'            => false,
104
-					'show_ui'           => true,
105
-					'show_in_menu'      => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
106
-					'show_in_nav_menus' => false,
107
-					'query_var'         => false,
108
-					'rewrite'           => true,
109
-					'map_meta_cap'      => true,
110
-					'has_archive'       => false,
111
-					'hierarchical'      => false,
112
-					'menu_position'     => null,
113
-					'supports'          => array( 'title' ),
114
-					'menu_icon'         => 'dashicons-media-form',
115
-				)
116
-			)
117
-		);
80
+        // Register payment form post type.
81
+        register_post_type(
82
+            'wpi_payment_form',
83
+            apply_filters(
84
+                'wpinv_register_post_type_payment_form',
85
+                array(
86
+                    'labels'            => array(
87
+                        'name'               => _x( 'Payment Forms', 'post type general name', 'invoicing' ),
88
+                        'singular_name'      => _x( 'Payment Form', 'post type singular name', 'invoicing' ),
89
+                        'menu_name'          => _x( 'Payment Forms', 'admin menu', 'invoicing' ),
90
+                        'name_admin_bar'     => _x( 'Payment Form', 'add new on admin bar', 'invoicing' ),
91
+                        'add_new'            => _x( 'Add New', 'Payment Form', 'invoicing' ),
92
+                        'add_new_item'       => __( 'Add New Payment Form', 'invoicing' ),
93
+                        'new_item'           => __( 'New Payment Form', 'invoicing' ),
94
+                        'edit_item'          => __( 'Edit Payment Form', 'invoicing' ),
95
+                        'view_item'          => __( 'View Payment Form', 'invoicing' ),
96
+                        'all_items'          => __( 'Payment Forms', 'invoicing' ),
97
+                        'search_items'       => __( 'Search Payment Forms', 'invoicing' ),
98
+                        'parent_item_colon'  => __( 'Parent Payment Forms:', 'invoicing' ),
99
+                        'not_found'          => __( 'No payment forms found.', 'invoicing' ),
100
+                        'not_found_in_trash' => __( 'No payment forms found in trash.', 'invoicing' ),
101
+                    ),
102
+                    'description'       => __( 'Add new payment forms.', 'invoicing' ),
103
+                    'public'            => false,
104
+                    'show_ui'           => true,
105
+                    'show_in_menu'      => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
106
+                    'show_in_nav_menus' => false,
107
+                    'query_var'         => false,
108
+                    'rewrite'           => true,
109
+                    'map_meta_cap'      => true,
110
+                    'has_archive'       => false,
111
+                    'hierarchical'      => false,
112
+                    'menu_position'     => null,
113
+                    'supports'          => array( 'title' ),
114
+                    'menu_icon'         => 'dashicons-media-form',
115
+                )
116
+            )
117
+        );
118 118
 
119
-		// Register invoice post type.
120
-		register_post_type(
121
-			'wpi_invoice',
122
-			apply_filters(
123
-				'wpinv_register_post_type_invoice',
124
-				array(
125
-					'labels'              => array(
126
-						'name'                  => __( 'Invoices', 'invoicing' ),
127
-						'singular_name'         => __( 'Invoice', 'invoicing' ),
128
-						'all_items'             => __( 'Invoices', 'invoicing' ),
129
-						'menu_name'             => _x( 'Invoices', 'Admin menu name', 'invoicing' ),
130
-						'add_new'               => __( 'Add New', 'invoicing' ),
131
-						'add_new_item'          => __( 'Add new invoice', 'invoicing' ),
132
-						'edit'                  => __( 'Edit', 'invoicing' ),
133
-						'edit_item'             => __( 'Edit invoice', 'invoicing' ),
134
-						'new_item'              => __( 'New invoice', 'invoicing' ),
135
-						'view_item'             => __( 'View invoice', 'invoicing' ),
136
-						'view_items'            => __( 'View Invoices', 'invoicing' ),
137
-						'search_items'          => __( 'Search invoices', 'invoicing' ),
138
-						'not_found'             => __( 'No invoices found', 'invoicing' ),
139
-						'not_found_in_trash'    => __( 'No invoices found in trash', 'invoicing' ),
140
-						'parent'                => __( 'Parent invoice', 'invoicing' ),
141
-						'featured_image'        => __( 'Invoice image', 'invoicing' ),
142
-						'set_featured_image'    => __( 'Set invoice image', 'invoicing' ),
143
-						'remove_featured_image' => __( 'Remove invoice image', 'invoicing' ),
144
-						'use_featured_image'    => __( 'Use as invoice image', 'invoicing' ),
145
-						'insert_into_item'      => __( 'Insert into invoice', 'invoicing' ),
146
-						'uploaded_to_this_item' => __( 'Uploaded to this invoice', 'invoicing' ),
147
-						'filter_items_list'     => __( 'Filter invoices', 'invoicing' ),
148
-						'items_list_navigation' => __( 'Invoices navigation', 'invoicing' ),
149
-						'items_list'            => __( 'Invoices list', 'invoicing' ),
150
-					),
151
-					'description'         => __( 'This is where invoices are stored.', 'invoicing' ),
152
-					'public'              => true,
153
-					'has_archive'         => false,
154
-					'publicly_queryable'  => true,
155
-        			'exclude_from_search' => true,
156
-        			'show_ui'             => true,
157
-					'show_in_menu'        => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
158
-					'show_in_nav_menus'   => false,
159
-					'supports'            => array( 'title', 'author', 'excerpt' ),
160
-					'rewrite'             => array(
161
-						'slug'       => 'invoice',
162
-						'with_front' => false,
163
-					),
164
-					'query_var'           => false,
165
-					'map_meta_cap'        => true,
166
-					'show_in_admin_bar'   => true,
167
-					'can_export'          => true,
168
-					'hierarchical'        => false,
169
-					'menu_position'       => null,
170
-					'menu_icon'           => 'dashicons-media-spreadsheet',
171
-				)
172
-			)
173
-		);
119
+        // Register invoice post type.
120
+        register_post_type(
121
+            'wpi_invoice',
122
+            apply_filters(
123
+                'wpinv_register_post_type_invoice',
124
+                array(
125
+                    'labels'              => array(
126
+                        'name'                  => __( 'Invoices', 'invoicing' ),
127
+                        'singular_name'         => __( 'Invoice', 'invoicing' ),
128
+                        'all_items'             => __( 'Invoices', 'invoicing' ),
129
+                        'menu_name'             => _x( 'Invoices', 'Admin menu name', 'invoicing' ),
130
+                        'add_new'               => __( 'Add New', 'invoicing' ),
131
+                        'add_new_item'          => __( 'Add new invoice', 'invoicing' ),
132
+                        'edit'                  => __( 'Edit', 'invoicing' ),
133
+                        'edit_item'             => __( 'Edit invoice', 'invoicing' ),
134
+                        'new_item'              => __( 'New invoice', 'invoicing' ),
135
+                        'view_item'             => __( 'View invoice', 'invoicing' ),
136
+                        'view_items'            => __( 'View Invoices', 'invoicing' ),
137
+                        'search_items'          => __( 'Search invoices', 'invoicing' ),
138
+                        'not_found'             => __( 'No invoices found', 'invoicing' ),
139
+                        'not_found_in_trash'    => __( 'No invoices found in trash', 'invoicing' ),
140
+                        'parent'                => __( 'Parent invoice', 'invoicing' ),
141
+                        'featured_image'        => __( 'Invoice image', 'invoicing' ),
142
+                        'set_featured_image'    => __( 'Set invoice image', 'invoicing' ),
143
+                        'remove_featured_image' => __( 'Remove invoice image', 'invoicing' ),
144
+                        'use_featured_image'    => __( 'Use as invoice image', 'invoicing' ),
145
+                        'insert_into_item'      => __( 'Insert into invoice', 'invoicing' ),
146
+                        'uploaded_to_this_item' => __( 'Uploaded to this invoice', 'invoicing' ),
147
+                        'filter_items_list'     => __( 'Filter invoices', 'invoicing' ),
148
+                        'items_list_navigation' => __( 'Invoices navigation', 'invoicing' ),
149
+                        'items_list'            => __( 'Invoices list', 'invoicing' ),
150
+                    ),
151
+                    'description'         => __( 'This is where invoices are stored.', 'invoicing' ),
152
+                    'public'              => true,
153
+                    'has_archive'         => false,
154
+                    'publicly_queryable'  => true,
155
+                    'exclude_from_search' => true,
156
+                    'show_ui'             => true,
157
+                    'show_in_menu'        => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
158
+                    'show_in_nav_menus'   => false,
159
+                    'supports'            => array( 'title', 'author', 'excerpt' ),
160
+                    'rewrite'             => array(
161
+                        'slug'       => 'invoice',
162
+                        'with_front' => false,
163
+                    ),
164
+                    'query_var'           => false,
165
+                    'map_meta_cap'        => true,
166
+                    'show_in_admin_bar'   => true,
167
+                    'can_export'          => true,
168
+                    'hierarchical'        => false,
169
+                    'menu_position'       => null,
170
+                    'menu_icon'           => 'dashicons-media-spreadsheet',
171
+                )
172
+            )
173
+        );
174 174
 
175
-		// Register discount post type.
176
-		register_post_type(
177
-			'wpi_discount',
178
-			apply_filters(
179
-				'wpinv_register_post_type_discount',
180
-				array(
181
-					'labels'              => array(
182
-						'name'                  => __( 'Discounts', 'invoicing' ),
183
-						'singular_name'         => __( 'Discount', 'invoicing' ),
184
-						'all_items'             => __( 'Discounts', 'invoicing' ),
185
-						'menu_name'             => _x( 'Discounts', 'Admin menu name', 'invoicing' ),
186
-						'add_new'               => __( 'Add New', 'invoicing' ),
187
-						'add_new_item'          => __( 'Add new discount', 'invoicing' ),
188
-						'edit'                  => __( 'Edit', 'invoicing' ),
189
-						'edit_item'             => __( 'Edit discount', 'invoicing' ),
190
-						'new_item'              => __( 'New discount', 'invoicing' ),
191
-						'view_item'             => __( 'View discount', 'invoicing' ),
192
-						'view_items'            => __( 'View Discounts', 'invoicing' ),
193
-						'search_items'          => __( 'Search discounts', 'invoicing' ),
194
-						'not_found'             => __( 'No discounts found', 'invoicing' ),
195
-						'not_found_in_trash'    => __( 'No discounts found in trash', 'invoicing' ),
196
-						'parent'                => __( 'Parent discount', 'invoicing' ),
197
-						'featured_image'        => __( 'Discount image', 'invoicing' ),
198
-						'set_featured_image'    => __( 'Set discount image', 'invoicing' ),
199
-						'remove_featured_image' => __( 'Remove discount image', 'invoicing' ),
200
-						'use_featured_image'    => __( 'Use as discount image', 'invoicing' ),
201
-						'insert_into_item'      => __( 'Insert into discount', 'invoicing' ),
202
-						'uploaded_to_this_item' => __( 'Uploaded to this discount', 'invoicing' ),
203
-						'filter_items_list'     => __( 'Filter discounts', 'invoicing' ),
204
-						'items_list_navigation' => __( 'Discount navigation', 'invoicing' ),
205
-						'items_list'            => __( 'Discounts list', 'invoicing' ),
206
-					),
207
-					'description'         => __( 'This is where you can add new discounts that users can use in invoices.', 'invoicing' ),
208
-					'public'              => false,
209
-					'can_export'          => true,
210
-					'_builtin'            => false,
211
-					'publicly_queryable'  => false,
212
-					'exclude_from_search' => true,
213
-					'show_ui'             => true,
214
-					'show_in_menu'        => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
215
-					'query_var'           => false,
216
-					'rewrite'             => false,
217
-					'map_meta_cap'        => true,
218
-					'has_archive'         => false,
219
-					'hierarchical'        => false,
220
-					'supports'            => array( 'title', 'excerpt' ),
221
-					'show_in_nav_menus'   => false,
222
-					'show_in_admin_bar'   => true,
223
-					'menu_position'       => null,
224
-				)
225
-			)
226
-		);
175
+        // Register discount post type.
176
+        register_post_type(
177
+            'wpi_discount',
178
+            apply_filters(
179
+                'wpinv_register_post_type_discount',
180
+                array(
181
+                    'labels'              => array(
182
+                        'name'                  => __( 'Discounts', 'invoicing' ),
183
+                        'singular_name'         => __( 'Discount', 'invoicing' ),
184
+                        'all_items'             => __( 'Discounts', 'invoicing' ),
185
+                        'menu_name'             => _x( 'Discounts', 'Admin menu name', 'invoicing' ),
186
+                        'add_new'               => __( 'Add New', 'invoicing' ),
187
+                        'add_new_item'          => __( 'Add new discount', 'invoicing' ),
188
+                        'edit'                  => __( 'Edit', 'invoicing' ),
189
+                        'edit_item'             => __( 'Edit discount', 'invoicing' ),
190
+                        'new_item'              => __( 'New discount', 'invoicing' ),
191
+                        'view_item'             => __( 'View discount', 'invoicing' ),
192
+                        'view_items'            => __( 'View Discounts', 'invoicing' ),
193
+                        'search_items'          => __( 'Search discounts', 'invoicing' ),
194
+                        'not_found'             => __( 'No discounts found', 'invoicing' ),
195
+                        'not_found_in_trash'    => __( 'No discounts found in trash', 'invoicing' ),
196
+                        'parent'                => __( 'Parent discount', 'invoicing' ),
197
+                        'featured_image'        => __( 'Discount image', 'invoicing' ),
198
+                        'set_featured_image'    => __( 'Set discount image', 'invoicing' ),
199
+                        'remove_featured_image' => __( 'Remove discount image', 'invoicing' ),
200
+                        'use_featured_image'    => __( 'Use as discount image', 'invoicing' ),
201
+                        'insert_into_item'      => __( 'Insert into discount', 'invoicing' ),
202
+                        'uploaded_to_this_item' => __( 'Uploaded to this discount', 'invoicing' ),
203
+                        'filter_items_list'     => __( 'Filter discounts', 'invoicing' ),
204
+                        'items_list_navigation' => __( 'Discount navigation', 'invoicing' ),
205
+                        'items_list'            => __( 'Discounts list', 'invoicing' ),
206
+                    ),
207
+                    'description'         => __( 'This is where you can add new discounts that users can use in invoices.', 'invoicing' ),
208
+                    'public'              => false,
209
+                    'can_export'          => true,
210
+                    '_builtin'            => false,
211
+                    'publicly_queryable'  => false,
212
+                    'exclude_from_search' => true,
213
+                    'show_ui'             => true,
214
+                    'show_in_menu'        => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
215
+                    'query_var'           => false,
216
+                    'rewrite'             => false,
217
+                    'map_meta_cap'        => true,
218
+                    'has_archive'         => false,
219
+                    'hierarchical'        => false,
220
+                    'supports'            => array( 'title', 'excerpt' ),
221
+                    'show_in_nav_menus'   => false,
222
+                    'show_in_admin_bar'   => true,
223
+                    'menu_position'       => null,
224
+                )
225
+            )
226
+        );
227 227
 
228
-		do_action( 'getpaid_after_register_post_types' );
229
-	}
228
+        do_action( 'getpaid_after_register_post_types' );
229
+    }
230 230
 
231
-	/**
232
-	 * Register our custom post statuses.
233
-	 */
234
-	public static function register_post_status() {
231
+    /**
232
+     * Register our custom post statuses.
233
+     */
234
+    public static function register_post_status() {
235 235
 
236
-		$invoice_statuses = apply_filters(
237
-			'getpaid_register_invoice_post_statuses',
238
-			array(
236
+        $invoice_statuses = apply_filters(
237
+            'getpaid_register_invoice_post_statuses',
238
+            array(
239 239
 
240
-				'wpi-pending'    => array(
241
-					'label'                     => _x( 'Pending Payment', 'Invoice status', 'invoicing' ),
242
-        			'public'                    => true,
243
-        			'exclude_from_search'       => true,
244
-        			'show_in_admin_all_list'    => true,
245
-					'show_in_admin_status_list' => true,
246
-					/* translators: %s: number of invoices */
247
-        			'label_count'               => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing' ),
248
-				),
240
+                'wpi-pending'    => array(
241
+                    'label'                     => _x( 'Pending Payment', 'Invoice status', 'invoicing' ),
242
+                    'public'                    => true,
243
+                    'exclude_from_search'       => true,
244
+                    'show_in_admin_all_list'    => true,
245
+                    'show_in_admin_status_list' => true,
246
+                    /* translators: %s: number of invoices */
247
+                    'label_count'               => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing' ),
248
+                ),
249 249
 
250
-				'wpi-processing' => array(
251
-					'label'                     => _x( 'Processing', 'Invoice status', 'invoicing' ),
252
-        			'public'                    => true,
253
-        			'exclude_from_search'       => true,
254
-        			'show_in_admin_all_list'    => true,
255
-					'show_in_admin_status_list' => true,
256
-					/* translators: %s: number of invoices */
257
-        			'label_count'               => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing' ),
258
-				),
250
+                'wpi-processing' => array(
251
+                    'label'                     => _x( 'Processing', 'Invoice status', 'invoicing' ),
252
+                    'public'                    => true,
253
+                    'exclude_from_search'       => true,
254
+                    'show_in_admin_all_list'    => true,
255
+                    'show_in_admin_status_list' => true,
256
+                    /* translators: %s: number of invoices */
257
+                    'label_count'               => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing' ),
258
+                ),
259 259
 
260
-				'wpi-onhold'     => array(
261
-					'label'                     => _x( 'On Hold', 'Invoice status', 'invoicing' ),
262
-        			'public'                    => true,
263
-        			'exclude_from_search'       => true,
264
-        			'show_in_admin_all_list'    => true,
265
-					'show_in_admin_status_list' => true,
266
-					/* translators: %s: number of invoices */
267
-        			'label_count'               => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing' ),
268
-				),
260
+                'wpi-onhold'     => array(
261
+                    'label'                     => _x( 'On Hold', 'Invoice status', 'invoicing' ),
262
+                    'public'                    => true,
263
+                    'exclude_from_search'       => true,
264
+                    'show_in_admin_all_list'    => true,
265
+                    'show_in_admin_status_list' => true,
266
+                    /* translators: %s: number of invoices */
267
+                    'label_count'               => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing' ),
268
+                ),
269 269
 
270
-				'wpi-cancelled'  => array(
271
-					'label'                     => _x( 'Cancelled', 'Invoice status', 'invoicing' ),
272
-        			'public'                    => true,
273
-        			'exclude_from_search'       => true,
274
-        			'show_in_admin_all_list'    => true,
275
-					'show_in_admin_status_list' => true,
276
-					/* translators: %s: number of invoices */
277
-        			'label_count'               => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing' ),
278
-				),
270
+                'wpi-cancelled'  => array(
271
+                    'label'                     => _x( 'Cancelled', 'Invoice status', 'invoicing' ),
272
+                    'public'                    => true,
273
+                    'exclude_from_search'       => true,
274
+                    'show_in_admin_all_list'    => true,
275
+                    'show_in_admin_status_list' => true,
276
+                    /* translators: %s: number of invoices */
277
+                    'label_count'               => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing' ),
278
+                ),
279 279
 
280
-				'wpi-refunded'   => array(
281
-					'label'                     => _x( 'Refunded', 'Invoice status', 'invoicing' ),
282
-        			'public'                    => true,
283
-        			'exclude_from_search'       => true,
284
-        			'show_in_admin_all_list'    => true,
285
-					'show_in_admin_status_list' => true,
286
-					/* translators: %s: number of invoices */
287
-        			'label_count'               => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing' ),
288
-				),
280
+                'wpi-refunded'   => array(
281
+                    'label'                     => _x( 'Refunded', 'Invoice status', 'invoicing' ),
282
+                    'public'                    => true,
283
+                    'exclude_from_search'       => true,
284
+                    'show_in_admin_all_list'    => true,
285
+                    'show_in_admin_status_list' => true,
286
+                    /* translators: %s: number of invoices */
287
+                    'label_count'               => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing' ),
288
+                ),
289 289
 
290
-				'wpi-failed'     => array(
291
-					'label'                     => _x( 'Failed', 'Invoice status', 'invoicing' ),
292
-        			'public'                    => true,
293
-        			'exclude_from_search'       => true,
294
-        			'show_in_admin_all_list'    => true,
295
-					'show_in_admin_status_list' => true,
296
-					/* translators: %s: number of invoices */
297
-        			'label_count'               => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing' ),
298
-				),
290
+                'wpi-failed'     => array(
291
+                    'label'                     => _x( 'Failed', 'Invoice status', 'invoicing' ),
292
+                    'public'                    => true,
293
+                    'exclude_from_search'       => true,
294
+                    'show_in_admin_all_list'    => true,
295
+                    'show_in_admin_status_list' => true,
296
+                    /* translators: %s: number of invoices */
297
+                    'label_count'               => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing' ),
298
+                ),
299 299
 
300
-				'wpi-renewal'    => array(
301
-					'label'                     => _x( 'Renewal', 'Invoice status', 'invoicing' ),
302
-        			'public'                    => true,
303
-        			'exclude_from_search'       => true,
304
-        			'show_in_admin_all_list'    => true,
305
-					'show_in_admin_status_list' => true,
306
-					/* translators: %s: number of invoices */
307
-        			'label_count'               => _n_noop( 'Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing' ),
308
-				),
309
-			)
310
-		);
300
+                'wpi-renewal'    => array(
301
+                    'label'                     => _x( 'Renewal', 'Invoice status', 'invoicing' ),
302
+                    'public'                    => true,
303
+                    'exclude_from_search'       => true,
304
+                    'show_in_admin_all_list'    => true,
305
+                    'show_in_admin_status_list' => true,
306
+                    /* translators: %s: number of invoices */
307
+                    'label_count'               => _n_noop( 'Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing' ),
308
+                ),
309
+            )
310
+        );
311 311
 
312
-		foreach ( $invoice_statuses as $invoice_statuse => $args ) {
313
-			register_post_status( $invoice_statuse, $args );
314
-		}
315
-	}
312
+        foreach ( $invoice_statuses as $invoice_statuse => $args ) {
313
+            register_post_status( $invoice_statuse, $args );
314
+        }
315
+    }
316 316
 
317
-	/**
318
-	 * Flush rewrite rules.
319
-	 */
320
-	public static function flush_rewrite_rules() {
321
-		flush_rewrite_rules();
322
-	}
317
+    /**
318
+     * Flush rewrite rules.
319
+     */
320
+    public static function flush_rewrite_rules() {
321
+        flush_rewrite_rules();
322
+    }
323 323
 
324
-	/**
325
-	 * Flush rules to prevent 404.
326
-	 *
327
-	 */
328
-	public static function maybe_flush_rewrite_rules() {
329
-		if ( ! get_option( 'getpaid_flushed_rewrite_rules' ) ) {
330
-			update_option( 'getpaid_flushed_rewrite_rules', '1' );
331
-			self::flush_rewrite_rules();
332
-		}
333
-	}
324
+    /**
325
+     * Flush rules to prevent 404.
326
+     *
327
+     */
328
+    public static function maybe_flush_rewrite_rules() {
329
+        if ( ! get_option( 'getpaid_flushed_rewrite_rules' ) ) {
330
+            update_option( 'getpaid_flushed_rewrite_rules', '1' );
331
+            self::flush_rewrite_rules();
332
+        }
333
+    }
334 334
 
335 335
 }
Please login to merge, or discard this patch.
Spacing   +110 added lines, -110 removed lines patch added patch discarded remove patch
@@ -6,7 +6,7 @@  discard block
 block discarded – undo
6 6
  *
7 7
  */
8 8
 
9
-defined( 'ABSPATH' ) || exit;
9
+defined('ABSPATH') || exit;
10 10
 
11 11
 /**
12 12
  * Post types Class
@@ -18,10 +18,10 @@  discard block
 block discarded – undo
18 18
 	 * Hook in methods.
19 19
 	 */
20 20
 	public function __construct() {
21
-		add_action( 'init', array( __CLASS__, 'register_post_types' ), 1 );
22
-		add_action( 'init', array( __CLASS__, 'register_post_status' ), 4 );
23
-		add_action( 'getpaid_flush_rewrite_rules', array( __CLASS__, 'flush_rewrite_rules' ) );
24
-		add_action( 'getpaid_after_register_post_types', array( __CLASS__, 'maybe_flush_rewrite_rules' ) );
21
+		add_action('init', array(__CLASS__, 'register_post_types'), 1);
22
+		add_action('init', array(__CLASS__, 'register_post_status'), 4);
23
+		add_action('getpaid_flush_rewrite_rules', array(__CLASS__, 'flush_rewrite_rules'));
24
+		add_action('getpaid_after_register_post_types', array(__CLASS__, 'maybe_flush_rewrite_rules'));
25 25
 	}
26 26
 
27 27
 	/**
@@ -29,14 +29,14 @@  discard block
 block discarded – undo
29 29
 	 */
30 30
 	public static function register_post_types() {
31 31
 
32
-		if ( ! is_blog_installed() || post_type_exists( 'wpi_item' ) ) {
32
+		if (!is_blog_installed() || post_type_exists('wpi_item')) {
33 33
 			return;
34 34
 		}
35 35
 
36 36
 		$capabilities = wpinv_current_user_can_manage_invoicing();
37 37
 
38 38
 		// Fires before registering post types.
39
-		do_action( 'getpaid_register_post_types' );
39
+		do_action('getpaid_register_post_types');
40 40
 
41 41
 		// Register item post type.
42 42
 		register_post_type(
@@ -45,29 +45,29 @@  discard block
 block discarded – undo
45 45
 				'wpinv_register_post_type_invoice_item',
46 46
 				array(
47 47
 					'labels'            => array(
48
-						'name'               => _x( 'Items', 'post type general name', 'invoicing' ),
49
-						'singular_name'      => _x( 'Item', 'post type singular name', 'invoicing' ),
50
-						'menu_name'          => _x( 'Items', 'admin menu', 'invoicing' ),
51
-						'name_admin_bar'     => _x( 'Item', 'add new on admin bar', 'invoicing' ),
52
-						'add_new'            => _x( 'Add New', 'Item', 'invoicing' ),
53
-						'add_new_item'       => __( 'Add New Item', 'invoicing' ),
54
-						'new_item'           => __( 'New Item', 'invoicing' ),
55
-						'edit_item'          => __( 'Edit Item', 'invoicing' ),
56
-						'view_item'          => __( 'View Item', 'invoicing' ),
57
-						'all_items'          => __( 'Items', 'invoicing' ),
58
-						'search_items'       => __( 'Search items', 'invoicing' ),
59
-						'parent_item_colon'  => __( 'Parent item:', 'invoicing' ),
60
-						'not_found'          => __( 'No items found.', 'invoicing' ),
61
-						'not_found_in_trash' => __( 'No items found in trash.', 'invoicing' ),
48
+						'name'               => _x('Items', 'post type general name', 'invoicing'),
49
+						'singular_name'      => _x('Item', 'post type singular name', 'invoicing'),
50
+						'menu_name'          => _x('Items', 'admin menu', 'invoicing'),
51
+						'name_admin_bar'     => _x('Item', 'add new on admin bar', 'invoicing'),
52
+						'add_new'            => _x('Add New', 'Item', 'invoicing'),
53
+						'add_new_item'       => __('Add New Item', 'invoicing'),
54
+						'new_item'           => __('New Item', 'invoicing'),
55
+						'edit_item'          => __('Edit Item', 'invoicing'),
56
+						'view_item'          => __('View Item', 'invoicing'),
57
+						'all_items'          => __('Items', 'invoicing'),
58
+						'search_items'       => __('Search items', 'invoicing'),
59
+						'parent_item_colon'  => __('Parent item:', 'invoicing'),
60
+						'not_found'          => __('No items found.', 'invoicing'),
61
+						'not_found_in_trash' => __('No items found in trash.', 'invoicing'),
62 62
 					),
63
-					'description'       => __( 'This is where you can add new invoice items.', 'invoicing' ),
63
+					'description'       => __('This is where you can add new invoice items.', 'invoicing'),
64 64
 					'public'            => false,
65 65
 					'has_archive'       => false,
66 66
 					'_builtin'          => false,
67 67
 					'show_ui'           => true,
68 68
 					'show_in_menu'      => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
69 69
 					'show_in_nav_menus' => false,
70
-					'supports'          => array( 'title', 'excerpt', 'thumbnail' ),
70
+					'supports'          => array('title', 'excerpt', 'thumbnail'),
71 71
 					'rewrite'           => false,
72 72
 					'query_var'         => false,
73 73
 					'map_meta_cap'      => true,
@@ -84,22 +84,22 @@  discard block
 block discarded – undo
84 84
 				'wpinv_register_post_type_payment_form',
85 85
 				array(
86 86
 					'labels'            => array(
87
-						'name'               => _x( 'Payment Forms', 'post type general name', 'invoicing' ),
88
-						'singular_name'      => _x( 'Payment Form', 'post type singular name', 'invoicing' ),
89
-						'menu_name'          => _x( 'Payment Forms', 'admin menu', 'invoicing' ),
90
-						'name_admin_bar'     => _x( 'Payment Form', 'add new on admin bar', 'invoicing' ),
91
-						'add_new'            => _x( 'Add New', 'Payment Form', 'invoicing' ),
92
-						'add_new_item'       => __( 'Add New Payment Form', 'invoicing' ),
93
-						'new_item'           => __( 'New Payment Form', 'invoicing' ),
94
-						'edit_item'          => __( 'Edit Payment Form', 'invoicing' ),
95
-						'view_item'          => __( 'View Payment Form', 'invoicing' ),
96
-						'all_items'          => __( 'Payment Forms', 'invoicing' ),
97
-						'search_items'       => __( 'Search Payment Forms', 'invoicing' ),
98
-						'parent_item_colon'  => __( 'Parent Payment Forms:', 'invoicing' ),
99
-						'not_found'          => __( 'No payment forms found.', 'invoicing' ),
100
-						'not_found_in_trash' => __( 'No payment forms found in trash.', 'invoicing' ),
87
+						'name'               => _x('Payment Forms', 'post type general name', 'invoicing'),
88
+						'singular_name'      => _x('Payment Form', 'post type singular name', 'invoicing'),
89
+						'menu_name'          => _x('Payment Forms', 'admin menu', 'invoicing'),
90
+						'name_admin_bar'     => _x('Payment Form', 'add new on admin bar', 'invoicing'),
91
+						'add_new'            => _x('Add New', 'Payment Form', 'invoicing'),
92
+						'add_new_item'       => __('Add New Payment Form', 'invoicing'),
93
+						'new_item'           => __('New Payment Form', 'invoicing'),
94
+						'edit_item'          => __('Edit Payment Form', 'invoicing'),
95
+						'view_item'          => __('View Payment Form', 'invoicing'),
96
+						'all_items'          => __('Payment Forms', 'invoicing'),
97
+						'search_items'       => __('Search Payment Forms', 'invoicing'),
98
+						'parent_item_colon'  => __('Parent Payment Forms:', 'invoicing'),
99
+						'not_found'          => __('No payment forms found.', 'invoicing'),
100
+						'not_found_in_trash' => __('No payment forms found in trash.', 'invoicing'),
101 101
 					),
102
-					'description'       => __( 'Add new payment forms.', 'invoicing' ),
102
+					'description'       => __('Add new payment forms.', 'invoicing'),
103 103
 					'public'            => false,
104 104
 					'show_ui'           => true,
105 105
 					'show_in_menu'      => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
 					'has_archive'       => false,
111 111
 					'hierarchical'      => false,
112 112
 					'menu_position'     => null,
113
-					'supports'          => array( 'title' ),
113
+					'supports'          => array('title'),
114 114
 					'menu_icon'         => 'dashicons-media-form',
115 115
 				)
116 116
 			)
@@ -123,32 +123,32 @@  discard block
 block discarded – undo
123 123
 				'wpinv_register_post_type_invoice',
124 124
 				array(
125 125
 					'labels'              => array(
126
-						'name'                  => __( 'Invoices', 'invoicing' ),
127
-						'singular_name'         => __( 'Invoice', 'invoicing' ),
128
-						'all_items'             => __( 'Invoices', 'invoicing' ),
129
-						'menu_name'             => _x( 'Invoices', 'Admin menu name', 'invoicing' ),
130
-						'add_new'               => __( 'Add New', 'invoicing' ),
131
-						'add_new_item'          => __( 'Add new invoice', 'invoicing' ),
132
-						'edit'                  => __( 'Edit', 'invoicing' ),
133
-						'edit_item'             => __( 'Edit invoice', 'invoicing' ),
134
-						'new_item'              => __( 'New invoice', 'invoicing' ),
135
-						'view_item'             => __( 'View invoice', 'invoicing' ),
136
-						'view_items'            => __( 'View Invoices', 'invoicing' ),
137
-						'search_items'          => __( 'Search invoices', 'invoicing' ),
138
-						'not_found'             => __( 'No invoices found', 'invoicing' ),
139
-						'not_found_in_trash'    => __( 'No invoices found in trash', 'invoicing' ),
140
-						'parent'                => __( 'Parent invoice', 'invoicing' ),
141
-						'featured_image'        => __( 'Invoice image', 'invoicing' ),
142
-						'set_featured_image'    => __( 'Set invoice image', 'invoicing' ),
143
-						'remove_featured_image' => __( 'Remove invoice image', 'invoicing' ),
144
-						'use_featured_image'    => __( 'Use as invoice image', 'invoicing' ),
145
-						'insert_into_item'      => __( 'Insert into invoice', 'invoicing' ),
146
-						'uploaded_to_this_item' => __( 'Uploaded to this invoice', 'invoicing' ),
147
-						'filter_items_list'     => __( 'Filter invoices', 'invoicing' ),
148
-						'items_list_navigation' => __( 'Invoices navigation', 'invoicing' ),
149
-						'items_list'            => __( 'Invoices list', 'invoicing' ),
126
+						'name'                  => __('Invoices', 'invoicing'),
127
+						'singular_name'         => __('Invoice', 'invoicing'),
128
+						'all_items'             => __('Invoices', 'invoicing'),
129
+						'menu_name'             => _x('Invoices', 'Admin menu name', 'invoicing'),
130
+						'add_new'               => __('Add New', 'invoicing'),
131
+						'add_new_item'          => __('Add new invoice', 'invoicing'),
132
+						'edit'                  => __('Edit', 'invoicing'),
133
+						'edit_item'             => __('Edit invoice', 'invoicing'),
134
+						'new_item'              => __('New invoice', 'invoicing'),
135
+						'view_item'             => __('View invoice', 'invoicing'),
136
+						'view_items'            => __('View Invoices', 'invoicing'),
137
+						'search_items'          => __('Search invoices', 'invoicing'),
138
+						'not_found'             => __('No invoices found', 'invoicing'),
139
+						'not_found_in_trash'    => __('No invoices found in trash', 'invoicing'),
140
+						'parent'                => __('Parent invoice', 'invoicing'),
141
+						'featured_image'        => __('Invoice image', 'invoicing'),
142
+						'set_featured_image'    => __('Set invoice image', 'invoicing'),
143
+						'remove_featured_image' => __('Remove invoice image', 'invoicing'),
144
+						'use_featured_image'    => __('Use as invoice image', 'invoicing'),
145
+						'insert_into_item'      => __('Insert into invoice', 'invoicing'),
146
+						'uploaded_to_this_item' => __('Uploaded to this invoice', 'invoicing'),
147
+						'filter_items_list'     => __('Filter invoices', 'invoicing'),
148
+						'items_list_navigation' => __('Invoices navigation', 'invoicing'),
149
+						'items_list'            => __('Invoices list', 'invoicing'),
150 150
 					),
151
-					'description'         => __( 'This is where invoices are stored.', 'invoicing' ),
151
+					'description'         => __('This is where invoices are stored.', 'invoicing'),
152 152
 					'public'              => true,
153 153
 					'has_archive'         => false,
154 154
 					'publicly_queryable'  => true,
@@ -156,7 +156,7 @@  discard block
 block discarded – undo
156 156
         			'show_ui'             => true,
157 157
 					'show_in_menu'        => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
158 158
 					'show_in_nav_menus'   => false,
159
-					'supports'            => array( 'title', 'author', 'excerpt' ),
159
+					'supports'            => array('title', 'author', 'excerpt'),
160 160
 					'rewrite'             => array(
161 161
 						'slug'       => 'invoice',
162 162
 						'with_front' => false,
@@ -179,32 +179,32 @@  discard block
 block discarded – undo
179 179
 				'wpinv_register_post_type_discount',
180 180
 				array(
181 181
 					'labels'              => array(
182
-						'name'                  => __( 'Discounts', 'invoicing' ),
183
-						'singular_name'         => __( 'Discount', 'invoicing' ),
184
-						'all_items'             => __( 'Discounts', 'invoicing' ),
185
-						'menu_name'             => _x( 'Discounts', 'Admin menu name', 'invoicing' ),
186
-						'add_new'               => __( 'Add New', 'invoicing' ),
187
-						'add_new_item'          => __( 'Add new discount', 'invoicing' ),
188
-						'edit'                  => __( 'Edit', 'invoicing' ),
189
-						'edit_item'             => __( 'Edit discount', 'invoicing' ),
190
-						'new_item'              => __( 'New discount', 'invoicing' ),
191
-						'view_item'             => __( 'View discount', 'invoicing' ),
192
-						'view_items'            => __( 'View Discounts', 'invoicing' ),
193
-						'search_items'          => __( 'Search discounts', 'invoicing' ),
194
-						'not_found'             => __( 'No discounts found', 'invoicing' ),
195
-						'not_found_in_trash'    => __( 'No discounts found in trash', 'invoicing' ),
196
-						'parent'                => __( 'Parent discount', 'invoicing' ),
197
-						'featured_image'        => __( 'Discount image', 'invoicing' ),
198
-						'set_featured_image'    => __( 'Set discount image', 'invoicing' ),
199
-						'remove_featured_image' => __( 'Remove discount image', 'invoicing' ),
200
-						'use_featured_image'    => __( 'Use as discount image', 'invoicing' ),
201
-						'insert_into_item'      => __( 'Insert into discount', 'invoicing' ),
202
-						'uploaded_to_this_item' => __( 'Uploaded to this discount', 'invoicing' ),
203
-						'filter_items_list'     => __( 'Filter discounts', 'invoicing' ),
204
-						'items_list_navigation' => __( 'Discount navigation', 'invoicing' ),
205
-						'items_list'            => __( 'Discounts list', 'invoicing' ),
182
+						'name'                  => __('Discounts', 'invoicing'),
183
+						'singular_name'         => __('Discount', 'invoicing'),
184
+						'all_items'             => __('Discounts', 'invoicing'),
185
+						'menu_name'             => _x('Discounts', 'Admin menu name', 'invoicing'),
186
+						'add_new'               => __('Add New', 'invoicing'),
187
+						'add_new_item'          => __('Add new discount', 'invoicing'),
188
+						'edit'                  => __('Edit', 'invoicing'),
189
+						'edit_item'             => __('Edit discount', 'invoicing'),
190
+						'new_item'              => __('New discount', 'invoicing'),
191
+						'view_item'             => __('View discount', 'invoicing'),
192
+						'view_items'            => __('View Discounts', 'invoicing'),
193
+						'search_items'          => __('Search discounts', 'invoicing'),
194
+						'not_found'             => __('No discounts found', 'invoicing'),
195
+						'not_found_in_trash'    => __('No discounts found in trash', 'invoicing'),
196
+						'parent'                => __('Parent discount', 'invoicing'),
197
+						'featured_image'        => __('Discount image', 'invoicing'),
198
+						'set_featured_image'    => __('Set discount image', 'invoicing'),
199
+						'remove_featured_image' => __('Remove discount image', 'invoicing'),
200
+						'use_featured_image'    => __('Use as discount image', 'invoicing'),
201
+						'insert_into_item'      => __('Insert into discount', 'invoicing'),
202
+						'uploaded_to_this_item' => __('Uploaded to this discount', 'invoicing'),
203
+						'filter_items_list'     => __('Filter discounts', 'invoicing'),
204
+						'items_list_navigation' => __('Discount navigation', 'invoicing'),
205
+						'items_list'            => __('Discounts list', 'invoicing'),
206 206
 					),
207
-					'description'         => __( 'This is where you can add new discounts that users can use in invoices.', 'invoicing' ),
207
+					'description'         => __('This is where you can add new discounts that users can use in invoices.', 'invoicing'),
208 208
 					'public'              => false,
209 209
 					'can_export'          => true,
210 210
 					'_builtin'            => false,
@@ -217,7 +217,7 @@  discard block
 block discarded – undo
217 217
 					'map_meta_cap'        => true,
218 218
 					'has_archive'         => false,
219 219
 					'hierarchical'        => false,
220
-					'supports'            => array( 'title', 'excerpt' ),
220
+					'supports'            => array('title', 'excerpt'),
221 221
 					'show_in_nav_menus'   => false,
222 222
 					'show_in_admin_bar'   => true,
223 223
 					'menu_position'       => null,
@@ -225,7 +225,7 @@  discard block
 block discarded – undo
225 225
 			)
226 226
 		);
227 227
 
228
-		do_action( 'getpaid_after_register_post_types' );
228
+		do_action('getpaid_after_register_post_types');
229 229
 	}
230 230
 
231 231
 	/**
@@ -238,79 +238,79 @@  discard block
 block discarded – undo
238 238
 			array(
239 239
 
240 240
 				'wpi-pending'    => array(
241
-					'label'                     => _x( 'Pending Payment', 'Invoice status', 'invoicing' ),
241
+					'label'                     => _x('Pending Payment', 'Invoice status', 'invoicing'),
242 242
         			'public'                    => true,
243 243
         			'exclude_from_search'       => true,
244 244
         			'show_in_admin_all_list'    => true,
245 245
 					'show_in_admin_status_list' => true,
246 246
 					/* translators: %s: number of invoices */
247
-        			'label_count'               => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing' ),
247
+        			'label_count'               => _n_noop('Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing'),
248 248
 				),
249 249
 
250 250
 				'wpi-processing' => array(
251
-					'label'                     => _x( 'Processing', 'Invoice status', 'invoicing' ),
251
+					'label'                     => _x('Processing', 'Invoice status', 'invoicing'),
252 252
         			'public'                    => true,
253 253
         			'exclude_from_search'       => true,
254 254
         			'show_in_admin_all_list'    => true,
255 255
 					'show_in_admin_status_list' => true,
256 256
 					/* translators: %s: number of invoices */
257
-        			'label_count'               => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing' ),
257
+        			'label_count'               => _n_noop('Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing'),
258 258
 				),
259 259
 
260 260
 				'wpi-onhold'     => array(
261
-					'label'                     => _x( 'On Hold', 'Invoice status', 'invoicing' ),
261
+					'label'                     => _x('On Hold', 'Invoice status', 'invoicing'),
262 262
         			'public'                    => true,
263 263
         			'exclude_from_search'       => true,
264 264
         			'show_in_admin_all_list'    => true,
265 265
 					'show_in_admin_status_list' => true,
266 266
 					/* translators: %s: number of invoices */
267
-        			'label_count'               => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing' ),
267
+        			'label_count'               => _n_noop('On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing'),
268 268
 				),
269 269
 
270 270
 				'wpi-cancelled'  => array(
271
-					'label'                     => _x( 'Cancelled', 'Invoice status', 'invoicing' ),
271
+					'label'                     => _x('Cancelled', 'Invoice status', 'invoicing'),
272 272
         			'public'                    => true,
273 273
         			'exclude_from_search'       => true,
274 274
         			'show_in_admin_all_list'    => true,
275 275
 					'show_in_admin_status_list' => true,
276 276
 					/* translators: %s: number of invoices */
277
-        			'label_count'               => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing' ),
277
+        			'label_count'               => _n_noop('Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing'),
278 278
 				),
279 279
 
280 280
 				'wpi-refunded'   => array(
281
-					'label'                     => _x( 'Refunded', 'Invoice status', 'invoicing' ),
281
+					'label'                     => _x('Refunded', 'Invoice status', 'invoicing'),
282 282
         			'public'                    => true,
283 283
         			'exclude_from_search'       => true,
284 284
         			'show_in_admin_all_list'    => true,
285 285
 					'show_in_admin_status_list' => true,
286 286
 					/* translators: %s: number of invoices */
287
-        			'label_count'               => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing' ),
287
+        			'label_count'               => _n_noop('Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing'),
288 288
 				),
289 289
 
290 290
 				'wpi-failed'     => array(
291
-					'label'                     => _x( 'Failed', 'Invoice status', 'invoicing' ),
291
+					'label'                     => _x('Failed', 'Invoice status', 'invoicing'),
292 292
         			'public'                    => true,
293 293
         			'exclude_from_search'       => true,
294 294
         			'show_in_admin_all_list'    => true,
295 295
 					'show_in_admin_status_list' => true,
296 296
 					/* translators: %s: number of invoices */
297
-        			'label_count'               => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing' ),
297
+        			'label_count'               => _n_noop('Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing'),
298 298
 				),
299 299
 
300 300
 				'wpi-renewal'    => array(
301
-					'label'                     => _x( 'Renewal', 'Invoice status', 'invoicing' ),
301
+					'label'                     => _x('Renewal', 'Invoice status', 'invoicing'),
302 302
         			'public'                    => true,
303 303
         			'exclude_from_search'       => true,
304 304
         			'show_in_admin_all_list'    => true,
305 305
 					'show_in_admin_status_list' => true,
306 306
 					/* translators: %s: number of invoices */
307
-        			'label_count'               => _n_noop( 'Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing' ),
307
+        			'label_count'               => _n_noop('Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing'),
308 308
 				),
309 309
 			)
310 310
 		);
311 311
 
312
-		foreach ( $invoice_statuses as $invoice_statuse => $args ) {
313
-			register_post_status( $invoice_statuse, $args );
312
+		foreach ($invoice_statuses as $invoice_statuse => $args) {
313
+			register_post_status($invoice_statuse, $args);
314 314
 		}
315 315
 	}
316 316
 
@@ -326,8 +326,8 @@  discard block
 block discarded – undo
326 326
 	 *
327 327
 	 */
328 328
 	public static function maybe_flush_rewrite_rules() {
329
-		if ( ! get_option( 'getpaid_flushed_rewrite_rules' ) ) {
330
-			update_option( 'getpaid_flushed_rewrite_rules', '1' );
329
+		if (!get_option('getpaid_flushed_rewrite_rules')) {
330
+			update_option('getpaid_flushed_rewrite_rules', '1');
331 331
 			self::flush_rewrite_rules();
332 332
 		}
333 333
 	}
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-payment-form-data-store.php 2 patches
Indentation   +169 added lines, -169 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  *
5 5
  */
6 6
 if ( ! defined( 'ABSPATH' ) ) {
7
-	exit;
7
+    exit;
8 8
 }
9 9
 
10 10
 /**
@@ -14,179 +14,179 @@  discard block
 block discarded – undo
14 14
  */
15 15
 class GetPaid_Payment_Form_Data_Store extends GetPaid_Data_Store_WP {
16 16
 
17
-	/**
18
-	 * Data stored in meta keys, but not considered "meta" for a form.
19
-	 *
20
-	 * @since 1.0.19
21
-	 * @var array
22
-	 */
23
-	protected $internal_meta_keys = array(
24
-		'wpinv_form_elements',
25
-		'wpinv_form_items',
26
-		'wpinv_form_earned',
27
-		'wpinv_form_refunded',
28
-		'wpinv_form_cancelled',
29
-		'wpinv_form_failed',
30
-	);
31
-
32
-	/**
33
-	 * A map of meta keys to data props.
34
-	 *
35
-	 * @since 1.0.19
36
-	 *
37
-	 * @var array
38
-	 */
39
-	protected $meta_key_to_props = array(
40
-		'wpinv_form_elements'  => 'elements',
41
-		'wpinv_form_items'     => 'items',
42
-		'wpinv_form_earned'    => 'earned',
43
-		'wpinv_form_refunded'  => 'refunded',
44
-		'wpinv_form_cancelled' => 'cancelled',
45
-		'wpinv_form_failed'    => 'failed',
46
-	);
47
-
48
-	/*
17
+    /**
18
+     * Data stored in meta keys, but not considered "meta" for a form.
19
+     *
20
+     * @since 1.0.19
21
+     * @var array
22
+     */
23
+    protected $internal_meta_keys = array(
24
+        'wpinv_form_elements',
25
+        'wpinv_form_items',
26
+        'wpinv_form_earned',
27
+        'wpinv_form_refunded',
28
+        'wpinv_form_cancelled',
29
+        'wpinv_form_failed',
30
+    );
31
+
32
+    /**
33
+     * A map of meta keys to data props.
34
+     *
35
+     * @since 1.0.19
36
+     *
37
+     * @var array
38
+     */
39
+    protected $meta_key_to_props = array(
40
+        'wpinv_form_elements'  => 'elements',
41
+        'wpinv_form_items'     => 'items',
42
+        'wpinv_form_earned'    => 'earned',
43
+        'wpinv_form_refunded'  => 'refunded',
44
+        'wpinv_form_cancelled' => 'cancelled',
45
+        'wpinv_form_failed'    => 'failed',
46
+    );
47
+
48
+    /*
49 49
 	|--------------------------------------------------------------------------
50 50
 	| CRUD Methods
51 51
 	|--------------------------------------------------------------------------
52 52
 	*/
53 53
 
54
-	/**
55
-	 * Method to create a new form in the database.
56
-	 *
57
-	 * @param GetPaid_Payment_Form $form Form object.
58
-	 */
59
-	public function create( &$form ) {
60
-		$form->set_version( WPINV_VERSION );
61
-		$form->set_date_created( current_time( 'mysql' ) );
62
-
63
-		// Create a new post.
64
-		$id = wp_insert_post(
65
-			apply_filters(
66
-				'getpaid_new_payment_form_data',
67
-				array(
68
-					'post_date'   => $form->get_date_created( 'edit' ),
69
-					'post_type'   => 'wpi_payment_form',
70
-					'post_status' => $this->get_post_status( $form ),
71
-					'ping_status' => 'closed',
72
-					'post_author' => $form->get_author( 'edit' ),
73
-					'post_title'  => $form->get_name( 'edit' ),
74
-				)
75
-			),
76
-			true
77
-		);
78
-
79
-		if ( $id && ! is_wp_error( $id ) ) {
80
-			$form->set_id( $id );
81
-			$this->update_post_meta( $form );
82
-			$form->save_meta_data();
83
-			$form->apply_changes();
84
-			$this->clear_caches( $form );
85
-			do_action( 'getpaid_create_payment_form', $form );
86
-			return true;
87
-		}
88
-
89
-		if ( is_wp_error( $id ) ) {
90
-			$form->last_error = $id->get_error_message();
91
-		}
92
-
93
-		return false;
94
-	}
95
-
96
-	/**
97
-	 * Method to read a form from the database.
98
-	 *
99
-	 * @param GetPaid_Payment_Form $form Form object.
100
-	 *
101
-	 */
102
-	public function read( &$form ) {
103
-
104
-		$form->set_defaults();
105
-		$form_object = get_post( $form->get_id() );
106
-
107
-		if ( ! $form->get_id() || ! $form_object || $form_object->post_type != 'wpi_payment_form' ) {
108
-			$form->last_error = __( 'Invalid form.', 'invoicing' );
109
-			$form->set_id( 0 );
110
-			return false;
111
-		}
112
-
113
-		$form->set_props(
114
-			array(
115
-				'date_created'  => 0 < $form_object->post_date ? $form_object->post_date : null,
116
-				'date_modified' => 0 < $form_object->post_modified ? $form_object->post_modified : null,
117
-				'status'        => $form_object->post_status,
118
-				'name'          => $form_object->post_title,
119
-				'author'        => $form_object->post_author,
120
-			)
121
-		);
122
-
123
-		$this->read_object_data( $form, $form_object );
124
-		$form->read_meta_data();
125
-		$form->set_object_read( true );
126
-		do_action( 'getpaid_read_payment_form', $form );
127
-
128
-	}
129
-
130
-	/**
131
-	 * Method to update a form in the database.
132
-	 *
133
-	 * @param GetPaid_Payment_Form $form Form object.
134
-	 */
135
-	public function update( &$form ) {
136
-		$form->save_meta_data();
137
-		$form->set_version( WPINV_VERSION );
138
-
139
-		if ( null === $form->get_date_created( 'edit' ) ) {
140
-			$form->set_date_created( current_time( 'mysql' ) );
141
-		}
142
-
143
-		// Grab the current status so we can compare.
144
-		$previous_status = get_post_status( $form->get_id() );
145
-
146
-		$changes = $form->get_changes();
147
-
148
-		// Only update the post when the post data changes.
149
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author' ), array_keys( $changes ) ) ) {
150
-			$post_data = array(
151
-				'post_date'     => $form->get_date_created( 'edit' ),
152
-				'post_status'   => $form->get_status( 'edit' ),
153
-				'post_title'    => $form->get_name( 'edit' ),
154
-				'post_author'   => $form->get_author( 'edit' ),
155
-				'post_modified' => $form->get_date_modified( 'edit' ),
156
-			);
157
-
158
-			/**
159
-			 * When updating this object, to prevent infinite loops, use $wpdb
160
-			 * to update data, since wp_update_post spawns more calls to the
161
-			 * save_post action.
162
-			 *
163
-			 * This ensures hooks are fired by either WP itself (admin screen save),
164
-			 * or an update purely from CRUD.
165
-			 */
166
-			if ( doing_action( 'save_post' ) ) {
167
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $form->get_id() ) );
168
-				clean_post_cache( $form->get_id() );
169
-			} else {
170
-				wp_update_post( array_merge( array( 'ID' => $form->get_id() ), $post_data ) );
171
-			}
172
-			$form->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
173
-		}
174
-		$this->update_post_meta( $form );
175
-		$form->apply_changes();
176
-		$this->clear_caches( $form );
177
-
178
-		// Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
179
-		$new_status = $form->get_status( 'edit' );
180
-
181
-		if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
182
-			do_action( 'getpaid_new_payment_form', $form );
183
-		} else {
184
-			do_action( 'getpaid_update_payment_form', $form );
185
-		}
186
-
187
-	}
188
-
189
-	/*
54
+    /**
55
+     * Method to create a new form in the database.
56
+     *
57
+     * @param GetPaid_Payment_Form $form Form object.
58
+     */
59
+    public function create( &$form ) {
60
+        $form->set_version( WPINV_VERSION );
61
+        $form->set_date_created( current_time( 'mysql' ) );
62
+
63
+        // Create a new post.
64
+        $id = wp_insert_post(
65
+            apply_filters(
66
+                'getpaid_new_payment_form_data',
67
+                array(
68
+                    'post_date'   => $form->get_date_created( 'edit' ),
69
+                    'post_type'   => 'wpi_payment_form',
70
+                    'post_status' => $this->get_post_status( $form ),
71
+                    'ping_status' => 'closed',
72
+                    'post_author' => $form->get_author( 'edit' ),
73
+                    'post_title'  => $form->get_name( 'edit' ),
74
+                )
75
+            ),
76
+            true
77
+        );
78
+
79
+        if ( $id && ! is_wp_error( $id ) ) {
80
+            $form->set_id( $id );
81
+            $this->update_post_meta( $form );
82
+            $form->save_meta_data();
83
+            $form->apply_changes();
84
+            $this->clear_caches( $form );
85
+            do_action( 'getpaid_create_payment_form', $form );
86
+            return true;
87
+        }
88
+
89
+        if ( is_wp_error( $id ) ) {
90
+            $form->last_error = $id->get_error_message();
91
+        }
92
+
93
+        return false;
94
+    }
95
+
96
+    /**
97
+     * Method to read a form from the database.
98
+     *
99
+     * @param GetPaid_Payment_Form $form Form object.
100
+     *
101
+     */
102
+    public function read( &$form ) {
103
+
104
+        $form->set_defaults();
105
+        $form_object = get_post( $form->get_id() );
106
+
107
+        if ( ! $form->get_id() || ! $form_object || $form_object->post_type != 'wpi_payment_form' ) {
108
+            $form->last_error = __( 'Invalid form.', 'invoicing' );
109
+            $form->set_id( 0 );
110
+            return false;
111
+        }
112
+
113
+        $form->set_props(
114
+            array(
115
+                'date_created'  => 0 < $form_object->post_date ? $form_object->post_date : null,
116
+                'date_modified' => 0 < $form_object->post_modified ? $form_object->post_modified : null,
117
+                'status'        => $form_object->post_status,
118
+                'name'          => $form_object->post_title,
119
+                'author'        => $form_object->post_author,
120
+            )
121
+        );
122
+
123
+        $this->read_object_data( $form, $form_object );
124
+        $form->read_meta_data();
125
+        $form->set_object_read( true );
126
+        do_action( 'getpaid_read_payment_form', $form );
127
+
128
+    }
129
+
130
+    /**
131
+     * Method to update a form in the database.
132
+     *
133
+     * @param GetPaid_Payment_Form $form Form object.
134
+     */
135
+    public function update( &$form ) {
136
+        $form->save_meta_data();
137
+        $form->set_version( WPINV_VERSION );
138
+
139
+        if ( null === $form->get_date_created( 'edit' ) ) {
140
+            $form->set_date_created( current_time( 'mysql' ) );
141
+        }
142
+
143
+        // Grab the current status so we can compare.
144
+        $previous_status = get_post_status( $form->get_id() );
145
+
146
+        $changes = $form->get_changes();
147
+
148
+        // Only update the post when the post data changes.
149
+        if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author' ), array_keys( $changes ) ) ) {
150
+            $post_data = array(
151
+                'post_date'     => $form->get_date_created( 'edit' ),
152
+                'post_status'   => $form->get_status( 'edit' ),
153
+                'post_title'    => $form->get_name( 'edit' ),
154
+                'post_author'   => $form->get_author( 'edit' ),
155
+                'post_modified' => $form->get_date_modified( 'edit' ),
156
+            );
157
+
158
+            /**
159
+             * When updating this object, to prevent infinite loops, use $wpdb
160
+             * to update data, since wp_update_post spawns more calls to the
161
+             * save_post action.
162
+             *
163
+             * This ensures hooks are fired by either WP itself (admin screen save),
164
+             * or an update purely from CRUD.
165
+             */
166
+            if ( doing_action( 'save_post' ) ) {
167
+                $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $form->get_id() ) );
168
+                clean_post_cache( $form->get_id() );
169
+            } else {
170
+                wp_update_post( array_merge( array( 'ID' => $form->get_id() ), $post_data ) );
171
+            }
172
+            $form->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
173
+        }
174
+        $this->update_post_meta( $form );
175
+        $form->apply_changes();
176
+        $this->clear_caches( $form );
177
+
178
+        // Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
179
+        $new_status = $form->get_status( 'edit' );
180
+
181
+        if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
182
+            do_action( 'getpaid_new_payment_form', $form );
183
+        } else {
184
+            do_action( 'getpaid_update_payment_form', $form );
185
+        }
186
+
187
+    }
188
+
189
+    /*
190 190
 	|--------------------------------------------------------------------------
191 191
 	| Additional Methods
192 192
 	|--------------------------------------------------------------------------
Please login to merge, or discard this patch.
Spacing   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * GetPaid_Payment_Form_Data_Store class file.
4 4
  *
5 5
  */
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
 	exit;
8 8
 }
9 9
 
@@ -56,37 +56,37 @@  discard block
 block discarded – undo
56 56
 	 *
57 57
 	 * @param GetPaid_Payment_Form $form Form object.
58 58
 	 */
59
-	public function create( &$form ) {
60
-		$form->set_version( WPINV_VERSION );
61
-		$form->set_date_created( current_time( 'mysql' ) );
59
+	public function create(&$form) {
60
+		$form->set_version(WPINV_VERSION);
61
+		$form->set_date_created(current_time('mysql'));
62 62
 
63 63
 		// Create a new post.
64 64
 		$id = wp_insert_post(
65 65
 			apply_filters(
66 66
 				'getpaid_new_payment_form_data',
67 67
 				array(
68
-					'post_date'   => $form->get_date_created( 'edit' ),
68
+					'post_date'   => $form->get_date_created('edit'),
69 69
 					'post_type'   => 'wpi_payment_form',
70
-					'post_status' => $this->get_post_status( $form ),
70
+					'post_status' => $this->get_post_status($form),
71 71
 					'ping_status' => 'closed',
72
-					'post_author' => $form->get_author( 'edit' ),
73
-					'post_title'  => $form->get_name( 'edit' ),
72
+					'post_author' => $form->get_author('edit'),
73
+					'post_title'  => $form->get_name('edit'),
74 74
 				)
75 75
 			),
76 76
 			true
77 77
 		);
78 78
 
79
-		if ( $id && ! is_wp_error( $id ) ) {
80
-			$form->set_id( $id );
81
-			$this->update_post_meta( $form );
79
+		if ($id && !is_wp_error($id)) {
80
+			$form->set_id($id);
81
+			$this->update_post_meta($form);
82 82
 			$form->save_meta_data();
83 83
 			$form->apply_changes();
84
-			$this->clear_caches( $form );
85
-			do_action( 'getpaid_create_payment_form', $form );
84
+			$this->clear_caches($form);
85
+			do_action('getpaid_create_payment_form', $form);
86 86
 			return true;
87 87
 		}
88 88
 
89
-		if ( is_wp_error( $id ) ) {
89
+		if (is_wp_error($id)) {
90 90
 			$form->last_error = $id->get_error_message();
91 91
 		}
92 92
 
@@ -99,14 +99,14 @@  discard block
 block discarded – undo
99 99
 	 * @param GetPaid_Payment_Form $form Form object.
100 100
 	 *
101 101
 	 */
102
-	public function read( &$form ) {
102
+	public function read(&$form) {
103 103
 
104 104
 		$form->set_defaults();
105
-		$form_object = get_post( $form->get_id() );
105
+		$form_object = get_post($form->get_id());
106 106
 
107
-		if ( ! $form->get_id() || ! $form_object || $form_object->post_type != 'wpi_payment_form' ) {
108
-			$form->last_error = __( 'Invalid form.', 'invoicing' );
109
-			$form->set_id( 0 );
107
+		if (!$form->get_id() || !$form_object || $form_object->post_type != 'wpi_payment_form') {
108
+			$form->last_error = __('Invalid form.', 'invoicing');
109
+			$form->set_id(0);
110 110
 			return false;
111 111
 		}
112 112
 
@@ -120,10 +120,10 @@  discard block
 block discarded – undo
120 120
 			)
121 121
 		);
122 122
 
123
-		$this->read_object_data( $form, $form_object );
123
+		$this->read_object_data($form, $form_object);
124 124
 		$form->read_meta_data();
125
-		$form->set_object_read( true );
126
-		do_action( 'getpaid_read_payment_form', $form );
125
+		$form->set_object_read(true);
126
+		do_action('getpaid_read_payment_form', $form);
127 127
 
128 128
 	}
129 129
 
@@ -132,27 +132,27 @@  discard block
 block discarded – undo
132 132
 	 *
133 133
 	 * @param GetPaid_Payment_Form $form Form object.
134 134
 	 */
135
-	public function update( &$form ) {
135
+	public function update(&$form) {
136 136
 		$form->save_meta_data();
137
-		$form->set_version( WPINV_VERSION );
137
+		$form->set_version(WPINV_VERSION);
138 138
 
139
-		if ( null === $form->get_date_created( 'edit' ) ) {
140
-			$form->set_date_created( current_time( 'mysql' ) );
139
+		if (null === $form->get_date_created('edit')) {
140
+			$form->set_date_created(current_time('mysql'));
141 141
 		}
142 142
 
143 143
 		// Grab the current status so we can compare.
144
-		$previous_status = get_post_status( $form->get_id() );
144
+		$previous_status = get_post_status($form->get_id());
145 145
 
146 146
 		$changes = $form->get_changes();
147 147
 
148 148
 		// Only update the post when the post data changes.
149
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author' ), array_keys( $changes ) ) ) {
149
+		if (array_intersect(array('date_created', 'date_modified', 'status', 'name', 'author'), array_keys($changes))) {
150 150
 			$post_data = array(
151
-				'post_date'     => $form->get_date_created( 'edit' ),
152
-				'post_status'   => $form->get_status( 'edit' ),
153
-				'post_title'    => $form->get_name( 'edit' ),
154
-				'post_author'   => $form->get_author( 'edit' ),
155
-				'post_modified' => $form->get_date_modified( 'edit' ),
151
+				'post_date'     => $form->get_date_created('edit'),
152
+				'post_status'   => $form->get_status('edit'),
153
+				'post_title'    => $form->get_name('edit'),
154
+				'post_author'   => $form->get_author('edit'),
155
+				'post_modified' => $form->get_date_modified('edit'),
156 156
 			);
157 157
 
158 158
 			/**
@@ -163,25 +163,25 @@  discard block
 block discarded – undo
163 163
 			 * This ensures hooks are fired by either WP itself (admin screen save),
164 164
 			 * or an update purely from CRUD.
165 165
 			 */
166
-			if ( doing_action( 'save_post' ) ) {
167
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $form->get_id() ) );
168
-				clean_post_cache( $form->get_id() );
166
+			if (doing_action('save_post')) {
167
+				$GLOBALS['wpdb']->update($GLOBALS['wpdb']->posts, $post_data, array('ID' => $form->get_id()));
168
+				clean_post_cache($form->get_id());
169 169
 			} else {
170
-				wp_update_post( array_merge( array( 'ID' => $form->get_id() ), $post_data ) );
170
+				wp_update_post(array_merge(array('ID' => $form->get_id()), $post_data));
171 171
 			}
172
-			$form->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
172
+			$form->read_meta_data(true); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
173 173
 		}
174
-		$this->update_post_meta( $form );
174
+		$this->update_post_meta($form);
175 175
 		$form->apply_changes();
176
-		$this->clear_caches( $form );
176
+		$this->clear_caches($form);
177 177
 
178 178
 		// Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
179
-		$new_status = $form->get_status( 'edit' );
179
+		$new_status = $form->get_status('edit');
180 180
 
181
-		if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
182
-			do_action( 'getpaid_new_payment_form', $form );
181
+		if ($new_status !== $previous_status && in_array($previous_status, array('new', 'auto-draft', 'draft'), true)) {
182
+			do_action('getpaid_new_payment_form', $form);
183 183
 		} else {
184
-			do_action( 'getpaid_update_payment_form', $form );
184
+			do_action('getpaid_update_payment_form', $form);
185 185
 		}
186 186
 
187 187
 	}
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-data.php 2 patches
Indentation   +857 added lines, -857 removed lines patch added patch discarded remove patch
@@ -9,7 +9,7 @@  discard block
 block discarded – undo
9 9
  */
10 10
 
11 11
 if ( ! defined( 'ABSPATH' ) ) {
12
-	exit;
12
+    exit;
13 13
 }
14 14
 
15 15
 /**
@@ -21,356 +21,356 @@  discard block
 block discarded – undo
21 21
  */
22 22
 abstract class GetPaid_Data {
23 23
 
24
-	/**
25
-	 * ID for this object.
26
-	 *
27
-	 * @since 1.0.19
28
-	 * @var int
29
-	 */
30
-	protected $id = 0;
31
-
32
-	/**
33
-	 * Core data for this object. Name value pairs (name + default value).
34
-	 *
35
-	 * @since 1.0.19
36
-	 * @var array
37
-	 */
38
-	protected $data = array();
39
-
40
-	/**
41
-	 * Core data changes for this object.
42
-	 *
43
-	 * @since 1.0.19
44
-	 * @var array
45
-	 */
46
-	protected $changes = array();
47
-
48
-	/**
49
-	 * This is false until the object is read from the DB.
50
-	 *
51
-	 * @since 1.0.19
52
-	 * @var bool
53
-	 */
54
-	protected $object_read = false;
55
-
56
-	/**
57
-	 * This is the name of this object type.
58
-	 *
59
-	 * @since 1.0.19
60
-	 * @var string
61
-	 */
62
-	protected $object_type = 'data';
63
-
64
-	/**
65
-	 * Extra data for this object. Name value pairs (name + default value).
66
-	 * Used as a standard way for sub classes (like item types) to add
67
-	 * additional information to an inherited class.
68
-	 *
69
-	 * @since 1.0.19
70
-	 * @var array
71
-	 */
72
-	protected $extra_data = array();
73
-
74
-	/**
75
-	 * Set to _data on construct so we can track and reset data if needed.
76
-	 *
77
-	 * @since 1.0.19
78
-	 * @var array
79
-	 */
80
-	protected $default_data = array();
81
-
82
-	/**
83
-	 * Contains a reference to the data store for this class.
84
-	 *
85
-	 * @since 1.0.19
86
-	 * @var GetPaid_Data_Store
87
-	 */
88
-	protected $data_store;
89
-
90
-	/**
91
-	 * Stores meta in cache for future reads.
92
-	 * A group must be set to to enable caching.
93
-	 *
94
-	 * @since 1.0.19
95
-	 * @var string
96
-	 */
97
-	protected $cache_group = '';
98
-
99
-	/**
100
-	 * Stores the last error.
101
-	 *
102
-	 * @since 1.0.19
103
-	 * @var string
104
-	 */
105
-	public $last_error = '';
106
-
107
-	/**
108
-	 * Stores additional meta data.
109
-	 *
110
-	 * @since 1.0.19
111
-	 * @var array
112
-	 */
113
-	protected $meta_data = null;
114
-
115
-	/**
116
-	 * Default constructor.
117
-	 *
118
-	 * @param int|object|array|string $read ID to load from the DB (optional) or already queried data.
119
-	 */
120
-	public function __construct( $read = 0 ) {
121
-		$this->data         = array_merge( $this->data, $this->extra_data );
122
-		$this->default_data = $this->data;
123
-	}
124
-
125
-	/**
126
-	 * Only store the object ID to avoid serializing the data object instance.
127
-	 *
128
-	 * @return array
129
-	 */
130
-	public function __sleep() {
131
-		return array( 'id' );
132
-	}
133
-
134
-	/**
135
-	 * Re-run the constructor with the object ID.
136
-	 *
137
-	 * If the object no longer exists, remove the ID.
138
-	 */
139
-	public function __wakeup() {
140
-		$this->__construct( absint( $this->id ) );
141
-
142
-		if ( ! empty( $this->last_error ) ) {
143
-			$this->set_id( 0 );
144
-		}
145
-
146
-	}
147
-
148
-	/**
149
-	 * When the object is cloned, make sure meta is duplicated correctly.
150
-	 *
151
-	 * @since 1.0.19
152
-	 */
153
-	public function __clone() {
154
-		$this->maybe_read_meta_data();
155
-		if ( ! empty( $this->meta_data ) ) {
156
-			foreach ( $this->meta_data as $array_key => $meta ) {
157
-				$this->meta_data[ $array_key ] = clone $meta;
158
-				if ( ! empty( $meta->id ) ) {
159
-					$this->meta_data[ $array_key ]->id = null;
160
-				}
161
-			}
162
-		}
163
-	}
164
-
165
-	/**
166
-	 * Get the data store.
167
-	 *
168
-	 * @since  1.0.19
169
-	 * @return object
170
-	 */
171
-	public function get_data_store() {
172
-		return $this->data_store;
173
-	}
174
-
175
-	/**
176
-	 * Get the object type.
177
-	 *
178
-	 * @since  1.0.19
179
-	 * @return string
180
-	 */
181
-	public function get_object_type() {
182
-		return $this->object_type;
183
-	}
184
-
185
-	/**
186
-	 * Returns the unique ID for this object.
187
-	 *
188
-	 * @since  1.0.19
189
-	 * @return int
190
-	 */
191
-	public function get_id() {
192
-		return $this->id;
193
-	}
194
-
195
-	/**
196
-	 * Get form status.
197
-	 *
198
-	 * @since 1.0.19
199
-	 * @param  string $context View or edit context.
200
-	 * @return string
201
-	 */
202
-	public function get_status( $context = 'view' ) {
203
-		return $this->get_prop( 'status', $context );
204
-    }
205
-
206
-	/**
207
-	 * Delete an object, set the ID to 0, and return result.
208
-	 *
209
-	 * @since  1.0.19
210
-	 * @param  bool $force_delete Should the data be deleted permanently.
211
-	 * @return bool result
212
-	 */
213
-	public function delete( $force_delete = false ) {
214
-		if ( $this->data_store && $this->exists() ) {
215
-			$this->data_store->delete( $this, array( 'force_delete' => $force_delete ) );
216
-			$this->set_id( 0 );
217
-			return true;
218
-		}
219
-		return false;
220
-	}
221
-
222
-	/**
223
-	 * Save should create or update based on object existence.
224
-	 *
225
-	 * @since  1.0.19
226
-	 * @return int
227
-	 */
228
-	public function save() {
229
-		if ( ! $this->data_store ) {
230
-			return $this->get_id();
231
-		}
232
-
233
-		/**
234
-		 * Trigger action before saving to the DB. Allows you to adjust object props before save.
235
-		 *
236
-		 * @param GetPaid_Data          $this The object being saved.
237
-		 * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
238
-		 */
239
-		do_action( 'getpaid_before_' . $this->object_type . '_object_save', $this, $this->data_store );
240
-
241
-		if ( $this->get_id() ) {
242
-			$this->data_store->update( $this );
243
-		} else {
244
-			$this->data_store->create( $this );
245
-		}
246
-
247
-		/**
248
-		 * Trigger action after saving to the DB.
249
-		 *
250
-		 * @param GetPaid_Data          $this The object being saved.
251
-		 * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
252
-		 */
253
-		do_action( 'getpaid_after_' . $this->object_type . '_object_save', $this, $this->data_store );
254
-
255
-		return $this->get_id();
256
-	}
257
-
258
-	/**
259
-	 * Change data to JSON format.
260
-	 *
261
-	 * @since  1.0.19
262
-	 * @return string Data in JSON format.
263
-	 */
264
-	public function __toString() {
265
-		return wp_json_encode( $this->get_data() );
266
-	}
267
-
268
-	/**
269
-	 * Returns all data for this object.
270
-	 *
271
-	 * @since  1.0.19
272
-	 * @return array
273
-	 */
274
-	public function get_data() {
275
-		return array_merge( array( 'id' => $this->get_id() ), $this->data, array( 'meta_data' => $this->get_meta_data() ) );
276
-	}
277
-
278
-	/**
279
-	 * Returns array of expected data keys for this object.
280
-	 *
281
-	 * @since   1.0.19
282
-	 * @return array
283
-	 */
284
-	public function get_data_keys() {
285
-		return array_keys( $this->data );
286
-	}
287
-
288
-	/**
289
-	 * Returns all "extra" data keys for an object (for sub objects like item types).
290
-	 *
291
-	 * @since  1.0.19
292
-	 * @return array
293
-	 */
294
-	public function get_extra_data_keys() {
295
-		return array_keys( $this->extra_data );
296
-	}
297
-
298
-	/**
299
-	 * Filter null meta values from array.
300
-	 *
301
-	 * @since  1.0.19
302
-	 * @param mixed $meta Meta value to check.
303
-	 * @return bool
304
-	 */
305
-	protected function filter_null_meta( $meta ) {
306
-		return ! is_null( $meta->value );
307
-	}
308
-
309
-	/**
310
-	 * Get All Meta Data.
311
-	 *
312
-	 * @since 1.0.19
313
-	 * @return array of objects.
314
-	 */
315
-	public function get_meta_data() {
316
-		$this->maybe_read_meta_data();
317
-		return array_values( array_filter( $this->meta_data, array( $this, 'filter_null_meta' ) ) );
318
-	}
319
-
320
-	/**
321
-	 * Check if the key is an internal one.
322
-	 *
323
-	 * @since  1.0.19
324
-	 * @param  string $key Key to check.
325
-	 * @return bool   true if it's an internal key, false otherwise
326
-	 */
327
-	protected function is_internal_meta_key( $key ) {
328
-		$internal_meta_key = ! empty( $key ) && $this->data_store && in_array( $key, $this->data_store->get_internal_meta_keys(), true );
329
-
330
-		if ( ! $internal_meta_key ) {
331
-			return false;
332
-		}
333
-
334
-		$has_setter_or_getter = is_callable( array( $this, 'set_' . $key ) ) || is_callable( array( $this, 'get_' . $key ) );
335
-
336
-		if ( ! $has_setter_or_getter ) {
337
-			return false;
338
-		}
339
-
340
-		/* translators: %s: $key Key to check */
341
-		getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Generic add/update/get meta methods should not be used for internal meta data, including "%s". Use getters and setters.', 'invoicing' ), $key ), '1.0.19' );
342
-
343
-		return true;
344
-	}
345
-
346
-	/**
347
-	 * Magic method for setting data fields.
348
-	 *
349
-	 * This method does not update custom fields in the database.
350
-	 *
351
-	 * @since 1.0.19
352
-	 * @access public
353
-	 *
354
-	 */
355
-	public function __set( $key, $value ) {
356
-
357
-		if ( 'id' == strtolower( $key ) ) {
358
-			return $this->set_id( $value );
359
-		}
360
-
361
-		if ( method_exists( $this, "set_$key" ) ) {
362
-
363
-			/* translators: %s: $key Key to set */
364
-			getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Object data such as "%s" should not be accessed directly. Use getters and setters.', 'invoicing' ), $key ), '1.0.19' );
365
-
366
-			call_user_func( array( $this, "set_$key" ), $value );
367
-		} else {
368
-			$this->set_prop( $key, $value );
369
-		}
370
-
371
-	}
372
-
373
-	/**
24
+    /**
25
+     * ID for this object.
26
+     *
27
+     * @since 1.0.19
28
+     * @var int
29
+     */
30
+    protected $id = 0;
31
+
32
+    /**
33
+     * Core data for this object. Name value pairs (name + default value).
34
+     *
35
+     * @since 1.0.19
36
+     * @var array
37
+     */
38
+    protected $data = array();
39
+
40
+    /**
41
+     * Core data changes for this object.
42
+     *
43
+     * @since 1.0.19
44
+     * @var array
45
+     */
46
+    protected $changes = array();
47
+
48
+    /**
49
+     * This is false until the object is read from the DB.
50
+     *
51
+     * @since 1.0.19
52
+     * @var bool
53
+     */
54
+    protected $object_read = false;
55
+
56
+    /**
57
+     * This is the name of this object type.
58
+     *
59
+     * @since 1.0.19
60
+     * @var string
61
+     */
62
+    protected $object_type = 'data';
63
+
64
+    /**
65
+     * Extra data for this object. Name value pairs (name + default value).
66
+     * Used as a standard way for sub classes (like item types) to add
67
+     * additional information to an inherited class.
68
+     *
69
+     * @since 1.0.19
70
+     * @var array
71
+     */
72
+    protected $extra_data = array();
73
+
74
+    /**
75
+     * Set to _data on construct so we can track and reset data if needed.
76
+     *
77
+     * @since 1.0.19
78
+     * @var array
79
+     */
80
+    protected $default_data = array();
81
+
82
+    /**
83
+     * Contains a reference to the data store for this class.
84
+     *
85
+     * @since 1.0.19
86
+     * @var GetPaid_Data_Store
87
+     */
88
+    protected $data_store;
89
+
90
+    /**
91
+     * Stores meta in cache for future reads.
92
+     * A group must be set to to enable caching.
93
+     *
94
+     * @since 1.0.19
95
+     * @var string
96
+     */
97
+    protected $cache_group = '';
98
+
99
+    /**
100
+     * Stores the last error.
101
+     *
102
+     * @since 1.0.19
103
+     * @var string
104
+     */
105
+    public $last_error = '';
106
+
107
+    /**
108
+     * Stores additional meta data.
109
+     *
110
+     * @since 1.0.19
111
+     * @var array
112
+     */
113
+    protected $meta_data = null;
114
+
115
+    /**
116
+     * Default constructor.
117
+     *
118
+     * @param int|object|array|string $read ID to load from the DB (optional) or already queried data.
119
+     */
120
+    public function __construct( $read = 0 ) {
121
+        $this->data         = array_merge( $this->data, $this->extra_data );
122
+        $this->default_data = $this->data;
123
+    }
124
+
125
+    /**
126
+     * Only store the object ID to avoid serializing the data object instance.
127
+     *
128
+     * @return array
129
+     */
130
+    public function __sleep() {
131
+        return array( 'id' );
132
+    }
133
+
134
+    /**
135
+     * Re-run the constructor with the object ID.
136
+     *
137
+     * If the object no longer exists, remove the ID.
138
+     */
139
+    public function __wakeup() {
140
+        $this->__construct( absint( $this->id ) );
141
+
142
+        if ( ! empty( $this->last_error ) ) {
143
+            $this->set_id( 0 );
144
+        }
145
+
146
+    }
147
+
148
+    /**
149
+     * When the object is cloned, make sure meta is duplicated correctly.
150
+     *
151
+     * @since 1.0.19
152
+     */
153
+    public function __clone() {
154
+        $this->maybe_read_meta_data();
155
+        if ( ! empty( $this->meta_data ) ) {
156
+            foreach ( $this->meta_data as $array_key => $meta ) {
157
+                $this->meta_data[ $array_key ] = clone $meta;
158
+                if ( ! empty( $meta->id ) ) {
159
+                    $this->meta_data[ $array_key ]->id = null;
160
+                }
161
+            }
162
+        }
163
+    }
164
+
165
+    /**
166
+     * Get the data store.
167
+     *
168
+     * @since  1.0.19
169
+     * @return object
170
+     */
171
+    public function get_data_store() {
172
+        return $this->data_store;
173
+    }
174
+
175
+    /**
176
+     * Get the object type.
177
+     *
178
+     * @since  1.0.19
179
+     * @return string
180
+     */
181
+    public function get_object_type() {
182
+        return $this->object_type;
183
+    }
184
+
185
+    /**
186
+     * Returns the unique ID for this object.
187
+     *
188
+     * @since  1.0.19
189
+     * @return int
190
+     */
191
+    public function get_id() {
192
+        return $this->id;
193
+    }
194
+
195
+    /**
196
+     * Get form status.
197
+     *
198
+     * @since 1.0.19
199
+     * @param  string $context View or edit context.
200
+     * @return string
201
+     */
202
+    public function get_status( $context = 'view' ) {
203
+        return $this->get_prop( 'status', $context );
204
+    }
205
+
206
+    /**
207
+     * Delete an object, set the ID to 0, and return result.
208
+     *
209
+     * @since  1.0.19
210
+     * @param  bool $force_delete Should the data be deleted permanently.
211
+     * @return bool result
212
+     */
213
+    public function delete( $force_delete = false ) {
214
+        if ( $this->data_store && $this->exists() ) {
215
+            $this->data_store->delete( $this, array( 'force_delete' => $force_delete ) );
216
+            $this->set_id( 0 );
217
+            return true;
218
+        }
219
+        return false;
220
+    }
221
+
222
+    /**
223
+     * Save should create or update based on object existence.
224
+     *
225
+     * @since  1.0.19
226
+     * @return int
227
+     */
228
+    public function save() {
229
+        if ( ! $this->data_store ) {
230
+            return $this->get_id();
231
+        }
232
+
233
+        /**
234
+         * Trigger action before saving to the DB. Allows you to adjust object props before save.
235
+         *
236
+         * @param GetPaid_Data          $this The object being saved.
237
+         * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
238
+         */
239
+        do_action( 'getpaid_before_' . $this->object_type . '_object_save', $this, $this->data_store );
240
+
241
+        if ( $this->get_id() ) {
242
+            $this->data_store->update( $this );
243
+        } else {
244
+            $this->data_store->create( $this );
245
+        }
246
+
247
+        /**
248
+         * Trigger action after saving to the DB.
249
+         *
250
+         * @param GetPaid_Data          $this The object being saved.
251
+         * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
252
+         */
253
+        do_action( 'getpaid_after_' . $this->object_type . '_object_save', $this, $this->data_store );
254
+
255
+        return $this->get_id();
256
+    }
257
+
258
+    /**
259
+     * Change data to JSON format.
260
+     *
261
+     * @since  1.0.19
262
+     * @return string Data in JSON format.
263
+     */
264
+    public function __toString() {
265
+        return wp_json_encode( $this->get_data() );
266
+    }
267
+
268
+    /**
269
+     * Returns all data for this object.
270
+     *
271
+     * @since  1.0.19
272
+     * @return array
273
+     */
274
+    public function get_data() {
275
+        return array_merge( array( 'id' => $this->get_id() ), $this->data, array( 'meta_data' => $this->get_meta_data() ) );
276
+    }
277
+
278
+    /**
279
+     * Returns array of expected data keys for this object.
280
+     *
281
+     * @since   1.0.19
282
+     * @return array
283
+     */
284
+    public function get_data_keys() {
285
+        return array_keys( $this->data );
286
+    }
287
+
288
+    /**
289
+     * Returns all "extra" data keys for an object (for sub objects like item types).
290
+     *
291
+     * @since  1.0.19
292
+     * @return array
293
+     */
294
+    public function get_extra_data_keys() {
295
+        return array_keys( $this->extra_data );
296
+    }
297
+
298
+    /**
299
+     * Filter null meta values from array.
300
+     *
301
+     * @since  1.0.19
302
+     * @param mixed $meta Meta value to check.
303
+     * @return bool
304
+     */
305
+    protected function filter_null_meta( $meta ) {
306
+        return ! is_null( $meta->value );
307
+    }
308
+
309
+    /**
310
+     * Get All Meta Data.
311
+     *
312
+     * @since 1.0.19
313
+     * @return array of objects.
314
+     */
315
+    public function get_meta_data() {
316
+        $this->maybe_read_meta_data();
317
+        return array_values( array_filter( $this->meta_data, array( $this, 'filter_null_meta' ) ) );
318
+    }
319
+
320
+    /**
321
+     * Check if the key is an internal one.
322
+     *
323
+     * @since  1.0.19
324
+     * @param  string $key Key to check.
325
+     * @return bool   true if it's an internal key, false otherwise
326
+     */
327
+    protected function is_internal_meta_key( $key ) {
328
+        $internal_meta_key = ! empty( $key ) && $this->data_store && in_array( $key, $this->data_store->get_internal_meta_keys(), true );
329
+
330
+        if ( ! $internal_meta_key ) {
331
+            return false;
332
+        }
333
+
334
+        $has_setter_or_getter = is_callable( array( $this, 'set_' . $key ) ) || is_callable( array( $this, 'get_' . $key ) );
335
+
336
+        if ( ! $has_setter_or_getter ) {
337
+            return false;
338
+        }
339
+
340
+        /* translators: %s: $key Key to check */
341
+        getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Generic add/update/get meta methods should not be used for internal meta data, including "%s". Use getters and setters.', 'invoicing' ), $key ), '1.0.19' );
342
+
343
+        return true;
344
+    }
345
+
346
+    /**
347
+     * Magic method for setting data fields.
348
+     *
349
+     * This method does not update custom fields in the database.
350
+     *
351
+     * @since 1.0.19
352
+     * @access public
353
+     *
354
+     */
355
+    public function __set( $key, $value ) {
356
+
357
+        if ( 'id' == strtolower( $key ) ) {
358
+            return $this->set_id( $value );
359
+        }
360
+
361
+        if ( method_exists( $this, "set_$key" ) ) {
362
+
363
+            /* translators: %s: $key Key to set */
364
+            getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Object data such as "%s" should not be accessed directly. Use getters and setters.', 'invoicing' ), $key ), '1.0.19' );
365
+
366
+            call_user_func( array( $this, "set_$key" ), $value );
367
+        } else {
368
+            $this->set_prop( $key, $value );
369
+        }
370
+
371
+    }
372
+
373
+    /**
374 374
      * Margic method for retrieving a property.
375 375
      */
376 376
     public function __get( $key ) {
@@ -378,10 +378,10 @@  discard block
 block discarded – undo
378 378
         // Check if we have a helper method for that.
379 379
         if ( method_exists( $this, 'get_' . $key ) ) {
380 380
 
381
-			if ( 'post_type' != $key ) {
382
-				/* translators: %s: $key Key to set */
383
-				getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Object data such as "%s" should not be accessed directly. Use getters and setters.', 'invoicing' ), $key ), '1.0.19' );
384
-			}
381
+            if ( 'post_type' != $key ) {
382
+                /* translators: %s: $key Key to set */
383
+                getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Object data such as "%s" should not be accessed directly. Use getters and setters.', 'invoicing' ), $key ), '1.0.19' );
384
+            }
385 385
 
386 386
             return call_user_func( array( $this, 'get_' . $key ) );
387 387
         }
@@ -391,513 +391,513 @@  discard block
 block discarded – undo
391 391
             return $this->post->$key;
392 392
         }
393 393
 
394
-		return $this->get_prop( $key );
395
-
396
-    }
397
-
398
-	/**
399
-	 * Get Meta Data by Key.
400
-	 *
401
-	 * @since  1.0.19
402
-	 * @param  string $key Meta Key.
403
-	 * @param  bool   $single return first found meta with key, or all with $key.
404
-	 * @param  string $context What the value is for. Valid values are view and edit.
405
-	 * @return mixed
406
-	 */
407
-	public function get_meta( $key = '', $single = true, $context = 'view' ) {
408
-
409
-		// Check if this is an internal meta key.
410
-		$_key = str_replace( '_wpinv', '', $key );
411
-		$_key = str_replace( 'wpinv', '', $_key );
412
-		if ( $this->is_internal_meta_key( $key ) ) {
413
-			$function = 'get_' . $_key;
414
-
415
-			if ( is_callable( array( $this, $function ) ) ) {
416
-				return $this->{$function}();
417
-			}
418
-		}
419
-
420
-		// Read the meta data if not yet read.
421
-		$this->maybe_read_meta_data();
422
-		$meta_data  = $this->get_meta_data();
423
-		$array_keys = array_keys( wp_list_pluck( $meta_data, 'key' ), $key, true );
424
-		$value      = $single ? '' : array();
425
-
426
-		if ( ! empty( $array_keys ) ) {
427
-			// We don't use the $this->meta_data property directly here because we don't want meta with a null value (i.e. meta which has been deleted via $this->delete_meta_data()).
428
-			if ( $single ) {
429
-				$value = $meta_data[ current( $array_keys ) ]->value;
430
-			} else {
431
-				$value = array_intersect_key( $meta_data, array_flip( $array_keys ) );
432
-			}
433
-		}
434
-
435
-		if ( 'view' === $context ) {
436
-			$value = apply_filters( $this->get_hook_prefix() . $key, $value, $this );
437
-		}
438
-
439
-		return $value;
440
-	}
441
-
442
-	/**
443
-	 * See if meta data exists, since get_meta always returns a '' or array().
444
-	 *
445
-	 * @since  1.0.19
446
-	 * @param  string $key Meta Key.
447
-	 * @return boolean
448
-	 */
449
-	public function meta_exists( $key = '' ) {
450
-		$this->maybe_read_meta_data();
451
-		$array_keys = wp_list_pluck( $this->get_meta_data(), 'key' );
452
-		return in_array( $key, $array_keys, true );
453
-	}
454
-
455
-	/**
456
-	 * Set all meta data from array.
457
-	 *
458
-	 * @since 1.0.19
459
-	 * @param array $data Key/Value pairs.
460
-	 */
461
-	public function set_meta_data( $data ) {
462
-		if ( ! empty( $data ) && is_array( $data ) ) {
463
-			$this->maybe_read_meta_data();
464
-			foreach ( $data as $meta ) {
465
-				$meta = (array) $meta;
466
-				if ( isset( $meta['key'], $meta['value'], $meta['id'] ) ) {
467
-					$this->meta_data[] = new GetPaid_Meta_Data(
468
-						array(
469
-							'id'    => $meta['id'],
470
-							'key'   => $meta['key'],
471
-							'value' => $meta['value'],
472
-						)
473
-					);
474
-				}
475
-			}
476
-		}
477
-	}
478
-
479
-	/**
480
-	 * Add meta data.
481
-	 *
482
-	 * @since 1.0.19
483
-	 *
484
-	 * @param string       $key Meta key.
485
-	 * @param string|array $value Meta value.
486
-	 * @param bool         $unique Should this be a unique key?.
487
-	 */
488
-	public function add_meta_data( $key, $value, $unique = false ) {
489
-		if ( $this->is_internal_meta_key( $key ) ) {
490
-			$function = 'set_' . $key;
491
-
492
-			if ( is_callable( array( $this, $function ) ) ) {
493
-				return $this->{$function}( $value );
494
-			}
495
-		}
496
-
497
-		$this->maybe_read_meta_data();
498
-		if ( $unique ) {
499
-			$this->delete_meta_data( $key );
500
-		}
501
-		$this->meta_data[] = new GetPaid_Meta_Data(
502
-			array(
503
-				'key'   => $key,
504
-				'value' => $value,
505
-			)
506
-		);
507
-
508
-		$this->save();
509
-	}
510
-
511
-	/**
512
-	 * Update meta data by key or ID, if provided.
513
-	 *
514
-	 * @since  1.0.19
515
-	 *
516
-	 * @param  string       $key Meta key.
517
-	 * @param  string|array $value Meta value.
518
-	 * @param  int          $meta_id Meta ID.
519
-	 */
520
-	public function update_meta_data( $key, $value, $meta_id = 0 ) {
521
-		if ( $this->is_internal_meta_key( $key ) ) {
522
-			$function = 'set_' . $key;
523
-
524
-			if ( is_callable( array( $this, $function ) ) ) {
525
-				return $this->{$function}( $value );
526
-			}
527
-		}
528
-
529
-		$this->maybe_read_meta_data();
530
-
531
-		$array_key = false;
532
-
533
-		if ( $meta_id ) {
534
-			$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), $meta_id, true );
535
-			$array_key  = $array_keys ? current( $array_keys ) : false;
536
-		} else {
537
-			// Find matches by key.
538
-			$matches = array();
539
-			foreach ( $this->meta_data as $meta_data_array_key => $meta ) {
540
-				if ( $meta->key === $key ) {
541
-					$matches[] = $meta_data_array_key;
542
-				}
543
-			}
544
-
545
-			if ( ! empty( $matches ) ) {
546
-				// Set matches to null so only one key gets the new value.
547
-				foreach ( $matches as $meta_data_array_key ) {
548
-					$this->meta_data[ $meta_data_array_key ]->value = null;
549
-				}
550
-				$array_key = current( $matches );
551
-			}
552
-		}
553
-
554
-		if ( false !== $array_key ) {
555
-			$meta        = $this->meta_data[ $array_key ];
556
-			$meta->key   = $key;
557
-			$meta->value = $value;
558
-		} else {
559
-			$this->add_meta_data( $key, $value, true );
560
-		}
561
-	}
562
-
563
-	/**
564
-	 * Delete meta data.
565
-	 *
566
-	 * @since 1.0.19
567
-	 * @param string $key Meta key.
568
-	 */
569
-	public function delete_meta_data( $key ) {
570
-		$this->maybe_read_meta_data();
571
-		$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'key' ), $key, true );
572
-
573
-		if ( $array_keys ) {
574
-			foreach ( $array_keys as $array_key ) {
575
-				$this->meta_data[ $array_key ]->value = null;
576
-			}
577
-		}
578
-	}
579
-
580
-	/**
581
-	 * Delete meta data.
582
-	 *
583
-	 * @since 1.0.19
584
-	 * @param int $mid Meta ID.
585
-	 */
586
-	public function delete_meta_data_by_mid( $mid ) {
587
-		$this->maybe_read_meta_data();
588
-		$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), (int) $mid, true );
589
-
590
-		if ( $array_keys ) {
591
-			foreach ( $array_keys as $array_key ) {
592
-				$this->meta_data[ $array_key ]->value = null;
593
-			}
594
-		}
595
-	}
596
-
597
-	/**
598
-	 * Read meta data if null.
599
-	 *
600
-	 * @since 1.0.19
601
-	 */
602
-	protected function maybe_read_meta_data() {
603
-		if ( is_null( $this->meta_data ) ) {
604
-			$this->read_meta_data();
605
-		}
606
-	}
607
-
608
-	/**
609
-	 * Read Meta Data from the database. Ignore any internal properties.
610
-	 * Uses it's own caches because get_metadata does not provide meta_ids.
611
-	 *
612
-	 * @since 1.0.19
613
-	 * @param bool $force_read True to force a new DB read (and update cache).
614
-	 */
615
-	public function read_meta_data( $force_read = false ) {
616
-
617
-		// Reset meta data.
618
-		$this->meta_data = array();
619
-
620
-		// Maybe abort early.
621
-		if ( ! $this->get_id() || ! $this->data_store ) {
622
-			return;
623
-		}
624
-
625
-		// Only read from cache if the cache key is set.
626
-		$cache_key = null;
627
-		if ( ! $force_read && ! empty( $this->cache_group ) ) {
628
-			$cache_key     = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
629
-			$raw_meta_data = wp_cache_get( $cache_key, $this->cache_group );
630
-		}
631
-
632
-		// Should we force read?
633
-		if ( empty( $raw_meta_data ) ) {
634
-			$raw_meta_data = $this->data_store->read_meta( $this );
635
-
636
-			if ( ! empty( $cache_key ) ) {
637
-				wp_cache_set( $cache_key, $raw_meta_data, $this->cache_group );
638
-			}
394
+        return $this->get_prop( $key );
395
+
396
+    }
397
+
398
+    /**
399
+     * Get Meta Data by Key.
400
+     *
401
+     * @since  1.0.19
402
+     * @param  string $key Meta Key.
403
+     * @param  bool   $single return first found meta with key, or all with $key.
404
+     * @param  string $context What the value is for. Valid values are view and edit.
405
+     * @return mixed
406
+     */
407
+    public function get_meta( $key = '', $single = true, $context = 'view' ) {
408
+
409
+        // Check if this is an internal meta key.
410
+        $_key = str_replace( '_wpinv', '', $key );
411
+        $_key = str_replace( 'wpinv', '', $_key );
412
+        if ( $this->is_internal_meta_key( $key ) ) {
413
+            $function = 'get_' . $_key;
414
+
415
+            if ( is_callable( array( $this, $function ) ) ) {
416
+                return $this->{$function}();
417
+            }
418
+        }
419
+
420
+        // Read the meta data if not yet read.
421
+        $this->maybe_read_meta_data();
422
+        $meta_data  = $this->get_meta_data();
423
+        $array_keys = array_keys( wp_list_pluck( $meta_data, 'key' ), $key, true );
424
+        $value      = $single ? '' : array();
425
+
426
+        if ( ! empty( $array_keys ) ) {
427
+            // We don't use the $this->meta_data property directly here because we don't want meta with a null value (i.e. meta which has been deleted via $this->delete_meta_data()).
428
+            if ( $single ) {
429
+                $value = $meta_data[ current( $array_keys ) ]->value;
430
+            } else {
431
+                $value = array_intersect_key( $meta_data, array_flip( $array_keys ) );
432
+            }
433
+        }
434
+
435
+        if ( 'view' === $context ) {
436
+            $value = apply_filters( $this->get_hook_prefix() . $key, $value, $this );
437
+        }
438
+
439
+        return $value;
440
+    }
441
+
442
+    /**
443
+     * See if meta data exists, since get_meta always returns a '' or array().
444
+     *
445
+     * @since  1.0.19
446
+     * @param  string $key Meta Key.
447
+     * @return boolean
448
+     */
449
+    public function meta_exists( $key = '' ) {
450
+        $this->maybe_read_meta_data();
451
+        $array_keys = wp_list_pluck( $this->get_meta_data(), 'key' );
452
+        return in_array( $key, $array_keys, true );
453
+    }
454
+
455
+    /**
456
+     * Set all meta data from array.
457
+     *
458
+     * @since 1.0.19
459
+     * @param array $data Key/Value pairs.
460
+     */
461
+    public function set_meta_data( $data ) {
462
+        if ( ! empty( $data ) && is_array( $data ) ) {
463
+            $this->maybe_read_meta_data();
464
+            foreach ( $data as $meta ) {
465
+                $meta = (array) $meta;
466
+                if ( isset( $meta['key'], $meta['value'], $meta['id'] ) ) {
467
+                    $this->meta_data[] = new GetPaid_Meta_Data(
468
+                        array(
469
+                            'id'    => $meta['id'],
470
+                            'key'   => $meta['key'],
471
+                            'value' => $meta['value'],
472
+                        )
473
+                    );
474
+                }
475
+            }
476
+        }
477
+    }
478
+
479
+    /**
480
+     * Add meta data.
481
+     *
482
+     * @since 1.0.19
483
+     *
484
+     * @param string       $key Meta key.
485
+     * @param string|array $value Meta value.
486
+     * @param bool         $unique Should this be a unique key?.
487
+     */
488
+    public function add_meta_data( $key, $value, $unique = false ) {
489
+        if ( $this->is_internal_meta_key( $key ) ) {
490
+            $function = 'set_' . $key;
491
+
492
+            if ( is_callable( array( $this, $function ) ) ) {
493
+                return $this->{$function}( $value );
494
+            }
495
+        }
496
+
497
+        $this->maybe_read_meta_data();
498
+        if ( $unique ) {
499
+            $this->delete_meta_data( $key );
500
+        }
501
+        $this->meta_data[] = new GetPaid_Meta_Data(
502
+            array(
503
+                'key'   => $key,
504
+                'value' => $value,
505
+            )
506
+        );
507
+
508
+        $this->save();
509
+    }
510
+
511
+    /**
512
+     * Update meta data by key or ID, if provided.
513
+     *
514
+     * @since  1.0.19
515
+     *
516
+     * @param  string       $key Meta key.
517
+     * @param  string|array $value Meta value.
518
+     * @param  int          $meta_id Meta ID.
519
+     */
520
+    public function update_meta_data( $key, $value, $meta_id = 0 ) {
521
+        if ( $this->is_internal_meta_key( $key ) ) {
522
+            $function = 'set_' . $key;
523
+
524
+            if ( is_callable( array( $this, $function ) ) ) {
525
+                return $this->{$function}( $value );
526
+            }
527
+        }
528
+
529
+        $this->maybe_read_meta_data();
530
+
531
+        $array_key = false;
532
+
533
+        if ( $meta_id ) {
534
+            $array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), $meta_id, true );
535
+            $array_key  = $array_keys ? current( $array_keys ) : false;
536
+        } else {
537
+            // Find matches by key.
538
+            $matches = array();
539
+            foreach ( $this->meta_data as $meta_data_array_key => $meta ) {
540
+                if ( $meta->key === $key ) {
541
+                    $matches[] = $meta_data_array_key;
542
+                }
543
+            }
544
+
545
+            if ( ! empty( $matches ) ) {
546
+                // Set matches to null so only one key gets the new value.
547
+                foreach ( $matches as $meta_data_array_key ) {
548
+                    $this->meta_data[ $meta_data_array_key ]->value = null;
549
+                }
550
+                $array_key = current( $matches );
551
+            }
552
+        }
553
+
554
+        if ( false !== $array_key ) {
555
+            $meta        = $this->meta_data[ $array_key ];
556
+            $meta->key   = $key;
557
+            $meta->value = $value;
558
+        } else {
559
+            $this->add_meta_data( $key, $value, true );
560
+        }
561
+    }
562
+
563
+    /**
564
+     * Delete meta data.
565
+     *
566
+     * @since 1.0.19
567
+     * @param string $key Meta key.
568
+     */
569
+    public function delete_meta_data( $key ) {
570
+        $this->maybe_read_meta_data();
571
+        $array_keys = array_keys( wp_list_pluck( $this->meta_data, 'key' ), $key, true );
572
+
573
+        if ( $array_keys ) {
574
+            foreach ( $array_keys as $array_key ) {
575
+                $this->meta_data[ $array_key ]->value = null;
576
+            }
577
+        }
578
+    }
579
+
580
+    /**
581
+     * Delete meta data.
582
+     *
583
+     * @since 1.0.19
584
+     * @param int $mid Meta ID.
585
+     */
586
+    public function delete_meta_data_by_mid( $mid ) {
587
+        $this->maybe_read_meta_data();
588
+        $array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), (int) $mid, true );
589
+
590
+        if ( $array_keys ) {
591
+            foreach ( $array_keys as $array_key ) {
592
+                $this->meta_data[ $array_key ]->value = null;
593
+            }
594
+        }
595
+    }
596
+
597
+    /**
598
+     * Read meta data if null.
599
+     *
600
+     * @since 1.0.19
601
+     */
602
+    protected function maybe_read_meta_data() {
603
+        if ( is_null( $this->meta_data ) ) {
604
+            $this->read_meta_data();
605
+        }
606
+    }
607
+
608
+    /**
609
+     * Read Meta Data from the database. Ignore any internal properties.
610
+     * Uses it's own caches because get_metadata does not provide meta_ids.
611
+     *
612
+     * @since 1.0.19
613
+     * @param bool $force_read True to force a new DB read (and update cache).
614
+     */
615
+    public function read_meta_data( $force_read = false ) {
616
+
617
+        // Reset meta data.
618
+        $this->meta_data = array();
619
+
620
+        // Maybe abort early.
621
+        if ( ! $this->get_id() || ! $this->data_store ) {
622
+            return;
623
+        }
624
+
625
+        // Only read from cache if the cache key is set.
626
+        $cache_key = null;
627
+        if ( ! $force_read && ! empty( $this->cache_group ) ) {
628
+            $cache_key     = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
629
+            $raw_meta_data = wp_cache_get( $cache_key, $this->cache_group );
630
+        }
631
+
632
+        // Should we force read?
633
+        if ( empty( $raw_meta_data ) ) {
634
+            $raw_meta_data = $this->data_store->read_meta( $this );
635
+
636
+            if ( ! empty( $cache_key ) ) {
637
+                wp_cache_set( $cache_key, $raw_meta_data, $this->cache_group );
638
+            }
639 639
 }
640 640
 
641
-		// Set meta data.
642
-		if ( is_array( $raw_meta_data ) ) {
643
-
644
-			foreach ( $raw_meta_data as $meta ) {
645
-				$this->meta_data[] = new GetPaid_Meta_Data(
646
-					array(
647
-						'id'    => (int) $meta->meta_id,
648
-						'key'   => $meta->meta_key,
649
-						'value' => maybe_unserialize( $meta->meta_value ),
650
-					)
651
-				);
652
-			}
641
+        // Set meta data.
642
+        if ( is_array( $raw_meta_data ) ) {
643
+
644
+            foreach ( $raw_meta_data as $meta ) {
645
+                $this->meta_data[] = new GetPaid_Meta_Data(
646
+                    array(
647
+                        'id'    => (int) $meta->meta_id,
648
+                        'key'   => $meta->meta_key,
649
+                        'value' => maybe_unserialize( $meta->meta_value ),
650
+                    )
651
+                );
652
+            }
653 653
 }
654 654
 
655
-	}
656
-
657
-	/**
658
-	 * Update Meta Data in the database.
659
-	 *
660
-	 * @since 1.0.19
661
-	 */
662
-	public function save_meta_data() {
663
-		if ( ! $this->data_store || is_null( $this->meta_data ) ) {
664
-			return;
665
-		}
666
-		foreach ( $this->meta_data as $array_key => $meta ) {
667
-			if ( is_null( $meta->value ) ) {
668
-				if ( ! empty( $meta->id ) ) {
669
-					$this->data_store->delete_meta( $this, $meta );
670
-					unset( $this->meta_data[ $array_key ] );
671
-				}
672
-			} elseif ( empty( $meta->id ) ) {
673
-				$meta->id = $this->data_store->add_meta( $this, $meta );
674
-				$meta->apply_changes();
675
-			} else {
676
-				if ( $meta->get_changes() ) {
677
-					$this->data_store->update_meta( $this, $meta );
678
-					$meta->apply_changes();
679
-				}
680
-			}
681
-		}
682
-		if ( ! empty( $this->cache_group ) ) {
683
-			$cache_key = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
684
-			wp_cache_delete( $cache_key, $this->cache_group );
685
-		}
686
-	}
687
-
688
-	/**
689
-	 * Set ID.
690
-	 *
691
-	 * @since 1.0.19
692
-	 * @param int $id ID.
693
-	 */
694
-	public function set_id( $id ) {
695
-		$this->id = absint( $id );
696
-	}
697
-
698
-	/**
699
-	 * Sets item status.
700
-	 *
701
-	 * @since 1.0.19
702
-	 * @param string $status New status.
703
-	 * @return array details of change.
704
-	 */
705
-	public function set_status( $status ) {
655
+    }
656
+
657
+    /**
658
+     * Update Meta Data in the database.
659
+     *
660
+     * @since 1.0.19
661
+     */
662
+    public function save_meta_data() {
663
+        if ( ! $this->data_store || is_null( $this->meta_data ) ) {
664
+            return;
665
+        }
666
+        foreach ( $this->meta_data as $array_key => $meta ) {
667
+            if ( is_null( $meta->value ) ) {
668
+                if ( ! empty( $meta->id ) ) {
669
+                    $this->data_store->delete_meta( $this, $meta );
670
+                    unset( $this->meta_data[ $array_key ] );
671
+                }
672
+            } elseif ( empty( $meta->id ) ) {
673
+                $meta->id = $this->data_store->add_meta( $this, $meta );
674
+                $meta->apply_changes();
675
+            } else {
676
+                if ( $meta->get_changes() ) {
677
+                    $this->data_store->update_meta( $this, $meta );
678
+                    $meta->apply_changes();
679
+                }
680
+            }
681
+        }
682
+        if ( ! empty( $this->cache_group ) ) {
683
+            $cache_key = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
684
+            wp_cache_delete( $cache_key, $this->cache_group );
685
+        }
686
+    }
687
+
688
+    /**
689
+     * Set ID.
690
+     *
691
+     * @since 1.0.19
692
+     * @param int $id ID.
693
+     */
694
+    public function set_id( $id ) {
695
+        $this->id = absint( $id );
696
+    }
697
+
698
+    /**
699
+     * Sets item status.
700
+     *
701
+     * @since 1.0.19
702
+     * @param string $status New status.
703
+     * @return array details of change.
704
+     */
705
+    public function set_status( $status ) {
706 706
         $old_status = $this->get_status();
707 707
 
708
-		$this->set_prop( 'status', $status );
709
-
710
-		return array(
711
-			'from' => $old_status,
712
-			'to'   => $status,
713
-		);
714
-    }
715
-
716
-	/**
717
-	 * Set all props to default values.
718
-	 *
719
-	 * @since 1.0.19
720
-	 */
721
-	public function set_defaults() {
722
-		$this->data    = $this->default_data;
723
-		$this->changes = array();
724
-		$this->set_object_read( false );
725
-	}
726
-
727
-	/**
728
-	 * Set object read property.
729
-	 *
730
-	 * @since 1.0.19
731
-	 * @param boolean $read Should read?.
732
-	 */
733
-	public function set_object_read( $read = true ) {
734
-		$this->object_read = (bool) $read;
735
-	}
736
-
737
-	/**
738
-	 * Get object read property.
739
-	 *
740
-	 * @since  1.0.19
741
-	 * @return boolean
742
-	 */
743
-	public function get_object_read() {
744
-		return (bool) $this->object_read;
745
-	}
746
-
747
-	/**
748
-	 * Set a collection of props in one go, collect any errors, and return the result.
749
-	 * Only sets using public methods.
750
-	 *
751
-	 * @since  1.0.19
752
-	 *
753
-	 * @param array  $props Key value pairs to set. Key is the prop and should map to a setter function name.
754
-	 * @param string $context In what context to run this.
755
-	 *
756
-	 * @return bool|WP_Error
757
-	 */
758
-	public function set_props( $props, $context = 'set' ) {
759
-		$errors = false;
760
-
761
-		$props = wp_unslash( $props );
762
-		foreach ( $props as $prop => $value ) {
763
-			try {
764
-				/**
765
-				 * Checks if the prop being set is allowed, and the value is not null.
766
-				 */
767
-				if ( is_null( $value ) || in_array( $prop, array( 'prop', 'date_prop', 'meta_data' ), true ) ) {
768
-					continue;
769
-				}
770
-				$setter = "set_$prop";
771
-
772
-				if ( is_callable( array( $this, $setter ) ) ) {
773
-					$this->{$setter}( $value );
774
-				}
775
-			} catch ( Exception $e ) {
776
-				if ( ! $errors ) {
777
-					$errors = new WP_Error();
778
-				}
779
-				$errors->add( $e->getCode(), $e->getMessage() );
780
-				$this->last_error = $e->getMessage();
781
-			}
782
-		}
783
-
784
-		return $errors && count( $errors->get_error_codes() ) ? $errors : true;
785
-	}
786
-
787
-	/**
788
-	 * Sets a prop for a setter method.
789
-	 *
790
-	 * This stores changes in a special array so we can track what needs saving
791
-	 * the the DB later.
792
-	 *
793
-	 * @since 1.0.19
794
-	 * @param string $prop Name of prop to set.
795
-	 * @param mixed  $value Value of the prop.
796
-	 */
797
-	protected function set_prop( $prop, $value ) {
798
-		if ( array_key_exists( $prop, $this->data ) ) {
799
-			if ( true === $this->object_read ) {
800
-				if ( $value !== $this->data[ $prop ] || array_key_exists( $prop, $this->changes ) ) {
801
-					$this->changes[ $prop ] = $value;
802
-				}
803
-			} else {
804
-				$this->data[ $prop ] = $value;
805
-			}
806
-		}
807
-	}
808
-
809
-	/**
810
-	 * Return data changes only.
811
-	 *
812
-	 * @since 1.0.19
813
-	 * @return array
814
-	 */
815
-	public function get_changes() {
816
-		return $this->changes;
817
-	}
818
-
819
-	/**
820
-	 * Merge changes with data and clear.
821
-	 *
822
-	 * @since 1.0.19
823
-	 */
824
-	public function apply_changes() {
825
-		$this->data    = array_replace( $this->data, $this->changes );
826
-		$this->changes = array();
827
-	}
828
-
829
-	/**
830
-	 * Prefix for action and filter hooks on data.
831
-	 *
832
-	 * @since  1.0.19
833
-	 * @return string
834
-	 */
835
-	protected function get_hook_prefix() {
836
-		return 'wpinv_get_' . $this->object_type . '_';
837
-	}
838
-
839
-	/**
840
-	 * Gets a prop for a getter method.
841
-	 *
842
-	 * Gets the value from either current pending changes, or the data itself.
843
-	 * Context controls what happens to the value before it's returned.
844
-	 *
845
-	 * @since  1.0.19
846
-	 * @param  string $prop Name of prop to get.
847
-	 * @param  string $context What the value is for. Valid values are view and edit.
848
-	 * @return mixed
849
-	 */
850
-	protected function get_prop( $prop, $context = 'view' ) {
851
-		$value = null;
852
-
853
-		if ( array_key_exists( $prop, $this->data ) ) {
854
-			$value = array_key_exists( $prop, $this->changes ) ? $this->changes[ $prop ] : $this->data[ $prop ];
855
-
856
-			if ( 'view' === $context ) {
857
-				$value = apply_filters( $this->get_hook_prefix() . $prop, $value, $this );
858
-			}
859
-		}
860
-
861
-		return $value;
862
-	}
863
-
864
-	/**
865
-	 * Sets a date prop whilst handling formatting and datetime objects.
866
-	 *
867
-	 * @since 1.0.19
868
-	 * @param string         $prop Name of prop to set.
869
-	 * @param string|integer $value Value of the prop.
870
-	 */
871
-	protected function set_date_prop( $prop, $value ) {
872
-
873
-		if ( empty( $value ) ) {
874
-			$this->set_prop( $prop, null );
875
-			return;
876
-		}
877
-		$this->set_prop( $prop, $value );
878
-
879
-	}
880
-
881
-	/**
882
-	 * When invalid data is found, throw an exception unless reading from the DB.
883
-	 *
884
-	 * @since 1.0.19
885
-	 * @param string $code             Error code.
886
-	 * @param string $message          Error message.
887
-	 */
888
-	protected function error( $code, $message ) {
889
-		$this->last_error = $message;
890
-	}
891
-
892
-	/**
893
-	 * Checks if the object is saved in the database
894
-	 *
895
-	 * @since 1.0.19
896
-	 * @return bool
897
-	 */
898
-	public function exists() {
899
-		$id = $this->get_id();
900
-		return ! empty( $id );
901
-	}
708
+        $this->set_prop( 'status', $status );
709
+
710
+        return array(
711
+            'from' => $old_status,
712
+            'to'   => $status,
713
+        );
714
+    }
715
+
716
+    /**
717
+     * Set all props to default values.
718
+     *
719
+     * @since 1.0.19
720
+     */
721
+    public function set_defaults() {
722
+        $this->data    = $this->default_data;
723
+        $this->changes = array();
724
+        $this->set_object_read( false );
725
+    }
726
+
727
+    /**
728
+     * Set object read property.
729
+     *
730
+     * @since 1.0.19
731
+     * @param boolean $read Should read?.
732
+     */
733
+    public function set_object_read( $read = true ) {
734
+        $this->object_read = (bool) $read;
735
+    }
736
+
737
+    /**
738
+     * Get object read property.
739
+     *
740
+     * @since  1.0.19
741
+     * @return boolean
742
+     */
743
+    public function get_object_read() {
744
+        return (bool) $this->object_read;
745
+    }
746
+
747
+    /**
748
+     * Set a collection of props in one go, collect any errors, and return the result.
749
+     * Only sets using public methods.
750
+     *
751
+     * @since  1.0.19
752
+     *
753
+     * @param array  $props Key value pairs to set. Key is the prop and should map to a setter function name.
754
+     * @param string $context In what context to run this.
755
+     *
756
+     * @return bool|WP_Error
757
+     */
758
+    public function set_props( $props, $context = 'set' ) {
759
+        $errors = false;
760
+
761
+        $props = wp_unslash( $props );
762
+        foreach ( $props as $prop => $value ) {
763
+            try {
764
+                /**
765
+                 * Checks if the prop being set is allowed, and the value is not null.
766
+                 */
767
+                if ( is_null( $value ) || in_array( $prop, array( 'prop', 'date_prop', 'meta_data' ), true ) ) {
768
+                    continue;
769
+                }
770
+                $setter = "set_$prop";
771
+
772
+                if ( is_callable( array( $this, $setter ) ) ) {
773
+                    $this->{$setter}( $value );
774
+                }
775
+            } catch ( Exception $e ) {
776
+                if ( ! $errors ) {
777
+                    $errors = new WP_Error();
778
+                }
779
+                $errors->add( $e->getCode(), $e->getMessage() );
780
+                $this->last_error = $e->getMessage();
781
+            }
782
+        }
783
+
784
+        return $errors && count( $errors->get_error_codes() ) ? $errors : true;
785
+    }
786
+
787
+    /**
788
+     * Sets a prop for a setter method.
789
+     *
790
+     * This stores changes in a special array so we can track what needs saving
791
+     * the the DB later.
792
+     *
793
+     * @since 1.0.19
794
+     * @param string $prop Name of prop to set.
795
+     * @param mixed  $value Value of the prop.
796
+     */
797
+    protected function set_prop( $prop, $value ) {
798
+        if ( array_key_exists( $prop, $this->data ) ) {
799
+            if ( true === $this->object_read ) {
800
+                if ( $value !== $this->data[ $prop ] || array_key_exists( $prop, $this->changes ) ) {
801
+                    $this->changes[ $prop ] = $value;
802
+                }
803
+            } else {
804
+                $this->data[ $prop ] = $value;
805
+            }
806
+        }
807
+    }
808
+
809
+    /**
810
+     * Return data changes only.
811
+     *
812
+     * @since 1.0.19
813
+     * @return array
814
+     */
815
+    public function get_changes() {
816
+        return $this->changes;
817
+    }
818
+
819
+    /**
820
+     * Merge changes with data and clear.
821
+     *
822
+     * @since 1.0.19
823
+     */
824
+    public function apply_changes() {
825
+        $this->data    = array_replace( $this->data, $this->changes );
826
+        $this->changes = array();
827
+    }
828
+
829
+    /**
830
+     * Prefix for action and filter hooks on data.
831
+     *
832
+     * @since  1.0.19
833
+     * @return string
834
+     */
835
+    protected function get_hook_prefix() {
836
+        return 'wpinv_get_' . $this->object_type . '_';
837
+    }
838
+
839
+    /**
840
+     * Gets a prop for a getter method.
841
+     *
842
+     * Gets the value from either current pending changes, or the data itself.
843
+     * Context controls what happens to the value before it's returned.
844
+     *
845
+     * @since  1.0.19
846
+     * @param  string $prop Name of prop to get.
847
+     * @param  string $context What the value is for. Valid values are view and edit.
848
+     * @return mixed
849
+     */
850
+    protected function get_prop( $prop, $context = 'view' ) {
851
+        $value = null;
852
+
853
+        if ( array_key_exists( $prop, $this->data ) ) {
854
+            $value = array_key_exists( $prop, $this->changes ) ? $this->changes[ $prop ] : $this->data[ $prop ];
855
+
856
+            if ( 'view' === $context ) {
857
+                $value = apply_filters( $this->get_hook_prefix() . $prop, $value, $this );
858
+            }
859
+        }
860
+
861
+        return $value;
862
+    }
863
+
864
+    /**
865
+     * Sets a date prop whilst handling formatting and datetime objects.
866
+     *
867
+     * @since 1.0.19
868
+     * @param string         $prop Name of prop to set.
869
+     * @param string|integer $value Value of the prop.
870
+     */
871
+    protected function set_date_prop( $prop, $value ) {
872
+
873
+        if ( empty( $value ) ) {
874
+            $this->set_prop( $prop, null );
875
+            return;
876
+        }
877
+        $this->set_prop( $prop, $value );
878
+
879
+    }
880
+
881
+    /**
882
+     * When invalid data is found, throw an exception unless reading from the DB.
883
+     *
884
+     * @since 1.0.19
885
+     * @param string $code             Error code.
886
+     * @param string $message          Error message.
887
+     */
888
+    protected function error( $code, $message ) {
889
+        $this->last_error = $message;
890
+    }
891
+
892
+    /**
893
+     * Checks if the object is saved in the database
894
+     *
895
+     * @since 1.0.19
896
+     * @return bool
897
+     */
898
+    public function exists() {
899
+        $id = $this->get_id();
900
+        return ! empty( $id );
901
+    }
902 902
 
903 903
 }
Please login to merge, or discard this patch.
Spacing   +162 added lines, -162 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
  *
9 9
  */
10 10
 
11
-if ( ! defined( 'ABSPATH' ) ) {
11
+if (!defined('ABSPATH')) {
12 12
 	exit;
13 13
 }
14 14
 
@@ -117,8 +117,8 @@  discard block
 block discarded – undo
117 117
 	 *
118 118
 	 * @param int|object|array|string $read ID to load from the DB (optional) or already queried data.
119 119
 	 */
120
-	public function __construct( $read = 0 ) {
121
-		$this->data         = array_merge( $this->data, $this->extra_data );
120
+	public function __construct($read = 0) {
121
+		$this->data         = array_merge($this->data, $this->extra_data);
122 122
 		$this->default_data = $this->data;
123 123
 	}
124 124
 
@@ -128,7 +128,7 @@  discard block
 block discarded – undo
128 128
 	 * @return array
129 129
 	 */
130 130
 	public function __sleep() {
131
-		return array( 'id' );
131
+		return array('id');
132 132
 	}
133 133
 
134 134
 	/**
@@ -137,10 +137,10 @@  discard block
 block discarded – undo
137 137
 	 * If the object no longer exists, remove the ID.
138 138
 	 */
139 139
 	public function __wakeup() {
140
-		$this->__construct( absint( $this->id ) );
140
+		$this->__construct(absint($this->id));
141 141
 
142
-		if ( ! empty( $this->last_error ) ) {
143
-			$this->set_id( 0 );
142
+		if (!empty($this->last_error)) {
143
+			$this->set_id(0);
144 144
 		}
145 145
 
146 146
 	}
@@ -152,11 +152,11 @@  discard block
 block discarded – undo
152 152
 	 */
153 153
 	public function __clone() {
154 154
 		$this->maybe_read_meta_data();
155
-		if ( ! empty( $this->meta_data ) ) {
156
-			foreach ( $this->meta_data as $array_key => $meta ) {
157
-				$this->meta_data[ $array_key ] = clone $meta;
158
-				if ( ! empty( $meta->id ) ) {
159
-					$this->meta_data[ $array_key ]->id = null;
155
+		if (!empty($this->meta_data)) {
156
+			foreach ($this->meta_data as $array_key => $meta) {
157
+				$this->meta_data[$array_key] = clone $meta;
158
+				if (!empty($meta->id)) {
159
+					$this->meta_data[$array_key]->id = null;
160 160
 				}
161 161
 			}
162 162
 		}
@@ -199,8 +199,8 @@  discard block
 block discarded – undo
199 199
 	 * @param  string $context View or edit context.
200 200
 	 * @return string
201 201
 	 */
202
-	public function get_status( $context = 'view' ) {
203
-		return $this->get_prop( 'status', $context );
202
+	public function get_status($context = 'view') {
203
+		return $this->get_prop('status', $context);
204 204
     }
205 205
 
206 206
 	/**
@@ -210,10 +210,10 @@  discard block
 block discarded – undo
210 210
 	 * @param  bool $force_delete Should the data be deleted permanently.
211 211
 	 * @return bool result
212 212
 	 */
213
-	public function delete( $force_delete = false ) {
214
-		if ( $this->data_store && $this->exists() ) {
215
-			$this->data_store->delete( $this, array( 'force_delete' => $force_delete ) );
216
-			$this->set_id( 0 );
213
+	public function delete($force_delete = false) {
214
+		if ($this->data_store && $this->exists()) {
215
+			$this->data_store->delete($this, array('force_delete' => $force_delete));
216
+			$this->set_id(0);
217 217
 			return true;
218 218
 		}
219 219
 		return false;
@@ -226,7 +226,7 @@  discard block
 block discarded – undo
226 226
 	 * @return int
227 227
 	 */
228 228
 	public function save() {
229
-		if ( ! $this->data_store ) {
229
+		if (!$this->data_store) {
230 230
 			return $this->get_id();
231 231
 		}
232 232
 
@@ -236,12 +236,12 @@  discard block
 block discarded – undo
236 236
 		 * @param GetPaid_Data          $this The object being saved.
237 237
 		 * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
238 238
 		 */
239
-		do_action( 'getpaid_before_' . $this->object_type . '_object_save', $this, $this->data_store );
239
+		do_action('getpaid_before_' . $this->object_type . '_object_save', $this, $this->data_store);
240 240
 
241
-		if ( $this->get_id() ) {
242
-			$this->data_store->update( $this );
241
+		if ($this->get_id()) {
242
+			$this->data_store->update($this);
243 243
 		} else {
244
-			$this->data_store->create( $this );
244
+			$this->data_store->create($this);
245 245
 		}
246 246
 
247 247
 		/**
@@ -250,7 +250,7 @@  discard block
 block discarded – undo
250 250
 		 * @param GetPaid_Data          $this The object being saved.
251 251
 		 * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
252 252
 		 */
253
-		do_action( 'getpaid_after_' . $this->object_type . '_object_save', $this, $this->data_store );
253
+		do_action('getpaid_after_' . $this->object_type . '_object_save', $this, $this->data_store);
254 254
 
255 255
 		return $this->get_id();
256 256
 	}
@@ -262,7 +262,7 @@  discard block
 block discarded – undo
262 262
 	 * @return string Data in JSON format.
263 263
 	 */
264 264
 	public function __toString() {
265
-		return wp_json_encode( $this->get_data() );
265
+		return wp_json_encode($this->get_data());
266 266
 	}
267 267
 
268 268
 	/**
@@ -272,7 +272,7 @@  discard block
 block discarded – undo
272 272
 	 * @return array
273 273
 	 */
274 274
 	public function get_data() {
275
-		return array_merge( array( 'id' => $this->get_id() ), $this->data, array( 'meta_data' => $this->get_meta_data() ) );
275
+		return array_merge(array('id' => $this->get_id()), $this->data, array('meta_data' => $this->get_meta_data()));
276 276
 	}
277 277
 
278 278
 	/**
@@ -282,7 +282,7 @@  discard block
 block discarded – undo
282 282
 	 * @return array
283 283
 	 */
284 284
 	public function get_data_keys() {
285
-		return array_keys( $this->data );
285
+		return array_keys($this->data);
286 286
 	}
287 287
 
288 288
 	/**
@@ -292,7 +292,7 @@  discard block
 block discarded – undo
292 292
 	 * @return array
293 293
 	 */
294 294
 	public function get_extra_data_keys() {
295
-		return array_keys( $this->extra_data );
295
+		return array_keys($this->extra_data);
296 296
 	}
297 297
 
298 298
 	/**
@@ -302,8 +302,8 @@  discard block
 block discarded – undo
302 302
 	 * @param mixed $meta Meta value to check.
303 303
 	 * @return bool
304 304
 	 */
305
-	protected function filter_null_meta( $meta ) {
306
-		return ! is_null( $meta->value );
305
+	protected function filter_null_meta($meta) {
306
+		return !is_null($meta->value);
307 307
 	}
308 308
 
309 309
 	/**
@@ -314,7 +314,7 @@  discard block
 block discarded – undo
314 314
 	 */
315 315
 	public function get_meta_data() {
316 316
 		$this->maybe_read_meta_data();
317
-		return array_values( array_filter( $this->meta_data, array( $this, 'filter_null_meta' ) ) );
317
+		return array_values(array_filter($this->meta_data, array($this, 'filter_null_meta')));
318 318
 	}
319 319
 
320 320
 	/**
@@ -324,21 +324,21 @@  discard block
 block discarded – undo
324 324
 	 * @param  string $key Key to check.
325 325
 	 * @return bool   true if it's an internal key, false otherwise
326 326
 	 */
327
-	protected function is_internal_meta_key( $key ) {
328
-		$internal_meta_key = ! empty( $key ) && $this->data_store && in_array( $key, $this->data_store->get_internal_meta_keys(), true );
327
+	protected function is_internal_meta_key($key) {
328
+		$internal_meta_key = !empty($key) && $this->data_store && in_array($key, $this->data_store->get_internal_meta_keys(), true);
329 329
 
330
-		if ( ! $internal_meta_key ) {
330
+		if (!$internal_meta_key) {
331 331
 			return false;
332 332
 		}
333 333
 
334
-		$has_setter_or_getter = is_callable( array( $this, 'set_' . $key ) ) || is_callable( array( $this, 'get_' . $key ) );
334
+		$has_setter_or_getter = is_callable(array($this, 'set_' . $key)) || is_callable(array($this, 'get_' . $key));
335 335
 
336
-		if ( ! $has_setter_or_getter ) {
336
+		if (!$has_setter_or_getter) {
337 337
 			return false;
338 338
 		}
339 339
 
340 340
 		/* translators: %s: $key Key to check */
341
-		getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Generic add/update/get meta methods should not be used for internal meta data, including "%s". Use getters and setters.', 'invoicing' ), $key ), '1.0.19' );
341
+		getpaid_doing_it_wrong(__FUNCTION__, sprintf(__('Generic add/update/get meta methods should not be used for internal meta data, including "%s". Use getters and setters.', 'invoicing'), $key), '1.0.19');
342 342
 
343 343
 		return true;
344 344
 	}
@@ -352,20 +352,20 @@  discard block
 block discarded – undo
352 352
 	 * @access public
353 353
 	 *
354 354
 	 */
355
-	public function __set( $key, $value ) {
355
+	public function __set($key, $value) {
356 356
 
357
-		if ( 'id' == strtolower( $key ) ) {
358
-			return $this->set_id( $value );
357
+		if ('id' == strtolower($key)) {
358
+			return $this->set_id($value);
359 359
 		}
360 360
 
361
-		if ( method_exists( $this, "set_$key" ) ) {
361
+		if (method_exists($this, "set_$key")) {
362 362
 
363 363
 			/* translators: %s: $key Key to set */
364
-			getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Object data such as "%s" should not be accessed directly. Use getters and setters.', 'invoicing' ), $key ), '1.0.19' );
364
+			getpaid_doing_it_wrong(__FUNCTION__, sprintf(__('Object data such as "%s" should not be accessed directly. Use getters and setters.', 'invoicing'), $key), '1.0.19');
365 365
 
366
-			call_user_func( array( $this, "set_$key" ), $value );
366
+			call_user_func(array($this, "set_$key"), $value);
367 367
 		} else {
368
-			$this->set_prop( $key, $value );
368
+			$this->set_prop($key, $value);
369 369
 		}
370 370
 
371 371
 	}
@@ -373,25 +373,25 @@  discard block
 block discarded – undo
373 373
 	/**
374 374
      * Margic method for retrieving a property.
375 375
      */
376
-    public function __get( $key ) {
376
+    public function __get($key) {
377 377
 
378 378
         // Check if we have a helper method for that.
379
-        if ( method_exists( $this, 'get_' . $key ) ) {
379
+        if (method_exists($this, 'get_' . $key)) {
380 380
 
381
-			if ( 'post_type' != $key ) {
381
+			if ('post_type' != $key) {
382 382
 				/* translators: %s: $key Key to set */
383
-				getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Object data such as "%s" should not be accessed directly. Use getters and setters.', 'invoicing' ), $key ), '1.0.19' );
383
+				getpaid_doing_it_wrong(__FUNCTION__, sprintf(__('Object data such as "%s" should not be accessed directly. Use getters and setters.', 'invoicing'), $key), '1.0.19');
384 384
 			}
385 385
 
386
-            return call_user_func( array( $this, 'get_' . $key ) );
386
+            return call_user_func(array($this, 'get_' . $key));
387 387
         }
388 388
 
389 389
         // Check if the key is in the associated $post object.
390
-        if ( ! empty( $this->post ) && isset( $this->post->$key ) ) {
390
+        if (!empty($this->post) && isset($this->post->$key)) {
391 391
             return $this->post->$key;
392 392
         }
393 393
 
394
-		return $this->get_prop( $key );
394
+		return $this->get_prop($key);
395 395
 
396 396
     }
397 397
 
@@ -404,15 +404,15 @@  discard block
 block discarded – undo
404 404
 	 * @param  string $context What the value is for. Valid values are view and edit.
405 405
 	 * @return mixed
406 406
 	 */
407
-	public function get_meta( $key = '', $single = true, $context = 'view' ) {
407
+	public function get_meta($key = '', $single = true, $context = 'view') {
408 408
 
409 409
 		// Check if this is an internal meta key.
410
-		$_key = str_replace( '_wpinv', '', $key );
411
-		$_key = str_replace( 'wpinv', '', $_key );
412
-		if ( $this->is_internal_meta_key( $key ) ) {
410
+		$_key = str_replace('_wpinv', '', $key);
411
+		$_key = str_replace('wpinv', '', $_key);
412
+		if ($this->is_internal_meta_key($key)) {
413 413
 			$function = 'get_' . $_key;
414 414
 
415
-			if ( is_callable( array( $this, $function ) ) ) {
415
+			if (is_callable(array($this, $function))) {
416 416
 				return $this->{$function}();
417 417
 			}
418 418
 		}
@@ -420,20 +420,20 @@  discard block
 block discarded – undo
420 420
 		// Read the meta data if not yet read.
421 421
 		$this->maybe_read_meta_data();
422 422
 		$meta_data  = $this->get_meta_data();
423
-		$array_keys = array_keys( wp_list_pluck( $meta_data, 'key' ), $key, true );
423
+		$array_keys = array_keys(wp_list_pluck($meta_data, 'key'), $key, true);
424 424
 		$value      = $single ? '' : array();
425 425
 
426
-		if ( ! empty( $array_keys ) ) {
426
+		if (!empty($array_keys)) {
427 427
 			// We don't use the $this->meta_data property directly here because we don't want meta with a null value (i.e. meta which has been deleted via $this->delete_meta_data()).
428
-			if ( $single ) {
429
-				$value = $meta_data[ current( $array_keys ) ]->value;
428
+			if ($single) {
429
+				$value = $meta_data[current($array_keys)]->value;
430 430
 			} else {
431
-				$value = array_intersect_key( $meta_data, array_flip( $array_keys ) );
431
+				$value = array_intersect_key($meta_data, array_flip($array_keys));
432 432
 			}
433 433
 		}
434 434
 
435
-		if ( 'view' === $context ) {
436
-			$value = apply_filters( $this->get_hook_prefix() . $key, $value, $this );
435
+		if ('view' === $context) {
436
+			$value = apply_filters($this->get_hook_prefix() . $key, $value, $this);
437 437
 		}
438 438
 
439 439
 		return $value;
@@ -446,10 +446,10 @@  discard block
 block discarded – undo
446 446
 	 * @param  string $key Meta Key.
447 447
 	 * @return boolean
448 448
 	 */
449
-	public function meta_exists( $key = '' ) {
449
+	public function meta_exists($key = '') {
450 450
 		$this->maybe_read_meta_data();
451
-		$array_keys = wp_list_pluck( $this->get_meta_data(), 'key' );
452
-		return in_array( $key, $array_keys, true );
451
+		$array_keys = wp_list_pluck($this->get_meta_data(), 'key');
452
+		return in_array($key, $array_keys, true);
453 453
 	}
454 454
 
455 455
 	/**
@@ -458,12 +458,12 @@  discard block
 block discarded – undo
458 458
 	 * @since 1.0.19
459 459
 	 * @param array $data Key/Value pairs.
460 460
 	 */
461
-	public function set_meta_data( $data ) {
462
-		if ( ! empty( $data ) && is_array( $data ) ) {
461
+	public function set_meta_data($data) {
462
+		if (!empty($data) && is_array($data)) {
463 463
 			$this->maybe_read_meta_data();
464
-			foreach ( $data as $meta ) {
464
+			foreach ($data as $meta) {
465 465
 				$meta = (array) $meta;
466
-				if ( isset( $meta['key'], $meta['value'], $meta['id'] ) ) {
466
+				if (isset($meta['key'], $meta['value'], $meta['id'])) {
467 467
 					$this->meta_data[] = new GetPaid_Meta_Data(
468 468
 						array(
469 469
 							'id'    => $meta['id'],
@@ -485,18 +485,18 @@  discard block
 block discarded – undo
485 485
 	 * @param string|array $value Meta value.
486 486
 	 * @param bool         $unique Should this be a unique key?.
487 487
 	 */
488
-	public function add_meta_data( $key, $value, $unique = false ) {
489
-		if ( $this->is_internal_meta_key( $key ) ) {
488
+	public function add_meta_data($key, $value, $unique = false) {
489
+		if ($this->is_internal_meta_key($key)) {
490 490
 			$function = 'set_' . $key;
491 491
 
492
-			if ( is_callable( array( $this, $function ) ) ) {
493
-				return $this->{$function}( $value );
492
+			if (is_callable(array($this, $function))) {
493
+				return $this->{$function}($value);
494 494
 			}
495 495
 		}
496 496
 
497 497
 		$this->maybe_read_meta_data();
498
-		if ( $unique ) {
499
-			$this->delete_meta_data( $key );
498
+		if ($unique) {
499
+			$this->delete_meta_data($key);
500 500
 		}
501 501
 		$this->meta_data[] = new GetPaid_Meta_Data(
502 502
 			array(
@@ -517,12 +517,12 @@  discard block
 block discarded – undo
517 517
 	 * @param  string|array $value Meta value.
518 518
 	 * @param  int          $meta_id Meta ID.
519 519
 	 */
520
-	public function update_meta_data( $key, $value, $meta_id = 0 ) {
521
-		if ( $this->is_internal_meta_key( $key ) ) {
520
+	public function update_meta_data($key, $value, $meta_id = 0) {
521
+		if ($this->is_internal_meta_key($key)) {
522 522
 			$function = 'set_' . $key;
523 523
 
524
-			if ( is_callable( array( $this, $function ) ) ) {
525
-				return $this->{$function}( $value );
524
+			if (is_callable(array($this, $function))) {
525
+				return $this->{$function}($value);
526 526
 			}
527 527
 		}
528 528
 
@@ -530,33 +530,33 @@  discard block
 block discarded – undo
530 530
 
531 531
 		$array_key = false;
532 532
 
533
-		if ( $meta_id ) {
534
-			$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), $meta_id, true );
535
-			$array_key  = $array_keys ? current( $array_keys ) : false;
533
+		if ($meta_id) {
534
+			$array_keys = array_keys(wp_list_pluck($this->meta_data, 'id'), $meta_id, true);
535
+			$array_key  = $array_keys ? current($array_keys) : false;
536 536
 		} else {
537 537
 			// Find matches by key.
538 538
 			$matches = array();
539
-			foreach ( $this->meta_data as $meta_data_array_key => $meta ) {
540
-				if ( $meta->key === $key ) {
539
+			foreach ($this->meta_data as $meta_data_array_key => $meta) {
540
+				if ($meta->key === $key) {
541 541
 					$matches[] = $meta_data_array_key;
542 542
 				}
543 543
 			}
544 544
 
545
-			if ( ! empty( $matches ) ) {
545
+			if (!empty($matches)) {
546 546
 				// Set matches to null so only one key gets the new value.
547
-				foreach ( $matches as $meta_data_array_key ) {
548
-					$this->meta_data[ $meta_data_array_key ]->value = null;
547
+				foreach ($matches as $meta_data_array_key) {
548
+					$this->meta_data[$meta_data_array_key]->value = null;
549 549
 				}
550
-				$array_key = current( $matches );
550
+				$array_key = current($matches);
551 551
 			}
552 552
 		}
553 553
 
554
-		if ( false !== $array_key ) {
555
-			$meta        = $this->meta_data[ $array_key ];
554
+		if (false !== $array_key) {
555
+			$meta        = $this->meta_data[$array_key];
556 556
 			$meta->key   = $key;
557 557
 			$meta->value = $value;
558 558
 		} else {
559
-			$this->add_meta_data( $key, $value, true );
559
+			$this->add_meta_data($key, $value, true);
560 560
 		}
561 561
 	}
562 562
 
@@ -566,13 +566,13 @@  discard block
 block discarded – undo
566 566
 	 * @since 1.0.19
567 567
 	 * @param string $key Meta key.
568 568
 	 */
569
-	public function delete_meta_data( $key ) {
569
+	public function delete_meta_data($key) {
570 570
 		$this->maybe_read_meta_data();
571
-		$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'key' ), $key, true );
571
+		$array_keys = array_keys(wp_list_pluck($this->meta_data, 'key'), $key, true);
572 572
 
573
-		if ( $array_keys ) {
574
-			foreach ( $array_keys as $array_key ) {
575
-				$this->meta_data[ $array_key ]->value = null;
573
+		if ($array_keys) {
574
+			foreach ($array_keys as $array_key) {
575
+				$this->meta_data[$array_key]->value = null;
576 576
 			}
577 577
 		}
578 578
 	}
@@ -583,13 +583,13 @@  discard block
 block discarded – undo
583 583
 	 * @since 1.0.19
584 584
 	 * @param int $mid Meta ID.
585 585
 	 */
586
-	public function delete_meta_data_by_mid( $mid ) {
586
+	public function delete_meta_data_by_mid($mid) {
587 587
 		$this->maybe_read_meta_data();
588
-		$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), (int) $mid, true );
588
+		$array_keys = array_keys(wp_list_pluck($this->meta_data, 'id'), (int) $mid, true);
589 589
 
590
-		if ( $array_keys ) {
591
-			foreach ( $array_keys as $array_key ) {
592
-				$this->meta_data[ $array_key ]->value = null;
590
+		if ($array_keys) {
591
+			foreach ($array_keys as $array_key) {
592
+				$this->meta_data[$array_key]->value = null;
593 593
 			}
594 594
 		}
595 595
 	}
@@ -600,7 +600,7 @@  discard block
 block discarded – undo
600 600
 	 * @since 1.0.19
601 601
 	 */
602 602
 	protected function maybe_read_meta_data() {
603
-		if ( is_null( $this->meta_data ) ) {
603
+		if (is_null($this->meta_data)) {
604 604
 			$this->read_meta_data();
605 605
 		}
606 606
 	}
@@ -612,41 +612,41 @@  discard block
 block discarded – undo
612 612
 	 * @since 1.0.19
613 613
 	 * @param bool $force_read True to force a new DB read (and update cache).
614 614
 	 */
615
-	public function read_meta_data( $force_read = false ) {
615
+	public function read_meta_data($force_read = false) {
616 616
 
617 617
 		// Reset meta data.
618 618
 		$this->meta_data = array();
619 619
 
620 620
 		// Maybe abort early.
621
-		if ( ! $this->get_id() || ! $this->data_store ) {
621
+		if (!$this->get_id() || !$this->data_store) {
622 622
 			return;
623 623
 		}
624 624
 
625 625
 		// Only read from cache if the cache key is set.
626 626
 		$cache_key = null;
627
-		if ( ! $force_read && ! empty( $this->cache_group ) ) {
628
-			$cache_key     = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
629
-			$raw_meta_data = wp_cache_get( $cache_key, $this->cache_group );
627
+		if (!$force_read && !empty($this->cache_group)) {
628
+			$cache_key     = GetPaid_Cache_Helper::get_cache_prefix($this->cache_group) . GetPaid_Cache_Helper::get_cache_prefix('object_' . $this->get_id()) . 'object_meta_' . $this->get_id();
629
+			$raw_meta_data = wp_cache_get($cache_key, $this->cache_group);
630 630
 		}
631 631
 
632 632
 		// Should we force read?
633
-		if ( empty( $raw_meta_data ) ) {
634
-			$raw_meta_data = $this->data_store->read_meta( $this );
633
+		if (empty($raw_meta_data)) {
634
+			$raw_meta_data = $this->data_store->read_meta($this);
635 635
 
636
-			if ( ! empty( $cache_key ) ) {
637
-				wp_cache_set( $cache_key, $raw_meta_data, $this->cache_group );
636
+			if (!empty($cache_key)) {
637
+				wp_cache_set($cache_key, $raw_meta_data, $this->cache_group);
638 638
 			}
639 639
 }
640 640
 
641 641
 		// Set meta data.
642
-		if ( is_array( $raw_meta_data ) ) {
642
+		if (is_array($raw_meta_data)) {
643 643
 
644
-			foreach ( $raw_meta_data as $meta ) {
644
+			foreach ($raw_meta_data as $meta) {
645 645
 				$this->meta_data[] = new GetPaid_Meta_Data(
646 646
 					array(
647 647
 						'id'    => (int) $meta->meta_id,
648 648
 						'key'   => $meta->meta_key,
649
-						'value' => maybe_unserialize( $meta->meta_value ),
649
+						'value' => maybe_unserialize($meta->meta_value),
650 650
 					)
651 651
 				);
652 652
 			}
@@ -660,28 +660,28 @@  discard block
 block discarded – undo
660 660
 	 * @since 1.0.19
661 661
 	 */
662 662
 	public function save_meta_data() {
663
-		if ( ! $this->data_store || is_null( $this->meta_data ) ) {
663
+		if (!$this->data_store || is_null($this->meta_data)) {
664 664
 			return;
665 665
 		}
666
-		foreach ( $this->meta_data as $array_key => $meta ) {
667
-			if ( is_null( $meta->value ) ) {
668
-				if ( ! empty( $meta->id ) ) {
669
-					$this->data_store->delete_meta( $this, $meta );
670
-					unset( $this->meta_data[ $array_key ] );
666
+		foreach ($this->meta_data as $array_key => $meta) {
667
+			if (is_null($meta->value)) {
668
+				if (!empty($meta->id)) {
669
+					$this->data_store->delete_meta($this, $meta);
670
+					unset($this->meta_data[$array_key]);
671 671
 				}
672
-			} elseif ( empty( $meta->id ) ) {
673
-				$meta->id = $this->data_store->add_meta( $this, $meta );
672
+			} elseif (empty($meta->id)) {
673
+				$meta->id = $this->data_store->add_meta($this, $meta);
674 674
 				$meta->apply_changes();
675 675
 			} else {
676
-				if ( $meta->get_changes() ) {
677
-					$this->data_store->update_meta( $this, $meta );
676
+				if ($meta->get_changes()) {
677
+					$this->data_store->update_meta($this, $meta);
678 678
 					$meta->apply_changes();
679 679
 				}
680 680
 			}
681 681
 		}
682
-		if ( ! empty( $this->cache_group ) ) {
683
-			$cache_key = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
684
-			wp_cache_delete( $cache_key, $this->cache_group );
682
+		if (!empty($this->cache_group)) {
683
+			$cache_key = GetPaid_Cache_Helper::get_cache_prefix($this->cache_group) . GetPaid_Cache_Helper::get_cache_prefix('object_' . $this->get_id()) . 'object_meta_' . $this->get_id();
684
+			wp_cache_delete($cache_key, $this->cache_group);
685 685
 		}
686 686
 	}
687 687
 
@@ -691,8 +691,8 @@  discard block
 block discarded – undo
691 691
 	 * @since 1.0.19
692 692
 	 * @param int $id ID.
693 693
 	 */
694
-	public function set_id( $id ) {
695
-		$this->id = absint( $id );
694
+	public function set_id($id) {
695
+		$this->id = absint($id);
696 696
 	}
697 697
 
698 698
 	/**
@@ -702,10 +702,10 @@  discard block
 block discarded – undo
702 702
 	 * @param string $status New status.
703 703
 	 * @return array details of change.
704 704
 	 */
705
-	public function set_status( $status ) {
705
+	public function set_status($status) {
706 706
         $old_status = $this->get_status();
707 707
 
708
-		$this->set_prop( 'status', $status );
708
+		$this->set_prop('status', $status);
709 709
 
710 710
 		return array(
711 711
 			'from' => $old_status,
@@ -721,7 +721,7 @@  discard block
 block discarded – undo
721 721
 	public function set_defaults() {
722 722
 		$this->data    = $this->default_data;
723 723
 		$this->changes = array();
724
-		$this->set_object_read( false );
724
+		$this->set_object_read(false);
725 725
 	}
726 726
 
727 727
 	/**
@@ -730,7 +730,7 @@  discard block
 block discarded – undo
730 730
 	 * @since 1.0.19
731 731
 	 * @param boolean $read Should read?.
732 732
 	 */
733
-	public function set_object_read( $read = true ) {
733
+	public function set_object_read($read = true) {
734 734
 		$this->object_read = (bool) $read;
735 735
 	}
736 736
 
@@ -755,33 +755,33 @@  discard block
 block discarded – undo
755 755
 	 *
756 756
 	 * @return bool|WP_Error
757 757
 	 */
758
-	public function set_props( $props, $context = 'set' ) {
758
+	public function set_props($props, $context = 'set') {
759 759
 		$errors = false;
760 760
 
761
-		$props = wp_unslash( $props );
762
-		foreach ( $props as $prop => $value ) {
761
+		$props = wp_unslash($props);
762
+		foreach ($props as $prop => $value) {
763 763
 			try {
764 764
 				/**
765 765
 				 * Checks if the prop being set is allowed, and the value is not null.
766 766
 				 */
767
-				if ( is_null( $value ) || in_array( $prop, array( 'prop', 'date_prop', 'meta_data' ), true ) ) {
767
+				if (is_null($value) || in_array($prop, array('prop', 'date_prop', 'meta_data'), true)) {
768 768
 					continue;
769 769
 				}
770 770
 				$setter = "set_$prop";
771 771
 
772
-				if ( is_callable( array( $this, $setter ) ) ) {
773
-					$this->{$setter}( $value );
772
+				if (is_callable(array($this, $setter))) {
773
+					$this->{$setter}($value);
774 774
 				}
775
-			} catch ( Exception $e ) {
776
-				if ( ! $errors ) {
775
+			} catch (Exception $e) {
776
+				if (!$errors) {
777 777
 					$errors = new WP_Error();
778 778
 				}
779
-				$errors->add( $e->getCode(), $e->getMessage() );
779
+				$errors->add($e->getCode(), $e->getMessage());
780 780
 				$this->last_error = $e->getMessage();
781 781
 			}
782 782
 		}
783 783
 
784
-		return $errors && count( $errors->get_error_codes() ) ? $errors : true;
784
+		return $errors && count($errors->get_error_codes()) ? $errors : true;
785 785
 	}
786 786
 
787 787
 	/**
@@ -794,14 +794,14 @@  discard block
 block discarded – undo
794 794
 	 * @param string $prop Name of prop to set.
795 795
 	 * @param mixed  $value Value of the prop.
796 796
 	 */
797
-	protected function set_prop( $prop, $value ) {
798
-		if ( array_key_exists( $prop, $this->data ) ) {
799
-			if ( true === $this->object_read ) {
800
-				if ( $value !== $this->data[ $prop ] || array_key_exists( $prop, $this->changes ) ) {
801
-					$this->changes[ $prop ] = $value;
797
+	protected function set_prop($prop, $value) {
798
+		if (array_key_exists($prop, $this->data)) {
799
+			if (true === $this->object_read) {
800
+				if ($value !== $this->data[$prop] || array_key_exists($prop, $this->changes)) {
801
+					$this->changes[$prop] = $value;
802 802
 				}
803 803
 			} else {
804
-				$this->data[ $prop ] = $value;
804
+				$this->data[$prop] = $value;
805 805
 			}
806 806
 		}
807 807
 	}
@@ -822,7 +822,7 @@  discard block
 block discarded – undo
822 822
 	 * @since 1.0.19
823 823
 	 */
824 824
 	public function apply_changes() {
825
-		$this->data    = array_replace( $this->data, $this->changes );
825
+		$this->data    = array_replace($this->data, $this->changes);
826 826
 		$this->changes = array();
827 827
 	}
828 828
 
@@ -847,14 +847,14 @@  discard block
 block discarded – undo
847 847
 	 * @param  string $context What the value is for. Valid values are view and edit.
848 848
 	 * @return mixed
849 849
 	 */
850
-	protected function get_prop( $prop, $context = 'view' ) {
850
+	protected function get_prop($prop, $context = 'view') {
851 851
 		$value = null;
852 852
 
853
-		if ( array_key_exists( $prop, $this->data ) ) {
854
-			$value = array_key_exists( $prop, $this->changes ) ? $this->changes[ $prop ] : $this->data[ $prop ];
853
+		if (array_key_exists($prop, $this->data)) {
854
+			$value = array_key_exists($prop, $this->changes) ? $this->changes[$prop] : $this->data[$prop];
855 855
 
856
-			if ( 'view' === $context ) {
857
-				$value = apply_filters( $this->get_hook_prefix() . $prop, $value, $this );
856
+			if ('view' === $context) {
857
+				$value = apply_filters($this->get_hook_prefix() . $prop, $value, $this);
858 858
 			}
859 859
 		}
860 860
 
@@ -868,13 +868,13 @@  discard block
 block discarded – undo
868 868
 	 * @param string         $prop Name of prop to set.
869 869
 	 * @param string|integer $value Value of the prop.
870 870
 	 */
871
-	protected function set_date_prop( $prop, $value ) {
871
+	protected function set_date_prop($prop, $value) {
872 872
 
873
-		if ( empty( $value ) ) {
874
-			$this->set_prop( $prop, null );
873
+		if (empty($value)) {
874
+			$this->set_prop($prop, null);
875 875
 			return;
876 876
 		}
877
-		$this->set_prop( $prop, $value );
877
+		$this->set_prop($prop, $value);
878 878
 
879 879
 	}
880 880
 
@@ -885,7 +885,7 @@  discard block
 block discarded – undo
885 885
 	 * @param string $code             Error code.
886 886
 	 * @param string $message          Error message.
887 887
 	 */
888
-	protected function error( $code, $message ) {
888
+	protected function error($code, $message) {
889 889
 		$this->last_error = $message;
890 890
 	}
891 891
 
@@ -897,7 +897,7 @@  discard block
 block discarded – undo
897 897
 	 */
898 898
 	public function exists() {
899 899
 		$id = $this->get_id();
900
-		return ! empty( $id );
900
+		return !empty($id);
901 901
 	}
902 902
 
903 903
 }
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-subscription-data-store.php 2 patches
Indentation   +182 added lines, -182 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
  *
6 6
  */
7 7
 if ( ! defined( 'ABSPATH' ) ) {
8
-	exit;
8
+    exit;
9 9
 }
10 10
 
11 11
 /**
@@ -15,198 +15,198 @@  discard block
 block discarded – undo
15 15
  */
16 16
 class GetPaid_Subscription_Data_Store {
17 17
 
18
-	/**
19
-	 * A map of database fields to data types.
20
-	 *
21
-	 * @since 1.0.19
22
-	 * @var array
23
-	 */
24
-	protected $database_fields_to_data_type = array(
25
-		'id'                => '%d',
26
-		'customer_id'       => '%d',
27
-		'frequency'         => '%d',
28
-		'period'            => '%s',
29
-		'initial_amount'    => '%s',
30
-		'recurring_amount'  => '%s',
31
-		'bill_times'        => '%d',
32
-		'transaction_id'    => '%s',
33
-		'parent_payment_id' => '%d',
34
-		'product_id'        => '%d',
35
-		'created'           => '%s',
36
-		'expiration'        => '%s',
37
-		'trial_period'      => '%s',
38
-		'status'            => '%s',
39
-		'profile_id'        => '%s',
40
-	);
41
-
42
-	/*
18
+    /**
19
+     * A map of database fields to data types.
20
+     *
21
+     * @since 1.0.19
22
+     * @var array
23
+     */
24
+    protected $database_fields_to_data_type = array(
25
+        'id'                => '%d',
26
+        'customer_id'       => '%d',
27
+        'frequency'         => '%d',
28
+        'period'            => '%s',
29
+        'initial_amount'    => '%s',
30
+        'recurring_amount'  => '%s',
31
+        'bill_times'        => '%d',
32
+        'transaction_id'    => '%s',
33
+        'parent_payment_id' => '%d',
34
+        'product_id'        => '%d',
35
+        'created'           => '%s',
36
+        'expiration'        => '%s',
37
+        'trial_period'      => '%s',
38
+        'status'            => '%s',
39
+        'profile_id'        => '%s',
40
+    );
41
+
42
+    /*
43 43
 	|--------------------------------------------------------------------------
44 44
 	| CRUD Methods
45 45
 	|--------------------------------------------------------------------------
46 46
 	*/
47 47
 
48
-	/**
49
-	 * Method to create a new subscription in the database.
50
-	 *
51
-	 * @param WPInv_Subscription $subscription Subscription object.
52
-	 */
53
-	public function create( &$subscription ) {
54
-		global $wpdb;
55
-
56
-		$values  = array();
57
-		$formats = array();
58
-
59
-		$fields = $this->database_fields_to_data_type;
60
-		unset( $fields['id'] );
61
-
62
-		foreach ( $fields as $key => $format ) {
63
-			$method       = "get_$key";
64
-			$values[ $key ] = $subscription->$method( 'edit' );
65
-			$formats[]    = $format;
66
-		}
67
-
68
-		$result = $wpdb->insert( $wpdb->prefix . 'wpinv_subscriptions', $values, $formats );
69
-
70
-		if ( $result ) {
71
-			$subscription->set_id( $wpdb->insert_id );
72
-			$subscription->apply_changes();
73
-			$subscription->clear_cache();
74
-			update_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscription_id', $subscription->get_id() );
75
-			do_action( 'getpaid_new_subscription', $subscription );
76
-			return true;
77
-		}
78
-
79
-		return false;
80
-	}
81
-
82
-	/**
83
-	 * Method to read a subscription from the database.
84
-	 *
85
-	 * @param WPInv_Subscription $subscription Subscription object.
86
-	 *
87
-	 */
88
-	public function read( &$subscription ) {
89
-		global $wpdb;
90
-
91
-		$subscription->set_defaults();
92
-
93
-		if ( ! $subscription->get_id() ) {
94
-			$subscription->last_error = __( 'Invalid subscription ID.', 'invoicing' );
95
-			$subscription->set_id( 0 );
96
-			return false;
97
-		}
98
-
99
-		// Maybe retrieve from the cache.
100
-		$raw_subscription = wp_cache_get( $subscription->get_id(), 'getpaid_subscriptions' );
101
-
102
-		// If not found, retrieve from the db.
103
-		if ( false === $raw_subscription ) {
104
-
105
-			$raw_subscription = $wpdb->get_row(
106
-				$wpdb->prepare(
107
-					"SELECT * FROM {$wpdb->prefix}wpinv_subscriptions WHERE id = %d",
108
-					$subscription->get_id()
109
-				)
110
-			);
111
-
112
-			// Update the cache with our data
113
-			wp_cache_set( $subscription->get_id(), $raw_subscription, 'getpaid_subscriptions' );
114
-
115
-		}
116
-
117
-		if ( ! $raw_subscription ) {
118
-			$subscription->set_id( 0 );
119
-			$subscription->last_error = __( 'Invalid subscription ID.', 'invoicing' );
120
-			return false;
121
-		}
122
-
123
-		foreach ( array_keys( $this->database_fields_to_data_type ) as $key ) {
124
-			$method     = "set_$key";
125
-			$subscription->$method( $raw_subscription->$key );
126
-		}
127
-
128
-		$subscription->set_object_read( true );
129
-		do_action( 'getpaid_read_subscription', $subscription );
130
-
131
-	}
132
-
133
-	/**
134
-	 * Method to update a subscription in the database.
135
-	 *
136
-	 * @param WPInv_Subscription $subscription Subscription object.
137
-	 */
138
-	public function update( &$subscription ) {
139
-		global $wpdb;
140
-
141
-		$changes = $subscription->get_changes();
142
-		$values  = array();
143
-		$formats = array();
144
-
145
-		foreach ( $this->database_fields_to_data_type as $key => $format ) {
146
-			if ( array_key_exists( $key, $changes ) ) {
147
-				$method       = "get_$key";
148
-				$values[ $key ] = $subscription->$method( 'edit' );
149
-				$formats[]    = $format;
150
-			}
151
-		}
152
-
153
-		if ( empty( $values ) ) {
154
-			return;
155
-		}
156
-
157
-		$wpdb->update(
158
-			$wpdb->prefix . 'wpinv_subscriptions',
159
-			$values,
160
-			array(
161
-				'id' => $subscription->get_id(),
162
-			),
163
-			$formats,
164
-			'%d'
165
-		);
166
-
167
-		// Apply the changes.
168
-		$subscription->apply_changes();
169
-
170
-		// Delete cache.
171
-		$subscription->clear_cache();
172
-
173
-		update_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id', $subscription->get_profile_id() );
174
-		update_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscription_id', $subscription->get_id() );
175
-
176
-		// Fire a hook.
177
-		do_action( 'getpaid_update_subscription', $subscription );
178
-
179
-	}
180
-
181
-	/**
182
-	 * Method to delete a subscription from the database.
183
-	 *
184
-	 * @param WPInv_Subscription $subscription
185
-	 */
186
-	public function delete( &$subscription ) {
187
-		global $wpdb;
188
-
189
-		$wpdb->query(
190
-			$wpdb->prepare(
191
-				"DELETE FROM {$wpdb->prefix}wpinv_subscriptions
48
+    /**
49
+     * Method to create a new subscription in the database.
50
+     *
51
+     * @param WPInv_Subscription $subscription Subscription object.
52
+     */
53
+    public function create( &$subscription ) {
54
+        global $wpdb;
55
+
56
+        $values  = array();
57
+        $formats = array();
58
+
59
+        $fields = $this->database_fields_to_data_type;
60
+        unset( $fields['id'] );
61
+
62
+        foreach ( $fields as $key => $format ) {
63
+            $method       = "get_$key";
64
+            $values[ $key ] = $subscription->$method( 'edit' );
65
+            $formats[]    = $format;
66
+        }
67
+
68
+        $result = $wpdb->insert( $wpdb->prefix . 'wpinv_subscriptions', $values, $formats );
69
+
70
+        if ( $result ) {
71
+            $subscription->set_id( $wpdb->insert_id );
72
+            $subscription->apply_changes();
73
+            $subscription->clear_cache();
74
+            update_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscription_id', $subscription->get_id() );
75
+            do_action( 'getpaid_new_subscription', $subscription );
76
+            return true;
77
+        }
78
+
79
+        return false;
80
+    }
81
+
82
+    /**
83
+     * Method to read a subscription from the database.
84
+     *
85
+     * @param WPInv_Subscription $subscription Subscription object.
86
+     *
87
+     */
88
+    public function read( &$subscription ) {
89
+        global $wpdb;
90
+
91
+        $subscription->set_defaults();
92
+
93
+        if ( ! $subscription->get_id() ) {
94
+            $subscription->last_error = __( 'Invalid subscription ID.', 'invoicing' );
95
+            $subscription->set_id( 0 );
96
+            return false;
97
+        }
98
+
99
+        // Maybe retrieve from the cache.
100
+        $raw_subscription = wp_cache_get( $subscription->get_id(), 'getpaid_subscriptions' );
101
+
102
+        // If not found, retrieve from the db.
103
+        if ( false === $raw_subscription ) {
104
+
105
+            $raw_subscription = $wpdb->get_row(
106
+                $wpdb->prepare(
107
+                    "SELECT * FROM {$wpdb->prefix}wpinv_subscriptions WHERE id = %d",
108
+                    $subscription->get_id()
109
+                )
110
+            );
111
+
112
+            // Update the cache with our data
113
+            wp_cache_set( $subscription->get_id(), $raw_subscription, 'getpaid_subscriptions' );
114
+
115
+        }
116
+
117
+        if ( ! $raw_subscription ) {
118
+            $subscription->set_id( 0 );
119
+            $subscription->last_error = __( 'Invalid subscription ID.', 'invoicing' );
120
+            return false;
121
+        }
122
+
123
+        foreach ( array_keys( $this->database_fields_to_data_type ) as $key ) {
124
+            $method     = "set_$key";
125
+            $subscription->$method( $raw_subscription->$key );
126
+        }
127
+
128
+        $subscription->set_object_read( true );
129
+        do_action( 'getpaid_read_subscription', $subscription );
130
+
131
+    }
132
+
133
+    /**
134
+     * Method to update a subscription in the database.
135
+     *
136
+     * @param WPInv_Subscription $subscription Subscription object.
137
+     */
138
+    public function update( &$subscription ) {
139
+        global $wpdb;
140
+
141
+        $changes = $subscription->get_changes();
142
+        $values  = array();
143
+        $formats = array();
144
+
145
+        foreach ( $this->database_fields_to_data_type as $key => $format ) {
146
+            if ( array_key_exists( $key, $changes ) ) {
147
+                $method       = "get_$key";
148
+                $values[ $key ] = $subscription->$method( 'edit' );
149
+                $formats[]    = $format;
150
+            }
151
+        }
152
+
153
+        if ( empty( $values ) ) {
154
+            return;
155
+        }
156
+
157
+        $wpdb->update(
158
+            $wpdb->prefix . 'wpinv_subscriptions',
159
+            $values,
160
+            array(
161
+                'id' => $subscription->get_id(),
162
+            ),
163
+            $formats,
164
+            '%d'
165
+        );
166
+
167
+        // Apply the changes.
168
+        $subscription->apply_changes();
169
+
170
+        // Delete cache.
171
+        $subscription->clear_cache();
172
+
173
+        update_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id', $subscription->get_profile_id() );
174
+        update_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscription_id', $subscription->get_id() );
175
+
176
+        // Fire a hook.
177
+        do_action( 'getpaid_update_subscription', $subscription );
178
+
179
+    }
180
+
181
+    /**
182
+     * Method to delete a subscription from the database.
183
+     *
184
+     * @param WPInv_Subscription $subscription
185
+     */
186
+    public function delete( &$subscription ) {
187
+        global $wpdb;
188
+
189
+        $wpdb->query(
190
+            $wpdb->prepare(
191
+                "DELETE FROM {$wpdb->prefix}wpinv_subscriptions
192 192
 				WHERE id = %d",
193
-				$subscription->get_id()
194
-			)
195
-		);
193
+                $subscription->get_id()
194
+            )
195
+        );
196 196
 
197
-		delete_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id' );
198
-		delete_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscription_id' );
197
+        delete_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id' );
198
+        delete_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscription_id' );
199 199
 
200
-		// Delete cache.
201
-		$subscription->clear_cache();
200
+        // Delete cache.
201
+        $subscription->clear_cache();
202 202
 
203
-		// Fire a hook.
204
-		do_action( 'getpaid_delete_subscription', $subscription );
203
+        // Fire a hook.
204
+        do_action( 'getpaid_delete_subscription', $subscription );
205 205
 
206
-		$subscription->set_id( 0 );
207
-	}
206
+        $subscription->set_id( 0 );
207
+    }
208 208
 
209
-	/*
209
+    /*
210 210
 	|--------------------------------------------------------------------------
211 211
 	| Additional Methods
212 212
 	|--------------------------------------------------------------------------
Please login to merge, or discard this patch.
Spacing   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  * GetPaid_Subscription_Data_Store class file.
5 5
  *
6 6
  */
7
-if ( ! defined( 'ABSPATH' ) ) {
7
+if (!defined('ABSPATH')) {
8 8
 	exit;
9 9
 }
10 10
 
@@ -50,29 +50,29 @@  discard block
 block discarded – undo
50 50
 	 *
51 51
 	 * @param WPInv_Subscription $subscription Subscription object.
52 52
 	 */
53
-	public function create( &$subscription ) {
53
+	public function create(&$subscription) {
54 54
 		global $wpdb;
55 55
 
56 56
 		$values  = array();
57 57
 		$formats = array();
58 58
 
59 59
 		$fields = $this->database_fields_to_data_type;
60
-		unset( $fields['id'] );
60
+		unset($fields['id']);
61 61
 
62
-		foreach ( $fields as $key => $format ) {
62
+		foreach ($fields as $key => $format) {
63 63
 			$method       = "get_$key";
64
-			$values[ $key ] = $subscription->$method( 'edit' );
64
+			$values[$key] = $subscription->$method('edit');
65 65
 			$formats[]    = $format;
66 66
 		}
67 67
 
68
-		$result = $wpdb->insert( $wpdb->prefix . 'wpinv_subscriptions', $values, $formats );
68
+		$result = $wpdb->insert($wpdb->prefix . 'wpinv_subscriptions', $values, $formats);
69 69
 
70
-		if ( $result ) {
71
-			$subscription->set_id( $wpdb->insert_id );
70
+		if ($result) {
71
+			$subscription->set_id($wpdb->insert_id);
72 72
 			$subscription->apply_changes();
73 73
 			$subscription->clear_cache();
74
-			update_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscription_id', $subscription->get_id() );
75
-			do_action( 'getpaid_new_subscription', $subscription );
74
+			update_post_meta($subscription->get_parent_invoice_id(), '_wpinv_subscription_id', $subscription->get_id());
75
+			do_action('getpaid_new_subscription', $subscription);
76 76
 			return true;
77 77
 		}
78 78
 
@@ -85,22 +85,22 @@  discard block
 block discarded – undo
85 85
 	 * @param WPInv_Subscription $subscription Subscription object.
86 86
 	 *
87 87
 	 */
88
-	public function read( &$subscription ) {
88
+	public function read(&$subscription) {
89 89
 		global $wpdb;
90 90
 
91 91
 		$subscription->set_defaults();
92 92
 
93
-		if ( ! $subscription->get_id() ) {
94
-			$subscription->last_error = __( 'Invalid subscription ID.', 'invoicing' );
95
-			$subscription->set_id( 0 );
93
+		if (!$subscription->get_id()) {
94
+			$subscription->last_error = __('Invalid subscription ID.', 'invoicing');
95
+			$subscription->set_id(0);
96 96
 			return false;
97 97
 		}
98 98
 
99 99
 		// Maybe retrieve from the cache.
100
-		$raw_subscription = wp_cache_get( $subscription->get_id(), 'getpaid_subscriptions' );
100
+		$raw_subscription = wp_cache_get($subscription->get_id(), 'getpaid_subscriptions');
101 101
 
102 102
 		// If not found, retrieve from the db.
103
-		if ( false === $raw_subscription ) {
103
+		if (false === $raw_subscription) {
104 104
 
105 105
 			$raw_subscription = $wpdb->get_row(
106 106
 				$wpdb->prepare(
@@ -110,23 +110,23 @@  discard block
 block discarded – undo
110 110
 			);
111 111
 
112 112
 			// Update the cache with our data
113
-			wp_cache_set( $subscription->get_id(), $raw_subscription, 'getpaid_subscriptions' );
113
+			wp_cache_set($subscription->get_id(), $raw_subscription, 'getpaid_subscriptions');
114 114
 
115 115
 		}
116 116
 
117
-		if ( ! $raw_subscription ) {
118
-			$subscription->set_id( 0 );
119
-			$subscription->last_error = __( 'Invalid subscription ID.', 'invoicing' );
117
+		if (!$raw_subscription) {
118
+			$subscription->set_id(0);
119
+			$subscription->last_error = __('Invalid subscription ID.', 'invoicing');
120 120
 			return false;
121 121
 		}
122 122
 
123
-		foreach ( array_keys( $this->database_fields_to_data_type ) as $key ) {
124
-			$method     = "set_$key";
125
-			$subscription->$method( $raw_subscription->$key );
123
+		foreach (array_keys($this->database_fields_to_data_type) as $key) {
124
+			$method = "set_$key";
125
+			$subscription->$method($raw_subscription->$key);
126 126
 		}
127 127
 
128
-		$subscription->set_object_read( true );
129
-		do_action( 'getpaid_read_subscription', $subscription );
128
+		$subscription->set_object_read(true);
129
+		do_action('getpaid_read_subscription', $subscription);
130 130
 
131 131
 	}
132 132
 
@@ -135,22 +135,22 @@  discard block
 block discarded – undo
135 135
 	 *
136 136
 	 * @param WPInv_Subscription $subscription Subscription object.
137 137
 	 */
138
-	public function update( &$subscription ) {
138
+	public function update(&$subscription) {
139 139
 		global $wpdb;
140 140
 
141 141
 		$changes = $subscription->get_changes();
142 142
 		$values  = array();
143 143
 		$formats = array();
144 144
 
145
-		foreach ( $this->database_fields_to_data_type as $key => $format ) {
146
-			if ( array_key_exists( $key, $changes ) ) {
145
+		foreach ($this->database_fields_to_data_type as $key => $format) {
146
+			if (array_key_exists($key, $changes)) {
147 147
 				$method       = "get_$key";
148
-				$values[ $key ] = $subscription->$method( 'edit' );
148
+				$values[$key] = $subscription->$method('edit');
149 149
 				$formats[]    = $format;
150 150
 			}
151 151
 		}
152 152
 
153
-		if ( empty( $values ) ) {
153
+		if (empty($values)) {
154 154
 			return;
155 155
 		}
156 156
 
@@ -170,11 +170,11 @@  discard block
 block discarded – undo
170 170
 		// Delete cache.
171 171
 		$subscription->clear_cache();
172 172
 
173
-		update_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id', $subscription->get_profile_id() );
174
-		update_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscription_id', $subscription->get_id() );
173
+		update_post_meta($subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id', $subscription->get_profile_id());
174
+		update_post_meta($subscription->get_parent_invoice_id(), '_wpinv_subscription_id', $subscription->get_id());
175 175
 
176 176
 		// Fire a hook.
177
-		do_action( 'getpaid_update_subscription', $subscription );
177
+		do_action('getpaid_update_subscription', $subscription);
178 178
 
179 179
 	}
180 180
 
@@ -183,7 +183,7 @@  discard block
 block discarded – undo
183 183
 	 *
184 184
 	 * @param WPInv_Subscription $subscription
185 185
 	 */
186
-	public function delete( &$subscription ) {
186
+	public function delete(&$subscription) {
187 187
 		global $wpdb;
188 188
 
189 189
 		$wpdb->query(
@@ -194,16 +194,16 @@  discard block
 block discarded – undo
194 194
 			)
195 195
 		);
196 196
 
197
-		delete_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id' );
198
-		delete_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscription_id' );
197
+		delete_post_meta($subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id');
198
+		delete_post_meta($subscription->get_parent_invoice_id(), '_wpinv_subscription_id');
199 199
 
200 200
 		// Delete cache.
201 201
 		$subscription->clear_cache();
202 202
 
203 203
 		// Fire a hook.
204
-		do_action( 'getpaid_delete_subscription', $subscription );
204
+		do_action('getpaid_delete_subscription', $subscription);
205 205
 
206
-		$subscription->set_id( 0 );
206
+		$subscription->set_id(0);
207 207
 	}
208 208
 
209 209
 	/*
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-discount-data-store.php 2 patches
Indentation   +188 added lines, -188 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
  *
6 6
  */
7 7
 if ( ! defined( 'ABSPATH' ) ) {
8
-	exit;
8
+    exit;
9 9
 }
10 10
 
11 11
 /**
@@ -15,198 +15,198 @@  discard block
 block discarded – undo
15 15
  */
16 16
 class GetPaid_Discount_Data_Store extends GetPaid_Data_Store_WP {
17 17
 
18
-	/**
19
-	 * Data stored in meta keys, but not considered "meta" for a discount.
20
-	 *
21
-	 * @since 1.0.19
22
-	 * @var array
23
-	 */
24
-	protected $internal_meta_keys = array(
25
-		'_wpi_discount_code',
26
-		'_wpi_discount_amount',
27
-		'_wpi_discount_start',
28
-		'_wpi_discount_expiration',
29
-		'_wpi_discount_type',
30
-		'_wpi_discount_uses',
31
-		'_wpi_discount_is_single_use',
32
-		'_wpi_discount_items',
33
-		'_wpi_discount_excluded_items',
34
-		'_wpi_discount_required_items',
35
-		'_wpi_discount_max_uses',
36
-		'_wpi_discount_is_recurring',
37
-		'_wpi_discount_min_total',
38
-		'_wpi_discount_max_total',
39
-	);
40
-
41
-	/**
42
-	 * A map of meta keys to data props.
43
-	 *
44
-	 * @since 1.0.19
45
-	 *
46
-	 * @var array
47
-	 */
48
-	protected $meta_key_to_props = array(
49
-		'_wpi_discount_code'           => 'code',
50
-		'_wpi_discount_amount'         => 'amount',
51
-		'_wpi_discount_start'          => 'start',
52
-		'_wpi_discount_expiration'     => 'expiration',
53
-		'_wpi_discount_type'           => 'type',
54
-		'_wpi_discount_uses'           => 'uses',
55
-		'_wpi_discount_is_single_use'  => 'is_single_use',
56
-		'_wpi_discount_items'          => 'items',
57
-		'_wpi_discount_excluded_items' => 'excluded_items',
58
-		'_wpi_discount_required_items' => 'required_items',
59
-		'_wpi_discount_max_uses'       => 'max_uses',
60
-		'_wpi_discount_is_recurring'   => 'is_recurring',
61
-		'_wpi_discount_min_total'      => 'min_total',
62
-		'_wpi_discount_max_total'      => 'max_total',
63
-	);
64
-
65
-	/*
18
+    /**
19
+     * Data stored in meta keys, but not considered "meta" for a discount.
20
+     *
21
+     * @since 1.0.19
22
+     * @var array
23
+     */
24
+    protected $internal_meta_keys = array(
25
+        '_wpi_discount_code',
26
+        '_wpi_discount_amount',
27
+        '_wpi_discount_start',
28
+        '_wpi_discount_expiration',
29
+        '_wpi_discount_type',
30
+        '_wpi_discount_uses',
31
+        '_wpi_discount_is_single_use',
32
+        '_wpi_discount_items',
33
+        '_wpi_discount_excluded_items',
34
+        '_wpi_discount_required_items',
35
+        '_wpi_discount_max_uses',
36
+        '_wpi_discount_is_recurring',
37
+        '_wpi_discount_min_total',
38
+        '_wpi_discount_max_total',
39
+    );
40
+
41
+    /**
42
+     * A map of meta keys to data props.
43
+     *
44
+     * @since 1.0.19
45
+     *
46
+     * @var array
47
+     */
48
+    protected $meta_key_to_props = array(
49
+        '_wpi_discount_code'           => 'code',
50
+        '_wpi_discount_amount'         => 'amount',
51
+        '_wpi_discount_start'          => 'start',
52
+        '_wpi_discount_expiration'     => 'expiration',
53
+        '_wpi_discount_type'           => 'type',
54
+        '_wpi_discount_uses'           => 'uses',
55
+        '_wpi_discount_is_single_use'  => 'is_single_use',
56
+        '_wpi_discount_items'          => 'items',
57
+        '_wpi_discount_excluded_items' => 'excluded_items',
58
+        '_wpi_discount_required_items' => 'required_items',
59
+        '_wpi_discount_max_uses'       => 'max_uses',
60
+        '_wpi_discount_is_recurring'   => 'is_recurring',
61
+        '_wpi_discount_min_total'      => 'min_total',
62
+        '_wpi_discount_max_total'      => 'max_total',
63
+    );
64
+
65
+    /*
66 66
 	|--------------------------------------------------------------------------
67 67
 	| CRUD Methods
68 68
 	|--------------------------------------------------------------------------
69 69
 	*/
70 70
 
71
-	/**
72
-	 * Method to create a new discount in the database.
73
-	 *
74
-	 * @param WPInv_Discount $discount Discount object.
75
-	 */
76
-	public function create( &$discount ) {
77
-		$discount->set_version( WPINV_VERSION );
78
-		$discount->set_date_created( current_time( 'mysql' ) );
79
-
80
-		// Create a new post.
81
-		$id = wp_insert_post(
82
-			apply_filters(
83
-				'getpaid_new_discount_data',
84
-				array(
85
-					'post_date'    => $discount->get_date_created( 'edit' ),
86
-					'post_type'    => 'wpi_discount',
87
-					'post_status'  => $this->get_post_status( $discount ),
88
-					'ping_status'  => 'closed',
89
-					'post_author'  => $discount->get_author( 'edit' ),
90
-					'post_title'   => $discount->get_name( 'edit' ),
91
-					'post_excerpt' => $discount->get_description( 'edit' ),
92
-				)
93
-			),
94
-			true
95
-		);
96
-
97
-		if ( $id && ! is_wp_error( $id ) ) {
98
-			$discount->set_id( $id );
99
-			$this->update_post_meta( $discount );
100
-			$discount->save_meta_data();
101
-			$discount->apply_changes();
102
-			$this->clear_caches( $discount );
103
-			do_action( 'getpaid_new_discount', $discount );
104
-			return true;
105
-		}
106
-
107
-		if ( is_wp_error( $id ) ) {
108
-			$discount->last_error = $id->get_error_message();
109
-		}
110
-
111
-		return false;
112
-	}
113
-
114
-	/**
115
-	 * Method to read a discount from the database.
116
-	 *
117
-	 * @param WPInv_Discount $discount Discount object.
118
-	 *
119
-	 */
120
-	public function read( &$discount ) {
121
-
122
-		$discount->set_defaults();
123
-		$discount_object = get_post( $discount->get_id() );
124
-
125
-		if ( ! $discount->get_id() || ! $discount_object || $discount_object->post_type != 'wpi_discount' ) {
126
-			$discount->last_error = __( 'Invalid discount.', 'invoicing' );
127
-			$discount->set_id( 0 );
128
-			return false;
129
-		}
130
-
131
-		$discount->set_props(
132
-			array(
133
-				'date_created'  => 0 < $discount_object->post_date ? $discount_object->post_date : null,
134
-				'date_modified' => 0 < $discount_object->post_modified ? $discount_object->post_modified : null,
135
-				'status'        => $discount_object->post_status,
136
-				'name'          => $discount_object->post_title,
137
-				'author'        => $discount_object->post_author,
138
-				'description'   => $discount_object->post_excerpt,
139
-			)
140
-		);
141
-
142
-		$this->read_object_data( $discount, $discount_object );
143
-		$discount->read_meta_data();
144
-		$discount->set_object_read( true );
145
-		do_action( 'getpaid_read_discount', $discount );
146
-
147
-	}
148
-
149
-	/**
150
-	 * Method to update a discount in the database.
151
-	 *
152
-	 * @param WPInv_Discount $discount Discount object.
153
-	 */
154
-	public function update( &$discount ) {
155
-		$discount->save_meta_data();
156
-		$discount->set_version( WPINV_VERSION );
157
-
158
-		if ( null === $discount->get_date_created( 'edit' ) ) {
159
-			$discount->set_date_created( current_time( 'mysql' ) );
160
-		}
161
-
162
-		// Grab the current status so we can compare.
163
-		$previous_status = get_post_status( $discount->get_id() );
164
-
165
-		$changes = $discount->get_changes();
166
-
167
-		// Only update the post when the post data changes.
168
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author', 'post_excerpt' ), array_keys( $changes ) ) ) {
169
-			$post_data = array(
170
-				'post_date'     => $discount->get_date_created( 'edit' ),
171
-				'post_status'   => $discount->get_status( 'edit' ),
172
-				'post_title'    => $discount->get_name( 'edit' ),
173
-				'post_author'   => $discount->get_author( 'edit' ),
174
-				'post_modified' => $discount->get_date_modified( 'edit' ),
175
-				'post_excerpt'  => $discount->get_description( 'edit' ),
176
-			);
177
-
178
-			/**
179
-			 * When updating this object, to prevent infinite loops, use $wpdb
180
-			 * to update data, since wp_update_post spawns more calls to the
181
-			 * save_post action.
182
-			 *
183
-			 * This ensures hooks are fired by either WP itself (admin screen save),
184
-			 * or an update purely from CRUD.
185
-			 */
186
-			if ( doing_action( 'save_post' ) ) {
187
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $discount->get_id() ) );
188
-				clean_post_cache( $discount->get_id() );
189
-			} else {
190
-				wp_update_post( array_merge( array( 'ID' => $discount->get_id() ), $post_data ) );
191
-			}
192
-			$discount->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
193
-		}
194
-		$this->update_post_meta( $discount );
195
-		$discount->apply_changes();
196
-		$this->clear_caches( $discount );
197
-
198
-		// Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
199
-		$new_status = $discount->get_status( 'edit' );
200
-
201
-		if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
202
-			do_action( 'getpaid_new_discount', $discount );
203
-		} else {
204
-			do_action( 'getpaid_update_discount', $discount );
205
-		}
206
-
207
-	}
208
-
209
-	/*
71
+    /**
72
+     * Method to create a new discount in the database.
73
+     *
74
+     * @param WPInv_Discount $discount Discount object.
75
+     */
76
+    public function create( &$discount ) {
77
+        $discount->set_version( WPINV_VERSION );
78
+        $discount->set_date_created( current_time( 'mysql' ) );
79
+
80
+        // Create a new post.
81
+        $id = wp_insert_post(
82
+            apply_filters(
83
+                'getpaid_new_discount_data',
84
+                array(
85
+                    'post_date'    => $discount->get_date_created( 'edit' ),
86
+                    'post_type'    => 'wpi_discount',
87
+                    'post_status'  => $this->get_post_status( $discount ),
88
+                    'ping_status'  => 'closed',
89
+                    'post_author'  => $discount->get_author( 'edit' ),
90
+                    'post_title'   => $discount->get_name( 'edit' ),
91
+                    'post_excerpt' => $discount->get_description( 'edit' ),
92
+                )
93
+            ),
94
+            true
95
+        );
96
+
97
+        if ( $id && ! is_wp_error( $id ) ) {
98
+            $discount->set_id( $id );
99
+            $this->update_post_meta( $discount );
100
+            $discount->save_meta_data();
101
+            $discount->apply_changes();
102
+            $this->clear_caches( $discount );
103
+            do_action( 'getpaid_new_discount', $discount );
104
+            return true;
105
+        }
106
+
107
+        if ( is_wp_error( $id ) ) {
108
+            $discount->last_error = $id->get_error_message();
109
+        }
110
+
111
+        return false;
112
+    }
113
+
114
+    /**
115
+     * Method to read a discount from the database.
116
+     *
117
+     * @param WPInv_Discount $discount Discount object.
118
+     *
119
+     */
120
+    public function read( &$discount ) {
121
+
122
+        $discount->set_defaults();
123
+        $discount_object = get_post( $discount->get_id() );
124
+
125
+        if ( ! $discount->get_id() || ! $discount_object || $discount_object->post_type != 'wpi_discount' ) {
126
+            $discount->last_error = __( 'Invalid discount.', 'invoicing' );
127
+            $discount->set_id( 0 );
128
+            return false;
129
+        }
130
+
131
+        $discount->set_props(
132
+            array(
133
+                'date_created'  => 0 < $discount_object->post_date ? $discount_object->post_date : null,
134
+                'date_modified' => 0 < $discount_object->post_modified ? $discount_object->post_modified : null,
135
+                'status'        => $discount_object->post_status,
136
+                'name'          => $discount_object->post_title,
137
+                'author'        => $discount_object->post_author,
138
+                'description'   => $discount_object->post_excerpt,
139
+            )
140
+        );
141
+
142
+        $this->read_object_data( $discount, $discount_object );
143
+        $discount->read_meta_data();
144
+        $discount->set_object_read( true );
145
+        do_action( 'getpaid_read_discount', $discount );
146
+
147
+    }
148
+
149
+    /**
150
+     * Method to update a discount in the database.
151
+     *
152
+     * @param WPInv_Discount $discount Discount object.
153
+     */
154
+    public function update( &$discount ) {
155
+        $discount->save_meta_data();
156
+        $discount->set_version( WPINV_VERSION );
157
+
158
+        if ( null === $discount->get_date_created( 'edit' ) ) {
159
+            $discount->set_date_created( current_time( 'mysql' ) );
160
+        }
161
+
162
+        // Grab the current status so we can compare.
163
+        $previous_status = get_post_status( $discount->get_id() );
164
+
165
+        $changes = $discount->get_changes();
166
+
167
+        // Only update the post when the post data changes.
168
+        if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author', 'post_excerpt' ), array_keys( $changes ) ) ) {
169
+            $post_data = array(
170
+                'post_date'     => $discount->get_date_created( 'edit' ),
171
+                'post_status'   => $discount->get_status( 'edit' ),
172
+                'post_title'    => $discount->get_name( 'edit' ),
173
+                'post_author'   => $discount->get_author( 'edit' ),
174
+                'post_modified' => $discount->get_date_modified( 'edit' ),
175
+                'post_excerpt'  => $discount->get_description( 'edit' ),
176
+            );
177
+
178
+            /**
179
+             * When updating this object, to prevent infinite loops, use $wpdb
180
+             * to update data, since wp_update_post spawns more calls to the
181
+             * save_post action.
182
+             *
183
+             * This ensures hooks are fired by either WP itself (admin screen save),
184
+             * or an update purely from CRUD.
185
+             */
186
+            if ( doing_action( 'save_post' ) ) {
187
+                $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $discount->get_id() ) );
188
+                clean_post_cache( $discount->get_id() );
189
+            } else {
190
+                wp_update_post( array_merge( array( 'ID' => $discount->get_id() ), $post_data ) );
191
+            }
192
+            $discount->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
193
+        }
194
+        $this->update_post_meta( $discount );
195
+        $discount->apply_changes();
196
+        $this->clear_caches( $discount );
197
+
198
+        // Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
199
+        $new_status = $discount->get_status( 'edit' );
200
+
201
+        if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
202
+            do_action( 'getpaid_new_discount', $discount );
203
+        } else {
204
+            do_action( 'getpaid_update_discount', $discount );
205
+        }
206
+
207
+    }
208
+
209
+    /*
210 210
 	|--------------------------------------------------------------------------
211 211
 	| Additional Methods
212 212
 	|--------------------------------------------------------------------------
Please login to merge, or discard this patch.
Spacing   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  * GetPaid_Discount_Data_Store class file.
5 5
  *
6 6
  */
7
-if ( ! defined( 'ABSPATH' ) ) {
7
+if (!defined('ABSPATH')) {
8 8
 	exit;
9 9
 }
10 10
 
@@ -73,38 +73,38 @@  discard block
 block discarded – undo
73 73
 	 *
74 74
 	 * @param WPInv_Discount $discount Discount object.
75 75
 	 */
76
-	public function create( &$discount ) {
77
-		$discount->set_version( WPINV_VERSION );
78
-		$discount->set_date_created( current_time( 'mysql' ) );
76
+	public function create(&$discount) {
77
+		$discount->set_version(WPINV_VERSION);
78
+		$discount->set_date_created(current_time('mysql'));
79 79
 
80 80
 		// Create a new post.
81 81
 		$id = wp_insert_post(
82 82
 			apply_filters(
83 83
 				'getpaid_new_discount_data',
84 84
 				array(
85
-					'post_date'    => $discount->get_date_created( 'edit' ),
85
+					'post_date'    => $discount->get_date_created('edit'),
86 86
 					'post_type'    => 'wpi_discount',
87
-					'post_status'  => $this->get_post_status( $discount ),
87
+					'post_status'  => $this->get_post_status($discount),
88 88
 					'ping_status'  => 'closed',
89
-					'post_author'  => $discount->get_author( 'edit' ),
90
-					'post_title'   => $discount->get_name( 'edit' ),
91
-					'post_excerpt' => $discount->get_description( 'edit' ),
89
+					'post_author'  => $discount->get_author('edit'),
90
+					'post_title'   => $discount->get_name('edit'),
91
+					'post_excerpt' => $discount->get_description('edit'),
92 92
 				)
93 93
 			),
94 94
 			true
95 95
 		);
96 96
 
97
-		if ( $id && ! is_wp_error( $id ) ) {
98
-			$discount->set_id( $id );
99
-			$this->update_post_meta( $discount );
97
+		if ($id && !is_wp_error($id)) {
98
+			$discount->set_id($id);
99
+			$this->update_post_meta($discount);
100 100
 			$discount->save_meta_data();
101 101
 			$discount->apply_changes();
102
-			$this->clear_caches( $discount );
103
-			do_action( 'getpaid_new_discount', $discount );
102
+			$this->clear_caches($discount);
103
+			do_action('getpaid_new_discount', $discount);
104 104
 			return true;
105 105
 		}
106 106
 
107
-		if ( is_wp_error( $id ) ) {
107
+		if (is_wp_error($id)) {
108 108
 			$discount->last_error = $id->get_error_message();
109 109
 		}
110 110
 
@@ -117,14 +117,14 @@  discard block
 block discarded – undo
117 117
 	 * @param WPInv_Discount $discount Discount object.
118 118
 	 *
119 119
 	 */
120
-	public function read( &$discount ) {
120
+	public function read(&$discount) {
121 121
 
122 122
 		$discount->set_defaults();
123
-		$discount_object = get_post( $discount->get_id() );
123
+		$discount_object = get_post($discount->get_id());
124 124
 
125
-		if ( ! $discount->get_id() || ! $discount_object || $discount_object->post_type != 'wpi_discount' ) {
126
-			$discount->last_error = __( 'Invalid discount.', 'invoicing' );
127
-			$discount->set_id( 0 );
125
+		if (!$discount->get_id() || !$discount_object || $discount_object->post_type != 'wpi_discount') {
126
+			$discount->last_error = __('Invalid discount.', 'invoicing');
127
+			$discount->set_id(0);
128 128
 			return false;
129 129
 		}
130 130
 
@@ -139,10 +139,10 @@  discard block
 block discarded – undo
139 139
 			)
140 140
 		);
141 141
 
142
-		$this->read_object_data( $discount, $discount_object );
142
+		$this->read_object_data($discount, $discount_object);
143 143
 		$discount->read_meta_data();
144
-		$discount->set_object_read( true );
145
-		do_action( 'getpaid_read_discount', $discount );
144
+		$discount->set_object_read(true);
145
+		do_action('getpaid_read_discount', $discount);
146 146
 
147 147
 	}
148 148
 
@@ -151,28 +151,28 @@  discard block
 block discarded – undo
151 151
 	 *
152 152
 	 * @param WPInv_Discount $discount Discount object.
153 153
 	 */
154
-	public function update( &$discount ) {
154
+	public function update(&$discount) {
155 155
 		$discount->save_meta_data();
156
-		$discount->set_version( WPINV_VERSION );
156
+		$discount->set_version(WPINV_VERSION);
157 157
 
158
-		if ( null === $discount->get_date_created( 'edit' ) ) {
159
-			$discount->set_date_created( current_time( 'mysql' ) );
158
+		if (null === $discount->get_date_created('edit')) {
159
+			$discount->set_date_created(current_time('mysql'));
160 160
 		}
161 161
 
162 162
 		// Grab the current status so we can compare.
163
-		$previous_status = get_post_status( $discount->get_id() );
163
+		$previous_status = get_post_status($discount->get_id());
164 164
 
165 165
 		$changes = $discount->get_changes();
166 166
 
167 167
 		// Only update the post when the post data changes.
168
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author', 'post_excerpt' ), array_keys( $changes ) ) ) {
168
+		if (array_intersect(array('date_created', 'date_modified', 'status', 'name', 'author', 'post_excerpt'), array_keys($changes))) {
169 169
 			$post_data = array(
170
-				'post_date'     => $discount->get_date_created( 'edit' ),
171
-				'post_status'   => $discount->get_status( 'edit' ),
172
-				'post_title'    => $discount->get_name( 'edit' ),
173
-				'post_author'   => $discount->get_author( 'edit' ),
174
-				'post_modified' => $discount->get_date_modified( 'edit' ),
175
-				'post_excerpt'  => $discount->get_description( 'edit' ),
170
+				'post_date'     => $discount->get_date_created('edit'),
171
+				'post_status'   => $discount->get_status('edit'),
172
+				'post_title'    => $discount->get_name('edit'),
173
+				'post_author'   => $discount->get_author('edit'),
174
+				'post_modified' => $discount->get_date_modified('edit'),
175
+				'post_excerpt'  => $discount->get_description('edit'),
176 176
 			);
177 177
 
178 178
 			/**
@@ -183,25 +183,25 @@  discard block
 block discarded – undo
183 183
 			 * This ensures hooks are fired by either WP itself (admin screen save),
184 184
 			 * or an update purely from CRUD.
185 185
 			 */
186
-			if ( doing_action( 'save_post' ) ) {
187
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $discount->get_id() ) );
188
-				clean_post_cache( $discount->get_id() );
186
+			if (doing_action('save_post')) {
187
+				$GLOBALS['wpdb']->update($GLOBALS['wpdb']->posts, $post_data, array('ID' => $discount->get_id()));
188
+				clean_post_cache($discount->get_id());
189 189
 			} else {
190
-				wp_update_post( array_merge( array( 'ID' => $discount->get_id() ), $post_data ) );
190
+				wp_update_post(array_merge(array('ID' => $discount->get_id()), $post_data));
191 191
 			}
192
-			$discount->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
192
+			$discount->read_meta_data(true); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
193 193
 		}
194
-		$this->update_post_meta( $discount );
194
+		$this->update_post_meta($discount);
195 195
 		$discount->apply_changes();
196
-		$this->clear_caches( $discount );
196
+		$this->clear_caches($discount);
197 197
 
198 198
 		// Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
199
-		$new_status = $discount->get_status( 'edit' );
199
+		$new_status = $discount->get_status('edit');
200 200
 
201
-		if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
202
-			do_action( 'getpaid_new_discount', $discount );
201
+		if ($new_status !== $previous_status && in_array($previous_status, array('new', 'auto-draft', 'draft'), true)) {
202
+			do_action('getpaid_new_discount', $discount);
203 203
 		} else {
204
-			do_action( 'getpaid_update_discount', $discount );
204
+			do_action('getpaid_update_discount', $discount);
205 205
 		}
206 206
 
207 207
 	}
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-invoice-data-store.php 2 patches
Indentation   +489 added lines, -489 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
  *
6 6
  */
7 7
 if ( ! defined( 'ABSPATH' ) ) {
8
-	exit;
8
+    exit;
9 9
 }
10 10
 
11 11
 /**
@@ -15,544 +15,544 @@  discard block
 block discarded – undo
15 15
  */
16 16
 class GetPaid_Invoice_Data_Store extends GetPaid_Data_Store_WP {
17 17
 
18
-	/**
19
-	 * Data stored in meta keys, but not considered "meta" for a discount.
20
-	 *
21
-	 * @since 1.0.19
22
-	 * @var array
23
-	 */
24
-	protected $internal_meta_keys = array(
25
-		'_wpinv_subscr_profile_id',
26
-		'_wpinv_subscription_id',
27
-		'_wpinv_taxes',
28
-		'_wpinv_fees',
29
-		'_wpinv_discounts',
30
-		'_wpinv_submission_id',
31
-		'_wpinv_payment_form',
32
-		'_wpinv_is_viewed',
33
-		'_wpinv_phone',
34
-		'_wpinv_company_id',
35
-		'wpinv_shipping',
36
-		'wpinv_email_cc',
37
-		'wpinv_template',
38
-		'wpinv_created_via',
39
-	);
40
-
41
-	/**
42
-	 * A map of meta keys to data props.
43
-	 *
44
-	 * @since 1.0.19
45
-	 *
46
-	 * @var array
47
-	 */
48
-	protected $meta_key_to_props = array(
49
-		'_wpinv_subscr_profile_id' => 'remote_subscription_id',
50
-		'_wpinv_subscription_id'   => 'subscription_id',
51
-		'_wpinv_taxes'             => 'taxes',
52
-		'_wpinv_fees'              => 'fees',
53
-		'_wpinv_discounts'         => 'discounts',
54
-		'_wpinv_submission_id'     => 'submission_id',
55
-		'_wpinv_payment_form'      => 'payment_form',
56
-		'_wpinv_is_viewed'         => 'is_viewed',
57
-		'wpinv_email_cc'           => 'email_cc',
58
-		'wpinv_template'           => 'template',
59
-		'wpinv_created_via'        => 'created_via',
60
-		'_wpinv_phone'             => 'phone',
61
-		'_wpinv_company_id'        => 'company_id',
62
-		'wpinv_shipping'           => 'shipping',
63
-	);
64
-
65
-	/**
66
-	 * A map of database fields to data props.
67
-	 *
68
-	 * @since 1.0.19
69
-	 *
70
-	 * @var array
71
-	 */
72
-	protected $database_fields_to_props = array(
73
-		'post_id'            => 'id',
74
-		'number'             => 'number',
75
-		'currency'           => 'currency',
76
-		'key'                => 'key',
77
-		'type'               => 'type',
78
-		'mode'               => 'mode',
79
-		'user_ip'            => 'user_ip',
80
-		'first_name'         => 'first_name',
81
-		'last_name'          => 'last_name',
82
-		'address'            => 'address',
83
-		'city'               => 'city',
84
-		'state'              => 'state',
85
-		'country'            => 'country',
86
-		'zip'                => 'zip',
87
-		'zip'                => 'zip',
88
-		'adddress_confirmed' => 'address_confirmed',
89
-		'gateway'            => 'gateway',
90
-		'transaction_id'     => 'transaction_id',
91
-		'currency'           => 'currency',
92
-		'subtotal'           => 'subtotal',
93
-		'tax'                => 'total_tax',
94
-		'fees_total'         => 'total_fees',
95
-		'discount'           => 'total_discount',
96
-		'total'              => 'total',
97
-		'discount_code'      => 'discount_code',
98
-		'disable_taxes'      => 'disable_taxes',
99
-		'due_date'           => 'due_date',
100
-		'completed_date'     => 'completed_date',
101
-		'company'            => 'company',
102
-		'vat_number'         => 'vat_number',
103
-		'vat_rate'           => 'vat_rate',
104
-	);
105
-
106
-	/*
18
+    /**
19
+     * Data stored in meta keys, but not considered "meta" for a discount.
20
+     *
21
+     * @since 1.0.19
22
+     * @var array
23
+     */
24
+    protected $internal_meta_keys = array(
25
+        '_wpinv_subscr_profile_id',
26
+        '_wpinv_subscription_id',
27
+        '_wpinv_taxes',
28
+        '_wpinv_fees',
29
+        '_wpinv_discounts',
30
+        '_wpinv_submission_id',
31
+        '_wpinv_payment_form',
32
+        '_wpinv_is_viewed',
33
+        '_wpinv_phone',
34
+        '_wpinv_company_id',
35
+        'wpinv_shipping',
36
+        'wpinv_email_cc',
37
+        'wpinv_template',
38
+        'wpinv_created_via',
39
+    );
40
+
41
+    /**
42
+     * A map of meta keys to data props.
43
+     *
44
+     * @since 1.0.19
45
+     *
46
+     * @var array
47
+     */
48
+    protected $meta_key_to_props = array(
49
+        '_wpinv_subscr_profile_id' => 'remote_subscription_id',
50
+        '_wpinv_subscription_id'   => 'subscription_id',
51
+        '_wpinv_taxes'             => 'taxes',
52
+        '_wpinv_fees'              => 'fees',
53
+        '_wpinv_discounts'         => 'discounts',
54
+        '_wpinv_submission_id'     => 'submission_id',
55
+        '_wpinv_payment_form'      => 'payment_form',
56
+        '_wpinv_is_viewed'         => 'is_viewed',
57
+        'wpinv_email_cc'           => 'email_cc',
58
+        'wpinv_template'           => 'template',
59
+        'wpinv_created_via'        => 'created_via',
60
+        '_wpinv_phone'             => 'phone',
61
+        '_wpinv_company_id'        => 'company_id',
62
+        'wpinv_shipping'           => 'shipping',
63
+    );
64
+
65
+    /**
66
+     * A map of database fields to data props.
67
+     *
68
+     * @since 1.0.19
69
+     *
70
+     * @var array
71
+     */
72
+    protected $database_fields_to_props = array(
73
+        'post_id'            => 'id',
74
+        'number'             => 'number',
75
+        'currency'           => 'currency',
76
+        'key'                => 'key',
77
+        'type'               => 'type',
78
+        'mode'               => 'mode',
79
+        'user_ip'            => 'user_ip',
80
+        'first_name'         => 'first_name',
81
+        'last_name'          => 'last_name',
82
+        'address'            => 'address',
83
+        'city'               => 'city',
84
+        'state'              => 'state',
85
+        'country'            => 'country',
86
+        'zip'                => 'zip',
87
+        'zip'                => 'zip',
88
+        'adddress_confirmed' => 'address_confirmed',
89
+        'gateway'            => 'gateway',
90
+        'transaction_id'     => 'transaction_id',
91
+        'currency'           => 'currency',
92
+        'subtotal'           => 'subtotal',
93
+        'tax'                => 'total_tax',
94
+        'fees_total'         => 'total_fees',
95
+        'discount'           => 'total_discount',
96
+        'total'              => 'total',
97
+        'discount_code'      => 'discount_code',
98
+        'disable_taxes'      => 'disable_taxes',
99
+        'due_date'           => 'due_date',
100
+        'completed_date'     => 'completed_date',
101
+        'company'            => 'company',
102
+        'vat_number'         => 'vat_number',
103
+        'vat_rate'           => 'vat_rate',
104
+    );
105
+
106
+    /*
107 107
 	|--------------------------------------------------------------------------
108 108
 	| CRUD Methods
109 109
 	|--------------------------------------------------------------------------
110 110
 	*/
111 111
 
112
-	/**
113
-	 * Method to create a new invoice in the database.
114
-	 *
115
-	 * @param WPInv_Invoice $invoice Invoice object.
116
-	 */
117
-	public function create( &$invoice ) {
118
-		$invoice->set_version( WPINV_VERSION );
119
-		$invoice->set_date_created( current_time( 'mysql' ) );
120
-
121
-		// Create a new post.
122
-		$id = wp_insert_post(
123
-			apply_filters(
124
-				'getpaid_new_invoice_data',
125
-				array(
126
-					'post_date'    => $invoice->get_date_created( 'edit' ),
127
-					'post_type'    => $invoice->get_post_type( 'edit' ),
128
-					'post_status'  => $this->get_post_status( $invoice ),
129
-					'ping_status'  => 'closed',
130
-					'post_author'  => $invoice->get_user_id( 'edit' ),
131
-					'post_title'   => $invoice->get_title( 'edit' ),
132
-					'post_excerpt' => $invoice->get_description( 'edit' ),
133
-					'post_parent'  => $invoice->get_parent_id( 'edit' ),
134
-				)
135
-			),
136
-			true
137
-		);
138
-
139
-		if ( $id && ! is_wp_error( $id ) ) {
140
-
141
-			// Update the new id and regenerate a title.
142
-			$invoice->set_id( $id );
143
-
144
-			$invoice->maybe_set_number();
145
-
146
-			wp_update_post(
147
-				array(
148
-					'ID'         => $invoice->get_id(),
149
-					'post_title' => $invoice->get_number( 'edit' ),
150
-					'post_name'  => $invoice->get_path( 'edit' ),
151
-				)
152
-			);
153
-
154
-			// Save special fields and items.
155
-			$this->save_special_fields( $invoice );
156
-			$this->save_items( $invoice );
157
-
158
-			// Update meta data.
159
-			$this->update_post_meta( $invoice );
160
-			$invoice->save_meta_data();
161
-
162
-			// Apply changes.
163
-			$invoice->apply_changes();
164
-			$this->clear_caches( $invoice );
165
-
166
-			// Fires after a new invoice is created.
167
-			do_action( 'getpaid_new_invoice', $invoice );
168
-			return true;
169
-		}
170
-
171
-		if ( is_wp_error( $id ) ) {
172
-			$invoice->last_error = $id->get_error_message();
173
-		}
174
-
175
-		return false;
176
-	}
177
-
178
-	/**
179
-	 * Method to read an invoice from the database.
180
-	 *
181
-	 * @param WPInv_Invoice $invoice Invoice object.
182
-	 *
183
-	 */
184
-	public function read( &$invoice ) {
185
-
186
-		$invoice->set_defaults();
187
-		$invoice_object = get_post( $invoice->get_id() );
188
-
189
-		if ( ! $invoice->get_id() || ! $invoice_object || ! getpaid_is_invoice_post_type( $invoice_object->post_type ) ) {
190
-			$invoice->last_error = __( 'Invalid invoice.', 'invoicing' );
191
-			$invoice->set_id( 0 );
192
-			return false;
193
-		}
194
-
195
-		$invoice->set_props(
196
-			array(
197
-				'date_created'  => 0 < $invoice_object->post_date ? $invoice_object->post_date : null,
198
-				'date_modified' => 0 < $invoice_object->post_modified ? $invoice_object->post_modified : null,
199
-				'status'        => $invoice_object->post_status,
200
-				'author'        => $invoice_object->post_author,
201
-				'description'   => $invoice_object->post_excerpt,
202
-				'parent_id'     => $invoice_object->post_parent,
203
-				'name'          => $invoice_object->post_title,
204
-				'path'          => $invoice_object->post_name,
205
-				'post_type'     => $invoice_object->post_type,
206
-			)
207
-		);
208
-
209
-		$invoice->set_type( $invoice_object->post_type );
210
-
211
-		$this->read_object_data( $invoice, $invoice_object );
212
-		$this->add_special_fields( $invoice );
213
-		$this->add_items( $invoice );
214
-		$invoice->read_meta_data();
215
-		$invoice->set_object_read( true );
216
-		do_action( 'getpaid_read_invoice', $invoice );
217
-
218
-	}
219
-
220
-	/**
221
-	 * Method to update an invoice in the database.
222
-	 *
223
-	 * @param WPInv_Invoice $invoice Invoice object.
224
-	 */
225
-	public function update( &$invoice ) {
226
-		$invoice->save_meta_data();
227
-		$invoice->set_version( WPINV_VERSION );
228
-
229
-		if ( null === $invoice->get_date_created( 'edit' ) ) {
230
-			$invoice->set_date_created( current_time( 'mysql' ) );
231
-		}
232
-
233
-		// Ensure both the key and number are set.
234
-		$invoice->get_path();
235
-
236
-		// Grab the current status so we can compare.
237
-		$previous_status = get_post_status( $invoice->get_id() );
238
-
239
-		$changes = $invoice->get_changes();
240
-
241
-		// Only update the post when the post data changes.
242
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author', 'description', 'parent_id', 'post_excerpt', 'path' ), array_keys( $changes ) ) ) {
243
-			$post_data = array(
244
-				'post_date'     => $invoice->get_date_created( 'edit' ),
245
-				'post_date_gmt' => $invoice->get_date_created_gmt( 'edit' ),
246
-				'post_status'   => $invoice->get_status( 'edit' ),
247
-				'post_title'    => $invoice->get_name( 'edit' ),
248
-				'post_author'   => $invoice->get_user_id( 'edit' ),
249
-				'post_modified' => $invoice->get_date_modified( 'edit' ),
250
-				'post_excerpt'  => $invoice->get_description( 'edit' ),
251
-				'post_parent'   => $invoice->get_parent_id( 'edit' ),
252
-				'post_name'     => $invoice->get_path( 'edit' ),
253
-				'post_type'     => $invoice->get_post_type( 'edit' ),
254
-			);
255
-
256
-			/**
257
-			 * When updating this object, to prevent infinite loops, use $wpdb
258
-			 * to update data, since wp_update_post spawns more calls to the
259
-			 * save_post action.
260
-			 *
261
-			 * This ensures hooks are fired by either WP itself (admin screen save),
262
-			 * or an update purely from CRUD.
263
-			 */
264
-			if ( doing_action( 'save_post' ) ) {
265
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $invoice->get_id() ) );
266
-				clean_post_cache( $invoice->get_id() );
267
-			} else {
268
-				wp_update_post( array_merge( array( 'ID' => $invoice->get_id() ), $post_data ) );
269
-			}
270
-			$invoice->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
271
-		}
272
-
273
-		// Update meta data.
274
-		$this->update_post_meta( $invoice );
275
-
276
-		// Save special fields and items.
277
-		$this->save_special_fields( $invoice );
278
-		$this->save_items( $invoice );
279
-
280
-		// Apply the changes.
281
-		$invoice->apply_changes();
282
-
283
-		// Clear caches.
284
-		$this->clear_caches( $invoice );
285
-
286
-		// Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
287
-		$new_status = $invoice->get_status( 'edit' );
288
-
289
-		if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
290
-			do_action( 'getpaid_new_invoice', $invoice );
291
-		} else {
292
-			do_action( 'getpaid_update_invoice', $invoice );
293
-		}
294
-
295
-	}
296
-
297
-	/*
112
+    /**
113
+     * Method to create a new invoice in the database.
114
+     *
115
+     * @param WPInv_Invoice $invoice Invoice object.
116
+     */
117
+    public function create( &$invoice ) {
118
+        $invoice->set_version( WPINV_VERSION );
119
+        $invoice->set_date_created( current_time( 'mysql' ) );
120
+
121
+        // Create a new post.
122
+        $id = wp_insert_post(
123
+            apply_filters(
124
+                'getpaid_new_invoice_data',
125
+                array(
126
+                    'post_date'    => $invoice->get_date_created( 'edit' ),
127
+                    'post_type'    => $invoice->get_post_type( 'edit' ),
128
+                    'post_status'  => $this->get_post_status( $invoice ),
129
+                    'ping_status'  => 'closed',
130
+                    'post_author'  => $invoice->get_user_id( 'edit' ),
131
+                    'post_title'   => $invoice->get_title( 'edit' ),
132
+                    'post_excerpt' => $invoice->get_description( 'edit' ),
133
+                    'post_parent'  => $invoice->get_parent_id( 'edit' ),
134
+                )
135
+            ),
136
+            true
137
+        );
138
+
139
+        if ( $id && ! is_wp_error( $id ) ) {
140
+
141
+            // Update the new id and regenerate a title.
142
+            $invoice->set_id( $id );
143
+
144
+            $invoice->maybe_set_number();
145
+
146
+            wp_update_post(
147
+                array(
148
+                    'ID'         => $invoice->get_id(),
149
+                    'post_title' => $invoice->get_number( 'edit' ),
150
+                    'post_name'  => $invoice->get_path( 'edit' ),
151
+                )
152
+            );
153
+
154
+            // Save special fields and items.
155
+            $this->save_special_fields( $invoice );
156
+            $this->save_items( $invoice );
157
+
158
+            // Update meta data.
159
+            $this->update_post_meta( $invoice );
160
+            $invoice->save_meta_data();
161
+
162
+            // Apply changes.
163
+            $invoice->apply_changes();
164
+            $this->clear_caches( $invoice );
165
+
166
+            // Fires after a new invoice is created.
167
+            do_action( 'getpaid_new_invoice', $invoice );
168
+            return true;
169
+        }
170
+
171
+        if ( is_wp_error( $id ) ) {
172
+            $invoice->last_error = $id->get_error_message();
173
+        }
174
+
175
+        return false;
176
+    }
177
+
178
+    /**
179
+     * Method to read an invoice from the database.
180
+     *
181
+     * @param WPInv_Invoice $invoice Invoice object.
182
+     *
183
+     */
184
+    public function read( &$invoice ) {
185
+
186
+        $invoice->set_defaults();
187
+        $invoice_object = get_post( $invoice->get_id() );
188
+
189
+        if ( ! $invoice->get_id() || ! $invoice_object || ! getpaid_is_invoice_post_type( $invoice_object->post_type ) ) {
190
+            $invoice->last_error = __( 'Invalid invoice.', 'invoicing' );
191
+            $invoice->set_id( 0 );
192
+            return false;
193
+        }
194
+
195
+        $invoice->set_props(
196
+            array(
197
+                'date_created'  => 0 < $invoice_object->post_date ? $invoice_object->post_date : null,
198
+                'date_modified' => 0 < $invoice_object->post_modified ? $invoice_object->post_modified : null,
199
+                'status'        => $invoice_object->post_status,
200
+                'author'        => $invoice_object->post_author,
201
+                'description'   => $invoice_object->post_excerpt,
202
+                'parent_id'     => $invoice_object->post_parent,
203
+                'name'          => $invoice_object->post_title,
204
+                'path'          => $invoice_object->post_name,
205
+                'post_type'     => $invoice_object->post_type,
206
+            )
207
+        );
208
+
209
+        $invoice->set_type( $invoice_object->post_type );
210
+
211
+        $this->read_object_data( $invoice, $invoice_object );
212
+        $this->add_special_fields( $invoice );
213
+        $this->add_items( $invoice );
214
+        $invoice->read_meta_data();
215
+        $invoice->set_object_read( true );
216
+        do_action( 'getpaid_read_invoice', $invoice );
217
+
218
+    }
219
+
220
+    /**
221
+     * Method to update an invoice in the database.
222
+     *
223
+     * @param WPInv_Invoice $invoice Invoice object.
224
+     */
225
+    public function update( &$invoice ) {
226
+        $invoice->save_meta_data();
227
+        $invoice->set_version( WPINV_VERSION );
228
+
229
+        if ( null === $invoice->get_date_created( 'edit' ) ) {
230
+            $invoice->set_date_created( current_time( 'mysql' ) );
231
+        }
232
+
233
+        // Ensure both the key and number are set.
234
+        $invoice->get_path();
235
+
236
+        // Grab the current status so we can compare.
237
+        $previous_status = get_post_status( $invoice->get_id() );
238
+
239
+        $changes = $invoice->get_changes();
240
+
241
+        // Only update the post when the post data changes.
242
+        if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author', 'description', 'parent_id', 'post_excerpt', 'path' ), array_keys( $changes ) ) ) {
243
+            $post_data = array(
244
+                'post_date'     => $invoice->get_date_created( 'edit' ),
245
+                'post_date_gmt' => $invoice->get_date_created_gmt( 'edit' ),
246
+                'post_status'   => $invoice->get_status( 'edit' ),
247
+                'post_title'    => $invoice->get_name( 'edit' ),
248
+                'post_author'   => $invoice->get_user_id( 'edit' ),
249
+                'post_modified' => $invoice->get_date_modified( 'edit' ),
250
+                'post_excerpt'  => $invoice->get_description( 'edit' ),
251
+                'post_parent'   => $invoice->get_parent_id( 'edit' ),
252
+                'post_name'     => $invoice->get_path( 'edit' ),
253
+                'post_type'     => $invoice->get_post_type( 'edit' ),
254
+            );
255
+
256
+            /**
257
+             * When updating this object, to prevent infinite loops, use $wpdb
258
+             * to update data, since wp_update_post spawns more calls to the
259
+             * save_post action.
260
+             *
261
+             * This ensures hooks are fired by either WP itself (admin screen save),
262
+             * or an update purely from CRUD.
263
+             */
264
+            if ( doing_action( 'save_post' ) ) {
265
+                $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $invoice->get_id() ) );
266
+                clean_post_cache( $invoice->get_id() );
267
+            } else {
268
+                wp_update_post( array_merge( array( 'ID' => $invoice->get_id() ), $post_data ) );
269
+            }
270
+            $invoice->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
271
+        }
272
+
273
+        // Update meta data.
274
+        $this->update_post_meta( $invoice );
275
+
276
+        // Save special fields and items.
277
+        $this->save_special_fields( $invoice );
278
+        $this->save_items( $invoice );
279
+
280
+        // Apply the changes.
281
+        $invoice->apply_changes();
282
+
283
+        // Clear caches.
284
+        $this->clear_caches( $invoice );
285
+
286
+        // Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
287
+        $new_status = $invoice->get_status( 'edit' );
288
+
289
+        if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
290
+            do_action( 'getpaid_new_invoice', $invoice );
291
+        } else {
292
+            do_action( 'getpaid_update_invoice', $invoice );
293
+        }
294
+
295
+    }
296
+
297
+    /*
298 298
 	|--------------------------------------------------------------------------
299 299
 	| Additional Methods
300 300
 	|--------------------------------------------------------------------------
301 301
 	*/
302 302
 
303
-	/**
303
+    /**
304 304
      * Retrieves special fields and adds to the invoice.
305
-	 *
306
-	 * @param WPInv_Invoice $invoice Invoice object.
305
+     *
306
+     * @param WPInv_Invoice $invoice Invoice object.
307 307
      */
308 308
     public function add_special_fields( &$invoice ) {
309
-		global $wpdb;
310
-
311
-		// Maybe retrieve from the cache.
312
-		$data   = wp_cache_get( $invoice->get_id(), 'getpaid_invoice_special_fields' );
313
-
314
-		// If not found, retrieve from the db.
315
-		if ( false === $data ) {
316
-			$table = $wpdb->prefix . 'getpaid_invoices';
317
-
318
-			$data  = $wpdb->get_row(
319
-				$wpdb->prepare( "SELECT * FROM $table WHERE `post_id`=%d LIMIT 1", $invoice->get_id() ),
320
-				ARRAY_A
321
-			);
322
-
323
-			// Update the cache with our data
324
-			wp_cache_set( $invoice->get_id(), $data, 'getpaid_invoice_special_fields' );
325
-
326
-		}
327
-
328
-		// Abort if the data does not exist.
329
-		if ( empty( $data ) ) {
330
-			$invoice->set_object_read( true );
331
-			$invoice->set_props( wpinv_get_user_address( $invoice->get_user_id() ) );
332
-			return;
333
-		}
334
-
335
-		$props = array();
336
-
337
-		foreach ( $this->database_fields_to_props as $db_field => $prop ) {
338
-
339
-			if ( $db_field == 'post_id' ) {
340
-				continue;
341
-			}
342
-
343
-			$props[ $prop ] = $data[ $db_field ];
344
-		}
345
-
346
-		$invoice->set_props( $props );
347
-
348
-	}
349
-
350
-	/**
351
-	 * Gets a list of special fields that need updated based on change state
352
-	 * or if they are present in the database or not.
353
-	 *
354
-	 * @param  WPInv_Invoice $invoice       The Invoice object.
355
-	 * @return array                        A mapping of field keys => prop names, filtered by ones that should be updated.
356
-	 */
357
-	protected function get_special_fields_to_update( $invoice ) {
358
-		$fields_to_update = array();
359
-		$changed_props   = $invoice->get_changes();
360
-
361
-		// Props should be updated if they are a part of the $changed array or don't exist yet.
362
-		foreach ( $this->database_fields_to_props as $database_field => $prop ) {
363
-			if ( array_key_exists( $prop, $changed_props ) ) {
364
-				$fields_to_update[ $database_field ] = $prop;
365
-			}
366
-		}
367
-
368
-		return $fields_to_update;
369
-	}
370
-
371
-	/**
372
-	 * Helper method that updates all the database fields for an invoice based on it's settings in the WPInv_Invoice class.
373
-	 *
374
-	 * @param WPInv_Invoice $invoice WPInv_Invoice object.
375
-	 * @since 1.0.19
376
-	 */
377
-	protected function update_special_fields( &$invoice ) {
378
-		global $wpdb;
379
-
380
-		$updated_props    = array();
381
-		$fields_to_update = $this->get_special_fields_to_update( $invoice );
382
-
383
-		foreach ( $fields_to_update as $database_field => $prop ) {
384
-			$value = $invoice->{"get_$prop"}( 'edit' );
385
-			$value = is_string( $value ) ? wp_slash( $value ) : $value;
386
-			$value = is_bool( $value ) ? (int) $value : $value;
387
-			$updated_props[ $database_field ] = maybe_serialize( $value );
388
-		}
389
-
390
-		if ( ! empty( $updated_props ) ) {
391
-
392
-			$table = $wpdb->prefix . 'getpaid_invoices';
393
-			$wpdb->update( $table, $updated_props, array( 'post_id' => $invoice->get_id() ) );
394
-			wp_cache_delete( $invoice->get_id(), 'getpaid_invoice_special_fields' );
395
-			do_action( 'getpaid_invoice_update_database_fields', $invoice, $updated_props );
396
-
397
-		}
398
-
399
-	}
400
-
401
-	/**
402
-	 * Helper method that inserts special fields to the database.
403
-	 *
404
-	 * @param WPInv_Invoice $invoice WPInv_Invoice object.
405
-	 * @since 1.0.19
406
-	 */
407
-	protected function insert_special_fields( &$invoice ) {
408
-		global $wpdb;
409
-
410
-		$updated_props   = array();
411
-
412
-		foreach ( $this->database_fields_to_props as $database_field => $prop ) {
413
-			$value = $invoice->{"get_$prop"}( 'edit' );
414
-			$value = is_string( $value ) ? wp_slash( $value ) : $value;
415
-			$value = is_bool( $value ) ? (int) $value : $value;
416
-			$updated_props[ $database_field ] = maybe_serialize( $value );
417
-		}
418
-
419
-		$table = $wpdb->prefix . 'getpaid_invoices';
420
-		$wpdb->insert( $table, $updated_props );
421
-		wp_cache_delete( $invoice->get_id(), 'getpaid_invoice_special_fields' );
422
-		do_action( 'getpaid_invoice_insert_database_fields', $invoice, $updated_props );
423
-
424
-	}
425
-
426
-	/**
309
+        global $wpdb;
310
+
311
+        // Maybe retrieve from the cache.
312
+        $data   = wp_cache_get( $invoice->get_id(), 'getpaid_invoice_special_fields' );
313
+
314
+        // If not found, retrieve from the db.
315
+        if ( false === $data ) {
316
+            $table = $wpdb->prefix . 'getpaid_invoices';
317
+
318
+            $data  = $wpdb->get_row(
319
+                $wpdb->prepare( "SELECT * FROM $table WHERE `post_id`=%d LIMIT 1", $invoice->get_id() ),
320
+                ARRAY_A
321
+            );
322
+
323
+            // Update the cache with our data
324
+            wp_cache_set( $invoice->get_id(), $data, 'getpaid_invoice_special_fields' );
325
+
326
+        }
327
+
328
+        // Abort if the data does not exist.
329
+        if ( empty( $data ) ) {
330
+            $invoice->set_object_read( true );
331
+            $invoice->set_props( wpinv_get_user_address( $invoice->get_user_id() ) );
332
+            return;
333
+        }
334
+
335
+        $props = array();
336
+
337
+        foreach ( $this->database_fields_to_props as $db_field => $prop ) {
338
+
339
+            if ( $db_field == 'post_id' ) {
340
+                continue;
341
+            }
342
+
343
+            $props[ $prop ] = $data[ $db_field ];
344
+        }
345
+
346
+        $invoice->set_props( $props );
347
+
348
+    }
349
+
350
+    /**
351
+     * Gets a list of special fields that need updated based on change state
352
+     * or if they are present in the database or not.
353
+     *
354
+     * @param  WPInv_Invoice $invoice       The Invoice object.
355
+     * @return array                        A mapping of field keys => prop names, filtered by ones that should be updated.
356
+     */
357
+    protected function get_special_fields_to_update( $invoice ) {
358
+        $fields_to_update = array();
359
+        $changed_props   = $invoice->get_changes();
360
+
361
+        // Props should be updated if they are a part of the $changed array or don't exist yet.
362
+        foreach ( $this->database_fields_to_props as $database_field => $prop ) {
363
+            if ( array_key_exists( $prop, $changed_props ) ) {
364
+                $fields_to_update[ $database_field ] = $prop;
365
+            }
366
+        }
367
+
368
+        return $fields_to_update;
369
+    }
370
+
371
+    /**
372
+     * Helper method that updates all the database fields for an invoice based on it's settings in the WPInv_Invoice class.
373
+     *
374
+     * @param WPInv_Invoice $invoice WPInv_Invoice object.
375
+     * @since 1.0.19
376
+     */
377
+    protected function update_special_fields( &$invoice ) {
378
+        global $wpdb;
379
+
380
+        $updated_props    = array();
381
+        $fields_to_update = $this->get_special_fields_to_update( $invoice );
382
+
383
+        foreach ( $fields_to_update as $database_field => $prop ) {
384
+            $value = $invoice->{"get_$prop"}( 'edit' );
385
+            $value = is_string( $value ) ? wp_slash( $value ) : $value;
386
+            $value = is_bool( $value ) ? (int) $value : $value;
387
+            $updated_props[ $database_field ] = maybe_serialize( $value );
388
+        }
389
+
390
+        if ( ! empty( $updated_props ) ) {
391
+
392
+            $table = $wpdb->prefix . 'getpaid_invoices';
393
+            $wpdb->update( $table, $updated_props, array( 'post_id' => $invoice->get_id() ) );
394
+            wp_cache_delete( $invoice->get_id(), 'getpaid_invoice_special_fields' );
395
+            do_action( 'getpaid_invoice_update_database_fields', $invoice, $updated_props );
396
+
397
+        }
398
+
399
+    }
400
+
401
+    /**
402
+     * Helper method that inserts special fields to the database.
403
+     *
404
+     * @param WPInv_Invoice $invoice WPInv_Invoice object.
405
+     * @since 1.0.19
406
+     */
407
+    protected function insert_special_fields( &$invoice ) {
408
+        global $wpdb;
409
+
410
+        $updated_props   = array();
411
+
412
+        foreach ( $this->database_fields_to_props as $database_field => $prop ) {
413
+            $value = $invoice->{"get_$prop"}( 'edit' );
414
+            $value = is_string( $value ) ? wp_slash( $value ) : $value;
415
+            $value = is_bool( $value ) ? (int) $value : $value;
416
+            $updated_props[ $database_field ] = maybe_serialize( $value );
417
+        }
418
+
419
+        $table = $wpdb->prefix . 'getpaid_invoices';
420
+        $wpdb->insert( $table, $updated_props );
421
+        wp_cache_delete( $invoice->get_id(), 'getpaid_invoice_special_fields' );
422
+        do_action( 'getpaid_invoice_insert_database_fields', $invoice, $updated_props );
423
+
424
+    }
425
+
426
+    /**
427 427
      * Saves all special fields.
428
-	 *
429
-	 * @param WPInv_Invoice $invoice Invoice object.
428
+     *
429
+     * @param WPInv_Invoice $invoice Invoice object.
430 430
      */
431 431
     public function save_special_fields( &$invoice ) {
432
-		global $wpdb;
432
+        global $wpdb;
433 433
 
434
-		// The invoices table.
435
-		$table = $wpdb->prefix . 'getpaid_invoices';
436
-		$id    = (int) $invoice->get_id();
437
-		$invoice->maybe_set_key();
434
+        // The invoices table.
435
+        $table = $wpdb->prefix . 'getpaid_invoices';
436
+        $id    = (int) $invoice->get_id();
437
+        $invoice->maybe_set_key();
438 438
 
439
-		if ( $wpdb->get_var( "SELECT `post_id` FROM $table WHERE `post_id`= $id" ) ) {
439
+        if ( $wpdb->get_var( "SELECT `post_id` FROM $table WHERE `post_id`= $id" ) ) {
440 440
 
441
-			$this->update_special_fields( $invoice );
441
+            $this->update_special_fields( $invoice );
442 442
 
443
-		} else {
443
+        } else {
444 444
 
445
-			$this->insert_special_fields( $invoice );
445
+            $this->insert_special_fields( $invoice );
446 446
 
447
-		}
447
+        }
448 448
 
449
-	}
449
+    }
450 450
 
451
-	/**
451
+    /**
452 452
      * Set's up cart details.
453
-	 *
454
-	 * @param WPInv_Invoice $invoice Invoice object.
453
+     *
454
+     * @param WPInv_Invoice $invoice Invoice object.
455 455
      */
456 456
     public function add_items( &$invoice ) {
457
-		global $wpdb;
457
+        global $wpdb;
458 458
 
459
-		// Maybe retrieve from the cache.
460
-		$items = wp_cache_get( $invoice->get_id(), 'getpaid_invoice_cart_details' );
459
+        // Maybe retrieve from the cache.
460
+        $items = wp_cache_get( $invoice->get_id(), 'getpaid_invoice_cart_details' );
461 461
 
462
-		// If not found, retrieve from the db.
463
-		if ( false === $items ) {
464
-			$table = $wpdb->prefix . 'getpaid_invoice_items';
462
+        // If not found, retrieve from the db.
463
+        if ( false === $items ) {
464
+            $table = $wpdb->prefix . 'getpaid_invoice_items';
465 465
 
466
-			$items = $wpdb->get_results(
467
-				$wpdb->prepare( "SELECT * FROM $table WHERE `post_id`=%d", $invoice->get_id() )
468
-			);
466
+            $items = $wpdb->get_results(
467
+                $wpdb->prepare( "SELECT * FROM $table WHERE `post_id`=%d", $invoice->get_id() )
468
+            );
469 469
 
470
-			// Update the cache with our data
471
-			wp_cache_set( $invoice->get_id(), $items, 'getpaid_invoice_cart_details' );
470
+            // Update the cache with our data
471
+            wp_cache_set( $invoice->get_id(), $items, 'getpaid_invoice_cart_details' );
472 472
 
473
-		}
473
+        }
474 474
 
475
-		// Abort if no items found.
475
+        // Abort if no items found.
476 476
         if ( empty( $items ) ) {
477 477
             return;
478
-		}
479
-
480
-		$_items = array();
481
-		foreach ( $items as $item_data ) {
482
-			$item = new GetPaid_Form_Item( $item_data->item_id );
483
-
484
-			// Set item data.
485
-			$item->item_tax      = wpinv_sanitize_amount( $item_data->tax );
486
-			$item->item_discount = wpinv_sanitize_amount( $item_data->discount );
487
-			$item->set_name( $item_data->item_name );
488
-			$item->set_description( $item_data->item_description );
489
-			$item->set_price( $item_data->item_price );
490
-			$item->set_quantity( $item_data->quantity );
491
-			$item->set_item_meta( $item_data->meta );
492
-			$_items[] = $item;
493
-		}
494
-
495
-		$invoice->set_items( $_items );
496
-	}
497
-
498
-	/**
478
+        }
479
+
480
+        $_items = array();
481
+        foreach ( $items as $item_data ) {
482
+            $item = new GetPaid_Form_Item( $item_data->item_id );
483
+
484
+            // Set item data.
485
+            $item->item_tax      = wpinv_sanitize_amount( $item_data->tax );
486
+            $item->item_discount = wpinv_sanitize_amount( $item_data->discount );
487
+            $item->set_name( $item_data->item_name );
488
+            $item->set_description( $item_data->item_description );
489
+            $item->set_price( $item_data->item_price );
490
+            $item->set_quantity( $item_data->quantity );
491
+            $item->set_item_meta( $item_data->meta );
492
+            $_items[] = $item;
493
+        }
494
+
495
+        $invoice->set_items( $_items );
496
+    }
497
+
498
+    /**
499 499
      * Saves cart details.
500
-	 *
501
-	 * @param WPInv_Invoice $invoice Invoice object.
500
+     *
501
+     * @param WPInv_Invoice $invoice Invoice object.
502 502
      */
503 503
     public function save_items( $invoice ) {
504 504
 
505
-		// Delete previously existing items.
506
-		$this->delete_items( $invoice );
505
+        // Delete previously existing items.
506
+        $this->delete_items( $invoice );
507 507
 
508
-		$table   = $GLOBALS['wpdb']->prefix . 'getpaid_invoice_items';
508
+        $table   = $GLOBALS['wpdb']->prefix . 'getpaid_invoice_items';
509 509
 
510
-		foreach ( $invoice->get_cart_details() as $item_data ) {
511
-			$item_data = array_map( 'maybe_serialize', $item_data );
512
-			$GLOBALS['wpdb']->insert( $table, $item_data );
513
-		}
510
+        foreach ( $invoice->get_cart_details() as $item_data ) {
511
+            $item_data = array_map( 'maybe_serialize', $item_data );
512
+            $GLOBALS['wpdb']->insert( $table, $item_data );
513
+        }
514 514
 
515
-		wp_cache_delete( $invoice->get_id(), 'getpaid_invoice_cart_details' );
516
-		do_action( 'getpaid_invoice_save_items', $invoice );
515
+        wp_cache_delete( $invoice->get_id(), 'getpaid_invoice_cart_details' );
516
+        do_action( 'getpaid_invoice_save_items', $invoice );
517 517
 
518
-	}
518
+    }
519 519
 
520
-	/**
520
+    /**
521 521
      * Deletes an invoice's cart details from the database.
522
-	 *
523
-	 * @param WPInv_Invoice $invoice Invoice object.
522
+     *
523
+     * @param WPInv_Invoice $invoice Invoice object.
524 524
      */
525 525
     public function delete_items( $invoice ) {
526
-		$table = $GLOBALS['wpdb']->prefix . 'getpaid_invoice_items';
527
-		return $GLOBALS['wpdb']->delete( $table, array( 'post_id' => $invoice->get_id() ) );
528
-	}
526
+        $table = $GLOBALS['wpdb']->prefix . 'getpaid_invoice_items';
527
+        return $GLOBALS['wpdb']->delete( $table, array( 'post_id' => $invoice->get_id() ) );
528
+    }
529 529
 
530
-	/**
530
+    /**
531 531
      * Deletes an invoice's special fields from the database.
532
-	 *
533
-	 * @param WPInv_Invoice $invoice Invoice object.
532
+     *
533
+     * @param WPInv_Invoice $invoice Invoice object.
534 534
      */
535 535
     public function delete_special_fields( $invoice ) {
536
-		$table = $GLOBALS['wpdb']->prefix . 'getpaid_invoices';
537
-		return $GLOBALS['wpdb']->delete( $table, array( 'post_id' => $invoice->get_id() ) );
538
-	}
539
-
540
-	/**
541
-	 * Get the status to save to the post object.
542
-	 *
543
-	 *
544
-	 * @since 1.0.19
545
-	 * @param  WPInv_Invoice $object GetPaid_Data object.
546
-	 * @return string
547
-	 */
548
-	protected function get_post_status( $object ) {
549
-		$object_status = $object->get_status( 'edit' );
550
-
551
-		if ( ! $object_status ) {
552
-			$object_status = $object->get_default_status();
553
-		}
554
-
555
-		return $object_status;
556
-	}
536
+        $table = $GLOBALS['wpdb']->prefix . 'getpaid_invoices';
537
+        return $GLOBALS['wpdb']->delete( $table, array( 'post_id' => $invoice->get_id() ) );
538
+    }
539
+
540
+    /**
541
+     * Get the status to save to the post object.
542
+     *
543
+     *
544
+     * @since 1.0.19
545
+     * @param  WPInv_Invoice $object GetPaid_Data object.
546
+     * @return string
547
+     */
548
+    protected function get_post_status( $object ) {
549
+        $object_status = $object->get_status( 'edit' );
550
+
551
+        if ( ! $object_status ) {
552
+            $object_status = $object->get_default_status();
553
+        }
554
+
555
+        return $object_status;
556
+    }
557 557
 
558 558
 }
Please login to merge, or discard this patch.
Spacing   +134 added lines, -134 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  * GetPaid_Invoice_Data_Store class file.
5 5
  *
6 6
  */
7
-if ( ! defined( 'ABSPATH' ) ) {
7
+if (!defined('ABSPATH')) {
8 8
 	exit;
9 9
 }
10 10
 
@@ -114,61 +114,61 @@  discard block
 block discarded – undo
114 114
 	 *
115 115
 	 * @param WPInv_Invoice $invoice Invoice object.
116 116
 	 */
117
-	public function create( &$invoice ) {
118
-		$invoice->set_version( WPINV_VERSION );
119
-		$invoice->set_date_created( current_time( 'mysql' ) );
117
+	public function create(&$invoice) {
118
+		$invoice->set_version(WPINV_VERSION);
119
+		$invoice->set_date_created(current_time('mysql'));
120 120
 
121 121
 		// Create a new post.
122 122
 		$id = wp_insert_post(
123 123
 			apply_filters(
124 124
 				'getpaid_new_invoice_data',
125 125
 				array(
126
-					'post_date'    => $invoice->get_date_created( 'edit' ),
127
-					'post_type'    => $invoice->get_post_type( 'edit' ),
128
-					'post_status'  => $this->get_post_status( $invoice ),
126
+					'post_date'    => $invoice->get_date_created('edit'),
127
+					'post_type'    => $invoice->get_post_type('edit'),
128
+					'post_status'  => $this->get_post_status($invoice),
129 129
 					'ping_status'  => 'closed',
130
-					'post_author'  => $invoice->get_user_id( 'edit' ),
131
-					'post_title'   => $invoice->get_title( 'edit' ),
132
-					'post_excerpt' => $invoice->get_description( 'edit' ),
133
-					'post_parent'  => $invoice->get_parent_id( 'edit' ),
130
+					'post_author'  => $invoice->get_user_id('edit'),
131
+					'post_title'   => $invoice->get_title('edit'),
132
+					'post_excerpt' => $invoice->get_description('edit'),
133
+					'post_parent'  => $invoice->get_parent_id('edit'),
134 134
 				)
135 135
 			),
136 136
 			true
137 137
 		);
138 138
 
139
-		if ( $id && ! is_wp_error( $id ) ) {
139
+		if ($id && !is_wp_error($id)) {
140 140
 
141 141
 			// Update the new id and regenerate a title.
142
-			$invoice->set_id( $id );
142
+			$invoice->set_id($id);
143 143
 
144 144
 			$invoice->maybe_set_number();
145 145
 
146 146
 			wp_update_post(
147 147
 				array(
148 148
 					'ID'         => $invoice->get_id(),
149
-					'post_title' => $invoice->get_number( 'edit' ),
150
-					'post_name'  => $invoice->get_path( 'edit' ),
149
+					'post_title' => $invoice->get_number('edit'),
150
+					'post_name'  => $invoice->get_path('edit'),
151 151
 				)
152 152
 			);
153 153
 
154 154
 			// Save special fields and items.
155
-			$this->save_special_fields( $invoice );
156
-			$this->save_items( $invoice );
155
+			$this->save_special_fields($invoice);
156
+			$this->save_items($invoice);
157 157
 
158 158
 			// Update meta data.
159
-			$this->update_post_meta( $invoice );
159
+			$this->update_post_meta($invoice);
160 160
 			$invoice->save_meta_data();
161 161
 
162 162
 			// Apply changes.
163 163
 			$invoice->apply_changes();
164
-			$this->clear_caches( $invoice );
164
+			$this->clear_caches($invoice);
165 165
 
166 166
 			// Fires after a new invoice is created.
167
-			do_action( 'getpaid_new_invoice', $invoice );
167
+			do_action('getpaid_new_invoice', $invoice);
168 168
 			return true;
169 169
 		}
170 170
 
171
-		if ( is_wp_error( $id ) ) {
171
+		if (is_wp_error($id)) {
172 172
 			$invoice->last_error = $id->get_error_message();
173 173
 		}
174 174
 
@@ -181,14 +181,14 @@  discard block
 block discarded – undo
181 181
 	 * @param WPInv_Invoice $invoice Invoice object.
182 182
 	 *
183 183
 	 */
184
-	public function read( &$invoice ) {
184
+	public function read(&$invoice) {
185 185
 
186 186
 		$invoice->set_defaults();
187
-		$invoice_object = get_post( $invoice->get_id() );
187
+		$invoice_object = get_post($invoice->get_id());
188 188
 
189
-		if ( ! $invoice->get_id() || ! $invoice_object || ! getpaid_is_invoice_post_type( $invoice_object->post_type ) ) {
190
-			$invoice->last_error = __( 'Invalid invoice.', 'invoicing' );
191
-			$invoice->set_id( 0 );
189
+		if (!$invoice->get_id() || !$invoice_object || !getpaid_is_invoice_post_type($invoice_object->post_type)) {
190
+			$invoice->last_error = __('Invalid invoice.', 'invoicing');
191
+			$invoice->set_id(0);
192 192
 			return false;
193 193
 		}
194 194
 
@@ -206,14 +206,14 @@  discard block
 block discarded – undo
206 206
 			)
207 207
 		);
208 208
 
209
-		$invoice->set_type( $invoice_object->post_type );
209
+		$invoice->set_type($invoice_object->post_type);
210 210
 
211
-		$this->read_object_data( $invoice, $invoice_object );
212
-		$this->add_special_fields( $invoice );
213
-		$this->add_items( $invoice );
211
+		$this->read_object_data($invoice, $invoice_object);
212
+		$this->add_special_fields($invoice);
213
+		$this->add_items($invoice);
214 214
 		$invoice->read_meta_data();
215
-		$invoice->set_object_read( true );
216
-		do_action( 'getpaid_read_invoice', $invoice );
215
+		$invoice->set_object_read(true);
216
+		do_action('getpaid_read_invoice', $invoice);
217 217
 
218 218
 	}
219 219
 
@@ -222,35 +222,35 @@  discard block
 block discarded – undo
222 222
 	 *
223 223
 	 * @param WPInv_Invoice $invoice Invoice object.
224 224
 	 */
225
-	public function update( &$invoice ) {
225
+	public function update(&$invoice) {
226 226
 		$invoice->save_meta_data();
227
-		$invoice->set_version( WPINV_VERSION );
227
+		$invoice->set_version(WPINV_VERSION);
228 228
 
229
-		if ( null === $invoice->get_date_created( 'edit' ) ) {
230
-			$invoice->set_date_created( current_time( 'mysql' ) );
229
+		if (null === $invoice->get_date_created('edit')) {
230
+			$invoice->set_date_created(current_time('mysql'));
231 231
 		}
232 232
 
233 233
 		// Ensure both the key and number are set.
234 234
 		$invoice->get_path();
235 235
 
236 236
 		// Grab the current status so we can compare.
237
-		$previous_status = get_post_status( $invoice->get_id() );
237
+		$previous_status = get_post_status($invoice->get_id());
238 238
 
239 239
 		$changes = $invoice->get_changes();
240 240
 
241 241
 		// Only update the post when the post data changes.
242
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author', 'description', 'parent_id', 'post_excerpt', 'path' ), array_keys( $changes ) ) ) {
242
+		if (array_intersect(array('date_created', 'date_modified', 'status', 'name', 'author', 'description', 'parent_id', 'post_excerpt', 'path'), array_keys($changes))) {
243 243
 			$post_data = array(
244
-				'post_date'     => $invoice->get_date_created( 'edit' ),
245
-				'post_date_gmt' => $invoice->get_date_created_gmt( 'edit' ),
246
-				'post_status'   => $invoice->get_status( 'edit' ),
247
-				'post_title'    => $invoice->get_name( 'edit' ),
248
-				'post_author'   => $invoice->get_user_id( 'edit' ),
249
-				'post_modified' => $invoice->get_date_modified( 'edit' ),
250
-				'post_excerpt'  => $invoice->get_description( 'edit' ),
251
-				'post_parent'   => $invoice->get_parent_id( 'edit' ),
252
-				'post_name'     => $invoice->get_path( 'edit' ),
253
-				'post_type'     => $invoice->get_post_type( 'edit' ),
244
+				'post_date'     => $invoice->get_date_created('edit'),
245
+				'post_date_gmt' => $invoice->get_date_created_gmt('edit'),
246
+				'post_status'   => $invoice->get_status('edit'),
247
+				'post_title'    => $invoice->get_name('edit'),
248
+				'post_author'   => $invoice->get_user_id('edit'),
249
+				'post_modified' => $invoice->get_date_modified('edit'),
250
+				'post_excerpt'  => $invoice->get_description('edit'),
251
+				'post_parent'   => $invoice->get_parent_id('edit'),
252
+				'post_name'     => $invoice->get_path('edit'),
253
+				'post_type'     => $invoice->get_post_type('edit'),
254 254
 			);
255 255
 
256 256
 			/**
@@ -261,35 +261,35 @@  discard block
 block discarded – undo
261 261
 			 * This ensures hooks are fired by either WP itself (admin screen save),
262 262
 			 * or an update purely from CRUD.
263 263
 			 */
264
-			if ( doing_action( 'save_post' ) ) {
265
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $invoice->get_id() ) );
266
-				clean_post_cache( $invoice->get_id() );
264
+			if (doing_action('save_post')) {
265
+				$GLOBALS['wpdb']->update($GLOBALS['wpdb']->posts, $post_data, array('ID' => $invoice->get_id()));
266
+				clean_post_cache($invoice->get_id());
267 267
 			} else {
268
-				wp_update_post( array_merge( array( 'ID' => $invoice->get_id() ), $post_data ) );
268
+				wp_update_post(array_merge(array('ID' => $invoice->get_id()), $post_data));
269 269
 			}
270
-			$invoice->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
270
+			$invoice->read_meta_data(true); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
271 271
 		}
272 272
 
273 273
 		// Update meta data.
274
-		$this->update_post_meta( $invoice );
274
+		$this->update_post_meta($invoice);
275 275
 
276 276
 		// Save special fields and items.
277
-		$this->save_special_fields( $invoice );
278
-		$this->save_items( $invoice );
277
+		$this->save_special_fields($invoice);
278
+		$this->save_items($invoice);
279 279
 
280 280
 		// Apply the changes.
281 281
 		$invoice->apply_changes();
282 282
 
283 283
 		// Clear caches.
284
-		$this->clear_caches( $invoice );
284
+		$this->clear_caches($invoice);
285 285
 
286 286
 		// Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
287
-		$new_status = $invoice->get_status( 'edit' );
287
+		$new_status = $invoice->get_status('edit');
288 288
 
289
-		if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
290
-			do_action( 'getpaid_new_invoice', $invoice );
289
+		if ($new_status !== $previous_status && in_array($previous_status, array('new', 'auto-draft', 'draft'), true)) {
290
+			do_action('getpaid_new_invoice', $invoice);
291 291
 		} else {
292
-			do_action( 'getpaid_update_invoice', $invoice );
292
+			do_action('getpaid_update_invoice', $invoice);
293 293
 		}
294 294
 
295 295
 	}
@@ -305,45 +305,45 @@  discard block
 block discarded – undo
305 305
 	 *
306 306
 	 * @param WPInv_Invoice $invoice Invoice object.
307 307
      */
308
-    public function add_special_fields( &$invoice ) {
308
+    public function add_special_fields(&$invoice) {
309 309
 		global $wpdb;
310 310
 
311 311
 		// Maybe retrieve from the cache.
312
-		$data   = wp_cache_get( $invoice->get_id(), 'getpaid_invoice_special_fields' );
312
+		$data = wp_cache_get($invoice->get_id(), 'getpaid_invoice_special_fields');
313 313
 
314 314
 		// If not found, retrieve from the db.
315
-		if ( false === $data ) {
315
+		if (false === $data) {
316 316
 			$table = $wpdb->prefix . 'getpaid_invoices';
317 317
 
318 318
 			$data  = $wpdb->get_row(
319
-				$wpdb->prepare( "SELECT * FROM $table WHERE `post_id`=%d LIMIT 1", $invoice->get_id() ),
319
+				$wpdb->prepare("SELECT * FROM $table WHERE `post_id`=%d LIMIT 1", $invoice->get_id()),
320 320
 				ARRAY_A
321 321
 			);
322 322
 
323 323
 			// Update the cache with our data
324
-			wp_cache_set( $invoice->get_id(), $data, 'getpaid_invoice_special_fields' );
324
+			wp_cache_set($invoice->get_id(), $data, 'getpaid_invoice_special_fields');
325 325
 
326 326
 		}
327 327
 
328 328
 		// Abort if the data does not exist.
329
-		if ( empty( $data ) ) {
330
-			$invoice->set_object_read( true );
331
-			$invoice->set_props( wpinv_get_user_address( $invoice->get_user_id() ) );
329
+		if (empty($data)) {
330
+			$invoice->set_object_read(true);
331
+			$invoice->set_props(wpinv_get_user_address($invoice->get_user_id()));
332 332
 			return;
333 333
 		}
334 334
 
335 335
 		$props = array();
336 336
 
337
-		foreach ( $this->database_fields_to_props as $db_field => $prop ) {
337
+		foreach ($this->database_fields_to_props as $db_field => $prop) {
338 338
 
339
-			if ( $db_field == 'post_id' ) {
339
+			if ($db_field == 'post_id') {
340 340
 				continue;
341 341
 			}
342 342
 
343
-			$props[ $prop ] = $data[ $db_field ];
343
+			$props[$prop] = $data[$db_field];
344 344
 		}
345 345
 
346
-		$invoice->set_props( $props );
346
+		$invoice->set_props($props);
347 347
 
348 348
 	}
349 349
 
@@ -354,14 +354,14 @@  discard block
 block discarded – undo
354 354
 	 * @param  WPInv_Invoice $invoice       The Invoice object.
355 355
 	 * @return array                        A mapping of field keys => prop names, filtered by ones that should be updated.
356 356
 	 */
357
-	protected function get_special_fields_to_update( $invoice ) {
357
+	protected function get_special_fields_to_update($invoice) {
358 358
 		$fields_to_update = array();
359
-		$changed_props   = $invoice->get_changes();
359
+		$changed_props = $invoice->get_changes();
360 360
 
361 361
 		// Props should be updated if they are a part of the $changed array or don't exist yet.
362
-		foreach ( $this->database_fields_to_props as $database_field => $prop ) {
363
-			if ( array_key_exists( $prop, $changed_props ) ) {
364
-				$fields_to_update[ $database_field ] = $prop;
362
+		foreach ($this->database_fields_to_props as $database_field => $prop) {
363
+			if (array_key_exists($prop, $changed_props)) {
364
+				$fields_to_update[$database_field] = $prop;
365 365
 			}
366 366
 		}
367 367
 
@@ -374,25 +374,25 @@  discard block
 block discarded – undo
374 374
 	 * @param WPInv_Invoice $invoice WPInv_Invoice object.
375 375
 	 * @since 1.0.19
376 376
 	 */
377
-	protected function update_special_fields( &$invoice ) {
377
+	protected function update_special_fields(&$invoice) {
378 378
 		global $wpdb;
379 379
 
380 380
 		$updated_props    = array();
381
-		$fields_to_update = $this->get_special_fields_to_update( $invoice );
381
+		$fields_to_update = $this->get_special_fields_to_update($invoice);
382 382
 
383
-		foreach ( $fields_to_update as $database_field => $prop ) {
384
-			$value = $invoice->{"get_$prop"}( 'edit' );
385
-			$value = is_string( $value ) ? wp_slash( $value ) : $value;
386
-			$value = is_bool( $value ) ? (int) $value : $value;
387
-			$updated_props[ $database_field ] = maybe_serialize( $value );
383
+		foreach ($fields_to_update as $database_field => $prop) {
384
+			$value = $invoice->{"get_$prop"}('edit');
385
+			$value = is_string($value) ? wp_slash($value) : $value;
386
+			$value = is_bool($value) ? (int) $value : $value;
387
+			$updated_props[$database_field] = maybe_serialize($value);
388 388
 		}
389 389
 
390
-		if ( ! empty( $updated_props ) ) {
390
+		if (!empty($updated_props)) {
391 391
 
392 392
 			$table = $wpdb->prefix . 'getpaid_invoices';
393
-			$wpdb->update( $table, $updated_props, array( 'post_id' => $invoice->get_id() ) );
394
-			wp_cache_delete( $invoice->get_id(), 'getpaid_invoice_special_fields' );
395
-			do_action( 'getpaid_invoice_update_database_fields', $invoice, $updated_props );
393
+			$wpdb->update($table, $updated_props, array('post_id' => $invoice->get_id()));
394
+			wp_cache_delete($invoice->get_id(), 'getpaid_invoice_special_fields');
395
+			do_action('getpaid_invoice_update_database_fields', $invoice, $updated_props);
396 396
 
397 397
 		}
398 398
 
@@ -404,22 +404,22 @@  discard block
 block discarded – undo
404 404
 	 * @param WPInv_Invoice $invoice WPInv_Invoice object.
405 405
 	 * @since 1.0.19
406 406
 	 */
407
-	protected function insert_special_fields( &$invoice ) {
407
+	protected function insert_special_fields(&$invoice) {
408 408
 		global $wpdb;
409 409
 
410
-		$updated_props   = array();
410
+		$updated_props = array();
411 411
 
412
-		foreach ( $this->database_fields_to_props as $database_field => $prop ) {
413
-			$value = $invoice->{"get_$prop"}( 'edit' );
414
-			$value = is_string( $value ) ? wp_slash( $value ) : $value;
415
-			$value = is_bool( $value ) ? (int) $value : $value;
416
-			$updated_props[ $database_field ] = maybe_serialize( $value );
412
+		foreach ($this->database_fields_to_props as $database_field => $prop) {
413
+			$value = $invoice->{"get_$prop"}('edit');
414
+			$value = is_string($value) ? wp_slash($value) : $value;
415
+			$value = is_bool($value) ? (int) $value : $value;
416
+			$updated_props[$database_field] = maybe_serialize($value);
417 417
 		}
418 418
 
419 419
 		$table = $wpdb->prefix . 'getpaid_invoices';
420
-		$wpdb->insert( $table, $updated_props );
421
-		wp_cache_delete( $invoice->get_id(), 'getpaid_invoice_special_fields' );
422
-		do_action( 'getpaid_invoice_insert_database_fields', $invoice, $updated_props );
420
+		$wpdb->insert($table, $updated_props);
421
+		wp_cache_delete($invoice->get_id(), 'getpaid_invoice_special_fields');
422
+		do_action('getpaid_invoice_insert_database_fields', $invoice, $updated_props);
423 423
 
424 424
 	}
425 425
 
@@ -428,7 +428,7 @@  discard block
 block discarded – undo
428 428
 	 *
429 429
 	 * @param WPInv_Invoice $invoice Invoice object.
430 430
      */
431
-    public function save_special_fields( &$invoice ) {
431
+    public function save_special_fields(&$invoice) {
432 432
 		global $wpdb;
433 433
 
434 434
 		// The invoices table.
@@ -436,13 +436,13 @@  discard block
 block discarded – undo
436 436
 		$id    = (int) $invoice->get_id();
437 437
 		$invoice->maybe_set_key();
438 438
 
439
-		if ( $wpdb->get_var( "SELECT `post_id` FROM $table WHERE `post_id`= $id" ) ) {
439
+		if ($wpdb->get_var("SELECT `post_id` FROM $table WHERE `post_id`= $id")) {
440 440
 
441
-			$this->update_special_fields( $invoice );
441
+			$this->update_special_fields($invoice);
442 442
 
443 443
 		} else {
444 444
 
445
-			$this->insert_special_fields( $invoice );
445
+			$this->insert_special_fields($invoice);
446 446
 
447 447
 		}
448 448
 
@@ -453,46 +453,46 @@  discard block
 block discarded – undo
453 453
 	 *
454 454
 	 * @param WPInv_Invoice $invoice Invoice object.
455 455
      */
456
-    public function add_items( &$invoice ) {
456
+    public function add_items(&$invoice) {
457 457
 		global $wpdb;
458 458
 
459 459
 		// Maybe retrieve from the cache.
460
-		$items = wp_cache_get( $invoice->get_id(), 'getpaid_invoice_cart_details' );
460
+		$items = wp_cache_get($invoice->get_id(), 'getpaid_invoice_cart_details');
461 461
 
462 462
 		// If not found, retrieve from the db.
463
-		if ( false === $items ) {
463
+		if (false === $items) {
464 464
 			$table = $wpdb->prefix . 'getpaid_invoice_items';
465 465
 
466 466
 			$items = $wpdb->get_results(
467
-				$wpdb->prepare( "SELECT * FROM $table WHERE `post_id`=%d", $invoice->get_id() )
467
+				$wpdb->prepare("SELECT * FROM $table WHERE `post_id`=%d", $invoice->get_id())
468 468
 			);
469 469
 
470 470
 			// Update the cache with our data
471
-			wp_cache_set( $invoice->get_id(), $items, 'getpaid_invoice_cart_details' );
471
+			wp_cache_set($invoice->get_id(), $items, 'getpaid_invoice_cart_details');
472 472
 
473 473
 		}
474 474
 
475 475
 		// Abort if no items found.
476
-        if ( empty( $items ) ) {
476
+        if (empty($items)) {
477 477
             return;
478 478
 		}
479 479
 
480 480
 		$_items = array();
481
-		foreach ( $items as $item_data ) {
482
-			$item = new GetPaid_Form_Item( $item_data->item_id );
481
+		foreach ($items as $item_data) {
482
+			$item = new GetPaid_Form_Item($item_data->item_id);
483 483
 
484 484
 			// Set item data.
485
-			$item->item_tax      = wpinv_sanitize_amount( $item_data->tax );
486
-			$item->item_discount = wpinv_sanitize_amount( $item_data->discount );
487
-			$item->set_name( $item_data->item_name );
488
-			$item->set_description( $item_data->item_description );
489
-			$item->set_price( $item_data->item_price );
490
-			$item->set_quantity( $item_data->quantity );
491
-			$item->set_item_meta( $item_data->meta );
485
+			$item->item_tax      = wpinv_sanitize_amount($item_data->tax);
486
+			$item->item_discount = wpinv_sanitize_amount($item_data->discount);
487
+			$item->set_name($item_data->item_name);
488
+			$item->set_description($item_data->item_description);
489
+			$item->set_price($item_data->item_price);
490
+			$item->set_quantity($item_data->quantity);
491
+			$item->set_item_meta($item_data->meta);
492 492
 			$_items[] = $item;
493 493
 		}
494 494
 
495
-		$invoice->set_items( $_items );
495
+		$invoice->set_items($_items);
496 496
 	}
497 497
 
498 498
 	/**
@@ -500,20 +500,20 @@  discard block
 block discarded – undo
500 500
 	 *
501 501
 	 * @param WPInv_Invoice $invoice Invoice object.
502 502
      */
503
-    public function save_items( $invoice ) {
503
+    public function save_items($invoice) {
504 504
 
505 505
 		// Delete previously existing items.
506
-		$this->delete_items( $invoice );
506
+		$this->delete_items($invoice);
507 507
 
508
-		$table   = $GLOBALS['wpdb']->prefix . 'getpaid_invoice_items';
508
+		$table = $GLOBALS['wpdb']->prefix . 'getpaid_invoice_items';
509 509
 
510
-		foreach ( $invoice->get_cart_details() as $item_data ) {
511
-			$item_data = array_map( 'maybe_serialize', $item_data );
512
-			$GLOBALS['wpdb']->insert( $table, $item_data );
510
+		foreach ($invoice->get_cart_details() as $item_data) {
511
+			$item_data = array_map('maybe_serialize', $item_data);
512
+			$GLOBALS['wpdb']->insert($table, $item_data);
513 513
 		}
514 514
 
515
-		wp_cache_delete( $invoice->get_id(), 'getpaid_invoice_cart_details' );
516
-		do_action( 'getpaid_invoice_save_items', $invoice );
515
+		wp_cache_delete($invoice->get_id(), 'getpaid_invoice_cart_details');
516
+		do_action('getpaid_invoice_save_items', $invoice);
517 517
 
518 518
 	}
519 519
 
@@ -522,9 +522,9 @@  discard block
 block discarded – undo
522 522
 	 *
523 523
 	 * @param WPInv_Invoice $invoice Invoice object.
524 524
      */
525
-    public function delete_items( $invoice ) {
525
+    public function delete_items($invoice) {
526 526
 		$table = $GLOBALS['wpdb']->prefix . 'getpaid_invoice_items';
527
-		return $GLOBALS['wpdb']->delete( $table, array( 'post_id' => $invoice->get_id() ) );
527
+		return $GLOBALS['wpdb']->delete($table, array('post_id' => $invoice->get_id()));
528 528
 	}
529 529
 
530 530
 	/**
@@ -532,9 +532,9 @@  discard block
 block discarded – undo
532 532
 	 *
533 533
 	 * @param WPInv_Invoice $invoice Invoice object.
534 534
      */
535
-    public function delete_special_fields( $invoice ) {
535
+    public function delete_special_fields($invoice) {
536 536
 		$table = $GLOBALS['wpdb']->prefix . 'getpaid_invoices';
537
-		return $GLOBALS['wpdb']->delete( $table, array( 'post_id' => $invoice->get_id() ) );
537
+		return $GLOBALS['wpdb']->delete($table, array('post_id' => $invoice->get_id()));
538 538
 	}
539 539
 
540 540
 	/**
@@ -545,10 +545,10 @@  discard block
 block discarded – undo
545 545
 	 * @param  WPInv_Invoice $object GetPaid_Data object.
546 546
 	 * @return string
547 547
 	 */
548
-	protected function get_post_status( $object ) {
549
-		$object_status = $object->get_status( 'edit' );
548
+	protected function get_post_status($object) {
549
+		$object_status = $object->get_status('edit');
550 550
 
551
-		if ( ! $object_status ) {
551
+		if (!$object_status) {
552 552
 			$object_status = $object->get_default_status();
553 553
 		}
554 554
 
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-item-data-store.php 2 patches
Indentation   +210 added lines, -210 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  *
5 5
  */
6 6
 if ( ! defined( 'ABSPATH' ) ) {
7
-	exit;
7
+    exit;
8 8
 }
9 9
 
10 10
 /**
@@ -14,228 +14,228 @@  discard block
 block discarded – undo
14 14
  */
15 15
 class GetPaid_Item_Data_Store extends GetPaid_Data_Store_WP {
16 16
 
17
-	/**
18
-	 * Data stored in meta keys, but not considered "meta" for an item.
19
-	 *
20
-	 * @since 1.0.19
21
-	 * @var array
22
-	 */
23
-	protected $internal_meta_keys = array(
24
-		'_wpinv_price',
25
-		'_wpinv_vat_rule',
26
-		'_wpinv_vat_class',
27
-		'_wpinv_type',
28
-		'_wpinv_custom_id',
29
-		'_wpinv_custom_name',
30
-		'_wpinv_custom_singular_name',
31
-		'_wpinv_editable',
32
-		'_wpinv_dynamic_pricing',
33
-		'_minimum_price',
34
-		'_wpinv_is_recurring',
35
-		'_wpinv_recurring_period',
36
-		'_wpinv_recurring_interval',
37
-		'_wpinv_recurring_limit',
38
-		'_wpinv_free_trial',
39
-		'_wpinv_trial_period',
40
-		'_wpinv_trial_interval',
41
-	);
42
-
43
-	/**
44
-	 * A map of meta keys to data props.
45
-	 *
46
-	 * @since 1.0.19
47
-	 *
48
-	 * @var array
49
-	 */
50
-	protected $meta_key_to_props = array(
51
-		'_wpinv_price'                => 'price',
52
-		'_wpinv_vat_rule'             => 'vat_rule',
53
-		'_wpinv_vat_class'            => 'vat_class',
54
-		'_wpinv_type'                 => 'type',
55
-		'_wpinv_custom_id'            => 'custom_id',
56
-		'_wpinv_custom_name'          => 'custom_name',
57
-		'_wpinv_custom_singular_name' => 'custom_singular_name',
58
-		'_wpinv_editable'             => 'is_editable',
59
-		'_wpinv_dynamic_pricing'      => 'is_dynamic_pricing',
60
-		'_minimum_price'              => 'minimum_price',
61
-		'_wpinv_custom_name'          => 'custom_name',
62
-		'_wpinv_is_recurring'         => 'is_recurring',
63
-		'_wpinv_recurring_period'     => 'recurring_period',
64
-		'_wpinv_recurring_interval'   => 'recurring_interval',
65
-		'_wpinv_recurring_limit'      => 'recurring_limit',
66
-		'_wpinv_free_trial'           => 'is_free_trial',
67
-		'_wpinv_trial_period'         => 'trial_period',
68
-		'_wpinv_trial_interval'       => 'trial_interval',
69
-		'_wpinv_version'              => 'version',
70
-	);
71
-
72
-	/*
17
+    /**
18
+     * Data stored in meta keys, but not considered "meta" for an item.
19
+     *
20
+     * @since 1.0.19
21
+     * @var array
22
+     */
23
+    protected $internal_meta_keys = array(
24
+        '_wpinv_price',
25
+        '_wpinv_vat_rule',
26
+        '_wpinv_vat_class',
27
+        '_wpinv_type',
28
+        '_wpinv_custom_id',
29
+        '_wpinv_custom_name',
30
+        '_wpinv_custom_singular_name',
31
+        '_wpinv_editable',
32
+        '_wpinv_dynamic_pricing',
33
+        '_minimum_price',
34
+        '_wpinv_is_recurring',
35
+        '_wpinv_recurring_period',
36
+        '_wpinv_recurring_interval',
37
+        '_wpinv_recurring_limit',
38
+        '_wpinv_free_trial',
39
+        '_wpinv_trial_period',
40
+        '_wpinv_trial_interval',
41
+    );
42
+
43
+    /**
44
+     * A map of meta keys to data props.
45
+     *
46
+     * @since 1.0.19
47
+     *
48
+     * @var array
49
+     */
50
+    protected $meta_key_to_props = array(
51
+        '_wpinv_price'                => 'price',
52
+        '_wpinv_vat_rule'             => 'vat_rule',
53
+        '_wpinv_vat_class'            => 'vat_class',
54
+        '_wpinv_type'                 => 'type',
55
+        '_wpinv_custom_id'            => 'custom_id',
56
+        '_wpinv_custom_name'          => 'custom_name',
57
+        '_wpinv_custom_singular_name' => 'custom_singular_name',
58
+        '_wpinv_editable'             => 'is_editable',
59
+        '_wpinv_dynamic_pricing'      => 'is_dynamic_pricing',
60
+        '_minimum_price'              => 'minimum_price',
61
+        '_wpinv_custom_name'          => 'custom_name',
62
+        '_wpinv_is_recurring'         => 'is_recurring',
63
+        '_wpinv_recurring_period'     => 'recurring_period',
64
+        '_wpinv_recurring_interval'   => 'recurring_interval',
65
+        '_wpinv_recurring_limit'      => 'recurring_limit',
66
+        '_wpinv_free_trial'           => 'is_free_trial',
67
+        '_wpinv_trial_period'         => 'trial_period',
68
+        '_wpinv_trial_interval'       => 'trial_interval',
69
+        '_wpinv_version'              => 'version',
70
+    );
71
+
72
+    /*
73 73
 	|--------------------------------------------------------------------------
74 74
 	| CRUD Methods
75 75
 	|--------------------------------------------------------------------------
76 76
 	*/
77 77
 
78
-	/**
79
-	 * Method to create a new item in the database.
80
-	 *
81
-	 * @param WPInv_Item $item Item object.
82
-	 */
83
-	public function create( &$item ) {
84
-		$item->set_version( WPINV_VERSION );
85
-		$item->set_date_created( current_time( 'mysql' ) );
86
-
87
-		// Create a new post.
88
-		$id = wp_insert_post(
89
-			apply_filters(
90
-				'getpaid_new_item_data',
91
-				array(
92
-					'post_date'    => $item->get_date_created( 'edit' ),
93
-					'post_type'    => 'wpi_item',
94
-					'post_status'  => $this->get_post_status( $item ),
95
-					'ping_status'  => 'closed',
96
-					'post_author'  => $item->get_author( 'edit' ),
97
-					'post_title'   => $item->get_name( 'edit' ),
98
-					'post_parent'  => 0,
99
-					'post_excerpt' => $item->get_description( 'edit' ),
100
-				)
101
-			),
102
-			true
103
-		);
104
-
105
-		if ( $id && ! is_wp_error( $id ) ) {
106
-			$item->set_id( $id );
107
-			$this->update_post_meta( $item );
108
-			$item->save_meta_data();
109
-			$item->apply_changes();
110
-			$this->clear_caches( $item );
111
-			do_action( 'getpaid_new_item', $item );
112
-			return true;
113
-		}
114
-
115
-		if ( is_wp_error( $id ) ) {
116
-			$item->last_error = $id->get_error_message();
117
-		}
118
-
119
-		return false;
120
-	}
121
-
122
-	/**
123
-	 * Method to read an item from the database.
124
-	 *
125
-	 * @param WPInv_Item $item Item object.
126
-	 *
127
-	 */
128
-	public function read( &$item ) {
129
-
130
-		$item->set_defaults();
131
-		$item_object = get_post( $item->get_id() );
132
-
133
-		if ( ! $item->get_id() || ! $item_object || $item_object->post_type != 'wpi_item' ) {
134
-			$item->last_error = __( 'Invalid item.', 'invoicing' );
135
-			$item->set_id( 0 );
136
-			return false;
137
-		}
138
-
139
-		$item->set_props(
140
-			array(
141
-				'parent_id'     => $item_object->post_parent,
142
-				'date_created'  => 0 < $item_object->post_date ? $item_object->post_date : null,
143
-				'date_modified' => 0 < $item_object->post_modified ? $item_object->post_modified : null,
144
-				'status'        => $item_object->post_status,
145
-				'name'          => $item_object->post_title,
146
-				'description'   => $item_object->post_excerpt,
147
-				'author'        => $item_object->post_author,
148
-			)
149
-		);
150
-
151
-		$this->read_object_data( $item, $item_object );
152
-		$item->read_meta_data();
153
-		$item->set_object_read( true );
154
-		do_action( 'getpaid_read_item', $item );
155
-
156
-	}
157
-
158
-	/**
159
-	 * Method to update an item in the database.
160
-	 *
161
-	 * @param WPInv_Item $item Item object.
162
-	 */
163
-	public function update( &$item ) {
164
-		$item->save_meta_data();
165
-		$item->set_version( WPINV_VERSION );
166
-
167
-		if ( null === $item->get_date_created( 'edit' ) ) {
168
-			$item->set_date_created( current_time( 'mysql' ) );
169
-		}
170
-
171
-		// Grab the current status so we can compare.
172
-		$previous_status = get_post_status( $item->get_id() );
173
-
174
-		$changes = $item->get_changes();
175
-
176
-		// Only update the post when the post data changes.
177
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'description', 'name', 'author' ), array_keys( $changes ) ) ) {
178
-			$post_data = array(
179
-				'post_date'     => $item->get_date_created( 'edit' ),
180
-				'post_status'   => $item->get_status( 'edit' ),
181
-				'post_parent'   => $item->get_parent_id( 'edit' ),
182
-				'post_excerpt'  => $item->get_description( 'edit' ),
183
-				'post_modified' => $item->get_date_modified( 'edit' ),
184
-				'post_title'    => $item->get_name( 'edit' ),
185
-				'post_author'   => $item->get_author( 'edit' ),
186
-			);
187
-
188
-			/**
189
-			 * When updating this object, to prevent infinite loops, use $wpdb
190
-			 * to update data, since wp_update_post spawns more calls to the
191
-			 * save_post action.
192
-			 *
193
-			 * This ensures hooks are fired by either WP itself (admin screen save),
194
-			 * or an update purely from CRUD.
195
-			 */
196
-			if ( doing_action( 'save_post' ) ) {
197
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $item->get_id() ) );
198
-				clean_post_cache( $item->get_id() );
199
-			} else {
200
-				wp_update_post( array_merge( array( 'ID' => $item->get_id() ), $post_data ) );
201
-			}
202
-			$item->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
203
-		}
204
-		$this->update_post_meta( $item );
205
-		$item->apply_changes();
206
-		$this->clear_caches( $item );
207
-
208
-		// Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
209
-		$new_status = $item->get_status( 'edit' );
210
-
211
-		if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
212
-			do_action( 'getpaid_new_item', $item );
213
-		} else {
214
-			do_action( 'getpaid_update_item', $item );
215
-		}
216
-
217
-	}
218
-
219
-	/*
78
+    /**
79
+     * Method to create a new item in the database.
80
+     *
81
+     * @param WPInv_Item $item Item object.
82
+     */
83
+    public function create( &$item ) {
84
+        $item->set_version( WPINV_VERSION );
85
+        $item->set_date_created( current_time( 'mysql' ) );
86
+
87
+        // Create a new post.
88
+        $id = wp_insert_post(
89
+            apply_filters(
90
+                'getpaid_new_item_data',
91
+                array(
92
+                    'post_date'    => $item->get_date_created( 'edit' ),
93
+                    'post_type'    => 'wpi_item',
94
+                    'post_status'  => $this->get_post_status( $item ),
95
+                    'ping_status'  => 'closed',
96
+                    'post_author'  => $item->get_author( 'edit' ),
97
+                    'post_title'   => $item->get_name( 'edit' ),
98
+                    'post_parent'  => 0,
99
+                    'post_excerpt' => $item->get_description( 'edit' ),
100
+                )
101
+            ),
102
+            true
103
+        );
104
+
105
+        if ( $id && ! is_wp_error( $id ) ) {
106
+            $item->set_id( $id );
107
+            $this->update_post_meta( $item );
108
+            $item->save_meta_data();
109
+            $item->apply_changes();
110
+            $this->clear_caches( $item );
111
+            do_action( 'getpaid_new_item', $item );
112
+            return true;
113
+        }
114
+
115
+        if ( is_wp_error( $id ) ) {
116
+            $item->last_error = $id->get_error_message();
117
+        }
118
+
119
+        return false;
120
+    }
121
+
122
+    /**
123
+     * Method to read an item from the database.
124
+     *
125
+     * @param WPInv_Item $item Item object.
126
+     *
127
+     */
128
+    public function read( &$item ) {
129
+
130
+        $item->set_defaults();
131
+        $item_object = get_post( $item->get_id() );
132
+
133
+        if ( ! $item->get_id() || ! $item_object || $item_object->post_type != 'wpi_item' ) {
134
+            $item->last_error = __( 'Invalid item.', 'invoicing' );
135
+            $item->set_id( 0 );
136
+            return false;
137
+        }
138
+
139
+        $item->set_props(
140
+            array(
141
+                'parent_id'     => $item_object->post_parent,
142
+                'date_created'  => 0 < $item_object->post_date ? $item_object->post_date : null,
143
+                'date_modified' => 0 < $item_object->post_modified ? $item_object->post_modified : null,
144
+                'status'        => $item_object->post_status,
145
+                'name'          => $item_object->post_title,
146
+                'description'   => $item_object->post_excerpt,
147
+                'author'        => $item_object->post_author,
148
+            )
149
+        );
150
+
151
+        $this->read_object_data( $item, $item_object );
152
+        $item->read_meta_data();
153
+        $item->set_object_read( true );
154
+        do_action( 'getpaid_read_item', $item );
155
+
156
+    }
157
+
158
+    /**
159
+     * Method to update an item in the database.
160
+     *
161
+     * @param WPInv_Item $item Item object.
162
+     */
163
+    public function update( &$item ) {
164
+        $item->save_meta_data();
165
+        $item->set_version( WPINV_VERSION );
166
+
167
+        if ( null === $item->get_date_created( 'edit' ) ) {
168
+            $item->set_date_created( current_time( 'mysql' ) );
169
+        }
170
+
171
+        // Grab the current status so we can compare.
172
+        $previous_status = get_post_status( $item->get_id() );
173
+
174
+        $changes = $item->get_changes();
175
+
176
+        // Only update the post when the post data changes.
177
+        if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'description', 'name', 'author' ), array_keys( $changes ) ) ) {
178
+            $post_data = array(
179
+                'post_date'     => $item->get_date_created( 'edit' ),
180
+                'post_status'   => $item->get_status( 'edit' ),
181
+                'post_parent'   => $item->get_parent_id( 'edit' ),
182
+                'post_excerpt'  => $item->get_description( 'edit' ),
183
+                'post_modified' => $item->get_date_modified( 'edit' ),
184
+                'post_title'    => $item->get_name( 'edit' ),
185
+                'post_author'   => $item->get_author( 'edit' ),
186
+            );
187
+
188
+            /**
189
+             * When updating this object, to prevent infinite loops, use $wpdb
190
+             * to update data, since wp_update_post spawns more calls to the
191
+             * save_post action.
192
+             *
193
+             * This ensures hooks are fired by either WP itself (admin screen save),
194
+             * or an update purely from CRUD.
195
+             */
196
+            if ( doing_action( 'save_post' ) ) {
197
+                $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $item->get_id() ) );
198
+                clean_post_cache( $item->get_id() );
199
+            } else {
200
+                wp_update_post( array_merge( array( 'ID' => $item->get_id() ), $post_data ) );
201
+            }
202
+            $item->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
203
+        }
204
+        $this->update_post_meta( $item );
205
+        $item->apply_changes();
206
+        $this->clear_caches( $item );
207
+
208
+        // Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
209
+        $new_status = $item->get_status( 'edit' );
210
+
211
+        if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
212
+            do_action( 'getpaid_new_item', $item );
213
+        } else {
214
+            do_action( 'getpaid_update_item', $item );
215
+        }
216
+
217
+    }
218
+
219
+    /*
220 220
 	|--------------------------------------------------------------------------
221 221
 	| Additional Methods
222 222
 	|--------------------------------------------------------------------------
223 223
 	*/
224 224
 
225
-	/**
226
-	 * Helper method that updates all the post meta for an item based on it's settings in the WPInv_Item class.
227
-	 *
228
-	 * @param WPInv_Item $item WPInv_Item object.
229
-	 * @since 1.0.19
230
-	 */
231
-	protected function update_post_meta( &$item ) {
225
+    /**
226
+     * Helper method that updates all the post meta for an item based on it's settings in the WPInv_Item class.
227
+     *
228
+     * @param WPInv_Item $item WPInv_Item object.
229
+     * @since 1.0.19
230
+     */
231
+    protected function update_post_meta( &$item ) {
232 232
 
233
-		// Ensure that we have a custom id.
233
+        // Ensure that we have a custom id.
234 234
         if ( ! $item->get_custom_id() ) {
235 235
             $item->set_custom_id( $item->get_id() );
236
-		}
236
+        }
237 237
 
238
-		parent::update_post_meta( $item );
239
-	}
238
+        parent::update_post_meta( $item );
239
+    }
240 240
 
241 241
 }
Please login to merge, or discard this patch.
Spacing   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * GetPaid_Item_Data_Store class file.
4 4
  *
5 5
  */
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
 	exit;
8 8
 }
9 9
 
@@ -80,39 +80,39 @@  discard block
 block discarded – undo
80 80
 	 *
81 81
 	 * @param WPInv_Item $item Item object.
82 82
 	 */
83
-	public function create( &$item ) {
84
-		$item->set_version( WPINV_VERSION );
85
-		$item->set_date_created( current_time( 'mysql' ) );
83
+	public function create(&$item) {
84
+		$item->set_version(WPINV_VERSION);
85
+		$item->set_date_created(current_time('mysql'));
86 86
 
87 87
 		// Create a new post.
88 88
 		$id = wp_insert_post(
89 89
 			apply_filters(
90 90
 				'getpaid_new_item_data',
91 91
 				array(
92
-					'post_date'    => $item->get_date_created( 'edit' ),
92
+					'post_date'    => $item->get_date_created('edit'),
93 93
 					'post_type'    => 'wpi_item',
94
-					'post_status'  => $this->get_post_status( $item ),
94
+					'post_status'  => $this->get_post_status($item),
95 95
 					'ping_status'  => 'closed',
96
-					'post_author'  => $item->get_author( 'edit' ),
97
-					'post_title'   => $item->get_name( 'edit' ),
96
+					'post_author'  => $item->get_author('edit'),
97
+					'post_title'   => $item->get_name('edit'),
98 98
 					'post_parent'  => 0,
99
-					'post_excerpt' => $item->get_description( 'edit' ),
99
+					'post_excerpt' => $item->get_description('edit'),
100 100
 				)
101 101
 			),
102 102
 			true
103 103
 		);
104 104
 
105
-		if ( $id && ! is_wp_error( $id ) ) {
106
-			$item->set_id( $id );
107
-			$this->update_post_meta( $item );
105
+		if ($id && !is_wp_error($id)) {
106
+			$item->set_id($id);
107
+			$this->update_post_meta($item);
108 108
 			$item->save_meta_data();
109 109
 			$item->apply_changes();
110
-			$this->clear_caches( $item );
111
-			do_action( 'getpaid_new_item', $item );
110
+			$this->clear_caches($item);
111
+			do_action('getpaid_new_item', $item);
112 112
 			return true;
113 113
 		}
114 114
 
115
-		if ( is_wp_error( $id ) ) {
115
+		if (is_wp_error($id)) {
116 116
 			$item->last_error = $id->get_error_message();
117 117
 		}
118 118
 
@@ -125,14 +125,14 @@  discard block
 block discarded – undo
125 125
 	 * @param WPInv_Item $item Item object.
126 126
 	 *
127 127
 	 */
128
-	public function read( &$item ) {
128
+	public function read(&$item) {
129 129
 
130 130
 		$item->set_defaults();
131
-		$item_object = get_post( $item->get_id() );
131
+		$item_object = get_post($item->get_id());
132 132
 
133
-		if ( ! $item->get_id() || ! $item_object || $item_object->post_type != 'wpi_item' ) {
134
-			$item->last_error = __( 'Invalid item.', 'invoicing' );
135
-			$item->set_id( 0 );
133
+		if (!$item->get_id() || !$item_object || $item_object->post_type != 'wpi_item') {
134
+			$item->last_error = __('Invalid item.', 'invoicing');
135
+			$item->set_id(0);
136 136
 			return false;
137 137
 		}
138 138
 
@@ -148,10 +148,10 @@  discard block
 block discarded – undo
148 148
 			)
149 149
 		);
150 150
 
151
-		$this->read_object_data( $item, $item_object );
151
+		$this->read_object_data($item, $item_object);
152 152
 		$item->read_meta_data();
153
-		$item->set_object_read( true );
154
-		do_action( 'getpaid_read_item', $item );
153
+		$item->set_object_read(true);
154
+		do_action('getpaid_read_item', $item);
155 155
 
156 156
 	}
157 157
 
@@ -160,29 +160,29 @@  discard block
 block discarded – undo
160 160
 	 *
161 161
 	 * @param WPInv_Item $item Item object.
162 162
 	 */
163
-	public function update( &$item ) {
163
+	public function update(&$item) {
164 164
 		$item->save_meta_data();
165
-		$item->set_version( WPINV_VERSION );
165
+		$item->set_version(WPINV_VERSION);
166 166
 
167
-		if ( null === $item->get_date_created( 'edit' ) ) {
168
-			$item->set_date_created( current_time( 'mysql' ) );
167
+		if (null === $item->get_date_created('edit')) {
168
+			$item->set_date_created(current_time('mysql'));
169 169
 		}
170 170
 
171 171
 		// Grab the current status so we can compare.
172
-		$previous_status = get_post_status( $item->get_id() );
172
+		$previous_status = get_post_status($item->get_id());
173 173
 
174 174
 		$changes = $item->get_changes();
175 175
 
176 176
 		// Only update the post when the post data changes.
177
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'description', 'name', 'author' ), array_keys( $changes ) ) ) {
177
+		if (array_intersect(array('date_created', 'date_modified', 'status', 'parent_id', 'description', 'name', 'author'), array_keys($changes))) {
178 178
 			$post_data = array(
179
-				'post_date'     => $item->get_date_created( 'edit' ),
180
-				'post_status'   => $item->get_status( 'edit' ),
181
-				'post_parent'   => $item->get_parent_id( 'edit' ),
182
-				'post_excerpt'  => $item->get_description( 'edit' ),
183
-				'post_modified' => $item->get_date_modified( 'edit' ),
184
-				'post_title'    => $item->get_name( 'edit' ),
185
-				'post_author'   => $item->get_author( 'edit' ),
179
+				'post_date'     => $item->get_date_created('edit'),
180
+				'post_status'   => $item->get_status('edit'),
181
+				'post_parent'   => $item->get_parent_id('edit'),
182
+				'post_excerpt'  => $item->get_description('edit'),
183
+				'post_modified' => $item->get_date_modified('edit'),
184
+				'post_title'    => $item->get_name('edit'),
185
+				'post_author'   => $item->get_author('edit'),
186 186
 			);
187 187
 
188 188
 			/**
@@ -193,25 +193,25 @@  discard block
 block discarded – undo
193 193
 			 * This ensures hooks are fired by either WP itself (admin screen save),
194 194
 			 * or an update purely from CRUD.
195 195
 			 */
196
-			if ( doing_action( 'save_post' ) ) {
197
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $item->get_id() ) );
198
-				clean_post_cache( $item->get_id() );
196
+			if (doing_action('save_post')) {
197
+				$GLOBALS['wpdb']->update($GLOBALS['wpdb']->posts, $post_data, array('ID' => $item->get_id()));
198
+				clean_post_cache($item->get_id());
199 199
 			} else {
200
-				wp_update_post( array_merge( array( 'ID' => $item->get_id() ), $post_data ) );
200
+				wp_update_post(array_merge(array('ID' => $item->get_id()), $post_data));
201 201
 			}
202
-			$item->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
202
+			$item->read_meta_data(true); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
203 203
 		}
204
-		$this->update_post_meta( $item );
204
+		$this->update_post_meta($item);
205 205
 		$item->apply_changes();
206
-		$this->clear_caches( $item );
206
+		$this->clear_caches($item);
207 207
 
208 208
 		// Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
209
-		$new_status = $item->get_status( 'edit' );
209
+		$new_status = $item->get_status('edit');
210 210
 
211
-		if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
212
-			do_action( 'getpaid_new_item', $item );
211
+		if ($new_status !== $previous_status && in_array($previous_status, array('new', 'auto-draft', 'draft'), true)) {
212
+			do_action('getpaid_new_item', $item);
213 213
 		} else {
214
-			do_action( 'getpaid_update_item', $item );
214
+			do_action('getpaid_update_item', $item);
215 215
 		}
216 216
 
217 217
 	}
@@ -228,14 +228,14 @@  discard block
 block discarded – undo
228 228
 	 * @param WPInv_Item $item WPInv_Item object.
229 229
 	 * @since 1.0.19
230 230
 	 */
231
-	protected function update_post_meta( &$item ) {
231
+	protected function update_post_meta(&$item) {
232 232
 
233 233
 		// Ensure that we have a custom id.
234
-        if ( ! $item->get_custom_id() ) {
235
-            $item->set_custom_id( $item->get_id() );
234
+        if (!$item->get_custom_id()) {
235
+            $item->set_custom_id($item->get_id());
236 236
 		}
237 237
 
238
-		parent::update_post_meta( $item );
238
+		parent::update_post_meta($item);
239 239
 	}
240 240
 
241 241
 }
Please login to merge, or discard this patch.
includes/class-getpaid-invoice-notification-emails.php 2 patches
Indentation   +425 added lines, -425 removed lines patch added patch discarded remove patch
@@ -12,487 +12,487 @@
 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
-				}
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 162
 }
163 163
 }
164 164
 
165
-		return apply_filters( 'getpaid_invoice_email_merge_tags', $merge_tags, $invoice );
166
-	}
167
-
168
-	/**
169
-	 * Helper function to send an email.
170
-	 *
171
-	 * @param WPInv_Invoice $invoice
172
-	 * @param GetPaid_Notification_Email $email
173
-	 * @param string $type
174
-	 * @param string|array $recipients
175
-	 * @param array $extra_args Extra template args.
176
-	 */
177
-	public function send_email( $invoice, $email, $type, $recipients, $extra_args = array() ) {
178
-
179
-		do_action( 'getpaid_before_send_invoice_notification', $type, $invoice, $email );
180
-
181
-		$skip = $invoice->is_free() && wpinv_get_option( 'skip_email_free_invoice' );
182
-		if ( apply_filters( 'getpaid_skip_invoice_email', $skip, $type, $invoice ) ) {
183
-			return;
184
-		}
185
-
186
-		$mailer     = new GetPaid_Notification_Email_Sender();
187
-		$merge_tags = $email->get_merge_tags();
188
-
189
-		$result = $mailer->send(
190
-			apply_filters( 'getpaid_invoice_email_recipients', wpinv_parse_list( $recipients ), $email ),
191
-			$email->add_merge_tags( $email->get_subject(), $merge_tags ),
192
-			$email->get_content( $merge_tags, $extra_args ),
193
-			$email->get_attachments()
194
-		);
195
-
196
-		// Maybe send a copy to the admin.
197
-		if ( $email->include_admin_bcc() ) {
198
-			$mailer->send(
199
-				wpinv_get_admin_email(),
200
-				$email->add_merge_tags( $email->get_subject() . __( ' - ADMIN BCC COPY', 'invoicing' ), $merge_tags ),
201
-				$email->get_content( $merge_tags ),
202
-				$email->get_attachments()
203
-			);
204
-		}
205
-
206
-		if ( $result ) {
207
-			$invoice->add_system_note(
208
-				sprintf(
209
-					__( 'Successfully sent %1$s notification email to %2$s.', 'invoicing' ),
210
-					sanitize_key( $type ),
211
-					$email->is_admin_email() ? __( 'admin' ) : __( 'the customer' )
212
-				)
213
-			);
214
-		} else {
215
-			$invoice->add_system_note(
216
-				sprintf(
217
-					__( 'Failed sending %1$s notification email to %2$s.', 'invoicing' ),
218
-					sanitize_key( $type ),
219
-					$email->is_admin_email() ? __( 'admin' ) : __( 'the customer' )
220
-				)
221
-			);
222
-		}
223
-
224
-		do_action( 'getpaid_after_send_invoice_notification', $type, $invoice, $email );
225
-
226
-		return $result;
227
-	}
228
-
229
-	/**
230
-	 * Also send emails to any cc users.
231
-	 *
232
-	 * @param array $recipients
233
-	 * @param GetPaid_Notification_Email $email
234
-	 */
235
-	public function filter_email_recipients( $recipients, $email ) {
236
-
237
-		if ( ! $email->is_admin_email() ) {
238
-			$cc   = $email->object->get_email_cc();
239
-			$cc_2 = get_user_meta( $email->object->get_user_id(), '_wpinv_email_cc', true );
240
-
241
-			if ( ! empty( $cc ) ) {
242
-				$cc = array_map( 'sanitize_email', wpinv_parse_list( $cc ) );
243
-				$recipients = array_filter( array_unique( array_merge( $recipients, $cc ) ) );
244
-			}
245
-
246
-			if ( ! empty( $cc_2 ) ) {
247
-				$cc_2 = array_map( 'sanitize_email', wpinv_parse_list( $cc_2 ) );
248
-				$recipients = array_filter( array_unique( array_merge( $recipients, $cc_2 ) ) );
249
-			}
165
+        return apply_filters( 'getpaid_invoice_email_merge_tags', $merge_tags, $invoice );
166
+    }
167
+
168
+    /**
169
+     * Helper function to send an email.
170
+     *
171
+     * @param WPInv_Invoice $invoice
172
+     * @param GetPaid_Notification_Email $email
173
+     * @param string $type
174
+     * @param string|array $recipients
175
+     * @param array $extra_args Extra template args.
176
+     */
177
+    public function send_email( $invoice, $email, $type, $recipients, $extra_args = array() ) {
178
+
179
+        do_action( 'getpaid_before_send_invoice_notification', $type, $invoice, $email );
180
+
181
+        $skip = $invoice->is_free() && wpinv_get_option( 'skip_email_free_invoice' );
182
+        if ( apply_filters( 'getpaid_skip_invoice_email', $skip, $type, $invoice ) ) {
183
+            return;
184
+        }
185
+
186
+        $mailer     = new GetPaid_Notification_Email_Sender();
187
+        $merge_tags = $email->get_merge_tags();
188
+
189
+        $result = $mailer->send(
190
+            apply_filters( 'getpaid_invoice_email_recipients', wpinv_parse_list( $recipients ), $email ),
191
+            $email->add_merge_tags( $email->get_subject(), $merge_tags ),
192
+            $email->get_content( $merge_tags, $extra_args ),
193
+            $email->get_attachments()
194
+        );
195
+
196
+        // Maybe send a copy to the admin.
197
+        if ( $email->include_admin_bcc() ) {
198
+            $mailer->send(
199
+                wpinv_get_admin_email(),
200
+                $email->add_merge_tags( $email->get_subject() . __( ' - ADMIN BCC COPY', 'invoicing' ), $merge_tags ),
201
+                $email->get_content( $merge_tags ),
202
+                $email->get_attachments()
203
+            );
204
+        }
205
+
206
+        if ( $result ) {
207
+            $invoice->add_system_note(
208
+                sprintf(
209
+                    __( 'Successfully sent %1$s notification email to %2$s.', 'invoicing' ),
210
+                    sanitize_key( $type ),
211
+                    $email->is_admin_email() ? __( 'admin' ) : __( 'the customer' )
212
+                )
213
+            );
214
+        } else {
215
+            $invoice->add_system_note(
216
+                sprintf(
217
+                    __( 'Failed sending %1$s notification email to %2$s.', 'invoicing' ),
218
+                    sanitize_key( $type ),
219
+                    $email->is_admin_email() ? __( 'admin' ) : __( 'the customer' )
220
+                )
221
+            );
222
+        }
223
+
224
+        do_action( 'getpaid_after_send_invoice_notification', $type, $invoice, $email );
225
+
226
+        return $result;
227
+    }
228
+
229
+    /**
230
+     * Also send emails to any cc users.
231
+     *
232
+     * @param array $recipients
233
+     * @param GetPaid_Notification_Email $email
234
+     */
235
+    public function filter_email_recipients( $recipients, $email ) {
236
+
237
+        if ( ! $email->is_admin_email() ) {
238
+            $cc   = $email->object->get_email_cc();
239
+            $cc_2 = get_user_meta( $email->object->get_user_id(), '_wpinv_email_cc', true );
240
+
241
+            if ( ! empty( $cc ) ) {
242
+                $cc = array_map( 'sanitize_email', wpinv_parse_list( $cc ) );
243
+                $recipients = array_filter( array_unique( array_merge( $recipients, $cc ) ) );
244
+            }
245
+
246
+            if ( ! empty( $cc_2 ) ) {
247
+                $cc_2 = array_map( 'sanitize_email', wpinv_parse_list( $cc_2 ) );
248
+                $recipients = array_filter( array_unique( array_merge( $recipients, $cc_2 ) ) );
249
+            }
250 250
 }
251 251
 
252
-		return $recipients;
252
+        return $recipients;
253 253
 
254
-	}
254
+    }
255 255
 
256
-	/**
257
-	 * Sends a new invoice notification.
258
-	 *
259
-	 * @param WPInv_Invoice $invoice
260
-	 */
261
-	public function new_invoice( $invoice ) {
256
+    /**
257
+     * Sends a new invoice notification.
258
+     *
259
+     * @param WPInv_Invoice $invoice
260
+     */
261
+    public function new_invoice( $invoice ) {
262 262
 
263
-		// Only send this email for invoices created via the admin page.
264
-		if ( ! $invoice->is_type( 'invoice' ) || $invoice->is_paid() || $this->is_payment_form_invoice( $invoice->get_id() ) ) {
265
-			return;
266
-		}
263
+        // Only send this email for invoices created via the admin page.
264
+        if ( ! $invoice->is_type( 'invoice' ) || $invoice->is_paid() || $this->is_payment_form_invoice( $invoice->get_id() ) ) {
265
+            return;
266
+        }
267 267
 
268
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
269
-		$recipient = wpinv_get_admin_email();
268
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
269
+        $recipient = wpinv_get_admin_email();
270 270
 
271
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
271
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
272 272
 
273
-	}
273
+    }
274 274
 
275
-	/**
276
-	 * Sends a cancelled invoice notification.
277
-	 *
278
-	 * @param WPInv_Invoice $invoice
279
-	 */
280
-	public function cancelled_invoice( $invoice ) {
275
+    /**
276
+     * Sends a cancelled invoice notification.
277
+     *
278
+     * @param WPInv_Invoice $invoice
279
+     */
280
+    public function cancelled_invoice( $invoice ) {
281 281
 
282
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
283
-		$recipient = $invoice->get_email();
282
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
283
+        $recipient = $invoice->get_email();
284 284
 
285
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
286
-	}
285
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
286
+    }
287 287
 
288
-	/**
289
-	 * Sends a failed invoice notification.
290
-	 *
291
-	 * @param WPInv_Invoice $invoice
292
-	 */
293
-	public function failed_invoice( $invoice ) {
288
+    /**
289
+     * Sends a failed invoice notification.
290
+     *
291
+     * @param WPInv_Invoice $invoice
292
+     */
293
+    public function failed_invoice( $invoice ) {
294 294
 
295
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
296
-		$recipient = wpinv_get_admin_email();
295
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
296
+        $recipient = wpinv_get_admin_email();
297 297
 
298
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
298
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
299 299
 
300
-	}
300
+    }
301 301
 
302
-	/**
303
-	 * Sends a notification whenever an invoice is put on hold.
304
-	 *
305
-	 * @param WPInv_Invoice $invoice
306
-	 */
307
-	public function onhold_invoice( $invoice ) {
302
+    /**
303
+     * Sends a notification whenever an invoice is put on hold.
304
+     *
305
+     * @param WPInv_Invoice $invoice
306
+     */
307
+    public function onhold_invoice( $invoice ) {
308 308
 
309
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
310
-		$recipient = $invoice->get_email();
309
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
310
+        $recipient = $invoice->get_email();
311 311
 
312
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
312
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
313 313
 
314
-	}
314
+    }
315 315
 
316
-	/**
317
-	 * Sends a notification whenever an invoice is marked as processing payment.
318
-	 *
319
-	 * @param WPInv_Invoice $invoice
320
-	 */
321
-	public function processing_invoice( $invoice ) {
316
+    /**
317
+     * Sends a notification whenever an invoice is marked as processing payment.
318
+     *
319
+     * @param WPInv_Invoice $invoice
320
+     */
321
+    public function processing_invoice( $invoice ) {
322 322
 
323
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
324
-		$recipient = $invoice->get_email();
323
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
324
+        $recipient = $invoice->get_email();
325 325
 
326
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
326
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
327 327
 
328
-	}
328
+    }
329 329
 
330
-	/**
331
-	 * Sends a notification whenever an invoice is paid.
332
-	 *
333
-	 * @param WPInv_Invoice $invoice
334
-	 */
335
-	public function completed_invoice( $invoice ) {
330
+    /**
331
+     * Sends a notification whenever an invoice is paid.
332
+     *
333
+     * @param WPInv_Invoice $invoice
334
+     */
335
+    public function completed_invoice( $invoice ) {
336 336
 
337
-		// (Maybe) abort if it is a renewal invoice.
338
-		if ( $invoice->is_renewal() && ! wpinv_get_option( 'email_completed_invoice_renewal_active', false ) ) {
339
-			return;
340
-		}
337
+        // (Maybe) abort if it is a renewal invoice.
338
+        if ( $invoice->is_renewal() && ! wpinv_get_option( 'email_completed_invoice_renewal_active', false ) ) {
339
+            return;
340
+        }
341 341
 
342
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
343
-		$recipient = $invoice->get_email();
342
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
343
+        $recipient = $invoice->get_email();
344 344
 
345
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
345
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
346 346
 
347
-	}
347
+    }
348 348
 
349
-	/**
350
-	 * Sends a notification whenever an invoice is refunded.
351
-	 *
352
-	 * @param WPInv_Invoice $invoice
353
-	 */
354
-	public function refunded_invoice( $invoice ) {
349
+    /**
350
+     * Sends a notification whenever an invoice is refunded.
351
+     *
352
+     * @param WPInv_Invoice $invoice
353
+     */
354
+    public function refunded_invoice( $invoice ) {
355 355
 
356
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
357
-		$recipient = $invoice->get_email();
358
-
359
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
356
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
357
+        $recipient = $invoice->get_email();
358
+
359
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
360 360
 
361
-	}
361
+    }
362 362
 
363
-	/**
364
-	 * Notifies a user about new invoices
365
-	 *
366
-	 * @param WPInv_Invoice $invoice
367
-	 * @param bool $force
368
-	 */
369
-	public function user_invoice( $invoice, $force = false ) {
363
+    /**
364
+     * Notifies a user about new invoices
365
+     *
366
+     * @param WPInv_Invoice $invoice
367
+     * @param bool $force
368
+     */
369
+    public function user_invoice( $invoice, $force = false ) {
370 370
 
371
-		if ( ! $force && ! empty( $GLOBALS['wpinv_skip_invoice_notification'] ) ) {
372
-			return;
373
-		}
374
-
375
-		// Only send this email for invoices created via the admin page.
376
-		if ( ! $invoice->is_type( 'invoice' ) || ( empty( $force ) && $invoice->is_paid() ) || ( empty( $force ) && $this->is_payment_form_invoice( $invoice->get_id() ) ) ) {
377
-			return;
378
-		}
371
+        if ( ! $force && ! empty( $GLOBALS['wpinv_skip_invoice_notification'] ) ) {
372
+            return;
373
+        }
374
+
375
+        // Only send this email for invoices created via the admin page.
376
+        if ( ! $invoice->is_type( 'invoice' ) || ( empty( $force ) && $invoice->is_paid() ) || ( empty( $force ) && $this->is_payment_form_invoice( $invoice->get_id() ) ) ) {
377
+            return;
378
+        }
379 379
 
380
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
381
-		$recipient = $invoice->get_email();
382
-
383
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
380
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
381
+        $recipient = $invoice->get_email();
382
+
383
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
384 384
 
385
-	}
386
-
387
-	/**
388
-	 * Checks if an invoice is a payment form invoice.
389
-	 *
390
-	 * @param int $invoice
391
-	 * @return bool
392
-	 */
393
-	public function is_payment_form_invoice( $invoice ) {
394
-		$is_payment_form_invoice = empty( $_GET['getpaid-admin-action'] ) && ( 'payment_form' === get_post_meta( $invoice, 'wpinv_created_via', true ) || 'geodirectory' === get_post_meta( $invoice, 'wpinv_created_via', true ) );
395
-		return apply_filters( 'getpaid_invoice_notifications_is_payment_form_invoice', $is_payment_form_invoice, $invoice );
396
-	}
385
+    }
386
+
387
+    /**
388
+     * Checks if an invoice is a payment form invoice.
389
+     *
390
+     * @param int $invoice
391
+     * @return bool
392
+     */
393
+    public function is_payment_form_invoice( $invoice ) {
394
+        $is_payment_form_invoice = empty( $_GET['getpaid-admin-action'] ) && ( 'payment_form' === get_post_meta( $invoice, 'wpinv_created_via', true ) || 'geodirectory' === get_post_meta( $invoice, 'wpinv_created_via', true ) );
395
+        return apply_filters( 'getpaid_invoice_notifications_is_payment_form_invoice', $is_payment_form_invoice, $invoice );
396
+    }
397 397
 
398
-	/**
399
-	 * Notifies admin about new invoice notes
400
-	 *
401
-	 * @param WPInv_Invoice $invoice
402
-	 * @param string $note
403
-	 */
404
-	public function user_note( $invoice, $note ) {
405
-
406
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
407
-		$recipient = $invoice->get_email();
398
+    /**
399
+     * Notifies admin about new invoice notes
400
+     *
401
+     * @param WPInv_Invoice $invoice
402
+     * @param string $note
403
+     */
404
+    public function user_note( $invoice, $note ) {
405
+
406
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
407
+        $recipient = $invoice->get_email();
408 408
 
409
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient, array( 'customer_note' => $note ) );
410
-
411
-	}
412
-
413
-	/**
414
-	 * (Force) Sends overdue notices.
415
-	 *
416
-	 * @param WPInv_Invoice $invoice
417
-	 */
418
-	public function force_send_overdue_notice( $invoice ) {
419
-		$email = new GetPaid_Notification_Email( 'overdue', $invoice );
420
-		return $this->send_email( $invoice, $email, 'overdue', $invoice->get_email() );
421
-	}
422
-
423
-	/**
424
-	 * Sends overdue notices.
425
-	 *
426
-	 * @TODO: Create an invoices query class.
427
-	 */
428
-	public function overdue() {
429
-		global $wpdb;
430
-
431
-		$email = new GetPaid_Notification_Email( __FUNCTION__ );
432
-
433
-		// Fetch reminder days.
434
-		$reminder_days = array_unique( wp_parse_id_list( $email->get_option( 'days' ) ) );
435
-
436
-		// Abort if non is set.
437
-		if ( empty( $reminder_days ) ) {
438
-			return;
439
-		}
440
-
441
-		// Retrieve date query.
442
-		$date_query = $this->get_date_query( $reminder_days );
443
-
444
-		// Invoices table.
445
-		$table = $wpdb->prefix . 'getpaid_invoices';
446
-
447
-		// Fetch invoices.
448
-		$invoices  = $wpdb->get_col(
449
-			"SELECT posts.ID FROM $wpdb->posts as posts
409
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient, array( 'customer_note' => $note ) );
410
+
411
+    }
412
+
413
+    /**
414
+     * (Force) Sends overdue notices.
415
+     *
416
+     * @param WPInv_Invoice $invoice
417
+     */
418
+    public function force_send_overdue_notice( $invoice ) {
419
+        $email = new GetPaid_Notification_Email( 'overdue', $invoice );
420
+        return $this->send_email( $invoice, $email, 'overdue', $invoice->get_email() );
421
+    }
422
+
423
+    /**
424
+     * Sends overdue notices.
425
+     *
426
+     * @TODO: Create an invoices query class.
427
+     */
428
+    public function overdue() {
429
+        global $wpdb;
430
+
431
+        $email = new GetPaid_Notification_Email( __FUNCTION__ );
432
+
433
+        // Fetch reminder days.
434
+        $reminder_days = array_unique( wp_parse_id_list( $email->get_option( 'days' ) ) );
435
+
436
+        // Abort if non is set.
437
+        if ( empty( $reminder_days ) ) {
438
+            return;
439
+        }
440
+
441
+        // Retrieve date query.
442
+        $date_query = $this->get_date_query( $reminder_days );
443
+
444
+        // Invoices table.
445
+        $table = $wpdb->prefix . 'getpaid_invoices';
446
+
447
+        // Fetch invoices.
448
+        $invoices  = $wpdb->get_col(
449
+            "SELECT posts.ID FROM $wpdb->posts as posts
450 450
 			LEFT JOIN $table as invoices ON invoices.post_id = posts.ID
451 451
 			WHERE posts.post_type = 'wpi_invoice' AND posts.post_status = 'wpi-pending' $date_query"
452 452
         );
453 453
 
454
-		foreach ( $invoices as $invoice ) {
454
+        foreach ( $invoices as $invoice ) {
455 455
 
456
-			// Only send this email for invoices created via the admin page.
457
-			if ( ! $this->is_payment_form_invoice( $invoice ) ) {
458
-				$invoice       = new WPInv_Invoice( $invoice );
459
-				$email->object = $invoice;
456
+            // Only send this email for invoices created via the admin page.
457
+            if ( ! $this->is_payment_form_invoice( $invoice ) ) {
458
+                $invoice       = new WPInv_Invoice( $invoice );
459
+                $email->object = $invoice;
460 460
 
461
-				if ( $invoice->needs_payment() ) {
462
-					$this->send_email( $invoice, $email, __FUNCTION__, $invoice->get_email() );
463
-				}
461
+                if ( $invoice->needs_payment() ) {
462
+                    $this->send_email( $invoice, $email, __FUNCTION__, $invoice->get_email() );
463
+                }
464 464
 }
465 465
 }
466 466
 
467
-	}
467
+    }
468 468
 
469
-	/**
470
-	 * Calculates the date query for an invoices query
471
-	 *
472
-	 * @param array $reminder_days
473
-	 * @return string
474
-	 */
475
-	public function get_date_query( $reminder_days ) {
469
+    /**
470
+     * Calculates the date query for an invoices query
471
+     *
472
+     * @param array $reminder_days
473
+     * @return string
474
+     */
475
+    public function get_date_query( $reminder_days ) {
476 476
 
477
-		$date_query = array(
478
-			'relation' => 'OR',
479
-		);
477
+        $date_query = array(
478
+            'relation' => 'OR',
479
+        );
480 480
 
481
-		foreach ( $reminder_days as $days ) {
482
-			$date = date_parse( date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) ) );
481
+        foreach ( $reminder_days as $days ) {
482
+            $date = date_parse( date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) ) );
483 483
 
484
-			$date_query[] = array(
485
-				'year'  => $date['year'],
486
-				'month' => $date['month'],
487
-				'day'   => $date['day'],
488
-			);
484
+            $date_query[] = array(
485
+                'year'  => $date['year'],
486
+                'month' => $date['month'],
487
+                'day'   => $date['day'],
488
+            );
489 489
 
490
-		}
490
+        }
491 491
 
492
-		$date_query = new WP_Date_Query( $date_query, 'invoices.due_date' );
492
+        $date_query = new WP_Date_Query( $date_query, 'invoices.due_date' );
493 493
 
494
-		return $date_query->get_sql();
494
+        return $date_query->get_sql();
495 495
 
496
-	}
496
+    }
497 497
 
498 498
 }
Please login to merge, or discard this patch.
Spacing   +125 added lines, -125 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,50 +119,50 @@  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
-		return apply_filters( 'getpaid_invoice_email_merge_tags', $merge_tags, $invoice );
165
+		return apply_filters('getpaid_invoice_email_merge_tags', $merge_tags, $invoice);
166 166
 	}
167 167
 
168 168
 	/**
@@ -174,12 +174,12 @@  discard block
 block discarded – undo
174 174
 	 * @param string|array $recipients
175 175
 	 * @param array $extra_args Extra template args.
176 176
 	 */
177
-	public function send_email( $invoice, $email, $type, $recipients, $extra_args = array() ) {
177
+	public function send_email($invoice, $email, $type, $recipients, $extra_args = array()) {
178 178
 
179
-		do_action( 'getpaid_before_send_invoice_notification', $type, $invoice, $email );
179
+		do_action('getpaid_before_send_invoice_notification', $type, $invoice, $email);
180 180
 
181
-		$skip = $invoice->is_free() && wpinv_get_option( 'skip_email_free_invoice' );
182
-		if ( apply_filters( 'getpaid_skip_invoice_email', $skip, $type, $invoice ) ) {
181
+		$skip = $invoice->is_free() && wpinv_get_option('skip_email_free_invoice');
182
+		if (apply_filters('getpaid_skip_invoice_email', $skip, $type, $invoice)) {
183 183
 			return;
184 184
 		}
185 185
 
@@ -187,41 +187,41 @@  discard block
 block discarded – undo
187 187
 		$merge_tags = $email->get_merge_tags();
188 188
 
189 189
 		$result = $mailer->send(
190
-			apply_filters( 'getpaid_invoice_email_recipients', wpinv_parse_list( $recipients ), $email ),
191
-			$email->add_merge_tags( $email->get_subject(), $merge_tags ),
192
-			$email->get_content( $merge_tags, $extra_args ),
190
+			apply_filters('getpaid_invoice_email_recipients', wpinv_parse_list($recipients), $email),
191
+			$email->add_merge_tags($email->get_subject(), $merge_tags),
192
+			$email->get_content($merge_tags, $extra_args),
193 193
 			$email->get_attachments()
194 194
 		);
195 195
 
196 196
 		// Maybe send a copy to the admin.
197
-		if ( $email->include_admin_bcc() ) {
197
+		if ($email->include_admin_bcc()) {
198 198
 			$mailer->send(
199 199
 				wpinv_get_admin_email(),
200
-				$email->add_merge_tags( $email->get_subject() . __( ' - ADMIN BCC COPY', 'invoicing' ), $merge_tags ),
201
-				$email->get_content( $merge_tags ),
200
+				$email->add_merge_tags($email->get_subject() . __(' - ADMIN BCC COPY', 'invoicing'), $merge_tags),
201
+				$email->get_content($merge_tags),
202 202
 				$email->get_attachments()
203 203
 			);
204 204
 		}
205 205
 
206
-		if ( $result ) {
206
+		if ($result) {
207 207
 			$invoice->add_system_note(
208 208
 				sprintf(
209
-					__( 'Successfully sent %1$s notification email to %2$s.', 'invoicing' ),
210
-					sanitize_key( $type ),
211
-					$email->is_admin_email() ? __( 'admin' ) : __( 'the customer' )
209
+					__('Successfully sent %1$s notification email to %2$s.', 'invoicing'),
210
+					sanitize_key($type),
211
+					$email->is_admin_email() ? __('admin') : __('the customer')
212 212
 				)
213 213
 			);
214 214
 		} else {
215 215
 			$invoice->add_system_note(
216 216
 				sprintf(
217
-					__( 'Failed sending %1$s notification email to %2$s.', 'invoicing' ),
218
-					sanitize_key( $type ),
219
-					$email->is_admin_email() ? __( 'admin' ) : __( 'the customer' )
217
+					__('Failed sending %1$s notification email to %2$s.', 'invoicing'),
218
+					sanitize_key($type),
219
+					$email->is_admin_email() ? __('admin') : __('the customer')
220 220
 				)
221 221
 			);
222 222
 		}
223 223
 
224
-		do_action( 'getpaid_after_send_invoice_notification', $type, $invoice, $email );
224
+		do_action('getpaid_after_send_invoice_notification', $type, $invoice, $email);
225 225
 
226 226
 		return $result;
227 227
 	}
@@ -232,20 +232,20 @@  discard block
 block discarded – undo
232 232
 	 * @param array $recipients
233 233
 	 * @param GetPaid_Notification_Email $email
234 234
 	 */
235
-	public function filter_email_recipients( $recipients, $email ) {
235
+	public function filter_email_recipients($recipients, $email) {
236 236
 
237
-		if ( ! $email->is_admin_email() ) {
237
+		if (!$email->is_admin_email()) {
238 238
 			$cc   = $email->object->get_email_cc();
239
-			$cc_2 = get_user_meta( $email->object->get_user_id(), '_wpinv_email_cc', true );
239
+			$cc_2 = get_user_meta($email->object->get_user_id(), '_wpinv_email_cc', true);
240 240
 
241
-			if ( ! empty( $cc ) ) {
242
-				$cc = array_map( 'sanitize_email', wpinv_parse_list( $cc ) );
243
-				$recipients = array_filter( array_unique( array_merge( $recipients, $cc ) ) );
241
+			if (!empty($cc)) {
242
+				$cc = array_map('sanitize_email', wpinv_parse_list($cc));
243
+				$recipients = array_filter(array_unique(array_merge($recipients, $cc)));
244 244
 			}
245 245
 
246
-			if ( ! empty( $cc_2 ) ) {
247
-				$cc_2 = array_map( 'sanitize_email', wpinv_parse_list( $cc_2 ) );
248
-				$recipients = array_filter( array_unique( array_merge( $recipients, $cc_2 ) ) );
246
+			if (!empty($cc_2)) {
247
+				$cc_2 = array_map('sanitize_email', wpinv_parse_list($cc_2));
248
+				$recipients = array_filter(array_unique(array_merge($recipients, $cc_2)));
249 249
 			}
250 250
 }
251 251
 
@@ -258,17 +258,17 @@  discard block
 block discarded – undo
258 258
 	 *
259 259
 	 * @param WPInv_Invoice $invoice
260 260
 	 */
261
-	public function new_invoice( $invoice ) {
261
+	public function new_invoice($invoice) {
262 262
 
263 263
 		// Only send this email for invoices created via the admin page.
264
-		if ( ! $invoice->is_type( 'invoice' ) || $invoice->is_paid() || $this->is_payment_form_invoice( $invoice->get_id() ) ) {
264
+		if (!$invoice->is_type('invoice') || $invoice->is_paid() || $this->is_payment_form_invoice($invoice->get_id())) {
265 265
 			return;
266 266
 		}
267 267
 
268
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
268
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
269 269
 		$recipient = wpinv_get_admin_email();
270 270
 
271
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
271
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
272 272
 
273 273
 	}
274 274
 
@@ -277,12 +277,12 @@  discard block
 block discarded – undo
277 277
 	 *
278 278
 	 * @param WPInv_Invoice $invoice
279 279
 	 */
280
-	public function cancelled_invoice( $invoice ) {
280
+	public function cancelled_invoice($invoice) {
281 281
 
282
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
282
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
283 283
 		$recipient = $invoice->get_email();
284 284
 
285
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
285
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
286 286
 	}
287 287
 
288 288
 	/**
@@ -290,12 +290,12 @@  discard block
 block discarded – undo
290 290
 	 *
291 291
 	 * @param WPInv_Invoice $invoice
292 292
 	 */
293
-	public function failed_invoice( $invoice ) {
293
+	public function failed_invoice($invoice) {
294 294
 
295
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
295
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
296 296
 		$recipient = wpinv_get_admin_email();
297 297
 
298
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
298
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
299 299
 
300 300
 	}
301 301
 
@@ -304,12 +304,12 @@  discard block
 block discarded – undo
304 304
 	 *
305 305
 	 * @param WPInv_Invoice $invoice
306 306
 	 */
307
-	public function onhold_invoice( $invoice ) {
307
+	public function onhold_invoice($invoice) {
308 308
 
309
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
309
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
310 310
 		$recipient = $invoice->get_email();
311 311
 
312
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
312
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
313 313
 
314 314
 	}
315 315
 
@@ -318,12 +318,12 @@  discard block
 block discarded – undo
318 318
 	 *
319 319
 	 * @param WPInv_Invoice $invoice
320 320
 	 */
321
-	public function processing_invoice( $invoice ) {
321
+	public function processing_invoice($invoice) {
322 322
 
323
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
323
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
324 324
 		$recipient = $invoice->get_email();
325 325
 
326
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
326
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
327 327
 
328 328
 	}
329 329
 
@@ -332,17 +332,17 @@  discard block
 block discarded – undo
332 332
 	 *
333 333
 	 * @param WPInv_Invoice $invoice
334 334
 	 */
335
-	public function completed_invoice( $invoice ) {
335
+	public function completed_invoice($invoice) {
336 336
 
337 337
 		// (Maybe) abort if it is a renewal invoice.
338
-		if ( $invoice->is_renewal() && ! wpinv_get_option( 'email_completed_invoice_renewal_active', false ) ) {
338
+		if ($invoice->is_renewal() && !wpinv_get_option('email_completed_invoice_renewal_active', false)) {
339 339
 			return;
340 340
 		}
341 341
 
342
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
342
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
343 343
 		$recipient = $invoice->get_email();
344 344
 
345
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
345
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
346 346
 
347 347
 	}
348 348
 
@@ -351,12 +351,12 @@  discard block
 block discarded – undo
351 351
 	 *
352 352
 	 * @param WPInv_Invoice $invoice
353 353
 	 */
354
-	public function refunded_invoice( $invoice ) {
354
+	public function refunded_invoice($invoice) {
355 355
 
356
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
356
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
357 357
 		$recipient = $invoice->get_email();
358 358
 
359
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
359
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
360 360
 
361 361
 	}
362 362
 
@@ -366,21 +366,21 @@  discard block
 block discarded – undo
366 366
 	 * @param WPInv_Invoice $invoice
367 367
 	 * @param bool $force
368 368
 	 */
369
-	public function user_invoice( $invoice, $force = false ) {
369
+	public function user_invoice($invoice, $force = false) {
370 370
 
371
-		if ( ! $force && ! empty( $GLOBALS['wpinv_skip_invoice_notification'] ) ) {
371
+		if (!$force && !empty($GLOBALS['wpinv_skip_invoice_notification'])) {
372 372
 			return;
373 373
 		}
374 374
 
375 375
 		// Only send this email for invoices created via the admin page.
376
-		if ( ! $invoice->is_type( 'invoice' ) || ( empty( $force ) && $invoice->is_paid() ) || ( empty( $force ) && $this->is_payment_form_invoice( $invoice->get_id() ) ) ) {
376
+		if (!$invoice->is_type('invoice') || (empty($force) && $invoice->is_paid()) || (empty($force) && $this->is_payment_form_invoice($invoice->get_id()))) {
377 377
 			return;
378 378
 		}
379 379
 
380
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
380
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
381 381
 		$recipient = $invoice->get_email();
382 382
 
383
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
383
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient);
384 384
 
385 385
 	}
386 386
 
@@ -390,9 +390,9 @@  discard block
 block discarded – undo
390 390
 	 * @param int $invoice
391 391
 	 * @return bool
392 392
 	 */
393
-	public function is_payment_form_invoice( $invoice ) {
394
-		$is_payment_form_invoice = empty( $_GET['getpaid-admin-action'] ) && ( 'payment_form' === get_post_meta( $invoice, 'wpinv_created_via', true ) || 'geodirectory' === get_post_meta( $invoice, 'wpinv_created_via', true ) );
395
-		return apply_filters( 'getpaid_invoice_notifications_is_payment_form_invoice', $is_payment_form_invoice, $invoice );
393
+	public function is_payment_form_invoice($invoice) {
394
+		$is_payment_form_invoice = empty($_GET['getpaid-admin-action']) && ('payment_form' === get_post_meta($invoice, 'wpinv_created_via', true) || 'geodirectory' === get_post_meta($invoice, 'wpinv_created_via', true));
395
+		return apply_filters('getpaid_invoice_notifications_is_payment_form_invoice', $is_payment_form_invoice, $invoice);
396 396
 	}
397 397
 
398 398
 	/**
@@ -401,12 +401,12 @@  discard block
 block discarded – undo
401 401
 	 * @param WPInv_Invoice $invoice
402 402
 	 * @param string $note
403 403
 	 */
404
-	public function user_note( $invoice, $note ) {
404
+	public function user_note($invoice, $note) {
405 405
 
406
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
406
+		$email     = new GetPaid_Notification_Email(__FUNCTION__, $invoice);
407 407
 		$recipient = $invoice->get_email();
408 408
 
409
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient, array( 'customer_note' => $note ) );
409
+		return $this->send_email($invoice, $email, __FUNCTION__, $recipient, array('customer_note' => $note));
410 410
 
411 411
 	}
412 412
 
@@ -415,9 +415,9 @@  discard block
 block discarded – undo
415 415
 	 *
416 416
 	 * @param WPInv_Invoice $invoice
417 417
 	 */
418
-	public function force_send_overdue_notice( $invoice ) {
419
-		$email = new GetPaid_Notification_Email( 'overdue', $invoice );
420
-		return $this->send_email( $invoice, $email, 'overdue', $invoice->get_email() );
418
+	public function force_send_overdue_notice($invoice) {
419
+		$email = new GetPaid_Notification_Email('overdue', $invoice);
420
+		return $this->send_email($invoice, $email, 'overdue', $invoice->get_email());
421 421
 	}
422 422
 
423 423
 	/**
@@ -428,38 +428,38 @@  discard block
 block discarded – undo
428 428
 	public function overdue() {
429 429
 		global $wpdb;
430 430
 
431
-		$email = new GetPaid_Notification_Email( __FUNCTION__ );
431
+		$email = new GetPaid_Notification_Email(__FUNCTION__);
432 432
 
433 433
 		// Fetch reminder days.
434
-		$reminder_days = array_unique( wp_parse_id_list( $email->get_option( 'days' ) ) );
434
+		$reminder_days = array_unique(wp_parse_id_list($email->get_option('days')));
435 435
 
436 436
 		// Abort if non is set.
437
-		if ( empty( $reminder_days ) ) {
437
+		if (empty($reminder_days)) {
438 438
 			return;
439 439
 		}
440 440
 
441 441
 		// Retrieve date query.
442
-		$date_query = $this->get_date_query( $reminder_days );
442
+		$date_query = $this->get_date_query($reminder_days);
443 443
 
444 444
 		// Invoices table.
445 445
 		$table = $wpdb->prefix . 'getpaid_invoices';
446 446
 
447 447
 		// Fetch invoices.
448
-		$invoices  = $wpdb->get_col(
448
+		$invoices = $wpdb->get_col(
449 449
 			"SELECT posts.ID FROM $wpdb->posts as posts
450 450
 			LEFT JOIN $table as invoices ON invoices.post_id = posts.ID
451 451
 			WHERE posts.post_type = 'wpi_invoice' AND posts.post_status = 'wpi-pending' $date_query"
452 452
         );
453 453
 
454
-		foreach ( $invoices as $invoice ) {
454
+		foreach ($invoices as $invoice) {
455 455
 
456 456
 			// Only send this email for invoices created via the admin page.
457
-			if ( ! $this->is_payment_form_invoice( $invoice ) ) {
458
-				$invoice       = new WPInv_Invoice( $invoice );
457
+			if (!$this->is_payment_form_invoice($invoice)) {
458
+				$invoice       = new WPInv_Invoice($invoice);
459 459
 				$email->object = $invoice;
460 460
 
461
-				if ( $invoice->needs_payment() ) {
462
-					$this->send_email( $invoice, $email, __FUNCTION__, $invoice->get_email() );
461
+				if ($invoice->needs_payment()) {
462
+					$this->send_email($invoice, $email, __FUNCTION__, $invoice->get_email());
463 463
 				}
464 464
 }
465 465
 }
@@ -472,14 +472,14 @@  discard block
 block discarded – undo
472 472
 	 * @param array $reminder_days
473 473
 	 * @return string
474 474
 	 */
475
-	public function get_date_query( $reminder_days ) {
475
+	public function get_date_query($reminder_days) {
476 476
 
477 477
 		$date_query = array(
478 478
 			'relation' => 'OR',
479 479
 		);
480 480
 
481
-		foreach ( $reminder_days as $days ) {
482
-			$date = date_parse( date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) ) );
481
+		foreach ($reminder_days as $days) {
482
+			$date = date_parse(date('Y-m-d', strtotime("-$days days", current_time('timestamp'))));
483 483
 
484 484
 			$date_query[] = array(
485 485
 				'year'  => $date['year'],
@@ -489,7 +489,7 @@  discard block
 block discarded – undo
489 489
 
490 490
 		}
491 491
 
492
-		$date_query = new WP_Date_Query( $date_query, 'invoices.due_date' );
492
+		$date_query = new WP_Date_Query($date_query, 'invoices.due_date');
493 493
 
494 494
 		return $date_query->get_sql();
495 495
 
Please login to merge, or discard this patch.
includes/subscription-functions.php 2 patches
Indentation   +321 added lines, -321 removed lines patch added patch discarded remove patch
@@ -50,7 +50,7 @@  discard block
 block discarded – undo
50 50
  */
51 51
 function getpaid_get_invoice_subscription_group( $invoice_id, $subscription_id ) {
52 52
     $subscription_groups = getpaid_get_invoice_subscription_groups( $invoice_id );
53
-	$matching_group      = wp_list_filter( $subscription_groups, compact( 'subscription_id' ) );
53
+    $matching_group      = wp_list_filter( $subscription_groups, compact( 'subscription_id' ) );
54 54
     return reset( $matching_group );
55 55
 }
56 56
 
@@ -63,11 +63,11 @@  discard block
 block discarded – undo
63 63
  */
64 64
 function getpaid_get_subscription( $subscription ) {
65 65
 
66
-	if ( ! is_a( $subscription, 'WPInv_Subscription' ) ) {
67
-		$subscription = new WPInv_Subscription( $subscription );
68
-	}
66
+    if ( ! is_a( $subscription, 'WPInv_Subscription' ) ) {
67
+        $subscription = new WPInv_Subscription( $subscription );
68
+    }
69 69
 
70
-	return $subscription->exists() ? $subscription : false;
70
+    return $subscription->exists() ? $subscription : false;
71 71
 }
72 72
 
73 73
 /**
@@ -81,28 +81,28 @@  discard block
 block discarded – undo
81 81
  */
82 82
 function getpaid_get_subscriptions( $args = array(), $return = 'results' ) {
83 83
 
84
-	// Do not retrieve all fields if we just want the count.
85
-	if ( 'count' == $return ) {
86
-		$args['fields'] = 'id';
87
-		$args['number'] = 1;
88
-	}
84
+    // Do not retrieve all fields if we just want the count.
85
+    if ( 'count' == $return ) {
86
+        $args['fields'] = 'id';
87
+        $args['number'] = 1;
88
+    }
89 89
 
90
-	// Do not count all matches if we just want the results.
91
-	if ( 'results' == $return ) {
92
-		$args['count_total'] = false;
93
-	}
90
+    // Do not count all matches if we just want the results.
91
+    if ( 'results' == $return ) {
92
+        $args['count_total'] = false;
93
+    }
94 94
 
95
-	$query = new GetPaid_Subscriptions_Query( $args );
95
+    $query = new GetPaid_Subscriptions_Query( $args );
96 96
 
97
-	if ( 'results' == $return ) {
98
-		return $query->get_results();
99
-	}
97
+    if ( 'results' == $return ) {
98
+        return $query->get_results();
99
+    }
100 100
 
101
-	if ( 'count' == $return ) {
102
-		return $query->get_total();
103
-	}
101
+    if ( 'count' == $return ) {
102
+        return $query->get_total();
103
+    }
104 104
 
105
-	return $query;
105
+    return $query;
106 106
 }
107 107
 
108 108
 /**
@@ -112,18 +112,18 @@  discard block
 block discarded – undo
112 112
  */
113 113
 function getpaid_get_subscription_statuses() {
114 114
 
115
-	return apply_filters(
116
-		'getpaid_get_subscription_statuses',
117
-		array(
118
-			'pending'   => __( 'Pending', 'invoicing' ),
119
-			'trialling' => __( 'Trialing', 'invoicing' ),
120
-			'active'    => __( 'Active', 'invoicing' ),
121
-			'failing'   => __( 'Failing', 'invoicing' ),
122
-			'expired'   => __( 'Expired', 'invoicing' ),
123
-			'completed' => __( 'Complete', 'invoicing' ),
124
-			'cancelled' => __( 'Cancelled', 'invoicing' ),
125
-		)
126
-	);
115
+    return apply_filters(
116
+        'getpaid_get_subscription_statuses',
117
+        array(
118
+            'pending'   => __( 'Pending', 'invoicing' ),
119
+            'trialling' => __( 'Trialing', 'invoicing' ),
120
+            'active'    => __( 'Active', 'invoicing' ),
121
+            'failing'   => __( 'Failing', 'invoicing' ),
122
+            'expired'   => __( 'Expired', 'invoicing' ),
123
+            'completed' => __( 'Complete', 'invoicing' ),
124
+            'cancelled' => __( 'Cancelled', 'invoicing' ),
125
+        )
126
+    );
127 127
 
128 128
 }
129 129
 
@@ -133,8 +133,8 @@  discard block
 block discarded – undo
133 133
  * @return string
134 134
  */
135 135
 function getpaid_get_subscription_status_label( $status ) {
136
-	$statuses = getpaid_get_subscription_statuses();
137
-	return isset( $statuses[ $status ] ) ? $statuses[ $status ] : ucfirst( sanitize_text_field( $status ) );
136
+    $statuses = getpaid_get_subscription_statuses();
137
+    return isset( $statuses[ $status ] ) ? $statuses[ $status ] : ucfirst( sanitize_text_field( $status ) );
138 138
 }
139 139
 
140 140
 /**
@@ -144,18 +144,18 @@  discard block
 block discarded – undo
144 144
  */
145 145
 function getpaid_get_subscription_status_classes() {
146 146
 
147
-	return apply_filters(
148
-		'getpaid_get_subscription_status_classes',
149
-		array(
150
-			'pending'   => 'badge-dark',
151
-			'trialling' => 'badge-info',
152
-			'active'    => 'badge-success',
153
-			'failing'   => 'badge-warning',
154
-			'expired'   => 'badge-danger',
155
-			'completed' => 'badge-primary',
156
-			'cancelled' => 'badge-secondary',
157
-		)
158
-	);
147
+    return apply_filters(
148
+        'getpaid_get_subscription_status_classes',
149
+        array(
150
+            'pending'   => 'badge-dark',
151
+            'trialling' => 'badge-info',
152
+            'active'    => 'badge-success',
153
+            'failing'   => 'badge-warning',
154
+            'expired'   => 'badge-danger',
155
+            'completed' => 'badge-primary',
156
+            'cancelled' => 'badge-secondary',
157
+        )
158
+    );
159 159
 
160 160
 }
161 161
 
@@ -166,15 +166,15 @@  discard block
 block discarded – undo
166 166
  */
167 167
 function getpaid_get_subscription_status_counts( $args = array() ) {
168 168
 
169
-	$statuses = array_keys( getpaid_get_subscription_statuses() );
170
-	$counts   = array();
169
+    $statuses = array_keys( getpaid_get_subscription_statuses() );
170
+    $counts   = array();
171 171
 
172
-	foreach ( $statuses as $status ) {
173
-		$_args             = wp_parse_args( "status=$status", $args );
174
-		$counts[ $status ] = getpaid_get_subscriptions( $_args, 'count' );
175
-	}
172
+    foreach ( $statuses as $status ) {
173
+        $_args             = wp_parse_args( "status=$status", $args );
174
+        $counts[ $status ] = getpaid_get_subscriptions( $_args, 'count' );
175
+    }
176 176
 
177
-	return $counts;
177
+    return $counts;
178 178
 
179 179
 }
180 180
 
@@ -185,32 +185,32 @@  discard block
 block discarded – undo
185 185
  */
186 186
 function getpaid_get_subscription_periods() {
187 187
 
188
-	return apply_filters(
189
-		'getpaid_get_subscription_periods',
190
-		array(
188
+    return apply_filters(
189
+        'getpaid_get_subscription_periods',
190
+        array(
191 191
 
192
-			'day'   => array(
193
-				'singular' => __( '%s day', 'invoicing' ),
194
-				'plural'   => __( '%d days', 'invoicing' ),
195
-			),
192
+            'day'   => array(
193
+                'singular' => __( '%s day', 'invoicing' ),
194
+                'plural'   => __( '%d days', 'invoicing' ),
195
+            ),
196 196
 
197
-			'week'  => array(
198
-				'singular' => __( '%s week', 'invoicing' ),
199
-				'plural'   => __( '%d weeks', 'invoicing' ),
200
-			),
197
+            'week'  => array(
198
+                'singular' => __( '%s week', 'invoicing' ),
199
+                'plural'   => __( '%d weeks', 'invoicing' ),
200
+            ),
201 201
 
202
-			'month' => array(
203
-				'singular' => __( '%s month', 'invoicing' ),
204
-				'plural'   => __( '%d months', 'invoicing' ),
205
-			),
202
+            'month' => array(
203
+                'singular' => __( '%s month', 'invoicing' ),
204
+                'plural'   => __( '%d months', 'invoicing' ),
205
+            ),
206 206
 
207
-			'year'  => array(
208
-				'singular' => __( '%s year', 'invoicing' ),
209
-				'plural'   => __( '%d years', 'invoicing' ),
210
-			),
207
+            'year'  => array(
208
+                'singular' => __( '%s year', 'invoicing' ),
209
+                'plural'   => __( '%d years', 'invoicing' ),
210
+            ),
211 211
 
212
-		)
213
-	);
212
+        )
213
+    );
214 214
 
215 215
 }
216 216
 
@@ -221,7 +221,7 @@  discard block
 block discarded – undo
221 221
  * @return int
222 222
  */
223 223
 function getpaid_get_subscription_trial_period_interval( $trial_period ) {
224
-	return (int) preg_replace( '/[^0-9]/', '', $trial_period );
224
+    return (int) preg_replace( '/[^0-9]/', '', $trial_period );
225 225
 }
226 226
 
227 227
 /**
@@ -231,7 +231,7 @@  discard block
 block discarded – undo
231 231
  * @return string
232 232
  */
233 233
 function getpaid_get_subscription_trial_period_period( $trial_period ) {
234
-	return preg_replace( '/[^a-z]/', '', strtolower( $trial_period ) );
234
+    return preg_replace( '/[^a-z]/', '', strtolower( $trial_period ) );
235 235
 }
236 236
 
237 237
 /**
@@ -242,8 +242,8 @@  discard block
 block discarded – undo
242 242
  * @return string
243 243
  */
244 244
 function getpaid_get_subscription_period_label( $period, $interval = 1, $singular_prefix = '1' ) {
245
-	$label = (int) $interval > 1 ? getpaid_get_plural_subscription_period_label( $period, $interval ) : getpaid_get_singular_subscription_period_label( $period, $singular_prefix );
246
-	return strtolower( sanitize_text_field( $label ) );
245
+    $label = (int) $interval > 1 ? getpaid_get_plural_subscription_period_label( $period, $interval ) : getpaid_get_singular_subscription_period_label( $period, $singular_prefix );
246
+    return strtolower( sanitize_text_field( $label ) );
247 247
 }
248 248
 
249 249
 /**
@@ -254,22 +254,22 @@  discard block
 block discarded – undo
254 254
  */
255 255
 function getpaid_get_singular_subscription_period_label( $period, $singular_prefix = '1' ) {
256 256
 
257
-	$periods = getpaid_get_subscription_periods();
258
-	$period  = strtolower( $period );
257
+    $periods = getpaid_get_subscription_periods();
258
+    $period  = strtolower( $period );
259 259
 
260
-	if ( isset( $periods[ $period ] ) ) {
261
-		return sprintf( $periods[ $period ]['singular'], $singular_prefix );
262
-	}
260
+    if ( isset( $periods[ $period ] ) ) {
261
+        return sprintf( $periods[ $period ]['singular'], $singular_prefix );
262
+    }
263 263
 
264
-	// Backwards compatibility.
265
-	foreach ( $periods as $key => $data ) {
266
-		if ( strpos( $key, $period ) === 0 ) {
267
-			return sprintf( $data['singular'], $singular_prefix );
268
-		}
269
-	}
264
+    // Backwards compatibility.
265
+    foreach ( $periods as $key => $data ) {
266
+        if ( strpos( $key, $period ) === 0 ) {
267
+            return sprintf( $data['singular'], $singular_prefix );
268
+        }
269
+    }
270 270
 
271
-	// Invalid string.
272
-	return '';
271
+    // Invalid string.
272
+    return '';
273 273
 }
274 274
 
275 275
 /**
@@ -281,22 +281,22 @@  discard block
 block discarded – undo
281 281
  */
282 282
 function getpaid_get_plural_subscription_period_label( $period, $interval ) {
283 283
 
284
-	$periods = getpaid_get_subscription_periods();
285
-	$period  = strtolower( $period );
284
+    $periods = getpaid_get_subscription_periods();
285
+    $period  = strtolower( $period );
286 286
 
287
-	if ( isset( $periods[ $period ] ) ) {
288
-		return sprintf( $periods[ $period ]['plural'], $interval );
289
-	}
287
+    if ( isset( $periods[ $period ] ) ) {
288
+        return sprintf( $periods[ $period ]['plural'], $interval );
289
+    }
290 290
 
291
-	// Backwards compatibility.
292
-	foreach ( $periods as $key => $data ) {
293
-		if ( strpos( $key, $period ) === 0 ) {
294
-			return sprintf( $data['plural'], $interval );
295
-		}
296
-	}
291
+    // Backwards compatibility.
292
+    foreach ( $periods as $key => $data ) {
293
+        if ( strpos( $key, $period ) === 0 ) {
294
+            return sprintf( $data['plural'], $interval );
295
+        }
296
+    }
297 297
 
298
-	// Invalid string.
299
-	return '';
298
+    // Invalid string.
299
+    return '';
300 300
 }
301 301
 
302 302
 /**
@@ -307,90 +307,90 @@  discard block
 block discarded – undo
307 307
  */
308 308
 function getpaid_get_formatted_subscription_amount( $subscription ) {
309 309
 
310
-	$initial    = wpinv_price( $subscription->get_initial_amount(), $subscription->get_parent_payment()->get_currency() );
311
-	$recurring  = wpinv_price( $subscription->get_recurring_amount(), $subscription->get_parent_payment()->get_currency() );
312
-	$period     = getpaid_get_subscription_period_label( $subscription->get_period(), $subscription->get_frequency(), '' );
313
-	$bill_times = $subscription->get_bill_times();
314
-
315
-	if ( ! empty( $bill_times ) ) {
316
-		$bill_times = $subscription->get_frequency() * $bill_times;
317
-		$bill_times = getpaid_get_subscription_period_label( $subscription->get_period(), $bill_times );
318
-	}
319
-
320
-	// Trial periods.
321
-	if ( $subscription->has_trial_period() ) {
322
-
323
-		$trial_period   = getpaid_get_subscription_trial_period_period( $subscription->get_trial_period() );
324
-		$trial_interval = getpaid_get_subscription_trial_period_interval( $subscription->get_trial_period() );
325
-
326
-		if ( empty( $bill_times ) ) {
327
-
328
-			return sprintf(
329
-				// translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period
330
-				_x( '%1$s trial for %2$s then %3$s / %4$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year)', 'invoicing' ),
331
-				$initial,
332
-				getpaid_get_subscription_period_label( $trial_period, $trial_interval ),
333
-				$recurring,
334
-				$period
335
-			);
336
-
337
-		}
338
-
339
-		return sprintf(
340
-			// translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period, $5: is the bill times
341
-			_x( '%1$s trial for %2$s then %3$s / %4$s for %5$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year for 4 years)', 'invoicing' ),
342
-			$initial,
343
-			getpaid_get_subscription_period_label( $trial_period, $trial_interval ),
344
-			$recurring,
345
-			$period,
346
-			$bill_times
347
-		);
348
-
349
-	}
350
-
351
-	if ( $initial != $recurring ) {
352
-
353
-		if ( empty( $bill_times ) ) {
354
-
355
-			return sprintf(
356
-				// translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period
357
-				_x( 'Initial payment of %1$s which renews at %2$s / %3$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year)', 'invoicing' ),
358
-				$initial,
359
-				$recurring,
360
-				$period
361
-			);
362
-
363
-		}
364
-
365
-		return sprintf(
366
-			// translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period, $4: is the bill times
367
-			_x( 'Initial payment of %1$s which renews at %2$s / %3$s for %4$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year for 5 years)', 'invoicing' ),
368
-			$initial,
369
-			$recurring,
370
-			$period,
371
-			$bill_times
372
-		);
373
-
374
-	}
375
-
376
-	if ( empty( $bill_times ) ) {
377
-
378
-		return sprintf(
379
-			// translators: $1: is the recurring amount, $2: is the recurring period
380
-			_x( '%1$s / %2$s', 'Subscription amount. (e.g.: $120 / year)', 'invoicing' ),
381
-			$initial,
382
-			$period
383
-		);
384
-
385
-	}
386
-
387
-	return sprintf(
388
-		// translators: $1: is the bill times, $2: is the recurring amount, $3: is the recurring period
389
-		_x( '%2$s / %3$s for %1$s', 'Subscription amount. (e.g.: $120 / year for 5 years)', 'invoicing' ),
390
-		$bill_times,
391
-		$initial,
392
-		$period
393
-	);
310
+    $initial    = wpinv_price( $subscription->get_initial_amount(), $subscription->get_parent_payment()->get_currency() );
311
+    $recurring  = wpinv_price( $subscription->get_recurring_amount(), $subscription->get_parent_payment()->get_currency() );
312
+    $period     = getpaid_get_subscription_period_label( $subscription->get_period(), $subscription->get_frequency(), '' );
313
+    $bill_times = $subscription->get_bill_times();
314
+
315
+    if ( ! empty( $bill_times ) ) {
316
+        $bill_times = $subscription->get_frequency() * $bill_times;
317
+        $bill_times = getpaid_get_subscription_period_label( $subscription->get_period(), $bill_times );
318
+    }
319
+
320
+    // Trial periods.
321
+    if ( $subscription->has_trial_period() ) {
322
+
323
+        $trial_period   = getpaid_get_subscription_trial_period_period( $subscription->get_trial_period() );
324
+        $trial_interval = getpaid_get_subscription_trial_period_interval( $subscription->get_trial_period() );
325
+
326
+        if ( empty( $bill_times ) ) {
327
+
328
+            return sprintf(
329
+                // translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period
330
+                _x( '%1$s trial for %2$s then %3$s / %4$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year)', 'invoicing' ),
331
+                $initial,
332
+                getpaid_get_subscription_period_label( $trial_period, $trial_interval ),
333
+                $recurring,
334
+                $period
335
+            );
336
+
337
+        }
338
+
339
+        return sprintf(
340
+            // translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period, $5: is the bill times
341
+            _x( '%1$s trial for %2$s then %3$s / %4$s for %5$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year for 4 years)', 'invoicing' ),
342
+            $initial,
343
+            getpaid_get_subscription_period_label( $trial_period, $trial_interval ),
344
+            $recurring,
345
+            $period,
346
+            $bill_times
347
+        );
348
+
349
+    }
350
+
351
+    if ( $initial != $recurring ) {
352
+
353
+        if ( empty( $bill_times ) ) {
354
+
355
+            return sprintf(
356
+                // translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period
357
+                _x( 'Initial payment of %1$s which renews at %2$s / %3$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year)', 'invoicing' ),
358
+                $initial,
359
+                $recurring,
360
+                $period
361
+            );
362
+
363
+        }
364
+
365
+        return sprintf(
366
+            // translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period, $4: is the bill times
367
+            _x( 'Initial payment of %1$s which renews at %2$s / %3$s for %4$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year for 5 years)', 'invoicing' ),
368
+            $initial,
369
+            $recurring,
370
+            $period,
371
+            $bill_times
372
+        );
373
+
374
+    }
375
+
376
+    if ( empty( $bill_times ) ) {
377
+
378
+        return sprintf(
379
+            // translators: $1: is the recurring amount, $2: is the recurring period
380
+            _x( '%1$s / %2$s', 'Subscription amount. (e.g.: $120 / year)', 'invoicing' ),
381
+            $initial,
382
+            $period
383
+        );
384
+
385
+    }
386
+
387
+    return sprintf(
388
+        // translators: $1: is the bill times, $2: is the recurring amount, $3: is the recurring period
389
+        _x( '%2$s / %3$s for %1$s', 'Subscription amount. (e.g.: $120 / year for 5 years)', 'invoicing' ),
390
+        $bill_times,
391
+        $initial,
392
+        $period
393
+    );
394 394
 
395 395
 }
396 396
 
@@ -401,7 +401,7 @@  discard block
 block discarded – undo
401 401
  * @return WPInv_Subscription|false
402 402
  */
403 403
 function getpaid_get_invoice_subscription( $invoice ) {
404
-	return getpaid_subscriptions()->get_invoice_subscription( $invoice );
404
+    return getpaid_subscriptions()->get_invoice_subscription( $invoice );
405 405
 }
406 406
 
407 407
 /**
@@ -410,10 +410,10 @@  discard block
 block discarded – undo
410 410
  * @param WPInv_Invoice $invoice
411 411
  */
412 412
 function getpaid_activate_invoice_subscription( $invoice ) {
413
-	$subscription = getpaid_get_invoice_subscription( $invoice );
414
-	if ( is_a( $subscription, 'WPInv_Subscription' ) ) {
415
-		$subscription->activate();
416
-	}
413
+    $subscription = getpaid_get_invoice_subscription( $invoice );
414
+    if ( is_a( $subscription, 'WPInv_Subscription' ) ) {
415
+        $subscription->activate();
416
+    }
417 417
 }
418 418
 
419 419
 /**
@@ -422,7 +422,7 @@  discard block
 block discarded – undo
422 422
  * @return WPInv_Subscriptions
423 423
  */
424 424
 function getpaid_subscriptions() {
425
-	return getpaid()->get( 'subscriptions' );
425
+    return getpaid()->get( 'subscriptions' );
426 426
 }
427 427
 
428 428
 /**
@@ -441,15 +441,15 @@  discard block
 block discarded – undo
441 441
         return false;
442 442
     }
443 443
 
444
-	// Fetch the invoice subscription.
445
-	$subscription = getpaid_get_subscriptions(
446
-		array(
447
-			'invoice_in' => $invoice->is_renewal() ? $invoice->get_parent_id() : $invoice->get_id(),
448
-			'number'     => 1,
449
-		)
450
-	);
444
+    // Fetch the invoice subscription.
445
+    $subscription = getpaid_get_subscriptions(
446
+        array(
447
+            'invoice_in' => $invoice->is_renewal() ? $invoice->get_parent_id() : $invoice->get_id(),
448
+            'number'     => 1,
449
+        )
450
+    );
451 451
 
452
-	return empty( $subscription ) ? false : $subscription[0];
452
+    return empty( $subscription ) ? false : $subscription[0];
453 453
 
454 454
 }
455 455
 
@@ -466,48 +466,48 @@  discard block
 block discarded – undo
466 466
  */
467 467
 function getpaid_get_recurring_item_key( $cart_item ) {
468 468
 
469
-	$cart_key     = 'renews_';
470
-	$interval     = $cart_item->get_recurring_interval();
471
-	$period       = $cart_item->get_recurring_period( true );
472
-	$length       = $cart_item->get_recurring_limit() * $interval;
473
-	$trial_period = $cart_item->get_trial_period( true );
474
-	$trial_length = $cart_item->get_trial_interval();
475
-
476
-	// First start with the billing interval and period
477
-	switch ( $interval ) {
478
-		case 1:
479
-			if ( 'day' == $period ) {
480
-				$cart_key .= 'daily';
481
-			} else {
482
-				$cart_key .= sprintf( '%sly', $period );
483
-			}
484
-			break;
485
-		case 2:
486
-			$cart_key .= sprintf( 'every_2nd_%s', $period );
487
-			break;
488
-		case 3:
489
-			$cart_key .= sprintf( 'every_3rd_%s', $period );
490
-		    break;
491
-		default:
492
-			$cart_key .= sprintf( 'every_%dth_%s', $interval, $period );
493
-			break;
494
-	}
495
-
496
-	// Maybe add the optional maximum billing periods...
497
-	if ( $length > 0 ) {
498
-		$cart_key .= '_for_';
499
-		$cart_key .= sprintf( '%d_%s', $length, $period );
500
-		if ( $length > 1 ) {
501
-			$cart_key .= 's';
502
-		}
503
-	}
504
-
505
-	// And an optional free trial.
506
-	if ( $cart_item->has_free_trial() ) {
507
-		$cart_key .= sprintf( '_after_a_%d_%s_trial', $trial_length, $trial_period );
508
-	}
509
-
510
-	return apply_filters( 'getpaid_get_recurring_item_key', $cart_key, $cart_item );
469
+    $cart_key     = 'renews_';
470
+    $interval     = $cart_item->get_recurring_interval();
471
+    $period       = $cart_item->get_recurring_period( true );
472
+    $length       = $cart_item->get_recurring_limit() * $interval;
473
+    $trial_period = $cart_item->get_trial_period( true );
474
+    $trial_length = $cart_item->get_trial_interval();
475
+
476
+    // First start with the billing interval and period
477
+    switch ( $interval ) {
478
+        case 1:
479
+            if ( 'day' == $period ) {
480
+                $cart_key .= 'daily';
481
+            } else {
482
+                $cart_key .= sprintf( '%sly', $period );
483
+            }
484
+            break;
485
+        case 2:
486
+            $cart_key .= sprintf( 'every_2nd_%s', $period );
487
+            break;
488
+        case 3:
489
+            $cart_key .= sprintf( 'every_3rd_%s', $period );
490
+            break;
491
+        default:
492
+            $cart_key .= sprintf( 'every_%dth_%s', $interval, $period );
493
+            break;
494
+    }
495
+
496
+    // Maybe add the optional maximum billing periods...
497
+    if ( $length > 0 ) {
498
+        $cart_key .= '_for_';
499
+        $cart_key .= sprintf( '%d_%s', $length, $period );
500
+        if ( $length > 1 ) {
501
+            $cart_key .= 's';
502
+        }
503
+    }
504
+
505
+    // And an optional free trial.
506
+    if ( $cart_item->has_free_trial() ) {
507
+        $cart_key .= sprintf( '_after_a_%d_%s_trial', $trial_length, $trial_period );
508
+    }
509
+
510
+    return apply_filters( 'getpaid_get_recurring_item_key', $cart_key, $cart_item );
511 511
 }
512 512
 
513 513
 /**
@@ -518,16 +518,16 @@  discard block
 block discarded – undo
518 518
  */
519 519
 function getpaid_get_subscription_groups( $invoice ) {
520 520
 
521
-	// Generate subscription groups.
522
-	$subscription_groups = array();
523
-	foreach ( $invoice->get_items() as $item ) {
521
+    // Generate subscription groups.
522
+    $subscription_groups = array();
523
+    foreach ( $invoice->get_items() as $item ) {
524 524
 
525
-		if ( $item->is_recurring() ) {
526
-			$subscription_groups[ getpaid_get_recurring_item_key( $item ) ][] = $item;
527
-		}
525
+        if ( $item->is_recurring() ) {
526
+            $subscription_groups[ getpaid_get_recurring_item_key( $item ) ][] = $item;
527
+        }
528 528
 }
529 529
 
530
-	return $subscription_groups;
530
+    return $subscription_groups;
531 531
 }
532 532
 
533 533
 /**
@@ -541,56 +541,56 @@  discard block
 block discarded – undo
541 541
  */
542 542
 function getpaid_calculate_subscription_totals( $invoice ) {
543 543
 
544
-	// Generate subscription groups.
545
-	$subscription_groups = getpaid_get_subscription_groups( $invoice );
544
+    // Generate subscription groups.
545
+    $subscription_groups = getpaid_get_subscription_groups( $invoice );
546 546
 
547
-	// Now let's calculate the totals for each group of subscriptions
548
-	$subscription_totals = array();
547
+    // Now let's calculate the totals for each group of subscriptions
548
+    $subscription_totals = array();
549 549
 
550
-	foreach ( $subscription_groups as $subscription_key => $items ) {
550
+    foreach ( $subscription_groups as $subscription_key => $items ) {
551 551
 
552
-		if ( empty( $subscription_totals[ $subscription_key ] ) ) {
552
+        if ( empty( $subscription_totals[ $subscription_key ] ) ) {
553 553
 
554
-			$subscription_totals[ $subscription_key ] = array(
555
-				'initial_total'   => 0,
556
-				'recurring_total' => 0,
557
-				'items'           => array(),
558
-				'trialling'       => false,
559
-			);
554
+            $subscription_totals[ $subscription_key ] = array(
555
+                'initial_total'   => 0,
556
+                'recurring_total' => 0,
557
+                'items'           => array(),
558
+                'trialling'       => false,
559
+            );
560 560
 
561
-		}
561
+        }
562 562
 
563
-		/**
564
-		 * Get the totals of the group.
565
-		 * @var GetPaid_Form_Item $item
566
-		 */
567
-		foreach ( $items as $item ) {
563
+        /**
564
+         * Get the totals of the group.
565
+         * @var GetPaid_Form_Item $item
566
+         */
567
+        foreach ( $items as $item ) {
568 568
 
569
-			$subscription_totals[ $subscription_key ]['items'][ $item->get_id() ]  = $item->prepare_data_for_saving();
570
-			$subscription_totals[ $subscription_key ]['item_id']                 = $item->get_id();
571
-			$subscription_totals[ $subscription_key ]['period']                  = $item->get_recurring_period( true );
572
-			$subscription_totals[ $subscription_key ]['interval']                = $item->get_recurring_interval();
573
-			$subscription_totals[ $subscription_key ]['initial_total']          += $item->get_sub_total() + $item->item_tax - $item->item_discount;
574
-			$subscription_totals[ $subscription_key ]['recurring_total']        += $item->get_recurring_sub_total() + $item->item_tax - $item->recurring_item_discount;
575
-			$subscription_totals[ $subscription_key ]['recurring_limit']         = $item->get_recurring_limit();
569
+            $subscription_totals[ $subscription_key ]['items'][ $item->get_id() ]  = $item->prepare_data_for_saving();
570
+            $subscription_totals[ $subscription_key ]['item_id']                 = $item->get_id();
571
+            $subscription_totals[ $subscription_key ]['period']                  = $item->get_recurring_period( true );
572
+            $subscription_totals[ $subscription_key ]['interval']                = $item->get_recurring_interval();
573
+            $subscription_totals[ $subscription_key ]['initial_total']          += $item->get_sub_total() + $item->item_tax - $item->item_discount;
574
+            $subscription_totals[ $subscription_key ]['recurring_total']        += $item->get_recurring_sub_total() + $item->item_tax - $item->recurring_item_discount;
575
+            $subscription_totals[ $subscription_key ]['recurring_limit']         = $item->get_recurring_limit();
576 576
 
577
-			// Calculate the next renewal date.
578
-			$period       = $item->get_recurring_period( true );
579
-			$interval     = $item->get_recurring_interval();
577
+            // Calculate the next renewal date.
578
+            $period       = $item->get_recurring_period( true );
579
+            $interval     = $item->get_recurring_interval();
580 580
 
581
-			// If the subscription item has a trial period...
582
-			if ( $item->has_free_trial() ) {
583
-				$period   = $item->get_trial_period( true );
584
-				$interval = $item->get_trial_interval();
585
-				$subscription_totals[ $subscription_key ]['trialling'] = $interval . ' ' . $period;
586
-			}
581
+            // If the subscription item has a trial period...
582
+            if ( $item->has_free_trial() ) {
583
+                $period   = $item->get_trial_period( true );
584
+                $interval = $item->get_trial_interval();
585
+                $subscription_totals[ $subscription_key ]['trialling'] = $interval . ' ' . $period;
586
+            }
587 587
 
588
-			$subscription_totals[ $subscription_key ]['renews_on'] = date( 'Y-m-d H:i:s', strtotime( "+$interval $period", current_time( 'timestamp' ) ) );
588
+            $subscription_totals[ $subscription_key ]['renews_on'] = date( 'Y-m-d H:i:s', strtotime( "+$interval $period", current_time( 'timestamp' ) ) );
589 589
 
590
-		}
590
+        }
591 591
 }
592 592
 
593
-	return apply_filters( 'getpaid_calculate_subscription_totals', $subscription_totals, $invoice );
593
+    return apply_filters( 'getpaid_calculate_subscription_totals', $subscription_totals, $invoice );
594 594
 }
595 595
 
596 596
 /**
@@ -601,16 +601,16 @@  discard block
 block discarded – undo
601 601
  */
602 602
 function getpaid_should_group_subscriptions( $invoice ) {
603 603
 
604
-	$recurring_items = 0;
604
+    $recurring_items = 0;
605 605
 
606
-	foreach ( $invoice->get_items() as $item ) {
606
+    foreach ( $invoice->get_items() as $item ) {
607 607
 
608
-		if ( $item->is_recurring() ) {
609
-			$recurring_items ++;
610
-		}
608
+        if ( $item->is_recurring() ) {
609
+            $recurring_items ++;
610
+        }
611 611
 }
612 612
 
613
-	return apply_filters( 'getpaid_should_group_subscriptions', $recurring_items > 1, $invoice );
613
+    return apply_filters( 'getpaid_should_group_subscriptions', $recurring_items > 1, $invoice );
614 614
 }
615 615
 
616 616
 /**
@@ -621,39 +621,39 @@  discard block
 block discarded – undo
621 621
  * @return int
622 622
  */
623 623
 function getpaid_count_subscription_invoices( $parent_invoice_id, $subscription_id = false ) {
624
-	global $wpdb;
624
+    global $wpdb;
625 625
 
626
-	$parent_invoice_id = (int) $parent_invoice_id;
626
+    $parent_invoice_id = (int) $parent_invoice_id;
627 627
 
628
-	if ( false === $subscription_id || ! (bool) get_post_meta( $parent_invoice_id, '_wpinv_subscription_id', true ) ) {
628
+    if ( false === $subscription_id || ! (bool) get_post_meta( $parent_invoice_id, '_wpinv_subscription_id', true ) ) {
629 629
 
630
-		return (int) $wpdb->get_var(
631
-			$wpdb->prepare(
632
-				"SELECT COUNT(ID) FROM $wpdb->posts WHERE ( post_parent=%d OR ID=%d ) AND post_status IN ( 'publish', 'wpi-processing', 'wpi-renewal' )",
633
-				$parent_invoice_id,
634
-				$parent_invoice_id
635
-			)
636
-		);
630
+        return (int) $wpdb->get_var(
631
+            $wpdb->prepare(
632
+                "SELECT COUNT(ID) FROM $wpdb->posts WHERE ( post_parent=%d OR ID=%d ) AND post_status IN ( 'publish', 'wpi-processing', 'wpi-renewal' )",
633
+                $parent_invoice_id,
634
+                $parent_invoice_id
635
+            )
636
+        );
637 637
 
638
-	}
638
+    }
639 639
 
640
-	$invoice_ids = $wpdb->get_col(
641
-		$wpdb->prepare(
642
-			"SELECT ID FROM $wpdb->posts WHERE ( post_parent=%d OR ID=%d ) AND post_status IN ( 'publish', 'wpi-processing', 'wpi-renewal' )",
643
-			$parent_invoice_id,
644
-			$parent_invoice_id
645
-		)
646
-	);
640
+    $invoice_ids = $wpdb->get_col(
641
+        $wpdb->prepare(
642
+            "SELECT ID FROM $wpdb->posts WHERE ( post_parent=%d OR ID=%d ) AND post_status IN ( 'publish', 'wpi-processing', 'wpi-renewal' )",
643
+            $parent_invoice_id,
644
+            $parent_invoice_id
645
+        )
646
+    );
647 647
 
648
-	$count = 0;
648
+    $count = 0;
649 649
 
650
-	foreach ( wp_parse_id_list( $invoice_ids ) as $invoice_id ) {
650
+    foreach ( wp_parse_id_list( $invoice_ids ) as $invoice_id ) {
651 651
 
652
-		if ( $invoice_id == $parent_invoice_id || $subscription_id == (int) get_post_meta( $invoice_id, '_wpinv_subscription_id', true ) ) {
653
-			$count ++;
654
-			continue;
655
-		}
652
+        if ( $invoice_id == $parent_invoice_id || $subscription_id == (int) get_post_meta( $invoice_id, '_wpinv_subscription_id', true ) ) {
653
+            $count ++;
654
+            continue;
655
+        }
656 656
 }
657 657
 
658
-	return $count;
658
+    return $count;
659 659
 }
Please login to merge, or discard this patch.
Spacing   +143 added lines, -143 removed lines patch added patch discarded remove patch
@@ -13,18 +13,18 @@  discard block
 block discarded – undo
13 13
  * @return      WPInv_Subscription[]|WPInv_Subscription|false
14 14
  * @since       2.3.0
15 15
  */
16
-function getpaid_get_invoice_subscriptions( $invoice ) {
16
+function getpaid_get_invoice_subscriptions($invoice) {
17 17
 
18 18
     // Retrieve subscription groups.
19
-    $subscription_ids = wp_list_pluck( getpaid_get_invoice_subscription_groups( $invoice->get_id() ), 'subscription_id' );
19
+    $subscription_ids = wp_list_pluck(getpaid_get_invoice_subscription_groups($invoice->get_id()), 'subscription_id');
20 20
 
21 21
     // No subscription groups, normal subscription.
22
-    if ( empty( $subscription_ids ) ) {
23
-        return getpaid_subscriptions()->get_invoice_subscription( $invoice );
22
+    if (empty($subscription_ids)) {
23
+        return getpaid_subscriptions()->get_invoice_subscription($invoice);
24 24
     }
25 25
 
26 26
     // Subscription groups.
27
-    return array_filter( array_map( 'getpaid_get_subscription', $subscription_ids ) );
27
+    return array_filter(array_map('getpaid_get_subscription', $subscription_ids));
28 28
 
29 29
 }
30 30
 
@@ -35,9 +35,9 @@  discard block
 block discarded – undo
35 35
  * @return      array
36 36
  * @since       2.3.0
37 37
  */
38
-function getpaid_get_invoice_subscription_groups( $invoice_id ) {
39
-    $subscription_groups = get_post_meta( $invoice_id, 'getpaid_subscription_groups', true );
40
-    return empty( $subscription_groups ) ? array() : $subscription_groups;
38
+function getpaid_get_invoice_subscription_groups($invoice_id) {
39
+    $subscription_groups = get_post_meta($invoice_id, 'getpaid_subscription_groups', true);
40
+    return empty($subscription_groups) ? array() : $subscription_groups;
41 41
 }
42 42
 
43 43
 /**
@@ -48,10 +48,10 @@  discard block
 block discarded – undo
48 48
  * @return      array|false
49 49
  * @since       2.3.0
50 50
  */
51
-function getpaid_get_invoice_subscription_group( $invoice_id, $subscription_id ) {
52
-    $subscription_groups = getpaid_get_invoice_subscription_groups( $invoice_id );
53
-	$matching_group      = wp_list_filter( $subscription_groups, compact( 'subscription_id' ) );
54
-    return reset( $matching_group );
51
+function getpaid_get_invoice_subscription_group($invoice_id, $subscription_id) {
52
+    $subscription_groups = getpaid_get_invoice_subscription_groups($invoice_id);
53
+	$matching_group = wp_list_filter($subscription_groups, compact('subscription_id'));
54
+    return reset($matching_group);
55 55
 }
56 56
 
57 57
 /**
@@ -61,10 +61,10 @@  discard block
 block discarded – undo
61 61
  * @since       2.3.0
62 62
  * @return WPInv_Subscription|false
63 63
  */
64
-function getpaid_get_subscription( $subscription ) {
64
+function getpaid_get_subscription($subscription) {
65 65
 
66
-	if ( ! is_a( $subscription, 'WPInv_Subscription' ) ) {
67
-		$subscription = new WPInv_Subscription( $subscription );
66
+	if (!is_a($subscription, 'WPInv_Subscription')) {
67
+		$subscription = new WPInv_Subscription($subscription);
68 68
 	}
69 69
 
70 70
 	return $subscription->exists() ? $subscription : false;
@@ -79,26 +79,26 @@  discard block
 block discarded – undo
79 79
  *
80 80
  * @return int|array|WPInv_Subscription[]|GetPaid_Subscriptions_Query
81 81
  */
82
-function getpaid_get_subscriptions( $args = array(), $return = 'results' ) {
82
+function getpaid_get_subscriptions($args = array(), $return = 'results') {
83 83
 
84 84
 	// Do not retrieve all fields if we just want the count.
85
-	if ( 'count' == $return ) {
85
+	if ('count' == $return) {
86 86
 		$args['fields'] = 'id';
87 87
 		$args['number'] = 1;
88 88
 	}
89 89
 
90 90
 	// Do not count all matches if we just want the results.
91
-	if ( 'results' == $return ) {
91
+	if ('results' == $return) {
92 92
 		$args['count_total'] = false;
93 93
 	}
94 94
 
95
-	$query = new GetPaid_Subscriptions_Query( $args );
95
+	$query = new GetPaid_Subscriptions_Query($args);
96 96
 
97
-	if ( 'results' == $return ) {
97
+	if ('results' == $return) {
98 98
 		return $query->get_results();
99 99
 	}
100 100
 
101
-	if ( 'count' == $return ) {
101
+	if ('count' == $return) {
102 102
 		return $query->get_total();
103 103
 	}
104 104
 
@@ -115,13 +115,13 @@  discard block
 block discarded – undo
115 115
 	return apply_filters(
116 116
 		'getpaid_get_subscription_statuses',
117 117
 		array(
118
-			'pending'   => __( 'Pending', 'invoicing' ),
119
-			'trialling' => __( 'Trialing', 'invoicing' ),
120
-			'active'    => __( 'Active', 'invoicing' ),
121
-			'failing'   => __( 'Failing', 'invoicing' ),
122
-			'expired'   => __( 'Expired', 'invoicing' ),
123
-			'completed' => __( 'Complete', 'invoicing' ),
124
-			'cancelled' => __( 'Cancelled', 'invoicing' ),
118
+			'pending'   => __('Pending', 'invoicing'),
119
+			'trialling' => __('Trialing', 'invoicing'),
120
+			'active'    => __('Active', 'invoicing'),
121
+			'failing'   => __('Failing', 'invoicing'),
122
+			'expired'   => __('Expired', 'invoicing'),
123
+			'completed' => __('Complete', 'invoicing'),
124
+			'cancelled' => __('Cancelled', 'invoicing'),
125 125
 		)
126 126
 	);
127 127
 
@@ -132,9 +132,9 @@  discard block
 block discarded – undo
132 132
  *
133 133
  * @return string
134 134
  */
135
-function getpaid_get_subscription_status_label( $status ) {
135
+function getpaid_get_subscription_status_label($status) {
136 136
 	$statuses = getpaid_get_subscription_statuses();
137
-	return isset( $statuses[ $status ] ) ? $statuses[ $status ] : ucfirst( sanitize_text_field( $status ) );
137
+	return isset($statuses[$status]) ? $statuses[$status] : ucfirst(sanitize_text_field($status));
138 138
 }
139 139
 
140 140
 /**
@@ -164,14 +164,14 @@  discard block
 block discarded – undo
164 164
  *
165 165
  * @return array
166 166
  */
167
-function getpaid_get_subscription_status_counts( $args = array() ) {
167
+function getpaid_get_subscription_status_counts($args = array()) {
168 168
 
169
-	$statuses = array_keys( getpaid_get_subscription_statuses() );
169
+	$statuses = array_keys(getpaid_get_subscription_statuses());
170 170
 	$counts   = array();
171 171
 
172
-	foreach ( $statuses as $status ) {
173
-		$_args             = wp_parse_args( "status=$status", $args );
174
-		$counts[ $status ] = getpaid_get_subscriptions( $_args, 'count' );
172
+	foreach ($statuses as $status) {
173
+		$_args             = wp_parse_args("status=$status", $args);
174
+		$counts[$status] = getpaid_get_subscriptions($_args, 'count');
175 175
 	}
176 176
 
177 177
 	return $counts;
@@ -190,23 +190,23 @@  discard block
 block discarded – undo
190 190
 		array(
191 191
 
192 192
 			'day'   => array(
193
-				'singular' => __( '%s day', 'invoicing' ),
194
-				'plural'   => __( '%d days', 'invoicing' ),
193
+				'singular' => __('%s day', 'invoicing'),
194
+				'plural'   => __('%d days', 'invoicing'),
195 195
 			),
196 196
 
197 197
 			'week'  => array(
198
-				'singular' => __( '%s week', 'invoicing' ),
199
-				'plural'   => __( '%d weeks', 'invoicing' ),
198
+				'singular' => __('%s week', 'invoicing'),
199
+				'plural'   => __('%d weeks', 'invoicing'),
200 200
 			),
201 201
 
202 202
 			'month' => array(
203
-				'singular' => __( '%s month', 'invoicing' ),
204
-				'plural'   => __( '%d months', 'invoicing' ),
203
+				'singular' => __('%s month', 'invoicing'),
204
+				'plural'   => __('%d months', 'invoicing'),
205 205
 			),
206 206
 
207 207
 			'year'  => array(
208
-				'singular' => __( '%s year', 'invoicing' ),
209
-				'plural'   => __( '%d years', 'invoicing' ),
208
+				'singular' => __('%s year', 'invoicing'),
209
+				'plural'   => __('%d years', 'invoicing'),
210 210
 			),
211 211
 
212 212
 		)
@@ -220,8 +220,8 @@  discard block
 block discarded – undo
220 220
  * @param string $trial_period
221 221
  * @return int
222 222
  */
223
-function getpaid_get_subscription_trial_period_interval( $trial_period ) {
224
-	return (int) preg_replace( '/[^0-9]/', '', $trial_period );
223
+function getpaid_get_subscription_trial_period_interval($trial_period) {
224
+	return (int) preg_replace('/[^0-9]/', '', $trial_period);
225 225
 }
226 226
 
227 227
 /**
@@ -230,8 +230,8 @@  discard block
 block discarded – undo
230 230
  * @param string $trial_period
231 231
  * @return string
232 232
  */
233
-function getpaid_get_subscription_trial_period_period( $trial_period ) {
234
-	return preg_replace( '/[^a-z]/', '', strtolower( $trial_period ) );
233
+function getpaid_get_subscription_trial_period_period($trial_period) {
234
+	return preg_replace('/[^a-z]/', '', strtolower($trial_period));
235 235
 }
236 236
 
237 237
 /**
@@ -241,9 +241,9 @@  discard block
 block discarded – undo
241 241
  * @param int $interval
242 242
  * @return string
243 243
  */
244
-function getpaid_get_subscription_period_label( $period, $interval = 1, $singular_prefix = '1' ) {
245
-	$label = (int) $interval > 1 ? getpaid_get_plural_subscription_period_label( $period, $interval ) : getpaid_get_singular_subscription_period_label( $period, $singular_prefix );
246
-	return strtolower( sanitize_text_field( $label ) );
244
+function getpaid_get_subscription_period_label($period, $interval = 1, $singular_prefix = '1') {
245
+	$label = (int) $interval > 1 ? getpaid_get_plural_subscription_period_label($period, $interval) : getpaid_get_singular_subscription_period_label($period, $singular_prefix);
246
+	return strtolower(sanitize_text_field($label));
247 247
 }
248 248
 
249 249
 /**
@@ -252,19 +252,19 @@  discard block
 block discarded – undo
252 252
  * @param string $period
253 253
  * @return string
254 254
  */
255
-function getpaid_get_singular_subscription_period_label( $period, $singular_prefix = '1' ) {
255
+function getpaid_get_singular_subscription_period_label($period, $singular_prefix = '1') {
256 256
 
257 257
 	$periods = getpaid_get_subscription_periods();
258
-	$period  = strtolower( $period );
258
+	$period  = strtolower($period);
259 259
 
260
-	if ( isset( $periods[ $period ] ) ) {
261
-		return sprintf( $periods[ $period ]['singular'], $singular_prefix );
260
+	if (isset($periods[$period])) {
261
+		return sprintf($periods[$period]['singular'], $singular_prefix);
262 262
 	}
263 263
 
264 264
 	// Backwards compatibility.
265
-	foreach ( $periods as $key => $data ) {
266
-		if ( strpos( $key, $period ) === 0 ) {
267
-			return sprintf( $data['singular'], $singular_prefix );
265
+	foreach ($periods as $key => $data) {
266
+		if (strpos($key, $period) === 0) {
267
+			return sprintf($data['singular'], $singular_prefix);
268 268
 		}
269 269
 	}
270 270
 
@@ -279,19 +279,19 @@  discard block
 block discarded – undo
279 279
  * @param int $interval
280 280
  * @return string
281 281
  */
282
-function getpaid_get_plural_subscription_period_label( $period, $interval ) {
282
+function getpaid_get_plural_subscription_period_label($period, $interval) {
283 283
 
284 284
 	$periods = getpaid_get_subscription_periods();
285
-	$period  = strtolower( $period );
285
+	$period  = strtolower($period);
286 286
 
287
-	if ( isset( $periods[ $period ] ) ) {
288
-		return sprintf( $periods[ $period ]['plural'], $interval );
287
+	if (isset($periods[$period])) {
288
+		return sprintf($periods[$period]['plural'], $interval);
289 289
 	}
290 290
 
291 291
 	// Backwards compatibility.
292
-	foreach ( $periods as $key => $data ) {
293
-		if ( strpos( $key, $period ) === 0 ) {
294
-			return sprintf( $data['plural'], $interval );
292
+	foreach ($periods as $key => $data) {
293
+		if (strpos($key, $period) === 0) {
294
+			return sprintf($data['plural'], $interval);
295 295
 		}
296 296
 	}
297 297
 
@@ -305,31 +305,31 @@  discard block
 block discarded – undo
305 305
  * @param WPInv_Subscription $subscription
306 306
  * @return string
307 307
  */
308
-function getpaid_get_formatted_subscription_amount( $subscription ) {
308
+function getpaid_get_formatted_subscription_amount($subscription) {
309 309
 
310
-	$initial    = wpinv_price( $subscription->get_initial_amount(), $subscription->get_parent_payment()->get_currency() );
311
-	$recurring  = wpinv_price( $subscription->get_recurring_amount(), $subscription->get_parent_payment()->get_currency() );
312
-	$period     = getpaid_get_subscription_period_label( $subscription->get_period(), $subscription->get_frequency(), '' );
310
+	$initial    = wpinv_price($subscription->get_initial_amount(), $subscription->get_parent_payment()->get_currency());
311
+	$recurring  = wpinv_price($subscription->get_recurring_amount(), $subscription->get_parent_payment()->get_currency());
312
+	$period     = getpaid_get_subscription_period_label($subscription->get_period(), $subscription->get_frequency(), '');
313 313
 	$bill_times = $subscription->get_bill_times();
314 314
 
315
-	if ( ! empty( $bill_times ) ) {
315
+	if (!empty($bill_times)) {
316 316
 		$bill_times = $subscription->get_frequency() * $bill_times;
317
-		$bill_times = getpaid_get_subscription_period_label( $subscription->get_period(), $bill_times );
317
+		$bill_times = getpaid_get_subscription_period_label($subscription->get_period(), $bill_times);
318 318
 	}
319 319
 
320 320
 	// Trial periods.
321
-	if ( $subscription->has_trial_period() ) {
321
+	if ($subscription->has_trial_period()) {
322 322
 
323
-		$trial_period   = getpaid_get_subscription_trial_period_period( $subscription->get_trial_period() );
324
-		$trial_interval = getpaid_get_subscription_trial_period_interval( $subscription->get_trial_period() );
323
+		$trial_period   = getpaid_get_subscription_trial_period_period($subscription->get_trial_period());
324
+		$trial_interval = getpaid_get_subscription_trial_period_interval($subscription->get_trial_period());
325 325
 
326
-		if ( empty( $bill_times ) ) {
326
+		if (empty($bill_times)) {
327 327
 
328 328
 			return sprintf(
329 329
 				// translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period
330
-				_x( '%1$s trial for %2$s then %3$s / %4$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year)', 'invoicing' ),
330
+				_x('%1$s trial for %2$s then %3$s / %4$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year)', 'invoicing'),
331 331
 				$initial,
332
-				getpaid_get_subscription_period_label( $trial_period, $trial_interval ),
332
+				getpaid_get_subscription_period_label($trial_period, $trial_interval),
333 333
 				$recurring,
334 334
 				$period
335 335
 			);
@@ -338,9 +338,9 @@  discard block
 block discarded – undo
338 338
 
339 339
 		return sprintf(
340 340
 			// translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period, $5: is the bill times
341
-			_x( '%1$s trial for %2$s then %3$s / %4$s for %5$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year for 4 years)', 'invoicing' ),
341
+			_x('%1$s trial for %2$s then %3$s / %4$s for %5$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year for 4 years)', 'invoicing'),
342 342
 			$initial,
343
-			getpaid_get_subscription_period_label( $trial_period, $trial_interval ),
343
+			getpaid_get_subscription_period_label($trial_period, $trial_interval),
344 344
 			$recurring,
345 345
 			$period,
346 346
 			$bill_times
@@ -348,13 +348,13 @@  discard block
 block discarded – undo
348 348
 
349 349
 	}
350 350
 
351
-	if ( $initial != $recurring ) {
351
+	if ($initial != $recurring) {
352 352
 
353
-		if ( empty( $bill_times ) ) {
353
+		if (empty($bill_times)) {
354 354
 
355 355
 			return sprintf(
356 356
 				// translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period
357
-				_x( 'Initial payment of %1$s which renews at %2$s / %3$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year)', 'invoicing' ),
357
+				_x('Initial payment of %1$s which renews at %2$s / %3$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year)', 'invoicing'),
358 358
 				$initial,
359 359
 				$recurring,
360 360
 				$period
@@ -364,7 +364,7 @@  discard block
 block discarded – undo
364 364
 
365 365
 		return sprintf(
366 366
 			// translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period, $4: is the bill times
367
-			_x( 'Initial payment of %1$s which renews at %2$s / %3$s for %4$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year for 5 years)', 'invoicing' ),
367
+			_x('Initial payment of %1$s which renews at %2$s / %3$s for %4$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year for 5 years)', 'invoicing'),
368 368
 			$initial,
369 369
 			$recurring,
370 370
 			$period,
@@ -373,11 +373,11 @@  discard block
 block discarded – undo
373 373
 
374 374
 	}
375 375
 
376
-	if ( empty( $bill_times ) ) {
376
+	if (empty($bill_times)) {
377 377
 
378 378
 		return sprintf(
379 379
 			// translators: $1: is the recurring amount, $2: is the recurring period
380
-			_x( '%1$s / %2$s', 'Subscription amount. (e.g.: $120 / year)', 'invoicing' ),
380
+			_x('%1$s / %2$s', 'Subscription amount. (e.g.: $120 / year)', 'invoicing'),
381 381
 			$initial,
382 382
 			$period
383 383
 		);
@@ -386,7 +386,7 @@  discard block
 block discarded – undo
386 386
 
387 387
 	return sprintf(
388 388
 		// translators: $1: is the bill times, $2: is the recurring amount, $3: is the recurring period
389
-		_x( '%2$s / %3$s for %1$s', 'Subscription amount. (e.g.: $120 / year for 5 years)', 'invoicing' ),
389
+		_x('%2$s / %3$s for %1$s', 'Subscription amount. (e.g.: $120 / year for 5 years)', 'invoicing'),
390 390
 		$bill_times,
391 391
 		$initial,
392 392
 		$period
@@ -400,8 +400,8 @@  discard block
 block discarded – undo
400 400
  * @param WPInv_Invoice $invoice
401 401
  * @return WPInv_Subscription|false
402 402
  */
403
-function getpaid_get_invoice_subscription( $invoice ) {
404
-	return getpaid_subscriptions()->get_invoice_subscription( $invoice );
403
+function getpaid_get_invoice_subscription($invoice) {
404
+	return getpaid_subscriptions()->get_invoice_subscription($invoice);
405 405
 }
406 406
 
407 407
 /**
@@ -409,9 +409,9 @@  discard block
 block discarded – undo
409 409
  *
410 410
  * @param WPInv_Invoice $invoice
411 411
  */
412
-function getpaid_activate_invoice_subscription( $invoice ) {
413
-	$subscription = getpaid_get_invoice_subscription( $invoice );
414
-	if ( is_a( $subscription, 'WPInv_Subscription' ) ) {
412
+function getpaid_activate_invoice_subscription($invoice) {
413
+	$subscription = getpaid_get_invoice_subscription($invoice);
414
+	if (is_a($subscription, 'WPInv_Subscription')) {
415 415
 		$subscription->activate();
416 416
 	}
417 417
 }
@@ -422,7 +422,7 @@  discard block
 block discarded – undo
422 422
  * @return WPInv_Subscriptions
423 423
  */
424 424
 function getpaid_subscriptions() {
425
-	return getpaid()->get( 'subscriptions' );
425
+	return getpaid()->get('subscriptions');
426 426
 }
427 427
 
428 428
 /**
@@ -431,13 +431,13 @@  discard block
 block discarded – undo
431 431
  * @since 2.3.0
432 432
  * @return WPInv_Subscription|bool
433 433
  */
434
-function wpinv_get_invoice_subscription( $invoice ) {
434
+function wpinv_get_invoice_subscription($invoice) {
435 435
 
436 436
     // Retrieve the invoice.
437
-    $invoice = new WPInv_Invoice( $invoice );
437
+    $invoice = new WPInv_Invoice($invoice);
438 438
 
439 439
     // Ensure it is a recurring invoice.
440
-    if ( ! $invoice->is_recurring() ) {
440
+    if (!$invoice->is_recurring()) {
441 441
         return false;
442 442
     }
443 443
 
@@ -449,7 +449,7 @@  discard block
 block discarded – undo
449 449
 		)
450 450
 	);
451 451
 
452
-	return empty( $subscription ) ? false : $subscription[0];
452
+	return empty($subscription) ? false : $subscription[0];
453 453
 
454 454
 }
455 455
 
@@ -464,50 +464,50 @@  discard block
 block discarded – undo
464 464
  * @param GetPaid_Form_Item|WPInv_Item $cart_item
465 465
  * @return string
466 466
  */
467
-function getpaid_get_recurring_item_key( $cart_item ) {
467
+function getpaid_get_recurring_item_key($cart_item) {
468 468
 
469 469
 	$cart_key     = 'renews_';
470 470
 	$interval     = $cart_item->get_recurring_interval();
471
-	$period       = $cart_item->get_recurring_period( true );
471
+	$period       = $cart_item->get_recurring_period(true);
472 472
 	$length       = $cart_item->get_recurring_limit() * $interval;
473
-	$trial_period = $cart_item->get_trial_period( true );
473
+	$trial_period = $cart_item->get_trial_period(true);
474 474
 	$trial_length = $cart_item->get_trial_interval();
475 475
 
476 476
 	// First start with the billing interval and period
477
-	switch ( $interval ) {
477
+	switch ($interval) {
478 478
 		case 1:
479
-			if ( 'day' == $period ) {
479
+			if ('day' == $period) {
480 480
 				$cart_key .= 'daily';
481 481
 			} else {
482
-				$cart_key .= sprintf( '%sly', $period );
482
+				$cart_key .= sprintf('%sly', $period);
483 483
 			}
484 484
 			break;
485 485
 		case 2:
486
-			$cart_key .= sprintf( 'every_2nd_%s', $period );
486
+			$cart_key .= sprintf('every_2nd_%s', $period);
487 487
 			break;
488 488
 		case 3:
489
-			$cart_key .= sprintf( 'every_3rd_%s', $period );
489
+			$cart_key .= sprintf('every_3rd_%s', $period);
490 490
 		    break;
491 491
 		default:
492
-			$cart_key .= sprintf( 'every_%dth_%s', $interval, $period );
492
+			$cart_key .= sprintf('every_%dth_%s', $interval, $period);
493 493
 			break;
494 494
 	}
495 495
 
496 496
 	// Maybe add the optional maximum billing periods...
497
-	if ( $length > 0 ) {
497
+	if ($length > 0) {
498 498
 		$cart_key .= '_for_';
499
-		$cart_key .= sprintf( '%d_%s', $length, $period );
500
-		if ( $length > 1 ) {
499
+		$cart_key .= sprintf('%d_%s', $length, $period);
500
+		if ($length > 1) {
501 501
 			$cart_key .= 's';
502 502
 		}
503 503
 	}
504 504
 
505 505
 	// And an optional free trial.
506
-	if ( $cart_item->has_free_trial() ) {
507
-		$cart_key .= sprintf( '_after_a_%d_%s_trial', $trial_length, $trial_period );
506
+	if ($cart_item->has_free_trial()) {
507
+		$cart_key .= sprintf('_after_a_%d_%s_trial', $trial_length, $trial_period);
508 508
 	}
509 509
 
510
-	return apply_filters( 'getpaid_get_recurring_item_key', $cart_key, $cart_item );
510
+	return apply_filters('getpaid_get_recurring_item_key', $cart_key, $cart_item);
511 511
 }
512 512
 
513 513
 /**
@@ -516,14 +516,14 @@  discard block
 block discarded – undo
516 516
  * @param WPInv_Invoice|GetPaid_Payment_Form_Submission|GetPaid_Payment_Form $invoice
517 517
  * @return array
518 518
  */
519
-function getpaid_get_subscription_groups( $invoice ) {
519
+function getpaid_get_subscription_groups($invoice) {
520 520
 
521 521
 	// Generate subscription groups.
522 522
 	$subscription_groups = array();
523
-	foreach ( $invoice->get_items() as $item ) {
523
+	foreach ($invoice->get_items() as $item) {
524 524
 
525
-		if ( $item->is_recurring() ) {
526
-			$subscription_groups[ getpaid_get_recurring_item_key( $item ) ][] = $item;
525
+		if ($item->is_recurring()) {
526
+			$subscription_groups[getpaid_get_recurring_item_key($item)][] = $item;
527 527
 		}
528 528
 }
529 529
 
@@ -539,19 +539,19 @@  discard block
 block discarded – undo
539 539
  * @param WPInv_Invoice|GetPaid_Payment_Form_Submission|GetPaid_Payment_Form $invoice
540 540
  * @return array
541 541
  */
542
-function getpaid_calculate_subscription_totals( $invoice ) {
542
+function getpaid_calculate_subscription_totals($invoice) {
543 543
 
544 544
 	// Generate subscription groups.
545
-	$subscription_groups = getpaid_get_subscription_groups( $invoice );
545
+	$subscription_groups = getpaid_get_subscription_groups($invoice);
546 546
 
547 547
 	// Now let's calculate the totals for each group of subscriptions
548 548
 	$subscription_totals = array();
549 549
 
550
-	foreach ( $subscription_groups as $subscription_key => $items ) {
550
+	foreach ($subscription_groups as $subscription_key => $items) {
551 551
 
552
-		if ( empty( $subscription_totals[ $subscription_key ] ) ) {
552
+		if (empty($subscription_totals[$subscription_key])) {
553 553
 
554
-			$subscription_totals[ $subscription_key ] = array(
554
+			$subscription_totals[$subscription_key] = array(
555 555
 				'initial_total'   => 0,
556 556
 				'recurring_total' => 0,
557 557
 				'items'           => array(),
@@ -564,33 +564,33 @@  discard block
 block discarded – undo
564 564
 		 * Get the totals of the group.
565 565
 		 * @var GetPaid_Form_Item $item
566 566
 		 */
567
-		foreach ( $items as $item ) {
567
+		foreach ($items as $item) {
568 568
 
569
-			$subscription_totals[ $subscription_key ]['items'][ $item->get_id() ]  = $item->prepare_data_for_saving();
570
-			$subscription_totals[ $subscription_key ]['item_id']                 = $item->get_id();
571
-			$subscription_totals[ $subscription_key ]['period']                  = $item->get_recurring_period( true );
572
-			$subscription_totals[ $subscription_key ]['interval']                = $item->get_recurring_interval();
573
-			$subscription_totals[ $subscription_key ]['initial_total']          += $item->get_sub_total() + $item->item_tax - $item->item_discount;
574
-			$subscription_totals[ $subscription_key ]['recurring_total']        += $item->get_recurring_sub_total() + $item->item_tax - $item->recurring_item_discount;
575
-			$subscription_totals[ $subscription_key ]['recurring_limit']         = $item->get_recurring_limit();
569
+			$subscription_totals[$subscription_key]['items'][$item->get_id()] = $item->prepare_data_for_saving();
570
+			$subscription_totals[$subscription_key]['item_id']                 = $item->get_id();
571
+			$subscription_totals[$subscription_key]['period']                  = $item->get_recurring_period(true);
572
+			$subscription_totals[$subscription_key]['interval']                = $item->get_recurring_interval();
573
+			$subscription_totals[$subscription_key]['initial_total']          += $item->get_sub_total() + $item->item_tax - $item->item_discount;
574
+			$subscription_totals[$subscription_key]['recurring_total']        += $item->get_recurring_sub_total() + $item->item_tax - $item->recurring_item_discount;
575
+			$subscription_totals[$subscription_key]['recurring_limit']         = $item->get_recurring_limit();
576 576
 
577 577
 			// Calculate the next renewal date.
578
-			$period       = $item->get_recurring_period( true );
578
+			$period       = $item->get_recurring_period(true);
579 579
 			$interval     = $item->get_recurring_interval();
580 580
 
581 581
 			// If the subscription item has a trial period...
582
-			if ( $item->has_free_trial() ) {
583
-				$period   = $item->get_trial_period( true );
582
+			if ($item->has_free_trial()) {
583
+				$period   = $item->get_trial_period(true);
584 584
 				$interval = $item->get_trial_interval();
585
-				$subscription_totals[ $subscription_key ]['trialling'] = $interval . ' ' . $period;
585
+				$subscription_totals[$subscription_key]['trialling'] = $interval . ' ' . $period;
586 586
 			}
587 587
 
588
-			$subscription_totals[ $subscription_key ]['renews_on'] = date( 'Y-m-d H:i:s', strtotime( "+$interval $period", current_time( 'timestamp' ) ) );
588
+			$subscription_totals[$subscription_key]['renews_on'] = date('Y-m-d H:i:s', strtotime("+$interval $period", current_time('timestamp')));
589 589
 
590 590
 		}
591 591
 }
592 592
 
593
-	return apply_filters( 'getpaid_calculate_subscription_totals', $subscription_totals, $invoice );
593
+	return apply_filters('getpaid_calculate_subscription_totals', $subscription_totals, $invoice);
594 594
 }
595 595
 
596 596
 /**
@@ -599,18 +599,18 @@  discard block
 block discarded – undo
599 599
  * @param WPInv_Invoice|GetPaid_Payment_Form_Submission|GetPaid_Payment_Form $invoice
600 600
  * @return array
601 601
  */
602
-function getpaid_should_group_subscriptions( $invoice ) {
602
+function getpaid_should_group_subscriptions($invoice) {
603 603
 
604 604
 	$recurring_items = 0;
605 605
 
606
-	foreach ( $invoice->get_items() as $item ) {
606
+	foreach ($invoice->get_items() as $item) {
607 607
 
608
-		if ( $item->is_recurring() ) {
609
-			$recurring_items ++;
608
+		if ($item->is_recurring()) {
609
+			$recurring_items++;
610 610
 		}
611 611
 }
612 612
 
613
-	return apply_filters( 'getpaid_should_group_subscriptions', $recurring_items > 1, $invoice );
613
+	return apply_filters('getpaid_should_group_subscriptions', $recurring_items > 1, $invoice);
614 614
 }
615 615
 
616 616
 /**
@@ -620,12 +620,12 @@  discard block
 block discarded – undo
620 620
  * @param int|false $subscription_id
621 621
  * @return int
622 622
  */
623
-function getpaid_count_subscription_invoices( $parent_invoice_id, $subscription_id = false ) {
623
+function getpaid_count_subscription_invoices($parent_invoice_id, $subscription_id = false) {
624 624
 	global $wpdb;
625 625
 
626 626
 	$parent_invoice_id = (int) $parent_invoice_id;
627 627
 
628
-	if ( false === $subscription_id || ! (bool) get_post_meta( $parent_invoice_id, '_wpinv_subscription_id', true ) ) {
628
+	if (false === $subscription_id || !(bool) get_post_meta($parent_invoice_id, '_wpinv_subscription_id', true)) {
629 629
 
630 630
 		return (int) $wpdb->get_var(
631 631
 			$wpdb->prepare(
@@ -647,10 +647,10 @@  discard block
 block discarded – undo
647 647
 
648 648
 	$count = 0;
649 649
 
650
-	foreach ( wp_parse_id_list( $invoice_ids ) as $invoice_id ) {
650
+	foreach (wp_parse_id_list($invoice_ids) as $invoice_id) {
651 651
 
652
-		if ( $invoice_id == $parent_invoice_id || $subscription_id == (int) get_post_meta( $invoice_id, '_wpinv_subscription_id', true ) ) {
653
-			$count ++;
652
+		if ($invoice_id == $parent_invoice_id || $subscription_id == (int) get_post_meta($invoice_id, '_wpinv_subscription_id', true)) {
653
+			$count++;
654 654
 			continue;
655 655
 		}
656 656
 }
Please login to merge, or discard this patch.