From 70c77d581d6f3467ba9f63dff9e9b8ee3f538bc4 Mon Sep 17 00:00:00 2001 From: James Golovich Date: Tue, 23 Sep 2014 13:34:05 -0700 Subject: [PATCH 1/2] Allow save_post_meta to delete single meta elements instead of update At that stage in the code we don't know if there are multiple values in the DB, so the best course of action is to just deal with it like there are multiple elements. Fixes #2213 --- classes/PodsAPI.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/classes/PodsAPI.php b/classes/PodsAPI.php index 3682f22f46..a12b8004ba 100644 --- a/classes/PodsAPI.php +++ b/classes/PodsAPI.php @@ -260,7 +260,7 @@ public function save_post_meta ( $id, $post_meta = null, $strict = false, $field else { $simple = false; - if ( isset( $fields[ $meta_key ] ) && is_array( $meta_value ) ) { + if ( isset( $fields[ $meta_key ] ) ) { $field_data = $fields[ $meta_key ]; $simple = ( 'pick' == $field_data[ 'type' ] && in_array( pods_var( 'pick_object', $field_data ), $simple_tableless_objects ) ); @@ -271,6 +271,10 @@ public function save_post_meta ( $id, $post_meta = null, $strict = false, $field update_post_meta( $id, '_pods_' . $meta_key, $meta_value ); + if ( ! is_array( $meta_value ) ) { + $meta_value = array( $meta_value ); + } + foreach ( $meta_value as $value ) { add_post_meta( $id, $meta_key, $value ); } From ee1f65741e46532bf323bc48b3da5d6df7f3c1e5 Mon Sep 17 00:00:00 2001 From: James Golovich Date: Tue, 23 Sep 2014 14:00:50 -0700 Subject: [PATCH 2/2] Handle user/comment multi simple meta issues --- classes/PodsAPI.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/classes/PodsAPI.php b/classes/PodsAPI.php index a12b8004ba..2b3c61c06b 100644 --- a/classes/PodsAPI.php +++ b/classes/PodsAPI.php @@ -400,7 +400,7 @@ public function save_user_meta ( $id, $user_meta = null, $strict = false, $field else { $simple = false; - if ( isset( $fields[ $meta_key ] ) && is_array( $meta_value ) ) { + if ( isset( $fields[ $meta_key ] ) ) { $field_data = $fields[ $meta_key ]; $simple = ( 'pick' == $field_data[ 'type' ] && in_array( pods_var( 'pick_object', $field_data ), $simple_tableless_objects ) ); @@ -409,6 +409,10 @@ public function save_user_meta ( $id, $user_meta = null, $strict = false, $field if ( $simple ) { delete_user_meta( $id, $meta_key ); + if ( ! is_array( $meta_value ) ) { + $meta_value = array( $meta_value ); + } + foreach ( $meta_value as $value ) { add_user_meta( $id, $meta_key, $value ); } @@ -526,7 +530,7 @@ public function save_comment_meta ( $id, $comment_meta = null, $strict = false, else { $simple = false; - if ( isset( $fields[ $meta_key ] ) && is_array( $meta_value ) ) { + if ( isset( $fields[ $meta_key ] ) ) { $field_data = $fields[ $meta_key ]; $simple = ( 'pick' == $field_data[ 'type' ] && in_array( pods_var( 'pick_object', $field_data ), $simple_tableless_objects ) ); @@ -535,6 +539,10 @@ public function save_comment_meta ( $id, $comment_meta = null, $strict = false, if ( $simple ) { delete_comment_meta( $id, $meta_key ); + if ( ! is_array( $meta_value ) ) { + $meta_value = array( $meta_value ); + } + foreach ( $meta_value as $value ) { add_comment_meta( $id, $meta_key, $value ); }