function _render($___viewFn, $___dataForView, $loadHelpers = true, $cached = false) { $dirParts = explode(DS, $___viewFn); array_pop($dirParts); $templatePath = implode(DS, $dirParts); $options = array('template_path' => $templatePath, 'compile_path' => H2O_COMPILE_PATH, 'auto_render' => $this->h2oAutoRender, 'cache' => $this->h2oEnableCache, 'safeClass' => array('SimplePie_Item')); $h2o = new H2O($___viewFn, $options); $viewVars =& $___dataForView; $passVarsH2o = explode(',', 'here,base,action,name,pageTitle,layoutPath,webroot'); foreach ($this->__passedVars as $var) { if (in_array($var, $passVarsH2o)) { $viewVars[Inflector::underscore($var)] = $this->{$var}; } } $viewVars['data'] = $this->data; if ($this->helpers != false && $loadHelpers === true) { $loadedHelpers = array(); $loadedHelpers = $this->_loadHelpers($loadedHelpers, $this->helpers); foreach (array_keys($loadedHelpers) as $helper) { $replace = strtolower(substr($helper, 0, 1)); $camelBackedHelper = preg_replace('/\\w/', $replace, $helper, 1); ${$camelBackedHelper} =& $loadedHelpers[$helper]; if (is_array(${$camelBackedHelper}->helpers) && !empty(${$camelBackedHelper}->helpers)) { $subHelpers = ${$camelBackedHelper}->helpers; foreach ($subHelpers as $subHelper) { ${$camelBackedHelper}->{$subHelper} =& $loadedHelpers[$subHelper]; } } $helper = $this->loaded[$camelBackedHelper] =& ${$camelBackedHelper}; $h2o->set($camelBackedHelper, $helper); //$h2o->storage['helpers'][$camelBackedHelper] = $helper; } } if ($this->helpers != false && $loadHelpers === true) { foreach ($loadedHelpers as $helper) { if (is_object($helper)) { if (is_subclass_of($helper, 'Helper') || is_subclass_of($helper, 'helper')) { $helper->beforeRender(); } } } } if (isset($myPaginate)) { $paginator = $myPaginate; } $paginator->h2o_safe = array('prev', 'numbers', 'next'); $viewVars['paginate'] = $paginator; $h2o->evaluate($viewVars); $___viewFn = $h2o->compiled_file; extract($___dataForView, EXTR_SKIP); $BASE = $this->base; $params =& $this->params; $page_title = $this->pageTitle; ob_start(); if (Configure::read() > 0) { include $___viewFn; } else { @(include $___viewFn); } if ($this->helpers != false && $loadHelpers === true) { foreach ($loadedHelpers as $helper) { if (is_object($helper)) { if (is_subclass_of($helper, 'Helper') || is_subclass_of($helper, 'helper')) { $helper->afterRender(); } } } } $out = ob_get_clean(); if (isset($this->loaded['cache']) && $this->cacheAction != false && (defined('CACHE_CHECK') && CACHE_CHECK === true)) { if (is_a($this->loaded['cache'], 'CacheHelper')) { $cache =& $this->loaded['cache']; if ($cached === true) { $cache->view =& $this; } $cache->base = $this->base; $cache->here = $this->here; $cache->helpers = $this->helpers; $cache->action = $this->action; $cache->controllerName = $this->name; $cache->layout = $this->layout; $cache->cacheAction = $this->cacheAction; $cache->cache($___viewFn, $out, $cached); } } //$this->output = $out; return $out; }