|
Server IP : 10.2.73.233 / Your IP : 216.73.216.223 Web Server : Apache/2.4.59 (Debian) System : Linux polon 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64 User : www-data ( 33) PHP Version : 5.6.40-64+0~20230107.71+debian10~1.gbp673146 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/ilpnowa/../ifk/web.back/framework/Web/UI/WebControls/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<?php
/**
* TConditional class file.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
* @copyright Copyright © 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.Web.UI.WebControls
*/
/**
* TConditional class.
*
* TConditional displays appropriate content based on the evaluation result
* of a PHP expression specified via {@link setCondition Condition}.
* If the result is true, it instantiates the template {@link getTrueTemplate TrueTemplate};
* otherwise, the template {@link getFalseTemplate FalseTemplate} is instantiated.
* The PHP expression is evaluated right before {@link onInit} stage of the control lifecycle.
*
* Since {@link setCondition Condition} is evaluated at a very early stage, it is recommended
* you set {@link setCondition Condition} in template and the expression should not refer to
* objects that are available on or after {@link onInit} lifecycle.
*
* A typical usage of TConditional is shown as following:
* <code>
* <com:TConditional Condition="$this->User->IsGuest">
* <prop:TrueTemplate>
* <a href="path/to/login">Login</a>
* </prop:TrueTemplate>
* <prop:FalseTemplate>
* <a href="path/to/logout">Logout</a>
* </prop:FalseTemplate>
* </com:TConditional>
* </code>
*
* TConditional is very light. It instantiates either {@link getTrueTemplate TrueTemplate}
* or {@link getFalseTemplate FalseTemplate}, but never both. And the condition is evaluated only once.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
class TConditional extends TControl
{
private $_condition='true';
private $_trueTemplate;
private $_falseTemplate;
private $_creatingChildren=false;
/**
* Processes an object that is created during parsing template.
* This method overrides the parent implementation by removing
* all contents enclosed in the template tag.
* @param string|TComponent text string or component parsed and instantiated in template
* @see createdOnTemplate
*/
public function addParsedObject($object)
{
if($this->_creatingChildren)
parent::addParsedObject($object);
}
/**
* Creates child controls.
* This method overrides the parent implementation. It evaluates {@link getCondition Condition}
* and instantiate the corresponding template.
*/
public function createChildControls()
{
$this->_creatingChildren=true;
$result=true;
try
{
$result=$this->getTemplateControl()->evaluateExpression($this->_condition);
}
catch(Exception $e)
{
throw new TInvalidDataValueException('conditional_condition_invalid',$this->_condition,$e->getMessage());
}
if($result)
{
if($this->_trueTemplate)
$this->_trueTemplate->instantiateIn($this->getTemplateControl(),$this);
}
else if($this->_falseTemplate)
$this->_falseTemplate->instantiateIn($this->getTemplateControl(),$this);
$this->_creatingChildren=false;
}
/**
* @return string the PHP expression used for determining which template to use. Defaults to 'true', meaning using TrueTemplate.
*/
public function getCondition()
{
return $this->_condition;
}
/**
* Sets the PHP expression to be evaluated for conditionally displaying content.
* The context of the expression is the template control containing TConditional.
* @param string the PHP expression used for determining which template to use.
*/
public function setCondition($value)
{
$this->_condition=TPropertyValue::ensureString($value);
}
/**
* @return ITemplate the template applied when {@link getCondition Condition} is true.
*/
public function getTrueTemplate()
{
return $this->_trueTemplate;
}
/**
* @param ITemplate the template applied when {@link getCondition Condition} is true.
*/
public function setTrueTemplate(ITemplate $value)
{
$this->_trueTemplate=$value;
}
/**
* @return ITemplate the template applied when {@link getCondition Condition} is false.
*/
public function getFalseTemplate()
{
return $this->_falseTemplate;
}
/**
* @param ITemplate the template applied when {@link getCondition Condition} is false.
*/
public function setFalseTemplate(ITemplate $value)
{
$this->_falseTemplate=$value;
}
}