/var/www/doncode.com.ua/www/models
NameSizeModeActions
class.admin_model.php377020644editdlrm
class.api_model.php328640644editdlrm
class.archive_model.php29750644editdlrm
class.arm_model.php93930644editdlrm
class.dcccatalog_model.php98710644editdlrm
class.dcclist_model.php108290644editdlrm
class.dccsupport_model.php4710644editdlrm
class.dccupdate_model.php4700644editdlrm
class.dmp_platforms_model.php79590644editdlrm
class.docs_model.php11280644editdlrm
class.doncode_users_model.php67120644editdlrm
class.driver_model.php3690644editdlrm
class.exchange_model.php82660644editdlrm
class.files_model.php1940644editdlrm
class.index_model.php11290644editdlrm
class.login_model.php250140644editdlrm
class.mobile_users_model.php100090644editdlrm
class.news_model.php77210644editdlrm
class.orders_model.php97820644editdlrm
class.settings_model.php117990644editdlrm
class.support_model.php287830644editdlrm
class.users_model.php91540644editdlrm
class.user_model.php448730644editdlrm
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; } }