diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2008-08-15 13:32:35 +0000 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2008-08-15 13:32:35 +0000 |
commit | 77bc692bb7694aa635be1ca3752894e976477ebb (patch) | |
tree | af4a392f30298339f511c60dcc4df8ce25941ec9 /central/trunk/template.php | |
parent | 68878a057b30f338eda7cacfe5f93cd850e8aaa1 (diff) | |
download | instadisc-77bc692bb7694aa635be1ca3752894e976477ebb.tar.gz instadisc-77bc692bb7694aa635be1ca3752894e976477ebb.tar.bz2 instadisc-77bc692bb7694aa635be1ca3752894e976477ebb.zip |
Central: Moved over to Four Island Templating system
Borrowed the Four Island templating system code so as to ease the creation of frontends. index.php and activate.php have already been converted, and install.php will not be converted (because it would be too difficult, and who would want to skin it anyway?) NOTICE: The Four Island Templating system source code is copyrighted by Starla Insigna (c) 2008. All rights reserved. Use of this code in part or in whole apart from the InstaDisc Central Server is a direct violation of copyright law. You have been warned. Refs #25
Diffstat (limited to 'central/trunk/template.php')
-rw-r--r-- | central/trunk/template.php | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/central/trunk/template.php b/central/trunk/template.php new file mode 100644 index 0000000..b4ec16b --- /dev/null +++ b/central/trunk/template.php | |||
@@ -0,0 +1,160 @@ | |||
1 | <?php | ||
2 | /* | ||
3 | 444444444 | ||
4 | 4::::::::4 | ||
5 | 4:::::::::4 | ||
6 | 4::::44::::4 | ||
7 | 4::::4 4::::4 Four Island | ||
8 | 4::::4 4::::4 | ||
9 | 4::::4 4::::4 Written and maintained by Starla Insigna | ||
10 | 4::::444444::::444 | ||
11 | 4::::::::::::::::4 includes/template.php | ||
12 | 4444444444:::::444 | ||
13 | 4::::4 Please do not use, reproduce or steal the | ||
14 | 4::::4 contents of this file without explicit | ||
15 | 4::::4 permission from Hatkirby. | ||
16 | 44::::::44 | ||
17 | 4::::::::4 | ||
18 | 4444444444 | ||
19 | */ | ||
20 | |||
21 | class FITemplate | ||
22 | { | ||
23 | |||
24 | var $file; | ||
25 | var $tags; | ||
26 | var $blocks; | ||
27 | var $refs; | ||
28 | |||
29 | function FITemplate($filename) | ||
30 | { | ||
31 | $tfn = 'theme/' . $filename . '.tpl'; | ||
32 | if (file_exists($tfn)) | ||
33 | { | ||
34 | $this->file = $tfn; | ||
35 | } else { | ||
36 | throw new Exception($tfn . ' does not exist'); | ||
37 | } | ||
38 | } | ||
39 | |||
40 | function add($name, $value) | ||
41 | { | ||
42 | $this->tags[$name] = $value; | ||
43 | } | ||
44 | |||
45 | function adds($tagarr) | ||
46 | { | ||
47 | foreach ($tagarr as $name => $value) | ||
48 | { | ||
49 | $this->add($name,$value); | ||
50 | } | ||
51 | } | ||
52 | |||
53 | function adds_block($block, $tagarr) | ||
54 | { | ||
55 | if (!isset($this->blocks[$block])) | ||
56 | { | ||
57 | $this->blocks[$block] = array('count' => 1); | ||
58 | } | ||
59 | foreach ($tagarr as $name => $value) | ||
60 | { | ||
61 | $this->blocks[$block][$this->blocks[$block]['count']][$name] = $value; | ||
62 | } | ||
63 | $this->blocks[$block]['count']++; | ||
64 | } | ||
65 | |||
66 | function add_ref($id, $block, $tagarr) | ||
67 | { | ||
68 | $this->adds_block($block,$tagarr); | ||
69 | $this->refs[$id] = &$this->blocks[$block][$this->blocks[$block]['count']-1];//'$this->blocks[\'' . $block . '\'][' . ($this->blocks[$block]['count']-1) . ']'; | ||
70 | } | ||
71 | |||
72 | function adds_ref($id, $tagarr) | ||
73 | { | ||
74 | foreach ($tagarr as $name => $value) | ||
75 | { | ||
76 | $this->refs[$id][$name] = $value; | ||
77 | } | ||
78 | } | ||
79 | |||
80 | function adds_ref_sub($id, $block, $tagarr) | ||
81 | { | ||
82 | if (!isset($this->refs[$id][$block])) | ||
83 | { | ||
84 | $this->refs[$id][$block] = array('count' => 1); | ||
85 | } | ||
86 | foreach ($tagarr as $name => $value) | ||
87 | { | ||
88 | $this->refs[$id][$block][$this->refs[$id][$block]['count']][$name] = $value; | ||
89 | } | ||
90 | $this->refs[$id][$block]['count']++; | ||
91 | } | ||
92 | |||
93 | function display() | ||
94 | { | ||
95 | $template = file_get_contents($this->file); | ||
96 | while (preg_match('/<!--INCLUDE ([^>]*)-->/',$template) == 1) | ||
97 | { | ||
98 | preg_match('/<!--INCLUDE ([^>]*)-->/',$template,$mat); | ||
99 | $fname = $mat[1]; | ||
100 | $itmp = new FITemplate($fname); | ||
101 | $template = str_replace('<!--INCLUDE ' . $fname . '-->',file_get_contents($itmp->file),$template); | ||
102 | } | ||
103 | if (isset($this->tags)) | ||
104 | { | ||
105 | foreach ($this->tags as $name => $value) | ||
106 | { | ||
107 | $template = str_replace('<!--' . $name . '-->',$value,$template); | ||
108 | } | ||
109 | } | ||
110 | if (isset($this->blocks)) | ||
111 | { | ||
112 | foreach ($this->blocks as $bname => $block) | ||
113 | { | ||
114 | $this->parseBlock($template, $bname, $block); | ||
115 | } | ||
116 | } | ||
117 | while (preg_match('/<!--BEGIN ([^>]*)-->/',$template) == 1) | ||
118 | { | ||
119 | preg_match('/<!--BEGIN ([^>]*)-->/',$template,$mat); | ||
120 | $bname = $mat[1]; | ||
121 | $start = strpos($template,'<!--BEGIN ' . $bname . '-->'); | ||
122 | $end = strpos($template,'<!--END ' . $bname . '-->'); | ||
123 | $template = str_replace(substr($template,$start,$end-$start+strlen($bname)+11),'',$template); | ||
124 | } | ||
125 | $template = preg_replace('/<!--([^>]*)-->/','',$template); | ||
126 | echo($template); | ||
127 | } | ||
128 | |||
129 | function parseBlock(&$template, $bname, $block) | ||
130 | { | ||
131 | while (strpos($template,'<!--BEGIN ' . $bname . '-->') !== FALSE) | ||
132 | { | ||
133 | $start = strpos($template,'<!--BEGIN ' . $bname . '-->'); | ||
134 | $end = strpos($template,'<!--END ' . $bname . '-->'); | ||
135 | $gencont = substr($template,$start+strlen($bname)+13,$end-$start-strlen($bname)-13); | ||
136 | $blockcont = ''; | ||
137 | foreach ($block as $lname => $blocktags) | ||
138 | { | ||
139 | if ($lname != 'count') | ||
140 | { | ||
141 | $scrcont = $gencont; | ||
142 | foreach ($blocktags as $name => $value) | ||
143 | { | ||
144 | if (!is_array($value)) | ||
145 | { | ||
146 | $scrcont = str_replace('<!--' . $bname . '.' . $name . '-->',$value,$scrcont); | ||
147 | } else { | ||
148 | $this->parseBlock($scrcont, $bname . '.' . $name, $value); | ||
149 | } | ||
150 | } | ||
151 | $blockcont .= $scrcont; | ||
152 | } | ||
153 | } | ||
154 | $template = str_replace(substr($template,$start,$end-$start+strlen($bname)+11),$blockcont,$template); | ||
155 | } | ||
156 | } | ||
157 | |||
158 | } | ||
159 | |||
160 | ?> | ||