Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php eval(str_rot13(gzinflate(str_rot13(base64_decode('LH3HkqRX0u7TjN1MosUSrbVzZg2tVrRt+h..
Decoded Output download
if (!defined('_PS_VERSION_')) {
exit;
}
//TODO: Pri vygenerovani stitku se nekdy vynuluje cena dopravy
//TODO: Pro bezpecnost prepsat ajax.php do controller podoby
//TODO: Opravit odprovn dopravc vdy pi jejich zmn. | DONE
//TODO: Nacitat informace o uctu a sluzbach do konfigurace modulu (WHOAMI)
//TODO: Podle dostupnach dopravcu ve WHOAMI nacitat vsechny sluzby dopravce (SERVICES)
//TODO: Ke sluzbam nactenych z (SERVICES) doplnit informace o realne aktivnich sluzbach pro ucet (ACTIVATEDSERVICES)
//TODO: K jednotlivym sluzbam doplnit seznam doplkovch slueb (ADDSERVICEOPTIONS)
//TODO: K jednotlivym sluzbam doplnit informaci o moznosti dobirky (COD4SERVICES)
//TODO: K jednotlivym sluzbam (nebo opacne) doplnit informaci o moznosti zasilky do zeme (COUNTRIES4SERVICE)
require_once dirname(__FILE__) . '/config.php';
require_once _MONSTER_BALIKOBOT_CLASSES_DIR_ . 'API.php';
require_once _MONSTER_BALIKOBOT_CLASSES_DIR_ . 'ApiErrorStates.php';
require_once _MONSTER_BALIKOBOT_CLASSES_DIR_ . 'Carrier.php';
require_once _MONSTER_BALIKOBOT_CLASSES_DIR_ . 'Order.php';
require_once _MONSTER_BALIKOBOT_CLASSES_DIR_ . 'Package.php';
class LegacyModuleLicenseValidator
{
private $module;
private $licenseKey;
private $response = false;
private $baseUrl = 'http://license.prestago.cz/balikobot/v1/';
private $shopUrl;
protected static $validation_check_result = null;
protected static $instance = null;
public static $message = '';
public static $new_version = null;
/**
* Get the value of response
*/
public function getResponse()
{
return $this->response;
}
public function __construct($module, $licenseKey)
{
$this->module = $module;
$this->licenseKey = $licenseKey;
$this->shopUrl = Tools::getShopDomainSsl();
}
public static function getInstance($module, $licenseKey)
{
return self::$instance !== null ? self::$instance : new self($module, $licenseKey);
}
public static function isValid($module, $licenseKey)
{
if (self::$validation_check_result !== null) {
return self::$validation_check_result;
}
self::$instance = self::getInstance($module, $licenseKey);
self::$validation_check_result = self::$instance->checkLicense();
self::$message = self::$instance && isset(self::$instance->getResponse()['message']) ? self::$instance->getResponse()['message'] : '';
self::$new_version = self::$instance && isset(self::$instance->getResponse()['new_version']) ? self::$instance->getResponse()['new_version'] : null;
return self::$validation_check_result;
}
protected function request($method, $data = null)
{
$ch = curl_init();
$url = $this->baseUrl;
if ($method == "POST") {
$CURLOPT_POSTFIELDS = $data;
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($CURLOPT_POSTFIELDS));
}
else if($method == "GET") {
if (!empty($data)) {
$url = sprintf("%s?%s", $this->baseUrl, $payload = http_build_query($data));
}
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_TIMEOUT, 7);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$info = curl_getinfo($ch);
$response = curl_exec($ch);
curl_close($ch);
$logger = new FileLogger(0);
if(_PS_VERSION_ > 1.6){
$logger->setFilename(_PS_ROOT_DIR_ . "/var/logs/mm_balikobot_license.log");
}else{
$logger->setFilename(_PS_ROOT_DIR_ . "/log/mm_balikobot_license.log");
}
$logger->logDebug("RESPONSE: ".$response);
$logger->logDebug("------------------------------");
$response = is_bool($response) ? $response : json_decode($response, true);
return $response;
}
private function checkLicense()
{
try {
$this->response = $this->request('POST', [
'shop_domain' => $this->shopUrl,
'module' => $this->module,
'license_key' => $this->licenseKey,
'balikobot_module_version' => monster_balikobot::VERSION,
'prestashop_version' => _PS_VERSION_
]);
if (isset($this->response['license_valid'])) {
return (bool) $this->response['license_valid'];
}
else {
return true;
}
}
catch (Exception $e) {
if ($e->getCode() >= 500) {
// our fault...
return true;
}
return false;
}
}
}
abstract class monster_balikobot_core extends Module
{
private $licenseKey;
public function __construct()
{
$this->name = 'monster_balikobot';
$this->tab = 'shipping_logistics';
$this->author = 'MONSTER MEDIA, s.r.o. & Avalanche media s.r.o';
$this->need_instance = 0;
$this->licenseKey = Configuration::get('MONSTER_BALIKOBOT_LICENSE_KEY');
$this->ps_versions_compliancy = array('min' => '1.5', 'max' => '1.7.999');
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('Balkobot');
$this->description = $this->l('Napojen e-shopu na Balkobot.');
$this->confirmUninstall = $this->l('Opravdu chcete odinstalovat modul Balkobot?');
}
public function isUsingNewTranslationSystem()
{
return Configuration::get('MONSTER_BALIKOBOT_NEW_TRANSLATION_SYSTEM') ? true : false;
}
public function install()
{
//remove old override if nothing else gets overriden
if (file_exists(_PS_OVERRIDE_DIR_ . "controllers/admin/AdminOrdersController.php")) {
$md5 = md5_file(_PS_OVERRIDE_DIR_ . "controllers/admin/AdminOrdersController.php");
if ($md5 == 'bc9338c7fe7f52863066e54211c42af0' || $md5 == '6623325bc37253275a1a139118981519') {
unlink(_PS_OVERRIDE_DIR_ . "controllers/admin/AdminOrdersController.php");
}
}
$hash = Tools::passwdGen(32);
Configuration::updateValue('MONSTER_BALIKOBOT_SECURITY_HASH', $hash);
Configuration::updateValue('MONSTER_BALIKOBOT_INSTALL_DATE', date("Y-m-d H:i:s"));
return parent::install() && $this->setValues() && $this->setTab() && $this->setDatabase() && $this->setHooks() && unlink(_PS_CACHE_DIR_ . '/class_index.php');
}
public function uninstall()
{
Configuration::deleteByName('MONSTER_BALIKOBOT_SECURITY_HASH');
return $this->unsetDatabase() && parent::uninstall() && $this->unsetValues() && $this->unsetTab();
}
//hodnoty v configu
public function setValues()
{
return true;
}
public function unsetValues()
{
return
Configuration::deleteByName('MONSTER_BALIKOBOT_API_USER')
&& Configuration::deleteByName('MONSTER_BALIKOBOT_API_KEY')
&& Configuration::deleteByName('MONSTER_BALIKOBOT_COD_MODULE')
&& Configuration::deleteByName('MONSTER_BALIKOBOT_COD_MODULE_2')
&& Configuration::deleteByName('MONSTER_BALIKOBOT_ID_ORDER_PARAM');
}
//taby v adminu
public function setTab()
{
return true;
}
public function unsetTab()
{
return true;
}
//tabulky v DB
public function setDatabase()
{
$sql = '
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'monster_balikobot_carriers` (
`id_carrier` int(11) NOT NULL,
`code` varchar(50) NOT NULL,
`service` varchar(50) NOT NULL,
`name` varchar(255) NOT NULL,
`service_name` varchar(255) NOT NULL,
PRIMARY KEY (`id_carrier`)
) DEFAULT CHARSET=utf8';
if (!Db::getInstance()->execute($sql)) {
return false;
}
$sql = '
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'monster_balikobot_packages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_order` int(11) UNSIGNED NOT NULL,
`variable_symbol` VARCHAR(9) NULL DEFAULT NULL,
`package_id` varchar(50) NOT NULL,
`batch_id` VARCHAR(50) NULL DEFAULT NULL,
`carrier_id` varchar(50) NOT NULL,
`carrier` int(11) NOT NULL,
`carrier_package_type` varchar(50) NULL,
`label_text` varchar(255) NOT NULL DEFAULT \'\',
`supplier` int(11) NOT NULL DEFAULT 0,
`label_url` varchar(255) NOT NULL,
`sent` tinyint(1) NOT NULL DEFAULT 0,
`delivered` tinyint(1) NOT NULL DEFAULT -1,
`order_number` int(11) NOT NULL DEFAULT 1,
`order_count` int(11) NOT NULL DEFAULT 1,
`price_type` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT 1,
`custom_price` DECIMAL( 20, 6 ) NULL DEFAULT 0,
`width` DECIMAL( 20, 6 ) NULL DEFAULT 0,
`height` DECIMAL( 20, 6 ) NULL DEFAULT 0,
`length` DECIMAL( 20, 6 ) NULL DEFAULT 0,
`id_branch` varchar(150) NULL DEFAULT NULL,
`api_user` varchar(150) NULL DEFAULT NULL,
`api_key` varchar(150) NULL DEFAULT NULL,
`carrier_code` varchar(50) NULL DEFAULT NULL,
`id_employee` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8';
if (!Db::getInstance()->execute($sql)) {
return false;
}
$sql = '
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'monster_balikobot_orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`supplier_id` int(11) UNSIGNED NULL,
`carrier_code` varchar(50) NOT NULL,
`order_id` varchar(50) NOT NULL,
`file_url` varchar(255) NOT NULL,
`handover_url` varchar(255) NOT NULL,
`labels_url` varchar(255) NOT NULL,
`date` datetime NOT NULL,
`count` int(11) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8';
if (!Db::getInstance()->execute($sql)) {
return false;
}
$sql = '
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'monster_balikobot_checks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_order` int(11) NOT NULL,
`checked` int(1) NOT NULL DEFAULT 0,
`error` varchar(255) NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8';
if (!Db::getInstance()->execute($sql)) {
return false;
}
$sql = '
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'monster_balikobot_content_data` (
`id_product` int(10) unsigned,
`hs_code` varchar(30) NULL DEFAULT NULL,
`id_country` int(10) unsigned NULL DEFAULT NULL,
PRIMARY KEY (`id_product`),
CONSTRAINT `' . _DB_PREFIX_ . 'monster_product_ibfk_1` FOREIGN KEY (`id_product`) REFERENCES `' . _DB_PREFIX_ . 'product` (`id_product`) ON DELETE CASCADE,
CONSTRAINT `' . _DB_PREFIX_ . 'monster_store_ibfk_1` FOREIGN KEY (`id_country`) REFERENCES `' . _DB_PREFIX_ . 'country` (`id_country`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci';
if (!Db::getInstance()
->execute($sql)) {
return false;
}
// in case of update from previous versions
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `delivered` TINYINT(1) NOT NULL DEFAULT -1 AFTER `sent`');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `price_type` TINYINT(1) NOT NULL DEFAULT 1 AFTER `order_count`');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `custom_price` DECIMAL( 20, 6 ) NULL DEFAULT 0 AFTER `price_type`');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `id_employee` INT(11) NULL DEFAULT NULL AFTER `custom_price`');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `variable_symbol` VARCHAR(9) NULL DEFAULT NULL AFTER `id_order`');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `batch_id` VARCHAR(50) NULL DEFAULT NULL AFTER `package_id`');
$this->updateOrAlterTable('UPDATE ' . _DB_PREFIX_ . 'monster_balikobot_packages SET batch_id = package_id WHERE batch_id IS NULL');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_orders` CHANGE `order_id` `order_id` VARCHAR(50) NOT NULL');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_orders` CHANGE `supplier_id` `supplier_id` INT(11) UNSIGNED NULL DEFAULT NULL');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `width` DECIMAL( 20, 6 ) NULL DEFAULT 0 AFTER `id_order`');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `height` DECIMAL( 20, 6 ) NULL DEFAULT 0 AFTER `id_order`');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `length` DECIMAL( 20, 6 ) NULL DEFAULT 0 AFTER `id_order`');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `id_branch` VARCHAR(150) NULL DEFAULT NULL AFTER `id_order`');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `api_user` varchar(150) NULL DEFAULT NULL AFTER `id_order`');
$this->updateOrAlterTable('ALTER TABLE `' . _DB_PREFIX_ . 'monster_balikobot_packages` ADD `api_key` varchar(150) NULL DEFAULT NULL AFTER `id_order`');
return true;
}
private function updateOrAlterTable($sql)
{
try {
Db::getInstance()->execute($sql);
} catch (Exception $e) {}
}
public function unsetDatabase()
{
if (Configuration::get('AM_BALIKOBOT_DROP_TABLES_WHEN_UNINSTALL')) {
$this->updateOrAlterTable('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'monster_balikobot_carriers`');
$this->updateOrAlterTable('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'monster_balikobot_packages`');
$this->updateOrAlterTable('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'monster_balikobot_orders`');
$this->updateOrAlterTable('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'monster_balikobot_checks`');
$this->updateOrAlterTable('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'monster_balikobot_content_data`');
}
return true;
}
/**
* hookActionCarrierUpdate
*
* Carrier Update
* This hook is called when a carrier is updated
* @param array $params
*/
public function hookActionCarrierUpdate($params)
{
try {
if (!isset($params['carrier']) || !isset($params['id_carrier'])) {
return false;
}
$id_carrier_old = (int) $params['id_carrier'];
$id_carrier_new = (int) $params['carrier']->id;
if ($id_carrier_old && $id_carrier_new) {
Db::getInstance()->execute('UPDATE ' . _DB_PREFIX_ . 'monster_balikobot_carriers SET id_carrier = \''.$id_carrier_new.'\' WHERE id_carrier = ' . $id_carrier_old);
Db::getInstance()->execute('UPDATE ' . _DB_PREFIX_ . 'orders SET id_carrier = \''.$id_carrier_new.'\' WHERE id_carrier = ' . $id_carrier_old);
Db::getInstance()->execute('UPDATE ' . _DB_PREFIX_ . 'monster_balikobot_packages SET carrier = \''.$id_carrier_new.'\' WHERE carrier = ' . $id_carrier_old);
//Db::getInstance()->execute('UPDATE ' . _DB_PREFIX_ . 'order_carrier SET id_carrier = \''.$id_carrier_new.'\' WHERE id_carrier = ' . $id_carrier_old); // asi by se melo provest i v tabulce order_carrier, ale presta to neresi
}
} catch (\Exception $th) {
//throw $th;
}
}
//hooky
public function setHooks()
{
if (_PS_VERSION_ >= "1.7.7.0") {
return $this->registerHook((_PS_VERSION_ >= "8.0.0" ? "displayBackOfficeHeader" : "backOfficeHeader")) &&
$this->registerHook('displayAdminOrderTop') &&
$this->registerHook('displayAdminOrderMain') &&
$this->registerHook('displayAdminAfterHeader') &&
$this->registerHook('displayAdminProductsExtra') &&
$this->registerHook('actionProductUpdate') &&
$this->registerHook('actionBalikobotAddPackageBefore') &&
$this->registerHook('actionBalikobotAddPackageAfter') &&
$this->registerHook('actionBalikobotPreparePackageData') &&
$this->registerHook('actionCarrierUpdate');
} else {
return $this->registerHook('backOfficeHeader') &&
$this->registerHook('displayAdminListBefore') &&
$this->registerHook('displayAdminOrderContentShip') &&
$this->registerHook('actionBalikobotAddPackageBefore') &&
$this->registerHook('actionBalikobotAddPackageAfter')&&
$this->registerHook('actionBalikobotPreparePackageData')&&
$this->registerHook('actionCarrierUpdate');
}
}
public function getContent()
{
$output = null;
if (Tools::isSubmit('submitBalikobotKeys')) {
Configuration::updateValue('MONSTER_BALIKOBOT_LICENSE_KEY', Tools::getValue('license_key'));
$this->licenseKey = Tools::getValue('license_key');
Configuration::updateValue('MONSTER_BALIKOBOT_API_USER', strval(Tools::getValue('API_USER')));
Configuration::updateValue('MONSTER_BALIKOBOT_API_KEY', strval(Tools::getValue('API_KEY')));
Configuration::updateValue('MONSTER_BALIKOBOT_DEBUG', strval(Tools::getValue('DEBUG')));
Configuration::updateValue('MONSTER_BALIKOBOT_COD_MODULE', strval(Tools::getValue('cod_module')));
Configuration::updateValue('MONSTER_BALIKOBOT_COD_MODULE_2', strval(Tools::getValue('cod_module_2')));
Configuration::updateValue('MONSTER_BALIKOBOT_NEW_STATE_1', strval(Tools::getValue('new_state_1')));
Configuration::updateValue('MONSTER_BALIKOBOT_NEW_STATE_2', strval(Tools::getValue('new_state_2')));
Configuration::updateValue('MONSTER_BALIKOBOT_NEW_STATE_3', strval(Tools::getValue('new_state_3')));
Configuration::updateValue('MONSTER_BALIKOBOT_NEW_STATE_4', strval(Tools::getValue('new_state_4')));
Configuration::updateValue('MONSTER_BALIKOBOT_PACKAGE_STATE_OVERRIDE', strval(Tools::getValue('package_state_override')));
Configuration::updateValue('MONSTER_BALIKOBOT_ID_ORDER_PARAM', strval(Tools::getValue('id_order_param')));
Configuration::updateValue('MONSTER_BALIKOBOT_SUPPLIERS', strval(Tools::getValue('suppliers')));
Configuration::updateValue('MONSTER_BALIKOBOT_TRACKING_MAIL', strval(Tools::getValue('tracking_mail')));
Configuration::updateValue('MONSTER_BALIKOBOT_RECALCULATE_COD_INSURANCE', strval(Tools::getValue('recalculate_cod_ins')));
Configuration::updateValue('MONSTER_BALIKOBOT_EMPLOYEE_PACKAGES', strval(Tools::getValue('employee_packages')));
Configuration::updateValue('MONSTER_BALIKOBOT_NEW_TRANSLATION_SYSTEM', strval(Tools::getValue('new_translation_system')));
Configuration::updateValue('AM_BALIKOBOT_COD_PRICE_IN_FIRST_PACKAGE_ONLY', strval(Tools::getValue('AM_BALIKOBOT_COD_PRICE_IN_FIRST_PACKAGE_ONLY')));
Configuration::updateValue('AM_BALIKOBOT_DROP_TABLES_WHEN_UNINSTALL', strval(Tools::getValue('AM_BALIKOBOT_DROP_TABLES_WHEN_UNINSTALL')));
$output .= $this->displayConfirmation($this->l('Nastaven bylo spn uloeno.'));
} else {
if (Tools::isSubmit('submitBalikobotCarriers')) {
$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
$carriers = Carrier::getCarriers($default_lang, false, false, false, null, Carrier::ALL_CARRIERS);
//var_dump(Tools::getAllValues());
foreach ($carriers as $carrier) {
$id_carrier = $carrier['id_carrier'];
$value = strval(Tools::getValue('CARRIER_' . $id_carrier));
$bbCarrier = new BalikobotCarrier($id_carrier);
$bbCarrier->setCodeWithService($value);
$bbCarrier->save();
}
$output .= $this->displayConfirmation($this->l('Piazen dopravc bylo spn uloeno.'));
}
if (Tools::isSubmit('submitBalikobotCarriersCustoms')) {
Configuration::updateValue('MONSTER_BALIKOBOT_CARRIER_CUSTOM_TOPTRANS', Tools::getValue('CARRIER_CUSTOM_TOPTRANS'));
Configuration::updateValue('MONSTER_BALIKOBOT_CARRIER_CUSTOM_PPL', Tools::getValue('CARRIER_CUSTOM_PPL'));
Configuration::updateValue('MONSTER_BALIKOBOT_CARRIER_CUSTOM_GEIS', Tools::getValue('CARRIER_CUSTOM_GEIS'));
Configuration::updateValue('MONSTER_BALIKOBOT_CARRIER_CUSTOM_GWCZ', Tools::getValue('CARRIER_CUSTOM_GWCZ'));
Configuration::updateValue('MONSTER_BALIKOBOT_CARRIER_CUSTOM_DHLFREIGHTEC', Tools::getValue('CARRIER_CUSTOM_DHLFREIGHTEC'));
foreach (BalikobotCarrier::getAllAssignedCarriers() as $bbCarrier) {
if ($bbCarrier->code == 'toptrans') {
Configuration::updateValue(
'MONSTER_BALIKOBOT_CARRIER_CUSTOM_SERVICE_' . $bbCarrier->id_carrier,
Tools::getValue('CARRIER_CUSTOM_SERVICE_' . $bbCarrier->id_carrier)
);
}
}
}
if (Tools::isSubmit('submitBalikobotSuppliers')) {
Configuration::updateValue('MONSTER_BALIKOBOT_SUPPLIERS_STATUS', json_encode(Tools::getValue('supplier_status')));
if (is_array(Tools::getValue('SUPPLIER_API'))) {
foreach (Tools::getValue('SUPPLIER_API') as $id => $data) {
Configuration::updateValue('MONSTER_BALIKOBOT_SUPPLIERS_API_' . $id, json_encode($data));
}
}
}
}
if (!LegacyModuleLicenseValidator::isValid(
$this->name,
Configuration::get(strtoupper($this->name) . '_LICENSE_KEY')
)) {
$output .= '<div class="alert alert-danger"><strong>Licence nen platn.</strong> Funcionalita modulu nebude dostupn</div>';
if (LegacyModuleLicenseValidator::$message) {
$output .= '<div class="alert alert-danger"><strong>' . LegacyModuleLicenseValidator::$message . '</strong></div>';
}
} else {
if (@LegacyModuleLicenseValidator::$new_version) {
$output .= '<div class="alert alert-warning" >' . @LegacyModuleLicenseValidator::$new_version . '</div>';
}
$output .= '<div class="alert alert-success"><strong>Licence je platn.</strong></div>';
$hash = Configuration::get('MONSTER_BALIKOBOT_SECURITY_HASH', false);
$date = Configuration::get('MONSTER_BALIKOBOT_INSTALL_DATE', false);
if (!$hash) {
$hash = Tools::passwdGen(32);
Configuration::updateValue('MONSTER_BALIKOBOT_SECURITY_HASH', $hash);
}
if (!$date) {
Configuration::updateValue('MONSTER_BALIKOBOT_INSTALL_DATE', date("Y-m-d H:i:s"));
}
try {
$base_shop_url = Context::getContext()->shop && method_exists(Context::getContext()->shop, 'getBaseURL') ? rtrim(Context::getContext()->shop->getBaseURL(false, true),"/") : _PS_BASE_URL_;
} catch (\Exception $e) {
$base_shop_url = _PS_BASE_URL_;
}
$output .= '<div class="alert alert-info">
<strong>Script pro automatickou kontrolu adres objednvek je zde: <a target="_blank" href="' . $base_shop_url . '/modules/'.$this->name.'/cron.php?hash=' . $hash . '">' . $base_shop_url . '/modules/'.$this->name.'/cron.php?hash=' . $hash . '</a>.</strong>
<br/><br/>Script kontroluje doruitelnost novch a stav expedovanch objednvek. Nen nutn pro sprvn fungovn modulu.
</div>';
}
$this->context->smarty->assign(
[
'balikobot_orders' => BalikobotOrder::getOrdersHistory(),
]
);
return $output . $this->displayFormKeys() . $this->displayFormCarriers() . $this->displayFormCarriersCustoms() . $this->displayFormSuppliers() . $this->displayOrderHistory();
}
protected function displayOrderHistory()
{
if (!LegacyModuleLicenseValidator::isValid($this->name, Configuration::get(strtoupper($this->name) . '_LICENSE_KEY'))) {
return null;
}
return $this->display(__DIR__ . DIRECTORY_SEPARATOR . 'monster_balikobot.php', 'orders_history.tpl');
}
public function displayFormKeys()
{
$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
$fields_form[0]['form'] = array(
'legend' => array(
'title' => $this->l('Licence modulu'),
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Licenn kl'),
'name' => 'license_key',
'required' => true
),
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
)
);
if (LegacyModuleLicenseValidator::isValid($this->name, $this->licenseKey)) {
$paymentModules = PaymentModule::getInstalledPaymentModules();
foreach ($paymentModules as &$module) {
$module['displayName'] = Module::getModuleName($module['name']) . ' (' . $module['name'] . ')';
}
$orderStates = OrderState::getOrderStates($default_lang);
$fields_form[1]['form'] = array(
'legend' => array(
'title' => $this->l('Nastaven'),
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('API uivatel'),
'name' => 'API_USER',
'size' => 20,
'required' => true
),
array(
'type' => 'text',
'label' => $this->l('API kl'),
'name' => 'API_KEY',
'size' => 20,
'required' => true
),
array(
'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
'class' => 't',
'label' => $this->l('Logovn komunikace'),
'name' => 'DEBUG',
'desc' => 'Ukldat komunikaci s Balkobotem do samostatnho logu.',
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Yes')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('No')
)
),
),
array(
'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
'class' => 't',
'label' => $this->l('Expedice z vce sklad'),
'name' => 'suppliers',
'desc' => 'Nutn pedchoz aktivace na stran Balkobotu.',
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Yes')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('No')
)
),
),
array(
'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
'class' => 't',
'label' => $this->l('Odeslat email po naten sledovacho sla'),
'name' => 'tracking_mail',
'desc' => 'Zkaznci automaticky dostanou e-mail se sledovacm slem.',
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Yes')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('No')
)
),
),
array(
'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
'class' => 't',
'label' => $this->l('Expedovat pouze vlastn balky'),
'name' => 'employee_packages',
'desc' => 'Zamstnanci budou mt monost odeslat dopravcm pouze ttky, kter sami vygenerovali.',
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Yes')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('No')
)
),
),
array(
'type' => 'select',
'label' => 'Jako ID objednvky do Balkobotu odeslat',
'name' => 'id_order_param',
'options' => array(
'query' => [
['name' => 'id', 'displayName' => 'slo (ID) objednvky'],
['name' => 'reference', 'displayName' => 'Kd objednvky'],
],
'id' => 'name',
'name' => 'displayName'
),
'required' => false
),
array(
'type' => 'select',
'label' => 'Modul pro dobrku',
'name' => 'cod_module',
'options' => array(
'query' => array_merge([['name' => '-', 'displayName' => '-- dn --']], $paymentModules),
'id' => 'name',
'name' => 'displayName'
),
'required' => false
),
array(
'type' => 'select',
'label' => 'Modul pro dobrku 2',
'name' => 'cod_module_2',
'options' => array(
'query' => array_merge([['name' => '-', 'displayName' => '-- dn --']], $paymentModules),
'id' => 'name',
'name' => 'displayName'
),
'required' => false
),
array(
'type' => 'select',
'label' => 'Stav objednvky po vygenerovn ttku',
'name' => 'new_state_1',
'options' => array(
'query' => array_merge([['id_order_state' => '', 'name' => '-- nemnit --']], $orderStates),
'id' => 'id_order_state',
'name' => 'name'
),
'required' => false
),
array(
'type' => 'select',
'label' => 'Stav objednvky po objednn svozu',
'name' => 'new_state_2',
'options' => array(
'query' => array_merge([['id_order_state' => '', 'name' => '-- nemnit --']], $orderStates),
'id' => 'id_order_state',
'name' => 'name'
),
'required' => false
),
array(
'type' => 'select',
'label' => 'Stav objednvky po chybn kontrole adresy',
'name' => 'new_state_3',
'options' => array(
'query' => array_merge([['id_order_state' => '', 'name' => '-- nemnit --']], $orderStates),
'id' => 'id_order_state',
'name' => 'name'
),
'required' => false,
'desc' => 'Vyaduje aktivn script pro kontrolu objednvek.'
),
array(
'type' => 'select',
'label' => 'Stav objednvky po spnm doruen balku',
'name' => 'new_state_4',
'options' => array(
'query' => array_merge([['id_order_state' => '', 'name' => '-- nemnit --']], $orderStates),
'id' => 'id_order_state',
'name' => 'name'
),
'required' => false,
'desc' => 'Vyaduje aktivn script pro kontrolu objednvek.'
),
array(
'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
'class' => 't',
'label' => $this->l('Kad balk mn stav objednvky'),
'name' => 'package_state_override',
'desc' => 'Pokud chcete, aby stav objednvky mnil pouze prvn balk u objednvky, nechte tuto volbu vypnutou.',
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Yes')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('No')
)
),
),
array(
'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
'class' => 't',
'label' => $this->l('Pepotat dobrku a pojitn do vchoz mny clov zem'),
'name' => 'recalculate_cod_ins',
'desc' => 'Zapnte tuto monost, pokud expedujete balky do zahrani a mte problm s odmtnm dobrky nebo hodnoty pojitn z dvodu neplatn mny. V nastaven zem pak sta vybrat vchoz mnu, v jak chcete do dan zem zbo expedovat.',
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Yes')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('No')
)
),
),
array(
'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
'class' => 't',
'label' => $this->l('Pout nov pekladov systm'),
'name' => 'new_translation_system',
'desc' => '',
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Yes')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('No')
)
),
),
array(
'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
'label' => $this->l('Cena dobrky se pot pouze v prvnm balku objednvky'),
'name' => 'AM_BALIKOBOT_COD_PRICE_IN_FIRST_PACKAGE_ONLY',
'desc' => '',
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Yes')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('No')
)
),
),
array(
'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
'label' => $this->l('Pi odinstalaci modulu mazat i tabulky v databzi'),
'name' => 'AM_BALIKOBOT_DROP_TABLES_WHEN_UNINSTALL',
'desc' => '',
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Yes')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('No')
)
),
)
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
)
);
}
$helper = $this->getFormHelper('submitBalikobotKeys', $default_lang);
$helper->fields_value['license_key'] = Configuration::get('MONSTER_BALIKOBOT_LICENSE_KEY');
if (LegacyModuleLicenseValidator::isValid($this->name, $this->licenseKey)) {
$helper->fields_value['API_USER'] = Configuration::get('MONSTER_BALIKOBOT_API_USER');
$helper->fields_value['API_KEY'] = Configuration::get('MONSTER_BALIKOBOT_API_KEY');
$helper->fields_value['DEBUG'] = Configuration::get('MONSTER_BALIKOBOT_DEBUG');
$helper->fields_value['cod_module'] = Configuration::get('MONSTER_BALIKOBOT_COD_MODULE');
$helper->fields_value['cod_module_2'] = Configuration::get('MONSTER_BALIKOBOT_COD_MODULE_2');
$helper->fields_value['new_state_1'] = Configuration::get('MONSTER_BALIKOBOT_NEW_STATE_1');
$helper->fields_value['new_state_2'] = Configuration::get('MONSTER_BALIKOBOT_NEW_STATE_2');
$helper->fields_value['new_state_3'] = Configuration::get('MONSTER_BALIKOBOT_NEW_STATE_3');
$helper->fields_value['new_state_4'] = Configuration::get('MONSTER_BALIKOBOT_NEW_STATE_4');
$helper->fields_value['package_state_override'] = Configuration::get('MONSTER_BALIKOBOT_PACKAGE_STATE_OVERRIDE');
$helper->fields_value['id_order_param'] = Configuration::get('MONSTER_BALIKOBOT_ID_ORDER_PARAM');
$helper->fields_value['suppliers'] = Configuration::get('MONSTER_BALIKOBOT_SUPPLIERS');
$helper->fields_value['tracking_mail'] = Configuration::get('MONSTER_BALIKOBOT_TRACKING_MAIL');
$helper->fields_value['employee_packages'] = Configuration::get('MONSTER_BALIKOBOT_EMPLOYEE_PACKAGES');
$helper->fields_value['recalculate_cod_ins'] = Configuration::get('MONSTER_BALIKOBOT_RECALCULATE_COD_INSURANCE');
$helper->fields_value['new_translation_system'] = Configuration::get('MONSTER_BALIKOBOT_NEW_TRANSLATION_SYSTEM');
$helper->fields_value['AM_BALIKOBOT_COD_PRICE_IN_FIRST_PACKAGE_ONLY'] = Configuration::get('AM_BALIKOBOT_COD_PRICE_IN_FIRST_PACKAGE_ONLY');
$helper->fields_value['AM_BALIKOBOT_DROP_TABLES_WHEN_UNINSTALL'] = Configuration::get('AM_BALIKOBOT_DROP_TABLES_WHEN_UNINSTALL');
}
// EXTEND MODULE CONFIGURATION
Hook::exec('actionBalikobotFormMainSettings', array('fields_form' => &$fields_form, 'helper' => &$helper));
return $helper->generateForm($fields_form);
}
public function displayFormCarriers()
{
if (!LegacyModuleLicenseValidator::isValid($this->name, $this->licenseKey)) {
return null;
}
$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
$inputs = [];
$bb_carriers_options = [];
try {
$bbCarriers = BalikobotCarrier::getAllPossibleCarriers();
} catch (BalikobotAPIException $e) {
return $e->getMessageList()[0];
}
foreach ($bbCarriers as $code => $name) {
$bb_carriers_options[] = array(
'id_option' => $code,
'name' => $name,
);
}
$carriers = Carrier::getCarriers($default_lang, false, false, false, null, Carrier::ALL_CARRIERS);
foreach ($carriers as $carrier) {
$inputs[] = array(
'type' => 'select',
'label' => $carrier['name'],
'name' => 'CARRIER_' . $carrier['id_carrier'],
'required' => true,
'options' => array(
'query' => $bb_carriers_options,
'id' => 'id_option',
'name' => 'name',
),
);
}
$fields_form[0]['form'] = array(
'legend' => array(
'title' => $this->l('Piazen dopravc'),
),
'input' => $inputs,
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
)
);
$helper = $this->getFormHelper('submitBalikobotCarriers', $default_lang);
foreach ($carriers as $carrier) {
$id_carrier = $carrier['id_carrier'];
$varName = 'CARRIER_' . $id_carrier;
$bbCarrier = new BalikobotCarrier($id_carrier);
$helper->fields_value[$varName] = $bbCarrier->getCodeWithService();
}
return $helper->generateForm($fields_form);
}
public function displayFormCarriersCustoms()
{
if (!LegacyModuleLicenseValidator::isValid($this->name, $this->licenseKey)) {
return null;
}
$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
$inputs = [];
foreach (BalikobotCarrier::getAllAssignedCarriers() as $bbCarrier) {
if (
$bbCarrier->code == 'toptrans' ||
$bbCarrier->code == 'geis' ||
$bbCarrier->code == 'dhlfreightec' ||
$bbCarrier->code == 'gwcz' ||
($bbCarrier->code == 'ppl' && in_array($bbCarrier->service, [15, 19]))
) { // paletov pepravy s mu_type
$inputs[] = array(
'type' => 'select',
'label' => $bbCarrier->name . ', ' . $bbCarrier->serviceName . ' - vchoz typ balku',
'name' => 'CARRIER_CUSTOM_' . strtoupper($bbCarrier->code),
'required' => true,
'options' => array(
'query' => BalikobotCarrier::getCarrierManipulationUnits($bbCarrier->code),
'id' => 'code',
'name' => 'name',
),
);
}
if ($bbCarrier->code == 'toptrans') { // toptrans vnos do patra
$inputs[] = array(
'type' => 'select',
'label' => $bbCarrier->name . ', ' . $bbCarrier->serviceName . ' - Top Comfort',
'name' => 'CARRIER_CUSTOM_SERVICE_' . $bbCarrier->id_carrier,
'required' => true,
'options' => array(
'query' => array(['code' => 0, 'name' => 'Ne'], ['code' => 1, 'name' => 'Ano']),
'id' => 'code',
'name' => 'name',
),
);
}
}
if ($inputs) {
$fields_form[0]['form'] = array(
'legend' => array(
'title' => $this->l('Speciln nastaven dopravc'),
),
'input' => $inputs,
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
)
);
$helper = $this->getFormHelper('submitBalikobotCarriersCustoms', $default_lang);
foreach ($inputs as $i) {
$helper->fields_value[$i['name']] = Configuration::get('MONSTER_BALIKOBOT_' . $i['name']);
}
return $helper->generateForm($fields_form);
} else {
return '';
}
}
public function displayFormSuppliers()
{
$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
if (LegacyModuleLicenseValidator::isValid($this->name, $this->licenseKey) && Configuration::get(
'MONSTER_BALIKOBOT_SUPPLIERS'
)) {
$suppliers = Supplier::getSuppliers();
$fields_form[0]['form'] = array(
'legend' => array(
'title' => $this->l('Nastaven dodavatel'),
),
'input' => array(),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
)
);
$helper = $this->getFormHelper('submitBalikobotSuppliers', $default_lang);
foreach ($suppliers as $s) {
$fields_form[0]['form']['input'][] =
array(
'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
'class' => 't',
'label' => $s['name'],
'name' => 'supplier_status[' . (int)$s['id_supplier'] . ']',
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Yes')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('No')
)
),
);
$helper->fields_value['supplier_status[' . (int)$s['id_supplier'] . ']'] = 0;
}
$fields_form[0]['form']['description'] = "Dodavatel, kter zde aktivujete, budou mt ttky automaticky tisknut s jejich adresou pes vlastn API.";
$formId = 1;
$suppliersBB = json_decode(Configuration::get('MONSTER_BALIKOBOT_SUPPLIERS_STATUS'));
if (is_array($suppliersBB) || is_object($suppliersBB)) {
foreach ($suppliersBB as $id => $state) {
$helper->fields_value['supplier_status[' . $id . ']'] = $state;
if ($state) {
$sup = new Supplier($id);
$fields_form[$formId]['form'] = array(
'legend' => array(
'title' => $sup->name,
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('API uivatel'),
'name' => 'SUPPLIER_API[' . $id . '][api_user]',
'size' => 20,
'required' => true
),
array(
'type' => 'text',
'label' => $this->l('API kl'),
'name' => 'SUPPLIER_API[' . $id . '][api_key]',
'size' => 20,
'required' => true
)
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
)
);
if (Configuration::get('MONSTER_BALIKOBOT_SUPPLIERS_API_' . $id))
{
$supplies_api = json_decode(Configuration::get('MONSTER_BALIKOBOT_SUPPLIERS_API_' . $id));
foreach ($supplies_api as $key => $value) {
$helper->fields_value['SUPPLIER_API[' . $id . '][' . $key . ']'] = $value;
}
}
$formId++;
}
}
}
return @$helper->generateForm($fields_form);
}
}
public function getFormHelper($submitName, $defaultLang)
{
$helper = new HelperForm();
// Module, token and currentIndex
$helper->module = $this;
$helper->name_controller = $this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name;
// Language
$helper->default_form_language = $defaultLang;
$helper->allow_employee_form_lang = $defaultLang;
// Title and toolbar
$helper->title = $this->displayName;
$helper->show_toolbar = true;
$helper->toolbar_scroll = true;
$helper->submit_action = $submitName;
$helper->toolbar_btn = array(
'save' => array(
'desc' => $this->l('Save'),
'href' => AdminController::$currentIndex . '&configure=' . $this->name . '&save' . $this->name . '&token=' . Tools::getAdminTokenLite(
'AdminModules'
),
),
'back' => array(
'href' => AdminController::$currentIndex . '&token=' . Tools::getAdminTokenLite('AdminModules'),
'desc' => $this->l('Back to list')
),
);
return $helper;
}
public function hookDisplayAdminAfterHeader($params)
{
if (Tools::getValue('controller') == 'AdminOrders' && Tools::getValue('id_order') == false) {
try {
// order for all carriers
if (Tools::isSubmit('submitObjednatSvoz')) {
$result = BalikobotPackage::orderPackagesForAll();
$this->context->smarty->assign(['balikobot_last_order' => $result]);
}
// order for one carrier
$submitOrderInfo = $this->getSubmitOrderInfo();
if ($submitOrderInfo !== false) {
$result = BalikobotPackage::orderPackagesForCarrier($submitOrderInfo['supplierId'], $submitOrderInfo['carrierCode']);
$carrierName = BalikobotCarrier::getCarrierNameFromCode($submitOrderInfo['carrierCode']);
$supplierName = Supplier::getNameById($submitOrderInfo['supplierId']);
$this->context->smarty->assign(['balikobot_last_order' => [$supplierName => [$carrierName => $result]]]);
}
// print labels for selected orders
if (Tools::isSubmit('submitPrintLabel')) {
$packageId = Tools::getValue('packageId');
$position = Tools::getValue('position');
$id_order = Tools::getValue('orderIc');
if (!$id_order)
throw new Exception("Nen znmo ID objednvky. Pravdpodobn chyba v cache prohlee nebo souboru ablony.", 1);
$package = new BalikobotPackage($packageId);
if (!$package->id_order) {
$package->id_order = $id_order;
$package->supplier = BalikobotPackage::getPackageSupplier($id_order);
}
// set new package weight, if provided
$weight = Tools::getValue('weight');
if ($weight != '') {
BalikobotPackage::setWeight($package->id_order, $weight);
}
// set new package vat and custom price, if provided
if (Tools::getValue('price_type')) {
$package->price_type = Tools::getValue('price_type');
}
$package->custom_price = Tools::getValue('price');
// set new custom label text, if provided
$labelText = Tools::getValue('label_text');
if ($labelText != '') {
$package->label_text = $labelText;
}
if (Tools::getValue('width')) {
$package->width = Tools::getValue('width');
}
if (Tools::getValue('length')) {
$package->length = Tools::getValue('length');
}
if (Tools::getValue('height')) {
$package->height = Tools::getValue('height');
}
if (Tools::getValue('variable_symbol')) {
$package->variable_symbol = Tools::getValue('variable_symbol');
}
// set new carrier package type, if provided
$carrierPackageType = Tools::getValue('carrier_package_type');
if ($carrierPackageType != '') {
$package->carrier_package_type = $carrierPackageType;
}
// set new packages number, if provided
$pieces = Tools::getValue('pieces');
if ($pieces != '') {
$package_pieces = $pieces;
} else {
$package_pieces = 1;
}
// which label to print
$piece = Tools::getValue('piece');
if ($piece != '') {
$package_piece = $piece;
} else {
$package_piece = 'all';
}
$labelUrl = $package->getLabelUrl($position, $package_pieces, $package_piece);
Tools::redirect($labelUrl);
}
} catch (BalikobotAPIException $e) {
foreach ($e->getMessageList() as $message) {
$this->warnings[] = $message;
}
} catch (Exception $e) {
$this->warnings[] = $e->getMessage();
}
return $this->hookDisplayAdminListBefore($params);
} else {
return null;
}
}
public function hookDisplayAdminListBefore($params)
{
if (Tools::getValue('controller') == 'AdminOrders') {
$this->context->smarty->assign(['balikobot_order' => BalikobotPackage::getPackagesToOrderCount()]);
if (_PS_VERSION_ >= "1.7.7.0") {
$this->context->smarty->assign(array(
'balikobot_token' => Tools::getValue('_token')
));
return $this->display(__DIR__ . DIRECTORY_SEPARATOR . 'monster_balikobot.php', 'orders_list_177.tpl');
} else {
return $this->display(__DIR__ . DIRECTORY_SEPARATOR . 'monster_balikobot.php', 'orders_list.tpl');
}
} else {
return null;
}
}
/**
* Hook to display Balikobot buttons in Ship part of the order detail.
*/
public function hookDisplayAdminOrderMain($params)
{
return $this->hookDisplayAdminOrderContentShip($params);
}
public function hookDisplayAdminOrderContentShip($params)
{
$packageId = Tools::getValue('packageId');
if (_PS_VERSION_ >= "1.7.7.0") {
$order = new Order((int)$params['id_order']);
// pro 1.7.7.0 se veker post requesty e v top hooku
} else {
$order = $params['order'];
try {
if (Tools::isSubmit('submitSmazaniStitku')) {
BalikobotPackage::delete($packageId);
$this->context->controller->confirmations[] = 'Balk byl spn odebrn z API Balkobotu.';
}
} catch (BalikobotAPIException $e) {
foreach ($e->getMessageList() as $message) {
$this->context->controller->warnings[] = $message;
}
} catch (Exception $e) {
$this->context->controller->warnings[] = $e->getMessage();
}
}
$packages = BalikobotPackage::getOrderPackages($order->id);
if (isset($packages[0]) && $packages[0]) {
$position_count = $packages[0]->getLabelPositionCount();
}
$package = new BalikobotPackage(0);
$carriers = BalikobotCarrier::getAllAssignedCarriers();
$balikobot_mu_types = null;
if (isset($package->carrier) && in_array($package->carrier->code, ['toptrans', 'gwcz', 'geis', 'dhlfreightec']) && is_null($package->carrier_package_type)) {
$package->carrier_package_type = Configuration::get('MONSTER_BALIKOBOT_CARRIER_CUSTOM_' . strtoupper($package->carrier->code));
$balikobot_mu_types = BalikobotCarrier::getCarrierManipulationUnits($package->carrier->code);
}
$this->context->smarty->assign(array(
'balikobot_packages' => $packages,
'balikobot_id_order' => $order->id,
'balikobot_carriers' => $carriers,
'balikobot_position_count' => isset($position_count) && $position_count ? $position_count : 0,
// 'balikobot_pieces_count' => $package->order_count,
'balikobot_label_text' => '', // $package->label_text,
'balikobot_carrier_code' => '', // $package->carrier->code,
// 'balikobot_carrier_package_type' => $package->carrier_package_type,
'balikobot_mu_types' => $balikobot_mu_types
));
if (_PS_VERSION_ >= "1.7.7.0") {
return $this->display(__DIR__ . DIRECTORY_SEPARATOR . 'monster_balikobot.php', 'ship_177.tpl');
} else {
return $this->display(__DIR__ . DIRECTORY_SEPARATOR . 'monster_balikobot.php', 'ship.tpl');
}
}
public function hookDisplayAdminOrderTop()
{
try {
// print labels for selected orders
if (Tools::isSubmit('submitPrintLabel')) {
$packageId = (int) Tools::getValue('packageId');
$id_order = (int) Tools::getValue('orderId');
$position = Tools::getValue('position');
if (!$id_order)
throw new Exception("Nen znmo ID objednvky. Pravdpodobn chyba v cache prohlee nebo souboru ablony.", 1);
$package = new BalikobotPackage($packageId);
if (!$package->id_order) {
$package->id_order = $id_order;
$package->supplier = BalikobotPackage::getPackageSupplier($id_order);
}
// set new package weight, if provided
$weight = Tools::getValue('weight');
if ($weight != '') {
BalikobotPackage::setWeight($package->id_order, $weight);
}
// set new package vat and custom price, if provided
if (Tools::getValue('price_type')) {
$package->price_type = Tools::getValue('price_type');
}
if (Tools::getValue('price')) {
$package->custom_price = Tools::getValue('price');
}
if (Tools::getValue('variable_symbol')) {
$package->variable_symbol = Tools::getValue('variable_symbol');
}
if (Tools::getValue('width')) {
$package->width = (float) Tools::getValue('width');
}
if (Tools::getValue('length')) {
$package->length = (float) Tools::getValue('length');
}
if (Tools::getValue('height')) {
$package->height = (float) Tools::getValue('height');
}
// set new custom label text, if provided
$labelText = Tools::getValue('label_text');
if ($labelText != '') {
$package->label_text = $labelText;
}
// set new carrier package type, if provided
$carrierPackageType = Tools::getValue('carrier_package_type');
if ($carrierPackageType != '') {
$package->carrier_package_type = $carrierPackageType;
}
// set new packages number, if provided
$pieces = Tools::getValue('pieces');
$package_pieces = $pieces != '' ? $pieces : 1;
// which label to print
$piece = Tools::getValue('piece');
$package_piece = $piece != '' ? $piece : 'all';
$labelUrl = $package->getLabelUrl($position, $package_pieces, $package_piece);
Tools::redirect($labelUrl);
}
// drop package from Balikobot API
if (Tools::isSubmit('submitSmazaniStitku')) {
$packageId = Tools::getValue('packageId');
BalikobotPackage::delete($packageId);
$this->context->smarty->assign(array(
'balikobot_confirmations' => 'Balk byl spn odebrn z API Balkobotu.'
));
}
}
catch (BalikobotAPIException $e) {
$this->context->smarty->assign(array(
'balikobot_warnings' => $e->getMessageList()
));
}
catch (Exception $e) {
$this->context->smarty->assign(array(
'balikobot_warnings' => $e->getMessage()
));
}
return $this->display(__DIR__ . DIRECTORY_SEPARATOR . 'monster_balikobot.php', 'alerts.tpl');
}
protected function getSubmitOrderInfo()
{
$carrierCodes = array_keys(BalikobotCarrier::$bb_carriers_list);
$supplierIds = DB::getInstance()->executeS('SELECT DISTINCT supplier FROM ' . _DB_PREFIX_ . 'monster_balikobot_packages WHERE sent = 0');
foreach ($supplierIds as $supplierId) {
foreach ($carrierCodes as $carrierCode) {
if (Tools::isSubmit('submitObjednatSvoz_' . $supplierId['supplier'] . '_' . $carrierCode)) {
return ['supplierId' => $supplierId['supplier'], 'carrierCode' => $carrierCode];
}
}
}
return false;
}
/**
* Hook which adds Balikobot CSS into all back office pages.
* @return mixed
*/
public function hookBackOfficeHeader()
{
$this->context->smarty->assign('module_dir', __PS_BASE_URI__ . 'modules/' . $this->name);
return $this->context->smarty->fetch(dirname(__FILE__) . '/css/css.tpl');
}
public function hookDisplayBackOfficeHeader()
{
return $this->hookBackOfficeHeader();
}
/**
* Hook which adds Content Data information to product detail.
*/
public function hookDisplayAdminProductsExtra($params)
{
$contentData = Db::getInstance()->executeS('SELECT * FROM ' . _DB_PREFIX_ . 'monster_balikobot_content_data WHERE id_product = ' . (int) $params['id_product']);
$countries = Country::getCountries($this->context->language->id);
$countries_list = array($this->trans('Unknown', array(), 'Admin.Global'));
foreach ($countries as $country) {
$countries_list[$country['id_country']] = $country['name'];
}
$this->context->smarty->assign(array(
'hs_code' => $contentData['hs_code'],
'country_of_origin' => $contentData['id_country'],
'countries_list' => $countries_list
));
return $this->display(__DIR__ . DIRECTORY_SEPARATOR . 'monster_balikobot.php', 'products-extra.tpl');
}
public function hookActionProductUpdate($params)
{
$id_product = (int) Tools::getValue('id_product');
$hs_code = Tools::getValue('hs_code');
$id_country = (int) Tools::getValue('country_of_origin');
Db::getInstance()->execute('
INSERT INTO ' . _DB_PREFIX_ . 'monster_balikobot_content_data (id_product, hs_code, id_country)
VALUES (' . $id_product . ', \'' . pSQL($hs_code) . '\', ' . $id_country . ')
ON DUPLICATE KEY UPDATE hs_code = \'' . pSQL($hs_code) . '\', id_country = ' . $id_country
);
}
public function hookActionBalikobotAddPackageBefore($params) {}
public function hookActionBalikobotAddPackageAfter($params) {}
public function hookActionBalikobotPreparePackageData($params) {}
}
Did this file decode correctly?
Original Code
<?php eval(str_rot13(gzinflate(str_rot13(base64_decode('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')))));
Function Calls
strrev | 3 |
gzinflate | 10 |
str_rot13 | 10 |
gzuncompress | 4 |
rawurldecode | 1 |
base64_decode | 18 |
Stats
MD5 | f89b458101a8930f8af355d882a999db |
Eval Count | 16 |
Decode Time | 1417 ms |