source: trunk/htdocs/common/common.php @ 1069

Last change on this file since 1069 was 1069, checked in by moo, 2 years ago

htdocs: more links, translate, remove debug code.

  • Property svn:eol-style set to native
File size: 6.1 KB
RevLine 
[123]1<?php
2
[1053]3class Cycle
4{
5    var $values;
6    var $i;
7    var $count;
8
9    function Cycle($v)
10    {
11        $this->values = func_get_args();
12        $this->i = -1;
13        $this->count = count($this->values);
14    }
15
16    function next()
17    {
18        $this->i = ($this->i + 1) % $this->count;
19        return $this->values[$this->i];
20    }
21
22    function cur()
23    {
24        return $this->values[$this->i];
25    }
26
27    function reset()
28    {
29        $this->i = -1;
30    }
31}
32
33function switcher($name, $options)
34{
35    $n = isset($_GET[$name]) ? $_GET[$name] : null;
36    $html = array();
37    foreach ($options as $k => $v) {
38        $html[] = sprintf('<a href="?%s=%s"%s>%s</a>', $name, $k, $k == $n ? ' class="active"' : '', $v);
39    }
40    return implode('', $html);
41}
42
[1068]43function mainnav()
[1053]44{
[1068]45    foreach (array(
46                "http://xcache.lighttpd.net/" => "XCache",
[1069]47                "http://xcache.lighttpd.net/wiki/DocTOC" => _("Document"),
48                "http://xcache.lighttpd.net/wiki/GetSupport" => _("Get Support"),
49                "https://groups.google.com/group/xcache/" => _("Discusson"),
[1068]50                "http://www.php.net/" => "PHP",
[1069]51                "http://www.lighttpd.net/" => "Lighttpd",
[1068]52                ) as $url => $title) {
53        $html[] = sprintf('<a href="%s" target="_blank">%s</a>', $url, $title);
54    }
55    return implode('|', $html);
56}
57
58function subnav()
59{
[1053]60    global $module, $modules;
61    $html = array();
62    foreach ($modules as $k => $v) {
63        $html[] = sprintf('<a href="../%s/"%s>%s</a>', $k, $k == $module ? ' class="active"' : '', $v);
64    }
65    return implode('', $html);
66}
67
68function th($name, $attrs = null)
69{
70    $translated = __($name);
71    if ($translated == $name) {
72        $translated = "$name|$name";
73    }
74    list($text, $title) = explode('|', $translated, 2);
[1068]75    return sprintf('%s<th%s id="%s" class="h" title="%s"><a href="javascript:" onclick="resort(this); return false">%s</a></th>%s'
[1053]76            , "\t"
77            , $attrs ? " $attrs" : ""
78            , $name, htmlspecialchars(trim($title)), trim($text)
79            , "\n");
80}
81
[783]82function xcache_validateFileName($name)
83{
[1056]84    if (!preg_match('!^[a-zA-Z0-9._-]+$!', $name)) {
85        var_dump($name);
86    }
[783]87    return preg_match('!^[a-zA-Z0-9._-]+$!', $name);
88}
89
[1053]90function get_language_file_ex($name, $lang)
[123]91{
[1053]92    static $langMap = array(
[123]93            'zh'    => 'zh-simplified',
94            'zh-hk' => 'zh-traditional',
95            'zh-tw' => 'zh-traditional',
96            );
97
[1053]98    if (isset($langMap[$lang])) {
99        $lang = $langMap[$lang];
[123]100    }
[1056]101    else if (!xcache_validateFileName($lang)) {
102        return null;
103    }
104
[1053]105    $file = "$name-$lang.lang.php";
[1056]106    if (file_exists($file)) {
[123]107        return $file;
108    }
109    return null;
110}
111
112function get_language_file($name)
113{
[902]114    global $config;
115    if (!empty($config['lang'])) {
[1053]116        $lang = strtolower($config['lang']);
117        $file = get_language_file_ex($name, $lang);
[134]118        if (!isset($file)) {
[1053]119            $lang = strtok($lang, ':-');
120            $file = get_language_file_ex($name, $lang);
[134]121        }
[123]122    }
123    else if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
[1053]124        foreach (explode(',', str_replace(' ', '', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) as $lang) {
125            $lang = strtok($lang, ':;');
126            $file = get_language_file_ex($name, $lang);
[123]127            if (isset($file)) {
[1053]128                $config['lang'] = $lang;
[123]129                break;
130            }
[1053]131            if (strpos($lang, '-') !== false) {
132                $file = get_language_file_ex($name, strtok($lang, ':-'));
[123]133                if (isset($file)) {
[1053]134                    $config['lang'] = $lang;
[123]135                    break;
136                }
137            }
138        }
139    }
140    return isset($file) ? $file : "$name-en.lang.php";
141}
142
[1038]143function _($str)
[123]144{
145    if (isset($GLOBALS['strings'][$str])) {
146        return $GLOBALS['strings'][$str];
147    }
[902]148    if (!empty($GLOBALS['config']['show_todo_strings'])) {
[1038]149        return '<span style="color:red">' . htmlspecialchars($str) . '</span>|';
[123]150    }
151    return $str;
152}
153
[1038]154function __($str)
155{
156    return _($str);
157}
158
159function N_($str)
160{
161    return $str;
162}
163
[1053]164function number_formats($a, $keys)
165{
166    foreach ($keys as $k) {
167        $a[$k] = number_format($a[$k]);
168    }
169    return $a;
170}
171
172function size($size)
173{
174    $size = (int) $size;
175    if ($size < 1024)
176        return number_format($size, 2) . ' b';
177
178    if ($size < 1048576)
179        return number_format($size / 1024, 2) . ' K';
180
181    return number_format($size / 1048576, 2) . ' M';
182}
183
184function age($time)
185{
186    if (!$time) return '';
187    $delta = REQUEST_TIME - $time;
188
189    if ($delta < 0) {
190        $delta = -$delta;
191    }
192   
193    static $seconds = array(1, 60, 3600, 86400, 604800, 2678400, 31536000);
194    static $name = array('s', 'm', 'h', 'd', 'w', 'M', 'Y');
195
196    for ($i = 6; $i >= 0; $i --) {
197        if ($delta >= $seconds[$i]) {
198            $ret = (int) ($delta / $seconds[$i]);
[1063]199            return $ret . $name[$i];
[1053]200        }
201    }
202
[1063]203    return '0s';
[1053]204}
205
[418]206function stripaddslashes_array($value, $mqs = false)
207{
208    if (is_array($value)) {
209        foreach($value as $k => $v) {
210            $value[$k] = stripaddslashes_array($v, $mqs);
211        }
212    }
213    else if(is_string($value)) {
214        $value = $mqs ? str_replace('\'\'', '\'', $value) : stripslashes($value);
215    }
216    return $value;
217}
218
[902]219function ob_filter_path_nicer_default($list_html)
220{
221    $sep = DIRECTORY_SEPARATOR;
222    $docRoot = $_SERVER['DOCUMENT_ROOT'];
[926]223    if ($sep != '/') {
224        $docRoot = str_replace('/', $sep, $docRoot);
225    }
[953]226    $list_html = str_replace(">$docRoot",  ">{DOCROOT}" . (substr($docRoot, -1) == $sep ? $sep : ""), $list_html);
[902]227    $xcachedir = realpath(dirname(__FILE__) . "$sep..$sep");
[953]228    $list_html = str_replace(">$xcachedir$sep", ">{XCache}$sep", $list_html);
[902]229    if ($sep == '/') {
[953]230        $list_html = str_replace(">/home/", ">{H}/", $list_html);
[902]231    }
232    return $list_html;
233}
234
[123]235error_reporting(E_ALL);
[181]236ini_set('display_errors', 'On');
[123]237define('REQUEST_TIME', time());
238
[549]239if (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc()) {
[418]240    $mqs = (bool) ini_get('magic_quotes_sybase');
241    $_GET = stripaddslashes_array($_GET, $mqs);
242    $_POST = stripaddslashes_array($_POST, $mqs);
243    $_REQUEST = stripaddslashes_array($_REQUEST, $mqs);
[902]244    unset($mqs);
[418]245}
246ini_set('magic_quotes_runtime', '0');
247
[902]248$config = array();
[1053]249if (file_exists("./config.default.php")) {
250    include("./config.default.php");
251}
252include("../config.default.php");
253if (file_exists("../config.php")) {
254    include("../config.php");
255}
[123]256if (file_exists("./config.php")) {
257    include("./config.php");
258}
259
[1069]260$strings = array();
[1056]261include(get_language_file("../common/common"));
[1053]262
263$modules = array();
264if (file_exists("../cacher/index.php")) {
265    $modules["cacher"] = _("Cacher");
[125]266}
[1053]267if (file_exists("../coverager/index.php")) {
268    $modules["coverager"] = _("Coverager");
269}
[951]270header("Cache-Control: no-cache, must-revalidate");
271header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
[1068]272header("Content-Type: text/html; " . $GLOBALS['config']['charset']);
273header("Content-Language: " . $GLOBALS['config']['lang']);
[951]274
[123]275?>
Note: See TracBrowser for help on using the repository browser.