Code Duplication    Length = 73-73 lines in 3 locations

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

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

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

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

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

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