Passed
Push — master ( fd541e...d100e4 )
by Brian
06:12 queued 02:18
created
includes/admin/wpinv-admin-functions.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -56,7 +56,7 @@
 block discarded – undo
56 56
 }
57 57
 
58 58
 function wpinv_admin_messages() {
59
-	settings_errors( 'wpinv-notices' );
59
+    settings_errors( 'wpinv-notices' );
60 60
 }
61 61
 add_action( 'admin_notices', 'wpinv_admin_messages' );
62 62
 
Please login to merge, or discard this patch.
includes/class-getpaid-daily-maintenance.php 1 patch
Indentation   +103 added lines, -103 removed lines patch added patch discarded remove patch
@@ -12,108 +12,108 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Daily_Maintenance {
14 14
 
15
-	/**
16
-	 * Class constructor.
17
-	 */
18
-	public function __construct(){
19
-
20
-		// Clear deprecated events.
21
-		add_action( 'wp', array( $this, 'maybe_clear_deprecated_events' ) );
22
-
23
-		// (Maybe) schedule a cron that runs daily.
24
-		add_action( 'wp', array( $this, 'maybe_create_scheduled_event' ) );
25
-
26
-		// Fired everyday at 7 a.m (this might vary for sites with few visitors)
27
-		add_action( 'getpaid_daily_maintenance', array( $this, 'log_cron_run' ) );
28
-		add_action( 'getpaid_daily_maintenance', array( $this, 'backwards_compat' ) );
29
-		add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_expire_subscriptions' ) );
30
-		add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_update_geoip_databases' ) );
31
-
32
-	}
33
-
34
-	/**
35
-	 * Schedules a cron to run every day at 7 a.m
36
-	 *
37
-	 */
38
-	public function maybe_create_scheduled_event() {
39
-
40
-		if ( ! wp_next_scheduled( 'getpaid_daily_maintenance' ) ) {
41
-			$timestamp = strtotime( 'tomorrow 07:00:00', current_time( 'timestamp' ) );
42
-			wp_schedule_event( $timestamp, 'daily', 'getpaid_daily_maintenance' );
43
-		}
44
-
45
-	}
46
-
47
-	/**
48
-	 * Clears deprecated events.
49
-	 *
50
-	 */
51
-	public function maybe_clear_deprecated_events() {
52
-
53
-		if ( ! get_option( 'wpinv_cleared_old_events' ) ) {
54
-			wp_clear_scheduled_hook( 'wpinv_register_schedule_event_twicedaily' );
55
-			wp_clear_scheduled_hook( 'wpinv_register_schedule_event_daily' );
56
-			update_option( 'wpinv_cleared_old_events', 1 );
57
-		}
58
-
59
-	}
60
-
61
-	/**
62
-	 * Fires the old hook for backwards compatibility.
63
-	 *
64
-	 */
65
-	public function backwards_compat() {
66
-		do_action( 'wpinv_register_schedule_event_daily' );
67
-	}
68
-
69
-	/**
70
-	 * Expires expired subscriptions.
71
-	 *
72
-	 */
73
-	public function maybe_expire_subscriptions() {
74
-
75
-		// Fetch expired subscriptions (skips those that expire today).
76
-		$args  = array(
77
-			'number'             => -1,
78
-			'count_total'        => false,
79
-			'status'             => 'trialling active failing cancelled',
80
-			'date_expires_query' => array(
81
-				'before'    => 'today',
82
-				'inclusive' => false,
83
-			),
84
-		);
85
-
86
-		$subscriptions = new GetPaid_Subscriptions_Query( $args );
87
-
88
-		foreach ( $subscriptions->get_results() as $subscription ) {
89
-			if ( apply_filters( 'getpaid_daily_maintenance_should_expire_subscription', true, $subscription ) ) {
90
-				$subscription->set_status( 'expired' );
91
-				$subscription->save();
92
-			}
93
-		}
94
-
95
-	}
96
-
97
-	/**
98
-	 * Logs cron runs.
99
-	 *
100
-	 */
101
-	public function log_cron_run() {
102
-		wpinv_error_log( 'GetPaid Daily Cron' );
103
-	}
104
-
105
-	/**
106
-	 * Updates GeoIP databases.
107
-	 *
108
-	 */
109
-	public function maybe_update_geoip_databases() {
110
-		$updated = get_transient( 'getpaid_updated_geoip_databases' );
111
-
112
-		if ( false === $updated ) {
113
-			set_transient( 'getpaid_updated_geoip_databases', 1, 15 * DAY_IN_SECONDS );
114
-			do_action( 'getpaid_update_geoip_databases' );
115
-		}
116
-
117
-	}
15
+    /**
16
+     * Class constructor.
17
+     */
18
+    public function __construct(){
19
+
20
+        // Clear deprecated events.
21
+        add_action( 'wp', array( $this, 'maybe_clear_deprecated_events' ) );
22
+
23
+        // (Maybe) schedule a cron that runs daily.
24
+        add_action( 'wp', array( $this, 'maybe_create_scheduled_event' ) );
25
+
26
+        // Fired everyday at 7 a.m (this might vary for sites with few visitors)
27
+        add_action( 'getpaid_daily_maintenance', array( $this, 'log_cron_run' ) );
28
+        add_action( 'getpaid_daily_maintenance', array( $this, 'backwards_compat' ) );
29
+        add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_expire_subscriptions' ) );
30
+        add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_update_geoip_databases' ) );
31
+
32
+    }
33
+
34
+    /**
35
+     * Schedules a cron to run every day at 7 a.m
36
+     *
37
+     */
38
+    public function maybe_create_scheduled_event() {
39
+
40
+        if ( ! wp_next_scheduled( 'getpaid_daily_maintenance' ) ) {
41
+            $timestamp = strtotime( 'tomorrow 07:00:00', current_time( 'timestamp' ) );
42
+            wp_schedule_event( $timestamp, 'daily', 'getpaid_daily_maintenance' );
43
+        }
44
+
45
+    }
46
+
47
+    /**
48
+     * Clears deprecated events.
49
+     *
50
+     */
51
+    public function maybe_clear_deprecated_events() {
52
+
53
+        if ( ! get_option( 'wpinv_cleared_old_events' ) ) {
54
+            wp_clear_scheduled_hook( 'wpinv_register_schedule_event_twicedaily' );
55
+            wp_clear_scheduled_hook( 'wpinv_register_schedule_event_daily' );
56
+            update_option( 'wpinv_cleared_old_events', 1 );
57
+        }
58
+
59
+    }
60
+
61
+    /**
62
+     * Fires the old hook for backwards compatibility.
63
+     *
64
+     */
65
+    public function backwards_compat() {
66
+        do_action( 'wpinv_register_schedule_event_daily' );
67
+    }
68
+
69
+    /**
70
+     * Expires expired subscriptions.
71
+     *
72
+     */
73
+    public function maybe_expire_subscriptions() {
74
+
75
+        // Fetch expired subscriptions (skips those that expire today).
76
+        $args  = array(
77
+            'number'             => -1,
78
+            'count_total'        => false,
79
+            'status'             => 'trialling active failing cancelled',
80
+            'date_expires_query' => array(
81
+                'before'    => 'today',
82
+                'inclusive' => false,
83
+            ),
84
+        );
85
+
86
+        $subscriptions = new GetPaid_Subscriptions_Query( $args );
87
+
88
+        foreach ( $subscriptions->get_results() as $subscription ) {
89
+            if ( apply_filters( 'getpaid_daily_maintenance_should_expire_subscription', true, $subscription ) ) {
90
+                $subscription->set_status( 'expired' );
91
+                $subscription->save();
92
+            }
93
+        }
94
+
95
+    }
96
+
97
+    /**
98
+     * Logs cron runs.
99
+     *
100
+     */
101
+    public function log_cron_run() {
102
+        wpinv_error_log( 'GetPaid Daily Cron' );
103
+    }
104
+
105
+    /**
106
+     * Updates GeoIP databases.
107
+     *
108
+     */
109
+    public function maybe_update_geoip_databases() {
110
+        $updated = get_transient( 'getpaid_updated_geoip_databases' );
111
+
112
+        if ( false === $updated ) {
113
+            set_transient( 'getpaid_updated_geoip_databases', 1, 15 * DAY_IN_SECONDS );
114
+            do_action( 'getpaid_update_geoip_databases' );
115
+        }
116
+
117
+    }
118 118
 
119 119
 }
Please login to merge, or discard this patch.
includes/class-getpaid-post-types.php 1 patch
Indentation   +297 added lines, -297 removed lines patch added patch discarded remove patch
@@ -15,322 +15,322 @@
 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
-		// Fires before registering post types.
37
-		do_action( 'getpaid_register_post_types' );
36
+        // Fires before registering post types.
37
+        do_action( 'getpaid_register_post_types' );
38 38
 
