Code Duplication    Length = 82-82 lines in 3 locations

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

@@ 524-605 (lines=82) @@
521
			$this->parse_and_set_featured_image( $post_id, $delete_featured_image, $featured_image );
522
		}
523
524
		if ( ! empty( $metadata ) ) {
525
			foreach ( (array) $metadata as $meta ) {
526
527
				$meta = (object) $meta;
528
529
				// Custom meta description can only be set on sites that have a business subscription.
530
				if ( Jetpack_SEO_Posts::DESCRIPTION_META_KEY == $meta->key && ! Jetpack_SEO_Utils::is_enabled_jetpack_seo() ) {
531
					return new WP_Error( 'unauthorized', __( 'SEO tools are not enabled for this site.', 'jetpack' ), 403 );
532
				}
533
534
				$existing_meta_item = new stdClass;
535
536
				if ( empty( $meta->operation ) )
537
					$meta->operation = 'update';
538
539
				if ( ! empty( $meta->value ) ) {
540
					if ( 'true' == $meta->value )
541
						$meta->value = true;
542
					if ( 'false' == $meta->value )
543
						$meta->value = false;
544
				}
545
546
				if ( ! empty( $meta->id ) ) {
547
					$meta->id = absint( $meta->id );
548
					$existing_meta_item = get_metadata_by_mid( 'post', $meta->id );
549
					if ( $post_id !== (int) $existing_meta_item->post_id ) {
550
						// Only allow updates for metadata on this post
551
						continue;
552
					}
553
				}
554
555
				$unslashed_meta_key = wp_unslash( $meta->key ); // should match what the final key will be
556
				$meta->key = wp_slash( $meta->key );
557
				$unslashed_existing_meta_key = wp_unslash( $existing_meta_item->meta_key );
558
				$existing_meta_item->meta_key = wp_slash( $existing_meta_item->meta_key );
559
560
				// make sure that the meta id passed matches the existing meta key
561
				if ( ! empty( $meta->id ) && ! empty( $meta->key ) ) {
562
					$meta_by_id = get_metadata_by_mid( 'post', $meta->id );
563
					if ( $meta_by_id->meta_key !== $meta->key ) {
564
						continue; // skip this meta
565
					}
566
				}
567
568
				switch ( $meta->operation ) {
569
					case 'delete':
570
571
						if ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_existing_meta_key ) ) {
572
							delete_metadata_by_mid( 'post', $meta->id );
573
						} elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) {
574
							delete_post_meta( $post_id, $meta->key, $meta->previous_value );
575
						} elseif ( ! empty( $meta->key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) {
576
							delete_post_meta( $post_id, $meta->key );
577
						}
578
579
						break;
580
					case 'add':
581
582
						if ( ! empty( $meta->id ) || ! empty( $meta->previous_value ) ) {
583
							continue;
584
						} elseif ( ! empty( $meta->key ) && ! empty( $meta->value ) && ( current_user_can( 'add_post_meta', $post_id, $unslashed_meta_key ) ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) {
585
							add_post_meta( $post_id, $meta->key, $meta->value );
586
						}
587
588
						break;
589
					case 'update':
590
591
						if ( ! isset( $meta->value ) ) {
592
							continue;
593
						} elseif ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_existing_meta_key ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) ) {
594
							update_metadata_by_mid( 'post', $meta->id, $meta->value );
595
						} elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) ) {
596
							update_post_meta( $post_id, $meta->key,$meta->value, $meta->previous_value );
597
						} elseif ( ! empty( $meta->key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) ) {
598
							update_post_meta( $post_id, $meta->key, $meta->value );
599
						}
600
601
						break;
602
				}
603
604
			}
605
		}
