author | Dan |
Thu, 26 Jun 2008 16:56:52 -0400 | |
changeset 583 | c97d5f0d6636 |
parent 582 | a38876c0793c |
child 585 | 35e91d16ecf5 |
permissions | -rw-r--r-- |
1 | 1 |
<?php |
2 |
||
3 |
/* |
|
4 |
* Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between |
|
536 | 5 |
* Version 1.1.4 (Caoineag alpha 4) |
6 |
* Copyright (C) 2006-2008 Dan Fuhry |
|
1 | 7 |
* |
8 |
* This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License |
|
9 |
* as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. |
|
10 |
* |
|
11 |
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied |
|
12 |
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. |
|
13 |
*/ |
|
14 |
||
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
15 |
class template |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
16 |
{ |
577
5118610ce160
Made template parser remember last initted page_id and namespace to avoid double init; made additional_headers reassign only do so if $template->additional_headers is empty (it's being blanked somehow, need to come up with a backtrace sometime)
Dan
parents:
573
diff
changeset
|
17 |
var $tpl_strings, $tpl_bool, $vars_assign_history, $theme, $style, $no_headers, $additional_headers, $sidebar_extra, $sidebar_widgets, $toolbar_menu, $theme_list, $named_theme_list, $default_theme, $default_style, $plugin_blocks, $namespace_string, $style_list, $theme_loaded, $initted_to_page_id, $initted_to_namespace; |
30 | 18 |
|
578
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
19 |
var $initted_to_theme = array( |
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
20 |
'theme' => false, |
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
21 |
'style' => false |
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
22 |
); |
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
23 |
|
30 | 24 |
/** |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
25 |
* The list of themes that are critical for Enano operation. This doesn't include oxygen which |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
26 |
* remains a user theme. By default this is admin and printable which have to be loaded on demand. |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
27 |
* @var array |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
28 |
*/ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
29 |
|
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
30 |
var $system_themes = array('admin', 'printable'); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
31 |
|
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
32 |
/** |
30 | 33 |
* Set to true if the site is disabled and thus a message needs to be shown. This should ONLY be changed by common.php. |
34 |
* @var bool |
|
35 |
* @access private |
|
36 |
*/ |
|
37 |
||
38 |
var $site_disabled = false; |
|
39 |
||
53 | 40 |
/** |
41 |
* One of the absolute best parts of Enano :-P |
|
42 |
* @var string |
|
43 |
*/ |
|
44 |
||
54
84b56303cab5
Bugfixes: Login system properly handles blank password situation (returns ""); fading button now works right with relative URLs
Dan
parents:
53
diff
changeset
|
45 |
var $fading_button = ''; |
53 | 46 |
|
1 | 47 |
function __construct() |
48 |
{ |
|
49 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
581
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
579
diff
changeset
|
50 |
|
1 | 51 |
$this->tpl_bool = Array(); |
52 |
$this->tpl_strings = Array(); |
|
53 |
$this->sidebar_extra = ''; |
|
54 |
$this->toolbar_menu = ''; |
|
55 |
$this->additional_headers = ''; |
|
56 |
$this->plugin_blocks = Array(); |
|
57 |
$this->theme_loaded = false; |
|
58 |
||
201
2303ef648290
[minor] added bottom margin for enanocms.org fading button
Dan
parents:
189
diff
changeset
|
59 |
$this->fading_button = '<div style="background-image: url('.scriptPath.'/images/about-powered-enano-hover.png); background-repeat: no-repeat; width: 88px; height: 31px; margin: 0 auto 5px auto;"> |
371
dc6026376919
Improved compatibility with PostgreSQL and fixed a number of installer bugs; fixed missing "meta" category declaration in language files
Dan
parents:
370
diff
changeset
|
60 |
<a style="background-image: none; padding-right: 0;" href="http://enanocms.org/" onclick="window.open(this.href); return false;"><img style="border-width: 0;" alt=" " src="'.scriptPath.'/images/about-powered-enano.png" onmouseover="domOpacity(this, 100, 0, 500);" onmouseout="domOpacity(this, 0, 100, 500);" /></a> |
87
570f68c3fe36
Redid stupid fading button code and fixed several RC2 bugs in the upgrade schema; 1.0.1 release candidate
Dan
parents:
86
diff
changeset
|
61 |
</div>'; |
54
84b56303cab5
Bugfixes: Login system properly handles blank password situation (returns ""); fading button now works right with relative URLs
Dan
parents:
53
diff
changeset
|
62 |
|
1 | 63 |
$this->theme_list = Array(); |
64 |
$this->named_theme_list = Array(); |
|
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
65 |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
66 |
$this->vars_assign_history = array( |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
67 |
'strings' => array(), |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
68 |
'bool' => array() |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
69 |
); |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
70 |
|
488
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
71 |
if ( defined('IN_ENANO_UPGRADE') ) |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
72 |
{ |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
73 |
return $this->construct_compat(); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
74 |
} |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
75 |
|
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
76 |
$q = $db->sql_query('SELECT theme_id, theme_name, enabled, default_style, group_policy, group_list FROM ' . table_prefix . 'themes;'); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
77 |
if ( !$q ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
78 |
$db->_die('template.php selecting theme list'); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
79 |
|
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
80 |
$i = 0; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
81 |
while ( $row = $db->fetchrow() ) |
1 | 82 |
{ |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
83 |
$this->theme_list[$i] = $row; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
84 |
$i++; |
1 | 85 |
} |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
86 |
// List out all CSS files for this theme |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
87 |
foreach ( $this->theme_list as $i => &$theme ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
88 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
89 |
$theme['css'] = array(); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
90 |
$dir = ENANO_ROOT . "/themes/{$theme['theme_id']}/css"; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
91 |
if ( $dh = @opendir($dir) ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
92 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
93 |
while ( ( $file = @readdir($dh) ) !== false ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
94 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
95 |
if ( preg_match('/\.css$/', $file) ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
96 |
$theme['css'][] = preg_replace('/\.css$/', '', $file); |
1 | 97 |
} |
98 |
closedir($dh); |
|
99 |
} |
|
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
100 |
// No CSS files? If so, nuke it. |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
101 |
if ( count($theme['css']) < 1 ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
102 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
103 |
unset($this->theme_list[$i]); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
104 |
} |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
105 |
} |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
106 |
$this->theme_list = array_values($this->theme_list); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
107 |
// Create associative array of themes |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
108 |
foreach ( $this->theme_list as $i => &$theme ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
109 |
$this->named_theme_list[ $theme['theme_id'] ] =& $this->theme_list[$i]; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
110 |
|
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
111 |
$this->default_theme = ( $_ = getConfig('theme_default') ) ? $_ : $this->theme_list[0]['theme_id']; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
112 |
// Come up with the default style. If the CSS file specified in default_style exists, we're good, just |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
113 |
// use that. Otherwise, use the first stylesheet that comes to mind. |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
114 |
$df_data =& $this->named_theme_list[ $this->default_theme ]; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
115 |
$this->default_style = ( in_array($df_data['default_style'], $df_data['css']) ) ? $df_data['default_style'] : $df_data['css'][0]; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
116 |
} |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
117 |
|
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
118 |
/** |
488
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
119 |
* Failsafe constructor for upgrades. |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
120 |
*/ |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
121 |
|
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
122 |
function construct_compat() |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
123 |
{ |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
124 |
global $db, $session, $paths, $template, $plugins; // Common objects |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
125 |
$this->tpl_bool = Array(); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
126 |
$this->tpl_strings = Array(); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
127 |
$this->sidebar_extra = ''; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
128 |
$this->toolbar_menu = ''; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
129 |
$this->additional_headers = ''; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
130 |
$this->plugin_blocks = Array(); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
131 |
$this->theme_loaded = false; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
132 |
|
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
133 |
$this->fading_button = '<div style="background-image: url('.scriptPath.'/images/about-powered-enano-hover.png); background-repeat: no-repeat; width: 88px; height: 31px; margin: 0 auto 5px auto;"> |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
134 |
<a style="background-image: none; padding-right: 0;" href="http://enanocms.org/" onclick="window.open(this.href); return false;"><img style="border-width: 0;" alt=" " src="'.scriptPath.'/images/about-powered-enano.png" onmouseover="domOpacity(this, 100, 0, 500);" onmouseout="domOpacity(this, 0, 100, 500);" /></a> |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
135 |
</div>'; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
136 |
|
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
137 |
$this->theme_list = Array(); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
138 |
$this->named_theme_list = Array(); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
139 |
|
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
140 |
$q = $db->sql_query('SELECT theme_id, theme_name, enabled, default_style FROM ' . table_prefix . 'themes;'); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
141 |
if ( !$q ) |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
142 |
$db->_die('template.php selecting theme list'); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
143 |
|
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
144 |
$i = 0; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
145 |
while ( $row = $db->fetchrow() ) |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
146 |
{ |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
147 |
$this->theme_list[$i] = $row; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
148 |
$i++; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
149 |
} |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
150 |
// List out all CSS files for this theme |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
151 |
foreach ( $this->theme_list as $i => &$theme ) |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
152 |
{ |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
153 |
$theme['css'] = array(); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
154 |
$dir = ENANO_ROOT . "/themes/{$theme['theme_id']}/css"; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
155 |
if ( $dh = @opendir($dir) ) |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
156 |
{ |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
157 |
while ( ( $file = @readdir($dh) ) !== false ) |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
158 |
{ |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
159 |
if ( preg_match('/\.css$/', $file) ) |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
160 |
$theme['css'][] = preg_replace('/\.css$/', '', $file); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
161 |
} |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
162 |
closedir($dh); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
163 |
} |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
164 |
// No CSS files? If so, nuke it. |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
165 |
if ( count($theme['css']) < 1 ) |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
166 |
{ |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
167 |
unset($this->theme_list[$i]); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
168 |
} |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
169 |
} |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
170 |
$this->theme_list = array_values($this->theme_list); |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
171 |
// Create associative array of themes |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
172 |
foreach ( $this->theme_list as $i => &$theme ) |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
173 |
$this->named_theme_list[ $theme['theme_id'] ] =& $this->theme_list[$i]; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
174 |
|
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
175 |
$this->default_theme = ( $_ = getConfig('theme_default') ) ? $_ : $this->theme_list[0]['theme_id']; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
176 |
// Come up with the default style. If the CSS file specified in default_style exists, we're good, just |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
177 |
// use that. Otherwise, use the first stylesheet that comes to mind. |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
178 |
$df_data =& $this->named_theme_list[ $this->default_theme ]; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
179 |
$this->default_style = ( in_array($df_data['default_style'], $df_data['css']) ) ? $df_data['default_style'] : $df_data['css'][0]; |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
180 |
} |
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
181 |
|
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
182 |
/** |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
183 |
* Systematically deletes themes if they're blocked by theme security settings. Called when session->start() finishes. |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
184 |
*/ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
185 |
|
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
186 |
function process_theme_acls() |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
187 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
188 |
global $db, $session, $paths, $template, $plugins; // Common objects |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
189 |
|
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
190 |
// For each theme, check ACLs and delete from RAM if not authorized |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
191 |
foreach ( $this->theme_list as $i => $theme ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
192 |
{ |
488
5560ff856dd7
Oops: fixed broken template loader in upgrader for 1.0.x and 1.1.1
Dan
parents:
484
diff
changeset
|
193 |
if ( !@$theme['group_list'] ) |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
194 |
continue; |
472
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
195 |
if ( $theme['theme_id'] === getConfig('theme_default') ) |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
196 |
continue; |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
197 |
switch ( $theme['group_policy'] ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
198 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
199 |
case 'allow_all': |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
200 |
// Unconditionally allowed |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
201 |
continue; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
202 |
break; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
203 |
case 'whitelist': |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
204 |
// If we're not on the list, off to the left please |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
205 |
$list = enano_json_decode($theme['group_list']); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
206 |
$allowed = false; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
207 |
foreach ( $list as $acl ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
208 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
209 |
if ( !preg_match('/^(u|g):([0-9]+)$/', $acl, $match) ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
210 |
// Invalid list entry, silently allow (maybe not a good idea but |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
211 |
// really, these things are checked before they're inserted) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
212 |
continue 2; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
213 |
$mode = $match[1]; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
214 |
$id = intval($match[2]); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
215 |
switch ( $mode ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
216 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
217 |
case 'u': |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
218 |
$allowed = ( $id == $session->user_id ); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
219 |
if ( $allowed ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
220 |
break 2; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
221 |
break; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
222 |
case 'g': |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
223 |
$allowed = ( isset($session->groups[$id]) ); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
224 |
if ( $allowed ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
225 |
break 2; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
226 |
} |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
227 |
} |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
228 |
if ( !$allowed ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
229 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
230 |
unset($this->theme_list[$i]); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
231 |
} |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
232 |
break; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
233 |
case 'blacklist': |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
234 |
// If we're ON the list, off to the left please |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
235 |
$list = enano_json_decode($theme['group_list']); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
236 |
$allowed = true; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
237 |
foreach ( $list as $acl ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
238 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
239 |
if ( !preg_match('/^(u|g):([0-9]+)$/', $acl, $match) ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
240 |
// Invalid list entry, silently allow (maybe not a good idea but |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
241 |
// really, these things are checked before they're inserted) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
242 |
continue 2; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
243 |
$mode = $match[1]; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
244 |
$id = intval($match[2]); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
245 |
switch ( $mode ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
246 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
247 |
case 'u': |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
248 |
$allowed = ( $id != $session->user_id ); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
249 |
if ( !$allowed ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
250 |
break 2; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
251 |
break; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
252 |
case 'g': |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
253 |
$allowed = ( !isset($session->groups[$id]) ); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
254 |
if ( !$allowed ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
255 |
break 2; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
256 |
} |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
257 |
} |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
258 |
if ( !$allowed ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
259 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
260 |
unset($this->theme_list[$i]); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
261 |
} |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
262 |
break; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
263 |
} |
1 | 264 |
} |
265 |
||
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
266 |
$this->theme_list = array_values($this->theme_list); |
1 | 267 |
|
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
268 |
// Rebuild associative theme list |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
269 |
$this->named_theme_list = array(); |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
270 |
foreach ( $this->theme_list as $i => &$theme ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
271 |
$this->named_theme_list[ $theme['theme_id'] ] =& $this->theme_list[$i]; |
1 | 272 |
} |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
273 |
|
419
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
274 |
function sidebar_widget($t, $h, $use_normal_section = false) |
1 | 275 |
{ |
276 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
277 |
if(!defined('ENANO_TEMPLATE_LOADED')) |
|
278 |
{ |
|
279 |
$this->load_theme($session->theme, $session->style); |
|
280 |
} |
|
281 |
if(!$this->sidebar_widgets) |
|
282 |
$this->sidebar_widgets = ''; |
|
283 |
$tplvars = $this->extract_vars('elements.tpl'); |
|
419
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
284 |
|
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
285 |
if ( $use_normal_section ) |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
286 |
{ |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
287 |
$parser = $this->makeParserText($tplvars['sidebar_section']); |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
288 |
} |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
289 |
else |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
290 |
{ |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
291 |
$parser = $this->makeParserText($tplvars['sidebar_section_raw']); |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
292 |
} |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
293 |
|
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
294 |
$parser->assign_vars(Array('TITLE' => '{TITLE}','CONTENT' => $h)); |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
295 |
$this->plugin_blocks[$t] = $parser->run(); |
1 | 296 |
$this->sidebar_widgets .= $parser->run(); |
297 |
} |
|
298 |
function add_header($html) |
|
299 |
{ |
|
582
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
300 |
/* debug only ** |
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
301 |
$bt = debug_backtrace(); |
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
302 |
$bt = $bt[1]; |
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
303 |
$this->additional_headers .= "\n <!-- {$bt['file']}:{$bt['line']} -->\n " . $html; |
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
304 |
*/ |
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
305 |
$this->additional_headers .= "\n " . $html; |
1 | 306 |
} |
307 |
function get_css($s = false) |
|
308 |
{ |
|
309 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
310 |
if(!defined('ENANO_TEMPLATE_LOADED')) |
|
311 |
$this->load_theme($session->theme, $session->style); |
|
312 |
$path = ( $s ) ? 'css/'.$s : 'css/'.$this->style.'.css'; |
|
313 |
if ( !file_exists(ENANO_ROOT . '/themes/' . $this->theme . '/' . $path) ) |
|
314 |
{ |
|
315 |
echo "/* WARNING: Falling back to default file because file $path does not exist */\n"; |
|
316 |
$path = 'css/' . $this->style_list[0] . '.css'; |
|
317 |
} |
|
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
318 |
return '<enano:no-opt>' . $this->process_template($path) . '</enano:no-opt>'; |
1 | 319 |
} |
320 |
function load_theme($name = false, $css = false) |
|
321 |
{ |
|
322 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
323 |
$this->theme = ( $name ) ? $name : $session->theme; |
|
324 |
$this->style = ( $css ) ? $css : $session->style; |
|
325 |
if ( !$this->theme ) |
|
326 |
{ |
|
327 |
$this->theme = $this->theme_list[0]['theme_id']; |
|
468
194a19711346
Fixed the fact that cron just didn't work at all (brain fart that day or something)
Dan
parents:
458
diff
changeset
|
328 |
$this->style = preg_replace('/\.css$/', '', $this->theme_list[0]['default_style']); |
1 | 329 |
} |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
330 |
// Make sure we're allowed to use this theme. |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
331 |
if ( ( |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
332 |
// If it was removed, it's probably blocked by an ACL, or it was uninstalled |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
333 |
!isset($this->named_theme_list[$this->theme]) || |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
334 |
// Check if the theme is disabled |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
335 |
( isset($this->named_theme_list[$this->theme]) && $this->named_theme_list[$this->theme]['enabled'] == 0 ) ) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
336 |
// Above all, if it's a system theme, don't inhibit the loading process. |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
337 |
&& !in_array($this->theme, $this->system_themes) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
338 |
) |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
339 |
{ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
340 |
// No, something is preventing it - fall back to site default |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
341 |
$this->theme = $this->default_theme; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
342 |
|
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
343 |
// Come up with the default style. If the CSS file specified in default_style exists, we're good, just |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
344 |
// use that. Otherwise, use the first stylesheet that comes to mind. |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
345 |
$df_data =& $this->named_theme_list[ $this->theme ]; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
346 |
$this->style = ( in_array($df_data['default_style'], $df_data['css']) ) ? $df_data['default_style'] : $df_data['css'][0]; |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
347 |
} |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
348 |
// The list of styles for the currently selected theme |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
468
diff
changeset
|
349 |
$this->style_list =& $this->named_theme_list[ $this->theme ]['css']; |
1 | 350 |
$this->theme_loaded = true; |
351 |
} |
|
352 |
||
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
353 |
/** |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
354 |
* Initializes all variables related to on-page content. This includes sidebars and what have you. |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
355 |
* @param object Optional PageProcessor object to use for passing metadata and permissions on. If omitted, uses information from $paths and $session. |
578
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
356 |
* @param bool If true, re-inits even if already initted with this page_id and namespace |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
357 |
*/ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
358 |
|
578
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
359 |
function init_vars($page = false, $force_init = false) |
1 | 360 |
{ |
361 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
362 |
global $email; |
|
210
2b283402e4e4
Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
208
diff
changeset
|
363 |
global $lang; |
1 | 364 |
|
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
365 |
profiler_log("template: starting var init"); |
1 | 366 |
|
367 |
if(!$this->theme || !$this->style) |
|
368 |
{ |
|
369 |
$this->load_theme(); |
|
370 |
} |
|
371 |
||
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
372 |
if ( defined('ENANO_TEMPLATE_LOADED') ) |
1 | 373 |
{ |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
374 |
// trigger_error("\$template->init_vars() called more than once", E_USER_WARNING); |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
375 |
// die_semicritical('Illegal call', '<p>$template->init_vars() was called multiple times, this is not supposed to happen. Exiting with fatal error.</p>'); |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
376 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
377 |
else |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
378 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
379 |
@define('ENANO_TEMPLATE_LOADED', ''); |
1 | 380 |
} |
381 |
||
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
382 |
if ( is_object($page) && @get_class($page) == 'PageProcessor' ) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
383 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
384 |
$page_append = substr($paths->fullpage, strlen($paths->page)); |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
385 |
if ( isset($paths->nslist[$page->namespace]) ) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
386 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
387 |
$local_page = $paths->nslist[$page->namespace] . $page->page_id; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
388 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
389 |
else |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
390 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
391 |
$local_page = $page->namespace . substr($paths->nslist['Special'], -1) . $page->page_id . $page_append; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
392 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
393 |
$local_fullpage = $local_page . $page_append; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
394 |
$local_page_id =& $page->page_id; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
395 |
$local_namespace =& $page->namespace; |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
396 |
$local_page_exists =& $page->page_exists; |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
397 |
$perms =& $page->perms; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
398 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
399 |
else |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
400 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
401 |
$local_page =& $paths->page; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
402 |
$local_page_id =& $paths->page_id; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
403 |
$local_fullpage =& $paths->fullpage; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
404 |
$local_namespace =& $paths->namespace; |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
405 |
$local_page_exists =& $paths->page_exists; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
406 |
$local_page_protected =& $paths->page_protected; |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
407 |
$perms =& $session; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
408 |
} |
1 | 409 |
|
578
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
410 |
if ( $local_page_id === $this->initted_to_page_id && $local_namespace === $this->initted_to_namespace && $this->theme === $this->initted_to_theme['theme'] && $this->style === $this->initted_to_theme['style'] && !$force_init ) |
577
5118610ce160
Made template parser remember last initted page_id and namespace to avoid double init; made additional_headers reassign only do so if $template->additional_headers is empty (it's being blanked somehow, need to come up with a backtrace sometime)
Dan
parents:
573
diff
changeset
|
411 |
{ |
5118610ce160
Made template parser remember last initted page_id and namespace to avoid double init; made additional_headers reassign only do so if $template->additional_headers is empty (it's being blanked somehow, need to come up with a backtrace sometime)
Dan
parents:
573
diff
changeset
|
412 |
// we're already initted with this page. |
5118610ce160
Made template parser remember last initted page_id and namespace to avoid double init; made additional_headers reassign only do so if $template->additional_headers is empty (it's being blanked somehow, need to come up with a backtrace sometime)
Dan
parents:
573
diff
changeset
|
413 |
return true; |
5118610ce160
Made template parser remember last initted page_id and namespace to avoid double init; made additional_headers reassign only do so if $template->additional_headers is empty (it's being blanked somehow, need to come up with a backtrace sometime)
Dan
parents:
573
diff
changeset
|
414 |
} |
5118610ce160
Made template parser remember last initted page_id and namespace to avoid double init; made additional_headers reassign only do so if $template->additional_headers is empty (it's being blanked somehow, need to come up with a backtrace sometime)
Dan
parents:
573
diff
changeset
|
415 |
|
5118610ce160
Made template parser remember last initted page_id and namespace to avoid double init; made additional_headers reassign only do so if $template->additional_headers is empty (it's being blanked somehow, need to come up with a backtrace sometime)
Dan
parents:
573
diff
changeset
|
416 |
$this->initted_to_page_id = $local_page_id; |
5118610ce160
Made template parser remember last initted page_id and namespace to avoid double init; made additional_headers reassign only do so if $template->additional_headers is empty (it's being blanked somehow, need to come up with a backtrace sometime)
Dan
parents:
573
diff
changeset
|
417 |
$this->initted_to_namespace = $local_namespace; |
578
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
418 |
$this->initted_to_theme = array( |
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
419 |
'theme' => $this->theme, |
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
420 |
'style' => $this->style |
02bc119a6dd3
Fixed: init_vars double-init check ignored theme changes/reloads
Dan
parents:
577
diff
changeset
|
421 |
); |
577
5118610ce160
Made template parser remember last initted page_id and namespace to avoid double init; made additional_headers reassign only do so if $template->additional_headers is empty (it's being blanked somehow, need to come up with a backtrace sometime)
Dan
parents:
573
diff
changeset
|
422 |
|
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
423 |
if ( $local_page_exists && isset($paths->pages[$local_page]) ) |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
424 |
{ |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
425 |
$local_cdata =& $paths->pages[$local_page]; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
426 |
} |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
427 |
else |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
428 |
{ |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
429 |
// if the page doesn't exist but we're trying to load it, it was requested manually and $paths->cpage should match it. |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
430 |
if ( $paths->page_id == $local_page_id ) |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
431 |
{ |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
432 |
// load metadata from cpage |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
433 |
$local_cdata =& $paths->cpage; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
434 |
} |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
435 |
else |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
436 |
{ |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
437 |
// generate our own failsafe metadata |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
438 |
$local_cdata = array( |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
439 |
'urlname' => $local_page, |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
440 |
'urlname_nons' => $local_page_id, |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
441 |
'namespace' => $local_namespace, |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
442 |
'name' => get_page_title_ns($local_page_id, $local_namespace), |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
443 |
'comments_on' => 0, |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
444 |
'protected' => 0, |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
445 |
'wiki_mode' => 2, |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
446 |
'delvotes' => 0, |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
447 |
'delvote_ips' => serialize(array()) |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
448 |
); |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
449 |
} |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
450 |
} |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
451 |
|
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
452 |
// calculate protection |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
453 |
if ( !isset($local_page_protected) ) |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
454 |
{ |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
455 |
if ( $local_cdata['protected'] == 0 ) |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
456 |
{ |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
457 |
$local_page_protected = false; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
458 |
} |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
459 |
else if ( $local_cdata['protected'] == 1 ) |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
460 |
{ |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
461 |
$local_page_protected = true; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
462 |
} |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
463 |
else if ( $local_cdata['protected'] == 2 ) |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
464 |
{ |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
465 |
if ( |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
466 |
( !$session->user_logged_in || // Is the user logged in? |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
467 |
( $session->user_logged_in && $session->reg_time + ( 4 * 86400 ) >= time() ) ) // If so, have they been registered for 4 days? |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
468 |
&& !$perms->get_permissions('even_when_protected') ) // And of course, is there an ACL that overrides semi-protection? |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
469 |
{ |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
470 |
$local_page_protected = true; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
471 |
} |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
472 |
else |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
473 |
{ |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
474 |
$local_page_protected = false; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
475 |
} |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
476 |
} |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
477 |
} |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
478 |
|
1 | 479 |
$tplvars = $this->extract_vars('elements.tpl'); |
480 |
||
481 |
if(isset($_SERVER['HTTP_USER_AGENT']) && strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) |
|
482 |
{ |
|
483 |
$this->add_header(' |
|
484 |
<!--[if lt IE 7]> |
|
485 |
<script language="JavaScript"> |
|
486 |
function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6. |
|
487 |
{ |
|
86
c162ca39db8f
Finished pagination code (was incomplete in previous revision) and added a few hacks for an upcoming theme
Dan
parents:
85
diff
changeset
|
488 |
var arVersion = navigator.appVersion.split("MSIE"); |
c162ca39db8f
Finished pagination code (was incomplete in previous revision) and added a few hacks for an upcoming theme
Dan
parents:
85
diff
changeset
|
489 |
var version = parseFloat(arVersion[1]); |
1 | 490 |
if (version >= 5.5 && typeof(document.body.filters) == "object") |
491 |
{ |
|
492 |
for(var i=0; i<document.images.length; i++) |
|
493 |
{ |
|
494 |
var img = document.images[i]; |
|
495 |
continue; |
|
496 |
var imgName = img.src.toUpperCase(); |
|
497 |
if (imgName.substring(imgName.length-3, imgName.length) == "PNG") |
|
498 |
{ |
|
499 |
var imgID = (img.id) ? "id=\'" + img.id + "\' " : ""; |
|
500 |
var imgClass = (img.className) ? "class=\'" + img.className + "\' " : ""; |
|
501 |
var imgTitle = (img.title) ? "title=\'" + img.title + "\' " : "title=\'" + img.alt + "\' "; |
|
502 |
var imgStyle = "display:inline-block;" + img.style.cssText; |
|
503 |
if (img.align == "left") imgStyle = "float:left;" + imgStyle; |
|
504 |
if (img.align == "right") imgStyle = "float:right;" + imgStyle; |
|
505 |
if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle; |
|
506 |
var strNewHTML = "<span " + imgID + imgClass + imgTitle + " style=\\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" + "(src=\\\'" + img.src + "\\\', sizingMethod=\'scale\');\\"></span>"; |
|
507 |
img.outerHTML = strNewHTML; |
|
508 |
i = i-1; |
|
509 |
} |
|
510 |
} |
|
511 |
} |
|
512 |
} |
|
513 |
window.attachEvent("onload", correctPNG); |
|
514 |
</script> |
|
515 |
<![endif]--> |
|
516 |
'); |
|
517 |
} |
|
518 |
||
519 |
// Get the "article" button text (depends on namespace) |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
520 |
switch($local_namespace) { |
1 | 521 |
case "Article": |
522 |
default: |
|
211 | 523 |
$ns = $lang->get('onpage_lbl_page_article'); |
1 | 524 |
break; |
525 |
case "Admin": |
|
211 | 526 |
$ns = $lang->get('onpage_lbl_page_admin'); |
1 | 527 |
break; |
528 |
case "System": |
|
211 | 529 |
$ns = $lang->get('onpage_lbl_page_system'); |
1 | 530 |
break; |
531 |
case "File": |
|
211 | 532 |
$ns = $lang->get('onpage_lbl_page_file'); |
1 | 533 |
break; |
534 |
case "Help": |
|
211 | 535 |
$ns = $lang->get('onpage_lbl_page_help'); |
1 | 536 |
break; |
537 |
case "User": |
|
211 | 538 |
$ns = $lang->get('onpage_lbl_page_user'); |
1 | 539 |
break; |
540 |
case "Special": |
|
211 | 541 |
$ns = $lang->get('onpage_lbl_page_special'); |
1 | 542 |
break; |
543 |
case "Template": |
|
211 | 544 |
$ns = $lang->get('onpage_lbl_page_template'); |
1 | 545 |
break; |
546 |
case "Project": |
|
211 | 547 |
$ns = $lang->get('onpage_lbl_page_project'); |
1 | 548 |
break; |
549 |
case "Category": |
|
211 | 550 |
$ns = $lang->get('onpage_lbl_page_category'); |
1 | 551 |
break; |
312
6c7060d36a23
Improved physical pages: they support comments and have their own dedicated namespace now. Still some consistency fixes to make.
Dan
parents:
311
diff
changeset
|
552 |
case "Anonymous": |
6c7060d36a23
Improved physical pages: they support comments and have their own dedicated namespace now. Still some consistency fixes to make.
Dan
parents:
311
diff
changeset
|
553 |
$ns = 'external page'; |
6c7060d36a23
Improved physical pages: they support comments and have their own dedicated namespace now. Still some consistency fixes to make.
Dan
parents:
311
diff
changeset
|
554 |
break; |
1 | 555 |
} |
556 |
$this->namespace_string = $ns; |
|
211 | 557 |
unset($ns); |
1 | 558 |
$code = $plugins->setHook('page_type_string_set'); |
559 |
foreach ( $code as $cmd ) |
|
560 |
{ |
|
561 |
eval($cmd); |
|
562 |
} |
|
563 |
$ns =& $this->namespace_string; |
|
564 |
||
565 |
// Initialize the toolbar |
|
566 |
$tb = ''; |
|
567 |
||
568 |
// Create "xx page" button |
|
569 |
||
570 |
$btn_selected = ( isset($tplvars['toolbar_button_selected'])) ? $tplvars['toolbar_button_selected'] : $tplvars['toolbar_button']; |
|
571 |
$parser = $this->makeParserText($btn_selected); |
|
572 |
||
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
573 |
$parser->assign_vars(array( |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
574 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxReset()); return false; }" title="' . $lang->get('onpage_tip_article') . '" accesskey="a"', |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
575 |
'PARENTFLAGS' => 'id="mdgToolbar_article"', |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
576 |
'HREF' => makeUrl($local_page, null, true), |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
577 |
'TEXT' => $this->namespace_string |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
578 |
)); |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
579 |
|
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
580 |
$tb .= $parser->run(); |
1 | 581 |
|
582 |
$button = $this->makeParserText($tplvars['toolbar_button']); |
|
583 |
||
584 |
// Page toolbar |
|
585 |
// Comments button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
586 |
if ( $perms->get_permissions('read') && getConfig('enable_comments')=='1' && $local_cdata['comments_on'] == 1 ) |
1 | 587 |
{ |
588 |
||
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
589 |
$e = $db->sql_query('SELECT approved FROM '.table_prefix.'comments WHERE page_id=\''.$local_page_id.'\' AND namespace=\''.$local_namespace.'\';'); |
1 | 590 |
if ( !$e ) |
591 |
{ |
|
592 |
$db->_die(); |
|
593 |
} |
|
594 |
$nc = $db->numrows(); |
|
595 |
$nu = 0; |
|
596 |
$na = 0; |
|
597 |
||
598 |
while ( $r = $db->fetchrow() ) |
|
599 |
{ |
|
600 |
if ( !$r['approved'] ) |
|
601 |
{ |
|
602 |
$nu++; |
|
603 |
} |
|
604 |
else |
|
605 |
{ |
|
606 |
$na++; |
|
607 |
} |
|
608 |
} |
|
609 |
||
610 |
$db->free_result(); |
|
579
6e23d8a99616
Fixed access type warning in discussion button generation in template
Dan
parents:
578
diff
changeset
|
611 |
$n = ( $session->check_acl_scope('mod_comments', $local_namespace) && $perms->get_permissions('mod_comments') ) ? (string)$nc : (string)$na; |
6e23d8a99616
Fixed access type warning in discussion button generation in template
Dan
parents:
578
diff
changeset
|
612 |
if ( $session->check_acl_scope('mod_comments', $local_namespace) && $perms->get_permissions('mod_comments') && $nu > 0 ) |
1 | 613 |
{ |
211 | 614 |
$subst = array( |
615 |
'num_comments' => $nc, |
|
616 |
'num_unapp' => $nu |
|
617 |
); |
|
618 |
$btn_text = $lang->get('onpage_btn_discussion_unapp', $subst); |
|
619 |
} |
|
620 |
else |
|
621 |
{ |
|
622 |
$subst = array( |
|
623 |
'num_comments' => $nc |
|
624 |
); |
|
625 |
$btn_text = $lang->get('onpage_btn_discussion', $subst); |
|
1 | 626 |
} |
627 |
||
628 |
$button->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
629 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxComments()); return false; }" title="' . $lang->get('onpage_tip_comments') . '" accesskey="c"', |
1 | 630 |
'PARENTFLAGS' => 'id="mdgToolbar_discussion"', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
631 |
'HREF' => makeUrl($local_page, 'do=comments', true), |
211 | 632 |
'TEXT' => $btn_text, |
1 | 633 |
)); |
634 |
||
635 |
$tb .= $button->run(); |
|
636 |
} |
|
637 |
// Edit button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
638 |
if($perms->get_permissions('read') && $session->check_acl_scope('edit_page', $local_namespace) && ( $perms->get_permissions('edit_page') && ( ( $paths->page_protected && $perms->get_permissions('even_when_protected') ) || !$paths->page_protected ) ) ) |
1 | 639 |
{ |
640 |
$button->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
641 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxEditor()); return false; }" title="' . $lang->get('onpage_tip_edit') . '" accesskey="e"', |
1 | 642 |
'PARENTFLAGS' => 'id="mdgToolbar_edit"', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
643 |
'HREF' => makeUrl($local_page, 'do=edit', true), |
211 | 644 |
'TEXT' => $lang->get('onpage_btn_edit') |
1 | 645 |
)); |
646 |
$tb .= $button->run(); |
|
647 |
// View source button |
|
648 |
} |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
649 |
else if ( $session->check_acl_scope('view_source', $local_namespace) && $perms->get_permissions('view_source') && ( !$perms->get_permissions('edit_page') || !$perms->get_permissions('even_when_protected') && $paths->page_protected ) && $local_namespace != 'Anonymous') |
1 | 650 |
{ |
651 |
$button->assign_vars(array( |
|
335
67bd3121a12e
Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
parents:
326
diff
changeset
|
652 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxEditor()); return false; }" title="' . $lang->get('onpage_tip_viewsource') . '" accesskey="e"', |
1 | 653 |
'PARENTFLAGS' => 'id="mdgToolbar_edit"', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
654 |
'HREF' => makeUrl($local_page, 'do=viewsource', true), |
211 | 655 |
'TEXT' => $lang->get('onpage_btn_viewsource') |
1 | 656 |
)); |
657 |
$tb .= $button->run(); |
|
658 |
} |
|
659 |
// History button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
660 |
if ( $perms->get_permissions('read') && $session->check_acl_scope('history_view', $local_namespace) && $local_page_exists && $perms->get_permissions('history_view') ) |
1 | 661 |
{ |
662 |
$button->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
663 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxHistory()); return false; }" title="' . $lang->get('onpage_tip_history') . '" accesskey="h"', |
1 | 664 |
'PARENTFLAGS' => 'id="mdgToolbar_history"', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
665 |
'HREF' => makeUrl($local_page, 'do=history', true), |
211 | 666 |
'TEXT' => $lang->get('onpage_btn_history') |
1 | 667 |
)); |
668 |
$tb .= $button->run(); |
|
669 |
} |
|
670 |
||
671 |
$menubtn = $this->makeParserText($tplvars['toolbar_menu_button']); |
|
672 |
||
673 |
// Additional actions menu |
|
674 |
// Rename button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
675 |
if ( $perms->get_permissions('read') && $session->check_acl_scope('rename', $local_namespace) && $local_page_exists && ( $perms->get_permissions('rename') && ( $paths->page_protected && $perms->get_permissions('even_when_protected') || !$paths->page_protected ) ) ) |
1 | 676 |
{ |
677 |
$menubtn->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
678 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxRename()); return false; }" title="' . $lang->get('onpage_tip_rename') . '" accesskey="r"', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
679 |
'HREF' => makeUrl($local_page, 'do=rename', true), |
211 | 680 |
'TEXT' => $lang->get('onpage_btn_rename'), |
1 | 681 |
)); |
682 |
$this->toolbar_menu .= $menubtn->run(); |
|
683 |
} |
|
684 |
||
685 |
// Vote-to-delete button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
686 |
if ( $paths->wiki_mode && $session->check_acl_scope('vote_delete', $local_namespace) && $perms->get_permissions('vote_delete') && $local_page_exists) |
1 | 687 |
{ |
688 |
$menubtn->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
689 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxDelVote()); return false; }" title="' . $lang->get('onpage_tip_delvote') . '" accesskey="d"', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
690 |
'HREF' => makeUrl($local_page, 'do=delvote', true), |
211 | 691 |
'TEXT' => $lang->get('onpage_btn_votedelete'), |
1 | 692 |
)); |
693 |
$this->toolbar_menu .= $menubtn->run(); |
|
694 |
} |
|
695 |
||
696 |
// Clear-votes button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
697 |
if ( $perms->get_permissions('read') && $session->check_acl_scope('vote_reset', $local_namespace) && $paths->wiki_mode && $local_page_exists && $perms->get_permissions('vote_reset') && $local_cdata['delvotes'] > 0) |
1 | 698 |
{ |
699 |
$menubtn->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
700 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxResetDelVotes()); return false; }" title="' . $lang->get('onpage_tip_resetvotes') . '" accesskey="y"', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
701 |
'HREF' => makeUrl($local_page, 'do=resetvotes', true), |
211 | 702 |
'TEXT' => $lang->get('onpage_btn_votedelete_reset'), |
1 | 703 |
)); |
704 |
$this->toolbar_menu .= $menubtn->run(); |
|
705 |
} |
|
706 |
||
707 |
// Printable page button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
708 |
if ( $local_page_exists ) |
1 | 709 |
{ |
710 |
$menubtn->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
711 |
'FLAGS' => 'title="' . $lang->get('onpage_tip_printable') . '"', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
712 |
'HREF' => makeUrl($local_page, 'printable=yes', true), |
211 | 713 |
'TEXT' => $lang->get('onpage_btn_printable'), |
1 | 714 |
)); |
715 |
$this->toolbar_menu .= $menubtn->run(); |
|
716 |
} |
|
717 |
||
718 |
// Protect button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
719 |
if($perms->get_permissions('read') && $session->check_acl_scope('protect', $local_namespace) && $paths->wiki_mode && $local_page_exists && $perms->get_permissions('protect')) |
1 | 720 |
{ |
721 |
||
722 |
$label = $this->makeParserText($tplvars['toolbar_label']); |
|
211 | 723 |
$label->assign_vars(array('TEXT' => $lang->get('onpage_lbl_protect'))); |
1 | 724 |
$t0 = $label->run(); |
725 |
||
726 |
$ctmp = ''; |
|
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
727 |
if ( $local_cdata['protected'] == 1 ) |
1 | 728 |
{ |
729 |
$ctmp=' style="text-decoration: underline;"'; |
|
730 |
} |
|
731 |
$menubtn->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
732 |
'FLAGS' => 'accesskey="i" onclick="if ( !KILL_SWITCH ) { ajaxProtect(1); return false; }" id="protbtn_1" title="' . $lang->get('onpage_tip_protect_on') . '"'.$ctmp, |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
733 |
'HREF' => makeUrl($local_page, 'do=protect&level=1', true), |
211 | 734 |
'TEXT' => $lang->get('onpage_btn_protect_on') |
1 | 735 |
)); |
736 |
$t1 = $menubtn->run(); |
|
737 |
||
738 |
$ctmp = ''; |
|
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
739 |
if ( $local_cdata['protected'] == 0 ) |
1 | 740 |
{ |
741 |
$ctmp=' style="text-decoration: underline;"'; |
|
742 |
} |
|
743 |
$menubtn->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
744 |
'FLAGS' => 'accesskey="o" onclick="if ( !KILL_SWITCH ) { ajaxProtect(0); return false; }" id="protbtn_0" title="' . $lang->get('onpage_tip_protect_off') . '"'.$ctmp, |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
745 |
'HREF' => makeUrl($local_page, 'do=protect&level=0', true), |
211 | 746 |
'TEXT' => $lang->get('onpage_btn_protect_off') |
1 | 747 |
)); |
748 |
$t2 = $menubtn->run(); |
|
749 |
||
750 |
$ctmp = ''; |
|
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
751 |
if ( $local_cdata['protected'] == 2 ) |
1 | 752 |
{ |
753 |
$ctmp = ' style="text-decoration: underline;"'; |
|
754 |
} |
|
755 |
$menubtn->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
756 |
'FLAGS' => 'accesskey="p" onclick="if ( !KILL_SWITCH ) { ajaxProtect(2); return false; }" id="protbtn_2" title="' . $lang->get('onpage_tip_protect_semi') . '"'.$ctmp, |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
757 |
'HREF' => makeUrl($local_page, 'do=protect&level=2', true), |
211 | 758 |
'TEXT' => $lang->get('onpage_btn_protect_semi') |
1 | 759 |
)); |
760 |
$t3 = $menubtn->run(); |
|
761 |
||
762 |
$this->toolbar_menu .= ' <table border="0" cellspacing="0" cellpadding="0"> |
|
763 |
<tr> |
|
764 |
<td>'.$t0.'</td> |
|
765 |
<td>'.$t1.'</td> |
|
766 |
<td>'.$t2.'</td> |
|
767 |
<td>'.$t3.'</td> |
|
768 |
</tr> |
|
769 |
</table>'; |
|
770 |
} |
|
771 |
||
772 |
// Wiki mode button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
773 |
if($perms->get_permissions('read') && $session->check_acl_scope('set_wiki_mode', $local_namespace) && $local_page_exists && $perms->get_permissions('set_wiki_mode')) |
1 | 774 |
{ |
775 |
// label at start |
|
776 |
$label = $this->makeParserText($tplvars['toolbar_label']); |
|
211 | 777 |
$label->assign_vars(array('TEXT' => $lang->get('onpage_lbl_wikimode'))); |
1 | 778 |
$t0 = $label->run(); |
779 |
||
780 |
// on button |
|
781 |
$ctmp = ''; |
|
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
782 |
if ( $local_cdata['wiki_mode'] == 1 ) |
1 | 783 |
{ |
784 |
$ctmp = ' style="text-decoration: underline;"'; |
|
785 |
} |
|
786 |
$menubtn->assign_vars(array( |
|
102
d807dcd7aed7
[comments] fixed edit button (source wasn't getting filled)
Dan
parents:
98
diff
changeset
|
787 |
'FLAGS' => /* 'onclick="if ( !KILL_SWITCH ) { ajaxSetWikiMode(1); return false; }" id="wikibtn_1" title="Forces wiki functions to be allowed on this page."'. */ $ctmp, |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
788 |
'HREF' => makeUrl($local_page, 'do=setwikimode&level=1', true), |
211 | 789 |
'TEXT' => $lang->get('onpage_btn_wikimode_on') |
1 | 790 |
)); |
791 |
$t1 = $menubtn->run(); |
|
792 |
||
793 |
// off button |
|
794 |
$ctmp = ''; |
|
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
795 |
if ( $local_cdata['wiki_mode'] == 0 ) |
1 | 796 |
{ |
797 |
$ctmp=' style="text-decoration: underline;"'; |
|
798 |
} |
|
799 |
$menubtn->assign_vars(array( |
|
102
d807dcd7aed7
[comments] fixed edit button (source wasn't getting filled)
Dan
parents:
98
diff
changeset
|
800 |
'FLAGS' => /* 'onclick="if ( !KILL_SWITCH ) { ajaxSetWikiMode(0); return false; }" id="wikibtn_0" title="Forces wiki functions to be disabled on this page."'. */ $ctmp, |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
801 |
'HREF' => makeUrl($local_page, 'do=setwikimode&level=0', true), |
211 | 802 |
'TEXT' => $lang->get('onpage_btn_wikimode_off') |
1 | 803 |
)); |
804 |
$t2 = $menubtn->run(); |
|
805 |
||
806 |
// global button |
|
807 |
$ctmp = ''; |
|
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
808 |
if ( $local_cdata['wiki_mode'] == 2 ) |
1 | 809 |
{ |
810 |
$ctmp=' style="text-decoration: underline;"'; |
|
811 |
} |
|
812 |
$menubtn->assign_vars(array( |
|
102
d807dcd7aed7
[comments] fixed edit button (source wasn't getting filled)
Dan
parents:
98
diff
changeset
|
813 |
'FLAGS' => /* 'onclick="if ( !KILL_SWITCH ) { ajaxSetWikiMode(2); return false; }" id="wikibtn_2" title="Causes this page to use the global wiki mode setting (default)"'. */ $ctmp, |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
814 |
'HREF' => makeUrl($local_page, 'do=setwikimode&level=2', true), |
211 | 815 |
'TEXT' => $lang->get('onpage_btn_wikimode_global') |
1 | 816 |
)); |
817 |
$t3 = $menubtn->run(); |
|
818 |
||
819 |
// Tack it onto the list of buttons that are already there... |
|
820 |
$this->toolbar_menu .= ' <table border="0" cellspacing="0" cellpadding="0"> |
|
821 |
<tr> |
|
822 |
<td>'.$t0.'</td> |
|
823 |
<td>'.$t1.'</td> |
|
824 |
<td>'.$t2.'</td> |
|
825 |
<td>'.$t3.'</td> |
|
826 |
</tr> |
|
827 |
</table>'; |
|
828 |
} |
|
829 |
||
830 |
// Clear logs button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
831 |
if ( $perms->get_permissions('read') && $session->check_acl_scope('clear_logs', $local_namespace) && $perms->get_permissions('clear_logs') ) |
1 | 832 |
{ |
833 |
$menubtn->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
834 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxClearLogs()); return false; }" title="' . $lang->get('onpage_tip_flushlogs') . '" accesskey="l"', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
835 |
'HREF' => makeUrl($local_page, 'do=flushlogs', true), |
211 | 836 |
'TEXT' => $lang->get('onpage_btn_clearlogs'), |
1 | 837 |
)); |
838 |
$this->toolbar_menu .= $menubtn->run(); |
|
839 |
} |
|
840 |
||
841 |
// Delete page button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
842 |
if ( $perms->get_permissions('read') && $session->check_acl_scope('delete_page', $local_namespace) && $perms->get_permissions('delete_page') && $local_page_exists ) |
1 | 843 |
{ |
211 | 844 |
$s = $lang->get('onpage_btn_deletepage'); |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
845 |
if ( $local_cdata['delvotes'] == 1 ) |
1 | 846 |
{ |
211 | 847 |
$subst = array( |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
848 |
'num_votes' => $local_cdata['delvotes'], |
211 | 849 |
'plural' => '' |
850 |
); |
|
851 |
$s .= $lang->get('onpage_btn_deletepage_votes', $subst); |
|
1 | 852 |
} |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
853 |
else if ( $local_cdata['delvotes'] > 1 ) |
1 | 854 |
{ |
211 | 855 |
$subst = array( |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
856 |
'num_votes' => $local_cdata['delvotes'], |
211 | 857 |
'plural' => $lang->get('meta_plural') |
858 |
); |
|
859 |
$s .= $lang->get('onpage_btn_deletepage_votes', $subst); |
|
1 | 860 |
} |
861 |
||
862 |
$menubtn->assign_vars(array( |
|
314
474f8be55943
Localized remainder of on-page tools and parts of PageProcess
Dan
parents:
313
diff
changeset
|
863 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxDeletePage()); return false; }" title="' . $lang->get('onpage_tip_deletepage') . '" accesskey="k"', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
864 |
'HREF' => makeUrl($local_page, 'do=deletepage', true), |
1 | 865 |
'TEXT' => $s, |
866 |
)); |
|
867 |
$this->toolbar_menu .= $menubtn->run(); |
|
868 |
||
869 |
} |
|
870 |
||
871 |
// Password-protect button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
872 |
if(isset($local_cdata['password']) && $session->check_acl_scope('password_set', $local_namespace) && $session->check_acl_scope('password_reset', $local_namespace)) |
1 | 873 |
{ |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
874 |
if ( $local_cdata['password'] == '' ) |
1 | 875 |
{ |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
876 |
$a = $perms->get_permissions('password_set'); |
1 | 877 |
} |
878 |
else |
|
879 |
{ |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
880 |
$a = $perms->get_permissions('password_reset'); |
1 | 881 |
} |
882 |
} |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
883 |
else if ( $session->check_acl_scope('password_set', $local_namespace) ) |
1 | 884 |
{ |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
885 |
$a = $perms->get_permissions('password_set'); |
1 | 886 |
} |
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
887 |
else |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
888 |
{ |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
889 |
$a = false; |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
890 |
} |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
891 |
if ( $a && $perms->get_permissions('read') && $local_page_exists ) |
1 | 892 |
{ |
893 |
// label at start |
|
894 |
$label = $this->makeParserText($tplvars['toolbar_label']); |
|
211 | 895 |
$label->assign_vars(array('TEXT' => $lang->get('onpage_lbl_password'))); |
1 | 896 |
$t0 = $label->run(); |
897 |
||
898 |
$menubtn->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
899 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxSetPassword()); return false; }" title="' . $lang->get('onpage_tip_password') . '"', |
1 | 900 |
'HREF' => '#', |
211 | 901 |
'TEXT' => $lang->get('onpage_btn_password_set'), |
1 | 902 |
)); |
903 |
$t = $menubtn->run(); |
|
904 |
||
905 |
$this->toolbar_menu .= '<table border="0" cellspacing="0" cellpadding="0"><tr><td>'.$t0.'</td><td><input type="password" id="mdgPassSetField" size="10" /></td><td>'.$t.'</td></tr></table>'; |
|
906 |
} |
|
907 |
||
908 |
// Manage ACLs button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
909 |
if ( !$paths->anonymous_page && $session->check_acl_scope('edit_acl', $local_namespace) && ( $perms->get_permissions('edit_acl') || ( defined('ACL_ALWAYS_ALLOW_ADMIN_EDIT_ACL') && $session->user_level >= USER_LEVEL_ADMIN ) ) ) |
1 | 910 |
{ |
911 |
$menubtn->assign_vars(array( |
|
265
7e0cdf71b1bb
Some (not much) progress with localizing tooltips on the pagebar. Still aways to go and committing so as to merge changes from stable
Dan
parents:
248
diff
changeset
|
912 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { return ajaxOpenACLManager(); }" title="' . $lang->get('onpage_tip_aclmanager') . '" accesskey="m"', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
913 |
'HREF' => makeUrl($local_page, 'do=aclmanager', true), |
211 | 914 |
'TEXT' => $lang->get('onpage_btn_acl'), |
1 | 915 |
)); |
916 |
$this->toolbar_menu .= $menubtn->run(); |
|
917 |
} |
|
918 |
||
919 |
// Administer page button |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
920 |
if ( $session->user_level >= USER_LEVEL_ADMIN && $local_page_exists ) |
1 | 921 |
{ |
922 |
$menubtn->assign_vars(array( |
|
314
474f8be55943
Localized remainder of on-page tools and parts of PageProcess
Dan
parents:
313
diff
changeset
|
923 |
'FLAGS' => 'onclick="if ( !KILL_SWITCH ) { void(ajaxAdminPage()); return false; }" title="' . $lang->get('onpage_tip_adminoptions') . '" accesskey="g"', |
1 | 924 |
'HREF' => makeUrlNS('Special', 'Administration', 'module='.$paths->nslist['Admin'].'PageManager', true), |
211 | 925 |
'TEXT' => $lang->get('onpage_btn_admin'), |
1 | 926 |
)); |
927 |
$this->toolbar_menu .= $menubtn->run(); |
|
928 |
} |
|
929 |
||
930 |
if ( strlen($this->toolbar_menu) > 0 ) |
|
931 |
{ |
|
932 |
$button->assign_vars(array( |
|
314
474f8be55943
Localized remainder of on-page tools and parts of PageProcess
Dan
parents:
313
diff
changeset
|
933 |
'FLAGS' => 'id="mdgToolbar_moreoptions" onclick="if ( !KILL_SWITCH ) { return false; }" title="' . $lang->get('onpage_tip_moreoptions') . '"', |
1 | 934 |
'PARENTFLAGS' => '', |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
935 |
'HREF' => makeUrl($local_page, 'do=moreoptions', true), |
211 | 936 |
'TEXT' => $lang->get('onpage_btn_moreoptions') |
1 | 937 |
)); |
938 |
$tb .= $button->run(); |
|
939 |
} |
|
940 |
||
941 |
$is_opera = (isset($_SERVER['HTTP_USER_AGENT']) && strstr($_SERVER['HTTP_USER_AGENT'], 'Opera')) ? true : false; |
|
942 |
||
943 |
$this->tpl_bool = Array( |
|
944 |
'auth_admin'=>$session->user_level >= USER_LEVEL_ADMIN ? true : false, |
|
945 |
'user_logged_in'=>$session->user_logged_in, |
|
946 |
'opera'=>$is_opera, |
|
947 |
); |
|
948 |
||
949 |
if($session->sid_super) { $ash = '&auth='.$session->sid_super; $asq = "?auth=".$session->sid_super; $asa = "&auth=".$session->sid_super; $as2 = htmlspecialchars(urlSeparator).'auth='.$session->sid_super; } |
|
950 |
else { $asq=''; $asa=''; $as2 = ''; $ash = ''; } |
|
951 |
||
952 |
$code = $plugins->setHook('compile_template'); |
|
953 |
foreach ( $code as $cmd ) |
|
954 |
{ |
|
955 |
eval($cmd); |
|
956 |
} |
|
957 |
||
958 |
// Some additional sidebar processing |
|
959 |
if($this->sidebar_extra != '') { |
|
960 |
$se = $this->sidebar_extra; |
|
961 |
$parser = $this->makeParserText($tplvars['sidebar_section_raw']); |
|
962 |
$parser->assign_vars(Array('TITLE'=>'Links','CONTENT'=>$se)); |
|
963 |
$this->sidebar_extra = $parser->run(); |
|
964 |
} |
|
965 |
||
966 |
$this->sidebar_extra = $this->sidebar_extra.$this->sidebar_widgets; |
|
967 |
||
968 |
$this->tpl_bool['fixed_menus'] = false; |
|
969 |
/* if($this->sidebar_extra == '') $this->tpl_bool['right_sidebar'] = false; |
|
970 |
else */ $this->tpl_bool['right_sidebar'] = true; |
|
971 |
||
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
972 |
$this->tpl_bool['auth_rename'] = ( $local_page_exists && $session->check_acl_scope('rename', $local_namespace) && ( $perms->get_permissions('rename') && ( $paths->page_protected && $perms->get_permissions('even_when_protected') || !$paths->page_protected ) )); |
1 | 973 |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
974 |
$this->tpl_bool['enable_uploads'] = ( getConfig('enable_uploads') == '1' && $session->get_permissions('upload_files') ) ? true : false; |
1 | 975 |
|
976 |
$this->tpl_bool['stupid_mode'] = false; |
|
977 |
||
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
978 |
$this->tpl_bool['in_admin'] = ( ( $local_page_id == 'Administration' && $local_namespace == 'Special' ) || $local_namespace == 'Admin' ); |
1 | 979 |
|
980 |
$p = ( isset($_GET['printable']) ) ? '/printable' : ''; |
|
981 |
||
982 |
// Add the e-mail address client code to the header |
|
983 |
$this->add_header($email->jscode()); |
|
984 |
||
985 |
// Generate the code for the Log out and Change theme sidebar buttons |
|
986 |
// Once again, the new template parsing system can be used here |
|
987 |
||
988 |
$parser = $this->makeParserText($tplvars['sidebar_button']); |
|
989 |
||
990 |
$parser->assign_vars(Array( |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
991 |
'HREF'=>makeUrlNS('Special', "Logout/{$session->csrf_token}/{$local_page}"), |
57
b354deeaa4c4
Vastly improved compatibility with older versions of IE, particularly 5.0, through the use of a kill switch that turns off all AJAX functions
Dan
parents:
54
diff
changeset
|
992 |
'FLAGS'=>'onclick="if ( !KILL_SWITCH ) { mb_logout(); return false; }"', |
215 | 993 |
'TEXT'=>$lang->get('sidebar_btn_logout'), |
1 | 994 |
)); |
995 |
||
996 |
$logout_link = $parser->run(); |
|
997 |
||
998 |
$parser->assign_vars(Array( |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
999 |
'HREF'=>makeUrlNS('Special', 'Login/' . $local_page), |
57
b354deeaa4c4
Vastly improved compatibility with older versions of IE, particularly 5.0, through the use of a kill switch that turns off all AJAX functions
Dan
parents:
54
diff
changeset
|
1000 |
'FLAGS'=>'onclick="if ( !KILL_SWITCH ) { ajaxStartLogin(); return false; }"', |
215 | 1001 |
'TEXT'=>$lang->get('sidebar_btn_login'), |
1 | 1002 |
)); |
1003 |
||
1004 |
$login_link = $parser->run(); |
|
1005 |
||
1006 |
$parser->assign_vars(Array( |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1007 |
'HREF'=>makeUrlNS('Special', 'ChangeStyle/'.$local_page), |
57
b354deeaa4c4
Vastly improved compatibility with older versions of IE, particularly 5.0, through the use of a kill switch that turns off all AJAX functions
Dan
parents:
54
diff
changeset
|
1008 |
'FLAGS'=>'onclick="if ( !KILL_SWITCH ) { ajaxChangeStyle(); return false; }"', |
215 | 1009 |
'TEXT'=>$lang->get('sidebar_btn_changestyle'), |
1 | 1010 |
)); |
1011 |
||
1012 |
$theme_link = $parser->run(); |
|
1013 |
||
60
71b50f8c8f85
Changed administration login request to use the AJAX login form; made high-level authentication more apparent in the AJAX box; recompiled Oxygen Mint
Dan
parents:
59
diff
changeset
|
1014 |
$parser->assign_vars(Array( |
71b50f8c8f85
Changed administration login request to use the AJAX login form; made high-level authentication more apparent in the AJAX box; recompiled Oxygen Mint
Dan
parents:
59
diff
changeset
|
1015 |
'HREF'=>makeUrlNS('Special', 'Administration'), |
71b50f8c8f85
Changed administration login request to use the AJAX login form; made high-level authentication more apparent in the AJAX box; recompiled Oxygen Mint
Dan
parents:
59
diff
changeset
|
1016 |
'FLAGS'=>'onclick="if ( !KILL_SWITCH ) { void(ajaxStartAdminLogin()); return false; }"', |
215 | 1017 |
'TEXT'=>$lang->get('sidebar_btn_administration'), |
60
71b50f8c8f85
Changed administration login request to use the AJAX login form; made high-level authentication more apparent in the AJAX box; recompiled Oxygen Mint
Dan
parents:
59
diff
changeset
|
1018 |
)); |
71b50f8c8f85
Changed administration login request to use the AJAX login form; made high-level authentication more apparent in the AJAX box; recompiled Oxygen Mint
Dan
parents:
59
diff
changeset
|
1019 |
|
71b50f8c8f85
Changed administration login request to use the AJAX login form; made high-level authentication more apparent in the AJAX box; recompiled Oxygen Mint
Dan
parents:
59
diff
changeset
|
1020 |
$admin_link = $parser->run(); |
71b50f8c8f85
Changed administration login request to use the AJAX login form; made high-level authentication more apparent in the AJAX box; recompiled Oxygen Mint
Dan
parents:
59
diff
changeset
|
1021 |
|
1 | 1022 |
$SID = ($session->sid_super) ? $session->sid_super : ''; |
1023 |
||
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1024 |
$urlname_clean = str_replace('\'', '\\\'', str_replace('\\', '\\\\', dirtify_page_id($local_fullpage))); |
15
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
13
diff
changeset
|
1025 |
$urlname_clean = strtr( $urlname_clean, array( '<' => '<', '>' => '>' ) ); |
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
13
diff
changeset
|
1026 |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1027 |
$urlname_jssafe = sanitize_page_id($local_fullpage); |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
1028 |
$physical_urlname_jssafe = sanitize_page_id($paths->fullpage); |
22
d0314575e2f0
More preliminary l10n work; userpage portal style basics implemented
Dan
parents:
21
diff
changeset
|
1029 |
|
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
1030 |
if ( $session->check_acl_scope('even_when_protected', $local_namespace) ) |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
1031 |
{ |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
1032 |
$protected = $paths->page_protected && !$perms->get_permissions('even_when_protected'); |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
1033 |
} |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
1034 |
else |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
1035 |
{ |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
1036 |
$protected = false; |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
1037 |
} |
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
1038 |
|
1 | 1039 |
// Generate the dynamic javascript vars |
1040 |
$js_dynamic = ' <script type="text/javascript">// <![CDATA[ |
|
1041 |
// This section defines some basic and very important variables that are used later in the static Javascript library. |
|
1042 |
// SKIN DEVELOPERS: The template variable for this code block is {JS_DYNAMIC_VARS}. This MUST be inserted BEFORE the tag that links to the main Javascript lib. |
|
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
1043 |
var title = \''. $urlname_jssafe .'\'; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
1044 |
var physical_title = \'' . $physical_urlname_jssafe . '\'; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
1045 |
var page_exists = '. ( ( $local_page_exists) ? 'true' : 'false' ) .'; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
1046 |
var scriptPath = \''. scriptPath .'\'; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
1047 |
var contentPath = \''.contentPath.'\'; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
1048 |
var ENANO_SID = \'' . $SID . '\'; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
1049 |
var user_level = ' . $session->user_level . '; |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
1050 |
var auth_level = ' . $session->auth_level . '; |
1 | 1051 |
var USER_LEVEL_GUEST = ' . USER_LEVEL_GUEST . '; |
1052 |
var USER_LEVEL_MEMBER = ' . USER_LEVEL_MEMBER . '; |
|
1053 |
var USER_LEVEL_CHPREF = ' . USER_LEVEL_CHPREF . '; |
|
1054 |
var USER_LEVEL_MOD = ' . USER_LEVEL_MOD . '; |
|
1055 |
var USER_LEVEL_ADMIN = ' . USER_LEVEL_ADMIN . '; |
|
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
1056 |
var disable_redirect = ' . ( isset($_GET['redirect']) && $_GET['redirect'] == 'no' ? 'true' : 'false' ) . '; |
555
ac4c6a7f01d8
Added user preference for disabling visual effects in Javascript applets; added re-import button to installed plugins
Dan
parents:
538
diff
changeset
|
1057 |
var pref_disable_js_fx = ' . ( @$session->user_extra['disable_js_fx'] == 1 ? '1' : '0' ) . '; |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1058 |
var csrf_token = "' . $session->csrf_token . '"; |
1 | 1059 |
var editNotice = \'' . ( (getConfig('wiki_edit_notice')=='1') ? str_replace("\n", "\\\n", RenderMan::render(getConfig('wiki_edit_notice_text'))) : '' ) . '\'; |
571
66e14e61613e
Got ACL scope logic working again and began enforcing it. Breaking API change: assigning page title with $template->tpl_strings['PAGE_NAME'] will no longer work, use $template->assign_vars(). Workaround may be added later. Test for assign_vars method if compatibility needed. Added namespace processor API (non-breaking change). Several other things tweaked around as well.
Dan
parents:
566
diff
changeset
|
1060 |
var prot = ' . ( ($protected) ? 'true' : 'false' ) .'; // No, hacking this var won\'t work, it\'s re-checked on the server |
1 | 1061 |
var ENANO_SPECIAL_CREATEPAGE = \''. makeUrl($paths->nslist['Special'].'CreatePage') .'\'; |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1062 |
var ENANO_CREATEPAGE_PARAMS = \'_do=&pagename='. $urlname_clean .'&namespace=' . $local_namespace . '\'; |
1 | 1063 |
var ENANO_SPECIAL_CHANGESTYLE = \''. makeUrlNS('Special', 'ChangeStyle') .'\'; |
1064 |
var namespace_list = new Array(); |
|
582
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
1065 |
var msg_loading_component = \'' . addslashes($lang->get('ajax_msg_loading_component')) . '\'; |
1 | 1066 |
var AES_BITS = '.AES_BITS.'; |
1067 |
var AES_BLOCKSIZE = '.AES_BLOCKSIZE.'; |
|
1068 |
var pagepass = \''. ( ( isset($_REQUEST['pagepass']) ) ? sha1($_REQUEST['pagepass']) : '' ) .'\'; |
|
1069 |
var ENANO_THEME_LIST = \''; |
|
1070 |
foreach($this->theme_list as $t) { |
|
1071 |
if($t['enabled']) |
|
1072 |
{ |
|
1073 |
$js_dynamic .= '<option value="'.$t['theme_id'].'"'; |
|
29
e5484a9e0818
Rewrote change theme dialog; a few minor stability fixes here and there; fixed IE + St Patty background image
Dan
parents:
27
diff
changeset
|
1074 |
// if($t['theme_id'] == $session->theme) $js_dynamic .= ' selected="selected"'; |
1 | 1075 |
$js_dynamic .= '>'.$t['theme_name'].'</option>'; |
1076 |
} |
|
1077 |
} |
|
1078 |
$js_dynamic .= '\'; |
|
210
2b283402e4e4
Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
208
diff
changeset
|
1079 |
var ENANO_CURRENT_THEME = \''. $session->theme .'\'; |
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
parents:
211
diff
changeset
|
1080 |
var ENANO_LANG_ID = ' . $lang->lang_id . '; |
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
parents:
211
diff
changeset
|
1081 |
var ENANO_PAGE_TYPE = "' . addslashes($this->namespace_string) . '";'; |
1 | 1082 |
foreach($paths->nslist as $k => $c) |
1083 |
{ |
|
1084 |
$js_dynamic .= "namespace_list['{$k}'] = '$c';"; |
|
1085 |
} |
|
1086 |
$js_dynamic .= "\n //]]>\n </script>"; |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1087 |
|
1 | 1088 |
$tpl_strings = Array( |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
1089 |
'PAGE_NAME'=>htmlspecialchars($local_cdata['name']), |
15
ad5986a53197
Fixed complicated SQL injection vulnerability in URL handler, updated license info for Tigra Tree Menu, and killed one XSS vulnerability
Dan
parents:
13
diff
changeset
|
1090 |
'PAGE_URLNAME'=> $urlname_clean, |
40
723bb7acf914
Fixed a lot of bugs with Safari and Konqueror; improved Opera compatibility
Dan
parents:
36
diff
changeset
|
1091 |
'SITE_NAME'=>htmlspecialchars(getConfig('site_name')), |
1 | 1092 |
'USERNAME'=>$session->username, |
40
723bb7acf914
Fixed a lot of bugs with Safari and Konqueror; improved Opera compatibility
Dan
parents:
36
diff
changeset
|
1093 |
'SITE_DESC'=>htmlspecialchars(getConfig('site_desc')), |
1 | 1094 |
'TOOLBAR'=>$tb, |
1095 |
'SCRIPTPATH'=>scriptPath, |
|
1096 |
'CONTENTPATH'=>contentPath, |
|
1097 |
'ADMIN_SID_QUES'=>$asq, |
|
1098 |
'ADMIN_SID_AMP'=>$asa, |
|
1099 |
'ADMIN_SID_AMP_HTML'=>$ash, |
|
1100 |
'ADMIN_SID_AUTO'=>$as2, |
|
114
47393c6619ea
Nothing special, just syncing to Scribus, several bugs have been found with GET forms and a fix is in the works
Dan
parents:
102
diff
changeset
|
1101 |
'ADMIN_SID_RAW'=> ( is_string($session->sid_super) ? $session->sid_super : '' ), |
91 | 1102 |
'COPYRIGHT'=>RenderMan::parse_internal_links(getConfig('copyright_notice')), |
1 | 1103 |
'TOOLBAR_EXTRAS'=>$this->toolbar_menu, |
1104 |
'REQUEST_URI'=>$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], |
|
1105 |
'STYLE_LINK'=>makeUrlNS('Special', 'CSS'.$p, null, true), //contentPath.$paths->nslist['Special'].'CSS' . $p, |
|
1106 |
'LOGIN_LINK'=>$login_link, |
|
1107 |
'LOGOUT_LINK'=>$logout_link, |
|
60
71b50f8c8f85
Changed administration login request to use the AJAX login form; made high-level authentication more apparent in the AJAX box; recompiled Oxygen Mint
Dan
parents:
59
diff
changeset
|
1108 |
'ADMIN_LINK'=>$admin_link, |
1 | 1109 |
'THEME_LINK'=>$theme_link, |
115
261f367623af
Fixed the obnoxious issue with forms using GET and index.php?title=Foo URL scheme (this works a whole lot better than MediaWiki now
Dan
parents:
114
diff
changeset
|
1110 |
'SEARCH_ACTION'=>makeUrlNS('Special', 'Search'), |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1111 |
'INPUT_TITLE'=>( urlSeparator == '&' ? '<input type="hidden" name="title" value="' . htmlspecialchars( $paths->nslist[$local_namespace] . $local_page_id ) . '" />' : ''), |
115
261f367623af
Fixed the obnoxious issue with forms using GET and index.php?title=Foo URL scheme (this works a whole lot better than MediaWiki now
Dan
parents:
114
diff
changeset
|
1112 |
'INPUT_AUTH'=>( $session->sid_super ? '<input type="hidden" name="auth" value="' . $session->sid_super . '" />' : ''), |
1 | 1113 |
'TEMPLATE_DIR'=>scriptPath.'/themes/'.$this->theme, |
1114 |
'THEME_ID'=>$this->theme, |
|
1115 |
'STYLE_ID'=>$this->style, |
|
1116 |
'JS_DYNAMIC_VARS'=>$js_dynamic, |
|
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
parents:
73
diff
changeset
|
1117 |
'UNREAD_PMS'=>$session->unread_pms, |
286
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
parents:
276
diff
changeset
|
1118 |
'URL_ABOUT_ENANO' => makeUrlNS('Special', 'About_Enano', '', true), |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1119 |
'REPORT_URI' => makeUrl($local_fullpage, 'do=sql_report', true) |
1 | 1120 |
); |
1121 |
||
1122 |
foreach ( $paths->nslist as $ns_id => $ns_prefix ) |
|
1123 |
{ |
|
1124 |
$tpl_strings[ 'NS_' . strtoupper($ns_id) ] = $ns_prefix; |
|
1125 |
} |
|
1126 |
||
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1127 |
$this->assign_vars($tpl_strings, true); |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1128 |
|
1 | 1129 |
list($this->tpl_strings['SIDEBAR_LEFT'], $this->tpl_strings['SIDEBAR_RIGHT'], $min) = $this->fetch_sidebar(); |
1130 |
$this->tpl_bool['sidebar_left'] = ( $this->tpl_strings['SIDEBAR_LEFT'] != $min) ? true : false; |
|
1131 |
$this->tpl_bool['sidebar_right'] = ( $this->tpl_strings['SIDEBAR_RIGHT'] != $min) ? true : false; |
|
1132 |
$this->tpl_bool['right_sidebar'] = $this->tpl_bool['sidebar_right']; // backward compatibility |
|
118
0c5efda996bf
Added keep-alive function to admin panel (had been planned for some time) and a new hook, template_var_init_end
Dan
parents:
115
diff
changeset
|
1133 |
|
582
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
1134 |
// and finally one that needs to be symlinked... |
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
1135 |
if ( !isset($this->tpl_strings['ADDITIONAL_HEADERS']) ) |
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
1136 |
{ |
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
1137 |
$this->tpl_strings['ADDITIONAL_HEADERS'] =& $this->additional_headers; |
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
1138 |
} |
a38876c0793c
Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents:
581
diff
changeset
|
1139 |
|
118
0c5efda996bf
Added keep-alive function to admin panel (had been planned for some time) and a new hook, template_var_init_end
Dan
parents:
115
diff
changeset
|
1140 |
$code = $plugins->setHook('template_var_init_end'); |
0c5efda996bf
Added keep-alive function to admin panel (had been planned for some time) and a new hook, template_var_init_end
Dan
parents:
115
diff
changeset
|
1141 |
foreach ( $code as $cmd ) |
0c5efda996bf
Added keep-alive function to admin panel (had been planned for some time) and a new hook, template_var_init_end
Dan
parents:
115
diff
changeset
|
1142 |
{ |
0c5efda996bf
Added keep-alive function to admin panel (had been planned for some time) and a new hook, template_var_init_end
Dan
parents:
115
diff
changeset
|
1143 |
eval($cmd); |
0c5efda996bf
Added keep-alive function to admin panel (had been planned for some time) and a new hook, template_var_init_end
Dan
parents:
115
diff
changeset
|
1144 |
} |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
1145 |
|
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
1146 |
profiler_log("template: finished var init"); |
1 | 1147 |
} |
1148 |
||
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1149 |
/** |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1150 |
* Performs var init that is common to all pages (IOW, called only once) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1151 |
* @access private |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1152 |
*/ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1153 |
|
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1154 |
function init_vars_global() |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1155 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1156 |
|
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1157 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1158 |
|
1 | 1159 |
function header($simple = false) |
1160 |
{ |
|
1161 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
215 | 1162 |
global $lang; |
1163 |
||
1 | 1164 |
ob_start(); |
1165 |
||
1166 |
if(!$this->theme_loaded) |
|
1167 |
{ |
|
1168 |
$this->load_theme($session->theme, $session->style); |
|
1169 |
} |
|
1170 |
||
526
b2fb50d572c7
New plugin manager half-implemented. Most of the UI/frontend code is done. Moved sql_parse.php to /includes/ to allow use after installation - TODO: check installer, etc. for breakage
Dan
parents:
511
diff
changeset
|
1171 |
// I feel awful doing this. |
b2fb50d572c7
New plugin manager half-implemented. Most of the UI/frontend code is done. Moved sql_parse.php to /includes/ to allow use after installation - TODO: check installer, etc. for breakage
Dan
parents:
511
diff
changeset
|
1172 |
if ( preg_match('/^W3C_Validator/', @$_SERVER['HTTP_USER_AGENT']) ) |
b2fb50d572c7
New plugin manager half-implemented. Most of the UI/frontend code is done. Moved sql_parse.php to /includes/ to allow use after installation - TODO: check installer, etc. for breakage
Dan
parents:
511
diff
changeset
|
1173 |
{ |
b2fb50d572c7
New plugin manager half-implemented. Most of the UI/frontend code is done. Moved sql_parse.php to /includes/ to allow use after installation - TODO: check installer, etc. for breakage
Dan
parents:
511
diff
changeset
|
1174 |
header('Content-type: application/xhtml+xml'); |
b2fb50d572c7
New plugin manager half-implemented. Most of the UI/frontend code is done. Moved sql_parse.php to /includes/ to allow use after installation - TODO: check installer, etc. for breakage
Dan
parents:
511
diff
changeset
|
1175 |
} |
b2fb50d572c7
New plugin manager half-implemented. Most of the UI/frontend code is done. Moved sql_parse.php to /includes/ to allow use after installation - TODO: check installer, etc. for breakage
Dan
parents:
511
diff
changeset
|
1176 |
|
1 | 1177 |
$headers_sent = true; |
1178 |
if(!defined('ENANO_HEADERS_SENT')) |
|
1179 |
define('ENANO_HEADERS_SENT', ''); |
|
174
4c5c2b66a34d
SECURITY: remove debug message in session manager; implemented alternate MediaWiki syntax for template embedding; added Adobe Spry for "shake" effect on unsuccessful login
Dan
parents:
165
diff
changeset
|
1180 |
if ( !$this->no_headers ) |
4c5c2b66a34d
SECURITY: remove debug message in session manager; implemented alternate MediaWiki syntax for template embedding; added Adobe Spry for "shake" effect on unsuccessful login
Dan
parents:
165
diff
changeset
|
1181 |
{ |
4c5c2b66a34d
SECURITY: remove debug message in session manager; implemented alternate MediaWiki syntax for template embedding; added Adobe Spry for "shake" effect on unsuccessful login
Dan
parents:
165
diff
changeset
|
1182 |
$header = ( $simple ) ? |
4c5c2b66a34d
SECURITY: remove debug message in session manager; implemented alternate MediaWiki syntax for template embedding; added Adobe Spry for "shake" effect on unsuccessful login
Dan
parents:
165
diff
changeset
|
1183 |
$this->process_template('simple-header.tpl') : |
4c5c2b66a34d
SECURITY: remove debug message in session manager; implemented alternate MediaWiki syntax for template embedding; added Adobe Spry for "shake" effect on unsuccessful login
Dan
parents:
165
diff
changeset
|
1184 |
$this->process_template('header.tpl'); |
4c5c2b66a34d
SECURITY: remove debug message in session manager; implemented alternate MediaWiki syntax for template embedding; added Adobe Spry for "shake" effect on unsuccessful login
Dan
parents:
165
diff
changeset
|
1185 |
echo $header; |
4c5c2b66a34d
SECURITY: remove debug message in session manager; implemented alternate MediaWiki syntax for template embedding; added Adobe Spry for "shake" effect on unsuccessful login
Dan
parents:
165
diff
changeset
|
1186 |
} |
1 | 1187 |
if ( !$simple && $session->user_logged_in && $session->unread_pms > 0 ) |
1188 |
{ |
|
1189 |
echo $this->notify_unread_pms(); |
|
1190 |
} |
|
1191 |
if ( !$simple && $session->sw_timed_out ) |
|
1192 |
{ |
|
1193 |
$login_link = makeUrlNS('Special', 'Login/' . $paths->fullpage, 'level=' . $session->user_level, true); |
|
1194 |
echo '<div class="usermessage">'; |
|
215 | 1195 |
echo $lang->get('user_msg_elev_timed_out', array( 'login_link' => $login_link )); |
1 | 1196 |
echo '</div>'; |
1197 |
} |
|
30 | 1198 |
if ( $this->site_disabled && $session->user_level >= USER_LEVEL_ADMIN && ( $paths->page != $paths->nslist['Special'] . 'Administration' ) ) |
1199 |
{ |
|
1200 |
$admin_link = makeUrlNS('Special', 'Administration', 'module=' . $paths->nslist['Admin'] . 'GeneralConfig', true); |
|
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1201 |
echo '<div class="usermessage"><b>' . $lang->get('page_sitedisabled_admin_msg_title') . '</b><br /> |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1202 |
' . $lang->get('page_sitedisabled_admin_msg_body', array('admin_link' => $admin_link)) . ' |
30 | 1203 |
</div>'; |
1204 |
} |
|
1 | 1205 |
} |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
1206 |
|
1 | 1207 |
function footer($simple = false) |
1208 |
{ |
|
396
3289e4dcb4b8
Fixed some stray undefined-variable problems revealed as a result of testing on Windows Server '03, IIS6, PHP/FastCGI, and PostgreSQL 8.2.5.
Dan
parents:
391
diff
changeset
|
1209 |
echo $this->getFooter($simple); |
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1210 |
ob_end_flush(); |
1 | 1211 |
} |
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
371
diff
changeset
|
1212 |
|
1 | 1213 |
function getHeader() |
1214 |
{ |
|
1215 |
$headers_sent = true; |
|
1216 |
if(!defined('ENANO_HEADERS_SENT')) |
|
1217 |
define('ENANO_HEADERS_SENT', ''); |
|
1218 |
if(!$this->no_headers) return $this->process_template('header.tpl'); |
|
1219 |
} |
|
396
3289e4dcb4b8
Fixed some stray undefined-variable problems revealed as a result of testing on Windows Server '03, IIS6, PHP/FastCGI, and PostgreSQL 8.2.5.
Dan
parents:
391
diff
changeset
|
1220 |
function getFooter($simple = false) |
1 | 1221 |
{ |
1222 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1223 |
global $lang; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1224 |
if ( !$this->no_headers ) |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1225 |
{ |
1 | 1226 |
|
1227 |
if(!defined('ENANO_HEADERS_SENT')) |
|
1228 |
$this->header(); |
|
1229 |
||
1230 |
global $_starttime; |
|
1231 |
if(isset($_GET['sqldbg']) && $session->get_permissions('mod_misc')) |
|
1232 |
{ |
|
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1233 |
echo '<h3>' . $lang->get('page_heading_sql_list') . '</h3><pre style="margin-left: 1em">'; |
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
1234 |
echo htmlspecialchars($db->sql_backtrace()); |
1 | 1235 |
echo '</pre>'; |
1236 |
} |
|
1237 |
||
1238 |
$t = ( $simple ) ? $this->process_template('simple-footer.tpl') : $this->process_template('footer.tpl'); |
|
1239 |
||
1240 |
$f = microtime_float(); |
|
1241 |
$f = $f - $_starttime; |
|
413
6607cd646d6d
Added autosave functionality and resurrected the old toolbar code that was added about a year ago but never uesd.
Dan
parents:
411
diff
changeset
|
1242 |
$f = round($f, 2); |
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1243 |
|
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1244 |
$t_loc = $lang->get('page_msg_stats_gentime_short', array('time' => $f)); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1245 |
$t_loc_long = $lang->get('page_msg_stats_gentime_long', array('time' => $f)); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1246 |
$q_loc = '<a href="' . $this->tpl_strings['REPORT_URI'] . '">' . $lang->get('page_msg_stats_sql', array('nq' => $db->num_queries)) . '</a>'; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1247 |
$dbg = $t_loc; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1248 |
$dbg_long = $t_loc_long; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1249 |
if ( $session->user_level >= USER_LEVEL_ADMIN ) |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1250 |
{ |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1251 |
$dbg .= " | $q_loc"; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1252 |
$dbg_long .= " | $q_loc"; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1253 |
} |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1254 |
|
1 | 1255 |
$t = str_replace('[[Stats]]', $dbg, $t); |
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1256 |
$t = str_replace('[[StatsLong]]', $dbg_long, $t); |
1 | 1257 |
$t = str_replace('[[NumQueries]]', (string)$db->num_queries, $t); |
1258 |
$t = str_replace('[[GenTime]]', (string)$f, $t); |
|
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1259 |
$t = str_replace('[[NumQueriesLoc]]', $q_loc, $t); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1260 |
$t = str_replace('[[GenTimeLoc]]', $t_loc, $t); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1261 |
$t = str_replace('[[EnanoPoweredLink]]', $lang->get('page_enano_powered', array('about_uri' => $this->tpl_strings['URL_ABOUT_ENANO'])), $t); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1262 |
$t = str_replace('[[EnanoPoweredLinkLong]]', $lang->get('page_enano_powered_long', array('about_uri' => $this->tpl_strings['URL_ABOUT_ENANO'])), $t); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1263 |
|
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1264 |
if ( defined('ENANO_DEBUG') ) |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1265 |
$t = str_replace('</body>', '<div id="profile" style="margin: 10px;">' . profiler_make_html() . '</div></body>', $t); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1266 |
|
1 | 1267 |
return $t; |
1268 |
} |
|
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1269 |
else |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1270 |
{ |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1271 |
return ''; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
1272 |
} |
1 | 1273 |
} |
1274 |
||
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1275 |
/** |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1276 |
* Assigns an array of string values to the template. Strings can be accessed from the template by inserting {KEY_NAME} in the template file. |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1277 |
* @param $vars array |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1278 |
* @param $from_internal bool Internal switch, just omit (@todo document) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1279 |
*/ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1280 |
|
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1281 |
function assign_vars($vars, $from_internal = false) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1282 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1283 |
foreach ( $vars as $key => $value ) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1284 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1285 |
$replace = true; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1286 |
if ( isset($this->vars_assign_history['strings'][$key]) ) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1287 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1288 |
if ( $this->vars_assign_history['strings'][$key] == 'api' ) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1289 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1290 |
$replace = false; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1291 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1292 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1293 |
if ( $replace ) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1294 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1295 |
$this->tpl_strings[$key] = $value; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1296 |
$this->vars_assign_history['strings'][$key] = ( $from_internal ) ? 'internal' : 'api'; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1297 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1298 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1299 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1300 |
|
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1301 |
/** |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1302 |
* Assigns an array of boolean values to the template. These can be used for <!-- IF ... --> statements. |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1303 |
* @param $vars array |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1304 |
* @param $from_internal bool Internal switch, just omit (@todo document) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1305 |
*/ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1306 |
|
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1307 |
function assign_bool($vars) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1308 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1309 |
foreach ( $vars as $key => $value ) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1310 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1311 |
$replace = true; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1312 |
if ( isset($this->vars_assign_history['bool'][$key]) ) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1313 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1314 |
if ( $this->vars_assign_history['bool'][$key] == 'api' ) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1315 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1316 |
$replace = false; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1317 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1318 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1319 |
if ( $replace ) |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1320 |
{ |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1321 |
$this->tpl_bool[$key] = $value; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1322 |
$this->vars_assign_history['bool'][$key] = ( $from_internal ) ? 'internal' : 'api'; |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1323 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1324 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1325 |
} |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1326 |
|
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1327 |
# |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1328 |
# COMPILER |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1329 |
# |
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1330 |
|
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
1331 |
/** |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1332 |
* Compiles and executes a template based on the current variables and booleans. Loads |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1333 |
* the theme and initializes variables if needed. This mostly just calls child functions. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1334 |
* @param string File to process |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1335 |
* @return string |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1336 |
*/ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1337 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1338 |
function process_template($file) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1339 |
{ |
1 | 1340 |
global $db, $session, $paths, $template, $plugins; // Common objects |
1341 |
if(!defined('ENANO_TEMPLATE_LOADED')) |
|
1342 |
{ |
|
1343 |
$this->load_theme(); |
|
1344 |
$this->init_vars(); |
|
1345 |
} |
|
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1346 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1347 |
$compiled = $this->compile_template($file); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1348 |
return eval($compiled); |
1 | 1349 |
} |
1350 |
||
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1351 |
/** |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1352 |
* Loads variables from the specified template file. Returns an associative array containing the variables. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1353 |
* @param string Template file to process (elements.tpl) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1354 |
* @return array |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1355 |
*/ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1356 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1357 |
function extract_vars($file) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1358 |
{ |
1 | 1359 |
global $db, $session, $paths, $template, $plugins; // Common objects |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1360 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1361 |
// Sometimes this function gets called before the theme is loaded |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1362 |
// This is a bad coding practice so this function will always be picky. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1363 |
if ( !$this->theme ) |
1 | 1364 |
{ |
1365 |
die('$template->extract_vars(): theme not yet loaded, so we can\'t open template files yet...this is a bug and should be reported.<br /><br />Backtrace, most recent call first:<pre>'.enano_debug_print_backtrace(true).'</pre>'); |
|
1366 |
} |
|
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1367 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1368 |
// Full pathname of template file |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1369 |
$tpl_file_fullpath = ENANO_ROOT . '/themes/' . $this->theme . '/' . $file; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1370 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1371 |
// Make sure the template even exists |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1372 |
if ( !is_file($tpl_file_fullpath) ) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1373 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1374 |
die_semicritical('Cannot find template file', |
472
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
1375 |
'<p>The template parser was asked to load the file "' . htmlspecialchars($tpl_file_fullpath) . '", but that file couldn\'t be found in the directory for |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1376 |
the current theme.</p> |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1377 |
<p>Additional debugging information:<br /> |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1378 |
<b>Theme currently in use: </b>' . $this->theme . '<br /> |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1379 |
<b>Requested file: </b>' . $file . ' |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1380 |
</p>'); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1381 |
} |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1382 |
// Retrieve file contents |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1383 |
$text = file_get_contents($tpl_file_fullpath); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1384 |
if ( !$text ) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1385 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1386 |
return false; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1387 |
} |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1388 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1389 |
// Get variables, regular expressions FTW |
1 | 1390 |
preg_match_all('#<\!-- VAR ([A-z0-9_-]*) -->(.*?)<\!-- ENDVAR \\1 -->#is', $text, $matches); |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1391 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1392 |
// Initialize return values |
1 | 1393 |
$tplvars = Array(); |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1394 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1395 |
// Loop through each match, setting $tplvars[ $first_subpattern ] to $second_subpattern |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1396 |
for ( $i = 0; $i < sizeof($matches[1]); $i++ ) |
1 | 1397 |
{ |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1398 |
$tplvars[ $matches[1][$i] ] = $matches[2][$i]; |
1 | 1399 |
} |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1400 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1401 |
// All done! |
1 | 1402 |
return $tplvars; |
1403 |
} |
|
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1404 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1405 |
/** |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1406 |
* Compiles a block of template code. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1407 |
* @param string The text to process |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1408 |
* @return string |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1409 |
*/ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1410 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1411 |
function compile_tpl_code($text) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1412 |
{ |
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
1413 |
return template_compiler_core($text); |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1414 |
} |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1415 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1416 |
/** |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1417 |
* Compiles the contents of a given template file, possibly using a cached copy, and returns the compiled code. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1418 |
* @param string Filename of template (header.tpl) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1419 |
* @return string |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1420 |
*/ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1421 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1422 |
function compile_template($filename) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1423 |
{ |
1 | 1424 |
global $db, $session, $paths, $template, $plugins; // Common objects |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1425 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1426 |
// Full path to template file |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1427 |
$tpl_file_fullpath = ENANO_ROOT . '/themes/' . $this->theme . '/' . $filename; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1428 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1429 |
// Make sure the file exists |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1430 |
if ( !is_file($tpl_file_fullpath) ) |
1 | 1431 |
{ |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1432 |
die_semicritical('Cannot find template file', |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1433 |
'<p>The template parser was asked to load the file "' . htmlspecialchars($filename) . '", but that file couldn\'t be found in the directory for |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1434 |
the current theme.</p> |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1435 |
<p>Additional debugging information:<br /> |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1436 |
<b>Theme currently in use: </b>' . $this->theme . '<br /> |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1437 |
<b>Requested file: </b>' . $file . ' |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1438 |
</p>'); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1439 |
} |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1440 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1441 |
// Check for cached copy |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1442 |
// This will make filenames in the pattern of theme-file.tpl.php |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1443 |
$cache_file = ENANO_ROOT . '/cache/' . $this->theme . '-' . str_replace('/', '-', $filename) . '.php'; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1444 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1445 |
// Only use cached copy if caching is enabled |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1446 |
// (it is enabled by default I think) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1447 |
if ( file_exists($cache_file) && getConfig('cache_thumbs') == '1' ) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1448 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1449 |
// Cache files are auto-generated, but otherwise are normal PHP files |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1450 |
include($cache_file); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1451 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1452 |
// Fetch content of the ORIGINAL |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1453 |
$text = file_get_contents($tpl_file_fullpath); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1454 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1455 |
// $md5 will be set by the cached file |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1456 |
// This makes sure that a cached copy of the template is used only if its MD5 |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1457 |
// matches the MD5 of the file that the compiled file was compiled from. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1458 |
if ( isset($md5) && $md5 == md5($text) ) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1459 |
{ |
211 | 1460 |
return $this->compile_template_text_post(str_replace('\\"', '"', $tpl_text)); |
1 | 1461 |
} |
1462 |
} |
|
1463 |
||
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1464 |
// We won't use the cached copy here |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1465 |
$text = file_get_contents($tpl_file_fullpath); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1466 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1467 |
// This will be used later when writing the cached file |
1 | 1468 |
$md5 = md5($text); |
1469 |
||
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1470 |
// Preprocessing and checks complete - compile the code |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1471 |
$text = $this->compile_tpl_code($text); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1472 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1473 |
// Perhaps caching is enabled and the admin has changed the template? |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1474 |
if ( is_writable( ENANO_ROOT . '/cache/' ) && getConfig('cache_thumbs') == '1' ) |
1 | 1475 |
{ |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1476 |
$h = fopen($cache_file, 'w'); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1477 |
if ( !$h ) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1478 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1479 |
// Couldn't open the file - silently ignore and return |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1480 |
return $text; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1481 |
} |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1482 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1483 |
// Escape the compiled code so it can be eval'ed |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1484 |
$text_escaped = addslashes($text); |
128
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
1485 |
$notice = <<<EOF |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
1486 |
|
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
1487 |
/* |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
1488 |
* NOTE: This file was automatically generated by Enano and is based on compiled code. Do not edit this file. |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
1489 |
* If you edit this file, any changes you make will be lost the next time the associated source template file is edited. |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
1490 |
*/ |
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
1491 |
|
01955bf53f96
Improved ban control page and allowed multiple entries/IP ranges; changed some parameters on jBox; user level changes are logged now
Dan
parents:
125
diff
changeset
|
1492 |
EOF; |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1493 |
// This is really just a normal PHP file that sets a variable or two and exits. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1494 |
// $tpl_text actually will contain the compiled code |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1495 |
fwrite($h, '<?php ' . $notice . ' $md5 = \'' . $md5 . '\'; $tpl_text = \'' . $text_escaped . '\'; ?>'); |
1 | 1496 |
fclose($h); |
1497 |
} |
|
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1498 |
|
211 | 1499 |
return $this->compile_template_text_post($text); //('<pre>'.htmlspecialchars($text).'</pre>'); |
1 | 1500 |
} |
1501 |
||
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1502 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1503 |
/** |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1504 |
* Compiles (parses) some template code with the current master set of variables and booleans. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1505 |
* @param string Text to process |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1506 |
* @return string |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1507 |
*/ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1508 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1509 |
function compile_template_text($text) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1510 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1511 |
// this might do something else in the future, possibly cache large templates |
211 | 1512 |
return $this->compile_template_text_post($this->compile_tpl_code($text)); |
1 | 1513 |
} |
1514 |
||
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1515 |
/** |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1516 |
* For convenience - compiles AND parses some template code. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1517 |
* @param string Text to process |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1518 |
* @return string |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1519 |
*/ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1520 |
|
1 | 1521 |
function parse($text) |
1522 |
{ |
|
1523 |
$text = $this->compile_template_text($text); |
|
211 | 1524 |
$text = $this->compile_template_text_post($text); |
1 | 1525 |
return eval($text); |
1526 |
} |
|
1527 |
||
211 | 1528 |
/** |
1529 |
* Post-processor for template code. Basically what this does is it localizes {lang:foo} blocks. |
|
1530 |
* @param string Mostly-processed TPL code |
|
1531 |
* @return string |
|
1532 |
*/ |
|
1533 |
||
1534 |
function compile_template_text_post($text) |
|
1535 |
{ |
|
1536 |
global $lang; |
|
1537 |
preg_match_all('/\{lang:([a-z0-9]+_[a-z0-9_]+)\}/', $text, $matches); |
|
1538 |
foreach ( $matches[1] as $i => $string_id ) |
|
1539 |
{ |
|
1540 |
$string = $lang->get($string_id); |
|
1541 |
$string = str_replace('\\', '\\\\', $string); |
|
1542 |
$string = str_replace('\'', '\\\'', $string); |
|
1543 |
$text = str_replace_once($matches[0][$i], $string, $text); |
|
1544 |
} |
|
1545 |
return $text; |
|
1546 |
} |
|
1547 |
||
1 | 1548 |
// Steps to turn this: |
1549 |
// [[Project:Community Portal]] |
|
1550 |
// into this: |
|
1551 |
// <a href="/Project:Community_Portal">Community Portal</a> |
|
1552 |
// Must be done WITHOUT creating eval'ed code!!! |
|
1553 |
||
1554 |
// 1. preg_replace \[\[([a-zA-Z0-9 -_:]*?)\]\] with <a href="'.contentPath.'\\1">\\1</a> |
|
1555 |
// 2. preg_match_all <a href="'.preg_quote(contentPath).'([a-zA-Z0-9 -_:]*?)"> |
|
1556 |
// 3. For each match, replace matches with identifiers |
|
1557 |
// 4. For each match, str_replace ' ' with '_' |
|
1558 |
// 5. For each match, str_replace match_id:random_val with $matches[$match_id] |
|
1559 |
||
1560 |
// The template language is really a miniature programming language; with variables, conditionals, everything! |
|
1561 |
// So you can implement custom logic into your sidebar if you wish. |
|
1562 |
// "Real" PHP support coming soon :-D |
|
1563 |
||
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1564 |
/** |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1565 |
* Takes a blob of HTML with the specially formatted template-oriented wikitext and formats it. Does not use eval(). |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1566 |
* This function butchers every coding standard in Enano and should eventually be rewritten. The fact is that the |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1567 |
* code _works_ and does a good job of checking for errors and cleanly complaining about them. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1568 |
* @param string Text to process |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1569 |
* @param bool Ignored for backwards compatibility |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1570 |
* @param string File to get variables for sidebar data from |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1571 |
* @return string |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1572 |
*/ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1573 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1574 |
function tplWikiFormat($message, $filter_links = false, $filename = 'elements.tpl') |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1575 |
{ |
1 | 1576 |
global $db, $session, $paths, $template, $plugins; // Common objects |
215 | 1577 |
global $lang; |
1578 |
||
1 | 1579 |
$filter_links = false; |
1580 |
$tplvars = $this->extract_vars($filename); |
|
1581 |
if($session->sid_super) $as = htmlspecialchars(urlSeparator).'auth='.$session->sid_super; |
|
1582 |
else $as = ''; |
|
1583 |
error_reporting(E_ALL); |
|
1584 |
$random_id = sha1(microtime().''); // A temp value |
|
1585 |
||
1586 |
/* |
|
1587 |
* PREPROCESSOR |
|
1588 |
*/ |
|
1589 |
||
1590 |
// Variables |
|
1591 |
||
1592 |
preg_match_all('#\$([A-Z_-]+)\$#', $message, $links); |
|
1593 |
$links = $links[1]; |
|
1594 |
||
1595 |
for($i=0;$i<sizeof($links);$i++) |
|
1596 |
{ |
|
1597 |
$message = str_replace('$'.$links[$i].'$', $this->tpl_strings[$links[$i]], $message); |
|
1598 |
} |
|
1599 |
||
1600 |
// Conditionals |
|
1601 |
||
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1602 |
preg_match_all('#\{if ([A-Za-z0-9_ \(\)&\|\!-]*)\}(.*?)\{\/if\}#is', $message, $links); |
1 | 1603 |
|
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1604 |
// Temporary exception from coding standards - using tab length of 4 here for clarity |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1605 |
for ( $i = 0; $i < sizeof($links[1]); $i++ ) |
1 | 1606 |
{ |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1607 |
$condition =& $links[1][$i]; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1608 |
$message = str_replace('{if '.$condition.'}'.$links[2][$i].'{/if}', '{CONDITIONAL:'.$i.':'.$random_id.'}', $message); |
1 | 1609 |
|
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1610 |
// Time for some manual parsing... |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1611 |
$chk = false; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1612 |
$current_id = ''; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1613 |
$prn_level = 0; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1614 |
// Used to keep track of where we are in the conditional |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1615 |
// Object of the game: turn {if this && ( that OR !something_else )} ... {/if} into if( ( isset($this->tpl_bool['that']) && $this->tpl_bool['that'] ) && ... |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1616 |
// Method of attack: escape all variables, ignore all else. Non-valid code is filtered out by a regex above. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1617 |
$in_var_now = true; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1618 |
$in_var_last = false; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1619 |
$current_var = ''; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1620 |
$current_var_start_pos = 0; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1621 |
$current_var_end_pos = 0; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1622 |
$j = -1; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1623 |
$condition = $condition . ' '; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1624 |
$d = strlen($condition); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1625 |
while($j < $d) |
1 | 1626 |
{ |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1627 |
$j++; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1628 |
$in_var_last = $in_var_now; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1629 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1630 |
$char = substr($condition, $j, 1); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1631 |
$in_var_now = ( preg_match('#^([A-z0-9_]*){1}$#', $char) ) ? true : false; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1632 |
if(!$in_var_last && $in_var_now) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1633 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1634 |
$current_var_start_pos = $j; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1635 |
} |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1636 |
if($in_var_last && !$in_var_now) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1637 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1638 |
$current_var_end_pos = $j; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1639 |
} |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1640 |
if($in_var_now) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1641 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1642 |
$current_var .= $char; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1643 |
continue; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1644 |
} |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1645 |
// OK we are not inside of a variable. That means that we JUST hit the end because the counter ($j) will be advanced to the beginning of the next variable once processing here is complete. |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1646 |
if($char != ' ' && $char != '(' && $char != ')' && $char != 'A' && $char != 'N' && $char != 'D' && $char != 'O' && $char != 'R' && $char != '&' && $char != '|' && $char != '!' && $char != '<' && $char != '>' && $char != '0' && $char != '1' && $char != '2' && $char != '3' && $char != '4' && $char != '5' && $char != '6' && $char != '7' && $char != '8' && $char != '9') |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1647 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1648 |
// XSS attack! Bail out |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1649 |
$errmsg = '<p><b>Error:</b> Syntax error (possibly XSS attack) caught in template code:</p>'; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1650 |
$errmsg .= '<pre>'; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1651 |
$errmsg .= '{if '.htmlspecialchars($condition).'}'; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1652 |
$errmsg .= "\n "; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1653 |
for ( $k = 0; $k < $j; $k++ ) |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1654 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1655 |
$errmsg .= " "; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1656 |
} |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1657 |
// Show position of error |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1658 |
$errmsg .= '<span style="color: red;">^</span>'; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1659 |
$errmsg .= '</pre>'; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1660 |
$message = str_replace('{CONDITIONAL:'.$i.':'.$random_id.'}', $errmsg, $message); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1661 |
continue 2; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1662 |
} |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1663 |
if($current_var != '') |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1664 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1665 |
$cd = '( isset($this->tpl_bool[\''.$current_var.'\']) && $this->tpl_bool[\''.$current_var.'\'] )'; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1666 |
$cvt = substr($condition, 0, $current_var_start_pos) . $cd . substr($condition, $current_var_end_pos, strlen($condition)); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1667 |
$j = $j + strlen($cd) - strlen($current_var); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1668 |
$current_var = ''; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1669 |
$condition = $cvt; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1670 |
$d = strlen($condition); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1671 |
} |
1 | 1672 |
} |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1673 |
$condition = substr($condition, 0, strlen($condition)-1); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1674 |
$condition = '$chk = ( '.$condition.' ) ? true : false;'; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1675 |
eval($condition); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1676 |
|
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1677 |
if($chk) |
1 | 1678 |
{ |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1679 |
if(strstr($links[2][$i], '{else}')) $c = substr($links[2][$i], 0, strpos($links[2][$i], '{else}')); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1680 |
else $c = $links[2][$i]; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1681 |
$message = str_replace('{CONDITIONAL:'.$i.':'.$random_id.'}', $c, $message); |
1 | 1682 |
} |
162
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1683 |
else |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1684 |
{ |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1685 |
if(strstr($links[2][$i], '{else}')) $c = substr($links[2][$i], strpos($links[2][$i], '{else}')+6, strlen($links[2][$i])); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1686 |
else $c = ''; |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1687 |
$message = str_replace('{CONDITIONAL:'.$i.':'.$random_id.'}', $c, $message); |
e1a22031b5bd
Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
Dan
parents:
142
diff
changeset
|
1688 |
} |
1 | 1689 |
} |
1690 |
||
1691 |
preg_match_all('#\{!if ([A-Za-z_-]*)\}(.*?)\{\/if\}#is', $message, $links); |
|
1692 |
||
1693 |
for($i=0;$i<sizeof($links[1]);$i++) |
|
1694 |
{ |
|
1695 |
$message = str_replace('{!if '.$links[1][$i].'}'.$links[2][$i].'{/if}', '{CONDITIONAL:'.$i.':'.$random_id.'}', $message); |
|
1696 |
if(isset($this->tpl_bool[$links[1][$i]]) && $this->tpl_bool[$links[1][$i]]) { |
|
1697 |
if(strstr($links[2][$i], '{else}')) $c = substr($links[2][$i], strpos($links[2][$i], '{else}')+6, strlen($links[2][$i])); |
|
1698 |
else $c = ''; |
|
1699 |
$message = str_replace('{CONDITIONAL:'.$i.':'.$random_id.'}', $c, $message); |
|
1700 |
} else { |
|
1701 |
if(strstr($links[2][$i], '{else}')) $c = substr($links[2][$i], 0, strpos($links[2][$i], '{else}')); |
|
1702 |
else $c = $links[2][$i]; |
|
1703 |
$message = str_replace('{CONDITIONAL:'.$i.':'.$random_id.'}', $c, $message); |
|
1704 |
} |
|
1705 |
} |
|
1706 |
||
215 | 1707 |
preg_match_all('/\{lang:([a-z0-9]+_[a-z0-9_]+)\}/', $message, $matches); |
1708 |
foreach ( $matches[1] as $i => $string_id ) |
|
1709 |
{ |
|
1710 |
$string = $lang->get($string_id); |
|
1711 |
$string = str_replace('\\', '\\\\', $string); |
|
1712 |
$string = str_replace('\'', '\\\'', $string); |
|
1713 |
$message = str_replace_once($matches[0][$i], $string, $message); |
|
1714 |
} |
|
1715 |
||
1 | 1716 |
/* |
1717 |
* HTML RENDERER |
|
1718 |
*/ |
|
1719 |
||
1720 |
// Images |
|
1721 |
$j = preg_match_all('#\[\[:'.$paths->nslist['File'].'([\w\s0-9_\(\)!@%\^\+\|\.-]+?)\]\]#is', $message, $matchlist); |
|
1722 |
$matches = Array(); |
|
1723 |
$matches['images'] = $matchlist[1]; |
|
1724 |
for($i=0;$i<sizeof($matchlist[1]);$i++) |
|
1725 |
{ |
|
1726 |
if(isPage($paths->nslist['File'].$matches['images'][$i])) |
|
1727 |
{ |
|
1728 |
$message = str_replace('[[:'.$paths->nslist['File'].$matches['images'][$i].']]', |
|
1729 |
'<img alt="'.$matches['images'][$i].'" style="border: 0" src="'.makeUrlNS('Special', 'DownloadFile/'.$matches['images'][$i]).'" />', |
|
1730 |
$message); |
|
1731 |
} |
|
1732 |
} |
|
1733 |
||
1734 |
// Internal links |
|
1735 |
||
1736 |
$text_parser = $this->makeParserText($tplvars['sidebar_button']); |
|
1737 |
||
133
af0f6ec48de3
Fully implemented password complexity enforcement; added encryption for passwords on registration form; some baby steps taken towards supporting international usernames - this is not working very well, we might need a hackish fix; TODO: implement password strength meter into installer UI and get international usernames 100% working
Dan
parents:
128
diff
changeset
|
1738 |
preg_match_all("#\[\[([^\|\]\n\a\r\t]*?)\]\]#is", $message, $il); |
1 | 1739 |
for($i=0;$i<sizeof($il[1]);$i++) |
1740 |
{ |
|
1741 |
$href = makeUrl(str_replace(' ', '_', $il[1][$i]), null, true); |
|
59
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1742 |
$text_parser->assign_vars(Array( |
1 | 1743 |
'HREF' => $href, |
1744 |
'FLAGS' => '', |
|
1745 |
'TEXT' => $il[1][$i] |
|
1746 |
)); |
|
1747 |
$message = str_replace("[[{$il[1][$i]}]]", $text_parser->run(), $message); |
|
1748 |
} |
|
1749 |
||
133
af0f6ec48de3
Fully implemented password complexity enforcement; added encryption for passwords on registration form; some baby steps taken towards supporting international usernames - this is not working very well, we might need a hackish fix; TODO: implement password strength meter into installer UI and get international usernames 100% working
Dan
parents:
128
diff
changeset
|
1750 |
preg_match_all('#\[\[([^\|\]\n\a\r\t]*?)\|([^\]\r\n\a\t]*?)\]\]#is', $message, $il); |
1 | 1751 |
for($i=0;$i<sizeof($il[1]);$i++) |
1752 |
{ |
|
1753 |
$href = makeUrl(str_replace(' ', '_', $il[1][$i]), null, true); |
|
1754 |
$text_parser->assign_vars(Array( |
|
1755 |
'HREF' => $href, |
|
1756 |
'FLAGS' => '', |
|
1757 |
'TEXT' => $il[2][$i] |
|
1758 |
)); |
|
1759 |
$message = str_replace("[[{$il[1][$i]}|{$il[2][$i]}]]", $text_parser->run(), $message); |
|
1760 |
} |
|
1761 |
||
1762 |
// External links |
|
59
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1763 |
// $message = preg_replace('#\[(http|ftp|irc):\/\/([a-z0-9\/:_\.\?&%\#@_\\\\-]+?) ([^\]]+)\\]#', '<a href="\\1://\\2">\\3</a><br style="display: none;" />', $message); |
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1764 |
// $message = preg_replace('#\[(http|ftp|irc):\/\/([a-z0-9\/:_\.\?&%\#@_\\\\-]+?)\\]#', '<a href="\\1://\\2">\\1://\\2</a><br style="display: none;" />', $message); |
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1765 |
|
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
203
diff
changeset
|
1766 |
preg_match_all('/\[((https?|ftp|irc):\/\/([^@\s\]"\':]+)?((([a-z0-9-]+\.)*)[a-z0-9-]+)(\/[A-z0-9_%\|~`!\!@#\$\^&\*\(\):;\.,\/-]*(\?(([a-z0-9_-]+)(=[A-z0-9_%\|~`\!@#\$\^&\*\(\):;\.,\/-\[\]]+)?((&([a-z0-9_-]+)(=[A-z0-9_%\|~`!\!@#\$\^&\*\(\):;\.,\/-]+)?)*))?)?)?) ([^\]]+)\]/is', $message, $ext_link); |
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
203
diff
changeset
|
1767 |
|
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
203
diff
changeset
|
1768 |
// die('<pre>' . htmlspecialchars( print_r($ext_link, true) ) . '</pre>'); |
59
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1769 |
|
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1770 |
for ( $i = 0; $i < count($ext_link[0]); $i++ ) |
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1771 |
{ |
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1772 |
$text_parser->assign_vars(Array( |
165
199599eca89e
Fixed external links in tplWikiFormat to use my monster HTTP request regex
Dan
parents:
163
diff
changeset
|
1773 |
'HREF' => $ext_link[1][$i], |
59
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1774 |
'FLAGS' => '', |
165
199599eca89e
Fixed external links in tplWikiFormat to use my monster HTTP request regex
Dan
parents:
163
diff
changeset
|
1775 |
'TEXT' => $ext_link[16][$i] |
59
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1776 |
)); |
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1777 |
$message = str_replace($ext_link[0][$i], $text_parser->run(), $message); |
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1778 |
} |
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1779 |
|
230
3daa715e0f69
Alternate scaling using GD is implemented now; images will be scaled with ImageMagick if enabled and working; else, GD will be used. No UI changes to speak of, but a check in the installer will be added in a later commit
Dan
parents:
203
diff
changeset
|
1780 |
preg_match_all('/\[((https?|ftp|irc):\/\/([^@\s\]"\':]+)?((([a-z0-9-]+\.)*)[a-z0-9-]+)(\/[A-z0-9_%\|~`!\!@#\$\^&\*\(\):;\.,\/-]*(\?(([a-z0-9_-]+)(=[A-z0-9_%\|~`\!@#\$\^&\*\(\):;\.,\/-\[\]]+)?((&([a-z0-9_-]+)(=[A-z0-9_%\|~`!\!@#\$\^&\*\(\):;\.,\/-]+)?)*))?)?)?)\]/is', $message, $ext_link); |
59
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1781 |
|
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1782 |
for ( $i = 0; $i < count($ext_link[0]); $i++ ) |
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1783 |
{ |
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1784 |
$text_parser->assign_vars(Array( |
165
199599eca89e
Fixed external links in tplWikiFormat to use my monster HTTP request regex
Dan
parents:
163
diff
changeset
|
1785 |
'HREF' => $ext_link[1][$i], |
59
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1786 |
'FLAGS' => '', |
165
199599eca89e
Fixed external links in tplWikiFormat to use my monster HTTP request regex
Dan
parents:
163
diff
changeset
|
1787 |
'TEXT' => htmlspecialchars($ext_link[1][$i]) |
59
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1788 |
)); |
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1789 |
$message = str_replace($ext_link[0][$i], $text_parser->run(), $message); |
7c4a851fb5c5
Minor IE4 compatibility fix; template parser now properly handles external links in the sidebar
Dan
parents:
57
diff
changeset
|
1790 |
} |
1 | 1791 |
|
1792 |
$parser1 = $this->makeParserText($tplvars['sidebar_section']); |
|
1793 |
$parser2 = $this->makeParserText($tplvars['sidebar_section_raw']); |
|
1794 |
||
60
71b50f8c8f85
Changed administration login request to use the AJAX login form; made high-level authentication more apparent in the AJAX box; recompiled Oxygen Mint
Dan
parents:
59
diff
changeset
|
1795 |
preg_match_all('#\{slider(2|)=([^\}]*?)\}(.*?)\{\/slider(2|)\}#is', $message, $sb); |
1 | 1796 |
|
1797 |
// Modified to support the sweet new template var system |
|
1798 |
for($i=0;$i<sizeof($sb[1]);$i++) |
|
1799 |
{ |
|
1800 |
$p = ($sb[1][$i] == '2') ? $parser2 : $parser1; |
|
1801 |
$p->assign_vars(Array('TITLE'=>$sb[2][$i],'CONTENT'=>$sb[3][$i])); |
|
1802 |
$message = str_replace("{slider{$sb[1][$i]}={$sb[2][$i]}}{$sb[3][$i]}{/slider{$sb[4][$i]}}", $p->run(), $message); |
|
1803 |
} |
|
1804 |
||
1805 |
/* |
|
1806 |
Extras ;-) |
|
1807 |
$message = preg_replace('##is', '', $message); |
|
1808 |
$message = preg_replace('##is', '', $message); |
|
1809 |
$message = preg_replace('##is', '', $message); |
|
1810 |
$message = preg_replace('##is', '', $message); |
|
1811 |
$message = preg_replace('##is', '', $message); |
|
1812 |
*/ |
|
1813 |
||
1814 |
//die('<pre>'.htmlspecialchars($message).'</pre>'); |
|
1815 |
//eval($message); exit; |
|
1816 |
return $message; |
|
1817 |
} |
|
1818 |
||
1819 |
/** |
|
1820 |
* Print a text field that auto-completes a username entered into it. |
|
1821 |
* @param string $name - the name of the form field |
|
1822 |
* @return string |
|
1823 |
*/ |
|
1824 |
||
1825 |
function username_field($name, $value = false) |
|
1826 |
{ |
|
1827 |
$randomid = md5( time() . microtime() . mt_rand() ); |
|
581
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
579
diff
changeset
|
1828 |
$text = '<input name="'.$name.'" class="autofill username" type="text" size="30" id="userfield_'.$randomid.'"'; |
1 | 1829 |
if($value) $text .= ' value="'.$value.'"'; |
1830 |
$text .= ' />'; |
|
1831 |
return $text; |
|
1832 |
} |
|
1833 |
||
1834 |
/** |
|
1835 |
* Print a text field that auto-completes a page name entered into it. |
|
1836 |
* @param string $name - the name of the form field |
|
1837 |
* @return string |
|
1838 |
*/ |
|
1839 |
||
1840 |
function pagename_field($name, $value = false) |
|
1841 |
{ |
|
1842 |
$randomid = md5( time() . microtime() . mt_rand() ); |
|
581
5e8fd89c02ea
Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents:
579
diff
changeset
|
1843 |
$text = '<input name="'.$name.'" class="autofill page" type="text" size="30" id="pagefield_'.$randomid.'"'; |
1 | 1844 |
if($value) $text .= ' value="'.$value.'"'; |
1845 |
$text .= ' />'; |
|
1846 |
return $text; |
|
1847 |
} |
|
1848 |
||
1849 |
/** |
|
1850 |
* Sends a textarea that can be converted to and from a TinyMCE widget on the fly. |
|
1851 |
* @param string The name of the form element |
|
1852 |
* @param string The initial content. Optional, defaults to blank |
|
1853 |
* @param int Rows in textarea |
|
1854 |
* @param int Columns in textarea |
|
1855 |
* @return string HTML and Javascript code. |
|
1856 |
*/ |
|
1857 |
||
1858 |
function tinymce_textarea($name, $content = '', $rows = 20, $cols = 60) |
|
1859 |
{ |
|
370
b251818286b1
Localized registration errors and activation/COPPA e-mails
Dan
parents:
355
diff
changeset
|
1860 |
global $lang; |
1 | 1861 |
$randomid = md5(microtime() . mt_rand()); |
1862 |
$html = ''; |
|
1863 |
$html .= '<textarea name="' . $name . '" rows="'.$rows.'" cols="'.$cols.'" style="width: 100%;" id="toggleMCEroot_'.$randomid.'">' . $content . '</textarea>'; |
|
370
b251818286b1
Localized registration errors and activation/COPPA e-mails
Dan
parents:
355
diff
changeset
|
1864 |
$html .= '<div style="float: right; display: table;" id="mceSwitchAgent_' . $randomid . '">' . $lang->get('etc_tinymce_btn_text') . ' | <a href="#" onclick="if ( !KILL_SWITCH ) { toggleMCE_'.$randomid.'(); return false; }">' . $lang->get('etc_tinymce_btn_graphical') . '</a></div>'; |
1 | 1865 |
$html .= '<script type="text/javascript"> |
1866 |
// <![CDATA[ |
|
1867 |
function toggleMCE_'.$randomid.'() |
|
1868 |
{ |
|
1869 |
var the_obj = document.getElementById(\'toggleMCEroot_' . $randomid . '\'); |
|
1870 |
var panel = document.getElementById(\'mceSwitchAgent_' . $randomid . '\'); |
|
370
b251818286b1
Localized registration errors and activation/COPPA e-mails
Dan
parents:
355
diff
changeset
|
1871 |
var text_editor = $lang.get("etc_tinymce_btn_text"); |
b251818286b1
Localized registration errors and activation/COPPA e-mails
Dan
parents:
355
diff
changeset
|
1872 |
var graphical_editor = $lang.get("etc_tinymce_btn_graphical"); |
1 | 1873 |
if ( the_obj.dnIsMCE == "yes" ) |
1874 |
{ |
|
1875 |
$dynano(the_obj).destroyMCE(); |
|
370
b251818286b1
Localized registration errors and activation/COPPA e-mails
Dan
parents:
355
diff
changeset
|
1876 |
panel.innerHTML = text_editor + \' | <a href="#" onclick="if ( !KILL_SWITCH ) { toggleMCE_'.$randomid.'(); return false; }">\' + graphical_editor + \'</a>\'; |
1 | 1877 |
} |
1878 |
else |
|
1879 |
{ |
|
1880 |
$dynano(the_obj).switchToMCE(); |
|
370
b251818286b1
Localized registration errors and activation/COPPA e-mails
Dan
parents:
355
diff
changeset
|
1881 |
panel.innerHTML = \'<a href="#" onclick="if ( !KILL_SWITCH ) { toggleMCE_'.$randomid.'(); return false; }">\' + text_editor + \'</a> | \' + graphical_editor; |
1 | 1882 |
} |
1883 |
} |
|
1884 |
// ]]> |
|
1885 |
</script>'; |
|
1886 |
return $html; |
|
1887 |
} |
|
1888 |
||
1889 |
/** |
|
1890 |
* Allows individual parsing of template files. Similar to phpBB but follows the spirit of object-oriented programming ;) |
|
1891 |
* Returns on object of class templateIndividual. Usage instructions can be found in the inline docs for that class. |
|
1892 |
* @param $filename the filename of the template to be parsed |
|
1893 |
* @return object |
|
1894 |
*/ |
|
1895 |
||
1896 |
function makeParser($filename) |
|
1897 |
{ |
|
1898 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
1899 |
$filename = ENANO_ROOT.'/themes/'.$template->theme.'/'.$filename; |
|
1900 |
if(!file_exists($filename)) die('templateIndividual: file '.$filename.' does not exist'); |
|
1901 |
$code = file_get_contents($filename); |
|
1902 |
$parser = new templateIndividual($code); |
|
1903 |
return $parser; |
|
1904 |
} |
|
1905 |
||
1906 |
/** |
|
1907 |
* Same as $template->makeParser(), but takes a string instead of a filename. |
|
1908 |
* @param $text the text to parse |
|
1909 |
* @return object |
|
1910 |
*/ |
|
1911 |
||
1912 |
function makeParserText($code) |
|
1913 |
{ |
|
1914 |
$parser = new templateIndividual($code); |
|
1915 |
return $parser; |
|
1916 |
} |
|
1917 |
||
1918 |
/** |
|
1919 |
* Fetch the HTML for a plugin-added sidebar block |
|
1920 |
* @param $name the plugin name |
|
1921 |
* @return string |
|
1922 |
*/ |
|
1923 |
||
1924 |
function fetch_block($id) |
|
1925 |
{ |
|
1926 |
if(isset($this->plugin_blocks[$id])) return $this->plugin_blocks[$id]; |
|
1927 |
else return false; |
|
1928 |
} |
|
1929 |
||
1930 |
/** |
|
1931 |
* Fetches the contents of both sidebars. |
|
1932 |
* @return array - key 0 is left, key 1 is right |
|
1933 |
* @example list($left, $right) = $template->fetch_sidebar(); |
|
1934 |
*/ |
|
1935 |
||
1936 |
function fetch_sidebar() |
|
1937 |
{ |
|
1938 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
1939 |
||
1940 |
$left = ''; |
|
1941 |
$right = ''; |
|
1942 |
||
1943 |
if ( !$this->fetch_block('Links') ) |
|
1944 |
$this->initLinksWidget(); |
|
1945 |
||
286
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
parents:
276
diff
changeset
|
1946 |
$q = $db->sql_query('SELECT item_id,sidebar_id,block_name,block_type,block_content FROM '.table_prefix.'sidebar' . "\n" |
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
parents:
276
diff
changeset
|
1947 |
. ' WHERE item_enabled=1 ORDER BY sidebar_id ASC, item_order ASC;'); |
1 | 1948 |
if(!$q) $db->_die('The sidebar text data could not be selected.'); |
1949 |
||
1950 |
$vars = $this->extract_vars('elements.tpl'); |
|
1951 |
||
1952 |
if(isset($vars['sidebar_top'])) |
|
1953 |
{ |
|
1954 |
$left .= $this->parse($vars['sidebar_top']); |
|
1955 |
$right .= $this->parse($vars['sidebar_top']); |
|
1956 |
} |
|
1957 |
while($row = $db->fetchrow()) |
|
1958 |
{ |
|
1959 |
switch($row['block_type']) |
|
1960 |
{ |
|
1961 |
case BLOCK_WIKIFORMAT: |
|
1962 |
default: |
|
1963 |
$parser = $this->makeParserText($vars['sidebar_section']); |
|
1964 |
$c = RenderMan::render($row['block_content']); |
|
1965 |
break; |
|
1966 |
case BLOCK_TEMPLATEFORMAT: |
|
1967 |
$parser = $this->makeParserText($vars['sidebar_section']); |
|
1968 |
$c = $this->tplWikiFormat($row['block_content']); |
|
1969 |
break; |
|
1970 |
case BLOCK_HTML: |
|
1971 |
$parser = $this->makeParserText($vars['sidebar_section_raw']); |
|
1972 |
$c = $row['block_content']; |
|
1973 |
break; |
|
1974 |
case BLOCK_PHP: |
|
1975 |
$parser = $this->makeParserText($vars['sidebar_section_raw']); |
|
1976 |
ob_start(); |
|
1977 |
@eval($row['block_content']); |
|
1978 |
$c = ob_get_contents(); |
|
1979 |
ob_end_clean(); |
|
1980 |
break; |
|
1981 |
case BLOCK_PLUGIN: |
|
419
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
1982 |
$parser = $this->makeParserText('{CONTENT}'); |
472
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
1983 |
$c = (gettype($this->fetch_block($row['block_content'])) == 'string') ? $this->fetch_block($row['block_content']) : /* This used to say "can't find plugin block" but I think it's more friendly to just silently hide it. */ ''; |
1 | 1984 |
break; |
1985 |
} |
|
1986 |
$parser->assign_vars(Array( 'TITLE'=>$this->tplWikiFormat($row['block_name']), 'CONTENT'=>$c )); |
|
419
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
1987 |
$run = $parser->run(); |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
1988 |
if ( $row['block_type'] == BLOCK_PLUGIN ) |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
1989 |
{ |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
1990 |
$run = str_replace('{TITLE}', $this->tplWikiFormat($row['block_name']), $run); |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
1991 |
} |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
1992 |
if ($row['sidebar_id'] == SIDEBAR_LEFT ) $left .= $run; |
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
parents:
413
diff
changeset
|
1993 |
elseif($row['sidebar_id'] == SIDEBAR_RIGHT) $right .= $run; |
1 | 1994 |
unset($parser); |
1995 |
} |
|
1996 |
$db->free_result(); |
|
1997 |
if(isset($vars['sidebar_bottom'])) |
|
1998 |
{ |
|
1999 |
$left .= $this->parse($vars['sidebar_bottom']); |
|
2000 |
$right .= $this->parse($vars['sidebar_bottom']); |
|
2001 |
} |
|
2002 |
$min = ''; |
|
2003 |
if(isset($vars['sidebar_top'])) |
|
2004 |
{ |
|
2005 |
$min .= $this->parse($vars['sidebar_top']); |
|
2006 |
} |
|
2007 |
if(isset($vars['sidebar_bottom'])) |
|
2008 |
{ |
|
2009 |
$min .= $this->parse($vars['sidebar_bottom']); |
|
2010 |
} |
|
2011 |
return Array($left, $right, $min); |
|
2012 |
} |
|
2013 |
||
2014 |
function initLinksWidget() |
|
2015 |
{ |
|
2016 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
2017 |
// SourceForge/W3C buttons |
|
2018 |
$ob = Array(); |
|
27
dd659f6ba891
Converting all tables on new installations to UTF-8; this may break MySQL 4.0 compatibility; several minor cosmetic fixes; set Powered button under Links to "on" by default
Dan
parents:
22
diff
changeset
|
2019 |
$admintitle = ( $session->user_level >= USER_LEVEL_ADMIN ) ? 'title="You may disable this button in the admin panel under General Configuration."' : ''; |
1 | 2020 |
if(getConfig('sflogo_enabled')=='1') |
2021 |
{ |
|
203 | 2022 |
$sflogo_secure = ( isset($_SERVER['HTTPS']) ) ? 'https' : 'http'; |
2023 |
$ob[] = '<a style="text-align: center;" href="http://sourceforge.net/" onclick="if ( !KILL_SWITCH ) { window.open(this.href);return false; }"><img style="border-width: 0px;" alt="SourceForge.net Logo" src="' . $sflogo_secure . '://sflogo.sourceforge.net/sflogo.php?group_id='.getConfig('sflogo_groupid').'&type='.getConfig('sflogo_type').'" /></a>'; |
|
1 | 2024 |
} |
57
b354deeaa4c4
Vastly improved compatibility with older versions of IE, particularly 5.0, through the use of a kill switch that turns off all AJAX functions
Dan
parents:
54
diff
changeset
|
2025 |
if(getConfig('w3c_v32') =='1') $ob[] = '<a style="text-align: center;" href="http://validator.w3.org/check?uri=referer" onclick="if ( !KILL_SWITCH ) { window.open(this.href);return false; }"><img style="border: 0px solid #FFFFFF;" alt="Valid HTML 3.2" src="http://www.w3.org/Icons/valid-html32" /></a>'; |
b354deeaa4c4
Vastly improved compatibility with older versions of IE, particularly 5.0, through the use of a kill switch that turns off all AJAX functions
Dan
parents:
54
diff
changeset
|
2026 |
if(getConfig('w3c_v40') =='1') $ob[] = '<a style="text-align: center;" href="http://validator.w3.org/check?uri=referer" onclick="if ( !KILL_SWITCH ) { window.open(this.href);return false; }"><img style="border: 0px solid #FFFFFF;" alt="Valid HTML 4.0" src="http://www.w3.org/Icons/valid-html40" /></a>'; |
b354deeaa4c4
Vastly improved compatibility with older versions of IE, particularly 5.0, through the use of a kill switch that turns off all AJAX functions
Dan
parents:
54
diff
changeset
|
2027 |
if(getConfig('w3c_v401') =='1') $ob[] = '<a style="text-align: center;" href="http://validator.w3.org/check?uri=referer" onclick="if ( !KILL_SWITCH ) { window.open(this.href);return false; }"><img style="border: 0px solid #FFFFFF;" alt="Valid HTML 4.01" src="http://www.w3.org/Icons/valid-html401" /></a>'; |
b354deeaa4c4
Vastly improved compatibility with older versions of IE, particularly 5.0, through the use of a kill switch that turns off all AJAX functions
Dan
parents:
54
diff
changeset
|
2028 |
if(getConfig('w3c_vxhtml10')=='1') $ob[] = '<a style="text-align: center;" href="http://validator.w3.org/check?uri=referer" onclick="if ( !KILL_SWITCH ) { window.open(this.href);return false; }"><img style="border: 0px solid #FFFFFF;" alt="Valid XHTML 1.0" src="http://www.w3.org/Icons/valid-xhtml10" /></a>'; |
b354deeaa4c4
Vastly improved compatibility with older versions of IE, particularly 5.0, through the use of a kill switch that turns off all AJAX functions
Dan
parents:
54
diff
changeset
|
2029 |
if(getConfig('w3c_vxhtml11')=='1') $ob[] = '<a style="text-align: center;" href="http://validator.w3.org/check?uri=referer" onclick="if ( !KILL_SWITCH ) { window.open(this.href);return false; }"><img style="border: 0px solid #FFFFFF;" alt="Valid XHTML 1.1" src="http://www.w3.org/Icons/valid-xhtml11" /></a>'; |
b354deeaa4c4
Vastly improved compatibility with older versions of IE, particularly 5.0, through the use of a kill switch that turns off all AJAX functions
Dan
parents:
54
diff
changeset
|
2030 |
if(getConfig('w3c_vcss') =='1') $ob[] = '<a style="text-align: center;" href="http://validator.w3.org/check?uri=referer" onclick="if ( !KILL_SWITCH ) { window.open(this.href);return false; }"><img style="border: 0px solid #FFFFFF;" alt="Valid CSS" src="http://www.w3.org/Icons/valid-css" /></a>'; |
b354deeaa4c4
Vastly improved compatibility with older versions of IE, particularly 5.0, through the use of a kill switch that turns off all AJAX functions
Dan
parents:
54
diff
changeset
|
2031 |
if(getConfig('dbd_button') =='1') $ob[] = '<a style="text-align: center;" href="http://www.defectivebydesign.org/join/button" onclick="if ( !KILL_SWITCH ) { window.open(this.href);return false; }"><img style="border: 0px solid #FFFFFF;" alt="DRM technology restricts what you can do with your computer" src="http://defectivebydesign.org/sites/nodrm.civicactions.net/files/images/dbd_sm_btn.gif" /><br /><small>Protect your freedom >></small></a>'; |
1 | 2032 |
|
2033 |
$code = $plugins->setHook('links_widget'); |
|
2034 |
foreach ( $code as $cmd ) |
|
2035 |
{ |
|
2036 |
eval($cmd); |
|
2037 |
} |
|
2038 |
||
71 | 2039 |
if(count($ob) > 0 || getConfig('powered_btn') == '1') $sb_links = '<div style="text-align: center; padding: 5px 0;">'. ( ( getConfig('powered_btn') == '1' ) ? $this->fading_button : '' ) . implode('<br />', $ob).'</div>'; |
1 | 2040 |
else $sb_links = ''; |
2041 |
||
2042 |
$this->sidebar_widget('Links', $sb_links); |
|
2043 |
} |
|
2044 |
||
2045 |
/** |
|
2046 |
* Builds a box showing unread private messages. |
|
2047 |
*/ |
|
2048 |
||
2049 |
function notify_unread_pms() |
|
2050 |
{ |
|
2051 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
322
5f1cd51bf1be
Many changes. Installer with PostgreSQL is broken badly and will be for some time.
Dan
parents:
320
diff
changeset
|
2052 |
if ( ( $paths->page_id == 'PrivateMessages' || $paths->page_id == 'Preferences' ) && $paths->namespace == 'Special' ) |
1 | 2053 |
{ |
2054 |
return ''; |
|
2055 |
} |
|
2056 |
$ob = '<div class="usermessage">'."\n"; |
|
2057 |
$s = ( $session->unread_pms == 1 ) ? '' : 's'; |
|
2058 |
$ob .= " <b>You have $session->unread_pms <a href=" . '"' . makeUrlNS('Special', 'PrivateMessages' ) . '"' . ">unread private message$s</a>.</b><br />\n Messages: "; |
|
2059 |
$q = $db->sql_query('SELECT message_id,message_from,subject,date FROM '.table_prefix.'privmsgs WHERE message_to=\'' . $session->username . '\' AND message_read=0 ORDER BY date DESC;'); |
|
2060 |
if ( !$q ) |
|
2061 |
$db->_die(); |
|
2062 |
$messages = array(); |
|
2063 |
while ( $row = $db->fetchrow() ) |
|
2064 |
{ |
|
345
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
335
diff
changeset
|
2065 |
$messages[] = '<a href="' . makeUrlNS('Special', 'PrivateMessages/View/' . $row['message_id']) . '" title="Sent ' . enano_date('F d, Y h:i a', $row['date']) . ' by ' . $row['message_from'] . '">' . $row['subject'] . '</a>'; |
1 | 2066 |
} |
2067 |
$ob .= implode(",\n " , $messages)."\n"; |
|
2068 |
$ob .= '</div>'."\n"; |
|
2069 |
return $ob; |
|
2070 |
} |
|
2071 |
||
2072 |
} // class template |
|
2073 |
||
2074 |
/** |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2075 |
* The core of the template compilation engine. Independent from the Enano API for failsafe operation. |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2076 |
* @param string text to process |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2077 |
* @return string Compiled PHP code |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2078 |
* @access private |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2079 |
*/ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2080 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2081 |
function template_compiler_core($text) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2082 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2083 |
global $db, $session, $paths, $template, $plugins; // Common objects |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2084 |
// A random seed used to salt tags |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2085 |
$seed = md5 ( microtime() . mt_rand() ); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2086 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2087 |
// Strip out PHP sections |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2088 |
preg_match_all('/<\?php(.+?)\?>/is', $text, $php_matches); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2089 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2090 |
foreach ( $php_matches[0] as $i => $match ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2091 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2092 |
// Substitute the PHP section with a random tag |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2093 |
$tag = "{PHP:$i:$seed}"; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2094 |
$text = str_replace_once($match, $tag, $text); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2095 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2096 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2097 |
// Escape slashes and single quotes in template code |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2098 |
$text = str_replace('\\', '\\\\', $text); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2099 |
$text = str_replace('\'', '\\\'', $text); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2100 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2101 |
// Initialize the PHP compiled code |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2102 |
$text = 'ob_start(); echo \''.$text.'\'; $tpl_code = ob_get_contents(); ob_end_clean(); return $tpl_code;'; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2103 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2104 |
## |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2105 |
## Main rules |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2106 |
## |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2107 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2108 |
// |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2109 |
// Conditionals |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2110 |
// |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2111 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2112 |
$keywords = array('BEGIN', 'BEGINNOT', 'IFSET', 'IFPLUGIN'); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2113 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2114 |
// only do this if the plugins API is loaded |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2115 |
if ( is_object(@$plugins) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2116 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2117 |
$code = $plugins->setHook('template_compile_logic_keyword'); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2118 |
foreach ( $code as $cmd ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2119 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2120 |
eval($cmd); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2121 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2122 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2123 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2124 |
$keywords = implode('|', $keywords); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2125 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2126 |
// Matches |
534 | 2127 |
// 1 2 3 4 56 7 8 9 |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
2128 |
$regexp = '/(<!-- ?(' . $keywords . ') ([A-z0-9_-]+) ?-->)([\w\W]*)((<!-- ?BEGINELSE \\3 ?-->)([\w\W]*))?(<!-- ?END(IF)? \\3 ?-->)/isU'; |
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2129 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2130 |
/* |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2131 |
The way this works is: match all blocks using the standard form with a different keyword in the block each time, |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2132 |
and replace them with appropriate PHP logic. Plugin-extensible now. :-) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2133 |
*/ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2134 |
|
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
2135 |
// This is a workaround for what seems like a PCRE bug |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
2136 |
while ( ( profiler_log("[template] compiler matchout start") || true ) && preg_match_all($regexp, $text, $matches) ) |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
2137 |
{ |
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
2138 |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2139 |
profiler_log("[template] compiler core loop start"); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2140 |
for ( $i = 0; $i < count($matches[0]); $i++ ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2141 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2142 |
$start_tag =& $matches[1][$i]; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2143 |
$type =& $matches[2][$i]; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2144 |
$test =& $matches[3][$i]; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2145 |
$particle_true =& $matches[4][$i]; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2146 |
$else_tag =& $matches[6][$i]; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2147 |
$particle_else =& $matches[7][$i]; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2148 |
$end_tag =& $matches[8][$i]; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2149 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2150 |
switch($type) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2151 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2152 |
case 'BEGIN': |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2153 |
$cond = "isset(\$this->tpl_bool['$test']) && \$this->tpl_bool['$test']"; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2154 |
break; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2155 |
case 'BEGINNOT': |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2156 |
$cond = "!isset(\$this->tpl_bool['$test']) || ( isset(\$this->tpl_bool['$test']) && !\$this->tpl_bool['$test'] )"; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2157 |
break; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2158 |
case 'IFPLUGIN': |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2159 |
$cond = "getConfig('plugin_$test') == '1'"; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2160 |
break; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2161 |
case 'IFSET': |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2162 |
$cond = "isset(\$this->tpl_strings['$test'])"; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2163 |
break; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2164 |
default: |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2165 |
// only do this if the plugins API is loaded |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2166 |
if ( is_object(@$plugins) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2167 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2168 |
$code = $plugins->setHook('template_compile_logic_cond'); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2169 |
foreach ( $code as $cmd ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2170 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2171 |
eval($cmd); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2172 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2173 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2174 |
break; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2175 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2176 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2177 |
if ( !isset($cond) || ( isset($cond) && !is_string($cond) ) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2178 |
continue; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2179 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2180 |
$tag_complete = <<<TPLCODE |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2181 |
'; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2182 |
/* START OF CONDITION: $type ($test) */ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2183 |
if ( $cond ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2184 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2185 |
echo '$particle_true'; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2186 |
/* ELSE OF CONDITION: $type ($test) */ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2187 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2188 |
else |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2189 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2190 |
echo '$particle_else'; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2191 |
/* END OF CONDITION: $type ($test) */ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2192 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2193 |
echo ' |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2194 |
TPLCODE; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2195 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2196 |
$text = str_replace_once($matches[0][$i], $tag_complete, $text); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2197 |
} |
566
06d241de3151
Made ajaxReset() call the actual requested title instead of effective title; fixed (again) template compiler bug not matching certain tags (probably PCRE bug)
Dan
parents:
557
diff
changeset
|
2198 |
} |
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2199 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2200 |
profiler_log("[template] compiler core loop end"); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2201 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2202 |
// For debugging ;-) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2203 |
// die("<pre><?php\n" . htmlspecialchars($text."\n\n".print_r($matches,true)) . "\n\n?></pre>"); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2204 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2205 |
// |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2206 |
// Data substitution/variables |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2207 |
// |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2208 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2209 |
// System messages |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2210 |
$text = preg_replace('/<!-- SYSMSG ([A-z0-9\._-]+?) -->/is', '\' . $template->tplWikiFormat($paths->sysMsg(\'\\1\')) . \'', $text); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2211 |
|
534 | 2212 |
// only do this if the plugins API is loaded |
2213 |
if ( is_object(@$plugins) ) |
|
2214 |
{ |
|
2215 |
$code = $plugins->setHook('template_compile_subst'); |
|
2216 |
foreach ( $code as $cmd ) |
|
2217 |
{ |
|
2218 |
eval($cmd); |
|
2219 |
} |
|
2220 |
} |
|
2221 |
||
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2222 |
// Template variables |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2223 |
$text = preg_replace('/\{([A-z0-9_-]+?)\}/is', '\' . $this->tpl_strings[\'\\1\'] . \'', $text); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2224 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2225 |
// Reinsert PHP |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2226 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2227 |
foreach ( $php_matches[1] as $i => $match ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2228 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2229 |
// Substitute the random tag with the "real" PHP code |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2230 |
$tag = "{PHP:$i:$seed}"; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2231 |
$text = str_replace_once($tag, "'; $match echo '", $text); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2232 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2233 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2234 |
// echo('<pre>' . htmlspecialchars($text) . '</pre>'); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2235 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2236 |
profiler_log("[template] compiler subst end"); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2237 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2238 |
return $text; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2239 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2240 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2241 |
/** |
1 | 2242 |
* Handles parsing of an individual template file. Instances should only be created through $template->makeParser(). To use: |
2243 |
* - Call $template->makeParser(template file name) - file name should be something.tpl, css/whatever.css, etc. |
|
2244 |
* - Make an array of strings you want the template to access. $array['STRING'] would be referenced in the template like {STRING} |
|
2245 |
* - Make an array of boolean values. These can be used for conditionals in the template (<!-- IF something --> whatever <!-- ENDIF something -->) |
|
2246 |
* - Call assign_vars() to pass the strings to the template parser. Same thing with assign_bool(). |
|
2247 |
* - Call run() to parse the template and get your fully compiled HTML. |
|
2248 |
* @access private |
|
2249 |
*/ |
|
2250 |
||
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2251 |
class templateIndividual extends template |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2252 |
{ |
1 | 2253 |
var $tpl_strings, $tpl_bool, $tpl_code; |
2254 |
var $compiled = false; |
|
2255 |
/** |
|
2256 |
* Constructor. |
|
2257 |
*/ |
|
2258 |
function __construct($text) |
|
2259 |
{ |
|
2260 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
2261 |
$this->tpl_code = $text; |
|
2262 |
$this->tpl_strings = $template->tpl_strings; |
|
2263 |
$this->tpl_bool = $template->tpl_bool; |
|
2264 |
} |
|
2265 |
/** |
|
345
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
335
diff
changeset
|
2266 |
* PHP 4 constructor. Deprecated in 1.1.x. |
1 | 2267 |
*/ |
345
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
335
diff
changeset
|
2268 |
/* |
1 | 2269 |
function templateIndividual($text) |
2270 |
{ |
|
2271 |
$this->__construct($text); |
|
2272 |
} |
|
345
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
parents:
335
diff
changeset
|
2273 |
*/ |
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
2274 |
|
1 | 2275 |
/** |
2276 |
* Assigns an array of string values to the template. Strings can be accessed from the template by inserting {KEY_NAME} in the template file. |
|
2277 |
* @param $vars array |
|
2278 |
*/ |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
2279 |
|
1 | 2280 |
function assign_vars($vars) |
2281 |
{ |
|
2282 |
$this->tpl_strings = array_merge($this->tpl_strings, $vars); |
|
2283 |
} |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
2284 |
|
1 | 2285 |
/** |
2286 |
* Assigns an array of boolean values to the template. These can be used for <!-- IF ... --> statements. |
|
2287 |
* @param $vars array |
|
2288 |
*/ |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
2289 |
|
1 | 2290 |
function assign_bool($vars) |
2291 |
{ |
|
2292 |
$this->tpl_bool = array_merge($this->tpl_bool, $vars); |
|
2293 |
} |
|
557
26479224936a
Modified $template->init_vars() to pivot to local page metadata and permissions from a PageProcessor object instead of global data from $paths and permissions from $session to allow redirects to affect on-page controls as well as the actual content (only partially complete, protection and several other elements still need to be localized)
Dan
parents:
555
diff
changeset
|
2294 |
|
1 | 2295 |
/** |
2296 |
* Compiles and executes the template code. |
|
2297 |
* @return string |
|
2298 |
*/ |
|
2299 |
function run() |
|
2300 |
{ |
|
2301 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
2302 |
if(!$this->compiled) |
|
2303 |
{ |
|
2304 |
$this->tpl_code = $this->compile_template_text($this->tpl_code); |
|
2305 |
$this->compiled = true; |
|
2306 |
} |
|
2307 |
return eval($this->tpl_code); |
|
2308 |
} |
|
2309 |
} |
|
2310 |
||
2311 |
/** |
|
2312 |
* A version of the template compiler that does not rely at all on the other parts of Enano. Used during installation and for showing |
|
2313 |
* "critical error" messages. ** REQUIRES ** the Oxygen theme. |
|
2314 |
*/ |
|
2315 |
||
286
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
parents:
276
diff
changeset
|
2316 |
class template_nodb |
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
parents:
276
diff
changeset
|
2317 |
{ |
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2318 |
var $fading_button, $tpl_strings, $tpl_bool, $theme, $style, $no_headers, $additional_headers, $sidebar_extra, $sidebar_widgets, $toolbar_menu, $theme_list, $named_theme_list; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2319 |
function __construct() |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2320 |
{ |
1 | 2321 |
$this->tpl_bool = Array(); |
2322 |
$this->tpl_strings = Array(); |
|
2323 |
$this->sidebar_extra = ''; |
|
2324 |
$this->sidebar_widgets = ''; |
|
2325 |
$this->toolbar_menu = ''; |
|
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2326 |
$this->additional_headers = '<style type="text/css">div.pagenav { border-top: 1px solid #CCC; padding-top: 7px; margin-top: 10px; }</style>'; |
1 | 2327 |
|
276
acfdccf7a2bf
Re-sync Oxygen and Mint and Oxygen simple with Oxygen main; a couple improvements to the redirect-on-no-config code
Dan
parents:
272
diff
changeset
|
2328 |
$this->fading_button = '<div style="background-image: url('.scriptPath.'/images/about-powered-enano-hover.png); background-repeat: no-repeat; width: 88px; height: 31px; margin: 0 auto 5px auto;"> |
acfdccf7a2bf
Re-sync Oxygen and Mint and Oxygen simple with Oxygen main; a couple improvements to the redirect-on-no-config code
Dan
parents:
272
diff
changeset
|
2329 |
<a href="http://enanocms.org/" onclick="window.open(this.href); return false;"><img style="border-width: 0;" alt=" " src="'.scriptPath.'/images/about-powered-enano.png" onmouseover="domOpacity(this, 100, 0, 500);" onmouseout="domOpacity(this, 0, 100, 500);" /></a> |
acfdccf7a2bf
Re-sync Oxygen and Mint and Oxygen simple with Oxygen main; a couple improvements to the redirect-on-no-config code
Dan
parents:
272
diff
changeset
|
2330 |
</div>'; |
acfdccf7a2bf
Re-sync Oxygen and Mint and Oxygen simple with Oxygen main; a couple improvements to the redirect-on-no-config code
Dan
parents:
272
diff
changeset
|
2331 |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2332 |
// get list of themes |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2333 |
$this->theme_list = array(); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2334 |
$this->named_theme_list = array(); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2335 |
$order = 0; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2336 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2337 |
if ( $dir = @opendir( ENANO_ROOT . '/themes' ) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2338 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2339 |
while ( $dh = @readdir($dir) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2340 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2341 |
if ( $dh == '.' || $dh == '..' || !is_dir( ENANO_ROOT . "/themes/$dh" ) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2342 |
continue; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2343 |
$theme_dir = ENANO_ROOT . "/themes/$dh"; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2344 |
if ( !file_exists("$theme_dir/theme.cfg") ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2345 |
continue; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2346 |
$data = array( |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2347 |
'theme_id' => $dh, |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2348 |
'theme_name' => ucwords($dh), |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2349 |
'enabled' => 1, |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2350 |
'theme_order' => ++$order, |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2351 |
'default_style' => $this->get_default_style($dh) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2352 |
); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2353 |
$this->named_theme_list[$dh] = $data; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2354 |
$this->theme_list[] =& $this->named_theme_list[$dh]; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2355 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2356 |
@closedir($dir); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2357 |
} |
1 | 2358 |
} |
2359 |
function template() { |
|
2360 |
$this->__construct(); |
|
2361 |
} |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2362 |
function get_default_style($theme_id) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2363 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2364 |
if ( !is_dir( ENANO_ROOT . "/themes/$theme_id/css" ) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2365 |
return false; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2366 |
$ds = false; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2367 |
if ( $dh = @opendir( ENANO_ROOT . "/themes/$theme_id/css" ) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2368 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2369 |
while ( $dir = @readdir($dh) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2370 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2371 |
if ( !preg_match('/\.css$/', $dir) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2372 |
continue; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2373 |
if ( $dir == '_printable.css' ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2374 |
continue; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2375 |
$ds = preg_replace('/\.css$/', '', $dir); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2376 |
break; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2377 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2378 |
closedir($dh); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2379 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2380 |
else |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2381 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2382 |
return false; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2383 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2384 |
return $ds; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2385 |
} |
1 | 2386 |
function get_css($s = false) { |
2387 |
if($s) |
|
2388 |
return $this->process_template('css/'.$s); |
|
2389 |
else |
|
2390 |
return $this->process_template('css/'.$this->style.'.css'); |
|
2391 |
} |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2392 |
function load_theme($name, $css, $auto_init = true) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2393 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2394 |
if ( !isset($this->named_theme_list[$name]) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2395 |
$name = $this->theme_list[0]['theme_id']; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2396 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2397 |
if ( !file_exists(ENANO_ROOT . "/themes/$name/css/$css.css") ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2398 |
$css = $this->named_theme_list[$name]['default_style']; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2399 |
|
1 | 2400 |
$this->theme = $name; |
2401 |
$this->style = $css; |
|
2402 |
||
2403 |
$this->tpl_strings['SCRIPTPATH'] = scriptPath; |
|
2404 |
if ( $auto_init ) |
|
2405 |
$this->init_vars(); |
|
2406 |
} |
|
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2407 |
function add_header($html) |
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2408 |
{ |
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2409 |
$this->additional_headers .= "\n<!-- ----------------------------------------------------------- -->\n\n " . $html; |
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2410 |
} |
1 | 2411 |
function init_vars() |
2412 |
{ |
|
2413 |
global $sideinfo; |
|
2414 |
global $this_page; |
|
243
a7d0f2711df1
Installer localization started. Welcome, License, and SysReqs pages are fully localized.
Dan
parents:
231
diff
changeset
|
2415 |
global $lang; |
1 | 2416 |
global $db, $session, $paths, $template, $plugins; // Common objects |
2417 |
$tplvars = $this->extract_vars('elements.tpl'); |
|
2418 |
$tb = ''; |
|
2419 |
// Get the "article" button text (depends on namespace) |
|
355
d15e4411ef65
Fixed a coupla minor bugs with the template_nodb class wrongly referencing $lang
Dan
parents:
349
diff
changeset
|
2420 |
if(defined('IN_ENANO_INSTALL') && is_object($lang)) $ns = $lang->get('meta_btn_article'); |
1 | 2421 |
else $ns = 'system error page'; |
243
a7d0f2711df1
Installer localization started. Welcome, License, and SysReqs pages are fully localized.
Dan
parents:
231
diff
changeset
|
2422 |
$t = str_replace('{FLAGS}', 'onclick="return false;" title="Hey! A button that doesn\'t do anything. Clever..." accesskey="a"', $tplvars['toolbar_button']); |
1 | 2423 |
$t = str_replace('{HREF}', '#', $t); |
2424 |
$t = str_replace('{TEXT}', $ns, $t); |
|
2425 |
$tb .= $t; |
|
2426 |
||
2427 |
// Page toolbar |
|
2428 |
||
2429 |
$this->tpl_bool = Array( |
|
2430 |
'auth_admin'=>true, |
|
2431 |
'user_logged_in'=>true, |
|
2432 |
'right_sidebar'=>false, |
|
2433 |
); |
|
2434 |
$this->tpl_bool['in_sidebar_admin'] = false; |
|
2435 |
||
2436 |
$this->tpl_bool['auth_rename'] = false; |
|
2437 |
||
2438 |
$asq = $asa = ''; |
|
2439 |
||
2440 |
$this->tpl_bool['fixed_menus'] = false; |
|
2441 |
$slink = defined('IN_ENANO_INSTALL') ? scriptPath.'/install.php?mode=css' : makeUrlNS('Special', 'CSS'); |
|
2442 |
||
2443 |
$title = ( is_object($paths) ) ? $paths->page : 'Critical error'; |
|
2444 |
||
243
a7d0f2711df1
Installer localization started. Welcome, License, and SysReqs pages are fully localized.
Dan
parents:
231
diff
changeset
|
2445 |
$headers = '<style type="text/css">div.pagenav { border-top: 1px solid #CCC; padding-top: 7px; margin-top: 10px; }</style>'; |
244
09f8a9a03ccf
Localized installer database info page and finished localizing sysreqs page
Dan
parents:
243
diff
changeset
|
2446 |
|
09f8a9a03ccf
Localized installer database info page and finished localizing sysreqs page
Dan
parents:
243
diff
changeset
|
2447 |
$js_dynamic = ''; |
243
a7d0f2711df1
Installer localization started. Welcome, License, and SysReqs pages are fully localized.
Dan
parents:
231
diff
changeset
|
2448 |
if ( defined('IN_ENANO_INSTALL') ) |
a7d0f2711df1
Installer localization started. Welcome, License, and SysReqs pages are fully localized.
Dan
parents:
231
diff
changeset
|
2449 |
{ |
244
09f8a9a03ccf
Localized installer database info page and finished localizing sysreqs page
Dan
parents:
243
diff
changeset
|
2450 |
$js_dynamic .= '<script type="text/javascript" src="install.php?mode=langjs"></script>'; |
243
a7d0f2711df1
Installer localization started. Welcome, License, and SysReqs pages are fully localized.
Dan
parents:
231
diff
changeset
|
2451 |
} |
244
09f8a9a03ccf
Localized installer database info page and finished localizing sysreqs page
Dan
parents:
243
diff
changeset
|
2452 |
$js_dynamic .= '<script type="text/javascript">var title="'. $title .'"; var scriptPath="'.scriptPath.'"; var ENANO_SID=""; var AES_BITS='.AES_BITS.'; var AES_BLOCKSIZE=' . AES_BLOCKSIZE . '; var pagepass=\'\'; var ENANO_LANG_ID = 1;</script>'; |
243
a7d0f2711df1
Installer localization started. Welcome, License, and SysReqs pages are fully localized.
Dan
parents:
231
diff
changeset
|
2453 |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2454 |
global $site_name, $site_desc; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2455 |
$site_default_name = ( !empty($site_name) ) ? $site_name : 'Critical error'; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2456 |
$site_default_desc = ( !empty($site_desc) ) ? $site_desc : 'This site is experiencing a problem and cannot load.'; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2457 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2458 |
$site_name_final = ( defined('IN_ENANO_INSTALL') && is_object($lang) ) ? $lang->get('meta_site_name') : $site_default_name; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2459 |
$site_desc_final = ( defined('IN_ENANO_INSTALL') && is_object($lang) ) ? $lang->get('meta_site_desc') : $site_default_desc; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2460 |
|
1 | 2461 |
// The rewritten template engine will process all required vars during the load_template stage instead of (cough) re-processing everything each time around. |
2462 |
$tpl_strings = Array( |
|
2463 |
'PAGE_NAME'=>$this_page, |
|
2464 |
'PAGE_URLNAME'=>'Null', |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2465 |
'SITE_NAME' => $site_name_final, |
1 | 2466 |
'USERNAME'=>'admin', |
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2467 |
'SITE_DESC' => $site_desc_final, |
1 | 2468 |
'TOOLBAR'=>$tb, |
2469 |
'SCRIPTPATH'=>scriptPath, |
|
2470 |
'CONTENTPATH'=>contentPath, |
|
2471 |
'ADMIN_SID_QUES'=>$asq, |
|
2472 |
'ADMIN_SID_AMP'=>$asa, |
|
2473 |
'ADMIN_SID_AMP_HTML'=>'', |
|
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2474 |
'ADDITIONAL_HEADERS'=>$this->additional_headers, |
1 | 2475 |
'SIDEBAR_EXTRA'=>'', |
355
d15e4411ef65
Fixed a coupla minor bugs with the template_nodb class wrongly referencing $lang
Dan
parents:
349
diff
changeset
|
2476 |
'COPYRIGHT'=>( defined('IN_ENANO_INSTALL') && is_object($lang) ) ? $lang->get('meta_enano_copyright') : ( defined('ENANO_CONFIG_FETCHED') ? getConfig('copyright_notice') : '' ), |
1 | 2477 |
'TOOLBAR_EXTRAS'=>'', |
125
fb31c951d3a2
Fixed some rather major bugs in the registration system, this will need a release followup
Dan
parents:
118
diff
changeset
|
2478 |
'REQUEST_URI'=>( isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '' ).$_SERVER['REQUEST_URI'], |
1 | 2479 |
'STYLE_LINK'=>$slink, |
2480 |
'LOGOUT_LINK'=>'', |
|
2481 |
'THEME_LINK'=>'', |
|
2482 |
'TEMPLATE_DIR'=>scriptPath.'/themes/'.$this->theme, |
|
2483 |
'THEME_ID'=>$this->theme, |
|
2484 |
'STYLE_ID'=>$this->style, |
|
244
09f8a9a03ccf
Localized installer database info page and finished localizing sysreqs page
Dan
parents:
243
diff
changeset
|
2485 |
'JS_DYNAMIC_VARS'=>$js_dynamic, |
1 | 2486 |
'SIDEBAR_RIGHT'=>'', |
377
bb3e6c3bd4f4
Removed stray debugging info from ACL editor success notification; added ability for guests to set language on URI (?lang=eng); added html_in_pages ACL type and separated from php_in_pages so HTML can be embedded but not PHP; rewote portions of the path manager to better abstract URL input; added Zend Framework into list of BSD-licensed libraries; localized some remaining strings; got the migration script working, but just barely; fixed display bug in Special:Contributions; localized Main Page button in admin panel
Dan
parents:
372
diff
changeset
|
2487 |
'REPORT_URI' => '', |
bb3e6c3bd4f4
Removed stray debugging info from ACL editor success notification; added ability for guests to set language on URI (?lang=eng); added html_in_pages ACL type and separated from php_in_pages so HTML can be embedded but not PHP; rewote portions of the path manager to better abstract URL input; added Zend Framework into list of BSD-licensed libraries; localized some remaining strings; got the migration script working, but just barely; fixed display bug in Special:Contributions; localized Main Page button in admin panel
Dan
parents:
372
diff
changeset
|
2488 |
'URL_ABOUT_ENANO' => 'http://enanocms.org/' |
1 | 2489 |
); |
2490 |
$this->tpl_strings = array_merge($tpl_strings, $this->tpl_strings); |
|
2491 |
||
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2492 |
$sidebar = ( is_array(@$sideinfo) ) ? $sideinfo : ''; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2493 |
if ( $sidebar != '' ) |
1 | 2494 |
{ |
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2495 |
if ( isset($tplvars['sidebar_top']) ) |
1 | 2496 |
{ |
2497 |
$text = $this->makeParserText($tplvars['sidebar_top']); |
|
2498 |
$top = $text->run(); |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2499 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2500 |
else |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2501 |
{ |
1 | 2502 |
$top = ''; |
2503 |
} |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2504 |
|
1 | 2505 |
$p = $this->makeParserText($tplvars['sidebar_section']); |
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2506 |
$b = $this->makeParserText($tplvars['sidebar_button']); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2507 |
$sidebar_text = ''; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2508 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2509 |
foreach ( $sidebar as $title => $links ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2510 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2511 |
$p->assign_vars(array( |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2512 |
'TITLE' => $title |
1 | 2513 |
)); |
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2514 |
// build content |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2515 |
$content = ''; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2516 |
foreach ( $links as $link_text => $url ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2517 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2518 |
$b->assign_vars(array( |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2519 |
'HREF' => htmlspecialchars($url), |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2520 |
'FLAGS' => '', |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2521 |
'TEXT' => $link_text |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2522 |
)); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2523 |
$content .= $b->run(); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2524 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2525 |
$p->assign_vars(array( |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2526 |
'CONTENT' => $content |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2527 |
)); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2528 |
$sidebar_text .= $p->run(); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2529 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2530 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2531 |
if ( isset($tplvars['sidebar_bottom']) ) |
1 | 2532 |
{ |
2533 |
$text = $this->makeParserText($tplvars['sidebar_bottom']); |
|
2534 |
$bottom = $text->run(); |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2535 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2536 |
else |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2537 |
{ |
1 | 2538 |
$bottom = ''; |
2539 |
} |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2540 |
$sidebar = $top . $sidebar_text . $bottom; |
1 | 2541 |
} |
2542 |
$this->tpl_strings['SIDEBAR_LEFT'] = $sidebar; |
|
2543 |
||
2544 |
$this->tpl_bool['sidebar_left'] = ( $this->tpl_strings['SIDEBAR_LEFT'] != '') ? true : false; |
|
2545 |
$this->tpl_bool['sidebar_right'] = ( $this->tpl_strings['SIDEBAR_RIGHT'] != '') ? true : false; |
|
2546 |
$this->tpl_bool['right_sidebar'] = $this->tpl_bool['sidebar_right']; // backward compatibility |
|
2547 |
$this->tpl_bool['stupid_mode'] = true; |
|
2548 |
} |
|
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2549 |
function header($simple = false) |
1 | 2550 |
{ |
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2551 |
$filename = ( $simple ) ? 'simple-header.tpl' : 'header.tpl'; |
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2552 |
if ( !$this->no_headers ) |
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2553 |
{ |
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2554 |
echo $this->process_template($filename); |
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2555 |
} |
1 | 2556 |
} |
272
e0ec986c0af3
Searching sucks, and Enano's search algorithm was complete bullcrap. So I rewrote it. No, it does not use Google search technology. Like they have a patent for using the Arial font on search result pages anyway.
Dan
parents:
256
diff
changeset
|
2557 |
function footer($simple = false) |
1 | 2558 |
{ |
2559 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2560 |
global $lang; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2561 |
|
1 | 2562 |
if(!$this->no_headers) { |
2563 |
global $_starttime; |
|
91 | 2564 |
|
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2565 |
$filename = ( $simple ) ? 'simple-footer.tpl' : 'footer.tpl'; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2566 |
$t = $this->process_template($filename); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2567 |
|
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2568 |
$f = microtime_float(); |
1 | 2569 |
$f = $f - $_starttime; |
2570 |
$f = round($f, 4); |
|
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2571 |
|
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2572 |
if ( is_object($lang) ) |
98
6457a9b983c6
Fixed non-object reference in databaseless template, added locking for Javascript paginator, made comments on AES key size more clear in constants, and disallowed "anonymous" and IP addresses for admin username in install.php; Loch Ness release candidate
Dan
parents:
91
diff
changeset
|
2573 |
{ |
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2574 |
$t_loc = $lang->get('page_msg_stats_gentime_short', array('time' => $f)); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2575 |
$t_loc_long = $lang->get('page_msg_stats_gentime_long', array('time' => $f)); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2576 |
$q_loc = '<a href="' . $this->tpl_strings['REPORT_URI'] . '">' . $lang->get('page_msg_stats_sql', array('nq' => ( is_object($db) ? $db->num_queries : 'N/A' ))) . '</a>'; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2577 |
$dbg = $t_loc; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2578 |
$dbg_long = $t_loc_long; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2579 |
if ( $session->user_level >= USER_LEVEL_ADMIN ) |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2580 |
{ |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2581 |
$dbg .= " | $q_loc"; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2582 |
$dbg_long .= " | $q_loc"; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2583 |
} |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2584 |
$t = str_replace('[[EnanoPoweredLink]]', $lang->get('page_enano_powered', array('about_uri' => $this->tpl_strings['URL_ABOUT_ENANO'])), $t); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2585 |
$t = str_replace('[[EnanoPoweredLinkLong]]', $lang->get('page_enano_powered_long', array('about_uri' => $this->tpl_strings['URL_ABOUT_ENANO'])), $t); |
98
6457a9b983c6
Fixed non-object reference in databaseless template, added locking for Javascript paginator, made comments on AES key size more clear in constants, and disallowed "anonymous" and IP addresses for admin username in install.php; Loch Ness release candidate
Dan
parents:
91
diff
changeset
|
2586 |
} |
6457a9b983c6
Fixed non-object reference in databaseless template, added locking for Javascript paginator, made comments on AES key size more clear in constants, and disallowed "anonymous" and IP addresses for admin username in install.php; Loch Ness release candidate
Dan
parents:
91
diff
changeset
|
2587 |
else |
6457a9b983c6
Fixed non-object reference in databaseless template, added locking for Javascript paginator, made comments on AES key size more clear in constants, and disallowed "anonymous" and IP addresses for admin username in install.php; Loch Ness release candidate
Dan
parents:
91
diff
changeset
|
2588 |
{ |
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2589 |
$t_loc = "Time: {$f}s"; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2590 |
$t_loc_long = "Generated in {$f}sec"; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2591 |
$q_loc = '<a href="' . $this->tpl_strings['REPORT_URI'] . '">' . ( is_object($db) ? "{$db->num_queries} SQL" : 'Queries: N/A' ) . '</a>'; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2592 |
$dbg = $t_loc; |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2593 |
$dbg_long = $t_loc_long; |
484
340c81fdd350
Fixed session validation bug in upgrade script; fixed non-object reference in template_nodb
Dan
parents:
472
diff
changeset
|
2594 |
if ( is_object($session) ) |
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2595 |
{ |
484
340c81fdd350
Fixed session validation bug in upgrade script; fixed non-object reference in template_nodb
Dan
parents:
472
diff
changeset
|
2596 |
if ( $session->user_level >= USER_LEVEL_ADMIN ) |
340c81fdd350
Fixed session validation bug in upgrade script; fixed non-object reference in template_nodb
Dan
parents:
472
diff
changeset
|
2597 |
{ |
340c81fdd350
Fixed session validation bug in upgrade script; fixed non-object reference in template_nodb
Dan
parents:
472
diff
changeset
|
2598 |
$dbg .= " | $q_loc"; |
340c81fdd350
Fixed session validation bug in upgrade script; fixed non-object reference in template_nodb
Dan
parents:
472
diff
changeset
|
2599 |
$dbg_long .= " | $q_loc"; |
340c81fdd350
Fixed session validation bug in upgrade script; fixed non-object reference in template_nodb
Dan
parents:
472
diff
changeset
|
2600 |
} |
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2601 |
} |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2602 |
$t = str_replace('[[EnanoPoweredLink]]', 'Powered by <a href="http://enanocms.org/" onclick="window.open(this.href); return false;">Enano</a>', $t); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2603 |
$t = str_replace('[[EnanoPoweredLinkLong]]', 'Website engine powered by <a href="http://enanocms.org/" onclick="window.open(this.href); return false;">Enano</a>', $t); |
98
6457a9b983c6
Fixed non-object reference in databaseless template, added locking for Javascript paginator, made comments on AES key size more clear in constants, and disallowed "anonymous" and IP addresses for admin username in install.php; Loch Ness release candidate
Dan
parents:
91
diff
changeset
|
2604 |
} |
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2605 |
|
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2606 |
$t = str_replace('[[Stats]]', $dbg, $t); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2607 |
$t = str_replace('[[StatsLong]]', $dbg_long, $t); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2608 |
$t = str_replace('[[NumQueries]]', ( is_object($db) ? (string)$db->num_queries : '0' ), $t); |
91 | 2609 |
$t = str_replace('[[GenTime]]', (string)$f, $t); |
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2610 |
$t = str_replace('[[NumQueriesLoc]]', $q_loc, $t); |
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents:
389
diff
changeset
|
2611 |
$t = str_replace('[[GenTimeLoc]]', $t_loc, $t); |
91 | 2612 |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2613 |
if ( defined('ENANO_DEBUG') ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2614 |
$t = str_replace('</body>', '<div id="profile" style="margin: 10px;">' . profiler_make_html() . '</div></body>', $t); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2615 |
|
1 | 2616 |
echo $t; |
2617 |
} |
|
2618 |
else return ''; |
|
2619 |
} |
|
2620 |
function getHeader() |
|
2621 |
{ |
|
2622 |
if(!$this->no_headers) return $this->process_template('header.tpl'); |
|
2623 |
else return ''; |
|
2624 |
} |
|
2625 |
function getFooter() |
|
2626 |
{ |
|
2627 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
2628 |
if(!$this->no_headers) { |
|
2629 |
global $_starttime; |
|
2630 |
$f = microtime(true); |
|
2631 |
$f = $f - $_starttime; |
|
2632 |
$f = round($f, 4); |
|
2633 |
if(defined('IN_ENANO_INSTALL')) $nq = 'N/A'; |
|
2634 |
else $nq = $db->num_queries; |
|
2635 |
if($nq == 0) $nq = 'N/A'; |
|
2636 |
$dbg = 'Time: '.$f.'s | Queries: '.$nq; |
|
2637 |
if($nq == 0) $nq = 'N/A'; |
|
2638 |
$t = $this->process_template('footer.tpl'); |
|
2639 |
$t = str_replace('[[Stats]]', $dbg, $t); |
|
2640 |
return $t; |
|
2641 |
} |
|
2642 |
else return ''; |
|
2643 |
} |
|
2644 |
||
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2645 |
function process_template($file) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2646 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2647 |
profiler_log("[template_nodb] STARTED eval of file $file"); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2648 |
$compiled = $this->compile_template($file); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2649 |
profiler_log("[template_nodb] COMPILED file $file"); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2650 |
$result = eval($compiled); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2651 |
profiler_log("[template_nodb] FINISHED eval of file $file"); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2652 |
return $result; |
1 | 2653 |
} |
2654 |
||
2655 |
function extract_vars($file) { |
|
2656 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
2657 |
if(!is_file(ENANO_ROOT . '/themes/'.$this->theme.'/'.$file)) die('Cannot find '.$file.' file for style "'.$this->theme.'", exiting'); |
|
2658 |
$text = file_get_contents(ENANO_ROOT . '/themes/'.$this->theme.'/'.$file); |
|
2659 |
preg_match_all('#<\!-- VAR ([A-z0-9_-]*) -->(.*?)<\!-- ENDVAR \\1 -->#is', $text, $matches); |
|
2660 |
$tplvars = Array(); |
|
2661 |
for($i=0;$i<sizeof($matches[1]);$i++) |
|
2662 |
{ |
|
2663 |
$tplvars[$matches[1][$i]] = $matches[2][$i]; |
|
2664 |
} |
|
2665 |
return $tplvars; |
|
2666 |
} |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2667 |
function compile_template($text) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2668 |
{ |
1 | 2669 |
$text = file_get_contents(ENANO_ROOT . '/themes/'.$this->theme.'/'.$text); |
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2670 |
return $this->compile_template_text_post(template_compiler_core($text)); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2671 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2672 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2673 |
function compile_template_text($text) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2674 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2675 |
return $this->compile_template_text_post(template_compiler_core($text)); |
1 | 2676 |
} |
2677 |
||
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2678 |
/** |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2679 |
* Post-processor for template code. Basically what this does is it localizes {lang:foo} blocks. |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2680 |
* @param string Mostly-processed TPL code |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2681 |
* @return string |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2682 |
*/ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2683 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2684 |
function compile_template_text_post($text) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2685 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2686 |
global $lang; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2687 |
preg_match_all('/\{lang:([a-z0-9]+_[a-z0-9_]+)\}/', $text, $matches); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2688 |
foreach ( $matches[1] as $i => $string_id ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2689 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2690 |
if ( is_object(@$lang) ) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2691 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2692 |
$string = $lang->get($string_id); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2693 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2694 |
else |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2695 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2696 |
$string = '[language not loaded]'; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2697 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2698 |
$string = str_replace('\\', '\\\\', $string); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2699 |
$string = str_replace('\'', '\\\'', $string); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2700 |
$text = str_replace_once($matches[0][$i], $string, $text); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2701 |
} |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2702 |
return $text; |
1 | 2703 |
} |
2704 |
||
2705 |
/** |
|
2706 |
* Allows individual parsing of template files. Similar to phpBB but follows the spirit of object-oriented programming ;) |
|
2707 |
* Returns on object of class templateIndividual. Usage instructions can be found in the inline docs for that class. |
|
2708 |
* @param $filename the filename of the template to be parsed |
|
2709 |
* @return object |
|
2710 |
*/ |
|
2711 |
||
2712 |
function makeParser($filename) |
|
2713 |
{ |
|
2714 |
$filename = ENANO_ROOT.'/themes/'.$this->theme.'/'.$filename; |
|
2715 |
if(!file_exists($filename)) die('templateIndividual: file '.$filename.' does not exist'); |
|
2716 |
$code = file_get_contents($filename); |
|
2717 |
$parser = new templateIndividualSafe($code, $this); |
|
2718 |
return $parser; |
|
2719 |
} |
|
2720 |
||
2721 |
/** |
|
2722 |
* Same as $template->makeParser(), but takes a string instead of a filename. |
|
2723 |
* @param $text the text to parse |
|
2724 |
* @return object |
|
2725 |
*/ |
|
2726 |
||
2727 |
function makeParserText($code) |
|
2728 |
{ |
|
2729 |
$parser = new templateIndividualSafe($code, $this); |
|
2730 |
return $parser; |
|
2731 |
} |
|
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2732 |
|
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2733 |
/** |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2734 |
* Assigns an array of string values to the template. Strings can be accessed from the template by inserting {KEY_NAME} in the template file. |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2735 |
* @param $vars array |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2736 |
*/ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2737 |
function assign_vars($vars) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2738 |
{ |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2739 |
if(is_array($this->tpl_strings)) |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2740 |
$this->tpl_strings = array_merge($this->tpl_strings, $vars); |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2741 |
else |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2742 |
$this->tpl_strings = $vars; |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2743 |
} |
1 | 2744 |
|
2745 |
} // class template_nodb |
|
2746 |
||
2747 |
/** |
|
2748 |
* Identical to templateIndividual, except extends template_nodb instead of template |
|
2749 |
* @see class template |
|
2750 |
*/ |
|
2751 |
||
533
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2752 |
class templateIndividualSafe extends template_nodb |
698a8f04957c
Huge improvements to the template_nodb class and surrounding code; moved template compiler core to its own non-classed function to allow code re-use
Dan
parents:
526
diff
changeset
|
2753 |
{ |
1 | 2754 |
var $tpl_strings, $tpl_bool, $tpl_code; |
2755 |
var $compiled = false; |
|
2756 |
/** |
|
2757 |
* Constructor. |
|
2758 |
*/ |
|
2759 |
function __construct($text, $parent) |
|
2760 |
{ |
|
2761 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
2762 |
$this->tpl_code = $text; |
|
2763 |
$this->tpl_strings = $parent->tpl_strings; |
|
2764 |
$this->tpl_bool = $parent->tpl_bool; |
|
2765 |
} |
|
2766 |
/** |
|
2767 |
* PHP 4 constructor. |
|
2768 |
*/ |
|
2769 |
function templateIndividual($text) |
|
2770 |
{ |
|
2771 |
$this->__construct($text); |
|
2772 |
} |
|
2773 |
/** |
|
2774 |
* Assigns an array of string values to the template. Strings can be accessed from the template by inserting {KEY_NAME} in the template file. |
|
2775 |
* @param $vars array |
|
2776 |
*/ |
|
2777 |
function assign_vars($vars) |
|
2778 |
{ |
|
2779 |
if(is_array($this->tpl_strings)) |
|
2780 |
$this->tpl_strings = array_merge($this->tpl_strings, $vars); |
|
2781 |
else |
|
2782 |
$this->tpl_strings = $vars; |
|
2783 |
} |
|
2784 |
/** |
|
2785 |
* Assigns an array of boolean values to the template. These can be used for <!-- IF ... --> statements. |
|
2786 |
* @param $vars array |
|
2787 |
*/ |
|
2788 |
function assign_bool($vars) |
|
2789 |
{ |
|
2790 |
$this->tpl_bool = array_merge($this->tpl_bool, $vars); |
|
2791 |
} |
|
2792 |
/** |
|
2793 |
* Compiles and executes the template code. |
|
2794 |
* @return string |
|
2795 |
*/ |
|
2796 |
function run() |
|
2797 |
{ |
|
2798 |
global $db, $session, $paths, $template, $plugins; // Common objects |
|
2799 |
if(!$this->compiled) |
|
2800 |
{ |
|
2801 |
$this->tpl_code = $this->compile_template_text($this->tpl_code); |
|
2802 |
$this->compiled = true; |
|
2803 |
} |
|
2804 |
return eval($this->tpl_code); |
|
2805 |
} |
|
2806 |
} |
|
2807 |
||
2808 |
?> |