template = $templateFile; $this->smarty = new Smarty(); if(count($smConf) == 0) { $smConf = Zend_Registry::get('config')->smarty; } foreach($smConf as $key => $value) { $this->smarty->$key = $value; } $this->smarty->template_dir = $this->getCorrectPath( $smConf->template_dir->toArray() ); $this->smarty->plugins_dir = $this->getCorrectPath( $smConf->plugins_dir->toArray() ); $this->smarty->compile_dir = $this->getCorrectPath( $smConf->compile_dir ); $this->smarty->cache_dir = $this->getCorrectPath( $smConf->cache_dir ); $this->smarty->load_filter('output','trimwhitespace'); // global value accessible to all templates: the piwik base URL for the current request $this->piwikUrl = Piwik_Url::getCurrentUrlWithoutFileName(); } protected function getCorrectPath( $path ) { if(is_array($path)) { foreach($path as &$dir) { $dir = PIWIK_INCLUDE_PATH . '/' . $dir ; } return $path; } else { return PIWIK_INCLUDE_PATH . '/' . $path; } } /** * Directly assigns a variable to the view script. * VAR names may not be prefixed with '_'. * @param string $key The variable name. * @param mixed $val The variable value. * @return void */ public function __set($key, $val) { $this->smarty->assign($key, $val); } /** * Retrieves an assigned variable. * VAR names may not be prefixed with '_'. * @param string $key The variable name. * @return mixed The variable value. */ public function __get($key) { return $this->smarty->get_template_vars($key); } public function render() { $this->totalTimeGeneration = Zend_Registry::get('timer')->getTime(); try { $this->totalNumberOfQueries = Piwik::getQueryCount(); } catch(Exception $e){ $this->totalNumberOfQueries = 0; } header('Content-Type: text/html; charset=utf-8'); return $this->smarty->fetch($this->template); } public function addForm( $form ) { // Create the renderer object $renderer = new HTML_QuickForm_Renderer_ArraySmarty($this->smarty); // build the HTML for the form $form->accept($renderer); // assign array with form data $this->smarty->assign('form_data', $renderer->toArray()); $this->smarty->assign('element_list', $form->getElementList()); } public function assign($var, $value=null) { if (is_string($var)) { $this->smarty->assign($var, $value); } elseif (is_array($var)) { foreach ($var as $key => $value) { $this->smarty->assign($key, $value); } } } /* public function isCached($template) { if ($this->smarty->is_cached($template)) { return true; } return false; } public function setCaching($caching) { $this->smarty->caching = $caching; } */ }