![]() 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/old/vendor/magento/module-sales/Controller/Adminhtml/Order/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Sales\Controller\Adminhtml\Order; use Magento\Framework\App\Action\HttpPostActionInterface; use Magento\Sales\Model\Order\Email\Sender\OrderCommentSender; /** * Class AddComment * * Controller responsible for addition of the order comment to the order */ class AddComment extends \Magento\Sales\Controller\Adminhtml\Order implements HttpPostActionInterface { /** * Authorization level of a basic admin session * * @see _isAllowed() */ public const ADMIN_RESOURCE = 'Magento_Sales::comment'; /** * ACL resource needed to send comment email notification */ public const ADMIN_SALES_EMAIL_RESOURCE = 'Magento_Sales::emails'; /** * Add order comment action * * @return \Magento\Framework\Controller\ResultInterface */ public function execute() { $order = $this->_initOrder(); if ($order) { try { $data = $this->getRequest()->getPost('history'); if (empty($data['comment']) && $data['status'] == $order->getDataByKey('status')) { throw new \Magento\Framework\Exception\LocalizedException( __('The comment is missing. Enter and try again.') ); } $order->setStatus($data['status']); $notify = $data['is_customer_notified'] ?? false; $visible = $data['is_visible_on_front'] ?? false; if ($notify && !$this->_authorization->isAllowed(self::ADMIN_SALES_EMAIL_RESOURCE)) { $notify = false; } $comment = trim(strip_tags($data['comment'])); $history = $order->addStatusHistoryComment($comment, $data['status']); $history->setIsVisibleOnFront($visible); $history->setIsCustomerNotified($notify); $history->save(); $order->save(); /** @var OrderCommentSender $orderCommentSender */ $orderCommentSender = $this->_objectManager ->create(\Magento\Sales\Model\Order\Email\Sender\OrderCommentSender::class); $orderCommentSender->send($order, $notify, $comment); return $this->resultPageFactory->create(); } catch (\Magento\Framework\Exception\LocalizedException $e) { $response = ['error' => true, 'message' => $e->getMessage()]; } catch (\Exception $e) { $response = ['error' => true, 'message' => __('We cannot add order history.')]; } if (is_array($response)) { $resultJson = $this->resultJsonFactory->create(); $resultJson->setData($response); return $resultJson; } } return $this->resultRedirectFactory->create()->setPath('sales/*/'); } }