Downloadable.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Downloadable\Block\Sales\Order\Email\Items;
  7. use Magento\Downloadable\Model\Link;
  8. use Magento\Downloadable\Model\Link\Purchased;
  9. use Magento\Downloadable\Model\Link\Purchased\Item;
  10. use Magento\Store\Model\ScopeInterface;
  11. /**
  12. * Downlaodable Sales Order Email items renderer
  13. *
  14. * @api
  15. * @since 100.0.2
  16. */
  17. class Downloadable extends \Magento\Sales\Block\Order\Email\Items\DefaultItems
  18. {
  19. /**
  20. * @var Purchased
  21. */
  22. protected $_purchased;
  23. /**
  24. * @var \Magento\Downloadable\Model\Link\PurchasedFactory
  25. */
  26. protected $_purchasedFactory;
  27. /**
  28. * @var \Magento\Downloadable\Model\ResourceModel\Link\Purchased\Item\CollectionFactory
  29. */
  30. protected $_itemsFactory;
  31. /**
  32. * @var \Magento\Framework\Url
  33. * @since 100.1.0
  34. */
  35. protected $frontendUrlBuilder;
  36. /**
  37. * @param \Magento\Framework\View\Element\Template\Context $context
  38. * @param \Magento\Downloadable\Model\Link\PurchasedFactory $purchasedFactory
  39. * @param \Magento\Downloadable\Model\ResourceModel\Link\Purchased\Item\CollectionFactory $itemsFactory
  40. * @param \Magento\Framework\Url $frontendUrlBuilder
  41. * @param array $data
  42. */
  43. public function __construct(
  44. \Magento\Framework\View\Element\Template\Context $context,
  45. \Magento\Downloadable\Model\Link\PurchasedFactory $purchasedFactory,
  46. \Magento\Downloadable\Model\ResourceModel\Link\Purchased\Item\CollectionFactory $itemsFactory,
  47. \Magento\Framework\Url $frontendUrlBuilder,
  48. array $data = []
  49. ) {
  50. $this->_purchasedFactory = $purchasedFactory;
  51. $this->_itemsFactory = $itemsFactory;
  52. $this->frontendUrlBuilder = $frontendUrlBuilder;
  53. parent::__construct($context, $data);
  54. }
  55. /**
  56. * Enter description here...
  57. *
  58. * @return Purchased
  59. */
  60. public function getLinks()
  61. {
  62. $this->_purchased = $this->_purchasedFactory->create()->load(
  63. $this->getItem()->getOrderItemId(),
  64. 'order_item_id'
  65. );
  66. $purchasedLinks = $this->_itemsFactory->create()->addFieldToFilter(
  67. 'order_item_id',
  68. $this->getItem()->getOrderItemId()
  69. );
  70. $this->_purchased->setPurchasedItems($purchasedLinks);
  71. return $this->_purchased;
  72. }
  73. /**
  74. * @return null|string
  75. */
  76. public function getLinksTitle()
  77. {
  78. return $this->getLinks()->getLinkSectionTitle() ?: $this->_scopeConfig->getValue(
  79. Link::XML_PATH_LINKS_TITLE,
  80. ScopeInterface::SCOPE_STORE
  81. );
  82. }
  83. /**
  84. * @param Item $item
  85. * @return string
  86. */
  87. public function getPurchasedLinkUrl($item)
  88. {
  89. return $this->frontendUrlBuilder->getUrl(
  90. 'downloadable/download/link',
  91. [
  92. 'id' => $item->getLinkHash(),
  93. '_scope' => $this->getOrder()->getStore(),
  94. '_secure' => true,
  95. '_nosid' => true
  96. ]
  97. );
  98. }
  99. }