Completed
Pull Request — develop (#1069)
by Naveen
02:31
created
src/wordlift/mappings/class-jsonld-converter.php 2 patches
Indentation   +259 added lines, -259 removed lines patch added patch discarded remove patch
@@ -16,264 +16,264 @@
 block discarded – undo
16 16
  * @since 3.25.0
17 17
  */
18 18
 class Jsonld_Converter {
19
-	/**
20
-	 * Enumerations for the field types.
21
-	 * Enumerations for the field types.
22
-	 */
23
-	const FIELD_TYPE_TEXT_FIELD = 'text';
24
-	const FIELD_TYPE_CUSTOM_FIELD = 'custom_field';
25
-	const FIELD_TYPE_ACF = 'acf';
26
-	/**
27
-	 * The {@link Mappings_Validator} instance to test.
28
-	 *
29
-	 * @since  3.25.0
30
-	 * @access private
31
-	 * @var Mappings_Validator $validator The {@link Mappings_Validator} instance.
32
-	 */
33
-	private $validator;
34
-
35
-	/**
36
-	 * The {@link Mappings_Transform_Functions_Registry} instance.
37
-	 *
38
-	 * @since  3.25.0
39
-	 * @access private
40
-	 * @var Mappings_Transform_Functions_Registry $transform_functions_registry The {@link Mappings_Transform_Functions_Registry} instance.
41
-	 */
42
-	private $transform_functions_registry;
43
-
44
-	/**
45
-	 * Initialize all dependencies required.
46
-	 *
47
-	 * @param Mappings_Validator $validator A {@link Mappings_Validator} instance.
48
-	 * @param Mappings_Transform_Functions_Registry $transform_functions_registry
49
-	 */
50
-	public function __construct( $validator, $transform_functions_registry ) {
51
-
52
-		$this->validator                    = $validator;
53
-		$this->transform_functions_registry = $transform_functions_registry;
54
-
55
-		// Hook to refactor the JSON-LD.
56
-		add_filter( 'wl_post_jsonld_array', array( $this, 'wl_post_jsonld_array' ), 11, 2 );
57
-		add_filter( 'wl_entity_jsonld_array', array( $this, 'wl_post_jsonld_array' ), 11, 3 );
58
-
59
-	}
60
-
61
-	/**
62
-	 * Hook to `wl_post_jsonld_array` and `wl_entity_jsonld_array`.
63
-	 *
64
-	 * Receive the JSON-LD and the references in the array along with the post ID and transform them according to
65
-	 * the configuration.
66
-	 *
67
-	 * @param array $value {
68
-	 *      The array containing the JSON-LD and the references.
69
-	 *
70
-	 * @type array $jsonld The JSON-LD array.
71
-	 * @type int[] $references An array of post ID referenced by the JSON-LD (will be expanded by the converter).
72
-	 * }
73
-	 *
74
-	 * @param int $post_id The post ID.
75
-	 *
76
-	 * @return array An array with the updated JSON-LD and references.
77
-	 */
78
-	public function wl_post_jsonld_array( $value, $post_id ) {
79
-
80
-		$jsonld     = $value['jsonld'];
81
-		$references = $value['references'];
82
-
83
-		return array(
84
-			'jsonld'     => $this->wl_post_jsonld( $jsonld, $post_id, $references ),
85
-			'references' => $references,
86
-		);
87
-	}
88
-
89
-	/**
90
-	 * Returns JSON-LD data after applying transformation functions.
91
-	 *
92
-	 * @param array $jsonld The JSON-LD structure.
93
-	 * @param int $post_id The {@link WP_Post} id.
94
-	 * @param array $references An array of post references.
95
-	 *
96
-	 * @return array the new refactored array structure.
97
-	 * @since 3.25.0
98
-	 */
99
-	private function wl_post_jsonld( $jsonld, $post_id, &$references ) {
100
-
101
-		// @@todo I think there's an issue here with the Validator, because you're changing the instance state and the
102
-		// instance may be reused afterwards.
103
-
104
-		$properties        = $this->validator->validate( $post_id );
105
-		$nested_properties = array();
106
-
107
-		foreach ( $properties as $property ) {
108
-			// If the property has the character '/' in the property name then it is a nested property.
109
-			if ( strpos( $property['property_name'], '/' ) !== false ) {
110
-				$nested_properties[] = $property;
111
-				continue;
112
-			}
113
-			$property_transformed_data = $this->get_property_data( $property, $jsonld, $post_id, $references );
114
-			if ( false !== $property_transformed_data ) {
115
-				$jsonld[ $property['property_name'] ] = $property_transformed_data;
116
-			}
117
-		}
118
-
119
-		$jsonld = $this->process_nested_properties( $nested_properties, $jsonld, $post_id, $references );
120
-
121
-		return $jsonld;
122
-	}
123
-
124
-	/**
125
-	 * Get the property data by applying the transformation function
126
-	 *
127
-	 * @param $property
128
-	 * @param $jsonld
129
-	 * @param $post_id
130
-	 * @param $references
131
-	 *
132
-	 * @return array|bool|null
133
-	 */
134
-	public function get_property_data( $property, $jsonld, $post_id, &$references ) {
135
-		$transform_instance = $this->transform_functions_registry->get_transform_function( $property['transform_function'] );
136
-		$data               = $this->get_data_from_data_source( $post_id, $property );
137
-		if ( null !== $transform_instance ) {
138
-			$transform_data = $transform_instance->transform_data( $data, $jsonld, $references, $post_id );
139
-			if ( null !== $transform_data ) {
140
-				return $this->make_single( $transform_data );
141
-			}
142
-		} else {
143
-			return $this->make_single( $data );
144
-		}
145
-
146
-		return false;
147
-	}
148
-
149
-	/**
150
-	 * Process all the nested properties.
151
-	 *
152
-	 * @param $nested_properties array
153
-	 * @param $jsonld array
154
-	 *
155
-	 * @return array
156
-	 */
157
-	public function process_nested_properties( $nested_properties, $jsonld, $post_id, &$references ) {
158
-		foreach ( $nested_properties as $property ) {
159
-			$property_data = $this->get_property_data( $property, $jsonld, $post_id, $references );
160
-			if ( false === $property_data ) {
161
-				// No need to create nested levels.
162
-				continue;
163
-			}
164
-
165
-			$keys = explode( '/', $property['property_name'] );
166
-			// end is the last level of the nested property.
167
-			$end                      = array_pop( $keys );
168
-			$current_property_pointer = &$jsonld;
169
-
170
-			/**
171
-			 * Once we find all the nested levels from the property name
172
-			 * loop through it and create associative array if the levels
173
-			 * didnt exist.
174
-			 */
175
-			while ( count( $keys ) > 0 ) {
176
-				$key = array_shift( $keys );
177
-				if ( $key === "" ) {
178
-					continue;
179
-				}
180
-				if ( ! array_key_exists( $key, $current_property_pointer ) ) {
181
-					$current_property_pointer[ $key ] = array();
182
-				}
183
-				// We are setting the pointer to the current key, so that at the end
184
-				// we can add the data at last level.
185
-				$current_property_pointer = &$current_property_pointer[ $key ];
186
-			}
187
-			$current_property_pointer[ $end ] = $property_data;
188
-		}
189
-
190
-		return $jsonld;
191
-	}
192
-
193
-
194
-	/**
195
-	 * Returns data from data source.
196
-	 *
197
-	 * @param int $post_id Id of the post.
198
-	 * @param array $property_data The property data for the post_id.
199
-	 *
200
-	 * @return array Returns key, value array, if the value is not found, then it returns null.
201
-	 */
202
-	final public function get_data_from_data_source( $post_id, $property_data ) {
203
-		$value = $property_data['field_name'];
204
-
205
-		// Do 1 to 1 mapping and return result.
206
-		switch ( $property_data['field_type'] ) {
207
-			case self::FIELD_TYPE_ACF:
208
-				if ( ! function_exists( 'get_field' ) || ! function_exists( 'get_field_object' ) ) {
209
-					return array();
210
-				}
211
-
212
-				return $this->get_data_for_acf_field( $property_data['field_name'], $post_id );
213
-
214
-			case self::FIELD_TYPE_CUSTOM_FIELD:
215
-
216
-				return array_map( 'wp_strip_all_tags', get_post_meta( $post_id, $value ) );
217
-
218
-			default:
219
-				return $value;
220
-		}
221
-
222
-	}
223
-
224
-	/**
225
-	 * Gets data from acf, format the data if it is a repeater field.
226
-	 *
227
-	 * @param $field_name
228
-	 * @param $post_id
229
-	 *
230
-	 * @return array|mixed
231
-	 */
232
-	public function get_data_for_acf_field( $field_name, $post_id ) {
233
-		$field_data = get_field_object( $field_name, $post_id );
234
-		$data       = get_field( $field_name, $post_id );
235
-
236
-		// only process if it is a repeater field, else return the data.
237
-		if ( is_array( $field_data ) && array_key_exists( 'type', $field_data )
238
-		     && $field_data['type'] === 'repeater' ) {
239
-			/**
240
-			 * check if we have only one sub field, currently we only support one subfield,
241
-			 * so each repeater item should be checked if there is a single sub field.
242
-			 */
243
-			if ( is_array( $data ) &&
244
-			     count( $data ) > 0 &&
245
-			     count( array_keys( $data[0] ) ) === 1 ) {
246
-				$repeater_formatted_data = array();
247
-				foreach ( $data as $item ) {
248
-					$repeater_formatted_data = array_merge( $repeater_formatted_data, array_values( $item ) );
249
-				}
250
-				// Remove non unique values.
251
-				$repeater_formatted_data = array_unique( $repeater_formatted_data );
252
-				// Remove empty values
253
-				$repeater_formatted_data = array_filter( $repeater_formatted_data, 'strlen' );
254
-
255
-				// re-index all the values.
256
-				return array_values( $repeater_formatted_data );
257
-			}
258
-		}
259
-
260
-		// Return normal acf data if it is not a repeater field.
261
-		return $data;
262
-	}
263
-
264
-	private function make_single( $value ) {
265
-
266
-		$values = (array) $value;
267
-
268
-		if ( empty( $values ) ) {
269
-			return false;
270
-		}
271
-
272
-		if ( 1 === count( $values ) && 0 === key( $values ) ) {
273
-			return current( $values );
274
-		}
275
-
276
-		return $values;
277
-	}
19
+    /**
20
+     * Enumerations for the field types.
21
+     * Enumerations for the field types.
22
+     */
23
+    const FIELD_TYPE_TEXT_FIELD = 'text';
24
+    const FIELD_TYPE_CUSTOM_FIELD = 'custom_field';
25
+    const FIELD_TYPE_ACF = 'acf';
26
+    /**
27
+     * The {@link Mappings_Validator} instance to test.
28
+     *
29
+     * @since  3.25.0
30
+     * @access private
31
+     * @var Mappings_Validator $validator The {@link Mappings_Validator} instance.
32
+     */
33
+    private $validator;
34
+
35
+    /**
36
+     * The {@link Mappings_Transform_Functions_Registry} instance.
37
+     *
38
+     * @since  3.25.0
39
+     * @access private
40
+     * @var Mappings_Transform_Functions_Registry $transform_functions_registry The {@link Mappings_Transform_Functions_Registry} instance.
41
+     */
42
+    private $transform_functions_registry;
43
+
44
+    /**
45
+     * Initialize all dependencies required.
46
+     *
47
+     * @param Mappings_Validator $validator A {@link Mappings_Validator} instance.
48
+     * @param Mappings_Transform_Functions_Registry $transform_functions_registry
49
+     */
50
+    public function __construct( $validator, $transform_functions_registry ) {
51
+
52
+        $this->validator                    = $validator;
53
+        $this->transform_functions_registry = $transform_functions_registry;
54
+
55
+        // Hook to refactor the JSON-LD.
56
+        add_filter( 'wl_post_jsonld_array', array( $this, 'wl_post_jsonld_array' ), 11, 2 );
57
+        add_filter( 'wl_entity_jsonld_array', array( $this, 'wl_post_jsonld_array' ), 11, 3 );
58
+
59
+    }
60
+
61
+    /**
62
+     * Hook to `wl_post_jsonld_array` and `wl_entity_jsonld_array`.
63
+     *
64
+     * Receive the JSON-LD and the references in the array along with the post ID and transform them according to
65
+     * the configuration.
66
+     *
67
+     * @param array $value {
68
+     *      The array containing the JSON-LD and the references.
69
+     *
70
+     * @type array $jsonld The JSON-LD array.
71
+     * @type int[] $references An array of post ID referenced by the JSON-LD (will be expanded by the converter).
72
+     * }
73
+     *
74
+     * @param int $post_id The post ID.
75
+     *
76
+     * @return array An array with the updated JSON-LD and references.
77
+     */
78
+    public function wl_post_jsonld_array( $value, $post_id ) {
79
+
80
+        $jsonld     = $value['jsonld'];
81
+        $references = $value['references'];
82
+
83
+        return array(
84
+            'jsonld'     => $this->wl_post_jsonld( $jsonld, $post_id, $references ),
85
+            'references' => $references,
86
+        );
87
+    }
88
+
89
+    /**
90
+     * Returns JSON-LD data after applying transformation functions.
91
+     *
92
+     * @param array $jsonld The JSON-LD structure.
93
+     * @param int $post_id The {@link WP_Post} id.
94
+     * @param array $references An array of post references.
95
+     *
96
+     * @return array the new refactored array structure.
97
+     * @since 3.25.0
98
+     */
99
+    private function wl_post_jsonld( $jsonld, $post_id, &$references ) {
100
+
101
+        // @@todo I think there's an issue here with the Validator, because you're changing the instance state and the
102
+        // instance may be reused afterwards.
103
+
104
+        $properties        = $this->validator->validate( $post_id );
105
+        $nested_properties = array();
106
+
107
+        foreach ( $properties as $property ) {
108
+            // If the property has the character '/' in the property name then it is a nested property.
109
+            if ( strpos( $property['property_name'], '/' ) !== false ) {
110
+                $nested_properties[] = $property;
111
+                continue;
112
+            }
113
+            $property_transformed_data = $this->get_property_data( $property, $jsonld, $post_id, $references );
114
+            if ( false !== $property_transformed_data ) {
115
+                $jsonld[ $property['property_name'] ] = $property_transformed_data;
116
+            }
117
+        }
118
+
119
+        $jsonld = $this->process_nested_properties( $nested_properties, $jsonld, $post_id, $references );
120
+
121
+        return $jsonld;
122
+    }
123
+
124
+    /**
125
+     * Get the property data by applying the transformation function
126
+     *
127
+     * @param $property
128
+     * @param $jsonld
129
+     * @param $post_id
130
+     * @param $references
131
+     *
132
+     * @return array|bool|null
133
+     */
134
+    public function get_property_data( $property, $jsonld, $post_id, &$references ) {
135
+        $transform_instance = $this->transform_functions_registry->get_transform_function( $property['transform_function'] );
136
+        $data               = $this->get_data_from_data_source( $post_id, $property );
137
+        if ( null !== $transform_instance ) {
138
+            $transform_data = $transform_instance->transform_data( $data, $jsonld, $references, $post_id );
139
+            if ( null !== $transform_data ) {
140
+                return $this->make_single( $transform_data );
141
+            }
142
+        } else {
143
+            return $this->make_single( $data );
144
+        }
145
+
146
+        return false;
147
+    }
148
+
149
+    /**
150
+     * Process all the nested properties.
151
+     *
152
+     * @param $nested_properties array
153
+     * @param $jsonld array
154
+     *
155
+     * @return array
156
+     */
157
+    public function process_nested_properties( $nested_properties, $jsonld, $post_id, &$references ) {
158
+        foreach ( $nested_properties as $property ) {
159
+            $property_data = $this->get_property_data( $property, $jsonld, $post_id, $references );
160
+            if ( false === $property_data ) {
161
+                // No need to create nested levels.
162
+                continue;
163
+            }
164
+
165
+            $keys = explode( '/', $property['property_name'] );
166
+            // end is the last level of the nested property.
167
+            $end                      = array_pop( $keys );
168
+            $current_property_pointer = &$jsonld;
169
+
170
+            /**
171
+             * Once we find all the nested levels from the property name
172
+             * loop through it and create associative array if the levels
173
+             * didnt exist.
174
+             */
175
+            while ( count( $keys ) > 0 ) {
176
+                $key = array_shift( $keys );
177
+                if ( $key === "" ) {
178
+                    continue;
179
+                }
180
+                if ( ! array_key_exists( $key, $current_property_pointer ) ) {
181
+                    $current_property_pointer[ $key ] = array();
182
+                }
183
+                // We are setting the pointer to the current key, so that at the end
184
+                // we can add the data at last level.
185
+                $current_property_pointer = &$current_property_pointer[ $key ];
186
+            }
187
+            $current_property_pointer[ $end ] = $property_data;
188
+        }
189
+
190
+        return $jsonld;
191
+    }
192
+
193
+
194
+    /**
195
+     * Returns data from data source.
196
+     *
197
+     * @param int $post_id Id of the post.
198
+     * @param array $property_data The property data for the post_id.
199
+     *
200
+     * @return array Returns key, value array, if the value is not found, then it returns null.
201
+     */
202
+    final public function get_data_from_data_source( $post_id, $property_data ) {
203
+        $value = $property_data['field_name'];
204
+
205
+        // Do 1 to 1 mapping and return result.
206
+        switch ( $property_data['field_type'] ) {
207
+            case self::FIELD_TYPE_ACF:
208
+                if ( ! function_exists( 'get_field' ) || ! function_exists( 'get_field_object' ) ) {
209
+                    return array();
210
+                }
211
+
212
+                return $this->get_data_for_acf_field( $property_data['field_name'], $post_id );
213
+
214
+            case self::FIELD_TYPE_CUSTOM_FIELD:
215
+
216
+                return array_map( 'wp_strip_all_tags', get_post_meta( $post_id, $value ) );
217
+
218
+            default:
219
+                return $value;
220
+        }
221
+
222
+    }
223
+
224
+    /**
225
+     * Gets data from acf, format the data if it is a repeater field.
226
+     *
227
+     * @param $field_name
228
+     * @param $post_id
229
+     *
230
+     * @return array|mixed
231
+     */
232
+    public function get_data_for_acf_field( $field_name, $post_id ) {
233
+        $field_data = get_field_object( $field_name, $post_id );
234
+        $data       = get_field( $field_name, $post_id );
235
+
236
+        // only process if it is a repeater field, else return the data.
237
+        if ( is_array( $field_data ) && array_key_exists( 'type', $field_data )
238
+             && $field_data['type'] === 'repeater' ) {
239
+            /**
240
+             * check if we have only one sub field, currently we only support one subfield,
241
+             * so each repeater item should be checked if there is a single sub field.
242
+             */
243
+            if ( is_array( $data ) &&
244
+                 count( $data ) > 0 &&
245
+                 count( array_keys( $data[0] ) ) === 1 ) {
246
+                $repeater_formatted_data = array();
247
+                foreach ( $data as $item ) {
248
+                    $repeater_formatted_data = array_merge( $repeater_formatted_data, array_values( $item ) );
249
+                }
250
+                // Remove non unique values.
251
+                $repeater_formatted_data = array_unique( $repeater_formatted_data );
252
+                // Remove empty values
253
+                $repeater_formatted_data = array_filter( $repeater_formatted_data, 'strlen' );
254
+
255
+                // re-index all the values.
256
+                return array_values( $repeater_formatted_data );
257
+            }
258
+        }
259
+
260
+        // Return normal acf data if it is not a repeater field.
261
+        return $data;
262
+    }
263
+
264
+    private function make_single( $value ) {
265
+
266
+        $values = (array) $value;
267
+
268
+        if ( empty( $values ) ) {
269
+            return false;
270
+        }
271
+
272
+        if ( 1 === count( $values ) && 0 === key( $values ) ) {
273
+            return current( $values );
274
+        }
275
+
276
+        return $values;
277
+    }
278 278
 
279 279
 }
Please login to merge, or discard this patch.
Spacing   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -47,14 +47,14 @@  discard block
 block discarded – undo
47 47
 	 * @param Mappings_Validator $validator A {@link Mappings_Validator} instance.
48 48
 	 * @param Mappings_Transform_Functions_Registry $transform_functions_registry
49 49
 	 */
50
-	public function __construct( $validator, $transform_functions_registry ) {
50
+	public function __construct($validator, $transform_functions_registry) {
51 51
 
52 52
 		$this->validator                    = $validator;
53 53
 		$this->transform_functions_registry = $transform_functions_registry;
54 54
 
55 55
 		// Hook to refactor the JSON-LD.
56
-		add_filter( 'wl_post_jsonld_array', array( $this, 'wl_post_jsonld_array' ), 11, 2 );
57
-		add_filter( 'wl_entity_jsonld_array', array( $this, 'wl_post_jsonld_array' ), 11, 3 );
56
+		add_filter('wl_post_jsonld_array', array($this, 'wl_post_jsonld_array'), 11, 2);
57
+		add_filter('wl_entity_jsonld_array', array($this, 'wl_post_jsonld_array'), 11, 3);
58 58
 
59 59
 	}
60 60
 
@@ -75,13 +75,13 @@  discard block
 block discarded – undo
75 75
 	 *
76 76
 	 * @return array An array with the updated JSON-LD and references.
77 77
 	 */
78
-	public function wl_post_jsonld_array( $value, $post_id ) {
78
+	public function wl_post_jsonld_array($value, $post_id) {
79 79
 
80 80
 		$jsonld     = $value['jsonld'];
81 81
 		$references = $value['references'];
82 82
 
83 83
 		return array(
84
-			'jsonld'     => $this->wl_post_jsonld( $jsonld, $post_id, $references ),
84
+			'jsonld'     => $this->wl_post_jsonld($jsonld, $post_id, $references),
85 85
 			'references' => $references,
86 86
 		);
87 87
 	}
@@ -96,27 +96,27 @@  discard block
 block discarded – undo
96 96
 	 * @return array the new refactored array structure.
97 97
 	 * @since 3.25.0
98 98
 	 */
99
-	private function wl_post_jsonld( $jsonld, $post_id, &$references ) {
99
+	private function wl_post_jsonld($jsonld, $post_id, &$references) {
100 100
 
101 101
 		// @@todo I think there's an issue here with the Validator, because you're changing the instance state and the
102 102
 		// instance may be reused afterwards.
103 103
 
104
-		$properties        = $this->validator->validate( $post_id );
104
+		$properties        = $this->validator->validate($post_id);
105 105
 		$nested_properties = array();
106 106
 
107
-		foreach ( $properties as $property ) {
107
+		foreach ($properties as $property) {
108 108
 			// If the property has the character '/' in the property name then it is a nested property.
109
-			if ( strpos( $property['property_name'], '/' ) !== false ) {
109
+			if (strpos($property['property_name'], '/') !== false) {
110 110
 				$nested_properties[] = $property;
111 111
 				continue;
112 112
 			}
113
-			$property_transformed_data = $this->get_property_data( $property, $jsonld, $post_id, $references );
114
-			if ( false !== $property_transformed_data ) {
115
-				$jsonld[ $property['property_name'] ] = $property_transformed_data;
113
+			$property_transformed_data = $this->get_property_data($property, $jsonld, $post_id, $references);
114
+			if (false !== $property_transformed_data) {
115
+				$jsonld[$property['property_name']] = $property_transformed_data;
116 116
 			}
117 117
 		}
118 118
 
119
-		$jsonld = $this->process_nested_properties( $nested_properties, $jsonld, $post_id, $references );
119
+		$jsonld = $this->process_nested_properties($nested_properties, $jsonld, $post_id, $references);
120 120
 
121 121
 		return $jsonld;
122 122
 	}
@@ -131,16 +131,16 @@  discard block
 block discarded – undo
131 131
 	 *
132 132
 	 * @return array|bool|null
133 133
 	 */
134
-	public function get_property_data( $property, $jsonld, $post_id, &$references ) {
135
-		$transform_instance = $this->transform_functions_registry->get_transform_function( $property['transform_function'] );
136
-		$data               = $this->get_data_from_data_source( $post_id, $property );
137
-		if ( null !== $transform_instance ) {
138
-			$transform_data = $transform_instance->transform_data( $data, $jsonld, $references, $post_id );
139
-			if ( null !== $transform_data ) {
140
-				return $this->make_single( $transform_data );
134
+	public function get_property_data($property, $jsonld, $post_id, &$references) {
135
+		$transform_instance = $this->transform_functions_registry->get_transform_function($property['transform_function']);
136
+		$data               = $this->get_data_from_data_source($post_id, $property);
137
+		if (null !== $transform_instance) {
138
+			$transform_data = $transform_instance->transform_data($data, $jsonld, $references, $post_id);
139
+			if (null !== $transform_data) {
140
+				return $this->make_single($transform_data);
141 141
 			}
142 142
 		} else {
143
-			return $this->make_single( $data );
143
+			return $this->make_single($data);
144 144
 		}
145 145
 
146 146
 		return false;
@@ -154,17 +154,17 @@  discard block
 block discarded – undo
154 154
 	 *
155 155
 	 * @return array
156 156
 	 */
157
-	public function process_nested_properties( $nested_properties, $jsonld, $post_id, &$references ) {
158
-		foreach ( $nested_properties as $property ) {
159
-			$property_data = $this->get_property_data( $property, $jsonld, $post_id, $references );
160
-			if ( false === $property_data ) {
157
+	public function process_nested_properties($nested_properties, $jsonld, $post_id, &$references) {
158
+		foreach ($nested_properties as $property) {
159
+			$property_data = $this->get_property_data($property, $jsonld, $post_id, $references);
160
+			if (false === $property_data) {
161 161
 				// No need to create nested levels.
162 162
 				continue;
163 163
 			}
164 164
 
165
-			$keys = explode( '/', $property['property_name'] );
165
+			$keys = explode('/', $property['property_name']);
166 166
 			// end is the last level of the nested property.
167
-			$end                      = array_pop( $keys );
167
+			$end                      = array_pop($keys);
168 168
 			$current_property_pointer = &$jsonld;
169 169
 
170 170
 			/**
@@ -172,19 +172,19 @@  discard block
 block discarded – undo
172 172
 			 * loop through it and create associative array if the levels
173 173
 			 * didnt exist.
174 174
 			 */
175
-			while ( count( $keys ) > 0 ) {
176
-				$key = array_shift( $keys );
177
-				if ( $key === "" ) {
175
+			while (count($keys) > 0) {
176
+				$key = array_shift($keys);
177
+				if ($key === "") {
178 178
 					continue;
179 179
 				}
180
-				if ( ! array_key_exists( $key, $current_property_pointer ) ) {
181
-					$current_property_pointer[ $key ] = array();
180
+				if ( ! array_key_exists($key, $current_property_pointer)) {
181
+					$current_property_pointer[$key] = array();
182 182
 				}
183 183
 				// We are setting the pointer to the current key, so that at the end
184 184
 				// we can add the data at last level.
185
-				$current_property_pointer = &$current_property_pointer[ $key ];
185
+				$current_property_pointer = &$current_property_pointer[$key];
186 186
 			}
187
-			$current_property_pointer[ $end ] = $property_data;
187
+			$current_property_pointer[$end] = $property_data;
188 188
 		}
189 189
 
190 190
 		return $jsonld;
@@ -199,21 +199,21 @@  discard block
 block discarded – undo
199 199
 	 *
200 200
 	 * @return array Returns key, value array, if the value is not found, then it returns null.
201 201
 	 */
202
-	final public function get_data_from_data_source( $post_id, $property_data ) {
202
+	final public function get_data_from_data_source($post_id, $property_data) {
203 203
 		$value = $property_data['field_name'];
204 204
 
205 205
 		// Do 1 to 1 mapping and return result.
206
-		switch ( $property_data['field_type'] ) {
206
+		switch ($property_data['field_type']) {
207 207
 			case self::FIELD_TYPE_ACF:
208
-				if ( ! function_exists( 'get_field' ) || ! function_exists( 'get_field_object' ) ) {
208
+				if ( ! function_exists('get_field') || ! function_exists('get_field_object')) {
209 209
 					return array();
210 210
 				}
211 211
 
212
-				return $this->get_data_for_acf_field( $property_data['field_name'], $post_id );
212
+				return $this->get_data_for_acf_field($property_data['field_name'], $post_id);
213 213
 
214 214
 			case self::FIELD_TYPE_CUSTOM_FIELD:
215 215
 
216
-				return array_map( 'wp_strip_all_tags', get_post_meta( $post_id, $value ) );
216
+				return array_map('wp_strip_all_tags', get_post_meta($post_id, $value));
217 217
 
218 218
 			default:
219 219
 				return $value;
@@ -229,31 +229,31 @@  discard block
 block discarded – undo
229 229
 	 *
230 230
 	 * @return array|mixed
231 231
 	 */
232
-	public function get_data_for_acf_field( $field_name, $post_id ) {
233
-		$field_data = get_field_object( $field_name, $post_id );
234
-		$data       = get_field( $field_name, $post_id );
232
+	public function get_data_for_acf_field($field_name, $post_id) {
233
+		$field_data = get_field_object($field_name, $post_id);
234
+		$data       = get_field($field_name, $post_id);
235 235
 
236 236
 		// only process if it is a repeater field, else return the data.
237
-		if ( is_array( $field_data ) && array_key_exists( 'type', $field_data )
238
-		     && $field_data['type'] === 'repeater' ) {
237
+		if (is_array($field_data) && array_key_exists('type', $field_data)
238
+		     && $field_data['type'] === 'repeater') {
239 239
 			/**
240 240
 			 * check if we have only one sub field, currently we only support one subfield,
241 241
 			 * so each repeater item should be checked if there is a single sub field.
242 242
 			 */
243
-			if ( is_array( $data ) &&
244
-			     count( $data ) > 0 &&
245
-			     count( array_keys( $data[0] ) ) === 1 ) {
243
+			if (is_array($data) &&
244
+			     count($data) > 0 &&
245
+			     count(array_keys($data[0])) === 1) {
246 246
 				$repeater_formatted_data = array();
247
-				foreach ( $data as $item ) {
248
-					$repeater_formatted_data = array_merge( $repeater_formatted_data, array_values( $item ) );
247
+				foreach ($data as $item) {
248
+					$repeater_formatted_data = array_merge($repeater_formatted_data, array_values($item));
249 249
 				}
250 250
 				// Remove non unique values.
251
-				$repeater_formatted_data = array_unique( $repeater_formatted_data );
251
+				$repeater_formatted_data = array_unique($repeater_formatted_data);
252 252
 				// Remove empty values
253
-				$repeater_formatted_data = array_filter( $repeater_formatted_data, 'strlen' );
253
+				$repeater_formatted_data = array_filter($repeater_formatted_data, 'strlen');
254 254
 
255 255
 				// re-index all the values.
256
-				return array_values( $repeater_formatted_data );
256
+				return array_values($repeater_formatted_data);
257 257
 			}
258 258
 		}
259 259
 
@@ -261,16 +261,16 @@  discard block
 block discarded – undo
261 261
 		return $data;
262 262
 	}
263 263
 
264
-	private function make_single( $value ) {
264
+	private function make_single($value) {
265 265
 
266 266
 		$values = (array) $value;
267 267
 
268
-		if ( empty( $values ) ) {
268
+		if (empty($values)) {
269 269
 			return false;
270 270
 		}
271 271
 
272
-		if ( 1 === count( $values ) && 0 === key( $values ) ) {
273
-			return current( $values );
272
+		if (1 === count($values) && 0 === key($values)) {
273
+			return current($values);
274 274
 		}
275 275
 
276 276
 		return $values;
Please login to merge, or discard this patch.