Переглянути джерело

N.542 Refactored the code so that query placeholders (current_contact->attcode or current_user->attcode) become available in template too.... BUT this will not work if the notifications are sent asynchronously (thus the logged in user is an account dedicated to the cron).

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@4747 a333f486-631f-4898-b8df-5754b55c2be0
romainq 8 роки тому
батько
коміт
013adc56b5
1 змінених файлів з 16 додано та 4 видалено
  1. 16 4
      core/metamodel.class.php

+ 16 - 4
core/metamodel.class.php

@@ -2673,22 +2673,32 @@ abstract class MetaModel
 				}
 			}
 		}
+		$aScalarArgs = static::AddMagicPlaceholders($aScalarArgs);
+		return $aScalarArgs;
+	}
+
+	/**
+	 * @param $aPlaceholders The array into which standard placeholders should be added
+	 * @return array of placeholder (or name->object()) => value (or object)
+	 */
+	public static function AddMagicPlaceholders($aPlaceholders)
+	{
 		// Add standard magic arguments
 		//
-		$aScalarArgs['current_contact_id'] = UserRights::GetContactId(); // legacy
+		$aPlaceholders['current_contact_id'] = UserRights::GetContactId(); // legacy
 
 		$oUser = UserRights::GetUserObject();
 		if (!is_null($oUser))
 		{
-			$aScalarArgs['current_user->object()'] = $oUser;
+			$aPlaceholders['current_user->object()'] = $oUser;
 
 			$oContact = UserRights::GetContactObject();
 			if (!is_null($oContact))
 			{
-				$aScalarArgs['current_contact->object()'] = $oContact;
+				$aPlaceholders['current_contact->object()'] = $oContact;
 			}
 		}
-		return $aScalarArgs;
+		return $aPlaceholders;
 	}
 
 	public static function MakeModifierProperties($oFilter)
@@ -5085,6 +5095,8 @@ abstract class MetaModel
 	 */
 	static public function ApplyParams($sInput, $aParams)
 	{
+		$aParams = static::AddMagicPlaceholders($aParams);
+
 		// Declare magic parameters
 		$aParams['APP_URL'] = utils::GetAbsoluteUrlAppRoot();
 		$aParams['MODULES_URL'] = utils::GetAbsoluteUrlModulesRoot();