Старт
This commit is contained in:
52
android/accept.php
Normal file
52
android/accept.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
//Принять накопившиеся GPS данные с телефона и сохранить в виде файлов во временное хранилище
|
||||
|
||||
//Отвечаю только на POST запросы
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||
sendError("Request is GET method!");
|
||||
}
|
||||
|
||||
if(!isset($HTTP_RAW_POST_DATA))
|
||||
{ $HTTP_RAW_POST_DATA = file_get_contents("php://input");
|
||||
}
|
||||
$object = json_decode($HTTP_RAW_POST_DATA);
|
||||
|
||||
if ($object == null) {
|
||||
sendError("Request is empty!");
|
||||
}
|
||||
|
||||
$fn = filter_input(INPUT_GET, 'fn', FILTER_VALIDATE_INT, array('options' => array('default' => -1)));
|
||||
if (isset($_GET['lng'])) $_SESSION["LNG"] = $_GET['lng']; else $_SESSION["LNG"] = 2;//'en';
|
||||
|
||||
$result=false;
|
||||
if ($fn == 1) {
|
||||
//Данные GPS
|
||||
$file = fopen('./data/'.time().'_'.$object->imei.'_1.json','w');
|
||||
fwrite($file, $HTTP_RAW_POST_DATA);
|
||||
fclose($file);
|
||||
$result=true;
|
||||
}elseif ($fn == 2){
|
||||
//Данные датчиков
|
||||
$file = fopen('./data/'.time().'_'.$object->imei.'_2.json','w');
|
||||
fwrite($file, $HTTP_RAW_POST_DATA);
|
||||
fclose($file);
|
||||
$result=true;
|
||||
}
|
||||
|
||||
if($result){
|
||||
$obj = new StdClass();
|
||||
$obj->errorCode = 0;
|
||||
$obj->errorMessage = '';
|
||||
$obj->data = array();
|
||||
header('Content-Type: application/json');
|
||||
header("Cache-Control: no-cache, must-revalidate");
|
||||
echo json_encode($obj);
|
||||
}else{
|
||||
$obj = new StdClass();
|
||||
$obj->errorCode = 1;
|
||||
$obj->errorMessage = '';
|
||||
$obj->data = array();
|
||||
header('Content-Type: application/json');
|
||||
header("Cache-Control: no-cache, must-revalidate");
|
||||
echo json_encode($obj);
|
||||
}
|
||||
67
android/createTerminalAndObject.php
Normal file
67
android/createTerminalAndObject.php
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
//Проверяю есть ли терминал и объект у пользователя если нет создаю (данная функция используется при авторизации)
|
||||
function createTerminalAndObject($user_id,$android_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$name='';
|
||||
$phone='';
|
||||
$company_id='';
|
||||
|
||||
//Выбираю информацию о пользователе
|
||||
$sql= "select COALESCE(u.name,'')||' '||COALESCE(u.surname,'')||' '||COALESCE(u.patronymic,'') as name,u.phone,main.getcompanyid(u.id) company_id from main._users u where id=$user_id;";
|
||||
$res = $db->query($sql);
|
||||
if($res!=NULL && $res->rowCount()>0)
|
||||
{
|
||||
$exists=true;
|
||||
while ($row = $res->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
$name=trim($row['name']);
|
||||
$phone=$row['phone'];
|
||||
$company_id=$row['company_id'];
|
||||
}
|
||||
}
|
||||
|
||||
//Проверяю существование и принадлежность терминала
|
||||
$sql= "select id,del,company_id from main.terminals where imei='$android_id';";
|
||||
$res = $db->query($sql);
|
||||
$terminal_id='';
|
||||
if($res!=NULL && $res->rowCount()>0)
|
||||
{
|
||||
while ($row = $res->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
$terminal_id=$row['id'];
|
||||
if($row['company_id']!=$company_id){
|
||||
//Если на телефоне зарегестрировался другой человек то меняем компанию и название всех терминалов и объектов
|
||||
$sql="update main.terminals set company_id=$company_id where id=".$row['id'].';';
|
||||
$res = $db->query($sql);
|
||||
//Меняю названия всех объектов у себя и у связанных пользователей
|
||||
$sql="update main.objects set name='$name' where id=".$row['id'].';';
|
||||
$res = $db->query($sql);
|
||||
}
|
||||
if($row['del']){
|
||||
$sql="update main.terminals set del=false where id=".$row['id'].';';
|
||||
$res = $db->query($sql);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
//Если терминал не существует создаю его
|
||||
$sql="select * from main.p_terminals_i(1,$company_id,'$phone','$name','$android_id',18,'AUTO CREATION');";
|
||||
$res = $db->query($sql);
|
||||
if($res!=NULL && $res->rowCount()>0) {
|
||||
while ($row = $res->fetch(PDO::FETCH_NUM)){
|
||||
$terminal_id=$row[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Если объект не существует у текущего пользователя содаю его
|
||||
$sql="select id from main.objects where terminal_id=$terminal_id;";
|
||||
$res = $db->query($sql);
|
||||
if($res!=NULL && $res->rowCount()>0) {
|
||||
}else{
|
||||
$sql="select * from main.p_objects_i(1,$company_id,'$name',1,'".date("Y")."',$terminal_id,1,'Phone',1)";
|
||||
$res = $db->query($sql);
|
||||
}
|
||||
}
|
||||
183
android/exchange.php
Normal file
183
android/exchange.php
Normal file
@ -0,0 +1,183 @@
|
||||
<?php
|
||||
//Обмен терминалами и другим между компаниями
|
||||
|
||||
require_once("../monitoring/config.php");
|
||||
require_once("../monitoring/tools.php");
|
||||
require_once("../resources/metadata/include/tools.php");
|
||||
|
||||
session_start();
|
||||
|
||||
function sendError($msg)
|
||||
{
|
||||
$obj = new StdClass();
|
||||
$obj->errorCode = 1;
|
||||
$obj->errorMessage = $msg;
|
||||
$obj->data = array();
|
||||
header('Content-Type: application/json');
|
||||
header("Cache-Control: no-cache, must-revalidate");
|
||||
echo json_encode($obj);
|
||||
exit();
|
||||
}
|
||||
|
||||
//Отвечаю только на POST запросы
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||
sendError("Request is GET method!");
|
||||
}
|
||||
|
||||
$fn = filter_input(INPUT_GET, 'fn', FILTER_VALIDATE_INT, array('options' => array('default' => -1)));
|
||||
if (isset($_GET['lng'])) $_SESSION["LNG"] = $_GET['lng']; else $_SESSION["LNG"] = 2;//'en';
|
||||
|
||||
if ($fn == 0) { //Отправить пользователю код для переноса терминала в другую компанию
|
||||
|
||||
/*
|
||||
$object = json_decode(file_get_contents("php://input"));
|
||||
if ($object == null) {
|
||||
sendError("Request is empty!");
|
||||
}
|
||||
|
||||
$db = connectToDB();
|
||||
|
||||
$sql = "
|
||||
select
|
||||
id,
|
||||
cast(del as integer) as del,
|
||||
seq,
|
||||
company_id,
|
||||
name,
|
||||
surname,
|
||||
patronymic,
|
||||
email,
|
||||
login,
|
||||
password,
|
||||
hash
|
||||
from
|
||||
main._users
|
||||
where
|
||||
del=false and (email='" . $object->login . "' or phone='" . $object->login . "' or login='" . $object->login . "') and (password='" . $object->password . "' or hash = '" . $object->password . "')
|
||||
order by seq";
|
||||
|
||||
try {
|
||||
$res = $db->query($sql);
|
||||
} catch (Exception $ex) {
|
||||
sendError($ex->getMessage());
|
||||
}
|
||||
|
||||
$obj = new StdClass();
|
||||
$obj->errorCode = 0;
|
||||
$obj->errorMessage = "";
|
||||
$obj->data = array();
|
||||
if ($row = $res->fetch(PDO::FETCH_ASSOC)) {
|
||||
$usr = new stdClass();
|
||||
$usr->id = $row['id'];
|
||||
$usr->del = $row['del'];
|
||||
$usr->seq = $row['seq'];
|
||||
$usr->company_id = $row['company_id'];
|
||||
$usr->name = $row['name'];
|
||||
$usr->surname = $row['surname'];
|
||||
$usr->patronymic = $row['patronymic'];
|
||||
$usr->email = $row['email'];
|
||||
$usr->login = $row['login'];
|
||||
$usr->password = $row['password'];
|
||||
$usr->hash = $row['hash']; //Временный пароль (TODO должен быть в паре с id сесии для разделения устройств)
|
||||
|
||||
array_push($obj->data, $usr);
|
||||
}
|
||||
echo json_encode($obj);
|
||||
*/
|
||||
} else
|
||||
if ($fn == 1) //Принять и перенести терминал и объект в другую компанию
|
||||
{
|
||||
/*$object = json_decode(file_get_contents("php://input"));
|
||||
if ($object == null) {
|
||||
sendError("Request is empty!");
|
||||
}
|
||||
|
||||
$db = connectToDB();
|
||||
|
||||
$password = getPassword(5);
|
||||
|
||||
$sql = "select * from main.p__users_1(1,null,:company_name,:surname,:name,:position,:phone,:email,:password);";
|
||||
$stmt = $db->prepare($sql);
|
||||
$stmt->bindParam(':company_name', $object->firstname, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':surname', $object->lastname, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':name', $object->firstname, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':position', $object->position, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':phone', $object->phone, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':email', $object->email, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
|
||||
|
||||
$response = new stdClass();
|
||||
$response->errorCode = '0';
|
||||
$response->errorMessage = '';
|
||||
try {
|
||||
$res = $stmt->execute();
|
||||
} catch (Exception $ex) {
|
||||
if ($ex->getCode() == 'U1000') {
|
||||
sendError(trt('User_with_this_email_already_exists'));
|
||||
} else {
|
||||
sendError($ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
$response->data = array();
|
||||
$usr = new stdClass();
|
||||
$usr->id = '-1';
|
||||
if ($row = $stmt->fetch(PDO::FETCH_NUM)) {
|
||||
$usr->id = $row[0];
|
||||
$usr->del = 0; //SQLIte нет false
|
||||
$usr->seq = 1;
|
||||
$usr->company_id = ''; //Заполню ниже
|
||||
$usr->name = $object->firstname;
|
||||
$usr->surname = $object->lastname;
|
||||
$usr->patronymic = '';
|
||||
$usr->email = $object->email;
|
||||
$usr->phone = $object->phone;
|
||||
$usr->login = '';
|
||||
$usr->password = ''; //Пароль не отправляю а использую временный идентификатор
|
||||
$usr->hash = md5(uniqid(rand(), true));
|
||||
|
||||
//Обновляю идентификатор временного пароля для авторизации без ввода пароля
|
||||
try {
|
||||
$db->query("update main._users set hash='" . $usr->hash . "' where id=" . $usr->id); //TODO сделать в одной функции p__users_1 что выше
|
||||
} catch (Exception $e) {
|
||||
sendError($e->getMessage());
|
||||
}
|
||||
}
|
||||
$stmt = null;
|
||||
//Получаю id компании
|
||||
try {
|
||||
$res = $db->query("select company_id from main._users where id =" . $usr->id);
|
||||
} catch (Exception $e) {
|
||||
sendError($e->getMessage());
|
||||
}
|
||||
if ($res->rowCount() > 0) {
|
||||
$row = $res->fetch(PDO::FETCH_ASSOC);
|
||||
$usr->company_id = $row['company_id'];
|
||||
}
|
||||
array_push($response->data, $usr);
|
||||
|
||||
if ($_SESSION["LNG"] == 'ru') {
|
||||
$html = '<html><head><title>Сообщение</title></head><body>
|
||||
<h3>Поздравляю, вы зарегистрированы!</h3>
|
||||
<b>Ваш пароль: </b> ' . $password . '<br>
|
||||
</body></html>';
|
||||
} else {
|
||||
$html = '<html><head><title>Message</title></head><body>
|
||||
<h3>Congratulations, you are registered!</h3>
|
||||
<b>Your password: </b> ' . $password . '<br>
|
||||
</body></html>';
|
||||
}
|
||||
|
||||
//Отсылаю пароль на почту
|
||||
if (mail($usr->email, 'Motion-Engine.com', $html, "Content-type: text/html; charset=utf-8\r\nFrom: GEOVizor Site <info@geovizor.com>")) {
|
||||
|
||||
} else {
|
||||
sendError('Failed to send password email to!');
|
||||
}
|
||||
|
||||
echo json_encode($response);
|
||||
exit();*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
64
android/index.php
Normal file
64
android/index.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
session_start();
|
||||
require_once("../config.php");
|
||||
|
||||
$f=$_REQUEST["f"]; //номер функции
|
||||
|
||||
try
|
||||
{
|
||||
$db = new PDO($connstr, $login, $password);
|
||||
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
} catch (Exception $e)
|
||||
{
|
||||
sendError('Connect error "'.$e->getMessage().'"!',0);
|
||||
}
|
||||
|
||||
if ($f==1) //логин + отправка списка автомобилей
|
||||
{
|
||||
$login=$_REQUEST["login"];
|
||||
$password=$_REQUEST["password"];
|
||||
// Выбираем пользователя
|
||||
$res = $db->query('select * from "Users" where upper(login)=upper(\''.$login.'\') and password=md5(\''.$password.'\')');
|
||||
if($res->rowCount()>0)
|
||||
{
|
||||
$result = $res->fetch(PDO::FETCH_ASSOC);
|
||||
$_SESSION["USER_ID"]=$result['id'];
|
||||
$_SESSION["COMPANY_ID"]=$result['company_id'];
|
||||
$ans='1|'.session_name().'|'.session_id().'|;';
|
||||
|
||||
//выбираем список автомобилей и их последние координаты для компании пользователя
|
||||
$company_id=
|
||||
$res = $db->query('select t1.id,t1.name,t2.lon,t2.lat,Floor(EXTRACT(EPOCH FROM t2.date)) as date from (select id,name,(select id from "ModemGPS" where car_id=c.id order by date desc limit 1) as gps from "Cars" c where company_id='.$_SESSION["COMPANY_ID"].') t1, "ModemGPS" t2 where t1.gps=t2.id order by name');
|
||||
while ($row = $res->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
$ans.=$row['id'].'|';
|
||||
$ans.=$row['name'].'|';
|
||||
$ans.=$row['lon'].'|';
|
||||
$ans.=$row['lat'].'|';
|
||||
$ans.=$row['date'].'|';
|
||||
$ans.=';';
|
||||
}
|
||||
print $ans;
|
||||
}else
|
||||
{
|
||||
print '0|'; //не авторизован
|
||||
}
|
||||
}else
|
||||
if ($f==2) //отправка клиенту последних коордионат автомобилей
|
||||
{
|
||||
if($_SESSION["COMPANY_ID"]>0)
|
||||
{
|
||||
$res = $db->query('select t1.id,t2.lon,t2.lat,Floor(EXTRACT(EPOCH FROM t2.date)) as date from (select id,(select id from "ModemGPS" where car_id=c.id order by date desc limit 1) as gps_id from "Cars" c where '.$_SESSION["COMPANY_ID"].'=1) t1, "ModemGPS" t2 where t1.gps_id=t2.id');
|
||||
$ans='';
|
||||
while ($row = $res->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
$ans.=$row['id'].'|';
|
||||
$ans.=$row['lon'].'|';
|
||||
$ans.=$row['lat'].'|';
|
||||
$ans.=$row['date'].'|';
|
||||
$ans.=';';
|
||||
}
|
||||
print $ans;
|
||||
}else print '0|';
|
||||
}
|
||||
230
android/objects.php
Normal file
230
android/objects.php
Normal file
@ -0,0 +1,230 @@
|
||||
<?php
|
||||
//Дия работы с объектами, подгрузка создание (также с терминалами)
|
||||
|
||||
|
||||
require_once("../monitoring/config.php");
|
||||
require_once("../monitoring/tools.php");
|
||||
require_once("../resources/metadata/include/tools.php");
|
||||
|
||||
session_start();
|
||||
|
||||
function sendError($msg)
|
||||
{
|
||||
$obj = new StdClass();
|
||||
$obj->errorCode = 1;
|
||||
$obj->errorMessage = $msg;
|
||||
$obj->data = array();
|
||||
header('Content-Type: application/json');
|
||||
header("Cache-Control: no-cache, must-revalidate");
|
||||
echo json_encode($obj);
|
||||
exit();
|
||||
}
|
||||
|
||||
//Отвечаю только на POST запросы
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||
sendError("Request is GET method!");
|
||||
}
|
||||
|
||||
$fn = filter_input(INPUT_GET, 'fn', FILTER_VALIDATE_INT, array('options' => array('default' => -1)));
|
||||
if (isset($_GET['lng'])) $_SESSION["LNG"] = $_GET['lng']; else $_SESSION["LNG"] = 2;//'en';
|
||||
|
||||
if ($fn == 0) {
|
||||
//Создание или обновление нового объекта и терминала
|
||||
//В одном телефоне может авторизоваться раздный пользователь, терминал у них будет одинаковый а вот объекты раздные
|
||||
//Вот терминал будет перескакивать с компинии на компанию а вот объект оставаться преждним
|
||||
//Вместо IMEI терминал отправляет Android ID чтобы не создавать кучу терминалов в базе так как есть шанс что он не измениться
|
||||
|
||||
//Принимаю логин пароль, имя, android id и согдаю объект и терминал если его нет.
|
||||
//login, password, android_id
|
||||
$object = json_decode(file_get_contents("php://input"));
|
||||
if ($object == null) {
|
||||
sendError("Request is empty!");
|
||||
}
|
||||
|
||||
$db = connectToDB();
|
||||
|
||||
$sql = "
|
||||
select
|
||||
id,
|
||||
company_id,
|
||||
COALESCE(name,'') || ' ' || COALESCE(surname,'') || ' ' || COALESCE(patronymic,'') as name
|
||||
from
|
||||
main._users
|
||||
where
|
||||
del=false and (email='" . $object->login . "' or phone='" . $object->login . "' or login='" . $object->login . "') and (password='" . $object->password . "' or hash = '" . $object->password . "')
|
||||
order by seq";
|
||||
|
||||
try {
|
||||
$res = $db->query($sql);
|
||||
} catch (Exception $ex) {
|
||||
sendError($ex->getMessage());
|
||||
}
|
||||
|
||||
$id='';
|
||||
$company_id='';
|
||||
$name='';
|
||||
if($res!=NULL && $res->rowCount()>0)
|
||||
{
|
||||
while ($row = $res->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
$id=$row['id'];
|
||||
$company_id=$row['company_id'];
|
||||
$name=$row['name'];
|
||||
}
|
||||
}
|
||||
|
||||
//Проверяю есть ли терминал с android_id
|
||||
$sql = "
|
||||
select
|
||||
id,
|
||||
del,
|
||||
company_id
|
||||
from
|
||||
main.terminals
|
||||
where
|
||||
imie='".$object->android_id."'
|
||||
order by seq";
|
||||
|
||||
try {
|
||||
$res = $db->query($sql);
|
||||
} catch (Exception $ex) {
|
||||
sendError($ex->getMessage());
|
||||
}
|
||||
|
||||
if($res!=NULL && $res->rowCount()>0)
|
||||
{
|
||||
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
|
||||
if($row['del']=false || $row['company_id']!=$company_id) {
|
||||
$sql="update main.terminals set del=false,company_id=".$company_id." where id=".$row['id'];
|
||||
$db->query($sql);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
//Создаю новый терминал и объект (это нужно делать если включена функция слежения а она включена по умолчанию в приложении)
|
||||
$sql="select * from main.p_terminals_i(1,$company_id,null,null,$object->android_id,18,null);";
|
||||
try {
|
||||
$res = $db->query($sql);
|
||||
} catch (Exception $ex) {
|
||||
sendError($ex->getMessage());
|
||||
}
|
||||
$terminal_id=null;
|
||||
if($res!=NULL && $res->rowCount()>0)
|
||||
{
|
||||
while ($row = $res->fetch(PDO::FETCH_NUM)) {
|
||||
$terminal_id=$row[0];
|
||||
}
|
||||
}
|
||||
//Создаю новый объект
|
||||
$sql="select * from main.p_objects_i(1,$company_id,$name,null,null,$terminal_id,null,null,2);";
|
||||
try {
|
||||
$res = $db->query($sql);
|
||||
} catch (Exception $ex) {
|
||||
sendError($ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
//Отправляю результат работы активации функции терминала
|
||||
$obj = new StdClass();
|
||||
$obj->errorCode = 0;
|
||||
$obj->errorMessage = "";
|
||||
$obj->data = array();
|
||||
|
||||
echo json_encode($obj);
|
||||
|
||||
} else
|
||||
if ($fn == 1) //Принять и перенести терминал и объект в другую компанию
|
||||
{
|
||||
/*$object = json_decode(file_get_contents("php://input"));
|
||||
if ($object == null) {
|
||||
sendError("Request is empty!");
|
||||
}
|
||||
|
||||
$db = connectToDB();
|
||||
|
||||
$password = getPassword(5);
|
||||
|
||||
$sql = "select * from main.p__users_1(1,null,:company_name,:surname,:name,:position,:phone,:email,:password);";
|
||||
$stmt = $db->prepare($sql);
|
||||
$stmt->bindParam(':company_name', $object->firstname, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':surname', $object->lastname, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':name', $object->firstname, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':position', $object->position, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':phone', $object->phone, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':email', $object->email, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
|
||||
|
||||
$response = new stdClass();
|
||||
$response->errorCode = '0';
|
||||
$response->errorMessage = '';
|
||||
try {
|
||||
$res = $stmt->execute();
|
||||
} catch (Exception $ex) {
|
||||
if ($ex->getCode() == 'U1000') {
|
||||
sendError(trt('User_with_this_email_already_exists'));
|
||||
} else {
|
||||
sendError($ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
$response->data = array();
|
||||
$usr = new stdClass();
|
||||
$usr->id = '-1';
|
||||
if ($row = $stmt->fetch(PDO::FETCH_NUM)) {
|
||||
$usr->id = $row[0];
|
||||
$usr->del = 0; //SQLIte нет false
|
||||
$usr->seq = 1;
|
||||
$usr->company_id = ''; //Заполню ниже
|
||||
$usr->name = $object->firstname;
|
||||
$usr->surname = $object->lastname;
|
||||
$usr->patronymic = '';
|
||||
$usr->email = $object->email;
|
||||
$usr->phone = $object->phone;
|
||||
$usr->login = '';
|
||||
$usr->password = ''; //Пароль не отправляю а использую временный идентификатор
|
||||
$usr->hash = md5(uniqid(rand(), true));
|
||||
|
||||
//Обновляю идентификатор временного пароля для авторизации без ввода пароля
|
||||
try {
|
||||
$db->query("update main._users set hash='" . $usr->hash . "' where id=" . $usr->id); //TODO сделать в одной функции p__users_1 что выше
|
||||
} catch (Exception $e) {
|
||||
sendError($e->getMessage());
|
||||
}
|
||||
}
|
||||
$stmt = null;
|
||||
//Получаю id компании
|
||||
try {
|
||||
$res = $db->query("select company_id from main._users where id =" . $usr->id);
|
||||
} catch (Exception $e) {
|
||||
sendError($e->getMessage());
|
||||
}
|
||||
if ($res->rowCount() > 0) {
|
||||
$row = $res->fetch(PDO::FETCH_ASSOC);
|
||||
$usr->company_id = $row['company_id'];
|
||||
}
|
||||
array_push($response->data, $usr);
|
||||
|
||||
if ($_SESSION["LNG"] == 'ru') {
|
||||
$html = '<html><head><title>Сообщение</title></head><body>
|
||||
<h3>Поздравляю, вы зарегистрированы!</h3>
|
||||
<b>Ваш пароль: </b> ' . $password . '<br>
|
||||
</body></html>';
|
||||
} else {
|
||||
$html = '<html><head><title>Message</title></head><body>
|
||||
<h3>Congratulations, you are registered!</h3>
|
||||
<b>Your password: </b> ' . $password . '<br>
|
||||
</body></html>';
|
||||
}
|
||||
|
||||
//Отсылаю пароль на почту
|
||||
if (mail($usr->email, 'Motion-Engine.com', $html, "Content-type: text/html; charset=utf-8\r\nFrom: GEOVizor Site <info@geovizor.com>")) {
|
||||
|
||||
} else {
|
||||
sendError('Failed to send password email to!');
|
||||
}
|
||||
|
||||
echo json_encode($response);
|
||||
exit();*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
188
android/users/index.php
Normal file
188
android/users/index.php
Normal file
@ -0,0 +1,188 @@
|
||||
<?php
|
||||
|
||||
require_once("../../monitoring/config.php");
|
||||
//require_once("../../monitoring/tools.php");
|
||||
require_once("../../resources/metadata/include/tools.php");
|
||||
require_once("../createTerminalAndObject.php");
|
||||
|
||||
session_start();
|
||||
|
||||
function sendError($msg)
|
||||
{
|
||||
$obj = new StdClass();
|
||||
$obj->errorCode = 1;
|
||||
$obj->errorMessage = $msg;
|
||||
$obj->data = array();
|
||||
header('Content-Type: application/json');
|
||||
header("Cache-Control: no-cache, must-revalidate");
|
||||
echo json_encode($obj);
|
||||
exit();
|
||||
}
|
||||
|
||||
//Отвечаю только на POST запросы
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||
sendError("Request is GET method!");
|
||||
}
|
||||
|
||||
$fn=filter_input(INPUT_GET, 'fn', FILTER_VALIDATE_INT, array('options'=>array('default'=>-1)));
|
||||
if(isset($_GET['lng'])) $_SESSION["LNG"]=$_GET['lng']; else $_SESSION["LNG"]=2;//'en';
|
||||
|
||||
if($fn==0) { //Авторизация пользователя
|
||||
$object = json_decode(file_get_contents("php://input"));
|
||||
if ($object == null) {
|
||||
sendError("Request is empty!");
|
||||
}
|
||||
|
||||
$db = connectToDB();
|
||||
|
||||
$sql = "
|
||||
select
|
||||
id,
|
||||
cast(del as integer) as del,
|
||||
seq,
|
||||
main.getcompanyid(id) company_id,
|
||||
name,
|
||||
surname,
|
||||
patronymic,
|
||||
email,
|
||||
login,
|
||||
password,
|
||||
hash
|
||||
from
|
||||
main._users
|
||||
where
|
||||
del=false and (email='" . $object->login . "' or phone='" . $object->login . "' or login='" . $object->login . "') and (password='" . $object->password . "' or hash = '" . $object->password . "')
|
||||
order by seq";
|
||||
|
||||
try {
|
||||
$res = $db->query($sql);
|
||||
} catch (Exception $ex) {
|
||||
sendError($ex->getMessage());
|
||||
}
|
||||
|
||||
$obj = new StdClass();
|
||||
$obj->errorCode = 0;
|
||||
$obj->errorMessage = "";
|
||||
$obj->data = array();
|
||||
if ($row = $res->fetch(PDO::FETCH_ASSOC)) {
|
||||
$usr = new stdClass();
|
||||
$usr->id = $row['id'];
|
||||
$usr->del = $row['del'];
|
||||
$usr->seq = $row['seq'];
|
||||
$usr->company_id = $row['company_id'];
|
||||
$usr->name = $row['name'];
|
||||
$usr->surname = $row['surname'];
|
||||
$usr->patronymic = $row['patronymic'];
|
||||
$usr->email = $row['email'];
|
||||
$usr->login = $row['login'];
|
||||
$usr->password = $row['password'];
|
||||
$usr->hash = $row['hash']; //Временный пароль (TODO должен быть в паре с id сесии для разделения устройств)
|
||||
|
||||
array_push($obj->data, $usr);
|
||||
|
||||
//Проверяем есть ли терминал и объект у пользователя если нет то создаём
|
||||
createTerminalAndObject($usr->id,$object->android_id);
|
||||
}
|
||||
echo json_encode($obj);
|
||||
}else
|
||||
if ($fn==1) //Регистрация пользователя скопировал содержимое из основного приложения
|
||||
{
|
||||
$object = json_decode(file_get_contents("php://input"));
|
||||
if ($object == null) {
|
||||
sendError("Request is empty!");
|
||||
}
|
||||
|
||||
$db = connectToDB();
|
||||
|
||||
$password = getPassword(5);
|
||||
|
||||
$sql = "select * from main.p__users_1(1,null,:company_name,:surname,:name,:position,:phone,:email,:password);";
|
||||
$stmt = $db->prepare($sql);
|
||||
$stmt->bindParam(':company_name', $object->firstname, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':surname', $object->lastname, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':name', $object->firstname, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':position', $object->position, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':phone', $object->phone, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':email', $object->email, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
|
||||
|
||||
$response = new stdClass();
|
||||
$response->errorCode = '0';
|
||||
$response->errorMessage = '';
|
||||
try
|
||||
{
|
||||
$res = $stmt->execute();
|
||||
} catch (Exception $ex)
|
||||
{
|
||||
if($ex->getCode()=='U1000')
|
||||
{
|
||||
sendError(trt('User_with_this_email_already_exists'));
|
||||
}else {
|
||||
sendError($ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
$response->data = array();
|
||||
$usr = new stdClass();
|
||||
$usr->id = '-1';
|
||||
if($row = $stmt->fetch(PDO::FETCH_NUM))
|
||||
{
|
||||
$usr->id=$row[0];
|
||||
$usr->del = 0; //SQLIte нет false
|
||||
$usr->seq = 1;
|
||||
$usr->company_id = ''; //Заполню ниже
|
||||
$usr->name = $object->firstname;
|
||||
$usr->surname = $object->lastname;
|
||||
$usr->patronymic = '';
|
||||
$usr->email = $object->email;
|
||||
$usr->phone = $object->phone;
|
||||
$usr->login = '';
|
||||
$usr->password = ''; //Пароль не отправляю а использую временный идентификатор
|
||||
$usr->hash = md5(uniqid(rand(), true));
|
||||
|
||||
//Обновляю идентификатор временного пароля для авторизации без ввода пароля
|
||||
try {
|
||||
$db->query("update main._users set hash='".$usr->hash."' where id=".$usr->id); //TODO сделать в одной функции p__users_1 что выше
|
||||
} catch (Exception $e){
|
||||
sendError($e->getMessage());
|
||||
}
|
||||
}
|
||||
$stmt=null;
|
||||
//Получаю id компании
|
||||
try {
|
||||
$res = $db->query("select company_id from main._users where id =".$usr->id);
|
||||
} catch (Exception $e){
|
||||
sendError($e->getMessage());
|
||||
}
|
||||
if($res->rowCount()>0) {
|
||||
$row = $res->fetch(PDO::FETCH_ASSOC);
|
||||
$usr->company_id = $row['company_id'];
|
||||
}
|
||||
array_push($response->data, $usr);
|
||||
|
||||
if($_SESSION["LNG"]==1){
|
||||
$html='<html><head><title>Сообщение</title></head><body>
|
||||
<h3>Поздравляю, вы зарегистрированы!</h3>
|
||||
<b>Ваш пароль: </b> '.$password.'<br>
|
||||
</body></html>';
|
||||
}else{
|
||||
$html='<html><head><title>Message</title></head><body>
|
||||
<h3>Congratulations, you are registered!</h3>
|
||||
<b>Your password: </b> '.$password.'<br>
|
||||
</body></html>';
|
||||
}
|
||||
|
||||
//Отсылаю пароль на почту
|
||||
if(mail($usr->email,'Motion-Engine.com',$html,"Content-type: text/html; charset=utf-8\r\nFrom: GEOVizor Site <info@geovizor.com>"))
|
||||
{
|
||||
|
||||
}else{
|
||||
sendError('Failed to send password email to!');
|
||||
}
|
||||
|
||||
echo json_encode($response);
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
|
||||
68
android/work.php
Normal file
68
android/work.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
//пробегаемся по файлам(пакетам данных) в папке data и пытаемся вставить их в базу данных
|
||||
|
||||
require_once("../resources/metadata/include/tools.php");
|
||||
require_once("../monitoring/config.php");
|
||||
|
||||
$db = connectToDB();
|
||||
if($db!=null) {
|
||||
$dir = './data';
|
||||
$cdir = scandir($dir);
|
||||
foreach ($cdir as $key => $fname) {
|
||||
if (afterLast($fname, '.') == 'json') {
|
||||
$tmpFName=$fname;
|
||||
$object = json_decode(file_get_contents($dir . '/' . $fname));
|
||||
if ($object) {
|
||||
$time = cutBeforeFirst($tmpFName, '_');
|
||||
$imei = cutBeforeFirst($tmpFName, '_');
|
||||
$fn = cutBeforeFirst($tmpFName, '.');
|
||||
if ($fn == 1) {
|
||||
$count=0;
|
||||
$db->beginTransaction();
|
||||
foreach ($object->data as &$value) {
|
||||
$sql="select * from main.setlocation(1,'$imei',$value->lat,$value->lon,$value->alt,null,null,to_timestamp($value->time)::timestamp without time zone,null);";
|
||||
try {
|
||||
$res = $db->query($sql);
|
||||
} catch (Exception $ex) {
|
||||
error_log($ex->getMessage());
|
||||
}
|
||||
while ($row = $res->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
if(count($object->data)==$count){
|
||||
$db->commit();
|
||||
$result=true;
|
||||
}else{
|
||||
$db->rollBack();
|
||||
}
|
||||
}
|
||||
if ($fn == 2) {
|
||||
$count=0;
|
||||
$db->beginTransaction();
|
||||
foreach ($object->data as &$value) {
|
||||
$sql="select * from main.setReading(1,'$imei',$value->sensor_type_id,$value->value,to_timestamp($value->time)::timestamp without time zone,to_timestamp($time)::timestamp without time zone);";
|
||||
try {
|
||||
$res = $db->query($sql);
|
||||
} catch (Exception $ex) {
|
||||
error_log($ex->getMessage());
|
||||
}
|
||||
while ($row = $res->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
if(count($object->data)==$count){
|
||||
$db->commit();
|
||||
$result=true;
|
||||
}else{
|
||||
$db->rollBack();
|
||||
}
|
||||
}
|
||||
}
|
||||
unlink($dir . '/' . $fname);
|
||||
}
|
||||
}
|
||||
}
|
||||
echo 'OK';
|
||||
Reference in New Issue
Block a user