]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/File.php
Display linked oembed resources as enclosures if they are of non-html mime types
[quix0rs-gnu-social.git] / classes / File.php
index b2c510340df11d99d7949d05f15451a010da33c2..1c64b4d335ac0b867f760c2569b43d4cce164514 100644 (file)
@@ -195,17 +195,49 @@ class File extends Memcached_DataObject
         return 'http://'.$server.$path.$filename;
     }
 
-    function isEnclosure(){
+    function getEnclosure(){
+        $enclosure = (object) array();
+        $enclosure->title=$this->title;
+        $enclosure->url=$this->url;
+        $enclosure->title=$this->title;
+        $enclosure->date=$this->date;
+        $enclosure->modified=$this->modified;
+        $enclosure->size=$this->size;
+        $enclosure->mimetype=$this->mimetype;
+        
         if(isset($this->filename)){
-            return true;
-        }
-        $notEnclosureMimeTypes = array('text/html','application/xhtml+xml');
-        $mimetype = strtolower($this->mimetype);
-        $semicolon = strpos($mimetype,';');
-        if($semicolon){
-            $mimetype = substr($mimetype,0,$semicolon);
+            return $enclosure;
+        }else{
+            $notEnclosureMimeTypes = array('text/html','application/xhtml+xml');
+            $mimetype = strtolower($this->mimetype);
+            $semicolon = strpos($mimetype,';');
+            if($semicolon){
+                $mimetype = substr($mimetype,0,$semicolon);
+            }
+            if(in_array($mimetype,$notEnclosureMimeTypes)){
+                $ombed = File_oembed::staticGet('file_id',$this->id);
+                if($oembed){
+                    $mimetype = strtolower($ombed->mimetype);
+                    $semicolon = strpos($mimetype,';');
+                    if($semicolon){
+                        $mimetype = substr($mimetype,0,$semicolon);
+                    }
+                    if(in_array($mimetype,$notEnclosureMimeTypes)){
+                        return false;
+                    }else{
+                        if($ombed->mimetype) $enclosure->mimetype=$ombed->mimetype;
+                        if($ombed->url) $enclosure->url=$ombed->url;
+                        if($ombed->title) $enclosure->title=$ombed->title;
+                        if($ombed->modified) $enclosure->modified=$ombed->modified;
+                        unset($ombed->size);
+                    }
+                }else{
+                    return $enclosure;
+                }
+            }else{
+                return $enclosure;
+            }
         }
-        return(! in_array($mimetype,$notEnclosureMimeTypes));
     }
 }