Code Duplication    Length = 45-46 lines in 3 locations

includes/api/legacy/v1/class-wc-api-resource.php 1 location

@@ 238-282 (lines=45) @@
235
	 * @param array|string the requested list of fields to include in the response
236
	 * @return array response data
237
	 */
238
	public function filter_response_fields( $data, $resource, $fields ) {
239
240
		if ( ! is_array( $data ) || empty( $fields ) )
241
			return $data;
242
243
		$fields = explode( ',', $fields );
244
		$sub_fields = array();
245
246
		// get sub fields
247
		foreach ( $fields as $field ) {
248
249
			if ( false !== strpos( $field, '.' ) ) {
250
251
				list( $name, $value ) = explode( '.', $field );
252
253
				$sub_fields[ $name ] = $value;
254
			}
255
		}
256
257
		// iterate through top-level fields
258
		foreach ( $data as $data_field => $data_value ) {
259
260
			// if a field has sub-fields and the top-level field has sub-fields to filter
261
			if ( is_array( $data_value ) && in_array( $data_field, array_keys( $sub_fields ) ) ) {
262
263
				// iterate through each sub-field
264
				foreach ( $data_value as $sub_field => $sub_field_value ) {
265
266
					// remove non-matching sub-fields
267
					if ( ! in_array( $sub_field, $sub_fields ) ) {
268
						unset( $data[ $data_field ][ $sub_field ] );
269
					}
270
				}
271
272
			} else {
273
274
				// remove non-matching top-level fields
275
				if ( ! in_array( $data_field, $fields ) ) {
276
					unset( $data[ $data_field ] );
277
				}
278
			}
279
		}
280
281
		return $data;
282
	}
283
284
	/**
285
	 * Delete a given resource

includes/api/legacy/v2/class-wc-api-resource.php 1 location

@@ 297-342 (lines=46) @@
294
	 * @param array|string the requested list of fields to include in the response
295
	 * @return array response data
296
	 */
297
	public function filter_response_fields( $data, $resource, $fields ) {
298
299
		if ( ! is_array( $data ) || empty( $fields ) ) {
300
			return $data;
301
		}
302
303
		$fields = explode( ',', $fields );
304
		$sub_fields = array();
305
306
		// get sub fields
307
		foreach ( $fields as $field ) {
308
309
			if ( false !== strpos( $field, '.' ) ) {
310
311
				list( $name, $value ) = explode( '.', $field );
312
313
				$sub_fields[ $name ] = $value;
314
			}
315
		}
316
317
		// iterate through top-level fields
318
		foreach ( $data as $data_field => $data_value ) {
319
320
			// if a field has sub-fields and the top-level field has sub-fields to filter
321
			if ( is_array( $data_value ) && in_array( $data_field, array_keys( $sub_fields ) ) ) {
322
323
				// iterate through each sub-field
324
				foreach ( $data_value as $sub_field => $sub_field_value ) {
325
326
					// remove non-matching sub-fields
327
					if ( ! in_array( $sub_field, $sub_fields ) ) {
328
						unset( $data[ $data_field ][ $sub_field ] );
329
					}
330
				}
331
332
			} else {
333
334
				// remove non-matching top-level fields
335
				if ( ! in_array( $data_field, $fields ) ) {
336
					unset( $data[ $data_field ] );
337
				}
338
			}
339
		}
340
341
		return $data;
342
	}
343
344
	/**
345
	 * Delete a given resource

includes/api/legacy/v3/class-wc-api-resource.php 1 location

@@ 297-342 (lines=46) @@
294
	 * @param array|string the requested list of fields to include in the response
295
	 * @return array response data
296
	 */
297
	public function filter_response_fields( $data, $resource, $fields ) {
298
299
		if ( ! is_array( $data ) || empty( $fields ) ) {
300
			return $data;
301
		}
302
303
		$fields = explode( ',', $fields );
304
		$sub_fields = array();
305
306
		// get sub fields
307
		foreach ( $fields as $field ) {
308
309
			if ( false !== strpos( $field, '.' ) ) {
310
311
				list( $name, $value ) = explode( '.', $field );
312
313
				$sub_fields[ $name ] = $value;
314
			}
315
		}
316
317
		// iterate through top-level fields
318
		foreach ( $data as $data_field => $data_value ) {
319
320
			// if a field has sub-fields and the top-level field has sub-fields to filter
321
			if ( is_array( $data_value ) && in_array( $data_field, array_keys( $sub_fields ) ) ) {
322
323
				// iterate through each sub-field
324
				foreach ( $data_value as $sub_field => $sub_field_value ) {
325
326
					// remove non-matching sub-fields
327
					if ( ! in_array( $sub_field, $sub_fields ) ) {
328
						unset( $data[ $data_field ][ $sub_field ] );
329
					}
330
				}
331
332
			} else {
333
334
				// remove non-matching top-level fields
335
				if ( ! in_array( $data_field, $fields ) ) {
336
					unset( $data[ $data_field ] );
337
				}
338
			}
339
		}
340
341
		return $data;
342
	}
343
344
	/**
345
	 * Delete a given resource