![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-catalog/Block/Product/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /** * Product gallery * * @author Magento Core Team <[email protected]> */ namespace Magento\Catalog\Block\Product; use Magento\Catalog\Model\Product; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Data\Collection; /** * Product gallery block * * @api * @since 100.0.2 */ class Gallery extends \Magento\Framework\View\Element\Template { /** * Framework class for Core Registry * * @var \Magento\Framework\Registry */ protected $_coreRegistry = null; /** * @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Framework\Registry $registry * @param array $data */ public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\Registry $registry, array $data = [] ) { $this->_coreRegistry = $registry; parent::__construct($context, $data); } /** * Prepare layout * * @return $this */ protected function _prepareLayout() { $this->pageConfig->getTitle()->set($this->getProduct()->getMetaTitle()); return parent::_prepareLayout(); } /** * Get product * * @return Product */ public function getProduct() { return $this->_coreRegistry->registry('product'); } /** * Get gallery collection * * @return Collection */ public function getGalleryCollection() { return $this->getProduct()->getMediaGalleryImages(); } /** * Get current image * * @return Image|null */ public function getCurrentImage() { $imageId = $this->getRequest()->getParam('image'); $image = null; if ($imageId) { $image = $this->getGalleryCollection()->getItemById($imageId); } if (!$image) { $image = $this->getGalleryCollection()->getFirstItem(); } return $image; } /** * Get image url * * @return string */ public function getImageUrl() { return $this->getCurrentImage()->getUrl(); } /** * Get image file * * @return mixed */ public function getImageFile() { return $this->getCurrentImage()->getFile(); } /** * Retrieve image width * * @return bool|int */ public function getImageWidth() { $file = $this->getCurrentImage()->getPath(); $fileStat = $this->getMediaDirectory()->stat($file); if ($this->_filesystem->getDirectoryRead(DirectoryList::MEDIA)->isFile($file)) { $size = $fileStat['size']; if (isset($size[0])) { if ($size[0] > 600) { return 600; } else { return (int) $size[0]; } } } return false; } /** * Get previous image * * @return Image|false */ public function getPreviousImage() { $current = $this->getCurrentImage(); if (!$current) { return false; } $previous = false; foreach ($this->getGalleryCollection() as $image) { if ($image->getValueId() == $current->getValueId()) { return $previous; } $previous = $image; } return $previous; } /** * Get next image * * @return Image|false */ public function getNextImage() { $current = $this->getCurrentImage(); if (!$current) { return false; } $next = false; $currentFind = false; foreach ($this->getGalleryCollection() as $image) { if ($currentFind) { return $image; } if ($image->getValueId() == $current->getValueId()) { $currentFind = true; } } return $next; } /** * Get previous image url * * @return false|string */ public function getPreviousImageUrl() { $image = $this->getPreviousImage(); if ($image) { return $this->getUrl('*/*/*', ['_current' => true, 'image' => $image->getValueId()]); } return false; } /** * Get next image url * * @return false|string */ public function getNextImageUrl() { $image = $this->getNextImage(); if ($image) { return $this->getUrl('*/*/*', ['_current' => true, 'image' => $image->getValueId()]); } return false; } }