69 lines
3.3 KiB
PHP
69 lines
3.3 KiB
PHP
<?php
|
|
|
|
// En App\Helpers\FileHelper.php
|
|
namespace App\Helpers;
|
|
|
|
class FileHelper
|
|
{
|
|
public static function getFileType($filename)
|
|
{
|
|
$extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
|
|
|
|
return match($extension) {
|
|
'pdf' => 'pdf',
|
|
'doc', 'docx' => 'word',
|
|
'xls', 'xlsx' => 'excel',
|
|
'ppt', 'pptx' => 'powerpoint',
|
|
'jpg', 'jpeg', 'png', 'gif' => 'image',
|
|
'zip', 'rar' => 'archive',
|
|
'txt' => 'text',
|
|
default => 'document'
|
|
};
|
|
}
|
|
|
|
public static function getFileIconClass($filename)
|
|
{
|
|
$fileType = self::getFileType($filename);
|
|
|
|
$classes = [
|
|
'pdf' => 'text-red-500',
|
|
'word' => 'text-blue-500',
|
|
'excel' => 'text-green-500',
|
|
'image' => 'text-yellow-500',
|
|
'archive' => 'text-purple-500',
|
|
'text' => 'text-gray-500',
|
|
'powerpoint' => 'text-orange-500',
|
|
'document' => 'text-gray-400'
|
|
];
|
|
|
|
return $classes[$fileType] ?? 'text-gray-400';
|
|
}
|
|
|
|
public static function getFileIconSvg($filename)
|
|
{
|
|
$fileType = self::getFileType($filename);
|
|
$colorClass = self::getFileIconClass($filename);
|
|
|
|
$icons = [
|
|
'pdf' => '<svg class="w-5 h-5 '.$colorClass.'" fill="currentColor" viewBox="0 0 20 20">
|
|
<path fill-rule="evenodd" d="M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z" clip-rule="evenodd"/>
|
|
</svg>',
|
|
'word' => '<svg class="w-5 h-5 '.$colorClass.'" fill="currentColor" viewBox="0 0 20 20">
|
|
<path fill-rule="evenodd" d="M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z" clip-rule="evenodd"/>
|
|
</svg>',
|
|
'excel' => '<svg class="w-5 h-5 '.$colorClass.'" fill="currentColor" viewBox="0 0 20 20">
|
|
<path fill-rule="evenodd" d="M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z" clip-rule="evenodd"/>
|
|
</svg>',
|
|
'image' => '<svg class="w-5 h-5 '.$colorClass.'" fill="currentColor" viewBox="0 0 20 20">
|
|
<path fill-rule="evenodd" d="M4 3a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V5a2 2 0 00-2-2H4zm12 12H4l4-8 3 6 2-4 3 6z" clip-rule="evenodd"/>
|
|
</svg>',
|
|
'archive' => '<svg class="w-5 h-5 '.$colorClass.'" fill="currentColor" viewBox="0 0 20 20">
|
|
<path fill-rule="evenodd" d="M4 3a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V5a2 2 0 00-2-2H4zm12 12H4l4-8 3 6 2-4 3 6z" clip-rule="evenodd"/>
|
|
</svg>'
|
|
];
|
|
|
|
return $icons[$fileType] ?? '<svg class="w-5 h-5 '.$colorClass.'" fill="currentColor" viewBox="0 0 20 20">
|
|
<path fill-rule="evenodd" d="M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4z" clip-rule="evenodd"/>
|
|
</svg>';
|
|
}
|
|
} |