Completed
Pull Request — develop (#1647)
by Naveen
01:18
created
src/wordlift.php 1 patch
Indentation   +168 added lines, -168 removed lines patch added patch discarded remove patch
@@ -32,11 +32,11 @@  discard block
 block discarded – undo
32 32
 use Wordlift\Post\Post_Adapter;
33 33
 // If this file is called directly, abort.
34 34
 if ( ! defined( 'WPINC' ) ) {
35
-	die;
35
+    die;
36 36
 }
37 37
 define(
38
-	'WORDLIFT_PLUGIN_FILE',
39
-	__FILE__
38
+    'WORDLIFT_PLUGIN_FILE',
39
+    __FILE__
40 40
 );
41 41
 define( 'WORDLIFT_VERSION', '3.40.4' );
42 42
 
@@ -50,7 +50,7 @@  discard block
 block discarded – undo
50 50
  * @since 3.33.6
51 51
  */
52 52
 if ( ! apply_filters( 'wl_is_enabled', true ) ) {
53
-	return;
53
+    return;
54 54
 }
55 55
 
56 56
 require_once plugin_dir_path( __FILE__ ) . 'vendor/autoload.php';
@@ -79,33 +79,33 @@  discard block
 block discarded – undo
79 79
  */
80 80
 function activate_wordlift() {
81 81
 
82
-	$log = Wordlift_Log_Service::get_logger( 'activate_wordlift' );
82
+    $log = Wordlift_Log_Service::get_logger( 'activate_wordlift' );
83 83
 
84
-	$log->info( 'Activating WordLift...' );
84
+    $log->info( 'Activating WordLift...' );
85 85
 
86
-	require_once plugin_dir_path( __FILE__ ) . 'includes/class-wordlift-activator.php';
87
-	Wordlift_Activator::activate();
86
+    require_once plugin_dir_path( __FILE__ ) . 'includes/class-wordlift-activator.php';
87
+    Wordlift_Activator::activate();
88 88
 
89
-	/**
90
-	 * Tell the {@link Wordlift_Http_Api} class that we're activating, to let it run activation tasks.
91
-	 *
92
-	 * @see https://github.com/insideout10/wordlift-plugin/issues/820 related issue.
93
-	 * @since 3.19.2
94
-	 */
95
-	Wordlift_Http_Api::activate();
96
-
97
-	// Ensure the post type is registered before flushing the rewrite rules.
98
-	Wordlift_Entity_Post_Type_Service::get_instance()->register();
99
-	flush_rewrite_rules();
100
-	/**
101
-	 * @since 3.27.7
102
-	 * @see https://github.com/insideout10/wordlift-plugin/issues/1214
103
-	 */
104
-	Top_Entities::activate();
89
+    /**
90
+     * Tell the {@link Wordlift_Http_Api} class that we're activating, to let it run activation tasks.
91
+     *
92
+     * @see https://github.com/insideout10/wordlift-plugin/issues/820 related issue.
93
+     * @since 3.19.2
94
+     */
95
+    Wordlift_Http_Api::activate();
96
+
97
+    // Ensure the post type is registered before flushing the rewrite rules.
98
+    Wordlift_Entity_Post_Type_Service::get_instance()->register();
99
+    flush_rewrite_rules();
100
+    /**
101
+     * @since 3.27.7
102
+     * @see https://github.com/insideout10/wordlift-plugin/issues/1214
103
+     */
104
+    Top_Entities::activate();
105 105
 
106
-	if ( ! wp_next_scheduled( 'wl_daily_cron' ) ) {
107
-		wp_schedule_event( time(), 'daily', 'wl_daily_cron' );
108
-	}
106
+    if ( ! wp_next_scheduled( 'wl_daily_cron' ) ) {
107
+        wp_schedule_event( time(), 'daily', 'wl_daily_cron' );
108
+    }
109 109
 
110 110
 }
111 111
 
@@ -115,23 +115,23 @@  discard block
 block discarded – undo
115 115
  */
116 116
 function deactivate_wordlift() {
117 117
 
118
-	require_once plugin_dir_path( __FILE__ ) . 'includes/class-wordlift-deactivator.php';
119
-	Wordlift_Deactivator::deactivate();
120
-	Wordlift_Http_Api::deactivate();
121
-	Ttl_Cache_Cleaner::deactivate();
122
-	/**
123
-	 * @since 3.27.7
124
-	 * @see https://github.com/insideout10/wordlift-plugin/issues/1214
125
-	 */
126
-	Top_Entities::deactivate();
127
-	/**
128
-	 * @since 3.27.8
129
-	 * Remove notification flag on deactivation.
130
-	 */
131
-	Key_Validation_Notice::remove_notification_flag();
132
-	flush_rewrite_rules();
133
-
134
-	wp_clear_scheduled_hook( 'wl_daily_cron' );
118
+    require_once plugin_dir_path( __FILE__ ) . 'includes/class-wordlift-deactivator.php';
119
+    Wordlift_Deactivator::deactivate();
120
+    Wordlift_Http_Api::deactivate();
121
+    Ttl_Cache_Cleaner::deactivate();
122
+    /**
123
+     * @since 3.27.7
124
+     * @see https://github.com/insideout10/wordlift-plugin/issues/1214
125
+     */
126
+    Top_Entities::deactivate();
127
+    /**
128
+     * @since 3.27.8
129
+     * Remove notification flag on deactivation.
130
+     */
131
+    Key_Validation_Notice::remove_notification_flag();
132
+    flush_rewrite_rules();
133
+
134
+    wp_clear_scheduled_hook( 'wl_daily_cron' );
135 135
 
136 136
 }
137 137
 
@@ -154,84 +154,84 @@  discard block
 block discarded – undo
154 154
  * @since    1.0.0
155 155
  */
156 156
 function run_wordlift() {
157
-	/**
158
-	 * Filter: wl_feature__enable__widgets.
159
-	 *
160
-	 * @param bool whether the widgets needed to be registered, defaults to true.
161
-	 *
162
-	 * @return bool
163
-	 * @since 3.27.6
164
-	 */
165
-	if ( apply_filters( 'wl_feature__enable__widgets', true ) ) {
166
-		add_action( 'widgets_init', 'wl_register_chord_widget' );
167
-		add_action( 'widgets_init', 'wl_register_geo_widget' );
168
-		add_action( 'widgets_init', 'wl_register_timeline_widget' );
169
-	}
170
-	add_filter( 'widget_text', 'do_shortcode' );
171
-
172
-	/**
173
-	 * Filter: wl_feature__enable__analysis
174
-	 *
175
-	 * @param bool Whether to send api request to analysis or not
176
-	 *
177
-	 * @return bool
178
-	 * @since 3.27.6
179
-	 */
180
-	if ( apply_filters( 'wl_feature__enable__analysis', true ) ) {
181
-		add_action( 'wp_ajax_wl_analyze', 'wl_ajax_analyze_action' );
182
-	} else {
183
-		add_action( 'wp_ajax_wl_analyze', 'wl_ajax_analyze_disabled_action' );
184
-	}
185
-
186
-	$plugin = new Wordlift();
187
-	$plugin->run();
188
-
189
-	// Initialize the TTL Cache Cleaner.
190
-	new Ttl_Cache_Cleaner();
191
-
192
-	// Load the new Post Adapter.
193
-	new Post_Adapter();
194
-
195
-	// Load the API Data Hooks.
196
-	new Api_Data_Hooks();
197
-
198
-	add_action(
199
-		'plugins_loaded',
200
-		function () {
201
-			// All features from registry should be initialized here.
202
-			$features_registry = Features_Registry::get_instance();
203
-			$features_registry->initialize_all_features();
204
-		},
205
-		5
206
-	);
207
-
208
-	add_action(
209
-		'plugins_loaded',
210
-		// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
211
-		function () use ( $plugin ) {
212
-
213
-			new Wordlift_Products_Navigator_Shortcode_REST();
214
-
215
-			// Register the Dataset module, requires `$api_service`.
216
-			require_once plugin_dir_path( __FILE__ ) . 'wordlift/dataset/index.php';
217
-			require_once plugin_dir_path( __FILE__ ) . 'wordlift/shipping-data/index.php';
218
-
219
-			/*
157
+    /**
158
+     * Filter: wl_feature__enable__widgets.
159
+     *
160
+     * @param bool whether the widgets needed to be registered, defaults to true.
161
+     *
162
+     * @return bool
163
+     * @since 3.27.6
164
+     */
165
+    if ( apply_filters( 'wl_feature__enable__widgets', true ) ) {
166
+        add_action( 'widgets_init', 'wl_register_chord_widget' );
167
+        add_action( 'widgets_init', 'wl_register_geo_widget' );
168
+        add_action( 'widgets_init', 'wl_register_timeline_widget' );
169
+    }
170
+    add_filter( 'widget_text', 'do_shortcode' );
171
+
172
+    /**
173
+     * Filter: wl_feature__enable__analysis
174
+     *
175
+     * @param bool Whether to send api request to analysis or not
176
+     *
177
+     * @return bool
178
+     * @since 3.27.6
179
+     */
180
+    if ( apply_filters( 'wl_feature__enable__analysis', true ) ) {
181
+        add_action( 'wp_ajax_wl_analyze', 'wl_ajax_analyze_action' );
182
+    } else {
183
+        add_action( 'wp_ajax_wl_analyze', 'wl_ajax_analyze_disabled_action' );
184
+    }
185
+
186
+    $plugin = new Wordlift();
187
+    $plugin->run();
188
+
189
+    // Initialize the TTL Cache Cleaner.
190
+    new Ttl_Cache_Cleaner();
191
+
192
+    // Load the new Post Adapter.
193
+    new Post_Adapter();
194
+
195
+    // Load the API Data Hooks.
196
+    new Api_Data_Hooks();
197
+
198
+    add_action(
199
+        'plugins_loaded',
200
+        function () {
201
+            // All features from registry should be initialized here.
202
+            $features_registry = Features_Registry::get_instance();
203
+            $features_registry->initialize_all_features();
204
+        },
205
+        5
206
+    );
207
+
208
+    add_action(
209
+        'plugins_loaded',
210
+        // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
211
+        function () use ( $plugin ) {
212
+
213
+            new Wordlift_Products_Navigator_Shortcode_REST();
214
+
215
+            // Register the Dataset module, requires `$api_service`.
216
+            require_once plugin_dir_path( __FILE__ ) . 'wordlift/dataset/index.php';
217
+            require_once plugin_dir_path( __FILE__ ) . 'wordlift/shipping-data/index.php';
218
+
219
+            /*
220 220
 			* Require the Entity annotation cleanup module.
221 221
 			*
222 222
 			* @since 3.34.6
223 223
 			*/
224
-			require_once plugin_dir_path( __FILE__ ) . 'wordlift/cleanup/index.php';
224
+            require_once plugin_dir_path( __FILE__ ) . 'wordlift/cleanup/index.php';
225 225
 
226
-			/*
226
+            /*
227 227
 			* Import LOD entities.
228 228
 			*
229 229
 			* @since 3.35.0
230 230
 			*/
231
-			require_once plugin_dir_path( __FILE__ ) . 'wordlift/lod-import/index.php';
231
+            require_once plugin_dir_path( __FILE__ ) . 'wordlift/lod-import/index.php';
232 232
 
233
-		}
234
-	);
233
+        }
234
+    );
235 235
 
236 236
 }
237 237
 
@@ -245,45 +245,45 @@  discard block
 block discarded – undo
245 245
  */
246 246
 function wordlift_plugin_autoload_register() {
247 247
 
248
-	spl_autoload_register(
249
-		function ( $class_name ) {
248
+    spl_autoload_register(
249
+        function ( $class_name ) {
250 250
 
251
-			// Bail out if these are not our classes.
252
-			if ( 0 !== strpos( $class_name, 'Wordlift\\' ) ) {
253
-				return false;
254
-			}
251
+            // Bail out if these are not our classes.
252
+            if ( 0 !== strpos( $class_name, 'Wordlift\\' ) ) {
253
+                return false;
254
+            }
255 255
 
256
-			$class_name_lc = strtolower( str_replace( '_', '-', $class_name ) );
256
+            $class_name_lc = strtolower( str_replace( '_', '-', $class_name ) );
257 257
 
258
-			preg_match( '|^(?:(.*)\\\\)?(.+?)$|', $class_name_lc, $matches );
258
+            preg_match( '|^(?:(.*)\\\\)?(.+?)$|', $class_name_lc, $matches );
259 259
 
260
-			$path = str_replace( '\\', DIRECTORY_SEPARATOR, $matches[1] );
261
-			$file = 'class-' . $matches[2] . '.php';
260
+            $path = str_replace( '\\', DIRECTORY_SEPARATOR, $matches[1] );
261
+            $file = 'class-' . $matches[2] . '.php';
262 262
 
263
-			$full_path = plugin_dir_path( __FILE__ ) . $path . DIRECTORY_SEPARATOR . $file;
263
+            $full_path = plugin_dir_path( __FILE__ ) . $path . DIRECTORY_SEPARATOR . $file;
264 264
 
265
-			if ( ! file_exists( $full_path ) ) {
266
-				return false;
267
-			}
265
+            if ( ! file_exists( $full_path ) ) {
266
+                return false;
267
+            }
268 268
 
269
-			require_once $full_path;
269
+            require_once $full_path;
270 270
 
271
-			return true;
272
-		}
273
-	);
271
+            return true;
272
+        }
273
+    );
274 274
 
275 275
 }
276 276
 
277 277
 function wl_block_categories( $categories ) {
278
-	return array_merge(
279
-		$categories,
280
-		array(
281
-			array(
282
-				'slug'  => 'wordlift',
283
-				'title' => __( 'WordLift', 'wordlift' ),
284
-			),
285
-		)
286
-	);
278
+    return array_merge(
279
+        $categories,
280
+        array(
281
+            array(
282
+                'slug'  => 'wordlift',
283
+                'title' => __( 'WordLift', 'wordlift' ),
284
+            ),
285
+        )
286
+    );
287 287
 }
288 288
 
289 289
 /**
@@ -291,19 +291,19 @@  discard block
 block discarded – undo
291 291
  * this has to be removed when removing the legacy fields from the ui.
292 292
  */
293 293
 function wl_enqueue_leaflet( $in_footer = false ) {
294
-	// Leaflet.
295
-	wp_enqueue_style( 'wl-leaflet', plugin_dir_url( __FILE__ ) . 'js/leaflet/leaflet.css', array(), '1.6.0' );
296
-	wp_enqueue_script( 'wl-leaflet', plugin_dir_url( __FILE__ ) . 'js/leaflet/leaflet.js', array(), '1.6.0', $in_footer );
294
+    // Leaflet.
295
+    wp_enqueue_style( 'wl-leaflet', plugin_dir_url( __FILE__ ) . 'js/leaflet/leaflet.css', array(), '1.6.0' );
296
+    wp_enqueue_script( 'wl-leaflet', plugin_dir_url( __FILE__ ) . 'js/leaflet/leaflet.js', array(), '1.6.0', $in_footer );
297 297
 }
298 298
 
299 299
 add_filter( 'block_categories', 'wl_block_categories', 10 );
300 300
 
301 301
 // Temporary fix for a typo in WooCommerce Extension.
302 302
 add_filter(
303
-	'wl_feature__enable__dataset',
304
-	function ( $value ) {
305
-		return apply_filters( 'wl_features__enable__dataset', $value );
306
-	}
303
+    'wl_feature__enable__dataset',
304
+    function ( $value ) {
305
+        return apply_filters( 'wl_features__enable__dataset', $value );
306
+    }
307 307
 );
308 308
 
309 309
 require_once __DIR__ . '/modules/food-kg/load.php';
@@ -312,26 +312,26 @@  discard block
 block discarded – undo
312 312
 require_once __DIR__ . '/modules/include-exclude-push-config/load.php';
313 313
 
314 314
 add_action(
315
-	'update_plugins_adthrive.wordlift.io',
316
-	function ( $update, $plugin_data, $plugin_file ) {
317
-		// Bail out if it's not our plugin.
318
-		$update_uri = $plugin_data['UpdateURI'];
319
-		if ( 'wordlift/wordlift.php' !== $plugin_file || ! isset( $update_uri ) ) {
320
-			return $update;
321
-		}
322
-
323
-		$response = wp_remote_get( "$update_uri?nocache=" . time() );
324
-
325
-		if ( is_wp_error( $response ) ) {
326
-			return $update;
327
-		}
328
-
329
-		try {
330
-			return json_decode( wp_remote_retrieve_body( $response ) );
331
-		} catch ( Exception $e ) {
332
-			return $update;
333
-		}
334
-	},
335
-	10,
336
-	3
315
+    'update_plugins_adthrive.wordlift.io',
316
+    function ( $update, $plugin_data, $plugin_file ) {
317
+        // Bail out if it's not our plugin.
318
+        $update_uri = $plugin_data['UpdateURI'];
319
+        if ( 'wordlift/wordlift.php' !== $plugin_file || ! isset( $update_uri ) ) {
320
+            return $update;
321
+        }
322
+
323
+        $response = wp_remote_get( "$update_uri?nocache=" . time() );
324
+
325
+        if ( is_wp_error( $response ) ) {
326
+            return $update;
327
+        }
328
+
329
+        try {
330
+            return json_decode( wp_remote_retrieve_body( $response ) );
331
+        } catch ( Exception $e ) {
332
+            return $update;
333
+        }
334
+    },
335
+    10,
336
+    3
337 337
 );
Please login to merge, or discard this patch.
src/wordlift/vocabulary/class-analysis-service.php 1 patch
Indentation   +171 added lines, -171 removed lines patch added patch discarded remove patch
@@ -12,177 +12,177 @@
 block discarded – undo
12 12
  */
13 13
 class Analysis_Service {
14 14
 
15
-	/**
16
-	 * @var Default_Api_Service
17
-	 */
18
-	private $api_service;
19
-	/**
20
-	 * @var Cache
21
-	 */
22
-	private $cache_service;
23
-	/**
24
-	 * @var \Wordlift_Log_Service
25
-	 */
26
-	private $log;
27
-
28
-	/**
29
-	 * Tag_Rest_Endpoint constructor.
30
-	 *
31
-	 * @param Default_Api_Service $api_service
32
-	 * @param Cache               $cache_service
33
-	 */
34
-	public function __construct( $api_service, $cache_service ) {
35
-
36
-		$this->api_service = $api_service;
37
-
38
-		$this->cache_service = $cache_service;
39
-
40
-		$this->log = \Wordlift_Log_Service::get_logger( get_class() );
41
-
42
-	}
43
-
44
-	/**
45
-	 * Check if entities are in cache, if not return the results from
46
-	 * cache service.
47
-	 *
48
-	 * @param $tag \WP_Term
49
-	 */
50
-	public function get_entities( $tag ) {
51
-
52
-		$cache_key    = $tag->term_id;
53
-		$cache_result = $this->cache_service->get( $cache_key );
54
-		if ( false !== $cache_result ) {
55
-			return $cache_result;
56
-		}
57
-
58
-		// send the request.
59
-		$tag_name = $tag->name;
60
-
61
-		$entities = $this->get_entities_by_search_query( $tag_name );
62
-
63
-		if ( ! $entities ) {
64
-			return false;
65
-		}
66
-
67
-		$this->cache_service->put( $cache_key, $entities );
68
-
69
-		return $entities;
70
-
71
-	}
72
-
73
-	/**
74
-	 * @param $entity_url string
75
-	 * Formats the entity url from https://foo.com/some/path to
76
-	 * https/foo.com/some/path
77
-	 *
78
-	 * @return bool|string
79
-	 */
80
-	public static function format_entity_url( $entity_url ) {
81
-		$result = wp_parse_url( $entity_url );
82
-		if ( ! $result ) {
83
-			return false;
84
-		}
85
-		if ( ! array_key_exists( 'scheme', $result )
86
-			 || ! array_key_exists( 'host', $result )
87
-			 || ! array_key_exists( 'path', $result ) ) {
88
-			return false;
89
-		}
90
-
91
-		return $result['scheme'] . '/' . $result['host'] . $result['path'];
92
-	}
93
-
94
-	private function get_meta( $entity_url ) {
95
-
96
-		$cache_results = $this->cache_service->get( $entity_url );
97
-
98
-		if ( false !== $cache_results ) {
99
-			return $cache_results;
100
-		}
101
-
102
-		$formatted_url = self::format_entity_url( $entity_url );
103
-
104
-		if ( ! $formatted_url ) {
105
-			return array();
106
-		}
107
-
108
-		$meta_url = 'https://api.wordlift.io/id/' . $formatted_url;
109
-
110
-		$response = wp_remote_get( $meta_url );
111
-
112
-		if ( is_wp_error( $response )
113
-			 || ! isset( $response['response']['code'] )
114
-			 || 2 !== (int) $response['response']['code'] / 100 ) {
115
-			return false;
116
-		}
117
-
118
-		if ( ! is_wp_error( $response ) ) {
119
-			$meta = json_decode( wp_remote_retrieve_body( $response ), true );
120
-			$this->cache_service->put( $entity_url, $meta );
121
-
122
-			return $meta;
123
-		}
124
-
125
-		return array();
126
-
127
-	}
128
-
129
-	private function get_meta_for_entities( $entities ) {
130
-
131
-		$filtered_entities = array();
132
-		foreach ( $entities as $entity ) {
133
-			$entity['meta'] = array();
134
-			$meta           = $this->get_meta( $entity['entityId'] );
135
-			if ( $meta ) {
136
-				$meta                = Default_Entity_List::compact_jsonld( $meta );
137
-				$entity['meta']      = $meta;
138
-				$filtered_entities[] = $entity;
139
-			}
140
-		}
141
-
142
-		return $filtered_entities;
143
-
144
-	}
145
-
146
-	/**
147
-	 * @param $tag_name
148
-	 *
149
-	 * @return array
150
-	 */
151
-	public function get_entities_by_search_query( $tag_name ) {
152
-		$response = $this->api_service->request(
153
-			'POST',
154
-			'/analysis/single',
155
-			array( 'Content-Type' => 'application/json' ),
156
-			wp_json_encode(
157
-				array(
158
-					'content'         => $tag_name,
159
-					'contentType'     => 'text/plain',
160
-					'version'         => '1.0.0',
161
-					'contentLanguage' => 'en',
162
-					'scope'           => $this->get_scope(),
163
-				)
164
-			)
165
-		);
166
-
167
-		if ( ! $response->is_success() ) {
168
-			return false;
169
-		}
170
-
171
-		$response = json_decode( $response->get_body(), true );
172
-
173
-		if ( ! array_key_exists( 'entities', $response ) ) {
174
-			return false;
175
-		}
176
-
177
-		$entities = $this->get_meta_for_entities( $response['entities'] );
178
-
179
-		return $entities;
180
-	}
181
-
182
-	public function get_scope() {
183
-		$service = \Wordlift_Configuration_Service::get_instance();
15
+    /**
16
+     * @var Default_Api_Service
17
+     */
18
+    private $api_service;
19
+    /**
20
+     * @var Cache
21
+     */
22
+    private $cache_service;
23
+    /**
24
+     * @var \Wordlift_Log_Service
25
+     */
26
+    private $log;
27
+
28
+    /**
29
+     * Tag_Rest_Endpoint constructor.
30
+     *
31
+     * @param Default_Api_Service $api_service
32
+     * @param Cache               $cache_service
33
+     */
34
+    public function __construct( $api_service, $cache_service ) {
35
+
36
+        $this->api_service = $api_service;
37
+
38
+        $this->cache_service = $cache_service;
39
+
40
+        $this->log = \Wordlift_Log_Service::get_logger( get_class() );
41
+
42
+    }
43
+
44
+    /**
45
+     * Check if entities are in cache, if not return the results from
46
+     * cache service.
47
+     *
48
+     * @param $tag \WP_Term
49
+     */
50
+    public function get_entities( $tag ) {
51
+
52
+        $cache_key    = $tag->term_id;
53
+        $cache_result = $this->cache_service->get( $cache_key );
54
+        if ( false !== $cache_result ) {
55
+            return $cache_result;
56
+        }
57
+
58
+        // send the request.
59
+        $tag_name = $tag->name;
60
+
61
+        $entities = $this->get_entities_by_search_query( $tag_name );
62
+
63
+        if ( ! $entities ) {
64
+            return false;
65
+        }
66
+
67
+        $this->cache_service->put( $cache_key, $entities );
68
+
69
+        return $entities;
70
+
71
+    }
72
+
73
+    /**
74
+     * @param $entity_url string
75
+     * Formats the entity url from https://foo.com/some/path to
76
+     * https/foo.com/some/path
77
+     *
78
+     * @return bool|string
79
+     */
80
+    public static function format_entity_url( $entity_url ) {
81
+        $result = wp_parse_url( $entity_url );
82
+        if ( ! $result ) {
83
+            return false;
84
+        }
85
+        if ( ! array_key_exists( 'scheme', $result )
86
+             || ! array_key_exists( 'host', $result )
87
+             || ! array_key_exists( 'path', $result ) ) {
88
+            return false;
89
+        }
90
+
91
+        return $result['scheme'] . '/' . $result['host'] . $result['path'];
92
+    }
93
+
94
+    private function get_meta( $entity_url ) {
95
+
96
+        $cache_results = $this->cache_service->get( $entity_url );
97
+
98
+        if ( false !== $cache_results ) {
99
+            return $cache_results;
100
+        }
101
+
102
+        $formatted_url = self::format_entity_url( $entity_url );
103
+
104
+        if ( ! $formatted_url ) {
105
+            return array();
106
+        }
107
+
108
+        $meta_url = 'https://api.wordlift.io/id/' . $formatted_url;
109
+
110
+        $response = wp_remote_get( $meta_url );
111
+
112
+        if ( is_wp_error( $response )
113
+             || ! isset( $response['response']['code'] )
114
+             || 2 !== (int) $response['response']['code'] / 100 ) {
115
+            return false;
116
+        }
117
+
118
+        if ( ! is_wp_error( $response ) ) {
119
+            $meta = json_decode( wp_remote_retrieve_body( $response ), true );
120
+            $this->cache_service->put( $entity_url, $meta );
121
+
122
+            return $meta;
123
+        }
124
+
125
+        return array();
126
+
127
+    }
128
+
129
+    private function get_meta_for_entities( $entities ) {
130
+
131
+        $filtered_entities = array();
132
+        foreach ( $entities as $entity ) {
133
+            $entity['meta'] = array();
134
+            $meta           = $this->get_meta( $entity['entityId'] );
135
+            if ( $meta ) {
136
+                $meta                = Default_Entity_List::compact_jsonld( $meta );
137
+                $entity['meta']      = $meta;
138
+                $filtered_entities[] = $entity;
139
+            }
140
+        }
141
+
142
+        return $filtered_entities;
143
+
144
+    }
145
+
146
+    /**
147
+     * @param $tag_name
148
+     *
149
+     * @return array
150
+     */
151
+    public function get_entities_by_search_query( $tag_name ) {
152
+        $response = $this->api_service->request(
153
+            'POST',
154
+            '/analysis/single',
155
+            array( 'Content-Type' => 'application/json' ),
156
+            wp_json_encode(
157
+                array(
158
+                    'content'         => $tag_name,
159
+                    'contentType'     => 'text/plain',
160
+                    'version'         => '1.0.0',
161
+                    'contentLanguage' => 'en',
162
+                    'scope'           => $this->get_scope(),
163
+                )
164
+            )
165
+        );
166
+
167
+        if ( ! $response->is_success() ) {
168
+            return false;
169
+        }
170
+
171
+        $response = json_decode( $response->get_body(), true );
172
+
173
+        if ( ! array_key_exists( 'entities', $response ) ) {
174
+            return false;
175
+        }
176
+
177
+        $entities = $this->get_meta_for_entities( $response['entities'] );
178
+
179
+        return $entities;
180
+    }
181
+
182
+    public function get_scope() {
183
+        $service = \Wordlift_Configuration_Service::get_instance();
184 184
 
185
-		return count( $service->get_network_dataset_ids() ) > 0 ? 'network-only' : 'cloud-only';
186
-	}
185
+        return count( $service->get_network_dataset_ids() ) > 0 ? 'network-only' : 'cloud-only';
186
+    }
187 187
 
188 188
 }
Please login to merge, or discard this patch.