39
-		// Register item post type.
40
-		register_post_type(
41
-			'wpi_item',
42
-			apply_filters(
43
-				'wpinv_register_post_type_invoice_item',
44
-				array(
45
-					'labels'             => array(
46
-						'name'               => _x( 'Items', 'post type general name', 'invoicing' ),
47
-						'singular_name'      => _x( 'Item', 'post type singular name', 'invoicing' ),
48
-						'menu_name'          => _x( 'Items', 'admin menu', 'invoicing' ),
49
-						'name_admin_bar'     => _x( 'Item', 'add new on admin bar', 'invoicing' ),
50
-						'add_new'            => _x( 'Add New', 'Item', 'invoicing' ),
51
-						'add_new_item'       => __( 'Add New Item', 'invoicing' ),
52
-						'new_item'           => __( 'New Item', 'invoicing' ),
53
-						'edit_item'          => __( 'Edit Item', 'invoicing' ),
54
-						'view_item'          => __( 'View Item', 'invoicing' ),
55
-						'all_items'          => __( 'Items', 'invoicing' ),
56
-						'search_items'       => __( 'Search items', 'invoicing' ),
57
-						'parent_item_colon'  => __( 'Parent item:', 'invoicing' ),
58
-						'not_found'          => __( 'No items found.', 'invoicing' ),
59
-						'not_found_in_trash' => __( 'No items found in trash.', 'invoicing' )
60
-					),
61
-					'description'           => __( 'This is where you can add new invoice items.', 'invoicing' ),
62
-					'public'                => false,
63
-					'has_archive'           => false,
64
-					'_builtin'              => false,
65
-					'show_ui'               => true,
66
-					'show_in_menu'          => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
67
-					'show_in_nav_menus'     => false,
68
-					'supports'              => array( 'title', 'excerpt', 'thumbnail' ),
69
-					'rewrite'               => false,
70
-					'query_var'             => false,
71
-					'capability_type'       => 'wpi_item',
72
-					'map_meta_cap'          => true,
73
-					'show_in_admin_bar'     => true,
74
-					'can_export'            => true,
75
-				)
76
-			)
77
-		);
39
+        // Register item post type.
40
+        register_post_type(
41
+            'wpi_item',
42
+            apply_filters(
43
+                'wpinv_register_post_type_invoice_item',
44
+                array(
45
+                    'labels'             => array(
46
+                        'name'               => _x( 'Items', 'post type general name', 'invoicing' ),
47
+                        'singular_name'      => _x( 'Item', 'post type singular name', 'invoicing' ),
48
+                        'menu_name'          => _x( 'Items', 'admin menu', 'invoicing' ),
49
+                        'name_admin_bar'     => _x( 'Item', 'add new on admin bar', 'invoicing' ),
50
+                        'add_new'            => _x( 'Add New', 'Item', 'invoicing' ),
51
+                        'add_new_item'       => __( 'Add New Item', 'invoicing' ),
52
+                        'new_item'           => __( 'New Item', 'invoicing' ),
53
+                        'edit_item'          => __( 'Edit Item', 'invoicing' ),
54
+                        'view_item'          => __( 'View Item', 'invoicing' ),
55
+                        'all_items'          => __( 'Items', 'invoicing' ),
56
+                        'search_items'       => __( 'Search items', 'invoicing' ),
57
+                        'parent_item_colon'  => __( 'Parent item:', 'invoicing' ),
58
+                        'not_found'          => __( 'No items found.', 'invoicing' ),
59
+                        'not_found_in_trash' => __( 'No items found in trash.', 'invoicing' )
60
+                    ),
61
+                    'description'           => __( 'This is where you can add new invoice items.', 'invoicing' ),
62
+                    'public'                => false,
63
+                    'has_archive'           => false,
64
+                    '_builtin'              => false,
65
+                    'show_ui'               => true,
66
+                    'show_in_menu'          => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
67
+                    'show_in_nav_menus'     => false,
68
+                    'supports'              => array( 'title', 'excerpt', 'thumbnail' ),
69
+                    'rewrite'               => false,
70
+                    'query_var'             => false,
71
+                    'capability_type'       => 'wpi_item',
72
+                    'map_meta_cap'          => true,
73
+                    'show_in_admin_bar'     => true,
74
+                    'can_export'            => true,
75
+                )
76
+            )
77
+        );
78 78
 
79
-		// Register payment form post type.
80
-		register_post_type(
81
-			'wpi_payment_form',
82
-			apply_filters(
83
-				'wpinv_register_post_type_payment_form',
84
-				array(
85
-					'labels'             => array(
86
-						'name'               => _x( 'Payment Forms', 'post type general name', 'invoicing' ),
87
-						'singular_name'      => _x( 'Payment Form', 'post type singular name', 'invoicing' ),
88
-						'menu_name'          => _x( 'Payment Forms', 'admin menu', 'invoicing' ),
89
-						'name_admin_bar'     => _x( 'Payment Form', 'add new on admin bar', 'invoicing' ),
90
-						'add_new'            => _x( 'Add New', 'Payment Form', 'invoicing' ),
91
-						'add_new_item'       => __( 'Add New Payment Form', 'invoicing' ),
92
-						'new_item'           => __( 'New Payment Form', 'invoicing' ),
93
-						'edit_item'          => __( 'Edit Payment Form', 'invoicing' ),
94
-						'view_item'          => __( 'View Payment Form', 'invoicing' ),
95
-						'all_items'          => __( 'Payment Forms', 'invoicing' ),
96
-						'search_items'       => __( 'Search Payment Forms', 'invoicing' ),
97
-						'parent_item_colon'  => __( 'Parent Payment Forms:', 'invoicing' ),
98
-						'not_found'          => __( 'No payment forms found.', 'invoicing' ),
99
-						'not_found_in_trash' => __( 'No payment forms found in trash.', 'invoicing' )
100
-					),
101
-					'description'        => __( 'Add new payment forms.', 'invoicing' ),
102
-					'public'             => false,
103
-					'show_ui'            => true,
104
-					'show_in_menu'       => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : true,
105
-					'show_in_nav_menus'  => false,
106
-					'query_var'          => false,
107
-					'rewrite'            => true,
108
-					'map_meta_cap'       => true,
109
-					'has_archive'        => false,
110
-					'hierarchical'       => false,
111
-					'menu_position'      => null,
112
-					'supports'           => array( 'title' ),
113
-					'menu_icon'          => 'dashicons-media-form',
114
-				)
115
-			)
116
-		);
79
+        // Register payment form post type.
80
+        register_post_type(
81
+            'wpi_payment_form',
82
+            apply_filters(
83
+                'wpinv_register_post_type_payment_form',
84
+                array(
85
+                    'labels'             => array(
86
+                        'name'               => _x( 'Payment Forms', 'post type general name', 'invoicing' ),
87
+                        'singular_name'      => _x( 'Payment Form', 'post type singular name', 'invoicing' ),
88
+                        'menu_name'          => _x( 'Payment Forms', 'admin menu', 'invoicing' ),
89
+                        'name_admin_bar'     => _x( 'Payment Form', 'add new on admin bar', 'invoicing' ),
90
+                        'add_new'            => _x( 'Add New', 'Payment Form', 'invoicing' ),
91
+                        'add_new_item'       => __( 'Add New Payment Form', 'invoicing' ),
92
+                        'new_item'           => __( 'New Payment Form', 'invoicing' ),
93
+                        'edit_item'          => __( 'Edit Payment Form', 'invoicing' ),
94
+                        'view_item'          => __( 'View Payment Form', 'invoicing' ),
95
+                        'all_items'          => __( 'Payment Forms', 'invoicing' ),
96
+                        'search_items'       => __( 'Search Payment Forms', 'invoicing' ),
97
+                        'parent_item_colon'  => __( 'Parent Payment Forms:', 'invoicing' ),
98
+                        'not_found'          => __( 'No payment forms found.', 'invoicing' ),
99
+                        'not_found_in_trash' => __( 'No payment forms found in trash.', 'invoicing' )
100
+                    ),
101
+                    'description'        => __( 'Add new payment forms.', 'invoicing' ),
102
+                    'public'             => false,
103
+                    'show_ui'            => true,
104
+                    'show_in_menu'       => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : true,
105
+                    'show_in_nav_menus'  => false,
106
+                    'query_var'          => false,
107
+                    'rewrite'            => true,
108
+                    'map_meta_cap'       => true,
109
+                    'has_archive'        => false,
110
+                    'hierarchical'       => false,
111
+                    'menu_position'      => null,
112
+                    'supports'           => array( 'title' ),
113
+                    'menu_icon'          => 'dashicons-media-form',
114
+                )
115
+            )
116
+        );
117 117
 
118
-		// Register invoice post type.
119
-		register_post_type(
120
-			'wpi_invoice',
121
-			apply_filters(
122
-				'wpinv_register_post_type_invoice',
123
-				array(
124
-					'labels'                 => array(
125
-						'name'                  => __( 'Invoices', 'invoicing' ),
126
-						'singular_name'         => __( 'Invoice', 'invoicing' ),
127
-						'all_items'             => __( 'Invoices', 'invoicing' ),
128
-						'menu_name'             => _x( 'Invoices', 'Admin menu name', 'invoicing' ),
129
-						'add_new'               => __( 'Add New', 'invoicing' ),
130
-						'add_new_item'          => __( 'Add new invoice', 'invoicing' ),
131
-						'edit'                  => __( 'Edit', 'invoicing' ),
132
-						'edit_item'             => __( 'Edit invoice', 'invoicing' ),
133
-						'new_item'              => __( 'New invoice', 'invoicing' ),
134
-						'view_item'             => __( 'View invoice', 'invoicing' ),
135
-						'view_items'            => __( 'View Invoices', 'invoicing' ),
136
-						'search_items'          => __( 'Search invoices', 'invoicing' ),
137
-						'not_found'             => __( 'No invoices found', 'invoicing' ),
138
-						'not_found_in_trash'    => __( 'No invoices found in trash', 'invoicing' ),
139
-						'parent'                => __( 'Parent invoice', 'invoicing' ),
140
-						'featured_image'        => __( 'Invoice image', 'invoicing' ),
141
-						'set_featured_image'    => __( 'Set invoice image', 'invoicing' ),
142
-						'remove_featured_image' => __( 'Remove invoice image', 'invoicing' ),
143
-						'use_featured_image'    => __( 'Use as invoice image', 'invoicing' ),
144
-						'insert_into_item'      => __( 'Insert into invoice', 'invoicing' ),
145
-						'uploaded_to_this_item' => __( 'Uploaded to this invoice', 'invoicing' ),
146
-						'filter_items_list'     => __( 'Filter invoices', 'invoicing' ),
147
-						'items_list_navigation' => __( 'Invoices navigation', 'invoicing' ),
148
-						'items_list'            => __( 'Invoices list', 'invoicing' ),
149
-					),
150
-					'description'           => __( 'This is where invoices are stored.', 'invoicing' ),
151
-					'public'                => true,
152
-					'has_archive'           => false,
153
-					'publicly_queryable'    => true,
154
-        			'exclude_from_search'   => true,
155
-        			'show_ui'               => true,
156
-					'show_in_menu'          => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
157
-					'show_in_nav_menus'     => false,
158
-					'supports'              => array( 'title', 'author', 'excerpt'  ),
159
-					'rewrite'               => array(
160
-						'slug'              => 'invoice',
161
-						'with_front'        => false,
162
-					),
163
-					'query_var'             => false,
164
-					'capability_type'       => 'wpi_invoice',
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
-		);
118
+        // Register invoice post type.
119
+        register_post_type(
120
+            'wpi_invoice',
121
+            apply_filters(
122
+                'wpinv_register_post_type_invoice',
123
+                array(
124
+                    'labels'                 => array(
125
+                        'name'                  => __( 'Invoices', 'invoicing' ),
126
+                        'singular_name'         => __( 'Invoice', 'invoicing' ),
127
+                        'all_items'             => __( 'Invoices', 'invoicing' ),
128
+                        'menu_name'             => _x( 'Invoices', 'Admin menu name', 'invoicing' ),
129
+                        'add_new'               => __( 'Add New', 'invoicing' ),
130
+                        'add_new_item'          => __( 'Add new invoice', 'invoicing' ),
131
+                        'edit'                  => __( 'Edit', 'invoicing' ),
132
+                        'edit_item'             => __( 'Edit invoice', 'invoicing' ),
133
+                        'new_item'              => __( 'New invoice', 'invoicing' ),
134
+                        'view_item'             => __( 'View invoice', 'invoicing' ),
135
+                        'view_items'            => __( 'View Invoices', 'invoicing' ),
136
+                        'search_items'          => __( 'Search invoices', 'invoicing' ),
137
+                        'not_found'             => __( 'No invoices found', 'invoicing' ),
138
+                        'not_found_in_trash'    => __( 'No invoices found in trash', 'invoicing' ),
139
+                        'parent'                => __( 'Parent invoice', 'invoicing' ),
140
+                        'featured_image'        => __( 'Invoice image', 'invoicing' ),
141
+                        'set_featured_image'    => __( 'Set invoice image', 'invoicing' ),
142
+                        'remove_featured_image' => __( 'Remove invoice image', 'invoicing' ),
143
+                        'use_featured_image'    => __( 'Use as invoice image', 'invoicing' ),
144
+                        'insert_into_item'      => __( 'Insert into invoice', 'invoicing' ),
145
+                        'uploaded_to_this_item' => __( 'Uploaded to this invoice', 'invoicing' ),
146
+                        'filter_items_list'     => __( 'Filter invoices', 'invoicing' ),
147
+                        'items_list_navigation' => __( 'Invoices navigation', 'invoicing' ),
148
+                        'items_list'            => __( 'Invoices list', 'invoicing' ),
149
+                    ),
150
+                    'description'           => __( 'This is where invoices are stored.', 'invoicing' ),
151
+                    'public'                => true,
152
+                    'has_archive'           => false,
153
+                    'publicly_queryable'    => true,
154
+                    'exclude_from_search'   => true,
155
+                    'show_ui'               => true,
156
+                    'show_in_menu'          => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
157
+                    'show_in_nav_menus'     => false,
158
+                    'supports'              => array( 'title', 'author', 'excerpt'  ),
159
+                    'rewrite'               => array(
160
+                        'slug'              => 'invoice',
161
+                        'with_front'        => false,
162
+                    ),
163
+                    'query_var'             => false,
164
+                    'capability_type'       => 'wpi_invoice',
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
-					'capability_type'    => 'wpi_discount',
218
-					'map_meta_cap'       => true,
219
-					'has_archive'        => false,
220
-					'hierarchical'       => false,
221
-					'supports'           => array( 'title', 'excerpt' ),
222
-					'show_in_nav_menus'  => false,
223
-					'show_in_admin_bar'  => true,
224
-					'menu_position'      => null,
225
-				)
226
-			)
227
-		);
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
+                    'capability_type'    => 'wpi_discount',
218
+                    'map_meta_cap'       => true,
219
+                    'has_archive'        => false,
220
+                    'hierarchical'       => false,
221
+                    'supports'           => array( 'title', 'excerpt' ),
222
+                    'show_in_nav_menus'  => false,
223
+                    'show_in_admin_bar'  => true,
224
+                    'menu_position'      => null,
225
+                )
226
+            )
227
+        );
228 228
 
