125 lines
3.8 KiB
PHP
Executable File
125 lines
3.8 KiB
PHP
Executable File
<?php declare(strict_types=1);
|
|
/**
|
|
* Copyright (c) 2021
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
* of this software and associated documentation files (the "Software"), to deal
|
|
* in the Software without restriction, including without limitation the rights
|
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
* copies of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in all
|
|
* copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
* SOFTWARE.
|
|
*/
|
|
|
|
namespace Olegnax\Carousel\Model\ResourceModel\Slide;
|
|
|
|
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\Carousel\Model\ResourceModel\Slide;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
class Collection extends AbstractCollection
|
|
{
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $_idFieldName = 'slide_id';
|
|
/**
|
|
* @var StoreManagerInterface
|
|
*/
|
|
protected $_storeManager;
|
|
private $_storeId;
|
|
|
|
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);
|
|
}
|
|
|
|
/**
|
|
* Add store availability filter. Include availability product
|
|
* for store website
|
|
*
|
|
* @param null|string|bool|int $store
|
|
* @return \Olegnax\Carousel\Model\ResourceModel\Slide\Collection
|
|
*/
|
|
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;
|
|
}
|
|
|
|
/**
|
|
* Return current store id
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getStoreId()
|
|
{
|
|
if ($this->_storeId === null) {
|
|
$this->setStoreId($this->_storeManager->getStore()->getId());
|
|
}
|
|
return $this->_storeId;
|
|
}
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
|
|
/**
|
|
* Define resource model
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function _construct()
|
|
{
|
|
$this->_init(
|
|
\Olegnax\Carousel\Model\Slide::class,
|
|
Slide::class
|
|
);
|
|
}
|
|
|
|
}
|
|
|