Jelajahi Sumber

Ticket #5246 - Allow to upload SVG files as images. Comments.

AntonLV 1 tahun lalu
induk
melakukan
cb4080d0cd

+ 7 - 2
inc/classes/BxDolTranscoderImage.php

@@ -108,7 +108,12 @@ class BxDolTranscoderImage extends BxDolTranscoder implements iBxDolFactoryObjec
 
         return false;
     }
-    
+
+    public function isMimeTypeSvg($sMimeType)
+    {
+        return strncmp('image/svg', $sMimeType, 9) === 0;
+    }
+
     /**
      * Get transcoded file url.
      * If transcoded file is ready then direct url to the file is returned.
@@ -120,7 +125,7 @@ class BxDolTranscoderImage extends BxDolTranscoder implements iBxDolFactoryObjec
     {
         if(($sFileUrl = $this->getOrigFileUrl($mixedHandler)) !== false) {
             $sFileMimeType = $this->_oStorage->getMimeTypeByFileName($sFileUrl);
-            if (strncmp('image/svg', $sFileMimeType, 9) === 0)
+            if($this->isMimeTypeSvg($sFileMimeType))
                 return $sFileUrl;
         }
 

+ 2 - 2
install/sql/system.sql

@@ -2655,8 +2655,8 @@ INSERT INTO `sys_objects_storage` (`object`, `engine`, `params`, `token_life`, `
 ('sys_images', 'Local', '', 360, 2592000, 0, 'sys_images', 'allow-deny', '{image},svg', '', 0, 0, 0, 0, 0, 0),
 ('sys_images_custom', 'Local', '', 360, 2592000, 0, 'sys_images_custom', 'allow-deny', '{image},svg', '', 0, 0, 0, 0, 0, 0),
 ('sys_images_resized', 'Local', '', 360, 2592000, 0, 'sys_images_resized', 'allow-deny', '{image},svg', '', 0, 0, 0, 0, 0, 0),
-('sys_cmts_images', 'Local', '', 360, 2592000, 3, 'sys_cmts_images', 'allow-deny', '{image}', '', 0, 0, 0, 0, 0, 0),
-('sys_cmts_images_preview', 'Local', '', 360, 2592000, 3, 'sys_cmts_images_preview', 'allow-deny', '{image}', '', 0, 0, 0, 0, 0, 0),
+('sys_cmts_images', 'Local', '', 360, 2592000, 3, 'sys_cmts_images', 'allow-deny', '{image},svg', '', 0, 0, 0, 0, 0, 0),
+('sys_cmts_images_preview', 'Local', '', 360, 2592000, 3, 'sys_cmts_images_preview', 'allow-deny', '{image},svg', '', 0, 0, 0, 0, 0, 0),
 ('sys_transcoder_queue_files', 'Local', '', 3600, 2592000, 0, 'sys_transcoder_queue_files', 'allow-deny', 'avi,flv,mpg,mpeg,wmv,mp4,m4v,mov,divx,xvid,3gp,webm,jpg', '', 0, 0, 0, 0, 0, 0),
 ('sys_files', 'Local', '', 360, 2592000, 3, 'sys_files', 'deny-allow', '', '{dangerous}', 0, 0, 0, 0, 0, 0),
 ('sys_images_editor', 'Local', '', 360, 2592000, 3, 'sys_images_editor', 'allow-deny', '{image}', '', 0, 0, 0, 0, 0, 0),

+ 3 - 3
template/scripts/BxBaseCmts.php

@@ -1608,7 +1608,7 @@ class BxBaseCmts extends BxDolCmts
 
             foreach($aFiles as $aFile) {
                 $sFile = $oStorage->getFileUrlById($aFile['image_id']);
-                $bImage = $oTranscoder && $oTranscoder->isMimeTypeSupported($aFile['mime_type']);
+                $bImage = $oTranscoder && ($oTranscoder->isMimeTypeSupported($aFile['mime_type']) || $oTranscoder->isMimeTypeSvg($aFile['mime_type']));
 
                 $sPreview = '';
                 $iWidth = $iHeight = 0;
@@ -1642,7 +1642,7 @@ class BxBaseCmts extends BxDolCmts
                     'h' => $iHeight
                 );
 
-                if($this->_bIsApi){
+                if($this->_bIsApi) {
                     $aTmplImages[] = array(
                         'is_image' => $bImage,
                         'file' => $aTmplVarsFile['file'],
@@ -1654,7 +1654,7 @@ class BxBaseCmts extends BxDolCmts
                         'height' => $aTmplVarsFile['h'],
                     );
                 }
-                else{
+                else {
                     $aTmplImages[] = array(
                         'style_prefix' => $this->_sStylePrefix,
                         'bx_if:show_image' => array(