/** * Render shop list * * @return string */ public function getRenderedShopList() { if (!Shop::isFeatureActive() || Shop::getTotalShops(false, null) < 2) { return ''; } $shop_context = Shop::getContext(); $context = Context::getContext(); $tree = Shop::getTree(); if ($shop_context == Shop::CONTEXT_ALL || $context->controller->multishop_context_group == false && $shop_context == Shop::CONTEXT_GROUP) { $current_shop_value = ''; $current_shop_name = Translate::getAdminTranslation('All shops'); } elseif ($shop_context == Shop::CONTEXT_GROUP) { $current_shop_value = 'g-' . Shop::getContextShopGroupID(); $current_shop_name = sprintf(Translate::getAdminTranslation('%s group'), $tree[Shop::getContextShopGroupID()]['name']); } else { $current_shop_value = 's-' . Shop::getContextShopID(); foreach ($tree as $group_id => $group_data) { foreach ($group_data['shops'] as $shop_id => $shop_data) { if ($shop_id == Shop::getContextShopID()) { $current_shop_name = $shop_data['name']; break; } } } } $tpl = $this->createTemplate('helpers/shops_list/list.tpl'); $tpl->assign(array('tree' => $tree, 'current_shop_name' => $current_shop_name, 'current_shop_value' => $current_shop_value, 'multishop_context' => $context->controller->multishop_context, 'multishop_context_group' => $context->controller->multishop_context_group, 'is_shop_context' => $context->controller->multishop_context & Shop::CONTEXT_SHOP, 'is_group_context' => $context->controller->multishop_context & Shop::CONTEXT_GROUP, 'shop_context' => $shop_context, 'url' => $_SERVER['REQUEST_URI'] . ($_SERVER['QUERY_STRING'] ? '&' : '?') . 'setShopContext=')); return $tpl->fetch(); }
public function getCurrentShopName() { $shop_context = Shop::getContext(); $tree = Shop::getTree(); if ($this->noShopSelection()) { $current_shop_name = Translate::getAdminTranslation('All shops'); } elseif ($shop_context == Shop::CONTEXT_GROUP) { $current_shop_name = sprintf(Translate::getAdminTranslation('%s group'), $tree[Shop::getContextShopGroupID()]['name']); } else { foreach ($tree as $group_id => $group_data) { foreach ($group_data['shops'] as $shop_id => $shop_data) { if ($shop_id == Shop::getContextShopID()) { $current_shop_name = $shop_data['name']; break; } } } } return $current_shop_name; }
public static function clearCategory() { if (version_compare(_PS_VERSION_, '1.5', '<')) { return Db::getInstance()->execute(' DELETE FROM `' . _DB_PREFIX_ . self::$definition['table'] . '` WHERE `id_shop`=' . (int) Context::getContext()->shop->id); } $shop_context = Shop::getContext(); if ($shop_context == Shop::CONTEXT_SHOP) { return Db::getInstance()->execute(' DELETE FROM `' . _DB_PREFIX_ . self::$definition['table'] . '` WHERE `id_shop`=' . (int) Context::getContext()->shop->id); } else { $id_shop_group = Shop::getContext() == Shop::CONTEXT_GROUP ? Shop::getContextShopGroupID() : null; $shop_ids = Shop::getShops(false, $id_shop_group, true); foreach ($shop_ids as $id_shop) { Db::getInstance()->execute(' DELETE FROM `' . _DB_PREFIX_ . self::$definition['table'] . '` WHERE `id_shop`=' . (int) $id_shop); } } }
public function postProcess() { $id_shops = array(); if (Tools::isSubmit('mass_csv_form_submit')) { if (Shop::getContext() == Shop::CONTEXT_ALL) { $shops = Shop::getShops(); if (!empty($shops)) { foreach ($shops as $s) { $id_shops[] = $s['id_shop']; } } } elseif (Shop::getContext() == Shop::CONTEXT_GROUP) { $shopid = Shop::getContextShopGroupID(true); $shops = ShopGroup::getShopsFromGroup($shopid); if (!empty($shops)) { foreach ($shops as $s) { $id_shops[] = $s['id_shop']; } } } if (empty($id_shops)) { $id_shops[] = Shop::getContextShopID(); } $id_shops = array_unique($id_shops); if (is_uploaded_file($_FILES['csv_file']['tmp_name'])) { $mimes = array('application/vnd.ms-excel', 'text/plain', 'text/csv', 'text/tsv'); if (!in_array($_FILES['csv_file']['type'], $mimes)) { $this->errors[] = Tools::displayError($this->l('Error : Problem with file upload. Please retry or check your file.')); return false; } if (move_uploaded_file($_FILES['csv_file']['tmp_name'], $this->mod->cache_dir . $_FILES['csv_file']['name'])) { $old_file_name = $_FILES['csv_file']['name']; $csv_content = Tools::file_get_contents($this->mod->cache_dir . $old_file_name); $array = $this->csvToArray($csv_content); if (empty($array)) { $this->errors[] = Tools::displayError($this->l('Error : Problem with file upload. Please retry or check your file.')); parent::postProcess(); return false; } foreach ($array as $value) { if (!empty($value[0])) { $new = !empty($value[1]) ? trim($value[1]) : '/'; $type = !empty($value[2]) ? trim($value[2]) : '301'; $regex = !empty($value[3]) ? (int) $value[3] : 0; $redirect = new Redirect(); $redirect->old = trim($value[0]); $redirect->new = $new; $redirect->type = $type; $redirect->regex = (bool) $regex; $redirect->active = true; $redirect->add(); /*foreach ($id_shops as $v) { $db->execute('INSERT INTO `'._DB_PREFIX_.'redirect_shop` (`id_redirect_shop`,`id_redirect`, `id_shop`) VALUES (NULL,'.(int)$redirect->id.','.(int)$v.')'); }*/ } } } Tools::redirectAdmin(self::$currentIndex . '&token=' . Tools::getAdminTokenLite('AdminRedirect') . '&conf=4'); } } parent::postProcess(); }
Shop::setContext(Shop::CONTEXT_SHOP, $id); echo "-Context is set to " . $type . $id . " "; break; default: Shop::setContext(Shop::CONTEXT_ALL, null); echo "-Context is set to " . $type . " "; } //code v2.4.1 $id_product = (int) Tools::getValue('id_product'); $id_lang = (int) Context::getContext()->language->id; //$product = new Product($id_product, false, $id_lang,$id_shop_source,$context); //version 5.2 - Ne duplique que dans une seule langue $product = new Product($id_product, false, null, $id_shop_source, $context); //version 5.3 All languages //Class product: function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) if (empty($product->price) && Shop::getContext() == Shop::CONTEXT_GROUP) { $shops = ShopGroup::getShopsFromGroup(Shop::getContextShopGroupID()); foreach ($shops as $shop) { if ($product->isAssociatedToShop($shop['id_shop'])) { $product_price = new Product($id_product_old, false, null, $shop['id_shop']); $product->price = $product_price->price; } } } if (Validate::isLoadedObject($product)) { $id_product_old = $product->id; for ($i = 1; $i <= $quantity; $i++) { echo $i; unset($product->id); unset($product->id_product); $product->indexed = 0; $product->active = 0;
/** * for retrocompatibility with old AdminTab, old index.php * * @return void */ function runAdminTab($tab, $ajaxMode = false) { $ajaxMode = (bool) $ajaxMode; require_once _PS_ADMIN_DIR_ . '/init.php'; $cookie = Context::getContext()->cookie; if (empty($tab) && !sizeof($_POST)) { $tab = 'AdminDashboard'; $_POST['tab'] = $tab; $_POST['token'] = Tools::getAdminTokenLite($tab); } // $tab = $_REQUEST['tab']; if ($adminObj = checkingTab($tab)) { Context::getContext()->controller = $adminObj; // init is different for new tabs (AdminController) and old tabs (AdminTab) if ($adminObj instanceof AdminController) { if ($ajaxMode) { $adminObj->ajax = true; } $adminObj->path = dirname($_SERVER["PHP_SELF"]); $adminObj->run(); } else { if (!$ajaxMode) { require_once _PS_ADMIN_DIR_ . '/header.inc.php'; } $isoUser = Context::getContext()->language->id; $tabs = array(); $tabs = Tab::recursiveTab($adminObj->id, $tabs); $tabs = array_reverse($tabs); $bread = ''; foreach ($tabs as $key => $item) { $bread .= ' <img src="../img/admin/separator_breadcrumb.png" style="margin-right:5px" alt=">" />'; if (count($tabs) - 1 > $key) { $bread .= '<a href="?tab=' . $item['class_name'] . '&token=' . Tools::getAdminToken($item['class_name'] . intval($item['id_tab']) . (int) Context::getContext()->employee->id) . '">'; } $bread .= $item['name']; if (count($tabs) - 1 > $key) { $bread .= '</a>'; } } if (!$ajaxMode && Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_ALL && Context::getContext()->controller->multishop_context != Shop::CONTEXT_ALL) { echo '<div class="multishop_info">'; if (Shop::getContext() == Shop::CONTEXT_GROUP) { $shop_group = new ShopGroup((int) Shop::getContextShopGroupID()); printf(Translate::getAdminTranslation('You are configuring your store for group shop %s'), '<b>' . $shop_group->name . '</b>'); } elseif (Shop::getContext() == Shop::CONTEXT_SHOP) { printf(Translate::getAdminTranslation('You are configuring your store for shop %s'), '<b>' . Context::getContext()->shop->name . '</b>'); } echo '</div>'; } if (Validate::isLoadedObject($adminObj)) { if ($adminObj->checkToken()) { if ($ajaxMode) { // the differences with index.php is here $adminObj->ajaxPreProcess(); $action = Tools::getValue('action'); // no need to use displayConf() here if (!empty($action) && method_exists($adminObj, 'ajaxProcess' . Tools::toCamelCase($action))) { $adminObj->{'ajaxProcess' . Tools::toCamelCase($action)}(); } else { $adminObj->ajaxProcess(); } // @TODO We should use a displayAjaxError $adminObj->displayErrors(); if (!empty($action) && method_exists($adminObj, 'displayAjax' . Tools::toCamelCase($action))) { $adminObj->{'displayAjax' . $action}(); } else { $adminObj->displayAjax(); } } else { /* Filter memorization */ if (isset($_POST) && !empty($_POST) && isset($adminObj->table)) { foreach ($_POST as $key => $value) { if (is_array($adminObj->table)) { foreach ($adminObj->table as $table) { if (strncmp($key, $table . 'Filter_', 7) === 0 || strncmp($key, 'submitFilter', 12) === 0) { $cookie->{$key} = !is_array($value) ? $value : serialize($value); } } } elseif (strncmp($key, $adminObj->table . 'Filter_', 7) === 0 || strncmp($key, 'submitFilter', 12) === 0) { $cookie->{$key} = !is_array($value) ? $value : serialize($value); } } } if (isset($_GET) && !empty($_GET) && isset($adminObj->table)) { foreach ($_GET as $key => $value) { if (is_array($adminObj->table)) { foreach ($adminObj->table as $table) { if (strncmp($key, $table . 'OrderBy', 7) === 0 || strncmp($key, $table . 'Orderway', 8) === 0) { $cookie->{$key} = $value; } } } elseif (strncmp($key, $adminObj->table . 'OrderBy', 7) === 0 || strncmp($key, $adminObj->table . 'Orderway', 12) === 0) { $cookie->{$key} = $value; } } } $adminObj->displayConf(); $adminObj->postProcess(); $adminObj->displayErrors(); $adminObj->display(); include _PS_ADMIN_DIR_ . '/footer.inc.php'; } } else { if ($ajaxMode) { // If this is an XSS attempt, then we should only display a simple, secure page if (ob_get_level() && ob_get_length() > 0) { ob_clean(); } // ${1} in the replacement string of the regexp is required, because the token may begin with a number and mix up with it (e.g. $17) $url = preg_replace('/([&?]token=)[^&]*(&.*)?$/', '${1}' . $adminObj->token . '$2', $_SERVER['REQUEST_URI']); if (false === strpos($url, '?token=') && false === strpos($url, '&token=')) { $url .= '&token=' . $adminObj->token; } // we can display the correct url // die(Tools::jsonEncode(array(Translate::getAdminTranslation('Invalid security token'),$url))); die(Tools::jsonEncode(Translate::getAdminTranslation('Invalid security token'))); } else { // If this is an XSS attempt, then we should only display a simple, secure page if (ob_get_level() && ob_get_length() > 0) { ob_clean(); } // ${1} in the replacement string of the regexp is required, because the token may begin with a number and mix up with it (e.g. $17) $url = preg_replace('/([&?]token=)[^&]*(&.*)?$/', '${1}' . $adminObj->token . '$2', $_SERVER['REQUEST_URI']); if (false === strpos($url, '?token=') && false === strpos($url, '&token=')) { $url .= '&token=' . $adminObj->token; } $message = Translate::getAdminTranslation('Invalid security token'); echo '<html><head><title>' . $message . '</title></head><body style="font-family:Arial,Verdana,Helvetica,sans-serif;background-color:#EC8686"> <div style="background-color:#FAE2E3;border:1px solid #000000;color:#383838;font-weight:700;line-height:20px;margin:0 0 10px;padding:10px 15px;width:500px"> <img src="../img/admin/error2.png" style="margin:-4px 5px 0 0;vertical-align:middle"> ' . $message . ' </div>'; echo '<a href="' . htmlentities($url) . '" method="get" style="float:left;margin:10px"> <input type="button" value="' . Tools::htmlentitiesUTF8(Translate::getAdminTranslation('I understand the risks and I really want to display this page')) . '" style="height:30px;margin-top:5px" /> </a> <a href="index.php" method="get" style="float:left;margin:10px"> <input type="button" value="' . Tools::htmlentitiesUTF8(Translate::getAdminTranslation('Take me out of here!')) . '" style="height:40px" /> </a> </body></html>'; die; } } } } } }
/** * For a given id_product and id_product_attribute sets the quantity available * * @param int $id_product * @param int $id_product_attribute Optional * @param int $delta_quantity The delta quantity to update * @param int $id_shop Optional */ public static function setQuantity($id_product, $id_product_attribute, $quantity, $id_shop = null) { if (!Validate::isUnsignedId($id_product)) { return false; } $context = Context::getContext(); // if there is no $id_shop, gets the context one if ($id_shop === null && Shop::getContext() != Shop::CONTEXT_GROUP) { $id_shop = (int) $context->shop->id; } $depends_on_stock = StockAvailable::dependsOnStock($id_product); //Try to set available quantity if product does not depend on physical stock if (!$depends_on_stock) { $id_stock_available = (int) StockAvailable::getStockAvailableIdByProductId($id_product, $id_product_attribute, $id_shop); if ($id_stock_available) { $stock_available = new StockAvailable($id_stock_available); $stock_available->quantity = (int) $quantity; $stock_available->update(); } else { $out_of_stock = StockAvailable::outOfStock($id_product, $id_shop); $stock_available = new StockAvailable(); $stock_available->out_of_stock = (int) $out_of_stock; $stock_available->id_product = (int) $id_product; $stock_available->id_product_attribute = (int) $id_product_attribute; $stock_available->quantity = (int) $quantity; $shop_group = new ShopGroup((int) Shop::getContextShopGroupID()); // if quantities are shared between shops of the group if ($shop_group->share_stock) { $stock_available->id_shop = 0; $stock_available->id_shop_group = (int) $shop_group->id; } else { $stock_available->id_shop = $id_shop; $stock_available->id_shop_group = Shop::getGroupFromShop($id_shop); } $stock_available->add(); } Hook::exec('actionUpdateQuantity', array('id_product' => $id_product, 'id_product_attribute' => $id_product_attribute, 'quantity' => $stock_available->quantity)); } }
public function postProcessCallback() { $return = false; $installed_modules = array(); foreach ($this->map as $key => $method) { if (!Tools::getValue($key)) { continue; } if ($key == 'check') { $this->ajaxProcessRefreshModuleList(true); } elseif ($key == 'checkAndUpdate') { $modules = array(); $this->ajaxProcessRefreshModuleList(true); $modules_on_disk = Module::getModulesOnDisk(true, $this->logged_on_addons, $this->id_employee); // Browse modules list foreach ($modules_on_disk as $km => $module_on_disk) { if (!Tools::getValue('module_name') && isset($module_on_disk->version_addons) && $module_on_disk->version_addons) { $modules[] = $module_on_disk->name; } } if (!Tools::getValue('module_name')) { $modules_list_save = implode('|', $modules); } } elseif (($modules = Tools::getValue($key)) && $key != 'checkAndUpdate') { if (strpos($modules, '|')) { $modules_list_save = $modules; $modules = explode('|', $modules); } if (!is_array($modules)) { $modules = (array) $modules; } } $module_errors = array(); if (isset($modules)) { foreach ($modules as $name) { $module_to_update = array(); $module_to_update[$name] = null; $full_report = null; // If Addons module, download and unzip it before installing it if (!file_exists(_PS_MODULE_DIR_ . $name . '/' . $name . '.php') || $key == 'update') { $filesList = array(array('type' => 'addonsNative', 'file' => Module::CACHE_FILE_DEFAULT_COUNTRY_MODULES_LIST, 'loggedOnAddons' => 0), array('type' => 'addonsBought', 'file' => Module::CACHE_FILE_CUSTOMER_MODULES_LIST, 'loggedOnAddons' => 1)); foreach ($filesList as $f) { if (file_exists(_PS_ROOT_DIR_ . $f['file'])) { $file = $f['file']; $content = Tools::file_get_contents(_PS_ROOT_DIR_ . $file); if ($xml = @simplexml_load_string($content, null, LIBXML_NOCDATA)) { foreach ($xml->module as $modaddons) { if ($name == $modaddons->name) { $module_to_update[$name]['id'] = $modaddons->id; $module_to_update[$name]['displayName'] = $modaddons->displayName; $module_to_update[$name]['need_loggedOnAddons'] = $f['loggedOnAddons']; } } } } } $module_upgraded = array(); foreach ($module_to_update as $name => $attr) { if (is_null($attr) && $this->logged_on_addons == 0 || $attr['need_loggedOnAddons'] == 1 && $this->logged_on_addons == 0) { $this->errors[] = sprintf(Tools::displayError('You need to be logged in to your PrestaShop Addons account in order to update the %s module. %s'), '<strong>' . $name . '</strong>', '<a href="#" class="addons_connect" data-toggle="modal" data-target="#modal_addons_connect" title="Addons">' . $this->l('Click here to log in.') . '</a>'); } elseif (!is_null($attr['id'])) { $download_ok = false; if ($attr['need_loggedOnAddons'] == 0 && file_put_contents(_PS_MODULE_DIR_ . $name . '.zip', Tools::addonsRequest('module', array('id_module' => pSQL($attr['id']))))) { $download_ok = true; } elseif ($attr['need_loggedOnAddons'] == 1 && $this->logged_on_addons && file_put_contents(_PS_MODULE_DIR_ . $name . '.zip', Tools::addonsRequest('module', array('id_module' => pSQL($attr['id']), 'username_addons' => pSQL(trim($this->context->cookie->username_addons)), 'password_addons' => pSQL(trim($this->context->cookie->password_addons)))))) { $download_ok = true; } if (!$download_ok) { $this->errors[] = sprintf(Tools::displayError("Module %s can't be upgraded: Error on downloading the latest version."), '<strong>' . $attr['displayName'] . '</strong>'); } elseif (!$this->extractArchive(_PS_MODULE_DIR_ . $name . '.zip', false)) { $this->errors[] = sprintf(Tools::displayError("Module %s can't be upgraded: Error on extracting the latest version"), '<strong>' . $attr['displayName'] . '</strong>'); } else { $module_upgraded[] = $name; } } else { $this->errors[] = sprintf(Tools::displayError("You don’t have the rights to update the %s module. Please make sure you are logged in to the PrestaShop Addons account that purchased the module."), '<strong>' . $name . '</strong>'); } } $module_upgraded = implode('|', $module_upgraded); } if (count($this->errors)) { continue; } // Check potential error if (!($module = Module::getInstanceByName(urldecode($name)))) { $this->errors[] = $this->l('Module not found'); } elseif (defined('_PS_HOST_MODE_') && in_array($module->name, Module::$hosted_modules_blacklist)) { $this->errors[] = Tools::displayError('You do not have permission to access this module.'); } elseif ($key == 'install' && $this->tabAccess['add'] !== '1') { $this->errors[] = Tools::displayError('You do not have permission to install this module.'); } elseif ($key == 'install' && defined('_PS_HOST_MODE_') && _PS_HOST_MODE_ && !Module::isModuleTrusted($module->name)) { $this->errors[] = Tools::displayError('You do not have permission to install this module.'); } elseif ($key == 'delete' && ($this->tabAccess['delete'] !== '1' || !$module->getPermission('configure'))) { $this->errors[] = Tools::displayError('You do not have permission to delete this module.'); } elseif ($key == 'configure' && ($this->tabAccess['edit'] !== '1' || !$module->getPermission('configure') || !Module::isInstalled(urldecode($name)))) { $this->errors[] = Tools::displayError('You do not have permission to configure this module.'); } elseif ($key == 'install' && Module::isInstalled($module->name)) { $this->errors[] = Tools::displayError('This module is already installed:') . ' ' . $module->name; } elseif ($key == 'uninstall' && !Module::isInstalled($module->name)) { $this->errors[] = Tools::displayError('This module has already been uninstalled:') . ' ' . $module->name; } else { if ($key == 'update' && !Module::isInstalled($module->name)) { $this->errors[] = Tools::displayError('This module needs to be installed in order to be updated:') . ' ' . $module->name; } else { // If we install a module, force temporary global context for multishop if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_ALL && $method != 'getContent') { $shop_id = (int) Context::getContext()->shop->id; Context::getContext()->tmpOldShop = clone Context::getContext()->shop; if ($shop_id) { Context::getContext()->shop = new Shop($shop_id); } } //retrocompatibility if (Tools::getValue('controller') != '') { $_POST['tab'] = Tools::safeOutput(Tools::getValue('controller')); } $echo = ''; if ($key != 'update' && $key != 'checkAndUpdate') { // We check if method of module exists if (!method_exists($module, $method)) { throw new PrestaShopException('Method of module cannot be found'); } // Get the return value of current method $echo = $module->{$method}(); // After a successful install of a single module that has a configuration method, to the configuration page if ($key == 'install' && $echo === true && strpos(Tools::getValue('install'), '|') === false && method_exists($module, 'getContent')) { Tools::redirectAdmin(self::$currentIndex . '&token=' . $this->token . '&configure=' . $module->name . '&conf=12'); } } // If the method called is "configure" (getContent method), we show the html code of configure page if ($key == 'configure' && Module::isInstalled($module->name)) { $this->bootstrap = isset($module->bootstrap) && $module->bootstrap; if (isset($module->multishop_context)) { $this->multishop_context = $module->multishop_context; } $back_link = self::$currentIndex . '&token=' . $this->token . '&tab_module=' . $module->tab . '&module_name=' . $module->name; $hook_link = 'index.php?tab=AdminModulesPositions&token=' . Tools::getAdminTokenLite('AdminModulesPositions') . '&show_modules=' . (int) $module->id; $trad_link = 'index.php?tab=AdminTranslations&token=' . Tools::getAdminTokenLite('AdminTranslations') . '&type=modules&lang='; $disable_link = $this->context->link->getAdminLink('AdminModules') . '&module_name=' . $module->name . '&enable=0&tab_module=' . $module->tab; $uninstall_link = $this->context->link->getAdminLink('AdminModules') . '&module_name=' . $module->name . '&uninstall=' . $module->name . '&tab_module=' . $module->tab; $reset_link = $this->context->link->getAdminLink('AdminModules') . '&module_name=' . $module->name . '&reset&tab_module=' . $module->tab; $update_link = $this->context->link->getAdminLink('AdminModules') . '&checkAndUpdate=1&module_name=' . $module->name; $is_reset_ready = false; if (method_exists($module, 'reset')) { $is_reset_ready = true; } $this->context->smarty->assign(array('module_name' => $module->name, 'module_display_name' => $module->displayName, 'back_link' => $back_link, 'module_hook_link' => $hook_link, 'module_disable_link' => $disable_link, 'module_uninstall_link' => $uninstall_link, 'module_reset_link' => $reset_link, 'module_update_link' => $update_link, 'trad_link' => $trad_link, 'module_languages' => Language::getLanguages(false), 'theme_language_dir' => _THEME_LANG_DIR_, 'page_header_toolbar_title' => $this->page_header_toolbar_title, 'page_header_toolbar_btn' => $this->page_header_toolbar_btn, 'add_permission' => $this->tabAccess['add'], 'is_reset_ready' => $is_reset_ready)); // Display checkbox in toolbar if multishop if (Shop::isFeatureActive()) { if (Shop::getContext() == Shop::CONTEXT_SHOP) { $shop_context = 'shop <strong>' . $this->context->shop->name . '</strong>'; } elseif (Shop::getContext() == Shop::CONTEXT_GROUP) { $shop_group = new ShopGroup((int) Shop::getContextShopGroupID()); $shop_context = 'all shops of group shop <strong>' . $shop_group->name . '</strong>'; } else { $shop_context = 'all shops'; } $this->context->smarty->assign(array('module' => $module, 'display_multishop_checkbox' => true, 'current_url' => $this->getCurrentUrl('enable'), 'shop_context' => $shop_context)); } $this->context->smarty->assign(array('shop_list' => Helper::renderShopList(), 'is_multishop' => Shop::isFeatureActive(), 'multishop_context' => Shop::CONTEXT_ALL | Shop::CONTEXT_GROUP | Shop::CONTEXT_SHOP)); if (Shop::isFeatureActive() && isset(Context::getContext()->tmpOldShop)) { Context::getContext()->shop = clone Context::getContext()->tmpOldShop; unset(Context::getContext()->tmpOldShop); } // Display module configuration $header = $this->context->smarty->fetch('controllers/modules/configure.tpl'); $configuration_bar = $this->context->smarty->fetch('controllers/modules/configuration_bar.tpl'); $output = $header . $echo; if (isset($this->_modules_ad[$module->name])) { $ad_modules = $this->getModulesByInstallation($this->_modules_ad[$module->name]); foreach ($ad_modules['not_installed'] as $key => &$module) { if (isset($module->addons_buy_url)) { $module->addons_buy_url = str_replace('utm_source=v1trunk_api', 'utm_source=back-office', $module->addons_buy_url) . '&utm_medium=related-modules&utm_campaign=back-office-' . strtoupper($this->context->language->iso_code); } if (isset($module->description_full) && trim($module->description_full) != '') { $module->show_quick_view = true; } } $this->context->smarty->assign(array('ad_modules' => $ad_modules, 'currentIndex' => self::$currentIndex)); $ad_bar = $this->context->smarty->fetch('controllers/modules/ad_bar.tpl'); $output .= $ad_bar; } $this->context->smarty->assign('module_content', $output . $configuration_bar); } elseif ($echo === true) { $return = 13; if ($method == 'install') { $return = 12; $installed_modules[] = $module->id; } } elseif ($echo === false) { $module_errors[] = array('name' => $name, 'message' => $module->getErrors()); } if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_ALL && isset(Context::getContext()->tmpOldShop)) { Context::getContext()->shop = clone Context::getContext()->tmpOldShop; unset(Context::getContext()->tmpOldShop); } } } if ($key != 'configure' && Tools::getIsset('bpay')) { Tools::redirectAdmin('index.php?tab=AdminPayment&token=' . Tools::getAdminToken('AdminPayment' . (int) Tab::getIdFromClassName('AdminPayment') . (int) $this->id_employee)); } } } if (count($module_errors)) { // If error during module installation, no redirection $html_error = $this->generateHtmlMessage($module_errors); $this->errors[] = sprintf(Tools::displayError('The following module(s) were not installed properly: %s'), $html_error); $this->context->smarty->assign('error_module', 'true'); } } if ($return) { $params = count($installed_modules) ? '&installed_modules=' . implode('|', $installed_modules) : ''; // If redirect parameter is present and module installed with success, we redirect on configuration module page if (Tools::getValue('redirect') == 'config' && Tools::getValue('module_name') != '' && $return == '12' && Module::isInstalled(pSQL(Tools::getValue('module_name')))) { Tools::redirectAdmin('index.php?controller=adminmodules&configure=' . Tools::getValue('module_name') . '&token=' . Tools::getValue('token') . '&module_name=' . Tools::getValue('module_name') . $params); } Tools::redirectAdmin(self::$currentIndex . '&conf=' . $return . '&token=' . $this->token . '&tab_module=' . $module->tab . '&module_name=' . $module->name . '&anchor=' . ucfirst($module->name) . (isset($modules_list_save) ? '&modules_list=' . $modules_list_save : '') . $params); } if (Tools::getValue('update') || Tools::getValue('checkAndUpdate')) { $updated = '&updated=1'; if (Tools::getValue('checkAndUpdate')) { $updated = ''; if (Tools::getValue('module_name')) { $module = Module::getInstanceByName(Tools::getValue('module_name')); if (!Validate::isLoadedObject($module)) { unset($module); } } } if (isset($module_upgraded) && $module_upgraded != '') { Tools::redirectAdmin(self::$currentIndex . '&token=' . $this->token . '&updated=1&module_name=' . $module_upgraded); } elseif (isset($modules_list_save)) { Tools::redirectAdmin(self::$currentIndex . '&token=' . $this->token . '&updated=1&module_name=' . $modules_list_save); } elseif (isset($module)) { Tools::redirectAdmin(self::$currentIndex . '&token=' . $this->token . $updated . '&tab_module=' . $module->tab . '&module_name=' . $module->name . '&anchor=' . ucfirst($module->name) . (isset($modules_list_save) ? '&modules_list=' . $modules_list_save : '')); } } }
public function renderForm() { if (!($obj = $this->loadObject(true))) { return; } $this->fields_form = array('legend' => array('title' => $this->l('Shop'), 'icon' => 'icon-shopping-cart'), 'input' => array(array('type' => 'text', 'label' => $this->l('Shop name'), 'desc' => array($this->l('This field does not refer to the shop name visible in the front office.'), sprintf($this->l('Follow %sthis link%s to edit the shop name used on the Front Office.'), '<a href="' . $this->context->link->getAdminLink('AdminStores') . '#store_fieldset_general">', '</a>')), 'name' => 'name', 'required' => true))); $display_group_list = true; if ($this->display == 'edit') { $group = new ShopGroup($obj->id_shop_group); if ($group->share_customer || $group->share_order || $group->share_stock) { $display_group_list = false; } } if ($display_group_list) { $options = array(); foreach (ShopGroup::getShopGroups() as $group) { if ($this->display == 'edit' && ($group->share_customer || $group->share_order || $group->share_stock) && ShopGroup::hasDependency($group->id)) { continue; } $options[] = array('id_shop_group' => $group->id, 'name' => $group->name); } if ($this->display == 'add') { $group_desc = $this->l('Warning: You won\'t be able to change the group of this shop if this shop belongs to a group with one of these options activated: Share Customers, Share Quantities or Share Orders.'); } else { $group_desc = $this->l('You can only move your shop to a shop group with all "share" options disabled -- or to a shop group with no customers/orders.'); } $this->fields_form['input'][] = array('type' => 'select', 'label' => $this->l('Shop group'), 'desc' => $group_desc, 'name' => 'id_shop_group', 'options' => array('query' => $options, 'id' => 'id_shop_group', 'name' => 'name')); } else { $this->fields_form['input'][] = array('type' => 'hidden', 'name' => 'id_shop_group', 'default' => $group->name); $this->fields_form['input'][] = array('type' => 'textShopGroup', 'label' => $this->l('Shop group'), 'desc' => $this->l('You can\'t edit the shop group because the current shop belongs to a group with the "share" option enabled.'), 'name' => 'id_shop_group', 'value' => $group->name); } $categories = Category::getRootCategories($this->context->language->id); $this->fields_form['input'][] = array('type' => 'select', 'label' => $this->l('Category root'), 'desc' => $this->l('This is the root category of the store that you\'ve created. To define a new root category for your store,') . ' <a href="' . $this->context->link->getAdminLink('AdminCategories') . '&addcategoryroot" target="_blank">' . $this->l('Please click here') . '</a>', 'name' => 'id_category', 'options' => array('query' => $categories, 'id' => 'id_category', 'name' => 'name')); if (Tools::isSubmit('id_shop')) { $shop = new Shop((int) Tools::getValue('id_shop')); $id_root = $shop->id_category; } else { $id_root = $categories[0]['id_category']; } $id_shop = (int) Tools::getValue('id_shop'); self::$currentIndex = self::$currentIndex . '&id_shop_group=' . (int) (Tools::getValue('id_shop_group') ? Tools::getValue('id_shop_group') : (isset($obj->id_shop_group) ? $obj->id_shop_group : Shop::getContextShopGroupID())); $shop = new Shop($id_shop); $selected_cat = Shop::getCategories($id_shop); if (empty($selected_cat)) { // get first category root and preselect all these children $root_categories = Category::getRootCategories(); $root_category = new Category($root_categories[0]['id_category']); $children = $root_category->getAllChildren($this->context->language->id); $selected_cat[] = $root_categories[0]['id_category']; foreach ($children as $child) { $selected_cat[] = $child->id; } } if (Shop::getContext() == Shop::CONTEXT_SHOP && Tools::isSubmit('id_shop')) { $root_category = new Category($shop->id_category); } else { $root_category = new Category($id_root); } $this->fields_form['input'][] = array('type' => 'categories', 'name' => 'categoryBox', 'label' => $this->l('Associated categories'), 'tree' => array('id' => 'categories-tree', 'selected_categories' => $selected_cat, 'root_category' => $root_category->id, 'use_search' => true, 'use_checkbox' => true), 'desc' => $this->l('By selecting associated categories, you are choosing to share the categories between shops. Once associated between shops, any alteration of this category will impact every shop.')); /*$this->fields_form['input'][] = array( 'type' => 'switch', 'label' => $this->l('Enabled'), 'name' => 'active', 'required' => true, 'is_bool' => true, 'values' => array( array( 'id' => 'active_on', 'value' => 1 ), array( 'id' => 'active_off', 'value' => 0 ) ), 'desc' => $this->l('Enable or disable your store?') );*/ $themes = Theme::getThemes(); if (!isset($obj->id_theme)) { foreach ($themes as $theme) { if (isset($theme->id)) { $id_theme = $theme->id; break; } } } $this->fields_form['input'][] = array('type' => 'theme', 'label' => $this->l('Theme'), 'name' => 'theme', 'values' => $themes); $this->fields_form['submit'] = array('title' => $this->l('Save')); if (Shop::getTotalShops() > 1 && $obj->id) { $disabled = array('active' => false); } else { $disabled = false; } $import_data = array('carrier' => $this->l('Carriers'), 'cms' => $this->l('CMS pages'), 'contact' => $this->l('Contact information'), 'country' => $this->l('Countries'), 'currency' => $this->l('Currencies'), 'discount' => $this->l('Discount prices'), 'employee' => $this->l('Employees'), 'image' => $this->l('Images'), 'lang' => $this->l('Languages'), 'manufacturer' => $this->l('Manufacturers'), 'module' => $this->l('Modules'), 'hook_module' => $this->l('Module hooks'), 'meta_lang' => $this->l('Meta'), 'product' => $this->l('Products'), 'product_attribute' => $this->l('Combinations'), 'scene' => $this->l('Scenes'), 'stock_available' => $this->l('Available quantities for sale'), 'store' => $this->l('Stores'), 'warehouse' => $this->l('Warehouses'), 'webservice_account' => $this->l('Webservice accounts'), 'attribute_group' => $this->l('Attribute groups'), 'feature' => $this->l('Features'), 'group' => $this->l('Customer groups'), 'tax_rules_group' => $this->l('Tax rules groups'), 'supplier' => $this->l('Suppliers'), 'referrer' => $this->l('Referrers/affiliates'), 'zone' => $this->l('Zones'), 'cart_rule' => $this->l('Cart rules')); // Hook for duplication of shop data $modules_list = Hook::getHookModuleExecList('actionShopDataDuplication'); if (is_array($modules_list) && count($modules_list) > 0) { foreach ($modules_list as $m) { $import_data['Module' . ucfirst($m['module'])] = Module::getModuleName($m['module']); } } asort($import_data); if (!$this->object->id) { $this->fields_import_form = array('radio' => array('type' => 'radio', 'label' => $this->l('Import data'), 'name' => 'useImportData', 'value' => 1), 'select' => array('type' => 'select', 'name' => 'importFromShop', 'label' => $this->l('Choose the shop (source)'), 'options' => array('query' => Shop::getShops(false), 'name' => 'name')), 'allcheckbox' => array('type' => 'checkbox', 'label' => $this->l('Choose data to import'), 'values' => $import_data), 'desc' => $this->l('Use this option to associate data (products, modules, etc.) the same way for each selected shop.')); } $this->fields_value = array('id_shop_group' => Tools::getValue('id_shop_group') ? Tools::getValue('id_shop_group') : isset($obj->id_shop_group) ? $obj->id_shop_group : Shop::getContextShopGroupID(), 'id_category' => Tools::getValue('id_category') ? Tools::getValue('id_category') : isset($obj->id_category) ? $obj->id_category : (int) Configuration::get('PS_HOME_CATEGORY'), 'id_theme_checked' => isset($obj->id_theme) ? $obj->id_theme : $id_theme); $ids_category = array(); $shops = Shop::getShops(false); foreach ($shops as $shop) { $ids_category[$shop['id_shop']] = $shop['id_category']; } $this->tpl_form_vars = array('disabled' => $disabled, 'checked' => Tools::getValue('addshop') !== false ? true : false, 'defaultShop' => (int) Configuration::get('PS_SHOP_DEFAULT'), 'ids_category' => $ids_category); if (isset($this->fields_import_form)) { $this->tpl_form_vars = array_merge($this->tpl_form_vars, array('form_import' => $this->fields_import_form)); } return parent::renderForm(); }
/** * Generic function which allows logo upload * * @param $field_name * @param $logo_prefix * * @return bool */ protected function updateLogo($field_name, $logo_prefix) { $id_shop = Context::getContext()->shop->id; if (isset($_FILES[$field_name]['tmp_name']) && $_FILES[$field_name]['tmp_name'] && $_FILES[$field_name]['size']) { if ($error = ImageManager::validateUpload($_FILES[$field_name], Tools::getMaxUploadSize())) { $this->errors[] = $error; return false; } $tmp_name = tempnam(_PS_TMP_IMG_DIR_, 'PS'); if (!$tmp_name || !move_uploaded_file($_FILES[$field_name]['tmp_name'], $tmp_name)) { return false; } $ext = $field_name == 'PS_STORES_ICON' ? '.gif' : '.jpg'; $logo_name = Tools::link_rewrite(Context::getContext()->shop->name) . '-' . $logo_prefix . '-' . (int) Configuration::get('PS_IMG_UPDATE_TIME') . (int) $id_shop . $ext; if (Context::getContext()->shop->getContext() == Shop::CONTEXT_ALL || $id_shop == 0 || Shop::isFeatureActive() == false) { $logo_name = Tools::link_rewrite(Context::getContext()->shop->name) . '-' . $logo_prefix . '-' . (int) Configuration::get('PS_IMG_UPDATE_TIME') . $ext; } if ($field_name == 'PS_STORES_ICON') { if (!@ImageManager::resize($tmp_name, _PS_IMG_DIR_ . $logo_name, null, null, 'gif', true)) { $this->errors[] = Tools::displayError('An error occurred while attempting to copy your logo.'); } } else { if (!@ImageManager::resize($tmp_name, _PS_IMG_DIR_ . $logo_name)) { $this->errors[] = Tools::displayError('An error occurred while attempting to copy your logo.'); } } $id_shop = null; $id_shop_group = null; if (!count($this->errors) && @filemtime(_PS_IMG_DIR_ . Configuration::get($field_name))) { if (Shop::isFeatureActive()) { if (Shop::getContext() == Shop::CONTEXT_SHOP) { $id_shop = Shop::getContextShopID(); $id_shop_group = Shop::getContextShopGroupID(); Shop::setContext(Shop::CONTEXT_ALL); $logo_all = Configuration::get($field_name); Shop::setContext(Shop::CONTEXT_GROUP); $logo_group = Configuration::get($field_name); Shop::setContext(Shop::CONTEXT_SHOP); $logo_shop = Configuration::get($field_name); if ($logo_all != $logo_shop && $logo_group != $logo_shop && $logo_shop != false) { @unlink(_PS_IMG_DIR_ . Configuration::get($field_name)); } } elseif (Shop::getContext() == Shop::CONTEXT_GROUP) { $id_shop_group = Shop::getContextShopGroupID(); Shop::setContext(Shop::CONTEXT_ALL); $logo_all = Configuration::get($field_name); Shop::setContext(Shop::CONTEXT_GROUP); if ($logo_all != Configuration::get($field_name)) { @unlink(_PS_IMG_DIR_ . Configuration::get($field_name)); } } } else { @unlink(_PS_IMG_DIR_ . Configuration::get($field_name)); } } Configuration::updateValue($field_name, $logo_name, false, $id_shop_group, $id_shop); @unlink($tmp_name); } }
public static function renderShopList() { if (!Shop::isFeatureActive() || Shop::getTotalShops(false, null) < 2) { return null; } $tree = Shop::getTree(); $context = Context::getContext(); // Get default value $shop_context = Shop::getContext(); if ($shop_context == Shop::CONTEXT_ALL || $context->controller->multishop_context_group == false && $shop_context == Shop::CONTEXT_GROUP) { $value = ''; } else { if ($shop_context == Shop::CONTEXT_GROUP) { $value = 'g-' . Shop::getContextShopGroupID(); } else { $value = 's-' . Shop::getContextShopID(); } } // Generate HTML $url = $_SERVER['REQUEST_URI'] . ($_SERVER['QUERY_STRING'] ? '&' : '?') . 'setShopContext='; $shop = new Shop(Shop::getContextShopID()); // $html = '<a href="#"><i class="icon-home"></i> '.$shop->name.'</a>'; $html = '<select class="shopList" onchange="location.href = \'' . htmlspecialchars($url) . '\'+$(this).val();">'; $html .= '<option value="" class="first">' . Translate::getAdminTranslation('All shops') . '</option>'; foreach ($tree as $gID => $group_data) { if (!isset($context->controller->multishop_context) || $context->controller->multishop_context & Shop::CONTEXT_GROUP) { $html .= '<option class="group" value="g-' . $gID . '"' . (empty($value) && $shop_context == Shop::CONTEXT_GROUP || $value == 'g-' . $gID ? ' selected="selected"' : '') . ($context->controller->multishop_context_group == false ? ' disabled="disabled"' : '') . '>' . Translate::getAdminTranslation('Group:') . ' ' . htmlspecialchars($group_data['name']) . '</option>'; } else { $html .= '<optgroup class="group" label="' . Translate::getAdminTranslation('Group:') . ' ' . htmlspecialchars($group_data['name']) . '"' . ($context->controller->multishop_context_group == false ? ' disabled="disabled"' : '') . '>'; } if (!isset($context->controller->multishop_context) || $context->controller->multishop_context & Shop::CONTEXT_SHOP) { foreach ($group_data['shops'] as $sID => $shopData) { if ($shopData['active']) { $html .= '<option value="s-' . $sID . '" class="shop"' . ($value == 's-' . $sID ? ' selected="selected"' : '') . '>' . ($context->controller->multishop_context_group == false ? htmlspecialchars($group_data['name']) . ' - ' : '') . $shopData['name'] . '</option>'; } } } if (!(!isset($context->controller->multishop_context) || $context->controller->multishop_context & Shop::CONTEXT_GROUP)) { $html .= '</optgroup>'; } } $html .= '</select>'; return $html; }
private function _getContextShop() { switch ($context_type = Shop::getContext()) { case Shop::CONTEXT_SHOP: $context_id = Shop::getContextShopID(); break; case Shop::CONTEXT_GROUP: $context_id = Shop::getContextShopGroupID(); break; } return array($context_type, isset($context_id) ? $context_id : null); }
public function getConfigFieldsValues() { $id_shop_group = Shop::getContextShopGroupID(); $id_shop = Shop::getContextShopID(); return array('PAYMENTWALL_APP_KEY' => Tools::getValue('PAYMENTWALL_APP_KEY', Configuration::get('PAYMENTWALL_APP_KEY', null, $id_shop_group, $id_shop)), 'PAYMENTWALL_SECRET_KEY' => Tools::getValue('PAYMENTWALL_SECRET_KEY', Configuration::get('PAYMENTWALL_SECRET_KEY', null, $id_shop_group, $id_shop)), 'PAYMENTWALL_WIDGET_TYPE' => Tools::getValue('PAYMENTWALL_WIDGET_TYPE', Configuration::get('PAYMENTWALL_WIDGET_TYPE', null, $id_shop_group, $id_shop)), 'PAYMENTWALL_TEST_MODE' => Tools::getValue('PAYMENTWALL_TEST_MODE', Configuration::get('PAYMENTWALL_TEST_MODE', null, $id_shop_group, $id_shop)), 'PAYMENTWALL_ORDER_STATUS' => Tools::getValue('PAYMENTWALL_ORDER_STATUS', Configuration::get('PAYMENTWALL_ORDER_STATUS', null, $id_shop_group, $id_shop))); }
public function processDuplicate() { if (!Module::isInstalled('agilemultipleseller')) { parent::processDuplicate(); } else { if (Validate::isLoadedObject($product = new Product((int) Tools::getValue('id_product')))) { $id_product_old = $product->id; if (empty($product->price) && Shop::getContext() == Shop::CONTEXT_GROUP) { $shops = ShopGroup::getShopsFromGroup(Shop::getContextShopGroupID()); foreach ($shops as $shop) { if ($product->isAssociatedToShop($shop['id_shop'])) { $product_price = new Product($id_product_old, false, null, $shop['id_shop']); $product->price = $product_price->price; } } } unset($product->id); unset($product->id_product); $product->indexed = 0; $product->active = 0; if ($product->add() && Category::duplicateProductCategories($id_product_old, $product->id) && ($combination_images = Product::duplicateAttributes($id_product_old, $product->id)) !== false && GroupReduction::duplicateReduction($id_product_old, $product->id) && Product::duplicateAccessories($id_product_old, $product->id) && Product::duplicateFeatures($id_product_old, $product->id) && Product::duplicateSpecificPrices($id_product_old, $product->id) && Pack::duplicate($id_product_old, $product->id) && Product::duplicateCustomizationFields($id_product_old, $product->id) && Product::duplicateTags($id_product_old, $product->id) && Product::duplicateDownload($id_product_old, $product->id)) { if ($product->hasAttributes()) { Product::updateDefaultAttribute($product->id); } AgileSellerManager::assignObjectOwner('product', $product->id, AgileSellerManager::getObjectOwnerID('product', $id_product_old)); if (!Tools::getValue('noimage') && !Image::duplicateProductImages($id_product_old, $product->id, $combination_images)) { $this->errors[] = Tools::displayError('An error occurred while copying images.'); } else { Hook::exec('actionProductAdd', array('product' => $product)); if (in_array($product->visibility, array('both', 'search')) && Configuration::get('PS_SEARCH_INDEXATION')) { Search::indexation(false, $product->id); } $this->redirect_after = self::$currentIndex . (Tools::getIsset('id_category') ? '&id_category=' . (int) Tools::getValue('id_category') : '') . '&conf=19&token=' . $this->token; } } else { $this->errors[] = Tools::displayError('An error occurred while creating an object.'); } } } }
/** * Get Wishlists number products by Customer ID * * @return array Results */ public static function getInfosByIdCustomer($id_customer) { if (Shop::getContextShopID()) { $shop_restriction = 'AND id_shop = ' . (int) Shop::getContextShopID(); } elseif (Shop::getContextShopGroupID()) { $shop_restriction = 'AND id_shop_group = ' . (int) Shop::getContextShopGroupID(); } else { $shop_restriction = ''; } if (!Validate::isUnsignedId($id_customer)) { die(Tools::displayError()); } return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT SUM(wp.`quantity`) AS nbProducts, wp.`id_wishlist` FROM `' . _DB_PREFIX_ . 'wishlist_product` wp INNER JOIN `' . _DB_PREFIX_ . 'wishlist` w ON (w.`id_wishlist` = wp.`id_wishlist`) WHERE w.`id_customer` = ' . (int) $id_customer . ' ' . $shop_restriction . ' GROUP BY w.`id_wishlist` ORDER BY w.`name` ASC'); }
protected function _postProcess() { $languages = Language::getLanguages(); $result = Db::getInstance()->ExecuteS('SHOW TABLES'); $existing_tables = array(); foreach ($result as $row) { foreach ($row as $key => $table) { array_push($existing_tables, $table); } } //hide or display installation instructions if (Tools::getValue('dhl_shi') != "") { if (Tools::getValue('dhl_shi') == "inline") { Configuration::updateValue('DHL_INSTALL', "none"); } else { Configuration::updateValue('DHL_INSTALL', "inline"); } } if (Tools::isSubmit('updateSettings')) { if (Tools::getValue('dhl_pack') != $this->_dhl_pack) { $query = 'TRUNCATE `' . _DB_PREFIX_ . 'fe_dhl_invalid_dest`'; Db::getInstance()->Execute($query); } if (!Configuration::updateValue('DHL_SITE_ID', str_replace(' ', '', Tools::getValue('dhl_site_id'))) || !Configuration::updateValue('DHL_PASS', str_replace(' ', '', Tools::getValue('dhl_pass'))) || !Configuration::updateValue('DHL_ACCOUNT_NUMBER', str_replace(' ', '', Tools::getValue('dhl_account_number'))) || !Configuration::updateValue('DHL_DROPOFF', Tools::getValue('dhl_dropoff')) || !Configuration::updateValue('DHL_UNIT', Tools::getValue('dhl_unit')) || !Configuration::updateValue('DHL_PACK', Tools::getValue('dhl_pack')) || !Configuration::updateValue('DHL_WIDTH', Tools::getValue('dhl_width')) || !Configuration::updateValue('DHL_HEIGHT', Tools::getValue('dhl_height')) || !Configuration::updateValue('DHL_DEPTH', Tools::getValue('dhl_depth')) || !Configuration::updateValue('DHL_WEIGHT', Tools::getValue('dhl_weight')) || !Configuration::updateValue('DHL_ORIGIN_ZIP', Tools::getValue('dhl_origin_zip')) || !Configuration::updateValue('DHL_ORIGIN_COUNTRY', Tools::getValue('dhl_origin_country')) || !Configuration::updateValue('DHL_ORIGIN_CITY', Tools::getValue('dhl_origin_city')) || !Configuration::updateValue('DHL_TYPE', Tools::getValue('dhl_type')) || !Configuration::updateValue('DHL_PACKAGES', Tools::getValue('dhl_packages')) || !Configuration::updateValue('DHL_PACKAGE_SIZE', Tools::getValue('dhl_package_size')) || !Configuration::updateValue('DHL_PACKAGES_PER_BOX', Tools::getValue('dhl_packages_per_box')) || !Configuration::updateValue('DHL_OVERRIDE_ADDRESS', Tools::getValue('dhl_override_address')) || !Configuration::updateValue('DHL_DEBUG_MODE', Tools::getValue('dhl_debug_mode')) || !Configuration::updateValue('DHL_ADDRESS_DISPLAY', serialize(array('country' => Tools::getValue('dhl_country_display'), 'state' => Tools::getValue('dhl_state_display'), 'city' => Tools::getValue('dhl_city_display'), 'zip' => Tools::getValue('dhl_zip_display')))) || !Configuration::updateValue('DHL_XML_LOG', Tools::getValue('dhl_xml_log')) || !Configuration::updateValue('DHL_CURRENCY_USED', Tools::getValue('dhl_currency_used')) || !Configuration::updateValue('DHL_DISCOUNT_RATE', Tools::getValue('dhl_discount_rate')) || !Configuration::updateValue('DHL_MODE', Tools::getValue('dhl_mode'))) { if ($this->getPSV() == 1.6) { $this->_html .= $this->displayError($this->l('Cannot update settings')); } else { $this->_html .= '<div class="alert error">' . $this->l('Cannot update settings') . '</div>'; } } else { if ($this->getPSV() == 1.6) { $this->_html .= $this->displayConfirmation($this->l('Settings updated')); } else { $this->_html .= '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="' . $this->l('Confirmation') . '" />' . $this->l('Settings updated') . '</div>'; } } } if (Tools::getValue('ssr') == 'show') { $this->registerHook($this->getPSV() >= 1.5 ? 'displayProductButtons' : 'productActions'); $this->registerHook('cartShippingPreview'); Configuration::updateValue('DHL_SHIPPING_RATES_BUTTON', 'show'); } elseif (Tools::getValue('ssr') == 'hide') { $this->unregisterHook($this->getPSV() >= 1.5 ? Hook::getIdByName('displayProductButtons') : Hook::get('productActions')); $this->unregisterHook($this->getPSV() >= 1.5 ? Hook::getIdByName('cartShippingPreview') : Hook::get('cartShippingPreview')); Configuration::updateValue('DHL_SHIPPING_RATES_BUTTON', 'hide'); } if (Tools::isSubmit('addMethod')) { $query = 'INSERT INTO `' . _DB_PREFIX_ . 'carrier` (name, url, active, is_module, shipping_external, need_range, shipping_method, external_module_name) VALUES("' . (Tools::getValue('dhl_carrier_name') != "" ? Tools::getValue('dhl_carrier_name') : " ") . '", "http://www.dhl.com/content/g0/en/express/tracking.shtml?brand=DHL&AWB=@", "1","1","1","1","1","dhl")'; Db::getInstance()->Execute($query); $id_carrier = Db::getInstance()->Insert_ID(); if ($this->getPSV() >= 1.5) { Db::getInstance()->execute('UPDATE ' . _DB_PREFIX_ . 'carrier set id_reference = ' . $id_carrier . ' WHERE id_carrier = ' . $id_carrier); } if (in_array(_DB_PREFIX_ . "carrier_group", $existing_tables)) { $id_groups = Db::getInstance()->executeS('SELECT id_group FROM ' . _DB_PREFIX_ . 'group GROUP BY id_group'); foreach ($id_groups as $group) { $query = 'INSERT INTO `' . _DB_PREFIX_ . 'carrier_group` (id_carrier, id_group) VALUES("' . $id_carrier . '", "' . $group['id_group'] . '")'; Db::getInstance()->Execute($query); } } if ($this->getPSV() >= 1.5) { /** $this->context->shop is not accurate */ $id_shop_group = Shop::getContextShopGroupID(true); $id_shop = Shop::getContextShopID(true); /** if shop group is selected */ if (!$id_shop && $id_shop_group) { $shops = Shop::getShops(false, $id_shop_group); } elseif (!$id_shop && !$id_shop_group) { $shops = Shop::getShops(false); } else { $shops = array(0 => array('id_shop' => $id_shop)); } if (is_array($shops) && count($shops)) { foreach ($shops as $shop) { if (in_array(_DB_PREFIX_ . "carrier_tax_rules_group_shop", $existing_tables)) { $query = 'INSERT INTO `' . _DB_PREFIX_ . 'carrier_tax_rules_group_shop` (id_carrier, id_tax_rules_group, id_shop) VALUES("' . $id_carrier . '", "0","' . $shop['id_shop'] . '")'; Db::getInstance()->Execute($query); } if (in_array(_DB_PREFIX_ . "carrier_shop", $existing_tables)) { $query = 'INSERT INTO `' . _DB_PREFIX_ . 'carrier_shop` (id_carrier, id_shop) VALUES("' . $id_carrier . '", "' . $shop['id_shop'] . '")'; Db::getInstance()->Execute($query); } /** insert carrier language for the store */ foreach ($languages as $language) { $query = 'INSERT INTO `' . _DB_PREFIX_ . 'carrier_lang` (id_carrier, id_shop, id_lang, delay) VALUES("' . (int) $id_carrier . '", "' . $shop['id_shop'] . '", "' . (int) $language['id_lang'] . '", "' . (Tools::getValue('dhl_transit_time') != "" ? Tools::getValue('dhl_transit_time') : " ") . '")'; Db::getInstance()->Execute($query); } } } else { die('fatal error: could not create carrier, reload the page and try again'); } } else { /** insert carrier language for the store */ foreach ($languages as $language) { $query = 'INSERT INTO `' . _DB_PREFIX_ . 'carrier_lang` (id_carrier, id_lang, delay) VALUES("' . (int) $id_carrier . '", "' . (int) $language['id_lang'] . '", "' . (Tools::getValue('dhl_transit_time') != "" ? Tools::getValue('dhl_transit_time') : " ") . '")'; Db::getInstance()->Execute($query); } } $query = 'INSERT INTO `' . _DB_PREFIX_ . 'fe_dhl_method` (id_carrier, method, free_shipping, extra_shipping_type, extra_shipping_amount, insurance_minimum, insurance_type, insurance_amount, free_shipping_product, free_shipping_category, free_shipping_manufacturer, free_shipping_supplier) VALUES ("' . $id_carrier . '","' . Tools::getValue('dhl_method') . '","' . intval(Tools::getValue('dhl_free_shipping')) . '", "' . intval(Tools::getValue('dhl_extra_charge')) . '","' . intval(Tools::getValue('dhl_extra_amount')) . '", "' . intval(Tools::getValue('dhl_minimum_insurance_amount')) . '","' . intval(Tools::getValue('dhl_insurance_charge')) . '", "' . intval(Tools::getValue('dhl_insurance_amount')) . '","","","","")'; Db::getInstance()->Execute($query); $query = 'INSERT INTO `' . _DB_PREFIX_ . 'carrier_zone` (id_carrier, id_zone) VALUES("' . $id_carrier . '", "' . Tools::getValue('dhl_zone') . '")'; Db::getInstance()->Execute($query); $query = 'INSERT INTO `' . _DB_PREFIX_ . 'range_weight` (id_carrier, delimiter1, delimiter2) VALUES("' . $id_carrier . '", "0.00", "100000.00")'; Db::getInstance()->Execute($query); $id_range_weight = Db::getInstance()->Insert_ID(); $query = 'INSERT INTO `' . _DB_PREFIX_ . 'delivery` (id_carrier, id_range_weight, id_zone, price) VALUES("' . $id_carrier . '", "' . $id_range_weight . '", "' . Tools::getValue('dhl_zone') . '","0")'; Db::getInstance()->Execute($query); if ($this->getPSV() == 1.6) { $this->_html .= $this->displayConfirmation($this->l('Carrier created successfully')); } else { $this->_html .= '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="' . $this->l('Confirmation') . '" />' . $this->l('Carrier created successfully') . '</div>'; } } if (Tools::isSubmit('updateShipping') || Tools::isSubmit('deleteCache') || Tools::isSubmit('updateSettings')) { $query = 'TRUNCATE `' . _DB_PREFIX_ . 'fe_dhl_rate_cache`'; Db::getInstance()->Execute($query); $query = 'TRUNCATE `' . _DB_PREFIX_ . 'fe_dhl_hash_cache`'; Db::getInstance()->Execute($query); $query = 'TRUNCATE `' . _DB_PREFIX_ . 'fe_dhl_package_rate_cache`'; Db::getInstance()->Execute($query); $query = 'TRUNCATE `' . _DB_PREFIX_ . 'fe_dhl_invalid_dest`'; Db::getInstance()->Execute($query); Configuration::updateValue('DHL_DOWN_TIME', ''); //delete logs: $files = glob(dirname(__FILE__) . '/logs/*'); // get all file names foreach ($files as $file) { // iterate files if (is_file($file) and !strstr($file, 'index.php')) { unlink($file); } // delete file } if ($this->getPSV() == 1.6 && Tools::isSubmit('deleteCache')) { $this->_html .= $this->displayConfirmation($this->l('Shipping cache deleted successfully')); } elseif (Tools::isSubmit('deleteCache')) { $this->_html .= '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="' . $this->l('Confirmation') . '" />' . $this->l('Shipping cache deleted successfully') . '</div>'; } } if (Tools::isSubmit('updateShipping')) { $i = 1; while (isset($_POST['id_' . $i]) && $_POST['id_' . $i]) { $query = 'UPDATE `' . _DB_PREFIX_ . 'fe_dhl_method` SET free_shipping = "' . $_POST['dhl_free_shipping_' . $i] . '",free_shipping_product = "' . $_POST['dhl_free_shipping_product_' . $i] . '", free_shipping_category = "' . $_POST['dhl_free_shipping_category_' . $i] . '",free_shipping_manufacturer = "' . $_POST['dhl_free_shipping_manufacturer_' . $i] . '", free_shipping_supplier = "' . $_POST['dhl_free_shipping_supplier_' . $i] . '",extra_shipping_type = "' . $_POST['dhl_extra_charge_' . $i] . '", extra_shipping_amount = "' . $_POST['dhl_extra_amount_' . $i] . '", insurance_minimum = "' . $_POST['dhl_minimum_insurance_amount_' . $i] . '", insurance_type = "' . $_POST['dhl_insurance_charge_' . $i] . '", insurance_amount = "' . $_POST['dhl_insurance_amount_' . $i] . '" WHERE id_carrier = "' . $_POST['id_' . $i] . '"'; Db::getInstance()->Execute($query); $i++; } if ($this->getPSV() == 1.6) { $this->_html .= $this->displayConfirmation($this->l('Settings updated')); } else { $this->_html .= '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="' . $this->l('Confirmation') . '" />' . $this->l('Settings updated') . '</div>'; } } if (Tools::isSubmit('updateShipperInfo')) { Configuration::updateValue('DHL_SHIPPER_SHOP_NAME', Tools::getValue('shipper_shop_name')); Configuration::updateValue('DHL_SHIPPER_ATTENTION_NAME', Tools::getValue('shipper_attention_name')); Configuration::updateValue('DHL_SHIPPER_PHONE', Tools::getValue('shipper_phone')); Configuration::updateValue('DHL_SHIPPER_ADDR1', Tools::getValue('shipper_address1')); Configuration::updateValue('DHL_SHIPPER_ADDR2', Tools::getValue('shipper_address2')); Configuration::updateValue('DHL_SHIPPER_CITY', Tools::getValue('shipper_city')); Configuration::updateValue('DHL_SHIPPER_COUNTRY', Tools::getValue('shipper_country')); Configuration::updateValue('DHL_SHIPPER_STATE', Tools::getValue('shipper_state')); Configuration::updateValue('DHL_SHIPPER_POSTCODE', Tools::getValue('shipper_postcode')); Configuration::updateValue('DHL_ENABLE_LABELS', Tools::getValue('dhl_enable_labels')); Configuration::updateValue('DHL_LABEL_ORDER_STATUS', Tools::getValue('label_order_status')); if ($this->getPSV() == 1.6) { $this->_html .= $this->displayConfirmation($this->l('Settings updated')); } else { $this->_html .= '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="' . $this->l('Confirmation') . '" />' . $this->l('Settings updated') . '</div>'; } } $this->_refreshProperties(); }
public function postProcessCallback() { $return = false; $installed_modules = array(); foreach ($this->map as $key => $method) { $modules = Tools::getValue($key); if (strpos($modules, '|')) { $modules_list_save = $modules; $modules = explode('|', $modules); } else { $modules = empty($modules) ? false : array($modules); } $module_errors = array(); if ($modules) { foreach ($modules as $name) { $full_report = null; if ($key == 'update') { if (ConfigurationTest::test_dir('modules/' . $name, true, $full_report)) { Tools::deleteDirectory('../modules/' . $name . '/'); } else { $module = Module::getInstanceByName(urldecode($name)); $this->errors[] = $this->l(sprintf("Module %s can't be upgraded : ", $module->displayName)) . $full_report; continue; } } // If Addons module, download and unzip it before installing it if (!file_exists('../modules/' . $name . '/' . $name . '.php')) { $filesList = array(array('type' => 'addonsNative', 'file' => Module::CACHE_FILE_DEFAULT_COUNTRY_MODULES_LIST, 'loggedOnAddons' => 0), array('type' => 'addonsBought', 'file' => Module::CACHE_FILE_CUSTOMER_MODULES_LIST, 'loggedOnAddons' => 1)); foreach ($filesList as $f) { if (file_exists(_PS_ROOT_DIR_ . $f['file'])) { $file = $f['file']; $content = Tools::file_get_contents(_PS_ROOT_DIR_ . $file); $xml = @simplexml_load_string($content, null, LIBXML_NOCDATA); foreach ($xml->module as $modaddons) { if ($name == $modaddons->name && isset($modaddons->id) && ($this->logged_on_addons || $f['loggedOnAddons'] == 0)) { if ($f['loggedOnAddons'] == 0) { if (file_put_contents('../modules/' . $modaddons->name . '.zip', Tools::addonsRequest('module', array('id_module' => pSQL($modaddons->id))))) { $this->extractArchive('../modules/' . $modaddons->name . '.zip', false); } } if ($f['loggedOnAddons'] == 1 && $this->logged_on_addons) { if (file_put_contents('../modules/' . $modaddons->name . '.zip', Tools::addonsRequest('module', array('id_module' => pSQL($modaddons->id), 'username_addons' => pSQL(trim($this->context->cookie->username_addons)), 'password_addons' => pSQL(trim($this->context->cookie->password_addons)))))) { $this->extractArchive('../modules/' . $modaddons->name . '.zip', false); } } } } } } } // Check potential error if (!($module = Module::getInstanceByName(urldecode($name)))) { $this->errors[] = $this->l('Module not found'); } elseif ($key == 'install' && $this->tabAccess['add'] !== '1') { $this->errors[] = Tools::displayError('You do not have permission to install this module.'); } elseif ($key == 'uninstall' && ($this->tabAccess['delete'] !== '1' || !$module->getPermission('configure'))) { $this->errors[] = Tools::displayError('You do not have permission to delete this module.'); } elseif ($key == 'configure' && ($this->tabAccess['edit'] !== '1' || !$module->getPermission('configure') || !Module::isInstalled(urldecode($name)))) { $this->errors[] = Tools::displayError('You do not have permission to configure this module.'); } elseif ($key == 'install' && Module::isInstalled($module->name)) { $this->errors[] = Tools::displayError('This module is already installed:') . ' ' . $module->name; } elseif ($key == 'uninstall' && !Module::isInstalled($module->name)) { $this->errors[] = Tools::displayError('This module has already been uninstalled:') . ' ' . $module->name; } else { if ($key == 'update' && !Module::isInstalled($module->name)) { $this->errors[] = Tools::displayError('This module need to be installed in order to be updated:') . ' ' . $module->name; } else { // If we install a module, force temporary global context for multishop if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_ALL && $method != 'getContent') { Context::getContext()->tmpOldShop = clone Context::getContext()->shop; Context::getContext()->shop = new Shop(); } //retrocompatibility if (Tools::getValue('controller') != '') { $_POST['tab'] = Tools::safeOutput(Tools::getValue('controller')); } $echo = ''; if ($key != 'update') { // We check if method of module exists if (!method_exists($module, $method)) { throw new PrestaShopException('Method of module can\'t be found'); } // Get the return value of current method $echo = $module->{$method}(); } // If the method called is "configure" (getContent method), we show the html code of configure page if ($key == 'configure' && Module::isInstalled($module->name)) { if (isset($module->multishop_context)) { $this->multishop_context = $module->multishop_context; } $backlink = self::$currentIndex . '&token=' . $this->token . '&tab_module=' . $module->tab . '&module_name=' . $module->name; $hooklink = 'index.php?tab=AdminModulesPositions&token=' . Tools::getAdminTokenLite('AdminModulesPositions') . '&show_modules=' . (int) $module->id; $tradlink = 'index.php?tab=AdminTranslations&token=' . Tools::getAdminTokenLite('AdminTranslations') . '&type=modules&lang='; $toolbar = '<table class="table" cellpadding="0" cellspacing="0" style="margin:auto;text-align:center"><tr> <th>' . $this->l('Module') . ' <span style="color: green;">' . $module->name . '</span></th> <th><a href="' . $backlink . '" style="padding:5px 10px">' . $this->l('Back') . '</a></th> <th><a href="' . $hooklink . '" style="padding:5px 10px">' . $this->l('Manage hooks') . '</a></th> <th style="padding:5px 10px">' . $this->l('Manage translations') . ' '; foreach (Language::getLanguages(false) as $language) { $toolbar .= '<a href="' . $tradlink . $language['iso_code'] . '#' . $module->name . '" style="margin-left:5px"><img src="' . _THEME_LANG_DIR_ . $language['id_lang'] . '.jpg" alt="' . $language['iso_code'] . '" title="' . $language['iso_code'] . '" /></a>'; } $toolbar .= '</th></tr>'; // Display checkbox in toolbar if multishop if (Shop::isFeatureActive()) { $activateOnclick = 'onclick="location.href = \'' . $this->getCurrentUrl('enable') . '&enable=\'+(($(this).attr(\'checked\')) ? 1 : 0)"'; $toolbar .= '<tr> <th colspan="4"> <input type="checkbox" name="activateModule" value="1" ' . ($module->active ? 'checked="checked"' : '') . ' ' . $activateOnclick . ' /> ' . $this->l('Activate module for') . ' '; if (Shop::getContext() == Shop::CONTEXT_SHOP) { $toolbar .= 'shop <b>' . $this->context->shop->name . '</b>'; } elseif (Shop::getContext() == Shop::CONTEXT_GROUP) { $shop_group = new ShopGroup((int) Shop::getContextShopGroupID()); $toolbar .= 'all shops of group shop <b>' . $shop_group->name . '</b>'; } else { $toolbar .= 'all shops'; } $toolbar .= '</th> </tr>'; } $toolbar .= '</table>'; if (Shop::isFeatureActive() && isset(Context::getContext()->tmpOldShop)) { Context::getContext()->shop = clone Context::getContext()->tmpOldShop; unset(Context::getContext()->tmpOldShop); } // Display module configuration $this->context->smarty->assign('module_content', $toolbar . '<div class="clear"> </div>' . $echo . '<div class="clear"> </div>' . $toolbar); } elseif ($echo === true) { $return = 13; if ($method == 'install') { $return = 12; $installed_modules[] = $module->id; } } elseif ($echo === false) { $module_errors[] = array('name' => $name, 'message' => $module->getErrors()); } if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_ALL && isset(Context::getContext()->tmpOldShop)) { Context::getContext()->shop = clone Context::getContext()->tmpOldShop; unset(Context::getContext()->tmpOldShop); } } } if ($key != 'configure' && isset($_GET['bpay'])) { Tools::redirectAdmin('index.php?tab=AdminPayment&token=' . Tools::getAdminToken('AdminPayment' . (int) Tab::getIdFromClassName('AdminPayment') . (int) $this->id_employee)); } } } if (count($module_errors)) { // If error during module installation, no redirection $html_error = $this->generateHtmlMessage($module_errors); $this->errors[] = sprintf(Tools::displayError('The following module(s) were not installed properly: %s'), $html_error); $this->context->smarty->assign('error_module', 'true'); } } if ($return) { $params = count($installed_modules) ? '&installed_modules=' . implode('|', $installed_modules) : ''; // If redirect parameter is present and module installed with success, we redirect on configuration module page if (Tools::getValue('redirect') == 'config' && Tools::getValue('module_name') != '' && $return == '12' && Module::isInstalled(pSQL(Tools::getValue('module_name')))) { Tools::redirectAdmin('index.php?controller=adminmodules&configure=' . Tools::getValue('module_name') . '&token=' . Tools::getValue('token') . '&module_name=' . Tools::getValue('module_name') . $params); } Tools::redirectAdmin(self::$currentIndex . '&conf=' . $return . '&token=' . $this->token . '&tab_module=' . $module->tab . '&module_name=' . $module->name . '&anchor=anchor' . ucfirst($module->name) . (isset($modules_list_save) ? '&modules_list=' . $modules_list_save : '') . $params); } }
public function getCarriers($id_zone = NULL, $cart = NULL, $is_cart = false, $product = NULL) { if ($this->getPSV() >= 1.5) { /** $this->context->shop is not accurate */ $id_shop_group = Shop::getContextShopGroupID(true); $id_shop = Shop::getContextShopID(true); /** if shop group is selected */ if (!$id_shop && $id_shop_group) { $shops = Shop::getShops(false, $id_shop_group, true); } elseif (!$id_shop && !$id_shop_group) { $shops = Shop::getShops(false, null, true); } else { $shops[$id_shop] = $id_shop; } } // for compatibility if ($this->name == 'localizedshipping') { $name = 'shp'; } else { $name = $this->name; } $cart_carriers = $this->getProductCarriers($cart, $is_cart, $product); $query = ' SELECT * FROM `' . _DB_PREFIX_ . 'carrier` c, `' . _DB_PREFIX_ . 'carrier_zone` cz,`' . _DB_PREFIX_ . 'fe_' . $name . '_method` ffm ' . ($this->getPSV() >= 1.5 ? ',`' . _DB_PREFIX_ . 'carrier_shop` cs' : '') . ' WHERE c.active = 1 AND c.deleted = 0 AND c.id_carrier = ffm.id_carrier AND c.id_carrier = cz.id_carrier' . ($id_zone ? ' AND cz.id_zone = "' . (int) $id_zone . '"' : '') . (sizeof($cart_carriers) ? ' AND c.id_carrier IN (' . implode(',', $cart_carriers) . ')' : '') . ($this->getPSV() >= 1.5 ? ' AND c.id_carrier = cs.id_carrier AND cs.`id_shop` IN (' . implode(',', $shops) . ')' : '') . ' GROUP BY c.`id_carrier`'; $result = Db::getInstance()->executeS($query); return $result; }
} } else { if (Shop::getShop($split[1]) && Context::getContext()->employee->hasAuthOnShop($split[1])) { $shop_id = $split[1]; Shop::setContext(Shop::CONTEXT_SHOP, $shop_id); } else { $shop_id = Context::getContext()->employee->getDefaultShopID(); Shop::setContext(Shop::CONTEXT_SHOP, $shop_id); } } } } // Check multishop context and set right context if need if (Shop::getContext()) { if (Shop::getContext() == Shop::CONTEXT_SHOP && !Shop::CONTEXT_SHOP) { Shop::setContext(Shop::CONTEXT_GROUP, Shop::getContextShopGroupID()); } if (Shop::getContext() == Shop::CONTEXT_GROUP && !Shop::CONTEXT_GROUP) { Shop::setContext(Shop::CONTEXT_ALL); } } // Replace existing shop if necessary if (!$shop_id) { Context::getContext()->shop = new Shop(Configuration::get('PS_SHOP_DEFAULT')); } elseif (Context::getContext()->shop->id != $shop_id) { Context::getContext()->shop = new Shop($shop_id); } require_once $module_path; $grid = new $module(); $grid->setEmployee($id_employee); $grid->setLang($id_lang);
/** * Check if configuration var is defined in given context * * @param string $key * @param int $id_lang * @param int $context */ public static function hasContext($key, $id_lang, $context) { if (Shop::getContext() == Shop::CONTEXT_ALL) { $id_shop = $id_shop_group = null; } elseif (Shop::getContext() == Shop::CONTEXT_GROUP) { $id_shop_group = Shop::getContextShopGroupID(true); $id_shop = null; } else { $id_shop_group = Shop::getContextShopGroupID(true); $id_shop = Shop::getContextShopID(true); } if ($context == Shop::CONTEXT_SHOP && Configuration::hasKey($key, $id_lang, null, $id_shop)) { return true; } elseif ($context == Shop::CONTEXT_GROUP && Configuration::hasKey($key, $id_lang, $id_shop_group)) { return true; } elseif ($context == Shop::CONTEXT_ALL && Configuration::hasKey($key, $id_lang)) { return true; } return false; }
public function initFormQuantities($obj) { if (!$this->default_form_language) { $this->getLanguages(); } $data = $this->createTemplate($this->tpl_form); $data->assign('default_form_language', $this->default_form_language); if ($obj->id) { if ($this->product_exists_in_shop) { // Get all id_product_attribute $attributes = $obj->getAttributesResume($this->context->language->id); if (empty($attributes)) { $attributes[] = array('id_product_attribute' => 0, 'attribute_designation' => ''); } // Get available quantities $available_quantity = array(); $product_designation = array(); foreach ($attributes as $attribute) { // Get available quantity for the current product attribute in the current shop $available_quantity[$attribute['id_product_attribute']] = StockAvailable::getQuantityAvailableByProduct((int) $obj->id, $attribute['id_product_attribute']); // Get all product designation $product_designation[$attribute['id_product_attribute']] = rtrim($obj->name[$this->context->language->id] . ' - ' . $attribute['attribute_designation'], ' - '); } $show_quantities = true; $shop_context = Shop::getContext(); $shop_group = new ShopGroup((int) Shop::getContextShopGroupID()); // if we are in all shops context, it's not possible to manage quantities at this level if (Shop::isFeatureActive() && $shop_context == Shop::CONTEXT_ALL) { $show_quantities = false; } elseif (Shop::isFeatureActive() && $shop_context == Shop::CONTEXT_GROUP) { // if quantities are not shared between shops of the group, it's not possible to manage them at group level if (!$shop_group->share_stock) { $show_quantities = false; } } else { // if quantities are shared between shops of the group, it's not possible to manage them for a given shop if ($shop_group->share_stock) { $show_quantities = false; } } $data->assign('ps_stock_management', Configuration::get('PS_STOCK_MANAGEMENT')); $data->assign('has_attribute', $obj->hasAttributes()); // Check if product has combination, to display the available date only for the product or for each combination if (Combination::isFeatureActive()) { $data->assign('countAttributes', (int) Db::getInstance()->getValue('SELECT COUNT(id_product) FROM ' . _DB_PREFIX_ . 'product_attribute WHERE id_product = ' . (int) $obj->id)); } else { $data->assign('countAttributes', false); } // if advanced stock management is active, checks associations $advanced_stock_management_warning = false; if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && $obj->advanced_stock_management) { $p_attributes = Product::getProductAttributesIds($obj->id); $warehouses = array(); if (!$p_attributes) { $warehouses[] = Warehouse::getProductWarehouseList($obj->id, 0); } foreach ($p_attributes as $p_attribute) { $ws = Warehouse::getProductWarehouseList($obj->id, $p_attribute['id_product_attribute']); if ($ws) { $warehouses[] = $ws; } } $warehouses = Tools::arrayUnique($warehouses); if (empty($warehouses)) { $advanced_stock_management_warning = true; } } if ($advanced_stock_management_warning) { $this->displayWarning($this->l('If you wish to use the advanced stock management, you must:')); $this->displayWarning('- ' . $this->l('associate your products with warehouses.')); $this->displayWarning('- ' . $this->l('associate your warehouses with carriers.')); $this->displayWarning('- ' . $this->l('associate your warehouses with the appropriate shops.')); } $pack_quantity = null; // if product is a pack if (Pack::isPack($obj->id)) { $items = Pack::getItems((int) $obj->id, Configuration::get('PS_LANG_DEFAULT')); // gets an array of quantities (quantity for the product / quantity in pack) $pack_quantities = array(); foreach ($items as $item) { if (!$item->isAvailableWhenOutOfStock((int) $item->out_of_stock)) { $pack_id_product_attribute = Product::getDefaultAttribute($item->id, 1); $pack_quantities[] = Product::getQuantity($item->id, $pack_id_product_attribute) / ($item->pack_quantity !== 0 ? $item->pack_quantity : 1); } } // gets the minimum if (count($pack_quantities)) { $pack_quantity = $pack_quantities[0]; foreach ($pack_quantities as $value) { if ($pack_quantity > $value) { $pack_quantity = $value; } } } if (!Warehouse::getPackWarehouses((int) $obj->id)) { $this->displayWarning($this->l('You must have a common warehouse between this pack and its product.')); } } $data->assign(array('attributes' => $attributes, 'available_quantity' => $available_quantity, 'pack_quantity' => $pack_quantity, 'stock_management_active' => Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT'), 'product_designation' => $product_designation, 'product' => $obj, 'show_quantities' => $show_quantities, 'order_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK'), 'token_preferences' => Tools::getAdminTokenLite('AdminPPreferences'), 'token' => $this->token, 'languages' => $this->_languages, 'id_lang' => $this->context->language->id)); } else { $this->displayWarning($this->l('You must save the product in this shop before managing quantities.')); } } else { $this->displayWarning($this->l('You must save this product before managing quantities.')); } $this->tpl_form_vars['custom_form'] = $data->fetch(); }
public function updateOptionPsCurrencyDefault($value) { if ($value == Configuration::get('PS_CURRENCY_DEFAULT')) { return; } Configuration::updateValue('PS_CURRENCY_DEFAULT', $value); /* Set conversion rate of default currency to 1 */ ObjectModel::updateMultishopTable('Currency', array('conversion_rate' => 1), 'a.id_currency'); $tmp_context = Shop::getContext(); if ($tmp_context == Shop::CONTEXT_GROUP) { $tmp_shop = Shop::getContextShopGroupID(); } else { $tmp_shop = (int) Shop::getContextShopID(); } foreach (Shop::getContextListShopID() as $id_shop) { Shop::setContext(Shop::CONTEXT_SHOP, (int) $id_shop); Currency::refreshCurrencies(); } Shop::setContext($tmp_context, $tmp_shop); }
public function initShopContext() { if (!$this->context->employee->isLoggedBack()) { return; } // Change shop context ? if (Shop::isFeatureActive() && Tools::getValue('setShopContext') !== false) { $this->context->cookie->shopContext = Tools::getValue('setShopContext'); $url = parse_url($_SERVER['REQUEST_URI']); $query = isset($url['query']) ? $url['query'] : ''; parse_str($query, $parse_query); unset($parse_query['setShopContext'], $parse_query['conf']); $this->redirect_after = $url['path'] . '?' . http_build_query($parse_query, '', '&'); } elseif (!Shop::isFeatureActive()) { $this->context->cookie->shopContext = 's-' . Configuration::get('PS_SHOP_DEFAULT'); } elseif (Shop::getTotalShops(false, null) < 2) { $this->context->cookie->shopContext = 's-' . $this->context->employee->getDefaultShopID(); } $shop_id = ''; Shop::setContext(Shop::CONTEXT_ALL); if ($this->context->cookie->shopContext) { $split = explode('-', $this->context->cookie->shopContext); if (count($split) == 2) { if ($split[0] == 'g') { if ($this->context->employee->hasAuthOnShopGroup($split[1])) { Shop::setContext(Shop::CONTEXT_GROUP, $split[1]); } else { $shop_id = $this->context->employee->getDefaultShopID(); Shop::setContext(Shop::CONTEXT_SHOP, $shop_id); } } elseif (Shop::getShop($split[1]) && $this->context->employee->hasAuthOnShop($split[1])) { $shop_id = $split[1]; Shop::setContext(Shop::CONTEXT_SHOP, $shop_id); } else { $shop_id = $this->context->employee->getDefaultShopID(); Shop::setContext(Shop::CONTEXT_SHOP, $shop_id); } } } // Check multishop context and set right context if need if (!($this->multishop_context & Shop::getContext())) { if (Shop::getContext() == Shop::CONTEXT_SHOP && !($this->multishop_context & Shop::CONTEXT_SHOP)) { Shop::setContext(Shop::CONTEXT_GROUP, Shop::getContextShopGroupID()); } if (Shop::getContext() == Shop::CONTEXT_GROUP && !($this->multishop_context & Shop::CONTEXT_GROUP)) { Shop::setContext(Shop::CONTEXT_ALL); } } // Replace existing shop if necessary if (!$shop_id) { $this->context->shop = new Shop(Configuration::get('PS_SHOP_DEFAULT')); } elseif ($this->context->shop->id != $shop_id) { $this->context->shop = new Shop($shop_id); } if ($this->context->shop->id_theme != $this->context->theme->id) { $this->context->theme = new Theme($this->context->shop->id_theme); } // Replace current default country $this->context->country = new Country((int) Configuration::get('PS_COUNTRY_DEFAULT')); }
public function getConfigFieldsValues() { $id_shop_group = Shop::getContextShopGroupID(); $id_shop = Shop::getContextShopID(); return array('HOMESLIDER_WIDTH' => Tools::getValue('HOMESLIDER_WIDTH', Configuration::get('HOMESLIDER_WIDTH', null, $id_shop_group, $id_shop)), 'HOMESLIDER_SPEED' => Tools::getValue('HOMESLIDER_SPEED', Configuration::get('HOMESLIDER_SPEED', null, $id_shop_group, $id_shop)), 'HOMESLIDER_PAUSE' => Tools::getValue('HOMESLIDER_PAUSE', Configuration::get('HOMESLIDER_PAUSE', null, $id_shop_group, $id_shop)), 'HOMESLIDER_LOOP' => Tools::getValue('HOMESLIDER_LOOP', Configuration::get('HOMESLIDER_LOOP', null, $id_shop_group, $id_shop))); }
/** * Render an area to determinate shop association * * @return string */ public function renderAssoShop($disable_shared = false) { if (!Shop::isFeatureActive()) { return; } $assos = array(); if ((int) $this->id) { $sql = 'SELECT `id_shop`, `' . bqSQL($this->identifier) . '` FROM `' . _DB_PREFIX_ . bqSQL($this->table) . '_shop` WHERE `' . bqSQL($this->identifier) . '` = ' . (int) $this->id; foreach (Db::getInstance()->executeS($sql) as $row) { $assos[$row['id_shop']] = $row['id_shop']; } } else { switch (Shop::getContext()) { case Shop::CONTEXT_SHOP: $assos[Shop::getContextShopID()] = Shop::getContextShopID(); break; case Shop::CONTEXT_GROUP: foreach (Shop::getShops(false, Shop::getContextShopGroupID(), true) as $id_shop) { $assos[$id_shop] = $id_shop; } break; default: foreach (Shop::getShops(false, null, true) as $id_shop) { $assos[$id_shop] = $id_shop; } break; } } $tpl = $this->createTemplate('assoshop.tpl'); $tree = Shop::getTree(); $nb_shop = 0; foreach ($tree as &$value) { $value['disable_shops'] = isset($value[$disable_shared]) && $value[$disable_shared]; $nb_shop += count($value['shops']); } $tpl->assign(array('input' => array('type' => 'shop', 'values' => $tree), 'fields_value' => array('shop' => $assos), 'form_id' => $this->id, 'table' => $this->table, 'nb_shop' => $nb_shop)); return $tpl->fetch(); }
/** * Removes all "NOSTOTAGGING_" config entries for the current context and given language. * * @param int|null $id_lang the ID of the language object to remove the config entries for. * @param null|int $id_shop_group the ID of the shop context. * @param null|int $id_shop the ID of the shop. * @return bool */ public function deleteAllFromContext($id_lang = null, $id_shop_group = null, $id_shop = null) { if (_PS_VERSION_ >= '1.5') { if ($id_shop === null) { $id_shop = (int) Shop::getContextShopID(true); } if ($id_shop_group === null) { $id_shop_group = (int) Shop::getContextShopGroupID(true); } if ($id_shop) { $context_restriction = ' AND `id_shop` = ' . $id_shop; } elseif ($id_shop_group) { $context_restriction = ' AND `id_shop_group` = ' . $id_shop_group . ' AND (`id_shop` IS NULL OR `id_shop` = 0)'; } else { $context_restriction = ' AND (`id_shop_group` IS NULL OR `id_shop_group` = 0) AND (`id_shop` IS NULL OR `id_shop` = 0)'; } } else { $context_restriction = ''; } $config_table = _DB_PREFIX_ . 'configuration'; $config_lang_table = $config_table . '_lang'; if (!empty($id_lang)) { Db::getInstance()->execute(' DELETE `' . $config_lang_table . '` FROM `' . $config_lang_table . '` INNER JOIN `' . $config_table . '` ON `' . $config_lang_table . '`.`id_configuration` = `' . $config_table . '`.`id_configuration` WHERE `' . $config_table . '`.`name` LIKE "NOSTOTAGGING_%" AND `id_lang` = ' . (int) $id_lang . $context_restriction); } // We do not actually delete the main config entries, just set them to NULL, as there might me other language // specific entries tied to them. The main entries are not used anyways if there are languages defined. /* todo: this breaks PS 1.4, apparently you cannot update a value that is NULL in PS 1.4. Db::getInstance()->execute(' UPDATE `'.$config_table.'` SET `value` = NULL WHERE `name` LIKE "NOSTOTAGGING_%"' .$context_restriction );*/ // Reload the config. Configuration::loadConfiguration(); return true; }
/** * This tricky method generates a SQL clause to check if ranged data are overloaded by multishop * * @since 1.5.0 * * @param string $range_table Range table * * @return string SQL quoer to get the delivery range table in this Shop(Group) */ public static function sqlDeliveryRangeShop($range_table, $alias = 'd') { if (Shop::getContext() == Shop::CONTEXT_ALL) { $where = 'AND d2.id_shop IS NULL AND d2.id_shop_group IS NULL'; } elseif (Shop::getContext() == Shop::CONTEXT_GROUP) { $where = 'AND ((d2.id_shop_group IS NULL OR d2.id_shop_group = ' . Shop::getContextShopGroupID() . ') AND d2.id_shop IS NULL)'; } else { $where = 'AND (d2.id_shop = ' . Shop::getContextShopID() . ' OR (d2.id_shop_group = ' . Shop::getContextShopGroupID() . ' AND d2.id_shop IS NULL) OR (d2.id_shop_group IS NULL AND d2.id_shop IS NULL))'; } $sql = 'AND ' . $alias . '.id_delivery = ( SELECT d2.id_delivery FROM ' . _DB_PREFIX_ . 'delivery d2 WHERE d2.id_carrier = `' . bqSQL($alias) . '`.id_carrier AND d2.id_zone = `' . bqSQL($alias) . '`.id_zone AND d2.`id_' . bqSQL($range_table) . '` = `' . bqSQL($alias) . '`.`id_' . bqSQL($range_table) . '` ' . $where . ' ORDER BY d2.id_shop DESC, d2.id_shop_group DESC LIMIT 1 )'; return $sql; }
/** * Render an area to determinate shop association * * @return string */ public function renderAssoShop($disable_shared = false, $template_directory = null) { if (!Shop::isFeatureActive()) { return; } $assos = array(); if ((int) $this->id) { $sql = 'SELECT `id_shop`, `' . bqSQL($this->identifier) . '` FROM `' . _DB_PREFIX_ . bqSQL($this->table) . '_shop` WHERE `' . bqSQL($this->identifier) . '` = ' . (int) $this->id; foreach (Db::getInstance()->executeS($sql) as $row) { $assos[$row['id_shop']] = $row['id_shop']; } } else { switch (Shop::getContext()) { case Shop::CONTEXT_SHOP: $assos[Shop::getContextShopID()] = Shop::getContextShopID(); break; case Shop::CONTEXT_GROUP: foreach (Shop::getShops(false, Shop::getContextShopGroupID(), true) as $id_shop) { $assos[$id_shop] = $id_shop; } break; default: foreach (Shop::getShops(false, null, true) as $id_shop) { $assos[$id_shop] = $id_shop; } break; } } /*$nb_shop = 0; foreach ($tree as &$value) { $value['disable_shops'] = (isset($value[$disable_shared]) && $value[$disable_shared]); $nb_shop += count($value['shops']); }*/ $tree = new HelperTreeShops('shop-tree', 'Shops'); if (isset($template_directory)) { $tree->setTemplateDirectory($template_directory); } $tree->setSelectedShops($assos); $tree->setAttribute('table', $this->table); return $tree->render(); }
/** * Add an sql restriction for shops fields * * @param int $share If false, dont check share datas from group. Else can take a Shop::SHARE_* constant value * @param string $alias */ public static function addSqlRestriction($share = false, $alias = null) { if ($alias) { $alias .= '.'; } $group = Shop::getGroupFromShop(Shop::getContextShopID(), false); if ($share == Shop::SHARE_CUSTOMER && Shop::getContext() == Shop::CONTEXT_SHOP && $group['share_customer']) { $restriction = ' AND ' . $alias . 'id_shop_group = ' . (int) Shop::getContextShopGroupID(); } else { $restriction = ' AND ' . $alias . 'id_shop IN (' . implode(', ', Shop::getContextListShopID($share)) . ') '; } return $restriction; }
private function getContextShop() { $contextShop = NULL; if ($this->isVersionOneDotFive()) { $contextShop[] = Shop::getContext(); if ($contextShop[0] == Shop::CONTEXT_SHOP) { array_push($contextShop, Shop::getContextShopID()); } else { if ($contextShop[0] == Shop::CONTEXT_GROUP) { array_push($contextShop, Shop::getContextShopGroupID()); } else { array_push($contextShop, NULL); } } } return $contextShop; }