![]() 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/extmag/shiplab/Controller/Adminhtml/Printer/ |
<?php /** * Copyright © Extmag. All rights reserved. */ namespace Extmag\Shiplab\Controller\Adminhtml\Printer; use Exception; use Extmag\Shiplab\Controller\Adminhtml\Printer; use Extmag\Shiplab\Model\Label; use Extmag\Shiplab\Model\ResourceModel\Label\Collection; use Magento\Backend\Model\View\Result\Redirect; use Magento\Framework\Exception\FileSystemException; use WebSocket\Client; class MassPrint extends Printer { /** * Authorization level of a basic admin session * * @see _isAllowed() */ public const ADMIN_RESOURCE = 'Extmag_Shiplab::shiplab_labels_index'; /** * @return Redirect * @throws FileSystemException */ public function execute() { $documentType = $this->getRequest()->getParam('document_type'); $namespace = $this->getRequest()->getParam('namespace'); $ids = $this->getRequest()->getParam('selected'); $trackingNumber = $this->getRequest()->getParam('tracking_number'); $port = $this->manager->isAllowedLocalPrint(); $resultRaw = $this->resultRawFactory->create(); $labelsData = ['labels' => [], 'port' => $port]; /** * @var Collection $collection */ if ($documentType == 'label') { $collection = $this->collectionFactory->create(); $collection->addFieldToFilter('status', 1); if ($namespace == 'labels') { $collection->addFieldToFilter('entity_id', ['in' => $ids]); } else { if ($namespace == 'orders') { $collection->addFieldToFilter('order_id', ['in' => $ids]); } else { if ($namespace == 'shipments') { $collection->addFieldToFilter('order_sub_type', 'shipment') ->addFieldToFilter('order_sub_id', ['in' => $ids]); } else { if ($namespace == 'refunds') { $collection->addFieldToFilter('order_sub_type', 'refund') ->addFieldToFilter('order_sub_id', ['in' => $ids]); } } } } if (!empty($trackingNumber)) { $collection->addFieldToFilter('tracking_number', ['finset' => $trackingNumber]); } try { /** * @var Label $model */ foreach ($collection as $model) { if ($model->getExtension() != 'virtual' && $model->getExtension() != 'link' && ( $namespace == 'labels' || $model->getIsPrinted() == 0 || $this->manager->getConfig( $model->getCarrierCode() . "_printing/general/mass", $model->getStoreId(), $model->getTypeDirection() ) == "all" ) ) { if ($this->manager->isThermalLabel($model->getExtension()) !== true) { $pdfData = $this->pdf->getPdfPages($model, $documentType, null, $trackingNumber); if (!empty($pdfData)) { $labelsData['labels'][] = [ 'data' => base64_encode($pdfData->Output('', 'S')), 'category' => $model->getCarrierCode(), 'ext' => 'pdf', ]; } } else { if ($this->manager->isThermalLabel($model->getExtension()) === true) { $trackingNumbers = $model->getTrackingNumbers(); foreach ($trackingNumbers as $track) { if (empty($trackingNumber) || $trackingNumber == $track) { $thermalData = $this->thermal->getLabelData( $model->getCarrierCode(), $track, $model->getExtension() ); if (!empty($thermalData)) { $labelsData['labels'][] = [ 'data' => $thermalData, 'category' => $model->getCarrierCode(), 'ext' => $model->getExtension(), ]; } } } } } $model->setIsPrinted(1); $this->labelRepository->save($model); } } } catch (Exception $e) { $this->messageManager->addErrorMessage($e->getMessage()); } } else { $collection = $this->collectionFactory->create()->addFieldToFilter( 'entity_id', ['in' => $ids] )->addFieldToFilter('status', 1); if ($collection->count() > 0) { $ext = 'pdf'; if ($documentType == 'hvr') { $ext = 'html'; } /** * @var Label $model */ foreach ($collection as $model) { $fileData = $this->thermal->getFileData( $model->getCarrierCode(), $model->getMasterId(), $ext, $documentType ); if (empty($fileData)) { if ($documentType == 'hvr') { $ext = $model->getExtension(); $fileData = $this->thermal->getFileData( $model->getCarrierCode(), $model->getMasterId(), $ext, $documentType ); } } if (!empty($fileData)) { $labelsData['labels'][] = [ 'data' => base64_encode($fileData), 'category' => $model->getCarrierCode(), 'ext' => $ext, ]; } } } } if ($this->manager->getStoreConfig('extmag_printers/local/type') == 'network') { try { $labelsData['network'] = "1"; $address = $this->manager->getStoreConfig('extmag_printers/local/network_host'); $port = $this->manager->getStoreConfig('extmag_printers/local/network_port'); $client = new Client("ws://" . $address . ":" . $port . "/ws"); /* Send instructions. */ foreach ($labelsData['labels'] as $labelsDatum) { $msg = json_encode($labelsDatum); $client->send($msg); } $lastMessage = '{"queue_end": "1"}'; $client->send($lastMessage); $bufStack = $client->receive(); $labelsData['response'] = $bufStack; $client->close(); } catch (Exception $e) { $labelsData['error'] = $e->getMessage(); } $labelsData['labels'] = "" . count($labelsData['labels']); unset($labelsData['port']); } $labelsData['application'] = $this->manager->getStoreConfig('extmag_printers/local/application'); $labelsData['qz_printer_name'] = $this->manager->getStoreConfig('extmag_printers/local/qz_printer_name'); $resultRaw->setContents(json_encode($labelsData)); return $resultRaw; } }