| @@ 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 |
|
| @@ 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 |
|
| @@ 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 |
|