Completed
Push — develop ( 8e3bd3...934407 )
by Naveen
02:05 queued 57s
created
src/includes/class-wordlift-jsonld-service.php 2 patches
Indentation   +264 added lines, -264 removed lines patch added patch discarded remove patch
@@ -17,274 +17,274 @@
 block discarded – undo
17 17
  */
18 18
 class Wordlift_Jsonld_Service {
19 19
 
20
-	/**
21
-	 * A {@link Wordlift_Entity_Service} instance.
22
-	 *
23
-	 * @since  3.8.0
24
-	 * @access private
25
-	 * @var Wordlift_Entity_Service $entity_service A {@link Wordlift_Entity_Service} instance.
26
-	 */
27
-	private $entity_service;
28
-
29
-	/**
30
-	 * A {@link Wordlift_Term_JsonLd_Adapter} instance.
31
-	 *
32
-	 * @since  3.32.0
33
-	 * @access private
34
-	 * @var Wordlift_Term_JsonLd_Adapter $entity_service A {@link Wordlift_Term_JsonLd_Adapter} instance.
35
-	 */
36
-	private $term_jsonld_adapter;
37
-
38
-	/**
39
-	 * A {@link Wordlift_Post_Converter} instance.
40
-	 *
41
-	 * @since  3.8.0
42
-	 * @access private
43
-	 * @var \Wordlift_Post_Converter A {@link Wordlift_Post_Converter} instance.
44
-	 */
45
-	private $converter;
46
-
47
-	/**
48
-	 * A {@link Wordlift_Website_Jsonld_Converter} instance.
49
-	 *
50
-	 * @since  3.14.0
51
-	 * @access private
52
-	 * @var \Wordlift_Website_Jsonld_Converter A {@link Wordlift_Website_Jsonld_Converter} instance.
53
-	 */
54
-	private $website_converter;
55
-
56
-	/**
57
-	 * The singleton instance for the JSON-LD service.
58
-	 *
59
-	 * @since 3.15.1
60
-	 *
61
-	 * @var \Wordlift_Jsonld_Service $instance The singleton instance for the JSON-LD service.
62
-	 */
63
-	private static $instance;
64
-
65
-	/**
66
-	 * Create a JSON-LD service.
67
-	 *
68
-	 * @param \Wordlift_Entity_Service           $entity_service A {@link Wordlift_Entity_Service} instance.
69
-	 * @param \Wordlift_Post_Converter           $converter A {@link Wordlift_Uri_To_Jsonld_Converter} instance.
70
-	 * @param \Wordlift_Website_Jsonld_Converter $website_converter A {@link Wordlift_Website_Jsonld_Converter} instance.
71
-	 * @param \Wordlift_Term_JsonLd_Adapter      $term_jsonld_adapter
72
-	 *
73
-	 * @since 3.8.0
74
-	 */
75
-	public function __construct( $entity_service, $converter, $website_converter, $term_jsonld_adapter ) {
76
-
77
-		$this->entity_service      = $entity_service;
78
-		$this->converter           = $converter;
79
-		$this->website_converter   = $website_converter;
80
-		$this->term_jsonld_adapter = $term_jsonld_adapter;
81
-		self::$instance            = $this;
82
-
83
-	}
84
-
85
-	/**
86
-	 * Get the singleton instance for the JSON-LD service.
87
-	 *
88
-	 * @return \Wordlift_Jsonld_Service The singleton instance for the JSON-LD service.
89
-	 * @since 3.15.1
90
-	 */
91
-	public static function get_instance() {
92
-
93
-		return self::$instance;
94
-	}
95
-
96
-	/**
97
-	 * Process calls to the AJAX 'wl_jsonld' endpoint.
98
-	 *
99
-	 * @since 3.8.0
100
-	 */
101
-	public function get() {
102
-		// Clear the buffer to be sure someone doesn't mess with our response.
103
-		//
104
-		// See https://github.com/insideout10/wordlift-plugin/issues/406.
105
-		// See https://codex.wordpress.org/AJAX_in_Plugins.
20
+    /**
21
+     * A {@link Wordlift_Entity_Service} instance.
22
+     *
23
+     * @since  3.8.0
24
+     * @access private
25
+     * @var Wordlift_Entity_Service $entity_service A {@link Wordlift_Entity_Service} instance.
26
+     */
27
+    private $entity_service;
28
+
29
+    /**
30
+     * A {@link Wordlift_Term_JsonLd_Adapter} instance.
31
+     *
32
+     * @since  3.32.0
33
+     * @access private
34
+     * @var Wordlift_Term_JsonLd_Adapter $entity_service A {@link Wordlift_Term_JsonLd_Adapter} instance.
35
+     */
36
+    private $term_jsonld_adapter;
37
+
38
+    /**
39
+     * A {@link Wordlift_Post_Converter} instance.
40
+     *
41
+     * @since  3.8.0
42
+     * @access private
43
+     * @var \Wordlift_Post_Converter A {@link Wordlift_Post_Converter} instance.
44
+     */
45
+    private $converter;
46
+
47
+    /**
48
+     * A {@link Wordlift_Website_Jsonld_Converter} instance.
49
+     *
50
+     * @since  3.14.0
51
+     * @access private
52
+     * @var \Wordlift_Website_Jsonld_Converter A {@link Wordlift_Website_Jsonld_Converter} instance.
53
+     */
54
+    private $website_converter;
55
+
56
+    /**
57
+     * The singleton instance for the JSON-LD service.
58
+     *
59
+     * @since 3.15.1
60
+     *
61
+     * @var \Wordlift_Jsonld_Service $instance The singleton instance for the JSON-LD service.
62
+     */
63
+    private static $instance;
64
+
65
+    /**
66
+     * Create a JSON-LD service.
67
+     *
68
+     * @param \Wordlift_Entity_Service           $entity_service A {@link Wordlift_Entity_Service} instance.
69
+     * @param \Wordlift_Post_Converter           $converter A {@link Wordlift_Uri_To_Jsonld_Converter} instance.
70
+     * @param \Wordlift_Website_Jsonld_Converter $website_converter A {@link Wordlift_Website_Jsonld_Converter} instance.
71
+     * @param \Wordlift_Term_JsonLd_Adapter      $term_jsonld_adapter
72
+     *
73
+     * @since 3.8.0
74
+     */
75
+    public function __construct( $entity_service, $converter, $website_converter, $term_jsonld_adapter ) {
76
+
77
+        $this->entity_service      = $entity_service;
78
+        $this->converter           = $converter;
79
+        $this->website_converter   = $website_converter;
80
+        $this->term_jsonld_adapter = $term_jsonld_adapter;
81
+        self::$instance            = $this;
82
+
83
+    }
84
+
85
+    /**
86
+     * Get the singleton instance for the JSON-LD service.
87
+     *
88
+     * @return \Wordlift_Jsonld_Service The singleton instance for the JSON-LD service.
89
+     * @since 3.15.1
90
+     */
91
+    public static function get_instance() {
92
+
93
+        return self::$instance;
94
+    }
95
+
96
+    /**
97
+     * Process calls to the AJAX 'wl_jsonld' endpoint.
98
+     *
99
+     * @since 3.8.0
100
+     */
101
+    public function get() {
102
+        // Clear the buffer to be sure someone doesn't mess with our response.
103
+        //
104
+        // See https://github.com/insideout10/wordlift-plugin/issues/406.
105
+        // See https://codex.wordpress.org/AJAX_in_Plugins.
106 106
         // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
107
-		@ob_clean();
108
-
109
-		// Get the parameter from the request.
110
-		$is_homepage = isset( $_REQUEST['homepage'] ); //phpcs:ignore WordPress.Security.NonceVerification.Recommended
111
-		$post_id     = isset( $_REQUEST['id'] ) && is_numeric( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : null; //phpcs:ignore WordPress.Security.NonceVerification.Recommended
112
-
113
-		// Send the generated JSON-LD.
114
-		$this->send_jsonld( $this->get_jsonld( $is_homepage, $post_id ) );
115
-
116
-	}
117
-
118
-	/**
119
-	 * A close of WP's own `wp_send_json` function which uses `application/ld+json` as content type.
120
-	 *
121
-	 * @param mixed $response Variable (usually an array or object) to encode as JSON,
122
-	 *                           then print and die.
123
-	 *
124
-	 * @since 3.18.5
125
-	 */
126
-	private function send_jsonld( $response ) {
107
+        @ob_clean();
108
+
109
+        // Get the parameter from the request.
110
+        $is_homepage = isset( $_REQUEST['homepage'] ); //phpcs:ignore WordPress.Security.NonceVerification.Recommended
111
+        $post_id     = isset( $_REQUEST['id'] ) && is_numeric( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : null; //phpcs:ignore WordPress.Security.NonceVerification.Recommended
112
+
113
+        // Send the generated JSON-LD.
114
+        $this->send_jsonld( $this->get_jsonld( $is_homepage, $post_id ) );
115
+
116
+    }
117
+
118
+    /**
119
+     * A close of WP's own `wp_send_json` function which uses `application/ld+json` as content type.
120
+     *
121
+     * @param mixed $response Variable (usually an array or object) to encode as JSON,
122
+     *                           then print and die.
123
+     *
124
+     * @since 3.18.5
125
+     */
126
+    private function send_jsonld( $response ) {
127 127
         // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
128
-		@header( 'Content-Type: application/ld+json; charset=' . get_option( 'blog_charset' ) );
129
-		echo wp_json_encode( $response );
130
-		if ( apply_filters( 'wp_doing_ajax', defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
131
-			wp_die();
132
-		} else {
133
-			die;
134
-		}
135
-	}
136
-
137
-	/**
138
-	 * Get the JSON-LD.
139
-	 *
140
-	 * @param bool     $is_homepage Whether the JSON-LD for the homepage is being requested.
141
-	 * @param int|null $post_id The JSON-LD for the specified {@link WP_Post} id.
142
-	 * @param int      $context A context for the JSON-LD generation, valid values in Jsonld_Context_Enum.
143
-	 *
144
-	 * @return array A JSON-LD structure.
145
-	 * @since 3.15.1
146
-	 */
147
-	public function get_jsonld( $is_homepage = false, $post_id = null, $context = Jsonld_Context_Enum::UNKNOWN ) {
148
-
149
-		// Tell NewRelic to ignore us, otherwise NewRelic customers might receive
150
-		// e-mails with a low apdex score.
151
-		//
152
-		// See https://github.com/insideout10/wordlift-plugin/issues/521
153
-		Wordlift_NewRelic_Adapter::ignore_apdex();
154
-
155
-		// Switch to Website converter if is home page.
156
-		if ( $is_homepage ) {
157
-			/**
158
-			 * Filter: 'wordlift_disable_website_json_ld' - Allow disabling of the json+ld output.
159
-			 *
160
-			 * @since  3.14.0
161
-			 * @api    bool $display_search Whether or not to display json+ld search on the frontend.
162
-			 */
163
-			if ( apply_filters( 'wordlift_disable_website_json_ld', false ) ) {
164
-				return array();
165
-			}
166
-
167
-			// Set a reference to the website_converter.
168
-			$website_converter = $this->website_converter;
169
-
170
-			// Send JSON-LD.
171
-			return $website_converter->create_schema();
172
-		}
173
-
174
-		// If no id has been provided return an empty array.
175
-		if ( ! isset( $post_id ) ) {
176
-			return array();
177
-		}
178
-
179
-		// An array of references which is captured when converting an URI to a
180
-		// json which we gather to further expand our json-ld.
181
-		$references       = array();
182
-		$references_infos = array();
183
-
184
-		// Set a reference to the entity_to_jsonld_converter to use in the closures.
185
-		$entity_to_jsonld_converter = $this->converter;
186
-
187
-		$jsonld = array( $entity_to_jsonld_converter->convert( $post_id, $references, $references_infos ) );
188
-
189
-		$that                       = $this;
190
-		$expanded_references_jsonld = array_map(
191
-			function ( $item ) use ( $context, $entity_to_jsonld_converter, &$references_infos, $that ) {
192
-				// "2nd level properties" may not output here, e.g. a post
193
-				// mentioning an event, located in a place: the place is referenced
194
-				// via the `@id` but no other properties are loaded.
195
-				$ignored = array();
196
-				if ( $item instanceof Term_Reference ) {
128
+        @header( 'Content-Type: application/ld+json; charset=' . get_option( 'blog_charset' ) );
129
+        echo wp_json_encode( $response );
130
+        if ( apply_filters( 'wp_doing_ajax', defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
131
+            wp_die();
132
+        } else {
133
+            die;
134
+        }
135
+    }
136
+
137
+    /**
138
+     * Get the JSON-LD.
139
+     *
140
+     * @param bool     $is_homepage Whether the JSON-LD for the homepage is being requested.
141
+     * @param int|null $post_id The JSON-LD for the specified {@link WP_Post} id.
142
+     * @param int      $context A context for the JSON-LD generation, valid values in Jsonld_Context_Enum.
143
+     *
144
+     * @return array A JSON-LD structure.
145
+     * @since 3.15.1
146
+     */
147
+    public function get_jsonld( $is_homepage = false, $post_id = null, $context = Jsonld_Context_Enum::UNKNOWN ) {
148
+
149
+        // Tell NewRelic to ignore us, otherwise NewRelic customers might receive
150
+        // e-mails with a low apdex score.
151
+        //
152
+        // See https://github.com/insideout10/wordlift-plugin/issues/521
153
+        Wordlift_NewRelic_Adapter::ignore_apdex();
154
+
155
+        // Switch to Website converter if is home page.
156
+        if ( $is_homepage ) {
157
+            /**
158
+             * Filter: 'wordlift_disable_website_json_ld' - Allow disabling of the json+ld output.
159
+             *
160
+             * @since  3.14.0
161
+             * @api    bool $display_search Whether or not to display json+ld search on the frontend.
162
+             */
163
+            if ( apply_filters( 'wordlift_disable_website_json_ld', false ) ) {
164
+                return array();
165
+            }
166
+
167
+            // Set a reference to the website_converter.
168
+            $website_converter = $this->website_converter;
169
+
170
+            // Send JSON-LD.
171
+            return $website_converter->create_schema();
172
+        }
173
+
174
+        // If no id has been provided return an empty array.
175
+        if ( ! isset( $post_id ) ) {
176
+            return array();
177
+        }
178
+
179
+        // An array of references which is captured when converting an URI to a
180
+        // json which we gather to further expand our json-ld.
181
+        $references       = array();
182
+        $references_infos = array();
183
+
184
+        // Set a reference to the entity_to_jsonld_converter to use in the closures.
185
+        $entity_to_jsonld_converter = $this->converter;
186
+
187
+        $jsonld = array( $entity_to_jsonld_converter->convert( $post_id, $references, $references_infos ) );
188
+
189
+        $that                       = $this;
190
+        $expanded_references_jsonld = array_map(
191
+            function ( $item ) use ( $context, $entity_to_jsonld_converter, &$references_infos, $that ) {
192
+                // "2nd level properties" may not output here, e.g. a post
193
+                // mentioning an event, located in a place: the place is referenced
194
+                // via the `@id` but no other properties are loaded.
195
+                $ignored = array();
196
+                if ( $item instanceof Term_Reference ) {
197 197
                     // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
198
-					  $term_jsonld = $that->term_jsonld_adapter->get( $item->get_id(), $context );
199
-
200
-					  // For term references, we publish a jsonld array on the page, use only the first item.
201
-					  return count( $term_jsonld ) > 0 ? $term_jsonld[0] : false;
202
-				} elseif ( $item instanceof Post_Reference ) {
203
-					$item = $item->get_id();
204
-				}
205
-
206
-				// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
207
-				return $entity_to_jsonld_converter->convert( $item, $ignored, $references_infos );
208
-			},
209
-			array_unique( $references )
210
-		);
211
-
212
-		// Convert each URI to a JSON-LD array, while gathering referenced entities.
213
-		// in the references array.
214
-		$jsonld = array_merge(
215
-			$jsonld,
216
-			// Convert each URI in the references array to JSON-LD. We don't output
217
-			// entities already output above (hence the array_diff).
218
-			array_filter( $expanded_references_jsonld )
219
-		);
220
-
221
-		$required_references = array_filter(
222
-			$references_infos,
223
-			function ( $item ) use ( $references ) {
224
-
225
-				return isset( $item['reference'] ) &&
226
-				   // Check that the reference is required
227
-				   $item['reference']->get_required() &&
228
-				   // Check that the reference isn't being output already.
229
-				   ! in_array( $item['reference']->get_id(), $references, true );
230
-			}
231
-		);
232
-
233
-		$jsonld = array_merge(
234
-			$jsonld,
235
-			array_filter(
236
-				array_map(
237
-					function ( $item ) use ( $references, $entity_to_jsonld_converter ) {
238
-
239
-						if ( ! isset( $item['reference'] ) ) {
240
-							  return null;
241
-						}
242
-
243
-						$post_id = $item['reference']->get_id();
244
-						if ( in_array( $post_id, $references, true ) ) {
245
-							return null;
246
-						}
247
-
248
-						$references[] = $post_id;
249
-
250
-						return $entity_to_jsonld_converter->convert( $post_id, $references );
251
-					},
252
-					$required_references
253
-				)
254
-			)
255
-		);
256
-
257
-		/**
258
-		 * Filter name: wl_after_get_jsonld
259
-		 *
260
-		 * @return array
261
-		 * @since 3.27.2
262
-		 * @var $jsonld array The final jsonld before outputting to page.
263
-		 * @var $post_id int The post id for which the jsonld is generated.
264
-		 */
265
-		$jsonld = apply_filters( 'wl_after_get_jsonld', $jsonld, $post_id, $context );
266
-
267
-		return $jsonld;
268
-	}
269
-
270
-	/**
271
-	 * Write the JSON-LD in the head.
272
-	 *
273
-	 * This function isn't actually used, but may be used to quickly enable writing the JSON-LD synchronously to the
274
-	 * document head, using the `wp_head` hook.
275
-	 *
276
-	 * @since 3.18.5
277
-	 */
278
-	public function wp_head() {
279
-
280
-		// Determine whether this is the home page or whether we're displaying a single post.
281
-		$is_homepage = is_home() || is_front_page();
282
-		$post_id     = is_singular() ? get_the_ID() : null;
283
-
284
-		$jsonld = wp_json_encode( $this->get_jsonld( $is_homepage, $post_id, Jsonld_Context_Enum::PAGE ) );
285
-		?>
198
+                        $term_jsonld = $that->term_jsonld_adapter->get( $item->get_id(), $context );
199
+
200
+                        // For term references, we publish a jsonld array on the page, use only the first item.
201
+                        return count( $term_jsonld ) > 0 ? $term_jsonld[0] : false;
202
+                } elseif ( $item instanceof Post_Reference ) {
203
+                    $item = $item->get_id();
204
+                }
205
+
206
+                // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
207
+                return $entity_to_jsonld_converter->convert( $item, $ignored, $references_infos );
208
+            },
209
+            array_unique( $references )
210
+        );
211
+
212
+        // Convert each URI to a JSON-LD array, while gathering referenced entities.
213
+        // in the references array.
214
+        $jsonld = array_merge(
215
+            $jsonld,
216
+            // Convert each URI in the references array to JSON-LD. We don't output
217
+            // entities already output above (hence the array_diff).
218
+            array_filter( $expanded_references_jsonld )
219
+        );
220
+
221
+        $required_references = array_filter(
222
+            $references_infos,
223
+            function ( $item ) use ( $references ) {
224
+
225
+                return isset( $item['reference'] ) &&
226
+                   // Check that the reference is required
227
+                   $item['reference']->get_required() &&
228
+                   // Check that the reference isn't being output already.
229
+                   ! in_array( $item['reference']->get_id(), $references, true );
230
+            }
231
+        );
232
+
233
+        $jsonld = array_merge(
234
+            $jsonld,
235
+            array_filter(
236
+                array_map(
237
+                    function ( $item ) use ( $references, $entity_to_jsonld_converter ) {
238
+
239
+                        if ( ! isset( $item['reference'] ) ) {
240
+                                return null;
241
+                        }
242
+
243
+                        $post_id = $item['reference']->get_id();
244
+                        if ( in_array( $post_id, $references, true ) ) {
245
+                            return null;
246
+                        }
247
+
248
+                        $references[] = $post_id;
249
+
250
+                        return $entity_to_jsonld_converter->convert( $post_id, $references );
251
+                    },
252
+                    $required_references
253
+                )
254
+            )
255
+        );
256
+
257
+        /**
258
+         * Filter name: wl_after_get_jsonld
259
+         *
260
+         * @return array
261
+         * @since 3.27.2
262
+         * @var $jsonld array The final jsonld before outputting to page.
263
+         * @var $post_id int The post id for which the jsonld is generated.
264
+         */
265
+        $jsonld = apply_filters( 'wl_after_get_jsonld', $jsonld, $post_id, $context );
266
+
267
+        return $jsonld;
268
+    }
269
+
270
+    /**
271
+     * Write the JSON-LD in the head.
272
+     *
273
+     * This function isn't actually used, but may be used to quickly enable writing the JSON-LD synchronously to the
274
+     * document head, using the `wp_head` hook.
275
+     *
276
+     * @since 3.18.5
277
+     */
278
+    public function wp_head() {
279
+
280
+        // Determine whether this is the home page or whether we're displaying a single post.
281
+        $is_homepage = is_home() || is_front_page();
282
+        $post_id     = is_singular() ? get_the_ID() : null;
283
+
284
+        $jsonld = wp_json_encode( $this->get_jsonld( $is_homepage, $post_id, Jsonld_Context_Enum::PAGE ) );
285
+        ?>
286 286
 		<script type="application/ld+json"><?php echo esc_html( $jsonld ); ?></script>
287 287
 													  <?php
288
-	}
288
+    }
289 289
 
290 290
 }
Please login to merge, or discard this patch.
Spacing   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -72,7 +72,7 @@  discard block
 block discarded – undo
72 72
 	 *
73 73
 	 * @since 3.8.0
74 74
 	 */
75
-	public function __construct( $entity_service, $converter, $website_converter, $term_jsonld_adapter ) {
75
+	public function __construct($entity_service, $converter, $website_converter, $term_jsonld_adapter) {
76 76
 
77 77
 		$this->entity_service      = $entity_service;
78 78
 		$this->converter           = $converter;
@@ -107,11 +107,11 @@  discard block
 block discarded – undo
107 107
 		@ob_clean();
108 108
 
109 109
 		// Get the parameter from the request.
110
-		$is_homepage = isset( $_REQUEST['homepage'] ); //phpcs:ignore WordPress.Security.NonceVerification.Recommended
111
-		$post_id     = isset( $_REQUEST['id'] ) && is_numeric( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : null; //phpcs:ignore WordPress.Security.NonceVerification.Recommended
110
+		$is_homepage = isset($_REQUEST['homepage']); //phpcs:ignore WordPress.Security.NonceVerification.Recommended
111
+		$post_id     = isset($_REQUEST['id']) && is_numeric($_REQUEST['id']) ? intval($_REQUEST['id']) : null; //phpcs:ignore WordPress.Security.NonceVerification.Recommended
112 112
 
113 113
 		// Send the generated JSON-LD.
114
-		$this->send_jsonld( $this->get_jsonld( $is_homepage, $post_id ) );
114
+		$this->send_jsonld($this->get_jsonld($is_homepage, $post_id));
115 115
 
116 116
 	}
117 117
 
@@ -123,11 +123,11 @@  discard block
 block discarded – undo
123 123
 	 *
124 124
 	 * @since 3.18.5
125 125
 	 */
126
-	private function send_jsonld( $response ) {
126
+	private function send_jsonld($response) {
127 127
         // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
128
-		@header( 'Content-Type: application/ld+json; charset=' . get_option( 'blog_charset' ) );
129
-		echo wp_json_encode( $response );
130
-		if ( apply_filters( 'wp_doing_ajax', defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
128
+		@header('Content-Type: application/ld+json; charset='.get_option('blog_charset'));
129
+		echo wp_json_encode($response);
130
+		if (apply_filters('wp_doing_ajax', defined('DOING_AJAX') && DOING_AJAX)) {
131 131
 			wp_die();
132 132
 		} else {
133 133
 			die;
@@ -144,7 +144,7 @@  discard block
 block discarded – undo
144 144
 	 * @return array A JSON-LD structure.
145 145
 	 * @since 3.15.1
146 146
 	 */
147
-	public function get_jsonld( $is_homepage = false, $post_id = null, $context = Jsonld_Context_Enum::UNKNOWN ) {
147
+	public function get_jsonld($is_homepage = false, $post_id = null, $context = Jsonld_Context_Enum::UNKNOWN) {
148 148
 
149 149
 		// Tell NewRelic to ignore us, otherwise NewRelic customers might receive
150 150
 		// e-mails with a low apdex score.
@@ -153,14 +153,14 @@  discard block
 block discarded – undo
153 153
 		Wordlift_NewRelic_Adapter::ignore_apdex();
154 154
 
155 155
 		// Switch to Website converter if is home page.
156
-		if ( $is_homepage ) {
156
+		if ($is_homepage) {
157 157
 			/**
158 158
 			 * Filter: 'wordlift_disable_website_json_ld' - Allow disabling of the json+ld output.
159 159
 			 *
160 160
 			 * @since  3.14.0
161 161
 			 * @api    bool $display_search Whether or not to display json+ld search on the frontend.
162 162
 			 */
163
-			if ( apply_filters( 'wordlift_disable_website_json_ld', false ) ) {
163
+			if (apply_filters('wordlift_disable_website_json_ld', false)) {
164 164
 				return array();
165 165
 			}
166 166
 
@@ -172,7 +172,7 @@  discard block
 block discarded – undo
172 172
 		}
173 173
 
174 174
 		// If no id has been provided return an empty array.
175
-		if ( ! isset( $post_id ) ) {
175
+		if ( ! isset($post_id)) {
176 176
 			return array();
177 177
 		}
178 178
 
@@ -184,29 +184,29 @@  discard block
 block discarded – undo
184 184
 		// Set a reference to the entity_to_jsonld_converter to use in the closures.
185 185
 		$entity_to_jsonld_converter = $this->converter;
186 186
 
187
-		$jsonld = array( $entity_to_jsonld_converter->convert( $post_id, $references, $references_infos ) );
187
+		$jsonld = array($entity_to_jsonld_converter->convert($post_id, $references, $references_infos));
188 188
 
189 189
 		$that                       = $this;
190 190
 		$expanded_references_jsonld = array_map(
191
-			function ( $item ) use ( $context, $entity_to_jsonld_converter, &$references_infos, $that ) {
191
+			function($item) use ($context, $entity_to_jsonld_converter, &$references_infos, $that) {
192 192
 				// "2nd level properties" may not output here, e.g. a post
193 193
 				// mentioning an event, located in a place: the place is referenced
194 194
 				// via the `@id` but no other properties are loaded.
195 195
 				$ignored = array();
196
-				if ( $item instanceof Term_Reference ) {
196
+				if ($item instanceof Term_Reference) {
197 197
                     // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
198
-					  $term_jsonld = $that->term_jsonld_adapter->get( $item->get_id(), $context );
198
+					  $term_jsonld = $that->term_jsonld_adapter->get($item->get_id(), $context);
199 199
 
200 200
 					  // For term references, we publish a jsonld array on the page, use only the first item.
201
-					  return count( $term_jsonld ) > 0 ? $term_jsonld[0] : false;
202
-				} elseif ( $item instanceof Post_Reference ) {
201
+					  return count($term_jsonld) > 0 ? $term_jsonld[0] : false;
202
+				} elseif ($item instanceof Post_Reference) {
203 203
 					$item = $item->get_id();
204 204
 				}
205 205
 
206 206
 				// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
207
-				return $entity_to_jsonld_converter->convert( $item, $ignored, $references_infos );
207
+				return $entity_to_jsonld_converter->convert($item, $ignored, $references_infos);
208 208
 			},
209
-			array_unique( $references )
209
+			array_unique($references)
210 210
 		);
211 211
 
212 212
 		// Convert each URI to a JSON-LD array, while gathering referenced entities.
@@ -215,18 +215,18 @@  discard block
 block discarded – undo
215 215
 			$jsonld,
216 216
 			// Convert each URI in the references array to JSON-LD. We don't output
217 217
 			// entities already output above (hence the array_diff).
218
-			array_filter( $expanded_references_jsonld )
218
+			array_filter($expanded_references_jsonld)
219 219
 		);
220 220
 
221 221
 		$required_references = array_filter(
222 222
 			$references_infos,
223
-			function ( $item ) use ( $references ) {
223
+			function($item) use ($references) {
224 224
 
225
-				return isset( $item['reference'] ) &&
225
+				return isset($item['reference']) &&
226 226
 				   // Check that the reference is required
227 227
 				   $item['reference']->get_required() &&
228 228
 				   // Check that the reference isn't being output already.
229
-				   ! in_array( $item['reference']->get_id(), $references, true );
229
+				   ! in_array($item['reference']->get_id(), $references, true);
230 230
 			}
231 231
 		);
232 232
 
@@ -234,20 +234,20 @@  discard block
 block discarded – undo
234 234
 			$jsonld,
235 235
 			array_filter(
236 236
 				array_map(
237
-					function ( $item ) use ( $references, $entity_to_jsonld_converter ) {
237
+					function($item) use ($references, $entity_to_jsonld_converter) {
238 238
 
239
-						if ( ! isset( $item['reference'] ) ) {
239
+						if ( ! isset($item['reference'])) {
240 240
 							  return null;
241 241
 						}
242 242
 
243 243
 						$post_id = $item['reference']->get_id();
244
-						if ( in_array( $post_id, $references, true ) ) {
244
+						if (in_array($post_id, $references, true)) {
245 245
 							return null;
246 246
 						}
247 247
 
248 248
 						$references[] = $post_id;
249 249
 
250
-						return $entity_to_jsonld_converter->convert( $post_id, $references );
250
+						return $entity_to_jsonld_converter->convert($post_id, $references);
251 251
 					},
252 252
 					$required_references
253 253
 				)
@@ -262,7 +262,7 @@  discard block
 block discarded – undo
262 262
 		 * @var $jsonld array The final jsonld before outputting to page.
263 263
 		 * @var $post_id int The post id for which the jsonld is generated.
264 264
 		 */
265
-		$jsonld = apply_filters( 'wl_after_get_jsonld', $jsonld, $post_id, $context );
265
+		$jsonld = apply_filters('wl_after_get_jsonld', $jsonld, $post_id, $context);
266 266
 
267 267
 		return $jsonld;
268 268
 	}
@@ -281,9 +281,9 @@  discard block
 block discarded – undo
281 281
 		$is_homepage = is_home() || is_front_page();
282 282
 		$post_id     = is_singular() ? get_the_ID() : null;
283 283
 
284
-		$jsonld = wp_json_encode( $this->get_jsonld( $is_homepage, $post_id, Jsonld_Context_Enum::PAGE ) );
284
+		$jsonld = wp_json_encode($this->get_jsonld($is_homepage, $post_id, Jsonld_Context_Enum::PAGE));
285 285
 		?>
286
-		<script type="application/ld+json"><?php echo esc_html( $jsonld ); ?></script>
286
+		<script type="application/ld+json"><?php echo esc_html($jsonld); ?></script>
287 287
 													  <?php
288 288
 	}
289 289
 
Please login to merge, or discard this patch.
src/includes/class-wordlift-category-taxonomy-service.php 2 patches
Indentation   +60 added lines, -60 removed lines patch added patch discarded remove patch
@@ -18,75 +18,75 @@
 block discarded – undo
18 18
  */
19 19
 class Wordlift_Category_Taxonomy_Service {
20 20
 
21
-	/**
22
-	 * The {@link Wordlift_Entity_Post_Type_Service} instance.
23
-	 *
24
-	 * @since  3.11.0
25
-	 * @access private
26
-	 * @var \Wordlift_Entity_Post_Type_Service $entity_post_type_service The {@link Wordlift_Entity_Post_Type_Service} instance.
27
-	 */
28
-	private $entity_post_type_service;
21
+    /**
22
+     * The {@link Wordlift_Entity_Post_Type_Service} instance.
23
+     *
24
+     * @since  3.11.0
25
+     * @access private
26
+     * @var \Wordlift_Entity_Post_Type_Service $entity_post_type_service The {@link Wordlift_Entity_Post_Type_Service} instance.
27
+     */
28
+    private $entity_post_type_service;
29 29
 
30
-	/**
31
-	 * Create a {@link Wordlift_Category_Taxonomy_Service} instance.
32
-	 *
33
-	 * @since 3.11.0
34
-	 *
35
-	 * @param \Wordlift_Entity_Post_Type_Service $entity_post_type_service The {@link Wordlift_Entity_Post_Type_Service} instance.
36
-	 */
37
-	public function __construct( $entity_post_type_service ) {
30
+    /**
31
+     * Create a {@link Wordlift_Category_Taxonomy_Service} instance.
32
+     *
33
+     * @since 3.11.0
34
+     *
35
+     * @param \Wordlift_Entity_Post_Type_Service $entity_post_type_service The {@link Wordlift_Entity_Post_Type_Service} instance.
36
+     */
37
+    public function __construct( $entity_post_type_service ) {
38 38
 
39
-		$this->entity_post_type_service = $entity_post_type_service;
39
+        $this->entity_post_type_service = $entity_post_type_service;
40 40
 
41
-	}
41
+    }
42 42
 
43
-	/**
44
-	 * Set the entity post types as one to be included in archive pages.
45
-	 *
46
-	 * In order to have entities show up in standard WP categories (Posts categories)
47
-	 * we configure the `entity` post type, but we also need to alter the main
48
-	 * WP query (which by default queries posts only) to include the `entities`.
49
-	 *
50
-	 * @since 3.11.0
51
-	 *
52
-	 * @param WP_Query $query WP's {@link WP_Query} instance.
53
-	 */
54
-	public function pre_get_posts( $query ) {
43
+    /**
44
+     * Set the entity post types as one to be included in archive pages.
45
+     *
46
+     * In order to have entities show up in standard WP categories (Posts categories)
47
+     * we configure the `entity` post type, but we also need to alter the main
48
+     * WP query (which by default queries posts only) to include the `entities`.
49
+     *
50
+     * @since 3.11.0
51
+     *
52
+     * @param WP_Query $query WP's {@link WP_Query} instance.
53
+     */
54
+    public function pre_get_posts( $query ) {
55 55
 
56
-		// Only for the main query, avoid problems with widgets and what not.
57
-		if ( ! $query->is_main_query() ) {
58
-			return;
59
-		}
56
+        // Only for the main query, avoid problems with widgets and what not.
57
+        if ( ! $query->is_main_query() ) {
58
+            return;
59
+        }
60 60
 
61
-		// We don't want to alter the query if we're in the admin UI, if this is
62
-		// not a category query, or if the `suppress_filters` is set.
63
-		//
64
-		// Note that it is unlikely for `suppress_filter` to be set on the front
65
-		// end, but let's be safe if it is set the calling code assumes no
66
-		// modifications of queries.
67
-		//
68
-		// is_admin is needed, otherwise category based post filters will show
69
-		// both types and at the current release (4.7) it causes PHP errors.
70
-		if ( is_admin() || ! is_category() || ! empty( $query->query_vars['suppress_filters'] ) ) {
71
-			return;
72
-		}
61
+        // We don't want to alter the query if we're in the admin UI, if this is
62
+        // not a category query, or if the `suppress_filters` is set.
63
+        //
64
+        // Note that it is unlikely for `suppress_filter` to be set on the front
65
+        // end, but let's be safe if it is set the calling code assumes no
66
+        // modifications of queries.
67
+        //
68
+        // is_admin is needed, otherwise category based post filters will show
69
+        // both types and at the current release (4.7) it causes PHP errors.
70
+        if ( is_admin() || ! is_category() || ! empty( $query->query_vars['suppress_filters'] ) ) {
71
+            return;
72
+        }
73 73
 
74
-		// Check the current post types, maybe the category archive pages
75
-		// are already associated with other post types.
76
-		//
77
-		// If `post_type` isn't set, WP assumes `post` by default.
78
-		$post_types = $query->get( 'post_type' );
79
-		$post_types = (array) ( $post_types ? $post_types : 'post' );
74
+        // Check the current post types, maybe the category archive pages
75
+        // are already associated with other post types.
76
+        //
77
+        // If `post_type` isn't set, WP assumes `post` by default.
78
+        $post_types = $query->get( 'post_type' );
79
+        $post_types = (array) ( $post_types ? $post_types : 'post' );
80 80
 
81
-		// Add the entities post type only if the post post type is used in the query
82
-		// since we only want `entities` to appear alongside posts.
83
-		if ( in_array( 'post', $post_types, true ) ) {
84
-			$post_types[] = $this->entity_post_type_service->get_post_type();
85
-		}
81
+        // Add the entities post type only if the post post type is used in the query
82
+        // since we only want `entities` to appear alongside posts.
83
+        if ( in_array( 'post', $post_types, true ) ) {
84
+            $post_types[] = $this->entity_post_type_service->get_post_type();
85
+        }
86 86
 
87
-		// Update the query post types.
88
-		$query->set( 'post_type', $post_types );
87
+        // Update the query post types.
88
+        $query->set( 'post_type', $post_types );
89 89
 
90
-	}
90
+    }
91 91
 
92 92
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -34,7 +34,7 @@  discard block
 block discarded – undo
34 34
 	 *
35 35
 	 * @param \Wordlift_Entity_Post_Type_Service $entity_post_type_service The {@link Wordlift_Entity_Post_Type_Service} instance.
36 36
 	 */
37
-	public function __construct( $entity_post_type_service ) {
37
+	public function __construct($entity_post_type_service) {
38 38
 
39 39
 		$this->entity_post_type_service = $entity_post_type_service;
40 40
 
@@ -51,10 +51,10 @@  discard block
 block discarded – undo
51 51
 	 *
52 52
 	 * @param WP_Query $query WP's {@link WP_Query} instance.
53 53
 	 */
54
-	public function pre_get_posts( $query ) {
54
+	public function pre_get_posts($query) {
55 55
 
56 56
 		// Only for the main query, avoid problems with widgets and what not.
57
-		if ( ! $query->is_main_query() ) {
57
+		if ( ! $query->is_main_query()) {
58 58
 			return;
59 59
 		}
60 60
 
@@ -67,7 +67,7 @@  discard block
 block discarded – undo
67 67
 		//
68 68
 		// is_admin is needed, otherwise category based post filters will show
69 69
 		// both types and at the current release (4.7) it causes PHP errors.
70
-		if ( is_admin() || ! is_category() || ! empty( $query->query_vars['suppress_filters'] ) ) {
70
+		if (is_admin() || ! is_category() || ! empty($query->query_vars['suppress_filters'])) {
71 71
 			return;
72 72
 		}
73 73
 
@@ -75,17 +75,17 @@  discard block
 block discarded – undo
75 75
 		// are already associated with other post types.
76 76
 		//
77 77
 		// If `post_type` isn't set, WP assumes `post` by default.
78
-		$post_types = $query->get( 'post_type' );
79
-		$post_types = (array) ( $post_types ? $post_types : 'post' );
78
+		$post_types = $query->get('post_type');
79
+		$post_types = (array) ($post_types ? $post_types : 'post');
80 80
 
81 81
 		// Add the entities post type only if the post post type is used in the query
82 82
 		// since we only want `entities` to appear alongside posts.
83
-		if ( in_array( 'post', $post_types, true ) ) {
83
+		if (in_array('post', $post_types, true)) {
84 84
 			$post_types[] = $this->entity_post_type_service->get_post_type();
85 85
 		}
86 86
 
87 87
 		// Update the query post types.
88
-		$query->set( 'post_type', $post_types );
88
+		$query->set('post_type', $post_types);
89 89
 
90 90
 	}
91 91
 
Please login to merge, or discard this patch.
src/includes/class-wordlift-entity-type-adapter.php 2 patches
Indentation   +141 added lines, -141 removed lines patch added patch discarded remove patch
@@ -20,146 +20,146 @@
 block discarded – undo
20 20
  */
21 21
 class Wordlift_Entity_Type_Adapter {
22 22
 
23
-	/**
24
-	 * A {@link Wordlift_Log_Service} instance.
25
-	 *
26
-	 * @since  3.15.0
27
-	 * @access private
28
-	 * @var \Wordlift_Log_Service $log A {@link Wordlift_Log_Service} instance.
29
-	 */
30
-	private $log;
31
-
32
-	/**
33
-	 * The {@link Wordlift_Entity_Type_Service} instance.
34
-	 *
35
-	 * @since  3.15.0
36
-	 * @access private
37
-	 * @var \Wordlift_Entity_Type_Service $entity_type_service The {@link Wordlift_Entity_Type_Service} instance.
38
-	 */
39
-	private $entity_type_service;
40
-
41
-	/**
42
-	 * Create a {@link Wordlift_Entity_Type_Adapter} instance.
43
-	 *
44
-	 * @param \Wordlift_Entity_Type_Service $entity_type_service The {@link Wordlift_Entity_Type_Service} instance.
45
-	 *
46
-	 * @since 3.15.0
47
-	 */
48
-	public function __construct( $entity_type_service ) {
49
-
50
-		$this->log = Wordlift_Log_Service::get_logger( 'Wordlift_Entity_Type_Adapter' );
51
-
52
-		$this->entity_type_service = $entity_type_service;
53
-
54
-		add_filter(
55
-			'wl_default_entity_type_for_post_type',
56
-			array(
57
-				$this,
58
-				'default_entity_type_callback',
59
-			),
60
-			10,
61
-			2
62
-		);
63
-
64
-	}
65
-
66
-	/**
67
-	 * @param $entity_type string Entity type
68
-	 * @param $post_type string The post type
69
-	 *
70
-	 * @return string The default entity type depending on the post type.
71
-	 */
72
-	public function default_entity_type_callback( $entity_type, $post_type ) {
73
-		if ( 'product' === $post_type ) {
74
-			return 'http://schema.org/Product';
75
-		}
76
-
77
-		return $entity_type;
78
-	}
79
-
80
-	/**
81
-	 * Hook to `save_post`.
82
-	 *
83
-	 * This function is called when the `save_post` action is run. The
84
-	 * function checks whether an Entity Type term (from the Entity Types
85
-	 * taxonomy) is already assigned and, if not, it calls {@link Wordlift_Entity_Type_Service}
86
-	 * to set the default taxonomy term.
87
-	 *
88
-	 * @param int     $post_id The {@link WP_Post}'s id.
89
-	 * @param WP_Post $post The {@link WP_Post} instance.
90
-	 *
91
-	 * @since 3.15.0
92
-	 */
93
-	public function save_post( $post_id, $post ) {
94
-
95
-		if ( ! Wordlift_Entity_Type_Service::is_valid_entity_post_type( $post->post_type ) ) {
96
-			$this->log->debug( "Ignoring `{$post->post_type}` post type." );
97
-
98
-			// Bail out if the post can not be an entity.
99
-			return;
100
-		}
101
-
102
-		// Bail out if the post already has an entity type.
103
-		if ( apply_filters( 'wl_entity_type_adapter__save_post__has_entity_type', $this->entity_type_service->has_entity_type( $post_id ) ) ) {
104
-			$this->log->debug( "Post $post_id has already an entity type." );
105
-
106
-			return;
107
-		}
108
-
109
-		$this->log->debug( "Setting `Article` entity type for post $post_id." );
110
-
111
-		// Finally set the default entity type.
112
-
113
-		// For entities use a Thing
114
-		if ( 'entity' === $post->post_type ) {
115
-			$this->entity_type_service->set( $post_id, 'http://schema.org/Thing' );
116
-		} else {
117
-			// Get the entity types.
118
-			$entity_types = self::get_entity_types( $post->post_type );
119
-
120
-			// Set the entity type.
121
-			foreach ( $entity_types as $entity_type ) {
122
-				$this->entity_type_service->set( $post_id, $entity_type, false );
123
-			}
124
-		}
125
-
126
-	}
127
-
128
-	/**
129
-	 * Get the entity types for a post type.
130
-	 *
131
-	 * @param string $post_type The post type.
132
-	 *
133
-	 * @return array An array of entity types.
134
-	 * @since 3.20.0
135
-	 */
136
-	public static function get_entity_types( $post_type ) {
137
-
138
-		/**
139
-		 * Get the default entity type.
140
-		 *
141
-		 * @param string $entity_type The preset entity type.
142
-		 * @param string $post_type The post type.
143
-		 *
144
-		 * @since 3.20.0
145
-		 */
146
-		$default_entity_type = apply_filters( 'wl_default_entity_type_for_post_type', 'http://schema.org/Article', $post_type );
147
-
148
-		/**
149
-		 * Get the default entity types.
150
-		 *
151
-		 * Adding support to assign more than one entity type.
152
-		 *
153
-		 * @param array $entity_types The default entity types.
154
-		 * @param string $post_type The post type.
155
-		 *
156
-		 * @since 3.20.0
157
-		 *
158
-		 * @see Wordlift_Mapping_Service
159
-		 */
160
-		$entity_types = apply_filters( 'wl_default_entity_types_for_post_type', array( $default_entity_type ), $post_type );
161
-
162
-		return $entity_types;
163
-	}
23
+    /**
24
+     * A {@link Wordlift_Log_Service} instance.
25
+     *
26
+     * @since  3.15.0
27
+     * @access private
28
+     * @var \Wordlift_Log_Service $log A {@link Wordlift_Log_Service} instance.
29
+     */
30
+    private $log;
31
+
32
+    /**
33
+     * The {@link Wordlift_Entity_Type_Service} instance.
34
+     *
35
+     * @since  3.15.0
36
+     * @access private
37
+     * @var \Wordlift_Entity_Type_Service $entity_type_service The {@link Wordlift_Entity_Type_Service} instance.
38
+     */
39
+    private $entity_type_service;
40
+
41
+    /**
42
+     * Create a {@link Wordlift_Entity_Type_Adapter} instance.
43
+     *
44
+     * @param \Wordlift_Entity_Type_Service $entity_type_service The {@link Wordlift_Entity_Type_Service} instance.
45
+     *
46
+     * @since 3.15.0
47
+     */
48
+    public function __construct( $entity_type_service ) {
49
+
50
+        $this->log = Wordlift_Log_Service::get_logger( 'Wordlift_Entity_Type_Adapter' );
51
+
52
+        $this->entity_type_service = $entity_type_service;
53
+
54
+        add_filter(
55
+            'wl_default_entity_type_for_post_type',
56
+            array(
57
+                $this,
58
+                'default_entity_type_callback',
59
+            ),
60
+            10,
61
+            2
62
+        );
63
+
64
+    }
65
+
66
+    /**
67
+     * @param $entity_type string Entity type
68
+     * @param $post_type string The post type
69
+     *
70
+     * @return string The default entity type depending on the post type.
71
+     */
72
+    public function default_entity_type_callback( $entity_type, $post_type ) {
73
+        if ( 'product' === $post_type ) {
74
+            return 'http://schema.org/Product';
75
+        }
76
+
77
+        return $entity_type;
78
+    }
79
+
80
+    /**
81
+     * Hook to `save_post`.
82
+     *
83
+     * This function is called when the `save_post` action is run. The
84
+     * function checks whether an Entity Type term (from the Entity Types
85
+     * taxonomy) is already assigned and, if not, it calls {@link Wordlift_Entity_Type_Service}
86
+     * to set the default taxonomy term.
87
+     *
88
+     * @param int     $post_id The {@link WP_Post}'s id.
89
+     * @param WP_Post $post The {@link WP_Post} instance.
90
+     *
91
+     * @since 3.15.0
92
+     */
93
+    public function save_post( $post_id, $post ) {
94
+
95
+        if ( ! Wordlift_Entity_Type_Service::is_valid_entity_post_type( $post->post_type ) ) {
96
+            $this->log->debug( "Ignoring `{$post->post_type}` post type." );
97
+
98
+            // Bail out if the post can not be an entity.
99
+            return;
100
+        }
101
+
102
+        // Bail out if the post already has an entity type.
103
+        if ( apply_filters( 'wl_entity_type_adapter__save_post__has_entity_type', $this->entity_type_service->has_entity_type( $post_id ) ) ) {
104
+            $this->log->debug( "Post $post_id has already an entity type." );
105
+
106
+            return;
107
+        }
108
+
109
+        $this->log->debug( "Setting `Article` entity type for post $post_id." );
110
+
111
+        // Finally set the default entity type.
112
+
113
+        // For entities use a Thing
114
+        if ( 'entity' === $post->post_type ) {
115
+            $this->entity_type_service->set( $post_id, 'http://schema.org/Thing' );
116
+        } else {
117
+            // Get the entity types.
118
+            $entity_types = self::get_entity_types( $post->post_type );
119
+
120
+            // Set the entity type.
121
+            foreach ( $entity_types as $entity_type ) {
122
+                $this->entity_type_service->set( $post_id, $entity_type, false );
123
+            }
124
+        }
125
+
126
+    }
127
+
128
+    /**
129
+     * Get the entity types for a post type.
130
+     *
131
+     * @param string $post_type The post type.
132
+     *
133
+     * @return array An array of entity types.
134
+     * @since 3.20.0
135
+     */
136
+    public static function get_entity_types( $post_type ) {
137
+
138
+        /**
139
+         * Get the default entity type.
140
+         *
141
+         * @param string $entity_type The preset entity type.
142
+         * @param string $post_type The post type.
143
+         *
144
+         * @since 3.20.0
145
+         */
146
+        $default_entity_type = apply_filters( 'wl_default_entity_type_for_post_type', 'http://schema.org/Article', $post_type );
147
+
148
+        /**
149
+         * Get the default entity types.
150
+         *
151
+         * Adding support to assign more than one entity type.
152
+         *
153
+         * @param array $entity_types The default entity types.
154
+         * @param string $post_type The post type.
155
+         *
156
+         * @since 3.20.0
157
+         *
158
+         * @see Wordlift_Mapping_Service
159
+         */
160
+        $entity_types = apply_filters( 'wl_default_entity_types_for_post_type', array( $default_entity_type ), $post_type );
161
+
162
+        return $entity_types;
163
+    }
164 164
 
165 165
 }
Please login to merge, or discard this patch.
Spacing   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -45,9 +45,9 @@  discard block
 block discarded – undo
45 45
 	 *
46 46
 	 * @since 3.15.0
47 47
 	 */
48
-	public function __construct( $entity_type_service ) {
48
+	public function __construct($entity_type_service) {
49 49
 
50
-		$this->log = Wordlift_Log_Service::get_logger( 'Wordlift_Entity_Type_Adapter' );
50
+		$this->log = Wordlift_Log_Service::get_logger('Wordlift_Entity_Type_Adapter');
51 51
 
52 52
 		$this->entity_type_service = $entity_type_service;
53 53
 
@@ -69,8 +69,8 @@  discard block
 block discarded – undo
69 69
 	 *
70 70
 	 * @return string The default entity type depending on the post type.
71 71
 	 */
72
-	public function default_entity_type_callback( $entity_type, $post_type ) {
73
-		if ( 'product' === $post_type ) {
72
+	public function default_entity_type_callback($entity_type, $post_type) {
73
+		if ('product' === $post_type) {
74 74
 			return 'http://schema.org/Product';
75 75
 		}
76 76
 
@@ -90,36 +90,36 @@  discard block
 block discarded – undo
90 90
 	 *
91 91
 	 * @since 3.15.0
92 92
 	 */
93
-	public function save_post( $post_id, $post ) {
93
+	public function save_post($post_id, $post) {
94 94
 
95
-		if ( ! Wordlift_Entity_Type_Service::is_valid_entity_post_type( $post->post_type ) ) {
96
-			$this->log->debug( "Ignoring `{$post->post_type}` post type." );
95
+		if ( ! Wordlift_Entity_Type_Service::is_valid_entity_post_type($post->post_type)) {
96
+			$this->log->debug("Ignoring `{$post->post_type}` post type.");
97 97
 
98 98
 			// Bail out if the post can not be an entity.
99 99
 			return;
100 100
 		}
101 101
 
102 102
 		// Bail out if the post already has an entity type.
103
-		if ( apply_filters( 'wl_entity_type_adapter__save_post__has_entity_type', $this->entity_type_service->has_entity_type( $post_id ) ) ) {
104
-			$this->log->debug( "Post $post_id has already an entity type." );
103
+		if (apply_filters('wl_entity_type_adapter__save_post__has_entity_type', $this->entity_type_service->has_entity_type($post_id))) {
104
+			$this->log->debug("Post $post_id has already an entity type.");
105 105
 
106 106
 			return;
107 107
 		}
108 108
 
109
-		$this->log->debug( "Setting `Article` entity type for post $post_id." );
109
+		$this->log->debug("Setting `Article` entity type for post $post_id.");
110 110
 
111 111
 		// Finally set the default entity type.
112 112
 
113 113
 		// For entities use a Thing
114
-		if ( 'entity' === $post->post_type ) {
115
-			$this->entity_type_service->set( $post_id, 'http://schema.org/Thing' );
114
+		if ('entity' === $post->post_type) {
115
+			$this->entity_type_service->set($post_id, 'http://schema.org/Thing');
116 116
 		} else {
117 117
 			// Get the entity types.
118
-			$entity_types = self::get_entity_types( $post->post_type );
118
+			$entity_types = self::get_entity_types($post->post_type);
119 119
 
120 120
 			// Set the entity type.
121
-			foreach ( $entity_types as $entity_type ) {
122
-				$this->entity_type_service->set( $post_id, $entity_type, false );
121
+			foreach ($entity_types as $entity_type) {
122
+				$this->entity_type_service->set($post_id, $entity_type, false);
123 123
 			}
124 124
 		}
125 125
 
@@ -133,7 +133,7 @@  discard block
 block discarded – undo
133 133
 	 * @return array An array of entity types.
134 134
 	 * @since 3.20.0
135 135
 	 */
136
-	public static function get_entity_types( $post_type ) {
136
+	public static function get_entity_types($post_type) {
137 137
 
138 138
 		/**
139 139
 		 * Get the default entity type.
@@ -143,7 +143,7 @@  discard block
 block discarded – undo
143 143
 		 *
144 144
 		 * @since 3.20.0
145 145
 		 */
146
-		$default_entity_type = apply_filters( 'wl_default_entity_type_for_post_type', 'http://schema.org/Article', $post_type );
146
+		$default_entity_type = apply_filters('wl_default_entity_type_for_post_type', 'http://schema.org/Article', $post_type);
147 147
 
148 148
 		/**
149 149
 		 * Get the default entity types.
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
 		 *
158 158
 		 * @see Wordlift_Mapping_Service
159 159
 		 */
160
-		$entity_types = apply_filters( 'wl_default_entity_types_for_post_type', array( $default_entity_type ), $post_type );
160
+		$entity_types = apply_filters('wl_default_entity_types_for_post_type', array($default_entity_type), $post_type);
161 161
 
162 162
 		return $entity_types;
163 163
 	}
Please login to merge, or discard this patch.
src/includes/class-wordlift-deactivator-feedback.php 2 patches
Indentation   +141 added lines, -141 removed lines patch added patch discarded remove patch
@@ -21,145 +21,145 @@
 block discarded – undo
21 21
  */
22 22
 class Wordlift_Deactivator_Feedback {
23 23
 
24
-	/**
25
-	 * A {@link Wordlift_Log_Service} instance.
26
-	 *
27
-	 * @since  3.19.0
28
-	 * @access private
29
-	 * @var \Wordlift_Log_Service $log A {@link Wordlift_Log_Service} instance.
30
-	 */
31
-	private $log;
32
-
33
-	/**
34
-	 * Wordlift_Deactivator_Feedback constructor.
35
-	 *
36
-	 * @since 3.19.0
37
-	 */
38
-	public function __construct() {
39
-
40
-		$this->log = Wordlift_Log_Service::get_logger( 'Wordlift_Deactivator_Feedback' );
41
-
42
-	}
43
-
44
-	/**
45
-	 * Checks whether we have permissions to show the popup.
46
-	 *
47
-	 * @return  bool `true` if we have permissions, false otherwise.
48
-	 * @version 3.19.0
49
-	 */
50
-	private function has_permission_to_show_popup() {
51
-		// Get the current page.
52
-		global $pagenow;
53
-
54
-		// Bail if the user doesn't have permissions
55
-		// or if it's not the plugins page.
56
-		if ( 'plugins.php' !== $pagenow ) {
57
-			return false;
58
-		}
59
-
60
-		// Get the user preferences. We shouldn't show the feedback popup
61
-		// if we don't have permissions for that.
62
-		$user_preferences = Wordlift_Configuration_Service::get_instance()->get_diagnostic_preferences();
63
-
64
-		// Bail. We don't have preferences to show the popup.
65
-		if ( 'yes' !== $user_preferences ) {
66
-			return false;
67
-		}
68
-
69
-		return true;
70
-	}
71
-
72
-	/**
73
-	 * Render the feedback popup in the footer.
74
-	 *
75
-	 * @return  void
76
-	 * @version 3.19.0
77
-	 */
78
-	public function render_feedback_popup() {
79
-		// Bail if we don't have permissions to show the popup.
80
-		if ( ! $this->has_permission_to_show_popup() ) {
81
-			return;
82
-		}
83
-		// Include the partial.
84
-		include plugin_dir_path( __FILE__ ) . '../admin/partials/wordlift-admin-deactivation-feedback-popup.php';
85
-	}
86
-
87
-	/**
88
-	 * Enqueue required popup scripts and styles.
89
-	 *
90
-	 * @return  void
91
-	 * @version 3.19.0
92
-	 */
93
-	public function enqueue_popup_scripts() {
94
-		// Bail if we don't have permissions to show the popup.
95
-		if ( ! $this->has_permission_to_show_popup() ) {
96
-			return;
97
-		}
98
-
99
-		wp_enqueue_style( 'wordlift-admin-feedback-popup', plugin_dir_url( __DIR__ ) . 'admin/css/wordlift-admin-feedback-popup.css', array(), WORDLIFT_VERSION );
100
-		wp_enqueue_script( 'wordlift-admin-feedback-popup', plugin_dir_url( __DIR__ ) . 'admin/js/wordlift-admin-feedback-popup.js', array( 'jquery' ), WORDLIFT_VERSION, false );
101
-	}
102
-
103
-	/**
104
-	 * Handle the deactivation ajax call
105
-	 * and perform a request to external server.
106
-	 *
107
-	 * @return  void
108
-	 * @version 3.19.0
109
-	 */
110
-	public function wl_deactivation_feedback() {
111
-		// Bail if the nonce is not valid.
112
-		if (
113
-			empty( $_POST['wl_deactivation_feedback_nonce'] ) || // The nonce doens't exists.
114
-			! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['wl_deactivation_feedback_nonce'] ) ), 'wl_deactivation_feedback_nonce' ) // The nonce is invalid.
115
-		) {
116
-			wp_send_json_error( __( 'Nonce Security Check Failed!', 'wordlift' ) );
117
-		}
118
-
119
-		// We allow user to deactivate without providing a reason
120
-		// so bail and send success response.
121
-		if ( empty( $_POST['code'] ) ) {
122
-			wp_send_json_success();
123
-		}
124
-
125
-		$plugin_data = get_plugin_data( plugin_dir_path( __DIR__ ) . 'wordlift.php', false, false );
126
-
127
-		// Prepare the options.
128
-		$options = array(
129
-			// The deactivation reason.
130
-			'code'             => sanitize_text_field( wp_unslash( (string) $_POST['code'] ) ),
131
-			// Additional information if provided.
132
-			'details'          => ( ! empty( $_POST['details'] ) ) ? sanitize_text_field( wp_unslash( (string) $_POST['details'] ) ) : '',
133
-			// The website url.
134
-			'url'              => get_bloginfo( 'url' ),
135
-			// WP version.
136
-			'wordpressVersion' => get_bloginfo( 'version' ),
137
-			// WL version.
138
-			'wordliftVersion'  => $plugin_data['Version'],
139
-			// The admin email.
140
-			'email'            => get_bloginfo( 'admin_email' ),
141
-		);
142
-
143
-		$response = wp_remote_post(
144
-			Wordlift_Configuration_Service::get_instance()->get_deactivation_feedback_url(),
145
-			array(
146
-				'method'  => 'POST',
147
-				'body'    => wp_json_encode( $options ),
148
-				'headers' => array( 'Content-Type' => 'application/json; charset=utf-8' ),
149
-			)
150
-		);
151
-
152
-		$code    = wp_remote_retrieve_response_code( $response );
153
-		$message = wp_remote_retrieve_response_message( $response );
154
-
155
-		// Add message to the error log if the response code is not 200.
156
-		if ( 201 !== $code ) {
157
-			// Write the error in the logs.
158
-			$this->log->error( 'An error occurred while requesting a feedback endpoint error_code: ' . $code . ' message: ' . $message );
159
-		}
160
-
161
-		// We should send success message even when the feedback is not
162
-		// send, because otherwise the plugin cannot be deactivated.
163
-		wp_send_json_success();
164
-	}
24
+    /**
25
+     * A {@link Wordlift_Log_Service} instance.
26
+     *
27
+     * @since  3.19.0
28
+     * @access private
29
+     * @var \Wordlift_Log_Service $log A {@link Wordlift_Log_Service} instance.
30
+     */
31
+    private $log;
32
+
33
+    /**
34
+     * Wordlift_Deactivator_Feedback constructor.
35
+     *
36
+     * @since 3.19.0
37
+     */
38
+    public function __construct() {
39
+
40
+        $this->log = Wordlift_Log_Service::get_logger( 'Wordlift_Deactivator_Feedback' );
41
+
42
+    }
43
+
44
+    /**
45
+     * Checks whether we have permissions to show the popup.
46
+     *
47
+     * @return  bool `true` if we have permissions, false otherwise.
48
+     * @version 3.19.0
49
+     */
50
+    private function has_permission_to_show_popup() {
51
+        // Get the current page.
52
+        global $pagenow;
53
+
54
+        // Bail if the user doesn't have permissions
55
+        // or if it's not the plugins page.
56
+        if ( 'plugins.php' !== $pagenow ) {
57
+            return false;
58
+        }
59
+
60
+        // Get the user preferences. We shouldn't show the feedback popup
61
+        // if we don't have permissions for that.
62
+        $user_preferences = Wordlift_Configuration_Service::get_instance()->get_diagnostic_preferences();
63
+
64
+        // Bail. We don't have preferences to show the popup.
65
+        if ( 'yes' !== $user_preferences ) {
66
+            return false;
67
+        }
68
+
69
+        return true;
70
+    }
71
+
72
+    /**
73
+     * Render the feedback popup in the footer.
74
+     *
75
+     * @return  void
76
+     * @version 3.19.0
77
+     */
78
+    public function render_feedback_popup() {
79
+        // Bail if we don't have permissions to show the popup.
80
+        if ( ! $this->has_permission_to_show_popup() ) {
81
+            return;
82
+        }
83
+        // Include the partial.
84
+        include plugin_dir_path( __FILE__ ) . '../admin/partials/wordlift-admin-deactivation-feedback-popup.php';
85
+    }
86
+
87
+    /**
88
+     * Enqueue required popup scripts and styles.
89
+     *
90
+     * @return  void
91
+     * @version 3.19.0
92
+     */
93
+    public function enqueue_popup_scripts() {
94
+        // Bail if we don't have permissions to show the popup.
95
+        if ( ! $this->has_permission_to_show_popup() ) {
96
+            return;
97
+        }
98
+
99
+        wp_enqueue_style( 'wordlift-admin-feedback-popup', plugin_dir_url( __DIR__ ) . 'admin/css/wordlift-admin-feedback-popup.css', array(), WORDLIFT_VERSION );
100
+        wp_enqueue_script( 'wordlift-admin-feedback-popup', plugin_dir_url( __DIR__ ) . 'admin/js/wordlift-admin-feedback-popup.js', array( 'jquery' ), WORDLIFT_VERSION, false );
101
+    }
102
+
103
+    /**
104
+     * Handle the deactivation ajax call
105
+     * and perform a request to external server.
106
+     *
107
+     * @return  void
108
+     * @version 3.19.0
109
+     */
110
+    public function wl_deactivation_feedback() {
111
+        // Bail if the nonce is not valid.
112
+        if (
113
+            empty( $_POST['wl_deactivation_feedback_nonce'] ) || // The nonce doens't exists.
114
+            ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['wl_deactivation_feedback_nonce'] ) ), 'wl_deactivation_feedback_nonce' ) // The nonce is invalid.
115
+        ) {
116
+            wp_send_json_error( __( 'Nonce Security Check Failed!', 'wordlift' ) );
117
+        }
118
+
119
+        // We allow user to deactivate without providing a reason
120
+        // so bail and send success response.
121
+        if ( empty( $_POST['code'] ) ) {
122
+            wp_send_json_success();
123
+        }
124
+
125
+        $plugin_data = get_plugin_data( plugin_dir_path( __DIR__ ) . 'wordlift.php', false, false );
126
+
127
+        // Prepare the options.
128
+        $options = array(
129
+            // The deactivation reason.
130
+            'code'             => sanitize_text_field( wp_unslash( (string) $_POST['code'] ) ),
131
+            // Additional information if provided.
132
+            'details'          => ( ! empty( $_POST['details'] ) ) ? sanitize_text_field( wp_unslash( (string) $_POST['details'] ) ) : '',
133
+            // The website url.
134
+            'url'              => get_bloginfo( 'url' ),
135
+            // WP version.
136
+            'wordpressVersion' => get_bloginfo( 'version' ),
137
+            // WL version.
138
+            'wordliftVersion'  => $plugin_data['Version'],
139
+            // The admin email.
140
+            'email'            => get_bloginfo( 'admin_email' ),
141
+        );
142
+
143
+        $response = wp_remote_post(
144
+            Wordlift_Configuration_Service::get_instance()->get_deactivation_feedback_url(),
145
+            array(
146
+                'method'  => 'POST',
147
+                'body'    => wp_json_encode( $options ),
148
+                'headers' => array( 'Content-Type' => 'application/json; charset=utf-8' ),
149
+            )
150
+        );
151
+
152
+        $code    = wp_remote_retrieve_response_code( $response );
153
+        $message = wp_remote_retrieve_response_message( $response );
154
+
155
+        // Add message to the error log if the response code is not 200.
156
+        if ( 201 !== $code ) {
157
+            // Write the error in the logs.
158
+            $this->log->error( 'An error occurred while requesting a feedback endpoint error_code: ' . $code . ' message: ' . $message );
159
+        }
160
+
161
+        // We should send success message even when the feedback is not
162
+        // send, because otherwise the plugin cannot be deactivated.
163
+        wp_send_json_success();
164
+    }
165 165
 }
Please login to merge, or discard this patch.
Spacing   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
 	 */
38 38
 	public function __construct() {
39 39
 
40
-		$this->log = Wordlift_Log_Service::get_logger( 'Wordlift_Deactivator_Feedback' );
40
+		$this->log = Wordlift_Log_Service::get_logger('Wordlift_Deactivator_Feedback');
41 41
 
42 42
 	}
43 43
 
@@ -53,7 +53,7 @@  discard block
 block discarded – undo
53 53
 
54 54
 		// Bail if the user doesn't have permissions
55 55
 		// or if it's not the plugins page.
56
-		if ( 'plugins.php' !== $pagenow ) {
56
+		if ('plugins.php' !== $pagenow) {
57 57
 			return false;
58 58
 		}
59 59
 
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
 		$user_preferences = Wordlift_Configuration_Service::get_instance()->get_diagnostic_preferences();
63 63
 
64 64
 		// Bail. We don't have preferences to show the popup.
65
-		if ( 'yes' !== $user_preferences ) {
65
+		if ('yes' !== $user_preferences) {
66 66
 			return false;
67 67
 		}
68 68
 
@@ -77,11 +77,11 @@  discard block
 block discarded – undo
77 77
 	 */
78 78
 	public function render_feedback_popup() {
79 79
 		// Bail if we don't have permissions to show the popup.
80
-		if ( ! $this->has_permission_to_show_popup() ) {
80
+		if ( ! $this->has_permission_to_show_popup()) {
81 81
 			return;
82 82
 		}
83 83
 		// Include the partial.
84
-		include plugin_dir_path( __FILE__ ) . '../admin/partials/wordlift-admin-deactivation-feedback-popup.php';
84
+		include plugin_dir_path(__FILE__).'../admin/partials/wordlift-admin-deactivation-feedback-popup.php';
85 85
 	}
86 86
 
87 87
 	/**
@@ -92,12 +92,12 @@  discard block
 block discarded – undo
92 92
 	 */
93 93
 	public function enqueue_popup_scripts() {
94 94
 		// Bail if we don't have permissions to show the popup.
95
-		if ( ! $this->has_permission_to_show_popup() ) {
95
+		if ( ! $this->has_permission_to_show_popup()) {
96 96
 			return;
97 97
 		}
98 98
 
99
-		wp_enqueue_style( 'wordlift-admin-feedback-popup', plugin_dir_url( __DIR__ ) . 'admin/css/wordlift-admin-feedback-popup.css', array(), WORDLIFT_VERSION );
100
-		wp_enqueue_script( 'wordlift-admin-feedback-popup', plugin_dir_url( __DIR__ ) . 'admin/js/wordlift-admin-feedback-popup.js', array( 'jquery' ), WORDLIFT_VERSION, false );
99
+		wp_enqueue_style('wordlift-admin-feedback-popup', plugin_dir_url(__DIR__).'admin/css/wordlift-admin-feedback-popup.css', array(), WORDLIFT_VERSION);
100
+		wp_enqueue_script('wordlift-admin-feedback-popup', plugin_dir_url(__DIR__).'admin/js/wordlift-admin-feedback-popup.js', array('jquery'), WORDLIFT_VERSION, false);
101 101
 	}
102 102
 
103 103
 	/**
@@ -110,52 +110,52 @@  discard block
 block discarded – undo
110 110
 	public function wl_deactivation_feedback() {
111 111
 		// Bail if the nonce is not valid.
112 112
 		if (
113
-			empty( $_POST['wl_deactivation_feedback_nonce'] ) || // The nonce doens't exists.
114
-			! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['wl_deactivation_feedback_nonce'] ) ), 'wl_deactivation_feedback_nonce' ) // The nonce is invalid.
113
+			empty($_POST['wl_deactivation_feedback_nonce']) || // The nonce doens't exists.
114
+			! wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['wl_deactivation_feedback_nonce'])), 'wl_deactivation_feedback_nonce') // The nonce is invalid.
115 115
 		) {
116
-			wp_send_json_error( __( 'Nonce Security Check Failed!', 'wordlift' ) );
116
+			wp_send_json_error(__('Nonce Security Check Failed!', 'wordlift'));
117 117
 		}
118 118
 
119 119
 		// We allow user to deactivate without providing a reason
120 120
 		// so bail and send success response.
121
-		if ( empty( $_POST['code'] ) ) {
121
+		if (empty($_POST['code'])) {
122 122
 			wp_send_json_success();
123 123
 		}
124 124
 
125
-		$plugin_data = get_plugin_data( plugin_dir_path( __DIR__ ) . 'wordlift.php', false, false );
125
+		$plugin_data = get_plugin_data(plugin_dir_path(__DIR__).'wordlift.php', false, false);
126 126
 
127 127
 		// Prepare the options.
128 128
 		$options = array(
129 129
 			// The deactivation reason.
130
-			'code'             => sanitize_text_field( wp_unslash( (string) $_POST['code'] ) ),
130
+			'code'             => sanitize_text_field(wp_unslash((string) $_POST['code'])),
131 131
 			// Additional information if provided.
132
-			'details'          => ( ! empty( $_POST['details'] ) ) ? sanitize_text_field( wp_unslash( (string) $_POST['details'] ) ) : '',
132
+			'details'          => ( ! empty($_POST['details'])) ? sanitize_text_field(wp_unslash((string) $_POST['details'])) : '',
133 133
 			// The website url.
134
-			'url'              => get_bloginfo( 'url' ),
134
+			'url'              => get_bloginfo('url'),
135 135
 			// WP version.
136
-			'wordpressVersion' => get_bloginfo( 'version' ),
136
+			'wordpressVersion' => get_bloginfo('version'),
137 137
 			// WL version.
138 138
 			'wordliftVersion'  => $plugin_data['Version'],
139 139
 			// The admin email.
140
-			'email'            => get_bloginfo( 'admin_email' ),
140
+			'email'            => get_bloginfo('admin_email'),
141 141
 		);
142 142
 
143 143
 		$response = wp_remote_post(
144 144
 			Wordlift_Configuration_Service::get_instance()->get_deactivation_feedback_url(),
145 145
 			array(
146 146
 				'method'  => 'POST',
147
-				'body'    => wp_json_encode( $options ),
148
-				'headers' => array( 'Content-Type' => 'application/json; charset=utf-8' ),
147
+				'body'    => wp_json_encode($options),
148
+				'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
149 149
 			)
150 150
 		);
151 151
 
152
-		$code    = wp_remote_retrieve_response_code( $response );
153
-		$message = wp_remote_retrieve_response_message( $response );
152
+		$code    = wp_remote_retrieve_response_code($response);
153
+		$message = wp_remote_retrieve_response_message($response);
154 154
 
155 155
 		// Add message to the error log if the response code is not 200.
156
-		if ( 201 !== $code ) {
156
+		if (201 !== $code) {
157 157
 			// Write the error in the logs.
158
-			$this->log->error( 'An error occurred while requesting a feedback endpoint error_code: ' . $code . ' message: ' . $message );
158
+			$this->log->error('An error occurred while requesting a feedback endpoint error_code: '.$code.' message: '.$message);
159 159
 		}
160 160
 
161 161
 		// We should send success message even when the feedback is not
Please login to merge, or discard this patch.
src/includes/class-wordlift-loader.php 2 patches
Indentation   +102 added lines, -102 removed lines patch added patch discarded remove patch
@@ -23,107 +23,107 @@
 block discarded – undo
23 23
  */
24 24
 class Wordlift_Loader {
25 25
 
26
-	/**
27
-	 * The array of actions registered with WordPress.
28
-	 *
29
-	 * @since    1.0.0
30
-	 * @access   protected
31
-	 * @var      array    $actions    The actions registered with WordPress to fire when the plugin loads.
32
-	 */
33
-	protected $actions;
34
-
35
-	/**
36
-	 * The array of filters registered with WordPress.
37
-	 *
38
-	 * @since    1.0.0
39
-	 * @access   protected
40
-	 * @var      array    $filters    The filters registered with WordPress to fire when the plugin loads.
41
-	 */
42
-	protected $filters;
43
-
44
-	/**
45
-	 * Initialize the collections used to maintain the actions and filters.
46
-	 *
47
-	 * @since    1.0.0
48
-	 */
49
-	public function __construct() {
50
-
51
-		$this->actions = array();
52
-		$this->filters = array();
53
-
54
-	}
55
-
56
-	/**
57
-	 * Add a new action to the collection to be registered with WordPress.
58
-	 *
59
-	 * @since    1.0.0
60
-	 * @param    string $hook             The name of the WordPress action that is being registered.
61
-	 * @param    object $component        A reference to the instance of the object on which the action is defined.
62
-	 * @param    string $callback         The name of the function definition on the $component.
63
-	 * @param    int    $priority         Optional. he priority at which the function should be fired. Default is 10.
64
-	 * @param    int    $accepted_args    Optional. The number of arguments that should be passed to the $callback. Default is 1.
65
-	 */
66
-	public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
67
-		add_action( $hook, array( $component, $callback ), $priority, $accepted_args );
68
-	}
69
-
70
-	/**
71
-	 * Add a new filter to the collection to be registered with WordPress.
72
-	 *
73
-	 * @since    1.0.0
74
-	 * @param    string $hook             The name of the WordPress filter that is being registered.
75
-	 * @param    object $component        A reference to the instance of the object on which the filter is defined.
76
-	 * @param    string $callback         The name of the function definition on the $component.
77
-	 * @param    int    $priority         Optional. he priority at which the function should be fired. Default is 10.
78
-	 * @param    int    $accepted_args    Optional. The number of arguments that should be passed to the $callback. Default is 1
79
-	 */
80
-	public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
81
-		add_filter( $hook, array( $component, $callback ), $priority, $accepted_args );
82
-	}
83
-
84
-	/**
85
-	 * A utility function that is used to register the actions and hooks into a single
86
-	 * collection.
87
-	 *
88
-	 * @since    1.0.0
89
-	 * @access   private
90
-	 * @param    array  $hooks            The collection of hooks that is being registered (that is, actions or filters).
91
-	 * @param    string $hook             The name of the WordPress filter that is being registered.
92
-	 * @param    object $component        A reference to the instance of the object on which the filter is defined.
93
-	 * @param    string $callback         The name of the function definition on the $component.
94
-	 * @param    int    $priority         The priority at which the function should be fired.
95
-	 * @param    int    $accepted_args    The number of arguments that should be passed to the $callback.
96
-	 * @return   array                                  The collection of actions and filters registered with WordPress.
97
-	 */
98
-	private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) {
99
-
100
-		$hooks[] = array(
101
-			'hook'          => $hook,
102
-			'component'     => $component,
103
-			'callback'      => $callback,
104
-			'priority'      => $priority,
105
-			'accepted_args' => $accepted_args,
106
-		);
107
-
108
-		return $hooks;
109
-
110
-	}
111
-
112
-	/**
113
-	 * Register the filters and actions with WordPress.
114
-	 *
115
-	 * @since    1.0.0
116
-	 */
117
-	public function run() {
118
-
119
-		foreach ( $this->filters as $hook ) {
120
-			add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
121
-		}
122
-
123
-		foreach ( $this->actions as $hook ) {
124
-			add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
125
-		}
126
-
127
-	}
26
+    /**
27
+     * The array of actions registered with WordPress.
28
+     *
29
+     * @since    1.0.0
30
+     * @access   protected
31
+     * @var      array    $actions    The actions registered with WordPress to fire when the plugin loads.
32
+     */
33
+    protected $actions;
34
+
35
+    /**
36
+     * The array of filters registered with WordPress.
37
+     *
38
+     * @since    1.0.0
39
+     * @access   protected
40
+     * @var      array    $filters    The filters registered with WordPress to fire when the plugin loads.
41
+     */
42
+    protected $filters;
43
+
44
+    /**
45
+     * Initialize the collections used to maintain the actions and filters.
46
+     *
47
+     * @since    1.0.0
48
+     */
49
+    public function __construct() {
50
+
51
+        $this->actions = array();
52
+        $this->filters = array();
53
+
54
+    }
55
+
56
+    /**
57
+     * Add a new action to the collection to be registered with WordPress.
58
+     *
59
+     * @since    1.0.0
60
+     * @param    string $hook             The name of the WordPress action that is being registered.
61
+     * @param    object $component        A reference to the instance of the object on which the action is defined.
62
+     * @param    string $callback         The name of the function definition on the $component.
63
+     * @param    int    $priority         Optional. he priority at which the function should be fired. Default is 10.
64
+     * @param    int    $accepted_args    Optional. The number of arguments that should be passed to the $callback. Default is 1.
65
+     */
66
+    public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
67
+        add_action( $hook, array( $component, $callback ), $priority, $accepted_args );
68
+    }
69
+
70
+    /**
71
+     * Add a new filter to the collection to be registered with WordPress.
72
+     *
73
+     * @since    1.0.0
74
+     * @param    string $hook             The name of the WordPress filter that is being registered.
75
+     * @param    object $component        A reference to the instance of the object on which the filter is defined.
76
+     * @param    string $callback         The name of the function definition on the $component.
77
+     * @param    int    $priority         Optional. he priority at which the function should be fired. Default is 10.
78
+     * @param    int    $accepted_args    Optional. The number of arguments that should be passed to the $callback. Default is 1
79
+     */
80
+    public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
81
+        add_filter( $hook, array( $component, $callback ), $priority, $accepted_args );
82
+    }
83
+
84
+    /**
85
+     * A utility function that is used to register the actions and hooks into a single
86
+     * collection.
87
+     *
88
+     * @since    1.0.0
89
+     * @access   private
90
+     * @param    array  $hooks            The collection of hooks that is being registered (that is, actions or filters).
91
+     * @param    string $hook             The name of the WordPress filter that is being registered.
92
+     * @param    object $component        A reference to the instance of the object on which the filter is defined.
93
+     * @param    string $callback         The name of the function definition on the $component.
94
+     * @param    int    $priority         The priority at which the function should be fired.
95
+     * @param    int    $accepted_args    The number of arguments that should be passed to the $callback.
96
+     * @return   array                                  The collection of actions and filters registered with WordPress.
97
+     */
98
+    private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) {
99
+
100
+        $hooks[] = array(
101
+            'hook'          => $hook,
102
+            'component'     => $component,
103
+            'callback'      => $callback,
104
+            'priority'      => $priority,
105
+            'accepted_args' => $accepted_args,
106
+        );
107
+
108
+        return $hooks;
109
+
110
+    }
111
+
112
+    /**
113
+     * Register the filters and actions with WordPress.
114
+     *
115
+     * @since    1.0.0
116
+     */
117
+    public function run() {
118
+
119
+        foreach ( $this->filters as $hook ) {
120
+            add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
121
+        }
122
+
123
+        foreach ( $this->actions as $hook ) {
124
+            add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
125
+        }
126
+
127
+    }
128 128
 
129 129
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -63,8 +63,8 @@  discard block
 block discarded – undo
63 63
 	 * @param    int    $priority         Optional. he priority at which the function should be fired. Default is 10.
64 64
 	 * @param    int    $accepted_args    Optional. The number of arguments that should be passed to the $callback. Default is 1.
65 65
 	 */
66
-	public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
67
-		add_action( $hook, array( $component, $callback ), $priority, $accepted_args );
66
+	public function add_action($hook, $component, $callback, $priority = 10, $accepted_args = 1) {
67
+		add_action($hook, array($component, $callback), $priority, $accepted_args);
68 68
 	}
69 69
 
70 70
 	/**
@@ -77,8 +77,8 @@  discard block
 block discarded – undo
77 77
 	 * @param    int    $priority         Optional. he priority at which the function should be fired. Default is 10.
78 78
 	 * @param    int    $accepted_args    Optional. The number of arguments that should be passed to the $callback. Default is 1
79 79
 	 */
80
-	public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
81
-		add_filter( $hook, array( $component, $callback ), $priority, $accepted_args );
80
+	public function add_filter($hook, $component, $callback, $priority = 10, $accepted_args = 1) {
81
+		add_filter($hook, array($component, $callback), $priority, $accepted_args);
82 82
 	}
83 83
 
84 84
 	/**
@@ -95,7 +95,7 @@  discard block
 block discarded – undo
95 95
 	 * @param    int    $accepted_args    The number of arguments that should be passed to the $callback.
96 96
 	 * @return   array                                  The collection of actions and filters registered with WordPress.
97 97
 	 */
98
-	private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) {
98
+	private function add($hooks, $hook, $component, $callback, $priority, $accepted_args) {
99 99
 
100 100
 		$hooks[] = array(
101 101
 			'hook'          => $hook,
@@ -116,12 +116,12 @@  discard block
 block discarded – undo
116 116
 	 */
117 117
 	public function run() {
118 118
 
119
-		foreach ( $this->filters as $hook ) {
120
-			add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
119
+		foreach ($this->filters as $hook) {
120
+			add_filter($hook['hook'], array($hook['component'], $hook['callback']), $hook['priority'], $hook['accepted_args']);
121 121
 		}
122 122
 
123
-		foreach ( $this->actions as $hook ) {
124
-			add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
123
+		foreach ($this->actions as $hook) {
124
+			add_action($hook['hook'], array($hook['component'], $hook['callback']), $hook['priority'], $hook['accepted_args']);
125 125
 		}
126 126
 
127 127
 	}
Please login to merge, or discard this patch.
src/includes/class-wordlift-api-service.php 2 patches
Indentation   +187 added lines, -187 removed lines patch added patch discarded remove patch
@@ -17,202 +17,202 @@
 block discarded – undo
17 17
  */
18 18
 class Wordlift_Api_Service {
19 19
 
20
-	/**
21
-	 * The {@link Wordlift_Api_Service} singleton instance.
22
-	 *
23
-	 * @since 3.20.0
24
-	 * @access private
25
-	 * @var \Wordlift_Api_Service $instance The singleton instance.
26
-	 */
27
-	private static $instance;
28
-
29
-	/**
30
-	 * @var Api_Headers_Service|null
31
-	 */
32
-	private $headers_service;
33
-
34
-	/**
35
-	 * Create a {@link Wordlift_Api_Service} instance.
36
-	 *
37
-	 * @since 3.20.0
38
-	 */
39
-	public function __construct() {
40
-		self::$instance        = $this;
41
-		$this->headers_service = Api_Headers_Service::get_instance();
42
-	}
43
-
44
-	/**
45
-	 * Get the {@link Wordlift_Api_Service} singleton instance.
46
-	 *
47
-	 * @return \Wordlift_Api_Service The {@link Wordlift_Api_Service} singleton instance.
48
-	 * @since 3.20.0
49
-	 */
50
-	public static function get_instance() {
51
-
52
-		return self::$instance;
53
-	}
54
-
55
-	/**
56
-	 * Perform a `GET` request towards the requested path.
57
-	 *
58
-	 * @param string $path The relative path.
59
-	 *
60
-	 * @return array|WP_Error
61
-	 * @since 3.20.0
62
-	 */
63
-	public function get( $path ) {
64
-
65
-		// Prepare the target URL.
66
-		$url = Wordlift_Configuration_Service::get_instance()->get_api_url() . $path;
67
-
68
-		// Get the response value.
69
-		$response = wp_remote_get(
70
-			$url,
71
-			array(
72
-				'user-agent' => User_Agent::get_user_agent(),
73
-				'headers'    => array(
74
-					'X-Authorization' => Wordlift_Configuration_Service::get_instance()->get_key(),
75
-				) + $this->headers_service->get_wp_headers(),
76
-				/*
20
+    /**
21
+     * The {@link Wordlift_Api_Service} singleton instance.
22
+     *
23
+     * @since 3.20.0
24
+     * @access private
25
+     * @var \Wordlift_Api_Service $instance The singleton instance.
26
+     */
27
+    private static $instance;
28
+
29
+    /**
30
+     * @var Api_Headers_Service|null
31
+     */
32
+    private $headers_service;
33
+
34
+    /**
35
+     * Create a {@link Wordlift_Api_Service} instance.
36
+     *
37
+     * @since 3.20.0
38
+     */
39
+    public function __construct() {
40
+        self::$instance        = $this;
41
+        $this->headers_service = Api_Headers_Service::get_instance();
42
+    }
43
+
44
+    /**
45
+     * Get the {@link Wordlift_Api_Service} singleton instance.
46
+     *
47
+     * @return \Wordlift_Api_Service The {@link Wordlift_Api_Service} singleton instance.
48
+     * @since 3.20.0
49
+     */
50
+    public static function get_instance() {
51
+
52
+        return self::$instance;
53
+    }
54
+
55
+    /**
56
+     * Perform a `GET` request towards the requested path.
57
+     *
58
+     * @param string $path The relative path.
59
+     *
60
+     * @return array|WP_Error
61
+     * @since 3.20.0
62
+     */
63
+    public function get( $path ) {
64
+
65
+        // Prepare the target URL.
66
+        $url = Wordlift_Configuration_Service::get_instance()->get_api_url() . $path;
67
+
68
+        // Get the response value.
69
+        $response = wp_remote_get(
70
+            $url,
71
+            array(
72
+                'user-agent' => User_Agent::get_user_agent(),
73
+                'headers'    => array(
74
+                    'X-Authorization' => Wordlift_Configuration_Service::get_instance()->get_key(),
75
+                ) + $this->headers_service->get_wp_headers(),
76
+                /*
77 77
 				* Increase the timeout from the default of 5 to 30 secs.
78 78
 				*
79 79
 				* @see https://github.com/insideout10/wordlift-plugin/issues/906
80 80
 				*
81 81
 				* @since 3.20.1
82 82
 				*/
83
-				'timeout'    => 30,
84
-			)
85
-		);
86
-
87
-		return self::get_message_or_error( $response );
88
-	}
89
-
90
-	/**
91
-	 * Perform a `POST` request towards the requested path.
92
-	 *
93
-	 * @param string       $path The relative path.
94
-	 * @param array|object $body The request body (will be serialized to JSON).
95
-	 *
96
-	 * @return array|WP_Error
97
-	 * @since 3.20.0
98
-	 */
99
-	public function post( $path, $body ) {
100
-
101
-		return $this->post_custom_content_type(
102
-			$path,
103
-			wp_json_encode( $body ),
104
-			'application/json; ' . get_bloginfo( 'charset' )
105
-		);
106
-	}
107
-
108
-	public function post_custom_content_type( $path, $body, $content_type ) {
109
-
110
-		// Prepare the target URL.
111
-		$url = apply_filters( 'wl_api_service_api_url_path', Wordlift_Configuration_Service::get_instance()->get_api_url() . $path );
112
-
113
-		// Give some time for the operation to complete, more than the time we give to the HTTP operation to complete.
114
-		// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
115
-		@set_time_limit( 90 );
116
-
117
-		// Get the response value.
118
-		$key      = Wordlift_Configuration_Service::get_instance()->get_key();
119
-		$response = wp_remote_post(
120
-			$url,
121
-			array(
122
-				'timeout'    => 60,
123
-				'user-agent' => User_Agent::get_user_agent(),
124
-				'headers'    => array(
125
-					'Content-Type'    => $content_type,
126
-					'X-Authorization' => $key,
127
-					'Authorization'   => "Key $key",
128
-					/*
83
+                'timeout'    => 30,
84
+            )
85
+        );
86
+
87
+        return self::get_message_or_error( $response );
88
+    }
89
+
90
+    /**
91
+     * Perform a `POST` request towards the requested path.
92
+     *
93
+     * @param string       $path The relative path.
94
+     * @param array|object $body The request body (will be serialized to JSON).
95
+     *
96
+     * @return array|WP_Error
97
+     * @since 3.20.0
98
+     */
99
+    public function post( $path, $body ) {
100
+
101
+        return $this->post_custom_content_type(
102
+            $path,
103
+            wp_json_encode( $body ),
104
+            'application/json; ' . get_bloginfo( 'charset' )
105
+        );
106
+    }
107
+
108
+    public function post_custom_content_type( $path, $body, $content_type ) {
109
+
110
+        // Prepare the target URL.
111
+        $url = apply_filters( 'wl_api_service_api_url_path', Wordlift_Configuration_Service::get_instance()->get_api_url() . $path );
112
+
113
+        // Give some time for the operation to complete, more than the time we give to the HTTP operation to complete.
114
+        // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
115
+        @set_time_limit( 90 );
116
+
117
+        // Get the response value.
118
+        $key      = Wordlift_Configuration_Service::get_instance()->get_key();
119
+        $response = wp_remote_post(
120
+            $url,
121
+            array(
122
+                'timeout'    => 60,
123
+                'user-agent' => User_Agent::get_user_agent(),
124
+                'headers'    => array(
125
+                    'Content-Type'    => $content_type,
126
+                    'X-Authorization' => $key,
127
+                    'Authorization'   => "Key $key",
128
+                    /*
129 129
 					 * This is required to avoid CURL receiving 502 Bad Gateway errors.
130 130
 					 *
131 131
 					 * @see https://stackoverflow.com/questions/30601075/curl-to-google-compute-load-balancer-gets-error-502
132 132
 					 */
133
-					'Expect'          => '',
134
-				) + $this->headers_service->get_wp_headers(),
135
-				'body'       => $body,
136
-			)
137
-		);
138
-
139
-		return self::get_message_or_error( $response );
140
-	}
141
-
142
-	public function delete( $path ) {
143
-
144
-		// Prepare the target URL.
145
-		$url = Wordlift_Configuration_Service::get_instance()->get_api_url() . $path;
146
-
147
-		// Get the response value.
148
-		$response = wp_remote_request(
149
-			$url,
150
-			array(
151
-				'method'     => 'DELETE',
152
-				'user-agent' => User_Agent::get_user_agent(),
153
-				'headers'    => array(
154
-					'X-Authorization' => Wordlift_Configuration_Service::get_instance()->get_key(),
155
-				) + $this->headers_service->get_wp_headers(),
156
-			)
157
-		);
158
-
159
-		return self::get_message_or_error( $response );
160
-	}
161
-
162
-	/**
163
-	 * Return the {@link WP_Error} in case of error or the actual reply if successful.
164
-	 *
165
-	 * @param array|WP_Error $response The response of an http call.
166
-	 *
167
-	 * @return string|object|WP_Error A {@link WP_Error} instance or the actual response content.
168
-	 * @since 3.20.0
169
-	 */
170
-	private static function get_message_or_error( $response ) {
171
-
172
-		// Result is WP_Error.
173
-		if ( is_wp_error( $response ) ) {
174
-			return $response;
175
-		}
176
-
177
-		// `code` not set or not numeric.
178
-		$code = wp_remote_retrieve_response_code( $response );
179
-		// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
180
-		$message = @wp_remote_retrieve_response_message( $response );
181
-
182
-		if ( empty( $code ) || ! is_numeric( $code ) ) {
183
-			return new WP_Error( 0, $message );
184
-		}
185
-
186
-		// Code not 2xx.
187
-		if ( 2 !== intval( $code / 100 ) ) {
188
-			return new WP_Error( $code, $message );
189
-		}
190
-
191
-		// Everything's fine, return the message.
192
-		return self::try_json_decode( $response );
193
-	}
194
-
195
-	/**
196
-	 * Try to decode the json response
197
-	 *
198
-	 * @param array $response The response array.
199
-	 *
200
-	 * @return array|mixed|object The decoded response or the original response body.
201
-	 * @since 3.20.0
202
-	 */
203
-	private static function try_json_decode( $response ) {
204
-
205
-		// Get the headers.
206
-		$content_type = wp_remote_retrieve_header( $response, 'content-type' );
207
-		$body         = wp_remote_retrieve_body( $response );
208
-
209
-		// If it's not an `application/json` return the plain response body.
210
-		if ( 0 !== strpos( strtolower( $content_type ), 'application/json' ) ) {
211
-			return $body;
212
-		}
213
-
214
-		// Decode and return the structured result.
215
-		return json_decode( $body );
216
-	}
133
+                    'Expect'          => '',
134
+                ) + $this->headers_service->get_wp_headers(),
135
+                'body'       => $body,
136
+            )
137
+        );
138
+
139
+        return self::get_message_or_error( $response );
140
+    }
141
+
142
+    public function delete( $path ) {
143
+
144
+        // Prepare the target URL.
145
+        $url = Wordlift_Configuration_Service::get_instance()->get_api_url() . $path;
146
+
147
+        // Get the response value.
148
+        $response = wp_remote_request(
149
+            $url,
150
+            array(
151
+                'method'     => 'DELETE',
152
+                'user-agent' => User_Agent::get_user_agent(),
153
+                'headers'    => array(
154
+                    'X-Authorization' => Wordlift_Configuration_Service::get_instance()->get_key(),
155
+                ) + $this->headers_service->get_wp_headers(),
156
+            )
157
+        );
158
+
159
+        return self::get_message_or_error( $response );
160
+    }
161
+
162
+    /**
163
+     * Return the {@link WP_Error} in case of error or the actual reply if successful.
164
+     *
165
+     * @param array|WP_Error $response The response of an http call.
166
+     *
167
+     * @return string|object|WP_Error A {@link WP_Error} instance or the actual response content.
168
+     * @since 3.20.0
169
+     */
170
+    private static function get_message_or_error( $response ) {
171
+
172
+        // Result is WP_Error.
173
+        if ( is_wp_error( $response ) ) {
174
+            return $response;
175
+        }
176
+
177
+        // `code` not set or not numeric.
178
+        $code = wp_remote_retrieve_response_code( $response );
179
+        // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
180
+        $message = @wp_remote_retrieve_response_message( $response );
181
+
182
+        if ( empty( $code ) || ! is_numeric( $code ) ) {
183
+            return new WP_Error( 0, $message );
184
+        }
185
+
186
+        // Code not 2xx.
187
+        if ( 2 !== intval( $code / 100 ) ) {
188
+            return new WP_Error( $code, $message );
189
+        }
190
+
191
+        // Everything's fine, return the message.
192
+        return self::try_json_decode( $response );
193
+    }
194
+
195
+    /**
196
+     * Try to decode the json response
197
+     *
198
+     * @param array $response The response array.
199
+     *
200
+     * @return array|mixed|object The decoded response or the original response body.
201
+     * @since 3.20.0
202
+     */
203
+    private static function try_json_decode( $response ) {
204
+
205
+        // Get the headers.
206
+        $content_type = wp_remote_retrieve_header( $response, 'content-type' );
207
+        $body         = wp_remote_retrieve_body( $response );
208
+
209
+        // If it's not an `application/json` return the plain response body.
210
+        if ( 0 !== strpos( strtolower( $content_type ), 'application/json' ) ) {
211
+            return $body;
212
+        }
213
+
214
+        // Decode and return the structured result.
215
+        return json_decode( $body );
216
+    }
217 217
 
218 218
 }
Please login to merge, or discard this patch.
Spacing   +27 added lines, -27 removed lines patch added patch discarded remove patch
@@ -60,10 +60,10 @@  discard block
 block discarded – undo
60 60
 	 * @return array|WP_Error
61 61
 	 * @since 3.20.0
62 62
 	 */
63
-	public function get( $path ) {
63
+	public function get($path) {
64 64
 
65 65
 		// Prepare the target URL.
66
-		$url = Wordlift_Configuration_Service::get_instance()->get_api_url() . $path;
66
+		$url = Wordlift_Configuration_Service::get_instance()->get_api_url().$path;
67 67
 
68 68
 		// Get the response value.
69 69
 		$response = wp_remote_get(
@@ -84,7 +84,7 @@  discard block
 block discarded – undo
84 84
 			)
85 85
 		);
86 86
 
87
-		return self::get_message_or_error( $response );
87
+		return self::get_message_or_error($response);
88 88
 	}
89 89
 
90 90
 	/**
@@ -96,23 +96,23 @@  discard block
 block discarded – undo
96 96
 	 * @return array|WP_Error
97 97
 	 * @since 3.20.0
98 98
 	 */
99
-	public function post( $path, $body ) {
99
+	public function post($path, $body) {
100 100
 
101 101
 		return $this->post_custom_content_type(
102 102
 			$path,
103
-			wp_json_encode( $body ),
104
-			'application/json; ' . get_bloginfo( 'charset' )
103
+			wp_json_encode($body),
104
+			'application/json; '.get_bloginfo('charset')
105 105
 		);
106 106
 	}
107 107
 
108
-	public function post_custom_content_type( $path, $body, $content_type ) {
108
+	public function post_custom_content_type($path, $body, $content_type) {
109 109
 
110 110
 		// Prepare the target URL.
111
-		$url = apply_filters( 'wl_api_service_api_url_path', Wordlift_Configuration_Service::get_instance()->get_api_url() . $path );
111
+		$url = apply_filters('wl_api_service_api_url_path', Wordlift_Configuration_Service::get_instance()->get_api_url().$path);
112 112
 
113 113
 		// Give some time for the operation to complete, more than the time we give to the HTTP operation to complete.
114 114
 		// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
115
-		@set_time_limit( 90 );
115
+		@set_time_limit(90);
116 116
 
117 117
 		// Get the response value.
118 118
 		$key      = Wordlift_Configuration_Service::get_instance()->get_key();
@@ -136,13 +136,13 @@  discard block
 block discarded – undo
136 136
 			)
137 137
 		);
138 138
 
139
-		return self::get_message_or_error( $response );
139
+		return self::get_message_or_error($response);
140 140
 	}
141 141
 
142
-	public function delete( $path ) {
142
+	public function delete($path) {
143 143
 
144 144
 		// Prepare the target URL.
145
-		$url = Wordlift_Configuration_Service::get_instance()->get_api_url() . $path;
145
+		$url = Wordlift_Configuration_Service::get_instance()->get_api_url().$path;
146 146
 
147 147
 		// Get the response value.
148 148
 		$response = wp_remote_request(
@@ -156,7 +156,7 @@  discard block
 block discarded – undo
156 156
 			)
157 157
 		);
158 158
 
159
-		return self::get_message_or_error( $response );
159
+		return self::get_message_or_error($response);
160 160
 	}
161 161
 
162 162
 	/**
@@ -167,29 +167,29 @@  discard block
 block discarded – undo
167 167
 	 * @return string|object|WP_Error A {@link WP_Error} instance or the actual response content.
168 168
 	 * @since 3.20.0
169 169
 	 */
170
-	private static function get_message_or_error( $response ) {
170
+	private static function get_message_or_error($response) {
171 171
 
172 172
 		// Result is WP_Error.
173
-		if ( is_wp_error( $response ) ) {
173
+		if (is_wp_error($response)) {
174 174
 			return $response;
175 175
 		}
176 176
 
177 177
 		// `code` not set or not numeric.
178
-		$code = wp_remote_retrieve_response_code( $response );
178
+		$code = wp_remote_retrieve_response_code($response);
179 179
 		// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
180
-		$message = @wp_remote_retrieve_response_message( $response );
180
+		$message = @wp_remote_retrieve_response_message($response);
181 181
 
182
-		if ( empty( $code ) || ! is_numeric( $code ) ) {
183
-			return new WP_Error( 0, $message );
182
+		if (empty($code) || ! is_numeric($code)) {
183
+			return new WP_Error(0, $message);
184 184
 		}
185 185
 
186 186
 		// Code not 2xx.
187
-		if ( 2 !== intval( $code / 100 ) ) {
188
-			return new WP_Error( $code, $message );
187
+		if (2 !== intval($code / 100)) {
188
+			return new WP_Error($code, $message);
189 189
 		}
190 190
 
191 191
 		// Everything's fine, return the message.
192
-		return self::try_json_decode( $response );
192
+		return self::try_json_decode($response);
193 193
 	}
194 194
 
195 195
 	/**
@@ -200,19 +200,19 @@  discard block
 block discarded – undo
200 200
 	 * @return array|mixed|object The decoded response or the original response body.
201 201
 	 * @since 3.20.0
202 202
 	 */
203
-	private static function try_json_decode( $response ) {
203
+	private static function try_json_decode($response) {
204 204
 
205 205
 		// Get the headers.
206
-		$content_type = wp_remote_retrieve_header( $response, 'content-type' );
207
-		$body         = wp_remote_retrieve_body( $response );
206
+		$content_type = wp_remote_retrieve_header($response, 'content-type');
207
+		$body         = wp_remote_retrieve_body($response);
208 208
 
209 209
 		// If it's not an `application/json` return the plain response body.
210
-		if ( 0 !== strpos( strtolower( $content_type ), 'application/json' ) ) {
210
+		if (0 !== strpos(strtolower($content_type), 'application/json')) {
211 211
 			return $body;
212 212
 		}
213 213
 
214 214
 		// Decode and return the structured result.
215
-		return json_decode( $body );
215
+		return json_decode($body);
216 216
 	}
217 217
 
218 218
 }
Please login to merge, or discard this patch.
src/includes/class-wordlift-key-validation-service.php 2 patches
Indentation   +184 added lines, -184 removed lines patch added patch discarded remove patch
@@ -20,192 +20,192 @@
 block discarded – undo
20 20
  */
21 21
 class Wordlift_Key_Validation_Service {
22 22
 
23
-	/**
24
-	 * A {@link Wordlift_Log_Service} instance.
25
-	 *
26
-	 * @since  3.14.0
27
-	 * @access private
28
-	 * @var \Wordlift_Log_Service $log A {@link Wordlift_Log_Service} instance.
29
-	 */
30
-	private $log;
31
-
32
-	/**
33
-	 * @var Ttl_Cache
34
-	 */
35
-	private $ttl_cache_service;
36
-
37
-	/**
38
-	 * Create a {@link Wordlift_Key_Validation_Service} instance.
39
-	 *
40
-	 * @since 3.14.0
41
-	 */
42
-	public function __construct() {
43
-
44
-		$this->log = Wordlift_Log_Service::get_logger( 'Wordlift_Key_Validation_Service' );
45
-
46
-		add_action( 'admin_init', array( $this, 'wl_load_plugin' ) );
47
-		/**
48
-		 * Filter: wl_feature__enable__notices.
49
-		 *
50
-		 * @param bool whether notices need to be enabled or not.
51
-		 *
52
-		 * @return bool
53
-		 * @since 3.27.6
54
-		 */
55
-		if ( apply_filters( 'wl_feature__enable__notices', true ) ) {
56
-			add_action( 'admin_notices', array( $this, 'wl_key_update_notice' ) );
57
-		}
58
-
59
-		$this->ttl_cache_service = new Ttl_Cache( 'key-validation-notification' );
60
-
61
-	}
62
-
63
-	/**
64
-	 * Validate the provided key.
65
-	 *
66
-	 * @param string $key WordLift's key to validate.
67
-	 *
68
-	 * @return WP_Error|array The response or WP_Error on failure.
69
-	 * @since 3.9.0
70
-	 */
71
-	public function get_account_info( $key ) {
72
-
73
-		$this->log->debug( 'Validating key...' );
74
-
75
-		return Default_Api_Service::get_instance()->get(
76
-			'/accounts/info',
77
-			array(
78
-				'Authorization' => "Key $key",
79
-			)
80
-		)->get_response();
81
-	}
82
-
83
-	/**
84
-	 * Check if key is valid
85
-	 *
86
-	 * @param $key string
87
-	 *
88
-	 * @return bool
89
-	 */
90
-	public function is_key_valid( $key ) {
91
-
92
-		$response = $this->get_account_info( $key );
93
-
94
-		if ( is_wp_error( $response ) || 2 !== (int) $response['response']['code'] / 100 ) {
95
-			return false;
96
-		}
97
-		$res_body = json_decode( wp_remote_retrieve_body( $response ), true );
98
-
99
-		$url = $res_body['url'];
100
-
101
-		// Considering that production URL may be filtered.
102
-		$home_url = get_option( 'home' );
103
-		$site_url = apply_filters( 'wl_production_site_url', untrailingslashit( $home_url ) );
104
-		if ( $url === null || $url === $site_url ) {
105
-			return true;
106
-		}
107
-
108
-		return false;
109
-	}
110
-
111
-	/**
112
-	 * This function is hooked to the `wl_validate_key` AJAX call.
113
-	 *
114
-	 * @since 3.9.0
115
-	 */
116
-	public function validate_key() {
117
-
118
-		// Ensure we don't have garbage before us.
119
-		ob_clean();
120
-
121
-		// Check if we have a key.
122
-		if ( ! isset( $_POST['key'] ) ) {  //phpcs:ignore WordPress.Security.NonceVerification.Missing
123
-			wp_send_json_error( 'The key parameter is required.' );
124
-		}
125
-
126
-		$response = $this->get_account_info( sanitize_text_field( wp_unslash( (string) $_POST['key'] ) ) );  //phpcs:ignore WordPress.Security.NonceVerification.Missing
127
-
128
-		// If we got an error, return invalid.
129
-		if ( is_wp_error( $response ) || 2 !== (int) $response['response']['code'] / 100 ) {
130
-			wp_send_json_success(
131
-				array(
132
-					'valid'    => false,
133
-					'message'  => '',
134
-					'response' => $response,
135
-					'api_url'  => Default_Api_Service::get_instance()->get_base_url(),
136
-				)
137
-			);
138
-		}
139
-
140
-		$res_body = json_decode( wp_remote_retrieve_body( $response ), true );
141
-
142
-		// The URL stored in WLS. If this is the initial install the URL may be null.
143
-		$url = $res_body['url'];
144
-
145
-		// Considering that production URL may be filtered.
146
-		$home_url = get_option( 'home' );
147
-		$site_url = apply_filters( 'wl_production_site_url', untrailingslashit( $home_url ) );
148
-
149
-		// If the URL isn't set or matches, then it's valid.
150
-		if ( $url === null || $url === $site_url ) {
151
-			// Invalidate the cache key
152
-			$this->ttl_cache_service->delete( 'is_key_valid' );
153
-			wp_send_json_success(
154
-				array(
155
-					'valid'   => true,
156
-					'message' => '',
157
-				)
158
-			);
159
-		}
160
-
161
-		// If the URL doesn't match it means that this key has been configured elsewhere already.
162
-		if ( $url !== $site_url ) {
163
-			Wordlift_Configuration_Service::get_instance()->set_key( '' );
164
-			wp_send_json_success(
165
-				array(
166
-					'valid'   => false,
167
-					'message' => __( 'The key is already used on another site, please contact us at [email protected] to move the key to another site.', 'wordlift' ),
168
-				)
169
-			);
170
-		}
171
-
172
-		// Set a response with valid set to true or false according to the key validity with message.
173
-		wp_send_json_success(
174
-			array(
175
-				'valid'   => false,
176
-				'message' => __( 'An error occurred, please contact us at [email protected]', 'wordlift' ),
177
-			)
178
-		);
179
-	}
180
-
181
-	/**
182
-	 * This function is hooked `admin_init` to check _wl_blog_url.
183
-	 */
184
-	public function wl_load_plugin() {
185
-
186
-		$wl_blog_url = get_option( '_wl_blog_url' );
187
-		$home_url    = get_option( 'home' );
188
-
189
-		if ( ! $wl_blog_url ) {
190
-			update_option( '_wl_blog_url', $home_url, true );
191
-		} elseif ( $wl_blog_url !== $home_url ) {
192
-			update_option( '_wl_blog_url', $home_url, true );
193
-			Wordlift_Configuration_Service::get_instance()->set_key( '' );
194
-			set_transient( 'wl-key-error-msg', __( "Your web site URL has changed. To avoid data corruption, WordLift's key has been removed. Please provide a new key in WordLift Settings. If you believe this to be an error, please contact us at [email protected]", 'wordlift' ), 10 );
195
-		}
196
-
197
-	}
198
-
199
-	/**
200
-	 * This function is hooked to the `admin_notices` to show admin notification.
201
-	 */
202
-	public function wl_key_update_notice() {
203
-		if ( get_transient( 'wl-key-error-msg' ) ) {
204
-			?>
23
+    /**
24
+     * A {@link Wordlift_Log_Service} instance.
25
+     *
26
+     * @since  3.14.0
27
+     * @access private
28
+     * @var \Wordlift_Log_Service $log A {@link Wordlift_Log_Service} instance.
29
+     */
30
+    private $log;
31
+
32
+    /**
33
+     * @var Ttl_Cache
34
+     */
35
+    private $ttl_cache_service;
36
+
37
+    /**
38
+     * Create a {@link Wordlift_Key_Validation_Service} instance.
39
+     *
40
+     * @since 3.14.0
41
+     */
42
+    public function __construct() {
43
+
44
+        $this->log = Wordlift_Log_Service::get_logger( 'Wordlift_Key_Validation_Service' );
45
+
46
+        add_action( 'admin_init', array( $this, 'wl_load_plugin' ) );
47
+        /**
48
+         * Filter: wl_feature__enable__notices.
49
+         *
50
+         * @param bool whether notices need to be enabled or not.
51
+         *
52
+         * @return bool
53
+         * @since 3.27.6
54
+         */
55
+        if ( apply_filters( 'wl_feature__enable__notices', true ) ) {
56
+            add_action( 'admin_notices', array( $this, 'wl_key_update_notice' ) );
57
+        }
58
+
59
+        $this->ttl_cache_service = new Ttl_Cache( 'key-validation-notification' );
60
+
61
+    }
62
+
63
+    /**
64
+     * Validate the provided key.
65
+     *
66
+     * @param string $key WordLift's key to validate.
67
+     *
68
+     * @return WP_Error|array The response or WP_Error on failure.
69
+     * @since 3.9.0
70
+     */
71
+    public function get_account_info( $key ) {
72
+
73
+        $this->log->debug( 'Validating key...' );
74
+
75
+        return Default_Api_Service::get_instance()->get(
76
+            '/accounts/info',
77
+            array(
78
+                'Authorization' => "Key $key",
79
+            )
80
+        )->get_response();
81
+    }
82
+
83
+    /**
84
+     * Check if key is valid
85
+     *
86
+     * @param $key string
87
+     *
88
+     * @return bool
89
+     */
90
+    public function is_key_valid( $key ) {
91
+
92
+        $response = $this->get_account_info( $key );
93
+
94
+        if ( is_wp_error( $response ) || 2 !== (int) $response['response']['code'] / 100 ) {
95
+            return false;
96
+        }
97
+        $res_body = json_decode( wp_remote_retrieve_body( $response ), true );
98
+
99
+        $url = $res_body['url'];
100
+
101
+        // Considering that production URL may be filtered.
102
+        $home_url = get_option( 'home' );
103
+        $site_url = apply_filters( 'wl_production_site_url', untrailingslashit( $home_url ) );
104
+        if ( $url === null || $url === $site_url ) {
105
+            return true;
106
+        }
107
+
108
+        return false;
109
+    }
110
+
111
+    /**
112
+     * This function is hooked to the `wl_validate_key` AJAX call.
113
+     *
114
+     * @since 3.9.0
115
+     */
116
+    public function validate_key() {
117
+
118
+        // Ensure we don't have garbage before us.
119
+        ob_clean();
120
+
121
+        // Check if we have a key.
122
+        if ( ! isset( $_POST['key'] ) ) {  //phpcs:ignore WordPress.Security.NonceVerification.Missing
123
+            wp_send_json_error( 'The key parameter is required.' );
124
+        }
125
+
126
+        $response = $this->get_account_info( sanitize_text_field( wp_unslash( (string) $_POST['key'] ) ) );  //phpcs:ignore WordPress.Security.NonceVerification.Missing
127
+
128
+        // If we got an error, return invalid.
129
+        if ( is_wp_error( $response ) || 2 !== (int) $response['response']['code'] / 100 ) {
130
+            wp_send_json_success(
131
+                array(
132
+                    'valid'    => false,
133
+                    'message'  => '',
134
+                    'response' => $response,
135
+                    'api_url'  => Default_Api_Service::get_instance()->get_base_url(),
136
+                )
137
+            );
138
+        }
139
+
140
+        $res_body = json_decode( wp_remote_retrieve_body( $response ), true );
141
+
142
+        // The URL stored in WLS. If this is the initial install the URL may be null.
143
+        $url = $res_body['url'];
144
+
145
+        // Considering that production URL may be filtered.
146
+        $home_url = get_option( 'home' );
147
+        $site_url = apply_filters( 'wl_production_site_url', untrailingslashit( $home_url ) );
148
+
149
+        // If the URL isn't set or matches, then it's valid.
150
+        if ( $url === null || $url === $site_url ) {
151
+            // Invalidate the cache key
152
+            $this->ttl_cache_service->delete( 'is_key_valid' );
153
+            wp_send_json_success(
154
+                array(
155
+                    'valid'   => true,
156
+                    'message' => '',
157
+                )
158
+            );
159
+        }
160
+
161
+        // If the URL doesn't match it means that this key has been configured elsewhere already.
162
+        if ( $url !== $site_url ) {
163
+            Wordlift_Configuration_Service::get_instance()->set_key( '' );
164
+            wp_send_json_success(
165
+                array(
166
+                    'valid'   => false,
167
+                    'message' => __( 'The key is already used on another site, please contact us at [email protected] to move the key to another site.', 'wordlift' ),
168
+                )
169
+            );
170
+        }
171
+
172
+        // Set a response with valid set to true or false according to the key validity with message.
173
+        wp_send_json_success(
174
+            array(
175
+                'valid'   => false,
176
+                'message' => __( 'An error occurred, please contact us at [email protected]', 'wordlift' ),
177
+            )
178
+        );
179
+    }
180
+
181
+    /**
182
+     * This function is hooked `admin_init` to check _wl_blog_url.
183
+     */
184
+    public function wl_load_plugin() {
185
+
186
+        $wl_blog_url = get_option( '_wl_blog_url' );
187
+        $home_url    = get_option( 'home' );
188
+
189
+        if ( ! $wl_blog_url ) {
190
+            update_option( '_wl_blog_url', $home_url, true );
191
+        } elseif ( $wl_blog_url !== $home_url ) {
192
+            update_option( '_wl_blog_url', $home_url, true );
193
+            Wordlift_Configuration_Service::get_instance()->set_key( '' );
194
+            set_transient( 'wl-key-error-msg', __( "Your web site URL has changed. To avoid data corruption, WordLift's key has been removed. Please provide a new key in WordLift Settings. If you believe this to be an error, please contact us at [email protected]", 'wordlift' ), 10 );
195
+        }
196
+
197
+    }
198
+
199
+    /**
200
+     * This function is hooked to the `admin_notices` to show admin notification.
201
+     */
202
+    public function wl_key_update_notice() {
203
+        if ( get_transient( 'wl-key-error-msg' ) ) {
204
+            ?>
205 205
 			<div class="updated notice is-dismissible error">
206 206
 				<p><?php esc_html( get_transient( 'wl-key-error-msg' ) ); ?></p>
207 207
 			</div>
208 208
 			<?php
209
-		}
210
-	}
209
+        }
210
+    }
211 211
 }
Please login to merge, or discard this patch.
Spacing   +37 added lines, -37 removed lines patch added patch discarded remove patch
@@ -41,9 +41,9 @@  discard block
 block discarded – undo
41 41
 	 */
42 42
 	public function __construct() {
43 43
 
44
-		$this->log = Wordlift_Log_Service::get_logger( 'Wordlift_Key_Validation_Service' );
44
+		$this->log = Wordlift_Log_Service::get_logger('Wordlift_Key_Validation_Service');
45 45
 
46
-		add_action( 'admin_init', array( $this, 'wl_load_plugin' ) );
46
+		add_action('admin_init', array($this, 'wl_load_plugin'));
47 47
 		/**
48 48
 		 * Filter: wl_feature__enable__notices.
49 49
 		 *
@@ -52,11 +52,11 @@  discard block
 block discarded – undo
52 52
 		 * @return bool
53 53
 		 * @since 3.27.6
54 54
 		 */
55
-		if ( apply_filters( 'wl_feature__enable__notices', true ) ) {
56
-			add_action( 'admin_notices', array( $this, 'wl_key_update_notice' ) );
55
+		if (apply_filters('wl_feature__enable__notices', true)) {
56
+			add_action('admin_notices', array($this, 'wl_key_update_notice'));
57 57
 		}
58 58
 
59
-		$this->ttl_cache_service = new Ttl_Cache( 'key-validation-notification' );
59
+		$this->ttl_cache_service = new Ttl_Cache('key-validation-notification');
60 60
 
61 61
 	}
62 62
 
@@ -68,9 +68,9 @@  discard block
 block discarded – undo
68 68
 	 * @return WP_Error|array The response or WP_Error on failure.
69 69
 	 * @since 3.9.0
70 70
 	 */
71
-	public function get_account_info( $key ) {
71
+	public function get_account_info($key) {
72 72
 
73
-		$this->log->debug( 'Validating key...' );
73
+		$this->log->debug('Validating key...');
74 74
 
75 75
 		return Default_Api_Service::get_instance()->get(
76 76
 			'/accounts/info',
@@ -87,21 +87,21 @@  discard block
 block discarded – undo
87 87
 	 *
88 88
 	 * @return bool
89 89
 	 */
90
-	public function is_key_valid( $key ) {
90
+	public function is_key_valid($key) {
91 91
 
92
-		$response = $this->get_account_info( $key );
92
+		$response = $this->get_account_info($key);
93 93
 
94
-		if ( is_wp_error( $response ) || 2 !== (int) $response['response']['code'] / 100 ) {
94
+		if (is_wp_error($response) || 2 !== (int) $response['response']['code'] / 100) {
95 95
 			return false;
96 96
 		}
97
-		$res_body = json_decode( wp_remote_retrieve_body( $response ), true );
97
+		$res_body = json_decode(wp_remote_retrieve_body($response), true);
98 98
 
99 99
 		$url = $res_body['url'];
100 100
 
101 101
 		// Considering that production URL may be filtered.
102
-		$home_url = get_option( 'home' );
103
-		$site_url = apply_filters( 'wl_production_site_url', untrailingslashit( $home_url ) );
104
-		if ( $url === null || $url === $site_url ) {
102
+		$home_url = get_option('home');
103
+		$site_url = apply_filters('wl_production_site_url', untrailingslashit($home_url));
104
+		if ($url === null || $url === $site_url) {
105 105
 			return true;
106 106
 		}
107 107
 
@@ -119,14 +119,14 @@  discard block
 block discarded – undo
119 119
 		ob_clean();
120 120
 
121 121
 		// Check if we have a key.
122
-		if ( ! isset( $_POST['key'] ) ) {  //phpcs:ignore WordPress.Security.NonceVerification.Missing
123
-			wp_send_json_error( 'The key parameter is required.' );
122
+		if ( ! isset($_POST['key'])) {  //phpcs:ignore WordPress.Security.NonceVerification.Missing
123
+			wp_send_json_error('The key parameter is required.');
124 124
 		}
125 125
 
126
-		$response = $this->get_account_info( sanitize_text_field( wp_unslash( (string) $_POST['key'] ) ) );  //phpcs:ignore WordPress.Security.NonceVerification.Missing
126
+		$response = $this->get_account_info(sanitize_text_field(wp_unslash((string) $_POST['key']))); //phpcs:ignore WordPress.Security.NonceVerification.Missing
127 127
 
128 128
 		// If we got an error, return invalid.
129
-		if ( is_wp_error( $response ) || 2 !== (int) $response['response']['code'] / 100 ) {
129
+		if (is_wp_error($response) || 2 !== (int) $response['response']['code'] / 100) {
130 130
 			wp_send_json_success(
131 131
 				array(
132 132
 					'valid'    => false,
@@ -137,19 +137,19 @@  discard block
 block discarded – undo
137 137
 			);
138 138
 		}
139 139
 
140
-		$res_body = json_decode( wp_remote_retrieve_body( $response ), true );
140
+		$res_body = json_decode(wp_remote_retrieve_body($response), true);
141 141
 
142 142
 		// The URL stored in WLS. If this is the initial install the URL may be null.
143 143
 		$url = $res_body['url'];
144 144
 
145 145
 		// Considering that production URL may be filtered.
146
-		$home_url = get_option( 'home' );
147
-		$site_url = apply_filters( 'wl_production_site_url', untrailingslashit( $home_url ) );
146
+		$home_url = get_option('home');
147
+		$site_url = apply_filters('wl_production_site_url', untrailingslashit($home_url));
148 148
 
149 149
 		// If the URL isn't set or matches, then it's valid.
150
-		if ( $url === null || $url === $site_url ) {
150
+		if ($url === null || $url === $site_url) {
151 151
 			// Invalidate the cache key
152
-			$this->ttl_cache_service->delete( 'is_key_valid' );
152
+			$this->ttl_cache_service->delete('is_key_valid');
153 153
 			wp_send_json_success(
154 154
 				array(
155 155
 					'valid'   => true,
@@ -159,12 +159,12 @@  discard block
 block discarded – undo
159 159
 		}
160 160
 
161 161
 		// If the URL doesn't match it means that this key has been configured elsewhere already.
162
-		if ( $url !== $site_url ) {
163
-			Wordlift_Configuration_Service::get_instance()->set_key( '' );
162
+		if ($url !== $site_url) {
163
+			Wordlift_Configuration_Service::get_instance()->set_key('');
164 164
 			wp_send_json_success(
165 165
 				array(
166 166
 					'valid'   => false,
167
-					'message' => __( 'The key is already used on another site, please contact us at [email protected] to move the key to another site.', 'wordlift' ),
167
+					'message' => __('The key is already used on another site, please contact us at [email protected] to move the key to another site.', 'wordlift'),
168 168
 				)
169 169
 			);
170 170
 		}
@@ -173,7 +173,7 @@  discard block
 block discarded – undo
173 173
 		wp_send_json_success(
174 174
 			array(
175 175
 				'valid'   => false,
176
-				'message' => __( 'An error occurred, please contact us at [email protected]', 'wordlift' ),
176
+				'message' => __('An error occurred, please contact us at [email protected]', 'wordlift'),
177 177
 			)
178 178
 		);
179 179
 	}
@@ -183,15 +183,15 @@  discard block
 block discarded – undo
183 183
 	 */
184 184
 	public function wl_load_plugin() {
185 185
 
186
-		$wl_blog_url = get_option( '_wl_blog_url' );
187
-		$home_url    = get_option( 'home' );
186
+		$wl_blog_url = get_option('_wl_blog_url');
187
+		$home_url    = get_option('home');
188 188
 
189
-		if ( ! $wl_blog_url ) {
190
-			update_option( '_wl_blog_url', $home_url, true );
191
-		} elseif ( $wl_blog_url !== $home_url ) {
192
-			update_option( '_wl_blog_url', $home_url, true );
193
-			Wordlift_Configuration_Service::get_instance()->set_key( '' );
194
-			set_transient( 'wl-key-error-msg', __( "Your web site URL has changed. To avoid data corruption, WordLift's key has been removed. Please provide a new key in WordLift Settings. If you believe this to be an error, please contact us at [email protected]", 'wordlift' ), 10 );
189
+		if ( ! $wl_blog_url) {
190
+			update_option('_wl_blog_url', $home_url, true);
191
+		} elseif ($wl_blog_url !== $home_url) {
192
+			update_option('_wl_blog_url', $home_url, true);
193
+			Wordlift_Configuration_Service::get_instance()->set_key('');
194
+			set_transient('wl-key-error-msg', __("Your web site URL has changed. To avoid data corruption, WordLift's key has been removed. Please provide a new key in WordLift Settings. If you believe this to be an error, please contact us at [email protected]", 'wordlift'), 10);
195 195
 		}
196 196
 
197 197
 	}
@@ -200,10 +200,10 @@  discard block
 block discarded – undo
200 200
 	 * This function is hooked to the `admin_notices` to show admin notification.
201 201
 	 */
202 202
 	public function wl_key_update_notice() {
203
-		if ( get_transient( 'wl-key-error-msg' ) ) {
203
+		if (get_transient('wl-key-error-msg')) {
204 204
 			?>
205 205
 			<div class="updated notice is-dismissible error">
206
-				<p><?php esc_html( get_transient( 'wl-key-error-msg' ) ); ?></p>
206
+				<p><?php esc_html(get_transient('wl-key-error-msg')); ?></p>
207 207
 			</div>
208 208
 			<?php
209 209
 		}
Please login to merge, or discard this patch.
src/includes/class-wordlift-google-analytics-export-service.php 2 patches
Indentation   +135 added lines, -135 removed lines patch added patch discarded remove patch
@@ -18,103 +18,103 @@  discard block
 block discarded – undo
18 18
  */
19 19
 class Wordlift_Google_Analytics_Export_Service {
20 20
 
21
-	/**
22
-	 * Export the site data that could be imported in Google Analytics.
23
-	 * It will works only when permalink structure is set to "Postname".
24
-	 *
25
-	 * @since 3.16.0
26
-	 *
27
-	 * @return void
28
-	 */
29
-	public function export() {
30
-		// Bail if the permalink structure is different from "Post name".
31
-		if ( ! $this->is_postname_permalink_structure() ) {
32
-			wp_die( 'The current permalink structure do not allow to export your data. Please change the permalink structure to "Post name".' );
33
-		}
34
-
35
-		// Output the file data. @codingStandardsIgnoreLine
36
-		@ob_end_clean();
37
-
38
-		// Generate unique filename using current timestamp.
39
-		$filename = 'wl-ga-export-' . gmdate( 'Y-m-d-H-i-s' ) . '.csv';
40
-
41
-		// Add proper file headers.
42
-		header( "Content-Disposition: attachment; filename=$filename" );
43
-		header( 'Content-Type: text/csv; charset=' . get_bloginfo( 'charset' ) );
44
-
45
-		// Do not cache the file.
46
-		header( 'Pragma: no-cache' );
47
-		header( 'Expires: 0' );
48
-
49
-		// Build the CSV file.
50
-		$this->create_csv();
51
-
52
-		wp_die();
53
-	}
54
-
55
-	/**
56
-	 * Return site path. Some installations are in subdirectories
57
-	 * and we need add them to expported permalinks.
58
-	 *
59
-	 * @since 3.16.0
60
-	 *
61
-	 * @return string The site path.
62
-	 */
63
-	public function get_site_path() {
64
-		// Get home url from database.
65
-		$home_url = home_url( '/' );
66
-
67
-		// Parse the url.
68
-		$parsed = wp_parse_url( $home_url );
69
-
70
-		// Return the path.
71
-		return $parsed['path'];
72
-	}
73
-
74
-	/**
75
-	 * Check if the current permalink structure is set to "Post name".
76
-	 *
77
-	 * @since 3.16.0
78
-	 *
79
-	 * @return bool whether the structure is "Post name" or not.
80
-	 */
81
-	public static function is_postname_permalink_structure() {
82
-		// Get current permalink structure.
83
-		$structure = get_option( 'permalink_structure' );
84
-
85
-		// The regular expression. It will check if the site structure contains postname.
86
-		$regex = '~^/\%postname\%/$~';
87
-
88
-		// Check if the site structure match the rquired one.
89
-		preg_match( $regex, $structure, $matches );
90
-
91
-		// Bail if the site have different structure.
92
-		if ( empty( $matches ) ) {
93
-			return false;
94
-		}
95
-
96
-		return true;
97
-	}
98
-
99
-	/**
100
-	 * Generate array data, that should be exported as csv.
101
-	 * The data contains the post/page title, entity name and type.
102
-	 *
103
-	 * @since 3.16.0
104
-	 *
105
-	 * @return array $items Content data.
106
-	 */
107
-	public function get_content_data() {
108
-		// Get the global $wpdb.
109
-		global $wpdb;
110
-
111
-		// Site path (optional).
112
-		$path = $this->get_site_path();
113
-
114
-		// Get the data.
115
-		$items = $wpdb->get_results(
116
-			$wpdb->prepare(
117
-				"SELECT
21
+    /**
22
+     * Export the site data that could be imported in Google Analytics.
23
+     * It will works only when permalink structure is set to "Postname".
24
+     *
25
+     * @since 3.16.0
26
+     *
27
+     * @return void
28
+     */
29
+    public function export() {
30
+        // Bail if the permalink structure is different from "Post name".
31
+        if ( ! $this->is_postname_permalink_structure() ) {
32
+            wp_die( 'The current permalink structure do not allow to export your data. Please change the permalink structure to "Post name".' );
33
+        }
34
+
35
+        // Output the file data. @codingStandardsIgnoreLine
36
+        @ob_end_clean();
37
+
38
+        // Generate unique filename using current timestamp.
39
+        $filename = 'wl-ga-export-' . gmdate( 'Y-m-d-H-i-s' ) . '.csv';
40
+
41
+        // Add proper file headers.
42
+        header( "Content-Disposition: attachment; filename=$filename" );
43
+        header( 'Content-Type: text/csv; charset=' . get_bloginfo( 'charset' ) );
44
+
45
+        // Do not cache the file.
46
+        header( 'Pragma: no-cache' );
47
+        header( 'Expires: 0' );
48
+
49
+        // Build the CSV file.
50
+        $this->create_csv();
51
+
52
+        wp_die();
53
+    }
54
+
55
+    /**
56
+     * Return site path. Some installations are in subdirectories
57
+     * and we need add them to expported permalinks.
58
+     *
59
+     * @since 3.16.0
60
+     *
61
+     * @return string The site path.
62
+     */
63
+    public function get_site_path() {
64
+        // Get home url from database.
65
+        $home_url = home_url( '/' );
66
+
67
+        // Parse the url.
68
+        $parsed = wp_parse_url( $home_url );
69
+
70
+        // Return the path.
71
+        return $parsed['path'];
72
+    }
73
+
74
+    /**
75
+     * Check if the current permalink structure is set to "Post name".
76
+     *
77
+     * @since 3.16.0
78
+     *
79
+     * @return bool whether the structure is "Post name" or not.
80
+     */
81
+    public static function is_postname_permalink_structure() {
82
+        // Get current permalink structure.
83
+        $structure = get_option( 'permalink_structure' );
84
+
85
+        // The regular expression. It will check if the site structure contains postname.
86
+        $regex = '~^/\%postname\%/$~';
87
+
88
+        // Check if the site structure match the rquired one.
89
+        preg_match( $regex, $structure, $matches );
90
+
91
+        // Bail if the site have different structure.
92
+        if ( empty( $matches ) ) {
93
+            return false;
94
+        }
95
+
96
+        return true;
97
+    }
98
+
99
+    /**
100
+     * Generate array data, that should be exported as csv.
101
+     * The data contains the post/page title, entity name and type.
102
+     *
103
+     * @since 3.16.0
104
+     *
105
+     * @return array $items Content data.
106
+     */
107
+    public function get_content_data() {
108
+        // Get the global $wpdb.
109
+        global $wpdb;
110
+
111
+        // Site path (optional).
112
+        $path = $this->get_site_path();
113
+
114
+        // Get the data.
115
+        $items = $wpdb->get_results(
116
+            $wpdb->prepare(
117
+                "SELECT
118 118
 					CONCAT( %s, p.post_name, '/' ) AS 'post_name',
119 119
 					p1.post_name AS 'entity_name',
120 120
 					t.slug AS 'entity_type'
@@ -131,43 +131,43 @@  discard block
 block discarded – undo
131 131
 					INNER JOIN {$wpdb->prefix}terms t
132 132
 						ON t.term_id = tt.term_id
133 133
 					WHERE p.post_type IN ( 'page', 'post' );",
134
-				$path
135
-			)
136
-		); // db call ok; no-cache ok.
137
-
138
-		return $items;
139
-	}
140
-
141
-	/**
142
-	 * Create the CSV file that will be downloaded.
143
-	 *
144
-	 * @since 3.16.0
145
-	 *
146
-	 * @return void
147
-	 */
148
-	public function create_csv() {
149
-		// Create a file pointer connected to the output stream.
150
-		// Ignoring linter notices below that complain about file output which do not actually happen.
151
-		$file = fopen( 'php://output', 'w' );
152
-
153
-		// Add the column headers. @codingStandardsIgnoreLine
154
-		fputcsv(
155
-			$file,
156
-			array(
157
-				'ga:pagePath',
158
-				'ga:dimension1',
159
-				'ga:dimension2',
160
-			)
161
-		);
162
-
163
-		// Cycle through items and add each item data to the file.
164
-		foreach ( $this->get_content_data() as $row ) {
165
-			// Add new line in the file. @codingStandardsIgnoreLine
166
-			fputcsv(
167
-				$file,
168
-				(array) $row // convert the object to array.
169
-			);
170
-		}
171
-	}
134
+                $path
135
+            )
136
+        ); // db call ok; no-cache ok.
137
+
138
+        return $items;
139
+    }
140
+
141
+    /**
142
+     * Create the CSV file that will be downloaded.
143
+     *
144
+     * @since 3.16.0
145
+     *
146
+     * @return void
147
+     */
148
+    public function create_csv() {
149
+        // Create a file pointer connected to the output stream.
150
+        // Ignoring linter notices below that complain about file output which do not actually happen.
151
+        $file = fopen( 'php://output', 'w' );
152
+
153
+        // Add the column headers. @codingStandardsIgnoreLine
154
+        fputcsv(
155
+            $file,
156
+            array(
157
+                'ga:pagePath',
158
+                'ga:dimension1',
159
+                'ga:dimension2',
160
+            )
161
+        );
162
+
163
+        // Cycle through items and add each item data to the file.
164
+        foreach ( $this->get_content_data() as $row ) {
165
+            // Add new line in the file. @codingStandardsIgnoreLine
166
+            fputcsv(
167
+                $file,
168
+                (array) $row // convert the object to array.
169
+            );
170
+        }
171
+    }
172 172
 
173 173
 }
Please login to merge, or discard this patch.
Spacing   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -28,23 +28,23 @@  discard block
 block discarded – undo
28 28
 	 */
29 29
 	public function export() {
30 30
 		// Bail if the permalink structure is different from "Post name".
31
-		if ( ! $this->is_postname_permalink_structure() ) {
32
-			wp_die( 'The current permalink structure do not allow to export your data. Please change the permalink structure to "Post name".' );
31
+		if ( ! $this->is_postname_permalink_structure()) {
32
+			wp_die('The current permalink structure do not allow to export your data. Please change the permalink structure to "Post name".');
33 33
 		}
34 34
 
35 35
 		// Output the file data. @codingStandardsIgnoreLine
36 36
 		@ob_end_clean();
37 37
 
38 38
 		// Generate unique filename using current timestamp.
39
-		$filename = 'wl-ga-export-' . gmdate( 'Y-m-d-H-i-s' ) . '.csv';
39
+		$filename = 'wl-ga-export-'.gmdate('Y-m-d-H-i-s').'.csv';
40 40
 
41 41
 		// Add proper file headers.
42
-		header( "Content-Disposition: attachment; filename=$filename" );
43
-		header( 'Content-Type: text/csv; charset=' . get_bloginfo( 'charset' ) );
42
+		header("Content-Disposition: attachment; filename=$filename");
43
+		header('Content-Type: text/csv; charset='.get_bloginfo('charset'));
44 44
 
45 45
 		// Do not cache the file.
46
-		header( 'Pragma: no-cache' );
47
-		header( 'Expires: 0' );
46
+		header('Pragma: no-cache');
47
+		header('Expires: 0');
48 48
 
49 49
 		// Build the CSV file.
50 50
 		$this->create_csv();
@@ -62,10 +62,10 @@  discard block
 block discarded – undo
62 62
 	 */
63 63
 	public function get_site_path() {
64 64
 		// Get home url from database.
65
-		$home_url = home_url( '/' );
65
+		$home_url = home_url('/');
66 66
 
67 67
 		// Parse the url.
68
-		$parsed = wp_parse_url( $home_url );
68
+		$parsed = wp_parse_url($home_url);
69 69
 
70 70
 		// Return the path.
71 71
 		return $parsed['path'];
@@ -80,16 +80,16 @@  discard block
 block discarded – undo
80 80
 	 */
81 81
 	public static function is_postname_permalink_structure() {
82 82
 		// Get current permalink structure.
83
-		$structure = get_option( 'permalink_structure' );
83
+		$structure = get_option('permalink_structure');
84 84
 
85 85
 		// The regular expression. It will check if the site structure contains postname.
86 86
 		$regex = '~^/\%postname\%/$~';
87 87
 
88 88
 		// Check if the site structure match the rquired one.
89
-		preg_match( $regex, $structure, $matches );
89
+		preg_match($regex, $structure, $matches);
90 90
 
91 91
 		// Bail if the site have different structure.
92
-		if ( empty( $matches ) ) {
92
+		if (empty($matches)) {
93 93
 			return false;
94 94
 		}
95 95
 
@@ -148,7 +148,7 @@  discard block
 block discarded – undo
148 148
 	public function create_csv() {
149 149
 		// Create a file pointer connected to the output stream.
150 150
 		// Ignoring linter notices below that complain about file output which do not actually happen.
151
-		$file = fopen( 'php://output', 'w' );
151
+		$file = fopen('php://output', 'w');
152 152
 
153 153
 		// Add the column headers. @codingStandardsIgnoreLine
154 154
 		fputcsv(
@@ -161,7 +161,7 @@  discard block
 block discarded – undo
161 161
 		);
162 162
 
163 163
 		// Cycle through items and add each item data to the file.
164
-		foreach ( $this->get_content_data() as $row ) {
164
+		foreach ($this->get_content_data() as $row) {
165 165
 			// Add new line in the file. @codingStandardsIgnoreLine
166 166
 			fputcsv(
167 167
 				$file,
Please login to merge, or discard this patch.
src/includes/class-wordlift-configuration-service.php 2 patches
Indentation   +695 added lines, -695 removed lines patch added patch discarded remove patch
@@ -13,7 +13,7 @@  discard block
 block discarded – undo
13 13
 use Wordlift\Api\Default_Api_Service;
14 14
 
15 15
 if ( ! defined( 'ABSPATH' ) ) {
16
-	exit;
16
+    exit;
17 17
 }
18 18
 
19 19
 /**
@@ -23,703 +23,703 @@  discard block
 block discarded – undo
23 23
  */
24 24
 class Wordlift_Configuration_Service {
25 25
 
26
-	/**
27
-	 * The entity base path option name.
28
-	 *
29
-	 * @since 3.6.0
30
-	 */
31
-	const ENTITY_BASE_PATH_KEY = 'wl_entity_base_path';
32
-
33
-	/**
34
-	 * The skip wizard (admin installation wizard) option name.
35
-	 *
36
-	 * @since 3.9.0
37
-	 */
38
-	const SKIP_WIZARD = 'wl_skip_wizard';
39
-
40
-	/**
41
-	 * WordLift's key option name.
42
-	 *
43
-	 * @since 3.9.0
44
-	 */
45
-	const KEY = 'key';
46
-
47
-	/**
48
-	 * WordLift's configured language option name.
49
-	 *
50
-	 * @since 3.9.0
51
-	 */
52
-	const LANGUAGE = 'site_language';
53
-
54
-	/**
55
-	 * WordLift's configured country code.
56
-	 *
57
-	 * @since 3.18.0
58
-	 */
59
-	const COUNTRY_CODE = 'country_code';
60
-
61
-	/**
62
-	 * The publisher entity post ID option name.
63
-	 *
64
-	 * @since 3.9.0
65
-	 */
66
-	const PUBLISHER_ID = 'publisher_id';
67
-
68
-	/**
69
-	 * The dataset URI option name
70
-	 *
71
-	 * @since 3.10.0
72
-	 */
73
-	const DATASET_URI = 'redlink_dataset_uri';
74
-
75
-	/**
76
-	 * The link by default option name.
77
-	 *
78
-	 * @since 3.11.0
79
-	 */
80
-	const LINK_BY_DEFAULT = 'link_by_default';
81
-
82
-	/**
83
-	 * The analytics enable option.
84
-	 *
85
-	 * @since 3.21.0
86
-	 */
87
-	const ANALYTICS_ENABLE = 'analytics_enable';
88
-
89
-	/**
90
-	 * The analytics entity uri dimension option.
91
-	 *
92
-	 * @since 3.21.0
93
-	 */
94
-	const ANALYTICS_ENTITY_URI_DIMENSION = 'analytics_entity_uri_dimension';
95
-
96
-	/**
97
-	 * The analytics entity type dimension option.
98
-	 *
99
-	 * @since 3.21.0
100
-	 */
101
-	const ANALYTICS_ENTITY_TYPE_DIMENSION = 'analytics_entity_type_dimension';
102
-
103
-	/**
104
-	 * The user preferences about sharing data option.
105
-	 *
106
-	 * @since 3.19.0
107
-	 */
108
-	const SEND_DIAGNOSTIC = 'send_diagnostic';
109
-
110
-	/**
111
-	 * The package type configuration key.
112
-	 *
113
-	 * @since 3.20.0
114
-	 */
115
-	const PACKAGE_TYPE = 'package_type';
116
-
117
-	/**
118
-	 * The {@link Wordlift_Log_Service} instance.
119
-	 *
120
-	 * @since 3.16.0
121
-	 *
122
-	 * @var \Wordlift_Log_Service $log The {@link Wordlift_Log_Service} instance.
123
-	 */
124
-	private $log;
125
-
126
-	/**
127
-	 * Create a Wordlift_Configuration_Service's instance.
128
-	 *
129
-	 * @since 3.6.0
130
-	 */
131
-	protected function __construct() {
132
-
133
-		$this->log = Wordlift_Log_Service::get_logger( get_class() );
134
-
135
-	}
136
-
137
-	/**
138
-	 * The Wordlift_Configuration_Service's singleton instance.
139
-	 *
140
-	 * @since  3.6.0
141
-	 *
142
-	 * @access private
143
-	 * @var \Wordlift_Configuration_Service $instance Wordlift_Configuration_Service's singleton instance.
144
-	 */
145
-	private static $instance = null;
146
-
147
-	/**
148
-	 * Get the singleton instance.
149
-	 *
150
-	 * @return \Wordlift_Configuration_Service
151
-	 * @since 3.6.0
152
-	 */
153
-	public static function get_instance() {
154
-
155
-		if ( ! isset( self::$instance ) ) {
156
-			self::$instance = new self();
157
-		}
158
-
159
-		return self::$instance;
160
-	}
161
-
162
-	/**
163
-	 * Get a configuration given the option name and a key. The option value is
164
-	 * expected to be an array.
165
-	 *
166
-	 * @param string $option The option name.
167
-	 * @param string $key A key in the option value array.
168
-	 * @param string $default The default value in case the key is not found (by default an empty string).
169
-	 *
170
-	 * @return mixed The configuration value or the default value if not found.
171
-	 * @since 3.6.0
172
-	 */
173
-	private function get( $option, $key, $default = '' ) {
174
-
175
-		$options = get_option( $option, array() );
176
-
177
-		return isset( $options[ $key ] ) ? $options[ $key ] : $default;
178
-	}
179
-
180
-	/**
181
-	 * Set a configuration parameter.
182
-	 *
183
-	 * @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
184
-	 * @param string $key The value key.
185
-	 * @param mixed  $value The value.
186
-	 *
187
-	 * @since 3.9.0
188
-	 */
189
-	private function set( $option, $key, $value ) {
190
-
191
-		$values         = get_option( $option );
192
-		$values         = isset( $values ) ? $values : array();
193
-		$values[ $key ] = $value;
194
-		update_option( $option, $values );
195
-
196
-	}
197
-
198
-	/**
199
-	 * Get the entity base path, by default 'entity'.
200
-	 *
201
-	 * @return string The entity base path.
202
-	 * @since 3.6.0
203
-	 */
204
-	public function get_entity_base_path() {
205
-
206
-		return $this->get( 'wl_general_settings', self::ENTITY_BASE_PATH_KEY, 'entity' );
207
-	}
208
-
209
-	/**
210
-	 * Get the entity base path.
211
-	 *
212
-	 * @param string $value The entity base path.
213
-	 *
214
-	 * @since 3.9.0
215
-	 */
216
-	public function set_entity_base_path( $value ) {
217
-
218
-		$this->set( 'wl_general_settings', self::ENTITY_BASE_PATH_KEY, $value );
219
-
220
-	}
221
-
222
-	/**
223
-	 * Whether the installation skip wizard should be skipped.
224
-	 *
225
-	 * @return bool True if it should be skipped otherwise false.
226
-	 * @since 3.9.0
227
-	 */
228
-	public function is_skip_wizard() {
229
-
230
-		return $this->get( 'wl_general_settings', self::SKIP_WIZARD, false );
231
-	}
232
-
233
-	/**
234
-	 * Set the skip wizard parameter.
235
-	 *
236
-	 * @param bool $value True to skip the wizard. We expect a boolean value.
237
-	 *
238
-	 * @since 3.9.0
239
-	 */
240
-	public function set_skip_wizard( $value ) {
241
-
242
-		$this->set( 'wl_general_settings', self::SKIP_WIZARD, true === $value );
243
-
244
-	}
245
-
246
-	/**
247
-	 * Get WordLift's key.
248
-	 *
249
-	 * @return string WordLift's key or an empty string if not set.
250
-	 * @since 3.9.0
251
-	 */
252
-	public function get_key() {
253
-
254
-		return $this->get( 'wl_general_settings', self::KEY, '' );
255
-	}
256
-
257
-	/**
258
-	 * Set WordLift's key.
259
-	 *
260
-	 * @param string $value WordLift's key.
261
-	 *
262
-	 * @since 3.9.0
263
-	 */
264
-	public function set_key( $value ) {
265
-
266
-		$this->set( 'wl_general_settings', self::KEY, $value );
267
-	}
268
-
269
-	/**
270
-	 * Get WordLift's configured language, by default 'en'.
271
-	 *
272
-	 * Note that WordLift's language is used when writing strings to the Linked Data dataset, not for the analysis.
273
-	 *
274
-	 * @return string WordLift's configured language code ('en' by default).
275
-	 * @since 3.9.0
276
-	 */
277
-	public function get_language_code() {
278
-
279
-		$language = get_locale();
280
-		if ( ! $language ) {
281
-			return 'en';
282
-		}
283
-
284
-		return substr( $language, 0, 2 );
285
-	}
286
-
287
-	/**
288
-	 * @param string $value WordLift's language code.
289
-	 *
290
-	 * @see https://github.com/insideout10/wordlift-plugin/issues/1466
291
-	 *
292
-	 * Set WordLift's language code, used when storing strings to the Linked Data dataset.
293
-	 *
294
-	 * @deprecated As of 3.32.7 this below method has no effect on setting the language, we use the
295
-	 * language code form WordPress directly.
296
-	 *
297
-	 * @since 3.9.0
298
-	 */
299
-	public function set_language_code( $value ) {
300
-
301
-		$this->set( 'wl_general_settings', self::LANGUAGE, $value );
302
-
303
-	}
304
-
305
-	/**
306
-	 * Set the user preferences about sharing diagnostic with us.
307
-	 *
308
-	 * @param string $value The user preferences(yes/no).
309
-	 *
310
-	 * @since 3.19.0
311
-	 */
312
-	public function set_diagnostic_preferences( $value ) {
313
-
314
-		$this->set( 'wl_general_settings', self::SEND_DIAGNOSTIC, $value );
315
-
316
-	}
317
-
318
-	/**
319
-	 * Get the user preferences about sharing diagnostic.
320
-	 *
321
-	 * @since 3.19.0
322
-	 */
323
-	public function get_diagnostic_preferences() {
324
-
325
-		return $this->get( 'wl_general_settings', self::SEND_DIAGNOSTIC, 'no' );
326
-	}
327
-
328
-	/**
329
-	 * Get WordLift's configured country code, by default 'us'.
330
-	 *
331
-	 * @return string WordLift's configured country code ('us' by default).
332
-	 * @since 3.18.0
333
-	 */
334
-	public function get_country_code() {
335
-
336
-		return $this->get( 'wl_general_settings', self::COUNTRY_CODE, 'us' );
337
-	}
338
-
339
-	/**
340
-	 * Set WordLift's country code.
341
-	 *
342
-	 * @param string $value WordLift's country code.
343
-	 *
344
-	 * @since 3.18.0
345
-	 */
346
-	public function set_country_code( $value ) {
347
-
348
-		$this->set( 'wl_general_settings', self::COUNTRY_CODE, $value );
349
-
350
-	}
351
-
352
-	/**
353
-	 * Get the publisher entity post id.
354
-	 *
355
-	 * The publisher entity post id points to an entity post which contains the data for the publisher used in schema.org
356
-	 * Article markup.
357
-	 *
358
-	 * @return int|NULL The publisher entity post id or NULL if not set.
359
-	 * @since 3.9.0
360
-	 */
361
-	public function get_publisher_id() {
362
-
363
-		return $this->get( 'wl_general_settings', self::PUBLISHER_ID, null );
364
-	}
365
-
366
-	/**
367
-	 * Set the publisher entity post id.
368
-	 *
369
-	 * @param int $value The publisher entity post id.
370
-	 *
371
-	 * @since 3.9.0
372
-	 */
373
-	public function set_publisher_id( $value ) {
374
-
375
-		$this->set( 'wl_general_settings', self::PUBLISHER_ID, $value );
376
-
377
-	}
378
-
379
-	/**
380
-	 * Get the dataset URI.
381
-	 *
382
-	 * @return string The dataset URI or an empty string if not set.
383
-	 * @since 3.10.0
384
-	 * @since 3.27.7 Always return null if `wl_features__enable__dataset` is disabled.
385
-	 */
386
-	public function get_dataset_uri() {
387
-
388
-		if ( apply_filters( 'wl_feature__enable__dataset', true ) ) {
389
-			return $this->get( 'wl_advanced_settings', self::DATASET_URI, null );
390
-		} else {
391
-			return null;
392
-		}
393
-	}
394
-
395
-	/**
396
-	 * Set the dataset URI.
397
-	 *
398
-	 * @param string $value The dataset URI.
399
-	 *
400
-	 * @since 3.10.0
401
-	 */
402
-	public function set_dataset_uri( $value ) {
403
-
404
-		$this->set( 'wl_advanced_settings', self::DATASET_URI, $value );
405
-	}
406
-
407
-	/**
408
-	 * Get the package type.
409
-	 *
410
-	 * @return string The package type or an empty string if not set.
411
-	 * @since 3.20.0
412
-	 */
413
-	public function get_package_type() {
414
-
415
-		return $this->get( 'wl_advanced_settings', self::PACKAGE_TYPE, null );
416
-	}
417
-
418
-	/**
419
-	 * Set the package type.
420
-	 *
421
-	 * @param string $value The package type.
422
-	 *
423
-	 * @since 3.20.0
424
-	 */
425
-	public function set_package_type( $value ) {
426
-		$this->set( 'wl_advanced_settings', self::PACKAGE_TYPE, $value );
427
-	}
428
-
429
-	/**
430
-	 * Intercept the change of the WordLift key in order to set the dataset URI.
431
-	 *
432
-	 * @since 3.20.0 as of #761, we save settings every time a key is set, not only when the key changes, so to
433
-	 *               store the configuration parameters such as country or language.
434
-	 * @since 3.11.0
435
-	 *
436
-	 * @see https://github.com/insideout10/wordlift-plugin/issues/761
437
-	 *
438
-	 * @param array $old_value The old settings.
439
-	 * @param array $new_value The new settings.
440
-	 */
441
-	public function update_key( $old_value, $new_value ) {
442
-
443
-		// Check the old key value and the new one. We're going to ask for the dataset URI only if the key has changed.
444
-		// $old_key = isset( $old_value['key'] ) ? $old_value['key'] : '';
445
-		$new_key = isset( $new_value['key'] ) ? $new_value['key'] : '';
446
-
447
-		// If the key hasn't changed, don't do anything.
448
-		// WARN The 'update_option' hook is fired only if the new and old value are not equal.
449
-		// if ( $old_key === $new_key ) {
450
-		// return;
451
-		// }
452
-
453
-		// If the key is empty, empty the dataset URI.
454
-		if ( '' === $new_key ) {
455
-			$this->set_dataset_uri( '' );
456
-		}
457
-
458
-		// make the request to the remote server.
459
-		$this->get_remote_dataset_uri( $new_key );
460
-
461
-		do_action( 'wl_key_updated' );
462
-
463
-	}
464
-
465
-	/**
466
-	 * Handle retrieving the dataset uri from the remote server.
467
-	 *
468
-	 * If a valid dataset uri is returned it is stored in the appropriate option,
469
-	 * otherwise the option is set to empty string.
470
-	 *
471
-	 * @param string $key The key to be used.
472
-	 *
473
-	 * @since 3.12.0
474
-	 *
475
-	 * @since 3.17.0 send the site URL and get the dataset URI.
476
-	 */
477
-	public function get_remote_dataset_uri( $key ) {
478
-
479
-		$this->log->trace( 'Getting the remote dataset URI and package type...' );
480
-
481
-		if ( empty( $key ) ) {
482
-			$this->log->warn( 'Key set to empty value.' );
483
-
484
-			$this->set_dataset_uri( '' );
485
-			$this->set_package_type( null );
486
-
487
-			return;
488
-		}
489
-
490
-		/**
491
-		 * Allow 3rd parties to change the site_url.
492
-		 *
493
-		 * @param string $site_url The site url.
494
-		 *
495
-		 * @see https://github.com/insideout10/wordlift-plugin/issues/850
496
-		 *
497
-		 * @since 3.20.0
498
-		 */
499
-		$home_url = get_option( 'home' );
500
-		$site_url = apply_filters( 'wl_production_site_url', untrailingslashit( $home_url ) );
501
-
502
-		// Build the URL.
503
-		$url = '/accounts'
504
-			   . '?key=' . rawurlencode( $key )
505
-			   . '&url=' . rawurlencode( $site_url )
506
-			   . '&country=' . $this->get_country_code()
507
-			   . '&language=' . $this->get_language_code();
508
-
509
-		$api_service = Default_Api_Service::get_instance();
510
-		/**
511
-		 * @since 3.27.7.1
512
-		 * The Key should be passed to headers, otherwise api would return null.
513
-		 */
514
-		$headers  = array(
515
-			'Authorization' => "Key $key",
516
-		);
517
-		$response = $api_service->request( 'PUT', $url, $headers )->get_response();
518
-
519
-		// The response is an error.
520
-		if ( is_wp_error( $response ) ) {
521
-			$this->log->error( 'An error occurred setting the dataset URI: ' . $response->get_error_message() );
522
-
523
-			$this->set_dataset_uri( '' );
524
-			$this->set_package_type( null );
525
-
526
-			return;
527
-		}
528
-
529
-		// The response is not OK.
530
-		if ( ! is_array( $response ) || 200 !== (int) $response['response']['code'] ) {
531
-			$base_url = $api_service->get_base_url();
532
-
533
-			if ( ! is_array( $response ) ) {
534
-				// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export
535
-				$this->log->error( "Unexpected response when opening URL $base_url$url: " . var_export( $response, true ) );
536
-			} else {
537
-				// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export
538
-				$this->log->error( "Unexpected status code when opening URL $base_url$url: " . $response['response']['code'] . "\n" . var_export( $response, true ) );
539
-			}
540
-
541
-			$this->set_dataset_uri( '' );
542
-			$this->set_package_type( null );
543
-
544
-			return;
545
-		}
546
-
547
-		/*
26
+    /**
27
+     * The entity base path option name.
28
+     *
29
+     * @since 3.6.0
30
+     */
31
+    const ENTITY_BASE_PATH_KEY = 'wl_entity_base_path';
32
+
33
+    /**
34
+     * The skip wizard (admin installation wizard) option name.
35
+     *
36
+     * @since 3.9.0
37
+     */
38
+    const SKIP_WIZARD = 'wl_skip_wizard';
39
+
40
+    /**
41
+     * WordLift's key option name.
42
+     *
43
+     * @since 3.9.0
44
+     */
45
+    const KEY = 'key';
46
+
47
+    /**
48
+     * WordLift's configured language option name.
49
+     *
50
+     * @since 3.9.0
51
+     */
52
+    const LANGUAGE = 'site_language';
53
+
54
+    /**
55
+     * WordLift's configured country code.
56
+     *
57
+     * @since 3.18.0
58
+     */
59
+    const COUNTRY_CODE = 'country_code';
60
+
61
+    /**
62
+     * The publisher entity post ID option name.
63
+     *
64
+     * @since 3.9.0
65
+     */
66
+    const PUBLISHER_ID = 'publisher_id';
67
+
68
+    /**
69
+     * The dataset URI option name
70
+     *
71
+     * @since 3.10.0
72
+     */
73
+    const DATASET_URI = 'redlink_dataset_uri';
74
+
75
+    /**
76
+     * The link by default option name.
77
+     *
78
+     * @since 3.11.0
79
+     */
80
+    const LINK_BY_DEFAULT = 'link_by_default';
81
+
82
+    /**
83
+     * The analytics enable option.
84
+     *
85
+     * @since 3.21.0
86
+     */
87
+    const ANALYTICS_ENABLE = 'analytics_enable';
88
+
89
+    /**
90
+     * The analytics entity uri dimension option.
91
+     *
92
+     * @since 3.21.0
93
+     */
94
+    const ANALYTICS_ENTITY_URI_DIMENSION = 'analytics_entity_uri_dimension';
95
+
96
+    /**
97
+     * The analytics entity type dimension option.
98
+     *
99
+     * @since 3.21.0
100
+     */
101
+    const ANALYTICS_ENTITY_TYPE_DIMENSION = 'analytics_entity_type_dimension';
102
+
103
+    /**
104
+     * The user preferences about sharing data option.
105
+     *
106
+     * @since 3.19.0
107
+     */
108
+    const SEND_DIAGNOSTIC = 'send_diagnostic';
109
+
110
+    /**
111
+     * The package type configuration key.
112
+     *
113
+     * @since 3.20.0
114
+     */
115
+    const PACKAGE_TYPE = 'package_type';
116
+
117
+    /**
118
+     * The {@link Wordlift_Log_Service} instance.
119
+     *
120
+     * @since 3.16.0
121
+     *
122
+     * @var \Wordlift_Log_Service $log The {@link Wordlift_Log_Service} instance.
123
+     */
124
+    private $log;
125
+
126
+    /**
127
+     * Create a Wordlift_Configuration_Service's instance.
128
+     *
129
+     * @since 3.6.0
130
+     */
131
+    protected function __construct() {
132
+
133
+        $this->log = Wordlift_Log_Service::get_logger( get_class() );
134
+
135
+    }
136
+
137
+    /**
138
+     * The Wordlift_Configuration_Service's singleton instance.
139
+     *
140
+     * @since  3.6.0
141
+     *
142
+     * @access private
143
+     * @var \Wordlift_Configuration_Service $instance Wordlift_Configuration_Service's singleton instance.
144
+     */
145
+    private static $instance = null;
146
+
147
+    /**
148
+     * Get the singleton instance.
149
+     *
150
+     * @return \Wordlift_Configuration_Service
151
+     * @since 3.6.0
152
+     */
153
+    public static function get_instance() {
154
+
155
+        if ( ! isset( self::$instance ) ) {
156
+            self::$instance = new self();
157
+        }
158
+
159
+        return self::$instance;
160
+    }
161
+
162
+    /**
163
+     * Get a configuration given the option name and a key. The option value is
164
+     * expected to be an array.
165
+     *
166
+     * @param string $option The option name.
167
+     * @param string $key A key in the option value array.
168
+     * @param string $default The default value in case the key is not found (by default an empty string).
169
+     *
170
+     * @return mixed The configuration value or the default value if not found.
171
+     * @since 3.6.0
172
+     */
173
+    private function get( $option, $key, $default = '' ) {
174
+
175
+        $options = get_option( $option, array() );
176
+
177
+        return isset( $options[ $key ] ) ? $options[ $key ] : $default;
178
+    }
179
+
180
+    /**
181
+     * Set a configuration parameter.
182
+     *
183
+     * @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
184
+     * @param string $key The value key.
185
+     * @param mixed  $value The value.
186
+     *
187
+     * @since 3.9.0
188
+     */
189
+    private function set( $option, $key, $value ) {
190
+
191
+        $values         = get_option( $option );
192
+        $values         = isset( $values ) ? $values : array();
193
+        $values[ $key ] = $value;
194
+        update_option( $option, $values );
195
+
196
+    }
197
+
198
+    /**
199
+     * Get the entity base path, by default 'entity'.
200
+     *
201
+     * @return string The entity base path.
202
+     * @since 3.6.0
203
+     */
204
+    public function get_entity_base_path() {
205
+
206
+        return $this->get( 'wl_general_settings', self::ENTITY_BASE_PATH_KEY, 'entity' );
207
+    }
208
+
209
+    /**
210
+     * Get the entity base path.
211
+     *
212
+     * @param string $value The entity base path.
213
+     *
214
+     * @since 3.9.0
215
+     */
216
+    public function set_entity_base_path( $value ) {
217
+
218
+        $this->set( 'wl_general_settings', self::ENTITY_BASE_PATH_KEY, $value );
219
+
220
+    }
221
+
222
+    /**
223
+     * Whether the installation skip wizard should be skipped.
224
+     *
225
+     * @return bool True if it should be skipped otherwise false.
226
+     * @since 3.9.0
227
+     */
228
+    public function is_skip_wizard() {
229
+
230
+        return $this->get( 'wl_general_settings', self::SKIP_WIZARD, false );
231
+    }
232
+
233
+    /**
234
+     * Set the skip wizard parameter.
235
+     *
236
+     * @param bool $value True to skip the wizard. We expect a boolean value.
237
+     *
238
+     * @since 3.9.0
239
+     */
240
+    public function set_skip_wizard( $value ) {
241
+
242
+        $this->set( 'wl_general_settings', self::SKIP_WIZARD, true === $value );
243
+
244
+    }
245
+
246
+    /**
247
+     * Get WordLift's key.
248
+     *
249
+     * @return string WordLift's key or an empty string if not set.
250
+     * @since 3.9.0
251
+     */
252
+    public function get_key() {
253
+
254
+        return $this->get( 'wl_general_settings', self::KEY, '' );
255
+    }
256
+
257
+    /**
258
+     * Set WordLift's key.
259
+     *
260
+     * @param string $value WordLift's key.
261
+     *
262
+     * @since 3.9.0
263
+     */
264
+    public function set_key( $value ) {
265
+
266
+        $this->set( 'wl_general_settings', self::KEY, $value );
267
+    }
268
+
269
+    /**
270
+     * Get WordLift's configured language, by default 'en'.
271
+     *
272
+     * Note that WordLift's language is used when writing strings to the Linked Data dataset, not for the analysis.
273
+     *
274
+     * @return string WordLift's configured language code ('en' by default).
275
+     * @since 3.9.0
276
+     */
277
+    public function get_language_code() {
278
+
279
+        $language = get_locale();
280
+        if ( ! $language ) {
281
+            return 'en';
282
+        }
283
+
284
+        return substr( $language, 0, 2 );
285
+    }
286
+
287
+    /**
288
+     * @param string $value WordLift's language code.
289
+     *
290
+     * @see https://github.com/insideout10/wordlift-plugin/issues/1466
291
+     *
292
+     * Set WordLift's language code, used when storing strings to the Linked Data dataset.
293
+     *
294
+     * @deprecated As of 3.32.7 this below method has no effect on setting the language, we use the
295
+     * language code form WordPress directly.
296
+     *
297
+     * @since 3.9.0
298
+     */
299
+    public function set_language_code( $value ) {
300
+
301
+        $this->set( 'wl_general_settings', self::LANGUAGE, $value );
302
+
303
+    }
304
+
305
+    /**
306
+     * Set the user preferences about sharing diagnostic with us.
307
+     *
308
+     * @param string $value The user preferences(yes/no).
309
+     *
310
+     * @since 3.19.0
311
+     */
312
+    public function set_diagnostic_preferences( $value ) {
313
+
314
+        $this->set( 'wl_general_settings', self::SEND_DIAGNOSTIC, $value );
315
+
316
+    }
317
+
318
+    /**
319
+     * Get the user preferences about sharing diagnostic.
320
+     *
321
+     * @since 3.19.0
322
+     */
323
+    public function get_diagnostic_preferences() {
324
+
325
+        return $this->get( 'wl_general_settings', self::SEND_DIAGNOSTIC, 'no' );
326
+    }
327
+
328
+    /**
329
+     * Get WordLift's configured country code, by default 'us'.
330
+     *
331
+     * @return string WordLift's configured country code ('us' by default).
332
+     * @since 3.18.0
333
+     */
334
+    public function get_country_code() {
335
+
336
+        return $this->get( 'wl_general_settings', self::COUNTRY_CODE, 'us' );
337
+    }
338
+
339
+    /**
340
+     * Set WordLift's country code.
341
+     *
342
+     * @param string $value WordLift's country code.
343
+     *
344
+     * @since 3.18.0
345
+     */
346
+    public function set_country_code( $value ) {
347
+
348
+        $this->set( 'wl_general_settings', self::COUNTRY_CODE, $value );
349
+
350
+    }
351
+
352
+    /**
353
+     * Get the publisher entity post id.
354
+     *
355
+     * The publisher entity post id points to an entity post which contains the data for the publisher used in schema.org
356
+     * Article markup.
357
+     *
358
+     * @return int|NULL The publisher entity post id or NULL if not set.
359
+     * @since 3.9.0
360
+     */
361
+    public function get_publisher_id() {
362
+
363
+        return $this->get( 'wl_general_settings', self::PUBLISHER_ID, null );
364
+    }
365
+
366
+    /**
367
+     * Set the publisher entity post id.
368
+     *
369
+     * @param int $value The publisher entity post id.
370
+     *
371
+     * @since 3.9.0
372
+     */
373
+    public function set_publisher_id( $value ) {
374
+
375
+        $this->set( 'wl_general_settings', self::PUBLISHER_ID, $value );
376
+
377
+    }
378
+
379
+    /**
380
+     * Get the dataset URI.
381
+     *
382
+     * @return string The dataset URI or an empty string if not set.
383
+     * @since 3.10.0
384
+     * @since 3.27.7 Always return null if `wl_features__enable__dataset` is disabled.
385
+     */
386
+    public function get_dataset_uri() {
387
+
388
+        if ( apply_filters( 'wl_feature__enable__dataset', true ) ) {
389
+            return $this->get( 'wl_advanced_settings', self::DATASET_URI, null );
390
+        } else {
391
+            return null;
392
+        }
393
+    }
394
+
395
+    /**
396
+     * Set the dataset URI.
397
+     *
398
+     * @param string $value The dataset URI.
399
+     *
400
+     * @since 3.10.0
401
+     */
402
+    public function set_dataset_uri( $value ) {
403
+
404
+        $this->set( 'wl_advanced_settings', self::DATASET_URI, $value );
405
+    }
406
+
407
+    /**
408
+     * Get the package type.
409
+     *
410
+     * @return string The package type or an empty string if not set.
411
+     * @since 3.20.0
412
+     */
413
+    public function get_package_type() {
414
+
415
+        return $this->get( 'wl_advanced_settings', self::PACKAGE_TYPE, null );
416
+    }
417
+
418
+    /**
419
+     * Set the package type.
420
+     *
421
+     * @param string $value The package type.
422
+     *
423
+     * @since 3.20.0
424
+     */
425
+    public function set_package_type( $value ) {
426
+        $this->set( 'wl_advanced_settings', self::PACKAGE_TYPE, $value );
427
+    }
428
+
429
+    /**
430
+     * Intercept the change of the WordLift key in order to set the dataset URI.
431
+     *
432
+     * @since 3.20.0 as of #761, we save settings every time a key is set, not only when the key changes, so to
433
+     *               store the configuration parameters such as country or language.
434
+     * @since 3.11.0
435
+     *
436
+     * @see https://github.com/insideout10/wordlift-plugin/issues/761
437
+     *
438
+     * @param array $old_value The old settings.
439
+     * @param array $new_value The new settings.
440
+     */
441
+    public function update_key( $old_value, $new_value ) {
442
+
443
+        // Check the old key value and the new one. We're going to ask for the dataset URI only if the key has changed.
444
+        // $old_key = isset( $old_value['key'] ) ? $old_value['key'] : '';
445
+        $new_key = isset( $new_value['key'] ) ? $new_value['key'] : '';
446
+
447
+        // If the key hasn't changed, don't do anything.
448
+        // WARN The 'update_option' hook is fired only if the new and old value are not equal.
449
+        // if ( $old_key === $new_key ) {
450
+        // return;
451
+        // }
452
+
453
+        // If the key is empty, empty the dataset URI.
454
+        if ( '' === $new_key ) {
455
+            $this->set_dataset_uri( '' );
456
+        }
457
+
458
+        // make the request to the remote server.
459
+        $this->get_remote_dataset_uri( $new_key );
460
+
461
+        do_action( 'wl_key_updated' );
462
+
463
+    }
464
+
465
+    /**
466
+     * Handle retrieving the dataset uri from the remote server.
467
+     *
468
+     * If a valid dataset uri is returned it is stored in the appropriate option,
469
+     * otherwise the option is set to empty string.
470
+     *
471
+     * @param string $key The key to be used.
472
+     *
473
+     * @since 3.12.0
474
+     *
475
+     * @since 3.17.0 send the site URL and get the dataset URI.
476
+     */
477
+    public function get_remote_dataset_uri( $key ) {
478
+
479
+        $this->log->trace( 'Getting the remote dataset URI and package type...' );
480
+
481
+        if ( empty( $key ) ) {
482
+            $this->log->warn( 'Key set to empty value.' );
483
+
484
+            $this->set_dataset_uri( '' );
485
+            $this->set_package_type( null );
486
+
487
+            return;
488
+        }
489
+
490
+        /**
491
+         * Allow 3rd parties to change the site_url.
492
+         *
493
+         * @param string $site_url The site url.
494
+         *
495
+         * @see https://github.com/insideout10/wordlift-plugin/issues/850
496
+         *
497
+         * @since 3.20.0
498
+         */
499
+        $home_url = get_option( 'home' );
500
+        $site_url = apply_filters( 'wl_production_site_url', untrailingslashit( $home_url ) );
501
+
502
+        // Build the URL.
503
+        $url = '/accounts'
504
+                . '?key=' . rawurlencode( $key )
505
+                . '&url=' . rawurlencode( $site_url )
506
+                . '&country=' . $this->get_country_code()
507
+                . '&language=' . $this->get_language_code();
508
+
509
+        $api_service = Default_Api_Service::get_instance();
510
+        /**
511
+         * @since 3.27.7.1
512
+         * The Key should be passed to headers, otherwise api would return null.
513
+         */
514
+        $headers  = array(
515
+            'Authorization' => "Key $key",
516
+        );
517
+        $response = $api_service->request( 'PUT', $url, $headers )->get_response();
518
+
519
+        // The response is an error.
520
+        if ( is_wp_error( $response ) ) {
521
+            $this->log->error( 'An error occurred setting the dataset URI: ' . $response->get_error_message() );
522
+
523
+            $this->set_dataset_uri( '' );
524
+            $this->set_package_type( null );
525
+
526
+            return;
527
+        }
528
+
529
+        // The response is not OK.
530
+        if ( ! is_array( $response ) || 200 !== (int) $response['response']['code'] ) {
531
+            $base_url = $api_service->get_base_url();
532
+
533
+            if ( ! is_array( $response ) ) {
534
+                // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export
535
+                $this->log->error( "Unexpected response when opening URL $base_url$url: " . var_export( $response, true ) );
536
+            } else {
537
+                // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export
538
+                $this->log->error( "Unexpected status code when opening URL $base_url$url: " . $response['response']['code'] . "\n" . var_export( $response, true ) );
539
+            }
540
+
541
+            $this->set_dataset_uri( '' );
542
+            $this->set_package_type( null );
543
+
544
+            return;
545
+        }
546
+
547
+        /*
548 548
 		 * We also store the package type.
549 549
 		 *
550 550
 		 * @since 3.20.0
551 551
 		 */
552
-		$json = json_decode( $response['body'] );
553
-		/**
554
-		 * @since 3.27.7
555
-		 * Remove the trailing slash returned from the new platform api.
556
-		 */
557
-		// phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
558
-		$dataset_uri = untrailingslashit( $json->datasetURI );
559
-		// phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
560
-		$package_type = isset( $json->packageType ) ? $json->packageType : null;
561
-
562
-		$this->log->info( "Updating [ dataset uri :: $dataset_uri ][ package type :: $package_type ]..." );
563
-
564
-		$this->set_dataset_uri( $dataset_uri );
565
-		$this->set_package_type( $package_type );
566
-	}
567
-
568
-	/**
569
-	 * Handle the edge case where a user submits the same key again
570
-	 * when he does not have the dataset uri to regain it.
571
-	 *
572
-	 * This can not be handled in the normal option update hook because
573
-	 * it is not being triggered when the save value equals to the one already
574
-	 * in the DB.
575
-	 *
576
-	 * @param mixed $value The new, unserialized option value.
577
-	 * @param mixed $old_value The old option value.
578
-	 *
579
-	 * @return mixed The same value in the $value parameter
580
-	 * @since 3.12.0
581
-	 */
582
-	public function maybe_update_dataset_uri( $value, $old_value ) {
583
-
584
-		// Check the old key value and the new one. Here we're only handling the
585
-		// case where the key hasn't changed and the dataset URI isn't set. The
586
-		// other case, i.e. a new key is inserted, is handled at `update_key`.
587
-		$old_key = isset( $old_value['key'] ) ? $old_value['key'] : '';
588
-		$new_key = isset( $value['key'] ) ? $value['key'] : '';
589
-
590
-		$dataset_uri = $this->get_dataset_uri();
591
-
592
-		if ( ! empty( $new_key ) && $new_key === $old_key && empty( $dataset_uri ) ) {
593
-
594
-			// make the request to the remote server to try to get the dataset uri.
595
-			$this->get_remote_dataset_uri( $new_key );
596
-		}
597
-
598
-		return $value;
599
-	}
600
-
601
-	/**
602
-	 * Get the API URI to retrieve the dataset URI using the WordLift Key.
603
-	 *
604
-	 * @param string $key The WordLift key to use.
605
-	 *
606
-	 * @return string The API URI.
607
-	 * @since 3.11.0
608
-	 */
609
-	public function get_accounts_by_key_dataset_uri( $key ) {
610
-
611
-		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . "accounts/key=$key/dataset_uri";
612
-	}
613
-
614
-	/**
615
-	 * Get the `accounts` end point.
616
-	 *
617
-	 * @return string The `accounts` end point.
618
-	 * @since 3.16.0
619
-	 */
620
-	public function get_accounts() {
621
-
622
-		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . 'accounts';
623
-	}
624
-
625
-	/**
626
-	 * Get the `link by default` option.
627
-	 *
628
-	 * @return bool True if entities must be linked by default otherwise false.
629
-	 * @since 3.13.0
630
-	 */
631
-	public function is_link_by_default() {
632
-
633
-		return 'yes' === $this->get( 'wl_general_settings', self::LINK_BY_DEFAULT, 'yes' );
634
-	}
635
-
636
-	/**
637
-	 * Set the `link by default` option.
638
-	 *
639
-	 * @param bool $value True to enabling linking by default, otherwise false.
640
-	 *
641
-	 * @since 3.13.0
642
-	 */
643
-	public function set_link_by_default( $value ) {
644
-
645
-		$this->set( 'wl_general_settings', self::LINK_BY_DEFAULT, true === $value ? 'yes' : 'no' );
646
-	}
647
-
648
-	/**
649
-	 * Get the 'analytics-enable' option.
650
-	 *
651
-	 * @return string 'no' or 'yes' representing bool.
652
-	 * @since 3.21.0
653
-	 */
654
-	public function is_analytics_enable() {
655
-		return 'yes' === $this->get( 'wl_analytics_settings', self::ANALYTICS_ENABLE, 'no' );
656
-	}
657
-
658
-	/**
659
-	 * Set the `analytics-enable` option.
660
-	 *
661
-	 * @param bool $value True to enabling analytics, otherwise false.
662
-	 *
663
-	 * @since 3.21.0
664
-	 */
665
-	public function set_is_analytics_enable( $value ) {
666
-
667
-		$this->set( 'wl_general_settings', self::ANALYTICS_ENABLE, true === $value ? 'yes' : 'no' );
668
-	}
669
-
670
-	/**
671
-	 * Get the 'analytics-entity-uri-dimention' option.
672
-	 *
673
-	 * @return int
674
-	 * @since 3.21.0
675
-	 */
676
-	public function get_analytics_entity_uri_dimension() {
677
-		return (int) $this->get( 'wl_analytics_settings', self::ANALYTICS_ENTITY_URI_DIMENSION, 1 );
678
-	}
679
-
680
-	/**
681
-	 * Get the 'analytics-entity-type-dimension' option.
682
-	 *
683
-	 * @return int
684
-	 * @since 3.21.0
685
-	 */
686
-	public function get_analytics_entity_type_dimension() {
687
-		return $this->get( 'wl_analytics_settings', self::ANALYTICS_ENTITY_TYPE_DIMENSION, 2 );
688
-	}
689
-
690
-	/**
691
-	 * Get the URL to perform autocomplete request.
692
-	 *
693
-	 * @return string The URL to call to perform the autocomplete request.
694
-	 * @since 3.15.0
695
-	 */
696
-	public function get_autocomplete_url() {
697
-
698
-		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . 'autocomplete';
699
-
700
-	}
701
-
702
-	/**
703
-	 * Get the URL to perform feedback deactivation request.
704
-	 *
705
-	 * @return string The URL to call to perform the feedback deactivation request.
706
-	 * @since 3.19.0
707
-	 */
708
-	public function get_deactivation_feedback_url() {
709
-
710
-		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . 'feedbacks';
711
-
712
-	}
713
-
714
-	/**
715
-	 * Get the base API URL.
716
-	 *
717
-	 * @return string The base API URL.
718
-	 * @since 3.20.0
719
-	 */
720
-	public function get_api_url() {
721
-
722
-		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE;
723
-	}
552
+        $json = json_decode( $response['body'] );
553
+        /**
554
+         * @since 3.27.7
555
+         * Remove the trailing slash returned from the new platform api.
556
+         */
557
+        // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
558
+        $dataset_uri = untrailingslashit( $json->datasetURI );
559
+        // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
560
+        $package_type = isset( $json->packageType ) ? $json->packageType : null;
561
+
562
+        $this->log->info( "Updating [ dataset uri :: $dataset_uri ][ package type :: $package_type ]..." );
563
+
564
+        $this->set_dataset_uri( $dataset_uri );
565
+        $this->set_package_type( $package_type );
566
+    }
567
+
568
+    /**
569
+     * Handle the edge case where a user submits the same key again
570
+     * when he does not have the dataset uri to regain it.
571
+     *
572
+     * This can not be handled in the normal option update hook because
573
+     * it is not being triggered when the save value equals to the one already
574
+     * in the DB.
575
+     *
576
+     * @param mixed $value The new, unserialized option value.
577
+     * @param mixed $old_value The old option value.
578
+     *
579
+     * @return mixed The same value in the $value parameter
580
+     * @since 3.12.0
581
+     */
582
+    public function maybe_update_dataset_uri( $value, $old_value ) {
583
+
584
+        // Check the old key value and the new one. Here we're only handling the
585
+        // case where the key hasn't changed and the dataset URI isn't set. The
586
+        // other case, i.e. a new key is inserted, is handled at `update_key`.
587
+        $old_key = isset( $old_value['key'] ) ? $old_value['key'] : '';
588
+        $new_key = isset( $value['key'] ) ? $value['key'] : '';
589
+
590
+        $dataset_uri = $this->get_dataset_uri();
591
+
592
+        if ( ! empty( $new_key ) && $new_key === $old_key && empty( $dataset_uri ) ) {
593
+
594
+            // make the request to the remote server to try to get the dataset uri.
595
+            $this->get_remote_dataset_uri( $new_key );
596
+        }
597
+
598
+        return $value;
599
+    }
600
+
601
+    /**
602
+     * Get the API URI to retrieve the dataset URI using the WordLift Key.
603
+     *
604
+     * @param string $key The WordLift key to use.
605
+     *
606
+     * @return string The API URI.
607
+     * @since 3.11.0
608
+     */
609
+    public function get_accounts_by_key_dataset_uri( $key ) {
610
+
611
+        return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . "accounts/key=$key/dataset_uri";
612
+    }
613
+
614
+    /**
615
+     * Get the `accounts` end point.
616
+     *
617
+     * @return string The `accounts` end point.
618
+     * @since 3.16.0
619
+     */
620
+    public function get_accounts() {
621
+
622
+        return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . 'accounts';
623
+    }
624
+
625
+    /**
626
+     * Get the `link by default` option.
627
+     *
628
+     * @return bool True if entities must be linked by default otherwise false.
629
+     * @since 3.13.0
630
+     */
631
+    public function is_link_by_default() {
632
+
633
+        return 'yes' === $this->get( 'wl_general_settings', self::LINK_BY_DEFAULT, 'yes' );
634
+    }
635
+
636
+    /**
637
+     * Set the `link by default` option.
638
+     *
639
+     * @param bool $value True to enabling linking by default, otherwise false.
640
+     *
641
+     * @since 3.13.0
642
+     */
643
+    public function set_link_by_default( $value ) {
644
+
645
+        $this->set( 'wl_general_settings', self::LINK_BY_DEFAULT, true === $value ? 'yes' : 'no' );
646
+    }
647
+
648
+    /**
649
+     * Get the 'analytics-enable' option.
650
+     *
651
+     * @return string 'no' or 'yes' representing bool.
652
+     * @since 3.21.0
653
+     */
654
+    public function is_analytics_enable() {
655
+        return 'yes' === $this->get( 'wl_analytics_settings', self::ANALYTICS_ENABLE, 'no' );
656
+    }
657
+
658
+    /**
659
+     * Set the `analytics-enable` option.
660
+     *
661
+     * @param bool $value True to enabling analytics, otherwise false.
662
+     *
663
+     * @since 3.21.0
664
+     */
665
+    public function set_is_analytics_enable( $value ) {
666
+
667
+        $this->set( 'wl_general_settings', self::ANALYTICS_ENABLE, true === $value ? 'yes' : 'no' );
668
+    }
669
+
670
+    /**
671
+     * Get the 'analytics-entity-uri-dimention' option.
672
+     *
673
+     * @return int
674
+     * @since 3.21.0
675
+     */
676
+    public function get_analytics_entity_uri_dimension() {
677
+        return (int) $this->get( 'wl_analytics_settings', self::ANALYTICS_ENTITY_URI_DIMENSION, 1 );
678
+    }
679
+
680
+    /**
681
+     * Get the 'analytics-entity-type-dimension' option.
682
+     *
683
+     * @return int
684
+     * @since 3.21.0
685
+     */
686
+    public function get_analytics_entity_type_dimension() {
687
+        return $this->get( 'wl_analytics_settings', self::ANALYTICS_ENTITY_TYPE_DIMENSION, 2 );
688
+    }
689
+
690
+    /**
691
+     * Get the URL to perform autocomplete request.
692
+     *
693
+     * @return string The URL to call to perform the autocomplete request.
694
+     * @since 3.15.0
695
+     */
696
+    public function get_autocomplete_url() {
697
+
698
+        return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . 'autocomplete';
699
+
700
+    }
701
+
702
+    /**
703
+     * Get the URL to perform feedback deactivation request.
704
+     *
705
+     * @return string The URL to call to perform the feedback deactivation request.
706
+     * @since 3.19.0
707
+     */
708
+    public function get_deactivation_feedback_url() {
709
+
710
+        return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . 'feedbacks';
711
+
712
+    }
713
+
714
+    /**
715
+     * Get the base API URL.
716
+     *
717
+     * @return string The base API URL.
718
+     * @since 3.20.0
719
+     */
720
+    public function get_api_url() {
721
+
722
+        return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE;
723
+    }
724 724
 
725 725
 }
Please login to merge, or discard this patch.
Spacing   +93 added lines, -93 removed lines patch added patch discarded remove patch
@@ -12,7 +12,7 @@  discard block
 block discarded – undo
12 12
 
13 13
 use Wordlift\Api\Default_Api_Service;
14 14
 
15
-if ( ! defined( 'ABSPATH' ) ) {
15
+if ( ! defined('ABSPATH')) {
16 16
 	exit;
17 17
 }
18 18
 
@@ -130,7 +130,7 @@  discard block
 block discarded – undo
130 130
 	 */
131 131
 	protected function __construct() {
132 132
 
133
-		$this->log = Wordlift_Log_Service::get_logger( get_class() );
133
+		$this->log = Wordlift_Log_Service::get_logger(get_class());
134 134
 
135 135
 	}
136 136
 
@@ -152,7 +152,7 @@  discard block
 block discarded – undo
152 152
 	 */
153 153
 	public static function get_instance() {
154 154
 
155
-		if ( ! isset( self::$instance ) ) {
155
+		if ( ! isset(self::$instance)) {
156 156
 			self::$instance = new self();
157 157
 		}
158 158
 
@@ -170,11 +170,11 @@  discard block
 block discarded – undo
170 170
 	 * @return mixed The configuration value or the default value if not found.
171 171
 	 * @since 3.6.0
172 172
 	 */
173
-	private function get( $option, $key, $default = '' ) {
173
+	private function get($option, $key, $default = '') {
174 174
 
175
-		$options = get_option( $option, array() );
175
+		$options = get_option($option, array());
176 176
 
177
-		return isset( $options[ $key ] ) ? $options[ $key ] : $default;
177
+		return isset($options[$key]) ? $options[$key] : $default;
178 178
 	}
179 179
 
180 180
 	/**
@@ -186,12 +186,12 @@  discard block
 block discarded – undo
186 186
 	 *
187 187
 	 * @since 3.9.0
188 188
 	 */
189
-	private function set( $option, $key, $value ) {
189
+	private function set($option, $key, $value) {
190 190
 
191
-		$values         = get_option( $option );
192
-		$values         = isset( $values ) ? $values : array();
193
-		$values[ $key ] = $value;
194
-		update_option( $option, $values );
191
+		$values         = get_option($option);
192
+		$values         = isset($values) ? $values : array();
193
+		$values[$key] = $value;
194
+		update_option($option, $values);
195 195
 
196 196
 	}
197 197
 
@@ -203,7 +203,7 @@  discard block
 block discarded – undo
203 203
 	 */
204 204
 	public function get_entity_base_path() {
205 205
 
206
-		return $this->get( 'wl_general_settings', self::ENTITY_BASE_PATH_KEY, 'entity' );
206
+		return $this->get('wl_general_settings', self::ENTITY_BASE_PATH_KEY, 'entity');
207 207
 	}
208 208
 
209 209
 	/**
@@ -213,9 +213,9 @@  discard block
 block discarded – undo
213 213
 	 *
214 214
 	 * @since 3.9.0
215 215
 	 */
216
-	public function set_entity_base_path( $value ) {
216
+	public function set_entity_base_path($value) {
217 217
 
218
-		$this->set( 'wl_general_settings', self::ENTITY_BASE_PATH_KEY, $value );
218
+		$this->set('wl_general_settings', self::ENTITY_BASE_PATH_KEY, $value);
219 219
 
220 220
 	}
221 221
 
@@ -227,7 +227,7 @@  discard block
 block discarded – undo
227 227
 	 */
228 228
 	public function is_skip_wizard() {
229 229
 
230
-		return $this->get( 'wl_general_settings', self::SKIP_WIZARD, false );
230
+		return $this->get('wl_general_settings', self::SKIP_WIZARD, false);
231 231
 	}
232 232
 
233 233
 	/**
@@ -237,9 +237,9 @@  discard block
 block discarded – undo
237 237
 	 *
238 238
 	 * @since 3.9.0
239 239
 	 */
240
-	public function set_skip_wizard( $value ) {
240
+	public function set_skip_wizard($value) {
241 241
 
242
-		$this->set( 'wl_general_settings', self::SKIP_WIZARD, true === $value );
242
+		$this->set('wl_general_settings', self::SKIP_WIZARD, true === $value);
243 243
 
244 244
 	}
245 245
 
@@ -251,7 +251,7 @@  discard block
 block discarded – undo
251 251
 	 */
252 252
 	public function get_key() {
253 253
 
254
-		return $this->get( 'wl_general_settings', self::KEY, '' );
254
+		return $this->get('wl_general_settings', self::KEY, '');
255 255
 	}
256 256
 
257 257
 	/**
@@ -261,9 +261,9 @@  discard block
 block discarded – undo
261 261
 	 *
262 262
 	 * @since 3.9.0
263 263
 	 */
264
-	public function set_key( $value ) {
264
+	public function set_key($value) {
265 265
 
266
-		$this->set( 'wl_general_settings', self::KEY, $value );
266
+		$this->set('wl_general_settings', self::KEY, $value);
267 267
 	}
268 268
 
269 269
 	/**
@@ -277,11 +277,11 @@  discard block
 block discarded – undo
277 277
 	public function get_language_code() {
278 278
 
279 279
 		$language = get_locale();
280
-		if ( ! $language ) {
280
+		if ( ! $language) {
281 281
 			return 'en';
282 282
 		}
283 283
 
284
-		return substr( $language, 0, 2 );
284
+		return substr($language, 0, 2);
285 285
 	}
286 286
 
287 287
 	/**
@@ -296,9 +296,9 @@  discard block
 block discarded – undo
296 296
 	 *
297 297
 	 * @since 3.9.0
298 298
 	 */
299
-	public function set_language_code( $value ) {
299
+	public function set_language_code($value) {
300 300
 
301
-		$this->set( 'wl_general_settings', self::LANGUAGE, $value );
301
+		$this->set('wl_general_settings', self::LANGUAGE, $value);
302 302
 
303 303
 	}
304 304
 
@@ -309,9 +309,9 @@  discard block
 block discarded – undo
309 309
 	 *
310 310
 	 * @since 3.19.0
311 311
 	 */
312
-	public function set_diagnostic_preferences( $value ) {
312
+	public function set_diagnostic_preferences($value) {
313 313
 
314
-		$this->set( 'wl_general_settings', self::SEND_DIAGNOSTIC, $value );
314
+		$this->set('wl_general_settings', self::SEND_DIAGNOSTIC, $value);
315 315
 
316 316
 	}
317 317
 
@@ -322,7 +322,7 @@  discard block
 block discarded – undo
322 322
 	 */
323 323
 	public function get_diagnostic_preferences() {
324 324
 
325
-		return $this->get( 'wl_general_settings', self::SEND_DIAGNOSTIC, 'no' );
325
+		return $this->get('wl_general_settings', self::SEND_DIAGNOSTIC, 'no');
326 326
 	}
327 327
 
328 328
 	/**
@@ -333,7 +333,7 @@  discard block
 block discarded – undo
333 333
 	 */
334 334
 	public function get_country_code() {
335 335
 
336
-		return $this->get( 'wl_general_settings', self::COUNTRY_CODE, 'us' );
336
+		return $this->get('wl_general_settings', self::COUNTRY_CODE, 'us');
337 337
 	}
338 338
 
339 339
 	/**
@@ -343,9 +343,9 @@  discard block
 block discarded – undo
343 343
 	 *
344 344
 	 * @since 3.18.0
345 345
 	 */
346
-	public function set_country_code( $value ) {
346
+	public function set_country_code($value) {
347 347
 
348
-		$this->set( 'wl_general_settings', self::COUNTRY_CODE, $value );
348
+		$this->set('wl_general_settings', self::COUNTRY_CODE, $value);
349 349
 
350 350
 	}
351 351
 
@@ -360,7 +360,7 @@  discard block
 block discarded – undo
360 360
 	 */
361 361
 	public function get_publisher_id() {
362 362
 
363
-		return $this->get( 'wl_general_settings', self::PUBLISHER_ID, null );
363
+		return $this->get('wl_general_settings', self::PUBLISHER_ID, null);
364 364
 	}
365 365
 
366 366
 	/**
@@ -370,9 +370,9 @@  discard block
 block discarded – undo
370 370
 	 *
371 371
 	 * @since 3.9.0
372 372
 	 */
373
-	public function set_publisher_id( $value ) {
373
+	public function set_publisher_id($value) {
374 374
 
375
-		$this->set( 'wl_general_settings', self::PUBLISHER_ID, $value );
375
+		$this->set('wl_general_settings', self::PUBLISHER_ID, $value);
376 376
 
377 377
 	}
378 378
 
@@ -385,8 +385,8 @@  discard block
 block discarded – undo
385 385
 	 */
386 386
 	public function get_dataset_uri() {
387 387
 
388
-		if ( apply_filters( 'wl_feature__enable__dataset', true ) ) {
389
-			return $this->get( 'wl_advanced_settings', self::DATASET_URI, null );
388
+		if (apply_filters('wl_feature__enable__dataset', true)) {
389
+			return $this->get('wl_advanced_settings', self::DATASET_URI, null);
390 390
 		} else {
391 391
 			return null;
392 392
 		}
@@ -399,9 +399,9 @@  discard block
 block discarded – undo
399 399
 	 *
400 400
 	 * @since 3.10.0
401 401
 	 */
402
-	public function set_dataset_uri( $value ) {
402
+	public function set_dataset_uri($value) {
403 403
 
404
-		$this->set( 'wl_advanced_settings', self::DATASET_URI, $value );
404
+		$this->set('wl_advanced_settings', self::DATASET_URI, $value);
405 405
 	}
406 406
 
407 407
 	/**
@@ -412,7 +412,7 @@  discard block
 block discarded – undo
412 412
 	 */
413 413
 	public function get_package_type() {
414 414
 
415
-		return $this->get( 'wl_advanced_settings', self::PACKAGE_TYPE, null );
415
+		return $this->get('wl_advanced_settings', self::PACKAGE_TYPE, null);
416 416
 	}
417 417
 
418 418
 	/**
@@ -422,8 +422,8 @@  discard block
 block discarded – undo
422 422
 	 *
423 423
 	 * @since 3.20.0
424 424
 	 */
425
-	public function set_package_type( $value ) {
426
-		$this->set( 'wl_advanced_settings', self::PACKAGE_TYPE, $value );
425
+	public function set_package_type($value) {
426
+		$this->set('wl_advanced_settings', self::PACKAGE_TYPE, $value);
427 427
 	}
428 428
 
429 429
 	/**
@@ -438,11 +438,11 @@  discard block
 block discarded – undo
438 438
 	 * @param array $old_value The old settings.
439 439
 	 * @param array $new_value The new settings.
440 440
 	 */
441
-	public function update_key( $old_value, $new_value ) {
441
+	public function update_key($old_value, $new_value) {
442 442
 
443 443
 		// Check the old key value and the new one. We're going to ask for the dataset URI only if the key has changed.
444 444
 		// $old_key = isset( $old_value['key'] ) ? $old_value['key'] : '';
445
-		$new_key = isset( $new_value['key'] ) ? $new_value['key'] : '';
445
+		$new_key = isset($new_value['key']) ? $new_value['key'] : '';
446 446
 
447 447
 		// If the key hasn't changed, don't do anything.
448 448
 		// WARN The 'update_option' hook is fired only if the new and old value are not equal.
@@ -451,14 +451,14 @@  discard block
 block discarded – undo
451 451
 		// }
452 452
 
453 453
 		// If the key is empty, empty the dataset URI.
454
-		if ( '' === $new_key ) {
455
-			$this->set_dataset_uri( '' );
454
+		if ('' === $new_key) {
455
+			$this->set_dataset_uri('');
456 456
 		}
457 457
 
458 458
 		// make the request to the remote server.
459
-		$this->get_remote_dataset_uri( $new_key );
459
+		$this->get_remote_dataset_uri($new_key);
460 460
 
461
-		do_action( 'wl_key_updated' );
461
+		do_action('wl_key_updated');
462 462
 
463 463
 	}
464 464
 
@@ -474,15 +474,15 @@  discard block
 block discarded – undo
474 474
 	 *
475 475
 	 * @since 3.17.0 send the site URL and get the dataset URI.
476 476
 	 */
477
-	public function get_remote_dataset_uri( $key ) {
477
+	public function get_remote_dataset_uri($key) {
478 478
 
479
-		$this->log->trace( 'Getting the remote dataset URI and package type...' );
479
+		$this->log->trace('Getting the remote dataset URI and package type...');
480 480
 
481
-		if ( empty( $key ) ) {
482
-			$this->log->warn( 'Key set to empty value.' );
481
+		if (empty($key)) {
482
+			$this->log->warn('Key set to empty value.');
483 483
 
484
-			$this->set_dataset_uri( '' );
485
-			$this->set_package_type( null );
484
+			$this->set_dataset_uri('');
485
+			$this->set_package_type(null);
486 486
 
487 487
 			return;
488 488
 		}
@@ -496,15 +496,15 @@  discard block
 block discarded – undo
496 496
 		 *
497 497
 		 * @since 3.20.0
498 498
 		 */
499
-		$home_url = get_option( 'home' );
500
-		$site_url = apply_filters( 'wl_production_site_url', untrailingslashit( $home_url ) );
499
+		$home_url = get_option('home');
500
+		$site_url = apply_filters('wl_production_site_url', untrailingslashit($home_url));
501 501
 
502 502
 		// Build the URL.
503 503
 		$url = '/accounts'
504
-			   . '?key=' . rawurlencode( $key )
505
-			   . '&url=' . rawurlencode( $site_url )
506
-			   . '&country=' . $this->get_country_code()
507
-			   . '&language=' . $this->get_language_code();
504
+			   . '?key='.rawurlencode($key)
505
+			   . '&url='.rawurlencode($site_url)
506
+			   . '&country='.$this->get_country_code()
507
+			   . '&language='.$this->get_language_code();
508 508
 
509 509
 		$api_service = Default_Api_Service::get_instance();
510 510
 		/**
@@ -514,32 +514,32 @@  discard block
 block discarded – undo
514 514
 		$headers  = array(
515 515
 			'Authorization' => "Key $key",
516 516
 		);
517
-		$response = $api_service->request( 'PUT', $url, $headers )->get_response();
517
+		$response = $api_service->request('PUT', $url, $headers)->get_response();
518 518
 
519 519
 		// The response is an error.
520
-		if ( is_wp_error( $response ) ) {
521
-			$this->log->error( 'An error occurred setting the dataset URI: ' . $response->get_error_message() );
520
+		if (is_wp_error($response)) {
521
+			$this->log->error('An error occurred setting the dataset URI: '.$response->get_error_message());
522 522
 
523
-			$this->set_dataset_uri( '' );
524
-			$this->set_package_type( null );
523
+			$this->set_dataset_uri('');
524
+			$this->set_package_type(null);
525 525
 
526 526
 			return;
527 527
 		}
528 528
 
529 529
 		// The response is not OK.
530
-		if ( ! is_array( $response ) || 200 !== (int) $response['response']['code'] ) {
530
+		if ( ! is_array($response) || 200 !== (int) $response['response']['code']) {
531 531
 			$base_url = $api_service->get_base_url();
532 532
 
533
-			if ( ! is_array( $response ) ) {
533
+			if ( ! is_array($response)) {
534 534
 				// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export
535
-				$this->log->error( "Unexpected response when opening URL $base_url$url: " . var_export( $response, true ) );
535
+				$this->log->error("Unexpected response when opening URL $base_url$url: ".var_export($response, true));
536 536
 			} else {
537 537
 				// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export
538
-				$this->log->error( "Unexpected status code when opening URL $base_url$url: " . $response['response']['code'] . "\n" . var_export( $response, true ) );
538
+				$this->log->error("Unexpected status code when opening URL $base_url$url: ".$response['response']['code']."\n".var_export($response, true));
539 539
 			}
540 540
 
541
-			$this->set_dataset_uri( '' );
542
-			$this->set_package_type( null );
541
+			$this->set_dataset_uri('');
542
+			$this->set_package_type(null);
543 543
 
544 544
 			return;
545 545
 		}
@@ -549,20 +549,20 @@  discard block
 block discarded – undo
549 549
 		 *
550 550
 		 * @since 3.20.0
551 551
 		 */
552
-		$json = json_decode( $response['body'] );
552
+		$json = json_decode($response['body']);
553 553
 		/**
554 554
 		 * @since 3.27.7
555 555
 		 * Remove the trailing slash returned from the new platform api.
556 556
 		 */
557 557
 		// phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
558
-		$dataset_uri = untrailingslashit( $json->datasetURI );
558
+		$dataset_uri = untrailingslashit($json->datasetURI);
559 559
 		// phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
560
-		$package_type = isset( $json->packageType ) ? $json->packageType : null;
560
+		$package_type = isset($json->packageType) ? $json->packageType : null;
561 561
 
562
-		$this->log->info( "Updating [ dataset uri :: $dataset_uri ][ package type :: $package_type ]..." );
562
+		$this->log->info("Updating [ dataset uri :: $dataset_uri ][ package type :: $package_type ]...");
563 563
 
564
-		$this->set_dataset_uri( $dataset_uri );
565
-		$this->set_package_type( $package_type );
564
+		$this->set_dataset_uri($dataset_uri);
565
+		$this->set_package_type($package_type);
566 566
 	}
567 567
 
568 568
 	/**
@@ -579,20 +579,20 @@  discard block
 block discarded – undo
579 579
 	 * @return mixed The same value in the $value parameter
580 580
 	 * @since 3.12.0
581 581
 	 */
582
-	public function maybe_update_dataset_uri( $value, $old_value ) {
582
+	public function maybe_update_dataset_uri($value, $old_value) {
583 583
 
584 584
 		// Check the old key value and the new one. Here we're only handling the
585 585
 		// case where the key hasn't changed and the dataset URI isn't set. The
586 586
 		// other case, i.e. a new key is inserted, is handled at `update_key`.
587
-		$old_key = isset( $old_value['key'] ) ? $old_value['key'] : '';
588
-		$new_key = isset( $value['key'] ) ? $value['key'] : '';
587
+		$old_key = isset($old_value['key']) ? $old_value['key'] : '';
588
+		$new_key = isset($value['key']) ? $value['key'] : '';
589 589
 
590 590
 		$dataset_uri = $this->get_dataset_uri();
591 591
 
592
-		if ( ! empty( $new_key ) && $new_key === $old_key && empty( $dataset_uri ) ) {
592
+		if ( ! empty($new_key) && $new_key === $old_key && empty($dataset_uri)) {
593 593
 
594 594
 			// make the request to the remote server to try to get the dataset uri.
595
-			$this->get_remote_dataset_uri( $new_key );
595
+			$this->get_remote_dataset_uri($new_key);
596 596
 		}
597 597
 
598 598
 		return $value;
@@ -606,9 +606,9 @@  discard block
 block discarded – undo
606 606
 	 * @return string The API URI.
607 607
 	 * @since 3.11.0
608 608
 	 */
609
-	public function get_accounts_by_key_dataset_uri( $key ) {
609
+	public function get_accounts_by_key_dataset_uri($key) {
610 610
 
611
-		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . "accounts/key=$key/dataset_uri";
611
+		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE."accounts/key=$key/dataset_uri";
612 612
 	}
613 613
 
614 614
 	/**
@@ -619,7 +619,7 @@  discard block
 block discarded – undo
619 619
 	 */
620 620
 	public function get_accounts() {
621 621
 
622
-		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . 'accounts';
622
+		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE.'accounts';
623 623
 	}
624 624
 
625 625
 	/**
@@ -630,7 +630,7 @@  discard block
 block discarded – undo
630 630
 	 */
631 631
 	public function is_link_by_default() {
632 632
 
633
-		return 'yes' === $this->get( 'wl_general_settings', self::LINK_BY_DEFAULT, 'yes' );
633
+		return 'yes' === $this->get('wl_general_settings', self::LINK_BY_DEFAULT, 'yes');
634 634
 	}
635 635
 
636 636
 	/**
@@ -640,9 +640,9 @@  discard block
 block discarded – undo
640 640
 	 *
641 641
 	 * @since 3.13.0
642 642
 	 */
643
-	public function set_link_by_default( $value ) {
643
+	public function set_link_by_default($value) {
644 644
 
645
-		$this->set( 'wl_general_settings', self::LINK_BY_DEFAULT, true === $value ? 'yes' : 'no' );
645
+		$this->set('wl_general_settings', self::LINK_BY_DEFAULT, true === $value ? 'yes' : 'no');
646 646
 	}
647 647
 
648 648
 	/**
@@ -652,7 +652,7 @@  discard block
 block discarded – undo
652 652
 	 * @since 3.21.0
653 653
 	 */
654 654
 	public function is_analytics_enable() {
655
-		return 'yes' === $this->get( 'wl_analytics_settings', self::ANALYTICS_ENABLE, 'no' );
655
+		return 'yes' === $this->get('wl_analytics_settings', self::ANALYTICS_ENABLE, 'no');
656 656
 	}
657 657
 
658 658
 	/**
@@ -662,9 +662,9 @@  discard block
 block discarded – undo
662 662
 	 *
663 663
 	 * @since 3.21.0
664 664
 	 */
665
-	public function set_is_analytics_enable( $value ) {
665
+	public function set_is_analytics_enable($value) {
666 666
 
667
-		$this->set( 'wl_general_settings', self::ANALYTICS_ENABLE, true === $value ? 'yes' : 'no' );
667
+		$this->set('wl_general_settings', self::ANALYTICS_ENABLE, true === $value ? 'yes' : 'no');
668 668
 	}
669 669
 
670 670
 	/**
@@ -674,7 +674,7 @@  discard block
 block discarded – undo
674 674
 	 * @since 3.21.0
675 675
 	 */
676 676
 	public function get_analytics_entity_uri_dimension() {
677
-		return (int) $this->get( 'wl_analytics_settings', self::ANALYTICS_ENTITY_URI_DIMENSION, 1 );
677
+		return (int) $this->get('wl_analytics_settings', self::ANALYTICS_ENTITY_URI_DIMENSION, 1);
678 678
 	}
679 679
 
680 680
 	/**
@@ -684,7 +684,7 @@  discard block
 block discarded – undo
684 684
 	 * @since 3.21.0
685 685
 	 */
686 686
 	public function get_analytics_entity_type_dimension() {
687
-		return $this->get( 'wl_analytics_settings', self::ANALYTICS_ENTITY_TYPE_DIMENSION, 2 );
687
+		return $this->get('wl_analytics_settings', self::ANALYTICS_ENTITY_TYPE_DIMENSION, 2);
688 688
 	}
689 689
 
690 690
 	/**
@@ -695,7 +695,7 @@  discard block
 block discarded – undo
695 695
 	 */
696 696
 	public function get_autocomplete_url() {
697 697
 
698
-		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . 'autocomplete';
698
+		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE.'autocomplete';
699 699
 
700 700
 	}
701 701
 
@@ -707,7 +707,7 @@  discard block
 block discarded – undo
707 707
 	 */
708 708
 	public function get_deactivation_feedback_url() {
709 709
 
710
-		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE . 'feedbacks';
710
+		return WL_CONFIG_WORDLIFT_API_URL_DEFAULT_VALUE.'feedbacks';
711 711
 
712 712
 	}
713 713
 
Please login to merge, or discard this patch.