Back to PhocacartSpecification class

Method storeSpecificationsById

public static
storeSpecificationsById
(mixed $productId, mixed $specsArray, mixed $new = 0)

Method storeSpecificationsById - Source code

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();
    }
}