From 38ab20699d8d0c14e34a47d3026fe3fb74726645 Mon Sep 17 00:00:00 2001 From: westi Date: Mon, 19 Jan 2009 22:19:45 +0000 Subject: [PATCH] Don't duplicate enclosures on edit. See #7773 props redsweater. git-svn-id: http://svn.automattic.com/wordpress/trunk@10383 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- xmlrpc.php | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/xmlrpc.php b/xmlrpc.php index c185bafe5e..cb997a9b33 100644 --- a/xmlrpc.php +++ b/xmlrpc.php @@ -2231,10 +2231,7 @@ class wp_xmlrpc_server extends IXR_Server { } // Handle enclosures - $enclosure = $content_struct['enclosure']; - if( is_array( $enclosure ) && isset( $enclosure['url'] ) && isset( $enclosure['length'] ) && isset( $enclosure['type'] ) ) { - add_post_meta( $post_ID, 'enclosure', $enclosure['url'] . "\n" . $enclosure['length'] . "\n" . $enclosure['type'] ); - } + $this->add_enclosure_if_new($post_ID, $content_struct['enclosure']); $this->attach_uploads( $post_ID, $post_content ); @@ -2243,6 +2240,27 @@ class wp_xmlrpc_server extends IXR_Server { return strval($post_ID); } + function add_enclosure_if_new($post_ID, $enclosure) { + if( is_array( $enclosure ) && isset( $enclosure['url'] ) && isset( $enclosure['length'] ) && isset( $enclosure['type'] ) ) { + + $encstring = $enclosure['url'] . "\n" . $enclosure['length'] . "\n" . $enclosure['type']; + $found = false; + foreach ( (array) get_post_custom($post_ID) as $key => $val) { + if ($key == 'enclosure') { + foreach ( (array) $val as $enc ) { + if ($enc == $encstring) { + $found = true; + break 2; + } + } + } + } + if (!$found) { + add_post_meta( $post_ID, 'enclosure', $encstring ); + } + } + } + /** * Attach upload to a post. * @@ -2521,10 +2539,7 @@ class wp_xmlrpc_server extends IXR_Server { } // Handle enclosures - $enclosure = $content_struct['enclosure']; - if( is_array( $enclosure ) && isset( $enclosure['url'] ) && isset( $enclosure['length'] ) && isset( $enclosure['type'] ) ) { - add_post_meta( $post_ID, 'enclosure', $enclosure['url'] . "\n" . $enclosure['length'] . "\n" . $enclosure['type'] ); - } + $this->add_enclosure_if_new($post_ID, $content_struct['enclosure']); $this->attach_uploads( $ID, $post_content );