Files
esun3d/app/code/Mageplaza/Blog/Controller/Adminhtml/Topic/MassStatus.php
T
2026-09-15 10:35:56 +08:00

109 lines
3.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\Controller\Adminhtml\Topic;
use Exception;
use Magento\Backend\App\Action;
use Magento\Backend\App\Action\Context;
use Magento\Backend\Model\View\Result\Redirect;
use Magento\Framework\App\ResponseInterface;
use Magento\Framework\Controller\ResultFactory;
use Magento\Framework\Controller\ResultInterface;
use Magento\Framework\Exception\LocalizedException;
use Magento\Ui\Component\MassAction\Filter;
use Mageplaza\Blog\Model\ResourceModel\Topic\CollectionFactory;
/**
* Class MassStatus
* @package Mageplaza\Blog\Controller\Adminhtml\Topic
*/
class MassStatus extends Action
{
/**
* Mass Action Filter
*
* @var Filter
*/
public $filter;
/**
* Collection Factory
*
* @var \Mageplaza\Blog\Model\ResourceModel\Post\CollectionFactory
*/
public $collectionFactory;
/**
* MassStatus constructor.
*
* @param Context $context
* @param Filter $filter
* @param CollectionFactory $collectionFactory
*/
public function __construct(
Context $context,
Filter $filter,
CollectionFactory $collectionFactory
) {
$this->filter = $filter;
$this->collectionFactory = $collectionFactory;
parent::__construct($context);
}
/**
* @return $this|ResponseInterface|ResultInterface
* @throws LocalizedException
*/
public function execute()
{
$collection = $this->filter->getCollection($this->collectionFactory->create());
$status = (int)$this->getRequest()->getParam('status');
$topicUpdated = 0;
foreach ($collection as $topic) {
try {
$topic->setEnabled($status)
->save();
$topicUpdated++;
} catch (LocalizedException $e) {
$this->messageManager->addErrorMessage($e->getMessage());
} catch (Exception $e) {
$this->_getSession()->addException(
$e,
__('Something went wrong while updating status for %1.', $topic->getName())
);
}
}
if ($topicUpdated) {
$this->messageManager->addSuccessMessage(__('A total of %1 record(s) have been updated.', $topicUpdated));
}
/** @var Redirect $resultRedirect */
$resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
return $resultRedirect->setPath('*/*/');
}
}