![]() 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/cartforge.co/vendor/magento/module-downloadable/Model/ResourceModel/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Downloadable\Model\ResourceModel; use Magento\Catalog\Api\Data\ProductInterface; /** * Downloadable Product Samples resource model * * @api * @since 100.0.2 */ class Sample extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb { /** * @var \Magento\Framework\EntityManager\MetadataPool * @since 100.1.0 */ protected $metadataPool; /** * @param \Magento\Framework\Model\ResourceModel\Db\Context $context * @param \Magento\Framework\EntityManager\MetadataPool $metadataPool * @param string|null $connectionName */ public function __construct( \Magento\Framework\Model\ResourceModel\Db\Context $context, \Magento\Framework\EntityManager\MetadataPool $metadataPool, $connectionName = null ) { $this->metadataPool = $metadataPool; parent::__construct($context, $connectionName); } /** * Initialize connection * * @return void */ protected function _construct() { $this->_init('downloadable_sample', 'sample_id'); } /** * Save title of sample item in store scope * * @param \Magento\Downloadable\Model\Sample $sampleObject * @return $this */ public function saveItemTitle($sampleObject) { $connection = $this->getConnection(); $sampleTitleTable = $this->getTable('downloadable_sample_title'); $bind = [':sample_id' => $sampleObject->getId(), ':store_id' => (int)$sampleObject->getStoreId()]; $select = $connection->select()->from( $sampleTitleTable )->where( 'sample_id=:sample_id AND store_id=:store_id' ); if ($connection->fetchOne($select, $bind)) { $where = [ 'sample_id = ?' => $sampleObject->getId(), 'store_id = ?' => (int)$sampleObject->getStoreId(), ]; if ($sampleObject->getUseDefaultTitle()) { $connection->delete($sampleTitleTable, $where); } else { $connection->update($sampleTitleTable, ['title' => $sampleObject->getTitle()], $where); } } else { if (!$sampleObject->getUseDefaultTitle()) { $connection->insert( $sampleTitleTable, [ 'sample_id' => $sampleObject->getId(), 'store_id' => (int)$sampleObject->getStoreId(), 'title' => $sampleObject->getTitle() ] ); } } return $this; } /** * Delete data by item(s) * * @param \Magento\Downloadable\Model\Sample|array|int $items * @return $this */ public function deleteItems($items) { $connection = $this->getConnection(); if ($items instanceof \Magento\Downloadable\Model\Sample) { $where = ['sample_id = ?' => $items->getId()]; } else { $where = ['sample_id in (?)' => $items]; } $connection->delete($this->getMainTable(), $where); $connection->delete($this->getTable('downloadable_sample_title'), $where); return $this; } /** * Retrieve links searchable data * * @param int $productId * @param int $storeId * @return array */ public function getSearchableData($productId, $storeId) { $connection = $this->getConnection(); $ifNullDefaultTitle = $connection->getIfNullSql('st.title', 'd.title'); $select = $connection->select()->from( ['m' => $this->getMainTable()], null )->join( ['d' => $this->getTable('downloadable_sample_title')], 'd.sample_id=m.sample_id AND d.store_id=0', [] )->join( ['cpe' => $this->getTable('catalog_product_entity')], sprintf( 'cpe.%s = m.product_id', $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField() ), [] )->joinLeft( ['st' => $this->getTable('downloadable_sample_title')], 'st.sample_id=m.sample_id AND st.store_id=:store_id', ['title' => $ifNullDefaultTitle] )->where( 'cpe.entity_id=:product_id', $productId ); $bind = [':store_id' => (int)$storeId, ':product_id' => $productId]; return $connection->fetchCol($select, $bind); } }