229
-		do_action( 'getpaid_after_register_post_types' );
230
-	}
229
+        do_action( 'getpaid_after_register_post_types' );
230
+    }
231 231
 
232
-	/**
233
-	 * Register our custom post statuses.
234
-	 */
235
-	public static function register_post_status() {
232
+    /**
233
+     * Register our custom post statuses.
234
+     */
235
+    public static function register_post_status() {
236 236
 
237
-		$invoice_statuses = apply_filters(
238
-			'getpaid_register_invoice_post_statuses',
239
-			array(
237
+        $invoice_statuses = apply_filters(
238
+            'getpaid_register_invoice_post_statuses',
239
+            array(
240 240
 
241
-				'wpi-pending' => array(
242
-					'label'                     => _x( 'Pending Payment', 'Invoice status', 'invoicing' ),
243
-        			'public'                    => true,
244
-        			'exclude_from_search'       => true,
245
-        			'show_in_admin_all_list'    => true,
246
-					'show_in_admin_status_list' => true,
247
-					/* translators: %s: number of invoices */
248
-        			'label_count'               => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing' )
249
-				),
241
+                'wpi-pending' => array(
242
+                    'label'                     => _x( 'Pending Payment', 'Invoice status', 'invoicing' ),
243
+                    'public'                    => true,
244
+                    'exclude_from_search'       => true,
245
+                    'show_in_admin_all_list'    => true,
246
+                    'show_in_admin_status_list' => true,
247
+                    /* translators: %s: number of invoices */
248
+                    'label_count'               => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing' )
249
+                ),
250 250
 
251
-				'wpi-processing' => array(
252
-					'label'                     => _x( 'Processing', 'Invoice status', 'invoicing' ),
253
-        			'public'                    => true,
254
-        			'exclude_from_search'       => true,
255
-        			'show_in_admin_all_list'    => true,
256
-					'show_in_admin_status_list' => true,
257
-					/* translators: %s: number of invoices */
258
-        			'label_count'               => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing' )
259
-				),
251
+                'wpi-processing' => array(
252
+                    'label'                     => _x( 'Processing', 'Invoice status', 'invoicing' ),
253
+                    'public'                    => true,
254
+                    'exclude_from_search'       => true,
255
+                    'show_in_admin_all_list'    => true,
256
+                    'show_in_admin_status_list' => true,
257
+                    /* translators: %s: number of invoices */
258
+                    'label_count'               => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing' )
259
+                ),
260 260
 
261
-				'wpi-onhold' => array(
262
-					'label'                     => _x( 'On Hold', 'Invoice status', 'invoicing' ),
263
-        			'public'                    => true,
264
-        			'exclude_from_search'       => true,
265
-        			'show_in_admin_all_list'    => true,
266
-					'show_in_admin_status_list' => true,
267
-					/* translators: %s: number of invoices */
268
-        			'label_count'               => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing' )
269
-				),
261
+                'wpi-onhold' => array(
262
+                    'label'                     => _x( 'On Hold', 'Invoice status', 'invoicing' ),
263
+                    'public'                    => true,
264
+                    'exclude_from_search'       => true,
265
+                    'show_in_admin_all_list'    => true,
266
+                    'show_in_admin_status_list' => true,
267
+                    /* translators: %s: number of invoices */
268
+                    'label_count'               => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing' )
269
+                ),
270 270
 
271
-				'wpi-cancelled' => array(
272
-					'label'                     => _x( 'Cancelled', 'Invoice status', 'invoicing' ),
273
-        			'public'                    => true,
274
-        			'exclude_from_search'       => true,
275
-        			'show_in_admin_all_list'    => true,
276
-					'show_in_admin_status_list' => true,
277
-					/* translators: %s: number of invoices */
278
-        			'label_count'               => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing' )
279
-				),
271
+                'wpi-cancelled' => array(
272
+                    'label'                     => _x( 'Cancelled', 'Invoice status', 'invoicing' ),
273
+                    'public'                    => true,
274
+                    'exclude_from_search'       => true,
275
+                    'show_in_admin_all_list'    => true,
276
+                    'show_in_admin_status_list' => true,
277
+                    /* translators: %s: number of invoices */
278
+                    'label_count'               => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing' )
279
+                ),
280 280
 
281
-				'wpi-refunded' => array(
282
-					'label'                     => _x( 'Refunded', 'Invoice status', 'invoicing' ),
283
-        			'public'                    => true,
284
-        			'exclude_from_search'       => true,
285
-        			'show_in_admin_all_list'    => true,
286
-					'show_in_admin_status_list' => true,
287
-					/* translators: %s: number of invoices */
288
-        			'label_count'               => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing' )
289
-				),
281
+                'wpi-refunded' => array(
282
+                    'label'                     => _x( 'Refunded', 'Invoice status', 'invoicing' ),
283
+                    'public'                    => true,
284
+                    'exclude_from_search'       => true,
285
+                    'show_in_admin_all_list'    => true,
286
+                    'show_in_admin_status_list' => true,
287
+                    /* translators: %s: number of invoices */
288
+                    'label_count'               => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing' )
289
+                ),
290 290
 
291
-				'wpi-failed' => array(
292
-					'label'                     => _x( 'Failed', 'Invoice status', 'invoicing' ),
293
-        			'public'                    => true,
294
-        			'exclude_from_search'       => true,
295
-        			'show_in_admin_all_list'    => true,
296
-					'show_in_admin_status_list' => true,
297
-					/* translators: %s: number of invoices */
298
-        			'label_count'               => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing' )
299
-				),
291
+                'wpi-failed' => array(
292
+                    'label'                     => _x( 'Failed', 'Invoice status', 'invoicing' ),
293
+                    'public'                    => true,
294
+                    'exclude_from_search'       => true,
295
+                    'show_in_admin_all_list'    => true,
296
+                    'show_in_admin_status_list' => true,
297
+                    /* translators: %s: number of invoices */
298
+                    'label_count'               => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing' )
299
+                ),
300 300
 
301
-				'wpi-renewal' => array(
302
-					'label'                     => _x( 'Renewal', 'Invoice status', 'invoicing' ),
303
-        			'public'                    => true,
304
-        			'exclude_from_search'       => true,
305
-        			'show_in_admin_all_list'    => true,
306
-					'show_in_admin_status_list' => true,
307
-					/* translators: %s: number of invoices */
308
-        			'label_count'               => _n_noop( 'Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing' )
309
-				)
310
-			)
311
-		);
301
+                'wpi-renewal' => array(
302
+                    'label'                     => _x( 'Renewal', 'Invoice status', 'invoicing' ),
303
+                    'public'                    => true,
304
+                    'exclude_from_search'       => true,
305
+                    'show_in_admin_all_list'    => true,
306
+                    'show_in_admin_status_list' => true,
307
+                    /* translators: %s: number of invoices */
308
+                    'label_count'               => _n_noop( 'Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing' )
309
+                )
310
+            )
311
+        );
312 312
 
313
-		foreach ( $invoice_statuses as $invoice_statuse => $args ) {
314
-			register_post_status( $invoice_statuse, $args );
315
-		}
316
-	}
313
+        foreach ( $invoice_statuses as $invoice_statuse => $args ) {
314
+            register_post_status( $invoice_statuse, $args );
315
+        }
316
+    }
317 317
 
318
-	/**
319
-	 * Flush rewrite rules.
320
-	 */
321
-	public static function flush_rewrite_rules() {
322
-		flush_rewrite_rules();
323
-	}
318
+    /**
319
+     * Flush rewrite rules.
320
+     */
321
+    public static function flush_rewrite_rules() {
322
+        flush_rewrite_rules();
323
+    }
324 324
 
