Index: trunk/core/kernel/parser/template.php
===================================================================
diff -u -r932 -r1339
--- trunk/core/kernel/parser/template.php (.../template.php) (revision 932)
+++ trunk/core/kernel/parser/template.php (.../template.php) (revision 1339)
@@ -5,12 +5,12 @@
var $BasePath = '';
var $Filename = '';
- function Template($base_path=null, $filename=null)
+ function Template($base_path=null, $filename=null, $silent=0)
{
if ($this->SetBasePath($base_path)) {
if (isset($filename)) {
$this->Filename = $filename;
- $this->LoadTemplate();
+ $this->LoadTemplate($silent);
}
}
}
@@ -34,14 +34,18 @@
{
$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);
fclose ($handle);
return true;
}
else {
- if (!$silent) echo "File or block not found: $filename ($filename)
";
+ trigger_error("File or block not found: $filename", ($silent ? E_USER_NOTICE : E_USER_ERROR) );
return false;
}
}
@@ -60,39 +64,92 @@
class TemplatesCache extends kBase {
var $Templates = Array();
var $BasePath;
+ var $FileNames = Array();
+ var $ModulesCache = Array();
+
function TemplatesCache()
{
parent::kBase();
$this->BasePath = DOC_ROOT.BASE_PATH.THEMES_PATH;
+
+ $conn =& $this->Application->GetADODBConnection();
+ $this->ModulesCache = $conn->GetCol('SELECT LOWER(Name) FROM '.TABLE_PREFIX.'Modules');
}
- function LoadTemplate($filename, $title=NULL)
+ function LoadTemplate($filename, $title=NULL, $silent=0)
{
- $template =& new Template($this->BasePath, $filename);
+ if (preg_match('#^[\/]{0,1}([^\/]*)\/(.*)#', $filename, $regs)) {
+ $module_filename = $regs[2];
+ $first_dir = $regs[1];
+ }
+ else {
+ $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 SetTemplate($title, &$template)
+ function GetRealFilename($filename) {
+ if (preg_match('#^[\/]{0,1}([^\/]*)\/(.*)#', $filename, $regs)) {
+ $module_filename = $regs[2];
+ $first_dir = $regs[1];
+ }
+ else {
+ $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;
+ }
+ 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)
+ function &GetTemplate($title, $silent=0)
{
if (!isset($this->Templates[$title])) {
- $this->LoadTemplate($title);
+ $this->LoadTemplate($title, null, $silent);
}
return $this->Templates[$title];
}
- function GetTemplateBody($title)
+ function GetTemplateBody($title, $silent=0)
{
- $template =& $this->GetTemplate($title);
+ $template =& $this->GetTemplate($title, $silent);
+ if ( !is_object($template) ) {
+ return '';
+ }
return $template->GetBody();
}
+ function GetTemplateFileName($title)
+ {
+ return $this->FileNames[$title];
+ }
+
function SetTemplateBody($title, $body)
{
$template =& new Template();