606
607
		/**
608
		 * Fires when a post is created via the REST API.

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

@@ 592-673 (lines=82) @@
589
			$this->parse_and_set_featured_image( $post_id, $delete_featured_image, $featured_image );
590
		}
591
592
		if ( ! empty( $metadata ) ) {
593
			foreach ( (array) $metadata as $meta ) {
594
595
				$meta = (object) $meta;
596
597
				// Custom meta description can only be set on sites that have a business subscription.
598
				if ( Jetpack_SEO_Posts::DESCRIPTION_META_KEY == $meta->key && ! Jetpack_SEO_Utils::is_enabled_jetpack_seo() ) {
599
					return new WP_Error( 'unauthorized', __( 'SEO tools are not enabled for this site.', 'jetpack' ), 403 );
600
				}
601
602
				$existing_meta_item = new stdClass;
603
604
				if ( empty( $meta->operation ) )
605
					$meta->operation = 'update';
606
607
				if ( ! empty( $meta->value ) ) {
608
					if ( 'true' == $meta->value )
609
						$meta->value = true;
610
					if ( 'false' == $meta->value )
611
						$meta->value = false;
612
				}
613
614
				if ( ! empty( $meta->id ) ) {
615
					$meta->id = absint( $meta->id );
616
					$existing_meta_item = get_metadata_by_mid( 'post', $meta->id );
617
					if ( $post_id !== (int) $existing_meta_item->post_id ) {
618
						// Only allow updates for metadata on this post
619
						continue;
620
					}
621
				}
622
623
				$unslashed_meta_key = wp_unslash( $meta->key ); // should match what the final key will be
624
				$meta->key = wp_slash( $meta->key );
625
				$unslashed_existing_meta_key = wp_unslash( $existing_meta_item->meta_key );
626
				$existing_meta_item->meta_key = wp_slash( $existing_meta_item->meta_key );
627
628
				// make sure that the meta id passed matches the existing meta key
629
				if ( ! empty( $meta->id ) && ! empty( $meta->key ) ) {
630
					$meta_by_id = get_metadata_by_mid( 'post', $meta->id );
631
					if ( $meta_by_id->meta_key !== $meta->key ) {
632
						continue; // skip this meta
633
					}
634
				}
635
636
				switch ( $meta->operation ) {
637
					case 'delete':
638
639
						if ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_existing_meta_key ) ) {
640
							delete_metadata_by_mid( 'post', $meta->id );
641
						} elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) {
642
							delete_post_meta( $post_id, $meta->key, $meta->previous_value );
643
						} elseif ( ! empty( $meta->key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) {
644
							delete_post_meta( $post_id, $meta->key );
645
						}
646
647
						break;
648
					case 'add':
649
650
						if ( ! empty( $meta->id ) || ! empty( $meta->previous_value ) ) {
651
							continue;
652
						} elseif ( ! empty( $meta->key ) && ! empty( $meta->value ) && ( current_user_can( 'add_post_meta', $post_id, $unslashed_meta_key ) ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) {
653
							add_post_meta( $post_id, $meta->key, $meta->value );
654
						}
655
656
						break;
657
					case 'update':
658
659
						if ( ! isset( $meta->value ) ) {
660
							continue;
661
						} elseif ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_existing_meta_key ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) ) {
662
							update_metadata_by_mid( 'post', $meta->id, $meta->value );
663
						} elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) ) {
664
							update_post_meta( $post_id, $meta->key,$meta->value, $meta->previous_value );
665
						} elseif ( ! empty( $meta->key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) ) {
666
							update_post_meta( $post_id, $meta->key, $meta->value );
667
						}
668
669
						break;
670
				}
671
672
			}
673
		}
674
675
		/** This action is documented in json-endpoints/class.wpcom-json-api-update-post-endpoint.php */
676
		do_action( 'rest_api_inserted_post', $post_id, $insert, $new );

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

@@ 593-674 (lines=82) @@
590
			parent::parse_and_set_featured_image( $post_id, $delete_featured_image, $featured_image );
591
		}
