/** * Add a custom feature to a product * @param int $id_product * @param int $id_feature * @param int $id_lang * @param array $values */ public static function addCustomFeatureToProductId($id_product, $id_feature, $id_lang, $values) { if (empty($id_product) || empty($id_feature) || empty($id_lang) || empty($values)) { return false; } // Create the new custom feature $custom_feature_value = new FeatureValue(); $custom_feature_value->id_feature = (int) $id_feature; $custom_feature_value->custom = (bool) true; $custom_feature_value->value = $values; $custom_feature_value->add(); // Associate the new feature to product self::addFeatureToProduct($id_product, $id_feature, $custom_feature_value->id); }
public static function addFeatureValueImport($id_feature, $name) { $rq = Db::getInstance()->executeS(' SELECT fv.`id_feature_value` FROM ' . _DB_PREFIX_ . 'feature_value fv LEFT JOIN ' . _DB_PREFIX_ . 'feature_value_lang fvl ON (fvl.`id_feature_value` = fv.`id_feature_value`) WHERE `value` = \'' . pSQL($name) . '\' AND fv.`id_feature` = ' . (int) $id_feature . ' AND fv.`custom` = 1 GROUP BY fv.`id_feature_value` LIMIT 1 '); if (!isset($rq[0]['id_feature_value']) || !($id_feature_value = (int) $rq[0]['id_feature_value'])) { // Feature doesn't exist, create it $feature_value = new FeatureValue(); $languages = Language::getLanguages(); foreach ($languages as $language) { $feature_value->value[$language['id_lang']] = strval($name); } $feature_value->id_feature = (int) $id_feature; $feature_value->custom = 1; $feature_value->add(); return (int) $feature_value->id; } return (int) $id_feature_value; }
public static function addFeatureValueImport($id_feature, $value, $id_product = null, $id_lang = null, $custom = false) { $id_feature_value = false; if (!is_null($id_product) && $id_product) { $id_feature_value = Db::getInstance()->getValue(' SELECT fp.`id_feature_value` FROM ' . _DB_PREFIX_ . 'feature_product fp INNER JOIN ' . _DB_PREFIX_ . 'feature_value fv USING (`id_feature_value`) WHERE fp.`id_feature` = ' . (int) $id_feature . ' AND fv.`custom` = ' . (int) $custom . ' AND fp.`id_product` = ' . (int) $id_product); if ($custom && $id_feature_value && !is_null($id_lang) && $id_lang) { Db::getInstance()->execute(' UPDATE ' . _DB_PREFIX_ . 'feature_value_lang SET `value` = \'' . pSQL($value) . '\' WHERE `id_feature_value` = ' . (int) $id_feature_value . ' AND `value` != \'' . pSQL($value) . '\' AND `id_lang` = ' . (int) $id_lang); } } if (!$custom) { $id_feature_value = Db::getInstance()->getValue(' SELECT fv.`id_feature_value` FROM ' . _DB_PREFIX_ . 'feature_value fv LEFT JOIN ' . _DB_PREFIX_ . 'feature_value_lang fvl ON (fvl.`id_feature_value` = fv.`id_feature_value` AND fvl.`id_lang` = ' . (int) $id_lang . ') WHERE `value` = \'' . pSQL($value) . '\' AND fv.`id_feature` = ' . (int) $id_feature . ' AND fv.`custom` = 0 GROUP BY fv.`id_feature_value`'); } if ($id_feature_value) { return (int) $id_feature_value; } // Feature doesn't exist, create it $feature_value = new FeatureValue(); $feature_value->id_feature = (int) $id_feature; $feature_value->custom = (bool) $custom; $feature_value->value = array_fill_keys(Language::getIDs(false), $value); $feature_value->add(); return (int) $feature_value->id; }
<?php if (Tools::G('id_feature') > 0) { $id_feature = Tools::G('id_feature'); } if (Tools::P('saveFeatureValue') == 'add' && Tools::P('id_feature') > 0) { $featureV = new FeatureValue(); $featureV->copyFromPost(); $featureV->add(); if (is_array($featureV->_errors) and count($featureV->_errors) > 0) { $errors = $featureV->_errors; } else { $_GET['id'] = $featureV->id; UIAdminAlerts::conf('商品特征值已添加'); } $id_feature = Tools::P('id_feature'); } if (isset($_GET['id'])) { $id = (int) $_GET['id']; $obj = new FeatureValue($id); $id_feature = $obj->id_feature; } if (Tools::P('saveFeatureValue') == 'edit') { if (Validate::isLoadedObject($obj)) { $obj->copyFromPost(); $obj->update(); } if (is_array($obj->_errors) and count($obj->_errors) > 0) { $errors = $obj->_errors; } else { UIAdminAlerts::conf('商品特征值已更新');
protected function importFeatureValues() { $this->truncateTables(array('feature_value', 'feature_value_lang')); $handle = $this->openCsvFile('feature_values.csv'); $languages = Language::getLanguages(false); for ($current_line = 0; $line = fgetcsv($handle, MAX_LINE_SIZE, ';'); $current_line++) { $res = false; $fields = $this->filterFields('FeatureValue', $this->feature_value_fields, $line); if (!isset($fields['id'])) { $feature_value = new FeatureValue($line[0]); $feature_value->id = $line[0]; } else { $feature_value = new FeatureValue($fields['id']); } foreach ($fields as $key => $field) { if ($key == 'value') { $feature_value->{$key} = $this->multilFild($field); } else { $feature_value->{$key} = $field; } } $feature_value->force_id = true; if (!$res) { $res = $feature_value->add(); } } $this->closeCsvFile($handle); return true; }