Passed
Push — master ( faf467...a86610 )
by Brian
05:04
created
includes/libraries/action-scheduler/lib/WP_Async_Request.php 1 patch
Indentation   +153 added lines, -153 removed lines patch added patch discarded remove patch
@@ -14,157 +14,157 @@
 block discarded – undo
14 14
 
15 15
 if ( ! class_exists( 'WP_Async_Request' ) ) {
16 16
 
17
-	/**
18
-	 * Abstract WP_Async_Request class.
19
-	 *
20
-	 * @abstract
21
-	 */
22
-	abstract class WP_Async_Request {
23
-
24
-		/**
25
-		 * Prefix
26
-		 *
27
-		 * (default value: 'wp')
28
-		 *
29
-		 * @var string
30
-		 * @access protected
31
-		 */
32
-		protected $prefix = 'wp';
33
-
34
-		/**
35
-		 * Action
36
-		 *
37
-		 * (default value: 'async_request')
38
-		 *
39
-		 * @var string
40
-		 * @access protected
41
-		 */
42
-		protected $action = 'async_request';
43
-
44
-		/**
45
-		 * Identifier
46
-		 *
47
-		 * @var mixed
48
-		 * @access protected
49
-		 */
50
-		protected $identifier;
51
-
52
-		/**
53
-		 * Data
54
-		 *
55
-		 * (default value: array())
56
-		 *
57
-		 * @var array
58
-		 * @access protected
59
-		 */
60
-		protected $data = array();
61
-
62
-		/**
63
-		 * Initiate new async request
64
-		 */
65
-		public function __construct() {
66
-			$this->identifier = $this->prefix . '_' . $this->action;
67
-
68
-			add_action( 'wp_ajax_' . $this->identifier, array( $this, 'maybe_handle' ) );
69
-			add_action( 'wp_ajax_nopriv_' . $this->identifier, array( $this, 'maybe_handle' ) );
70
-		}
71
-
72
-		/**
73
-		 * Set data used during the request
74
-		 *
75
-		 * @param array $data Data.
76
-		 *
77
-		 * @return $this
78
-		 */
79
-		public function data( $data ) {
80
-			$this->data = $data;
81
-
82
-			return $this;
83
-		}
84
-
85
-		/**
86
-		 * Dispatch the async request
87
-		 *
88
-		 * @return array|WP_Error
89
-		 */
90
-		public function dispatch() {
91
-			$url  = add_query_arg( $this->get_query_args(), $this->get_query_url() );
92
-			$args = $this->get_post_args();
93
-
94
-			return wp_remote_post( esc_url_raw( $url ), $args );
95
-		}
96
-
97
-		/**
98
-		 * Get query args
99
-		 *
100
-		 * @return array
101
-		 */
102
-		protected function get_query_args() {
103
-			if ( property_exists( $this, 'query_args' ) ) {
104
-				return $this->query_args;
105
-			}
106
-
107
-			return array(
108
-				'action' => $this->identifier,
109
-				'nonce'  => wp_create_nonce( $this->identifier ),
110
-			);
111
-		}
112
-
113
-		/**
114
-		 * Get query URL
115
-		 *
116
-		 * @return string
117
-		 */
118
-		protected function get_query_url() {
119
-			if ( property_exists( $this, 'query_url' ) ) {
120
-				return $this->query_url;
121
-			}
122
-
123
-			return admin_url( 'admin-ajax.php' );
124
-		}
125
-
126
-		/**
127
-		 * Get post args
128
-		 *
129
-		 * @return array
130
-		 */
131
-		protected function get_post_args() {
132
-			if ( property_exists( $this, 'post_args' ) ) {
133
-				return $this->post_args;
134
-			}
135
-
136
-			return array(
137
-				'timeout'   => 0.01,
138
-				'blocking'  => false,
139
-				'body'      => $this->data,
140
-				'cookies'   => $_COOKIE,
141
-				'sslverify' => apply_filters( 'https_local_ssl_verify', false ),
142
-			);
143
-		}
144
-
145
-		/**
146
-		 * Maybe handle
147
-		 *
148
-		 * Check for correct nonce and pass to handler.
149
-		 */
150
-		public function maybe_handle() {
151
-			// Don't lock up other requests while processing
152
-			session_write_close();
153
-
154
-			check_ajax_referer( $this->identifier, 'nonce' );
155
-
156
-			$this->handle();
157
-
158
-			wp_die();
159
-		}
160
-
161
-		/**
162
-		 * Handle
163
-		 *
164
-		 * Override this method to perform any actions required
165
-		 * during the async request.
166
-		 */
167
-		abstract protected function handle();
168
-
169
-	}
17
+    /**
18
+     * Abstract WP_Async_Request class.
19
+     *
20
+     * @abstract
21
+     */
22
+    abstract class WP_Async_Request {
23
+
24
+        /**
25
+         * Prefix
26
+         *
27
+         * (default value: 'wp')
28
+         *
29
+         * @var string
30
+         * @access protected
31
+         */
32
+        protected $prefix = 'wp';
33
+
34
+        /**
35
+         * Action
36
+         *
37
+         * (default value: 'async_request')
38
+         *
39
+         * @var string
40
+         * @access protected
41
+         */
42
+        protected $action = 'async_request';
43
+
44
+        /**
45
+         * Identifier
46
+         *
47
+         * @var mixed
48
+         * @access protected
49
+         */
50
+        protected $identifier;
51
+
52
+        /**
53
+         * Data
54
+         *
55
+         * (default value: array())
56
+         *
57
+         * @var array
58
+         * @access protected
59
+         */
60
+        protected $data = array();
61
+
62
+        /**
63
+         * Initiate new async request
64
+         */
65
+        public function __construct() {
66
+            $this->identifier = $this->prefix . '_' . $this->action;
67
+
68
+            add_action( 'wp_ajax_' . $this->identifier, array( $this, 'maybe_handle' ) );
69
+            add_action( 'wp_ajax_nopriv_' . $this->identifier, array( $this, 'maybe_handle' ) );
70
+        }
71
+
72
+        /**
73
+         * Set data used during the request
74
+         *
75
+         * @param array $data Data.
76
+         *
77
+         * @return $this
78
+         */
79
+        public function data( $data ) {
80
+            $this->data = $data;
81
+
82
+            return $this;
83
+        }
84
+
85
+        /**
86
+         * Dispatch the async request
87
+         *
88
+         * @return array|WP_Error
89
+         */
90
+        public function dispatch() {
91
+            $url  = add_query_arg( $this->get_query_args(), $this->get_query_url() );
92
+            $args = $this->get_post_args();
93
+
94
+            return wp_remote_post( esc_url_raw( $url ), $args );
95
+        }
96
+
97
+        /**
98
+         * Get query args
99
+         *
100
+         * @return array
101
+         */
102
+        protected function get_query_args() {
103
+            if ( property_exists( $this, 'query_args' ) ) {
104
+                return $this->query_args;
105
+            }
106
+
107
+            return array(
108
+                'action' => $this->identifier,
109
+                'nonce'  => wp_create_nonce( $this->identifier ),
110
+            );
111
+        }
112
+
113
+        /**
114
+         * Get query URL
115
+         *
116
+         * @return string
117
+         */
118
+        protected function get_query_url() {
119
+            if ( property_exists( $this, 'query_url' ) ) {
120
+                return $this->query_url;
121
+            }
122
+
123
+            return admin_url( 'admin-ajax.php' );
124
+        }
125
+
126
+        /**
127
+         * Get post args
128
+         *
129
+         * @return array
130
+         */
131
+        protected function get_post_args() {
132
+            if ( property_exists( $this, 'post_args' ) ) {
133
+                return $this->post_args;
134
+            }
135
+
136
+            return array(
137
+                'timeout'   => 0.01,
138
+                'blocking'  => false,
139
+                'body'      => $this->data,
140
+                'cookies'   => $_COOKIE,
141
+                'sslverify' => apply_filters( 'https_local_ssl_verify', false ),
142
+            );
143
+        }
144
+
145
+        /**
146
+         * Maybe handle
147
+         *
148
+         * Check for correct nonce and pass to handler.
149
+         */
150
+        public function maybe_handle() {
151
+            // Don't lock up other requests while processing
152
+            session_write_close();
153
+
154
+            check_ajax_referer( $this->identifier, 'nonce' );
155
+
156
+            $this->handle();
157
+
158
+            wp_die();
159
+        }
160
+
161
+        /**
162
+         * Handle
163
+         *
164
+         * Override this method to perform any actions required
165
+         * during the async request.
166
+         */
167
+        abstract protected function handle();
168
+
169
+    }
170 170
 }
