Example #1
0
 /**
  * Template code runtime function to get subtemplate content
  *
  * @param  string $template     the resource handle of the template file
  * @param  mixed  $compile_id   compile id to be used with this template
  * @param  array  $vars         optional  variables to assign
  * @param  int    $parent_scope scope in which {include} should execute
  * @return void
  */
 public function renderSubTemplate($template, $compile_id, $data, $parent_scope)
 {
     // Pass `true` for $suppressData; we're going to manage the scope setup ourselves
     $tpl = new Template($template, $this->smarty, $this, $compile_id, true);
     // get variables from calling scope
     if ($parent_scope == Brainy::SCOPE_LOCAL) {
         if (empty($data)) {
             $tpl->tpl_vars = $this->tpl_vars;
             // assign by value array
         } else {
             $tpl->cloneDataFrom($this);
         }
         $tpl->tpl_vars['smarty'] =& $this->tpl_vars['smarty'];
     } elseif ($parent_scope == Brainy::SCOPE_PARENT) {
         $tpl->tpl_vars =& $this->tpl_vars;
     } elseif ($parent_scope == Brainy::SCOPE_GLOBAL) {
         $tpl->tpl_vars =& Brainy::$global_tpl_vars;
     } elseif (($scope_ptr = $this->getScopePointer($parent_scope)) == null) {
         $tpl->tpl_vars =& $this->tpl_vars;
     } else {
         $tpl->tpl_vars =& $scope_ptr->tpl_vars;
     }
     if (!empty($data)) {
         $tpl->applyDataFrom($data);
     }
     $tpl->display();
 }