You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
4.9 KiB
PHP
183 lines
4.9 KiB
PHP
<?php
|
|
|
|
include_once('logger.php');
|
|
|
|
// Always use this function to get param because in game, the param can be pass by _GET or by _POST
|
|
function ryzom_get_param($var, $default='')
|
|
{
|
|
if (isset($_POST[$var]))
|
|
return $_POST[$var];
|
|
else
|
|
if (isset($_GET[$var]))
|
|
return $_GET[$var];
|
|
else
|
|
return $default;
|
|
}
|
|
|
|
function parse_query($var)
|
|
{
|
|
$var = parse_url($var);
|
|
$arr = array();
|
|
if (isset($var['query'])) {
|
|
$var = html_entity_decode($var['query']);
|
|
$var = explode('&', $var);
|
|
|
|
foreach($var as $val) {
|
|
$x = explode('=', $val);
|
|
$arr[$x[0]] = urldecode($x[1]);
|
|
}
|
|
unset($val, $x, $var);
|
|
}
|
|
return $arr;
|
|
}
|
|
|
|
if (!function_exists('http_build_query')) {
|
|
function http_build_query($data, $prefix='', $sep='', $key='') {
|
|
$ret = array();
|
|
foreach ((array)$data as $k => $v) {
|
|
if (is_int($k) && $prefix != null) {
|
|
$k = urlencode($prefix . $k);
|
|
}
|
|
if ((!empty($key)) || ($key === 0)) $k = $key.'['.urlencode($k).']';
|
|
if (is_array($v) || is_object($v)) {
|
|
array_push($ret, http_build_query($v, '', $sep, $k));
|
|
} else {
|
|
array_push($ret, $k.'='.urlencode($v));
|
|
}
|
|
}
|
|
if (empty($sep)) $sep = ini_get('arg_separator.output');
|
|
return implode($sep, $ret);
|
|
}
|
|
}
|
|
|
|
|
|
/***
|
|
*
|
|
* Translation utilities
|
|
*
|
|
* ***/
|
|
|
|
function translation_exists($id) {
|
|
global $user, $ryzom_texts;
|
|
return isset($ryzom_texts[$id]) && isset($ryzom_texts[$id][$user['lang']]);
|
|
}
|
|
|
|
// Translate the $id in the selected language
|
|
function get_translation($id, $lang, $args=array()) {
|
|
global $ryzom_texts, $user;
|
|
if(!isset($ryzom_texts[$id])) return '{'.$id.'}';
|
|
if(!isset($ryzom_texts[$id][$lang])) return '{'.$id.'['.$lang.']}';
|
|
if($ryzom_texts[$id][$lang] == '' && isset($ryzom_texts[$id]['en'])) return @vsprintf($ryzom_texts[$id]['en'], $args);
|
|
return @vsprintf($ryzom_texts[$id][$lang], $args);
|
|
}
|
|
|
|
|
|
// Translate the $id in the user language
|
|
function _t($id, $args=array()) {
|
|
global $ryzom_texts, $user;
|
|
|
|
$a = '';
|
|
if ($args) {
|
|
if (is_array($args)) {
|
|
$a = array();
|
|
foreach ($args as $arg)
|
|
$a[] = strval($arg);
|
|
$a = ' '.implode(', ', $a);
|
|
} else
|
|
$a = ' '.strval($args);
|
|
}
|
|
if(!isset($ryzom_texts[$id])) return '{'.$id.$a.'}';
|
|
if(!isset($ryzom_texts[$id][$user['lang']])) return '{'.$id.'['.$user['lang'].']'.$a.'}';
|
|
if($ryzom_texts[$id][$user['lang']] == '' && isset($ryzom_texts[$id]['en']) && $ryzom_texts[$id]['en'] != '') return @vsprintf($ryzom_texts[$id]['en'], $args);
|
|
if($ryzom_texts[$id][$user['lang']] == '' && isset($ryzom_texts[$id]['fr']) && $ryzom_texts[$id]['fr'] != '') return '{'.$id.$a.'}';
|
|
if($ryzom_texts[$id][$user['lang']] == '' && isset($ryzom_texts[$id]['de']) && $ryzom_texts[$id]['de'] != '') return '{'.$id.$a.'}';
|
|
return @vsprintf($ryzom_texts[$id][$user['lang']], $args);
|
|
}
|
|
|
|
/***
|
|
*
|
|
* Ryzom time
|
|
*
|
|
* ***/
|
|
|
|
|
|
|
|
// Get a human and translated readable time, for example "3 days ago"
|
|
function ryzom_relative_time($timestamp) {
|
|
global $ryzom_periods, $user;
|
|
$difference = time() - $timestamp;
|
|
$lengths = array("60","60","24","7","4.35","12","10");
|
|
|
|
if ($difference >= 0) { // this was in the past
|
|
$ending = _t('ago');
|
|
} else { // this was in the future
|
|
$difference = -$difference;
|
|
$ending = _t('to_go');
|
|
}
|
|
for($j = 0,$m=count($lengths); $j<$m && $difference >= $lengths[$j]; $j++)
|
|
$difference /= $lengths[$j];
|
|
// round hours as '1.2 hours to go'
|
|
$difference = round($difference, ($j == 2) ? 1 : 0);
|
|
|
|
$form = ($difference == 1) ? 'singular' : 'plural';
|
|
|
|
// Handle exceptions
|
|
// French uses singular form if difference = 0
|
|
if ($user['lang'] == 'fr' && ($difference == 0)) {
|
|
$form = 'singular';
|
|
}
|
|
// Russian has a different plural form for plurals of 2 through 4
|
|
if ($user['lang'] == 'ru' && ($form == 'plural')) {
|
|
if ($difference < 5) {
|
|
$form = '2-4';
|
|
}
|
|
}
|
|
|
|
$final = $ryzom_periods[$user['lang']][$form][$j];
|
|
$text = _t('date_format', array($difference, $final, $ending));
|
|
return $text;
|
|
}
|
|
|
|
// Get a human and translated absolute date
|
|
function ryzom_absolute_time($timestamp) {
|
|
global $user, $ryzom_daysofweek, $ryzom_monthnames;
|
|
$day_of_month = date("j", $timestamp);
|
|
$dow = date("w", $timestamp);
|
|
$month = date("n", $timestamp);
|
|
$day_of_week = $ryzom_daysofweek[$user['lang']][$dow];
|
|
$month_str = $ryzom_monthnames[$user['lang']][$month-1];
|
|
$text = _t("absolute_date_format", array($day_of_month, $day_of_week, $month_str, $month, date("m", $timestamp), date("d", $timestamp)));
|
|
return $text;
|
|
}
|
|
|
|
/***
|
|
*
|
|
* Debug tools
|
|
*
|
|
* ***/
|
|
|
|
function p($var, $value=NULL) {
|
|
ob_start();
|
|
debug_print_backtrace();
|
|
$bt = ob_get_contents();
|
|
ob_end_clean();
|
|
$bt = explode("\n",$bt);
|
|
$bt = explode('[', $bt[1]);
|
|
ob_start();
|
|
echo '<font color="#AAFFFF">'.substr($bt[count($bt)-1], 0, -1)."</font>\n";
|
|
if ($value !== NULL) {
|
|
echo '<font color="#FFFFFF">'.$var.' : </font>';
|
|
$var = $value;
|
|
}
|
|
//if (is_array($var))
|
|
echo '<pre>';
|
|
print_r($var);
|
|
echo '</pre>';
|
|
// else
|
|
// var_dump($var);
|
|
ryLogger::getInstance()->addPrint(ob_get_contents());
|
|
ob_end_clean();
|
|
}
|
|
|
|
?>
|