325
-	/**
326
-	 * Flush rules to prevent 404.
327
-	 *
328
-	 */
329
-	public static function maybe_flush_rewrite_rules() {
330
-		if ( ! get_option( 'getpaid_flushed_rewrite_rules' ) ) {
331
-			update_option( 'getpaid_flushed_rewrite_rules', '1' );
332
-			self::flush_rewrite_rules();
333
-		}
334
-	}
325
+    /**
326
+     * Flush rules to prevent 404.
327
+     *
328
+     */
329
+    public static function maybe_flush_rewrite_rules() {
330
+        if ( ! get_option( 'getpaid_flushed_rewrite_rules' ) ) {
331
+            update_option( 'getpaid_flushed_rewrite_rules', '1' );
332
+            self::flush_rewrite_rules();
333
+        }
334
+    }
335 335
 
336 336
 }
Please login to merge, or discard this patch.
admin/meta-boxes/class-getpaid-meta-box-invoice-shipping-address.php 1 patch
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
  */
8 8
 
9 9
 if ( ! defined( 'ABSPATH' ) ) {
10
-	exit; // Exit if accessed directly
10
+    exit; // Exit if accessed directly
11 11
 }
12 12
 
13 13
 /**
@@ -15,22 +15,22 @@  discard block
 block discarded – undo
15 15
  */
16 16
 class GetPaid_Meta_Box_Invoice_Shipping_Address {
17 17
 
18
-	/**
19
-	 * Output the metabox.
20
-	 *
21
-	 * @param WP_Post $post
22
-	 */
23
-	public static function output( $post ) {
18
+    /**
19
+     * Output the metabox.
20
+     *
21
+     * @param WP_Post $post
22
+     */
23
+    public static function output( $post ) {
24 24
 
25
-		// Retrieve shipping address.
26
-		$shipping_address = get_post_meta( $post->ID, 'shipping_address', true );
25
+        // Retrieve shipping address.
26
+        $shipping_address = get_post_meta( $post->ID, 'shipping_address', true );
27 27
 
28
-		// Abort if it is invalid.
29
-		if ( ! is_array( $shipping_address ) ) {
30
-			return;
31
-		}
28
+        // Abort if it is invalid.
29
+        if ( ! is_array( $shipping_address ) ) {
30
+            return;
31
+        }
32 32
 
33
-		?>
33
+        ?>
34 34
 
35 35
 		<div class="bsui">
36 36
 
@@ -55,31 +55,31 @@  discard block
 block discarded – undo
55 55
 
56 56
 		<?php
57 57
 
58
-	}
58
+    }
59 59
 
60
-	/**
61
-	 * Prepares a value.
62
-	 *
63
-	 * @param array $address
64
-	 * @param string $key
65
-	 * @return string
66
-	 */
67
-	public static function prepare_for_display( $address, $key ) {
60
+    /**
61
+     * Prepares a value.
62
+     *
63
+     * @param array $address
64
+     * @param string $key
65
+     * @return string
66
+     */
67
+    public static function prepare_for_display( $address, $key ) {
68 68
 
69
-		// Prepare the value.
70
-		$value = $address[ $key ];
69
+        // Prepare the value.
70
+        $value = $address[ $key ];
71 71
 
72
-		if ( $key == 'country' ) {
73
-			$value = wpinv_country_name( $value );
74
-		}
72
+        if ( $key == 'country' ) {
73
+            $value = wpinv_country_name( $value );
74
+        }
75 75
 
76
-		if ( $key == 'state' ) {
77
-			$country = isset( $address[ 'country' ] ) ? $address[ 'country' ] : wpinv_get_default_country();
78
-			$value = wpinv_state_name( $value, $country );
79
-		}
76
+        if ( $key == 'state' ) {
77
+            $country = isset( $address[ 'country' ] ) ? $address[ 'country' ] : wpinv_get_default_country();
78
+            $value = wpinv_state_name( $value, $country );
79
+        }
80 80
 
81
-		return sanitize_text_field( $value );
81
+        return sanitize_text_field( $value );
82 82
 
83
-	}
83
+    }
84 84
 
85 85
 }
Please login to merge, or discard this patch.
templates/payment-forms/elements/address.php 1 patch
Indentation   +19 added lines, -19 removed lines patch added patch discarded remove patch
@@ -10,7 +10,7 @@  discard block
 block discarded – undo
10 10
 defined( 'ABSPATH' ) || exit;
11 11
 
12 12
 if ( empty( $fields ) ) {
13
-	return;
13
+    return;
14 14
 }
15 15
 
16 16
 // A prefix for all ids (so that a form can be included in the same page multiple times).
@@ -50,9 +50,9 @@  discard block
 block discarded – undo
50 50
 	<!-- Start Billing Address -->
51 51
 	<div class="getpaid-billing-address-wrapper">
52 52
 		<?php
53
-			$field_type = 'billing';
54
-			include plugin_dir_path( __FILE__ ) . 'address-fields.php';
55
-		?>
53
+            $field_type = 'billing';
54
+            include plugin_dir_path( __FILE__ ) . 'address-fields.php';
55
+        ?>
56 56
 	</div>
57 57
 	<!-- End Billing Address -->
58 58
 
@@ -64,19 +64,19 @@  discard block
 block discarded – undo
64 64
 
65 65
 	<?php
66 66
 		
67
-		echo aui()->input(
68
-		    array(
69
-			    'type'       => 'checkbox',
70
-			    'name'       => 'same-shipping-address',
71
-			    'id'         => "shipping-toggle$uniqid",
72
-			    'required'   => false,
73
-			    'label'      => wp_kses_post( $shipping_address_toggle ),
74
-			    'value'      => 1,
75
-			    'checked'    => true,
76
-		    )
77
-		);
67
+        echo aui()->input(
68
+            array(
69
+                'type'       => 'checkbox',
70
+                'name'       => 'same-shipping-address',
71
+                'id'         => "shipping-toggle$uniqid",
72
+                'required'   => false,
73
+                'label'      => wp_kses_post( $shipping_address_toggle ),
74
+                'value'      => 1,
75
+                'checked'    => true,
76
+            )
77
+        );
78 78
 
79
-	?>
79
+    ?>
80 80
 
81 81
 
82 82
 	<!-- Start Shipping Address Title -->
@@ -95,9 +95,9 @@  discard block
 block discarded – undo
95 95
 	<!-- Start Shipping Address -->
96 96
 	<div class="getpaid-shipping-address-wrapper">
97 97
 		<?php
98
-			$field_type = 'shipping';
99
-			include plugin_dir_path( __FILE__ ) . 'address-fields.php';
100
-		?>
98
+            $field_type = 'shipping';
99
+            include plugin_dir_path( __FILE__ ) . 'address-fields.php';
100
+        ?>
101 101
 	</div>
102 102
 	<!-- End Shipping Address -->
103 103
 
Please login to merge, or discard this patch.
includes/class-getpaid-notification-email-sender.php 1 patch
Indentation   +134 added lines, -134 removed lines patch added patch discarded remove patch
@@ -13,17 +13,17 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Notification_Email_Sender {
14 14
 
15 15
     /**
16
-	 * Whether or not we should inline CSS into the email.
17
-	 */
18
-	public $inline_css = true;
16
+     * Whether or not we should inline CSS into the email.
17
+     */
18
+    public $inline_css = true;
19 19
 
20 20
     /**
21
-	 * The wp_mail() data.
22
-	 */
21
+     * The wp_mail() data.
22
+     */
23 23
     public $wp_mail_data = null;
24 24
 
25 25
     /**
26
-	 * Sends a new email.
26
+     * Sends a new email.
27 27
      * 
28 28
      * @param string|array $to The recipients email or an array of recipient emails.
29 29
      * @param string $subject The email's subject.
@@ -31,49 +31,49 @@  discard block
 block discarded – undo
31 31
      * @param array $attachments The email attachments.
32 32
      * 
33 33
      * @return bool
34
-	 */
35
-	public function send( $to, $subject, $email, $attachments = array() ) {
34
+     */
35
+    public function send( $to, $subject, $email, $attachments = array() ) {
36 36
 
37
-		/*
37
+        /*
38 38
 		 * Allow to filter data on per-email basis.
39 39
 		 */
40
-		$data = apply_filters(
41
-			'getpaid_email_data',
42
-			array(
43
-				'to'          => array_filter( array_unique( wpinv_parse_list( $to ) ) ),
44
-				'subject'     => htmlspecialchars_decode( strip_tags( $subject ), ENT_QUOTES ),
45
-				'email'       => apply_filters( 'wpinv_mail_content', $email ),
46
-				'headers'     => $this->get_headers(),
47
-				'attachments' => $attachments,
48
-			),
49
-			$this
50
-		);
40
+        $data = apply_filters(
41
+            'getpaid_email_data',
42
+            array(
43
+                'to'          => array_filter( array_unique( wpinv_parse_list( $to ) ) ),
44
+                'subject'     => htmlspecialchars_decode( strip_tags( $subject ), ENT_QUOTES ),
45
+                'email'       => apply_filters( 'wpinv_mail_content', $email ),
46
+                'headers'     => $this->get_headers(),
47
+                'attachments' => $attachments,
48
+            ),
49
+            $this
50
+        );
51 51
 
52 52
         // Remove slashes.
53 53
         $data               = (array) wp_unslash( $data );
54 54
 
55 55
         // Cache it.
56
-		$this->wp_mail_data = $data;
56
+        $this->wp_mail_data = $data;
57 57
 
58
-		// Attach our own hooks.
59
-		$this->before_sending();
58
+        // Attach our own hooks.
59
+        $this->before_sending();
60 60
 
61 61
         $result = false;
62 62
 
63 63
         foreach ( $this->wp_mail_data['to'] as $to ) {
64
-			$result = $this->_send( $to, $data );
64
+            $result = $this->_send( $to, $data );
65 65
         }
66 66
 
67
-		// Remove our hooks.
68
-		$this->after_sending();		
67
+        // Remove our hooks.
68
+        $this->after_sending();		
69 69
 
70
-		$this->wp_mail_data = null;
70
+        $this->wp_mail_data = null;
71 71
 
72
-		return $result;
73
-	}
72
+        return $result;
73
+    }
74 74
 
75
-	/**
76
-	 * Does the actual sending.
75
+    /**
76
+     * Does the actual sending.
77 77
      * 
78 78
      * @param string $to The recipient's email.
79 79
      * @param array $data The email's data.
@@ -81,81 +81,81 @@  discard block
 block discarded – undo
81 81
      * @param array $attachments The email attachments.
82 82
      * 
83 83
      * @return bool
84
-	 */
85
-	protected function _send( $to, $data ) {
86
-
87
-		// Prepare the sending function.
88
-		$sending_function = apply_filters( 'getpaid_email_email_sending_function', 'wp_mail' );
89
-
90
-		// Send the actual email.
91
-		$result = call_user_func(
92
-			$sending_function,
93
-			$to,
94
-			html_entity_decode( $data['subject'], ENT_QUOTES, get_bloginfo( 'charset' ) ),
95
-			$data['email'],
96
-			$data['headers'],
97
-			$data['attachments']
98
-		);
99
-
100
-		if ( ! $result ) {
101
-			$log_message = wp_sprintf( __( "\nTime: %s\nTo: %s\nSubject: %s\n", 'invoicing' ), date_i18n( 'F j Y H:i:s', current_time( 'timestamp' ) ), $to, $data['subject'] );
102
-			wpinv_error_log( $log_message, __( 'Email from Invoicing plugin failed to send', 'invoicing' ), __FILE__, __LINE__ );
103
-		}
104
-
105
-		return $result;
106
-	}
84
+     */
85
+    protected function _send( $to, $data ) {
86
+
87
+        // Prepare the sending function.
88
+        $sending_function = apply_filters( 'getpaid_email_email_sending_function', 'wp_mail' );
89
+
90
+        // Send the actual email.
91
+        $result = call_user_func(
92
+            $sending_function,
93
+            $to,
94
+            html_entity_decode( $data['subject'], ENT_QUOTES, get_bloginfo( 'charset' ) ),
95
+            $data['email'],
96
+            $data['headers'],
97
+            $data['attachments']
98
+        );
99
+
100
+        if ( ! $result ) {
101
+            $log_message = wp_sprintf( __( "\nTime: %s\nTo: %s\nSubject: %s\n", 'invoicing' ), date_i18n( 'F j Y H:i:s', current_time( 'timestamp' ) ), $to, $data['subject'] );
102
+            wpinv_error_log( $log_message, __( 'Email from Invoicing plugin failed to send', 'invoicing' ), __FILE__, __LINE__ );
103
+        }
104
+
105
+        return $result;
106
+    }
107 107
     
108 108
     /**
109
-	 * Retrieves email headers.
110
-	 */
111
-	public function get_headers() {
109
+     * Retrieves email headers.
110
+     */
111
+    public function get_headers() {
112 112
 
113
-		$name       = $this->get_from_name();
114
-		$reply_to   = $this->get_reply_to();
115
-		$headers    = array( "Reply-To:$name <$reply_to>" );
113
+        $name       = $this->get_from_name();
114
+        $reply_to   = $this->get_reply_to();
115
+        $headers    = array( "Reply-To:$name <$reply_to>" );
116 116
 
117
-		return apply_filters( 'getpaid_email_headers',  $headers, $this );
117
+        return apply_filters( 'getpaid_email_headers',  $headers, $this );
118 118
 
119
-	}
119
+    }
120 120
 
121 121
     /**
122
-	 * Fires before an email is sent
123
-	 *
124
-	 * @since 1.0.0
125
-	 */
126
-	public function before_sending() {
122
+     * Fires before an email is sent
123
+     *
124
+     * @since 1.0.0
125
+     */
126
+    public function before_sending() {
127 127
 
128 128
         do_action( 'getpaid_before_send_email', $this );
129
-		add_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 );
130
-		add_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 );
131
-		add_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 );
132
-		add_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000 );
129
+        add_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 );
130
+        add_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 );
131
+        add_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 );
132
+        add_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000 );
133 133
 
