2009-11-06 14:35:00 +00:00
< ? php
/**
* Smarty Internal Plugin Compile If
*
* Compiles the { if } { else } { elseif } { / if } tags
*
* @ package Smarty
* @ subpackage Compiler
* @ author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile If Class
*/
class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase {
/**
* Compiles code for the { if } tag
*
* @ param array $args array with attributes from parser
* @ param object $compiler compiler object
* @ return string compiled code
*/
public function compile ( $args , $compiler )
{
$this -> compiler = $compiler ;
$this -> required_attributes = array ( 'if condition' );
// check and get attributes
$_attr = $this -> _get_attributes ( $args );
$this -> _open_tag ( 'if' , array ( 1 , $compiler -> tag_nocache ));
if ( is_array ( $args [ 'if condition' ])) {
$_output = " <?php if (!isset( \$ _smarty_tpl->tpl_vars[ " . $args [ 'if condition' ][ 'var' ] . " ])) \$ _smarty_tpl->tpl_vars[ " . $args [ 'if condition' ][ 'var' ] . " ] = new Smarty_Variable; " ;
$_output .= " if ( \$ _smarty_tpl->tpl_vars[ " . $args [ 'if condition' ][ 'var' ] . " ]->value = " . $args [ 'if condition' ][ 'value' ] . " ) { ?> " ;
return $_output ;
} else {
2010-01-11 17:58:10 +00:00
return " <?php if ( { $args [ 'if condition' ] } ) { ?> \n " ;
2009-11-06 14:35:00 +00:00
}
}
}
/**
* Smarty Internal Plugin Compile Else Class
*/
class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase {
/**
* Compiles code for the { else } tag
*
* @ param array $args array with attributes from parser
* @ param object $compiler compiler object
* @ return string compiled code
*/
public function compile ( $args , $compiler )
{
$this -> compiler = $compiler ;
list ( $nesting , $compiler -> tag_nocache ) = $this -> _close_tag ( array ( 'if' , 'elseif' ));
$this -> _open_tag ( 'else' , array ( $nesting , $compiler -> tag_nocache ));
2010-01-11 17:58:10 +00:00
return " <?php }else { ?> \n " ;
2009-11-06 14:35:00 +00:00
}
}
/**
* Smarty Internal Plugin Compile ElseIf Class
*/
class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase {
/**
* Compiles code for the { elseif } tag
*
* @ param array $args array with attributes from parser
* @ param object $compiler compiler object
* @ return string compiled code
*/
public function compile ( $args , $compiler )
{
$this -> compiler = $compiler ;
$this -> required_attributes = array ( 'if condition' );
// check and get attributes
$_attr = $this -> _get_attributes ( $args );
list ( $nesting , $compiler -> tag_nocache ) = $this -> _close_tag ( array ( 'if' , 'elseif' ));
if ( empty ( $this -> compiler -> prefix_code )) {
$this -> _open_tag ( 'elseif' , array ( $nesting , $compiler -> tag_nocache ));
2010-01-11 17:58:10 +00:00
return " <?php }elseif( { $args [ 'if condition' ] } ) { ?> \n " ;
2009-11-06 14:35:00 +00:00
} else {
$tmp = '' ;
foreach ( $this -> compiler -> prefix_code as $code ) $tmp .= $code ;
$this -> compiler -> prefix_code = array ();
$this -> _open_tag ( 'elseif' , array ( $nesting + 1 , $compiler -> tag_nocache ));
2010-01-11 17:58:10 +00:00
return " <?php }else { ?> { $tmp } <?php if ( { $args [ 'if condition' ] } ) { ?> \n " ;
2009-11-06 14:35:00 +00:00
}
}
}
/**
* Smarty Internal Plugin Compile Ifclose Class
*/
class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase {
/**
* Compiles code for the { / if } tag
*
* @ param array $args array with attributes from parser
* @ param object $compiler compiler object
* @ return string compiled code
*/
public function compile ( $args , $compiler )
{
$this -> compiler = $compiler ;
list ( $nesting , $compiler -> tag_nocache ) = $this -> _close_tag ( array ( 'if' , 'else' , 'elseif' ));
$tmp = '' ;
for ( $i = 0 ; $i < $nesting ; $i ++ ) $tmp .= '}' ;
2010-01-11 17:58:10 +00:00
return " <?php { $tmp } ?> \n " ;
2009-11-06 14:35:00 +00:00
}
}
?>