Passed
Push — master ( 551ced...c681ac )
by Daniel
03:38 queued 01:44
created
classes/class-algolia-woo-indexer.php 2 patches
Indentation   +594 added lines, -594 removed lines patch added patch discarded remove patch
@@ -22,7 +22,7 @@  discard block
 block discarded – undo
22 22
  * Include plugin file if function is_plugin_active does not exist
23 23
  */
24 24
 if (! function_exists('is_plugin_active')) {
25
-    require_once(ABSPATH . '/wp-admin/includes/plugin.php');
25
+	require_once(ABSPATH . '/wp-admin/includes/plugin.php');
26 26
 }
27 27
 
28 28
 /**
@@ -45,356 +45,356 @@  discard block
 block discarded – undo
45 45
 define('ALGOLIA_API_KEY', '_admin_api_key');
46 46
 
47 47
 if (! class_exists('Algolia_Woo_Indexer')) {
48
-    /**
49
-     * Algolia WooIndexer main class
50
-     */
51
-    class Algolia_Woo_Indexer
52
-    {
53
-        const PLUGIN_NAME      = 'Algolia Woo Indexer';
54
-        const PLUGIN_TRANSIENT = 'algowoo-plugin-notice';
55
-
56
-        /**
57
-         * Class instance
58
-         *
59
-         * @var object
60
-         */
61
-        private static $instance;
62
-
63
-        /**
64
-         * The plugin URL
65
-         *
66
-         * @var string
67
-         */
68
-        private static $plugin_url = '';
69
-
70
-        /**
71
-         * The Algolia instance
72
-         *
73
-         * @var \Algolia\AlgoliaSearch\SearchClient
74
-         */
75
-        private static $algolia = null;
76
-
77
-        /**
78
-         * Class constructor
79
-         *
80
-         * @return void
81
-         */
82
-        public function __construct()
83
-        {
84
-            $this->init();
85
-        }
86
-
87
-        /**
88
-         * Setup sections and fields to store and retrieve values from Settings API
89
-         *
90
-         * @return void
91
-         */
92
-        public static function setup_settings_sections()
93
-        {
94
-            /**
95
-            * Setup arguments for settings sections and fields
96
-            *
97
-            * @see https://developer.wordpress.org/reference/functions/register_setting/
98
-            */
99
-            if (is_admin()) {
100
-                $arguments = array(
101
-                    'type'              => 'string',
102
-                    'sanitize_callback' => 'settings_fields_validate_options',
103
-                    'default'           => null,
104
-                );
105
-                register_setting('algolia_woo_options', 'algolia_woo_options', $arguments);
106
-
107
-                /**
108
-                 * Make sure we reference the instance of the current class by using self::get_instance()
109
-                 * This way we can setup the correct callback function for add_settings_section and add_settings_field
110
-                 */
111
-                $algowooindexer = self::get_instance();
112
-
113
-                /**
114
-                 * Add our necessary settings sections and fields
115
-                 */
116
-                add_settings_section(
117
-                    'algolia_woo_indexer_main',
118
-                    esc_html__('Algolia Woo Plugin Settings', 'algolia-woo-indexer'),
119
-                    array( $algowooindexer, 'algolia_woo_indexer_section_text' ),
120
-                    'algolia_woo_indexer'
121
-                );
122
-                add_settings_field(
123
-                    'algolia_woo_indexer_application_id',
124
-                    esc_html__('Application ID', 'algolia-woo-indexer'),
125
-                    array( $algowooindexer, 'algolia_woo_indexer_application_id_output' ),
126
-                    'algolia_woo_indexer',
127
-                    'algolia_woo_indexer_main'
128
-                );
129
-                add_settings_field(
130
-                    'algolia_woo_indexer_admin_api_key',
131
-                    esc_html__('Admin API Key', 'algolia-woo-indexer'),
132
-                    array( $algowooindexer, 'algolia_woo_indexer_admin_api_key_output' ),
133
-                    'algolia_woo_indexer',
134
-                    'algolia_woo_indexer_main'
135
-                );
136
-                add_settings_field(
137
-                    'algolia_woo_indexer_index_name',
138
-                    esc_html__('Index name (will be created if not existing)', 'algolia-woo-indexer'),
139
-                    array( $algowooindexer, 'algolia_woo_indexer_index_name_output' ),
140
-                    'algolia_woo_indexer',
141
-                    'algolia_woo_indexer_main'
142
-                );
143
-                add_settings_field(
144
-                    'algolia_woo_indexer_automatically_send_new_products',
145
-                    esc_html__('Automatically index new products', 'algolia-woo-indexer'),
146
-                    array( $algowooindexer, 'algolia_woo_indexer_automatically_send_new_products_output' ),
147
-                    'algolia_woo_indexer',
148
-                    'algolia_woo_indexer_main'
149
-                );
150
-            }
151
-        }
152
-
153
-        /**
154
-         * Output for admin API key field
155
-         *
156
-         * @see https://developer.wordpress.org/reference/functions/wp_nonce_field/
157
-         *
158
-         * @return void
159
-         */
160
-        public static function algolia_woo_indexer_admin_api_key_output()
161
-        {
162
-            $api_key = get_option(ALGOWOO_DB_OPTION . ALGOLIA_API_KEY);
163
-            $api_key = is_string($api_key) ? $api_key : CHANGE_ME;
164
-
165
-            wp_nonce_field('algolia_woo_indexer_admin_api_nonce_action', 'algolia_woo_indexer_admin_api_nonce_name');
166
-
167
-            echo "<input id='algolia_woo_indexer_admin_api_key' name='algolia_woo_indexer_admin_api_key[key]'
48
+	/**
49
+	 * Algolia WooIndexer main class
50
+	 */
51
+	class Algolia_Woo_Indexer
52
+	{
53
+		const PLUGIN_NAME      = 'Algolia Woo Indexer';
54
+		const PLUGIN_TRANSIENT = 'algowoo-plugin-notice';
55
+
56
+		/**
57
+		 * Class instance
58
+		 *
59
+		 * @var object
60
+		 */
61
+		private static $instance;
62
+
63
+		/**
64
+		 * The plugin URL
65
+		 *
66
+		 * @var string
67
+		 */
68
+		private static $plugin_url = '';
69
+
70
+		/**
71
+		 * The Algolia instance
72
+		 *
73
+		 * @var \Algolia\AlgoliaSearch\SearchClient
74
+		 */
75
+		private static $algolia = null;
76
+
77
+		/**
78
+		 * Class constructor
79
+		 *
80
+		 * @return void
81
+		 */
82
+		public function __construct()
83
+		{
84
+			$this->init();
85
+		}
86
+
87
+		/**
88
+		 * Setup sections and fields to store and retrieve values from Settings API
89
+		 *
90
+		 * @return void
91
+		 */
92
+		public static function setup_settings_sections()
93
+		{
94
+			/**
95
+			 * Setup arguments for settings sections and fields
96
+			 *
97
+			 * @see https://developer.wordpress.org/reference/functions/register_setting/
98
+			 */
99
+			if (is_admin()) {
100
+				$arguments = array(
101
+					'type'              => 'string',
102
+					'sanitize_callback' => 'settings_fields_validate_options',
103
+					'default'           => null,
104
+				);
105
+				register_setting('algolia_woo_options', 'algolia_woo_options', $arguments);
106
+
107
+				/**
108
+				 * Make sure we reference the instance of the current class by using self::get_instance()
109
+				 * This way we can setup the correct callback function for add_settings_section and add_settings_field
110
+				 */
111
+				$algowooindexer = self::get_instance();
112
+
113
+				/**
114
+				 * Add our necessary settings sections and fields
115
+				 */
116
+				add_settings_section(
117
+					'algolia_woo_indexer_main',
118
+					esc_html__('Algolia Woo Plugin Settings', 'algolia-woo-indexer'),
119
+					array( $algowooindexer, 'algolia_woo_indexer_section_text' ),
120
+					'algolia_woo_indexer'
121
+				);
122
+				add_settings_field(
123
+					'algolia_woo_indexer_application_id',
124
+					esc_html__('Application ID', 'algolia-woo-indexer'),
125
+					array( $algowooindexer, 'algolia_woo_indexer_application_id_output' ),
126
+					'algolia_woo_indexer',
127
+					'algolia_woo_indexer_main'
128
+				);
129
+				add_settings_field(
130
+					'algolia_woo_indexer_admin_api_key',
131
+					esc_html__('Admin API Key', 'algolia-woo-indexer'),
132
+					array( $algowooindexer, 'algolia_woo_indexer_admin_api_key_output' ),
133
+					'algolia_woo_indexer',
134
+					'algolia_woo_indexer_main'
135
+				);
136
+				add_settings_field(
137
+					'algolia_woo_indexer_index_name',
138
+					esc_html__('Index name (will be created if not existing)', 'algolia-woo-indexer'),
139
+					array( $algowooindexer, 'algolia_woo_indexer_index_name_output' ),
140
+					'algolia_woo_indexer',
141
+					'algolia_woo_indexer_main'
142
+				);
143
+				add_settings_field(
144
+					'algolia_woo_indexer_automatically_send_new_products',
145
+					esc_html__('Automatically index new products', 'algolia-woo-indexer'),
146
+					array( $algowooindexer, 'algolia_woo_indexer_automatically_send_new_products_output' ),
147
+					'algolia_woo_indexer',
148
+					'algolia_woo_indexer_main'
149
+				);
150
+			}
151
+		}
152
+
153
+		/**
154
+		 * Output for admin API key field
155
+		 *
156
+		 * @see https://developer.wordpress.org/reference/functions/wp_nonce_field/
157
+		 *
158
+		 * @return void
159
+		 */
160
+		public static function algolia_woo_indexer_admin_api_key_output()
161
+		{
162
+			$api_key = get_option(ALGOWOO_DB_OPTION . ALGOLIA_API_KEY);
163
+			$api_key = is_string($api_key) ? $api_key : CHANGE_ME;
164
+
165
+			wp_nonce_field('algolia_woo_indexer_admin_api_nonce_action', 'algolia_woo_indexer_admin_api_nonce_name');
166
+
167
+			echo "<input id='algolia_woo_indexer_admin_api_key' name='algolia_woo_indexer_admin_api_key[key]'
168 168
 				type='text' value='" . esc_attr($api_key) . "' />";
169
-        }
170
-
171
-        /**
172
-         * Output for application ID field
173
-         *
174
-         * @return void
175
-         */
176
-        public static function algolia_woo_indexer_application_id_output()
177
-        {
178
-            $application_id = get_option(ALGOWOO_DB_OPTION . ALGOLIA_APPLICATION_ID);
179
-            $application_id = is_string($application_id) ? $application_id : CHANGE_ME;
180
-
181
-            echo "<input id='algolia_woo_indexer_application_id' name='algolia_woo_indexer_application_id[id]'
169
+		}
170
+
171
+		/**
172
+		 * Output for application ID field
173
+		 *
174
+		 * @return void
175
+		 */
176
+		public static function algolia_woo_indexer_application_id_output()
177
+		{
178
+			$application_id = get_option(ALGOWOO_DB_OPTION . ALGOLIA_APPLICATION_ID);
179
+			$application_id = is_string($application_id) ? $application_id : CHANGE_ME;
180
+
181
+			echo "<input id='algolia_woo_indexer_application_id' name='algolia_woo_indexer_application_id[id]'
182 182
 				type='text' value='" . esc_attr($application_id) . "' />";
183
-        }
184
-
185
-        /**
186
-         * Output for index name field
187
-         *
188
-         * @return void
189
-         */
190
-        public static function algolia_woo_indexer_index_name_output()
191
-        {
192
-            $index_name = get_option(ALGOWOO_DB_OPTION . INDEX_NAME);
193
-            $index_name = is_string($index_name) ? $index_name : CHANGE_ME;
194
-
195
-            echo "<input id='algolia_woo_indexer_index_name' name='algolia_woo_indexer_index_name[name]'
183
+		}
184
+
185
+		/**
186
+		 * Output for index name field
187
+		 *
188
+		 * @return void
189
+		 */
190
+		public static function algolia_woo_indexer_index_name_output()
191
+		{
192
+			$index_name = get_option(ALGOWOO_DB_OPTION . INDEX_NAME);
193
+			$index_name = is_string($index_name) ? $index_name : CHANGE_ME;
194
+
195
+			echo "<input id='algolia_woo_indexer_index_name' name='algolia_woo_indexer_index_name[name]'
196 196
 				type='text' value='" . esc_attr($index_name) . "' />";
197
-        }
197
+		}
198 198
         
199
-        /**
200
-         * Output for checkbox to check if we automatically send new products to Algolia
201
-         *
202
-         * @return void
203
-         */
204
-        public static function algolia_woo_indexer_automatically_send_new_products_output()
205
-        {
206
-            /**
207
-             * Sanitization is not really needed as the variable is not directly echoed
208
-             * But I have still done it to be 100% safe
209
-             */
210
-            $automatically_send_new_products = get_option(ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS);
211
-            $automatically_send_new_products = (! empty($automatically_send_new_products)) ? 1 : 0; ?>
199
+		/**
200
+		 * Output for checkbox to check if we automatically send new products to Algolia
201
+		 *
202
+		 * @return void
203
+		 */
204
+		public static function algolia_woo_indexer_automatically_send_new_products_output()
205
+		{
206
+			/**
207
+			 * Sanitization is not really needed as the variable is not directly echoed
208
+			 * But I have still done it to be 100% safe
209
+			 */
210
+			$automatically_send_new_products = get_option(ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS);
211
+			$automatically_send_new_products = (! empty($automatically_send_new_products)) ? 1 : 0; ?>
212 212
 			<input id="algolia_woo_indexer_automatically_send_new_products" name="algolia_woo_indexer_automatically_send_new_products[checked]"
213 213
 			type="checkbox" <?php checked(1, $automatically_send_new_products); ?> />
214 214
 			<?php
215
-        }
216
-
217
-        /**
218
-         * Section text for plugin settings section text
219
-         *
220
-         * @return void
221
-         */
222
-        public static function algolia_woo_indexer_section_text()
223
-        {
224
-            echo esc_html__('Enter your settings here', 'algolia-woo-indexer');
225
-        }
226
-
227
-        /**
228
-         * Check if we are going to send products by verifying send products nonce
229
-         *
230
-         * @return void
231
-         */
232
-        public static function maybe_send_products()
233
-        {
234
-            if (true === Algolia_Verify_Nonces::verify_send_products_nonce()) {
235
-                self::send_products_to_algolia();
236
-            }
237
-        }
238
-
239
-        /**
240
-         * Initialize class, setup settings sections and fields
241
-         *
242
-         * @return void
243
-         */
244
-        public static function init()
245
-        {
246
-
247
-            /**
248
-             * Fetch the option to see if we are going to automatically send new products
249
-             */
250
-            $automatically_send_new_products = get_option(ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS);
251
-
252
-            /**
253
-             * Check that we have the minimum versions required and all of the required PHP extensions
254
-             */
255
-            Algolia_Check_Requirements::check_unmet_requirements();
256
-
257
-            if (! Algolia_Check_Requirements::algolia_wp_version_check() || ! Algolia_Check_Requirements::algolia_php_version_check()) {
258
-                add_action(
259
-                    'admin_notices',
260
-                    function () {
261
-                        echo '<div class="error notice">
215
+		}
216
+
217
+		/**
218
+		 * Section text for plugin settings section text
219
+		 *
220
+		 * @return void
221
+		 */
222
+		public static function algolia_woo_indexer_section_text()
223
+		{
224
+			echo esc_html__('Enter your settings here', 'algolia-woo-indexer');
225
+		}
226
+
227
+		/**
228
+		 * Check if we are going to send products by verifying send products nonce
229
+		 *
230
+		 * @return void
231
+		 */
232
+		public static function maybe_send_products()
233
+		{
234
+			if (true === Algolia_Verify_Nonces::verify_send_products_nonce()) {
235
+				self::send_products_to_algolia();
236
+			}
237
+		}
238
+
239
+		/**
240
+		 * Initialize class, setup settings sections and fields
241
+		 *
242
+		 * @return void
243
+		 */
244
+		public static function init()
245
+		{
246
+
247
+			/**
248
+			 * Fetch the option to see if we are going to automatically send new products
249
+			 */
250
+			$automatically_send_new_products = get_option(ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS);
251
+
252
+			/**
253
+			 * Check that we have the minimum versions required and all of the required PHP extensions
254
+			 */
255
+			Algolia_Check_Requirements::check_unmet_requirements();
256
+
257
+			if (! Algolia_Check_Requirements::algolia_wp_version_check() || ! Algolia_Check_Requirements::algolia_php_version_check()) {
258
+				add_action(
259
+					'admin_notices',
260
+					function () {
261
+						echo '<div class="error notice">
262 262
                                   <p>' . esc_html__('Please check the server requirements for Algolia Woo Indexer. <br/> It requires minimum PHP version 7.2 and WordPress version 5.0', 'algolia-woo-indexer') . '</p>
263 263
                                 </div>';
264
-                    }
265
-                );
266
-            }
267
-
268
-            $ob_class = get_called_class();
269
-
270
-            /**
271
-             * Setup translations
272
-             */
273
-            add_action('plugins_loaded', array( $ob_class, 'load_textdomain' ));
274
-
275
-            /**
276
-             * Add actions to setup admin menu
277
-             */
278
-            if (is_admin()) {
279
-                add_action('admin_menu', array( $ob_class, 'admin_menu' ));
280
-                add_action('admin_init', array( $ob_class, 'setup_settings_sections' ));
281
-                add_action('admin_init', array( $ob_class, 'update_settings_options' ));
282
-                add_action('admin_init', array( $ob_class, 'maybe_send_products' ));
283
-
284
-                /**
285
-                 * Register hook to automatically send new products if the option is set
286
-                 */
287
-
288
-                if ('1' === $automatically_send_new_products) {
289
-                    add_action('save_post', array( $ob_class, 'send_new_product_to_algolia' ), 10, 3);
290
-                }
291
-
292
-                self::$plugin_url = admin_url('options-general.php?page=algolia-woo-indexer-settings');
293
-
294
-                if (! is_plugin_active('woocommerce/woocommerce.php')) {
295
-                    add_action(
296
-                        'admin_notices',
297
-                        function () {
298
-                            echo '<div class="error notice">
264
+					}
265
+				);
266
+			}
267
+
268
+			$ob_class = get_called_class();
269
+
270
+			/**
271
+			 * Setup translations
272
+			 */
273
+			add_action('plugins_loaded', array( $ob_class, 'load_textdomain' ));
274
+
275
+			/**
276
+			 * Add actions to setup admin menu
277
+			 */
278
+			if (is_admin()) {
279
+				add_action('admin_menu', array( $ob_class, 'admin_menu' ));
280
+				add_action('admin_init', array( $ob_class, 'setup_settings_sections' ));
281
+				add_action('admin_init', array( $ob_class, 'update_settings_options' ));
282
+				add_action('admin_init', array( $ob_class, 'maybe_send_products' ));
283
+
284
+				/**
285
+				 * Register hook to automatically send new products if the option is set
286
+				 */
287
+
288
+				if ('1' === $automatically_send_new_products) {
289
+					add_action('save_post', array( $ob_class, 'send_new_product_to_algolia' ), 10, 3);
290
+				}
291
+
292
+				self::$plugin_url = admin_url('options-general.php?page=algolia-woo-indexer-settings');
293
+
294
+				if (! is_plugin_active('woocommerce/woocommerce.php')) {
295
+					add_action(
296
+						'admin_notices',
297
+						function () {
298
+							echo '<div class="error notice">
299 299
 								  <p>' . esc_html__('WooCommerce plugin must be enabled for Algolia Woo Indexer to work.', 'algolia-woo-indexer') . '</p>
300 300
 								</div>';
301
-                        }
302
-                    );
303
-                }
304
-            }
305
-        }
306
-
307
-        /**
308
-         * Send a single product to Algolia once a new product has been published
309
-         *
310
-         * @param int   $post_id ID of the product.
311
-         * @param array $post Post array.
312
-         *
313
-         * @return void
314
-         */
315
-        public static function send_new_product_to_algolia($post_id, $post)
316
-        {
317
-            if ('publish' !== $post->post_status || 'product' !== $post->post_type) {
318
-                return;
319
-            }
320
-            self::send_products_to_algolia($post_id);
321
-        }
322
-
323
-        /**
324
-         * Verify nonces before we update options and settings
325
-         * Also retrieve the value from the send_products_to_algolia hidden field to check if we are sending products to Algolia
326
-         *
327
-         * @return void
328
-         */
329
-        public static function update_settings_options()
330
-        {
331
-            Algolia_Verify_Nonces::verify_settings_nonce();
332
-
333
-            /**
334
-             * Do not proceed if we are going to send products
335
-             */
336
-            if (true === Algolia_Verify_Nonces::verify_send_products_nonce()) {
337
-                return;
338
-            }
339
-
340
-            /**
341
-             * Filter the application id, api key, index name and verify that the input is an array
342
-             *
343
-             * @see https://www.php.net/manual/en/function.filter-input.php
344
-             */
345
-            $post_application_id             = filter_input(INPUT_POST, 'algolia_woo_indexer_application_id', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
346
-            $post_api_key                    = filter_input(INPUT_POST, 'algolia_woo_indexer_admin_api_key', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
347
-            $post_index_name                 = filter_input(INPUT_POST, 'algolia_woo_indexer_index_name', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
348
-            $automatically_send_new_products = filter_input(INPUT_POST, 'algolia_woo_indexer_automatically_send_new_products', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
349
-
350
-            /**
351
-             * Properly sanitize text fields before updating data
352
-             *
353
-             * @see https://developer.wordpress.org/reference/functions/sanitize_text_field/
354
-             */
355
-            $filtered_application_id = sanitize_text_field($post_application_id['id']);
356
-            $filtered_api_key        = sanitize_text_field($post_api_key['key']);
357
-            $filtered_index_name     = sanitize_text_field($post_index_name['name']);
358
-
359
-            /**
360
-             * Sanitizing by setting the value to either 1 or 0
361
-             */
362
-            $filtered_automatically_send_new_products = (! empty($automatically_send_new_products)) ? 1 : 0;
363
-
364
-            /**
365
-             * Values have been filtered and sanitized
366
-             * Check if set and not empty and update the database
367
-             *
368
-             * @see https://developer.wordpress.org/reference/functions/update_option/
369
-             */
370
-            if (isset($filtered_application_id) && (! empty($filtered_application_id))) {
371
-                update_option(
372
-                    ALGOWOO_DB_OPTION . ALGOLIA_APPLICATION_ID,
373
-                    $filtered_application_id
374
-                );
375
-            }
376
-
377
-            if (isset($filtered_api_key) && (! empty($filtered_api_key))) {
378
-                update_option(
379
-                    ALGOWOO_DB_OPTION . ALGOLIA_API_KEY,
380
-                    $filtered_api_key
381
-                );
382
-            }
383
-
384
-            if (isset($filtered_index_name) && (! empty($filtered_index_name))) {
385
-                update_option(
386
-                    ALGOWOO_DB_OPTION . INDEX_NAME,
387
-                    $filtered_index_name
388
-                );
389
-            }
390
-
391
-            if (isset($filtered_automatically_send_new_products) && (! empty($filtered_automatically_send_new_products))) {
392
-                update_option(
393
-                    ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS,
394
-                    $filtered_automatically_send_new_products
395
-                );
396
-            }
397
-        }
301
+						}
302
+					);
303
+				}
304
+			}
305
+		}
306
+
307
+		/**
308
+		 * Send a single product to Algolia once a new product has been published
309
+		 *
310
+		 * @param int   $post_id ID of the product.
311
+		 * @param array $post Post array.
312
+		 *
313
+		 * @return void
314
+		 */
315
+		public static function send_new_product_to_algolia($post_id, $post)
316
+		{
317
+			if ('publish' !== $post->post_status || 'product' !== $post->post_type) {
318
+				return;
319
+			}
320
+			self::send_products_to_algolia($post_id);
321
+		}
322
+
323
+		/**
324
+		 * Verify nonces before we update options and settings
325
+		 * Also retrieve the value from the send_products_to_algolia hidden field to check if we are sending products to Algolia
326
+		 *
327
+		 * @return void
328
+		 */
329
+		public static function update_settings_options()
330
+		{
331
+			Algolia_Verify_Nonces::verify_settings_nonce();
332
+
333
+			/**
334
+			 * Do not proceed if we are going to send products
335
+			 */
336
+			if (true === Algolia_Verify_Nonces::verify_send_products_nonce()) {
337
+				return;
338
+			}
339
+
340
+			/**
341
+			 * Filter the application id, api key, index name and verify that the input is an array
342
+			 *
343
+			 * @see https://www.php.net/manual/en/function.filter-input.php
344
+			 */
345
+			$post_application_id             = filter_input(INPUT_POST, 'algolia_woo_indexer_application_id', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
346
+			$post_api_key                    = filter_input(INPUT_POST, 'algolia_woo_indexer_admin_api_key', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
347
+			$post_index_name                 = filter_input(INPUT_POST, 'algolia_woo_indexer_index_name', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
348
+			$automatically_send_new_products = filter_input(INPUT_POST, 'algolia_woo_indexer_automatically_send_new_products', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
349
+
350
+			/**
351
+			 * Properly sanitize text fields before updating data
352
+			 *
353
+			 * @see https://developer.wordpress.org/reference/functions/sanitize_text_field/
354
+			 */
355
+			$filtered_application_id = sanitize_text_field($post_application_id['id']);
356
+			$filtered_api_key        = sanitize_text_field($post_api_key['key']);
357
+			$filtered_index_name     = sanitize_text_field($post_index_name['name']);
358
+
359
+			/**
360
+			 * Sanitizing by setting the value to either 1 or 0
361
+			 */
362
+			$filtered_automatically_send_new_products = (! empty($automatically_send_new_products)) ? 1 : 0;
363
+
364
+			/**
365
+			 * Values have been filtered and sanitized
366
+			 * Check if set and not empty and update the database
367
+			 *
368
+			 * @see https://developer.wordpress.org/reference/functions/update_option/
369
+			 */
370
+			if (isset($filtered_application_id) && (! empty($filtered_application_id))) {
371
+				update_option(
372
+					ALGOWOO_DB_OPTION . ALGOLIA_APPLICATION_ID,
373
+					$filtered_application_id
374
+				);
375
+			}
376
+
377
+			if (isset($filtered_api_key) && (! empty($filtered_api_key))) {
378
+				update_option(
379
+					ALGOWOO_DB_OPTION . ALGOLIA_API_KEY,
380
+					$filtered_api_key
381
+				);
382
+			}
383
+
384
+			if (isset($filtered_index_name) && (! empty($filtered_index_name))) {
385
+				update_option(
386
+					ALGOWOO_DB_OPTION . INDEX_NAME,
387
+					$filtered_index_name
388
+				);
389
+			}
390
+
391
+			if (isset($filtered_automatically_send_new_products) && (! empty($filtered_automatically_send_new_products))) {
392
+				update_option(
393
+					ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS,
394
+					$filtered_automatically_send_new_products
395
+				);
396
+			}
397
+		}
398 398
 
399 399
 		/**
400 400
 		 * Check if values are empty and display error notice if not all values have been set
@@ -407,219 +407,219 @@  discard block
 block discarded – undo
407 407
 		public static function check_algolia_input_values($algolia_application_id, $algolia_api_key, $algolia_index_name )
408 408
 		{	
409 409
 			if (empty($algolia_application_id) || empty($algolia_api_key || empty($algolia_index_name))) {
410
-                add_action(
411
-                    'admin_notices',
412
-                    function () {
413
-                        echo '<div class="error notice">
410
+				add_action(
411
+					'admin_notices',
412
+					function () {
413
+						echo '<div class="error notice">
414 414
 							  <p>' . esc_html__('All settings need to be set for the plugin to work.', 'algolia-woo-indexer') . '</p>
415 415
 							</div>';
416
-                    }
417
-                );
418
-                return;
419
-            }
420
-        }
416
+					}
417
+				);
418
+				return;
419
+			}
420
+		}
421 421
 
422 422
 		/**
423 423
 		 * Check if we can connect to Algolia, if not, handle the exception, display an error and then return
424 424
 		 */
425 425
 		public static function can_connect_to_algolia() {
426
-            try {
427
-                self::$algolia->listApiKeys();
428
-            } catch (\Algolia\AlgoliaSearch\Exceptions\UnreachableException $error) {
429
-                add_action(
430
-                    'admin_notices',
431
-                    function () {
432
-                        echo '<div class="error notice">
426
+			try {
427
+				self::$algolia->listApiKeys();
428
+			} catch (\Algolia\AlgoliaSearch\Exceptions\UnreachableException $error) {
429
+				add_action(
430
+					'admin_notices',
431
+					function () {
432
+						echo '<div class="error notice">
433 433
 							  <p>' . esc_html__('An error has been encountered. Please check your application ID and API key. ', 'algolia-woo-indexer') . '</p>
434 434
 							</div>';
435
-                    }
436
-                );
437
-                return;
438
-            }
435
+					}
436
+				);
437
+				return;
438
+			}
439 439
 		}
440 440
 
441
-        /**
442
-         * Send WooCommerce products to Algolia
443
-         *
444
-         * @param Int $id Product to send to Algolia if we send only a single product
445
-         * @return void
446
-         */
447
-        public static function send_products_to_algolia($id = '')
448
-        {
449
-            /**
450
-             * Remove classes from plugin URL and autoload Algolia with Composer
451
-             */
452
-
453
-            $base_plugin_directory = str_replace('classes', '', dirname(__FILE__));
454
-            require_once $base_plugin_directory . '/vendor/autoload.php';
455
-
456
-            /**
457
-             * Fetch the required variables from the Settings API
458
-             */
459
-
460
-            $algolia_application_id = get_option(ALGOWOO_DB_OPTION . ALGOLIA_APPLICATION_ID);
461
-            $algolia_api_key        = get_option(ALGOWOO_DB_OPTION . ALGOLIA_API_KEY);
462
-            $algolia_index_name     = get_option(ALGOWOO_DB_OPTION . INDEX_NAME);
441
+		/**
442
+		 * Send WooCommerce products to Algolia
443
+		 *
444
+		 * @param Int $id Product to send to Algolia if we send only a single product
445
+		 * @return void
446
+		 */
447
+		public static function send_products_to_algolia($id = '')
448
+		{
449
+			/**
450
+			 * Remove classes from plugin URL and autoload Algolia with Composer
451
+			 */
452
+
453
+			$base_plugin_directory = str_replace('classes', '', dirname(__FILE__));
454
+			require_once $base_plugin_directory . '/vendor/autoload.php';
455
+
456
+			/**
457
+			 * Fetch the required variables from the Settings API
458
+			 */
459
+
460
+			$algolia_application_id = get_option(ALGOWOO_DB_OPTION . ALGOLIA_APPLICATION_ID);
461
+			$algolia_api_key        = get_option(ALGOWOO_DB_OPTION . ALGOLIA_API_KEY);
462
+			$algolia_index_name     = get_option(ALGOWOO_DB_OPTION . INDEX_NAME);
463 463
 
464 464
 			/**
465
-             * Display admin notice and return if not all values have been set
466
-             */
465
+			 * Display admin notice and return if not all values have been set
466
+			 */
467 467
 
468 468
 			self::check_algolia_input_values($algolia_application_id, $algolia_api_key, $algolia_index_name);
469 469
 
470
-            /**
471
-             * Initiate the Algolia client
472
-             */
473
-            self::$algolia = \Algolia\AlgoliaSearch\SearchClient::create($algolia_application_id, $algolia_api_key);
470
+			/**
471
+			 * Initiate the Algolia client
472
+			 */
473
+			self::$algolia = \Algolia\AlgoliaSearch\SearchClient::create($algolia_application_id, $algolia_api_key);
474 474
 
475 475
 			/**
476
-             * Check if we can connect, if not, handle the exception, display an error and then return
477
-             */
476
+			 * Check if we can connect, if not, handle the exception, display an error and then return
477
+			 */
478 478
 			self::can_connect_to_algolia();
479 479
 			
480 480
 			/**
481
-             * Initialize the search index and set the name to the option from the database
482
-             */
483
-            $index = self::$algolia->initIndex($algolia_index_name);
484
-
485
-            /**
486
-             * Setup arguments for sending all products to Algolia
487
-             *
488
-             * Limit => -1 means we send all products
489
-             */
490
-            $arguments = array(
491
-                'status'   => 'publish',
492
-                'limit'    => -1,
493
-                'paginate' => false,
494
-            );
495
-
496
-            /**
497
-            * Setup arguments for sending only a single product
498
-            */
499
-            if (isset($id) && '' !== $id) {
500
-                $arguments = array(
501
-                    'status'   => 'publish',
502
-                    'include'  => array( $id ),
503
-                    'paginate' => false,
504
-                );
505
-            }
506
-
507
-            /**
508
-             * Fetch all products from WooCommerce
509
-             *
510
-             * @see https://docs.woocommerce.com/wc-apidocs/function-wc_get_products.html
511
-             */
512
-            $products = /** @scrutinizer ignore-call */ wc_get_products($arguments);
513
-
514
-            if ( empty( $products ) ) {
515
-                return;
516
-            }
517
-            $records = array();
518
-            $record  = array();
519
-
520
-            foreach ($products as $product) {
521
-                /**
522
-                 * Extract image from $product->get_image()
523
-                 */
524
-                preg_match('/<img(.*)src(.*)=(.*)"(.*)"/U', $product->get_image(), $result);
525
-                $product_image = array_pop($result);
526
-                /**
527
-                 * Build the record array using the information from the WooCommerce product
528
-                 */
529
-                $record['objectID']          = $product->get_id();
530
-                $record['product_name']      = $product->get_name();
531
-                $record['product_image']     = $product_image;
532
-                $record['short_description'] = $product->get_short_description();
533
-                $record['regular_price']     = $product->get_regular_price();
534
-                $record['sale_price']        = $product->get_sale_price();
535
-                $record['on_sale']           = $product->is_on_sale();
536
-
537
-                $records[] = $record;
538
-            }
539
-            wp_reset_postdata();
540
-
541
-            /**
542
-             * Send the information to Algolia and save the result
543
-             * If result is NullResponse, print an error message
544
-             */
545
-            $result = $index->saveObjects($records);
546
-
547
-            if ('Algolia\AlgoliaSearch\Response\NullResponse' === get_class($result)) {
481
+			 * Initialize the search index and set the name to the option from the database
482
+			 */
483
+			$index = self::$algolia->initIndex($algolia_index_name);
484
+
485
+			/**
486
+			 * Setup arguments for sending all products to Algolia
487
+			 *
488
+			 * Limit => -1 means we send all products
489
+			 */
490
+			$arguments = array(
491
+				'status'   => 'publish',
492
+				'limit'    => -1,
493
+				'paginate' => false,
494
+			);
495
+
496
+			/**
497
+			 * Setup arguments for sending only a single product
498
+			 */
499
+			if (isset($id) && '' !== $id) {
500
+				$arguments = array(
501
+					'status'   => 'publish',
502
+					'include'  => array( $id ),
503
+					'paginate' => false,
504
+				);
505
+			}
506
+
507
+			/**
508
+			 * Fetch all products from WooCommerce
509
+			 *
510
+			 * @see https://docs.woocommerce.com/wc-apidocs/function-wc_get_products.html
511
+			 */
512
+			$products = /** @scrutinizer ignore-call */ wc_get_products($arguments);
513
+
514
+			if ( empty( $products ) ) {
515
+				return;
516
+			}
517
+			$records = array();
518
+			$record  = array();
519
+
520
+			foreach ($products as $product) {
521
+				/**
522
+				 * Extract image from $product->get_image()
523
+				 */
524
+				preg_match('/<img(.*)src(.*)=(.*)"(.*)"/U', $product->get_image(), $result);
525
+				$product_image = array_pop($result);
526
+				/**
527
+				 * Build the record array using the information from the WooCommerce product
528
+				 */
529
+				$record['objectID']          = $product->get_id();
530
+				$record['product_name']      = $product->get_name();
531
+				$record['product_image']     = $product_image;
532
+				$record['short_description'] = $product->get_short_description();
533
+				$record['regular_price']     = $product->get_regular_price();
534
+				$record['sale_price']        = $product->get_sale_price();
535
+				$record['on_sale']           = $product->is_on_sale();
536
+
537
+				$records[] = $record;
538
+			}
539
+			wp_reset_postdata();
540
+
541
+			/**
542
+			 * Send the information to Algolia and save the result
543
+			 * If result is NullResponse, print an error message
544
+			 */
545
+			$result = $index->saveObjects($records);
546
+
547
+			if ('Algolia\AlgoliaSearch\Response\NullResponse' === get_class($result)) {
548 548
 				wp_die(esc_html__('No response from the server. Please check your settings and try again', 'algolia_woo_indexer_settings'));    
549
-            }
549
+			}
550 550
 
551
-            /**
552
-             * Display success message
553
-             */
554
-            echo '<div class="notice notice-success is-dismissible">
551
+			/**
552
+			 * Display success message
553
+			 */
554
+			echo '<div class="notice notice-success is-dismissible">
555 555
 					 	<p>' . esc_html__('Product(s) sent to Algolia.', 'algolia-woo-indexer') . '</p>
556 556
 				  		</div>';
557
-        }
558
-
559
-        /**
560
-         * Sanitize input in settings fields and filter through regex to accept only a-z and A-Z
561
-         *
562
-         * @param string $input Settings text data
563
-         * @return array
564
-         */
565
-        public static function settings_fields_validate_options($input)
566
-        {
567
-            $valid         = array();
568
-            $valid['name'] = preg_replace(
569
-                '/[^a-zA-Z\s]/',
570
-                '',
571
-                $input['name']
572
-            );
573
-            return $valid;
574
-        }
575
-
576
-        /**
577
-         * Load text domain for translations
578
-         *
579
-         * @return void
580
-         */
581
-        public static function load_textdomain()
582
-        {
583
-            load_plugin_textdomain('algolia-woo-indexer', false, basename(dirname(__FILE__)) . '/languages/');
584
-        }
585
-
586
-        /**
587
-         * Add the new menu to settings section so that we can configure the plugin
588
-         *
589
-         * @return void
590
-         */
591
-        public static function admin_menu()
592
-        {
593
-            add_submenu_page(
594
-                'options-general.php',
595
-                esc_html__('Algolia Woo Indexer Settings', 'algolia-woo-indexer'),
596
-                esc_html__('Algolia Woo Indexer Settings', 'algolia-woo-indexer'),
597
-                'manage_options',
598
-                'algolia-woo-indexer-settings',
599
-                array( get_called_class(), 'algolia_woo_indexer_settings' )
600
-            );
601
-        }
602
-
603
-        /**
604
-         * Display settings and allow user to modify them
605
-         *
606
-         * @return void
607
-         */
608
-        public static function algolia_woo_indexer_settings()
609
-        {
610
-            /**
611
-            * Verify that the user can access the settings page
612
-            */
613
-            if (! current_user_can('manage_options')) {
614
-                wp_die(esc_html__('Action not allowed.', 'algolia_woo_indexer_settings'));
615
-            } ?>
557
+		}
558
+
559
+		/**
560
+		 * Sanitize input in settings fields and filter through regex to accept only a-z and A-Z
561
+		 *
562
+		 * @param string $input Settings text data
563
+		 * @return array
564
+		 */
565
+		public static function settings_fields_validate_options($input)
566
+		{
567
+			$valid         = array();
568
+			$valid['name'] = preg_replace(
569
+				'/[^a-zA-Z\s]/',
570
+				'',
571
+				$input['name']
572
+			);
573
+			return $valid;
574
+		}
575
+
576
+		/**
577
+		 * Load text domain for translations
578
+		 *
579
+		 * @return void
580
+		 */
581
+		public static function load_textdomain()
582
+		{
583
+			load_plugin_textdomain('algolia-woo-indexer', false, basename(dirname(__FILE__)) . '/languages/');
584
+		}
585
+
586
+		/**
587
+		 * Add the new menu to settings section so that we can configure the plugin
588
+		 *
589
+		 * @return void
590
+		 */
591
+		public static function admin_menu()
592
+		{
593
+			add_submenu_page(
594
+				'options-general.php',
595
+				esc_html__('Algolia Woo Indexer Settings', 'algolia-woo-indexer'),
596
+				esc_html__('Algolia Woo Indexer Settings', 'algolia-woo-indexer'),
597
+				'manage_options',
598
+				'algolia-woo-indexer-settings',
599
+				array( get_called_class(), 'algolia_woo_indexer_settings' )
600
+			);
601
+		}
602
+
603
+		/**
604
+		 * Display settings and allow user to modify them
605
+		 *
606
+		 * @return void
607
+		 */
608
+		public static function algolia_woo_indexer_settings()
609
+		{
610
+			/**
611
+			 * Verify that the user can access the settings page
612
+			 */
613
+			if (! current_user_can('manage_options')) {
614
+				wp_die(esc_html__('Action not allowed.', 'algolia_woo_indexer_settings'));
615
+			} ?>
616 616
 			<div class="wrap">
617 617
 				<h1><?php esc_html__('Algolia Woo Indexer Settings', 'algolia-woo-indexer'); ?></h1>
618 618
 				<form action="<?php echo esc_url(self::$plugin_url); ?>" method="POST">
619 619
 			<?php
620
-            settings_fields('algolia_woo_options');
621
-            do_settings_sections('algolia_woo_indexer');
622
-            submit_button('', 'primary wide'); ?>
620
+			settings_fields('algolia_woo_options');
621
+			do_settings_sections('algolia_woo_indexer');
622
+			submit_button('', 'primary wide'); ?>
623 623
 				</form>
624 624
 				<form action="<?php echo esc_url(self::$plugin_url); ?>" method="POST">
625 625
 					<?php wp_nonce_field('send_products_to_algolia_nonce_action', 'send_products_to_algolia_nonce_name'); ?>
@@ -628,75 +628,75 @@  discard block
 block discarded – undo
628 628
 				</form>
629 629
 			</div>
630 630
 			<?php
631
-        }
632
-
633
-        /**
634
-         * Get active object instance
635
-         *
636
-         * @return object
637
-         */
638
-        public static function get_instance()
639
-        {
640
-            if (! self::$instance) {
641
-                self::$instance = new Algolia_Woo_Indexer();
642
-            }
643
-            return self::$instance;
644
-        }
645
-
646
-        /**
647
-         * The actions to execute when the plugin is activated.
648
-         *
649
-         * @return void
650
-         */
651
-        public static function activate_plugin()
652
-        {
653
-
654
-            /**
655
-             * Set default values for options if not already set
656
-             */
657
-            $automatically_send_new_products = get_option(ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS);
658
-            $algolia_application_id          = get_option(ALGOWOO_DB_OPTION . ALGOLIA_APPLICATION_ID);
659
-            $algolia_api_key                 = get_option(ALGOWOO_DB_OPTION . ALGOLIA_API_KEY);
660
-            $algolia_index_name              = get_option(ALGOWOO_DB_OPTION . INDEX_NAME);
631
+		}
632
+
633
+		/**
634
+		 * Get active object instance
635
+		 *
636
+		 * @return object
637
+		 */
638
+		public static function get_instance()
639
+		{
640
+			if (! self::$instance) {
641
+				self::$instance = new Algolia_Woo_Indexer();
642
+			}
643
+			return self::$instance;
644
+		}
645
+
646
+		/**
647
+		 * The actions to execute when the plugin is activated.
648
+		 *
649
+		 * @return void
650
+		 */
651
+		public static function activate_plugin()
652
+		{
653
+
654
+			/**
655
+			 * Set default values for options if not already set
656
+			 */
657
+			$automatically_send_new_products = get_option(ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS);
658
+			$algolia_application_id          = get_option(ALGOWOO_DB_OPTION . ALGOLIA_APPLICATION_ID);
659
+			$algolia_api_key                 = get_option(ALGOWOO_DB_OPTION . ALGOLIA_API_KEY);
660
+			$algolia_index_name              = get_option(ALGOWOO_DB_OPTION . INDEX_NAME);
661 661
             
662
-            if (empty($automatically_send_new_products)) {
663
-                add_option(
664
-                    ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS,
665
-                    '0'
666
-                );
667
-            }
668
-
669
-            if (empty($algolia_application_id)) {
670
-                add_option(
671
-                    ALGOWOO_DB_OPTION . ALGOLIA_APPLICATION_ID,
672
-                    'Change me'
673
-                );
674
-            }
675
-
676
-            if (empty($algolia_api_key)) {
677
-                add_option(
678
-                    ALGOWOO_DB_OPTION . ALGOLIA_API_KEY,
679
-                    'Change me'
680
-                );
681
-            }
682
-
683
-            if (empty($algolia_index_name)) {
684
-                add_option(
685
-                    ALGOWOO_DB_OPTION . INDEX_NAME,
686
-                    'Change me'
687
-                );
688
-            }
689
-            set_transient(self::PLUGIN_TRANSIENT, true);
690
-        }
691
-
692
-        /**
693
-         * The actions to execute when the plugin is deactivated.
694
-         *
695
-         * @return void
696
-         */
697
-        public static function deactivate_plugin()
698
-        {
699
-            delete_transient(self::PLUGIN_TRANSIENT);
700
-        }
701
-    }
662
+			if (empty($automatically_send_new_products)) {
663
+				add_option(
664
+					ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS,
665
+					'0'
666
+				);
667
+			}
668
+
669
+			if (empty($algolia_application_id)) {
670
+				add_option(
671
+					ALGOWOO_DB_OPTION . ALGOLIA_APPLICATION_ID,
672
+					'Change me'
673
+				);
674
+			}
675
+
676
+			if (empty($algolia_api_key)) {
677
+				add_option(
678
+					ALGOWOO_DB_OPTION . ALGOLIA_API_KEY,
679
+					'Change me'
680
+				);
681
+			}
682
+
683
+			if (empty($algolia_index_name)) {
684
+				add_option(
685
+					ALGOWOO_DB_OPTION . INDEX_NAME,
686
+					'Change me'
687
+				);
688
+			}
689
+			set_transient(self::PLUGIN_TRANSIENT, true);
690
+		}
691
+
692
+		/**
693
+		 * The actions to execute when the plugin is deactivated.
694
+		 *
695
+		 * @return void
696
+		 */
697
+		public static function deactivate_plugin()
698
+		{
699
+			delete_transient(self::PLUGIN_TRANSIENT);
700
+		}
701
+	}
702 702
 }
703 703
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -14,27 +14,27 @@  discard block
 block discarded – undo
14 14
 /**
15 15
  * Abort if this file is called directly
16 16
  */
17
-if ( ! defined( 'ABSPATH' ) ) {
17
+if ( ! defined('ABSPATH')) {
18 18
 	exit;
19 19
 }
20 20
 
21 21
 /**
22 22
  * Include plugin file if function is_plugin_active does not exist
23 23
  */
24
-if (! function_exists('is_plugin_active')) {
24
+if ( ! function_exists('is_plugin_active')) {
25 25
     require_once(ABSPATH . '/wp-admin/includes/plugin.php');
26 26
 }
27 27
 
28 28
 /**
29 29
  * Define the plugin version and the database table name
30 30
  */
31
-define( 'ALGOWOO_DB_OPTION', '_algolia_woo_indexer' );
32
-define( 'ALGOWOO_CURRENT_DB_VERSION', '0.3' );
31
+define('ALGOWOO_DB_OPTION', '_algolia_woo_indexer');
32
+define('ALGOWOO_CURRENT_DB_VERSION', '0.3');
33 33
 
34 34
 /**
35 35
  * Define application constants
36 36
  */
37
-define( 'CHANGE_ME', 'change me' );
37
+define('CHANGE_ME', 'change me');
38 38
 
39 39
 /**
40 40
  * Database table names
@@ -44,7 +44,7 @@  discard block
 block discarded – undo
44 44
 define('ALGOLIA_APPLICATION_ID', '_application_id');
45 45
 define('ALGOLIA_API_KEY', '_admin_api_key');
46 46
 
47
-if (! class_exists('Algolia_Woo_Indexer')) {
47
+if ( ! class_exists('Algolia_Woo_Indexer')) {
48 48
     /**
49 49
      * Algolia WooIndexer main class
50 50
      */
@@ -116,34 +116,34 @@  discard block
 block discarded – undo
116 116
                 add_settings_section(
117 117
                     'algolia_woo_indexer_main',
118 118
                     esc_html__('Algolia Woo Plugin Settings', 'algolia-woo-indexer'),
119
-                    array( $algowooindexer, 'algolia_woo_indexer_section_text' ),
119
+                    array($algowooindexer, 'algolia_woo_indexer_section_text'),
120 120
                     'algolia_woo_indexer'
121 121
                 );
122 122
                 add_settings_field(
123 123
                     'algolia_woo_indexer_application_id',
124 124
                     esc_html__('Application ID', 'algolia-woo-indexer'),
125
-                    array( $algowooindexer, 'algolia_woo_indexer_application_id_output' ),
125
+                    array($algowooindexer, 'algolia_woo_indexer_application_id_output'),
126 126
                     'algolia_woo_indexer',
127 127
                     'algolia_woo_indexer_main'
128 128
                 );
129 129
                 add_settings_field(
130 130
                     'algolia_woo_indexer_admin_api_key',
131 131
                     esc_html__('Admin API Key', 'algolia-woo-indexer'),
132
-                    array( $algowooindexer, 'algolia_woo_indexer_admin_api_key_output' ),
132
+                    array($algowooindexer, 'algolia_woo_indexer_admin_api_key_output'),
133 133
                     'algolia_woo_indexer',
134 134
                     'algolia_woo_indexer_main'
135 135
                 );
136 136
                 add_settings_field(
137 137
                     'algolia_woo_indexer_index_name',
138 138
                     esc_html__('Index name (will be created if not existing)', 'algolia-woo-indexer'),
139
-                    array( $algowooindexer, 'algolia_woo_indexer_index_name_output' ),
139
+                    array($algowooindexer, 'algolia_woo_indexer_index_name_output'),
140 140
                     'algolia_woo_indexer',
141 141
                     'algolia_woo_indexer_main'
142 142
                 );
143 143
                 add_settings_field(
144 144
                     'algolia_woo_indexer_automatically_send_new_products',
145 145
                     esc_html__('Automatically index new products', 'algolia-woo-indexer'),
146
-                    array( $algowooindexer, 'algolia_woo_indexer_automatically_send_new_products_output' ),
146
+                    array($algowooindexer, 'algolia_woo_indexer_automatically_send_new_products_output'),
147 147
                     'algolia_woo_indexer',
148 148
                     'algolia_woo_indexer_main'
149 149
                 );
@@ -208,7 +208,7 @@  discard block
 block discarded – undo
208 208
              * But I have still done it to be 100% safe
209 209
              */
210 210
             $automatically_send_new_products = get_option(ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS);
211
-            $automatically_send_new_products = (! empty($automatically_send_new_products)) ? 1 : 0; ?>
211
+            $automatically_send_new_products = ( ! empty($automatically_send_new_products)) ? 1 : 0; ?>
212 212
 			<input id="algolia_woo_indexer_automatically_send_new_products" name="algolia_woo_indexer_automatically_send_new_products[checked]"
213 213
 			type="checkbox" <?php checked(1, $automatically_send_new_products); ?> />
214 214
 			<?php
@@ -254,10 +254,10 @@  discard block
 block discarded – undo
254 254
              */
255 255
             Algolia_Check_Requirements::check_unmet_requirements();
256 256
 
257
-            if (! Algolia_Check_Requirements::algolia_wp_version_check() || ! Algolia_Check_Requirements::algolia_php_version_check()) {
257
+            if ( ! Algolia_Check_Requirements::algolia_wp_version_check() || ! Algolia_Check_Requirements::algolia_php_version_check()) {
258 258
                 add_action(
259 259
                     'admin_notices',
260
-                    function () {
260
+                    function() {
261 261
                         echo '<div class="error notice">
262 262
                                   <p>' . esc_html__('Please check the server requirements for Algolia Woo Indexer. <br/> It requires minimum PHP version 7.2 and WordPress version 5.0', 'algolia-woo-indexer') . '</p>
263 263
                                 </div>';
@@ -270,31 +270,31 @@  discard block
 block discarded – undo
270 270
             /**
271 271
              * Setup translations
272 272
              */
273
-            add_action('plugins_loaded', array( $ob_class, 'load_textdomain' ));
273
+            add_action('plugins_loaded', array($ob_class, 'load_textdomain'));
274 274
 
275 275
             /**
276 276
              * Add actions to setup admin menu
277 277
              */
278 278
             if (is_admin()) {
279
-                add_action('admin_menu', array( $ob_class, 'admin_menu' ));
280
-                add_action('admin_init', array( $ob_class, 'setup_settings_sections' ));
281
-                add_action('admin_init', array( $ob_class, 'update_settings_options' ));
282
-                add_action('admin_init', array( $ob_class, 'maybe_send_products' ));
279
+                add_action('admin_menu', array($ob_class, 'admin_menu'));
280
+                add_action('admin_init', array($ob_class, 'setup_settings_sections'));
281
+                add_action('admin_init', array($ob_class, 'update_settings_options'));
282
+                add_action('admin_init', array($ob_class, 'maybe_send_products'));
283 283
 
284 284
                 /**
285 285
                  * Register hook to automatically send new products if the option is set
286 286
                  */
287 287
 
288 288
                 if ('1' === $automatically_send_new_products) {
289
-                    add_action('save_post', array( $ob_class, 'send_new_product_to_algolia' ), 10, 3);
289
+                    add_action('save_post', array($ob_class, 'send_new_product_to_algolia'), 10, 3);
290 290
                 }
291 291
 
292 292
                 self::$plugin_url = admin_url('options-general.php?page=algolia-woo-indexer-settings');
293 293
 
294
-                if (! is_plugin_active('woocommerce/woocommerce.php')) {
294
+                if ( ! is_plugin_active('woocommerce/woocommerce.php')) {
295 295
                     add_action(
296 296
                         'admin_notices',
297
-                        function () {
297
+                        function() {
298 298
                             echo '<div class="error notice">
299 299
 								  <p>' . esc_html__('WooCommerce plugin must be enabled for Algolia Woo Indexer to work.', 'algolia-woo-indexer') . '</p>
300 300
 								</div>';
@@ -359,7 +359,7 @@  discard block
 block discarded – undo
359 359
             /**
360 360
              * Sanitizing by setting the value to either 1 or 0
361 361
              */
362
-            $filtered_automatically_send_new_products = (! empty($automatically_send_new_products)) ? 1 : 0;
362
+            $filtered_automatically_send_new_products = ( ! empty($automatically_send_new_products)) ? 1 : 0;
363 363
 
364 364
             /**
365 365
              * Values have been filtered and sanitized
@@ -367,28 +367,28 @@  discard block
 block discarded – undo
367 367
              *
368 368
              * @see https://developer.wordpress.org/reference/functions/update_option/
369 369
              */
370
-            if (isset($filtered_application_id) && (! empty($filtered_application_id))) {
370
+            if (isset($filtered_application_id) && ( ! empty($filtered_application_id))) {
371 371
                 update_option(
372 372
                     ALGOWOO_DB_OPTION . ALGOLIA_APPLICATION_ID,
373 373
                     $filtered_application_id
374 374
                 );
375 375
             }
376 376
 
377
-            if (isset($filtered_api_key) && (! empty($filtered_api_key))) {
377
+            if (isset($filtered_api_key) && ( ! empty($filtered_api_key))) {
378 378
                 update_option(
379 379
                     ALGOWOO_DB_OPTION . ALGOLIA_API_KEY,
380 380
                     $filtered_api_key
381 381
                 );
382 382
             }
383 383
 
384
-            if (isset($filtered_index_name) && (! empty($filtered_index_name))) {
384
+            if (isset($filtered_index_name) && ( ! empty($filtered_index_name))) {
385 385
                 update_option(
386 386
                     ALGOWOO_DB_OPTION . INDEX_NAME,
387 387
                     $filtered_index_name
388 388
                 );
389 389
             }
390 390
 
391
-            if (isset($filtered_automatically_send_new_products) && (! empty($filtered_automatically_send_new_products))) {
391
+            if (isset($filtered_automatically_send_new_products) && ( ! empty($filtered_automatically_send_new_products))) {
392 392
                 update_option(
393 393
                     ALGOWOO_DB_OPTION . AUTOMATICALLY_SEND_NEW_PRODUCTS,
394 394
                     $filtered_automatically_send_new_products
@@ -404,12 +404,12 @@  discard block
 block discarded – undo
404 404
 		 * 	@param string $algolia_index_name Algolia index name.
405 405
 		 * 
406 406
 		 */
407
-		public static function check_algolia_input_values($algolia_application_id, $algolia_api_key, $algolia_index_name )
407
+		public static function check_algolia_input_values($algolia_application_id, $algolia_api_key, $algolia_index_name)
408 408
 		{	
409 409
 			if (empty($algolia_application_id) || empty($algolia_api_key || empty($algolia_index_name))) {
410 410
                 add_action(
411 411
                     'admin_notices',
412
-                    function () {
412
+                    function() {
413 413
                         echo '<div class="error notice">
414 414
 							  <p>' . esc_html__('All settings need to be set for the plugin to work.', 'algolia-woo-indexer') . '</p>
415 415
 							</div>';
@@ -428,7 +428,7 @@  discard block
 block discarded – undo
428 428
             } catch (\Algolia\AlgoliaSearch\Exceptions\UnreachableException $error) {
429 429
                 add_action(
430 430
                     'admin_notices',
431
-                    function () {
431
+                    function() {
432 432
                         echo '<div class="error notice">
433 433
 							  <p>' . esc_html__('An error has been encountered. Please check your application ID and API key. ', 'algolia-woo-indexer') . '</p>
434 434
 							</div>';
@@ -499,7 +499,7 @@  discard block
 block discarded – undo
499 499
             if (isset($id) && '' !== $id) {
500 500
                 $arguments = array(
501 501
                     'status'   => 'publish',
502
-                    'include'  => array( $id ),
502
+                    'include'  => array($id),
503 503
                     'paginate' => false,
504 504
                 );
505 505
             }
@@ -511,7 +511,7 @@  discard block
 block discarded – undo
511 511
              */
512 512
             $products = /** @scrutinizer ignore-call */ wc_get_products($arguments);
513 513
 
514
-            if ( empty( $products ) ) {
514
+            if (empty($products)) {
515 515
                 return;
516 516
             }
517 517
             $records = array();
@@ -596,7 +596,7 @@  discard block
 block discarded – undo
596 596
                 esc_html__('Algolia Woo Indexer Settings', 'algolia-woo-indexer'),
597 597
                 'manage_options',
598 598
                 'algolia-woo-indexer-settings',
599
-                array( get_called_class(), 'algolia_woo_indexer_settings' )
599
+                array(get_called_class(), 'algolia_woo_indexer_settings')
600 600
             );
601 601
         }
602 602
 
@@ -610,7 +610,7 @@  discard block
 block discarded – undo
610 610
             /**
611 611
             * Verify that the user can access the settings page
612 612
             */
613
-            if (! current_user_can('manage_options')) {
613
+            if ( ! current_user_can('manage_options')) {
614 614
                 wp_die(esc_html__('Action not allowed.', 'algolia_woo_indexer_settings'));
615 615
             } ?>
616 616
 			<div class="wrap">
@@ -637,7 +637,7 @@  discard block
 block discarded – undo
637 637
          */
638 638
         public static function get_instance()
639 639
         {
640
-            if (! self::$instance) {
640
+            if ( ! self::$instance) {
641 641
                 self::$instance = new Algolia_Woo_Indexer();
642 642
             }
643 643
             return self::$instance;
Please login to merge, or discard this patch.