![]() 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-sales/Block/Adminhtml/Order/View/Tab/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Sales\Block\Adminhtml\Order\View\Tab; /** * Order history tab * * @api * @since 100.0.2 */ class History extends \Magento\Backend\Block\Template implements \Magento\Backend\Block\Widget\Tab\TabInterface { /** * Template * * @var string */ protected $_template = 'Magento_Sales::order/view/tab/history.phtml'; /** * Core registry * * @var \Magento\Framework\Registry */ protected $_coreRegistry = null; /** * @var \Magento\Sales\Helper\Admin */ private $adminHelper; /** * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Framework\Registry $registry * @param \Magento\Sales\Helper\Admin $adminHelper * @param array $data */ public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Framework\Registry $registry, \Magento\Sales\Helper\Admin $adminHelper, array $data = [] ) { $this->_coreRegistry = $registry; parent::__construct($context, $data); $this->adminHelper = $adminHelper; } /** * Retrieve order model instance * * @return \Magento\Sales\Model\Order */ public function getOrder() { return $this->_coreRegistry->registry('current_order'); } /** * Compose and get order full history. * * Consists of the status history comments as well as of invoices, shipments and creditmemos creations * * @TODO This method requires refactoring. Need to create separate model for comment history handling * and avoid generating it dynamically * * @return array */ public function getFullHistory() { $order = $this->getOrder(); $history = []; foreach ($order->getAllStatusHistory() as $orderComment) { $history[] = $this->_prepareHistoryItem( $orderComment->getStatusLabel(), $orderComment->getIsCustomerNotified(), $this->getOrderAdminDate($orderComment->getCreatedAt()), $orderComment->getComment() ); } foreach ($order->getCreditmemosCollection() as $_memo) { $history[] = $this->_prepareHistoryItem( __('Credit memo #%1 created', $_memo->getIncrementId()), $_memo->getEmailSent(), $this->getOrderAdminDate($_memo->getCreatedAt()) ); foreach ($_memo->getCommentsCollection() as $_comment) { $history[] = $this->_prepareHistoryItem( __('Credit memo #%1 comment added', $_memo->getIncrementId()), $_comment->getIsCustomerNotified(), $this->getOrderAdminDate($_comment->getCreatedAt()), $_comment->getComment() ); } } foreach ($order->getShipmentsCollection() as $_shipment) { $history[] = $this->_prepareHistoryItem( __('Shipment #%1 created', $_shipment->getIncrementId()), $_shipment->getEmailSent(), $this->getOrderAdminDate($_shipment->getCreatedAt()) ); foreach ($_shipment->getCommentsCollection() as $_comment) { $history[] = $this->_prepareHistoryItem( __('Shipment #%1 comment added', $_shipment->getIncrementId()), $_comment->getIsCustomerNotified(), $this->getOrderAdminDate($_comment->getCreatedAt()), $_comment->getComment() ); } } foreach ($order->getInvoiceCollection() as $_invoice) { $history[] = $this->_prepareHistoryItem( __('Invoice #%1 created', $_invoice->getIncrementId()), $_invoice->getEmailSent(), $this->getOrderAdminDate($_invoice->getCreatedAt()) ); foreach ($_invoice->getCommentsCollection() as $_comment) { $history[] = $this->_prepareHistoryItem( __('Invoice #%1 comment added', $_invoice->getIncrementId()), $_comment->getIsCustomerNotified(), $this->getOrderAdminDate($_comment->getCreatedAt()), $_comment->getComment() ); } } foreach ($order->getTracksCollection() as $_track) { $history[] = $this->_prepareHistoryItem( __('Tracking number %1 for %2 assigned', $_track->getNumber(), $_track->getTitle()), false, $this->getOrderAdminDate($_track->getCreatedAt()) ); } usort($history, [__CLASS__, 'sortHistoryByTimestamp']); return $history; } /** * Status history date/datetime getter * * @param array $item * @param string $dateType * @param int $format * @return string */ public function getItemCreatedAt(array $item, $dateType = 'date', $format = \IntlDateFormatter::MEDIUM) { if (!isset($item['created_at'])) { return ''; } if ('date' === $dateType) { return $this->formatDate($item['created_at'], $format); } return $this->formatTime($item['created_at'], $format); } /** * Status history item title getter * * @param array $item * @return string */ public function getItemTitle(array $item) { return isset($item['title']) ? $this->escapeHtml($item['title']) : ''; } /** * Check whether status history comment is with customer notification * * @param array $item * @param bool $isSimpleCheck * @return bool */ public function isItemNotified(array $item, $isSimpleCheck = true) { if ($isSimpleCheck) { return !empty($item['notified']); } return isset($item['notified']) && false !== $item['notified']; } /** * Status history item comment getter * * @param array $item * @return string */ public function getItemComment(array $item) { $allowedTags = ['b', 'br', 'strong', 'i', 'u', 'a']; return isset($item['comment']) ? $this->adminHelper->escapeHtmlWithLinks($item['comment'], $allowedTags) : ''; } /** * Map history items as array * * @param string $label * @param bool $notified * @param \DateTimeInterface $created * @param string $comment * @return array */ protected function _prepareHistoryItem($label, $notified, $created, $comment = '') { return ['title' => $label, 'notified' => $notified, 'comment' => $comment, 'created_at' => $created]; } /** * @inheritdoc */ public function getTabLabel() { return __('Comments History'); } /** * @inheritdoc */ public function getTabTitle() { return __('Order History'); } /** * Get Tab Class * * @return string */ public function getTabClass() { return 'ajax only'; } /** * Get Class * * @return string */ public function getClass() { return $this->getTabClass(); } /** * Get Tab Url * * @return string */ public function getTabUrl() { return $this->getUrl('sales/*/commentsHistory', ['_current' => true]); } /** * @inheritdoc */ public function canShowTab() { return true; } /** * @inheritdoc */ public function isHidden() { return false; } /** * Customer Notification Applicable check method * * @param array $historyItem * @return bool */ public function isCustomerNotificationNotApplicable($historyItem) { return $historyItem['notified'] == \Magento\Sales\Model\Order\Status\History::CUSTOMER_NOTIFICATION_NOT_APPLICABLE; } /** * Comparison For Sorting History By Timestamp * * @param mixed $a * @param mixed $b * @return int */ public static function sortHistoryByTimestamp($a, $b) { $createdAtA = $a['created_at']; $createdAtB = $b['created_at']; return $createdAtA->getTimestamp() <=> $createdAtB->getTimestamp(); } /** * Get order admin date * * @param int $createdAt * @return \DateTime */ public function getOrderAdminDate($createdAt) { return $this->_localeDate->date(new \DateTime($createdAt)); } }