-
-
Save anonymous/52cfe60de2baff5aa2aa803f9c59683c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
date_default_timezone_set('America/Los_Angeles'); | |
class General { | |
public function start_perms() { | |
return json_encode(array( | |
"citations"=>true, | |
"active_incidents"=>true, | |
"active_units"=>true, | |
"civilian_database"=>true, | |
"vehicle_database"=>true, | |
"incident_reports"=>true, | |
"garage_manager"=>true | |
)); | |
} | |
public function gen_uuid() { | |
return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', | |
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), | |
mt_rand( 0, 0xffff ), | |
mt_rand( 0, 0x0fff ) | 0x4000, | |
mt_rand( 0, 0x3fff ) | 0x8000, | |
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) | |
); | |
} | |
public function gen_rand_password($len = 6) { | |
return substr(md5(rand()),0,$len); | |
} | |
public function valid_uuid_format($uuid) { | |
if(preg_match("/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i",$uuid)) | |
return TRUE; | |
return FALSE; | |
} | |
public function hash_password($password) { | |
return sha1($password.md5(sha1(md5($password))).$password); | |
} | |
public function validate_sl_username($username) { | |
$d = $this->get_http_request("http://w-hat.com/name2key/".$username); | |
if($d == "00000000-0000-0000-0000-000000000000") | |
return FALSE; | |
else if($d == "Invalid name") | |
return FALSE; | |
return TRUE; | |
} | |
public function sl_name2key($username) { | |
return "".$this->get_http_request("http://w-hat.com/name2key/".$username); | |
} | |
public function pretty_name($username) { | |
$username = str_replace("."," ",$username); | |
if(str_word_count($username) == 1) | |
$username = $username .= " resident"; | |
$username = ucwords($username); | |
return $username; | |
} | |
private function get_http_request($url) { | |
$ch = curl_init(); | |
curl_setopt_array($ch,array( | |
CURLOPT_RETURNTRANSFER=>TRUE, | |
CURLOPT_TIMEOUT=>30, | |
CURLOPT_URL=>$url, | |
CURLOPT_USERAGENT=>"Aileron Server" | |
)); | |
$data = curl_exec($ch); | |
curl_close($ch); | |
return $data; | |
} | |
public function post_http_request($url,$body) { | |
$ch = curl_init(); | |
curl_setopt_array($ch,array( | |
CURLOPT_URL=>$url, | |
CURLOPT_HTTPHEADER=>array('Content-Type: application/x-www-form-urlencoded'), | |
CURLOPT_POST=>TRUE, | |
CURLOPT_POSTFIELDS, parse_str($body), | |
CURLOPT_RETURNTRANSFER=>TRUE, | |
)); | |
$data = curl_exec($ch); | |
curl_close($ch); | |
return $data; | |
} | |
public function pdo_sql_debug($sql,$placeholders) { | |
foreach($placeholders as $k => $v) | |
$sql = preg_replace('/:'.$k.'/',"'".$v."'",$sql); | |
return $sql; | |
} | |
public function validate_age($birthday, $age = 18) { | |
if(is_string($birthday)) | |
$birthday = strtotime($birthday); | |
if(time() - $birthday < $age * 31536000) | |
return false; | |
return true; | |
} | |
public function ValidateDOB($dob, $return_data = FALSE) { | |
$pattern = '#^(?<day>(0[1-9])|([1-2][0-9])|(3[0-1]))/(?<month>(0[1-9])|(1[0-2]))/(?<year>[1-2][0-9][0-9][0-9])$#'; | |
if (1 === preg_match($pattern, $dob, $matches)) { | |
if($return_data) | |
return array("day"=>$matches['day'],"month"=>$matches['month'],"year"=>$matches['year']); | |
return true; | |
} | |
return false; | |
} | |
} | |
class Management { | |
protected $pdo; | |
public function __construct() { | |
$this->pdo = new PDO(DB_URL, DB_USER, DB_PASS); | |
} | |
public function create_user($network, $user_name, $user_uuid, $admin = FALSE) { | |
$g = new General; | |
$password = $g->gen_rand_password(); | |
$query = $this->pdo->prepare("INSERT INTO network_users (network_id, user_name, user_uuid, password, admin, permissions) VALUES(:network_id, :user_name, :user_uuid, :password, :admin, :permissions)"); | |
$query->bindValue(":network_id",$network,PDO::PARAM_INT); | |
$query->bindValue(":user_name", $user_name,PDO::PARAM_STR); | |
$query->bindValue(":user_uuid",$user_uuid,PDO::PARAM_STR); | |
$query->bindValue(":password",$g->hash_password($password),PDO::PARAM_STR); | |
$query->bindValue(":admin",$admin,PDO::PARAM_BOOL); | |
$query->bindValue(":permissions",$this->get_default_permissions($network),PDO::PARAM_STR); | |
$query->execute(); | |
$this->write_to_logs($network,"User Created - (".$user_name." [".$user_uuid."])"); | |
return array("row"=>$this->pdo->lastInsertId(),"password"=>$password); | |
} | |
public function network_valid($network_id) { | |
$query = $this->pdo->prepare("SELECT network_id FROM network WHERE network_id=:network_id"); | |
$query->bindValue(":network_id",$network_id,PDO::PARAM_INT); | |
$query->execute(); | |
if($query->rowCount() == 1) | |
return TRUE; | |
return FALSE; | |
} | |
public function network_name_to_id($network_name) { | |
$query = $this->pdo->prepare("SELECT network_id FROM network WHERE network_name=:network_name"); | |
$query->bindValue(":network_name",$network_name,PDO::PARAM_STR); | |
$query->execute(); | |
$row = $query->fetch(PDO::FETCH_ASSOC); | |
return $row['network_id']; | |
} | |
public function server_uuid($network_id) { | |
$query = $this->pdo->prepare("SELECT server_uuid FROM network WHERE network_id=:network_id"); | |
$query->bindValue(":network_id",$network_id,PDO::PARAM_INT); | |
$query->execute(); | |
$row = $query->fetch(PDO::FETCH_ASSOC); | |
return $row['server_uuid']; | |
} | |
public function user_exists($network_id, $user_uuid) { | |
$query = $this->pdo->prepare("SELECT user_id FROM network_users WHERE network_id=:network_id AND user_uuid=:user_uuid"); | |
$query->bindValue(":network_id",$network_id,PDO::PARAM_INT); | |
$query->bindValue(":user_uuid",$user_uuid,PDO::PARAM_STR); | |
$query->execute(); | |
if($query->rowCount() == 1) { | |
$row = $query->fetch(PDO::FETCH_ASSOC); | |
return $row['user_id']; | |
} | |
return FALSE; | |
} | |
public function is_admin($network_id, $user_id) { | |
$query = $this->pdo->prepare("SELECT * FROM network_users WHERE network_id=:network_id AND user_id=:user_id"); | |
$query->bindValue(":network_id",$network_id,PDO::PARAM_INT); | |
$query->bindValue(":user_id",$user_id,PDO::PARAM_INT); | |
$query->execute(); | |
$row = $query->fetch(PDO::FETCH_ASSOC); | |
if($row['admin'] == 1) | |
return TRUE; | |
return FALSE; | |
} | |
public function update_password($network_id, $user_id, $password) { | |
$g = new General; | |
$query = $this->pdo->prepare("UPDATE network_users SET password=:password WHERE network_id=:network_id AND user_id=:user_id"); | |
$query->bindValue(":password",$g->hash_password($password),PDO::PARAM_STR); | |
$query->bindValue(":network_id",$network_id,PDO::PARAM_INT); | |
$query->bindValue(":user_id",$user_id,PDO::PARAM_INT); | |
$query->execute(); | |
} | |
public function delete_user($network_id, $user_id) { | |
$query = $this->pdo->prepare("DELETE FROM network_users WHERE network_id=:network_id AND user_id=:user_id"); | |
$query->bindValue(":network_id",$network_id,PDO::PARAM_INT); | |
$query->bindValue(":user_id",$user_id,PDO::PARAM_INT); | |
$query->execute(); | |
} | |
public function user_info($user_id,$JSON = FALSE) { | |
$query = $this->pdo->prepare("SELECT * FROM network_users WHERE user_id=:user_id"); | |
$query->bindValue(":user_id",$user_id,PDO::PARAM_INT); | |
$query->execute(); | |
$result = $query->fetch(PDO::FETCH_ASSOC); | |
if($JSON) | |
return json_encode($result); | |
return $result; | |
} | |
public function change_user_role($user_id, $user_role) { | |
$query = $this->pdo->prepare("UPDATE network_users SET user_role=:user_role WHERE user_id=:user_id"); | |
$query->bindValue(":user_id",$user_id,PDO::PARAM_INT); | |
$query->bindValue(":user_role",$user_role,PDO::PARAM_STR); | |
$query->execute(); | |
} | |
public function get_user_perms($user_id, $json = FALSE) { | |
$query = $this->pdo->prepare("SELECT permissions FROM network_users WHERE user_id=:user_id"); | |
$query->bindValue(":user_id",$user_id,PDO::PARAM_INT); | |
$query->execute(); | |
$result = $query->fetch(PDO::FETCH_ASSOC); | |
if($json) | |
return $result['permissions']; | |
return json_decode($result['permissions'],true); | |
} | |
public function update_user_perms($user_id, $key, $value) { | |
$json = $this->get_user_perms($user_id); | |
if($value == 0 || $value == false) $json = array_replace($json, array($key => false)); | |
else $json = array_replace($json, array($key => $value)); | |
$query = $this->pdo->prepare("UPDATE network_users SET permissions=:permissions WHERE user_id=:user_id"); | |
$query->bindValue(":user_id",$user_id,PDO::PARAM_INT); | |
$query->bindValue(":permissions",json_encode($json),PDO::PARAM_STR); | |
$query->execute(); | |
} | |
public function update_user_perms_bulk($user_id, $json) { | |
$query = $this->pdo->prepare("UPDATE network_users SET permissions=:permissions WHERE user_id=:user_id"); | |
$query->bindValue(":user_id",$user_id,PDO::PARAM_INT); | |
$query->bindValue(":permissions",$json,PDO::PARAM_STR); | |
$query->execute(); | |
} | |
public function get_default_permissions($network) { | |
$query = $this->pdo->prepare("SELECT * FROM network WHERE network_id=:network_id"); | |
$query->bindValue(":network_id",$network,PDO::PARAM_INT); | |
$query->execute(); | |
$result = $query->fetch(PDO::FETCH_ASSOC); | |
return $result['default_permissions']; | |
} | |
public function edit_info($user_id, $role, $is_admin) { | |
$query = $this->pdo->prepare("UPDATE network_users SET user_role=:role, admin=:admin WHERE user_id=:user_id"); | |
$query->bindValue(":role",$role,PDO::PARAM_STR); | |
$query->bindValue(":admin",$is_admin,PDO::PARAM_INT); | |
$query->bindValue(":user_id",$user_id,PDO::PARAM_INT); | |
$query->execute(); | |
} | |
public function require_relog($user_id) { | |
$query = $this->pdo->prepare("SELECT * FROM network_users WHERE user_id=:user_id"); | |
$query->bindValue(":user_id",$user_id,PDO::PARAM_INT); | |
$query->execute(); | |
$row = $query->fetch(PDO::FETCH_ASSOC); | |
return ($row['relog'] == 1 ? true : false); | |
} | |
public function write_to_logs($network, $data) { | |
if($this->network_valid($network)) { | |
/*$fh = fopen($_SERVER['DOCUMENT_ROOT']."/beta/logs/network-".$network.".txt","a+"); | |
fwrite($fh,"[".date("m/d/Y h:i:s a")."]: ".$data."\n"); | |
fclose($fh);*/ | |
} | |
} | |
public function create_log($network) { | |
/*echo $_SERVER['DOCUMENT_ROOT']."/beta/logs/network-".$network.".txt"; | |
$fh = fopen($_SERVER['DOCUMENT_ROOT']."/beta/logs/network-".$network.".txt","w"); | |
fwrite($fh," "); | |
fclose($fh);*/ | |
} | |
public function get_incident_info($event_id) { | |
$query = $this->pdo->prepare("SELECT * FROM incidents WHERE event_id=:event_id"); | |
$query->bindValue(":event_id",$event_id,PDO::PARAM_INT); | |
$query->execute(); | |
$row = $query->fetch(PDO::FETCH_ASSOC); | |
return $row; | |
} | |
public function get_incident_id($event_number) { | |
$query = $this->pdo->prepare("SELECT event_id FROM incidents WHERE event_number=:event_number"); | |
$query->bindValue(":event_number",$event_number,PDO::PARAM_INT); | |
$query->execute(); | |
$row = $query->fetch(PDO::FETCH_ASSOC); | |
return $row['event_id']; | |
} | |
public function update_incident($network_id, $event_id, $data_array) { | |
$query = $this->pdo->prepare("UPDATE incidents SET call_type=:call_type, priority=:priority, status=:status, location=:location, description=:description WHERE event_id=:event_id"); | |
$query->bindValue(":event_id",$event_id,PDO::PARAM_INT); | |
$query->bindValue(":call_type",$data_array['call_type'],PDO::PARAM_STR); | |
$query->bindValue(":priority",$data_array['priority'],PDO::PARAM_INT); | |
$query->bindValue(":status",$data_array['status'],PDO::PARAM_INT); | |
$query->bindValue(":location",$data_array['location'],PDO::PARAM_STR); | |
$query->bindValue(":description",$data_array['description'],PDO::PARAM_STR); | |
$query->execute(); | |
} | |
public function delete_incident($event_id) { | |
$query = $this->pdo->prepare("DELETE FROM incidents WHERE event_id=:event_id"); | |
$query->bindValue(":event_id",$event_id,PDO::PARAM_INT); | |
$query->execute(); | |
} | |
public function create_incident($network_id, $data) { | |
$query = $this->pdo->prepare("INSERT INTO incidents (network_id,event_number,status,priority,call_type,location,time_out,description) VALUES (:network_id,:event_number,:status,:priority,:call_type,:location,:timeout,:description)"); | |
$query->bindValue(":network_id",$network_id,PDO::PARAM_INT); | |
$query->bindValue(":event_number",mt_rand(10000,99999),PDO::PARAM_INT); | |
$query->bindValue(":status",1,PDO::PARAM_INT); | |
$query->bindValue(":priority",$data['priority'],PDO::PARAM_INT); | |
$query->bindValue(":call_type",$data['call_type'],PDO::PARAM_STR); | |
$query->bindValue(":location",$data['location'],PDO::PARAM_STR); | |
$query->bindValue(":timeout",$data['timeout'],PDO::PARAM_STR); | |
$query->bindValue(":description",$data['description'],PDO::PARAM_STR); | |
$query->execute(); | |
return array("row_id"=>$this->pdo->lastInsertId()); | |
} | |
public function get_network_settings($network_id) { | |
$query = $this->pdo->prepare("SELECT * FROM network_settings WHERE network_id=:network_id"); | |
$query->bindValue(":network_id",$network_id,PDO::PARAM_INT); | |
$query->execute(); | |
$row = $query->fetch(PDO::FETCH_ASSOC); | |
return $row; | |
} | |
public function get_unit_info($unit_id) { | |
$query = $this->pdo->prepare("SELECT * FROM active_units WHERE unit_id=:unit_id"); | |
$query->bindValue(":unit_id",$unit_id,PDO::PARAM_INT); | |
$query->execute(); | |
return $query->fetch(PDO::FETCH_ASSOC); | |
} | |
public function get_delivery_contents($network_id) { | |
$query = $this->pdo->prepare("SELECT * FROM network_delivery_server WHERE network_id=:network_id"); | |
$query->bindValue(":network_id",$_SESSION['network_id'],PDO::PARAM_INT); | |
$query->execute(); | |
while($row = $query->fetch(PDO::FETCH_ASSOC)) | |
$contents .= $row['contents'].","; | |
$contents = substr($contents,0,strlen($contents)-1); | |
$contents_list = explode(",",$contents); | |
return array_filter(array_unique($contents_list)); | |
} | |
public function get_annoucement() { | |
$query = $this->pdo->prepare("SELECT * FROM annoucements ORDER BY annoucement_id DESC LIMIT 1"); | |
$query->execute(); | |
$row = $query->fetch(PDO::FETCH_ASSOC); | |
return $row; | |
} | |
public function get_civilian_data($user_id) { | |
$query = $this->pdo->prepare("SELECT * FROM civilians WHERE civilian_id=:civilian_id"); | |
$query->bindValue(":civilian_id",$user_id,PDO::PARAM_INT); | |
$query->execute(); | |
$row = $query->fetch(PDO::FETCH_ASSOC); | |
return $row; | |
} | |
public function get_license_data($license_id) { | |
$query = $this->pdo->prepare("SELECT * FROM license_cards WHERE card_id=:card_id"); | |
$query->bindValue(":card_id",$license_id,PDO::PARAM_INT); | |
$query->execute(); | |
return $query->fetch(PDO::FETCH_ASSOC); | |
} | |
public function get_license_card_data_by_type($license_type) { | |
$query = $this->pdo->prepare("SELECT * FROM license_cards WHERE card_type=:card_type"); | |
$query->bindValue(":card_type",$license_type,PDO::PARAM_STR); | |
$query->execute(); | |
return $query->fetch(PDO::FETCH_ASSOC); | |
} | |
public function get_city_settings($network_id) { | |
$network_settings = $this->get_network_settings($network_id); | |
return json_decode($network_settings['city_settings'],TRUE); | |
} | |
public function get_license_data_by_type($network_id, $license_type) { | |
$query = $this->pdo->prepare("SELECT * FROM licenses WHERE license_type=:license_type AND network_id=:network_id"); | |
$query->bindValue(":network_id",$network_id,PDO::PARAM_INT); | |
$query->bindValue(":license_type",$license_type,PDO::PARAM_STR); | |
$query->execute(); | |
return $query->fetch(PDO::FETCH_ASSOC); | |
} | |
public function verify_access_key($access_key) { | |
$query = $this->pdo->prepare("SELECT * FROM garage_manager WHERE access_key=:access_key"); | |
$query->bindValue(":access_key",$access_key,PDO::PARAM_STR); | |
$query->execute(); | |
if($query->rowCount() == 1) | |
return TRUE; | |
return FALSE; | |
} | |
public function get_network_owner_key($network_id) { | |
if($this->network_valid($network_id)) { | |
$query = $this->pdo->prepare("SELECT * FROM network WHERE network_id=:network_id"); | |
$query->bindValue(":network_id",$network_id,PDO::PARAM_INT); | |
$query->execute(); | |
$row = $query->fetch(PDO::FETCH_ASSOC); | |
return $row['owner_uuid']; | |
} | |
} | |
public function get_network_modules($network_id) { | |
$modules = array(); | |
$owner = $this->get_network_owner_key($network_id); | |
$query = $this->pdo->prepare("SELECT * FROM network_modules WHERE owner_uuid=:owner_uuid"); | |
$query->bindValue(":owner_uuid",$owner,PDO::PARAM_STR); | |
$query->execute(); | |
while($row = $query->fetch(PDO::FETCH_ASSOC)) | |
$modules[$row['module_name']] = true; | |
return $modules; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment