本文整理汇总了PHP中Shop::getGroupFromShop方法的典型用法代码示例。如果您正苦于以下问题:PHP Shop::getGroupFromShop方法的具体用法?PHP Shop::getGroupFromShop怎么用?PHP Shop::getGroupFromShop使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Shop
的用法示例。
在下文中一共展示了Shop::getGroupFromShop方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: upgrade_module_1_5_0
function upgrade_module_1_5_0($module)
{
/* Get existing values as default */
$default_width = (int) Configuration::get('HOMESLIDER_WIDTH');
$default_speed = (int) Configuration::get('HOMESLIDER_SPEED');
$default_pause = (int) Configuration::get('HOMESLIDER_PAUSE');
$default_loop = (int) Configuration::get('HOMESLIDER_LOOP');
$res = true;
// Clean existing
Configuration::deleteByName('HOMESLIDER_WIDTH');
Configuration::deleteByName('HOMESLIDER_SPEED');
Configuration::deleteByName('HOMESLIDER_PAUSE');
Configuration::deleteByName('HOMESLIDER_LOOP');
$shops = Shop::getContextListShopID();
$shop_groups_list = array();
/* Setup each shop */
foreach ($shops as $shop_id) {
$shop_group_id = (int) Shop::getGroupFromShop($shop_id, true);
if (!in_array($shop_group_id, $shop_groups_list)) {
$shop_groups_list[] = $shop_group_id;
}
/* Sets up configuration */
$res = Configuration::updateValue('HOMESLIDER_WIDTH', $default_width, false, $shop_group_id, $shop_id);
$res &= Configuration::updateValue('HOMESLIDER_SPEED', $default_speed, false, $shop_group_id, $shop_id);
$res &= Configuration::updateValue('HOMESLIDER_PAUSE', $default_pause, false, $shop_group_id, $shop_id);
$res &= Configuration::updateValue('HOMESLIDER_LOOP', $default_loop, false, $shop_group_id, $shop_id);
}
/* Sets up Shop Group configuration */
if (count($shop_groups_list)) {
foreach ($shop_groups_list as $shop_group_id) {
$res = Configuration::updateValue('HOMESLIDER_WIDTH', $default_width, false, $shop_group_id);
$res &= Configuration::updateValue('HOMESLIDER_SPEED', $default_speed, false, $shop_group_id);
$res &= Configuration::updateValue('HOMESLIDER_PAUSE', $default_pause, false, $shop_group_id);
$res &= Configuration::updateValue('HOMESLIDER_LOOP', $default_loop, false, $shop_group_id);
}
}
/* Sets up Global configuration */
$res = Configuration::updateValue('HOMESLIDER_WIDTH', $default_width);
$res &= Configuration::updateValue('HOMESLIDER_SPEED', $default_speed);
$res &= Configuration::updateValue('HOMESLIDER_PAUSE', $default_pause);
$res &= Configuration::updateValue('HOMESLIDER_LOOP', $default_loop);
return $res;
}
示例2: __construct
public function __construct()
{
$this->name = 'tdpsthemeoptionpanel';
$this->tab = 'front_office_features';
$this->version = '2.0.1';
//2.0.1 theme options for all themesdeveloper themes
$this->author = 'ThemesDeveloper';
$this->secure_key = Tools::encrypt($this->name);
$this->default_language = (int) Configuration::get('PS_LANG_DEFAULT');
$this->languages = Language::getLanguages(false);
parent::__construct();
$this->displayName = $this->l('Barberry Theme Options Panel');
$this->description = $this->l('Barberry Prestashop Themes Option Panel By ThemesDeveloper');
$this->module_path = _PS_MODULE_DIR_ . $this->name . '/';
$this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
$this->tdpsBaseModeURL = __PS_BASE_URI__ . 'modules/tdpsthemeoptionpanel/';
$this->backofficImage = __PS_BASE_URI__ . 'modules/tdpsthemeoptionpanel/img/';
$this->backofficJS = __PS_BASE_URI__ . 'modules/tdpsthemeoptionpanel/js/';
$this->backofficCSS = __PS_BASE_URI__ . 'modules/tdpsthemeoptionpanel/css/';
$this->patternsURL = __PS_BASE_URI__ . 'modules/tdpsthemeoptionpanel/bg/';
$this->patternsDIR = _PS_MODULE_DIR_ . 'tdpsthemeoptionpanel/bg/';
$this->themeImageURL = _PS_BASE_URL_SSL_ . __PS_BASE_URI__ . 'themes/barberry/img/barberry/';
$this->themeCSSURL = __PS_BASE_URI__ . 'themes/barberry/css/barberry/';
$this->themeJSURL = __PS_BASE_URI__ . 'themes/barberry/js/barberry/';
$this->themeImage = __PS_BASE_URI__ . 'themes/barberry/img/';
$this->tdshopBaseURL = _PS_BASE_URL_ . __PS_BASE_URI__;
$this->getBgPatern();
$shop_name = array();
$shop_group = array();
$gettdshop = Shop::getShops();
foreach ($gettdshop as $totalshopgroup) {
$shopgroup = Shop::getGroupFromShop($totalshopgroup['id_shop'], false);
$shop_name[$totalshopgroup['id_shop']] = $totalshopgroup['name'];
$shop_group[$totalshopgroup['id_shop_group']] = $shopgroup['name'];
}
$this->idshop = $shop_name;
$this->idshopgroup = $shop_group;
$this->tdThemeOption();
}
示例3: getProductWarehouseList
/**
* For a given {product, product attribute} gets warehouse list
*
* @param int $id_product ID of the product
* @param int $id_product_attribute Optional, uses 0 if this product does not have attributes
* @param int $id_shop Optional, ID of the shop. Uses the context shop id (@see Context::shop)
* @return array Warehouses (ID, reference/name concatenated)
*/
public static function getProductWarehouseList($id_product, $id_product_attribute = 0, $id_shop = null)
{
// if it's a pack, returns warehouses if and only if some products use the advanced stock management
if (Pack::isPack($id_product)) {
$warehouses = Warehouse::getPackWarehouses($id_product);
$res = array();
foreach ($warehouses as $warehouse) {
$res[]['id_warehouse'] = $warehouse;
}
return $res;
}
$share_stock = false;
if ($id_shop === null) {
if (Shop::getContext() == Shop::CONTEXT_GROUP) {
$shop_group = Shop::getContextShopGroup();
} else {
$shop_group = Context::getContext()->shop->getGroup();
$id_shop = (int) Context::getContext()->shop->id;
}
$share_stock = $shop_group->share_stock;
} else {
$shop_group = Shop::getGroupFromShop($id_shop);
$share_stock = $shop_group['share_stock'];
}
if ($share_stock) {
$ids_shop = Shop::getShops(true, (int) $shop_group->id, true);
} else {
$ids_shop = array((int) $id_shop);
}
$query = new DbQuery();
$query->select('wpl.id_warehouse, CONCAT(w.reference, " - ", w.name) as name');
$query->from('warehouse_product_location', 'wpl');
$query->innerJoin('warehouse_shop', 'ws', 'ws.id_warehouse = wpl.id_warehouse AND id_shop IN (' . implode(',', array_map('intval', $ids_shop)) . ')');
$query->innerJoin('warehouse', 'w', 'ws.id_warehouse = w.id_warehouse');
$query->where('id_product = ' . (int) $id_product);
$query->where('id_product_attribute = ' . (int) $id_product_attribute);
$query->where('w.deleted = 0');
$query->groupBy('wpl.id_warehouse');
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
}
示例4: getFilteredObjectDetails
public function getFilteredObjectDetails()
{
$objects = array();
if (!isset($this->urlFragments['display'])) {
$this->fieldsToDisplay = 'full';
}
//get entity details
$object = new $this->resourceConfiguration['retrieveData']['className']((int) $this->urlSegment[1]);
if ($object->id) {
$objects[] = $object;
// Check if Object is accessible for this/those id_shop
$assoc = Shop::getAssoTable($this->resourceConfiguration['retrieveData']['table']);
if ($assoc !== false) {
$check_shop_group = false;
$sql = 'SELECT 1
FROM `' . bqSQL(_DB_PREFIX_ . $this->resourceConfiguration['retrieveData']['table']);
if ($assoc['type'] != 'fk_shop') {
$sql .= '_' . $assoc['type'];
} else {
$def = ObjectModel::getDefinition($this->resourceConfiguration['retrieveData']['className']);
if (isset($def['fields']) && isset($def['fields']['id_shop_group'])) {
$check_shop_group = true;
}
}
$sql .= '`';
foreach (self::$shopIDs as $id_shop) {
$OR[] = ' (id_shop = ' . (int) $id_shop . ($check_shop_group ? ' OR (id_shop = 0 AND id_shop_group=' . (int) Shop::getGroupFromShop((int) $id_shop) . ')' : '') . ') ';
}
$check = ' WHERE (' . implode('OR', $OR) . ') AND `' . bqSQL($this->resourceConfiguration['fields']['id']['sqlId']) . '` = ' . (int) $this->urlSegment[1];
if (!Db::getInstance()->getValue($sql . $check)) {
$this->setError(404, 'This ' . $this->resourceConfiguration['retrieveData']['className'] . ' (' . (int) $this->urlSegment[1] . ') does not exists on this shop', 131);
}
}
return $objects;
}
if (!count($this->errors)) {
$this->objOutput->setStatus(404);
$this->_outputEnabled = false;
return false;
}
}
示例5: getWebserviceObjectList
/**
* Returns webservice object list.
*
* @param string $sql_join
* @param string $sql_filter
* @param string $sql_sort
* @param string $sql_limit
*
* @return array|null
* @throws PrestaShopDatabaseException
*/
public function getWebserviceObjectList($sql_join, $sql_filter, $sql_sort, $sql_limit)
{
$assoc = Shop::getAssoTable($this->def['table']);
$class_name = WebserviceRequest::$ws_current_classname;
$vars = get_class_vars($class_name);
if ($assoc !== false) {
if ($assoc['type'] !== 'fk_shop') {
$multi_shop_join = ' LEFT JOIN `' . _DB_PREFIX_ . bqSQL($this->def['table']) . '_' . bqSQL($assoc['type']) . '`
AS `multi_shop_' . bqSQL($this->def['table']) . '`
ON (main.`' . bqSQL($this->def['primary']) . '` = `multi_shop_' . bqSQL($this->def['table']) . '`.`' . bqSQL($this->def['primary']) . '`)';
$sql_filter = 'AND `multi_shop_' . bqSQL($this->def['table']) . '`.id_shop = ' . Context::getContext()->shop->id . ' ' . $sql_filter;
$sql_join = $multi_shop_join . ' ' . $sql_join;
} else {
$vars = get_class_vars($class_name);
foreach ($vars['shopIDs'] as $id_shop) {
$or[] = '(main.id_shop = ' . (int) $id_shop . (isset($this->def['fields']['id_shop_group']) ? ' OR (id_shop = 0 AND id_shop_group=' . (int) Shop::getGroupFromShop((int) $id_shop) . ')' : '') . ')';
}
$prepend = '';
if (count($or)) {
$prepend = 'AND (' . implode('OR', $or) . ')';
}
$sql_filter = $prepend . ' ' . $sql_filter;
}
}
$query = '
SELECT DISTINCT main.`' . bqSQL($this->def['primary']) . '` FROM `' . _DB_PREFIX_ . bqSQL($this->def['table']) . '` AS main
' . $sql_join . '
WHERE 1 ' . $sql_filter . '
' . ($sql_sort != '' ? $sql_sort : '') . '
' . ($sql_limit != '' ? $sql_limit : '');
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
}
示例6: _postProcess
protected function _postProcess()
{
$errors = array();
$shop_context = Shop::getContext();
/* Processes Slider */
if (Tools::isSubmit('submitSlider')) {
$shop_groups_list = array();
$shops = Shop::getContextListShopID();
foreach ($shops as $shop_id) {
$shop_group_id = (int) Shop::getGroupFromShop($shop_id, true);
if (!in_array($shop_group_id, $shop_groups_list)) {
$shop_groups_list[] = $shop_group_id;
}
$res = Configuration::updateValue('HOMESLIDER_WIDTH', (int) Tools::getValue('HOMESLIDER_WIDTH'), false, $shop_group_id, $shop_id);
$res &= Configuration::updateValue('HOMESLIDER_SPEED', (int) Tools::getValue('HOMESLIDER_SPEED'), false, $shop_group_id, $shop_id);
$res &= Configuration::updateValue('HOMESLIDER_PAUSE', (int) Tools::getValue('HOMESLIDER_PAUSE'), false, $shop_group_id, $shop_id);
$res &= Configuration::updateValue('HOMESLIDER_LOOP', (int) Tools::getValue('HOMESLIDER_LOOP'), false, $shop_group_id, $shop_id);
}
/* Update global shop context if needed*/
switch ($shop_context) {
case Shop::CONTEXT_ALL:
$res = Configuration::updateValue('HOMESLIDER_WIDTH', (int) Tools::getValue('HOMESLIDER_WIDTH'));
$res &= Configuration::updateValue('HOMESLIDER_SPEED', (int) Tools::getValue('HOMESLIDER_SPEED'));
$res &= Configuration::updateValue('HOMESLIDER_PAUSE', (int) Tools::getValue('HOMESLIDER_PAUSE'));
$res &= Configuration::updateValue('HOMESLIDER_LOOP', (int) Tools::getValue('HOMESLIDER_LOOP'));
if (count($shop_groups_list)) {
foreach ($shop_groups_list as $shop_group_id) {
$res = Configuration::updateValue('HOMESLIDER_WIDTH', (int) Tools::getValue('HOMESLIDER_WIDTH'), false, $shop_group_id);
$res &= Configuration::updateValue('HOMESLIDER_SPEED', (int) Tools::getValue('HOMESLIDER_SPEED'), false, $shop_group_id);
$res &= Configuration::updateValue('HOMESLIDER_PAUSE', (int) Tools::getValue('HOMESLIDER_PAUSE'), false, $shop_group_id);
$res &= Configuration::updateValue('HOMESLIDER_LOOP', (int) Tools::getValue('HOMESLIDER_LOOP'), false, $shop_group_id);
}
}
break;
case Shop::CONTEXT_GROUP:
if (count($shop_groups_list)) {
foreach ($shop_groups_list as $shop_group_id) {
$res = Configuration::updateValue('HOMESLIDER_WIDTH', (int) Tools::getValue('HOMESLIDER_WIDTH'), false, $shop_group_id);
$res &= Configuration::updateValue('HOMESLIDER_SPEED', (int) Tools::getValue('HOMESLIDER_SPEED'), false, $shop_group_id);
$res &= Configuration::updateValue('HOMESLIDER_PAUSE', (int) Tools::getValue('HOMESLIDER_PAUSE'), false, $shop_group_id);
$res &= Configuration::updateValue('HOMESLIDER_LOOP', (int) Tools::getValue('HOMESLIDER_LOOP'), false, $shop_group_id);
}
}
break;
}
$this->clearCache();
if (!$res) {
$errors[] = $this->displayError($this->l('The configuration could not be updated.'));
} else {
Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true) . '&conf=6&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name);
}
} elseif (Tools::isSubmit('changeStatus') && Tools::isSubmit('id_slide')) {
$slide = new HomeSlide((int) Tools::getValue('id_slide'));
if ($slide->active == 0) {
$slide->active = 1;
} else {
$slide->active = 0;
}
$res = $slide->update();
$this->clearCache();
$this->_html .= $res ? $this->displayConfirmation($this->l('Configuration updated')) : $this->displayError($this->l('The configuration could not be updated.'));
} elseif (Tools::isSubmit('submitSlide')) {
/* Sets ID if needed */
if (Tools::getValue('id_slide')) {
$slide = new HomeSlide((int) Tools::getValue('id_slide'));
if (!Validate::isLoadedObject($slide)) {
$this->_html .= $this->displayError($this->l('Invalid slide ID'));
return false;
}
} else {
$slide = new HomeSlide();
}
/* Sets position */
$slide->position = (int) Tools::getValue('position');
/* Sets active */
$slide->active = (int) Tools::getValue('active_slide');
/* Sets each langue fields */
$languages = Language::getLanguages(false);
foreach ($languages as $language) {
$slide->title[$language['id_lang']] = Tools::getValue('title_' . $language['id_lang']);
$slide->url[$language['id_lang']] = Tools::getValue('url_' . $language['id_lang']);
$slide->legend[$language['id_lang']] = Tools::getValue('legend_' . $language['id_lang']);
$slide->description[$language['id_lang']] = Tools::getValue('description_' . $language['id_lang']);
/* Uploads image and sets slide */
$type = Tools::strtolower(Tools::substr(strrchr($_FILES['image_' . $language['id_lang']]['name'], '.'), 1));
$imagesize = @getimagesize($_FILES['image_' . $language['id_lang']]['tmp_name']);
if (isset($_FILES['image_' . $language['id_lang']]) && isset($_FILES['image_' . $language['id_lang']]['tmp_name']) && !empty($_FILES['image_' . $language['id_lang']]['tmp_name']) && !empty($imagesize) && in_array(Tools::strtolower(Tools::substr(strrchr($imagesize['mime'], '/'), 1)), array('jpg', 'gif', 'jpeg', 'png')) && in_array($type, array('jpg', 'gif', 'jpeg', 'png'))) {
$temp_name = tempnam(_PS_TMP_IMG_DIR_, 'PS');
$salt = sha1(microtime());
if ($error = ImageManager::validateUpload($_FILES['image_' . $language['id_lang']])) {
$errors[] = $error;
} elseif (!$temp_name || !move_uploaded_file($_FILES['image_' . $language['id_lang']]['tmp_name'], $temp_name)) {
return false;
} elseif (!ImageManager::resize($temp_name, dirname(__FILE__) . '/images/' . $salt . '_' . $_FILES['image_' . $language['id_lang']]['name'], null, null, $type)) {
$errors[] = $this->displayError($this->l('An error occurred during the image upload process.'));
}
if (isset($temp_name)) {
@unlink($temp_name);
}
$slide->image[$language['id_lang']] = $salt . '_' . $_FILES['image_' . $language['id_lang']]['name'];
//.........这里部分代码省略.........
示例7: getConfigFieldsValues
public function getConfigFieldsValues($shop_id)
{
$shop_group_id = Shop::getGroupFromShop($shop_id);
$product_type = array();
$description = 'short';
$shipping_price = 0;
$shipping_country = 'UK';
$img_type = 'large_default';
$mpn_type = '';
$gender = '';
$age_group = '';
$export_attributes = '';
$color = array();
$material = array();
$pattern = array();
$size = array();
$export_min_price = 0;
$no_gtin = true;
$no_brand = true;
$id_exists_tag = true;
$export_nap = true;
$quantity = true;
$featured_products = true;
$gen_file_in_root = true;
foreach (Language::getLanguages(false) as $lang) {
$product_type[$lang['id_lang']] = Configuration::get('GS_PRODUCT_TYPE', $lang['id_lang'], $shop_group_id, $shop_id);
}
$description = Configuration::get('GS_DESCRIPTION', 0, $shop_group_id, $shop_id);
$shipping_price = (double) Configuration::get('GS_SHIPPING_PRICE', 0, $shop_group_id, $shop_id);
$shipping_country = Configuration::get('GS_SHIPPING_COUNTRY', 0, $shop_group_id, $shop_id);
$img_type = Configuration::get('GS_IMG_TYPE', 0, $shop_group_id, $shop_id);
$mpn_type = Configuration::get('GS_MPN_TYPE', 0, $shop_group_id, $shop_id);
$gender = Configuration::get('GS_GENDER', 0, $shop_group_id, $shop_id);
$age_group = Configuration::get('GS_AGE_GROUP', 0, $shop_group_id, $shop_id);
$export_attributes = Configuration::get('GS_ATTRIBUTES', 0, $shop_group_id, $shop_id);
$color = explode(";", Configuration::get('GS_COLOR', 0, $shop_group_id, $shop_id));
$material = explode(";", Configuration::get('GS_MATERIAL', 0, $shop_group_id, $shop_id));
$pattern = explode(";", Configuration::get('GS_PATTERN', 0, $shop_group_id, $shop_id));
$size = explode(";", Configuration::get('GS_SIZE', 0, $shop_group_id, $shop_id));
$export_min_price = (double) Configuration::get('GS_EXPORT_MIN_PRICE', 0, $shop_group_id, $shop_id);
$no_gtin &= (bool) Configuration::get('GS_NO_GTIN', 0, $shop_group_id, $shop_id);
$no_brand &= (bool) Configuration::get('GS_NO_BRAND', 0, $shop_group_id, $shop_id);
$id_exists_tag &= (bool) Configuration::get('GS_ID_EXISTS_TAG', 0, $shop_group_id, $shop_id);
$export_nap &= (bool) Configuration::get('GS_EXPORT_NAP', 0, $shop_group_id, $shop_id);
$quantity &= (bool) Configuration::get('GS_QUANTITY', 0, $shop_group_id, $shop_id);
$featured_products &= (bool) Configuration::get('GS_FEATURED_PRODUCTS', 0, $shop_group_id, $shop_id);
$gen_file_in_root &= (bool) Configuration::get('GS_GEN_FILE_IN_ROOT', 0, $shop_group_id, $shop_id);
return array('product_type[]' => $product_type, 'description' => $description, 'shipping_price' => (double) $shipping_price, 'shipping_country' => $shipping_country, 'img_type' => $img_type, 'mpn_type' => $mpn_type, 'gender' => $gender, 'age_group' => $age_group, 'export_attributes' => (double) $export_attributes, 'color[]' => $color, 'material[]' => $material, 'pattern[]' => $pattern, 'size[]' => $size, 'export_min_price' => (double) $export_min_price, 'no_gtin' => (int) $no_gtin, 'no_brand' => (int) $no_brand, 'id_exists_tag' => (int) $id_exists_tag, 'export_nap' => (int) $export_nap, 'quantity' => (int) $quantity, 'featured_products' => (int) $featured_products, 'gen_file_in_root' => (int) $gen_file_in_root);
}
示例8: getConfigFieldsValues
public function getConfigFieldsValues()
{
$shops = Shop::getContextListShopID();
$is_search_on = true;
foreach ($shops as $shop_id) {
$shop_group_id = Shop::getGroupFromShop($shop_id);
$is_search_on &= (bool) Configuration::get('MOD_BLOCKTOPMENU_SEARCH', null, $shop_group_id, $shop_id);
}
return array('search' => (int) $is_search_on);
}
示例9: __construct
public function __construct()
{
$this->entities = array($this->l('Categories'), $this->l('Products'), $this->l('Combinations'), $this->l('Customers'), $this->l('Addresses'), $this->l('Manufacturers'), $this->l('Suppliers'));
// @since 1.5.0
if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT')) {
$this->entities = array_merge($this->entities, array($this->l('Supply Orders'), $this->l('Supply Order Details')));
}
$this->entities = array_flip($this->entities);
switch ((int) Tools::getValue('entity')) {
case $this->entities[$this->l('Combinations')]:
$this->required_fields = array('id_product', 'group', 'attribute');
$this->available_fields = array('no' => array('label' => $this->l('Ignore this column')), 'id_product' => array('label' => $this->l('Product ID') . '*'), 'group' => array('label' => $this->l('Attribute (Name:Type:Position)') . '*'), 'attribute' => array('label' => $this->l('Value (Value:Position)') . '*'), 'supplier_reference' => array('label' => $this->l('Supplier reference')), 'reference' => array('label' => $this->l('Reference')), 'ean13' => array('label' => $this->l('EAN13')), 'upc' => array('label' => $this->l('UPC')), 'wholesale_price' => array('label' => $this->l('Wholesale price')), 'price' => array('label' => $this->l('Impact on price')), 'ecotax' => array('label' => $this->l('Ecotax')), 'quantity' => array('label' => $this->l('Quantity')), 'minimal_quantity' => array('label' => $this->l('Minimal quantity')), 'weight' => array('label' => $this->l('Impact on weight')), 'default_on' => array('label' => $this->l('Default (0 = No, 1 = Yes)')), 'image_position' => array('label' => $this->l('Image position')), 'image_url' => array('label' => $this->l('Image URL')), 'delete_existing_images' => array('label' => $this->l('Delete existing images (0 = No, 1 = Yes)')), 'shop' => array('label' => $this->l('ID / Name of shop'), 'help' => $this->l('Ignore this field if you don\'t use the Multistore tool. If you leave this field empty, the default shop will be used.')));
self::$default_values = array('reference' => '', 'supplier_reference' => '', 'ean13' => '', 'upc' => '', 'wholesale_price' => 0, 'price' => 0, 'ecotax' => 0, 'quantity' => 0, 'minimal_quantity' => 1, 'weight' => 0, 'default_on' => 0);
break;
case $this->entities[$this->l('Categories')]:
$this->available_fields = array('no' => array('label' => $this->l('Ignore this column')), 'id' => array('label' => $this->l('ID')), 'active' => array('label' => $this->l('Active (0/1)')), 'name' => array('label' => $this->l('Name *')), 'parent' => array('label' => $this->l('Parent category')), 'is_root_category' => array('label' => $this->l('Root category (0/1)'), 'help' => $this->l('A category root is where a category tree can begin. This is used with multistore.')), 'description' => array('label' => $this->l('Description')), 'meta_title' => array('label' => $this->l('Meta title')), 'meta_keywords' => array('label' => $this->l('Meta keywords')), 'meta_description' => array('label' => $this->l('Meta description')), 'link_rewrite' => array('label' => $this->l('URL rewritten')), 'image' => array('label' => $this->l('Image URL')), 'shop' => array('label' => $this->l('ID / Name of shop'), 'help' => $this->l('Ignore this field if you don\'t use the Multistore tool. If you leave this field empty, the default shop will be used.')));
self::$default_values = array('active' => '1', 'parent' => Configuration::get('PS_HOME_CATEGORY'), 'link_rewrite' => '');
break;
case $this->entities[$this->l('Products')]:
self::$validators['image'] = array('AdminImportController', 'split');
$this->available_fields = array('no' => array('label' => $this->l('Ignore this column')), 'id' => array('label' => $this->l('ID')), 'active' => array('label' => $this->l('Active (0/1)')), 'name' => array('label' => $this->l('Name *')), 'category' => array('label' => $this->l('Categories (x,y,z...)')), 'price_tex' => array('label' => $this->l('Price tax excluded')), 'price_tin' => array('label' => $this->l('Price tax included')), 'id_tax_rules_group' => array('label' => $this->l('Tax rules ID')), 'wholesale_price' => array('label' => $this->l('Wholesale price')), 'on_sale' => array('label' => $this->l('On sale (0/1)')), 'reduction_price' => array('label' => $this->l('Discount amount')), 'reduction_percent' => array('label' => $this->l('Discount percent')), 'reduction_from' => array('label' => $this->l('Discount from (yyyy-mm-dd)')), 'reduction_to' => array('label' => $this->l('Discount to (yyyy-mm-dd)')), 'reference' => array('label' => $this->l('Reference #')), 'supplier_reference' => array('label' => $this->l('Supplier reference #')), 'supplier' => array('label' => $this->l('Supplier')), 'manufacturer' => array('label' => $this->l('Manufacturer')), 'ean13' => array('label' => $this->l('EAN13')), 'upc' => array('label' => $this->l('UPC')), 'ecotax' => array('label' => $this->l('Ecotax')), 'weight' => array('label' => $this->l('Weight')), 'quantity' => array('label' => $this->l('Quantity')), 'description_short' => array('label' => $this->l('Short description')), 'description' => array('label' => $this->l('Description')), 'tags' => array('label' => $this->l('Tags (x,y,z...)')), 'meta_title' => array('label' => $this->l('Meta title')), 'meta_keywords' => array('label' => $this->l('Meta keywords')), 'meta_description' => array('label' => $this->l('Meta description')), 'link_rewrite' => array('label' => $this->l('URL rewritten')), 'available_now' => array('label' => $this->l('Text when in stock')), 'available_later' => array('label' => $this->l('Text when backorder allowed')), 'available_for_order' => array('label' => $this->l('Available for order (0 = No, 1 = Yes)')), 'date_add' => array('label' => $this->l('Product creation date')), 'show_price' => array('label' => $this->l('Show price (0 = No, 1 = Yes)')), 'image' => array('label' => $this->l('Image URLs (x,y,z...)')), 'delete_existing_images' => array('label' => $this->l('Delete existing images (0 = No, 1 = Yes)')), 'features' => array('label' => $this->l('Feature(Name:Value:Position)')), 'online_only' => array('label' => $this->l('Available online only (0 = No, 1 = Yes)')), 'condition' => array('label' => $this->l('Condition')), 'shop' => array('label' => $this->l('ID / Name of shop'), 'help' => $this->l('Ignore this field if you don\'t use the Multistore tool. If you leave this field empty, the default shop will be used.')));
self::$default_values = array('id_category' => array((int) Configuration::get('PS_HOME_CATEGORY')), 'id_category_default' => (int) Configuration::get('PS_HOME_CATEGORY'), 'active' => '1', 'quantity' => 0, 'price' => 0, 'id_tax_rules_group' => 0, 'description_short' => array((int) Configuration::get('PS_LANG_DEFAULT') => ''), 'link_rewrite' => array((int) Configuration::get('PS_LANG_DEFAULT') => ''), 'online_only' => 0, 'condition' => 'new', 'date_add' => date('Y-m-d H:i:s'), 'condition' => 'new');
break;
case $this->entities[$this->l('Customers')]:
//Overwrite required_fields AS only email is required whereas other entities
$this->required_fields = array('email', 'passwd', 'lastname', 'firstname');
$this->available_fields = array('no' => array('label' => $this->l('Ignore this column')), 'id' => array('label' => $this->l('ID')), 'active' => array('label' => $this->l('Active (0/1)')), 'id_gender' => array('label' => $this->l('Titles ID (Mr = 1, Ms = 2, else 0)')), 'email' => array('label' => $this->l('Email *')), 'passwd' => array('label' => $this->l('Password *')), 'birthday' => array('label' => $this->l('Birthday (yyyy-mm-dd)')), 'lastname' => array('label' => $this->l('Last Name *')), 'firstname' => array('label' => $this->l('First Name *')), 'newsletter' => array('label' => $this->l('Newsletter (0/1)')), 'optin' => array('label' => $this->l('Opt-in (0/1)')), 'id_shop' => array('label' => $this->l('ID / Name of shop'), 'help' => $this->l('Ignore this field if you don\'t use the Multistore tool. If you leave this field empty, the default shop will be used.')));
self::$default_values = array('active' => '1', 'id_shop' => Configuration::get('PS_SHOP_DEFAULT'));
break;
case $this->entities[$this->l('Addresses')]:
//Overwrite required_fields
$this->required_fields = array('lastname', 'firstname', 'address1', 'postcode', 'country', 'customer_email', 'city');
$this->available_fields = array('no' => array('label' => $this->l('Ignore this column')), 'id' => array('label' => $this->l('ID')), 'alias' => array('label' => $this->l('Alias *')), 'active' => array('label' => $this->l('Active (0/1)')), 'customer_email' => array('label' => $this->l('Customer email')), 'id_customer' => array('label' => $this->l('Customer ID:')), 'manufacturer' => array('label' => $this->l('Manufacturer')), 'supplier' => array('label' => $this->l('Supplier')), 'company' => array('label' => $this->l('Company')), 'lastname' => array('label' => $this->l('Last Name *')), 'firstname' => array('label' => $this->l('First Name *')), 'address1' => array('label' => $this->l('Address 1 *')), 'address2' => array('label' => $this->l('Address 2')), 'postcode' => array('label' => $this->l('Postal code / Zipcode*')), 'city' => array('label' => $this->l('City *')), 'country' => array('label' => $this->l('Country *')), 'state' => array('label' => $this->l('State')), 'other' => array('label' => $this->l('Other')), 'phone' => array('label' => $this->l('Phone')), 'phone_mobile' => array('label' => $this->l('Mobile Phone')), 'vat_number' => array('label' => $this->l('VAT number')));
self::$default_values = array('alias' => 'Alias', 'postcode' => 'X');
break;
case $this->entities[$this->l('Manufacturers')]:
case $this->entities[$this->l('Suppliers')]:
//Overwrite validators AS name is not MultiLangField
self::$validators = array('description' => array('AdminImportController', 'createMultiLangField'), 'short_description' => array('AdminImportController', 'createMultiLangField'), 'meta_title' => array('AdminImportController', 'createMultiLangField'), 'meta_keywords' => array('AdminImportController', 'createMultiLangField'), 'meta_description' => array('AdminImportController', 'createMultiLangField'));
$this->available_fields = array('no' => array('label' => $this->l('Ignore this column')), 'id' => array('label' => $this->l('ID')), 'active' => array('label' => $this->l('Active (0/1)')), 'name' => array('label' => $this->l('Name *')), 'description' => array('label' => $this->l('Description')), 'short_description' => array('label' => $this->l('Short description')), 'meta_title' => array('label' => $this->l('Meta title')), 'meta_keywords' => array('label' => $this->l('Meta keywords')), 'meta_description' => array('label' => $this->l('Meta description')), 'shop' => array('label' => $this->l('ID / Name of group shop'), 'help' => $this->l('Ignore this field if you don\'t use the Multistore tool. If you leave this field empty, the default shop will be used.')));
self::$default_values = array('shop' => Shop::getGroupFromShop(Configuration::get('PS_SHOP_DEFAULT')));
break;
// @since 1.5.0
// @since 1.5.0
case $this->entities[$this->l('Supply Orders')]:
if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT')) {
// required fields
$this->required_fields = array('id_supplier', 'id_warehouse', 'reference', 'date_delivery_expected');
// available fields
$this->available_fields = array('no' => array('label' => $this->l('Ignore this column')), 'id' => array('label' => $this->l('ID')), 'id_supplier' => array('label' => $this->l('Supplier ID *')), 'id_lang' => array('label' => $this->l('Lang ID')), 'id_warehouse' => array('label' => $this->l('Warehouse ID *')), 'id_currency' => array('label' => $this->l('Currency ID *')), 'reference' => array('label' => $this->l('Supply Order Reference *')), 'date_delivery_expected' => array('label' => $this->l('Delivery Date (Y-M-D)*')), 'discount_rate' => array('label' => $this->l('Discount Rate')), 'is_template' => array('label' => $this->l('Template')));
// default values
self::$default_values = array('id_lang' => (int) Configuration::get('PS_LANG_DEFAULT'), 'id_currency' => Currency::getDefaultCurrency()->id, 'discount_rate' => '0', 'is_template' => '0');
}
break;
// @since 1.5.0
// @since 1.5.0
case $this->entities[$this->l('Supply Order Details')]:
if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT')) {
// required fields
$this->required_fields = array('supply_order_reference', 'id_product', 'unit_price_te', 'quantity_expected');
// available fields
$this->available_fields = array('no' => array('label' => $this->l('Ignore this column')), 'supply_order_reference' => array('label' => $this->l('Supply Order Reference *')), 'id_product' => array('label' => $this->l('Product ID *')), 'id_product_attribute' => array('label' => $this->l('Product Attribute ID')), 'unit_price_te' => array('label' => $this->l('Unit Price (tax excl.)*')), 'quantity_expected' => array('label' => $this->l('Quantity Expected *')), 'discount_rate' => array('label' => $this->l('Discount Rate')), 'tax_rate' => array('label' => $this->l('Tax Rate')));
// default values
self::$default_values = array('discount_rate' => '0', 'tax_rate' => '0');
}
}
$this->separator = strval(trim(Tools::getValue('separator', ';')));
if (is_null(Tools::getValue('multiple_value_separator')) || trim(Tools::getValue('multiple_value_separator')) == '') {
$this->multiple_value_separator = ',';
} else {
$this->multiple_value_separator = Tools::getValue('multiple_value_separator');
}
parent::__construct();
}
示例10: isset
</tr>
</thead>
<tbody>
<?php
if ($outputTemplates) {
$useSliders = $arrSlidersTemplates;
$pagenum = isset($_GET['pagenumt']) ? absint($_GET['pagenumt']) : 1;
$offset = ($pagenum - 1) * $limit;
} else {
$useSliders = $arrSliders;
$pagenum = isset($_GET['pagenum']) ? absint($_GET['pagenum']) : 1;
$offset = ($pagenum - 1) * $limit;
}
$cur_offset = 0;
$current_id_shop_group = Context::getcontext()->shop->id_shop_group;
$current_shop_id = Context::getcontext()->shop->id;
$shop_context = Context::getcontext()->cookie->shopContext;
if (!empty($shop_context) && isset($shop_context)) {
$shop_contexttype = substr($shop_context, 0, 1);
} else {
$shop_contexttype = 'a';
}
foreach ($useSliders as $slider) {
if ($outputTemplates) {
$slider->arrParams['id_shop'] = $current_shop_id;
}
$id_shop = @$slider->arrParams['id_shop'];
$id_shop_group = Shop::getGroupFromShop($id_shop);
if ($current_shop_id == $id_shop && $shop_contexttype == 's' || $id_shop_group == $current_shop_id && $shop_contexttype == 'g' || $shop_contexttype == 'a') {
$total++;
$cur_offset++;
示例11: setQuantity
public static function setQuantity($id_product, $id_product_attribute, $quantity, $id_shop = null)
{
if (!Validate::isUnsignedId($id_product)) {
return false;
}
$context = Context::getContext();
if ($id_shop === null && Shop::getContext() != Shop::CONTEXT_GROUP) {
$id_shop = (int) $context->shop->id;
}
$depends_on_stock = StockAvailable::dependsOnStock($id_product);
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);
PP::setQty($stock_available, $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;
PP::setQty($stock_available, $quantity);
if ($id_shop === null) {
$shop_group = Shop::getContextShopGroup();
} else {
$shop_group = new ShopGroup((int) Shop::getGroupFromShop((int) $id_shop));
}
if ($shop_group->share_stock) {
$stock_available->id_shop = 0;
$stock_available->id_shop_group = (int) $shop_group->id;
} else {
$stock_available->id_shop = (int) $id_shop;
$stock_available->id_shop_group = 0;
}
$stock_available->add();
}
Hook::exec('actionUpdateQuantity', array('id_product' => $id_product, 'id_product_attribute' => $id_product_attribute, 'quantity' => $stock_available->quantity + $stock_available->quantity_remainder));
}
Cache::clean('StockAvailable::getQuantityAvailableByProduct_' . (int) $id_product . '*');
}
示例12: getProducts
/**
* Return cart products
*
* @result array Products
*/
public function getProducts($refresh = false, $id_product = false, $id_country = null)
{
if (!$this->id) {
return array();
}
// Product cache must be strictly compared to NULL, or else an empty cart will add dozens of queries
if ($this->_products !== null && !$refresh) {
// Return product row with specified ID if it exists
if (is_int($id_product)) {
foreach ($this->_products as $product) {
if ($product['id_product'] == $id_product) {
return array($product);
}
}
return array();
}
return $this->_products;
}
$shop_group = Shop::getGroupFromShop(Shop::getContextShopID(), false);
if ($shop_group['share_order']) {
$id_shop = 'cp.id_shop';
} else {
$id_shop = (int) Shop::getContextShopID();
}
if (!$id_country) {
$id_country = Context::getContext()->country->id;
}
// Build query
$sql = new DbQuery();
// Build SELECT
$sql->select('cp.`id_product_attribute`, cp.`id_product`, cp.`quantity` AS cart_quantity, cp.id_shop, pl.`name`, p.`is_virtual`,
pl.`description_short`, pl.`available_now`, pl.`available_later`, p.`id_product`, product_shop.`id_category_default`, p.`id_supplier`,
p.`id_manufacturer`, product_shop.`on_sale`, product_shop.`ecotax`, product_shop.`additional_shipping_cost`, product_shop.`available_for_order`, product_shop.`price`, p.`weight`,
stock.`quantity` quantity_available, p.`width`, p.`height`, p.`depth`, stock.`out_of_stock`, product_shop.`active`, p.`date_add`,
p.`date_upd`, IFNULL(stock.quantity, 0) as quantity, pl.`link_rewrite`, cl.`link_rewrite` AS category,
CONCAT(cp.`id_product`, cp.`id_product_attribute`, cp.`id_address_delivery`) AS unique_id, cp.id_address_delivery,
product_shop.`wholesale_price`, product_shop.advanced_stock_management');
// Build FROM
$sql->from('cart_product', 'cp');
// Build JOIN
$sql->leftJoin('product', 'p', 'p.`id_product` = cp.`id_product`');
$sql->innerJoin('product_shop', 'product_shop', '(product_shop.id_shop=' . $id_shop . ' AND product_shop.id_product = p.id_product)');
$sql->leftJoin('product_lang', 'pl', '
p.`id_product` = pl.`id_product`
AND pl.`id_lang` = ' . (int) $this->id_lang . Shop::addSqlRestrictionOnLang('pl', $id_shop));
$sql->leftJoin('category_lang', 'cl', '
product_shop.`id_category_default` = cl.`id_category`
AND cl.`id_lang` = ' . (int) $this->id_lang . Shop::addSqlRestrictionOnLang('cl', $id_shop));
// @todo test if everything is ok, then refactorise call of this method
$sql->join(Product::sqlStock('cp', 'cp'));
// Build WHERE clauses
$sql->where('cp.`id_cart` = ' . (int) $this->id);
if ($id_product) {
$sql->where('cp.`id_product` = ' . (int) $id_product);
}
$sql->where('p.`id_product` IS NOT NULL');
// Build GROUP BY
$sql->groupBy('unique_id');
// Build ORDER BY
$sql->orderBy('p.id_product, cp.id_product_attribute, cp.date_add ASC');
if (Customization::isFeatureActive()) {
$sql->select('cu.`id_customization`, cu.`quantity` AS customization_quantity');
$sql->leftJoin('customization', 'cu', 'p.`id_product` = cu.`id_product` AND cp.`id_product_attribute` = cu.id_product_attribute AND cu.id_cart=' . (int) $this->id);
} else {
$sql->select('NULL AS customization_quantity, NULL AS id_customization');
}
if (Combination::isFeatureActive()) {
$sql->select('
product_attribute_shop.`price` AS price_attribute, product_attribute_shop.`ecotax` AS ecotax_attr,
IF (IFNULL(pa.`reference`, \'\') = \'\', p.`reference`, pa.`reference`) AS reference,
IF (IFNULL(pa.`supplier_reference`, \'\') = \'\', p.`supplier_reference`, pa.`supplier_reference`) AS supplier_reference,
(p.`weight`+ pa.`weight`) weight_attribute,
IF (IFNULL(pa.`ean13`, \'\') = \'\', p.`ean13`, pa.`ean13`) AS ean13,
IF (IFNULL(pa.`upc`, \'\') = \'\', p.`upc`, pa.`upc`) AS upc,
pai.`id_image` as pai_id_image, il.`legend` as pai_legend,
IFNULL(product_attribute_shop.`minimal_quantity`, product_shop.`minimal_quantity`) as minimal_quantity
');
$sql->leftJoin('product_attribute', 'pa', 'pa.`id_product_attribute` = cp.`id_product_attribute`');
$sql->leftJoin('product_attribute_shop', 'product_attribute_shop', '(product_attribute_shop.id_shop=' . $id_shop . ' AND product_attribute_shop.id_product_attribute = pa.id_product_attribute)');
$sql->leftJoin('product_attribute_image', 'pai', 'pai.`id_product_attribute` = pa.`id_product_attribute`');
$sql->leftJoin('image_lang', 'il', 'il.id_image = pai.id_image AND il.id_lang = ' . (int) $this->id_lang);
} else {
$sql->select('p.`reference` AS reference, p.`supplier_reference` AS supplier_reference, p.`ean13`,
p.`upc` AS upc, product_shop.`minimal_quantity` AS minimal_quantity');
}
$result = Db::getInstance()->executeS($sql);
// Reset the cache before the following return, or else an empty cart will add dozens of queries
$products_ids = array();
$pa_ids = array();
if ($result) {
foreach ($result as $row) {
$products_ids[] = $row['id_product'];
$pa_ids[] = $row['id_product_attribute'];
}
}
//.........这里部分代码省略.........
示例13: execImportAttribute
public static function execImportAttribute($pdt, $idP)
{
$product = new Product($idP);
foreach ($pdt as $attributes) {
$idPA = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT `id_product_attribute` FROM `' . _DB_PREFIX_ . 'ec_ecopresto_product_attribute` WHERE `id_shop` = ' . (int) $attributes->id_shop . ' AND `reference` = "' . pSQL($attributes->supplier_reference) . '"');
if (!$idPA) {
Db::getInstance()->execute('INSERT INTO `' . _DB_PREFIX_ . 'product_attribute` (`id_product`,`reference`,`supplier_reference`,`ean13`,`wholesale_price`,`price`,`weight`,`default_on`)
VALUES (' . (int) $idP . ',"' . pSQL($attributes->reference) . '","' . pSQL($attributes->supplier_reference) . '",' . (int) $attributes->ean13 . ',"' . pSQL($attributes->wholesale_price) . '","' . pSQL($attributes->price) . '","' . pSQL($attributes->weight) . '",' . (int) $attributes->default_on . ')');
$idPA = Db::getInstance()->Insert_ID();
if (version_compare(_PS_VERSION_, '1.5', '>=')) {
Db::getInstance()->insert('product_attribute_shop', array('id_product_attribute' => (int) $idPA, 'id_shop' => (int) $attributes->id_shop, 'wholesale_price' => pSQL($attributes->wholesale_price), 'price' => pSQL($attributes->price), 'weight' => pSQL($attributes->weight), 'default_on' => (int) $attributes->default_on));
Db::getInstance()->insert('stock_available', array('id_product' => (int) $idP, 'id_product_attribute' => (int) $idPA, 'id_shop' => (int) $attributes->id_shop, 'id_shop_group' => (int) Shop::getGroupFromShop($attributes->id_shop), 'quantity' => 0));
}
$attribute = '';
foreach ($attributes->id_attribute as $attribute) {
Db::getInstance()->execute('INSERT INTO `' . _DB_PREFIX_ . 'product_attribute_combination` (`id_attribute`,`id_product_attribute`) VALUES (' . (int) $attribute->id_attribute . ',' . (int) $idPA . ')');
}
if (version_compare(_PS_VERSION_, '1.5', '>=')) {
if (!isset($pdt->id_product)) {
self::insertSupplierRef($idP, $idPA, $attributes->id_supplier, $attributes->supplier_reference);
}
}
Db::getInstance()->execute('INSERT INTO `' . _DB_PREFIX_ . 'ec_ecopresto_product_attribute` (`reference`,`id_product_attribute`,`id_shop`) VALUES ("' . pSQL($attributes->supplier_reference) . '",' . (int) $idPA . ',' . (int) $attributes->id_shop . ')');
} else {
if (version_compare(_PS_VERSION_, '1.5', '>=')) {
Db::getInstance()->execute('UPDATE `' . _DB_PREFIX_ . 'product_attribute_shop`
SET ' . (isset($attributes->wholesale_price) ? '`wholesale_price`= "' . pSQL($attributes->wholesale_price) . '",' : '') . ' ' . (isset($attributes->price) ? '`price`= "' . pSQL($attributes->price) . '",' : '') . ' `weight`= "' . pSQL($attributes->weight) . '"
WHERE `id_product_attribute`=' . (int) $idPA . ' AND `id_shop` = ' . (int) $attributes->id_shop);
}
Db::getInstance()->execute('UPDATE `' . _DB_PREFIX_ . 'product_attribute`
SET ' . (isset($attributes->wholesale_price) ? '`wholesale_price`= "' . pSQL($attributes->wholesale_price) . '",' : '') . ' ' . (isset($attributes->price) ? '`price`= "' . pSQL($attributes->price) . '",' : '') . ' `weight`= "' . pSQL($attributes->weight) . '"
WHERE `id_product_attribute`=' . (int) $idPA);
}
}
}
示例14: customGetNestedCategories
public function customGetNestedCategories($shop_id, $root_category = null, $id_lang = false, $active = true, $groups = null, $use_shop_restriction = true, $sql_filter = '', $sql_sort = '', $sql_limit = '')
{
if (isset($root_category) && !Validate::isInt($root_category)) {
die(Tools::displayError());
}
if (!Validate::isBool($active)) {
die(Tools::displayError());
}
if (isset($groups) && Group::isFeatureActive() && !is_array($groups)) {
$groups = (array) $groups;
}
$cache_id = 'Category::getNestedCategories_' . md5((int) $shop_id . (int) $root_category . (int) $id_lang . (int) $active . (int) $active . (isset($groups) && Group::isFeatureActive() ? implode('', $groups) : ''));
if (!Cache::isStored($cache_id)) {
$result = Db::getInstance()->executeS('
SELECT c.*, cl.`name` as gcat_name, g.*, gl.*, s.name as shop_name
FROM `' . _DB_PREFIX_ . 'category` c
INNER JOIN `' . _DB_PREFIX_ . 'category_shop` cs ON (cs.`id_category` = c.`id_category` AND cs.`id_shop` = "' . (int) $shop_id . '")
LEFT JOIN `' . _DB_PREFIX_ . 'category_lang` cl ON c.`id_category` = cl.`id_category` AND cl.`id_shop` = "' . (int) $shop_id . '"
LEFT JOIN `' . _DB_PREFIX_ . 'gshoppingflux` g ON g.`id_gcategory` = c.`id_category` AND g.`id_shop` = "' . (int) $shop_id . '"
LEFT JOIN `' . _DB_PREFIX_ . 'gshoppingflux_lang` gl ON gl.`id_gcategory` = c.`id_category` AND gl.`id_shop` = "' . (int) $shop_id . '"
LEFT JOIN ' . _DB_PREFIX_ . 'shop s ON s.`id_shop` = "' . (int) $shop_id . '"
WHERE 1 ' . $sql_filter . ' ' . ($id_lang ? 'AND cl.`id_lang` = ' . (int) $id_lang . ' AND gl.`id_lang` = ' . (int) $id_lang : '') . ($active ? ' AND c.`active` = 1' : '') . (isset($groups) && Group::isFeatureActive() ? ' AND cg.`id_group` IN (' . implode(',', $groups) . ')' : '') . (!$id_lang || isset($groups) && Group::isFeatureActive() ? ' GROUP BY c.`id_category`' : '') . ($sql_sort != '' ? $sql_sort : ' ORDER BY c.`level_depth` ASC') . ($sql_sort == '' && $use_shop_restriction ? ', cs.`position` ASC' : '') . ($sql_limit != '' ? $sql_limit : ' LIMIT 1;'));
$attributes = $this->getShopAttributes($this->context->language->id, $this->context->shop->id);
foreach ($result as $k => $cat) {
$result[$k]['gcategory'] = html_entity_decode($result[$k]['gcategory']);
$gid_colors = array();
$gid_materials = array();
$gid_patterns = array();
$gid_sizes = array();
if ($result[$k]['level_depth'] > 0) {
$tree = " > ";
$str = '';
for ($i = 0; $i < $result[$k]['level_depth'] - 1; $i++) {
$str .= $tree;
}
$result[$k]['gcat_name'] = $str . ' ' . $result[$k]['gcat_name'];
$shop_group_id = Shop::getGroupFromShop($shop_id);
$result[$k]['color'] = explode(";", $result[$k]['color']);
foreach ($result[$k]['color'] as $a => $v) {
if (isset($attributes[$v - 1])) {
$gid_colors[] = $attributes[$v - 1]['name'];
}
}
$result[$k]['material'] = explode(";", $result[$k]['material']);
foreach ($result[$k]['material'] as $a => $v) {
if (isset($attributes[$v - 1])) {
$gid_materials[] = $attributes[$v - 1]['name'];
}
}
$result[$k]['pattern'] = explode(";", $result[$k]['pattern']);
foreach ($result[$k]['pattern'] as $a => $v) {
if (isset($attributes[$v - 1])) {
$gid_patterns[] = $attributes[$v - 1]['name'];
}
}
$result[$k]['size'] = explode(";", $result[$k]['size']);
foreach ($result[$k]['size'] as $a => $v) {
if (isset($attributes[$v - 1])) {
$gid_sizes[] = $attributes[$v - 1]['name'];
}
}
$result[$k]['gid_colors'] = implode(" ; ", $gid_colors);
$result[$k]['gid_materials'] = implode(" ; ", $gid_materials);
$result[$k]['gid_patterns'] = implode(" ; ", $gid_patterns);
$result[$k]['gid_sizes'] = implode(" ; ", $gid_sizes);
}
}
$categories = array();
$buff = array();
if (!isset($root_category)) {
$root_category = 1;
}
foreach ($result as $row) {
$current =& $buff[$row['id_category']];
$current = $row;
if ($row['id_category'] == $root_category) {
$categories[$row['id_category']] =& $current;
} else {
$buff[$row['id_parent']]['children'][$row['id_category']] =& $current;
}
}
Cache::store($cache_id, $categories);
}
return Cache::retrieve($cache_id);
}
示例15: setQuantity
/**
* 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));
}
}