134
-	}
134
+    }
135 135
 
136 136
     /**
137
-	 * Returns the from name.
138
-	 */
139
-	public function get_from_name() {
137
+     * Returns the from name.
138
+     */
139
+    public function get_from_name() {
140 140
 
141 141
         $from_name = wpinv_get_option( 'email_from_name', get_bloginfo( 'name' ) );
142 142
 
143
-		if ( empty( $from_name ) ) {
144
-			$from_name =  get_bloginfo( 'name' );
143
+        if ( empty( $from_name ) ) {
144
+            $from_name =  get_bloginfo( 'name' );
145 145
         }
146 146
 
147
-		return wp_specialchars_decode( $from_name, ENT_QUOTES );
147
+        return wp_specialchars_decode( $from_name, ENT_QUOTES );
148 148
     }
149 149
 
150 150
     /**
151
-	 * Returns the from email.
152
-	 */
153
-	public function get_from_address() {
151
+     * Returns the from email.
152
+     */
153
+    public function get_from_address() {
154 154
 
155 155
         $from_address = wpinv_get_option( 'email_from', $this->default_from_address() );
156 156
 
157
-		if ( ! is_email( $from_address ) ) {
158
-			$from_address =  $this->default_from_address();
157
+        if ( ! is_email( $from_address ) ) {
158
+            $from_address =  $this->default_from_address();
159 159
         }
160 160
         
161 161
         return $from_address;
@@ -163,75 +163,75 @@  discard block
 block discarded – undo
163 163
     }
164 164
 
165 165
     /**
166
-	 * The default emails from address.
167
-	 * 
168
-	 * Defaults to wordpress@$sitename
169
-	 * Some hosts will block outgoing mail from this address if it doesn't exist,
170
-	 * but there's no easy alternative. Defaulting to admin_email might appear to be
171
-	 * another option, but some hosts may refuse to relay mail from an unknown domain.
172
-	 *
173
-	 */
174
-	public function default_from_address() {
175
-
176
-		// Get the site domain and get rid of www.
177
-		$sitename = strtolower( $_SERVER['SERVER_NAME'] );
178
-		if ( substr( $sitename, 0, 4 ) == 'www.' ) {
179
-			$sitename = substr( $sitename, 4 );
180
-		}
181
-
182
-		$from_email = 'wordpress@' . $sitename;
183
-
184
-		return apply_filters( 'getpaid_default_from_address', $from_email );
166
+     * The default emails from address.
167
+     * 
168
+     * Defaults to wordpress@$sitename
169
+     * Some hosts will block outgoing mail from this address if it doesn't exist,
170
+     * but there's no easy alternative. Defaulting to admin_email might appear to be
171
+     * another option, but some hosts may refuse to relay mail from an unknown domain.
172
+     *
173
+     */
174
+    public function default_from_address() {
175
+
176
+        // Get the site domain and get rid of www.
177
+        $sitename = strtolower( $_SERVER['SERVER_NAME'] );
178
+        if ( substr( $sitename, 0, 4 ) == 'www.' ) {
179
+            $sitename = substr( $sitename, 4 );
180
+        }
181
+
182
+        $from_email = 'wordpress@' . $sitename;
183
+
184
+        return apply_filters( 'getpaid_default_from_address', $from_email );
185 185
 
186 186
     }
187 187
     
188 188
     /**
189
-	 * Get the email reply-to.
190
-	 *
191
-	 *
192
-	 * @return string The email reply-to address.
193
-	 */
194
-	public function get_reply_to() {
189
+     * Get the email reply-to.
190
+     *
191
+     *
192
+     * @return string The email reply-to address.
193
+     */
194
+    public function get_reply_to() {
195 195
 
196
-		$reply_to = wpinv_get_admin_email();
196
+        $reply_to = wpinv_get_admin_email();
197 197
 
198
-		if ( ! is_email( $reply_to ) ) {
199
-			$reply_to =  get_option( 'admin_email' );
200
-		}
198
+        if ( ! is_email( $reply_to ) ) {
199
+            $reply_to =  get_option( 'admin_email' );
200
+        }
201 201
 
202
-		return $reply_to;
202
+        return $reply_to;
203 203
     }
204 204
     
205 205
     /**
206
-	 * Get the email content type.
207
-	 *
208
-	 */
209
-	public function get_content_type() {
210
-		return apply_filters( 'getpaid_email_content_type', 'text/html', $this );
206
+     * Get the email content type.
207
+     *
208
+     */
209
+    public function get_content_type() {
210
+        return apply_filters( 'getpaid_email_content_type', 'text/html', $this );
211 211
     }
212 212
     
213 213
     /**
214
-	 * Ensures that our email messages are not messed up by template plugins.
215
-	 *
216
-	 * @return array wp_mail_data.
217
-	 */
218
-	public function ensure_email_content( $args ) {
219
-		$args['message'] = $this->wp_mail_data['email'];
220
-		return $args;
214
+     * Ensures that our email messages are not messed up by template plugins.
215
+     *
216
+     * @return array wp_mail_data.
217
+     */
218
+    public function ensure_email_content( $args ) {
219
+        $args['message'] = $this->wp_mail_data['email'];
220
+        return $args;
221 221
     }
222 222
     
223 223
     /**
224
-	 * A little house keeping after an email is sent.
225
-	 *
226
- 	 */
227
-	public function after_sending() {
224
+     * A little house keeping after an email is sent.
225
+     *
226
+     */
227
+    public function after_sending() {
228 228
 
229 229
         do_action( 'getpaid_after_send_email', $this->wp_mail_data );
230
-		remove_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 );
231
-		remove_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 );
232
-		remove_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 );
233
-		remove_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000000 );
230
+        remove_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 );
231
+        remove_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 );
232
+        remove_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 );
233
+        remove_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000000 );
234 234
 
235
-	}
235
+    }
236 236
 
237 237
 }
Please login to merge, or discard this patch.
includes/reports/class-getpaid-reports-abstract-report.php 1 patch
Indentation   +179 added lines, -179 removed lines patch added patch discarded remove patch
@@ -12,72 +12,72 @@  discard block
 block discarded – undo
12 12
  */
