/var/www/doncode.com.ua/www/obmen/include
Edit: /var/www/doncode.com.ua/www/obmen/include/func.php (19127B)
Login';
exit(101);
}
}
function distance($lat1, $lon1, $lat2, $lon2, $unit="K") {
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);
if ($unit == "K") {
return ($miles * 1.609344);
} else if ($unit == "N") {
return ($miles * 0.8684);
} else {
return $miles;
}
}
function obmenlog($msg){
$fp = fopen("/var/log/dcc/obmen/obmen_".$_SESSION['fromgid'].".log", "a+");
if($fp){fwrite($fp, "[".date("H:i:s")."] $msg\r\n");}
fclose($fp);
}
function getDCC($gid){
if($gid==0){
$dcc['taxi_name']='Биржа заказов';
return $dcc;
}
$dcc = db_fetch(db_query("SELECT d.id,d.gid,d.city_id,d.key,d.obmen,d.internet,d.taxi_name,d.ip,d.host,d.port,d.last_update,d.ver,d.create_time,d.pay_type,d.today_call,d.sum_call,c.city_name_ru FROM `dcc` d INNER JOIN city_ c WHERE d.`gid`='$gid' AND d.deleted=0 LIMIT 1"));
// $dcc = db_fetch(db_query("SELECT d.id,d.gid,d.city_id,d.key,d.obmen,d.internet,d.taxi_name,d.ip,d.host,d.port,d.last_update,d.ver,d.create_time,d.pay_type,d.today_call,d.sum_call,c.city_name_ru FROM `dcc` d INNER JOIN city_ c WHERE d.city_id=c.id_city AND d.`gid`='$gid' AND d.deleted=0 LIMIT 1"));
return $dcc[0];
}
function emptytime($time){
if($time==0){ return '';}else{return $time;}
}
function set_order_status($gid, $order_id, $status){
global $json, $conf, $mcurl;
log_order($gid, $order_id, $status);
db_query("UPDATE `orders` SET `status`='$status' WHERE `id`='$order_id' $where");
if(db_affected_rows()>0){
obmenlog("Set status($status) order($order_id) gid($gid)");
return true;
}
obmenlog("Error set status($status) order($order_id) gid($gid)");
return false;
}
function send_json($cmd, $jsonarray, $a = 0, $only_for_a = false, $only_not = false) {
global $json, $conf, $mcurl;
//$_SESSION['fromgid'] = $a;
$tsql0 = microtime(true);
obmenlog("CORE# JSON SEND START CMD: $cmd FROM GID: $a STATUS: ".$jsonarray['status_id']);
$sended = false;
// $jsonarray['a'] = $a;
if ($a > 0) {
// Достаём список друзей a != 0
$result = db_query("SELECT d.gid,d.city_id,d.host,d.port,d.key,d.taxi_name FROM `dcc` d LEFT OUTER JOIN `obmen_friends` o ON ( d.gid = o.a OR d.gid = o.b) WHERE ( o.a=$a OR o.b=$a) AND o.accepted=1 AND d.obmen=1 AND d.`deleted`='0' GROUP BY `gid`");
$hosts = db_fetch($result);
if(is_array($hosts)){
foreach($hosts as $key => $value){
if($only_for_a && $a!=$value['gid']){obmenlog("CORE# KEEP GID: ".$value['gid']." MSG FOR GID: ".$a);continue;}
if($only_not==$value['gid']){obmenlog("CORE# SKEEP GID: ".$value['gid']);continue;}
if($value['gid']>10000){obmenlog("CORE# SKEEP GID > 10000: ".$value['gid']);continue;}
if($value['port']==0){$value['port']=80;}
$url = 'http://' . $value['host'] . ':' . $value['port'] . '/core_obmenapi.php';
$key = $value['key'];
$json = urlencode(json_encode($jsonarray));
$u = $url . "?cmd=" . $cmd . "&key=" . md5($key) . "&gid=" . $a . "&jsn=" . $json;
obmenlog("CORE# FOR ".$value['taxi_name']." GID:".$value['gid'].", CITY_ID=".$value['city_id'].", cmd=$cmd, key=$key, obmen_id=".$jsonarray['obmen_id']." host={$value['host']}:{$value['port']}");
$mcurl->addUrl($u);
$sended = true;
}
}else{
set_order_status(0,$jsonarray['obmen_id'],ST_NO_DCC_ONLINE);
}
} elseif($jsonarray['city_id']>0) {
$city_id = $jsonarray['city_id'];
// Достаём список служб по городу a == 0 && city_id != 0
$result = db_query("SELECT `gid`,`host`,`port`,`key` FROM `dcc` WHERE `city_id`='$city_id' AND `obmen`='1' AND `deleted`='0' AND `internet`='1'");
$hosts = db_fetch($result);
if(is_array($hosts)){
foreach($hosts as $key => $value){
if($value['port']==0){$value['port']=80;}
$url = 'http://' . $value['host'] . ':' . $value['port'] . '/core_obmenapi.php';
$key = $value['key'];
$json = urlencode(json_encode($jsonarray));
$u = $url . "?cmd=" . $cmd . "&key=" . md5($key) . "&gid=" . $a . "&jsn=" . $json;
obmenlog("---- SERV TO CITY=$city_id TX a=$a -> b=".$value['gid'].", cmd=$cmd, obmen_id=".$jsonarray['obmen_id']." host={$value['host']}:{$value['port']}");
$mcurl->addUrl($u);
$sended = true;
}
if($sended){
if($jsonarray['status']==1){
set_order_status(0,$jsonarray['obmen_id'],ST_ORDER_SEND_TO_CITY);
}
}
}else{
set_order_status(0,$jsonarray['obmen_id'],ST_NO_CITY_ONLINE);
}
} else {
obmenlog("!--- SERV BREAK! GID and CITY_ID empty! cmd=$cmd key=$key JsonIN=".var_export($jsonarray,true));
}
$tsql1 = microtime(true);
$tsql = substr($tsql1 - $tsql0,0,6);
obmenlog("CORE# JSON SEND END ".$tsql."ms");
return $sended;
}
function json_encode_cyr($arr) {
$trans = array(
'\u0410'=>'А', '\u0411'=>'Б', '\u0412'=>'В', '\u0413'=>'Г', '\u0414'=>'Д', '\u0415'=>'Е',
'\u0401'=>'Ё', '\u0416'=>'Ж', '\u0417'=>'З', '\u0418'=>'И', '\u0419'=>'Й', '\u041a'=>'К',
'\u041b'=>'Л', '\u041c'=>'М', '\u041d'=>'Н', '\u041e'=>'О', '\u041f'=>'П', '\u0420'=>'Р',
'\u0421'=>'С', '\u0422'=>'Т', '\u0423'=>'У', '\u0424'=>'Ф', '\u0425'=>'Х', '\u0426'=>'Ц',
'\u0427'=>'Ч', '\u0428'=>'Ш', '\u0429'=>'Щ', '\u042a'=>'Ъ', '\u042b'=>'Ы', '\u042c'=>'Ь',
'\u042d'=>'Э', '\u042e'=>'Ю', '\u042f'=>'Я',
'\u0430'=>'а', '\u0431'=>'б', '\u0432'=>'в', '\u0433'=>'г', '\u0434'=>'д', '\u0435'=>'е',
'\u0451'=>'ё', '\u0436'=>'ж', '\u0437'=>'з', '\u0438'=>'и', '\u0439'=>'й', '\u043a'=>'к',
'\u043b'=>'л', '\u043c'=>'м', '\u043d'=>'н', '\u043e'=>'о', '\u043f'=>'п', '\u0440'=>'р',
'\u0441'=>'с', '\u0442'=>'т', '\u0443'=>'у', '\u0444'=>'ф', '\u0445'=>'х', '\u0446'=>'ц',
'\u0447'=>'ч', '\u0448'=>'ш', '\u0449'=>'щ', '\u044a'=>'ъ', '\u044b'=>'ы', '\u044c'=>'ь',
'\u044d'=>'э', '\u044e'=>'ю', '\u044f'=>'я');
return strtr(json_encode($arr),$trans);
}
function cartype_to_text($status) {
switch ($status) {
case 0: return "Любая";
break;
case 1: return "Эконом";
break;
case 2: return "Обычный";
break;
case 3: return "VIP";
break;
case 4: return "Микроавтобус";
break;
case 5: return "Грузовая";
break;
}
}
function status_to_text($status) {
switch ($status) {
case 1: return "Заказ создан";
break;
case 2: return "Заказ отправлен";
break;
case 3: return "Заказ принят, автомобиль в пути";
break;
case 4: return "Автомобиль задерживается";
break;
case 5: return "Автомобиль подъехал";
break;
case 6: return "Заказчик не вышел";
break;
case 7: return "Заказчик в автомобиле";
break;
case 8: return "Заказ выполнен";
break;
case 9: return "Заказ отменил заказчик";
break;
case 10: return "Заказ отменила биржа";
break;
case 11: return "Время вышло. Автомобиль не найден";
break;
case 12: return "Нет серверов обмена";
break;
case 13: return "Заказ отменил диспетчер";
break;
case 14: return "Заказ отправлен в DCC";
break;
case 15: return "Заказ не отправлен в DCC";
break;
case 16: return "Поиск автомобиля...";
break;
case 17: return "Заказ не принят в DCC";
break;
case 18: return "Заказ удален из DCC";
break;
case 19: return "Заказ не удален из DCC";
break;
case 20: return "Заказ отменен";
break;
case 21: return "Попытка повторно удалить заказ";
break;
case 22: return "Попытка удалить не существующий заказ";
break;
case 23: return "Заказ принят диспетчером";
break;
case 24: return "Заказ принят с мобильного";
break;
case 25: return "Нет города в обмене";
break;
case 26: return "Заказ доставлен в диспетчерскую";
break;
case 27: return "Заказ отменил отправитель";
break;
case 28: return "Заказ отменил получатель";
break;
case 29: return "Поиск другого автомобиля";
break;
case 30: return "Смена ID заказа";
break;
case 31: return "Отмена заказа автоматически";
break;
default:
return "Нет статуса";
break;
}
}
function log_order($gid, $order_id, $status, $statustext='') {
global $jsonout;
db_query("INSERT INTO `orders_log` SET `gid`='" . $gid . "', `order_id`='" . $order_id . "', `status`='" . $status . "', `statustext`='" . $statustext . "'");
$jsonout['status'] = $status;
$jsonout['info'] = status_to_text($status);
}
//NOTICE:ALEX:1:Загрузка конфига в массив
function read_conf(&$arg) {
$resconf = db_query("SELECT * FROM `config`");
for ($i = db_num_rows($resconf); $i > 0; $i--) {
$conf1 = db_fetch_assoc_one($resconf);
$arg[$conf1['key']] = $conf1['value'];
}
}
read_conf($conf);
function write_key($key, $value) {
$value = mysql_filtr($value);
if (!preg_match("|^[a-z_0-9]+$|", $key)) {
return false;
}
$result = db_query("SELECT count(*) FROM `config` WHERE `key`='" . $key . "'");
$keycount = db_fetch($result);
if ($keycount[0][0] > 0) {
db_query("UPDATE `config` SET `value`='" . $value . "' WHERE `key`='" . $key . "'");
return 1;
} else {
db_query("INSERT INTO `config` SET `key`='" . $key . "', `value`='" . $value . "'");
return 2;
}
}
function Sec2Time($time) {
if (is_numeric($time)) {
$value = array(
"y" => "0", "d" => "0", "h" => "0",
"m" => "0", "s" => "0",
);
if ($time >= 31556926) {
$value["y"] = floor($time / 31556926);
$time = ($time % 31556926);
}
if ($time >= 86400) {
$value["d"] = floor($time / 86400);
$time = ($time % 86400);
}
if ($time >= 3600) {
$value["h"] = floor($time / 3600);
$time = ($time % 3600);
}
if ($time >= 60) {
$value["m"] = floor($time / 60);
$time = ($time % 60);
}
$value["s"] = floor($time);
return (array) $value;
} else {
return (bool) FALSE;
}
}
function check_php($filename) {
if (!is_file($filename)) {
return false;
}
if (@eval('return true;?>' . file_get_contents($filename)) === true) {
return true;
}
return false;
}
function send_sms($p, $textsms, $flag, $type=1) {
global $conf;
// db_query("INSERT INTO `sms_log` SET `phone`='$p', `text`='$textsms'");
$phone = trim($p);
$phlen = strlen($phone);
if (substr($phone, 0, 1) == '+') {
$phone = substr($phone, 1);
} else {
if ($phlen == 10) {
$phone = '38' . $phone;
} elseif ($phlen == 11) {
$phone = '3' . $phone;
}
}
if (!preg_match("|^380\d{9}$|", $phone)) {
return false;
}
if ($conf['sms_service'] == '2') { //'usbmodem'
$str = "To: $phone\r\n";
if ($type == '0' or $type == '80') {
$str .= "Alphabet: ISO\r\n";
$text = iconv("windows-1251", "ISO-8859-1//TRANSLIT", $textsms);
} else {
$str .= "Alphabet: Unicode\r\n";
$text = iconv("windows-1251", "UCS-2BE", $textsms);
}
if ($type == '80' or $type == '81') {
$str .= "Flash: true\r\n";
}
$str .= "\r\n";
$str .= $text;
//echo $str;
$filename = "/var/spool/sms/outgoing/" . date("ymdHis") . $phone;
if (file_put_contents($filename, $str)) {
db_query("INSERT INTO `sms_log` SET `phone`='$phone', `text`='$text'");
return true;
}
return false;
} elseif ($conf['sms_service'] == '1') { //'SQL_turbosms.com.ua'
// $conf['sms']['service'] = 'SQL_turbosms.com.ua';
// $conf['sms']['host'] = '77.120.116.10';
// $conf['sms']['user'] = '';
// $conf['sms']['pass'] = '';
// $conf['sms']['base'] = '';
// $conf['sms']['table'] = '';
// $conf['sms']['sign'] = 'TaxiVsegda';
//отключились от основной базы
$text = iconv("utf-8", "windows-1251", $textsms);
db_query("INSERT INTO `sms_log` SET `phone`='$phone', `text`='$text'");
$text = $textsms;
mysqli_close($fp_db);
$db_sms = mysqli_connect($conf['sms_host'], $conf['sms_user'], $conf['sms_pass'], $conf['sms_base']);
if (mysqli_connect_errno()) {
echo 'не удалось подключиться к БД';
return false;
}
// mysqli_query($db_sms, "SET NAMES 'UTF-8'");
// if(mysqli_errno($db_sms) != 0){echo 'не удалось установить кодировку соединения БД'; return false;}
mysqli_query($db_sms, "SET NAMES utf8;");
mysqli_query($db_sms, "INSERT into {$conf['sms_table']} SET `number`='$phone', `sign`='{$conf['sms_sign']}', `message`='$text'");
if (mysqli_errno($db_sms) != 0) {
echo 'не удалось произвести INSERT БД';
return false;
}
//отключились от sms базы
mysqli_close($db_sms);
//и опять подключились к основной базе
db_connet();
return true;
} elseif ($conf['sms_service'] == '3') { //'smsclub.com.ua'
if (!file_exists(dirname(__FILE__) . '/smsclub.com.ua.class.php')) {
echo 'Не возможно подключить ' . dirname(__FILE__) . 'smsclub.com.ua.class.php';
return false;
}
require_once(dirname(__FILE__) . '/smsclub.com.ua.class.php');
$sms = new SMSclient($conf['sms_user'], $conf['sms_pass']);
// $text = iconv("utf-8", "windows-1251", $textsms);
$text = $textsms;
//транслит
if ($type == '0' or $type == '80') {
//$text = SMSclient::translit($text);
}
//flash
if ($type == '80' or $type == '81') {
$text = SMSclient::translit($text);
$id = $sms->sendSMS($conf['sms_sign'], $phone, $text, 0, '', 1);
} elseif ($type == '0') {
//$text = SMSclient::translit($text);
$id = $sms->sendSMS($conf['sms_sign'], $phone, $text); //обычное транслит
} else {
$id = $sms->sendSMS($conf['sms_sign'], $phone, $text); //обычное
}
if ($sms->hasErrors()) {
echo(var_dump($sms->getErrors()));
return false;
} else {
//var_dump($id);
$text = iconv("utf-8", "windows-1251", $text);
db_query("INSERT INTO `sms_log` SET `phone`='$phone', `text`='$text'");
return true;
}
} else {
echo 'Не выбран тип сервиса через который будет отправлена смс';
return false;
}
return false;
}
?>