1 |
< |
<?php |
2 |
< |
/* This file is part of BBClone (A PHP based Web Counter on Steroids) |
3 |
< |
* |
4 |
< |
* SVN FILE $Id$ |
5 |
< |
* |
6 |
< |
* Copyright (C) 2001-2013, the BBClone Team (see doc/authors.txt for details) |
7 |
< |
* |
8 |
< |
* This program is free software: you can redistribute it and/or modify |
9 |
< |
* it under the terms of the GNU General Public License as published by |
10 |
< |
* the Free Software Foundation, either version 3 of the License, or |
11 |
< |
* (at your option) any later version. |
12 |
< |
* |
13 |
< |
* This program is distributed in the hope that it will be useful, |
14 |
< |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 |
< |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 |
< |
* GNU General Public License for more details. |
17 |
< |
* |
18 |
< |
* See doc/copying.txt for details |
19 |
< |
*/ |
20 |
< |
|
21 |
< |
///////////////////////// |
22 |
< |
// HTML Output Builder // |
23 |
< |
///////////////////////// |
24 |
< |
|
25 |
< |
// Include BBClone hits in Stats (see config, enabled by default) |
26 |
< |
if ($BBC_HITS == 1) { |
27 |
< |
if (!defined("_BBCLONE_DIR")) {define("_BBCLONE_DIR", "./");} |
28 |
< |
if (!defined("COUNTER")) { |
29 |
< |
define("COUNTER", _BBCLONE_DIR."mark_page.php"); |
30 |
< |
if (is_readable(COUNTER)) include_once(COUNTER); |
31 |
< |
} |
32 |
< |
} |
33 |
< |
|
34 |
< |
class bbc_html { |
35 |
< |
var $lang_tab, $lng, $server; |
36 |
< |
|
37 |
< |
function get_lng() { |
38 |
< |
if (_BBC_PHP < 410) global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_SERVER_VARS; |
39 |
< |
|
40 |
< |
global $BBC_LANGUAGE; |
41 |
< |
|
42 |
< |
// Get variables depending on PHP version |
43 |
< |
$get = ((_BBC_PHP < 410) ? !empty($HTTP_GET_VARS['lng']) : !empty($_GET['lng'])) ? |
44 |
< |
((_BBC_PHP < 410) ? $HTTP_GET_VARS['lng'] : $_GET['lng']) : ""; |
45 |
< |
$post = ((_BBC_PHP < 410) ? !empty($HTTP_POST_VARS['lng']) : !empty($_POST['lng'])) ? |
46 |
< |
((_BBC_PHP < 410) ? $HTTP_POST_VARS['lng'] : $_POST['lng']) : ""; |
47 |
< |
$aclng = ((_BBC_PHP < 410) ? !empty($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']) : |
48 |
< |
!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) ? ((_BBC_PHP < 410) ? |
49 |
< |
$HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'] : $_SERVER['HTTP_ACCEPT_LANGUAGE']) : ""; |
50 |
< |
|
51 |
< |
if ($get && preg_match(":^[\w\-]{1,5}:", $get)) $this->lng = $get; |
52 |
< |
elseif ($post && (preg_match(":^[\w\-]{1,5}:", $post))) $this->lng = $post; |
53 |
< |
elseif ($aclng && (preg_match(":^[\w\-]{1,5}:", $aclng))) { |
54 |
< |
|
55 |
< |
$this->lng = (($comma = strpos($aclng, ",")) !== false) ? substr($aclng, 0, $comma) : $aclng; |
56 |
< |
$this->lng = ((($dash = strpos($this->lng, "-")) !== false) && (!isset($this->lang_tab[$this->lng]))) ? |
57 |
< |
substr($this->lng, 0, $dash) : $this->lng; |
58 |
< |
} |
59 |
< |
else $this->lng = $BBC_LANGUAGE; |
60 |
< |
|
61 |
< |
return (isset($this->lang_tab[$this->lng]) ? $this->lng : $BBC_LANGUAGE); |
62 |
< |
} |
63 |
< |
|
64 |
< |
function set_title() { |
65 |
< |
global $BBC_TIMESTAMP, $BBC_TIME_OFFSET, $BBC_TITLEBAR, $translation; |
66 |
< |
|
67 |
< |
$conv = array( |
68 |
< |
"%DATE" => date_format_translated($translation['global_day_format'], ($BBC_TIMESTAMP + ($BBC_TIME_OFFSET * 60))), |
69 |
< |
"%SERVER" => $this->server |
70 |
< |
); |
71 |
< |
if (empty($BBC_TITLEBAR)) { |
72 |
< |
$BBC_TITLEBAR = $translation['global_titlebar']; |
73 |
< |
}; |
74 |
< |
return strtr($BBC_TITLEBAR, $conv); |
75 |
< |
} |
76 |
< |
|
77 |
< |
function last_reset() { |
78 |
< |
global $translation, $access; |
79 |
< |
$timestamp = isset($access['time']['reset']) ? $access['time']['reset'] : ""; |
80 |
< |
return "<p align=\"center\"><i>".$translation['global_last_reset'].": ".date_format_translated($translation['global_day_format'], $timestamp) |
81 |
< |
.".</i></p>\n"; |
82 |
< |
} |
83 |
< |
|
84 |
< |
function bbc_html() { |
85 |
< |
if (_BBC_PHP < 410) global $HTTP_SERVER_VARS; |
86 |
< |
|
87 |
< |
global $translation; |
88 |
< |
|
89 |
< |
$this->lang_tab = array( |
90 |
< |
"ar" => "Arabic", |
91 |
< |
"bs" => "Bosnian", |
92 |
< |
"bg" => "Bulgarian", |
93 |
< |
"ca" => "Catalan", |
94 |
< |
"cs" => "Czech", |
95 |
< |
"zh-cn" => "Chinese Simp", |
96 |
< |
"zh-tw" => "Chinese Trad", |
97 |
< |
"da" => "Danish", |
98 |
< |
"en" => "English", |
99 |
< |
"nl" => "Nederlands", |
100 |
< |
"de" => "Deutsch", |
101 |
< |
"fr" => "Français", |
102 |
< |
"fi" => "Finnish", |
103 |
< |
"el" => "Greek", |
104 |
< |
"et" => "Estonian", |
105 |
< |
"hu" => "Hungarian", |
106 |
< |
"id" => "Indonesian", |
107 |
< |
"it" => "Italian", |
108 |
< |
"ja" => "Japanese", |
109 |
< |
"ko" => "Korean", |
110 |
< |
"lt" => "Lithuanian", |
111 |
< |
"mk" => "Macedonian", |
112 |
< |
"nb" => "Norwegian Bkm", |
113 |
< |
"pl" => "Polish", |
114 |
< |
"pt" => "Portuguese", |
115 |
< |
"pt-br" => "Portuguese Br", |
116 |
< |
"ro" => "Romanian", |
117 |
< |
"ru" => "Russian", |
118 |
< |
"sk" => "Slovak", |
119 |
< |
"sl" => "Slovenian", |
120 |
< |
"es" => "Spanish", |
121 |
< |
"sv" => "Swedish", |
122 |
< |
"th" => "Thai", |
123 |
< |
"tr" => "Turkish", |
124 |
< |
"uk" => "Ukrainian" |
125 |
< |
); |
126 |
< |
$this->lng = $this->get_lng(); |
127 |
< |
$this->server = ((_BBC_PHP < 410) ? !empty($HTTP_SERVER_VARS['SERVER_NAME']) : !empty($_SERVER['SERVER_NAME'])) ? |
128 |
< |
htmlspecialchars(((_BBC_PHP < 410) ? $HTTP_SERVER_VARS['SERVER_NAME'] : $_SERVER['SERVER_NAME']), |
129 |
< |
ENT_QUOTES) : "noname"; |
130 |
< |
} |
131 |
< |
|
132 |
< |
// Generates BBClone Config details |
133 |
< |
function show_config($varname, $booleanflag = 0) { |
134 |
< |
|
135 |
< |
global $translation, $$varname; |
136 |
< |
|
137 |
< |
return "<tr class=\"morethan_row hover_white\">\n" |
138 |
< |
// Variable name |
139 |
< |
."<td align=\"left\" class=\"config-cell\">\n" |
140 |
< |
."<b>\$$varname</b>\n" |
141 |
< |
."</td>\n" |
142 |
< |
// Explaination |
143 |
< |
."<td align=\"left\" class=\"config-cell text-wrap\">\n" |
144 |
< |
.$translation["config_".$varname]."\n" |
145 |
< |
."</td>\n" |
146 |
< |
// Variable value |
147 |
< |
."<td align=\"left\" class=\"config-cell\">\n" |
148 |
< |
."<b>".(!empty($$varname) ? ($booleanflag==1 ? $translation['global_yes'] : $$varname) : $translation['global_no'])."</b>\n" |
149 |
< |
."</td></tr>\n"; |
150 |
< |
} |
151 |
< |
|
152 |
< |
// Begin of all BBClone HTML documents |
153 |
< |
function html_begin() { |
154 |
< |
global $BBC_VERSION, $BBC_EXT_LOOKUP, $BBC_IMAGES_PATH, $BBC_CSS_PATH, $BBC_CSS_FILE, $translation; |
155 |
< |
|
156 |
< |
// Work around for default charset in Apache 2 (Thanks Martin Halachev!) |
157 |
< |
if (!headers_sent()) header("Content-type: text/html; charset=".$translation['global_charset']); |
158 |
< |
|
159 |
< |
return "<?xml version=\"1.0\" encoding=\"".$translation['global_charset']."\"?>\n" |
160 |
< |
."<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" |
161 |
< |
."\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" |
162 |
< |
."<html xmlns=\"http://www.w3.org/1999/xhtml\">\n" |
163 |
< |
."<head>\n" |
164 |
< |
."<title>BBClone $BBC_VERSION $BBC_EXT_LOOKUP</title>\n" |
165 |
< |
."<link rel=\"shortcut icon\" href=\"".$BBC_IMAGES_PATH."favicon.ico\" />\n" |
166 |
< |
."<link rel=\"stylesheet\" href=\"".$BBC_CSS_PATH.$BBC_CSS_FILE."\" type=\"text/css\" />\n" |
167 |
< |
."<meta http-equiv=\"cache-control\" content=\"no-cache\" />\n" |
168 |
< |
."<meta http-equiv=\"pragma\" content=\"no-cache\" />\n" |
169 |
< |
."<meta http-equiv=\"content-Script-Type\" content=\"text/javasript\" />\n" |
170 |
< |
."<meta http-equiv=\"content-Style-Type\" content=\"text/css\" />\n" |
171 |
< |
."<meta http-equiv=\"content-type\" content=\"text/html; charset=".$translation['global_charset']."\" />\n" |
172 |
< |
."<meta name=\"robots\" content=\"none\" />\n" |
173 |
< |
."<meta name=\"description\" content=\"BBClone ".$BBC_VERSION." - A PHP based Web Counter on Steroids\" />\n" |
174 |
< |
."</head>\n" |
175 |
< |
."<body>\n" |
176 |
< |
// BBClone copyright notice: Removal or modification of the copyright holder |
177 |
< |
// will void any support by the BBClone team and may be a reason to deny |
178 |
< |
// access to the BBClone site if detected. |
179 |
< |
."<!--\n" |
180 |
< |
."This is BBClone $BBC_VERSION\n" |
181 |
< |
."Homebase: http://www.bbclone.de/\n" |
182 |
< |
."Copyright: 2001-2013 The BBClone Team\n" |
183 |
< |
."License: GNU/GPL, version 3 or later\n" |
184 |
< |
."-->\n"; |
185 |
< |
} |
186 |
< |
|
187 |
< |
// Navigation Bar (both top and bottom) |
188 |
< |
function topbar($lang_sel = 1, $on_bottom = 0) { |
189 |
< |
if (_BBC_PHP < 410) global $HTTP_SERVER_VARS; |
190 |
< |
|
191 |
< |
global $BBC_IMAGES_PATH, $BBC_MAINSITE, $BBC_SHOW_CONFIG, $translation; |
192 |
< |
|
193 |
< |
$self = basename((_BBC_PHP < 410) ? $HTTP_SERVER_VARS['PHP_SELF'] : $_SERVER['PHP_SELF']); |
194 |
< |
$self = htmlspecialchars(str_replace("index.php", ".", $self), ENT_QUOTES); |
195 |
< |
$url_lng = !empty($this->lang_tab[$this->lng]) ? "?lng=".$this->lng."" : ""; |
196 |
< |
// Navigation Buttons |
197 |
< |
$navbar = array( |
198 |
< |
"main" => array( "url" => $BBC_MAINSITE, "title" => $translation['navbar_main_site'], "icon" => "navbar_main.png" ), |
199 |
< |
"config" => array( "url" => "show_config.php", "title" => !empty($BBC_SHOW_CONFIG)? $translation['navbar_configuration'] : "", "icon" => "navbar_config.png" ), |
200 |
< |
"global" => array( "url" => "show_global.php", "title" => $translation['navbar_global_stats'], "icon" => "navbar_global.png" ), |
201 |
< |
"detailed" => array( "url" => "show_detailed.php", "title" => $translation['navbar_detailed_stats'], "icon" => "navbar_detailed.png" ), |
202 |
< |
"time" => array( "url" => "show_time.php", "title" => $translation['navbar_time_stats'], "icon" => "navbar_time.png" ) |
203 |
< |
); |
204 |
< |
// Language Selector |
205 |
< |
$str = (empty($lang_sel) ? "" : "<form method=\"post\" action=\"$self\">\n") |
206 |
< |
."<table ".(empty($on_bottom) ? "class=\"navbar\"" : "class=\"navbar bottom\"")."><tr><td>\n"; |
207 |
< |
|
208 |
< |
$sep = ""; |
209 |
< |
// Create Navigation Buttons |
210 |
< |
foreach (array_keys($navbar) as $menu_key) { |
211 |
< |
$url = $navbar[$menu_key]['url']; |
212 |
< |
$title = $navbar[$menu_key]['title']; |
213 |
< |
$icon = $navbar[$menu_key]['icon']; |
214 |
< |
$selected_class = (basename($_SERVER['SCRIPT_NAME']) == $url ? " selected" : ""); |
215 |
< |
if ( basename($_SERVER['SCRIPT_NAME']) == "index.php" && $menu_key == "global") { |
216 |
< |
$selected_class = " selected"; |
217 |
< |
} |
218 |
< |
if (empty($title)){ |
219 |
< |
continue; |
220 |
< |
} |
221 |
< |
$str .= "<a class=\"navbar".$selected_class."\" href=\"$url".($menu_key != "main" ? $url_lng : "")."\"><img src=\"".$BBC_IMAGES_PATH.$icon."\" alt=\"icon\" /> $title</a> \n"; |
222 |
< |
} |
223 |
< |
// Create Language Selector |
224 |
< |
if (!empty($lang_sel)) { |
225 |
< |
$str .= " <img src=\"".$BBC_IMAGES_PATH."navbar_lng.png\" alt=\"".$translation['navbar_language']."\" title=\"".$translation['navbar_language']."\" /> \n" |
226 |
< |
."<select name=\"lng\" onchange=\"if (this.selectedIndex>0){location.href='$self?lng=' + " |
227 |
< |
."this.options[this.selectedIndex].value;}\">\n" |
228 |
< |
."<option value=\"\"".(empty($this->lng) ? " selected=\"selected\"" : "").">".$translation['navbar_language']."</option>\n"; |
229 |
< |
|
230 |
< |
foreach ($this->lang_tab as $lang_id => $lang_name) { |
231 |
< |
$str .= "<option value=\"$lang_id\"".(($this->lng == $lang_id) ? " selected=\"selected\"" : "") |
232 |
< |
.">$lang_name</option>\n"; |
233 |
< |
} |
234 |
< |
$lang_tab_lng = empty($this->lang_tab[$this->lng]) ? "" : $this->lang_tab[$this->lng]; |
235 |
< |
$str .= "</select>\n" |
236 |
< |
." <noscript><input type=\"submit\" value=\"".$translation['navbar_go']."\" /></noscript>\n"; |
237 |
< |
} |
238 |
< |
|
239 |
< |
$str .= "</td></tr></table>\n" |
240 |
< |
.((!empty($on_bottom)) ? "" : |
241 |
< |
"<table class=\"titlebar\">\n" |
242 |
< |
."<tr><td class=\"title\">\n" |
243 |
< |
.$this->set_title()."\n" |
244 |
< |
."</td></tr></table>\n") |
245 |
< |
.(empty($lang_sel) ? "" : "</form>\n"); |
246 |
< |
|
247 |
< |
return $str; |
248 |
< |
} |
249 |
< |
|
250 |
< |
// Color explanation |
251 |
< |
function color_explain() { |
252 |
< |
global $BBC_MAXTIME, $BBC_MAXVISIBLE, $translation; |
253 |
< |
|
254 |
< |
return "<p><i>".$translation['dstat_visible_rows'].": $BBC_MAXVISIBLE | \n" |
255 |
< |
."<span class=\"lessthan_row\"> ".$translation['dstat_last_visit']." < $BBC_MAXTIME ".$translation['misc_second_unit']." </span> | \n" |
256 |
< |
."<span class=\"morethan_row\"> ".$translation['dstat_last_visit']." > $BBC_MAXTIME ".$translation['misc_second_unit']." </span> | \n" |
257 |
< |
."<span class=\"robot_row\"> ".$translation['dstat_robots']." </span> | \n" |
258 |
< |
."<span class=\"my_visit_row\"> ".$translation['dstat_my_visit']." </span></i></p>\n"; |
259 |
< |
} |
260 |
< |
|
261 |
< |
// Determine the color style of the connection |
262 |
< |
function connect_color_class($connect) { |
263 |
< |
global $BBC_MAXTIME, $BBC_TIMESTAMP, $BBC_TIME_OFFSET; |
264 |
< |
if (_BBC_PHP < 410) global $HTTP_SERVER_VARS; |
265 |
< |
|
266 |
< |
// It was you |
267 |
< |
if (((_BBC_PHP < 410) ? $HTTP_SERVER_VARS["REMOTE_ADDR"] : $_SERVER["REMOTE_ADDR"]) == $connect['ip']) return 'my_visit_row'; |
268 |
< |
// else, it was an access within $BBC_TIME_OFFSET |
269 |
< |
elseif ((($BBC_TIMESTAMP + ($BBC_TIME_OFFSET * 60)) - $connect['time']) < $BBC_MAXTIME) return "lessthan_row"; |
270 |
< |
// else, it is red if it is a robot |
271 |
< |
elseif (!empty($connect['robot'])) return "robot_row"; |
272 |
< |
// or blue if something else |
273 |
< |
else return "morethan_row"; |
274 |
< |
} |
275 |
< |
|
276 |
< |
// BBClone copyright notice |
277 |
< |
function copyright() { |
278 |
< |
global $BBC_IMAGES_PATH, $BBC_VERSION, $BBC_EXT_LOOKUP, $translation; |
279 |
< |
|
280 |
< |
// Get Build No |
281 |
< |
if (is_readable("build.inc")) $BBC_BUILDNO = file_get_contents("build.inc"); |
282 |
< |
else $BBC_BUILDNO = ""; |
283 |
< |
|
284 |
< |
return "<p><a href=\"http://www.bbclone.de/\">BBClone ".$BBC_VERSION." ".$BBC_EXT_LOOKUP."</a> © ".$translation['global_bbclone_copyright'] |
285 |
< |
." <a href=\"http://www.gnu.org/copyleft/gpl.html\">GPL</a>\n" |
286 |
< |
." <a href=\"http://validator.w3.org/check?url=referer\">" |
287 |
< |
."<img src=\"".$BBC_IMAGES_PATH."valid-xhtml10.png\" class=\"validicon\" alt=\"Valid XHTML 1.0!\" title=\"Valid XHTML 1.0!\" /></a>\n" |
288 |
< |
." <a href=\"http://jigsaw.w3.org/css-validator/check/referer\">" |
289 |
< |
."<img src=\"".$BBC_IMAGES_PATH."valid-css.png\" class=\"validicon\" alt=\"Valid CSS!\" title=\"Valid CSS!\" /></a>\n" |
290 |
< |
." <a href=\"http://tidy.sourceforge.net\">" |
291 |
< |
."<img src=\"".$BBC_IMAGES_PATH."valid-tidy.png\" class=\"validtidy\" alt=\"Valid HTML Tidy!\" title=\"Valid HTML Tidy!\" /></a></p>\n" |
292 |
< |
; |
293 |
< |
} |
294 |
< |
|
295 |
< |
// End of all BBClone HTML documents |
296 |
< |
function html_end() { |
297 |
< |
return "</body>\n" |
298 |
< |
."</html>\n"; |
299 |
< |
} |
300 |
< |
} |
1 |
> |
<?php |
2 |
> |
/* This file is part of BBClone (A PHP based Web Counter on Steroids) |
3 |
> |
* |
4 |
> |
* SVN FILE $Id$ |
5 |
> |
* |
6 |
> |
* Copyright (C) 2001-2014, the BBClone Team (see doc/authors.txt for details) |
7 |
> |
* |
8 |
> |
* This program is free software: you can redistribute it and/or modify |
9 |
> |
* it under the terms of the GNU General Public License as published by |
10 |
> |
* the Free Software Foundation, either version 3 of the License, or |
11 |
> |
* (at your option) any later version. |
12 |
> |
* |
13 |
> |
* This program is distributed in the hope that it will be useful, |
14 |
> |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 |
> |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 |
> |
* GNU General Public License for more details. |
17 |
> |
* |
18 |
> |
* See doc/copying.txt for details |
19 |
> |
*/ |
20 |
> |
|
21 |
> |
///////////////////////// |
22 |
> |
// HTML Output Builder // |
23 |
> |
///////////////////////// |
24 |
> |
|
25 |
> |
// Include BBClone hits in Stats (see config, enabled by default) |
26 |
> |
if ($BBC_HITS == 1) { |
27 |
> |
if (!defined("_BBCLONE_DIR")) {define("_BBCLONE_DIR", "./");} |
28 |
> |
if (!defined("COUNTER")) { |
29 |
> |
define("COUNTER", _BBCLONE_DIR."mark_page.php"); |
30 |
> |
if (is_readable(COUNTER)) include_once(COUNTER); |
31 |
> |
} |
32 |
> |
} |
33 |
> |
|
34 |
> |
class bbc_html { |
35 |
> |
var $lang_tab, $lng, $server; |
36 |
> |
|
37 |
> |
function get_lng() { |
38 |
> |
if (_BBC_PHP < 410) global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_SERVER_VARS; |
39 |
> |
|
40 |
> |
global $BBC_LANGUAGE; |
41 |
> |
|
42 |
> |
// Get variables depending on PHP version |
43 |
> |
$get = ((_BBC_PHP < 410) ? !empty($HTTP_GET_VARS['lng']) : !empty($_GET['lng'])) ? |
44 |
> |
((_BBC_PHP < 410) ? $HTTP_GET_VARS['lng'] : $_GET['lng']) : ""; |
45 |
> |
$post = ((_BBC_PHP < 410) ? !empty($HTTP_POST_VARS['lng']) : !empty($_POST['lng'])) ? |
46 |
> |
((_BBC_PHP < 410) ? $HTTP_POST_VARS['lng'] : $_POST['lng']) : ""; |
47 |
> |
$aclng = ((_BBC_PHP < 410) ? !empty($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']) : |
48 |
> |
!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) ? ((_BBC_PHP < 410) ? |
49 |
> |
$HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'] : $_SERVER['HTTP_ACCEPT_LANGUAGE']) : ""; |
50 |
> |
|
51 |
> |
if ($get && preg_match(":^[\w\-]{1,5}:", $get)) $this->lng = $get; |
52 |
> |
elseif ($post && (preg_match(":^[\w\-]{1,5}:", $post))) $this->lng = $post; |
53 |
> |
elseif ($aclng && (preg_match(":^[\w\-]{1,5}:", $aclng))) { |
54 |
> |
|
55 |
> |
$this->lng = (($comma = strpos($aclng, ",")) !== false) ? substr($aclng, 0, $comma) : $aclng; |
56 |
> |
$this->lng = ((($dash = strpos($this->lng, "-")) !== false) && (!isset($this->lang_tab[$this->lng]))) ? |
57 |
> |
substr($this->lng, 0, $dash) : $this->lng; |
58 |
> |
} |
59 |
> |
else $this->lng = $BBC_LANGUAGE; |
60 |
> |
|
61 |
> |
return (isset($this->lang_tab[$this->lng]) ? $this->lng : $BBC_LANGUAGE); |
62 |
> |
} |
63 |
> |
|
64 |
> |
function set_title() { |
65 |
> |
global $BBC_TIMESTAMP, $BBC_TIME_OFFSET, $BBC_TITLEBAR, $translation; |
66 |
> |
|
67 |
> |
$conv = array( |
68 |
> |
"%DATE" => date_format_translated($translation['global_day_format'], ($BBC_TIMESTAMP + ($BBC_TIME_OFFSET * 60))), |
69 |
> |
"%SERVER" => $this->server |
70 |
> |
); |
71 |
> |
if (empty($BBC_TITLEBAR)) { |
72 |
> |
$BBC_TITLEBAR = $translation['global_titlebar']; |
73 |
> |
}; |
74 |
> |
return strtr($BBC_TITLEBAR, $conv); |
75 |
> |
} |
76 |
> |
|
77 |
> |
function last_reset() { |
78 |
> |
global $translation, $access; |
79 |
> |
$timestamp = isset($access['time']['reset']) ? $access['time']['reset'] : ""; |
80 |
> |
return "<p align=\"center\"><i>".$translation['global_last_reset'].": ".date_format_translated($translation['global_day_format'], $timestamp) |
81 |
> |
.".</i></p>\n"; |
82 |
> |
} |
83 |
> |
|
84 |
> |
function bbc_html() { |
85 |
> |
if (_BBC_PHP < 410) global $HTTP_SERVER_VARS; |
86 |
> |
|
87 |
> |
global $translation; |
88 |
> |
|
89 |
> |
$this->lang_tab = array( |
90 |
> |
"ar" => "Arabic", |
91 |
> |
"bs" => "Bosnian", |
92 |
> |
"bg" => "Bulgarian", |
93 |
> |
"ca" => "Catalan", |
94 |
> |
"cs" => "Czech", |
95 |
> |
"zh-cn" => "Chinese Simp", |
96 |
> |
"zh-tw" => "Chinese Trad", |
97 |
> |
"da" => "Danish", |
98 |
> |
"en" => "English", |
99 |
> |
"nl" => "Nederlands", |
100 |
> |
"de" => "Deutsch", |
101 |
> |
"fr" => "Français", |
102 |
> |
"fi" => "Finnish", |
103 |
> |
"el" => "Greek", |
104 |
> |
"et" => "Estonian", |
105 |
> |
"hu" => "Hungarian", |
106 |
> |
"id" => "Indonesian", |
107 |
> |
"it" => "Italian", |
108 |
> |
"ja" => "Japanese", |
109 |
> |
"ko" => "Korean", |
110 |
> |
"lt" => "Lithuanian", |
111 |
> |
"mk" => "Macedonian", |
112 |
> |
"nb" => "Norwegian Bkm", |
113 |
> |
"pl" => "Polish", |
114 |
> |
"pt" => "Portuguese", |
115 |
> |
"pt-br" => "Portuguese Br", |
116 |
> |
"ro" => "Romanian", |
117 |
> |
"ru" => "Russian", |
118 |
> |
"sk" => "Slovak", |
119 |
> |
"sl" => "Slovenian", |
120 |
> |
"es" => "Spanish", |
121 |
> |
"sv" => "Swedish", |
122 |
> |
"th" => "Thai", |
123 |
> |
"tr" => "Turkish", |
124 |
> |
"uk" => "Ukrainian" |
125 |
> |
); |
126 |
> |
$this->lng = $this->get_lng(); |
127 |
> |
$this->server = ((_BBC_PHP < 410) ? !empty($HTTP_SERVER_VARS['SERVER_NAME']) : !empty($_SERVER['SERVER_NAME'])) ? |
128 |
> |
htmlspecialchars(((_BBC_PHP < 410) ? $HTTP_SERVER_VARS['SERVER_NAME'] : $_SERVER['SERVER_NAME']), |
129 |
> |
ENT_QUOTES) : "noname"; |
130 |
> |
} |
131 |
> |
|
132 |
> |
// Generates BBClone Config details |
133 |
> |
function show_config($varname, $booleanflag = 0) { |
134 |
> |
|
135 |
> |
global $translation, $$varname; |
136 |
> |
|
137 |
> |
return "<tr class=\"morethan_row hover_white\">\n" |
138 |
> |
// Variable name |
139 |
> |
."<td align=\"left\" class=\"config-cell\">\n" |
140 |
> |
."<b>\$$varname</b>\n" |
141 |
> |
."</td>\n" |
142 |
> |
// Explaination |
143 |
> |
."<td align=\"left\" class=\"config-cell text-wrap\">\n" |
144 |
> |
.$translation["config_".$varname]."\n" |
145 |
> |
."</td>\n" |
146 |
> |
// Variable value |
147 |
> |
."<td align=\"left\" class=\"config-cell\">\n" |
148 |
> |
."<b>".(!empty($$varname) ? ($booleanflag==1 ? $translation['global_yes'] : $$varname) : $translation['global_no'])."</b>\n" |
149 |
> |
."</td></tr>\n"; |
150 |
> |
} |
151 |
> |
|
152 |
> |
// Begin of all BBClone HTML documents |
153 |
> |
function html_begin() { |
154 |
> |
global $BBC_VERSION, $BBC_EXT_LOOKUP, $BBC_IMAGES_PATH, $BBC_CSS_PATH, $BBC_CSS_FILE, $translation; |
155 |
> |
|
156 |
> |
// Work around for default charset in Apache 2 (Thanks Martin Halachev!) |
157 |
> |
if (!headers_sent()) header("Content-type: text/html; charset=".$translation['global_charset']); |
158 |
> |
|
159 |
> |
return "<?xml version=\"1.0\" encoding=\"".$translation['global_charset']."\"?>\n" |
160 |
> |
."<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" |
161 |
> |
."\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" |
162 |
> |
."<html xmlns=\"http://www.w3.org/1999/xhtml\">\n" |
163 |
> |
."<head>\n" |
164 |
> |
."<title>BBClone $BBC_VERSION $BBC_EXT_LOOKUP</title>\n" |
165 |
> |
."<link rel=\"shortcut icon\" href=\"".$BBC_IMAGES_PATH."favicon.ico\" />\n" |
166 |
> |
."<link rel=\"stylesheet\" href=\"".$BBC_CSS_PATH.$BBC_CSS_FILE."\" type=\"text/css\" />\n" |
167 |
> |
."<meta http-equiv=\"cache-control\" content=\"no-cache\" />\n" |
168 |
> |
."<meta http-equiv=\"pragma\" content=\"no-cache\" />\n" |
169 |
> |
."<meta http-equiv=\"content-Script-Type\" content=\"text/javasript\" />\n" |
170 |
> |
."<meta http-equiv=\"content-Style-Type\" content=\"text/css\" />\n" |
171 |
> |
."<meta http-equiv=\"content-type\" content=\"text/html; charset=".$translation['global_charset']."\" />\n" |
172 |
> |
."<meta name=\"robots\" content=\"none\" />\n" |
173 |
> |
."<meta name=\"description\" content=\"BBClone ".$BBC_VERSION." - A PHP based Web Counter on Steroids\" />\n" |
174 |
> |
."</head>\n" |
175 |
> |
."<body>\n" |
176 |
> |
// BBClone copyright notice: Removal or modification of the copyright holder |
177 |
> |
// will void any support by the BBClone team and may be a reason to deny |
178 |
> |
// access to the BBClone site if detected. |
179 |
> |
."<!--\n" |
180 |
> |
."This is BBClone $BBC_VERSION\n" |
181 |
> |
."Homebase: http://www.bbclone.de/\n" |
182 |
> |
."Copyright: 2001-2013 The BBClone Team\n" |
183 |
> |
."License: GNU/GPL, version 3 or later\n" |
184 |
> |
."-->\n"; |
185 |
> |
} |
186 |
> |
|
187 |
> |
// Navigation Bar (both top and bottom) |
188 |
> |
function topbar($lang_sel = 1, $on_bottom = 0) { |
189 |
> |
if (_BBC_PHP < 410) global $HTTP_SERVER_VARS; |
190 |
> |
|
191 |
> |
global $BBC_IMAGES_PATH, $BBC_MAINSITE, $BBC_SHOW_CONFIG, $translation; |
192 |
> |
|
193 |
> |
$self = basename((_BBC_PHP < 410) ? $HTTP_SERVER_VARS['PHP_SELF'] : $_SERVER['PHP_SELF']); |
194 |
> |
$self = htmlspecialchars(str_replace("index.php", ".", $self), ENT_QUOTES); |
195 |
> |
$url_lng = !empty($this->lang_tab[$this->lng]) ? "?lng=".$this->lng."" : ""; |
196 |
> |
// Navigation Buttons |
197 |
> |
$navbar = array( |
198 |
> |
"main" => array( "url" => $BBC_MAINSITE, "title" => $translation['navbar_main_site'], "icon" => "navbar_main.png" ), |
199 |
> |
"config" => array( "url" => "show_config.php", "title" => !empty($BBC_SHOW_CONFIG)? $translation['navbar_configuration'] : "", "icon" => "navbar_config.png" ), |
200 |
> |
"global" => array( "url" => "show_global.php", "title" => $translation['navbar_global_stats'], "icon" => "navbar_global.png" ), |
201 |
> |
"detailed" => array( "url" => "show_detailed.php", "title" => $translation['navbar_detailed_stats'], "icon" => "navbar_detailed.png" ), |
202 |
> |
"time" => array( "url" => "show_time.php", "title" => $translation['navbar_time_stats'], "icon" => "navbar_time.png" ) |
203 |
> |
); |
204 |
> |
// Language Selector |
205 |
> |
$str = (empty($lang_sel) ? "" : "<form method=\"post\" action=\"$self\">\n") |
206 |
> |
."<table ".(empty($on_bottom) ? "class=\"navbar\"" : "class=\"navbar bottom\"")."><tr><td>\n"; |
207 |
> |
|
208 |
> |
$sep = ""; |
209 |
> |
// Create Navigation Buttons |
210 |
> |
foreach (array_keys($navbar) as $menu_key) { |
211 |
> |
$url = $navbar[$menu_key]['url']; |
212 |
> |
$title = $navbar[$menu_key]['title']; |
213 |
> |
$icon = $navbar[$menu_key]['icon']; |
214 |
> |
$selected_class = (basename($_SERVER['SCRIPT_NAME']) == $url ? " selected" : ""); |
215 |
> |
if ( basename($_SERVER['SCRIPT_NAME']) == "index.php" && $menu_key == "global") { |
216 |
> |
$selected_class = " selected"; |
217 |
> |
} |
218 |
> |
if (empty($title)){ |
219 |
> |
continue; |
220 |
> |
} |
221 |
> |
$str .= "<a class=\"navbar".$selected_class."\" href=\"$url".($menu_key != "main" ? $url_lng : "")."\"><img src=\"".$BBC_IMAGES_PATH.$icon."\" alt=\"icon\" /> $title</a> \n"; |
222 |
> |
} |
223 |
> |
// Create Language Selector |
224 |
> |
if (!empty($lang_sel)) { |
225 |
> |
$str .= " <img src=\"".$BBC_IMAGES_PATH."navbar_lng.png\" alt=\"".$translation['navbar_language']."\" title=\"".$translation['navbar_language']."\" /> \n" |
226 |
> |
."<select name=\"lng\" onchange=\"if (this.selectedIndex>0){location.href='$self?lng=' + " |
227 |
> |
."this.options[this.selectedIndex].value;}\">\n" |
228 |
> |
."<option value=\"\"".(empty($this->lng) ? " selected=\"selected\"" : "").">".$translation['navbar_language']."</option>\n"; |
229 |
> |
|
230 |
> |
foreach ($this->lang_tab as $lang_id => $lang_name) { |
231 |
> |
$str .= "<option value=\"$lang_id\"".(($this->lng == $lang_id) ? " selected=\"selected\"" : "") |
232 |
> |
.">$lang_name</option>\n"; |
233 |
> |
} |
234 |
> |
$lang_tab_lng = empty($this->lang_tab[$this->lng]) ? "" : $this->lang_tab[$this->lng]; |
235 |
> |
$str .= "</select>\n" |
236 |
> |
." <noscript><input type=\"submit\" value=\"".$translation['navbar_go']."\" /></noscript>\n"; |
237 |
> |
} |
238 |
> |
|
239 |
> |
$str .= "</td></tr></table>\n" |
240 |
> |
.((!empty($on_bottom)) ? "" : |
241 |
> |
"<table class=\"titlebar\">\n" |
242 |
> |
."<tr><td class=\"title\">\n" |
243 |
> |
.$this->set_title()."\n" |
244 |
> |
."</td></tr></table>\n") |
245 |
> |
.(empty($lang_sel) ? "" : "</form>\n"); |
246 |
> |
|
247 |
> |
return $str; |
248 |
> |
} |
249 |
> |
|
250 |
> |
// Color explanation |
251 |
> |
function color_explain() { |
252 |
> |
global $BBC_MAXTIME, $BBC_MAXVISIBLE, $translation; |
253 |
> |
|
254 |
> |
return "<p><i>".$translation['dstat_visible_rows'].": $BBC_MAXVISIBLE | \n" |
255 |
> |
."<span class=\"lessthan_row\"> ".$translation['dstat_last_visit']." < $BBC_MAXTIME ".$translation['misc_second_unit']." </span> | \n" |
256 |
> |
."<span class=\"morethan_row\"> ".$translation['dstat_last_visit']." > $BBC_MAXTIME ".$translation['misc_second_unit']." </span> | \n" |
257 |
> |
."<span class=\"robot_row\"> ".$translation['dstat_robots']." </span> | \n" |
258 |
> |
."<span class=\"my_visit_row\"> ".$translation['dstat_my_visit']." </span></i></p>\n"; |
259 |
> |
} |
260 |
> |
|
261 |
> |
// Determine the color style of the connection |
262 |
> |
function connect_color_class($connect) { |
263 |
> |
global $BBC_MAXTIME, $BBC_TIMESTAMP, $BBC_TIME_OFFSET; |
264 |
> |
if (_BBC_PHP < 410) global $HTTP_SERVER_VARS; |
265 |
> |
|
266 |
> |
// It was you |
267 |
> |
if (((_BBC_PHP < 410) ? $HTTP_SERVER_VARS["REMOTE_ADDR"] : $_SERVER["REMOTE_ADDR"]) == $connect['ip']) return 'my_visit_row'; |
268 |
> |
// else, it was an access within $BBC_TIME_OFFSET |
269 |
> |
elseif ((($BBC_TIMESTAMP + ($BBC_TIME_OFFSET * 60)) - $connect['time']) < $BBC_MAXTIME) return "lessthan_row"; |
270 |
> |
// else, it is red if it is a robot |
271 |
> |
elseif (!empty($connect['robot'])) return "robot_row"; |
272 |
> |
// or blue if something else |
273 |
> |
else return "morethan_row"; |
274 |
> |
} |
275 |
> |
|
276 |
> |
// BBClone copyright notice |
277 |
> |
function copyright() { |
278 |
> |
global $BBC_IMAGES_PATH, $BBC_VERSION, $BBC_EXT_LOOKUP, $translation; |
279 |
> |
|
280 |
> |
// Get Build No |
281 |
> |
if (is_readable("build.inc")) $BBC_BUILDNO = file_get_contents("build.inc"); |
282 |
> |
else $BBC_BUILDNO = ""; |
283 |
> |
|
284 |
> |
return "<p><a href=\"http://www.bbclone.de/\">BBClone ".$BBC_VERSION." ".$BBC_EXT_LOOKUP."</a> © ".$translation['global_bbclone_copyright'] |
285 |
> |
." <a href=\"http://www.gnu.org/copyleft/gpl.html\">GPL</a>\n" |
286 |
> |
." <a href=\"http://validator.w3.org/check?url=referer\">" |
287 |
> |
."<img src=\"".$BBC_IMAGES_PATH."valid-xhtml10.png\" class=\"validicon\" alt=\"Valid XHTML 1.0!\" title=\"Valid XHTML 1.0!\" /></a>\n" |
288 |
> |
." <a href=\"http://jigsaw.w3.org/css-validator/check/referer\">" |
289 |
> |
."<img src=\"".$BBC_IMAGES_PATH."valid-css.png\" class=\"validicon\" alt=\"Valid CSS!\" title=\"Valid CSS!\" /></a>\n" |
290 |
> |
." <a href=\"http://tidy.sourceforge.net\">" |
291 |
> |
."<img src=\"".$BBC_IMAGES_PATH."valid-tidy.png\" class=\"validtidy\" alt=\"Valid HTML Tidy!\" title=\"Valid HTML Tidy!\" /></a></p>\n" |
292 |
> |
; |
293 |
> |
} |
294 |
> |
|
295 |
> |
// End of all BBClone HTML documents |
296 |
> |
function html_end() { |
297 |
> |
return "</body>\n" |
298 |
> |
."</html>\n"; |
299 |
> |
} |
300 |
> |
} |
301 |
|
?> |