mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-19 08:38:45 +02:00
N°659 uniqueness constraint : fix class used in the dict key for the error message
It has to be the rule root class, not the current class
This commit is contained in:
@@ -1470,12 +1470,13 @@ abstract class DBObject implements iDisplay
|
||||
protected function GetUniquenessRuleMessage($sUniquenessRuleId)
|
||||
{
|
||||
$sCurrentClass = get_class($this);
|
||||
$sMessageKey = "Class:$sCurrentClass/UniquenessRule:$sUniquenessRuleId";
|
||||
$sClass = MetaModel::GetRootClassForUniquenessRule($sUniquenessRuleId, $sCurrentClass);
|
||||
$sMessageKey = "Class:$sClass/UniquenessRule:$sUniquenessRuleId";
|
||||
$sTemplate = Dict::S($sMessageKey, '');
|
||||
|
||||
if (empty($sTemplate))
|
||||
{
|
||||
//TODO if admin add message key is missing
|
||||
// we could add also a specific message if user is admin ("dict key is missing")
|
||||
return Dict::Format('Core:UniquenessDefaultError', $sUniquenessRuleId);
|
||||
}
|
||||
|
||||
|
||||
@@ -534,7 +534,7 @@ abstract class MetaModel
|
||||
*
|
||||
* @since 2.6 N°659 uniqueness constraint
|
||||
*/
|
||||
final static public function GetUniquenessRules($sClass)
|
||||
final public static function GetUniquenessRules($sClass)
|
||||
{
|
||||
if (!isset(self::$m_aClassParams[$sClass]))
|
||||
{
|
||||
@@ -581,6 +581,33 @@ abstract class MetaModel
|
||||
return $aCurrentUniquenessRules;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sRuleId
|
||||
* @param string $sLeafClassName
|
||||
*
|
||||
* @return string name of the class, null if not present
|
||||
*/
|
||||
final public static function GetRootClassForUniquenessRule($sRuleId, $sLeafClassName)
|
||||
{
|
||||
$sFirstClassWithRuleId = null;
|
||||
if (isset(self::$m_aClassParams[$sLeafClassName]['uniqueness_rules'][$sRuleId]))
|
||||
{
|
||||
$sFirstClassWithRuleId = $sLeafClassName;
|
||||
}
|
||||
|
||||
$sParentClass = self::GetParentClass($sLeafClassName);
|
||||
if ($sParentClass)
|
||||
{
|
||||
$sParentClassWithRuleId = self::GetRootClassForUniquenessRule($sRuleId, $sParentClass);
|
||||
if (!is_null($sParentClassWithRuleId))
|
||||
{
|
||||
$sFirstClassWithRuleId = $sParentClassWithRuleId;
|
||||
}
|
||||
}
|
||||
|
||||
return $sFirstClassWithRuleId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $aRuleProperties
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user