Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

eval(str_rot13(strrev(gzuncompress(base64_decode(gzinflate(base64_decode("DZY1lsVAEAMP5MBM..

Decoded Output download

b'

class BalikobotPackage
{
    /** @var int Order ID in PrestaShop. */
    public $id_order;

    /** @var string Package ID in Balikobot API. */
    public $package_id;

    /** @var int Carrier ID in PrestaShop. */
    public $carrier_id;

    /** @var BalikobotCarrier Corresponding carrier in Balikobot. */
    public $carrier;

    /** @var string Package Type for selected carrier. */
    public $carrier_package_type;

    /** @var int Supplier ID in PrestaShop. */
    public $supplier;

    /** @var string Link to PDF file with package\'s label. */
    public $label_url;

    /** @var bool True if package was ordered at the carrier. */
    public $sent;

    /** @var int Number of package in multi-package order. For single-package order this is equal to 1. */
    public $order_number;

    /** @var int Total count of packages in multi-package order. */
    public $order_count;

    /** @var int 0 = no VAT, 1 = with VAT, 2 = custom price */
    public $price_type;

    /** @var float Custom price for the package. */
    public $custom_price;

	/** @var int ID of the responsible employee. */
	public $id_employee;

	protected $tableName;

    public function __construct($id_order = null, $order_number = 1)
    {
        $this->tableName = _DB_PREFIX_ . \'monster_balikobot_packages\';
        $this->id_order = $id_order;
        $result = Db::getInstance()->getRow(\'SELECT * FROM \' . $this->tableName . \' WHERE order_number = \' . $order_number . \' AND id_order=\' . $id_order);

        if (is_array($result))
        {
            $this->package_id = $result[\'package_id\'];
            $this->carrier_id = $result[\'carrier_id\'];
            $this->carrier = new BalikobotCarrier($result[\'carrier\']);
            $this->carrier_package_type = $result[\'carrier_package_type\'];
            $this->label_text = $result[\'label_text\'];
            $this->supplier = $result[\'supplier\'];
            $this->label_url = $result[\'label_url\'];
            $this->sent = $result[\'sent\'];
            $this->order_number = $result[\'order_number\'];
            $this->order_count = $result[\'order_count\'];
            $this->price_type = $result[\'price_type\'];
            $this->custom_price = $result[\'custom_price\'];
			$this->id_employee = $result[\'id_employee\'];
        }
        else
        {
            $this->initValues();
        }
    }

    /**
     * Set empty values to class attributes.
     */
    protected function initValues()
    {
		global $cookie;

        $this->package_id = \'\';
        $this->carrier_id = \'\';
        $this->carrier = null;
        $this->carrier_package_type = null;
        $this->label_text = \'\';
        $this->supplier = self::getPackageSupplier($this->id_order);
        $this->label_url = \'\';
        $this->sent = false;
        $this->order_number = 1;
        $this->order_count = 1;
        $this->price_type = 1;
        $this->custom_price = null;
		$this->id_employee = $cookie->id_employee?$cookie->id_employee:\'null\';
    }

    /**
     * Returns URL to package\'s label, optionally with selected position.
     * If package is not in API, this method adds it there.
     *
     * @param int $position
     * @return string
     * @throws BalikobotAPIException
     */
    public function getLabelUrl($position = null, $orderCount = 1, $orderToPrint = \'all\')
    {
        if (!$this->label_url)
        {
            $this->registerPackage($orderCount);
        }

        if ($this->order_count == 1 || $orderToPrint != \'all\') { // print only one label
            $suffix = \'\';
            if ($position != null && $position != \'\') {
                $suffix = \'?p=\' . $position;
            }

            if ($this->order_count == 1 || $orderToPrint == 1) {
                return $this->label_url . $suffix;
            }
            else {
                $packageToPrint = new BalikobotPackage($this->id_order, $orderToPrint);
                return $packageToPrint->label_url . $suffix;
            }
        }
        else // print multiple labels
        {
            $packagesId = [];
            for ($i = 1; $i <= $this->order_count; $i++)
            {
                $package = new BalikobotPackage($this->id_order, $i);
                $packagesId[] = $package->package_id;
            }
            $response = BalikobotAPI::labels($packagesId, $this->getCarrier()->code);
            if (isset($response[\'labels_url\']))
            {
                 return $response[\'labels_url\'];
            }
            else
            {
                throw new BalikobotAPIException($packagesId);
                return \'\';
            }
        }
    }

    /**
     * Returns package\'s ID in Balikobot API.
     * If package is not in API, this method adds it there.
     *
     * @return string
     * @throws BalikobotAPIException
     */
    public function getPackageId()
    {
        if (!$this->package_id)
        {
            $this->registerPackage();
        }
        return $this->package_id;
    }

    /**
     * Saves package into database.
     */
    public function save()
    {
		global $cookie;

        if($this->carrier->code == \'toptrans\' && is_null($this->carrier_package_type)){
            $this->carrier_package_type = Configuration::get(\'MONSTER_BALIKOBOT_CARRIER_CUSTOM_TOPTRANS\');
        }

		if($this->carrier->code == \'gwcz\' && is_null($this->carrier_package_type)){
			$this->carrier_package_type = Configuration::get(\'MONSTER_BALIKOBOT_CARRIER_CUSTOM_GWCZ\');
		}

        $insertQuery = "INSERT INTO " . _DB_PREFIX_ . "monster_balikobot_packages (id_order, package_id, carrier_id, carrier, carrier_package_type, label_text, supplier, label_url, sent, order_number, order_count, price_type, custom_price, id_employee) VALUES (" .
            $this->id_order . ", \'" . $this->package_id .
            "\', \'" . $this->carrier_id . "\', " . $this->carrier->id_carrier . ", \'" . $this->carrier_package_type . "\', \'" . $this->label_text . "\', " . $this->supplier . ", \'" .
            $this->label_url . "\', " . ($this->sent ? \'1\' : \'0\') . ", " . $this->order_number . ", " . $this->order_count . ", " . $this->price_type . ", " . $this->custom_price . ", " . $this->id_employee . ")";

        $queryPassed = Db::getInstance()->execute($insertQuery);

		if (!$queryPassed && Configuration::get(\'MONSTER_BALIKOBOT_DEBUG\')) {

            "INSERT INTO " . _DB_PREFIX_ . "monster_balikobot_packages (id_order, package_id, carrier_id, carrier, carrier_package_type, label_text, supplier, label_url, sent, order_number, order_count, price_type, custom_price, id_employee) VALUES (" .
            $this->id_order . ", \'" . $this->package_id .
            "\', \'" . $this->carrier_id . "\', " . $this->carrier->id_carrier . ", \'" . $this->carrier_package_type . "\', \'" . $this->label_text . "\', " . $this->supplier . ", \'" .
            $this->label_url . "\', " . ($this->sent ? \'1\' : \'0\') . ", " . $this->order_number . ", " . $this->order_count . ", " . $this->price_type . ", " . $this->custom_price . ", " . $this->id_employee . ")";

            $logger = new FileLogger(0);
            if(_PS_VERSION_ > 1.6){
                $logger->setFilename(_PS_ROOT_DIR_ . "/var/logs/mm_balikobot_query.log");
            }else{
                $logger->setFilename(_PS_ROOT_DIR_ . "/log/mm_balikobot_query.log");
            }
            $logger->logDebug("FAILED QUERY: $insertQuery");
            $logger->logDebug("------------------------------");

        }

        if ($this->order_number == 1) {
            $order = new Order($this->id_order);
            $order->shipping_number = $this->carrier_id;
            $order->update();

            $order_carrier = new OrderCarrier($order->getIdOrderCarrier());
            $order_carrier->tracking_number = $this->carrier_id;

            if ($order_carrier->update() && Configuration::get(\'MONSTER_BALIKOBOT_TRACKING_MAIL\')) {

                $customer = new Customer((int)$order->id_customer);
                $carrier = new Carrier((int)$order->id_carrier, $order->id_lang);

                $templateVars = array(
                    \'{followup}\' => str_replace(\'@\', $order->shipping_number, $carrier->url),
                    \'{firstname}\' => $customer->firstname,
                    \'{lastname}\' => $customer->lastname,
                    \'{id_order}\' => $order->id,
                    \'{shipping_number}\' => $order->shipping_number,
                    \'{order_name}\' => $order->getUniqReference()
                );
                if (@Mail::Send((int)$order->id_lang, \'in_transit\', Mail::l(\'Package in transit\', (int)$order->id_lang), $templateVars,
                    $customer->email, $customer->firstname.\' \'.$customer->lastname, null, null, null, null,
                    _PS_MAIL_DIR_, true, (int)$order->id_shop)) {
                } else {
                    $this->warnings[] = \'An error occurred while sending an email to the customer.\';
                }
            }

			$setState = Configuration::get(\'MONSTER_BALIKOBOT_NEW_STATE_1\');
			if($setState && $setState > 0) {
				if($order->current_state != $setState){
					$history = new OrderHistory();
					$carrier = new Carrier($order->id_carrier, $order->id_lang);

					$templateVars = array();
					if ($history->id_order_state == Configuration::get(\'PS_OS_SHIPPING\') && $order->shipping_number) {
						$templateVars = array(\'{followup}\' => str_replace(\'@\', $order->shipping_number, $carrier->url));
					}

					$history->id_employee = (int)$cookie->id_employee;;
					$history->id_order = (int)$this->id_order;
					$history->changeIdO'b'rderState((int)$setState, $order);
					$history->addWithEmail(true, $templateVars);
				}
			}
        }
    }

    /**
     * Add package to Balikobot API and to the database.
     * Throws exception if an error occurs during adding package to Balikobot API.
     *
     * @param int $orderCount Total number of packages in order.
     * @throws BalikobotAPIException
     */
    public function registerPackage($orderCount = 1)
    {
		$this->order_count = $orderCount;

		if ($this->getCarrier()->code == \'toptrans\') {
			//toptrans posl balky v jednom callu
			$this->pieces_count = $orderCount;
			$this->order_count = 1;
		}

		for ($i = 1; $i <= $this->order_count; $i++) {
            $this->order_number = $i;

            $response = $this->addPackageToAPI();
            $packagesData = $response[\'packages\'];
            if($packagesData){
                foreach($packagesData as $packageData){
                    if (!isset($packageData[\'status\']) || !in_array($packageData[\'status\'], [200, 208])) {
                        $messages = [\'\'];
                        $messages[] = \'Chyba pi pidvn balku do Balkobotu (ID objednvky: \' . $this->id_order . \'):\';

                        if($packageData[\'errors\']) {
                            foreach($packageData[\'errors\'] as $error){
                                $messages[] = $error[\'attribute\']." - ".$error[\'message\'];
                            }
                        } else {
                            $messages[] = "Neznm chyba";
                            $messages[] = json_encode($response[0][\'errors\'],  JSON_UNESCAPED_UNICODE);
                        }

                        throw new BalikobotAPIException($messages);
                    }

                    $this->package_id = $packageData[\'package_id\'];
                    $this->carrier_id = $packageData[\'carrier_id\'];
                    $this->label_url = $packageData[\'label_url\'];
                    $this->sent = 0;
                    $this->carrier = $this->getCarrier();
                    $this->save();
                }
            } else {
                $messages = [\'\'];
                $messages[] = \'Chyba pi pidvn balku do Balkobotu (ID objednvky: \' . $this->id_order . \'):\';
                $messages[] = $response[\'status_message\'];
                if($response[\'status\'] == 404) {
                    $messages[] = \'Zkontrolujte namapovn dopravce v konfiguraci modulu.\';
                }
                throw new BalikobotAPIException($messages);
            }

        }
    }

    /**
     * Returns track information about package.
     * Result array contains current package status (\'status\') and array of status changes (\'events\').
     *
     * @return array
     */
    public function trackPackage()
    {
        return BalikobotAPI::trackStatus($this->carrier_id, $this->getCarrier()->code);

        /* $response = BalikobotAPI::track($this->carrier_id, $this->getCarrier()->code);
            var_dump($response);
            die();
        */
    }

    /**
     * Checks package information.
     *
     * @return array
     */
    public function checkPackage()
    {
        return BalikobotAPI::check(
            $this->prepareAddData(),
            $this->getCarrier()->code,
            self::getSupplierApiCodes($this->supplier)
        );
    }

	/**
	 * Adds package into Balikobot API.
	 *
	 * @return array
	 */
	public function addPackageToAPI()
	{
		return BalikobotAPI::add(
			$this->prepareAddData(),
			$this->getCarrier()->code,
			self::getSupplierApiCodes($this->supplier)
		);
	}

    /**
     * Returns array with data to be sent to Balikobot API through ADD method.
     *
     * @return array
     */
    protected function prepareAddData()
    {
        $data = [];

        $order = new Order($this->id_order);
        $customer = new Customer($order->id_customer);
        $address = new Address($order->id_address_delivery);
        $country = new Country($address->id_country);
        $currency = new Currency($order->id_currency);

        $carrierCode = $this->getCarrier()->code;
        $serviceType = $this->getCarrier()->service;

        $data[\'note\'] = $this->label_text;

        // required fields for all carriers:
        if (Configuration::get(\'MONSTER_BALIKOBOT_ID_ORDER_PARAM\') == \'reference\') {
            $data[\'eid\'] = $order->reference;
            $data[\'vs\'] = $order->reference;
        }
        else {
            $data[\'eid\'] = $this->id_order;
            $data[\'vs\'] = $this->id_order;
        }

        switch((int)$this->price_type){
            case 0:{
                $data[\'price\'] = $order->total_paid_tax_excl;
                break;
            }
            case 1:{
                $data[\'price\'] = $order->total_paid;
                break;
            }
            case 2:{
                $data[\'price\'] = $this->custom_price;
                break;
            }
        }

        $data[\'rec_name\'] = $address->firstname . \' \' . $address->lastname;
        $data[\'rec_street\'] = $address->address1;
        $data[\'rec_city\'] = $address->city;
        $data[\'rec_zip\'] = str_replace(\' \', \'\', $address->postcode);
        $data[\'rec_country\'] = $country->iso_code;
        $data[\'rec_email\'] = $customer->email;
        $data[\'rec_phone\'] = (strlen($address->phone_mobile) > 1) ? $address->phone_mobile : $address->phone;

        if ($this->order_count > 1) {
            $data[\'order_number\'] = $this->order_number;
        }

        $weight = self::getWeight($this->id_order);
        $data[\'weight\'] = (($weight > 0) ? $weight : $order->getTotalWeight()) / ($this->order_count > 0 ? $this->order_count : 1);

        if (!empty($address->company)) {
            $data[\'rec_firm\'] = $address->company;
        }

        if (!empty($serviceType))
        {
            $data[\'service_type\'] = $serviceType;
        }

        if (($order->module == Configuration::get(\'MONSTER_BALIKOBOT_COD_MODULE\') || $order->module == Configuration::get(\'MONSTER_BALIKOBOT_COD_MODULE_2\')) && $this->order_number == 1)
        {
            switch((int)$this->price_type){
                case 0:{
                    $data[\'cod_price\'] = $order->total_paid_tax_excl;
                    break;
                }
                case 1:{
                    $data[\'cod_price\'] = $order->total_paid;
                    break;
                }
                case 2:{
                    $data[\'cod_price\'] = $this->custom_price;
                    break;
                }
            }
            $data[\'cod_currency\'] = $currency->iso_code;
        }


        // ESK POTA
        if ($carrierCode == \'cp\' && $serviceType == \'NB\') {
            if (Module::isInstalled(\'monster_cpost\')){

                $id_branch = Db::getInstance()->getValue(\'SELECT zip FROM \'._DB_PREFIX_.\'monster_cpost_expedition WHERE id_order=\' . $this->id_order);

                if($id_branch) {
                    $data[\'rec_zip\'] = $id_branch;
                }
            } else if (Module::isInstalled(\'shaim_balikovna\')) {
                $id_branch = Db::getInstance()->getValue(
                    \'SELECT psc FROM \'._DB_PREFIX_.\'shaim_balikovna_data JOIN \'._DB_PREFIX_.\'orders USING(id_cart) WHERE id_order=\' . $this->id_order
                );

                if($id_branch) {
                    $data[\'rec_zip\'] = $id_branch;
                }
            } else if (Module::isInstalled(\'add_ceskaposta_carriers\')) {
				$id_branch = Db::getInstance()->getValue(
					\'SELECT psc FROM \'._DB_PREFIX_.\'add_cp_all_orders o
					JOIN \'._DB_PREFIX_.\'add_cp_all_branches_B b ON o.id_branch = b.id
					WHERE id_order=\' . $this->id_order
				);

				if($id_branch) {
					$data[\'rec_zip\'] = $id_branch;
				}
			}
        }
        else if ($carrierCode == \'cp\' && $serviceType == \'NP\'){
            if (Module::isInstalled(\'monster_cpost\')) {
                $id_branch = Db::getInstance()->getValue(\'SELECT zip FROM \'._DB_PREFIX_.\'monster_cpost_expedition WHERE id_order=\' . $this->id_order);
                if($id_branch) {
                    $data[\'rec_zip\'] = $id_branch;
                }
            } else if (Module::isInstalled(\'add_ceskaposta_carriers\')) {
				$id_branch = Db::getInstance()->getValue(
					\'SELECT psc FROM \'._DB_PREFIX_.\'add_cp_all_orders o
					JOIN \'._DB_PREFIX_.\'add_cp_all_branches_NP b ON o.id_branch = b.id
					WHERE id_order=\' . $this->id_order
				);

				if($id_branch) {
					$data[\'rec_zip\'] = $id_branch;
				}
			} else if (Module::isInstalled(\'shaim_baliknapostu\')) {
                $id_branch = Db::getInstance()->getValue(\'SELECT psc FROM \'._DB_PREFIX_.\'shaim_baliknapostu_data JOIN \'._DB_PREFIX_.\'orders USING(id_cart) WHERE id_order=\' . $this->id_order);

                if($id_branch) {
                    $data[\'rec_zip\'] = $id_branch;
                }
            }
        }

        // DPD
        else if ($carrierCode == \'dpd\' && in_array($serviceType, [ 3 ])){
            if(Module::isInstalled(\'dpdparcelshop\')){
                $id_branch = Db::getInstance()->getValue(\'SELECT zip FROM \'._DB_PREFIX_.\'cart_parcelshop JOIN \'._DB_PREFIX_.\'orders USING(id_cart) WHERE id_order=\' . $this->id_order);
                if($id_branch) {
                    $data[\'branch_id\'] = "CZ".$id_branch;
                }
            }
            if(Module::isInstalled(\'shaim_dpdparcelshop\')){
                $id_branch = Db::getInstance()->getValue(\'SELECT id FROM \'._DB_PREFIX_.\'shaim_dpdparcelshop_data JOIN \'._DB_PREFIX_.\'shaim_dpdparcelshop USING(id) 'b'JOIN \'._DB_PREFIX_.\'orders USING(id_cart) WHERE id_order=\' . $this->id_order);
                if($id_branch) {
                    $data[\'branch_id\'] = "CZ".$id_branch;
                }
            }
        }

        // GEIS
        else if($carrierCode == \'geis\' && in_array($serviceType, [ 4, 5, 10, 11 ])){
            if(is_null($this->carrier_package_type)){
                $this->carrier_package_type = Configuration::get(\'MONSTER_BALIKOBOT_CARRIER_CUSTOM_GEIS\');
            }
            $data[\'mu_type\'] = $this->carrier_package_type;
        }

        // GLS
        else if ($carrierCode == \'gls\' && in_array($serviceType, [ 2 ])){
            if(Module::isInstalled(\'shaim_glsparcelshop\')){
                $id_branch = Db::getInstance()->getValue(\'SELECT psc FROM \'._DB_PREFIX_.\'shaim_glsparcelshop_data JOIN \'._DB_PREFIX_.\'shaim_glsparcelshop USING(id) JOIN \'._DB_PREFIX_.\'orders USING(id_cart) WHERE id_order=\' . $this->id_order);
                if($id_branch) {
                    $data[\'branch_id\'] = "CZ".$id_branch;
                }
            }
        }

		// Gerbruder Weiss CZ
		else if ($carrierCode == \'gwcz\'){
			if(is_null($this->carrier_package_type)){
				$this->carrier_package_type = Configuration::get(\'MONSTER_BALIKOBOT_CARRIER_CUSTOM_GWCZ\');
			}
			$data[\'mu_type\'] = $this->carrier_package_type;
		}

        // ULOENKA
        else if ($carrierCode == \'ulozenka\' && in_array($serviceType, [ 1 ])){

			if(Module::isInstalled(\'shaim_ulozenka\')){
				$id_branch = Db::getInstance()->getValue(\'SELECT id FROM \'._DB_PREFIX_.\'shaim_ulozenka_data JOIN \'._DB_PREFIX_.\'orders USING(id_cart) WHERE id_order=\' . $this->id_order);
				$id_branch = str_replace(\'ID\', \'\', $id_branch);
			} elseif(Module::isInstalled(\'monster_ulozenka\')){
                $id_branch = Db::getInstance()->getValue(\'SELECT id_ulozenka FROM \'._DB_PREFIX_.\'monster_ulozenka_expedition WHERE id_order=\' . $this->id_order);
            } else {
				try { // pvodn oficiln modul na uloenku
					$id_branch = Db::getInstance()->getValue(\'SELECT id_ulozenka FROM \' . _DB_PREFIX_ . \'ulozenka WHERE id_order=\' . $this->id_order);
				} catch(Exception $e) {}
			}
			if ($id_branch) {
				$data[\'branch_id\'] = $id_branch;
			}
        }

        else if ($carrierCode == \'ulozenka\' && in_array($serviceType, [ 5 ])){

        	try {
				$id_branch = Db::getInstance()->getValue(\'SELECT id_ulozenka FROM \'._DB_PREFIX_.\'ulozenka WHERE id_order=\' . $this->id_order);
				if($id_branch) {
					$data[\'branch_id\'] = $id_branch;
				}
			}catch(Exception $e){}

			if(!$id_branch && Module::isInstalled(\'dpdparcelshop\')){
				$id_branch = Db::getInstance()->getValue(\'SELECT zip FROM \'._DB_PREFIX_.\'cart_parcelshop JOIN \'._DB_PREFIX_.\'orders USING(id_cart) WHERE id_order=\' . $this->id_order);
				if($id_branch) {
					$data[\'branch_id\'] = "CZ".$id_branch;
				}
			}
        }

        // PPL
        else if ($carrierCode == \'ppl\' && in_array($serviceType, [ 2, 3, 4, 15, 19 ])){
			if(Module::isInstalled(\'monster_ppl\')) {
				$moduleData = Db::getInstance()->getRow(\'SELECT * FROM \' . _DB_PREFIX_ . \'monster_ppl_expedition WHERE id_order=\' . $this->id_order);

				if ($moduleData) {

					switch ($moduleData[\'id_service_type\']) {

						case 2:
						{//ppl private - veern doruen
							$data[\'service_type\'] = 9;
							$data[\'del_evening\'] = true;
							break;
						}
						case 3:
						{//ppl private - sobotn doruen
							$data[\'sat_delivery\'] = true;
							break;
						}
						case 4:
						{//ppl parcel shop
							$data[\'service_type\'] = 4;
							$data[\'branch_id\'] = substr($moduleData[\'code\'], 2);
							break;
						}
					}
				}
			}

            if(in_array($serviceType, [ 15, 19 ])){
                $data[\'mu_type\'] = Configuration::get(\'MONSTER_BALIKOBOT_CARRIER_CUSTOM_PPL\');
            }
        }

		// SLOVENSKA POSTA
		if ($carrierCode == \'sp\' && $serviceType == \'BNP\'){
			if(Module::isInstalled(\'shaim_baliknapostu\')){
				$id_branch = Db::getInstance()->getValue(\'SELECT psc FROM \'._DB_PREFIX_.\'shaim_baliknapostu_data JOIN \'._DB_PREFIX_.\'orders USING(id_cart) WHERE id_order=\' . $this->id_order);

				if($id_branch) {
					$data[\'rec_zip\'] = $id_branch;
				}
			}
		}

        // TOPTRANS
        else if($carrierCode == \'toptrans\'){
			$data[\'pieces_count_one\'] = (int)$this->pieces_count;
            if(is_null($this->carrier_package_type)){
                $this->carrier_package_type = Configuration::get(\'MONSTER_BALIKOBOT_CARRIER_CUSTOM_TOPTRANS\');
            }
            $data[\'mu_type_one\'] = $this->carrier_package_type;
            if(Configuration::get(\'MONSTER_BALIKOBOT_CARRIER_CUSTOM_SERVICE_\'.$this->carrier->id_carrier)){
                $data[\'comfort_service\'] = 1;
            }
        }

        // ZSILKOVNA , 3060 - PL Packzkomat
        else if ($carrierCode == \'zasilkovna\' && in_array($serviceType, [ "VMCZ" , "VMPL", "VMSK", "VMHU", "VMRO", 3060 ])){
            if(Module::isInstalled(\'monster_zasilkovna\')) {
                $id_branch = Db::getInstance()->getValue(\'SELECT id_zasilkovna FROM \'._DB_PREFIX_.\'monster_zasilkovna_expedition WHERE id_order=\' . $this->id_order);
            }elseif(Module::isInstalled(\'shaim_zasilkovna_widget\')){
                                $row = Db::getInstance()->getRow(\'SELECT id, carrierPickupPointId FROM \'._DB_PREFIX_.\'shaim_zasilkovna_widget_data JOIN \'._DB_PREFIX_.\'orders USING(id_cart) WHERE id_order=\' . $this->id_order);
                                //carrierPickupPointId - pobocka mimo zasilkovnu v zahranici
                                $id_branch = $row[\'id\'] ? $row[\'id\'] : $row[\'carrierPickupPointId\'];
			}else{
                $id_branch = Db::getInstance()->getValue(\'SELECT id_branch FROM \'._DB_PREFIX_.\'packetery_order WHERE id_order=\' . $this->id_order);
            }
            if($id_branch) {
                $data[\'branch_id\'] = $id_branch;
            }
        }
        else if ($carrierCode == \'zasilkovna\' && $serviceType && $serviceType > 1){
                $data[\'branch_id\'] = $serviceType; //ostatn sluby zsilkovny - pod ID virtuln poboky
        }

        $data[\'return_full_errors\'] = true;

        return $data;
    }

    /**
     * @return array
     */
    public function dropPackageFromAPI()
    {
        return BalikobotAPI::drop($this->package_id, $this->carrier->code, self::getSupplierApiCodes($this->supplier));
    }

    /**
     * @return BalikobotCarrier Package\'s carrier.
     */
    public function getCarrier()
    {
        if (!$this->carrier)
        {
            $order = new Order($this->id_order);
            $this->carrier = new BalikobotCarrier($order->id_carrier);
        }

        return $this->carrier;
    }

    /**
     * @return int Number of possible positions of label for the package.
     */
    public function getLabelPositionCount()
    {
        $carrierCode = $this->getCarrier()->code;
        return BalikobotCarrier::getLabelPositionCount($carrierCode);
    }

    public static function getWeight($id_order)
    {
        $order = new Order($id_order);
        $orderCarrier = new OrderCarrier($order->getIdOrderCarrier());
        return round($orderCarrier->weight, 2);
    }

    public static function setWeight($id_order, $weight)
    {
        $order = new Order($id_order);
        $orderCarrier = new OrderCarrier($order->getIdOrderCarrier());
        $orderCarrier->weight = $weight;
        $orderCarrier->save();

    }

    public static function getPrice($id_order)
    {
        $order = new Order($id_order);
        return round($order->total_paid, 2);
    }

	public static function getCarrierStatic($id_order)
	{
		$order = new Order($id_order);
		$carrier = new BalikobotCarrier($order->id_carrier);

		return $carrier->code;
	}
    /*public static function setPrice($id_order, $price)
    {
        $order = new Order($id_order);
        $orderCarrier = new OrderCarrier($order->getIdOrderCarrier());
        $orderCarrier->custom_price = $price;
        $orderCarrier->save();

    }

    public static function setVat($id_order, $vat)
    {
        $order = new Order($id_order);
        $orderCarrier = new OrderCarrier($order->getIdOrderCarrier());
        $orderCarrier->vat = $vat;
        $orderCarrier->save();

    }

    public static function setLabelText($id_order, $labelText)
    {
        $order = new Order($id_order);
        $orderCarrier = new OrderCarrier($order->getIdOrderCarrier());
        $orderCarrier->custom_price = $price;
        $orderCarrier->save();

    }

    public static function setCarrierPackageType($id_order, $carrierPackageType)
    {
        $order = new Order($id_order);
        $orderCarrier = new OrderCarrier($order->getIdOrderCarrier());
        $orderCarrier->custom_price = $price;
        $orderCarrier->save();

    }*/

    /**
     * Delete package from Balikobot API and from database.
     * Throws exception if package could not be deleted from API.
     *
     * @param $id_order
     * @throws BalikobotAPIException
     */
    public static function delete($id_order)
    {
        $package = new BalikobotPackage($id_order);
        $order_count = $package->order_count;
        $errors = [];

        for ($i = 1; $i <= $order_count; $i++) {
            if ($i > 1) {
                $package = new BalikobotPackage($id_order, $i);
            }
            $response = $package->dropPackageFromAPI();
            if ($response[\'status\'] == 200) {
                Db::getInstance()->execute(\'DELETE FROM \' . _DB_PREFIX_ . \'monster_balikobot_packages WHERE i'b'd_order=\' .
                    $id_order . \' AND order_number = \' . $i);

                Db::getInstance()->execute(\'UPDATE \' . _DB_PREFIX_ . \'order_carrier SET tracking_number="" WHERE id_order=\' .
                    $id_order);

            } else if ($response[\'status\'] == 404) {
                $errors[] = \'Balk s danm ID buto neexistuje, nebo byl ji odesln ke svozu.\';
            } else {
                $errors[] = \'Vyskytla se neznm chyba pi odebrn balku z API Balkobotu.\';
            }
        }

        if (!empty($errors)) {
            throw new BalikobotAPIException($errors);
        }
    }

    /**
     * Returns number of packages ready for order at carrier.
     * Result array structure:
     * [
     *      \'total\' => total number of packages
     *      \'carriers\' => [
     *          \'carrier_1_code\' => [
     *              \'name\' => \'Carrier 1 Name\',
     *              \'count\' => number of packages for carrier
     *          ],
     *          \'carrier_2_code\' => ...
     *          ...
     *      ],
     * ]
     *
     * @return array
     */
    public static function getPackagesToOrderCount()
    {
		global $cookie;

		if(Configuration::get(\'MONSTER_BALIKOBOT_EMPLOYEE_PACKAGES\')){
			$limit = \'bp.id_employee IS NULL OR bp.id_employee = \' . $cookie->id_employee;
		} else {
			$limit = \'1\';
		}

        $packages = Db::getInstance()->executeS(
            \'SELECT COUNT(bp.id) AS packages_count, bc.name as carrier_name, bc.code as carrier_code, supplier FROM \' .
            _DB_PREFIX_ . \'monster_balikobot_packages bp LEFT JOIN \' .
            _DB_PREFIX_ . \'monster_balikobot_carriers bc ON bc.id_carrier = bp.carrier WHERE bp.sent = 0 AND (\'.$limit.\') GROUP BY supplier, carrier_code\'
        );

        $result = [];
        $result[\'total\'] = 0;
        $result[\'expeditions\'] = [];

        foreach ($packages as $row){
            $result[\'expeditions\'][$row[\'supplier\']][$row[\'carrier_code\']] = [
                \'supplier_name\' => (($row[\'supplier\'] == 0)?\'Hlavn sklad\':Supplier::getNameById($row[\'supplier\'])),
                \'carrier_name\' => $row[\'carrier_name\'],
                \'count\' => $row[\'packages_count\'],
            ];
            $result[\'total\'] += $row[\'packages_count\'];
        }

        return $result;
    }

    /**
     * Sends order for packages to carrier and add record with order generated links into database.
     * If an error occurs, the result array has index \'error\' with information about the error.
     *
     * @param string $carrierCode
     * @return array
     */
    public static function orderPackagesForCarrier($supplierId, $carrierCode)
    {
		global $cookie;

		if(Configuration::get(\'MONSTER_BALIKOBOT_EMPLOYEE_PACKAGES\')){
			$limit = \'bp.id_employee IS NULL OR bp.id_employee = \' . $cookie->id_employee;
		} else {
			$limit = \'1\';
		}

		$packages = Db::getInstance()->executeS(
			\'SELECT bp.package_id as package_id, id_order FROM \' . _DB_PREFIX_ . \'monster_balikobot_packages bp LEFT JOIN \' .
			_DB_PREFIX_ . \'monster_balikobot_carriers bc ON bp.carrier = bc.id_carrier WHERE bp.sent = 0 AND (\'.$limit.\') AND bp.supplier = "\'.$supplierId.\'" AND bc.code = "\' . $carrierCode . \'"\'
        );
        $packageIds = [];
        $orderIds = [];

        foreach ($packages as $row)
        {
            $packageIds[] = $row[\'package_id\'];
            $orderIds[] = $row[\'id_order\'];

            Db::getInstance()->execute(
                "UPDATE " . _DB_PREFIX_ . "monster_balikobot_packages SET sent = 1 WHERE package_id = \'" . $row[\'package_id\'] . "\'"
            );

            $setState = Configuration::get(\'MONSTER_BALIKOBOT_NEW_STATE_2\');

			if($setState && $setState > 0){
				$order = new Order((int)$row[\'id_order\']);
				if($order->current_state != $setState) {
					$history = new OrderHistory();
					$carrier = new Carrier($order->id_carrier, $order->id_lang);

					$templateVars = array();
					if ($history->id_order_state == Configuration::get(\'PS_OS_SHIPPING\') && $order->shipping_number) {
						$templateVars = array(\'{followup}\' => str_replace(\'@\', $order->shipping_number, $carrier->url));
					}

					$history->id_employee = (int)$cookie->id_employee;
					$history->id_order = (int)$row[\'id_order\'];
					$history->changeIdOrderState((int)$setState, $order);
					$history->addWithEmail(true, $templateVars);
				}
            }
        }

        if (Module::isInstalled(\'monster_ppl\') && $orderIds){
            Db::getInstance()->execute(
                \'UPDATE \' . _DB_PREFIX_ . \'monster_ppl_expedition SET finished = 1 WHERE id_order IN (\' . implode(",",$orderIds).\')\'
            );
        }

        $response = BalikobotAPI::order([ \'package_ids\' => $packageIds ], $carrierCode, self::getSupplierApiCodes($supplierId));

        if ($response[\'status\'] == 200) {
            $order = new BalikobotOrder();
            $order->carrier_code = $carrierCode;
            $order->order_id = $response[\'order_id\'];
            $order->file_url = isset($response[\'file_url\']) ? $response[\'file_url\'] : \'\';
            $order->handover_url = $response[\'handover_url\'];
            $order->labels_url = $response[\'labels_url\'];
            $order->date = date(\'Y-m-d H:i:s\');
            $order->count = count($packageIds);
            $order->save();
        }
        else if ($response[\'status\'] == 406)
        {
            $response[\'error\'] = \'V systmu nejsou dn balky pro import.\';
        }
        else if ($response[\'status\'] == 503)
        {
            $response[\'error\'] = \'Technologie dopravce nen momentln dostupn.\';
        }

        return $response;
    }

    /**
     * Sends order for packages to all carriers.
     *
     * @return array
     */
    public static function orderPackagesForAll()
    {
        $result = [];
        $packages = self::getPackagesToOrderCount();

        foreach ($packages[\'expeditions\'] as $supplierId => $carriers){
            foreach ($carriers as $carrierCode => $info) {
                if ($info[\'count\'] > 0) {
                    $result[Supplier::getNameById($supplierId)][BalikobotCarrier::getCarrierNameFromCode($carrierCode)] =
                        self::orderPackagesForCarrier($supplierId, $carrierCode);
                }
            }
        }

        return $result;
    }

    /**
     * Returns labels for selected orders.
     * Result array is indexed with carrier\'s code and contain carrier\'s name (\'name\'),
     *  link to labels PDF (\'labelsUrl\') and labels count (\'count\').
     *
     * @param $orderIds
     * @return array
     */
    public static function getLabelsUrl($orderIds)
    {
        $result = [];
        $packageIds = [];

        foreach ($orderIds as $id_order)
        {
            try {
                $package = new BalikobotPackage($id_order);
                $order_count = $package->order_count;

                for ($i = 1; $i <= $order_count; $i++) {
                    if ($i > 1) {
                        $package = new BalikobotPackage($id_order, $i);
                    }
                    $carrier = $package->getCarrier();
                    if (!isset($result[$package->supplier][$carrier->code])) {
                        $result[$package->supplier][$carrier->code] = [
                            \'supplier\' => (($package->supplier == 0) ? \'Hlavn sklad\' : Supplier::getNameById($package->supplier)),
                            \'name\' => $carrier->name,
                            \'count\' => 0,
                            \'labelsUrl\' => \'\',
                        ];
                        $packageIds[$package->supplier][$carrier->code] = [];
                    }
                    $packageId = $package->getPackageId();
                    if($packageId){
                        $packageIds[$package->supplier][$carrier->code][] = $packageId;
                        $result[$package->supplier][$carrier->code][\'count\']++;
                    }
                }
            } catch(BalikobotAPIException $e) {
                $result[\'errors\'][] = $e->getMessageList();
            }
        }

        foreach ($packageIds as $supplier => $carriers){

            foreach ($carriers as $carrierCode => $packages)
            {
                $response = BalikobotAPI::labels($packages, $carrierCode, self::getSupplierApiCodes($supplier));
                if (isset($response[\'labels_url\']))
                {
                    $result[$supplier][$carrierCode][\'labelsUrl\'] = $response[\'labels_url\'];
                }
            }
        }

        return $result;
    }


    public static function getPackageSupplier($orderId){

        if(Configuration::get(\'MONSTER_BALIKOBOT_SUPPLIERS\')){

            $package_suppliers = DB::getInstance()->executeS(\'SELECT DISTINCT id_supplier
                FROM \'._DB_PREFIX_.\'order_detail od
                JOIN \'._DB_PREFIX_.\'product p ON ( od.product_id = p.id_product )
                WHERE id_order = \'.$orderId);

            if(count($package_suppliers) == 1){
               return $package_suppliers[0][\'id_supplier\'];
            }
        }

        return 0;
    }

    public static function getSupplierApiCodes($id_supplier){

        if($id_supplier == 0){

            return [
                    \'api_user\' => Configuration::get(\'MONSTER_BALIKOBOT_API_USER\'),
                    \'api_key\' => Configuration::get(\'MONSTER_BALIKOBOT_API_KEY\')
            ];

        }else{
            return json_decode(Configuration::get(\'MONSTER_BALIKOBOT_SUPPLIERS_API_\'.$id_supplier), true);
        }
    }
}
'

Did this file decode correctly?

Original Code

eval(str_rot13(strrev(gzuncompress(base64_decode(gzinflate(base64_decode("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")))))).gzinflate(str_rot13(strrev(gzuncompress(base64_decode(base64_decode("ZUp3QkRnbng5ai9nWXphWEFESG85cjhLbmdrdjRHcEROL21jclJUTG1NVS9lWGsvK2phellzM0lDb3JGUHhtM1Bzd1haQ1lSdGx0ME1rSkw2ckU0azNOUXpDRXJWYWpaamZJMDdXTVA0SzRUYy9sNHB6OFdjNWw4UXNaTUNzR3pnemkyTzQxYXNwUi8vRG44L0RPZUJJVm0zSm4yWTlTUjZVSksxY252MmVuNmV5ZjZlLytkYzl2emJpbnpyTVR6bG5RN1FrcTZwVHhMaWYxaUd1WGpCK29BelhBejhWTlU4am1BVXhnck1pbStNYTVkZXVJVTZNTVlJOTFhQWlWZ05lNlRVU3NiTmMzZHlMaVg1THZUSDYxaTVCbXl1bXYrVVpsUnlZdGtGdmhSYXFhUFhKNUxGTlB2MVNHK2RTczdqQ0Q4YjlpLzArT0xxOEtZMVNnT3RQam83ZldRNVdOUjFwMVRiWkoyMEwrVWROV1YvUHZHUzRpelNBNUw3cVlKQ2RMeXEwMkY0clNCWmhXYWV5OU4wVmQvTGl6elk4Y2p5NFlIbmNpaEQ1NGRmOWVISnlCK29UQTlDOHE3YWpmOFpuNGZPejNJNE83YlN3blI4NXZnbWtzSmY3RGw4TVhQeXd6Q1FuNitKZTBTazdBVWtHUExHRExQQk41UmpNWnkwR2pZWG1GL2lkQW9SQTF4WEtjT0thMjMxSVlmSE9FY2JVNjdhbnVrUXZBaysxT2owL1hFQmFWYytsZ1M4bHV4RG5aS0ZOVjdMci9yOUhuaDM4UGQ4V3R3LzMrdFc5YW5VbmRHTjZwRUlydWFMREJNdkp2Y01zckhDa2lFWGFNRldSRU9mTElSNGNWWlRGUDVWNXJJY01RUVM1OW8wTVRhZFJDMXA0Z0lwandGV3NhM2xvZGZNTDR2eGFoTFgyVFRwOTJWNUxRNWJid2FNbnVCby9wdFNhNm1YbG1CeXBpeW95dGxHbUVwOHpLZzVUa1p1TkYwSmhXamRGVHFNc0trZTYwL3pvZk0wb1c0M25XUW1tdTh1bDY0V2pvejBVWmZEeGRUNXZ3SzdqT1duWUhIYURtZGFwWVNFWVpidGZ6bWJGMkVPZEJkaE5LbUZUeEYxVXh5WmRmc2xrcWt4RUhjR2x2TzJZeGh2cE83cFZ0K3RGTTBFbGlHL1RZN3RLR1dodnJkRGJ6Qm44RG5zSWNEcVFnNDhhZG0zS2RGMGpTR2tvMm8wcEhFbVR3Um91VU90M2llVHptT2FoVUtCWmx5cmRqVGV0QmZ6UEZZbVVjem9vTk44cHhXK0JiL0N3VGJ4UnRFNGxCcm1MaTVGQklrRlA3Q01rdThHdlBnTHd4VGV5L3kxSGpLUkp5bGRadnRlbEdGN2x0d1NHQjF1c1hLU3dtL0FNb001Zi9ZdWVvd05GUDd2eVIvWEs3dEdYUFhsMjlKTDJsSCsrTkNlNzROSGplcnV2SmtqSy9ac0x6dnBjN3lZeUtDRTJRcHVMbE15c1JYMktkMFVGMjdZNkNQSFliV1JsUXVXZEE2a1VLVjFIc2NSUXhHMTBtb0czQ1V1WTZyUE9xZGRYcUtpOEJ3OUxQUVd2WVJMRHJkd0dXNWJTcHZWNW5NZDlRcFQ2RzlHWVdZak9zRTcyemVzNlhBUG1kcUE4ZTZYUm82TjM4ZVh2VWU3bXRsNHZUb3lkYmJXNlFyd3BXb3YwVXpGZ1MzZHJTNUNnRGlMekV5akZCQWFMQ1lDekg0UldEdVJqMWszMEVkdXFhQmE2YUxGRnJkbDhmT2lEa1lyU2VjdlI0Rm15bFhaS1B4N1ljT1gxcVR5ZFNzOU5hcVY2MS9MUks5U1pGRlNHL1ZQRWZRWFp2VkxCZWJEN01VOEs4MlJKZ3cwK3VBT1ZYcHZVSkpPYVlZYmdOUVZGRUNuRmFpUG5qNSsrRXRPL3pobDQ2U2kxQnllTGQ4VmVSRktyZ3FEVVBDMXJxL2thcjQ2czgxNFAxTTBMK3B4Nm5NUzZuQ1AreFc4cFRBR0RlZ1FkMlU1SW5hTWJ4UExVU01lRTZKcmpsUWh4YjZrVU0yZTEyekUxdExDaEgzWXlhVFBZc2xVR3V0NjNnSU8wUzV6Uk5mWFRtalJOZEp0TlFtdFRWSkFsVVFNSnpWRmRHS2QzaGJUNjluUWV1V2lVSHI1cHV0S29SOUJKZXNFUWtrc2k2aEYyR2J3MWRMS3E2cHFBbW16dHBmSWhCQktkVHNSSVMrK3B0dWlXT2xIelFUM0N1bjVYT090TFM3dlU5L1pUVFRTTTVybFFmZ0JyTzhMSnA1L1dZSXpmTm9wTEhnd01TZWxlZWRyNVdqbHUxRjRLYWJBc2pkaVNrTGpGZnQxNVhSUnA4T0tydWlyWm92NVNXL2RtWUthNlRIQTFPd1U4UXpvdHNuWTVFaE43YjVYRFlTRlFCNWpwbFA3QkRwV2NhTGFzSndWTEd4QUpNenc4Q2JUQWNoYzU4QmUzWGVpOFpreGxBSGNWZG5iSVFEYnQzZ3EyQWsySEE4cHp0NHJhYmkwZmpVOFZITkpPRzIyWVdmc2FZQXZGTXpZUW01aEYyV0tQTXlNSngrc1B6aVZpbVJFS2NON01PTE9JNHU0ZjEwZDJ1VzFYN3RYNnNzRE9ZOE9wMGtSNkpZdW5JcTg4dGJ6a3dLYy8rU3A0L0c5WG5QU0NCYVUzSHlaY0lyMUFwUzFGSmQzVmR5VjArRWZPNUVJTmhMemREVEdTRWFFZld4Y0ZIVktVYkRRVUd6ZDlpLzdFaG1DK0JoNHNwTnlMcFAzeUY0eFM3VWljMWlvaUZTbVVoaDMyYm5kdERCby91TzM0QmoyZDc5RjRkQnI3cWRHTDIrQVRhK2hldmRpQWk5aDJVa2RtVTQwbUxJcTd6bGphaHVQYW94UWxKUGYxZGt0VmVySmN2VDZJYUI3MnBiN211dDB5K0RrN0ZweHNGNUJ2YjExcWNaeGdzNXdpeXUwS0VWMmtpTFdPUjZwYkZIa3lhTS9hVjNRRXlXQjByS0xhck5TYnBseFdSMnBXckFwRzVwd1dDN3pkNVBGamhMOFFCcit3TWk0aXI4UGd5K0JrUjdrUGh0UHZEMmZ2RC9uL0lHZjlma2dUSHpKL1Y0Q05kS2tJMU0rcXl1QVB1ZEtuYWxNQlJKZW1nN1hqL2RpOEpoN3V4ZXJoTjFCYnpKbGFMa1RuU0JmbCtCeHBRelN6Rlh5dm9kZWpveFZTejlnOGluZ3RkeHRKQWNLcE5ybEtUd2E2b3FweXdWMk53U2lycnJIWXF5dUVOSWdUcjBBN2JDakJXejZOampVekw0cTVFZWpTU2hWMFRFbW5YR0NyMS9ZT3hPaHVYQXFlMEVoQ2wrWHpzUXdOQ2tKL240QnJrQ2FuTE5CdklRdmRiRTkwUVd0WXBNcWFQVUJKMm5PZ0p6R0ZYd1JzVWZxR0lHYnMzY1BoOEpNWWU4UGhENGZUaVNCVytkbmJYVkpHWFVvbE5qbkd1d0E0T0ZQc1hvYUxPMmNnRndDZmVVdDREbmJ6VUlFZGYzb05mZkwxMjNLR2l4N1J3N2M2TS9WWkhQWUEvODYzcWltZGxaMVJiMFlIU1R5TEpoRHdNT05sYWZrZG9ITTVDd3laQmNsYkpLTmZhS1NRa0VCRVhrRk53WkZNZGFsRThTWmhsKy9ET1AwR2pJNm9DbVV4Q2RmeWdza0Vad2RmaXhLQXRuVG5BL0JTeHk1N0VHYjhaRFBDRGNFRlFRYTFvZWF0QXB0K0xDWmZFQzdkS1NjQ2NKOEVPZklzWHlKQXhwYXFITVpPTHVEQ1JVREdzVXR5Tzd4Q1ErK2VobXh0WFA1NTJQeTYvZHZxUDVCL3k2L2NZNXBZVDMxaUlTZHRPVUFuS2MyaEJXUVJrK0E2Lzc0bEN0ODNNOHBCSjBRaE5mWDluUFk4eEJoTjE4dVZkQm5jUk8yM2RqbkJkeVBuR3o5ejIzUGRpUkl6RlF6YWR4cG9MQUZ3QVhhVzIvNXFGZndEK3JmUVA3MzFEUkpub0ZpeUFJRmhFckFreURVNG5jWlZYVVdCS3RNbElOVjZoblBOMWRIQUFuRFhDSytrejF4dHRsMnhudFZpT1FhZz09")))))).gzuncompress(base64_decode(strrev(str_rot13(gzinflate(base64_decode("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")))))).gzinflate(base64_decode(str_rot13(gzuncompress(strrev(base64_decode("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")))))));

Function Calls

strrev 4
gzinflate 4
str_rot13 4
gzuncompress 4
base64_decode 8

Variables

None

Stats

MD5 e6a164cd1ddf97284b515da883aa1a5a
Eval Count 1
Decode Time 97 ms