2007-05-10 21:31:10 +04:00
|
|
|
<?php
|
|
|
|
/*
|
|
|
|
* This file is part of Web Instant Messenger project.
|
|
|
|
*
|
|
|
|
* Copyright (c) 2005-2007 Internet Services Ltd.
|
|
|
|
* All rights reserved. This program and the accompanying materials
|
|
|
|
* are made available under the terms of the Eclipse Public License v1.0
|
|
|
|
* which accompanies this distribution, and is available at
|
|
|
|
* http://www.eclipse.org/legal/epl-v10.html
|
|
|
|
*
|
|
|
|
* Contributors:
|
|
|
|
* Evgeny Gryaznov - initial API and implementation
|
|
|
|
*/
|
|
|
|
|
|
|
|
session_start();
|
|
|
|
|
|
|
|
require(dirname(__FILE__).'/converter.php');
|
|
|
|
require(dirname(__FILE__).'/config.php');
|
|
|
|
|
|
|
|
$webimroot = "/webim"; # absolute path on server
|
|
|
|
|
|
|
|
function myiconv($in_enc, $out_enc, $string) {
|
|
|
|
global $_utf8win1251, $_win1251utf8;
|
|
|
|
if( function_exists('iconv') ) {
|
|
|
|
$converted = iconv($in_enc, $out_enc, $string);
|
|
|
|
if( $converted !== FALSE )
|
|
|
|
return $converted;
|
|
|
|
}
|
|
|
|
if( $in_enc == "cp1251" && $out_enc == "utf-8" )
|
|
|
|
return strtr($string, $_win1251utf8);
|
|
|
|
if( $in_enc == "utf-8" && $out_enc == "cp1251" )
|
|
|
|
return strtr($string, $_utf8win1251);
|
|
|
|
|
|
|
|
return $string; // do not know how to convert
|
|
|
|
}
|
|
|
|
|
|
|
|
function getrawparam( $name ) {
|
|
|
|
global $webim_encoding, $request_encoding;
|
|
|
|
if( isset($_POST[$name]) )
|
|
|
|
return myiconv($request_encoding,$webim_encoding,$_POST[$name]);
|
|
|
|
die("no ".$name." parameter");
|
|
|
|
}
|
|
|
|
|
|
|
|
function getparam( $name ) {
|
|
|
|
if( isset($_POST[$name]) )
|
|
|
|
return $_POST[$name];
|
|
|
|
die("no ".$name." parameter");
|
|
|
|
}
|
|
|
|
|
|
|
|
function verifyparam( $name, $regexp, $default = null ) {
|
|
|
|
|
|
|
|
if( isset( $_GET[$name] ) ) {
|
|
|
|
$val = $_GET[$name];
|
|
|
|
if( preg_match( $regexp, $val ) )
|
|
|
|
return $val;
|
|
|
|
|
|
|
|
} else if( isset( $_POST[$name] ) ) {
|
|
|
|
$val = $_POST[$name];
|
|
|
|
if( preg_match( $regexp, $val ) )
|
|
|
|
return $val;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
if( isset( $default ) )
|
|
|
|
return $default;
|
|
|
|
}
|
|
|
|
|
|
|
|
echo "<html><head></head><body>Wrong parameter used or absent: ".$name."</body></html>";
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
function debugexit_print( $var ) {
|
|
|
|
echo "<html><body><pre>";
|
|
|
|
print_r( $var );
|
|
|
|
echo "</pre></body></html>";
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_user_locale() {
|
|
|
|
global $available_locales, $default_locale;
|
|
|
|
|
|
|
|
if( isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ) {
|
|
|
|
$requested_langs = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
|
|
|
foreach( $requested_langs as $requested_lang) {
|
|
|
|
if( strlen($requested_lang) > 2 )
|
|
|
|
$requested_lang = substr($requested_lang,0,2);
|
|
|
|
|
|
|
|
if( in_array($requested_lang,$available_locales) )
|
|
|
|
return $requested_lang;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if( in_array($default_locale,$available_locales) )
|
|
|
|
return $default_locale;
|
|
|
|
|
|
|
|
return 'en';
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_locale() {
|
|
|
|
global $available_locales;
|
|
|
|
|
|
|
|
$locale = verifyparam("locale", "/^\w\w$/", "");
|
|
|
|
|
|
|
|
if( $locale && in_array($locale,$available_locales) ) {
|
|
|
|
$_SESSION['locale'] = $locale;
|
|
|
|
} else if( isset($_SESSION['locale']) ){
|
|
|
|
$locale = $_SESSION['locale'];
|
|
|
|
}
|
|
|
|
|
|
|
|
if( !$locale || !in_array($locale,$available_locales) )
|
|
|
|
$locale = get_user_locale();
|
|
|
|
return $locale;
|
|
|
|
}
|
|
|
|
|
|
|
|
function set_locale($locale) {
|
|
|
|
global $current_locale, $available_locales;
|
|
|
|
if( in_array($locale,$available_locales) )
|
|
|
|
$current_locale = $locale;
|
|
|
|
}
|
|
|
|
|
|
|
|
$current_locale = get_locale();
|
|
|
|
$messages = array();
|
|
|
|
|
|
|
|
function load_messages($locale) {
|
|
|
|
global $messages;
|
|
|
|
$hash = array();
|
|
|
|
$fp = fopen(dirname(__FILE__)."/../view/properties_$locale","r");
|
|
|
|
while (!feof($fp)) {
|
|
|
|
$line = fgets($fp, 4096);
|
|
|
|
$list = split("=", $line, 2 );
|
|
|
|
if( isset($list[1]) ) {
|
|
|
|
$hash[$list[0]] = str_replace("\\n", "\n",trim($list[1]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
fclose($fp);
|
|
|
|
$messages[$locale] = $hash;
|
|
|
|
}
|
|
|
|
|
|
|
|
function getstring_($text,$locale) {
|
|
|
|
global $messages;
|
|
|
|
if(!isset($messages[$locale]))
|
|
|
|
load_messages($locale);
|
|
|
|
|
|
|
|
$localized = $messages[$locale];
|
|
|
|
if( isset($localized[$text]) )
|
|
|
|
return $localized[$text];
|
|
|
|
|
|
|
|
return "!".$text;
|
|
|
|
}
|
|
|
|
|
|
|
|
function getstring($text) {
|
|
|
|
global $current_locale;
|
|
|
|
return getstring_($text,$current_locale);
|
|
|
|
}
|
|
|
|
|
|
|
|
function getstring2_($text,$params,$locale) {
|
|
|
|
$string = getstring_($text,$locale);
|
|
|
|
for( $i = 0; $i < count($params); $i++ ) {
|
|
|
|
$string = str_replace("{".$i."}", $params[$i], $string);
|
|
|
|
}
|
|
|
|
return $string;
|
|
|
|
}
|
|
|
|
|
|
|
|
function getstring2($text,$params) {
|
|
|
|
global $current_locale;
|
|
|
|
return getstring2_($text,$params,$current_locale);
|
|
|
|
}
|
|
|
|
|
|
|
|
function connect() {
|
2007-08-22 01:59:44 +04:00
|
|
|
global $mysqlhost, $mysqllogin, $mysqlpass, $mysqldb, $dbencoding, $force_charset_in_connection;
|
2007-05-10 21:31:10 +04:00
|
|
|
$link = mysql_connect($mysqlhost,$mysqllogin ,$mysqlpass )
|
|
|
|
or die('Could not connect: ' . mysql_error());
|
|
|
|
mysql_select_db($mysqldb) or die('Could not select database');
|
2007-08-22 01:59:44 +04:00
|
|
|
if( $force_charset_in_connection )
|
|
|
|
mysql_query("SET character set $dbencoding", $link);
|
2007-05-10 21:31:10 +04:00
|
|
|
return $link;
|
|
|
|
}
|
|
|
|
|
|
|
|
function perform_query($query,$link) {
|
|
|
|
mysql_query($query,$link) or die(' Query failed: ' .
|
|
|
|
mysql_error().": ".$query);
|
|
|
|
}
|
|
|
|
|
|
|
|
function select_one_row($query,$link) {
|
|
|
|
$result = mysql_query($query,$link) or die(' Query failed: ' .
|
|
|
|
mysql_error().": ".$query);
|
|
|
|
$line = mysql_fetch_array($result, MYSQL_ASSOC);
|
|
|
|
mysql_free_result($result);
|
|
|
|
return $line;
|
|
|
|
}
|
|
|
|
|
|
|
|
function start_xml_output() {
|
|
|
|
header("Cache-Control: no-store, no-cache, must-revalidate");
|
|
|
|
header("Content-type: text/xml");
|
|
|
|
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
|
|
|
|
}
|
|
|
|
|
|
|
|
function start_html_output() {
|
|
|
|
global $output_charset;
|
|
|
|
header("Cache-Control: no-store, no-cache, must-revalidate");
|
|
|
|
header("Content-type: text/html".(isset($output_charset)?"; charset=".$output_charset:""));
|
|
|
|
}
|
|
|
|
|
|
|
|
function escape_with_cdata($text) {
|
|
|
|
return "<![CDATA[" . str_replace("]]>", "]]>]]><![CDATA[",$text) . "]]>";
|
|
|
|
}
|
|
|
|
|
|
|
|
function form_value($key) {
|
|
|
|
global $page;
|
|
|
|
if( isset($page) && isset($page["form$key"]) )
|
|
|
|
return $page["form$key"];
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
2007-08-22 01:59:44 +04:00
|
|
|
function form_value_cb($key) {
|
|
|
|
global $page;
|
|
|
|
if( isset($page) && isset($page["form$key"]) )
|
|
|
|
return $page["form$key"] === true;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2007-05-10 21:31:10 +04:00
|
|
|
function no_field($key) {
|
|
|
|
return getstring2("errors.required",array(getstring($key)));
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_popup($href,$message,$title,$wndName,$options) {
|
|
|
|
return "<a href=\"$href\" target=\"_blank\" ".($title?"title=\"$title\" ":"")."onclick=\"this.newWindow = window.open('$href', '$wndName', '$options');this.newWindow.focus();this.newWindow.opener=window;return false;\">$message</a>";
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_image($href,$width,$height) {
|
|
|
|
if( $width != 0 && $height != 0 )
|
|
|
|
return "<img src=\"$href\" border=\"0\" width=\"$width\" height=\"$height\"/>";
|
|
|
|
return "<img src=\"$href\" border=\"0\"/>";
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_gifimage_size($file) {
|
|
|
|
if( function_exists('gd_info')) {
|
|
|
|
$info = gd_info();
|
|
|
|
if( isset($info['GIF Read Support']) && $info['GIF Read Support'] ) {
|
|
|
|
$img = @imagecreatefromgif($file);
|
|
|
|
if($img) {
|
|
|
|
$height = imagesy($img);
|
|
|
|
$width = imagesx($img);
|
|
|
|
imagedestroy($img);
|
|
|
|
return array($width,$height);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return array(0,0);
|
|
|
|
}
|
|
|
|
|
2007-07-04 01:06:39 +04:00
|
|
|
function add_params($servlet, $params) {
|
|
|
|
$infix = '?';
|
|
|
|
if( strstr($servlet,$infix) !== FALSE )
|
|
|
|
$infix = '&';
|
|
|
|
foreach($params as $k => $v) {
|
|
|
|
$servlet .= $infix.$k."=".$v;
|
|
|
|
$infix = '&';
|
|
|
|
}
|
|
|
|
return $servlet;
|
|
|
|
}
|
|
|
|
|
|
|
|
function div($a,$b) {
|
|
|
|
return ($a-($a % $b)) / $b;
|
|
|
|
}
|
|
|
|
|
2007-08-22 01:59:44 +04:00
|
|
|
function date_diff($seconds) {
|
|
|
|
$minutes = div($seconds,60);
|
|
|
|
$seconds = $seconds % 60;
|
|
|
|
if( $minutes < 60 ) {
|
|
|
|
return sprintf("%02d:%02d",$minutes, $seconds);
|
|
|
|
} else {
|
|
|
|
$hours = div($minutes,60);
|
|
|
|
$minutes = $minutes % 60;
|
|
|
|
return sprintf("%02d:%02d:%02d",$hours, $minutes, $seconds);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function quote_smart($value,$link) {
|
|
|
|
if (get_magic_quotes_gpc()) {
|
|
|
|
$value = stripslashes($value);
|
|
|
|
}
|
|
|
|
return mysql_real_escape_string($value,$link);
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_app_location($showhost,$issecure) {
|
|
|
|
if( $showhost ) {
|
|
|
|
return ($issecure?"https://":"http://").$_SERVER['HTTP_HOST']."/webim";
|
|
|
|
} else {
|
|
|
|
return "/webim";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2007-05-10 21:31:10 +04:00
|
|
|
?>
|