From e3c010a87016642141c4a47c274ecdac18f7e0d3 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 30 Sep 2011 13:03:42 -0400 Subject: [PATCH] try to check whether file exists over and over and over --- classes/File.php | 26 +++++++++++++++++--------- plugins/Bookmark/bookmarkforurl.php | 8 +++++++- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/classes/File.php b/classes/File.php index f716a9d64c..80fbdb181c 100644 --- a/classes/File.php +++ b/classes/File.php @@ -85,14 +85,22 @@ class File extends Managed_DataObject * @return File */ function saveNew(array $redir_data, $given_url) { - $x = new File; - $x->url = $given_url; - if (!empty($redir_data['protected'])) $x->protected = $redir_data['protected']; - if (!empty($redir_data['title'])) $x->title = $redir_data['title']; - if (!empty($redir_data['type'])) $x->mimetype = $redir_data['type']; - if (!empty($redir_data['size'])) $x->size = intval($redir_data['size']); - if (isset($redir_data['time']) && $redir_data['time'] > 0) $x->date = intval($redir_data['time']); - $file_id = $x->insert(); + + // I don't know why we have to keep doing this but I'm adding this last check to avoid + // uniqueness bugs. + + $x = File::staticGet('url', $given_url); + + if (empty($x)) { + $x = new File; + $x->url = $given_url; + if (!empty($redir_data['protected'])) $x->protected = $redir_data['protected']; + if (!empty($redir_data['title'])) $x->title = $redir_data['title']; + if (!empty($redir_data['type'])) $x->mimetype = $redir_data['type']; + if (!empty($redir_data['size'])) $x->size = intval($redir_data['size']); + if (isset($redir_data['time']) && $redir_data['time'] > 0) $x->date = intval($redir_data['time']); + $file_id = $x->insert(); + } $x->saveOembed($redir_data, $given_url); return $x; @@ -192,7 +200,7 @@ class File extends Managed_DataObject } if (empty($x)) { - $x = File::staticGet($file_id); + $x = File::staticGet('id', $file_id); if (empty($x)) { // @todo FIXME: This could possibly be a clearer message :) // TRANS: Server exception thrown when... Robin thinks something is impossible! diff --git a/plugins/Bookmark/bookmarkforurl.php b/plugins/Bookmark/bookmarkforurl.php index 018bd5c9e4..e4dedf4a48 100644 --- a/plugins/Bookmark/bookmarkforurl.php +++ b/plugins/Bookmark/bookmarkforurl.php @@ -78,7 +78,13 @@ class BookmarkforurlAction extends Action throw new ClientException(_('Invalid URL.'), 400); } - $f = File::processNew($this->url); + $f = File::staticGet('url', $this->url); + + if (empty($url)) { + $f = File::processNew($this->url); + } + + // How about now? if (!empty($f)) { $this->oembed = File_oembed::staticGet('file_id', $f->id); -- 2.39.5