diff --git a/patches/upload_replace_error-1115484-13.patch b/patches/upload_replace_error-1115484-13.patch new file mode 100644 index 0000000000000000000000000000000000000000..32a0ac764ebb384f13e75f40f339deb61114bb68 --- /dev/null +++ b/patches/upload_replace_error-1115484-13.patch @@ -0,0 +1,109 @@ +diff --git a/upload_replace.module b/upload_replace.module +index 0489f2d..7d1d644 100644 +--- a/upload_replace.module ++++ b/upload_replace.module +@@ -15,60 +15,53 @@ + /** + * Implementation of hook_file_update() + */ +-function upload_replace_file_update(&$new_file) { ++function upload_replace_file_update($new_file) { + if (!$new_file->fid) { + //Nothing to do if no fileid + return; + } +- + $desired_destination = preg_replace('/_[0-9]+\.(.*)$/', '.$1', $new_file->uri); + $db_path = db_select('file_managed', 'f') +- ->fields('f', array('uri', )) ++ ->fields('f', array('uri')) + ->condition('fid', $new_file->fid) + ->execute() +- ->fetchField(); +- if ($db_path != $new_file->uri) { ++ ->fetchAssoc(); ++ if ($db_path['uri'] != $new_file->uri) { + //this happens when a reversion is being reverted +- $next_good_filepath = file_destination($desired_destination, FILE_EXISTS_RENAME); ++ $next_good_uri = file_destination($desired_destination, FILE_EXISTS_RENAME); + db_update('file_managed') +- ->fields(array('uri' => $next_good_filepath)) ++ ->fields(array('uri' => $next_good_uri)) + ->condition('fid', $new_file->fid) + ->execute(); + $new_file->uri = $desired_destination; + } + else { + //If the filename has be modified by adding a _0 value, or +- //on certain situations the filepath will not match the filepath in the db, such as ++ //on certain situations the uri will not match the uri in the db, such as + //when reverting a revision. When reverting a revision change the filename as well +- if (!strpos($new_file->uri, $new_file->uri)) { +- //the filename is not in the filepath, so drupal must have added a "_0" before the extension ++ if (!strpos($new_file->uri, $new_file->filename)) { ++ //the filename is not in the uri, so drupal must have added a "_0" before the extension + //find the file that is blocking this file from keeping the correct path + $result = db_select('file_managed', 'f') + ->fields('f') + ->condition('uri', $desired_destination) + ->execute(); + //@todo only one result is handled, should allow for multiple results +- $is_blocked = false; +- + foreach ($result as $file) { + $is_blocked = TRUE; + $blocking_file = $file; +- $tmp_destination = file_directory_temp() ."/$blocking_file->filename"; ++ $tmp_destination = file_directory_temp()."/test_-".$blocking_file->fid."_-".$blocking_file->filename.""; + } + +- $old_destination = $db_path; +- +- if ($old_destination == $desired_destination){ +- return; +- } ++ $old_destination = $db_path['uri']; + //Swap the files + if ($is_blocked) { +- //move the blocking file to a temporary location ++ //move the blocking file to a temparary location + if (!file_unmanaged_move($desired_destination, $tmp_destination)) { + drupal_set_message(t('The file %old could not be moved to %new', array('%old' => $desired_destination, '%new' => $tmp_destination)), 'error'); + return; + } +- //DRUPAL 7 no longer changes the source filepath during move ++ //DRUPAL 7 no longer changes the source uri during move + //move blocking file was successful, update the DB + db_update('file_managed') + ->fields(array('uri' => $tmp_destination)) +@@ -107,10 +100,10 @@ function upload_replace_file_update(&$new_file) { + //Have to clear the cache because the revision data is cached somewhere + /* + * Find the nids where this file is used +- $query = "SELECT DISTINCT nid FROM {files} WHERE fid=%d"; ++ $query = "SELECT DISTINCT id FROM {file_usage} WHERE fid=%d"; + $result = db_query($query, $new_file->fid); + while($data = db_fetch_object($result)) { +- cache_clear_all("content:$data->nid"); ++ cache_clear_all("node:$data->id"); + } + */ + //This is inefficent, but how can we determine what nodes use this file? +@@ -118,11 +111,12 @@ function upload_replace_file_update(&$new_file) { + } + + /** +- * HOOK_file_delete, update the filepath in the file object before deleting as we may have altered it above ++ * HOOK_file_delete, update the uri in the file object before deleting as we may have altered it above + * @param object $new_file + */ + /* +-function upload_replace_file_delete(&$file) { +- $file->filepath = db_result(db_query("SELECT filepath FROM {files} WHERE fid = %d", $file->fid)); ++function upload_replace_file_delete($file) { ++ $file->uri = db_result(db_query("SELECT uri FROM {file_managed} WHERE fid = %d", $file->fid)); + } +-*/ +\ No newline at end of file ++*/ ++