Index: trunk/kernel/include/custommetadata.php =================================================================== diff -u -r3526 -r3872 --- trunk/kernel/include/custommetadata.php (.../custommetadata.php) (revision 3526) +++ trunk/kernel/include/custommetadata.php (.../custommetadata.php) (revision 3872) @@ -171,48 +171,46 @@ return $found ? ($return_index ? $i : $d) : false; } - function SaveData() - { - foreach($this->Items as $f) - { - $FieldId = $f->Get("CustomFieldId"); - $value = $f->Get("Value"); - $ResId = $f->Get("ResourceId"); - $DataId = $f->Get("CustomDataId"); + function SaveData() + { + foreach($this->Items as $f) { + $FieldId = $f->Get('CustomFieldId'); + $value = $f->Get('Value'); + $ResId = $f->Get('ResourceId'); + $DataId = $f->Get('CustomDataId'); + + if ($FieldId > 0) { + $db_value = $this->adodbConnection->qstr( isset($GLOBALS['_CopyFromEditTable']) ? $value : stripslashes($value) ); + + if (is_numeric($DataId)) { + $sql = 'UPDATE '.$this->SourceTable.' SET Value = '.$db_value.' WHERE CustomFieldId = '.$FieldId.' AND ResourceId = '.$ResId; + $this->adodbConnection->Execute($sql); + } + else { + $sql = 'INSERT INTO '.$this->SourceTable.' (ResourceId,CustomFieldId,Value) VALUES ('.$ResId.','.$FieldId.','.$db_value.')'; + $this->adodbConnection->Execute($sql); + } + } + else + { + $sql = 'DELETE FROM '.$this->SourceTable.' WHERE CustomDataId = '.$DataId; + $this->adodbConnection->Execute($sql); + } + } + + $rs = $this->adodbConnection->Execute("SELECT * FROM ".$this->SourceTable." WHERE CustomDataId=0 "); + while($rs && !$rs->EOF) + { + $m = $this->adodbConnection->Execute("SELECT MIN(CustomDataId) as MinValue FROM ".$this->SourceTable); + $NewId = $m->fields["MinValue"]-1; + + $sql = "UPDATE ".$this->SourceTable." SET CustomDataId=$NewId WHERE ResourceId=".$rs->fields["ResourceId"]." AND "; + $sql .= "CustomFieldId=".$rs->fields["CustomFieldId"]; + $this->adodbConnection->Execute($sql); + $rs->MoveNext(); + } + } - if($FieldId > 0) - { - if(is_numeric($DataId)) - { - $sql = "UPDATE ".$this->SourceTable." SET Value=".$this->adodbConnection->qstr($value)." WHERE CustomFieldId='$FieldId' AND ResourceId='$ResId'"; - $this->adodbConnection->Execute($sql); - } - else - { - $sql = "INSERT INTO ".$this->SourceTable." (ResourceId,CustomFieldId,Value) VALUES ('".$ResId."','$FieldId',".$this->adodbConnection->qstr($value).")"; - $this->adodbConnection->Execute($sql); - } - } - else - { - $sql = 'DELETE FROM '.$this->SourceTable.' WHERE CustomDataId = '.$DataId; - $this->adodbConnection->Execute($sql); - } - } - - $rs = $this->adodbConnection->Execute("SELECT * FROM ".$this->SourceTable." WHERE CustomDataId=0 "); - while($rs && !$rs->EOF) - { - $m = $this->adodbConnection->Execute("SELECT MIN(CustomDataId) as MinValue FROM ".$this->SourceTable); - $NewId = $m->fields["MinValue"]-1; - - $sql = "UPDATE ".$this->SourceTable." SET CustomDataId=$NewId WHERE ResourceId=".$rs->fields["ResourceId"]." AND "; - $sql .= "CustomFieldId=".$rs->fields["CustomFieldId"]; - $this->adodbConnection->Execute($sql); - $rs->MoveNext(); - } - } - function CopyToEditTable($idfield, $idlist) { global $objSession;