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/Block/Adminhtml/Label/View/Tab/Label/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/extmag/shiplab/Block/Adminhtml/Label/View/Tab/Label/Data.php
<?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;
    }
}

Spamworldpro Mini