Selaa lähdekoodia

Advanced customization: New overridable verb DBObject::GetDefaultValue($sAttCode)

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@4737 a333f486-631f-4898-b8df-5754b55c2be0
glajarige 8 vuotta sitten
vanhempi
commit
d980c06c98
1 muutettua tiedostoa jossa 18 lisäystä ja 7 poistoa
  1. 18 7
      core/dbobject.class.php

+ 18 - 7
core/dbobject.class.php

@@ -116,7 +116,7 @@ abstract class DBObject implements iDisplay
 		// set default values
 		foreach(MetaModel::ListAttributeDefs(get_class($this)) as $sAttCode=>$oAttDef)
 		{
-			$this->m_aCurrValues[$sAttCode] = $oAttDef->GetDefaultValue($this);
+			$this->m_aCurrValues[$sAttCode] = $this->GetDefaultValue($sAttCode);
 			$this->m_aOrigValues[$sAttCode] = null;
 			if ($oAttDef->IsExternalField() || ($oAttDef instanceof AttributeFriendlyName))
 			{
@@ -425,7 +425,7 @@ abstract class DBObject implements iDisplay
 				{
 					if ($oDef->IsExternalField() && ($oDef->GetKeyAttCode() == $sAttCode))
 					{
-						$this->m_aCurrValues[$sCode] = $oDef->GetDefaultValue($this);
+						$this->m_aCurrValues[$sCode] = $this->GetDefaultValue($sCode);
 						unset($this->m_aLoadedAtt[$sCode]);
 					}
 				}
@@ -596,7 +596,7 @@ abstract class DBObject implements iDisplay
 							}
 							else
 							{
-								$this->m_aCurrValues[$sCode] = $oDef->GetDefaultValue($this);
+								$this->m_aCurrValues[$sCode] = $this->GetDefaultValue($sCode);
 							}
 							$this->m_aLoadedAtt[$sCode] = true;
 						}
@@ -622,6 +622,19 @@ abstract class DBObject implements iDisplay
 		return $this->m_aOrigValues[$sAttCode];
 	}
 
+    /**
+     * Returns the default value of the $sAttCode. By default, returns the default value of the AttributeDefinition.
+     * Overridable.
+     *
+     * @param $sAttCode
+     * @return mixed
+     */
+	public function GetDefaultValue($sAttCode)
+    {
+        $oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttCode);
+        return $oAttDef->GetDefaultValue($this);
+    }
+
 	/**
 	 * Returns data loaded by the mean of a dynamic and explicit JOIN
 	 */	 
@@ -2435,8 +2448,7 @@ abstract class DBObject implements iDisplay
 	 */	 	
 	public function Reset($sAttCode)
 	{
-		$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttCode);
-		$this->Set($sAttCode, $oAttDef->GetDefaultValue($this));
+		$this->Set($sAttCode, $this->GetDefaultValue($sAttCode));
 		return true;
 	}
 
@@ -3440,8 +3452,7 @@ abstract class DBObject implements iDisplay
 				{
 					throw new Exception("Unknown attribute ".get_class($this)."::".$sAttCode);
 				}
-				$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttCode);
-				$this->Set($sAttCode, $oAttDef->GetDefaultValue());
+				$this->Set($sAttCode, $this->GetDefaultValue($sAttCode));
 				break;
 
 			case 'nullify':