13 13
 abstract class GetPaid_Reports_Abstract_Report {
14 14
 
15
-	/**
16
-	 * @var array
17
-	 */
18
-	public $stats;
19
-
20
-	/**
21
-	 * Class constructor.
22
-	 *
23
-	 */
24
-	public function __construct() {
25
-		$this->prepare_stats();
26
-	}
27
-
28
-	/**
29
-	 * Retrieves the current range.
30
-	 *
31
-	 */
32
-	public function get_range() {
33
-		$valid_ranges = $this->get_periods();
34
-
35
-		if ( isset( $_GET['date_range'] ) && array_key_exists( $_GET['date_range'], $valid_ranges ) ) {
36
-			return sanitize_key( $_GET['date_range'] );
37
-		}
38
-
39
-		return '7_days';
40
-	}
41
-
42
-	/**
43
-	 * Returns an array of date ranges.
44
-	 *
45
-	 * @return array
46
-	 */
47
-	public function get_periods() {
48
-
49
-		$periods = array(
15
+    /**
16
+     * @var array
17
+     */
18
+    public $stats;
19
+
20
+    /**
21
+     * Class constructor.
22
+     *
23
+     */
24
+    public function __construct() {
25
+        $this->prepare_stats();
26
+    }
27
+
28
+    /**
29
+     * Retrieves the current range.
30
+     *
31
+     */
32
+    public function get_range() {
33
+        $valid_ranges = $this->get_periods();
34
+
35
+        if ( isset( $_GET['date_range'] ) && array_key_exists( $_GET['date_range'], $valid_ranges ) ) {
36
+            return sanitize_key( $_GET['date_range'] );
37
+        }
38
+
39
+        return '7_days';
40
+    }
41
+
42
+    /**
43
+     * Returns an array of date ranges.
44
+     *
45
+     * @return array
46
+     */
47
+    public function get_periods() {
48
+
49
+        $periods = array(
50 50
             'today'     => __( 'Today', 'invoicing' ),
51 51
             'yesterday' => __( 'Yesterday', 'invoicing' ),
52 52
             '7_days'    => __( 'Last 7 days', 'invoicing' ),
53
-			'30_days'   => __( 'Last 30 days', 'invoicing' ),
54
-			'60_days'   => __( 'Last 60 days', 'invoicing' ),
55
-			'90_days'   => __( 'Last 90 days', 'invoicing' ),
56
-			'180_days'  => __( 'Last 180 days', 'invoicing' ),
57
-			'360_days'  => __( 'Last 360 days', 'invoicing' ),
58
-		);
59
-
60
-		return apply_filters( 'getpaid_earning_periods', $periods );
61
-	}
62
-
63
-	/**
64
-	 * Retrieves the current range's sql.
65
-	 *
66
-	 */
67
-	public function get_range_sql( $range ) {
68
-
69
-		$date     = 'CAST(meta.completed_date AS DATE)';
53
+            '30_days'   => __( 'Last 30 days', 'invoicing' ),
54
+            '60_days'   => __( 'Last 60 days', 'invoicing' ),
55
+            '90_days'   => __( 'Last 90 days', 'invoicing' ),
56
+            '180_days'  => __( 'Last 180 days', 'invoicing' ),
57
+            '360_days'  => __( 'Last 360 days', 'invoicing' ),
58
+        );
59
+
60
+        return apply_filters( 'getpaid_earning_periods', $periods );
61
+    }
62
+
63
+    /**
64
+     * Retrieves the current range's sql.
65
+     *
66
+     */
67
+    public function get_range_sql( $range ) {
68
+
69
+        $date     = 'CAST(meta.completed_date AS DATE)';
70 70
         $datetime = 'meta.completed_date';
71 71
 
72 72
         // Prepare durations.
73 73
         $today                = current_time( 'Y-m-d' );
74
-		$yesterday            = date( 'Y-m-d', strtotime( '-1 day', current_time( 'timestamp' ) ) );
75
-		$seven_days_ago       = date( 'Y-m-d', strtotime( '-7 days', current_time( 'timestamp' ) ) );
76
-		$thirty_days_ago      = date( 'Y-m-d', strtotime( '-30 days', current_time( 'timestamp' ) ) );
77
-		$ninety_days_ago      = date( 'Y-m-d', strtotime( '-90 days', current_time( 'timestamp' ) ) );
78
-		$sixty_days_ago       = date( 'Y-m-d', strtotime( '-60 days', current_time( 'timestamp' ) ) );
79
-		$one_eighty_days_ago  = date( 'Y-m-d', strtotime( '-180 days', current_time( 'timestamp' ) ) );
80
-		$three_sixty_days_ago = date( 'Y-m-d', strtotime( '-360 days', current_time( 'timestamp' ) ) );
74
+        $yesterday            = date( 'Y-m-d', strtotime( '-1 day', current_time( 'timestamp' ) ) );
75
+        $seven_days_ago       = date( 'Y-m-d', strtotime( '-7 days', current_time( 'timestamp' ) ) );
76
+        $thirty_days_ago      = date( 'Y-m-d', strtotime( '-30 days', current_time( 'timestamp' ) ) );
77
+        $ninety_days_ago      = date( 'Y-m-d', strtotime( '-90 days', current_time( 'timestamp' ) ) );
78
+        $sixty_days_ago       = date( 'Y-m-d', strtotime( '-60 days', current_time( 'timestamp' ) ) );
79
+        $one_eighty_days_ago  = date( 'Y-m-d', strtotime( '-180 days', current_time( 'timestamp' ) ) );
80
+        $three_sixty_days_ago = date( 'Y-m-d', strtotime( '-360 days', current_time( 'timestamp' ) ) );
81 81
 
82 82
         $ranges = array(
83 83
 
@@ -94,130 +94,130 @@  discard block
 block discarded – undo
94 94
             '7_days'       => array(
95 95
                 "DATE($datetime)",
96 96
                 "$date BETWEEN '$seven_days_ago' AND '$today'"
97
-			),
97
+            ),
98 98
 
99
-			'30_days'       => array(
99
+            '30_days'       => array(
100 100
                 "DATE($datetime)",
101 101
                 "$date BETWEEN '$thirty_days_ago' AND '$today'"
102
-			),
102
+            ),
103 103
 
104
-			'60_days'       => array(
104
+            '60_days'       => array(
105 105
                 "DATE($datetime)",
106 106
                 "$date BETWEEN '$sixty_days_ago' AND '$today'"
107
-			),
107
+            ),
108 108
 
109
-			'90_days'       => array(
109
+            '90_days'       => array(
110 110
                 "WEEK($datetime)",
111 111
                 "$date BETWEEN '$ninety_days_ago' AND '$today'"
112
-			),
112
+            ),
113 113
 
114
-			'180_days'       => array(
114
+            '180_days'       => array(
115 115
                 "WEEK($datetime)",
116 116
                 "$date BETWEEN '$one_eighty_days_ago' AND '$today'"
117
-			),
117
+            ),
118 118
 
119
-			'360_days'       => array(
119
+            '360_days'       => array(
120 120
                 "WEEK($datetime)",
121 121
                 "$date BETWEEN '$three_sixty_days_ago' AND '$today'"
122 122
             ),
123 123
 
124 124
         );
125 125
 
126
-		$sql = isset( $ranges[ $range ] ) ? $ranges[ $range ] : $ranges[ '7_days' ];
127
-		return apply_filters( 'getpaid_earning_graphs_get_range_sql', $sql, $range );
128
-
129
-	}
130
-
131
-	/**
132
-	 * Retrieves the hours in a day
133
-	 *
134
-	 */
135
-	public function get_hours_in_a_day() {
136
-
137
-		return array(
138
-			'12AM' => __( '12 AM', 'invoicing'),
139
-			'1AM'  => __( '1 AM', 'invoicing'),
140
-			'2AM'  => __( '2 AM', 'invoicing'),
141
-			'3AM'  => __( '3 AM', 'invoicing'),
142
-			'4AM'  => __( '4 AM', 'invoicing'),
143
-			'5AM'  => __( '5 AM', 'invoicing'),
144
-			'6AM'  => __( '6 AM', 'invoicing'),
145
-			'7AM'  => __( '7 AM', 'invoicing'),
146
-			'8AM'  => __( '8 AM', 'invoicing'),
147
-			'9AM'  => __( '9 AM', 'invoicing'),
148
-			'10AM' => __( '10 AM', 'invoicing'),
149
-			'11AM' => __( '11 AM', 'invoicing'),
150
-			'12pm' => __( '12 PM', 'invoicing'),
151
-			'1PM'  => __( '1 PM', 'invoicing'),
152
-			'2PM'  => __( '2 PM', 'invoicing'),
153
-			'3PM'  => __( '3 PM', 'invoicing'),
154
-			'4PM'  => __( '4 PM', 'invoicing'),
155
-			'5PM'  => __( '5 PM', 'invoicing'),
156
-			'6PM'  => __( '6 PM', 'invoicing'),
157
-			'7PM'  => __( '7 PM', 'invoicing'),
158
-			'8PM'  => __( '8 PM', 'invoicing'),
159
-			'9PM'  => __( '9 PM', 'invoicing'),
160
-			'10PM' => __( '10 PM', 'invoicing'),
161
-			'11PM' => __( '11 PM', 'invoicing'),
162
-		);
163
-
164
-	}
165
-
166
-	/**
167
-	 * Retrieves the days in a period
168
-	 *
169
-	 */
170
-	public function get_days_in_period( $days ) {
171
-
172
-		$return = array();
173
-		$format = 'Y-m-d';
174
-
175
-		if ( $days < 8 ) {
176
-			$format = 'D';
177
-		}
178
-
179
-		if ( $days < 32 ) {
180
-			$format = 'M j';
181
-		}
182
-
183
-		while ( $days > 0 ) {
184
-
185
-			$key            = date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) );
186
-			$label          = date_i18n( $format, strtotime( "-$days days", current_time( 'timestamp' ) ) );
187
-			$return[ $key ] = $label;
188
-			$days--;
189
-
190
-		}
191
-
192
-		return $return;
193
-	}
194
-
195
-	/**
196
-	 * Retrieves the weeks in a period
197
-	 *
198
-	 */
199
-	public function get_weeks_in_period( $days ) {
200
-
201
-		$return = array();
202
-
203
-		while ( $days > 0 ) {
204
-
205
-			$key            = date( 'W', strtotime( "-$days days", current_time( 'timestamp' ) ) );
206
-			$label          = date_i18n( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) );
207
-			$return[ $key ] = $label;
208
-			$days--;
209
-
210
-		}
211
-
212
-		return $return;
213
-	}
214
-
215
-	/**
216
-	 * Displays the report card.
217
-	 *
218
-	 */
219
-	public function display() {
220
-		?>
126
+        $sql = isset( $ranges[ $range ] ) ? $ranges[ $range ] : $ranges[ '7_days' ];
127
+        return apply_filters( 'getpaid_earning_graphs_get_range_sql', $sql, $range );
128
+
129
+    }
130
+
131
+    /**
132
+     * Retrieves the hours in a day
133
+     *
134
+     */
135
+    public function get_hours_in_a_day() {
136
+
137
+        return array(
138
+            '12AM' => __( '12 AM', 'invoicing'),
139
+            '1AM'  => __( '1 AM', 'invoicing'),
140
+            '2AM'  => __( '2 AM', 'invoicing'),
141
+            '3AM'  => __( '3 AM', 'invoicing'),
142
+            '4AM'  => __( '4 AM', 'invoicing'),
143
+            '5AM'  => __( '5 AM', 'invoicing'),
144
+            '6AM'  => __( '6 AM', 'invoicing'),
145
+            '7AM'  => __( '7 AM', 'invoicing'),
146
+            '8AM'  => __( '8 AM', 'invoicing'),
147
+            '9AM'  => __( '9 AM', 'invoicing'),
148
+            '10AM' => __( '10 AM', 'invoicing'),
149
+            '11AM' => __( '11 AM', 'invoicing'),
150
+            '12pm' => __( '12 PM', 'invoicing'),
151
+            '1PM'  => __( '1 PM', 'invoicing'),
152
+            '2PM'  => __( '2 PM', 'invoicing'),
153
+            '3PM'  => __( '3 PM', 'invoicing'),
154
+            '4PM'  => __( '4 PM', 'invoicing'),
155
+            '5PM'  => __( '5 PM', 'invoicing'),
156
+            '6PM'  => __( '6 PM', 'invoicing'),
157
+            '7PM'  => __( '7 PM', 'invoicing'),
158
+            '8PM'  => __( '8 PM', 'invoicing'),
159
+            '9PM'  => __( '9 PM', 'invoicing'),
160
+            '10PM' => __( '10 PM', 'invoicing'),
161
+            '11PM' => __( '11 PM', 'invoicing'),
162
+        );
163
+
164
+    }
165
+
166
+    /**
167
+     * Retrieves the days in a period
168
+     *
169
+     */
170
+    public function get_days_in_period( $days ) {
171
+
172
+        $return = array();
173
+        $format = 'Y-m-d';
174
+
175
+        if ( $days < 8 ) {
176
+            $format = 'D';
177
+        }
178
+
179
+        if ( $days < 32 ) {
180
+            $format = 'M j';
181
+        }
182
+
183
+        while ( $days > 0 ) {
184
+
185
+            $key            = date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) );
186
+            $label          = date_i18n( $format, strtotime( "-$days days", current_time( 'timestamp' ) ) );
187
+            $return[ $key ] = $label;
188
+            $days--;
189
+
190
+        }
191
+
192
+        return $return;
193
+    }
194
+
195
+    /**
196
+     * Retrieves the weeks in a period
197
+     *
198
+     */
199
+    public function get_weeks_in_period( $days ) {
200
+
201
+        $return = array();
202
+
203
+        while ( $days > 0 ) {
204
+
205
+            $key            = date( 'W', strtotime( "-$days days", current_time( 'timestamp' ) ) );
206
+            $label          = date_i18n( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) );
207
+            $return[ $key ] = $label;
208
+            $days--;
209
+
210
+        }
211
+
212
+        return $return;
213
+    }
214
+
215
+    /**
216
+     * Displays the report card.
217
+     *
218
+     */
219
+    public function display() {
220
+        ?>
221 221
 
222 222
 			<div class="row">
223 223
 				<div class="col-12">
@@ -231,20 +231,20 @@  discard block
 block discarded – undo
231 231
 
232 232
 		<?php
233 233
 
234
-	}
235
-
236
-	/**
237
-	 * Prepares the report stats.
238
-	 *
239
-	 * Extend this in child classes.
240
-	 */
241
-	abstract public function prepare_stats();
242
-
243
-	/**
244
-	 * Displays the actual report.
245
-	 *
246
-	 * Extend this in child classes.
247
-	 */
248
-	abstract public function display_stats();
234
+    }
235
+
236
+    /**
237
+     * Prepares the report stats.
238
+     *
239
+     * Extend this in child classes.
240
+     */
241
+    abstract public function prepare_stats();
242
+
243
+    /**
244
+     * Displays the actual report.
245
+     *
246
+     * Extend this in child classes.
247
+     */
248
+    abstract public function display_stats();
249 249
 
