mirror of
https://github.com/humhub/humhub.git
synced 2025-02-24 19:23:21 +01:00
Merge pull request #3029 from danielkesselberg/refactor-mimehelper
Refactor mimehelper
This commit is contained in:
commit
58bd1c4026
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @link https://www.humhub.org/
|
||||
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
|
||||
@ -19,6 +18,69 @@ use humhub\modules\file\models\File;
|
||||
class MimeHelper
|
||||
{
|
||||
|
||||
/** IconClass */
|
||||
const MIME_WORD = 'mime-word';
|
||||
const MIME_EXCEL = 'mime-excel';
|
||||
const MIME_POWERPOINT = 'mime-powerpoint';
|
||||
const MIME_PDF = 'mime-pdf';
|
||||
const MIME_ZIP = 'mime-zip';
|
||||
const MIME_IMAGE = 'mime-image';
|
||||
const MIME_AUDIO = 'mime-audio';
|
||||
const MIME_VIDEO = 'mime-video';
|
||||
const MIME_PHOTOSHOP = 'mime-photoshop';
|
||||
const MIME_ILLUSTRATOR = 'mime-illustrator';
|
||||
const MIME_FILE = 'mime-file';
|
||||
|
||||
/** @var array Map for Extension to IconClass */
|
||||
private static $extensionToIconClass = [
|
||||
// Word
|
||||
'doc' => self::MIME_WORD,
|
||||
'docx' => self::MIME_WORD,
|
||||
'odt' => self::MIME_WORD,
|
||||
// Excel
|
||||
'xls' => self::MIME_EXCEL,
|
||||
'xlsx' => self::MIME_EXCEL,
|
||||
'ods' => self::MIME_EXCEL,
|
||||
// Powerpoint
|
||||
'ppt' => self::MIME_POWERPOINT,
|
||||
'pptx' => self::MIME_POWERPOINT,
|
||||
'pps' => self::MIME_POWERPOINT,
|
||||
'ppsx' => self::MIME_POWERPOINT,
|
||||
'odp' => self::MIME_POWERPOINT,
|
||||
// PDF
|
||||
'pdf' => self::MIME_PDF,
|
||||
// Archive
|
||||
'zip' => self::MIME_ZIP,
|
||||
'gzip' => self::MIME_ZIP,
|
||||
'rar' => self::MIME_ZIP,
|
||||
'tar' => self::MIME_ZIP,
|
||||
'7z' => self::MIME_ZIP,
|
||||
// Image
|
||||
'jpg' => self::MIME_IMAGE,
|
||||
'jpeg' => self::MIME_IMAGE,
|
||||
'png' => self::MIME_IMAGE,
|
||||
'gif' => self::MIME_IMAGE,
|
||||
'webp' => self::MIME_IMAGE,
|
||||
'tiff' => self::MIME_IMAGE,
|
||||
// Audio
|
||||
'mp3' => self::MIME_AUDIO,
|
||||
'aiff' => self::MIME_AUDIO,
|
||||
'wav' => self::MIME_AUDIO,
|
||||
'ogg' => self::MIME_AUDIO,
|
||||
// Video
|
||||
'avi' => self::MIME_VIDEO,
|
||||
'mp4' => self::MIME_VIDEO,
|
||||
'mov' => self::MIME_VIDEO,
|
||||
'mpeg' => self::MIME_VIDEO,
|
||||
'wma' => self::MIME_VIDEO,
|
||||
'webm' => self::MIME_VIDEO,
|
||||
'mkv' => self::MIME_VIDEO,
|
||||
// Adobe Photoshop
|
||||
'psd' => self::MIME_PHOTOSHOP,
|
||||
// Adobe Illustrator
|
||||
'ai' => self::MIME_ILLUSTRATOR
|
||||
];
|
||||
|
||||
/**
|
||||
* Returns Stylesheet Classname based on file extension
|
||||
*
|
||||
@ -28,46 +90,16 @@ class MimeHelper
|
||||
public static function getMimeIconClassByExtension($ext)
|
||||
{
|
||||
if ($ext instanceof File) {
|
||||
$ext = FileHelper::getExtension($ext->file_name);
|
||||
$ext = FileHelper::getExtension($ext);
|
||||
}
|
||||
|
||||
// lowercase string
|
||||
$ext = strtolower($ext);
|
||||
|
||||
// Word
|
||||
if ($ext == 'doc' || $ext == 'docx' || $ext == 'odt') {
|
||||
return 'mime-word';
|
||||
// Excel
|
||||
} elseif ($ext == 'xls' || $ext == 'xlsx') {
|
||||
return 'mime-excel';
|
||||
// Powerpoint
|
||||
} elseif ($ext == 'ppt' || $ext == 'pptx' || $ext == 'ppsx' || $ext == 'pps' || $ext == 'odp') {
|
||||
return 'mime-powerpoint';
|
||||
// PDF
|
||||
} elseif ($ext == 'pdf') {
|
||||
return 'mime-pdf';
|
||||
// Archive
|
||||
} elseif ($ext == 'zip' || $ext == 'gzip' || $ext == 'rar' || $ext == 'tar' || $ext == '7z') {
|
||||
return 'mime-zip';
|
||||
// Audio
|
||||
} elseif ($ext == 'jpg' || $ext == 'jpeg' || $ext == 'png' || $ext == 'gif' || $ext == 'webp' || $ext == 'tiff') {
|
||||
return 'mime-image';
|
||||
// Audio
|
||||
} elseif ($ext == 'mp3' || $ext == 'aiff' || $ext == 'wav' || $ext == 'ogg') {
|
||||
return 'mime-audio';
|
||||
// Video
|
||||
} elseif ($ext == 'avi' || $ext == 'mp4' || $ext == 'mov' || $ext == 'mpeg' || $ext == 'wma' || $ext == 'webm' || $ext == 'mkv') {
|
||||
return 'mime-video';
|
||||
// Adobe Photoshop
|
||||
} elseif ($ext == 'psd') {
|
||||
return 'mime-photoshop';
|
||||
// Adobe Illustrator
|
||||
} elseif ($ext == 'ai') {
|
||||
return 'mime-illustrator';
|
||||
// other file formats
|
||||
} else {
|
||||
return 'mime-file';
|
||||
if (isset(self::$extensionToIconClass[$ext])) {
|
||||
return self::$extensionToIconClass[$ext];
|
||||
}
|
||||
}
|
||||
|
||||
return self::MIME_FILE;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/**
|
||||
* @link https://www.humhub.org/
|
||||
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
|
||||
* @license https://www.humhub.com/licences
|
||||
*/
|
||||
|
||||
namespace humhub\tests\codeception\unit;
|
||||
|
||||
use Codeception\Test\Unit;
|
||||
use humhub\libs\MimeHelper;
|
||||
use humhub\modules\file\models\File;
|
||||
|
||||
/**
|
||||
* Class MimeHelperTest
|
||||
*/
|
||||
class MimeHelperTest extends Unit
|
||||
{
|
||||
/**
|
||||
* Test valid extension
|
||||
* @dataProvider dataValidExtension
|
||||
*/
|
||||
public function testValidExtension($expected, $actual)
|
||||
{
|
||||
$this->assertEquals($expected, MimeHelper::getMimeIconClassByExtension($actual));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test valid extension
|
||||
* @dataProvider dataValidExtension
|
||||
*/
|
||||
public function testValidExtensionFileObject($expected, $actual)
|
||||
{
|
||||
$temp = new File();
|
||||
$temp->file_name = uniqid() . '.' . $actual;
|
||||
|
||||
$this->assertEquals($expected, MimeHelper::getMimeIconClassByExtension($temp));
|
||||
}
|
||||
|
||||
/**
|
||||
* Testcases for valid extension
|
||||
* @return array
|
||||
*/
|
||||
public function dataValidExtension()
|
||||
{
|
||||
return [
|
||||
'word' => [MimeHelper::MIME_WORD, 'doc'],
|
||||
'excel' => [MimeHelper::MIME_EXCEL, 'xls'],
|
||||
'powerpoint' => [MimeHelper::MIME_POWERPOINT, 'ppt'],
|
||||
'pdf' => [MimeHelper::MIME_PDF, 'pdf'],
|
||||
'image' => [MimeHelper::MIME_IMAGE, 'jpg'],
|
||||
'audio' => [MimeHelper::MIME_AUDIO, 'mp3'],
|
||||
'video' => [MimeHelper::MIME_VIDEO, 'avi'],
|
||||
'zip' => [MimeHelper::MIME_ZIP, 'zip'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Test unknown extension
|
||||
*/
|
||||
public function testUnknownExtension()
|
||||
{
|
||||
$this->assertEquals(MimeHelper::MIME_FILE, MimeHelper::getMimeIconClassByExtension('unknown'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test unknown extension
|
||||
*/
|
||||
public function testUnknownExtensionFileObject()
|
||||
{
|
||||
$temp = new File;
|
||||
$temp->file_name = 'test.unknown';
|
||||
|
||||
$this->assertEquals(MimeHelper::MIME_FILE, MimeHelper::getMimeIconClassByExtension($temp));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user