123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\ProductAlert\Block\Email;
- use Magento\Framework\Pricing\PriceCurrencyInterface;
- use Magento\Framework\App\ObjectManager;
- use Magento\ProductAlert\Block\Product\ImageProvider;
- /**
- * Product Alert Abstract Email Block
- */
- abstract class AbstractEmail extends \Magento\Framework\View\Element\Template
- {
- /**
- * Product collection array
- *
- * @var \Magento\Catalog\Model\Product[]
- */
- protected $_products = [];
- /**
- * Current Store scope object
- *
- * @var \Magento\Store\Model\Store
- */
- protected $_store;
- /**
- * @var \Magento\Framework\Filter\Input\MaliciousCode
- */
- protected $_maliciousCode;
- /**
- * @var PriceCurrencyInterface
- */
- protected $priceCurrency;
- /**
- * @var \Magento\Catalog\Block\Product\ImageBuilder
- */
- protected $imageBuilder;
- /**
- * @var ImageProvider
- */
- private $imageProvider;
- /**
- * @param \Magento\Framework\View\Element\Template\Context $context
- * @param \Magento\Framework\Filter\Input\MaliciousCode $maliciousCode
- * @param PriceCurrencyInterface $priceCurrency
- * @param \Magento\Catalog\Block\Product\ImageBuilder $imageBuilder
- * @param array $data
- * @param ImageProvider $imageProvider
- */
- public function __construct(
- \Magento\Framework\View\Element\Template\Context $context,
- \Magento\Framework\Filter\Input\MaliciousCode $maliciousCode,
- PriceCurrencyInterface $priceCurrency,
- \Magento\Catalog\Block\Product\ImageBuilder $imageBuilder,
- array $data = [],
- ImageProvider $imageProvider = null
- ) {
- $this->imageBuilder = $imageBuilder;
- $this->priceCurrency = $priceCurrency;
- $this->_maliciousCode = $maliciousCode;
- $this->imageProvider = $imageProvider ?: ObjectManager::getInstance()->get(ImageProvider::class);
- parent::__construct($context, $data);
- }
- /**
- * Filter malicious code before insert content to email
- *
- * @param string|array $content
- * @return string|array
- */
- public function getFilteredContent($content)
- {
- return $this->_maliciousCode->filter($content);
- }
- /**
- * Set Store scope
- *
- * @param int|string|\Magento\Store\Model\Website|\Magento\Store\Model\Store $store
- * @return $this
- */
- public function setStore($store)
- {
- if ($store instanceof \Magento\Store\Model\Website) {
- $store = $store->getDefaultStore();
- }
- if (!$store instanceof \Magento\Store\Model\Store) {
- $store = $this->_storeManager->getStore($store);
- }
- $this->_store = $store;
- return $this;
- }
- /**
- * Retrieve current store object
- *
- * @return \Magento\Store\Model\Store
- */
- public function getStore()
- {
- if ($this->_store === null) {
- $this->_store = $this->_storeManager->getStore();
- }
- return $this->_store;
- }
- /**
- * Convert price from default currency to current currency
- *
- * @param float $price
- * @param bool $format Format price to currency format
- * @param bool $includeContainer Enclose into <span class="price"><span>
- * @return float|string
- */
- public function formatPrice($price, $format = true, $includeContainer = true)
- {
- return $format
- ? $this->priceCurrency->convertAndFormat($price, $includeContainer)
- : $this->priceCurrency->convert($price);
- }
- /**
- * Reset product collection
- *
- * @return void
- */
- public function reset()
- {
- $this->_products = [];
- }
- /**
- * Add product to collection
- *
- * @param \Magento\Catalog\Model\Product $product
- * @return void
- */
- public function addProduct(\Magento\Catalog\Model\Product $product)
- {
- $this->_products[$product->getId()] = $product;
- }
- /**
- * Retrieve product collection array
- *
- * @return \Magento\Catalog\Model\Product[]
- */
- public function getProducts()
- {
- return $this->_products;
- }
- /**
- * Get store url params
- *
- * @return array
- */
- protected function _getUrlParams()
- {
- return ['_scope' => $this->getStore(), '_scope_to_url' => true];
- }
- /**
- * @return \Magento\Framework\Pricing\Render
- */
- protected function getPriceRender()
- {
- return $this->_layout->createBlock(
- \Magento\Framework\Pricing\Render::class,
- '',
- ['data' => ['price_render_handle' => 'catalog_product_prices']]
- );
- }
- /**
- * Return HTML block with tier price
- *
- * @param \Magento\Catalog\Model\Product $product
- * @param string $priceType
- * @param string $renderZone
- * @param array $arguments
- * @return string
- */
- public function getProductPriceHtml(
- \Magento\Catalog\Model\Product $product,
- $priceType,
- $renderZone = \Magento\Framework\Pricing\Render::ZONE_ITEM_LIST,
- array $arguments = []
- ) {
- if (!isset($arguments['zone'])) {
- $arguments['zone'] = $renderZone;
- }
- /** @var \Magento\Framework\Pricing\Render $priceRender */
- $priceRender = $this->getPriceRender();
- $price = '';
- if ($priceRender) {
- $price = $priceRender->render(
- $priceType,
- $product,
- $arguments
- );
- }
- return $price;
- }
- /**
- * Retrieve product image.
- *
- * @param \Magento\Catalog\Model\Product $product
- * @param string $imageId
- * @param array $attributes
- * @return \Magento\Catalog\Block\Product\Image
- */
- public function getImage($product, $imageId, $attributes = [])
- {
- return $this->imageProvider->getImage($product, $imageId, $attributes);
- }
- }
|