PATH:
var
/
www
/
vhosts
/
sandbox.dos-group.com
/
httpdocs
/
apilora
/
class
<?php class Tracker { private function __construct() { } private function __clone() { } /** * Esegue una query per ricercare l'id ricevuto tramite parametro * * @param $id_tracker int, id del tracker relativo alle coordinate rilevate * @return string, ritorna un json contenente le informazioni estratte dal db relative al dispositivo richiesto tramite id_device * @throws Exception, eccezione rinviata in radice, "api.php" */ private static function findTracker($id_tracker) { $db = Db::getInstance(); // creo la query con i :placeholder $query = 'SELECT COUNT(id_tracker) AS DeviceCount FROM tracker WHERE id_tracker=:id_tracker'; // preparo l'oggetto e lo lego alla connessione creata sopra $stmt = $db->prepare($query); // eseguo il binding dei parametri $stmt->bindParam(':id_tracker', $id_tracker, PDO::PARAM_INT); try { // eseguo la query e interrogo il database $stmt->execute(); } catch (PDOException $e) { throw new Exception("Errore incontrato nel metodo Tracker@findTracker, messaggio: " . $e->getMessage()); } // ritorno il risultato della query return $stmt->fetch(PDO::FETCH_ASSOC); } /** * Esegue una query per estrarre la posizione del device in base al $id_tracker e $interval ricevuti * * @param $interval string intervallo di tempo su cui basare la query definito in inglese (day,week,month,ever) * @param $id_tracker int, id del tracker relativo alle coordinate rilevate * @return string, ritorna un json contenete le informazioni estratte relative all'id tracker * @throws Exception, eccezione rinviata in radice, "api.php" */ public static function getPosition($id_tracker, $interval) { $db = Db::getInstance(); switch ($interval) { case "day": $query = "SELECT tracker.id_tracker, position.id_position, position.lng, position.lat, position.timestamp FROM position INNER JOIN tracker ON position.id_tracker = tracker.id_tracker WHERE DATE_FORMAT(timestamp, '%Y-%m-%d') BETWEEN CURDATE() - INTERVAL 1 DAY AND CURDATE() AND position.id_tracker = :id_tracker ORDER BY timestamp DESC, id_position DESC LIMIT 30"; break; case "week": $query = "SELECT tracker.id_tracker, position.id_position, position.lng, position.lat, position.timestamp FROM position INNER JOIN tracker ON position.id_tracker = tracker.id_tracker WHERE DATE_FORMAT(timestamp, '%Y-%m-%d') BETWEEN CURDATE() - INTERVAL 7 DAY AND CURDATE() AND position.id_tracker = :id_tracker ORDER BY timestamp DESC, id_position DESC LIMIT 30"; break; case "month": $query = "SELECT tracker.id_tracker, position.id_position, position.lng, position.lat, position.timestamp FROM position INNER JOIN tracker ON position.id_tracker = tracker.id_tracker WHERE DATE_FORMAT(timestamp, '%Y-%m-%d') BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE() AND position.id_tracker = :id_tracker ORDER BY timestamp DESC, id_position DESC LIMIT 30"; break; case "ever": $query = "SELECT tracker.id_tracker, position.id_position, position.lng, position.lat, position.timestamp FROM position INNER JOIN tracker ON position.id_tracker = tracker.id_tracker WHERE position.id_tracker = :id_tracker ORDER BY timestamp DESC, id_position"; break; default: throw new Exception('Errore incontrato nel metodo Tracker@getPosition, messaggio: Errore nella lettura dell\'intervallo, inesistente'); } $stmt = $db->prepare($query); $stmt->bindParam(':id_tracker', $id_tracker); try { // eseguo la query e interrogo il database $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getPosition, messaggio: ' . $e->getMessage()); } return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } public static function getTarghePosition($id_user, $interval, $start_time, $end_time) { if (!empty($start_time) && !empty($end_time)){ $query = "SELECT * FROM position WHERE id_tracker IN (SELECT id_tracker FROM mission_tracker WHERE id_user = :id_user) AND DATE(FROM_UNIXTIME(UNIX_TIMESTAMP(timestamp)+2*60*60)) = :interval AND TIME(FROM_UNIXTIME(UNIX_TIMESTAMP(timestamp)+2*60*60)) >= :start_time AND TIME(FROM_UNIXTIME(UNIX_TIMESTAMP(timestamp)+2*60*60)) <= :end_time ORDER BY position.timestamp DESC"; } else{ $query = "SELECT * FROM position WHERE id_tracker IN (SELECT id_tracker FROM mission_tracker WHERE id_user = :id_user) AND DATE(timestamp) = :interval ORDER BY timestamp DESC"; } $db = Db::getInstance(); /*switch ($interval) { case "ever": $query = "SELECT * FROM position WHERE id_tracker IN (SELECT id_tracker FROM mission_tracker WHERE id_user = :id_user) ORDER BY timestamp DESC"; break; default: throw new Exception('Errore incontrato nel metodo Tracker@getPosition, messaggio: Errore nella lettura dell\'intervallo, inesistente'); } */ $stmt = $db->prepare($query); $stmt->bindParam(':id_user', $id_user); $stmt->bindParam(':interval', $interval); if (!empty($start_time) && !empty($end_time)){ $stmt->bindParam(':start_time', $start_time); $stmt->bindParam(':end_time', $end_time); } try { // eseguo la query e interrogo il database $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getPosition, messaggio: ' . $e->getMessage()); } return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } public static function getTrackersWithData($dateToCheck){ $query = "SELECT DISTINCT identification_number FROM user JOIN mission_tracker ON user.id_user = mission_tracker.id_user WHERE mission_tracker.id_tracker IN (SELECT DISTINCT id_tracker FROM position WHERE DATE(position.timestamp) = :dateToCheck)"; $db = Db::getInstance(); $stmt = $db->prepare($query); $stmt->bindParam(':dateToCheck', $dateToCheck); try { // eseguo la query e interrogo il database $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getTrackerWithData, messaggio: ' . $e->getMessage()); } return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } /** * @param $id_tracker * @return mixed * @throws Exception, eccezione rinviata in radice, "api.php" */ public static function getTracker($id_tracker) { $db = Db::getInstance(); // creo la query con i :placeholder $query = 'SELECT * FROM tracker WHERE id_tracker = :id_tracker'; // preparo l'oggetto e lo lego alla connessione creata sopra $stmt = $db->prepare($query); // eseguo il binding dei parametri $stmt->bindParam(':id_tracker', $id_tracker, PDO::PARAM_INT); try { // eseguo la query e interrogo il database $stmt->execute(); } catch (PDOException $e) { throw new Exception("Errore incontrato nel metodo Tracker@findTracker, messaggio: " . $e->getMessage()); } // ritorno il risultato della query return json_encode($stmt->fetch(PDO::FETCH_ASSOC)); } /** * @param $id_agent * @param $id_mission * @return mixed * @throws Exception, eccezione rinviata in radice, "api.php" */ public static function getAgent($id_agent, $id_mission) { $db = Db::getInstance(); // creo la query con i :placeholder $query = 'select t1.name, t1.identification_number, t4.lng, t4.lat, t4.timestamp from user t1 inner join mission_tracker t2 on t1.id_user = t2.id_user inner join tracker t3 on t3.id_tracker = t2.id_tracker inner join position t4 on t4.id_tracker = t3.id_tracker where t4.id_position = (select max(position.id_position) from position inner join tracker t5 on t5.id_tracker = position.id_tracker inner join mission_tracker t6 on t6.id_tracker = t5.id_tracker where t6.id_mission = :id_mission and t6.id_user = :id_user)'; // preparo l'oggetto e lo lego alla connessione creata sopra $stmt = $db->prepare($query); // eseguo il binding dei parametri $stmt->bindParam(':id_user', $id_agent, PDO::PARAM_INT); $stmt->bindParam(':id_mission', $id_mission, PDO::PARAM_INT); try { // eseguo la query e interrogo il database $stmt->execute(); } catch (PDOException $e) { throw new Exception("Errore incontrato nel metodo Tracker@findTracker, messaggio: " . $e->getMessage()); } // ritorno il risultato della query return json_encode($stmt->fetch(PDO::FETCH_ASSOC)); } /** * @param $id_mission * @return mixed * @throws Exception, eccezione rinviata in radice, "api.php" */ public static function getMission($id_mission) { $db = Db::getInstance(); // creo la query con i :placeholder $query = 'SELECT * FROM mission WHERE id_mission = :id_mission'; // preparo l'oggetto e lo lego alla connessione creata sopra $stmt = $db->prepare($query); // eseguo il binding dei parametri $stmt->bindParam(':id_mission', $id_mission, PDO::PARAM_INT); try { // eseguo la query e interrogo il database $stmt->execute(); } catch (PDOException $e) { throw new Exception("Errore incontrato nel metodo Tracker@findTracker, messaggio: " . $e->getMessage()); } // ritorno il risultato della query return json_encode($stmt->fetch(PDO::FETCH_ASSOC)); } /** * Esegue una query per estrarre tutti i tracker relativi all'id della missione trasmesso tramite parametro * * @return string, ritorna un json contenete le informazioni estratte dal db relative alla missione * @param $id_mission int, contiene l'id della missione a cui fa riferimento la query * @throws Exception, eccezione rinviata in radice, "api.php" */ public static function getAllTrackerByIdMission($id_mission) { $db = Db::getInstance(); $query = 'SELECT DISTINCT tracker.id_tracker, user.id_user, user.name FROM tracker INNER JOIN mission_tracker ON mission_tracker.id_tracker = tracker.id_tracker INNER JOIN user ON mission_tracker.id_user = user.id_user WHERE tracker.id_tracker IN (SELECT id_tracker FROM mission_tracker WHERE id_mission = :id_mission)'; // id_mission $stmt = $db->prepare($query); $stmt->bindParam(':id_mission', $id_mission); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getAllTrackerByIdMission, messaggio: ' . $e->getMessage()); } // ritorna il risultato della query return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } /** * Esegue una query per estrarre una lista contenente tutti i tracker, con l'ultima missione a cui hanno partecipato e la data della missione * * @return string, ritorna un json contenete le informazioni estratte dal db relative alla missione * @throws Exception, eccezione rinviata in radice, "api.php" */ public static function getAllTracker() { $db = Db::getInstance(); $query = 'SELECT tracker.id_tracker, t2.mission, t2.mission_end FROM tracker LEFT OUTER JOIN ( SELECT tracker.id_tracker, mission.name AS mission, mission.mission_end FROM tracker LEFT OUTER JOIN mission_tracker ON tracker.id_tracker = mission_tracker.id_tracker LEFT OUTER JOIN mission ON mission_tracker.id_mission = mission.id_mission WHERE mission.id_mission = ( SELECT MAX(mission.id_mission) FROM mission INNER JOIN mission_tracker ON mission.id_mission = mission_tracker.id_mission WHERE mission_tracker.id_tracker = tracker.id_tracker)) t2 ON tracker.id_tracker = t2.id_tracker ORDER BY t2.mission_end'; $stmt = $db->prepare($query); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getAllTracker, messaggio: ' . $e->getMessage()); } // ritorna il risultato della query return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } /** * Esegue una query per estrarre una lista contenente tutti gli agenti, con l'ultima missione a cui hanno partecipato e la data della missione * * @return string ritorna un json contenente la lista di tutti gli agenti * @throws Exception, eccezione rinviata in radice, "api.php" */ public static function getAllAgent() { $db = Db::getInstance(); $query = 'SELECT user.name, user.identification_number, user.grade, t2.mission, t2.mission_end FROM user LEFT OUTER JOIN ( SELECT user.id_user, user.name, user.identification_number, user.grade, mission.name AS mission, mission.mission_end FROM user LEFT OUTER JOIN mission_tracker ON user.id_user = mission_tracker.id_user LEFT OUTER JOIN mission ON mission_tracker.id_mission = mission.id_mission WHERE mission.id_mission = ( SELECT MAX(mission.id_mission) FROM mission INNER JOIN mission_tracker ON mission.id_mission = mission_tracker.id_mission WHERE mission_tracker.id_user = user.id_user)) t2 ON user.id_user = t2.id_user ORDER BY t2.mission_end'; $stmt = $db->prepare($query); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getAllAgent, messaggio: ' . $e->getMessage()); } // ritorna il risultato della query return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } public static function getAllTarghe(){ $db = Db::getInstance(); $query = 'SELECT identification_number, id_user FROM user'; $stmt = $db->prepare($query); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getAllAgent, messaggio: ' . $e->getMessage()); } return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } /** * Esegue una query per estrarre la posizione l'ultima posizione del tracker relativi all'id della missione trasmesso tramite parametro * * @param $id_mission int, contiene id della missione * @return string, ritorna un json contenente le informazioni estratte dal db relative all'ultima posizione di ogni dispositivo * @throws Exception, eccezione rinviata in radice, "api.php" */ public static function getLastPosition($id_mission) { $db = Db::getInstance(); $query = 'SELECT t1.* FROM position t1 INNER JOIN tracker t2 ON t1.id_tracker = t2.id_tracker INNER JOIN mission_tracker t3 ON t2.id_tracker = t3.id_tracker WHERE t3.id_mission = :id_mission AND t1.id_position = ( SELECT MAX(t4.id_position) FROM position t4 WHERE t4.id_tracker = t1.id_tracker)'; $stmt = $db->prepare($query); $stmt->bindParam(':id_mission', $id_mission); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getLastPosition, messaggio: ' . $e->getMessage()); } // ritorna il risultato della query return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } /** * Esegue un update sulla tabela "mission" assegnando false allo stato della missione e inserendo una data nel campo "mission_end" * * @param $mission_id int, contiene l'id della missione * @throws Exception rimanda a monte l'exception */ public static function endMission($mission_id) { $timestamp = date('Y-m-d G:i:s'); $db = Db::getInstance(); $query = 'UPDATE mission SET active=FALSE, mission_end = :timestamp WHERE id_mission=:id_mission'; $stmt = $db->prepare($query); $stmt->bindParam(':id_mission', $mission_id, PDO::PARAM_INT); $stmt->bindParam(':timestamp', $timestamp); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@endMission, messaggio: ' . $e->getMessage()); } } /** * Esegue una query che estrae tutte le missioni attive * * @return string ritorna il json contenente le informazioni estratte dal database * @throws Exception rimanda a monte l'exception */ public static function getAllActiveMission() { $db = Db::getInstance(); $query = 'SELECT * FROM mission WHERE active = TRUE'; $stmt = $db->prepare($query); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getAllActiveMission, messaggio: ' . $e->getMessage()); } // ritorna il risultato della query return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } /** * Esegue una query che estrae tutte le missioni asegnate * * @return string * @throws Exception */ public static function getAllMissionAssigned() { $db = Db::getInstance(); $query = 'SELECT * FROM mission INNER JOIN mission_tracker ON mission.id_mission = mission_tracker.id_mission WHERE active = TRUE'; $stmt = $db->prepare($query); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getAllMissionAssigned, messaggio: ' . $e->getMessage()); } // ritorna il risultato della query return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } /** * Esegue una query per estrarre tutti i tracker liberi da missioni * * @return string ritorna il json contenente le informazioni estratte dal database * @throws Exception rimanda a monte l'exception */ public static function getAllFreeTracker() { $db = Db::getInstance(); $query = 'SELECT * FROM tracker WHERE id_tracker NOT IN (SELECT id_tracker FROM mission_tracker INNER JOIN mission ON mission_tracker.id_mission = mission.id_mission WHERE mission.active = 1)'; $stmt = $db->prepare($query); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getAllFreeTracker, messaggio: ' . $e->getMessage()); } // ritorna il risultato della query return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } /** * Esegue una query per estrarre tutti gli agenti liberi da missioni * * @return string ritorna il json contenente le informazioni estratte dal database * @throws Exception rimanda a monte l'exception */ public static function getAllFreeAgent() { $db = Db::getInstance(); $query = 'SELECT * FROM user WHERE id_user NOT IN (SELECT id_user FROM mission_tracker INNER JOIN mission ON mission_tracker.id_mission = mission.id_mission WHERE mission.active = 1) '; $stmt = $db->prepare($query); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@getAllFreeAgent, messaggio: ' . $e->getMessage()); } // ritorna il risultato della query return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } /** * Esegue una query per estrarre tutti i tracker presenti in missioni attive * * @return string ritorna il json contenente le informazioni estratte dal dabase * @throws Exception rimanda a monte l'exception */ public static function getTrackerActiveOnMission() { $db = Db::getInstance(); $query = 'SELECT * FROM tracker WHERE id_tracker IN (SELECT id_tracker FROM mission_tracker INNER JOIN mission ON mission_tracker.id_mission = mission.id_mission WHERE mission.active = 1) '; $stmt = $db->prepare($query); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@GetTrackerActiveOnMission, messaggio: ' . $e->getMessage()); } // ritorna il risultato della query return json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); } /** * richiama i metodi per eseguire l'inserimento del device e della nuova posizione * * @param $longitude string, longitudine del tracker da inserire * @param $latitude string, latitudine del tracker da inserire * @param $timestamp string, data-ora del rilevamento delle coordinate * @param $id_tracker int, id del tracker relativo alle coordinate rilevate * @throws Exception, eccezione rinviata in radice, "Api.php" */ public static function setTrackerPosition($longitude, $latitude, $timestamp, $id_tracker) { try { Tracker::setTracker($id_tracker); } catch(Exception $e) { } try { Tracker::setPosition($longitude, $latitude, $timestamp, $id_tracker); } catch (Exception $e) { throw new Exception('Errore incontrato nel metodo Tracker@setPosition, messaggio: ' . $e->getMessage()); } } /** * esegue la query di inserimento per la nuova posizione * * @param $longitude string, longitudine del tracker da inserire * @param $latitude string, latitudine del tracker da inserire * @param $timestamp string, data-ora del rilevamento delle coordinate * @param $id_tracker int, id del tracker relativo alle coordinate rilevate * @throws Exception, eccezione rinviata in radice, "Api.php" */ private static function setPosition($longitude, $latitude, $timestamp, $id_tracker) { // $log = new Logging(); // $log->lwrite($timestamp); // $log->lclose(); // $timestamp = date("Y-m-d H:m:s", $timestamp); $db = Db::getInstance(); $query = 'INSERT INTO position VALUES(NULL,:longitude,:latitude,:created,:id_tracker)'; $stmt = $db->prepare($query); $stmt->bindParam(':longitude', $longitude); $stmt->bindParam(':latitude', $latitude); $stmt->bindParam(':created', $timestamp); $stmt->bindParam(':id_tracker', $id_tracker); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@setPosition, messaggio: ' . $e->getMessage()); } } /** * esegue la query di inserimento per il nuovo tracker (controlla se è nuovo) * * @param $id_tracker int, id del tracker relativo alle coordinate rilevate * @throws Exception, eccezione rinviata in radice, "Api.php" */ public static function setTracker($id_tracker) { $db = Db::getInstance(); try { $deviceExist = Tracker::findTracker($id_tracker); } catch (PDOException $e) { throw new Exception("Errore durante l'estrazione"); } if ($deviceExist['DeviceCount'] > 0) { throw new Exception('Errore incontrato nel metodo Tracker@setTracker, messaggio: Tracker già presente'); } $query = 'INSERT INTO tracker VALUES (:id_tracker)'; $stmt = $db->prepare($query); $stmt->bindParam(':id_tracker', $id_tracker, PDO::PARAM_INT); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@setTracker, messaggio: ' . $e->getMessage()); } } /** * Esegue la query di inserimento del nuovo agente * * @param $agent_name string, contiene il nominativo dell'agente * @param $agent_identification int, contiene il numero identificativo dell'agente * @param $agent_grade int, contiene il grado dell'agente * @throws Exception eccezione rinviata in radice, "Api.php" */ public static function setAgent($agent_name, $agent_identification, $agent_grade) { $db = Db::getInstance(); $query = 'INSERT INTO user VALUES (NULL, :name, :identification_number, :grade)'; $stmt = $db->prepare($query); $stmt->bindParam(':name', $agent_name); $stmt->bindParam(':identification_number', $agent_identification); $stmt->bindParam(':grade', $agent_grade); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@setAgent, messaggio: ' . $e->getMessage()); } } /** * Esegue la query di inserimento della nuova missione * * @param $mission_name string, contiene il titolo della missione * @param $mission_description string, contiene la descrizione della missione * @param $mission_priority int, contiene la priorità della missione * @throws Exception eccezione rinviata in radice, "Api.php" */ public static function setMission($mission_name, $mission_description, $mission_priority) { $timestamp = date('Y-m-d G:i:s'); $db = Db::getInstance(); $query = 'INSERT INTO mission VALUES (NULL, :mission_name, :mission_description, :mission_priority, TRUE, :mission_start, NULL)'; $stmt = $db->prepare($query); $stmt->bindParam(':mission_name', $mission_name); $stmt->bindParam(':mission_description', $mission_description); $stmt->bindParam(':mission_priority', $mission_priority); $stmt->bindParam(':mission_start', $timestamp); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@setMission, messaggio: ' . $e->getMessage()); } } /** * Esegue la query per inserire l'associazione missione,tracker,agente * * @param $mission_id int, contiene l'id della missione * @param $tracker_id int, contiene l'id del tracker * @param $agent_id int, contiene l'id dell'agente * @throws Exception eccezione rinviata in radice, "Api.php" */ public static function assignMission($mission_id, $tracker_id, $agent_id) { $db = Db::getInstance(); $query = 'INSERT INTO mission_tracker VALUES (NULL, :id_tracker, :id_user, :id_mission)'; $stmt = $db->prepare($query); $stmt->bindParam(':id_tracker', $tracker_id); $stmt->bindParam(':id_user', $agent_id); $stmt->bindParam(':id_mission', $mission_id); try { $stmt->execute(); } catch (PDOException $e) { throw new Exception('Errore incontrato nel metodo Tracker@assignMission, messaggio: ' . $e->getMessage()); } } }
[-] Tracker.php
[open]
[+]
..
[-] Api.php
[open]
[-] Logging.php
[open]
[-] Db.php
[open]