| @@ 505-577 (lines=73) @@ | ||
| 502 | $this->parse_and_set_featured_image( $post_id, $delete_featured_image, $featured_image ); |
|
| 503 | } |
|
| 504 | ||
| 505 | if ( ! empty( $metadata ) ) { |
|
| 506 | foreach ( (array) $metadata as $meta ) { |
|
| 507 | ||
| 508 | $meta = (object) $meta; |
|
| 509 | ||
| 510 | $existing_meta_item = new stdClass; |
|
| 511 | ||
| 512 | if ( empty( $meta->operation ) ) |
|
| 513 | $meta->operation = 'update'; |
|
| 514 | ||
| 515 | if ( ! empty( $meta->value ) ) { |
|
| 516 | if ( 'true' == $meta->value ) |
|
| 517 | $meta->value = true; |
|
| 518 | if ( 'false' == $meta->value ) |
|
| 519 | $meta->value = false; |
|
| 520 | } |
|
| 521 | ||
| 522 | if ( ! empty( $meta->id ) ) { |
|
| 523 | $meta->id = absint( $meta->id ); |
|
| 524 | $existing_meta_item = get_metadata_by_mid( 'post', $meta->id ); |
|
| 525 | } |
|
| 526 | ||
| 527 | $unslashed_meta_key = wp_unslash( $meta->key ); // should match what the final key will be |
|
| 528 | $meta->key = wp_slash( $meta->key ); |
|
| 529 | $unslashed_existing_meta_key = wp_unslash( $existing_meta_item->meta_key ); |
|
| 530 | $existing_meta_item->meta_key = wp_slash( $existing_meta_item->meta_key ); |
|
| 531 | ||
| 532 | // make sure that the meta id passed matches the existing meta key |
|
| 533 | if ( ! empty( $meta->id ) && ! empty( $meta->key ) ) { |
|
| 534 | $meta_by_id = get_metadata_by_mid( 'post', $meta->id ); |
|
| 535 | if ( $meta_by_id->meta_key !== $meta->key ) { |
|
| 536 | continue; // skip this meta |
|
| 537 | } |
|
| 538 | } |
|
| 539 | ||
| 540 | switch ( $meta->operation ) { |
|
| 541 | case 'delete': |
|
| 542 | ||
| 543 | if ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_existing_meta_key ) ) { |
|
| 544 | delete_metadata_by_mid( 'post', $meta->id ); |
|
| 545 | } elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) { |
|
| 546 | delete_post_meta( $post_id, $meta->key, $meta->previous_value ); |
|
| 547 | } elseif ( ! empty( $meta->key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) { |
|
| 548 | delete_post_meta( $post_id, $meta->key ); |
|
| 549 | } |
|
| 550 | ||
| 551 | break; |
|
| 552 | case 'add': |
|
| 553 | ||
| 554 | if ( ! empty( $meta->id ) || ! empty( $meta->previous_value ) ) { |
|
| 555 | continue; |
|
| 556 | } elseif ( ! empty( $meta->key ) && ! empty( $meta->value ) && ( current_user_can( 'add_post_meta', $post_id, $unslashed_meta_key ) ) || $this->is_metadata_public( $meta->key ) ) { |
|
| 557 | add_post_meta( $post_id, $meta->key, $meta->value ); |
|
| 558 | } |
|
| 559 | ||
| 560 | break; |
|
| 561 | case 'update': |
|
| 562 | ||
| 563 | if ( ! isset( $meta->value ) ) { |
|
| 564 | continue; |
|
| 565 | } elseif ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_existing_meta_key ) || $this->is_metadata_public( $meta->key ) ) ) { |
|
| 566 | update_metadata_by_mid( 'post', $meta->id, $meta->value ); |
|
| 567 | } elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || $this->is_metadata_public( $meta->key ) ) ) { |
|
| 568 | update_post_meta( $post_id, $meta->key,$meta->value, $meta->previous_value ); |
|
| 569 | } elseif ( ! empty( $meta->key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || $this->is_metadata_public( $meta->key ) ) ) { |
|
| 570 | update_post_meta( $post_id, $meta->key, $meta->value ); |
|
| 571 | } |
|
| 572 | ||
| 573 | break; |
|
| 574 | } |
|
| 575 | ||
| 576 | } |
|
| 577 | } |
|
| 578 | ||
| 579 | /** |
|
| 580 | * Fires when a post is created via the REST API. |
|
| @@ 519-591 (lines=73) @@ | ||
| 516 | $this->parse_and_set_featured_image( $post_id, $delete_featured_image, $featured_image ); |
|
| 517 | } |
|
| 518 | ||
| 519 | if ( ! empty( $metadata ) ) { |
|
| 520 | foreach ( (array) $metadata as $meta ) { |
|
| 521 | ||
| 522 | $meta = (object) $meta; |
|
| 523 | ||
| 524 | $existing_meta_item = new stdClass; |
|
| 525 | ||
| 526 | if ( empty( $meta->operation ) ) |
|
| 527 | $meta->operation = 'update'; |
|
| 528 | ||
| 529 | if ( ! empty( $meta->value ) ) { |
|
| 530 | if ( 'true' == $meta->value ) |
|
| 531 | $meta->value = true; |
|
| 532 | if ( 'false' == $meta->value ) |
|
| 533 | $meta->value = false; |
|
| 534 | } |
|
| 535 | ||
| 536 | if ( ! empty( $meta->id ) ) { |
|
| 537 | $meta->id = absint( $meta->id ); |
|
| 538 | $existing_meta_item = get_metadata_by_mid( 'post', $meta->id ); |
|
| 539 | } |
|
| 540 | ||
| 541 | $unslashed_meta_key = wp_unslash( $meta->key ); // should match what the final key will be |
|
| 542 | $meta->key = wp_slash( $meta->key ); |
|
| 543 | $unslashed_existing_meta_key = wp_unslash( $existing_meta_item->meta_key ); |
|
| 544 | $existing_meta_item->meta_key = wp_slash( $existing_meta_item->meta_key ); |
|
| 545 | ||
| 546 | // make sure that the meta id passed matches the existing meta key |
|
| 547 | if ( ! empty( $meta->id ) && ! empty( $meta->key ) ) { |
|
| 548 | $meta_by_id = get_metadata_by_mid( 'post', $meta->id ); |
|
| 549 | if ( $meta_by_id->meta_key !== $meta->key ) { |
|
| 550 | continue; // skip this meta |
|
| 551 | } |
|
| 552 | } |
|
| 553 | ||
| 554 | switch ( $meta->operation ) { |
|
| 555 | case 'delete': |
|
| 556 | ||
| 557 | if ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_existing_meta_key ) ) { |
|
| 558 | delete_metadata_by_mid( 'post', $meta->id ); |
|
| 559 | } elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) { |
|
| 560 | delete_post_meta( $post_id, $meta->key, $meta->previous_value ); |
|
| 561 | } elseif ( ! empty( $meta->key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) { |
|
| 562 | delete_post_meta( $post_id, $meta->key ); |
|
| 563 | } |
|
| 564 | ||
| 565 | break; |
|
| 566 | case 'add': |
|
| 567 | ||
| 568 | if ( ! empty( $meta->id ) || ! empty( $meta->previous_value ) ) { |
|
| 569 | continue; |
|
| 570 | } elseif ( ! empty( $meta->key ) && ! empty( $meta->value ) && ( current_user_can( 'add_post_meta', $post_id, $unslashed_meta_key ) ) || $this->is_metadata_public( $meta->key ) ) { |
|
| 571 | add_post_meta( $post_id, $meta->key, $meta->value ); |
|
| 572 | } |
|
| 573 | ||
| 574 | break; |
|
| 575 | case 'update': |
|
| 576 | ||
| 577 | if ( ! isset( $meta->value ) ) { |
|
| 578 | continue; |
|
| 579 | } elseif ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_existing_meta_key ) || $this->is_metadata_public( $meta->key ) ) ) { |
|
| 580 | update_metadata_by_mid( 'post', $meta->id, $meta->value ); |
|
| 581 | } elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || $this->is_metadata_public( $meta->key ) ) ) { |
|
| 582 | update_post_meta( $post_id, $meta->key,$meta->value, $meta->previous_value ); |
|
| 583 | } elseif ( ! empty( $meta->key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || $this->is_metadata_public( $meta->key ) ) ) { |
|
| 584 | update_post_meta( $post_id, $meta->key, $meta->value ); |
|
| 585 | } |
|
| 586 | ||
| 587 | break; |
|
| 588 | } |
|
| 589 | ||
| 590 | } |
|
| 591 | } |
|
| 592 | ||
| 593 | /** This action is documented in json-endpoints/class.wpcom-json-api-update-post-endpoint.php */ |
|
| 594 | do_action( 'rest_api_inserted_post', $post_id, $insert, $new ); |
|
| @@ 519-591 (lines=73) @@ | ||
| 516 | parent::parse_and_set_featured_image( $post_id, $delete_featured_image, $featured_image ); |
|
| 517 | } |
|
| 518 | ||
| 519 | if ( ! empty( $metadata ) ) { |
|
| 520 | foreach ( (array) $metadata as $meta ) { |
|
| 521 | ||
| 522 | $meta = (object) $meta; |
|
| 523 | ||
| 524 | $existing_meta_item = new stdClass; |
|
| 525 | ||
| 526 | if ( empty( $meta->operation ) ) |
|
| 527 | $meta->operation = 'update'; |
|
| 528 | ||
| 529 | if ( ! empty( $meta->value ) ) { |
|
| 530 | if ( 'true' == $meta->value ) |
|
| 531 | $meta->value = true; |
|
| 532 | if ( 'false' == $meta->value ) |
|
| 533 | $meta->value = false; |
|
| 534 | } |
|
| 535 | ||
| 536 | if ( ! empty( $meta->id ) ) { |
|
| 537 | $meta->id = absint( $meta->id ); |
|
| 538 | $existing_meta_item = get_metadata_by_mid( 'post', $meta->id ); |
|
| 539 | } |
|
| 540 | ||
| 541 | $unslashed_meta_key = wp_unslash( $meta->key ); // should match what the final key will be |
|
| 542 | $meta->key = wp_slash( $meta->key ); |
|
| 543 | $unslashed_existing_meta_key = wp_unslash( $existing_meta_item->meta_key ); |
|
| 544 | $existing_meta_item->meta_key = wp_slash( $existing_meta_item->meta_key ); |
|
| 545 | ||
| 546 | // make sure that the meta id passed matches the existing meta key |
|
| 547 | if ( ! empty( $meta->id ) && ! empty( $meta->key ) ) { |
|
| 548 | $meta_by_id = get_metadata_by_mid( 'post', $meta->id ); |
|
| 549 | if ( $meta_by_id->meta_key !== $meta->key ) { |
|
| 550 | continue; // skip this meta |
|
| 551 | } |
|
| 552 | } |
|
| 553 | ||
| 554 | switch ( $meta->operation ) { |
|
| 555 | case 'delete': |
|
| 556 | ||
| 557 | if ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_existing_meta_key ) ) { |
|
| 558 | delete_metadata_by_mid( 'post', $meta->id ); |
|
| 559 | } elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) { |
|
| 560 | delete_post_meta( $post_id, $meta->key, $meta->previous_value ); |
|
| 561 | } elseif ( ! empty( $meta->key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) { |
|
| 562 | delete_post_meta( $post_id, $meta->key ); |
|
| 563 | } |
|
| 564 | ||
| 565 | break; |
|
| 566 | case 'add': |
|
| 567 | ||
| 568 | if ( ! empty( $meta->id ) || ! empty( $meta->previous_value ) ) { |
|
| 569 | continue; |
|
| 570 | } elseif ( ! empty( $meta->key ) && ! empty( $meta->value ) && ( current_user_can( 'add_post_meta', $post_id, $unslashed_meta_key ) ) || $this->is_metadata_public( $meta->key ) ) { |
|
| 571 | add_post_meta( $post_id, $meta->key, $meta->value ); |
|
| 572 | } |
|
| 573 | ||
| 574 | break; |
|
| 575 | case 'update': |
|
| 576 | ||
| 577 | if ( ! isset( $meta->value ) ) { |
|
| 578 | continue; |
|
| 579 | } elseif ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_existing_meta_key ) || $this->is_metadata_public( $meta->key ) ) ) { |
|
| 580 | update_metadata_by_mid( 'post', $meta->id, $meta->value ); |
|
| 581 | } elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || $this->is_metadata_public( $meta->key ) ) ) { |
|
| 582 | update_post_meta( $post_id, $meta->key,$meta->value, $meta->previous_value ); |
|
| 583 | } elseif ( ! empty( $meta->key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || $this->is_metadata_public( $meta->key ) ) ) { |
|
| 584 | update_post_meta( $post_id, $meta->key, $meta->value ); |
|
| 585 | } |
|
| 586 | ||
| 587 | break; |
|
| 588 | } |
|
| 589 | ||
| 590 | } |
|
| 591 | } |
|
| 592 | ||
| 593 | /** This action is documented in json-endpoints/class.wpcom-json-api-update-post-endpoint.php */ |
|
| 594 | do_action( 'rest_api_inserted_post', $post_id, $insert, $new ); |
|