592
593
		if ( ! empty( $metadata ) ) {
594
			foreach ( (array) $metadata as $meta ) {
595
596
				$meta = (object) $meta;
597
598
				// Custom meta description can only be set on sites that have a business subscription.
599
				if ( Jetpack_SEO_Posts::DESCRIPTION_META_KEY == $meta->key && ! Jetpack_SEO_Utils::is_enabled_jetpack_seo() ) {
600
					return new WP_Error( 'unauthorized', __( 'SEO tools are not enabled for this site.', 'jetpack' ), 403 );
601
				}
602
603
				$existing_meta_item = new stdClass;
604
605
				if ( empty( $meta->operation ) )
606
					$meta->operation = 'update';
607
608
				if ( ! empty( $meta->value ) ) {
609
					if ( 'true' == $meta->value )
610
						$meta->value = true;
611
					if ( 'false' == $meta->value )
612
						$meta->value = false;
613
				}
614
615
				if ( ! empty( $meta->id ) ) {
616
					$meta->id = absint( $meta->id );
617
					$existing_meta_item = get_metadata_by_mid( 'post', $meta->id );
618
					if ( $post_id !== (int) $existing_meta_item->post_id ) {
619
						// Only allow updates for metadata on this post
620
						continue;
621
					}
622
				}
623
624
				$unslashed_meta_key = wp_unslash( $meta->key ); // should match what the final key will be
625
				$meta->key = wp_slash( $meta->key );
626
				$unslashed_existing_meta_key = wp_unslash( $existing_meta_item->meta_key );
627
				$existing_meta_item->meta_key = wp_slash( $existing_meta_item->meta_key );
628
629
				// make sure that the meta id passed matches the existing meta key
630
				if ( ! empty( $meta->id ) && ! empty( $meta->key ) ) {
631
					$meta_by_id = get_metadata_by_mid( 'post', $meta->id );
632
					if ( $meta_by_id->meta_key !== $meta->key ) {
633
						continue; // skip this meta
634
					}
635
				}
636
637
				switch ( $meta->operation ) {
638
					case 'delete':
639
640
						if ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_existing_meta_key ) ) {
641
							delete_metadata_by_mid( 'post', $meta->id );
642
						} elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) {
643
							delete_post_meta( $post_id, $meta->key, $meta->previous_value );
644
						} elseif ( ! empty( $meta->key ) && current_user_can( 'delete_post_meta', $post_id, $unslashed_meta_key ) ) {
645
							delete_post_meta( $post_id, $meta->key );
646
						}
647
648
						break;
649
					case 'add':
650
651
						if ( ! empty( $meta->id ) || ! empty( $meta->previous_value ) ) {
652
							continue;
653
						} elseif ( ! empty( $meta->key ) && ! empty( $meta->value ) && ( current_user_can( 'add_post_meta', $post_id, $unslashed_meta_key ) ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) {
654
							add_post_meta( $post_id, $meta->key, $meta->value );
655
						}
656
657
						break;
658
					case 'update':
659
660
						if ( ! isset( $meta->value ) ) {
661
							continue;
662
						} elseif ( ! empty( $meta->id ) && ! empty( $existing_meta_item->meta_key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_existing_meta_key ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) ) {
663
							update_metadata_by_mid( 'post', $meta->id, $meta->value );
664
						} elseif ( ! empty( $meta->key ) && ! empty( $meta->previous_value ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) ) {
665
							update_post_meta( $post_id, $meta->key,$meta->value, $meta->previous_value );
666
						} elseif ( ! empty( $meta->key ) && ( current_user_can( 'edit_post_meta', $post_id, $unslashed_meta_key ) || WPCOM_JSON_API_Metadata::is_public( $meta->key ) ) ) {
667
							update_post_meta( $post_id, $meta->key, $meta->value );
668
						}
669
670
						break;
671
				}
672
673
			}
674
		}
675
676
		/** This action is documented in json-endpoints/class.wpcom-json-api-update-post-endpoint.php */
677
		do_action( 'rest_api_inserted_post', $post_id, $insert, $new );