From d52b7e3124bb6de1716c58903436849f4ace1e06 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Thu, 1 Oct 2015 22:18:33 +0200 Subject: [PATCH] Oembed fiddling, nothing major --- plugins/Oembed/OembedPlugin.php | 18 ++++++++++-------- plugins/Oembed/classes/File_oembed.php | 16 ++++++++++------ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/plugins/Oembed/OembedPlugin.php b/plugins/Oembed/OembedPlugin.php index c014b65cfb..b5646ab6fc 100644 --- a/plugins/Oembed/OembedPlugin.php +++ b/plugins/Oembed/OembedPlugin.php @@ -99,8 +99,8 @@ class OembedPlugin extends Plugin { $fo = File_oembed::getKV('file_id', $file->id); if ($fo instanceof File_oembed) { - common_log(LOG_WARNING, "Strangely, a File_oembed object exists for new file $file_id", __FILE__); - return true; + common_log(LOG_WARNING, "Strangely, a File_oembed object exists for new file {$file->id}", __FILE__); + return true; } if (isset($redir_data['oembed']['json']) @@ -173,10 +173,12 @@ class OembedPlugin extends Plugin public function onStartShowAttachmentRepresentation(HTMLOutputter $out, File $file) { - $oembed = File_oembed::getKV('file_id', $file->id); - if (empty($oembed->type)) { + try { + $oembed = File_oembed::getByFile($file); + } catch (NoResultException $e) { return true; } + switch ($oembed->type) { case 'rich': case 'video': @@ -209,14 +211,14 @@ class OembedPlugin extends Plugin } // All our remote Oembed images lack a local filename property in the File object - if ($file->filename !== null) { + if (!is_null($file->filename)) { return true; } try { // If we have proper oEmbed data, there should be an entry in the File_oembed // and File_thumbnail tables respectively. If not, we're not going to do anything. - $file_oembed = File_oembed::byFile($file); + $file_oembed = File_oembed::getByFile($file); $thumbnail = File_thumbnail::byFile($file); } catch (Exception $e) { // Not Oembed data, or at least nothing we either can or want to use. @@ -274,8 +276,8 @@ class OembedPlugin extends Plugin throw new UnsupportedMediaException(_('Image file had impossible geometry (0 width or height)')); } - // We'll trust sha256 not to have collision issues any time soon :) - $filename = hash('sha256', $imgData) . '.' . common_supported_mime_to_ext($info['mime']); + // We'll trust sha256 (File::FILEHASH_ALG) not to have collision issues any time soon :) + $filename = hash(File::FILEHASH_ALG, $imgData) . '.' . common_supported_mime_to_ext($info['mime']); $fullpath = File_thumbnail::path($filename); // Write the file to disk. Throw Exception on failure if (!file_exists($fullpath) && file_put_contents($fullpath, $imgData) === false) { diff --git a/plugins/Oembed/classes/File_oembed.php b/plugins/Oembed/classes/File_oembed.php index 0e84c6dca8..07629b6ab9 100644 --- a/plugins/Oembed/classes/File_oembed.php +++ b/plugins/Oembed/classes/File_oembed.php @@ -83,12 +83,13 @@ class File_oembed extends Managed_DataObject /** * Fetch an entry by using a File's id */ - static function byFile(File $file) { - $file_oembed = self::getKV('file_id', $file->id); - if (!$file_oembed instanceof File_oembed) { - throw new ServerException(sprintf('No File_oembed entry for File id==%u', $file->id)); + static function getByFile(File $file) { + $fo = new File_oembed(); + $fo->file_id = $file->id; + if (!$fo->find(true)) { + throw new NoResultException($fo); } - return $file_oembed; + return $fo; } public function getUrl() @@ -137,7 +138,10 @@ class File_oembed extends Managed_DataObject } } } - $file_oembed->insert(); + $result = $file_oembed->insert(); + if ($result === false) { + throw new ServerException('Failed to insert File_oembed data into database!'); + } if (!empty($data->thumbnail_url) || ($data->type == 'photo')) { $ft = File_thumbnail::getKV('file_id', $file_id); if ($ft instanceof File_thumbnail) {