public static function storeSpecificationsById($productId, $specsArray, $new = 0)
{
if ((int) $productId > 0) {
$db = Factory::getDBO();
$notDeleteSpecs = array();
if (!empty($specsArray)) {
$values = array();
$i = 1;
foreach ($specsArray as $k => $v) {
// Don't store empty specification
if ($v['title'] == '') {
continue;
}
if (empty($v['alias'])) {
$v['alias'] = $v['title'];
}
$v['alias'] = PhocacartUtils::getAliasName($v['alias']);
if (empty($v['alias_value'])) {
$v['alias_value'] = $v['value'];
}
// When no value, then no alias
if ($v['alias_value'] != '') {
$v['alias_value'] = PhocacartUtils::getAliasName($v['alias_value']);
}
if (empty($v['group_id'])) {
$v['group_id'] = 0;
}
// correct simple xml
if (empty($v['title'])) {
$v['title'] = '';
}
if (empty($v['alias'])) {
$v['alias'] = '';
}
if (empty($v['value'])) {
$v['value'] = '';
}
if (empty($v['alias_value'])) {
$v['alias_value'] = '';
}
if (empty($v['group_id'])) {
$v['group_id'] = '';
}
if (empty($v['image'])) {
$v['image'] = '';
}
if (empty($v['image_medium'])) {
$v['image_medium'] = '';
}
if (empty($v['image_small'])) {
$v['image_small'] = '';
}
if (empty($v['color'])) {
$v['color'] = '';
}
$idExists = 0;
if ($new == 0) {
if (isset($v['id']) && $v['id'] > 0) {
// Does the row exist
$query = ' SELECT id ' . ' FROM #__phocacart_specifications' . ' WHERE id = ' . (int) $v['id'] . ' ORDER BY id';
$db->setQuery($query);
$idExists = $db->loadResult();
}
}
if ((int) $idExists > 0) {
$query = 'UPDATE #__phocacart_specifications SET' . ' product_id = ' . (int) $productId . ',' . ' title = ' . $db->quote($v['title']) . ',' . ' alias = ' . $db->quote($v['alias']) . ',' . ' value = ' . $db->quote($v['value']) . ',' . ' alias_value = ' . $db->quote($v['alias_value']) . ',' . ' group_id = ' . (int) $v['group_id'] . ',' . ' image = ' . $db->quote($v['image']) . ',' . ' image_medium = ' . $db->quote($v['image_medium']) . ',' . ' image_small = ' . $db->quote($v['image_small']) . ',' . ' color = ' . $db->quote($v['color']) . ',' . ' ordering = ' . $i . ' WHERE id = ' . (int) $idExists;
$db->setQuery($query);
$db->execute();
$i++;
$newIdS = $idExists;
} else {
$values = '(' . (int) $productId . ', ' . $db->quote($v['title']) . ', ' . $db->quote($v['alias']) . ', ' . $db->quote($v['value']) . ', ' . $db->quote($v['alias_value']) . ', ' . (int) $v['group_id'] . ', ' . $db->quote($v['image']) . ', ' . $db->quote($v['image_medium']) . ', ' . $db->quote($v['image_small']) . ', ' . $db->quote($v['color']) . ', ' . $i . ')';
$query = ' INSERT INTO #__phocacart_specifications (product_id, title, alias, value, alias_value, group_id, image, image_medium, image_small, color, ordering)' . ' VALUES ' . $values;
$db->setQuery($query);
$db->execute();
$i++;
$newIdS = $db->insertid();
}
$notDeleteSpecs[] = $newIdS;
}
}
// Remove all specifications except the active
if (!empty($notDeleteSpecs)) {
$notDeleteSpecsString = implode(',', $notDeleteSpecs);
$query = ' DELETE ' . ' FROM #__phocacart_specifications' . ' WHERE product_id = ' . (int) $productId . ' AND id NOT IN (' . $notDeleteSpecsString . ')';
} else {
$query = ' DELETE ' . ' FROM #__phocacart_specifications' . ' WHERE product_id = ' . (int) $productId;
}
$db->setQuery($query);
$db->execute();
}
}