Example #1
0
    public function deleteValue($Data)
    {
        $recordsNotDeleted = array();
        foreach ($Data as $parent) {
            $sql = 'SELECT attributeproductid, idattributeproductvalue 
						FROM attributeproductvalue 
						WHERE attributeproductid=:atrid';
            $stmt = Db::getInstance()->prepare($sql);
            $stmt->bindValue('atrid', $parent['id']);
            $stmt->execute();
            $Data = array();
            while ($rs = $stmt->fetch()) {
                $idattr = $rs['idattributeproductvalue'];
                $Data[$idattr] = $rs['idattributeproductvalue'];
            }
            if (!empty($parent['values'])) {
                foreach ($parent['values'] as $children) {
                    if (in_array($children['id'], $Data)) {
                        unset($Data[$children['id']]);
                    }
                }
            }
            foreach ($Data as $value) {
                $sql = "SELECT idorderproductattribute FROM orderproductattribute WHERE attributeproductvalueid = :attrvalueid LIMIT 1";
                $stmt = Db::getInstance()->prepare($sql);
                $stmt->bindValue('attrvalueid', $value);
                try {
                    $stmt->execute();
                } catch (Exception $e) {
                    throw new Exception($e->getMessage());
                }
                $rs = $stmt->fetch();
                if (!empty($rs)) {
                    $recordsNotDeleted[] = $productid;
                    continue;
                }
                DbTracker::deleteRows('productattributevalueset', 'attributeproductvalueid', $value);
                $sqlDelete = 'DELETE FROM attributeproductvalue WHERE attributeproductid=:atrid AND idattributeproductvalue=:attrvalueid ';
                $stmt = Db::getInstance()->prepare($sqlDelete);
                $stmt->bindValue('atrid', $parent['id']);
                $stmt->bindValue('attrvalueid', $value);
                try {
                    $stmt->execute();
                } catch (Exception $e) {
                    throw new Exception($e->getMessage());
                }
            }
        }
        Session::setVolatileErrorMessage(_('ERR_BIND_ATTRIBUTE_VALUE'));
        return count($recordsNotDeleted) === 0;
    }