/var/www/doncode.com.ua/www/models
Edit: /var/www/doncode.com.ua/www/models/class.api_model.php (32864B)
database->quote('%'.$ch.'%');
$sth = $this->database->prepare("SELECT `serverip`,`taxi_name` FROM `help` WHERE `$type` LIKE $char AND `deleted`='0' LIMIT ".LIMIT);
$sth->execute();
$data = $sth->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e){
return $e->getMessage();
}
}
public function getUserIdByClientKey($client_key){
try{
$sth = $this->database->prepare("SELECT duk.* FROM ".DB_PREFIX."users_keys duk
WHERE duk.key='".$client_key."'");
$sth->execute();
$data = $sth->fetchAll(PDO::FETCH_ASSOC);
if(!isset($data[0]))return 0;
return $data[0]['user_id'];
}catch(PDOException $e){
return $e->getMessage();
}
return 0;
}
public function getApiKey($id){
try{
$sth = $this->database->prepare("SELECT ak.* FROM ".DB_PREFIX."api_keys ak
WHERE ak.deleted='0' AND ak.active='1' AND ak.id=:id LIMIT 1 ");
$sth->execute(array(':id'=>$id));
$data = $sth->fetchAll(PDO::FETCH_ASSOC);
if(!isset($data[0]))return null;
return array($data[0]['user_id'],$data[0]['key'],$data[0]['detect']);
}catch(PDOException $e){
return $e->getMessage();
}
}
public function logKeyAccess($api_id,$method,$ip){
try{
$insertkeyid = $this->database->insert(DB_PREFIX.'api_keys_access',array(
'api_id' =>$api_id,
'method' =>$method,
'ip' =>$ip
));
return $insertkeyid;
}catch(PDOException $e){
return $e->getMessage();
}
}
public function addCallback($phone,$call_id=0,$chin=0,$chout=0,$user_id=0,$city_id=0,$from_gid=0,$to_gid=0){
try{
$insertkeyid = $this->database->insert(DB_PREFIX.'callback',array(
'phone' =>$phone,
'call_id' =>$call_id,
'chin' =>$chin,
'chout' =>$chout,
'user_id' =>$user_id,
'city_id' =>$city_id,
'from_gid' =>$from_gid,
'to_gid' =>$to_gid
));
return $insertkeyid;
}catch(PDOException $e){
return $e->getMessage();
}
}
public function add_account($user_id,$gid){
try{
$sth = $this->database->query("SELECT * FROM ".DB_PREFIX."drivers_accounts WHERE deleted='0' AND accepted='0' AND user_id='".$user_id."' AND gid='".$gid."'");
$insertkeyid = 0;
if($sth->rowCount()==0){
$insertkeyid = $this->database->insert(DB_PREFIX.'drivers_accounts',array(
'user_id' =>$user_id,
'gid' =>$gid
));
}
return $insertkeyid;
}catch(PDOException $e){
return $insertkeyid;
}
}
public function del_account($id){
try{
$insertkeyid = $this->database->update(DB_PREFIX.'drivers_accounts',array(
'deleted' =>'1'
),'id='.$id);
return $insertkeyid;
}catch(PDOException $e){
return 0;
}
}
public function activate_new_driver($gid,$user_id,$remote_car_id,$ch,$poz,$openpass){
try{
$insertkeyid = $this->database->update(DB_PREFIX.'drivers_accounts',array(
'ch' =>$ch,
'poz' =>$poz,
'openpass' =>$openpass,
'accepted' =>'1',
'remote_car_id' => $remote_car_id
),"gid=".$gid." AND user_id=".$user_id." AND deleted='0'");
return $insertkeyid;
}catch(PDOException $e){
return 0;
}
}
public function detect_city($la,$lo){
//select 6353 * 2 * ASIN ( SQRT (POWER(SIN((48.3003 - la)*pi()/180 / 2),2) + COS(48.3003 * pi()/180) * COS(la *pi()/180) * POWER(SIN((38.0247 - lo) *pi()/180 / 2), 2) ) ) as distance, city_name_ru from city_ where la>0 order by distance limit 1
//N48.3003, E38.0247
if(!$la>0||!$lo>0)return;
$sql = "SELECT c.*,co.country_name_ru,co.currency,r.region_name_ru,
6353 * 2 * ASIN ( SQRT (POWER(SIN((".$la." - la)*pi()/180 / 2),2) + COS(".$la." * pi()/180) * COS(la *pi()/180) * POWER(SIN((".$lo." - lo) *pi()/180 / 2), 2) ) )
as distance FROM city_ c
LEFT JOIN region_ r ON r.id_region=c.id_region
LEFT JOIN country_ co ON co.id_country=c.id_country
WHERE c.la>0 and c.lo>0 ORDER BY distance LIMIT 1";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
foreach($res as $k2 => $v2){
$g['city_id'] = $v2['id_city']*1;
$g['city_name'] = $v2['city_name_ru'];
$g['city_name_en'] = $v2['city_name_en'];
//$g['taxi_name'] = $v2['taxi_name'];
$g['country'] = $v2['country_name_ru'];
$g['region'] = $v2['region_name_ru'];
$g['currency'] = $v2['currency'];
$g['la'] = $v2['la'];
$g['lo'] = $v2['lo'];
$g['zoom'] = $v2['zoom']*1;
$g['distance'] = $v2['distance']*1;
}
return $g;
}else{
return null;
}
}
public function callback_by_city_id($city_id){
$sql = "SELECT `callback` FROM `city_` WHERE `id_city`='".$city_id."'";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res[0]['callback'];
}
return 0;
}
public function getDriverAccounts($user_id){
$sql = "SELECT d.host,d.mob_port,d.taxi_name,da.*,co.country_name_ru as country,c.city_name_ru as city
FROM `".DB_PREFIX."drivers_accounts` da
INNER JOIN `".DB_PREFIX."dcc` d ON d.gid=da.gid
INNER JOIN `city_` c ON c.id_city=d.city_id
INNER JOIN `country_` co ON co.id_country=c.id_country
WHERE da.`user_id`='".$user_id."' AND da.deleted='0' LIMIT 50";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res;
}
return null;
}
public function new_drivers_list($gid){
$sql = "SELECT da.user_id,da.remote_car_id,da.accepted,u.FIO,p.phone,uk.key
FROM `".DB_PREFIX."drivers_accounts` da
INNER JOIN `".DB_PREFIX."users` u ON u.id = da.user_id
INNER JOIN `".DB_PREFIX."users_keys` uk ON uk.user_id = da.user_id
INNER JOIN `".DB_PREFIX."phones` p ON u.id = p.user_id
WHERE da.`gid`='".$gid."' AND da.deleted='0' AND da.accepted='0'
GROUP BY da.id
LIMIT 100";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res;
}
return null;
}
public function get_countries(){
$sql = "SELECT co.id_country as id, co.country_name_ru as name
FROM `country_` co WHERE co.show='1'";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res;
}
return null;
}
public function get_regions($id_country){
$sql = "SELECT r.id_region as id, r.region_name_ru as name
FROM `region_` r
WHERE r.id_country='".$id_country."'";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res;
}
return null;
}
public function get_cities($id_region){
$sql = "SELECT r.id_city as id, r.city_name_ru as name
FROM `city_` r
WHERE r.id_region='".$id_region."'";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res;
}
return null;
}
public function get_colors(){
$sql = "SELECT cc.id, cc.name, cc.color
FROM `".DB_PREFIX."car_colors` cc WHERE cc.deleted='0'";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res;
}
return null;
}
public function get_marks(){
$sql = "SELECT cm.id, cm.mark as name
FROM `".DB_PREFIX."car_mark` cm WHERE cm.deleted='0'";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res;
}
return null;
}
public function get_models($mark_id){
$sql = "SELECT cm.id, cm.model as name
FROM `".DB_PREFIX."car_model` cm
WHERE cm.mark_id='".$mark_id."' AND cm.deleted='0'";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res;
}
return null;
}
public function get_servers_by_city($id_city){
$sql = "SELECT d.gid, d.taxi_name
FROM `".DB_PREFIX."dcc` d
WHERE d.city_id='".$id_city."' AND d.deleted='0'";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res;
}
return null;
}
public function register($login,$pass){
$sth = $this->database->prepare("SELECT * FROM `".DB_PREFIX."phones` WHERE `phone`='".$login."'");
$sth->execute();
$count = $sth->rowCount();
if ($count > 0) {
return null;
}
$fio = "";
$email = "";
$country = 0;
$region = 0;
$city = 0;
$json['events']['callon'] = 1;
$json['events']['smson'] = 1;
$json['events']['showphone'] = 1;
$json['events']['emailon'] = 1;
$json['events']['emailnews'] = 1;
$insertid = $this->database->insert(DB_PREFIX.'users',array(
'password' =>hash::create('sha256',$pass,HASH_STATIC),
'FIO' =>$fio,
'email' =>$email,
'ip' =>$_SERVER["REMOTE_ADDR"],
'datereg' =>date("Y-m-d H:i:s"),
'country_id' =>$country,
'region_id' =>$region,
'city_id' =>$city,
'lang' =>'ru',
'json' => json_encode($json)
));
if($insertid>0){
$insertphoneid = $this->database->insert(DB_PREFIX.'phones',array(
'user_id' =>$insertid,
'phone' =>$login
));
$insertroleid = $this->database->insert('user_role',array(
'user_id' =>$insertid,
'role_id' =>3
));
return $this->login($login,$pass);
}else{
return null;
}
}
public function login($login,$pass){
$sql = "SELECT p.phone,u.*,uk.key
FROM `".DB_PREFIX."phones` p
INNER JOIN `".DB_PREFIX."users` u ON u.id=p.user_id
INNER JOIN `".DB_PREFIX."users_keys` uk ON uk.user_id=p.user_id
WHERE p.`phone`='".$login."' AND u.password='".hash::create('sha256',$pass,HASH_STATIC)."' LIMIT 1";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res[0];
}
return null;
}
public function getDCC($gid){
$sql = "SELECT d.*,co.country_name_ru as country,c.city_name_ru as city FROM `".DB_PREFIX."dcc` d
INNER JOIN `city_` c ON c.id_city=d.city_id
INNER JOIN `country_` co ON co.id_country=c.id_country
WHERE d.`gid`='".$gid."'";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
return $res[0];
}
return null;
}
public function list_server($api_key_id){
if(!$api_key_id>0)return;
$sql = "SELECT `dcc_id` FROM `".DB_PREFIX."api_keys_servers` WHERE `api_key_id`='".$api_key_id."'";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
$id = $res[0]['dcc_id'];
if($id>0){
$sql = "SELECT c.`city_name_ru`, d.`city_id`, d.`gid`, d.`taxi_name`,d.`valuta`,d.`host`,d.`port`,d.`la`,d.`lo`,d.`zoom`,
d.key, e.json, e.id as ex_id, d.site, d.tile_server, co.prefix
FROM `".DB_PREFIX."dcc` d
LEFT OUTER JOIN city_ c ON c.`id_city`=d.`city_id`
LEFT OUTER JOIN country_ co ON co.`id_country`=c.`id_country`
LEFT OUTER JOIN ".DB_PREFIX."exchange e ON e.`dcc_id`=d.`id`
WHERE d.`id`='".$id."' LIMIT 1";
$sth = $this->database->prepare($sql);
$sth->execute();
$r = $sth->fetchAll(PDO::FETCH_ASSOC);
//var_export($r);
foreach($r as $k2 => $v2){
$g['city_id'] = $v2['city_id']*1;
$g['city_gid'] = $v2['gid']*1;
$g['city_name'] = $v2['city_name_ru'];
$g['taxi_name'] = $v2['taxi_name'];
$g['currency'] = $v2['valuta'];
$g['phone_prefix'] = $v2['prefix'];
$g['tile_server'] = $v2['tile_server'];
$g['la'] = $v2['la'];
$g['lo'] = $v2['lo'];
$g['zoom'] = $v2['zoom']*1;
$g['host'] = $v2['host'];
$g['port'] = $v2['port']*1;
$g['key'] = $v2['key'];//md5(HASH_STATIC_DCC.$v2['key']);
if($v2['ex_id']>0){
$sth = $this->database->prepare("SELECT * FROM `".DB_PREFIX."exchange_phones` WHERE deleted='0' AND exchange_id=".$v2['ex_id']." ORDER BY position");
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
$phones = array();
foreach($res as $p){
$phones[] = $p['phone'];
}
$j = json_decode($v2['json'],true);
$g['show_pr'] = isset($j['show_pr'])?$j['show_pr']*1:0;
$g['show_bn'] = isset($j['show_bn'])?$j['show_bn']*1:0;
$g['show_card'] = isset($j['show_card'])?$j['show_card']*1:0;
$g['show_cost'] = isset($j['show_cost'])?$j['show_cost']*1:0;
$g['show_phone_numbers'] = isset($j['show_phone_numbers'])?$j['show_phone_numbers']*1:0;
$g['show_phone_driver'] = isset($j['show_phone_driver'])?$j['show_phone_driver']*1:0;
$g['phone_codes'] = isset($j['phone_codes'])?$j['phone_codes']:array();
$g['phone_numbers'] = isset($j['phone_numbers'])?$j['phone_numbers']:array();
$g['logo'] = URL_SHORT.'/public/exchange_photo/'.$v2['ex_id'].'/logo.jpg?r='.time();
$g['web_site'] = isset($j['web_site'])&&($j['web_site']!='')?$j['web_site']:'doncode.com.ua';
$g['web_view'] = isset($j['web_view'])&&($j['web_view']!='')?$j['web_view']:'doncode.com.ua/login/parking_android_client';
$g['phone_numbers'] = $phones;
}else{
$g['show_pr'] = 0;
$g['show_bn'] = 0;
$g['show_card'] = 0;
$g['show_cost'] = 0;
$g['show_phone_numbers'] = 0;
$g['show_phone_driver'] = 0;
$g['phone_codes'] = array();
$g['phone_numbers'] = array();
$g['logo'] = URL_SHORT.'/public/exchange_photo/'.$v2['ex_id'].'/logo.jpg?r='.time();
$g['web_site'] = 'doncode.com.ua';
$g['web_view'] = 'doncode.com.ua/login/parking_android_client';
}
$a[] = $g;
}
//file_put_contents('/tmp/detect_city.log',date("Y-m-d H:i:s")." La: ".$la." Lo: ".$lo." Detected id: ".$id." Host: ".$g['city_host']);
return $a;
}
}
public function list_servers($api_key_id){
if(!$api_key_id>0)return;
$sql = "SELECT `dcc_id` FROM `".DB_PREFIX."api_keys_servers` WHERE `api_key_id`='".$api_key_id."'";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
// $id = $res[0]['dcc_id'];
if(is_array($res)){
$id = null;
foreach($res as $k => $v){
$id[] = $v['dcc_id'];
}
}
if(is_array($id)){
$sql = "SELECT c.`city_name_ru`, e.`city_id`, d.`gid`, e.`taxi_name`,d.`valuta`,d.`host`,d.`port`,d.`mob_port`,d.`la`,d.`lo`,d.`zoom`,
d.key, e.json, e.id as ex_id, d.site, d.tile_server, co.prefix
FROM `".DB_PREFIX."dcc` d
INNER JOIN ".DB_PREFIX."exchange e ON e.`dcc_id`=d.`id`
INNER JOIN city_ c ON c.`id_city`=e.`city_id`
INNER JOIN country_ co ON co.`id_country`=c.`id_country`
WHERE d.`id` IN (".implode(',',$id).") GROUP BY e.id";
//echo $sql;exit;
$sth = $this->database->prepare($sql);
$sth->execute();
$r = $sth->fetchAll(PDO::FETCH_ASSOC);
//var_export($r);
foreach($r as $k2 => $v2){
$g['city_id'] = $v2['city_id']*1;
$g['city_gid'] = $v2['gid']*1;
$g['city_name'] = $v2['city_name_ru'];
$g['taxi_name'] = $v2['taxi_name'];
$g['currency'] = $v2['valuta'];
$g['phone_prefix'] = $v2['prefix'];
$g['tile_server'] = $v2['tile_server'];
$g['la'] = $v2['la'];
$g['lo'] = $v2['lo'];
$g['zoom'] = $v2['zoom']*1;
$g['host'] = $v2['host'];
$g['port'] = $v2['port']*1;
$g['mob_port'] = $v2['mob_port']*1;
$g['key'] = $v2['key'];//md5(HASH_STATIC_DCC.$v2['key']);
if($v2['ex_id']>0){
$sth = $this->database->prepare("SELECT * FROM `".DB_PREFIX."exchange_phones` WHERE deleted='0' AND exchange_id=".$v2['ex_id']." ORDER BY position");
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
$phones = array();
foreach($res as $p){
$phones[] = $p['phone'];
}
$j = json_decode($v2['json'],true);
$g['show_pr'] = isset($j['show_pr'])?$j['show_pr']*1:0;
$g['show_bn'] = isset($j['show_bn'])?$j['show_bn']*1:0;
$g['show_card'] = isset($j['show_card'])?$j['show_card']*1:0;
$g['show_cost'] = isset($j['show_cost'])?$j['show_cost']*1:0;
$g['show_phone_numbers'] = isset($j['show_phone_numbers'])?$j['show_phone_numbers']*1:0;
$g['show_phone_driver'] = isset($j['show_phone_driver'])?$j['show_phone_driver']*1:0;
$g['phone_codes'] = isset($j['phone_codes'])?$j['phone_codes']:array();
$g['phone_numbers'] = isset($j['phone_numbers'])?$j['phone_numbers']:array();
$g['logo'] = URL_SHORT.'/public/exchange_photo/'.$v2['ex_id'].'/logo.jpg?r='.time();
$g['web_site'] = isset($j['web_site'])&&($j['web_site']!='')?$j['web_site']:'api.doncode.com.ua';
$g['web_view'] = isset($j['web_view'])&&($j['web_view']!='')?$j['web_view']:'api.doncode.com.ua/login/parking_android_client';
$g['phone_numbers'] = $phones;
}else{
$g['show_pr'] = 0;
$g['show_bn'] = 0;
$g['show_card'] = 0;
$g['show_cost'] = 0;
$g['show_phone_numbers'] = 0;
$g['show_phone_driver'] = 0;
$g['phone_codes'] = array();
$g['phone_numbers'] = array();
$g['logo'] = URL_SHORT.'/public/exchange_photo/'.$v2['ex_id'].'/logo.jpg?r='.time();
$g['web_site'] = 'api.doncode.com.ua';
$g['web_view'] = 'api.doncode.com.ua/login/parking_android_client';
}
$a[] = $g;
}
//file_put_contents('/tmp/detect_city.log',date("Y-m-d H:i:s")." La: ".$la." Lo: ".$lo." Detected id: ".$id." Host: ".$g['city_host']);
return $a;
}
}
public function detect_server($la,$lo){
if(!$la>0||!$lo>0)return;
$sql = "SELECT `id`,`la`,`lo` FROM `".DB_PREFIX."dcc` WHERE `deleted`='0' AND `la`>0 AND `lo`>0";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
$min_dist = DETECT_SERVER_RADIUS;
$id = 0;
foreach($res as $k => $v){
//echo '*';
$dist = round(bootstrap::distance($la,$lo,$v['la'],$v['lo'],"K")*1000);
if($dist<$min_dist){
$min_dist = $dist;
$id = $v['id'];
}
}
}
if($id>0){
$sql = "SELECT c.`city_name_ru`, d.`city_id`, d.`gid`, d.`taxi_name`,d.`valuta`,d.`host`,d.`port`,d.`la`,d.`lo`,d.`zoom`,
d.key, e.json, e.id as ex_id, d.site, d.tile_server, co.prefix
FROM `".DB_PREFIX."dcc` d
LEFT OUTER JOIN city_ c ON c.`id_city`=d.`city_id`
LEFT OUTER JOIN country_ co ON co.`id_country`=c.`id_country`
LEFT OUTER JOIN ".DB_PREFIX."exchange e ON e.`dcc_id`=d.`id`
WHERE d.`id`='".$id."' LIMIT 1";
$sth = $this->database->prepare($sql);
$sth->execute();
$r = $sth->fetchAll(PDO::FETCH_ASSOC);
//var_export($r);
foreach($r as $k2 => $v2){
$g['city_id'] = $v2['city_id']*1;
$g['city_gid'] = $v2['gid']*1;
$g['city_name'] = $v2['city_name_ru'];
$g['taxi_name'] = $v2['taxi_name'];
$g['currency'] = $v2['valuta'];
$g['phone_prefix'] = $v2['prefix'];
$g['tile_server'] = $v2['tile_server'];
$g['la'] = $v2['la'];
$g['lo'] = $v2['lo'];
$g['zoom'] = $v2['zoom']*1;
$g['host'] = $v2['host'];
$g['port'] = $v2['port']*1;
$g['key'] = $v2['key'];//md5(HASH_STATIC_DCC.$v2['key']);
if($v2['ex_id']>0){
$sth = $this->database->prepare("SELECT * FROM `".DB_PREFIX."exchange_phones` WHERE deleted='0' AND exchange_id=".$v2['ex_id']." ORDER BY position");
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
$phones = array();
foreach($res as $p){
$phones[] = $p['phone'];
}
$j = json_decode($v2['json'],true);
$g['show_pr'] = isset($j['show_pr'])?$j['show_pr']*1:0;
$g['show_bn'] = isset($j['show_bn'])?$j['show_bn']*1:0;
$g['show_card'] = isset($j['show_card'])?$j['show_card']*1:0;
$g['show_cost'] = isset($j['show_cost'])?$j['show_cost']*1:0;
$g['show_phone_numbers'] = isset($j['show_phone_numbers'])?$j['show_phone_numbers']*1:0;
$g['show_phone_driver'] = isset($j['show_phone_driver'])?$j['show_phone_driver']*1:0;
$g['phone_codes'] = isset($j['phone_codes'])?$j['phone_codes']:array();
$g['phone_numbers'] = isset($j['phone_numbers'])?$j['phone_numbers']:array();
$g['logo'] = URL_SHORT.'/public/exchange_photo/'.$v2['ex_id'].'/logo.jpg?r='.time();
$g['web_site'] = isset($j['web_site'])&&($j['web_site']!='')?$j['web_site']:'doncode.com.ua';
$g['web_view'] = isset($j['web_view'])&&($j['web_view']!='')?$j['web_view']:'doncode.com.ua/login/parking_android_client';
$g['phone_numbers'] = $phones;
}else{
$g['show_pr'] = 0;
$g['show_bn'] = 0;
$g['show_card'] = 0;
$g['show_cost'] = 0;
$g['show_phone_numbers'] = 0;
$g['show_phone_driver'] = 0;
$g['phone_codes'] = array();
$g['phone_numbers'] = array();
$g['logo'] = URL_SHORT.'/public/exchange_photo/'.$v2['ex_id'].'/logo.jpg?r='.time();
$g['web_site'] = 'doncode.com.ua';
$g['web_view'] = 'doncode.com.ua/login/parking_android_client';
}
$a[] = $g;
}
//file_put_contents('/tmp/detect_city.log',date("Y-m-d H:i:s")." La: ".$la." Lo: ".$lo." Detected id: ".$id." Host: ".$g['city_host']);
return $a;
}
}
public function detect_servers($la,$lo){
if(!$la>0||!$lo>0)return;
$sql = "SELECT `id`,`la`,`lo` FROM `".DB_PREFIX."dcc` WHERE `deleted`='0' AND `la`>0 AND `lo`>0";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if(is_array($res)){
$min_dist = DETECT_SERVER_RADIUS;
$id = null;
foreach($res as $k => $v){
//echo '*';
$dist = round(bootstrap::distance($la,$lo,$v['la'],$v['lo'],"K")*1000);
if($dist<$min_dist){
$min_dist = $dist;
$id[] = $v['id'];
}
}
}
if(is_array($id)){
$sql = "SELECT c.`city_name_ru`, d.`city_id`, d.`gid`, d.`taxi_name`,d.`valuta`,d.`host`,d.`port`,d.`mob_port`,d.`la`,d.`lo`,d.`zoom`,
d.key, e.json, e.id as ex_id, d.site, d.tile_server, co.prefix
FROM `".DB_PREFIX."dcc` d
LEFT OUTER JOIN city_ c ON c.`id_city`=d.`city_id`
LEFT OUTER JOIN country_ co ON co.`id_country`=c.`id_country`
LEFT OUTER JOIN ".DB_PREFIX."exchange e ON e.`dcc_id`=d.`id`
WHERE d.`id` IN ('".implode(',',$id)."') GROUP BY d.id";
$sth = $this->database->prepare($sql);
$sth->execute();
$r = $sth->fetchAll(PDO::FETCH_ASSOC);
//var_export($r);
foreach($r as $k2 => $v2){
$g['city_id'] = $v2['city_id']*1;
$g['city_gid'] = $v2['gid']*1;
$g['city_name'] = $v2['city_name_ru'];
$g['taxi_name'] = $v2['taxi_name'];
$g['currency'] = $v2['valuta'];
$g['phone_prefix'] = $v2['prefix'];
$g['tile_server'] = $v2['tile_server'];
$g['la'] = $v2['la'];
$g['lo'] = $v2['lo'];
$g['zoom'] = $v2['zoom']*1;
$g['host'] = $v2['host'];
$g['port'] = $v2['port']*1;
$g['mob_port'] = $v2['mob_port']*1;
$g['key'] = $v2['key'];//md5(HASH_STATIC_DCC.$v2['key']);
if($v2['ex_id']>0){
$sth = $this->database->prepare("SELECT * FROM `".DB_PREFIX."exchange_phones` WHERE deleted='0' AND exchange_id=".$v2['ex_id']." ORDER BY position");
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
$phones = array();
foreach($res as $p){
$phones[] = $p['phone'];
}
$j = json_decode($v2['json'],true);
$g['show_pr'] = isset($j['show_pr'])?$j['show_pr']*1:0;
$g['show_bn'] = isset($j['show_bn'])?$j['show_bn']*1:0;
$g['show_card'] = isset($j['show_card'])?$j['show_card']*1:0;
$g['show_cost'] = isset($j['show_cost'])?$j['show_cost']*1:0;
$g['show_phone_numbers'] = isset($j['show_phone_numbers'])?$j['show_phone_numbers']*1:0;
$g['show_phone_driver'] = isset($j['show_phone_driver'])?$j['show_phone_driver']*1:0;
$g['phone_codes'] = isset($j['phone_codes'])?$j['phone_codes']:array();
$g['phone_numbers'] = isset($j['phone_numbers'])?$j['phone_numbers']:array();
$g['logo'] = URL_SHORT.'/public/exchange_photo/'.$v2['ex_id'].'/logo.jpg?r='.time();
$g['web_site'] = isset($j['web_site'])&&($j['web_site']!='')?$j['web_site']:'api.doncode.com.ua';
$g['web_view'] = isset($j['web_view'])&&($j['web_view']!='')?$j['web_view']:'api.doncode.com.ua/login/parking_android_client';
$g['phone_numbers'] = $phones;
}else{
$g['show_pr'] = 0;
$g['show_bn'] = 0;
$g['show_card'] = 0;
$g['show_cost'] = 0;
$g['show_phone_numbers'] = 0;
$g['show_phone_driver'] = 0;
$g['phone_codes'] = array();
$g['phone_numbers'] = array();
$g['logo'] = URL_SHORT.'/public/exchange_photo/'.$v2['ex_id'].'/logo.jpg?r='.time();
$g['web_site'] = 'api.doncode.com.ua';
$g['web_view'] = 'api.doncode.com.ua/login/parking_android_client';
}
$a[] = $g;
}
//file_put_contents('/tmp/detect_city.log',date("Y-m-d H:i:s")." La: ".$la." Lo: ".$lo." Detected id: ".$id." Host: ".$g['city_host']);
return $a;
}
}
public function detect_server_by_driver_code($code){
$sql = "SELECT c.`city_name_ru`, d.`city_id`, d.`gid`, d.`taxi_name`,d.`valuta`,d.`host`,d.`port`,d.`mob_port`,
d.`la`,d.`lo`,d.`zoom`,
d.key, e.json, e.id as ex_id, d.site, d.tile_server, co.prefix, dk.driver_client_key
FROM `".DB_PREFIX."dcc` d
LEFT OUTER JOIN city_ c ON c.`id_city`=d.`city_id`
LEFT OUTER JOIN country_ co ON co.`id_country`=c.`id_country`
LEFT OUTER JOIN ".DB_PREFIX."exchange e ON e.`dcc_id`=d.`id`
LEFT OUTER JOIN ".DB_PREFIX."drivers_keys dk ON dk.`dcc_id`=d.`id`
WHERE dk.`key_code`='".$code."' LIMIT 1";
$sth = $this->database->prepare($sql);
$sth->execute();
$r = $sth->fetchAll(PDO::FETCH_ASSOC);
foreach($r as $k2 => $v2){
$g['city_id'] = $v2['city_id']*1;
$g['city_gid'] = $v2['gid']*1;
$g['city_name'] = $v2['city_name_ru'];
$g['taxi_name'] = $v2['taxi_name'];
$g['currency'] = $v2['valuta'];
$g['phone_prefix'] = $v2['prefix'];
$g['tile_server'] = $v2['tile_server'];
$g['la'] = $v2['la'];
$g['lo'] = $v2['lo'];
$g['zoom'] = $v2['zoom']*1;
$g['host'] = $v2['host'];
$g['port'] = $v2['port']*1;
$g['mob_port'] = $v2['mob_port']*1;
$g['driver_client_key'] = $v2['driver_client_key'];
$g['key'] = $v2['key'];//md5(HASH_STATIC_DCC.$v2['key']);
if($v2['ex_id']>0){
$sth = $this->database->prepare("SELECT * FROM `".DB_PREFIX."exchange_phones` WHERE deleted='0' AND exchange_id=".$v2['ex_id']." ORDER BY position");
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
$phones = array();
foreach($res as $p){
$phones[] = $p['phone'];
}
$j = json_decode($v2['json'],true);
$g['show_pr'] = isset($j['show_pr'])?$j['show_pr']*1:0;
$g['show_bn'] = isset($j['show_bn'])?$j['show_bn']*1:0;
$g['show_card'] = isset($j['show_card'])?$j['show_card']*1:0;
$g['show_cost'] = isset($j['show_cost'])?$j['show_cost']*1:0;
$g['show_phone_numbers'] = isset($j['show_phone_numbers'])?$j['show_phone_numbers']*1:0;
$g['show_phone_driver'] = isset($j['show_phone_driver'])?$j['show_phone_driver']*1:0;
$g['phone_codes'] = isset($j['phone_codes'])?$j['phone_codes']:array();
$g['phone_numbers'] = isset($j['phone_numbers'])?$j['phone_numbers']:array();
$g['logo'] = URL_SHORT.'/public/exchange_photo/'.$v2['ex_id'].'/logo.jpg?r='.time();
$g['web_site'] = isset($j['web_site'])&&($j['web_site']!='')?$j['web_site']:'doncode.com.ua';
$g['web_view'] = isset($j['web_view'])&&($j['web_view']!='')?$j['web_view']:'doncode.com.ua/login/parking_android_client';
$g['phone_numbers'] = $phones;
}else{
$g['show_pr'] = 0;
$g['show_bn'] = 0;
$g['show_card'] = 0;
$g['show_cost'] = 0;
$g['show_phone_numbers'] = 0;
$g['show_phone_driver'] = 0;
$g['phone_codes'] = array();
$g['phone_numbers'] = array();
$g['logo'] = URL_SHORT.'/public/exchange_photo/'.$v2['ex_id'].'/logo.jpg?r='.time();
$g['web_site'] = 'doncode.com.ua';
$g['web_view'] = 'doncode.com.ua/login/parking_android_client';
}
$a[] = $g;
}
return $a;
}
public function get_driver_code($driver_client_key){
$sql = "SELECT `key_code` FROM `".DB_PREFIX."drivers_keys` WHERE `driver_client_key`='$driver_client_key' LIMIT 1";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
return $res;
}
public function create_driver_code($driver_client_key, $system_client_key){
$result = 0;
$code = 0;
// create code
while($code == 0){
$tmp_code = '';
for($i = 0; $i < 9; $i++){
if($i == 1)
$tmp_code .= rand(1,9);
else
$tmp_code .= rand(0,9);
}
// check code
$sql = "SELECT `id` FROM `".DB_PREFIX."drivers_keys` WHERE `key_code`='$code' LIMIT 1";
$sth = $this->database->prepare($sql);
$sth->execute();
if($sth->rowCount()==0){
$code = $tmp_code;
}
}
// find row
$sql = "SELECT `id` FROM `".DB_PREFIX."drivers_keys` WHERE `driver_client_key`='$driver_client_key' LIMIT 1";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if($res[0]['id'] > 0){
// update
$id = $this->database->update(DB_PREFIX.'drivers_keys',array(
'key_code'=>$code
),'id='.$res[0]['id']);
if($id > 0){
$result = $code;
}else{
$result = -1;
}
}else{
// find dcc_id
$sql = "SELECT `id` FROM `".DB_PREFIX."dcc` WHERE `key`='$system_client_key' LIMIT 1";
$sth = $this->database->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if($res[0]['id'] > 0){
//insert
$id = $this->database->insert(DB_PREFIX.'drivers_keys',array(
'dcc_id' =>$res[0]['id'],
'key_code' =>$code,
'driver_client_key' =>$driver_client_key
));
if($id > 0){
$result = $code;
}else{
$result = -2;
}
}
}
return $result;
}
}