Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F1044953
smarty_internal_compile_break.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
smarty_internal_compile_break.php
View Options
<?php
/**
* Smarty Internal Plugin Compile Break
*
* Compiles the {break} tag
*
* @package Smarty
* @subpackage Compiler
* @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Break Class
*
* @package Smarty
* @subpackage Compiler
*/
class
Smarty_Internal_Compile_Break
extends
Smarty_Internal_CompileBase
{
/**
* Attribute definition: Overwrites base class.
*
* @var array
* @see Smarty_Internal_CompileBase
*/
public
$optional_attributes
=
array
(
'levels'
);
/**
* Attribute definition: Overwrites base class.
*
* @var array
* @see Smarty_Internal_CompileBase
*/
public
$shorttag_order
=
array
(
'levels'
);
/**
* Compiles code for the {break} tag
*
* @param array $args array with attributes from parser
* @param object $compiler compiler object
* @param array $parameter array with compilation parameter
* @return string compiled code
*/
public
function
compile
(
$args
,
$compiler
,
$parameter
)
{
static
$_is_loopy
=
array
(
'for'
=>
true
,
'foreach'
=>
true
,
'while'
=>
true
,
'section'
=>
true
);
// check and get attributes
$_attr
=
$this
->
getAttributes
(
$compiler
,
$args
);
if
(
$_attr
[
'nocache'
]
===
true
)
{
$compiler
->
trigger_template_error
(
'nocache option not allowed'
,
$compiler
->
lex
->
taglineno
);
}
if
(
isset
(
$_attr
[
'levels'
]))
{
if
(!
is_numeric
(
$_attr
[
'levels'
]))
{
$compiler
->
trigger_template_error
(
'level attribute must be a numeric constant'
,
$compiler
->
lex
->
taglineno
);
}
$_levels
=
$_attr
[
'levels'
];
}
else
{
$_levels
=
1
;
}
$level_count
=
$_levels
;
$stack_count
=
count
(
$compiler
->
_tag_stack
)
-
1
;
while
(
$level_count
>
0
&&
$stack_count
>=
0
)
{
if
(
isset
(
$_is_loopy
[
$compiler
->
_tag_stack
[
$stack_count
][
0
]]))
{
$level_count
--;
}
$stack_count
--;
}
if
(
$level_count
!=
0
)
{
$compiler
->
trigger_template_error
(
"cannot break {$_levels} level(s)"
,
$compiler
->
lex
->
taglineno
);
}
$compiler
->
has_code
=
true
;
return
"<?php break {$_levels}?>"
;
}
}
?>
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Fri, May 16, 18:35 (20 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25434
Default Alt Text
smarty_internal_compile_break.php (2 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment