values = func_get_args();
$this->i = -1;
$this->count = count($this->values);
}
function next()
{
$this->i = ($this->i + 1) % $this->count;
return $this->values[$this->i];
}
function cur()
{
return $this->values[$this->i];
}
function reset()
{
$this->i = -1;
}
}
function switcher($name, $options)
{
$n = isset($_GET[$name]) ? $_GET[$name] : null;
$html = array();
foreach ($options as $k => $v) {
$html[] = sprintf('%s', $name, $k, $k == $n ? ' class="active"' : '', $v);
}
return implode('', $html);
}
function mainnav()
{
foreach (array(
"http://xcache.lighttpd.net/" => "XCache",
"http://xcache.lighttpd.net/wiki/DocTOC" => _T("Document"),
"http://xcache.lighttpd.net/wiki/PhpIni" => _T("INI Reference"),
"http://xcache.lighttpd.net/wiki/GetSupport" => _T("Get Support"),
"https://groups.google.com/group/xcache/" => _T("Discusson"),
"http://www.php.net/" => "PHP",
"http://www.lighttpd.net/" => "Lighttpd",
) as $url => $title) {
$html[] = sprintf('%s', $url, $title);
}
return implode('|', $html);
}
function subnav()
{
global $module, $modules;
$html = array();
foreach ($modules as $k => $v) {
$html[] = sprintf('%s', $k, $k == $module ? ' class="active"' : '', $v);
}
return implode('', $html);
}
function th($name, $attrs = null)
{
$translated = __($name);
if ($translated == $name) {
$translated = "$name|$name";
}
list($text, $title) = explode('|', $translated, 2);
return sprintf('%s
%s | %s'
, "\t"
, $attrs ? " $attrs" : ""
, $name, htmlspecialchars(trim($title)), trim($text)
, "\n");
}
function xcache_validateFileName($name)
{
return preg_match('!^[a-zA-Z0-9._-]+$!', $name);
}
function get_language_file_ex($dir, $lang)
{
static $langMap = array(
'zh' => 'zh-simplified',
'zh-hk' => 'zh-traditional',
'zh-tw' => 'zh-traditional',
);
if (isset($langMap[$lang])) {
$lang = $langMap[$lang];
}
else if (!xcache_validateFileName($lang)) {
return null;
}
$file = "$dir/$lang.php";
if (file_exists($file)) {
return $file;
}
return null;
}
function get_language_file($dir)
{
global $config;
if (!empty($config['lang'])) {
$lang = strtolower($config['lang']);
$file = get_language_file_ex($dir, $lang);
if (!isset($file)) {
$lang = strtok($lang, ':-');
$file = get_language_file_ex($dir, $lang);
}
}
else {
$config['lang'] = 'en';
if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
foreach (explode(',', str_replace(' ', '', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) as $lang) {
$lang = strtok($lang, ':;');
$file = get_language_file_ex($dir, $lang);
if (isset($file)) {
$config['lang'] = $lang;
break;
}
if (strpos($lang, '-') !== false) {
$file = get_language_file_ex($dir, strtok($lang, ':-'));
if (isset($file)) {
$config['lang'] = $lang;
break;
}
}
}
}
}
return isset($file) ? $file : "$dir/en.php";
}
function _T($str)
{
if (isset($GLOBALS['strings'][$str])) {
return $GLOBALS['strings'][$str];
}
if (!empty($GLOBALS['config']['show_todo_strings'])) {
return '' . $str . '|';
}
return $str;
}
function __($str)
{
return _T($str);
}
function N_($str)
{
return $str;
}
function number_formats($a, $keys)
{
foreach ($keys as $k) {
$a[$k] = number_format($a[$k]);
}
return $a;
}
function size($size)
{
$size = (int) $size;
if ($size < 1024)
return number_format($size, 2) . ' b';
if ($size < 1048576)
return number_format($size / 1024, 2) . ' K';
return number_format($size / 1048576, 2) . ' M';
}
function age($time)
{
if (!$time) return '';
$delta = REQUEST_TIME - $time;
if ($delta < 0) {
$delta = -$delta;
}
static $seconds = array(1, 60, 3600, 86400, 604800, 2678400, 31536000);
static $name = array('s', 'm', 'h', 'd', 'w', 'M', 'Y');
for ($i = 6; $i >= 0; $i --) {
if ($delta >= $seconds[$i]) {
$ret = (int) ($delta / $seconds[$i]);
return $ret . $name[$i];
}
}
return '0s';
}
function stripaddslashes_array($value, $mqs = false)
{
if (is_array($value)) {
foreach($value as $k => $v) {
$value[$k] = stripaddslashes_array($v, $mqs);
}
}
else if(is_string($value)) {
$value = $mqs ? str_replace('\'\'', '\'', $value) : stripslashes($value);
}
return $value;
}
function ob_filter_path_nicer_default($list_html)
{
$sep = DIRECTORY_SEPARATOR;
$docRoot = $_SERVER['DOCUMENT_ROOT'];
if ($sep != '/') {
$docRoot = str_replace('/', $sep, $docRoot);
}
$list_html = str_replace(">$docRoot", ">{DOCROOT}" . (substr($docRoot, -1) == $sep ? $sep : ""), $list_html);
$xcachedir = realpath(dirname(__FILE__) . "$sep..$sep");
$list_html = str_replace(">$xcachedir$sep", ">{XCache}$sep", $list_html);
if ($sep == '/') {
$list_html = str_replace(">/home/", ">{H}/", $list_html);
}
return $list_html;
}
error_reporting(E_ALL);
ini_set('display_errors', 'On');
define('REQUEST_TIME', time());
if (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc()) {
$mqs = (bool) ini_get('magic_quotes_sybase');
$_GET = stripaddslashes_array($_GET, $mqs);
$_POST = stripaddslashes_array($_POST, $mqs);
$_REQUEST = stripaddslashes_array($_REQUEST, $mqs);
unset($mqs);
}
ini_set('magic_quotes_runtime', '0');
$config = array();
if (file_exists("./config.default.php")) {
include "./config.default.php";
}
include "../config.default.php";
if (file_exists("../config.php")) {
include "../config.php";
}
if (file_exists("./config.php")) {
include "./config.php";
}
$strings = array();
include get_language_file("../common/lang");
$modules = array();
if (file_exists("../cacher/index.php")) {
$modules["cacher"] = _T("Cacher");
}
if (file_exists("../coverager/index.php")) {
$modules["coverager"] = _T("Coverager");
}
if (file_exists("../diagnosis/index.php")) {
$modules["diagnosis"] = _T("Diagnosis");
}
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Content-Type: text/html; " . $GLOBALS['config']['charset']);
header("Content-Language: " . $GLOBALS['config']['lang']);
?>