]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
File handling changes for better logic
authorMikael Nordfeldth <mmn@hethane.se>
Thu, 1 Oct 2015 20:14:49 +0000 (22:14 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Thu, 1 Oct 2015 20:14:49 +0000 (22:14 +0200)
Also prepares for StoreRemoteMediaPlugin, coming up...

classes/File.php
lib/attachmentlist.php
lib/imagefile.php
lib/util.php

index d31141cf8eca9e3e55431687b7ee88ea5e54c9df..977c02bce68ef2d57a3a8c17bd64a86c2d1003c9 100644 (file)
@@ -85,29 +85,34 @@ class File extends Managed_DataObject
     public static function saveNew(array $redir_data, $given_url)
     {
         $file = null;
-
         try {
             // I don't know why we have to keep doing this but we run a last check to avoid
             // uniqueness bugs.
             $file = File::getByUrl($given_url);
+            return $file;
         } catch (NoResultException $e) {
-            $file = new File;
-            $file->urlhash = self::hashurl($given_url);
-            $file->url = $given_url;
-            if (!empty($redir_data['protected'])) $file->protected = $redir_data['protected'];
-            if (!empty($redir_data['title'])) $file->title = $redir_data['title'];
-            if (!empty($redir_data['type'])) $file->mimetype = $redir_data['type'];
-            if (!empty($redir_data['size'])) $file->size = intval($redir_data['size']);
-            if (isset($redir_data['time']) && $redir_data['time'] > 0) $file->date = intval($redir_data['time']);
-            $file_id = $file->insert();
-
-            if ($file_id === false) {
-                throw new ServerException('File/URL metadata could not be saved to the database.');
-            }
+            // We don't have the file's URL since before, so let's continue.
+        }
+
+        if (!Event::handle('StartFileSaveNew', array(&$redir_data, $given_url))) {
+            throw new ServerException('File not saved due to an aborted StartFileSaveNew event.');
+        }
+
+        $file = new File;
+        $file->urlhash = self::hashurl($given_url);
+        $file->url = $given_url;
+        if (!empty($redir_data['protected'])) $file->protected = $redir_data['protected'];
+        if (!empty($redir_data['title'])) $file->title = $redir_data['title'];
+        if (!empty($redir_data['type'])) $file->mimetype = $redir_data['type'];
+        if (!empty($redir_data['size'])) $file->size = intval($redir_data['size']);
+        if (isset($redir_data['time']) && $redir_data['time'] > 0) $file->date = intval($redir_data['time']);
+        $file_id = $file->insert();
+
+        if ($file_id === false) {
+            throw new ServerException('File/URL metadata could not be saved to the database.');
         }
 
         Event::handle('EndFileSaveNew', array($file, $redir_data, $given_url));
-        assert ($file instanceof File);
         return $file;
     }
 
@@ -476,7 +481,7 @@ class File extends Managed_DataObject
     /**
      * @param   string  $hashstr    String of (preferrably lower case) hexadecimal characters, same as result of 'hash_file(...)'
      */
-    static public function getByHash($hashstr, $alg=File::FILEHASH_ALG)
+    static public function getByHash($hashstr)
     {
         $file = new File();
         $file->filehash = strtolower($hashstr);
index d6cfda6f95961b4f3bd74be7a1a52d384df947bc..dcae917be36c17c8b0180d9d6982203601ba3016 100644 (file)
@@ -58,7 +58,7 @@ class AttachmentList extends Widget
      *
      * @param Notice $notice stream of notices from DB_DataObject
      */
-    function __construct($notice, $out=null)
+    function __construct(Notice $notice, $out=null)
     {
         parent::__construct($out);
         $this->notice = $notice;
@@ -75,7 +75,6 @@ class AttachmentList extends Widget
     function show()
     {
        $attachments = $this->notice->attachments();
-        $representable = false;
         foreach ($attachments as $key=>$att) {
             // Only show attachments representable with a title
             if ($att->getTitle() === null) {
index 68cfea48e7e01051eb26cbc72b1caad98887a72f..71074877374e4dc38feaeed032948501846b4596 100644 (file)
@@ -125,7 +125,7 @@ class ImageFile
         $imgPath = null;
         $media = common_get_mime_media($file->mimetype);
         if (Event::handle('CreateFileImageThumbnailSource', array($file, &$imgPath, $media))) {
-            if (empty($file->filename)) {
+            if (empty($file->filename) && !file_exists($imgPath)) {
                 throw new UnsupportedMediaException(_('File without filename could not get a thumbnail source.'));
             }
 
index a5acd8d86b38e54f9c8d4ea1d1f02e0d77d6b000..edada03864a37d1781f0a6b47ca0e2780210b08b 100644 (file)
@@ -1868,6 +1868,7 @@ function common_get_mime_media($type)
     return strtolower($tmp[0]);
 }
 
+// Get only the mimetype and not additional info (separated from bare mime with semi-colon)
 function common_bare_mime($mimetype)
 {
     $mimetype = mb_strtolower($mimetype);