N°917: Fix refresh edit screen, avoid storing bad values in db

This commit is contained in:
Eric
2018-09-28 12:07:46 +02:00
parent b52aaaadf2
commit 40355cb2d0
6 changed files with 98 additions and 19 deletions

View File

@@ -137,6 +137,38 @@ class QueryOQL extends Query
return $aFieldsMap;
}
public function ComputeValues()
{
parent::ComputeValues();
// Remove unwanted attribute codes
$aChanges = $this->ListChanges();
if (isset($aChanges['fields']))
{
$oAttDef = MetaModel::GetAttributeDef(get_class($this), 'fields');
$aArgs = array('this' => $this);
$aAllowedValues = $oAttDef->GetAllowedValues($aArgs);
/** @var \ormSet $oValue */
$oValue = $this->Get('fields');
$aValues = $oValue->GetValues();
$bChanged = false;
foreach($aValues as $key => $sValue)
{
if (!isset($aAllowedValues[$sValue]))
{
unset($aValues[$key]);
$bChanged = true;
}
}
if ($bChanged)
{
$oValue->SetValues($aValues);
$this->Set('fields', $oValue);
}
}
}
}
?>