vendor/uvdesk/core-framework/FileSystem/FileSystem.php line 34

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\CoreFrameworkBundle\FileSystem;
  3. use Webkul\UVDesk\CoreFrameworkBundle\Entity\Attachment;
  4. use Symfony\Component\HttpFoundation\RequestStack;
  5. use Symfony\Component\DependencyInjection\ContainerInterface;
  6. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  7. use Webkul\UVDesk\CoreFrameworkBundle\FileSystem\UploadManagers\Localhost as DefaultFileUploadManager;
  8. class FileSystem
  9. {
  10.     private $container;
  11.     private $requestStack;
  12.     private $projectRootDirectory;
  13.     private $documentRootDirectory;
  14.     private $fileUploadManagerServiceId;
  15.     
  16.     public function __construct(ContainerInterface $containerRequestStack $requestStack)
  17.     {
  18.         $this->container $container;
  19.         $this->requestStack $requestStack;
  20.         $this->projectRootDirectory $container->get('kernel')->getProjectDir();
  21.         $this->documentRootDirectory str_replace('//''/'$this->projectRootDirectory '/public');
  22.         $this->fileUploadManagerServiceId $container->getParameter('uvdesk.upload_manager.id') ?: DefaultFileUploadManager::class;
  23.     }
  24.     public function getUploadManager()
  25.     {
  26.         return $this->container->get($this->fileUploadManagerServiceId);
  27.     }
  28.     private function getAssetIconURL(Attachment $attachment null)
  29.     {
  30.         $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/unknown.png';
  31.         if (!empty($attachment)) {
  32.             switch (strrchr($attachment->getName(), '.') ?: '') {
  33.                 case '.jpg':
  34.                 case '.png':
  35.                 case '.gif':
  36.                 case '.jpeg':
  37.                     $relativePathToAsset $attachment->getPath();
  38.                     break;
  39.                 case '.zip':
  40.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/zip.png';
  41.                     break;
  42.                 case '.doc':
  43.                 case '.docx':
  44.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/doc.png';
  45.                     break;
  46.                 case '.pdf':
  47.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/pdf.png';
  48.                     break;
  49.                 case '.xls':
  50.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/xls.png';
  51.                     break;
  52.                 case '.csv':
  53.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/csv.png';
  54.                     break;
  55.                 case '.ppt':
  56.                 case '.pptx':
  57.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/ppt.png';
  58.                     break;
  59.                 case '.aspx':
  60.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/aspx.png';
  61.                     break;
  62.                 case '.c':
  63.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/c.png';
  64.                     break;
  65.                 case '.css':
  66.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/css.png';
  67.                     break;
  68.                 case '.html':
  69.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/html.png';
  70.                     break;
  71.                 case '.txt':
  72.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/txt.png';
  73.                     break;
  74.                 case '.xml':
  75.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/xml.png';
  76.                     break;
  77.                 case '.yaml':
  78.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/yaml.png';
  79.                     break;
  80.                 case '.php':
  81.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/php.png';
  82.                     break;
  83.                 case '.odt':
  84.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/odt.png';
  85.                     break;
  86.                 case '.ods':
  87.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/ods.png';
  88.                     break;
  89.                 case '.jsp':
  90.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/jsp.png';
  91.                     break;
  92.                 case '.json':
  93.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/json.png';
  94.                     break;
  95.                 case '.js':
  96.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/js.png';
  97.                     break;
  98.                 case '.java':
  99.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/java.png';
  100.                 case '.xlsx':
  101.                     $relativePathToAsset '/bundles/uvdeskcoreframework/images/icons/file-system/xlsx.svg';
  102.                     break;
  103.                 default:
  104.                     break;
  105.             }
  106.         }
  107.         return $relativePathToAsset;
  108.     }
  109.     public function getFileTypeAssociations(Attachment $attachment$firewall 'member')
  110.     {
  111.         $router $this->container->get('router');
  112.         $request $this->requestStack->getCurrentRequest();
  113.         
  114.         $baseURL $router->generate('base_route', [], UrlGeneratorInterface::ABSOLUTE_URL);
  115.     
  116.         $assetDetails = [
  117.             'id' => $attachment->getId(),
  118.             'name' => $attachment->getName(),
  119.             'path' => $baseURL $attachment->getPath(),
  120.             'relativePath' => $attachment->getPath(),
  121.             'iconURL' => $baseURL $this->getAssetIconURL($attachment),
  122.             'downloadURL' => null,
  123.         ];
  124.         if ('member' == $firewall) {
  125.             $assetDetails['downloadURL'] = $router->generate('helpdesk_member_ticket_download_attachment', [
  126.                 'attachmendId' => $attachment->getId(),
  127.             ]);
  128.         } else {
  129.             $assetDetails['downloadURL'] = $router->generate('helpdesk_customer_download_ticket_attachment', [
  130.                 'attachmendId' => $attachment->getId(),
  131.             ]);
  132.         }
  133.         return $assetDetails;
  134.     }
  135. }