]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Reworked File->getUrl to throw exception
authorMikael Nordfeldth <mmn@hethane.se>
Wed, 6 Jul 2016 22:44:50 +0000 (00:44 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Wed, 6 Jul 2016 22:44:50 +0000 (00:44 +0200)
In case you require a local URL and one can't be generated, throw
FileNotStoredLocallyException(File $file)

classes/File.php
lib/filenotstoredlocallyexception.php [new file with mode: 0644]

index 6197539d9441741fae6e7b43964f13e5b987da28..7bd7da27ba5b96b7a8fcefbc0d9b12f54c444b85 100644 (file)
@@ -529,13 +529,23 @@ class File extends Managed_DataObject
         return common_local_url('attachment', array('attachment'=>$this->getID()));
     }
 
-    public function getUrl($prefer_local=true)
+    /**
+     *  @param  mixed   $use_local  true means require local, null means prefer local, false means use whatever is stored
+     */
+    public function getUrl($use_local=null)
     {
-        if ($prefer_local && !empty($this->filename)) {
-            // A locally stored file, so let's generate a URL for our instance.
-            return self::url($this->getFilename());
+        if ($use_local !== false) {
+            if (is_string($this->filename) || !empty($this->filename)) {
+                // A locally stored file, so let's generate a URL for our instance.
+                return self::url($this->getFilename());
+            }
+            if ($use_local) {
+                // if the file wasn't stored locally (has filename) and we require a local URL
+                throw new FileNotStoredLocallyException($this);
+            }
         }
 
+
         // No local filename available, return the URL we have stored
         return $this->url;
     }
diff --git a/lib/filenotstoredlocallyexception.php b/lib/filenotstoredlocallyexception.php
new file mode 100644 (file)
index 0000000..2d2ad8f
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+class FileNotStoredLocallyException extends ServerException
+{
+    public $file = null;
+
+    public function __construct(File $file)
+    {
+        $this->file = $file;
+        common_debug('Requested local URL for a file that is not stored locally with id=='._ve($this->file->getID()));
+        parent::__construct(_('Requested local URL for a file that is not stored locally.'));
+    }
+}