250 250
 }
Please login to merge, or discard this patch.
includes/geolocation/class-getpaid-maxmind-database-service.php 1 patch
Indentation   +149 added lines, -149 removed lines patch added patch discarded remove patch
@@ -13,154 +13,154 @@
 block discarded – undo
13 13
  */
14 14
 class GetPaid_MaxMind_Database_Service {
15 15
 
16
-	/**
17
-	 * The name of the MaxMind database to utilize.
18
-	 */
19
-	const DATABASE = 'GeoLite2-Country';
20
-
21
-	/**
22
-	 * The extension for the MaxMind database.
23
-	 */
24
-	const DATABASE_EXTENSION = '.mmdb';
25
-
26
-	/**
27
-	 * A prefix for the MaxMind database filename.
28
-	 *
29
-	 * @var string
30
-	 */
31
-	private $database_prefix;
32
-
33
-	/**
34
-	 * Class constructor.
35
-	 *
36
-	 * @param string|null $database_prefix A prefix for the MaxMind database filename.
37
-	 */
38
-	public function __construct( $database_prefix ) {
39
-		$this->database_prefix = $database_prefix;
40
-	}
41
-
42
-	/**
43
-	 * Fetches the path that the database should be stored.
44
-	 *
45
-	 * @return string The local database path.
46
-	 */
47
-	public function get_database_path() {
48
-		$uploads_dir = wp_upload_dir();
49
-
50
-		$database_path = trailingslashit( $uploads_dir['basedir'] ) . 'invoicing/';
51
-		if ( ! empty( $this->database_prefix ) ) {
52
-			$database_path .= $this->database_prefix . '-';
53
-		}
54
-		$database_path .= self::DATABASE . self::DATABASE_EXTENSION;
55
-
56
-		// Filter the geolocation database storage path.
57
-		return apply_filters( 'getpaid_maxmind_geolocation_database_path', $database_path );
58
-	}
59
-
60
-	/**
61
-	 * Fetches the database from the MaxMind service.
62
-	 *
63
-	 * @param string $license_key The license key to be used when downloading the database.
64
-	 * @return string|WP_Error The path to the database file or an error if invalid.
65
-	 */
66
-	public function download_database( $license_key ) {
67
-
68
-		$download_uri = add_query_arg(
69
-			array(
70
-				'edition_id'  => self::DATABASE,
71
-				'license_key' => urlencode( wpinv_clean( $license_key ) ),
72
-				'suffix'      => 'tar.gz',
73
-			),
74
-			'https://download.maxmind.com/app/geoip_download'
75
-		);
76
-
77
-		// Needed for the download_url call right below.
78
-		require_once ABSPATH . 'wp-admin/includes/file.php';
79
-
80
-		$tmp_archive_path = download_url( esc_url_raw( $download_uri ) );
81
-
82
-		if ( is_wp_error( $tmp_archive_path ) ) {
83
-			// Transform the error into something more informative.
84
-			$error_data = $tmp_archive_path->get_error_data();
85
-			if ( isset( $error_data['code'] ) && $error_data['code'] == 401 ) {
86
-				return new WP_Error(
87
-					'getpaid_maxmind_geolocation_database_license_key',
88
-					__( 'The MaxMind license key is invalid. If you have recently created this key, you may need to wait for it to become active.', 'invoicing' )
89
-				);
90
-			}
91
-
92
-			return new WP_Error( 'getpaid_maxmind_geolocation_database_download', __( 'Failed to download the MaxMind database.', 'invoicing' ) );
93
-		}
94
-
95
-		// Extract the database from the archive.
96
-		return $this->extract_downloaded_database( $tmp_archive_path );
97
-
98
-	}
99
-
100
-	/**
101
-	 * Extracts the downloaded database.
102
-	 *
103
-	 * @param string $tmp_archive_path The database archive path.
104
-	 * @return string|WP_Error The path to the database file or an error if invalid.
105
-	 */
106
-	protected function extract_downloaded_database( $tmp_archive_path ) {
107
-
108
-		// Extract the database from the archive.
109
-		$tmp_database_path = '';
110
-
111
-		try {
112
-
113
-			$file              = new PharData( $tmp_archive_path );
114
-			$tmp_database_path = trailingslashit( dirname( $tmp_archive_path ) ) . trailingslashit( $file->current()->getFilename() ) . self::DATABASE . self::DATABASE_EXTENSION;
115
-
116
-			$file->extractTo(
117
-				dirname( $tmp_archive_path ),
118
-				trailingslashit( $file->current()->getFilename() ) . self::DATABASE . self::DATABASE_EXTENSION,
119
-				true
120
-			);
121
-
122
-		} catch ( Exception $exception ) {
123
-			return new WP_Error( 'invoicing_maxmind_geolocation_database_archive', $exception->getMessage() );
124
-		} finally {
125
-			// Remove the archive since we only care about a single file in it.
126
-			unlink( $tmp_archive_path );
127
-		}
128
-
129
-		return $tmp_database_path;
130
-	}
131
-
132
-	/**
133
-	 * Fetches the ISO country code associated with an IP address.
134
-	 *
135
-	 * @param string $ip_address The IP address to find the country code for.
136
-	 * @return string The country code for the IP address, or empty if not found.
137
-	 */
138
-	public function get_iso_country_code_for_ip( $ip_address ) {
139
-		$country_code = '';
140
-
141
-		if ( ! class_exists( 'MaxMind\Db\Reader' ) ) {
142
-			return $country_code;
143
-		}
144
-
145
-		$database_path = $this->get_database_path();
146
-		if ( ! file_exists( $database_path ) ) {
147
-			return $country_code;
148
-		}
149
-
150
-		try {
151
-			$reader = new MaxMind\Db\Reader( $database_path );
152
-			$data   = $reader->get( $ip_address );
153
-
154
-			if ( isset( $data['country']['iso_code'] ) ) {
155
-				$country_code = $data['country']['iso_code'];
156
-			}
157
-
158
-			$reader->close();
159
-		} catch ( Exception $e ) {
160
-			wpinv_error_log( $e->getMessage(), 'SOURCE: MaxMind GeoLocation' );
161
-		}
162
-
163
-		return $country_code;
164
-	}
16
+    /**
17
+     * The name of the MaxMind database to utilize.
18
+     */
19
+    const DATABASE = 'GeoLite2-Country';
20
+
21
+    /**
22
+     * The extension for the MaxMind database.
23
+     */
24
+    const DATABASE_EXTENSION = '.mmdb';
25
+
26
+    /**
27
+     * A prefix for the MaxMind database filename.
28
+     *
29
+     * @var string
30
+     */
31
+    private $database_prefix;
32
+
33
+    /**
34
+     * Class constructor.
35
+     *
36
+     * @param string|null $database_prefix A prefix for the MaxMind database filename.
37
+     */
38
+    public function __construct( $database_prefix ) {
39
+        $this->database_prefix = $database_prefix;
40
+    }
41
+
42
+    /**
43
+     * Fetches the path that the database should be stored.
44
+     *
45
+     * @return string The local database path.
46
+     */
47
+    public function get_database_path() {
48
+        $uploads_dir = wp_upload_dir();
49
+
50
+        $database_path = trailingslashit( $uploads_dir['basedir'] ) . 'invoicing/';
51
+        if ( ! empty( $this->database_prefix ) ) {
52
+            $database_path .= $this->database_prefix . '-';
53
+        }
54
+        $database_path .= self::DATABASE . self::DATABASE_EXTENSION;
55
+
56
+        // Filter the geolocation database storage path.
57
+        return apply_filters( 'getpaid_maxmind_geolocation_database_path', $database_path );
58
+    }
59
+
60
+    /**
61
+     * Fetches the database from the MaxMind service.
62
+     *
63
+     * @param string $license_key The license key to be used when downloading the database.
64
+     * @return string|WP_Error The path to the database file or an error if invalid.
65
+     */
66
+    public function download_database( $license_key ) {
67
+
68
+        $download_uri = add_query_arg(
69
+            array(
70
+                'edition_id'  => self::DATABASE,
71
+                'license_key' => urlencode( wpinv_clean( $license_key ) ),
72
+                'suffix'      => 'tar.gz',
73
+            ),
74
+            'https://download.maxmind.com/app/geoip_download'
75
+        );
76
+
77
+        // Needed for the download_url call right below.
78
+        require_once ABSPATH . 'wp-admin/includes/file.php';
79
+
80
+        $tmp_archive_path = download_url( esc_url_raw( $download_uri ) );
81
+
82
+        if ( is_wp_error( $tmp_archive_path ) ) {
83
+            // Transform the error into something more informative.
84
+            $error_data = $tmp_archive_path->get_error_data();
85
+            if ( isset( $error_data['code'] ) && $error_data['code'] == 401 ) {
86
+                return new WP_Error(
87
+                    'getpaid_maxmind_geolocation_database_license_key',
88
+                    __( 'The MaxMind license key is invalid. If you have recently created this key, you may need to wait for it to become active.', 'invoicing' )
89
+                );
90
+            }
91
+
92
+            return new WP_Error( 'getpaid_maxmind_geolocation_database_download', __( 'Failed to download the MaxMind database.', 'invoicing' ) );
93
+        }
94
+
95
+        // Extract the database from the archive.
96
+        return $this->extract_downloaded_database( $tmp_archive_path );
97
+
98
+    }
99
+
100
+    /**
101
+     * Extracts the downloaded database.
102
+     *
103
+     * @param string $tmp_archive_path The database archive path.
104
+     * @return string|WP_Error The path to the database file or an error if invalid.
105
+     */
106
+    protected function extract_downloaded_database( $tmp_archive_path ) {
107
+
108
+        // Extract the database from the archive.
109
+        $tmp_database_path = '';
110
+
111
+        try {
112
+
113
+            $file              = new PharData( $tmp_archive_path );
114
+            $tmp_database_path = trailingslashit( dirname( $tmp_archive_path ) ) . trailingslashit( $file->current()->getFilename() ) . self::DATABASE . self::DATABASE_EXTENSION;
115
+
116
+            $file->extractTo(
117
+                dirname( $tmp_archive_path ),
118
+                trailingslashit( $file->current()->getFilename() ) . self::DATABASE . self::DATABASE_EXTENSION,
119
+                true
120
+            );
121
+
122
+        } catch ( Exception $exception ) {
123
+            return new WP_Error( 'invoicing_maxmind_geolocation_database_archive', $exception->getMessage() );
124
+        } finally {
125
+            // Remove the archive since we only care about a single file in it.
126
+            unlink( $tmp_archive_path );
127
+        }
128
+
129
+        return $tmp_database_path;
130
+    }
131
+
132
+    /**
133
+     * Fetches the ISO country code associated with an IP address.
134
+     *
135
+     * @param string $ip_address The IP address to find the country code for.
136
+     * @return string The country code for the IP address, or empty if not found.
137
+     */
138
+    public function get_iso_country_code_for_ip( $ip_address ) {
139
+        $country_code = '';
140
+
141
+        if ( ! class_exists( 'MaxMind\Db\Reader' ) ) {
142
+            return $country_code;
143
+        }
144
+
145
+        $database_path = $this->get_database_path();
146
+        if ( ! file_exists( $database_path ) ) {
147
+            return $country_code;
148
+        }
149
+
150
+        try {
151
+            $reader = new MaxMind\Db\Reader( $database_path );
152
+            $data   = $reader->get( $ip_address );
153
+
154
+            if ( isset( $data['country']['iso_code'] ) ) {
155
+                $country_code = $data['country']['iso_code'];
156
+            }
157
+
158
+            $reader->close();
159
+        } catch ( Exception $e ) {
160
+            wpinv_error_log( $e->getMessage(), 'SOURCE: MaxMind GeoLocation' );
161
+        }
162
+
163
+        return $country_code;
164
+    }
165 165
 
166 166
 }
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-subscription-data-store.php 1 patch
Indentation   +180 added lines, -180 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,196 +15,196 @@  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->last_error = __( 'Invalid subscription ID.', 'invoicing' );
119
-			return false;
120
-		}
121
-
122
-		foreach ( array_keys( $this->database_fields_to_data_type ) as $key ) {
123
-			$method     = "set_$key";
124
-			$subscription->$method( $raw_subscription->$key );
125
-		}
126
-
127
-		$subscription->set_object_read( true );
128
-		do_action( 'getpaid_read_subscription', $subscription );
129
-
130
-	}
131
-
132
-	/**
133
-	 * Method to update a subscription in the database.
134
-	 *
135
-	 * @param WPInv_Subscription $subscription Subscription object.
136
-	 */
137
-	public function update( &$subscription ) {
138
-		global $wpdb;
139
-
140
-		$changes = $subscription->get_changes();
141
-		$values  = array();
142
-		$formats = array();
143
-
144
-		foreach ( $this->database_fields_to_data_type as $key => $format ) {
145
-			if ( array_key_exists( $key, $changes ) ) {
146
-				$method       = "get_$key";
147
-				$values[$key] = $subscription->$method( 'edit' );
148
-				$formats[]    = $format;
149
-			}
150
-		}
151
-
152
-		if ( empty( $values ) ) {
153
-			return;
154
-		}
155
-
156
-		$wpdb->update(
157
-			$wpdb->prefix . 'wpinv_subscriptions',
158
-			$values,
159
-			array(
160
-				'id' => $subscription->get_id(),
161
-			),
162
-			$formats,
163
-			'%d'
164
-		);
165
-
166
-		// Apply the changes.
167
-		$subscription->apply_changes();
168
-
169
-		// Delete cache.
170
-		$subscription->clear_cache();
171
-
172
-		update_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id', $subscription->get_profile_id() );
173
-
174
-		// Fire a hook.
175
-		do_action( 'getpaid_update_subscription', $subscription );
176
-
177
-	}
178
-
179
-	/**
180
-	 * Method to delete a subscription from the database.
181
-	 *
182
-	 * @param WPInv_Subscription $subscription
183
-	 */
184
-	public function delete( &$subscription ) {
185
-		global $wpdb;
186
-
187
-		$wpdb->query(
188
-			$wpdb->prepare(
189
-				"DELETE FROM {$wpdb->prefix}getpaid_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->last_error = __( 'Invalid subscription ID.', 'invoicing' );
119
+            return false;
120
+        }
121
+
122
+        foreach ( array_keys( $this->database_fields_to_data_type ) as $key ) {
123
+            $method     = "set_$key";
124
+            $subscription->$method( $raw_subscription->$key );
125
+        }
126
+
127
+        $subscription->set_object_read( true );
128
+        do_action( 'getpaid_read_subscription', $subscription );
129
+
130
+    }
131
+
132
+    /**
133
+     * Method to update a subscription in the database.
134
+     *
135
+     * @param WPInv_Subscription $subscription Subscription object.
136
+     */
137
+    public function update( &$subscription ) {
138
+        global $wpdb;
139
+
140
+        $changes = $subscription->get_changes();
141
+        $values  = array();
142
+        $formats = array();
143
+
144
+        foreach ( $this->database_fields_to_data_type as $key => $format ) {
145
+            if ( array_key_exists( $key, $changes ) ) {
146
+                $method       = "get_$key";
147
+                $values[$key] = $subscription->$method( 'edit' );
148
+                $formats[]    = $format;
149
+            }
150
+        }
151
+
152
+        if ( empty( $values ) ) {
153
+            return;
154
+        }
155
+
156
+        $wpdb->update(
157
+            $wpdb->prefix . 'wpinv_subscriptions',
158
+            $values,
159
+            array(
160
+                'id' => $subscription->get_id(),
161
+            ),
162
+            $formats,
163
+            '%d'
164
+        );
165
+
166
+        // Apply the changes.
167
+        $subscription->apply_changes();
168
+
169
+        // Delete cache.
170
+        $subscription->clear_cache();
171
+
172
+        update_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id', $subscription->get_profile_id() );
173
+
174
+        // Fire a hook.
175
+        do_action( 'getpaid_update_subscription', $subscription );
176
+
177
+    }
178
+
179
+    /**
180
+     * Method to delete a subscription from the database.
181
+     *
182
+     * @param WPInv_Subscription $subscription
183
+     */
184
+    public function delete( &$subscription ) {
185
+        global $wpdb;
186
+
187
+        $wpdb->query(
188
+            $wpdb->prepare(
189
+                "DELETE FROM {$wpdb->prefix}getpaid_subscriptions
190 190
 				WHERE id = %d",
191
-				$subscription->get_id()
192
-			)
193
-		);
191
+                $subscription->get_id()
192
+            )
193
+        );
194 194
 
195
-		delete_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id' );
196
-		delete_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscription_id' );
195
+        delete_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscr_profile_id' );
196
+        delete_post_meta( $subscription->get_parent_invoice_id(), '_wpinv_subscription_id' );
197 197
 
198
-		// Delete cache.
199
-		$subscription->clear_cache();
198
+        // Delete cache.
199
+        $subscription->clear_cache();
200 200
 
201
-		// Fire a hook.
202
-		do_action( 'getpaid_delete_subscription', $subscription );
201
+        // Fire a hook.
202
+        do_action( 'getpaid_delete_subscription', $subscription );
203 203
 
204
-		$subscription->set_id( 0 );
205
-	}
204
+        $subscription->set_id( 0 );
205
+    }
206 206
 
207
-	/*
207
+    /*
208 208
 	|--------------------------------------------------------------------------
209 209
 	| Additional Methods
210 210
 	|--------------------------------------------------------------------------
Please login to merge, or discard this patch.