Code Duplication    Length = 69-73 lines in 2 locations

classes/PodsAPI.php 2 locations

@@ 268-336 (lines=69) @@
265
     *
266
     * @since 2.0
267
     */
268
    public function save_post_meta ( $id, $post_meta = null, $strict = false, $fields = array() ) {
269
        $simple_tableless_objects = PodsForm::simple_tableless_objects();
270
271
        $conflicted = pods_no_conflict_check( 'post' );
272
273
        if ( !$conflicted )
274
            pods_no_conflict_on( 'post' );
275
276
        if ( !is_array( $post_meta ) )
277
            $post_meta = array();
278
279
        $id = (int) $id;
280
281
        $meta = get_post_meta( $id );
282
283
        foreach ( $meta as $k => $value ) {
284
            if ( is_array( $value ) && 1 == count( $value ) )
285
                $meta[ $k ] = current( $value );
286
        }
287
288
        foreach ( $post_meta as $meta_key => $meta_value ) {
289
            if ( null === $meta_value || ( $strict && '' === $post_meta[ $meta_key ] ) ) {
290
                $old_meta_value = '';
291
292
                if ( isset( $meta[ $meta_key ] ) )
293
                    $old_meta_value = $meta[ $meta_key ];
294
295
                delete_post_meta( $id, $meta_key, $old_meta_value );
296
            }
297
            else {
298
				$simple = false;
299
300
				if ( isset( $fields[ $meta_key ] ) ) {
301
					$field_data = $fields[ $meta_key ];
302
303
					$simple = ( 'pick' == $field_data[ 'type' ] && in_array( pods_var( 'pick_object', $field_data ), $simple_tableless_objects ) );
304
				}
305
306
				if ( $simple ) {
307
					delete_post_meta( $id, $meta_key );
308
309
					update_post_meta( $id, '_pods_' . $meta_key, $meta_value );
310
311
					if ( ! is_array( $meta_value ) ) {
312
						$meta_value = array( $meta_value );
313
					}
314
315
					foreach ( $meta_value as $value ) {
316
						add_post_meta( $id, $meta_key, $value );
317
					}
318
				}
319
				else {
320
                	update_post_meta( $id, $meta_key, $meta_value );
321
				}
322
			}
323
        }
324
325
        if ( $strict ) {
326
            foreach ( $meta as $meta_key => $meta_value ) {
327
                if ( !isset( $post_meta[ $meta_key ] ) )
328
                    delete_post_meta( $id, $meta_key, $meta_value );
329
            }
330
        }
331
332
        if ( !$conflicted )
333
            pods_no_conflict_off( 'post' );
334
335
        return $id;
336
    }
337
338
    /**
339
     * Save a user and it's meta
@@ 693-765 (lines=73) @@
690
     *
691
     * @since 2.0
692
     */
693
    public function save_term_meta ( $id, $term_meta = null, $strict = false, $fields = array() ) {
694
        if ( ! function_exists( 'get_term_meta' ) ) {
695
        	return $id;
696
        }
697
698
        $simple_tableless_objects = PodsForm::simple_tableless_objects();
699
700
        $conflicted = pods_no_conflict_check( 'taxonomy' );
701
702
        if ( !$conflicted )
703
            pods_no_conflict_on( 'taxonomy' );
704
705
        if ( !is_array( $term_meta ) )
706
            $term_meta = array();
707
708
        $id = (int) $id;
709
710
        $meta = get_term_meta( $id );
711
712
        foreach ( $meta as $k => $value ) {
713
            if ( is_array( $value ) && 1 == count( $value ) )
714
                $meta[ $k ] = current( $value );
715
        }
716
717
        foreach ( $term_meta as $meta_key => $meta_value ) {
718
            if ( null === $meta_value || ( $strict && '' === $term_meta[ $meta_key ] ) ) {
719
                $old_meta_value = '';
720
721
                if ( isset( $meta[ $meta_key ] ) )
722
                    $old_meta_value = $meta[ $meta_key ];
723
724
                delete_term_meta( $id, $meta_key, $old_meta_value );
725
            }
726
            else {
727
				$simple = false;
728
729
				if ( isset( $fields[ $meta_key ] ) ) {
730
					$field_data = $fields[ $meta_key ];
731
732
					$simple = ( 'pick' == $field_data[ 'type' ] && in_array( pods_var( 'pick_object', $field_data ), $simple_tableless_objects ) );
733
				}
734
735
				if ( $simple ) {
736
					delete_term_meta( $id, $meta_key );
737
738
					update_term_meta( $id, '_pods_' . $meta_key, $meta_value );
739
740
					if ( ! is_array( $meta_value ) ) {
741
						$meta_value = array( $meta_value );
742
					}
743
744
					foreach ( $meta_value as $value ) {
745
						add_term_meta( $id, $meta_key, $value );
746
					}
747
				}
748
				else {
749
                	update_term_meta( $id, $meta_key, $meta_value );
750
				}
751
			}
752
        }
753
754
        if ( $strict ) {
755
            foreach ( $meta as $meta_key => $meta_value ) {
756
                if ( !isset( $term_meta[ $meta_key ] ) )
757
                    delete_term_meta( $id, $meta_key, $meta_value );
758
            }
759
        }
760
761
        if ( !$conflicted )
762
            pods_no_conflict_off( 'taxonomy' );
763
764
        return $id;
765
    }
766
767
    /**
768
     * Save a set of options