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