compiler = $compiler; if (isset($args['from'])) { // {for $var in $array} syntax $this->required_attributes = array('from', 'item'); // check and get attributes $_attr = $this->_get_attributes($args); $this->_open_tag('forarray'); $from = $_attr['from']; $item = $_attr['item']; $output = "tpl_vars[$item] = new Smarty_Variable;\n"; $output .= " \$_from = $from; if (!is_array(\$_from) && !is_object(\$_from)) { settype(\$_from, 'array');}\n"; $output .= " \$_smarty_tpl->tpl_vars[$item]->total=count(\$_from);\n"; $output .= " \$_smarty_tpl->tpl_vars[$item]->iteration=0;\n"; $output .= " \$_smarty_tpl->tpl_vars[$item]->index=-1;\n"; $output .= "if (\$_smarty_tpl->tpl_vars[$item]->total > 0){\n"; $output .= " foreach (\$_from as \$_smarty_tpl->tpl_vars[$item]->key => \$_smarty_tpl->tpl_vars[$item]->value){\n"; $output .= " \$_smarty_tpl->tpl_vars[$item]->first = \$_smarty_tpl->tpl_vars[$item]->iteration === 0;\n"; $output .= " \$_smarty_tpl->tpl_vars[$item]->iteration++;\n"; $output .= " \$_smarty_tpl->tpl_vars[$item]->index++;\n"; $output .= " \$_smarty_tpl->tpl_vars[$item]->last = \$_smarty_tpl->tpl_vars[$item]->iteration === \$_smarty_tpl->tpl_vars[$item]->total;\n"; $output .= "?>"; // return compiled code return $output; } else { // {for $x=0; $x<$y; $x++} syntax $this->required_attributes = array('ifexp', 'start', 'loop', 'varloop'); // check and get attributes $_attr = $this->_get_attributes($args); $this->_open_tag('for'); $output = "tpl_vars[$_statement[var]] = new Smarty_Variable;"; $output .= " \$_smarty_tpl->tpl_vars[$_statement[var]]->value = $_statement[value];\n"; } $output .= " if ($_attr[ifexp]){ for (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$_attr[varloop]]->value$_attr[loop]){\n"; $output .= "?>"; // return compiled code return $output; } } } ?>