Please login to merge, or discard this patch.
widgets/payment-form.php 1 patch
Indentation   +70 added lines, -70 removed lines patch added patch discarded remove patch
@@ -16,23 +16,23 @@  discard block
 block discarded – undo
16 16
      */
17 17
     public function __construct() {
18 18
 
19
-		$forms = get_posts(
20
-			array(
21
-				'post_type'      => 'wpi_payment_form',
22
-				'orderby'        => 'title',
23
-				'order'          => 'ASC',
24
-				'posts_per_page' => -1,
25
-				'post_status'    => array( 'publish' ),
26
-			)
27
-		);
28
-
29
-		$options = array(
30
-			'' => __('Select a Form','invoicing')
31
-		);
32
-
33
-		foreach( $forms as $form ) {
34
-			$options[ $form->ID ] = $form->post_title;
35
-		}
19
+        $forms = get_posts(
20
+            array(
21
+                'post_type'      => 'wpi_payment_form',
22
+                'orderby'        => 'title',
23
+                'order'          => 'ASC',
24
+                'posts_per_page' => -1,
25
+                'post_status'    => array( 'publish' ),
26
+            )
27
+        );
28
+
29
+        $options = array(
30
+            '' => __('Select a Form','invoicing')
31
+        );
32
+
33
+        foreach( $forms as $form ) {
34
+            $options[ $form->ID ] = $form->post_title;
35
+        }
36 36
 
37 37
         $options = array(
38 38
             'textdomain'    => 'invoicing',
@@ -50,8 +50,8 @@  discard block
 block discarded – undo
50 50
                 'form'            => array(
51 51
                     'title'       => __( 'Payment Form', 'invoicing' ),
52 52
                     'desc'        => __( 'Select your payment form.', 'invoicing' ),
53
-					'type'        => 'select',
54
-					'options'     =>  $options,
53
+                    'type'        => 'select',
54
+                    'options'     =>  $options,
55 55
                     'desc_tip'    => true,
56 56
                     'default'     => '',
57 57
                     'advanced'    => false
@@ -64,59 +64,59 @@  discard block
 block discarded – undo
64 64
         parent::__construct( $options );
65 65
     }
66 66
 
67
-	/**
68
-	 * The Super block output function.
69
-	 *
70
-	 * @param array $args
71
-	 * @param array $widget_args
72
-	 * @param string $content
73
-	 *
74
-	 * @return string
75
-	 */
67
+    /**
68
+     * The Super block output function.
69
+     *
70
+     * @param array $args
71
+     * @param array $widget_args
72
+     * @param string $content
73
+     *
74
+     * @return string
75
+     */
76 76
     public function output( $args = array(), $widget_args = array(), $content = '' ) {
77
-		global $invoicing;
78
-
79
-		// Do we have a payment form?
80
-		if ( empty( $args['form'] ) ) {
81
-			return aui()->alert(
82
-				array(
83
-					'type'    => 'warning',
84
-					'content' => __( 'No payment form selected', 'invoicing' ),
85
-				)
86
-			);
87
-
88
-		}
89
-
90
-		// If yes, ensure that it is published.
91
-		if ( 'publish' != get_post_status( $args['form'] ) ) {
92
-			return aui()->alert(
93
-				array(
94
-					'type'    => 'warning',
95
-					'content' => __( 'This payment form is no longer active', 'invoicing' ),
96
-				)
97
-			);
98
-		}
99
-
100
-		// Get the form elements and items.
101
-		$elements = $invoicing->form_elements->get_form_elements( $args['form'] );
102
-		$items    = $invoicing->form_elements->get_form_items( $args['form'] );
103
-
104
-		ob_start();
105
-		echo "<form class='wpinv_payment_form'>";
106
-		echo "<input type='hidden' name='form_id' value='{$args['form']}'/>";
107
-		wp_nonce_field( 'wpinv_payment_form', 'wpinv_payment_form' );
108
-
109
-		foreach ( $elements as $element ) {
110
-			do_action( 'wpinv_frontend_render_payment_form_element', $element, $items, $args['form'] );
111
-			do_action( "wpinv_frontend_render_payment_form_{$element['type']}", $element, $items, $args['form'] );
112
-		}
113
-
114
-		echo "<div class='wpinv_payment_form_errors alert alert-danger d-none'></div>";
115
-		echo '</form>';
116
-
117
-		$content = ob_get_clean();
77
+        global $invoicing;
78
+
79
+        // Do we have a payment form?
80
+        if ( empty( $args['form'] ) ) {
81
+            return aui()->alert(
82
+                array(
83
+                    'type'    => 'warning',
84
+                    'content' => __( 'No payment form selected', 'invoicing' ),
85
+                )
86
+            );
87
+
88
+        }
89
+
90
+        // If yes, ensure that it is published.
91
+        if ( 'publish' != get_post_status( $args['form'] ) ) {
92
+            return aui()->alert(
93
+                array(
94
+                    'type'    => 'warning',
95
+                    'content' => __( 'This payment form is no longer active', 'invoicing' ),
96
+                )
97
+            );
98
+        }
99
+
100
+        // Get the form elements and items.
101
+        $elements = $invoicing->form_elements->get_form_elements( $args['form'] );
102
+        $items    = $invoicing->form_elements->get_form_items( $args['form'] );
103
+
104
+        ob_start();
105
+        echo "<form class='wpinv_payment_form'>";
106
+        echo "<input type='hidden' name='form_id' value='{$args['form']}'/>";
107
+        wp_nonce_field( 'wpinv_payment_form', 'wpinv_payment_form' );
108
+
109
+        foreach ( $elements as $element ) {
110
+            do_action( 'wpinv_frontend_render_payment_form_element', $element, $items, $args['form'] );
111
+            do_action( "wpinv_frontend_render_payment_form_{$element['type']}", $element, $items, $args['form'] );
112
+        }
113
+
114
+        echo "<div class='wpinv_payment_form_errors alert alert-danger d-none'></div>";
115
+        echo '</form>';
116
+
117
+        $content = ob_get_clean();
118 118
 		
119
-		return str_replace( 'sr-only', '', $content );
119
+        return str_replace( 'sr-only', '', $content );
120 120
 
121 121
     }
122 122
 
Please login to merge, or discard this patch.
includes/class-wpinv.php 1 patch
Indentation   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -171,11 +171,11 @@  discard block
 block discarded – undo
171 171
         require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php' );
172 172
         require_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php' );
173 173
         require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php' );
174
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/checkout.php' );
175
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-history.php' );
176
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php' );
177
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php' );
178
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/subscriptions.php' );
174
+        require_once( WPINV_PLUGIN_DIR . 'widgets/checkout.php' );
175
+        require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-history.php' );
176
+        require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php' );
177
+        require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php' );
178
+        require_once( WPINV_PLUGIN_DIR . 'widgets/subscriptions.php' );
179 179
         require_once( WPINV_PLUGIN_DIR . 'widgets/buy-item.php' );
180 180
         require_once( WPINV_PLUGIN_DIR . 'widgets/payment-form.php' );
181 181
         require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-payment-form-elements.php' );
@@ -491,19 +491,19 @@  discard block
 block discarded – undo
491 491
         require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-bp-core.php' );
492 492
     }
493 493
 
494
-	/**
495
-	 * Register widgets
496
-	 *
497
-	 */
498
-	public function register_widgets() {
499
-		register_widget( "WPInv_Checkout_Widget" );
500
-		register_widget( "WPInv_History_Widget" );
501
-		register_widget( "WPInv_Receipt_Widget" );
502
-		register_widget( "WPInv_Subscriptions_Widget" );
503
-		register_widget( "WPInv_Buy_Item_Widget" );
494
+    /**
495
+     * Register widgets
496
+     *
497
+     */
498
+    public function register_widgets() {
499
+        register_widget( "WPInv_Checkout_Widget" );
500
+        register_widget( "WPInv_History_Widget" );
501
+        register_widget( "WPInv_Receipt_Widget" );
502
+        register_widget( "WPInv_Subscriptions_Widget" );
503
+        register_widget( "WPInv_Buy_Item_Widget" );
504 504
         register_widget( "WPInv_Messages_Widget" );
505 505
         register_widget( 'WPInv_Payment_Form_Widget' );
506
-	}
506
+    }
507 507
     
508 508
     /**
509 509
      * Remove our pages from yoast sitemaps.
Please login to merge, or discard this patch.
includes/admin/admin-meta-boxes.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -36,7 +36,7 @@
 block discarded – undo
36 36
         add_meta_box( 'wpinv-invoice-payment-form-details', __( 'Payment Form Details', 'invoicing' ), 'WPInv_Meta_Box_Payment_Form::output_details', 'wpi_invoice', 'side', 'high' );
37 37
     }
38 38
 
39
-	remove_meta_box('wpseo_meta', 'wpi_invoice', 'normal');
39
+    remove_meta_box('wpseo_meta', 'wpi_invoice', 'normal');
40 40
 }
41 41
 add_action( 'add_meta_boxes', 'wpinv_add_meta_boxes', 30, 2 );
42 42
 
Please login to merge, or discard this patch.
includes/wpinv-user-functions.php 1 patch
Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -159,11 +159,11 @@  discard block
 block discarded – undo
159 159
  */
160 160
 function wpinv_get_capability( $capalibilty = 'manage_invoicing' ) {
161 161
 
162
-	if ( current_user_can( 'manage_options' ) ) {
163
-		return 'manage_options';
164
-	};
162
+    if ( current_user_can( 'manage_options' ) ) {
163
+        return 'manage_options';
164
+    };
165 165
 
166
-	return $capalibilty;
166
+    return $capalibilty;
167 167
 }
168 168
 
169 169
 /**
@@ -185,11 +185,11 @@  discard block
 block discarded – undo
185 185
 function wpinv_create_user( $email ) {
186 186
 
187 187
     // Prepare user values.
188
-	$args = array(
189
-		'user_login' => wpinv_generate_user_name( $email ),
190
-		'user_pass'  => wp_generate_password(),
191
-		'user_email' => $email,
192
-		'role'       => 'subscriber',
188
+    $args = array(
189
+        'user_login' => wpinv_generate_user_name( $email ),
190
+        'user_pass'  => wp_generate_password(),
191
+        'user_email' => $email,
192
+        'role'       => 'subscriber',
193 193
     );
194 194
         
195 195
     return wp_insert_user( $args );
@@ -205,20 +205,20 @@  discard block
 block discarded – undo
205 205
 function wpinv_generate_user_name( $prefix = '' ) {
206 206
 
207 207
     // If prefix is an email, retrieve the part before the email.
208
-	$prefix = strtok( $prefix, '@' );
208
+    $prefix = strtok( $prefix, '@' );
209 209
 
210
-	// Trim to 4 characters max.
211
-	$prefix = sanitize_user( substr( $prefix, 0, 4 ) );
210
+    // Trim to 4 characters max.
211
+    $prefix = sanitize_user( substr( $prefix, 0, 4 ) );
212 212
 
213
-	$illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
214
-	if ( empty( $prefix ) || in_array( strtolower( $prefix ), array_map( 'strtolower', $illegal_logins ), true ) ) {
215
-		$prefix = 'paywp';
216
-	}
213
+    $illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
214
+    if ( empty( $prefix ) || in_array( strtolower( $prefix ), array_map( 'strtolower', $illegal_logins ), true ) ) {
215
+        $prefix = 'paywp';
216
+    }
217 217
 
218
-	$username = $prefix . '_' . zeroise( wp_rand( 0, 9999 ), 4 );
219
-	if ( username_exists( $username ) ) {
220
-		return wpinv_generate_user_name( $username );
221
-	}
218
+    $username = $prefix . '_' . zeroise( wp_rand( 0, 9999 ), 4 );
219
+    if ( username_exists( $username ) ) {
220
+        return wpinv_generate_user_name( $username );
221
+    }
222 222
 
223 223
     return $username;
224 224
 }
Please login to merge, or discard this patch.
includes/class-wpinv-addons.php 1 patch
Indentation   +203 added lines, -203 removed lines patch added patch discarded remove patch
@@ -6,7 +6,7 @@  discard block
 block discarded – undo
6 6
  *
7 7
  */
8 8
 if ( ! defined( 'ABSPATH' ) ) {
9
-	exit;
9
+    exit;
10 10
 }
11 11
 
12 12
 /**
@@ -15,71 +15,71 @@  discard block
 block discarded – undo
15 15
 class WPInv_Admin_Addons extends Ayecode_Addons {
16 16
 
17 17
 
18
-	/**
19
-	 * Get the extensions page tabs.
20
-	 *
21
-	 * @return array of tabs.
22
-	 */
23
-	public function get_tabs(){
24
-		$tabs = array(
25
-			'addons' => __("Addons", "invoicing"),
18
+    /**
19
+     * Get the extensions page tabs.
20
+     *
21
+     * @return array of tabs.
22
+     */
23
+    public function get_tabs(){
24
+        $tabs = array(
25
+            'addons' => __("Addons", "invoicing"),
26 26
             'gateways' => __("Payment Gateways", "invoicing"),
27 27
             'recommended_plugins' => __("Recommended plugins", "invoicing"),
28 28
             'membership' => __("Membership", "invoicing"),
29
-		);
30
-
31
-		return $tabs;
32
-	}
33
-
34
-	/**
35
-	 * Get section content for the addons screen.
36
-	 *
37
-	 * @param  string $section_id
38
-	 *
39
-	 * @return array
40
-	 */
41
-	public function get_section_data( $section_id ) {
42
-		$section      = self::get_tab( $section_id );
43
-		$api_url = "https://wpinvoicing.com/edd-api/v2/products/";
44
-		$section_data = new stdClass();
45
-
46
-		if($section_id=='recommended_plugins'){
47
-			$section_data->products = self::get_recommend_wp_plugins_edd_formatted();
48
-		}
49
-		elseif ( ! empty( $section ) ) {
50
-			if ( false === ( $section_data = get_transient( 'wpi_addons_section_' . $section_id ) ) ) { //@todo restore after testing
51
-			//if ( 1==1) {
52
-
53
-				$query_args = array( 'category' => $section_id, 'number' => 100);
54
-				$query_args = apply_filters('wpeu_edd_api_query_args',$query_args,$api_url,$section_id);
55
-
56
-				$raw_section = wp_safe_remote_get( esc_url_raw( add_query_arg($query_args ,$api_url) ), array( 'user-agent' => 'Invoicing Addons Page','timeout'     => 15, ) );
57
-
58
-				if ( ! is_wp_error( $raw_section ) ) {
59
-					$section_data = json_decode( wp_remote_retrieve_body( $raw_section ) );
60
-
61
-					if ( ! empty( $section_data->products ) ) {
62
-						set_transient( 'wpi_addons_section_' . $section_id, $section_data, DAY_IN_SECONDS );
63
-					}
64
-				}
65
-			}
66
-		}
67
-
68
-		$products = isset($section_data->products) ? $section_data->products : '';
69
-
70
-		return apply_filters( 'wpi_addons_section_data', $products, $section_id );
71
-	}
72
-
73
-	/**
74
-	 * Outputs a button.
75
-	 *ccc
76
-	 * @param string $url
77
-	 * @param string $text
78
-	 * @param string $theme
79
-	 * @param string $plugin
80
-	 */
81
-	public function output_button( $addon ) {
82
-		$current_tab     = empty( $_GET['tab'] ) ? 'addons' : sanitize_title( $_GET['tab'] );
29
+        );
30
+
31
+        return $tabs;
32
+    }
33
+
34
+    /**
35
+     * Get section content for the addons screen.
36
+     *
37
+     * @param  string $section_id
38
+     *
39
+     * @return array
40
+     */
41
+    public function get_section_data( $section_id ) {
42
+        $section      = self::get_tab( $section_id );
43
+        $api_url = "https://wpinvoicing.com/edd-api/v2/products/";
44
+        $section_data = new stdClass();
45
+
46
+        if($section_id=='recommended_plugins'){
47
+            $section_data->products = self::get_recommend_wp_plugins_edd_formatted();
48
+        }
49
+        elseif ( ! empty( $section ) ) {
50
+            if ( false === ( $section_data = get_transient( 'wpi_addons_section_' . $section_id ) ) ) { //@todo restore after testing
51
+            //if ( 1==1) {
52
+
53
+                $query_args = array( 'category' => $section_id, 'number' => 100);
54
+                $query_args = apply_filters('wpeu_edd_api_query_args',$query_args,$api_url,$section_id);
55
+
56
+                $raw_section = wp_safe_remote_get( esc_url_raw( add_query_arg($query_args ,$api_url) ), array( 'user-agent' => 'Invoicing Addons Page','timeout'     => 15, ) );
57
+
58
+                if ( ! is_wp_error( $raw_section ) ) {
59
+                    $section_data = json_decode( wp_remote_retrieve_body( $raw_section ) );
60
+
61
+                    if ( ! empty( $section_data->products ) ) {
62
+                        set_transient( 'wpi_addons_section_' . $section_id, $section_data, DAY_IN_SECONDS );
63
+                    }
64
+                }
65
+            }
66
+        }
67
+
68
+        $products = isset($section_data->products) ? $section_data->products : '';
69
+
70
+        return apply_filters( 'wpi_addons_section_data', $products, $section_id );
71
+    }
72
+
73
+    /**
74
+     * Outputs a button.
75
+     *ccc
76
+     * @param string $url
77
+     * @param string $text
78
+     * @param string $theme
79
+     * @param string $plugin
80
+     */
81
+    public function output_button( $addon ) {
82
+        $current_tab     = empty( $_GET['tab'] ) ? 'addons' : sanitize_title( $_GET['tab'] );
83 83
 //		$button_text = __('Free','invoicing');
84 84
 //		$licensing = false;
85 85
 //		$installed = false;
@@ -91,123 +91,123 @@  discard block
 block discarded – undo
91 91
 //		$install_status = 'get';
92 92
 //		$onclick = '';
93 93
 
94
-		$wp_org_themes = array('supreme-directory','directory-starter');
95
-
96
-		$button_args = array(
97
-			'type' => ($current_tab == 'addons' || $current_tab =='gateways') ? 'addons' : $current_tab,
98
-			'id' => isset($addon->info->id) ? absint($addon->info->id) : '',
99
-			'title' => isset($addon->info->title) ? $addon->info->title : '',
100
-			'button_text' => __('Free','invoicing'),
101
-			'price_text' => __('Free','invoicing'),
102
-			'link' => isset($addon->info->link) ? $addon->info->link : '', // link to product
103
-			'url' => isset($addon->info->link) ? $addon->info->link : '', // button url
104
-			'class' => 'button-primary',
105
-			'install_status' => 'get',
106
-			'installed' => false,
107
-			'price' => '',
108
-			'licensing' => isset($addon->licensing->enabled) && $addon->licensing->enabled ? true : false,
109
-			'license' => isset($addon->licensing->license) && $addon->licensing->license ? $addon->licensing->license : '',
110
-			'onclick' => '',
111
-			'slug' => isset($addon->info->slug) ? $addon->info->slug : '',
112
-			'active' => false,
113
-			'file' => '',
114
-			'update_url' => '',
115
-		);
116
-
117
-		if( ($current_tab == 'addons' || $current_tab =='gateways') && isset($addon->info->id) && $addon->info->id){
118
-			include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
119
-			if(!empty($addon->licensing->edd_slug)){$button_args['slug'] = $addon->licensing->edd_slug;}
120
-			$status = self::install_plugin_install_status($addon);
121
-			$button_args['file'] = isset($status['file']) ? $status['file'] : '';
122
-			if(isset($status['status'])){$button_args['install_status'] = $status['status'];}
123
-			$button_args['update_url'] = "https://wpinvoicing.com";
124
-		}elseif($current_tab == 'themes' && isset($addon->info->id) && $addon->info->id) {
125
-			if(!empty($addon->licensing->edd_slug)){$button_args['slug'] = $addon->licensing->edd_slug;}
126
-			$button_args['installed'] = self::is_theme_installed($addon);
127
-			if(!in_array($button_args['slug'],$wp_org_themes)){
128
-				$button_args['update_url'] = "https://wpinvoicing.com";
129
-			}
130
-		}elseif($current_tab == 'recommended_plugins' && isset($addon->info->slug) && $addon->info->slug){
131
-			include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
132
-			$status = install_plugin_install_status(array("slug"=>$button_args['slug'],"version"=>""));
133
-			$button_args['install_status'] = isset($status['status']) ? $status['status'] : 'install';
134
-			$button_args['file'] = isset($status['file']) ? $status['file'] : '';
135
-		}
136
-
137
-		// set price
138
-		if(isset($addon->pricing) && !empty($addon->pricing)){
139
-			if(is_object($addon->pricing)){
140
-				$prices = (Array)$addon->pricing;
141
-				$button_args['price'] = reset($prices);
142
-			}elseif(isset($addon->pricing)){
143
-				$button_args['price'] = $addon->pricing;
144
-			}
145
-		}
146
-
147
-		// set price text
148
-		if( $button_args['price'] && $button_args['price'] != '0.00' ){
149
-			$button_args['price_text'] = sprintf( __('From: $%d', 'invoicing'), $button_args['price']);
150
-		}
151
-
152
-
153
-		// set if installed
154
-		if(in_array($button_args['install_status'], array('installed','latest_installed','update_available','newer_installed'))){
155
-			$button_args['installed'] = true;
156
-		}
94
+        $wp_org_themes = array('supreme-directory','directory-starter');
95
+
96
+        $button_args = array(
97
+            'type' => ($current_tab == 'addons' || $current_tab =='gateways') ? 'addons' : $current_tab,
98
+            'id' => isset($addon->info->id) ? absint($addon->info->id) : '',
99
+            'title' => isset($addon->info->title) ? $addon->info->title : '',
100
+            'button_text' => __('Free','invoicing'),
101
+            'price_text' => __('Free','invoicing'),
102
+            'link' => isset($addon->info->link) ? $addon->info->link : '', // link to product
103
+            'url' => isset($addon->info->link) ? $addon->info->link : '', // button url
104
+            'class' => 'button-primary',
105
+            'install_status' => 'get',
106
+            'installed' => false,
107
+            'price' => '',
108
+            'licensing' => isset($addon->licensing->enabled) && $addon->licensing->enabled ? true : false,
109
+            'license' => isset($addon->licensing->license) && $addon->licensing->license ? $addon->licensing->license : '',
110
+            'onclick' => '',
111
+            'slug' => isset($addon->info->slug) ? $addon->info->slug : '',
112
+            'active' => false,
113
+            'file' => '',
114
+            'update_url' => '',
115
+        );
116
+
117
+        if( ($current_tab == 'addons' || $current_tab =='gateways') && isset($addon->info->id) && $addon->info->id){
118
+            include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
119
+            if(!empty($addon->licensing->edd_slug)){$button_args['slug'] = $addon->licensing->edd_slug;}
120
+            $status = self::install_plugin_install_status($addon);
121
+            $button_args['file'] = isset($status['file']) ? $status['file'] : '';
122
+            if(isset($status['status'])){$button_args['install_status'] = $status['status'];}
123
+            $button_args['update_url'] = "https://wpinvoicing.com";
124
+        }elseif($current_tab == 'themes' && isset($addon->info->id) && $addon->info->id) {
125
+            if(!empty($addon->licensing->edd_slug)){$button_args['slug'] = $addon->licensing->edd_slug;}
126
+            $button_args['installed'] = self::is_theme_installed($addon);
127
+            if(!in_array($button_args['slug'],$wp_org_themes)){
128
+                $button_args['update_url'] = "https://wpinvoicing.com";
129
+            }
130
+        }elseif($current_tab == 'recommended_plugins' && isset($addon->info->slug) && $addon->info->slug){
131
+            include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
132
+            $status = install_plugin_install_status(array("slug"=>$button_args['slug'],"version"=>""));
133
+            $button_args['install_status'] = isset($status['status']) ? $status['status'] : 'install';
134
+            $button_args['file'] = isset($status['file']) ? $status['file'] : '';
135
+        }
136
+
137
+        // set price
138
+        if(isset($addon->pricing) && !empty($addon->pricing)){
139
+            if(is_object($addon->pricing)){
140
+                $prices = (Array)$addon->pricing;
141
+                $button_args['price'] = reset($prices);
142
+            }elseif(isset($addon->pricing)){
143
+                $button_args['price'] = $addon->pricing;
144
+            }
145
+        }
146
+
147
+        // set price text
148
+        if( $button_args['price'] && $button_args['price'] != '0.00' ){
149
+            $button_args['price_text'] = sprintf( __('From: $%d', 'invoicing'), $button_args['price']);
150
+        }
151
+
152
+
153
+        // set if installed
154
+        if(in_array($button_args['install_status'], array('installed','latest_installed','update_available','newer_installed'))){
155
+            $button_args['installed'] = true;
156
+        }
157 157
 
158 158
 //		print_r($button_args);
159
-		// set if active
160
-		if($button_args['installed'] && ($button_args['file'] || $button_args['type'] == 'themes')){
161
-			if($button_args['type'] != 'themes'){
162
-				$button_args['active'] = is_plugin_active($button_args['file']);
163
-			}else{
164
-				$button_args['active'] = self::is_theme_active($addon);
165
-			}
166
-		}
167
-
168
-		// set button text and class
169
-		if($button_args['active']){
170
-			$button_args['button_text'] = __('Active','invoicing');
171
-			$button_args['class'] = ' button-secondary disabled ';
172
-		}elseif($button_args['installed']){
173
-			$button_args['button_text'] = __('Activate','invoicing');
174
-
175
-			if($button_args['type'] != 'themes'){
176
-				if ( current_user_can( 'manage_options' ) ) {
177
-					$button_args['url'] = wp_nonce_url(admin_url('plugins.php?action=activate&plugin='.$button_args['file']), 'activate-plugin_' . $button_args['file']);
178
-				}else{
179
-					$button_args['url'] = '#';
180
-				}
181
-			}else{
182
-				if ( current_user_can( 'switch_themes' ) ) {
183
-					$button_args['url'] = self::get_theme_activation_url($addon);
184
-				}else{
185
-					$button_args['url'] = '#';
186
-				}
187
-			}
188
-
189
-		}else{
190
-			if($button_args['type'] == 'recommended_plugins'){
191
-				$button_args['button_text'] = __('Install','invoicing');
192
-			}else{
193
-				$button_args['button_text'] = __('Get it','invoicing');
194
-
195
-				/*if($button_args['type'] == 'themes' && in_array($button_args['slug'],$wp_org_themes) ){
159
+        // set if active
160
+        if($button_args['installed'] && ($button_args['file'] || $button_args['type'] == 'themes')){
161
+            if($button_args['type'] != 'themes'){
162
+                $button_args['active'] = is_plugin_active($button_args['file']);
163
+            }else{
164
+                $button_args['active'] = self::is_theme_active($addon);
165
+            }
166
+        }
167
+
168
+        // set button text and class
169
+        if($button_args['active']){
170
+            $button_args['button_text'] = __('Active','invoicing');
171
+            $button_args['class'] = ' button-secondary disabled ';
172
+        }elseif($button_args['installed']){
173
+            $button_args['button_text'] = __('Activate','invoicing');
174
+
175
+            if($button_args['type'] != 'themes'){
176
+                if ( current_user_can( 'manage_options' ) ) {
177
+                    $button_args['url'] = wp_nonce_url(admin_url('plugins.php?action=activate&plugin='.$button_args['file']), 'activate-plugin_' . $button_args['file']);
178
+                }else{
179
+                    $button_args['url'] = '#';
180
+                }
181
+            }else{
182
+                if ( current_user_can( 'switch_themes' ) ) {
183
+                    $button_args['url'] = self::get_theme_activation_url($addon);
184
+                }else{
185
+                    $button_args['url'] = '#';
186
+                }
187
+            }
188
+
189
+        }else{
190
+            if($button_args['type'] == 'recommended_plugins'){
191
+                $button_args['button_text'] = __('Install','invoicing');
192
+            }else{
193
+                $button_args['button_text'] = __('Get it','invoicing');
194
+
195
+                /*if($button_args['type'] == 'themes' && in_array($button_args['slug'],$wp_org_themes) ){
196 196
 					$button_args['button_text'] = __('Install','invoicing');
197 197
 					$button_args['url'] = self::get_theme_install_url($button_args['slug']);
198 198
 					$button_args['onclick'] = 'gd_set_button_installing(this);';
199 199
 				}*/
200 200
 
201
-			}
202
-		}
201
+            }
202
+        }
203 203
 
204 204
 		
205
-		// filter the button arguments
206
-		$button_args = apply_filters('edd_api_button_args',$button_args);
205
+        // filter the button arguments
206
+        $button_args = apply_filters('edd_api_button_args',$button_args);
207 207
 //		print_r($button_args);
208
-		// set price text
209
-		if(isset($button_args['price_text'])){
210
-			?>
208
+        // set price text
209
+        if(isset($button_args['price_text'])){
210
+            ?>
211 211
 			<a
212 212
 				target="_blank"
213 213
 				class="addons-price-text"
@@ -215,15 +215,15 @@  discard block
 block discarded – undo
215 215
 				<?php echo esc_html( $button_args['price_text'] ); ?>
216 216
 			</a>
217 217
 			<?php
218
-		}
218
+        }
219 219
 
220 220
 
221
-		$target = '';
222
-		if ( ! empty( $button_args['url'] ) ) {
223
-			$target = strpos($button_args['url'], get_site_url()) !== false ? '' : ' target="_blank" ';
224
-		}
221
+        $target = '';
222
+        if ( ! empty( $button_args['url'] ) ) {
223
+            $target = strpos($button_args['url'], get_site_url()) !== false ? '' : ' target="_blank" ';
224
+        }
225 225
 
226
-		?>
226
+        ?>
227 227
 		<a
228 228
 			data-licence="<?php echo esc_attr($button_args['license']);?>"
229 229
 			data-licensing="<?php echo $button_args['licensing'] ? 1 : 0;?>"
@@ -246,33 +246,33 @@  discard block
 block discarded – undo
246 246
 		<?php
247 247
 
248 248
 
249
-	}
250
-
251
-
252
-	/**
253
-	 * Handles output of the addons page in admin.
254
-	 */
255
-	public function output() {
256
-		$tabs            = self::get_tabs();
257
-		$sections        = self::get_sections();
258
-		$theme           = wp_get_theme();
259
-		$section_keys    = array_keys( $sections );
260
-		$current_section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : current( $section_keys );
261
-		$current_tab     = empty( $_GET['tab'] ) ? 'addons' : sanitize_title( $_GET['tab'] );
262
-		include_once( WPINV_PLUGIN_DIR . '/includes/admin/html-admin-page-addons.php' );
263
-	}
264
-
265
-	/**
266
-	 * A list of recommended wp.org plugins.
267
-	 * @return array
268
-	 */
269
-	public function get_recommend_wp_plugins(){
270
-		$plugins = array(
249
+    }
250
+
251
+
252
+    /**
253
+     * Handles output of the addons page in admin.
254
+     */
255
+    public function output() {
256
+        $tabs            = self::get_tabs();
257
+        $sections        = self::get_sections();
258
+        $theme           = wp_get_theme();
259
+        $section_keys    = array_keys( $sections );
260
+        $current_section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : current( $section_keys );
261
+        $current_tab     = empty( $_GET['tab'] ) ? 'addons' : sanitize_title( $_GET['tab'] );
262
+        include_once( WPINV_PLUGIN_DIR . '/includes/admin/html-admin-page-addons.php' );
263
+    }
264
+
265
+    /**
266
+     * A list of recommended wp.org plugins.
267
+     * @return array
268
+     */
269
+    public function get_recommend_wp_plugins(){
270
+        $plugins = array(
271 271
             'invoicing-quotes' => array(
272 272
                 'url'   => 'https://wordpress.org/plugins/invoicing-quotes/',
273 273
                 'slug'   => 'invoicing-quotes',
274
-				'name'   => 'Quotes',
275
-				'thumbnail'  => 'https://ps.w.org/invoicing-quotes/assets/banner-772x250.jpg',
274
+                'name'   => 'Quotes',
275
+                'thumbnail'  => 'https://ps.w.org/invoicing-quotes/assets/banner-772x250.jpg',
276 276
                 'desc'   => __('Allows you to create quotes, send them to clients and convert them to Invoices when accepted by the customer.','invoicing'),
277 277
             ),
278 278
             'geodirectory' => array(
@@ -287,8 +287,8 @@  discard block
 block discarded – undo
287 287
                 'name'   => 'UsersWP',
288 288
                 'desc'   => __('Allow frontend user login and registration as well as have slick profile pages.','invoicing'),
289 289
             ),
290
-		);
290
+        );
291 291
 
292
-		return $plugins;
293
-	}
292
+        return $plugins;
293
+    }
294 294
 }
Please login to merge, or discard this patch.