1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* File: resource.bitpackage.php
* Type: resource
* Name: bitpackage
* Purpose: Fetches templates from the correct package
* -------------------------------------------------------------
*/
function smarty_resource_bitpackage_source($tpl_name, &$tpl_source, &$smarty)
{
global $gBitSystem, $gBitSystem; // gBitSystem is just for temporary backward compatibility
$ret = false;
// list( $package, $template ) = split( '/', $tpl_name );
$path = explode( '/', $tpl_name );
$package = array_shift( $path );
$subdir = '';
$template = array_pop( $path );
foreach( $path as $p ) {
$subdir .= $p.'/';
}
$subdir .= preg_match( '/mod_/', $template ) ? 'modules' : 'templates';
// look in themes/force/
$forceTemplate = THEMES_PKG_PATH."/force/$template";
// look in themes/style/<stylename>/<package>/templates/
$overrideTemplate = $gBitSystem->getStylePath()."/$package/$subdir/$template";
// look in themes/style/<stylename>/<package>/ - module files are unique anyway
$overrideTemplateSimple = $gBitSystem->getStylePath()."/$package/$template";
// look in root of style themes/style/<stylename>/
$overrideRootTemplate = $gBitSystem->getStylePath().$template;
// look for default package template
$package_template = BIT_PKG_PATH.$gBitSystem->mPackages[strtolower( $package )]['dir']."/$subdir/$template";
//vd( $forceTemplate.' - '.$overrideTemplate.' - '.$overrideRootTemplate.' - '.$package_template );
global $gNoForceStyle;
if ( empty( $gNoForceStyle ) && file_exists( $forceTemplate ) ) {
$tpl_source = fread( fopen($forceTemplate, "r"), filesize($forceTemplate) );
$ret = true;
} elseif ( file_exists( $overrideTemplate ) ) {
$tpl_source = fread( fopen($overrideTemplate, "r"), filesize($overrideTemplate) );
$ret = true;
} elseif ( file_exists( $overrideTemplateSimple ) ) {
$tpl_source = fread( fopen($overrideTemplateSimple, "r"), filesize($overrideTemplateSimple) );
$ret = true;
} elseif ( file_exists( $overrideRootTemplate ) ) {
$tpl_source = filesize($overrideRootTemplate) ? fread( fopen($overrideRootTemplate, "r"), filesize($overrideRootTemplate) ) : '';
$ret = true;
} elseif ( file_exists( $package_template )) {
$tpl_source = fread( fopen($package_template, "r"), filesize($package_template) );
$ret = true;
} else {
$tpl_source = "<p>MISSING TEMPLATE:<br/> <b>p_resource_type:</b> $p_resource_type<br><b>p_resource_name:</b> $p_resource_name<br><b>p_template_source:</b> $p_template_source<br><b>p_template_timestamp:</b> $p_template_timestamp<br><b>p_smarty_obj:</b> $p_smarty_obj <br /><b>override_template:</b> $override_template<br/><b>package_template:</b>$package_template<br/><b>TIKI Package Path:</b>".BIT_PKG_PATH;
$ret = true;
}
return $ret;
}
// the PHP sibling file needs to be included in modules_inc before this fetch so caching works properly
function smarty_resource_bitpackage_timestamp($tpl_name, &$tpl_timestamp, &$smarty)
{
//$tpl_timestamp = time();
//return true;
global $gBitSystem;
$ret = false;
// list( $package, $template ) = split( '/', $tpl_name );
$path = explode( '/', $tpl_name );
$package = array_shift( $path );
$subdir = '';
$template = array_pop( $path );
foreach( $path as $p ) {
$subdir .= $p.'/';
}
$subdir .= preg_match( '/mod_/', $template ) ? 'modules' : 'templates';
// look in themes/force/
$forceTemplate = THEMES_PKG_PATH."/force/$template";
// look in themes/style/<stylename>/<package>/templates/
$overrideTemplate = $gBitSystem->getStylePath()."/$package/$subdir/$template";
// look in themes/style/<stylename>/<package>/templates/
$overrideTemplateSimple = $gBitSystem->getStylePath()."/$package/$template";
// look in root of style themes/style/<stylename>/
$overrideRootTemplate = $gBitSystem->getStylePath().$template;
// look for default package template
$package_template = BIT_PKG_PATH.$gBitSystem->mPackages[strtolower( $package )]['dir']."/$subdir/$template";
//print "<br/>Time ($package $template)(FORCE: $forceTemplate<br/>OVERRIDE: $overrideTemplate $overrideRootTemplate $package_template)<br/>";
global $gNoForceStyle;
if ( empty( $gNoForceStyle ) && file_exists( $forceTemplate ) ) {
$tpl_timestamp = filemtime($forceTemplate);
$ret = true;
} elseif ( file_exists( $overrideTemplate ) ) {
$tpl_timestamp = filemtime($overrideTemplate);
$ret = true;
} elseif ( file_exists( $overrideTemplateSimple ) ) {
$tpl_timestamp = filemtime($overrideTemplateSimple);
$ret = true;
} elseif ( file_exists( $overrideRootTemplate ) ) {
$tpl_timestamp = filemtime($overrideRootTemplate);
$ret = true;
} elseif ( file_exists( $package_template )) {
$tpl_timestamp = filemtime($package_template);
$ret = true;
} else {
$ret = false;
}
return $ret;
}
function smarty_resource_bitpackage_secure($tpl_name, &$smarty)
{
// assume all templates are secure
return true;
}
function smarty_resource_bitpackage_trusted($tpl_name, &$smarty)
{
// not used for templates
}
?>
|