List Info

Thread: code cleanup




code cleanup
user name
2007-05-29 06:16:21
Attached there is a patch mostly of coding style cleanup.

I had to go through Smarty code for implementing a compiler
plugin, so it was a good chance to clean up the coding
style. You should be more strict about that!

The patch should be audited before commit. It contains no
semantic changes with the following exceptions:

Smarty.class.php, get_template_vars():
  changed phpdoc return type to "mixed" (you
should change it elsewhere as well)

Smart_Compiler.class.php, _compile_tag(): 
  splitted "strip" and "/strip"
handling, i'm not 100% about correctness of this change.

Smart_Compiler.class.php, _smarty_sort_length():
  changed return type

if you want to reproduce this diff, change all
"if(" with "if (" and "else
if" with "elseif", trim trailing spaces, and
fix indentation where needed.

Regards

-- 
Giovanni Giacobbi

-- 
Smarty Development Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub
.php
  
Re: code cleanup
user name
2007-05-29 10:50:17
Hi.

You didn't mention exactly what your cleanup goals were. If
it was consistency,
you may have chose the existing prevalent style, but I
suppose you intended to
enforce a new style. FWIW, I'm not against style changes
that differentiate
keywords from invocations ie: if ($foo) instead of if($foo)
and foo($bar)
instead of foo ($bar). I don't care for putting whitespace
around the
assignment in function/method declarations ie: I personally
prefer function
foo($bar=0) rather than function foo($bar = 0). I noticed
too that you added
some docblocks but also that you modified (extended) the
length of some
existing comments. Aside from some trivial whitespacing, I
couldn't notice any
other changes in your patch. Did I miss any?

I should say that it is a pity that you mixed formatting
changes with semantic
actual code changes, particularly for a patch this size. You
might consider
reposting as separate patches as I don't think it is
appropriate otherwise.

Thanks,
boots

--- Giovanni Giacobbi <giovannigiacobbi.net> wrote:

> 
> Attached there is a patch mostly of coding style
cleanup.
> 
> I had to go through Smarty code for implementing a
compiler plugin, so it was
> a good chance to clean up the coding style. You should
be more strict about
> that!
> 
> The patch should be audited before commit. It contains
no semantic changes
> with the following exceptions:
> 
> Smarty.class.php, get_template_vars():
>   changed phpdoc return type to "mixed" (you
should change it elsewhere as
> well)
> 
> Smart_Compiler.class.php, _compile_tag(): 
>   splitted "strip" and "/strip"
handling, i'm not 100% about correctness of
> this change.
> 
> Smart_Compiler.class.php, _smarty_sort_length():
>   changed return type
> 
> if you want to reproduce this diff, change all
"if(" with "if (" and "else
> if" with "elseif", trim trailing spaces,
and fix indentation where needed.
> 
> Regards
> 
> -- 
> Giovanni Giacobbi
> > ? smarty-cvs-cleanup.patch
> --- Smarty.class.php	8 Mar 2007 19:11:22 -0000	1.529
> +++ Smarty.class.php	29 May 2007 10:47:10 -0000
>  -35,7 +35,7 
>  /**
>   * DIR_SEP isn't used anymore, but third party apps
might
>   */
> -if(!defined('DIR_SEP')) {
> +if (!defined('DIR_SEP')) {
>      define('DIR_SEP', DIRECTORY_SEPARATOR);
>  }
>  
>  -562,6 +562,7 
>      var $_cache_including = false;
>  
>      /**#-*/
> +
>      /**
>       * The class constructor.
>       */
>  -615,10 +616,10 
>              // $tpl_var is an array, ignore $value
>              foreach ($tpl_var as $_key => $_val) {
>                  if ($_key != '') {
> -                    if(!is_array($this->_tpl_vars[$_key])) {
> +                    if (!is_array($this->_tpl_vars[$_key])) {
>                         
settype($this->_tpl_vars[$_key],'array');
>                      }
> -                    if($merge &&
is_array($_val)) {
> +                    if ($merge &&
is_array($_val)) {
>                          foreach($_val as $_mkey =>
$_mval) {
>                             
$this->_tpl_vars[$_key][$_mkey] = $_mval;
>                          }
>  -629,10 +630,10 
>              }
>          } else {
>              if ($tpl_var != '' &&
isset($value)) {
> -                if(!is_array($this->_tpl_vars[$tpl_var])) {
> +                if (!is_array($this->_tpl_vars[$tpl_var])) {
>                     
settype($this->_tpl_vars[$tpl_var],'array');
>                  }
> -                if($merge && is_array($value))
{
> +                if ($merge &&
is_array($value)) {
>                      foreach($value as $_mkey =>
$_mval) {
>                         
$this->_tpl_vars[$tpl_var][$_mkey] = $_mval;
>                      }
>  -652,7 +653,7 
>      function append_by_ref($tpl_var, &$value,
$merge=false)
>      {
>          if ($tpl_var != '' && isset($value))
{
> -            if(!is_array($this->_tpl_vars[$tpl_var]))
{
> +            if (!is_array($this->_tpl_vars[$tpl_var]))
{
>              
settype($this->_tpl_vars[$tpl_var],'array');
>              }
>              if ($merge && is_array($value)) {
>  -665,7 +666,6 
>          }
>      }
>  
> -
>      /**
>       * clear the given assigned template variable.
>       *
>  -680,7 +680,6 
>              unset($this->_tpl_vars[$tpl_var]);
>      }
>  
> -
>      /**
>       * Registers custom function to be used in
templates
>       *
>  -960,7 +959,6 
>  
>      }
>  
> -
>      /**
>       * clear the entire contents of cache (all
templates)
>       *
>  -972,7 +970,6 
>          return $this->clear_cache(null, null, null,
$exp_time);
>      }
>  
> -
>      /**
>       * test to see if valid cache exists for this
template
>       *
>  -998,7 +995,6 
>          return smarty_core_read_cache_file($_params,
$this);
>      }
>  
> -
>      /**
>       * clear all the assigned template variables.
>       *
>  -1049,18 +1045,18 
>       *
>       * param string $name
>       * param string $type
> -     * return array
> +     * return mixed
>       */
> -    function &get_template_vars($name=null)
> +    function &get_template_vars($name = null)
>      {
> -        if(!isset($name)) {
> +        if (!isset($name)) {
>              return $this->_tpl_vars;
> -        } elseif(isset($this->_tpl_vars[$name])) {
> +        } elseif (isset($this->_tpl_vars[$name]))
{
>              return $this->_tpl_vars[$name];
>          } else {
>              // var non-existant, return valid
reference
>              $_tmp = null;
> -            return $_tmp;   
> +            return $_tmp;
>          }
>      }
>  
>  -1071,11 +1067,11 
>       * param string $type
>       * return array
>       */
> -    function &get_config_vars($name=null)
> +    function &get_config_vars($name = null)
>      {
> -        if(!isset($name) &&
is_array($this->_config[0])) {
> +        if (!isset($name) &&
is_array($this->_config[0])) {
>              return $this->_config[0]['vars'];
> -        } else
if(isset($this->_config[0]['vars'][$name])) {
> +        } elseif
(isset($this->_config[0]['vars'][$name])) {
>              return
$this->_config[0]['vars'][$name];
>          } else {
>              // var non-existant, return valid
reference
>  -1095,7 +1091,6 
>          trigger_error("Smarty error:
$error_msg", $error_type);
>      }
>  
> -
>      /**
>       * executes & displays the template results
>       *
>  -1119,7 +1114,7 
>      function fetch($resource_name, $cache_id = null,
$compile_id = null,
> $display = false)
>      {
>          static $_cache_info = array();
> -        
> +
>          $_smarty_old_error_level = $this->debugging
? error_reporting() :
> error_reporting(isset($this->error_reporting)
>                 ? $this->error_reporting :
error_reporting() & ~E_NOTICE);
>  
>  -1347,7 +1342,7 
>       */
>      function clear_config($var = null)
>      {
> -        if(!isset($var)) {
> +        if (!isset($var)) {
>              // clear all values
>              $this->_config = array(array('vars' 
=> array(),
>                                           'files' =>
array()));
>  -1370,7 +1365,7 
>          return
smarty_core_assemble_plugin_filepath($_params, $this);
>      }
>  
> -   /**
> +    /**
>       * test if resource needs compiling
>       *
>       * param string $resource_name
>  -1403,7 +1398,7 
>          }
>      }
>  
> -   /**
> +    /**
>       * compile the template
>       *
>       * param string $resource_name
>  -1439,7 +1434,7 
>  
>      }
>  
> -   /**
> +    /**
>       * compile the given source
>       *
>       * param string $resource_name
>  -1529,11 +1524,10 
>       * param boolean $quiet
>       * return boolean
>       */
> -
>      function _fetch_resource_info(&$params)
>      {
> -        if(!isset($params['get_source'])) {
$params['get_source'] = true; }
> -        if(!isset($params['quiet'])) {
$params['quiet'] = false; }
> +        if (!isset($params['get_source'])) {
$params['get_source'] = true; }
> +        if (!isset($params['quiet'])) {
$params['quiet'] = false; }
>  
>          $_return = false;
>          $_params = array('resource_name' =>
$params['resource_name']) ;
>  -1590,7 +1584,7 
>              if (!$params['quiet']) {
>                  $this->trigger_error('unable to
read resource: "' .
> $params['resource_name'] . '"');
>              }
> -        } else if ($_return &&
$this->security) {
> +        } elseif ($_return &&
$this->security) {
>              require_once(SMARTY_CORE_DIR .
'core.is_secure.php');
>              if (!smarty_core_is_secure($_params,
$this)) {
>                  if (!$params['quiet'])
>  -1603,7 +1597,6 
>          return $_return;
>      }
>  
> -
>      /**
>       * parse out the type and name from the resource
>       *
>  -1613,7 +1606,6 
>       * param string $resource_name
>       * return boolean
>       */
> -
>      function _parse_resource_name(&$params)
>      {
>  
>  -1625,7 +1617,7 
>              $params['resource_type'] =
$this->default_resource_type;
>              $params['resource_name'] =
$_resource_name_parts[0];
>          } else {
> -            if(strlen($_resource_name_parts[0]) == 1)
{
> +            if (strlen($_resource_name_parts[0]) == 1)
{
>                  // 1 char is not resource type, but
part of filepath
>                  $params['resource_type'] =
$this->default_resource_type;
>                  $params['resource_name'] =
$params['resource_name'];
>  -1648,7 +1640,7 
>                      // didn't find the file, try
include_path
>                      $_params = array('file_path' =>
$_fullpath);
>                      require_once(SMARTY_CORE_DIR .
> 'core.get_include_path.php');
> -                   
if(smarty_core_get_include_path($_params, $this)) {
> +                    if
(smarty_core_get_include_path($_params, $this)) {
>                          $params['resource_name'] =
> $_params['new_file_path'];
>                          return true;
>                      }
>  -1667,7 +1659,6 
>          return true;
>      }
>  
> -
>      /**
>       * Handle modifiers
>       *
>  -1741,14 +1732,14 
>          $_compile_dir_sep =  $this->use_sub_dirs ?
DIRECTORY_SEPARATOR :
> '^';
>          $_return = $auto_base . DIRECTORY_SEPARATOR;
>  
> -        if(isset($auto_id)) {
> +        if (isset($auto_id)) {
>              // make auto_id safe for directory names
>              $auto_id =
>
str_replace('%7C',$_compile_dir_sep,(urlencode($auto_id)));
>              // split into separate directories
>              $_return .= $auto_id . $_compile_dir_sep;
>          }
>  
> -        if(isset($auto_source)) {
> +        if (isset($auto_source)) {
>              // make source name safe for filename
>              $_filename =
urlencode(basename($auto_source));
>              $_crc32 = sprintf('%08X',
crc32($auto_source));
>  -1770,8 +1761,8 
>       */
>      function _unlink($resource, $exp_time = null)
>      {
> -        if(isset($exp_time)) {
> -            if(time() - filemtime($resource) >=
$exp_time) {
> +        if (isset($exp_time)) {
> +            if (time() - filemtime($resource) >=
$exp_time) {
>                  return unlink($resource);
>              }
>          } else {
>  -1789,7 +1780,7 
>      function _get_auto_id($cache_id=null,
$compile_id=null) {
>      if (isset($cache_id))
>          return (isset($compile_id)) ? $cache_id . '|'
. $compile_id  :
> $cache_id;
> -    elseif(isset($compile_id))
> +    elseif (isset($compile_id))
>          return $compile_id;
>      else
>          return null;
>  -1808,7 +1799,7 
>      function _trigger_fatal_error($error_msg,
$tpl_file = null, $tpl_line =
> null,
>              $file = null, $line = null, $error_type =
E_USER_ERROR)
>      {
> -        if(isset($file) && isset($line)) {
> +        if (isset($file) && isset($line)) {
>              $info = ' ('.basename($file).", line
$line)";
>          } else {
>              $info = '';
> --- Smarty_Compiler.class.php	11 May 2007 13:45:36
-0000	1.397
> +++ Smarty_Compiler.class.php	29 May 2007 10:47:11
-0000
>  -162,7 +162,7 
>                  . '(?:s*,s*' .
$this->_obj_single_param_regexp . ')*)?)';
>          $this->_obj_start_regexp = '(?:' .
$this->_dvar_regexp . '(?:' .
> $this->_obj_ext_regexp . ')+)';
>          $this->_obj_call_regexp = '(?:' .
$this->_obj_start_regexp . '(?:' .
> $this->_obj_params_regexp . ')?(?:' .
$this->_dvar_math_regexp . '(?:' .
> $this->_num_const_regexp . '|' .
$this->_dvar_math_var_regexp . ')*)?)';
> -        
> +
>          // matches valid modifier syntax:
>          // |foo
>          // |foo
>  -257,7 +257,7 
>          /* fetch all special blocks */
>          $search =
>
"~{$ldq}*(.*?)*{$rdq}|{$ldq}s*literals*{$rdq}(.*?){
$ldq}s*/literals*{$rdq}|{$ldq}s*phps*{$rdq}(.*?){$ldq}s
*/phps*{$rdq}~s";
>  
> -        preg_match_all($search, $source_content,
$match,  PREG_SET_ORDER);
> +        preg_match_all($search, $source_content,
$match, PREG_SET_ORDER);
>          $this->_folded_blocks = $match;
>          reset($this->_folded_blocks);
>  
>  -290,10 +290,10 
>                      if ($this->php_handling ==
SMARTY_PHP_PASSTHRU) {
>                          /* echo php contents */
>                          $text_blocks[$curr_tb] =
> str_replace('%%%SMARTYSP'.$curr_sp.'%%%', '<?php
echo ''.str_replace("'",
> "'", $sp_match[1][$curr_sp]).'';
?>'."n", $text_blocks[$curr_tb]);
> -                    } else if ($this->php_handling
== SMARTY_PHP_QUOTE) {
> +                    } elseif ($this->php_handling
== SMARTY_PHP_QUOTE) {
>                          /* quote php tags */
>                          $text_blocks[$curr_tb] =
> str_replace('%%%SMARTYSP'.$curr_sp.'%%%',
> htmlspecialchars($sp_match[1][$curr_sp]),
$text_blocks[$curr_tb]);
> -                    } else if ($this->php_handling
== SMARTY_PHP_REMOVE) {
> +                    } elseif ($this->php_handling
== SMARTY_PHP_REMOVE) {
>                          /* remove php tags */
>                          $text_blocks[$curr_tb] =
> str_replace('%%%SMARTYSP'.$curr_sp.'%%%', '',
$text_blocks[$curr_tb]);
>                      } else {
>  -304,7 +304,7 
>                  }
>              }
>          }
> -        
> +
>          /* Compile the template tags into PHP code.
*/
>          $compiled_tags = array();
>          for ($i = 0, $for_max = count($template_tags);
$i < $for_max; $i++)
> {
>  -312,7 +312,9 
>              $compiled_tags[] =
$this->_compile_tag($template_tags[$i]);
>              $this->_current_line_no +=
substr_count($template_tags[$i],
> "n");
>          }
> -        if (count($this->_tag_stack)>0) {
> +
> +        /* Stack must now be empty after processing
*/
> +        if (count($this->_tag_stack) > 0) {
>              list($_open_tag, $_line_no) =
end($this->_tag_stack);
>              $this->_syntax_error("unclosed tag
{$_open_tag} (opened line
> $_line_no).", E_USER_ERROR, __FILE__, __LINE__);
>              return;
>  -349,9 +351,9 
>              }
>          }
>          $compiled_content = '';
> -        
> +
>          $tag_guard = '%%%SMARTYOTG' .
md5(uniqid(rand(), true)) . '%%%';
> -        
> +
>          /* Interleave the compiled contents and text
blocks to get the final
> result. */
>          for ($i = 0, $for_max = count($compiled_tags);
$i < $for_max; $i++)
> {
>              if ($compiled_tags[$i] == '') {
>  -361,7 +363,7 
>              // replace legit PHP tags with
placeholder
>              $text_blocks[$i] = str_replace('<?',
$tag_guard,
> $text_blocks[$i]);
>              $compiled_tags[$i] = str_replace('<?',
$tag_guard,
> $compiled_tags[$i]);
> -            
> +
>              $compiled_content .= $text_blocks[$i] .
$compiled_tags[$i];
>          }
>          $compiled_content .= str_replace('<?',
$tag_guard,
> $text_blocks[$i]);
>  -372,7 +374,7 
>  
>          // recover legit tags
>          $compiled_content = str_replace($tag_guard,
'<?',
> $compiled_content); 
> -        
> +
>          // remove n from the end of the file, if any
>          if (strlen($compiled_content) &&
(substr($compiled_content, -1) ==
> "n") ) {
>              $compiled_content =
substr($compiled_content, 0, -1);
>  -437,15 +439,15 
>          /* Matched comment. */
>          if (substr($template_tag, 0, 1) == '*'
&& substr($template_tag, -1)
> == '*')
>              return '';
> -        
> +
>          /* Split tag into two three parts: command,
command modifiers and
> the arguments. */
> -        if(! preg_match('~^(?:(' .
$this->_num_const_regexp . '|' .
> $this->_obj_call_regexp . '|' .
$this->_var_regexp
> +        if (!preg_match('~^(?:(' .
$this->_num_const_regexp . '|' .
> $this->_obj_call_regexp . '|' .
$this->_var_regexp
>                  . '|/?' . $this->_reg_obj_regexp .
'|/?' .
> $this->_func_regexp . ')(' . $this->_mod_regexp .
'*))
>                        (?:s+(.*))?$
>                      ~xs', $template_tag, $match)) {
>              $this->_syntax_error("unrecognized
tag: $template_tag",
> E_USER_ERROR, __FILE__, __LINE__);
>          }
> -        
> +
>          $tag_command = $match[1];
>          $tag_modifier = isset($match[2]) ? $match[2] :
null;
>          $tag_args = isset($match[3]) ? $match[3] :
null;
>  -511,7 +513,6 
>              case 'sectionelse':
>                  $this->_push_tag('sectionelse');
>                  return "<?php endfor; else:
?>";
> -                break;
>  
>              case '/section':
>                  $_open_tag =
$this->_pop_tag('section');
>  -523,7 +524,6 
>              case 'foreach':
>                  $this->_push_tag('foreach');
>                  return
$this->_compile_foreach_start($tag_args);
> -                break;
>  
>              case 'foreachelse':
>                  $this->_push_tag('foreachelse');
>  -535,22 +535,20 
>                      return "<?php endif;
unset($_from); ?>";
>                  else
>                      return "<?php endforeach;
endif; unset($_from); ?>";
> -                break;
>  
>              case 'strip':
> +                $this->_push_tag('strip');
> +                if ($this->_strip_depth++ == 0) {
/* outermost opening
>  */
> +                    $this->_additional_newline =
"";
> +                    return '';
> +                }
> +                return '';
> +
>              case '/strip':
> -                if (substr($tag_command, 0, 1)=='/')
{
> -                    $this->_pop_tag('strip');
> -                    if (--$this->_strip_depth==0) {
/* outermost closing
> {/strip} */
> -                        $this->_additional_newline
= "n";
> -                        return '{' . $tag_command .
'}';
> -                    }
> -                } else {
> -                    $this->_push_tag('strip');
> -                    if ($this->_strip_depth++==0) {
/* outermost opening
>  */
> -                        $this->_additional_newline
= "";
> -                        return '{' . $tag_command .
'}';
> -                    }
> +                $this->_pop_tag('strip');
> +                if (--$this->_strip_depth == 0) {
/* outermost closing
> {/strip} */
> +                    $this->_additional_newline =
"n";
> +                    return '{/strip}';
>                  }
>                  return '';
>  
>  -582,10 +580,10 
>              default:
>                  if
($this->_compile_compiler_tag($tag_command, $tag_args,
> $output)) {
>                      return $output;
> -                } else if
($this->_compile_block_tag($tag_command,
> $tag_args, $tag_modifier, $output)) {
> +                } elseif
($this->_compile_block_tag($tag_command, $tag_args,
> $tag_modifier, $output)) {
> +                    return $output;
> +                } elseif
($this->_compile_custom_tag($tag_command,
> $tag_args, $tag_modifier, $output)) {
>                      return $output;
> -                } else if
($this->_compile_custom_tag($tag_command,
> $tag_args, $tag_modifier, $output)) {
> -                    return $output;                   

>                  } else {
>                     
$this->_syntax_error("unrecognized tag
'$tag_command'",
> E_USER_ERROR, __FILE__, __LINE__);
>                  }
>  -593,7 +591,6 
>          }
>      }
>  
> -
>      /**
>       * compile the custom compiler tag
>       *
>  -624,7 +621,7 
>           * Otherwise we need to load plugin file and
look for the function
>           * inside it.
>           */
> -        else if ($plugin_file =
$this->_get_plugin_filepath('compiler',
> $tag_command)) {
> +        elseif ($plugin_file =
$this->_get_plugin_filepath('compiler',
> $tag_command)) {
>              $found = true;
>  
>              include_once $plugin_file;
>  -647,10 +644,11 
>          if ($found) {
>              if ($have_function) {
>                  $output =
call_user_func_array($plugin_func,
> array($tag_args, &$this));
> -                if($output != '') {
> -                $output = '<?php ' .
> $this->_push_cacheable_state('compiler',
$tag_command)
> -                                   . $output
> -                                   .
$this->_pop_cacheable_state('compiler',
> $tag_command) . ' ?>';
> +                if ($output != '') {
> +                    $output = '<?php '
> +                        .
$this->_push_cacheable_state('compiler',
> $tag_command)
> +                        . $output
> +                        .
$this->_pop_cacheable_state('compiler',
> $tag_command) . ' ?>';
>                  }
>              } else {
>                  $this->_syntax_error($message,
E_USER_WARNING, __FILE__,
> __LINE__);
>  -661,7 +659,6 
>          }
>      }
>  
> -
>      /**
>       * compile block function tag
>       *
>  -699,7 +696,7 
>           * Otherwise we need to load plugin file and
look for the function
>           * inside it.
>           */
> -        else if ($plugin_file =
$this->_get_plugin_filepath('block',
> $tag_command)) {
> +        elseif ($plugin_file =
$this->_get_plugin_filepath('block',
> $tag_command)) {
>              $found = true;
>  
>              include_once $plugin_file;
>  -710,13 +707,12 
>                  $have_function = false;
>              } else {
>                 
$this->_plugins['block'][$tag_command] =
array($plugin_func,
> null, null, null, true);
> -
>              }
>          }
>  
>          if (!$found) {
>              return false;
> -        } else if (!$have_function) {
> +        } elseif (!$have_function) {
>              $this->_syntax_error($message,
E_USER_WARNING, __FILE__,
> __LINE__);
>              return true;
>          }
>  -739,7 +735,7 
>              $_cache_attrs='';
>              $arg_list =
$this->_compile_arg_list('block', $tag_command,
> $attrs, $_cache_attrs);
>              $output .=
"$_cache_attrs$this->_tag_stack[] =
> array('$tag_command', array(".implode(',',
$arg_list).')); ';
> -            $output .= '$_block_repeat=true;' .
> $this->_compile_plugin_call('block',
>
$tag_command).'($this->_tag_stack[count($this->_tag_st
ack)-1][1], null,
> $this, $_block_repeat);';
> +            $output .= '$_block_repeat=true;' .
> $this->_compile_plugin_call('block', $tag_command)
.
>
'($this->_tag_stack[count($this->_tag_stack)-1][1],
null, $this,
> $_block_repeat);';
>              $output .= 'while ($_block_repeat) {
ob_start(); ?>';
>          } else {
>              $output = '<?php $_block_content =
ob_get_contents();
> ob_end_clean(); ';
>  -754,7 +750,6 
>          return true;
>      }
>  
> -
>      /**
>       * compile custom function tag
>       *
>  -784,7 +779,7 
>           * Otherwise we need to load plugin file and
look for the function
>           * inside it.
>           */
> -        else if ($plugin_file =
$this->_get_plugin_filepath('function',
> $tag_command)) {
> +        elseif ($plugin_file =
$this->_get_plugin_filepath('function',
> $tag_command)) {
>              $found = true;
>  
>              include_once $plugin_file;
>  -801,7 +796,7 
>  
>          if (!$found) {
>              return false;
> -        } else if (!$have_function) {
> +        } elseif (!$have_function) {
>              $this->_syntax_error($message,
E_USER_WARNING, __FILE__,
> __LINE__);
>              return true;
>          }
>  -816,11 +811,11 
>          $arg_list =
$this->_compile_arg_list('function', $tag_command,
> $attrs, $_cache_attrs);
>  
>          $output =
$this->_compile_plugin_call('function',
> $tag_command).'(array('.implode(',',
$arg_list)."), $this)";
> -        if($tag_modifier != '') {
> +        if ($tag_modifier != '') {
>              $this->_parse_modifiers($output,
$tag_modifier);
>          }
>  
> -        if($output != '') {
> +        if ($output != '') {
>              $output =  '<?php ' . $_cacheable_state
. $_cache_attrs . 'echo
> ' . $output . ';'
>                  .
$this->_pop_cacheable_state('function', $tag_command) .
> "?>" . $this->_additional_newline;
>          }
>  -848,10 +843,10 
>          list($object, $obj_comp) = explode('->',
$tag_command);
>  
>          $arg_list = array();
> -        if(count($attrs)) {
> +        if (count($attrs)) {
>              $_assign_var = false;
>              foreach ($attrs as $arg_name =>
$arg_value) {
> -                if($arg_name == 'assign') {
> +                if ($arg_name == 'assign') {
>                      $_assign_var = $arg_value;
>                      unset($attrs['assign']);
>                      continue;
>  -862,7 +857,7 
>              }
>          }
>  
> -        if($this->_reg_objects[$object][2]) {
> +        if ($this->_reg_objects[$object][2]) {
>              // smarty object argument format
>              $args = "array(".implode(',',
(array)$arg_list)."), $this";
>          } else {
>  -876,13 +871,20 
>          $prefix = '';
>          $postfix = '';
>          $newline = '';
> -       
if(!is_object($this->_reg_objects[$object][0])) {
> -           
$this->_trigger_fatal_error("registered '$object' is
not an
> object" , $this->_current_file,
$this->_current_line_no, __FILE__, __LINE__);
> -        }
elseif(!empty($this->_reg_objects[$object][1])
&&
> !in_array($obj_comp,
$this->_reg_objects[$object][1])) {
> -           
$this->_trigger_fatal_error("'$obj_comp' is not a
registered
> component of object '$object'",
$this->_current_file,
> $this->_current_line_no, __FILE__, __LINE__);
> -        }
elseif(method_exists($this->_reg_objects[$object][0],
$obj_comp))
> {
> +        if
(!is_object($this->_reg_objects[$object][0])) {
> +           
$this->_trigger_fatal_error("registered '$object' is
not an
> object",
> +                                       
$this->_current_file,
> +                                       
$this->_current_line_no,
> +                                        __FILE__,
__LINE__);
> +        } elseif
(!empty($this->_reg_objects[$object][1]) &&
> +                  !in_array($obj_comp,
$this->_reg_objects[$object][1])) {
> +           
$this->_trigger_fatal_error("'$obj_comp' is not a
registered
> component of object '$object'",
> +                                       
$this->_current_file,
> +                                       
$this->_current_line_no,
> +                                        __FILE__,
__LINE__);
> +        } elseif
(method_exists($this->_reg_objects[$object][0],
$obj_comp))
> {
>              // method
> -            if(in_array($obj_comp,
$this->_reg_objects[$object][3])) {
> +            if (in_array($obj_comp,
$this->_reg_objects[$object][3])) {
>                  // block method
>                  if ($start_tag) {
>                      $prefix =
"$this->_tag_stack[] = array('$obj_comp',
> $args); ";
>  -904,12 +906,12 
>              $return =
"$this->_reg_objects['$object'][0]->$obj_comp&qu
ot;;
>          }
>  
> -        if($return != null) {
> -            if($tag_modifier != '') {
> +        if ($return != null) {
> +            if ($tag_modifier != '') {
>                  $this->_parse_modifiers($return,
$tag_modifier);
>              }
>  
> -            if(!empty($_assign_var)) {
> +            if (!empty($_assign_var)) {
>                  $output =
"$this->assign('" .
$this->_dequote($_assign_var)
> ."',  $return);";
>              } else {
>                  $output = 'echo ' . $return . ';';
>  -936,7 +938,7 
>          if (empty($name)) {
>              return
$this->_syntax_error("missing insert name",
E_USER_ERROR,
> __FILE__, __LINE__);
>          }
> -        
> +
>          if (!preg_match('~^w+$~', $name)) {
>              return
$this->_syntax_error("'insert: 'name' must be an
insert
> function name", E_USER_ERROR, __FILE__,
__LINE__);
>          }
>  -979,7 +981,7 
>              if ($arg_name == 'file') {
>                  $include_file = $arg_value;
>                  continue;
> -            } else if ($arg_name == 'assign') {
> +            } elseif ($arg_name == 'assign') {
>                  $assign_var = $arg_value;
>                  continue;
>              }
>  -1032,8 +1034,8 
>  
>          $arg_list = array();
>          foreach($attrs as $arg_name => $arg_value)
{
> -            if($arg_name != 'file' AND $arg_name !=
'once' AND $arg_name !=
> 'assign') {
> -                if(is_bool($arg_value))
> +            if ($arg_name != 'file' AND $arg_name !=
'once' AND $arg_name !=
> 'assign') {
> +                if (is_bool($arg_value))
>                      $arg_value = $arg_value ? 'true' :
'false';
>                  $arg_list[] = "'$arg_name' =>
$arg_value";
>              }
>  -1044,7 +1046,6 
>          return "<?php
require_once(SMARTY_CORE_DIR .
>
'core.smarty_include_php.php');nsmarty_core_smarty_include_
php($_params,
> $this); ?>" . $this->_additional_newline;
>      }
>  
> -
>      /**
>       * Compile {section ...} tag
>       *
>  -1149,7 +1150,6 
>          return $output;
>      }
>  
> -
>      /**
>       * Compile {foreach ...} tag.
>       *
>  -1208,7 +1208,6 
>          return $output;
>      }
>  
> -
>      /**
>       * Compile  .. {/capture} tags
>       *
>  -1216,7 +1215,6 
>       * param string $tag_args
>       * return string
>       */
> -
>      function _compile_capture_tag($start, $tag_args =
'')
>      {
>          $attrs = $this->_parse_attrs($tag_args);
>  -1254,7 +1252,6 
>       */
>      function _compile_if_tag($tag_args, $elseif =
false)
>      {
> -
>          /* Tokenize args for 'if' tag. */
>          preg_match_all('~(?>
>                  ' . $this->_obj_call_regexp . '(?:'
. $this->_mod_regexp .
> '*)? | # valid object call
>  -1266,16 +1263,15 
>  
>          $tokens = $match[0];
>  
> -        if(empty($tokens)) {
> +        if (empty($tokens)) {
>              $_error_msg = $elseif ?
"'elseif'" : "'if'";
>              $_error_msg .= ' statement requires
arguments'; 
>              $this->_syntax_error($_error_msg,
E_USER_ERROR, __FILE__,
> __LINE__);
>          }
> -            
> -                
> +
>          // make sure we have balanced parenthesis
>          $token_count = array_count_values($tokens);
> -        if(isset($token_count['(']) &&
$token_count['('] !=
> $token_count[')']) {
> +        if (isset($token_count['(']) &&
$token_count['('] !=
> $token_count[')']) {
>              $this->_syntax_error("unbalanced
parenthesis in if statement",
> E_USER_ERROR, __FILE__, __LINE__);
>          }
>  
>  -1389,19 +1385,19 
>                      break;
>  
>                  default:
> -                    if(preg_match('~^' .
$this->_func_regexp . '$~', $token)
> ) {
> +                    if (preg_match('~^' .
$this->_func_regexp . '$~',
> $token) ) {
>                              // function call
> -                            if($this->security
&&
> +                            if ($this->security
&&
>                                 !in_array($token,
> $this->security_settings['IF_FUNCS'])) {
>                                 
$this->_syntax_error("(secure mode) '$token'
> not allowed in if statement", E_USER_ERROR,
__FILE__, __LINE__);
>                              }
> -                    } elseif(preg_match('~^' .
$this->_var_regexp . '$~',
> $token) && (strpos('+-*/^%&|',
substr($token, -1)) === false) &&
> isset($tokens[$i+1]) && $tokens[$i+1] == '(')
{
> +                    } elseif (preg_match('~^' .
$this->_var_regexp . '$~',
> $token) && (strpos('+-*/^%&|',
substr($token, -1)) === false) &&
> isset($tokens[$i+1]) && $tokens[$i+1] == '(')
{
>                          // variable function call
>                         
$this->_syntax_error("variable function call
> '$token' not allowed in if statement",
E_USER_ERROR, __FILE__, __LINE__);    
>                  
> -                    } elseif(preg_match('~^' .
$this->_obj_call_regexp . '|'
> . $this->_var_regexp . '(?:' . $this->_mod_regexp
. '*)$~', $token)) {
> +                    } elseif (preg_match('~^' .
$this->_obj_call_regexp .
> '|' . $this->_var_regexp . '(?:' .
$this->_mod_regexp . '*)$~', $token)) {
>                          // object or variable
>                          $token =
$this->_parse_var_props($token);
> -                    } elseif(is_numeric($token)) {
> +                    } elseif (is_numeric($token)) {
>                          // number, skip it
>                      } else {
>                         
$this->_syntax_error("unidentified token
'$token'",
> E_USER_ERROR, __FILE__, __LINE__);
>  -1416,7 +1412,15 
>              return '<?php if ('.implode(' ',
$tokens).'): ?>';
>      }
>  
> -
> +    /**
> +     * compiles an argument list
> +     *
> +     * param string $type
> +     * param string $name
> +     * param string $attrs
> +     * param string $cache_code
> +     * return array
> +     */
>      function _compile_arg_list($type, $name, $attrs,
&$cache_code) {
>          $arg_list = array();
>  
>  -1511,7 +1515,6 
>          return $tokens;
>      }
>  
> -
>      /**
>       * Parse attribute string
>       *
>  -1526,7 +1529,7 
>                           )+ |
>                           [=]
>                          ~x', $tag_args, $match);
> -        $tokens       = $match[0];
> +        $tokens = $match[0];
>  
>          $attrs = array();
>          /* Parse state:
>  -1563,13 +1566,13 
>                             boolean value. */
>                          if
(preg_match('~^(on|yes|true)$~', $token)) {
>                              $token = 'true';
> -                        } else if
(preg_match('~^(off|no|false)$~', $token))
> {
> +                        } elseif
(preg_match('~^(off|no|false)$~', $token))
> {
>                              $token = 'false';
> -                        } else if ($token == 'null')
{
> +                        } elseif ($token == 'null') {
>                              $token = 'null';
> -                        } else if (preg_match('~^' .
> $this->_num_const_regexp . '|0[xX][0-9a-fA-F]+$~',
$token)) {
> +                        } elseif (preg_match('~^' .
$this->_num_const_regexp
> . '|0[xX][0-9a-fA-F]+$~', $token)) {
>                              /* treat integer literally
*/
> -                        } else if (!preg_match('~^' .
> $this->_obj_call_regexp . '|' .
$this->_var_regexp . '(?:' .
> $this->_mod_regexp . ')*$~', $token)) {
> +                        } elseif (!preg_match('~^' .
$this->_obj_call_regexp
> . '|' . $this->_var_regexp . '(?:' .
$this->_mod_regexp . ')*$~', $token)) {
>                              /* treat as a string,
double-quote it escaping
> quotes */
>                              $token =
'"'.addslashes($token).'"';
>                          }
>  -1583,8 +1586,8 
>              $last_token = $token;
>          }
>  
> -        if($state != 0) {
> -            if($state == 1) {
> +        if ($state != 0) {
> +            if ($state == 1) {
>                 
$this->_syntax_error("expecting '=' after attribute
name
> '$last_token'", E_USER_ERROR, __FILE__,
__LINE__);
>              } else {
>                  $this->_syntax_error("missing
attribute value",
> E_USER_ERROR, __FILE__, __LINE__);
>  -1597,21 +1600,19 
>      }
>  
>      /**
> -     * compile multiple variables and section
properties tokens into
> -     * PHP code
> +     * compile multiple variables and section
properties tokens into PHP
> code
>       *
>       * param array $tokens
>       */
>      function _parse_vars_props(&$tokens)
>      {
> -        foreach($tokens as $key => $val) {
> +        foreach ($tokens as $key => $val) {
>              $tokens[$key] =
$this->_parse_var_props($val);
>          }
>      }
>  
>      /**
> -     * compile single variable and section properties
token into
> -     * PHP code
> +     * compile single variable and section properties
token into PHP code
>       *
>       * param string $val
>       * param string $tag_attrs
>  -1621,7 +1622,7 
>      {
>          $val = trim($val);
>  
> -        if(preg_match('~^(' .
$this->_obj_call_regexp . '|' .
> $this->_dvar_regexp . ')(' . $this->_mod_regexp .
'*)$~', $val, $match)) {
> +        if (preg_match('~^(' .
$this->_obj_call_regexp . '|' .
> $this->_dvar_regexp . ')(' . $this->_mod_regexp .
'*)$~', $val, $match)) {
>              // $ variable or object
>              $return =
$this->_parse_var($match[1]);
>              $modifiers = $match[2];
>  -1632,39 +1633,34 
>              $this->_parse_modifiers($return,
$modifiers);
>              return $return;
>          } elseif (preg_match('~^' .
$this->_db_qstr_regexp . '(?:' .
> $this->_mod_regexp . '*)$~', $val)) {
> -                // double quoted text
> -                preg_match('~^(' .
$this->_db_qstr_regexp . ')('.
> $this->_mod_regexp . '*)$~', $val, $match);
> -                $return =
$this->_expand_quoted_text($match[1]);
> -                if($match[2] != '') {
> -                   
$this->_parse_modifiers($return, $match[2]);
> -                }
> -                return $return;
> -            }
> -        elseif(preg_match('~^' .
$this->_num_const_regexp . '(?:' .
> $this->_mod_regexp . '*)$~', $val)) {
> -                // numerical constant
> -                preg_match('~^(' .
$this->_num_const_regexp . ')('.
> $this->_mod_regexp . '*)$~', $val, $match);
> -                if($match[2] != '') {
> -                   
$this->_parse_modifiers($match[1], $match[2]);
> -                    return $match[1];
> -                }
> -            }
> -        elseif(preg_match('~^' .
$this->_si_qstr_regexp . '(?:' .
> $this->_mod_regexp . '*)$~', $val)) {
> -                // single quoted text
> -                preg_match('~^(' .
$this->_si_qstr_regexp . ')('.
> $this->_mod_regexp . '*)$~', $val, $match);
> -                if($match[2] != '') {
> -                   
$this->_parse_modifiers($match[1], $match[2]);
> -                    return $match[1];
> -                }
> -            }
> -        elseif(preg_match('~^' .
$this->_cvar_regexp . '(?:' .
> $this->_mod_regexp . '*)$~', $val)) {
> -                // config var
> -                return
$this->_parse_conf_var($val);
> -            }
> -        elseif(preg_match('~^' .
$this->_svar_regexp . '(?:' .
> $this->_mod_regexp . '*)$~', $val)) {
> -                // section var
> -                return
$this->_parse_section_prop($val);
> +            // double quoted text
> +            preg_match('~^(' .
$this->_db_qstr_regexp . ')('.
> $this->_mod_regexp . '*)$~', $val, $match);
> +            $return =
$this->_expand_quoted_text($match[1]);
> +            if ($match[2] != '') {
> +                $this->_parse_modifiers($return,
$match[2]);
>              }
> -        elseif(!in_array($val,
$this->_permitted_tokens) &&
> !is_numeric($val)) {
> +            return $return;
> +        } elseif (preg_match('~^' .
$this->_num_const_regexp . '(?:' .
> $this->_mod_regexp . '*)$~', $val)) {
> +            // numerical constant
> +            preg_match('~^(' .
$this->_num_const_regexp . ')('.
> $this->_mod_regexp . '*)$~', $val, $match);
> +            if ($match[2] != '') {
> +                $this->_parse_modifiers($match[1],
$match[2]);
> +                return $match[1];
> +            }
> +        } elseif (preg_match('~^' .
$this->_si_qstr_regexp . '(?:' .
> $this->_mod_regexp . '*)$~', $val)) {
> +            // single quoted text
> +            preg_match('~^(' .
$this->_si_qstr_regexp . ')('.
> $this->_mod_regexp . '*)$~', $val, $match);
> +            if ($match[2] != '') {
> +                 $this->_parse_modifiers($match[1],
$match[2]);
> +                 return $match[1];
> +            }
> +        } elseif (preg_match('~^' .
$this->_cvar_regexp . '(?:' .
> $this->_mod_regexp . '*)$~', $val)) {
> +            // config var
> +            return $this->_parse_conf_var($val);
> +        } elseif (preg_match('~^' .
$this->_svar_regexp . '(?:' .
> $this->_mod_regexp . '*)$~', $val)) {
> +            // section var
> +            return
$this->_parse_section_prop($val);
> +        } elseif (!in_array($val,
$this->_permitted_tokens) &&
> !is_numeric($val)) {
>              // literal string
>              return
$this->_expand_quoted_text('"' . strtr($val,
array('\'
> => '\\', '"' => '\"')) .'"');
>          }
>  -1680,7 +1676,7 
>      function _expand_quoted_text($var_expr)
>      {
>          // if contains unescaped $, expand it
> -        if(preg_match_all('~(?:`(?<!\\)$' .
$this->_dvar_guts_regexp .
> '(?:' . $this->_obj_ext_regexp .
> ')*`)|(?:(?<!\\)$w+([[a-zA-Z0-9]+])*)~',
$var_expr, $_match)) {
> +        if (preg_match_all('~(?:`(?<!\\)$' .
$this->_dvar_guts_regexp .
> '(?:' . $this->_obj_ext_regexp .
> ')*`)|(?:(?<!\\)$w+([[a-zA-Z0-9]+])*)~',
$var_expr, $_match)) {
>              $_match = $_match[0];
>              $_replace = array();
>              foreach($_match as $_var) {
>  -1691,8 +1687,10 
>          } else {
>              $_return = $var_expr;
>          }
> +
>          // replace double quoted literal string with
single quotes
>          $_return =
preg_replace('~^"([sw]+)"$~',"'\1'",$
_return);
> +
>          return $_return;
>      }
>  
>  -1708,26 +1706,26 
>          $_has_math = false;
>          $_math_vars =
>
preg_split('~('.$this->_dvar_math_regexp.'|'.$this->_q
str_regexp.')~',
> $var_expr, -1, PREG_SPLIT_DELIM_CAPTURE);
>  
> -        if(count($_math_vars) > 1) {
> +        if (count($_math_vars) > 1) {
>              $_first_var = "";
>              $_complete_var = "";
>              $_output = "";
>              // simple check if there is any math, to
stop recursion (due to
> modifiers with "xx % yy" as parameter)
> -            foreach($_math_vars as $_k =>
$_math_var) {
> +            foreach ($_math_vars as $_k =>
$_math_var) {
>                  $_math_var = $_math_vars[$_k];
>  
> -                if(!empty($_math_var) ||
is_numeric($_math_var)) {
> +                if (!empty($_math_var) ||
is_numeric($_math_var)) {
>                      // hit a math operator, so process
the stuff which came
> before it
> -                    if(preg_match('~^' .
$this->_dvar_math_regexp . '$~',
> $_math_var)) {
> +                    if (preg_match('~^' .
$this->_dvar_math_regexp . '$~',
> $_math_var)) {
>                          $_has_math = true;
> -                        if(!empty($_complete_var) ||
> is_numeric($_complete_var)) {
> +                        if (!empty($_complete_var) ||
> is_numeric($_complete_var)) {
>                              $_output .=
$this->_parse_var($_complete_var);
>                          }
>  
>                          // just output the math
operator to php
>                          $_output .= $_math_var;
>  
> -                        if(empty($_first_var))
> +                        if (empty($_first_var))
>                              $_first_var =
$_complete_var;
>  
>                          $_complete_var =
"";
>  -1736,8 +1734,8 
>                      }
>                  }
>              }
> -            if($_has_math) {
> -                if(!empty($_complete_var) ||
is_numeric($_complete_var))
> +            if ($_has_math) {
> +                if (!empty($_complete_var) ||
is_numeric($_complete_var))
>                      $_output .=
$this->_parse_var($_complete_var);
>  
>                  // get the modifiers working (only the
last var from math +
> modifier is left)
>  -1746,16 +1744,16 
>          }
>  
>          // prevent cutting of first digit in the
number (we _definitly_ got
> a number if the first char is a digit)
> -        if(is_numeric(substr($var_expr, 0, 1)))
> +        if (is_numeric(substr($var_expr, 0, 1)))
>              $_var_ref = $var_expr;
>          else
>              $_var_ref = substr($var_expr, 1);
> -        
> -        if(!$_has_math) {
> -            
> +
> +        if (!$_has_math) {
> +
>              // get [foo] and .foo and ->foo and
(...) pieces
>              preg_match_all('~(?:^w+)|' .
$this->_obj_params_regexp . '|(?:'
> . $this->_var_bracket_regexp .
')|->$?w+|.$?w+|S+~', $_var_ref,
> $match);
> -                        
> +
>              $_indexes = $match[0];
>              $_var_name = array_shift($_indexes);
>  
>  -1772,10 +1770,9 
>                      $_var_name =
substr(array_shift($_indexes), 1);
>                      $_output =
"$this->_smarty_vars['$_var_name']";
>                  }
> -            } elseif(is_numeric($_var_name) &&
is_numeric(substr($var_expr,
> 0, 1))) {
> +            } elseif (is_numeric($_var_name)
&& is_numeric(substr($var_expr,
> 0, 1))) {
>                  // because . is the operator for
accessing arrays thru
> inidizes we need to put it together again for floating
point numbers
> -                if(count($_indexes) > 0)
> -                {
> +                if (count($_indexes) > 0) {
>                      $_var_name .=
implode("", $_indexes);
>                      $_indexes = array();
>                  }
>  -1801,15 +1798,15 
>                          $_var_section_prop =
isset($_var_parts[1]) ?
> $_var_parts[1] : 'index';
>                          $_output .=
>
"[$this->_sections['$_var_section']['$_var_section_
prop']]";
>                      }
> -                } else if (substr($_index, 0, 1) ==
'.') {
> +                } elseif (substr($_index, 0, 1) ==
'.') {
>                      if (substr($_index, 1, 1) == '$')
>                          $_output .=
"[$this->_tpl_vars['" . substr($_index,
> 2) . "']]";
>                      else
>                          $_output .= "['" .
substr($_index, 1) . "']";
> -                } else if (substr($_index,0,2) ==
'->') {
> -                    if(substr($_index,2,2) == '__') {
> +                } elseif (substr($_index,0,2) ==
'->') {
> +                    if (substr($_index,2,2) == '__')
{
>                          $this->_syntax_error('call
to internal object
> members is not allowed', E_USER_ERROR, __FILE__,
__LINE__);
> -                    } elseif($this->security
&& substr($_index, 2, 1) ==
> '_') {
> +                    } elseif ($this->security
&& substr($_index, 2, 1) ==
> '_') {
>                         
$this->_syntax_error('(secure) call to private
> object member is not allowed', E_USER_ERROR, __FILE__,
__LINE__);
>                      } elseif (substr($_index, 2, 1) ==
'$') {
>                          if ($this->security) {
>  -1893,7 +1890,6 
>          return $output;
>      }
>  
> -
>      /**
>       * parse modifier chain into PHP code
>       *
>  -1909,7 +1905,7 
>          for ($_i = 0, $_for_max = count($_modifiers);
$_i < $_for_max;
> $_i++) {
>              $_modifier_name = $_modifiers[$_i];
>  
> -            if($_modifier_name == 'smarty') {
> +            if ($_modifier_name == 'smarty') {
>                  // skip smarty modifier
>                  continue;
>              }
>  -1937,12 +1933,12 
>  
>             
$this->_parse_vars_props($_modifier_args);
>  
> -            if($_modifier_name == 'default') {
> +            if ($_modifier_name == 'default') {
>                  // supress notifications of default
modifier vars and args
> -                if(substr($output, 0, 1) == '$') {
> +                if (substr($output, 0, 1) == '$') {
>                      $output = '' . $output;
>                  }
> -                if(isset($_modifier_args[0])
&& substr($_modifier_args[0],
> 0, 1) == '$') {
> +                if (isset($_modifier_args[0])
&& substr($_modifier_args[0],
> 0, 1) == '$') {
>                      $_modifier_args[0] = '' .
$_modifier_args[0];
>                  }
>              }
>  -1962,7 +1958,6 
>          }
>      }
>  
> -
>      /**
>       * add plugin
>       *
>  -1982,7 +1977,6 
>          }
>      }
>  
> -
>      /**
>       * Compiles references of type $smarty.foo
>       *
>  -2015,7 +2009,7 
>                          array_shift($indexes);
>                          $compiled_ref =
>
"($this->_foreach[$_var]['iteration']-1)";
>                          break;
> -                        
> +
>                      case 'first':
>                          array_shift($indexes);
>                          $compiled_ref =
> "($this->_foreach[$_var]['iteration'] <=
1)";
>  -2025,12 +2019,12 
>                          array_shift($indexes);
>                          $compiled_ref =
> "($this->_foreach[$_var]['iteration'] ==
$this->_foreach[$_var]['total'])";
>                          break;
> -                        
> +
>                      case 'show':
>                          array_shift($indexes);
>                          $compiled_ref =
"($this->_foreach[$_var]['total'] >
> 0)";
>                          break;
> -                        
> +
>                      default:
>                          unset($_max_index);
>                          $compiled_ref =
"$this->_foreach[$_var]";
>  -2121,7 +2115,7 
>              case 'rdelim':
>                  $compiled_ref =
"'$this->right_delimiter'";
>                  break;
> -                
> +
>              default:
>                  $this->_syntax_error('$smarty.' .
$_ref . ' is an unknown
> reference', E_USER_ERROR, __FILE__, __LINE__);
>                  break;
>  -2218,7 +2212,6 
>          $this->_trigger_fatal_error("syntax
error: $error_msg",
> $this->_current_file, $this->_current_line_no,
$file, $line, $error_type);
>      }
>  
> -
>      /**
>       * check if the compilation changes from cacheable
to
>       * non-cacheable state with the beginning of the
current
>  -2236,7 +2229,6 
>          return $_ret;
>      }
>  
> -
>      /**
>       * check if the compilation changes from
non-cacheable to
>       * cacheable state with the end of the current
plugin return
>  -2252,7 +2244,6 
>              . '}'; endif;';
>      }
>  
> -
>      /**
>       * push opening tag-name, file-name and
line-number on the tag-stack
>       * param string the opening tag's name
>  -2299,7 +2290,6 
>          $this->_syntax_error("mismatched tag
{/$close_tag}.$message",
>                               E_USER_ERROR, __FILE__,
__LINE__);
>      }
> -
>  }
>  
>  /**
>  -2308,14 +2298,14 
>   * access private
>   * param string $a
>   * param string $b
> - * return 0|-1|1
> + * return int 0|-1|1
>   */
>  function _smarty_sort_length($a, $b)
>  {
> -    if($a == $b)
> +    if ($a == $b)
>          return 0;
>  
> -    if(strlen($a) == strlen($b))
> +    if (strlen($a) == strlen($b))
>          return ($a > $b) ? -1 : 1;
>  
>      return (strlen($a) > strlen($b)) ? -1 : 1;
> 
> > -- 
> Smarty Development Mailing List (http://smarty.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub
.php



 
____________________________________________________________
________________________
Food fight? Enjoy some healthy debate 
in the Yahoo! Answers Food & Drink Q&A.
http://answers.yahoo.com/dir/?link=list&sid=3965453
67

-- 
Smarty Development Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub
.php


Re: code cleanup
user name
2007-05-29 11:00:59
FWIW: I always tried to follow the rule:

   - whitespace between control-structure-keyword and
condition
   - no whitespace between function/method-name and argument
list

so "if (..." is right and "if(..." is
false.
and "foo(..." is right and "foo (..." is
false.

but I agree that it's not acceptable to mix
whitespace-cleanups with
changes in one huge patch.

and I'm -1 on changing and/or touching  in any way.


On Tue, May 29, 2007 at 08:50:17AM -0700, boots wrote:
> Hi.
> 
> You didn't mention exactly what your cleanup goals
were. If it was consistency,
> you may have chose the existing prevalent style, but I
suppose you intended to
> enforce a new style. FWIW, I'm not against style
changes that differentiate
> keywords from invocations ie: if ($foo) instead of
if($foo) and foo($bar)
> instead of foo ($bar). I don't care for putting
whitespace around the
> assignment in function/method declarations ie: I
personally prefer function
> foo($bar=0) rather than function foo($bar = 0). I
noticed too that you added
> some docblocks but also that you modified (extended)
the length of some
> existing comments. Aside from some trivial
whitespacing, I couldn't notice any
> other changes in your patch. Did I miss any?
> 
> I should say that it is a pity that you mixed
formatting changes with semantic
> actual code changes, particularly for a patch this
size. You might consider
> reposting as separate patches as I don't think it is
appropriate otherwise.
> 
> Thanks,
> boots
> 
> --- Giovanni Giacobbi <giovannigiacobbi.net> wrote:
> 
> > 
> > Attached there is a patch mostly of coding style
cleanup.
> > 
> > I had to go through Smarty code for implementing a
compiler plugin, so it was
> > a good chance to clean up the coding style. You
should be more strict about
> > that!
> > 
> > The patch should be audited before commit. It
contains no semantic changes
> > with the following exceptions:
> > 
> > Smarty.class.php, get_template_vars():
> >   changed phpdoc return type to "mixed"
(you should change it elsewhere as
> > well)
> > 
> > Smart_Compiler.class.php, _compile_tag(): 
> >   splitted "strip" and
"/strip" handling, i'm not 100% about correctness
of
> > this change.
> > 
> > Smart_Compiler.class.php, _smarty_sort_length():
> >   changed return type
> > 
> > if you want to reproduce this diff, change all
"if(" with "if (" and "else
> > if" with "elseif", trim trailing
spaces, and fix indentation where needed.
> > 
> > Regards
> > 
> > -- 
> > Giovanni Giacobbi
> > > ? smarty-cvs-cleanup.patch
> > --- Smarty.class.php	8 Mar 2007 19:11:22
-0000	1.529
> > +++ Smarty.class.php	29 May 2007 10:47:10 -0000
> >  -35,7 +35,7 
> >  /**
> >   * DIR_SEP isn't used anymore, but third party
apps might
> >   */
> > -if(!defined('DIR_SEP')) {
> > +if (!defined('DIR_SEP')) {
> >      define('DIR_SEP', DIRECTORY_SEPARATOR);
> >  }
> >  
> >  -562,6 +562,7 
> >      var $_cache_including = false;
> >  
> >      /**#-*/
> > +
> >      /**
> >       * The class constructor.
> >       */
> >  -615,10 +616,10 
> >              // $tpl_var is an array, ignore
$value
> >              foreach ($tpl_var as $_key =>
$_val) {
> >                  if ($_key != '') {
> > -                    if(!is_array($this->_tpl_vars[$_key])) {
> > +                    if (!is_array($this->_tpl_vars[$_key])) {
> >                         
settype($this->_tpl_vars[$_key],'array');
> >                      }
> > -                    if($merge &&
is_array($_val)) {
> > +                    if ($merge &&
is_array($_val)) {
> >                          foreach($_val as $_mkey
=> $_mval) {
> >                             
$this->_tpl_vars[$_key][$_mkey] = $_mval;
> >                          }
> >  -629,10 +630,10 
> >              }
> >          } else {
> >              if ($tpl_var != '' &&
isset($value)) {
> > -                if(!is_array($this->_tpl_vars[$tpl_var])) {
> > +                if (!is_array($this->_tpl_vars[$tpl_var])) {
> >                     
settype($this->_tpl_vars[$tpl_var],'array');
> >                  }
> > -                if($merge &&
is_array($value)) {
> > +                if ($merge &&
is_array($value)) {
> >                      foreach($value as $_mkey
=> $_mval) {
> >                         
$this->_tpl_vars[$tpl_var][$_mkey] = $_mval;
> >                      }
> >  -652,7 +653,7 
> >      function append_by_ref($tpl_var, &$value,
$merge=false)
> >      {
> >          if ($tpl_var != '' &&
isset($value)) {
> > -            if(!is_array($this->_tpl_vars[$tpl_var])) {
> > +            if (!is_array($this->_tpl_vars[$tpl_var])) {
> >              
settype($this->_tpl_vars[$tpl_var],'array');
> >              }
> >              if ($merge &&
is_array($value)) {
> >  -665,7 +666,6 
> >          }
> >      }
> >  
> > -
> >      /**
> >       * clear the given assigned template
variable.
> >       *
> >  -680,7 +680,6 
> >             
unset($this->_tpl_vars[$tpl_var]);
> >      }
> >  
> > -
> >      /**
> >       * Registers custom function to be used in
templates
> >       *
> >  -960,7 +959,6 
> >  
> >      }
> >  
> > -
> >      /**
> >       * clear the entire contents of cache (all
templates)
> >       *
> >  -972,7 +970,6 
> >          return $this->clear_cache(null, null,
null, $exp_time);
> >      }
> >  
> > -
> >      /**
> >       * test to see if valid cache exists for this
template
> >       *
> >  -998,7 +995,6 
> >          return
smarty_core_read_cache_file($_params, $this);
> >      }
> >  
> > -
> >      /**
> >       * clear all the assigned template
variables.
> >       *
> >  -1049,18 +1045,18 
> >       *
> >       * param string $name
> >       * param string $type
> > -     * return array
> > +     * return mixed
> >       */
> > -    function &get_template_vars($name=null)
> > +    function &get_template_vars($name =
null)
> >      {
> > -        if(!isset($name)) {
> > +        if (!isset($name)) {
> >              return $this->_tpl_vars;
> > -        }
elseif(isset($this->_tpl_vars[$name])) {
> > +        } elseif
(isset($this->_tpl_vars[$name])) {
> >              return $this->_tpl_vars[$name];
> >          } else {
> >              // var non-existant, return valid
reference
> >              $_tmp = null;
> > -            return $_tmp;   
> > +            return $_tmp;
> >          }
> >      }
> >  
> >  -1071,11 +1067,11 
> >       * param string $type
> >       * return array
> >       */
> > -    function &get_config_vars($name=null)
> > +    function &get_config_vars($name = null)
> >      {
> > -        if(!isset($name) &&
is_array($this->_config[0])) {
> > +        if (!isset($name) &&
is_array($this->_config[0])) {
> >              return $this->_config[0]['vars'];
> > -        } else
if(isset($this->_config[0]['vars'][$name])) {
> > +        } elseif
(isset($this->_config[0]['vars'][$name])) {
> >              return
$this->_config[0]['vars'][$name];
> >          } else {
> >              // var non-existant, return valid
reference
> >  -1095,7 +1091,6 
> >          trigger_error("Smarty error:
$error_msg", $error_type);
> >      }
> >  
> > -
> >      /**
> >       * executes & displays the template
results
> >       *
> >  -1119,7 +1114,7 
> >      function fetch($resource_name, $cache_id =
null, $compile_id = null,
> > $display = false)
> >      {
> >          static $_cache_info = array();
> > -        
> > +
> >          $_smarty_old_error_level =
$this->debugging ? error_reporting() :
> > error_reporting(isset($this->error_reporting)
> >                 ? $this->error_reporting :
error_reporting() & ~E_NOTICE);
> >  
> >  -1347,7 +1342,7 
> >       */
> >      function clear_config($var = null)
> >      {
> > -        if(!isset($var)) {
> > +        if (!isset($var)) {
> >              // clear all values
> >              $this->_config =
array(array('vars'  => array(),
> >                                           'files'
=> array()));
> >  -1370,7 +1365,7 
> >          return
smarty_core_assemble_plugin_filepath($_params, $this);
> >      }
> >  
> > -   /**
> > +    /**
> >       * test if resource needs compiling
> >       *
> >       * param string $resource_name
> >  -1403,7 +1398,7 
> >          }
> >      }
> >  
> > -   /**
> > +    /**
> >       * compile the template
> >       *
> >       * param string $resource_name
> >  -1439,7 +1434,7 
> >  
> >      }
> >  
> > -   /**
> > +    /**
> >       * compile the given source
> >       *
> >       * param string $resource_name
> >  -1529,11 +1524,10 
> >       * param boolean $quiet
> >       * return boolean
> >       */
> > -
> >      function _fetch_resource_info(&$params)
> >      {
> > -        if(!isset($params['get_source'])) {
$params['get_source'] = true; }
> > -        if(!isset($params['quiet'])) {
$params['quiet'] = false; }
> > +        if (!isset($params['get_source'])) {
$params['get_source'] = true; }
> > +        if (!isset($params['quiet'])) {
$params['quiet'] = false; }
> >  
> >          $_return = false;
> >          $_params = array('resource_name' =>
$params['resource_name']) ;
> >  -1590,7 +1584,7 
> >              if (!$params['quiet']) {
> >                  $this->trigger_error('unable
to read resource: "' .
> > $params['resource_name'] . '"');
> >              }
> > -        } else if ($_return &&
$this->security) {
> > +        } elseif ($_return &&
$this->security) {
> >              require_once(SMARTY_CORE_DIR .
'core.is_secure.php');
> >              if (!smarty_core_is_secure($_params,
$this)) {
> >                  if (!$params['quiet'])
> >  -1603,7 +1597,6 
> >          return $_return;
> >      }
> >  
> > -
> >      /**
> >       * parse out the type and name from the
resource
> >       *
> >  -1613,7 +1606,6 
> >       * param string $resource_name
> >       * return boolean
> >       */
> > -
> >      function _parse_resource_name(&$params)
> >      {
> >  
> >  -1625,7 +1617,7 
> >              $params['resource_type'] =
$this->default_resource_type;
> >              $params['resource_name'] =
$_resource_name_parts[0];
> >          } else {
> > -            if(strlen($_resource_name_parts[0])
== 1) {
> > +            if (strlen($_resource_name_parts[0])
== 1) {
> >                  // 1 char is not resource type,
but part of filepath
> >                  $params['resource_type'] =
$this->default_resource_type;
> >                  $params['resource_name'] =
$params['resource_name'];
> >  -1648,7 +1640,7 
> >                      // didn't find the file, try
include_path
> >                      $_params = array('file_path'
=> $_fullpath);
> >                      require_once(SMARTY_CORE_DIR
.
> > 'core.get_include_path.php');
> > -                   
if(smarty_core_get_include_path($_params, $this)) {
> > +                    if
(smarty_core_get_include_path($_params, $this)) {
> >                          $params['resource_name']
=
> > $_params['new_file_path'];
> >                          return true;
> >                      }
> >  -1667,7 +1659,6 
> >          return true;
> >      }
> >  
> > -
> >      /**
> >       * Handle modifiers
> >       *
> >  -1741,14 +1732,14 
> >          $_compile_dir_sep = 
$this->use_sub_dirs ? DIRECTORY_SEPARATOR :
> > '^';
> >          $_return = $auto_base .
DIRECTORY_SEPARATOR;
> >  
> > -        if(isset($auto_id)) {
> > +        if (isset($auto_id)) {
> >              // make auto_id safe for directory
names
> >              $auto_id =
> >
str_replace('%7C',$_compile_dir_sep,(urlencode($auto_id)));
> >              // split into separate directories
> >              $_return .= $auto_id .
$_compile_dir_sep;
> >          }
> >  
> > -        if(isset($auto_source)) {
> > +        if (isset($auto_source)) {
> >              // make source name safe for
filename
> >              $_filename =
urlencode(basename($auto_source));
> >              $_crc32 = sprintf('%08X',
crc32($auto_source));
> >  -1770,8 +1761,8 
> >       */
> >      function _unlink($resource, $exp_time =
null)
> >      {
> > -        if(isset($exp_time)) {
> > -            if(time() - filemtime($resource) >=
$exp_time) {
> > +        if (isset($exp_time)) {
> > +            if (time() - filemtime($resource) >=
$exp_time) {
> >                  return unlink($resource);
> >              }
> >          } else {
> >  -1789,7 +1780,7 
> >      function _get_auto_id($cache_id=null,
$compile_id=null) {
> >      if (isset($cache_id))
> >          return (isset($compile_id)) ? $cache_id .
'|' . $compile_id  :
> > $cache_id;
> > -    elseif(isset($compile_id))
> > +    elseif (isset($compile_id))
> >          return $compile_id;
> >      else
> >          return null;
> >  -1808,7 +1799,7 
> >      function _trigger_fatal_error($error_msg,
$tpl_file = null, $tpl_line =
> > null,
> >              $file = null, $line = null,
$error_type = E_USER_ERROR)
> >      {
> > -        if(isset($file) && isset($line))
{
> > +        if (isset($file) && isset($line))
{
> >              $info = ' ('.basename($file).",
line $line)";
> >          } else {
> >              $info = '';
> > --- Smarty_Compiler.class.php	11 May 2007 13:45:36
-0000	1.397
> > +++ Smarty_Compiler.class.php	29 May 2007 10:47:11
-0000
> >  -162,7 +162,7 
> >                  . '(?:s*,s*' .
$this->_obj_single_param_regexp . ')*)?)';
> >          $this->_obj_start_regexp = '(?:' .
$this->_dvar_regexp . '(?:' .
> > $this->_obj_ext_regexp . ')+)';
> >          $this->_obj_call_regexp = '(?:' .
$this->_obj_start_regexp . '(?:' .
> > $this->_obj_params_regexp . ')?(?:' .
$this->_dvar_math_regexp . '(?:' .
> > $this->_num_const_regexp . '|' .
$this->_dvar_math_var_regexp . ')*)?)';
> > -        
> > +
> >          // matches valid modifier syntax:
> >          // |foo
> >          // |foo
> >  -257,7 +257,7 
> >          /* fetch all special blocks */
> >          $search =
> >
>
"~{$ldq}*(.*?)*{$rdq}|{$ldq}s*literals*{$rdq}(.*?){
$ldq}s*/literals*{$rdq}|{$ldq}s*phps*{$rdq}(.*?){$ldq}s
*/phps*{$rdq}~s";
> >  
> > -        preg_match_all($search, $source_content,
$match,  PREG_SET_ORDER);
> > +        preg_match_all($search, $source_content,
$match, PREG_SET_ORDER);
> >          $this->_folded_blocks = $match;
> >          reset($this->_folded_blocks);
> >  
> >  -290,10 +290,10 
> >                      if ($this->php_handling ==
SMARTY_PHP_PASSTHRU) {
> >                          /* echo php contents */
> >                          $text_blocks[$curr_tb] =
> > str_replace('%%%SMARTYSP'.$curr_sp.'%%%',
'<?php echo ''.str_replace("'",
> > "'", $sp_match[1][$curr_sp]).'';
?>'."n", $text_blocks[$curr_tb]);
> > -                    } else if
($this->php_handling == SMARTY_PHP_QUOTE) {
> > +                    } elseif
($this->php_handling == SMARTY_PHP_QUOTE) {
> >                          /* quote php tags */
> >                          $text_blocks[$curr_tb] =
> > str_replace('%%%SMARTYSP'.$curr_sp.'%%%',
> > htmlspecialchars($sp_match[1][$curr_sp]),
$text_blocks[$curr_tb]);
> > -                    } else if
($this->php_handling == SMARTY_PHP_REMOVE) {
> > +                    } elseif
($this->php_handling == SMARTY_PHP_REMOVE) {
> >                          /* remove php tags */
> >                          $text_blocks[$curr_tb] =
> > str_replace('%%%SMARTYSP'.$curr_sp.'%%%', '',
$text_blocks[$curr_tb]);
> >                      } else {
> >  -304,7 +304,7 
> >                  }
> >              }
> >          }
> > -        
> > +
> >          /* Compile the template tags into PHP
code. */
> >          $compiled_tags = array();
> >          for ($i = 0, $for_max =
count($template_tags); $i < $for_max; $i++)
> > {
> >  -312,7 +312,9 
> >              $compiled_tags[] =
$this->_compile_tag($template_tags[$i]);
> >              $this->_current_line_no +=
substr_count($template_tags[$i],
> > "n");
> >          }
> > -        if (count($this->_tag_stack)>0) {
> > +
> > +        /* Stack must now be empty after
processing */
> > +        if (count($this->_tag_stack) > 0)
{
> >              list($_open_tag, $_line_no) =
end($this->_tag_stack);
> >             
$this->_syntax_error("unclosed tag {$_open_tag}
(opened line
> > $_line_no).", E_USER_ERROR, __FILE__,
__LINE__);
> >              return;
> >  -349,9 +351,9 
> >              }
> >          }
> >          $compiled_content = '';
> > -        
> > +
> >          $tag_guard = '%%%SMARTYOTG' .
md5(uniqid(rand(), true)) . '%%%';
> > -        
> > +
> >          /* Interleave the compiled contents and
text blocks to get the final
> > result. */
> >          for ($i = 0, $for_max =
count($compiled_tags); $i < $for_max; $i++)
> > {
> >              if ($compiled_tags[$i] == '') {
> >  -361,7 +363,7 
> >              // replace legit PHP tags with
placeholder
> >              $text_blocks[$i] =
str_replace('<?', $tag_guard,
> > $text_blocks[$i]);
> >              $compiled_tags[$i] =
str_replace('<?', $tag_guard,
> > $compiled_tags[$i]);
> > -            
> > +
> >              $compiled_content .= $text_blocks[$i]
. $compiled_tags[$i];
> >          }
> >          $compiled_content .= str_replace('<?',
$tag_guard,
> > $text_blocks[$i]);
> >  -372,7 +374,7 
> >  
> >          // recover legit tags
> >          $compiled_content =
str_replace($tag_guard, '<?',
> > $compiled_content); 
> > -        
> > +
> >          // remove n from the end of the file, if
any
> >          if (strlen($compiled_content) &&
(substr($compiled_content, -1) ==
> > "n") ) {
> >              $compiled_content =
substr($compiled_content, 0, -1);
> >  -437,15 +439,15 
> >          /* Matched comment. */
> >          if (substr($template_tag, 0, 1) == '*'
&& substr($template_tag, -1)
> > == '*')
> >              return '';
> > -        
> > +
> >          /* Split tag into two three parts:
command, command modifiers and
> > the arguments. */
> > -        if(! preg_match('~^(?:(' .
$this->_num_const_regexp . '|' .
> > $this->_obj_call_regexp . '|' .
$this->_var_regexp
> > +        if (!preg_match('~^(?:(' .
$this->_num_const_regexp . '|' .
> > $this->_obj_call_regexp . '|' .
$this->_var_regexp
> >                  . '|/?' .
$this->_reg_obj_regexp . '|/?' .
> > $this->_func_regexp . ')(' .
$this->_mod_regexp . '*))
> >                        (?:s+(.*))?$
> >                      ~xs', $template_tag, $match))
{
> >             
$this->_syntax_error("unrecognized tag:
$template_tag",
> > E_USER_ERROR, __FILE__, __LINE__);
> >          }
> > -        
> > +
> >          $tag_command = $match[1];
> >          $tag_modifier = isset($match[2]) ?
$match[2] : null;
> >          $tag_args = isset($match[3]) ? $match[3]
: null;
> >  -511,7 +513,6 
> >              case 'sectionelse':
> >                 
$this->_push_tag('sectionelse');
> >                  return "<?php endfor;
else: ?>";
> > -                break;
> >  
> >              case '/section':
> >                  $_open_tag =
$this->_pop_tag('section');
> >  -523,7 +524,6 
> >              case 'foreach':
> >                  $this->_push_tag('foreach');
> >                  return
$this->_compile_foreach_start($tag_args);
> > -                break;
> >  
> >              case 'foreachelse':
> >                 
$this->_push_tag('foreachelse');
> >  -535,22 +535,20 
> >                      return "<?php endif;
unset($_from); ?>";
> >                  else
> >                      return "<?php
endforeach; endif; unset($_from); ?>";
> > -                break;
> >  
> >              case 'strip':
> > +                $this->_push_tag('strip');
> > +                if ($this->_strip_depth++ ==
0) { /* outermost opening
> >  */
> > +                    $this->_additional_newline
= "";
> > +                    return '';
> > +                }
> > +                return '';
> > +
> >              case '/strip':
> > -                if (substr($tag_command, 0,
1)=='/') {
> > -                    $this->_pop_tag('strip');
> > -                    if
(--$this->_strip_depth==0) { /* outermost closing
> > {/strip} */
> > -                       
$this->_additional_newline = "n";
> > -                        return '{' . $tag_command
. '}';
> > -                    }
> > -                } else {
> > -                   
$this->_push_tag('strip');
> > -                    if
($this->_strip_depth++==0) { /* outermost opening
> >  */
> > -                       
$this->_additional_newline = "";
> > -                        return '{' . $tag_command
. '}';
> > -                    }
> > +                $this->_pop_tag('strip');
> > +                if (--$this->_strip_depth ==
0) { /* outermost closing
> > {/strip} */
> > +                    $this->_additional_newline
= "n";
> > +                    return '{/strip}';
> >                  }
> >                  return '';
> >  
> >  -582,10 +580,10 
> >              default:
> >                  if
($this->_compile_compiler_tag($tag_command, $tag_args,
> > $output)) {
> >                      return $output;
> > -                } else if
($this->_compile_block_tag($tag_command,
> > $tag_args, $tag_modifier, $output)) {
> > +                } elseif
($this->_compile_block_tag($tag_command, $tag_args,
> > $tag_modifier, $output)) {
> > +                    return $output;
> > +                } elseif
($this->_compile_custom_tag($tag_command,
> > $tag_args, $tag_modifier, $output)) {
> >                      return $output;
> > -                } else if
($this->_compile_custom_tag($tag_command,
> > $tag_args, $tag_modifier, $output)) {
> > -                    return $output;              
     
> >                  } else {
> >                     
$this->_syntax_error("unrecognized tag
'$tag_command'",
> > E_USER_ERROR, __FILE__, __LINE__);
> >                  }
> >  -593,7 +591,6 
> >          }
> >      }
> >  
> > -
> >      /**
> >       * compile the custom compiler tag
> >       *
> >  -624,7 +621,7 
> >           * Otherwise we need to load plugin file
and look for the function
> >           * inside it.
> >           */
> > -        else if ($plugin_file =
$this->_get_plugin_filepath('compiler',
> > $tag_command)) {
> > +        elseif ($plugin_file =
$this->_get_plugin_filepath('compiler',
> > $tag_command)) {
> >              $found = true;
> >  
> >              include_once $plugin_file;
> >  -647,10 +644,11 
> >          if ($found) {
> >              if ($have_function) {
> >                  $output =
call_user_func_array($plugin_func,
> > array($tag_args, &$this));
> > -                if($output != '') {
> > -                $output = '<?php ' .
> > $this->_push_cacheable_state('compiler',
$tag_command)
> > -                                   . $output
> > -                                   .
$this->_pop_cacheable_state('compiler',
> > $tag_command) . ' ?>';
> > +                if ($output != '') {
> > +                    $output = '<?php '
> > +                        .
$this->_push_cacheable_state('compiler',
> > $tag_command)
> > +                        . $output
> > +                        .
$this->_pop_cacheable_state('compiler',
> > $tag_command) . ' ?>';
> >                  }
> >              } else {
> >                  $this->_syntax_error($message,
E_USER_WARNING, __FILE__,
> > __LINE__);
> >  -661,7 +659,6 
> >          }
> >      }
> >  
> > -
> >      /**
> >       * compile block function tag
> >       *
> >  -699,7 +696,7 
> >           * Otherwise we need to load plugin file
and look for the function
> >           * inside it.
> >           */
> > -        else if ($plugin_file =
$this->_get_plugin_filepath('block',
> > $tag_command)) {
> > +        elseif ($plugin_file =
$this->_get_plugin_filepath('block',
> > $tag_command)) {
> >              $found = true;
> >  
> >              include_once $plugin_file;
> >  -710,13 +707,12 
> >                  $have_function = false;
> >              } else {
> >                 
$this->_plugins['block'][$tag_command] =
array($plugin_func,
> > null, null, null, true);
> > -
> >              }
> >          }
> >  
> >          if (!$found) {
> >              return false;
> > -        } else if (!$have_function) {
> > +        } elseif (!$have_function) {
> >              $this->_syntax_error($message,
E_USER_WARNING, __FILE__,
> > __LINE__);
> >              return true;
> >          }
> >