本文整理汇总了PHP中Attribute::cleanPositions方法的典型用法代码示例。如果您正苦于以下问题:PHP Attribute::cleanPositions方法的具体用法?PHP Attribute::cleanPositions怎么用?PHP Attribute::cleanPositions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Attribute
的用法示例。
在下文中一共展示了Attribute::cleanPositions方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: attributeImport
//.........这里部分代码省略.........
} else {
$this->errors[] = ($field_error !== true ? $field_error : '') . (isset($lang_field_error) && $lang_field_error !== true ? $lang_field_error : '');
}
// fils groups attributes
$id_attribute_group = $obj->id;
$groups_attributes[$key]['id'] = $id_attribute_group;
} else {
$id_attribute_group = $groups[$group];
$groups_attributes[$key]['id'] = $id_attribute_group;
}
}
}
// inits attribute
$id_product_attribute = 0;
$id_product_attribute_update = false;
$attributes_to_add = array();
// for each attribute
if (isset($info['attribute'])) {
foreach (explode($this->multiple_value_separator, $info['attribute']) as $key => $attribute) {
$tab_attribute = explode(':', $attribute);
$attribute = trim($tab_attribute[0]);
// if position is filled
if (isset($tab_attribute[1])) {
$position = trim($tab_attribute[1]);
} else {
$position = false;
}
if (isset($groups_attributes[$key])) {
$group = $groups_attributes[$key]['group'];
if (!isset($attributes[$group . '_' . $attribute]) && count($groups_attributes[$key]) == 2) {
$id_attribute_group = $groups_attributes[$key]['id'];
$obj = new Attribute();
// sets the proper id (corresponding to the right key)
$obj->id_attribute_group = $groups_attributes[$key]['id'];
$obj->name[$default_language] = str_replace('\\n', '', str_replace('\\r', '', $attribute));
$obj->position = !$position && isset($groups[$group]) ? Attribute::getHigherPosition($groups[$group]) + 1 : $position;
if (($field_error = $obj->validateFields(UNFRIENDLY_ERROR, true)) === true && ($lang_field_error = $obj->validateFieldsLang(UNFRIENDLY_ERROR, true)) === true) {
$obj->add();
$obj->associateTo($id_shop_list);
$attributes[$group . '_' . $attribute] = $obj->id;
} else {
$this->errors[] = ($field_error !== true ? $field_error : '') . (isset($lang_field_error) && $lang_field_error !== true ? $lang_field_error : '');
}
}
$info['minimal_quantity'] = isset($info['minimal_quantity']) && $info['minimal_quantity'] ? (int) $info['minimal_quantity'] : 1;
$info['wholesale_price'] = str_replace(',', '.', $info['wholesale_price']);
$info['price'] = str_replace(',', '.', $info['price']);
$info['ecotax'] = str_replace(',', '.', $info['ecotax']);
$info['weight'] = str_replace(',', '.', $info['weight']);
// if a reference is specified for this product, get the associate id_product_attribute to UPDATE
if (isset($info['reference']) && !empty($info['reference'])) {
$id_product_attribute = Combination::getIdByReference($product->id, strval($info['reference']));
// updates the attribute
if ($id_product_attribute) {
// gets all the combinations of this product
$attribute_combinations = $product->getAttributeCombinations($default_language);
foreach ($attribute_combinations as $attribute_combination) {
if ($id_product_attribute && in_array($id_product_attribute, $attribute_combination)) {
$product->updateAttribute($id_product_attribute, (double) $info['wholesale_price'], (double) $info['price'], (double) $info['weight'], 0, (double) $info['ecotax'], $id_image, strval($info['reference']), strval($info['ean13']), (int) $info['default_on'], 0, strval($info['upc']), (int) $info['minimal_quantity'], 0, null, $id_shop_list);
$id_product_attribute_update = true;
}
}
}
}
// if no attribute reference is specified, creates a new one
if (!$id_product_attribute) {
$id_product_attribute = $product->addCombinationEntity((double) $info['wholesale_price'], (double) $info['price'], (double) $info['weight'], 0, (double) $info['ecotax'], (int) $info['quantity'], $id_image, strval($info['reference']), 0, strval($info['ean13']), (int) $info['default_on'], 0, strval($info['upc']), (int) $info['minimal_quantity'], $id_shop_list);
}
// fills our attributes array, in order to add the attributes to the product_attribute afterwards
if (isset($attributes[$group . '_' . $attribute])) {
$attributes_to_add[] = (int) $attributes[$group . '_' . $attribute];
}
// after insertion, we clean attribute position and group attribute position
$obj = new Attribute();
$obj->cleanPositions((int) $id_attribute_group, false);
AttributeGroup::cleanPositions();
}
}
}
$product->checkDefaultAttributes();
if (!$product->cache_default_attribute) {
Product::updateDefaultAttribute($product->id);
}
if ($id_product_attribute) {
// now adds the attributes in the attribute_combination table
if ($id_product_attribute_update) {
Db::getInstance()->execute('
DELETE FROM ' . _DB_PREFIX_ . 'product_attribute_combination
WHERE id_product_attribute = ' . (int) $id_product_attribute);
}
foreach ($attributes_to_add as $attribute_to_add) {
Db::getInstance()->execute('
INSERT IGNORE INTO ' . _DB_PREFIX_ . 'product_attribute_combination (id_attribute, id_product_attribute)
VALUES (' . (int) $attribute_to_add . ',' . (int) $id_product_attribute . ')');
}
StockAvailable::setQuantity($product->id, $id_product_attribute, (int) $info['quantity']);
}
}
$this->closeCsvFile($handle);
}
示例2: attributeImportOne
//.........这里部分代码省略.........
if (isset($info['reference']) && !empty($info['reference'])) {
$id_product_attribute = Combination::getIdByReference($product->id, strval($info['reference']));
// updates the attribute
if ($id_product_attribute && !$validateOnly) {
// gets all the combinations of this product
$attribute_combinations = $product->getAttributeCombinations($default_language);
foreach ($attribute_combinations as $attribute_combination) {
if ($id_product_attribute && in_array($id_product_attribute, $attribute_combination)) {
// FIXME: ~3s/declinaison
$product->updateAttribute($id_product_attribute, (double) $info['wholesale_price'], (double) $info['price'], (double) $info['weight'], 0, Configuration::get('PS_USE_ECOTAX') ? (double) $info['ecotax'] : 0, $id_image, strval($info['reference']), strval($info['ean13']), (int) $info['default_on'], 0, strval($info['upc']), (int) $info['minimal_quantity'], $info['available_date'], null, $id_shop_list);
$id_product_attribute_update = true;
if (isset($info['supplier_reference']) && !empty($info['supplier_reference'])) {
$product->addSupplierReference($product->id_supplier, $id_product_attribute, $info['supplier_reference']);
}
// until here
}
}
}
}
// if no attribute reference is specified, creates a new one
if (!$id_product_attribute && !$validateOnly) {
$id_product_attribute = $product->addCombinationEntity((double) $info['wholesale_price'], (double) $info['price'], (double) $info['weight'], 0, Configuration::get('PS_USE_ECOTAX') ? (double) $info['ecotax'] : 0, (int) $info['quantity'], $id_image, strval($info['reference']), 0, strval($info['ean13']), (int) $info['default_on'], 0, strval($info['upc']), (int) $info['minimal_quantity'], $id_shop_list, $info['available_date']);
if (isset($info['supplier_reference']) && !empty($info['supplier_reference'])) {
$product->addSupplierReference($product->id_supplier, $id_product_attribute, $info['supplier_reference']);
}
}
// fills our attributes array, in order to add the attributes to the product_attribute afterwards
if (isset($attributes[$group . '_' . $attribute])) {
$attributes_to_add[] = (int) $attributes[$group . '_' . $attribute];
}
// after insertion, we clean attribute position and group attribute position
if (!$validateOnly) {
$obj = new Attribute();
$obj->cleanPositions((int) $id_attribute_group, false);
AttributeGroup::cleanPositions();
}
}
}
}
$product->checkDefaultAttributes();
if (!$product->cache_default_attribute && !$validateOnly) {
Product::updateDefaultAttribute($product->id);
}
if ($id_product_attribute) {
if (!$validateOnly) {
// now adds the attributes in the attribute_combination table
if ($id_product_attribute_update) {
Db::getInstance()->execute('
DELETE FROM ' . _DB_PREFIX_ . 'product_attribute_combination
WHERE id_product_attribute = ' . (int) $id_product_attribute);
}
foreach ($attributes_to_add as $attribute_to_add) {
Db::getInstance()->execute('
INSERT IGNORE INTO ' . _DB_PREFIX_ . 'product_attribute_combination (id_attribute, id_product_attribute)
VALUES (' . (int) $attribute_to_add . ',' . (int) $id_product_attribute . ')', false);
}
}
// set advanced stock managment
if (isset($info['advanced_stock_management'])) {
if ($info['advanced_stock_management'] != 1 && $info['advanced_stock_management'] != 0) {
$this->warnings[] = sprintf($this->trans('Advanced stock management has incorrect value. Not set for product with id %d.', array(), 'Admin.Parameters.Notification'), $product->id);
} elseif (!Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && $info['advanced_stock_management'] == 1) {
$this->warnings[] = sprintf($this->trans('Advanced stock management is not enabled, cannot enable on product with id %d.', array(), 'Admin.Parameters.Notification'), $product->id);
} elseif (!$validateOnly) {
$product->setAdvancedStockManagement($info['advanced_stock_management']);
}
示例3: attributeImport
//.........这里部分代码省略.........
$info['available_date'] = Validate::isDate($info['available_date']) ? $info['available_date'] : null;
if (!Validate::isEan13($info['ean13'])) {
$this->warnings[] = sprintf(Tools::displayError('EAN13 "%1s" has incorrect value for product with id %2d.'), $info['ean13'], $product->id);
$info['ean13'] = '';
}
if ($info['default_on']) {
$product->deleteDefaultAttributes();
}
if (isset($info['reference']) && !empty($info['reference'])) {
$id_product_attribute = Combination::getIdByReference($product->id, (string) $info['reference']);
if ($id_product_attribute) {
$attribute_combinations = $product->getAttributeCombinations($default_language);
foreach ($attribute_combinations as $attribute_combination) {
if ($id_product_attribute && in_array($id_product_attribute, $attribute_combination)) {
$product->updateAttribute($id_product_attribute, (double) $info['wholesale_price'], (double) $info['price'], (double) $info['weight'], 0, Configuration::get('PS_USE_ECOTAX') ? (double) $info['ecotax'] : 0, $id_image, (string) $info['reference'], (string) $info['ean13'], (int) $info['default_on'], 0, (string) $info['upc'], (int) $info['minimal_quantity'], $info['available_date'], null, $id_shop_list);
$id_product_attribute_update = true;
if (isset($info['supplier_reference']) && !empty($info['supplier_reference'])) {
$product->addSupplierReference($product->id_supplier, $id_product_attribute, $info['supplier_reference']);
}
}
}
}
}
if (!$id_product_attribute) {
$id_product_attribute = $product->addCombinationEntity((double) $info['wholesale_price'], (double) $info['price'], (double) $info['weight'], 0, Configuration::get('PS_USE_ECOTAX') ? (double) $info['ecotax'] : 0, (int) $info['quantity'], $id_image, (string) $info['reference'], 0, (string) $info['ean13'], (int) $info['default_on'], 0, (string) $info['upc'], (int) $info['minimal_quantity'], $id_shop_list, $info['available_date']);
if (isset($info['supplier_reference']) && !empty($info['supplier_reference'])) {
$product->addSupplierReference($product->id_supplier, $id_product_attribute, $info['supplier_reference']);
}
}
if (isset($attributes[$group . '_' . $attribute])) {
$attributes_to_add[] = (int) $attributes[$group . '_' . $attribute];
}
$obj = new Attribute();
$obj->cleanPositions((int) $id_attribute_group, false);
AttributeGroup::cleanPositions();
}
}
}
$product->checkDefaultAttributes();
if (!$product->cache_default_attribute) {
Product::updateDefaultAttribute($product->id);
}
if ($id_product_attribute) {
if ($id_product_attribute_update) {
Db::getInstance()->execute('
DELETE FROM ' . _DB_PREFIX_ . 'product_attribute_combination
WHERE id_product_attribute = ' . (int) $id_product_attribute);
}
foreach ($attributes_to_add as $attribute_to_add) {
Db::getInstance()->execute('
INSERT IGNORE INTO ' . _DB_PREFIX_ . 'product_attribute_combination (id_attribute, id_product_attribute)
VALUES (' . (int) $attribute_to_add . ',' . (int) $id_product_attribute . ')');
}
if (isset($info['advanced_stock_management'])) {
if ($info['advanced_stock_management'] != 1 && $info['advanced_stock_management'] != 0) {
$this->warnings[] = sprintf(Tools::displayError('Advanced stock management has incorrect value. Not set for product with id %d.'), $product->id);
} elseif (!Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && $info['advanced_stock_management'] == 1) {
$this->warnings[] = sprintf(Tools::displayError('Advanced stock management is not enabled, cannot enable on product with id %d.'), $product->id);
} else {
$product->setAdvancedStockManagement($info['advanced_stock_management']);
}
if (StockAvailable::dependsOnStock($product->id) == 1 && $info['advanced_stock_management'] == 0) {
StockAvailable::setProductDependsOnStock($product->id, 0, null, $id_product_attribute);
}
}
if (isset($info['warehouse']) && $info['warehouse']) {