Files
esun3d/app/code/Mageplaza/Blog/Model/ResourceModel/Comment/Grid/Collection.php
T
2026-09-15 10:35:56 +08:00

151 lines
4.0 KiB
PHP
Executable File

<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Blog
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Blog\Model\ResourceModel\Comment\Grid;
use Magento\Framework\Data\Collection\Db\FetchStrategyInterface as FetchStrategy;
use Magento\Framework\Data\Collection\EntityFactoryInterface as EntityFactory;
use Magento\Framework\Event\ManagerInterface as EventManager;
use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult;
use Mageplaza\Blog\Model\ResourceModel\Comment;
use Psr\Log\LoggerInterface as Logger;
use Zend_Db_Expr;
/**
* Class Collection
* @package Mageplaza\Blog\Model\ResourceModel\Comment\Grid
*/
class Collection extends SearchResult
{
/**
* Collection constructor.
*
* @param EntityFactory $entityFactory
* @param Logger $logger
* @param FetchStrategy $fetchStrategy
* @param EventManager $eventManager
* @param string $mainTable
* @param string $resourceModel
*
* @throws LocalizedException
*/
// phpcs:disable Generic.CodeAnalysis.UselessOverridingMethod
public function __construct(
EntityFactory $entityFactory,
Logger $logger,
FetchStrategy $fetchStrategy,
EventManager $eventManager,
$mainTable = 'mageplaza_blog_comment',
$resourceModel = Comment::class
) {
parent::__construct($entityFactory, $logger, $fetchStrategy, $eventManager, $mainTable, $resourceModel);
}
/**
* @return $this
*/
protected function _initSelect()
{
parent::_initSelect();
$this->addPostName();
$this->addCustomerName();
$this->addExpressionFieldToSelect(
'mp_created_at',
'main_table.created_at',
['mp_created_at' => 'created_at']
);
return $this;
}
/**
* @param string $field
* @param string $direction
*
* @return SearchResult
*/
public function setOrder($field, $direction = self::SORT_ORDER_DESC)
{
switch ($field) {
case 'customer_name':
return parent::setOrder('user_name', $direction);
case 'mp_created_at':
return parent::setOrder('main_table.created_at', $direction);
}
return parent::setOrder($field, $direction);
}
/**
* @param array|string $field
* @param null $condition
*
* @return SearchResult
*/
public function addFieldToFilter($field, $condition = null)
{
if ($field === 'customer_name') {
return parent::addFieldToFilter('user_name', $condition);
}
if ($field === 'post_name') {
$field = 'mp.name';
} elseif ($field === 'mp_created_at') {
$field = 'main_table.created_at';
}
return parent::addFieldToFilter($field, $condition);
}
/**
* @return $this
*/
public function addPostName()
{
$this->getSelect()->joinLeft(
['mp' => $this->getTable('mageplaza_blog_post')],
'main_table.post_id = mp.post_id',
['post_name' => 'name']
);
return $this;
}
/**
* @return $this
*/
public function addCustomerName()
{
$this->getSelect()->joinLeft(
['ce' => $this->getTable('customer_entity')],
'main_table.entity_id = ce.entity_id',
['firstname', 'lastname']
)->columns([
'customer_name' => new Zend_Db_Expr("CONCAT(`ce`.`firstname`,' ',`ce`.`lastname`)")
]);
return $this;
}
}