summaryrefslogtreecommitdiffstats
path: root/xmlrpc.php
diff options
context:
space:
mode:
authordonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2007-03-12 23:03:30 +0000
committerdonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2007-03-12 23:03:30 +0000
commit0d4bfdbf8c17706b57e92838d1599cb9e82c893b (patch)
treef02f84d4c598373d7e5921ea3d3e66fd50850d24 /xmlrpc.php
parentbed8532fd2d9cc526a74f4fc4214887b37cf6e71 (diff)
downloadwordpress-mu-0d4bfdbf8c17706b57e92838d1599cb9e82c893b.tar.gz
wordpress-mu-0d4bfdbf8c17706b57e92838d1599cb9e82c893b.tar.xz
wordpress-mu-0d4bfdbf8c17706b57e92838d1599cb9e82c893b.zip
WP Merge to 5028
git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@915 7be80a69-a1ef-0310-a953-fb0f7c49ff36
Diffstat (limited to 'xmlrpc.php')
-rw-r--r--xmlrpc.php44
1 files changed, 13 insertions, 31 deletions
diff --git a/xmlrpc.php b/xmlrpc.php
index 69937e0..e1d1b31 100644
--- a/xmlrpc.php
+++ b/xmlrpc.php
@@ -1393,29 +1393,22 @@ class wp_xmlrpc_server extends IXR_Server {
$type = $data['type'];
$bits = $data['bits'];
- // Default to new file, not over write.
- $overwrite = false;
if(!empty($data["overwrite"]) && ($data["overwrite"] == true)) {
- $overwrite = true;
-
- // If the file isn't writable then error out now.
- if(!is_writable($data["name"])) {
- return(new IXR_Error(500, "File is not writable, over write failed."));
- }
-
- // We now know the file is good so don't use the sanitized name.
- $name = $data["name"];
-
// Get postmeta info on the object.
- $old_meta = $wpdb->get_row("
- SELECT *
- FROM {$wpdb->postmeta}
- WHERE meta_key = '_wp_attached_file'
- AND meta_value = '{$name}'
+ $old_file = $wpdb->get_row("
+ SELECT ID
+ FROM {$wpdb->posts}
+ WHERE post_title = '{$name}'
+ AND post_type = 'attachment'
");
- // Get post info on the object.
- $old_post = get_post($old_meta->post_id);
+ // Delete previous file.
+ wp_delete_attachment($old_file->ID);
+
+ // Make sure the new name is different by pre-pending the
+ // previous post id.
+ $filename = preg_replace("/^wpid\d+-/", "", $name);
+ $name = "wpid{$old_file->ID}-{$filename}";
}
logIO('O', '(MW) Received '.strlen($bits).' bytes');
@@ -1450,22 +1443,11 @@ class wp_xmlrpc_server extends IXR_Server {
'guid' => $upload[ 'url' ]
);
- // If we are over writing then set the correct post_id and URL
- // instead of getting new ones.
- if($overwrite) {
- $post_id = $old_meta->post_id;
- $attachment["post_parent"] = $old_meta->post_id;
- $attachment["ID"] = $old_meta->post_id;
-
- $upload["url"] = $old_post->guid;
- $attachment["guid"] = $old_post->guid;
- }
-
// Save the data
$id = wp_insert_attachment( $attachment, $upload[ 'file' ], $post_id );
wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $upload['file'] ) );
- return apply_filters( 'wp_handle_upload', array( 'file' => $upload[ 'file' ], 'url' => $upload[ 'url' ], 'type' => $type ) );
+ return apply_filters( 'wp_handle_upload', array( 'file' => $name, 'url' => $upload[ 'url' ], 'type' => $type ) );
}