diff --git a/classes/File.php b/classes/File.php index 6cad978a70..428eb9f285 100644 --- a/classes/File.php +++ b/classes/File.php @@ -106,6 +106,19 @@ class File extends Managed_DataObject // We don't have the file's URL since before, so let's continue. } + // if the given url is an local attachment url and the id already exists, don't + // save a new file record. This should never happen, but let's make it foolproof + $attachment_path = common_path('attachment/'); + if(strpos($given_url,$attachment_path) == 0) { + $possible_file_id = substr($given_url,strlen($attachment_path)); + if(is_numeric($possible_file_id)) { + $file = File::getKV('id',$possible_file_id); + if($file instanceof File) { + return $file; + } + } + } + $file = new File; $file->url = $given_url; if (!empty($redir_data['protected'])) $file->protected = $redir_data['protected'];