containers[] = $variableContainer;
}
public function __construct()
{
$this->containers = array();
//
$args = func_get_args();
foreach($args as $variableContainer)
$this->AddVariableContainer($variableContainer);
}
public function FillVariablesValues(&$values)
{
$values = array();
foreach($this->containers as $variableContainer)
{
$containerValues = array();
$variableContainer->FillVariablesValues($containerValues);
$values = array_merge($values, $containerValues);
}
}
public function FillAvailableVariables(&$variables)
{
$variables = array();
foreach($this->containers as $variableContainer)
{
$containerVariables = array();
$variableContainer->FillAvailableVariables($containerVariables);
$variables = array_merge($variables, $containerVariables);
}
}
}
class ServerVariablesContainer implements IVariableContainer
{
/* */
public function FillVariablesValues(&$values)
{
$values = array();
foreach($_SERVER as $server_key => $server_value)
$values[$server_key] = $server_value;
}
public function FillAvailableVariables(&$variables)
{
$variables = array_keys($_SERVER);
}
/* */
}
class SystemFunctionsVariablesContainer implements IVariableContainer
{
/* */
private $variableFuncs = array(
'CURRENT_DATETIME' => 'return date(\'d-m-Y H:i:s\');',
'CURRENT_DATE' => 'return date(\'d-m-Y\');',
'CURRENT_TIME' => 'return date(\'H:i:s\');',
'CURRENT_DATETIME_ISO_8601' => 'return date(\'c\');',
'CURRENT_DATETIME_RFC_2822' => 'return date(\'c\');',
'CURRENT_UNIX_TIMESTAMP' => 'return date(\'U\');'
);
public function FillVariablesValues(&$values)
{
$values = array();
foreach($this->variableFuncs as $name => $code)
{
$function = create_function('', $code);
$values[$name] = $function($this);
}
}
public function FillAvailableVariables(&$variables)
{
return array_keys($this->variableFuncs);
}
/* */
}
class NullVariableContainer implements IVariableContainer
{
/* */
public function FillVariablesValues(&$values)
{
$values = array();
}
public function FillAvailableVariables(&$variables)
{
$variables = array();
}
/* */
}
class EnvVariablesUtils
{
public static function EvaluateVariableTemplate(IVariableContainer $variableContainer, $template)
{
$result = $template;
$values = array();
$variableContainer->FillVariablesValues($values);
foreach($values as $name => $value)
$result = StringUtils::ReplaceVariableInTemplate($result, $name, $value);
return $result;
}
}
?>