Path.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Theme\Model\Theme\Image;
  7. use Magento\Framework\App\Filesystem\DirectoryList;
  8. use Magento\Framework\View\Design\ThemeInterface;
  9. /**
  10. * Theme Image Path
  11. */
  12. class Path implements \Magento\Framework\View\Design\Theme\Image\PathInterface
  13. {
  14. /**
  15. * Default theme preview image
  16. */
  17. const DEFAULT_PREVIEW_IMAGE = 'Magento_Theme::theme/default_preview.jpg';
  18. /**
  19. * Media Directory
  20. *
  21. * @var \Magento\Framework\Filesystem\Directory\ReadInterface
  22. */
  23. protected $mediaDirectory;
  24. /**
  25. * @var \Magento\Framework\View\Asset\Repository
  26. */
  27. protected $assetRepo;
  28. /**
  29. * @var \Magento\Store\Model\StoreManagerInterface
  30. */
  31. protected $storeManager;
  32. /**
  33. * Initialize dependencies
  34. *
  35. * @param \Magento\Framework\Filesystem $filesystem
  36. * @param \Magento\Framework\View\Asset\Repository $assetRepo
  37. * @param \Magento\Store\Model\StoreManagerInterface $storeManager
  38. */
  39. public function __construct(
  40. \Magento\Framework\Filesystem $filesystem,
  41. \Magento\Framework\View\Asset\Repository $assetRepo,
  42. \Magento\Store\Model\StoreManagerInterface $storeManager
  43. ) {
  44. $this->mediaDirectory = $filesystem->getDirectoryRead(DirectoryList::MEDIA);
  45. $this->assetRepo = $assetRepo;
  46. $this->storeManager = $storeManager;
  47. }
  48. /**
  49. * Get url to preview image
  50. *
  51. * @param ThemeInterface $theme
  52. * @return string
  53. */
  54. public function getPreviewImageUrl(ThemeInterface $theme)
  55. {
  56. return $this->storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA)
  57. . self::PREVIEW_DIRECTORY_PATH . '/' . $theme->getPreviewImage();
  58. }
  59. /**
  60. * Get path to preview image
  61. *
  62. * @param ThemeInterface $theme
  63. * @return string
  64. */
  65. public function getPreviewImagePath(ThemeInterface $theme)
  66. {
  67. return $this->mediaDirectory->getAbsolutePath(self::PREVIEW_DIRECTORY_PATH . '/' . $theme->getPreviewImage());
  68. }
  69. /**
  70. * Return default themes preview image url
  71. *
  72. * @return string
  73. */
  74. public function getPreviewImageDefaultUrl()
  75. {
  76. return $this->assetRepo->getUrl(self::DEFAULT_PREVIEW_IMAGE);
  77. }
  78. /**
  79. * Get directory path for preview image
  80. *
  81. * @return string
  82. */
  83. public function getImagePreviewDirectory()
  84. {
  85. return $this->mediaDirectory->getAbsolutePath(self::PREVIEW_DIRECTORY_PATH);
  86. }
  87. /**
  88. * Temporary directory path to store images
  89. *
  90. * @return string
  91. */
  92. public function getTemporaryDirectory()
  93. {
  94. return $this->mediaDirectory->getRelativePath('/theme/origin');
  95. }
  96. }