Code Duplication    Length = 73-73 lines in 3 locations

json-endpoints/class.wpcom-json-api-update-post-endpoint.php 1 location

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

json-endpoints/class.wpcom-json-api-update-post-v1-1-endpoint.php 1 location

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

json-endpoints/class.wpcom-json-api-update-post-v1-2-endpoint.php 1 location

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