![]() 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/Block/Adminhtml/Label/View/Tab/Label/ |
<?php /** * Copyright © Extmag. All rights reserved. */ namespace Extmag\Shiplab\Block\Adminhtml\Label\View\Tab\Label; use Exception; use Extmag\Shiplab\Helper\Manager; use Extmag\Shiplab\Helper\Url; use Extmag\Shiplab\Model\Label; use Extmag\Shiplab\Model\LabelRepository; use Extmag\Shiplab\Model\ResourceModel\Label\Collection; use Extmag\Shiplab\Model\ResourceModel\Label\CollectionFactory; use Extmag\Shiplab\Model\Source\Boxes; use Imagick; use Magento\Backend\Block\Template; use Magento\Backend\Block\Widget\Button as SplitButton; use Magento\Config\Model\Config\Source\Yesno; use Magento\Directory\Model\Country; use Magento\Directory\Model\CountryFactory; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Filesystem\Driver\File as Driver; use Magento\Framework\Message\ManagerInterface as MessageManagerInterface; class Data extends Template { /** * @var Url */ public $url; /** * @var int */ public $listNumber = 0; /** * @var Boxes */ public $boxes; /** * @var Yesno */ public $yesNo; /** * @var Country */ public $country; /** * @var LabelRepository */ protected $labelRepository; /** * @var Label[] */ protected $label = []; /** * @var Manager */ public $manager; /** * @var SplitButton */ protected $splitButton; /** * @var CountryFactory */ protected $countryFactory; /** * @var DriverInterface */ protected $driver; /** * @var MessageManagerInterface */ protected $messageManager; /** * @var CollectionFactory */ protected $labelCollectionFactory; /** * @param Template\Context $context * @param LabelRepository $labelRepository * @param Boxes $boxes * @param Url $url * @param CollectionFactory $labelCollectionFactory * @param Yesno $yesNo * @param Country $country * @param Manager $manager * @param SplitButton $splitButton * @param CountryFactory $countryFactory * @param Driver $driver * @param MessageManagerInterface $messageManager * @param array $data */ public function __construct( Template\Context $context, LabelRepository $labelRepository, Boxes $boxes, Url $url, CollectionFactory $labelCollectionFactory, Yesno $yesNo, Country $country, Manager $manager, SplitButton $splitButton, CountryFactory $countryFactory, Driver $driver, MessageManagerInterface $messageManager, array $data = [] ) { parent::__construct($context, $data); $this->labelRepository = $labelRepository; $this->url = $url; $this->boxes = $boxes; $this->yesNo = $yesNo; $this->country = $country; $this->manager = $manager; $this->splitButton = $splitButton; $this->countryFactory = $countryFactory; $this->driver = $driver; $this->messageManager = $messageManager; $this->labelCollectionFactory = $labelCollectionFactory; } /** * @param $listNumber * @return array|mixed * @throws LocalizedException */ public function getRequestData($listNumber = 0) { if (empty($this->label)) { $this->getLabel(); } if (count($this->label) > 0) { $request = $this->label[$listNumber]->getRequest(); } if (!empty($request)) { return json_decode($request, true); } return []; } /** * @param $listNumber * @return array|mixed * @throws LocalizedException */ public function getTrackingData($listNumber = 0) { if (empty($this->label)) { $this->getLabel(); } if (count($this->label) > 0) { $trackingResponse = $this->label[$listNumber]->getTrackResponse(); } if (!empty($trackingResponse)) { return json_decode($trackingResponse, true); } return []; } /** * @param $code * @return mixed */ public function getCountryName($code) { return $this->countryFactory->create()->loadByCode($code)->getName(); } /** * @param null $nameInLayout * * @return array|Label[] * @throws LocalizedException */ public function getLabel($nameInLayout = null) { if (empty($this->label)) { $entityIds = explode(",", $this->getRequest()->getParam('entity_id', "")); if (!empty($entityIds)) { $directionTypes = [ 'label_edit_tab_label_listing' => 'shipment', 'label_edit_tab_label_refund_listing' => 'refund', 'label_edit_tab_label_inverse_listing' => 'inverse', ]; $labelNoMerged = []; foreach ($entityIds as $entityId) { if (empty($nameInLayout)) { $this->label[] = $this->labelRepository->getById($entityId); } else { /** * @var $colllection Collection */ $collection = $this->labelCollectionFactory->create(); $collection->addFieldToFilter("entity_id", $entityId) ->addFieldToFilter("type_direction", $directionTypes[$nameInLayout]); $labelNoMerged[] = $collection->getItems(); } } if (!empty($labelNoMerged)) { $this->label = call_user_func_array('array_merge', $labelNoMerged); } } } return $this->label; } /** * @param $alias * @param $listNumber * @return string */ public function getPartialHtml($alias, $listNumber) { $this->listNumber = $listNumber; return $this->setTemplate($alias)->toHtml(); } /** * @param $label * @param $tracking * @return string */ public function getSplitButton($label, $tracking) { if ($label->getExtension() != 'virtual') { $subButtons = $this->_getSubButtons($label, $tracking); return $this->splitButton ->setData($subButtons) ->setNameInLayout('extmag_shiplab_print_buttons') ->toHtml(); } return ''; } /** * @param $label * @param $tracking * @return array */ protected function _getSubButtons($label, $tracking) { if ($label->getExtension() == 'link') { $button = [ 'id' => 'extmag_shiplab_print_link', 'class_name' => SplitButton::class, 'label' => __('Go to ups.com'), 'onclick' => sprintf("setLocation('%s');", $label->getLink()), 'has_split' => false, 'class' => 'primary print_link', ]; } else { $button = [ 'id' => 'extmag_shiplab_print_local', 'label' => __('Print'), 'onclick' => null, 'has_split' => false, 'class' => 'primary print_local', 'data_attribute' => [ 'link' => $this->getUrl( 'extmag_shiplab/printer/massPrint', [ 'document_type' => 'label', 'namespace' => 'labels', '_query' => ['selected' => [$label->getId()]], 'tracking_number' => $tracking, ] ), ], ]; } return $button; } /** * @param $carrierCode * @param $ext * @param $trackingNumber * @return false|string */ public function pdfToImage($carrierCode, $ext, $trackingNumber) { try { if (!extension_loaded('imagick')) { return false; } if ($ext == "pdf") { if ($this->getMediaDirectory()->isFile( 'extmag/' . $carrierCode . '/label/pdf/' . $trackingNumber . '.pdf' ) ) { //if (!$this->getMediaDirectory()->isFile( //'extmag/' . $carrierCode . '/label/png/' . $trackingNumber . '.png')) { $imagick = new Imagick(); $imagick->setResolution(110, 110); $imagick->readImage( $this->getMediaDirectory()->getAbsolutePath( 'extmag/' . $carrierCode . '/label/pdf/' . $trackingNumber . '.pdf' ) . '[0]' ); $imagick->trimImage(0); $imagick->setImagePage(0, 0, 0, 0); $imagick->setBackgroundColor('#ffffff'); $imagick = $imagick->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN); $imagick->extentImage($imagick->getImageWidth() + 20, $imagick->getImageHeight() + 20, -10, -10); $imagick->setOption('png:compression-level', 9); $imagick->setImageFormat('png'); $this->driver->filePutContents( $this->getMediaDirectory()->getAbsolutePath( 'extmag/' . $carrierCode . '/label/png/' . $trackingNumber . '.png' ), $imagick ); // } return 'extmag/' . $carrierCode . '/label/png/' . $trackingNumber . '.png'; } } } catch (Exception $e) { /*$this->messageManager->addErrorMessage($e->getMessage());*/ return false; } return false; } }