2 /************************************************************************
3 * MXChange v0.2.1 Start: 01/26/2005 *
4 * =============== Last change: 01/26/2005 *
6 * -------------------------------------------------------------------- *
7 * File : output_functions.php *
8 * -------------------------------------------------------------------- *
9 * Short description : Class containing the HTML sub-system *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Klasse fuer das HTML-Subsystem *
12 * -------------------------------------------------------------------- *
14 * -------------------------------------------------------------------- *
15 * Copyright (c) 2003, 2004, 2005, 2006, 2007 by Roland Haeder *
16 * For more information visit: http://www.mxchange.org *
18 * This program is free software; you can redistribute it and/or modify *
19 * it under the terms of the GNU General Public License as published by *
20 * the Free Software Foundation; either version 2 of the License, or *
21 * (at your option) any later version. *
23 * This program is distributed in the hope that it will be useful, *
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
26 * GNU General Public License for more details. *
28 * You should have received a copy of the GNU General Public License *
29 * along with this program; if not, write to the Free Software *
30 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
32 ************************************************************************/
34 // Some security stuff...
35 if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))
37 $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
40 // Add HTML to the output stream
44 function HTMLParser() {
47 // Add HTML-Code to buffer
48 function add_html ($HTML, $NEW_LINE = true) {
53 function compile_html($code, $simple=false) {
57 $code = str_replace('{--', '".', str_replace('--}', '."', $code));
59 // Compile QUOT and other non-HTML codes
60 foreach ($SEC_CHARS['to'] as $k=>$from) {
61 // Do the reversed thing as in inc/libs/security_functions.php
62 $code = str_replace($from, $SEC_CHARS['from'][$k], $code);
65 // But keep simple quotes for later use
66 if ($simple) $code = str_replace("'", '{QUOT}', $code);
68 // Return compiled code
72 // Load a template file and return it's content (only it's name; do not use ' or ")
73 function get_template ($template, $return=false, $content="")
75 // Add more variables which you want to use in your template files
76 global $DATA, $ACTION, $WHAT;
77 $REFID = bigintval(get_session('refid'));
79 if ($template == "member_support_form") {
80 // Support request of a member
81 $ID = bigintval($GLOBALS['userid']);
82 $result = SQL_QUERY_ESC("SELECT sex, surname, family FROM "._MYSQL_PREFIX."_user_data WHERE userid='%s' LIMIT 1", array($ID), __FILE__, __LINE__);
83 list($sex, $surname, $family) = SQL_FETCHROW($result);
84 SQL_FREERESULT($result);
85 $salut = TRANSLATE_SEX($sex);
89 $BASE = PATH."templates/".GET_LANGUAGE()."/html/";
92 // Check for admin/guest/member templates
93 if (strpos($template, "admin_") > -1) {
94 // Admin template found
96 } elseif (strpos($template, "guest_") > -1) {
97 // Guest template found
99 } elseif (strpos($template, "member_") > -1) {
100 // Member template found
102 } elseif (strpos($template, "install_") > -1) {
103 // Installation template found
105 } elseif (strpos($template, "mailid_") > -1) {
106 // Mail confirmation template found
110 // Generate file name
111 $file = $BASE.$MODE.$template.".tpl";
112 if ((!empty($_GET['what'])) && ((strpos($template, "_header") > 0) || (strpos($template, "_footer") > 0)) && (($MODE == "guest/") || ($MODE == "member/") || ($MODE == "admin/"))) {
113 // Select what depended header/footer template file for admin/guest/member area
114 $file2 = sprintf("%s%s%s_%s.tpl", $BASE, $MODE, $template, SQL_ESCAPE($_GET['what']));
117 if ((file_exists($file2)) && (is_readable($file2))) $file = $file2;
119 // Remove variable from memory
123 // Does the special template exists?
124 if ((!file_exists($file)) || (!is_readable($file))) {
125 // Reset to default template
126 $file = PATH."templates/".GET_LANGUAGE()."/html/".$template.".tpl";
129 // Now does the final template exists?
130 if ((file_exists($file)) && (is_readable($file))) {
131 // The local file does exists so we load it. :)
132 $tmpl_file = implode("", file($file));
133 $tmpl_file = str_replace("'", '{QUOT}', $tmpl_file);
135 // Compile and run code
136 $ret = COMPILE_CODE(addslashes($tmpl_file), false, true);
137 $ret = "<!-- Template ".$template." - Start -->\n".$ret."<!-- Template ".$template." - End -->\n";
138 } elseif (IS_ADMIN()) {
139 // Only admins shall see this warning
140 $ret = "<br /><SPAN class=\"guest_failed\">".TEMPLATE_404."</SPAN><br />
141 (".basename($file).")
146 // Return the HTML code
150 $this->add_html ($ret);