Implement isset operation in template If statements

develop
Sven Slootweg 12 years ago
parent 7034837966
commit ecb95ca151

@ -530,7 +530,22 @@ class Templater
if($identifier == "if")
{
$statement_parts = explode(" ", $statement, 3);
$element->left = $statement_parts[0];
$variable = $statement_parts[0];
if(strpos($variable, "|") !== false)
{
$variable_parts = explode("|", $variable, 2);
$element->operation = $variable_parts[0];
$element->left = $variable_parts[1];
}
else
{
$element->left = $variable;
}
$element->operator = $statement_parts[1];
$element->right = $statement_parts[2];
}
@ -648,49 +663,84 @@ class TemplateIfElement extends TemplateSyntaxElement
public $left = "";
public $right = "";
public $operator = "";
public $operation = "";
public function Evaluate($data)
{
$a = $this->FetchVariable($this->left, $data);
$b = $this->right;
if($b == "true")
{
$b = true;
}
elseif($b == "false")
{
$b = false;
}
switch($this->operator)
if(empty($this->operation))
{
case "=":
case "==":
$result = ($a == $b);
break;
case ">":
$result = ($a > $b);
break;
case "<":
$result = ($a < $b);
break;
case ">=":
$result = ($a >= $b);
break;
case "<=":
$result = ($a <= $b);
break;
case "!=":
$result = ($a != $b);
break;
default:
$result = false;
$a = $this->FetchVariable($this->left, $data);
$b = $this->right;
if($b == "true")
{
$b = true;
}
elseif($b == "false")
{
$b = false;
}
switch($this->operator)
{
case "=":
case "==":
$result = ($a == $b);
break;
case ">":
$result = ($a > $b);
break;
case "<":
$result = ($a < $b);
break;
case ">=":
$result = ($a >= $b);
break;
case "<=":
$result = ($a <= $b);
break;
case "!=":
$result = ($a != $b);
break;
default:
$result = false;
}
if($result == true)
{
return parent::Evaluate($data);
}
}
if($result == true)
elseif($this->operation == "isset")
{
return parent::Evaluate($data);
try
{
$this->FetchVariable($this->left, $data);
$found = true;
}
catch (TemplateEvaluationException $e)
{
$found = false;
}
if($this->right == "false")
{
$desired = false;
}
else
{
$desired = true;
}
if($found === $desired)
{
return parent::Evaluate($data);
}
else
{
return "";
}
}
}
}

Loading…
Cancel
Save