]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/attachmentlistitem.php
Merge branch 'master' into mmn_fixes
[quix0rs-gnu-social.git] / lib / attachmentlistitem.php
index 2d484fb6a8e1de797c572305edec477a850d2d6d..6ee3c7087b43d5d573489974693ed89c8bfcf9fb 100644 (file)
@@ -129,6 +129,12 @@ class AttachmentListItem extends Widget
                 if ($this->attachment->mimetype === 'application/ogg') {
                     $mediatype = 'video';   // because this element can handle Ogg/Vorbis etc. on its own
                 }
+
+                // Ugly hack to show text/html links which have a thumbnail (such as from oEmbed/OpenGraph image URLs)
+                if (!in_array($mediatype, ['image','audio','video']) && $thumb instanceof File_thumbnail) {
+                    $mediatype = 'image';
+                }
+
                 switch ($mediatype) {
                 // Anything we understand as an image, if we need special treatment, do it in StartShowAttachmentRepresentation
                 case 'image':
@@ -163,6 +169,9 @@ class AttachmentListItem extends Widget
                 default:
                     unset($thumb);  // there's no need carrying this along
                     switch ($this->attachment->mimetype) {
+                    case 'text/plain':
+                        $this->element('div', ['class'=>'e-content plaintext'], file_get_contents($this->attachment->getPath()));
+                        break;
                     case 'text/html':
                         if (!empty($this->attachment->filename)
                                 && (GNUsocial::isAjax() || common_config('attachments', 'show_html'))) {
@@ -195,11 +204,7 @@ class AttachmentListItem extends Widget
      */
     protected function scrubHtmlFile(File $attachment)
     {
-        $path = File::path($attachment->filename);
-        if (!file_exists($path) || !is_readable($path)) {
-            common_log(LOG_ERR, "Missing local HTML attachment $path");
-            return false;
-        }
+        $path = $attachment->getPath();
         $raw = file_get_contents($path);
 
         // Normalize...
@@ -226,13 +231,9 @@ class AttachmentListItem extends Widget
         $body = preg_replace('/^.*<body[^>]*>/is', '', $body);
         $body = preg_replace('/<\/body[^>]*>.*$/is', '', $body);
 
-        require_once INSTALLDIR.'/extlib/htmLawed/htmLawed.php';
-        $config = array('safe' => 1,
-                        'deny_attribute' => 'id,style,on*',
-                        'comment' => 1); // remove comments
-        $scrubbed = htmLawed($body, $config);
-
-        return $scrubbed;
+        require_once INSTALLDIR.'/extlib/HTMLPurifier/HTMLPurifier.auto.php';
+        $purifier = new HTMLPurifier();
+        return $purifier->purify($body);
     }
 
     /**