Index: trunk/core/kernel/parser/template.php =================================================================== diff -u -r2374 -r2600 --- trunk/core/kernel/parser/template.php (.../template.php) (revision 2374) +++ trunk/core/kernel/parser/template.php (.../template.php) (revision 2600) @@ -14,7 +14,7 @@ } } } - + function SetBasePath($base_path=null) { if (isset($base_path)) { @@ -24,20 +24,20 @@ } return false; } - + function GetFullPath() { return $this->BasePath.'/'.$this->Filename.'.tpl'; } - + function LoadTemplate($silent=0) { $filename = $this->GetFullPath(); if(file_exists($filename)) { if (filesize ($filename) == 0) { trigger_error("Template file size is 0: $filename", ($silent ? E_USER_NOTICE : E_USER_ERROR) ); } - + $handle = fopen ($filename, "r"); $contents = fread ($handle, filesize ($filename)); $this->SetBody($contents); @@ -51,12 +51,12 @@ return false; } } - + function SetBody($body) { $this->Body = $body; } - + function GetBody() { return $this->Body; @@ -67,32 +67,32 @@ var $Templates = Array(); var $BasePath; var $FileNames = Array(); - + var $ModulesCache = Array(); - + function TemplatesCache() { parent::kBase(); $this->SetThemePath(); - $this->BasePath = DOC_ROOT.BASE_PATH.THEMES_PATH; - + $this->BasePath = FULL_PATH.THEMES_PATH; + $conn =& $this->Application->GetADODBConnection(); $this->ModulesCache = $conn->GetCol('SELECT LOWER(Name) FROM '.TABLE_PREFIX.'Modules'); } - + function SetThemePath() { if ( defined('SPECIAL_TEMPLATES_FOLDER') ) { - safeDefine( 'THEMES_PATH', preg_replace('/'.preg_quote(rtrim(DOC_ROOT.BASE_PATH, '/'), '/').'/i','',str_replace('\\', '/', FULL_PATH)). SPECIAL_TEMPLATES_FOLDER ); + safeDefine( 'THEMES_PATH', preg_replace('/'.preg_quote(rtrim(FULL_PATH, '/'), '/').'/i','',str_replace('\\', '/', FULL_PATH)). SPECIAL_TEMPLATES_FOLDER ); } else { $current_theme = $this->Application->GetVar('m_theme'); $folder = $this->Application->DB->GetOne('SELECT Name FROM '.TABLE_PREFIX.'Theme WHERE ThemeId = '.$current_theme); - - safeDefine( 'THEMES_PATH', preg_replace('/'.preg_quote(rtrim(DOC_ROOT.BASE_PATH, '/'), '/').'/i','',str_replace('\\', '/', FULL_PATH)). ( defined('ADMIN') ? '/admin/templates' : '/themes/'.$folder)); + + safeDefine( 'THEMES_PATH', preg_replace('/'.preg_quote(rtrim(FULL_PATH, '/'), '/').'/i','',str_replace('\\', '/', FULL_PATH)). ( defined('ADMIN') ? '/admin/templates' : '/themes/'.$folder)); } } - + function LoadTemplate($filename, $title=NULL, $silent=0) { if (preg_match('#^[\/]{0,1}([^\/]*)\/(.*)#', $filename, $regs)) { @@ -103,20 +103,20 @@ $first_dir = ''; $module_filename = $filename; } - + if ( defined('ADMIN') && ADMIN && in_array(strtolower($first_dir), $this->ModulesCache)) { $path = MODULES_PATH.'/'.strtolower($first_dir).'/admin_templates'; } else { $path = $this->BasePath; $module_filename = $first_dir.'/'.$module_filename; } - + $template =& new Template($path, $module_filename, $silent); if (!isset($title)) $title = $filename; $this->SetTemplate($title, $template); } - + function GetRealFilename($filename, $base=null) { if (preg_match('#^[\/]{0,1}([^\/]*)\/(.*)#', $filename, $regs)) { $module_filename = $regs[2]; @@ -126,7 +126,7 @@ $first_dir = ''; $module_filename = $filename; } - + if ( defined('ADMIN') && ADMIN && in_array(strtolower($first_dir), $this->ModulesCache)) { $path = MODULES_PATH.'/'.strtolower($first_dir).'/admin_templates'; } @@ -136,22 +136,22 @@ } return $path.'/'.$module_filename; } - + function SetTemplate($title, &$template, $filename=null) { if (!isset($filename)) $filename=$title; $this->Templates[$title] = $template; $this->FileNames[$title] = $filename; } - + function &GetTemplate($title, $silent=0) { if (!isset($this->Templates[$title])) { $this->LoadTemplate($title, null, $silent); } return $this->Templates[$title]; } - + function GetTemplateBody($title, $silent=0) { $template =& $this->GetTemplate($title, $silent); @@ -160,25 +160,25 @@ } return $template->GetBody(); } - + function GetTemplateFileName($title) { return $this->FileNames[$title]; } - + function SetTemplateBody($title, $body) { $template =& new Template(); $template->SetBody($body); $this->SetTemplate($title, $template); } - + function ParseTemplate($template_name) { $Parser =& new TemplateParser($this->Application); return $Parser->Parse( $this->GetTemplateBody($template_name) ); } - + function TemplateExists($filename) { if (!preg_match("/\.tpl$/", $filename)) $filename .= '.tpl';