123 lines
3.0 KiB
PHP
Executable File
123 lines
3.0 KiB
PHP
Executable File
<?php
|
|
|
|
/**
|
|
* Olegnax Athlete Slideshow
|
|
*
|
|
* NOTICE OF LICENSE
|
|
*
|
|
* This source file is subject to the Olegnax.com license that is
|
|
* available through the world-wide-web at this URL:
|
|
* https://www.olegnax.com/license
|
|
*
|
|
* DISCLAIMER
|
|
*
|
|
* Do not edit or add to this file if you wish to upgrade this extension to newer
|
|
* version in the future.
|
|
*
|
|
* @category Olegnax
|
|
* @package Olegnax_AthleteSlideshow
|
|
* @copyright Copyright (c) 2023 Olegnax (http://www.olegnax.com/)
|
|
* @license https://www.olegnax.com/license
|
|
*/
|
|
|
|
|
|
namespace Olegnax\Athlete2Slideshow\Model\ResourceModel\Slides;
|
|
|
|
use Magento\Framework\Data\Collection\Db\FetchStrategyInterface;
|
|
use Magento\Framework\Data\Collection\EntityFactoryInterface;
|
|
use Magento\Framework\DB\Adapter\AdapterInterface;
|
|
use Magento\Framework\Event\ManagerInterface;
|
|
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
|
|
use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
|
|
use Magento\Store\Api\Data\StoreInterface;
|
|
use Magento\Store\Model\StoreManagerInterface;
|
|
use Olegnax\Athlete2Slideshow\Model\ResourceModel\Slides;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
class Collection extends AbstractCollection {
|
|
|
|
/**
|
|
* Current scope (store Id)
|
|
*
|
|
* @var int
|
|
*/
|
|
protected $_storeId;
|
|
|
|
/**
|
|
* Store manager
|
|
*
|
|
* @var StoreManagerInterface
|
|
*/
|
|
protected $_storeManager;
|
|
|
|
public function __construct(
|
|
EntityFactoryInterface $entityFactory,
|
|
LoggerInterface $logger,
|
|
FetchStrategyInterface $fetchStrategy,
|
|
ManagerInterface $eventManager,
|
|
StoreManagerInterface $storeManager,
|
|
AdapterInterface $connection = null,
|
|
AbstractDb $resource = null
|
|
) {
|
|
$this->_storeManager = $storeManager;
|
|
parent::__construct($entityFactory, $logger, $fetchStrategy, $eventManager, $connection, $resource);
|
|
}
|
|
|
|
/**
|
|
* Define resource model
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function _construct() {
|
|
$this->_init(
|
|
\Olegnax\Athlete2Slideshow\Model\Slides::class, Slides::class
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Set store scope
|
|
*
|
|
* @param int|string|StoreInterface $storeId
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setStoreId($storeId) {
|
|
if ($storeId instanceof StoreInterface) {
|
|
$storeId = $storeId->getId();
|
|
}
|
|
$this->_storeId = (int) $storeId;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Return current store id
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getStoreId() {
|
|
if ($this->_storeId === null) {
|
|
$this->setStoreId($this->_storeManager->getStore()->getId());
|
|
}
|
|
return $this->_storeId;
|
|
}
|
|
|
|
/**
|
|
* Add store availability filter. Include availability product
|
|
* for store website
|
|
*
|
|
* @param null|string|bool|int $store
|
|
* @return $this
|
|
*/
|
|
public function addStoreFilter($store = null) {
|
|
if ($store === null) {
|
|
$store = $this->getStoreId();
|
|
}
|
|
$store = $this->_storeManager->getStore($store);
|
|
|
|
$this->getSelect()->where("(`store_id` = 0 OR `store_id` LIKE '?,%' OR `store_id` = ? OR `store_id` LIKE '%,?' OR `store_id` LIKE '%,?,%')", $store->getId(), 'int');
|
|
|
|
return $this;
|
|
}
|
|
|
|
}
|