/* Decoded by unphp.net */ eval(str_rot13(gzuncompress(strrev(base64_decode(gzinflate(base64_decode("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")))))));eval(strrev(base64_decode(str_rot13(gzinflate(gzuncompress(base64_decode("eJwBPQTC+41WSXujOhD8QbmASDLDkRgwOySs9g3zArbZxFhgxK+fxgt2SF4mB39sUndVdXfJpi60xuAyhiaSmpO2lWwXpkYLPLjHwBdoM7jLwNmQwLFIYG3+i7rfp3uHJPz53eV6/kUvBY6DV4aYGtsuB/VY6WZh6uuHlS4klS/2d2vPcY5pHBYWH3g/WZs1IVK3NXqMNU4qKy0/YC6klR4WhiYcjCHoX47JUHtqecVQHx8zjOimcUQyiwdYG1oP/PaSv6/RN7nj9PZsJRSjnN7HOsifcGaG9nQwNSFp4pDioqkbL2cxUovQOeXLDOWJGogiPKjlomOBT8uEs7yg+S9dBpyauw3ZjKl9tTT1oP8RP5aJv8n/U71HXUa900YXKO5EspBtanr88f8xJ7/ucUQynXBHPm1xHLY6JySRYw/VB93SBLRIxu8Gy/eVLJJVZ8UL/VZj0+uJpIau7GICddteday9sG1eb1qM+4I3dqH0Bok6WxEZdS2p6zjym50SS9QsH7NIbkH/p7bxha2sj+82z0Z/4nfT+V5P7gOOUw0+4F1+UQuoX8gJ00zpnLQzBv4derc1KA/6SyX0YHbi4vKGrJiuQu2D2EuHuzlKxxn9Su9rXzodveVAUhI6LWNwajFyq5Fw0AsbrpQBvqzZ2UfI3zX6JQYZe+zM0ematol8t+YsssHCO0ZP4AF8qhSYLI4MCTm7BKy3/N1+6jGlsFO4LwzVIhVyUY1y8A6GKKy9hD0PC9mK8Xw/2aQhcreQ4732aAk5q+tamB+IkaUVeNSfDt9rOu55rwftIdf4VJUv2E7v1GfIy84xAo8WU2lfsyL40yN4VgO6u6CPvWucWWwmFxXnGjPf4/l3JCTj3sqxn00tIIYut4BDvOKuvHA/zy8pbKg69os8YVWzSh/99jOvc21smDWn3aOsNI3yDbwYaq/qgR9Sc1W+4iGk0lST5NggHDtiH62cZrl8wzeOHtzf9TB8H+P4Uz0QpWYx5y+J0sRf2ptz/gVtG0/tYH7X8tukZ1p54jzXrJe0de5MfXSca7SSGVJDv/0ZPDPXBjMHDZadla1ump28/z6HNnq3//VZEHjQl57L4OJzv9/PVejYPczhEX47HH9ac/XJUzzwGRZf+RUbsophtnWBDfw1zEHOgi9mgcczgffE1agtwZ+607OTT14/rp18o7ApeC8xh9/nWe/suB4o9OUavMVFomPdnblnTDV4MMRKjVjdX2qyizprO/LHnELweK75o2+Dnhyc63GzqyDe2Kvj88q/6jS+awGruTv76CMx0RPgkgAj+GlvgXdudpcc0Qv6hxY9FcXRO1G4q0Z8CuQbenI7g2D2ubvcJ87STiz+xRk8s/ias6zaNtR/8lSxsz/+hzlz62tm/T23ubd/WesbduzxGwVBb8F5qsA5Vhf2mzxyB76fOMRpdK23yH3AWmLkpsZ+E/0FiPYnPA==")))))).gzuncompress(strrev(gzinflate(base64_decode(str_rot13(base64_decode("Tkl0UGMvMmk4cVhnVS90dFZ4MjBteThDN3g4NGF3K3c5aXdkTm82WnphNURrVURtZ3hWNGpoam9hc1I1TEJKWEx5Z2g2NDl2MWFsZ2ZhS0dUNXZrR3dRUnRvS0lUUTZ4MmRhWDVVdmJJTUxGYlBhLzZSSEtBVEp1ekd4Yzg4LzJ5UHJheHFsN0VpSHdKcUNKdXNUUmM4a0VUVXV1VDNvZGh1cVBKTDM5RlNJUE5FYThaY3VLVVUwRWMzRVNWZTA1TDA2SmNhcGdyR1dtbW1TMkZ2WlBmdFVHZSszUzBTWVNvZ0dCbnpXMFhndFhIZklZc2lQN3VacjVSSDBkNjlvMXlTTTVwcE1qdzdCaGsvclJqeDc4eU5MOFRBNUFCaXRyUmNwLzMwYlBDSGVNWTlNTUFJTHhBTjJESGFGdzQ2VU5mL24xN0dBemtqMTZ6VmdmYkJMYzhvbmJEUzBXeGRsN0wzUDlqZ2pydVpWSEhvVVNVMVJacXVEOSt0bk1pOHNSODVCRnVhQUNLanpyWFBPeVhYNzBLQmIyYlFpdVBLd3RBVkFmbjNIaVJSSHpNUzFOalk4Rkg4b1pYeTNtU1ZyUW15R01jaHNNSWsrRzhtTXh1ZnBxYjQ5NHI3R3NQRWtPNG1UN3pQKzdxdTI0QU9JbWpPSzQ4dXMzR0luZUpKUGV4aWRmNGJwTmQyWG5lWmRtdTFKS1lvVW1Qc2FJOFF6czBVcVFrODl0ckVkZVhtQk43azM2K3lKUkkvV0xMaGlFeEpNQ29KaFAxUVJJTGFhWUZjWGJjYXA0czNpdUF1eThZR2J4ZTZwWk9vRWtMdGdrWVdFT29HdHlBVlhDMGZ0alJPVUVSSGk0QXRpTGNQUWs3Z0xHS2puTzBSTndNaUtObVdhSDNleE5mU1Eram4vU08rbytnZm1RTGVqSk92Rkd2QllnSlBXWERoN3E5eDN6aTVOZWFvNCtDcjltYTJoTHk0MGRSeEJOa0JtNy8xQUhnQXZqeG1KWExXWFhuUjNKQ3ZOZm5YSVdYSnVHWCsydFZXbERkZXZpNzMwSFpBY2lLSUZxYVV0PQ==")))))).strrev(str_rot13(base64_decode(gzinflate(gzuncompress(base64_decode("eJwB6AMX/MWVXXeiMBCGf9DeKEq3XuyFoQUT2mOVQiB3ktiAkGC3as3++h38AHTrnrNXe8HxSEhm5p3nnWBnLPHpcVYbs1Q24hpZCxoZls/kUz7W2OlJYsZbPCF3qXos8ENPxjH5FKosuUoK7AxhvafrX67dnDvzlKnICBWVqR4XuBPjq8fRH9KP4ezCNXzC1iwmijjjby8B6vxHKs2R6uRW4Un0mWpSJvr59vnj9XfsFGum23x9b6+TwdrgQEo+SL7OafWxPtYyq5q9BSu5ZiWj9owNSG+6Wv9aQm61Ht3zb+bh7Utmrt9X/lvwx7vvXGWZUCJL9A3Njr3KQKcRdvuGU/JJ3I0CrSxGoy3kfVvrQJiEkgx6OjpoXO91vtTCX3bydfLyHPNbu+/QF800s2Or0ecztkY78lDd8UEJvZJSxGjLVZRzc1GDoJAD9tp95CrXY9yiangqkVnSkcUUEDAo7VcljHAQ6MQ099yKGwR9EFtmJRLYsVMrW5003fn56Vzl5vDNClj6GZbsAc7IU4sMhS63rwaphSKloGKMnercu4+0jp2jjNFMQx2dter9rNVTzjfEoI/UoD2vc6D2CniQT5OGDcmpW/toX/eV5aKpG1jWQlWSx+QncJcJYB2eQ9zXfNzGUKzxBPYii+tI44mb1d5oe490okb5sq6/uJfLuNyez089G+INJVNuufCEmQft2X5e7a6Y9KcW20ddL3vHfSzo9ql3wW4ctHXFA9ci/U23vzWvKdMu/Qur19x19h95W9JMcRUWvoP63LMNo+RXd/+030+PvrwRB2qcmkI/wzeguea6NDxA81k4lFiTLFGPOX4Y3p97FRZREIUVeAdd1IbBN9GjS+eFlG0cvo17Gxr2iTvrj17C6H4LXKCoIHGX9dhquUv7I+BDKPDlHTH2W9BnrxDzIe6N5rEZauyunXn03MZwR3vgYxK6hIVFov1HZpiVfXK1MS95b+0Dcwm1NfSZnmbVLgxqrwl74cG3QVeLekYeNFn7Xt3vds6BNpmYgNsK216GNug0k5CjxQYoW0yea4/pFPLGE2SBL6vEnDg1/+idljHJLLJLdAbn2S/Atkniee33huHO3SIToGuuoE64B2YG2Utgm1tYstKloPUxZhHKxvt59f50yvHMLcyhi7mZ0KgCzcouT90Zfbgb4voeaWbShd8WwM/hjoz+Oo+vGYd+zqC24TWzX99ztc+iDwlz+OsYsO4H4JGINethq+UUZsL0zzvsllcu+PivbFz1e4s9omEm9YRi9VwwkP97rZfQ0XvXa8B9d8Y3nPzzPDTl5WxzhvqFnvNDb8BFMytaTtFbh+ldbIU/fgMQmhi4")))))).gzinflate(str_rot13(strrev(base64_decode(gzuncompress(base64_decode("eJwFwUeiQ0AAANADWahRlmP0TvSdEuUjjBLl9P89QHPuF/YjMuZ8t7qxNfk0ISh8nB1e3rWDdW8cE18RaOSyuQlsOlfiNXWQGldJ2LnkM6xeSGjqvnRRB9QV8cKKpei51mJNS6XWuFjkGp/TcEqirRfC1lhU13H9kyDBBKlaXjyWiNRn5rL33zHYBbm3NGtFb23aL1dziXNRyraf9tWIAzVTswen7dsMD9XEP/2Be5T5uyv4fQf2zGEvsbyymtfleTDx/HCBZ51Iz/Fw4JOwqS1I73fEVwd2TU1UXWocCgH64V4oMQstc7dF2o5Yu+U2/KKlaHzA9TsVs+5cCx2QvrB6G/B1KPUs5RpwTrNwVdWTtOu8li4Gx2+BK7sZdlv8ITmZ++hiDjobjH05xkDXIEZuB8qXIn522wr9LOSiLy2WWPAX+/hWWpYgWaP1eFK1UKSmb09w2ufR9LWE5uXD0iNZTOzLHbcQIWVBnmMt9QC3oYcb35JLobIvn9vuavLA3G2Kr1W/0c1dW5oG+B3gX7YoZAVIYy8YN1hnC6ao24DoC7QjjbL/hKmpgOsAkYJ/eLvSxmu9P8a9t6vZ7j9DJfwRo0aApfsJ9EpJ2s0e8bTnf48A8/4RVEZh9TeVk47OFPaJ8bx5V6I3yVl12e2AhiCJsxs6p8KlZ6fqkLKbM1iubwQl+tq+6iMNsTj2LAjzCm14nCHhKco5ZvXc1+bYLsIi5OFAVtPtWb7PGGaCoBUtyhvrGflmYWXdb90X7QgTCN929i6R/5x/tvz4nA==")))))).base64_decode(strrev(gzinflate(str_rot13(gzuncompress(base64_decode("eJwBpQNa/L1I25aiUxT9oLwAd9I8zAMgIHIHA8it3iiqLZHiMnBwi1+fA42IOiuZNXiSB5ZLluey9z77fPnCNLlpaVnRLEkNn/2Tdn84WKtOERWCIr2dfz7r4+r2vWXw5Rzi6X9yaG1quW7zIhXdCLfqfRxJfbxa/0qnXtzgGflpDpOLRLyViveXrGs4lyWnDcKkUkR8YzXr5byyVz8ktVuSmneWLCwt7ldxiSJcozLd2yaqlAzX6mbN6/wp3k1LhPRx5+TEWk3bM+JAP5luYYVAwnkuTp5M3AQlc3+GiWCY9KK2ZH0ub0Qdb75x63gPECu59atbX6/5fRNQjpTzInoNKc6VFjfwLtgr690o0r26ZUtoxYWN8Rp47Ml3goLW1LRNuYBNyrHeD0gjHIXxRPVjdlXJwTBG5psk40VtkeE9lgiDOJkY0lN604FKf5rv68tD50gH1ceGBg81Hw1t4SbZ2eVrtlBSnEqHWgGYXdSMtMGKZbRt5rhl1kIc9Zj45IRXl4tuvBl/0ymHPhsZ8LYLIm/TOkCve2qWaRwcRFU/1EJ8QXAPCub7KGy/1TDB02zSQ8+TEMYtYKWoN/5TvuYaPSGJfIN+91W3GmH2Gjuo2dg7YJwIkI/jKCnV79yHnprpfSfCq3auqn0d8B9zBuYuv5sPlKWa1Si3GDs3WWUle3J2czHQ/diTeYDePdcLZy8Cjifnk7qkqA1AvwuJvNMuYRvFPGoNcfg7pLs7tYurTLac+yZ1CWdWmCM6xtlqt/RuaaHWyg/p0SiCYUF+E7xo5Vhk083HIvS6s9+rUKz/iybu6odMzPn/oQf2gKdTO77+ZA6VGansIBbsYa6Nnl+d6zf8Aa/KXY0zKshSfG2H2ozCbmbQGvjVfm5B7njQ08Qfqnl9GmWthcFKjtv1FO/SdxGbeNYDcx2PKAOvcaNKVUQO9RkoYy13SxdnO5/UBbMbbsEGHxGlPu5hH2tzkPuOzB1dNvq4WRC2HtYH7XjBMtC3hi2ip53APCyewzgE3ysX29cavh8WbtzFVN1Mfdhxrv6dnQKaH7ir7+tUlRNt72WRmvc+5PyML+eB+UmL5ph/OvOPa/6AN6SnveRq+gNd+T2/ju+xiUrzvVbhHFgcd2hzJJOlpAZ8NNAjzHbnVPH0/sX9TGJr3o+jHm1//bU6uPeb/0sPjzuTffbaeOLmDbiPB7hp+xBl0KLTgRvF3WEFnyBMsFcHzF5UDp0Qz2xVfumu/gGer7r4G2G22/Q=")))))));b" class BalikobotCarrier { /** @var int ID of PrestaShop carrier. */ public $id_carrier; /** @var string Code of carrier in Balikobot API. */ public $code; /** @var string Code of carrier's service in Balikobot API. */ public $service; /** @var string Name of the carrier, to be shown to module's users. */ public $name; /** @var string Name of the carrier's service, to be shown to module's users. */ public $serviceName; protected $tableName; public static $bb_carriers_list = [ 'none' => '-- Nepřiřazeno --', 'cp' => 'Česká pošta', 'dhl' => 'DHL (beta)', 'dpd' => 'DPD', 'geis' => 'Geis', 'gls' => 'GLS', 'gwcz' => 'Gebrüder Weiss Česká republika', 'intime' => 'IN TIME', 'pbh' => 'Pošta bez hranic', 'ppl' => 'PPL', 'toptrans' => 'TopTrans', 'ulozenka' => 'Uloženka', 'zasilkovna' => 'Zásilkovna', 'sps' => 'SPS - Slovak Parcel Service', 'sp' => 'Slovenská pošta' ]; public function __construct($id_carrier) { $this->tableName = _DB_PREFIX_ . 'monster_balikobot_carriers'; $this->id_carrier = $id_carrier; $result = Db::getInstance()->getRow('SELECT * FROM ' . $this->tableName . ' WHERE id_carrier=' . $id_carrier); if (is_array($result)) { $this->code = $result['code']; $this->service = $result['service']; $this->name = $result['name']; $this->serviceName = $result['service_name']; } else { $this->code = 'none'; $this->name = self::$bb_carriers_list['none']; $this->service = ''; $this->serviceName = ''; } } /** * Saves carrier into database"b'. */ public function save() { $sql = \'INSERT INTO \' . $this->tableName; $sql .= \' (id_carrier, code, name, service, service_name) VALUES\'; $sql .= \' (\' . $this->id_carrier . \', "\' . $this->code . \'", "\' . $this->name . \'", "\' . $this->service . \'", "\' . $this->serviceName . \'")\'; $sql .= \' ON DUPLICATE KEY UPDATE \'; $sql .= \'code = "\' . $this->code . \'",\'; $sql .= \'service = "\' . $this->service . \'",\'; $sql .= \'name = "\' . $this->name . \'",\'; $sql .= \'service_name = "\' . $this->serviceName . \'"\'; Db::getInstance()->execute($sql); } /** * @return string Carrier code and service, separated by \'-\'. */ public function getCodeWithService() { return $this->code . (strlen($this->service) > 0 ? (\'-\' . $this->service) : \'\'); } /** * Set carrier\'s code, service, name and service name. * * @param $codeService Carrier code and optionally service, separated by \'-\'. * @throws BalikobotAPIException */ public function setCodeWithService($codeService) { $codes = explode(\'-\', $codeService); $this->code = $codes[0]; if (count($codes) > 1) { $this->service = $codes[1]; } else { $this->service = \'\'; } $this->name = self::$bb_carriers_list[$this->code]; if (strlen($this->service) > 0) { $this->serviceName = self::getCarrierServices($this->code)[$this->service]; } else { $this->serviceName = \'\'; } } /** * @param $id_carrier Carrier ID in PrestaShop. */ public static function delete($id_carrier) { Db::getInstance()->execute(\'DELETE FROM \'._DB_PREFIX_ . \'monste'b'r_balikobot_carriers WHERE id_carrier=\'.$id_carrier); } /** * Returns array of all Balikobot carriers which were assign to a PrestaShop carrier. * * @return array */ public static function getAllAssignedCarriers() { $carrierIds = self::getAllAssignedCarriersIds(); $carriers = []; foreach ($carrierIds as $id) { $carriers[] = new BalikobotCarrier($id); } return $carriers; } /** * Returns IDs of all PrestaShop carriers with assigned Balikobot carrier. * * @return array */ public static function getAllAssignedCarriersIds() { $result = Db::getInstance()->executeS(\'SELECT id_carrier FROM \'._DB_PREFIX_.\'monster_balikobot_carriers JOIN \'._DB_PREFIX_.\'carrier USING ( id_carrier ) WHERE code <> "none" AND deleted =0\'); $carrierIds = []; foreach ($result as $carrier) { $carrierIds[] = $carrier[\'id_carrier\']; } return $carrierIds; } /** * Returns array with all Balikobot carriers and their services. * Array is indexed with carrier\'s code and service, separated by \'-\'. * * @return array * @throws BalikobotAPIException */ public static function getAllPossibleCarriers() { $carriers = []; foreach (self::$bb_carriers_list as $code => $name) { if ($code == \'none\') { $carriers[$code] = $name; continue; } try { $services = self::getCarrierServices($code); if (!empty($services)) { foreach ($services as $service => $serviceName) { $carriers[$code . \'-\' . $service] = $name . \' - \' . $serviceName; 'b" } } else { $carriers[$code] = $name; } } catch (BalikobotAPIException $e) { } } return $carriers; } /** * Returns all service of Balikobot carrier with given code. * Throws exception if loading services was unsuccessful. * * @param string $code * @return array * @throws BalikobotAPIException */ public static function getCarrierServices($code) { $services = BalikobotAPI::services($code); $result = []; if (isset($services['service_types']) && $services['service_types'] != null) { foreach ($services['service_types'] as $serviceType) { $result[$serviceType['service_type']] = $serviceType['name']; } } else if (!isset($services['status']) || $services['status'] != 200) { throw new BalikobotAPIException([ 'Nepodařilo se načíst seznam služeb dopravce ' . $code . '.' . serialize($services) ]); } return $result; } /** * Returns all manipulation units of Balikobot carrier with given code. * Throws exception if loading manipulation units was unsuccessful. * * @param string $code * @return array * @throws BalikobotAPIException */ public static function getCarrierManipulationUnits($code) { $manUnits = BalikobotAPI::manipulationUnits($code); $result = []; if (isset($manUnits['units']) && $manUnits['units'] != null) { foreach ($manUnits['units'] as $code => $name){ $result[$code] = $name; } } return $result; } /** * Gets carrier ID in Prestashop giv"b'en the carrier code in Balikobot. * * @param string $carrierCode * @return mixed */ public static function getIdCarrierFromCode($carrierCode) { return Db::getInstance()->getValue( \'SELECT id_carrier FROM \' . _DB_PREFIX_ . \'monster_balikobot_carriers WHERE code = "\' . $carrierCode . \'"\' ); } /** * Gets carrier code in Balikobot given the carrier ID in PrestaShop. * * @param int $id_carrier * @return mixed */ public static function getCarrierCodeFromId($id_carrier) { return Db::getInstance()->getValue( \'SELECT code FROM \' . _DB_PREFIX_ . \'monster_balikobot_carriers WHERE id_carrier = "\' . $id_carrier . \'"\' ); } /** * Get carrier name in Balikobot given the carrier ID in PrestaShop. * * @param int $id_carrier * @return mixed */ public static function getCarrierNameFromId($id_carrier) { return Db::getInstance()->getValue( \'SELECT name FROM \' . _DB_PREFIX_ . \'monster_balikobot_carriers WHERE id_carrier = "\' . $id_carrier . \'"\' ); } /** * Get carrier name in Balikobot given the carrier code in Balikobot. * * @param int $carrierCode * @return mixed */ public static function getCarrierNameFromCode($carrierCode) { return self::$bb_carriers_list[$carrierCode]; } /** * Returns number of possible package label positions for given carrier. * * @param string $carrierCode * @return int */ public static function getLabelPositionCount($carrierCode) { if ($carrierCode == \'intime\' || $carrierCode == \'zasilkovna\') { return 8; } else { return 4; } } } '