· 8 years ago · Mar 27, 2018, 11:16 AM
1<?php
2
3/**
4 * @version: 5.1
5*/
6
7class mysqlQueries {
8 public $dbclass;
9 private $dblink;
10 private $logHandle;
11 private $trackerTypes;
12 public $dbresult;
13 public $dbclass_2;
14 private $dblink_2;
15 private $result2;
16 private $oldMRecord = false;
17 private $oldARecord = false;
18 private $COMBINE_MODE;
19 private $key;
20 private $keyText;
21
22
23 public function getQueryErrorNo() {
24 //return mysql_errno ( $this->dbclass->dblink );
25 return $this->dbclass->dblink->errno;
26 }
27 public function convertText($code) {
28 return $this->dbclass->get_escape_string ( $code );
29 }
30 public function openDebugLog() {
31 $configuration = $this->getSystemPreferences ();
32 $filename = $configuration [0] ['SYSTEM_PATH'] . "/debug.log";
33
34 if (file_exists ( $filename )) {
35 $size = filesize ( $filename );
36 if ($size >= MAILLOG_FILESIZE) {
37 $cmd = "gzip -c " . $filename . " > " . $configuration [0] ['SYSTEM_PATH'] . "/debug_" . date ( "Y_m_d" ) . ".gz";
38 exec ( $cmd, $output );
39 unlink ( $filename );
40 }
41 $this->logHandle = fopen ( $filename, "a" );
42 } else {
43 $this->logHandle = fopen ( $filename, "w" );
44 }
45 }
46
47 public function encrypt($data) {
48 $key_size = strlen($this->key);
49 $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
50 $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
51 $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->key,
52 $data, MCRYPT_MODE_CBC, $iv);
53 $ciphertext = $iv . $ciphertext;
54 return base64_encode($ciphertext);
55 }
56
57 public function decrypt($data) {
58 $ciphertext_dec = base64_decode($data);
59 $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
60 $iv_dec = substr($ciphertext_dec, 0, $iv_size);
61 $ciphertext_dec = substr($ciphertext_dec, $iv_size);
62 # may remove 00h valued characters from end of plain text
63 $plaintext_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->key,
64 $ciphertext_dec, MCRYPT_MODE_CBC, $iv_dec);
65 return $plaintext_dec;
66 }
67
68 public function encrypt_aes($data) {
69 return AesCtr::encrypt($data,$this->keyText, 256);
70 }
71
72 public function decrypt_aes($data) {
73 return AesCtr::decrypt($data,$this->keyText, 256);
74 }
75
76 public function xor_encrypt($data) {
77 $r = rand(0, strlen($this->keyText));
78 $darr = str_split($data);
79 $key = str_split( $this->keyText);
80 $index = $r;
81
82 for ($i = 0; $i < count($darr); $i++) {
83 $darr[$i] = $darr[$i] ^ $key[$index++];
84 if ($index >= count($key)) $index = 0;
85 }
86
87 return base64_encode($r.",".implode('',$darr));
88 }
89
90
91 public function xor_decrypt($data) {
92 $data = base64_decode($data);
93 $rtr = explode(",", $data);
94 $darr = str_split($rtr[1]);
95 $key = str_split( $this->keyText);
96 $index = $rtr[0];
97
98 for ($i = 0; $i < count($darr); $i++) {
99 $darr[$i] = $darr[$i] ^ $key[$index++];
100 if ($index >= count($key)) $index = 0;
101 }
102 return implode('',$darr);
103 }
104
105
106
107
108
109 function writeDebugLog($str) {
110 if (is_resource ( $this->logHandle ))
111 fwrite ( $this->logHandle, $str );
112 }
113 function closeDebugLog() {
114 if (is_resource ( $this->logHandle ))
115 fclose ( $this->logHandle );
116 }
117 public function getSystemPreferences() {
118 $QUERY = "SELECT * FROM systemPreferences";
119 $this->dbclass->execute_query ( $QUERY );
120 return $this->dbclass->get_result_complete ();
121 }
122 public function getCompiledLanguages($lcode) {
123 $QUERY = "SELECT * FROM languages LEFT JOIN langCompileStatus USING (lcode) WHERE lcode = \"{$lcode}\"";
124 $this->dbclass->execute_query ( $QUERY );
125 $language = $this->dbclass->get_result_complete ();
126 return $language;
127 }
128 public function updateCompiledLanguages($lcode, $time) {
129 $QUERY = "REPLACE INTO langCompileStatus SET lcode = \"{$lcode}\", mtime='" . $time . "'";
130 $this->dbclass->execute_query ( $QUERY );
131 }
132 public function getSupportedLanguages() {
133 $QUERY = "SELECT * FROM languages order by name";
134 $this->dbclass->execute_query ( $QUERY );
135 return $this->dbclass->get_result_complete ();
136 }
137 public function getLanguage($code) {
138 $_SESSION ['lcode'] = $code; // For automatic reporting module
139
140 $QUERY = "SELECT * FROM languages WHERE lcode = \"{$code}\"";
141 $this->dbclass->execute_query ( $QUERY );
142 return $this->dbclass->get_result_complete ();
143 }
144 public function getDefaultLanguage() {
145 $QUERY = "SELECT * FROM languages WHERE selected = TRUE";
146 $this->dbclass->execute_query ( $QUERY );
147 $answer = $this->dbclass->get_result_complete ();
148 $_SESSION['language'] = $_SESSION ['lcode'] = $answer [0] ['lcode']; // For automatic reporting module
149 return $answer;
150 }
151
152 public function getUserRecordFromTracker($tid) {
153 $QUERY = "SELECT * FROM trackers WHERE trackerid=\"{$tid}\"";
154 $this->dbclass->execute_query ( $QUERY );
155 $result = $this->dbclass->get_result_complete ();
156
157 $QUERY = "SELECT * FROM Users WHERE username=\"" . $result [0] ['username'] . "\"";
158 $this->dbclass->execute_query ( $QUERY );
159 $result = $this->dbclass->get_result_complete ();
160 return $result;
161 }
162 public function getUserRecord($username) {
163 $uname = $this->dbclass->get_escape_string ( $username );
164 $QUERY = "SELECT * FROM Users WHERE username=\"{$uname}\"";
165 $this->dbclass->execute_query ( $QUERY );
166 return $this->dbclass->get_result_complete ();
167 }
168
169 public function getUserList($fields = '*') {
170 $QUERY = "SELECT $fields FROM Users";
171 $this->dbclass->execute_query ( $QUERY );
172 return $this->dbclass->get_result_complete ();
173 }
174
175 public function getPOIByKeywords($keywords){
176 $QUERY = "SELECT * FROM POI where keywords='$keywords'";
177 $this->dbclass->execute_query ( $QUERY );
178 return $this->dbclass->get_result_complete ();
179 }
180public function getPOIByID ($id) {
181 $QUERY = "SELECT * FROM POI where id=$id";
182 $this->dbclass->execute_query ( $QUERY );
183 return $this->dbclass->get_result_complete ();
184 }
185
186 public function getUserRecordWithPreferences($username) {
187 $uname = $this->dbclass->get_escape_string ( $username );
188 $QUERY = "SELECT * FROM Users left join userPreferences using(username) WHERE username=\"{$uname}\"";
189 $this->dbclass->execute_query ( $QUERY );
190 return $this->dbclass->get_result_complete ();
191 }
192 public function updateLoginRetries($username, $value) {
193 $now = time ();
194 $uname = $this->dbclass->get_escape_string ( $username );
195 $QUERY = "UPDATE Users SET noofretry=$value, blocktime=$now WHERE username=\"{$uname}\"";
196 $this->dbclass->execute_query ( $QUERY );
197 }
198 public function getRecordFromEmail($email) {
199 $email = $this->dbclass->get_escape_string ( $email );
200 $QUERY = "SELECT * FROM Users WHERE email=\"{$email}\"";
201 $this->dbclass->execute_query ( $QUERY );
202 return $this->dbclass->get_result_complete ();
203 }
204 public function getBackupStats() {
205 $query = "SELECT datetime,stored,downloaded FROM backup_log ORDER BY datetime DESC LIMIT 0,5";
206 $this->dbclass->execute_query ( $query );
207 $answer = $this->dbclass->get_result_complete ();
208
209 if ($answer == false) {
210 return array ();
211 }
212
213 $entries_count = count ( $answer );
214
215 $returnAnswer = array ();
216
217 for($i = 0; $i < $entries_count; $i ++) {
218 $logEntry = new backupLogEntry ();
219 $date = new DateTime ( $answer [$i] ['datetime'], new DateTimeZone ( "UTC" ) );
220 $date->setTimezone ( new DateTimeZone ( $_SESSION ['timezone'] ) );
221
222 $logEntry->date = $date->format ( 'Y-m-d' );
223 $logEntry->time = $date->format ( 'H:i:s' );
224 $logEntry->stored = $answer [$i] ['stored'] ? "1" : "0";
225 $logEntry->downloaded = $answer [$i] ['downloaded'] ? "1" : "0";
226 array_push ( $returnAnswer, $logEntry );
227 }
228
229 return $returnAnswer;
230 } // function
231 public function getDatabaseStats() { //This function is rewritten in MongoDB with name getMongoDatabaseStats() in mysqlQueries.php
232 global $GMONGO;
233 $query = "SELECT * FROM trackers";
234 $this->dbclass->execute_query ( $query );
235 $answer = $this->dbclass->get_result_complete ();
236
237 $returnAnswer = new databaseCounting ();
238
239 if ($answer == false) {
240 $returnAnswer->eventRecords = 0;
241 $returnAnswer->locationRecords = 0;
242 return $returnAnswer;
243 }
244
245 $tracker_count = count ( $answer );
246
247 for($i = 0; $i < $tracker_count; $i ++) {
248 $QUERY = "SELECT MAX(id) FROM A{$answer[$i]['trackerid']}";
249 $this->dbclass->execute_query ( $QUERY );
250 $cans = $this->dbclass->get_result_complete ();
251
252 if ($cans != false) {
253 $returnAnswer->locationRecords += $cans [0] ['MAX(id)'];
254 }
255
256 $QUERY = "SELECT MAX(id) FROM E{$answer[$i]['trackerid']}";
257 $this->dbclass->execute_query ( $QUERY );
258 $cans = $this->dbclass->get_result_complete ();
259
260 if ($cans != false) {
261 $returnAnswer->eventRecords += $cans [0] ['MAX(id)'];
262 }
263 }
264
265 return $returnAnswer;
266 } // function
267 public function getTrackersStats() {
268 //global $GMONGO;
269
270 if ($_SESSION['username'] == 'root')
271 $query = "SELECT * FROM trackers";
272 else if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
273 $query = "SELECT trackers.* FROM adminTrackersMap INNER JOIN trackers USING(trackerid) WHERE username = '".$_SESSION['username']."'";
274 else if ($_SESSION['accounttype'] == USERTYPE_FLEET)
275 $query = "SELECT trackers.* FROM trackersMap INNER JOIN trackers USING(trackerid) WHERE username = '".$_SESSION['username']."'";
276
277 $this->dbclass->execute_query ( $query );
278 $answer = $this->dbclass->get_result_complete ();
279
280 if ($answer == false) {
281 return false;
282 }
283
284 $gmmtime = time ();
285
286 //$dt = new datetimeStruct ();
287
288 // $tdate = gmdate("Y-m-d",$gmmtime);
289 // $ttime = gmdate("%H", $gmmtime)*3600 + gmdate("%M", $gmmtime)*60 + gmdate("%S", $gmmtime);
290
291 $tracker_count = count ( $answer );
292 $returnAnswer = array ();
293
294 $returnAnswer ['overall']->workingCount = 0;
295 $returnAnswer ['overall']->stalledCount = 0;
296 $returnAnswer ['overall']->totalCount = $tracker_count;
297
298 for($i = 0; $i < $tracker_count; $i ++) {
299 //$cans = $GMONGO->getLastARecord($answer[$i]['trackerid']);
300 $cans = $this->getAGLOBALSrecord($answer[$i]['trackerid']);
301
302 if (isset ( $returnAnswer [$answer [$i] ['type']] ) == false) {
303 $returnAnswer [$answer [$i] ['type']] = new trackersCounting ();
304 $returnAnswer [$answer [$i] ['type']]->type = $answer [$i] ['type'];
305 }
306
307 if ($cans != false) {
308 //$dt->setTimeSeconds ( $cans [0] ['time'] );
309 //$dt->setDate ( $cans [0] ['date'] );
310 //$tmtime = gmmktime ( $dt->hour, $dt->minutes, $dt->seconds, $dt->month, $dt->day, $dt->year );
311 $tmtime = $cans [0] ['timestamp'];
312
313 if (($gmmtime - $tmtime) > NON_WORKING_TRACKER_TIME) {
314 $returnAnswer [$answer [$i] ['type']]->stalledCount ++;
315 $returnAnswer ['overall']->stalledCount ++;
316 }
317 else {
318 $returnAnswer [$answer [$i] ['type']]->workingCount ++;
319 $returnAnswer ['overall']->workingCount ++;
320 }
321 } else {
322 $returnAnswer [$answer [$i] ['type']]->stalledCount ++;
323 $returnAnswer ['overall']->stalledCount ++;
324 }
325
326 $returnAnswer [$answer [$i] ['type']]->totalCount ++;
327 }
328
329 return $returnAnswer;
330 } // function
331
332 public function getTrackersCount($username, $type) {
333 $username = $this->dbclass->get_escape_string($username);
334
335 if ($type == 'admin') {
336 $query = "SELECT COUNT(*) FROM adminTrackersMap WHERE username='$username'";
337 }else {
338 $query = "SELECT COUNT(*) FROM trackersMap WHERE username='$username'";
339 }
340
341 $this->dbclass->execute_query ( $query );
342 $answer = $this->dbclass->get_result_complete ();
343
344 return $answer[0]['COUNT(*)'];
345 }
346
347
348 public function getTrackersByUsername($username) {
349 $username = $this->dbclass->get_escape_string($username);
350 $query = "SELECT * FROM trackersMap WHERE username='$username'";
351
352 $this->dbclass->execute_query ( $query );
353 $answer = $this->dbclass->get_result_complete ();
354
355 return $answer;
356 }
357
358
359 public function getAllTrackersPositions($sDate,$sTime, $eDate, $eTime, $lat, $lng, $radius) { //$sdate, $sTime, $eDate, $eTime are in UTC
360 global $GMONGO;
361
362 $trackers = array();
363
364 $query = "SELECT * FROM trackers inner join trackersExInfo using (trackerid)";
365 $this->dbclass->execute_query ( $query );
366 $answer = $this->dbclass->get_result_complete ();
367
368 if ($answer == false) {
369 return $trackers;
370 }
371
372 $fdate = new FNSDateTime($_SESSION['timezone']);
373 $fdate->setUTCDate($sDate, $sTime);
374 $searchtime = $fdate->dateTime->getTimestamp();
375
376 //$periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
377 $periodClauseMongo = basicTransactions::getPeriodClauseMongo ( $sDate, $sTime, $eDate, $eTime );
378 $periodClauseMongo ['latitude'] = array('$exists' => 1, '$ne' => null);
379
380 foreach ($answer as $k=>$v) {
381 /*$query = "SELECT * FROM A".$v['trackerid']. " WHERE $periodClause ORDER BY date, time";
382
383 $this->dbclass->execute_query ( $query );
384 $records = $this->dbclass->get_result_complete ();*/
385
386 $records = $GMONGO->getAMRecord($v['trackerid'], $periodClauseMongo);
387
388 if ($records == false) continue;
389
390 $recordsCount = count($records);
391
392 for ($i = 0; $i < $recordsCount; $i++) {
393 $d = getDistance($lat, $lng, $records[$i]['latitude'], $records[$i]['longitude']) * 1000;
394 if ($d > $radius) continue;
395
396 $fdate->setUTCDate($records[$i]['date'], $records[$i]['time']);
397 $records[$i]['datestamp'] = $fdate->getFormattedString();
398
399 /*$query = "SELECT * FROM M".$v['trackerid']. " WHERE date = '".$records[$i]['date']."' and time >='".$records[$i]['time']."' ORDER by date,time LIMIT 0,1";
400 $this->dbclass->execute_query ( $query );
401 $mrecord = $this->dbclass->get_result_complete ();
402 if ($mrecord != false) {
403 $records[$i] = array_merge($records[$i], $mrecord[0]);
404 }*/
405
406 $records[$i]['distance'] = $d;
407 $n = new emptyClass();
408 $n->info = $v;
409 $n->record = $records[$i];
410 array_push($trackers, $n);
411 break;
412 } //for
413 }
414
415 /*foreach ($answer as $k=>$v) {
416 $query = "SELECT * FROM A".$v['trackerid']. " WHERE $periodClause ORDER BY date, time";
417
418 $this->dbclass->execute_query ( $query );
419 $records = $this->dbclass->get_result_complete ();
420
421 if ($records == false) continue;
422
423 $recordsCount = count($records);
424
425 for ($i = 0; $i < $recordsCount; $i++) {
426 $d = getDistance($lat, $lng, $records[$i]['latitude'], $records[$i]['longitude']) * 1000;
427 if ($d > $radius) continue;
428
429 $fdate->setUTCDate($records[$i]['date'], $records[$i]['time']);
430 $records[$i]['datestamp'] = $fdate->getFormattedString();
431
432 $query = "SELECT * FROM M".$v['trackerid']. " WHERE date = '".$records[$i]['date']."' and time >='".$records[$i]['time']."' ORDER by date,time LIMIT 0,1";
433 $this->dbclass->execute_query ( $query );
434 $mrecord = $this->dbclass->get_result_complete ();
435 if ($mrecord != false) {
436 $records[$i] = array_merge($records[$i], $mrecord[0]);
437 }
438
439 $records[$i]['distance'] = $d;
440 $n = new emptyClass();
441 $n->info = $v;
442 $n->record = $records[$i];
443 array_push($trackers, $n);
444 break;
445 } //for
446 }*/ //foreach
447
448 return $trackers;
449 }
450
451
452 public function getHistoryNearbyTrackers ($stimestamp, $etimestamp, $lat, $lng, $radius) { //$sdate, $sTime, $eDate, $eTime are in UTC
453 global $GMONGO;
454
455 $trackers = array();
456
457 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
458 $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username = '".$_SESSION['username']."'";
459 else if ($_SESSION['accounttype'] == USERTYPE_FLEET)
460 $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username='".$_SESSION['username']."'";
461 else
462 $query = "SELECT * FROM trackers inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid)";
463
464
465 $this->dbclass->execute_query ( $query );
466 $answer = $this->dbclass->get_result_complete ();
467
468 if ($answer == false) {
469 return $trackers;
470 }
471
472 $fdate = new FNSDateTime($_SESSION['timezone']);
473
474 //$periodClauseMongo = basicTransactions::getPeriodClauseMongo ( $sDate, $sTime, $eDate, $eTime );
475 $periodClauseMongo = array('timestamp' => array('$gte' => $stimestamp, '$lte' => $etimestamp));
476 $periodClauseMongo ['latitude'] = array('$exists' => 1, '$ne' => null);
477
478
479 foreach ($answer as $k=>$v) {
480 $records = $GMONGO->getAMRecord($v['trackerid'], $periodClauseMongo);
481// print_r($records);
482
483 if ($records == false) continue;
484
485 $recordsCount = count($records);
486 //echo $recordsCount."<br>";
487
488 $r = array();
489
490 for ($i = 0; $i < $recordsCount; $i++) {
491 $d = getDistance($lat, $lng, $records[$i]['latitude'], $records[$i]['longitude']) * 1000;
492 //echo "Distance ".$d." radius ".$radius."<br>";
493 if ($d > $radius) continue;
494 //print_r($records[$i]);
495
496 $fdate->setUTCDate($records[$i]['date'], $records[$i]['time']);
497 $records[$i]['datestamp'] = $fdate->getFormattedString();
498
499 $records[$i]['distance'] = $d;
500 /*$n = new emptyClass();
501 $n->info = $v;
502 $n->record = $records[$i];
503 array_push($trackers, $n);*/
504 //print_r($records[$i]);
505 array_push($r, $records[$i]);
506 //print_r($r);
507 //array_push($trackers, $this->getTrackerDataObject($v, false, $records[$i], false, true));
508// print_r($v);
509 array_push($trackers, $this->getNearbyTrackerDataObject($v, false, $r, false));
510 break;
511 } //for
512 }
513
514 return $trackers;
515 }
516
517
518
519 public function getTrackerDuration_withIgnitionHistory($tid, $status, $ts) {
520 global $GMONGO;
521 $sinceBeginning = array(array('timestamp' => 0));
522
523 switch ($status) {
524 case "s" :
525 //$lastIgnition = $GMONGO->getAMLastIgnition($tid);
526 $lastIgnition = $GMONGO->getAMLastIgnition_beforeTimestamp($tid, $ts);
527 if ($lastIgnition == false)
528 $lastIgnition = $sinceBeginning;
529
530 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
531 break;
532
533 case "i" : //Have changed this
534 //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
535 $result = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp'=>array('$lte' => $ts), 'speed' => array('$gt' => 0)),1);
536
537 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $result[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
538 break;
539
540 case "n" :
541 case "g" :
542 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('latitude' => array('$exists' => 1, '$ne' => null)),1);
543 if ($ans == false)
544 return false;
545 break;
546
547 case "m" :
548 //$ans = $GMONGO->getAMLastStopped($tid);
549 $ans = $GMONGO->getAMLastStopped_beforeTimestamp($tid, $ts);
550 if ($ans == false) {
551 $ans = $sinceBeginning;
552 }
553 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
554 break;
555
556 default :
557 return false;
558 }
559
560 $obj = new emptyClass ();
561 $obj->date = $ans [0] ['date'];
562 $obj->time = $ans [0] ['time'];
563 $obj->timestamp = $ans [0] ['timestamp'];
564
565 return $obj;
566 }
567
568 public function getTrackerDuration_withoutIgnitionHistory($tid, $status, $ts) {
569 global $GMONGO;
570 //$sinceBeginning = 0;
571 $sinceBeginning = array(array('timestamp' => 0));
572
573 switch ($status) {
574 case "s" :
575 //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
576 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp'=>array('$lte' => $ts), 'speed' => array('$gt' => 0), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
577 //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
578
579 if ($ans == false)
580 $ans = $sinceBeginning;
581
582 //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp'])),1);
583 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
584 break;
585
586 case "n" :
587 case "g" :
588 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp'=>array('$lte' => $ts), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
589 if ($ans == false)
590 return false;
591 break;
592
593 case "m" :
594 //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0),1);
595 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp'=>array('$lte' => $ts), 'speed' => 0, 'latitude' => array('$exists' => 1, '$ne' => null)),1);
596
597 if ($ans == false)
598 $ans = $sinceBeginning;
599 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
600 break;
601
602 default :
603 return false;
604 }
605
606 $obj = new emptyClass ();
607 $obj->date = $ans [0] ['date'];
608 $obj->time = $ans [0] ['time'];
609 $obj->timestamp = $ans [0] ['timestamp'];
610
611 return $obj;
612 }
613
614 // Returns duration for the tracker in stopped or nodata mode
615 public function getTrackerDurationHistory($tid, $status, $ts) {
616 if ($this->isIgnitionEnabled ( $tid ))
617 return $this->getTrackerDuration_withIgnitionHistory ( $tid, $status, $ts );
618 return $this->getTrackerDuration_withoutIgnitionHistory ( $tid, $status, $ts );
619 }
620
621
622
623 public function getNearbyTrackerDataObject($tracker, $fetchRecords = true, $trec = false, $sortedReverse = false) {
624 global $GMONGO;
625
626 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
627
628 $tinfo = new trackerInfoRecord ();
629 $tinfo->name = $tracker ['name'];
630 $tinfo->fscode = $tracker ['type'];
631 $tinfo->tid = $tracker ['trackerid'];
632 $tinfo->simno = $tracker ['simno'];
633 $tinfo->searchKeywords = $tracker ['searchKeywords'];
634 $tinfo->imei = $tracker ['imei'];
635 $tinfo->iconText = $tracker ['iconText'];
636 $tinfo->licensePlate = $tracker ['licensePlate'];
637 $tinfo->maxrpm = $tracker ['maxrpm'];
638 $tinfo->hLocations = array ();
639 $tinfo->cT = $this->getTrackerInfoField ( $tracker );
640 $tinfo->trackingType = isset ( $tracker ['apptype'] ) ? $tracker ['apptype'] : (isset ( $this->trackerTypes [$tracker ['type']] ) ? $this->trackerTypes [$tracker ['type']] ['trackingType'] : 'VEHICLE');
641 $tinfo->cStamp = time ();
642 if (isset($tracker ['color']))
643 $tinfo->color = $tracker ['color'];
644 else
645 $tinfo->color = '';
646 if (isset($tracker ['regDate']))
647 $tinfo->regDate = $tracker ['regDate'];
648 else
649 $tinfo->regDate = '';
650 if (isset($tracker ['vehicleModel']))
651 $tinfo->vehicleModel = $tracker ['vehicleModel'];
652 else
653 $tinfo->vehicleModel = '';
654
655 if ($fetchRecords == true) {
656 //$this->dCache_validateCache ( $tracker ['trackerid'] );
657 //$cTS = $_SESSION ['dCache'] [$tracker ['trackerid']][0];
658
659 //$trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array("timestamp" => array('$gte' => $cTS), 'latitude' => array('$exists' => 1, '$ne' => null)));
660 //$trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array("timestamp" => array('$gte' => $cTS)));
661 } else {
662 if ($trec != false) {
663 if ($sortedReverse == false)
664 $trec = array_reverse ( $trec );
665 //$_SESSION ['dCache'] [$tracker ['trackerid']][0] = $trec [0] ['timestamp'];
666 //unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] );
667 }
668 }
669
670 if ($trec == false) {
671 srand ();
672 $tinfo->status = "n";
673 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status );
674 $tinfo = removeNullFromObject ( $tinfo );
675 return $tinfo;
676 }
677
678 $trec_count = count ( $trec );
679
680 if ($trec_count > 2) {
681 for($x = $trec_count - 2; $x > 0; $x --) {
682 $n = new trackerRecord ();
683 foreach ( $n as $k => $v )
684 $n->{$k} = $trec [$x] [$k];
685
686 $fnsdate->setUTCDate ( $n->date, $n->time );
687 $n->timeString = $fnsdate->getFormattedTimeString ();
688 array_push ( $tinfo->hLocations, $n );
689 }
690 }
691
692 $fdate = new FNSDateTime($_SESSION['timezone']);
693 $fdate->setTimestamp($trec[0]['timestamp']);
694
695 $tinfo->latitude = $trec [0] ['latitude'];
696 $tinfo->longitude = $trec [0] ['longitude'];
697 $tinfo->speed = $trec [0] ['speed'];
698 $tinfo->direction = $trec [0] ['direction'];
699 $tinfo->date = $fdate->UTCDateString;
700 $tinfo->time = $fdate->UTCTime;
701 $tinfo->timestamp = $trec [0] ['timestamp'];
702
703
704 //$_SESSION ['dCache'] [$tinfo->tid] [0] = $trec[0]['timestamp'];
705
706 //$inputs = $trec;
707 $inputs = $this->getInputs ( $tinfo->tid, false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
708
709 if ($inputs != false) {
710 for($i = 1; $i <= 5; $i ++) {
711 if (isset ( $inputs [0] ['fuel' . $i] ))
712 $tinfo->{'fuel' . $i} = $inputs [0] ['fuel' . $i];
713
714 if (isset ( $inputs [0] ['temperature' . $i] ))
715 $tinfo->{'temperature' . $i} = $inputs [0] ['temperature' . $i];
716 }
717
718 if (isset ( $inputs ['0'] ['ibattery'] ))
719 $tinfo->ibattery = $inputs ['0'] ['ibattery'];
720
721 $tinfo->IO = $inputs [0] ['IO'];
722
723 $tinfo->JStr = $inputs [0] ['misc'];
724
725 if (isset ( $tracker ['privatePublicUse'] ) && $tracker ['privatePublicUse'] == 1)
726 $tinfo->privatePublic = $inputs [0] ['private'];
727
728 $tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
729 if ($tinfo->odometer == false)
730 $tinfo->odometer = null;
731
732 $tinfo->driver = $this->getDriverName ( $tinfo->tid );
733 } else {
734
735 for($i = 1; $i <= 5; $i ++) {
736 $tinfo->{'fuel' . $i} = null;
737 $tinfo->{'temperature' . $i} = null;
738 }
739
740 $tinfo->IO = null;
741 $tinfo->odometer = null;
742 $tinfo->privatePublic = 0;
743 }
744
745 $tinfo->status = $this->getStatus ( $tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO );
746
747 /*$gmmtime = time ();
748
749 $dt = new datetimeStruct ();
750 $dt->setTimeSeconds ( $time );
751 $dt->setDate ( $date );
752 $tmtime = gmmktime ( $dt->hour, $dt->minutes, $dt->seconds, $dt->month, $dt->day, $dt->year );*/
753
754 /*if (($gmmtime - $tmtime) > NON_WORKING_TRACKER_TIME) {
755 return "n";
756 } else*/ //{
757 if ($tinfo->IO == false)
758 $tinfo->status = "s";
759 // strpos is always checked with the equality (===) operator
760 else {
761 if ($this->isIgnitionEnabled($tinfo->tid)) {
762 if (strpos($inputs, "j") === false) $tinfo->status = "s";
763 else if ($tinfo->speed > 0) $tinfo->status = "m";
764 else $tinfo->status = "i";
765 } else {
766 if ($tinfo->speed > 0) $tinfo->status = "m";
767 else $tinfo->status = "s";
768 }
769 }
770 //}
771
772 if ($tinfo->status == 'm' || $tinfo->status == 'i' || $tinfo->status == 's') {
773
774 /*if ($rtype != 'historypositions') {
775 $linput = $this->getInputs($tinfo->tid);
776
777 if ($linput != false) {
778 //if (isset($trec[0]['latitude']) == false) {
779 $ltimestamp = $linput [0] ['timestamp'];
780 $ptimestamp = $tinfo->timestamp;
781
782 if (($ltimestamp - $ptimestamp) > NO_GPS_ICON_TIME) {
783 $tinfo->status = 'g';
784 $_SESSION ['dCache'] [$tracker ['trackerid']] [2] = true;
785 }
786 //}
787 }
788 }*/
789 } else {
790 //$_SESSION ['dCache'] [$tracker ['trackerid']] [5] = true;
791 }
792
793 //To remove any previous data if last packet has ignition
794 if ($tinfo->status == 'n' || $tinfo->status == 's'){
795 $tinfo->hLocations = array();
796 }
797
798 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status, $tinfo->latitude );
799
800 $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
801 $tinfo->dateString = $fnsdate->getFormattedString ();
802 $tinfo->timeString = $fnsdate->getFormattedTimeString ();
803
804 //$tinfo->events = $this->getTrackersEvents ( $tinfo->tid, true );
805
806 $duration = $this->getTrackerDurationHistory ( $tinfo->tid, $tinfo->status, $tinfo->timestamp );
807 if ($duration != false) {
808 $fnsdate->setUTCDate ( $duration->date, $duration->time );
809 $tinfo->durationStamp = $fnsdate->dateTime->getTimestamp ();
810 } else {
811 $tinfo->durationStamp = null;
812 }
813
814 $tinfo->duration = $tinfo->timestamp - $duration->timestamp;
815
816 if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] ) == false) {
817
818 if (count ( $tinfo->hLocations ) > 0)
819 $sObj = $tinfo->hLocations [0];
820 else
821 $sObj = $tinfo;
822
823 $fnsdate->setUTCDate ( $sObj->date, $sObj->time );
824
825 if ($tinfo->status == 'm' || $tinfo->status == 'i' || ($tinfo->status == 'g' && count($tinfo->hLocations) > 0)) {
826 $tinfo->sTime = $fnsdate->getFormattedString ();
827 $tinfo->sLatitude = $sObj->latitude;
828 $tinfo->sLongitude = $sObj->longitude;
829 }
830
831 $_SESSION ['dCache'] [$tracker ['trackerid']] [4] = true;
832 }
833
834 return removeNullFromObject ( $tinfo );
835 }
836
837
838 public function fleet_getTrackersStats() {
839 global $GMONGO;
840
841 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
842 $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) WHERE username=\"{$username}\"";
843 $this->dbclass->execute_query ( $query );
844 $answer = $this->dbclass->get_result_complete ();
845
846 if ($answer == false) {
847 return false;
848 }
849
850 $gmmtime = time ();
851 $dt = new datetimeStruct ();
852
853 $tracker_count = count ( $answer );
854 $returnAnswer = new emptyClass ();
855
856 $returnAnswer->workingCount = 0;
857 $returnAnswer->stalledCount = 0;
858 $returnAnswer->expiredCount = 0;
859 $returnAnswer->expiredList = array ();
860 $returnAnswer->totalCount = $tracker_count;
861
862 for($i = 0; $i < $tracker_count; $i ++) {
863 if (isset ( $answer [$i] ['trackerExpiry'] ) && $answer [$i] ['trackerExpiry'] != NULL) {
864 if (($gmmtime - $answer [$i] ['trackerExpiry']) > 0) {
865 $returnAnswer->expiredCount ++;
866 array_push ( $returnAnswer->expiredList, $answer [$i] ['name'] );
867 continue;
868 }
869 }
870
871 $cans = $GMONGO -> getLastARecord($answer[$i]['trackerid']);
872
873 if ($cans != false) {
874 //$dt->setTimeSeconds ( $cans [0] ['time'] );
875 //$dt->setDate ( $cans [0] ['date'] );
876 //$tmtime = gmmktime ( $dt->hour, $dt->minutes, $dt->seconds, $dt->month, $dt->day, $dt->year );
877 $tmtime = $cans [0] ['timestamp'];
878
879 if (($gmmtime - $tmtime) > NON_WORKING_TRACKER_TIME)
880 $returnAnswer->stalledCount ++;
881 else
882 $returnAnswer->workingCount ++;
883 } else
884 $returnAnswer->stalledCount ++;
885 }
886
887 return $returnAnswer;
888 } // function
889 public function getTrackerFuelProfiles($tid) {
890 $QUERY = "SELECT * from trackersFeatures where trackerid={$tid}";
891 $this->dbclass->execute_query ( $QUERY );
892 $enprofiles = $this->dbclass->get_result_complete ();
893 $enprofiles = $enprofiles [0];
894
895 $rprofiles = array ();
896
897 for($i = 1; $i <= 5; $i ++) {
898 $profile = false;
899
900 if ($enprofiles ['enFuelModel' . $i] == 1) {
901 $pname = $this->dbclass->get_escape_string ( $enprofiles ['fuelModel' . $i] );
902
903 $QUERY = "SELECT * from fuelProfiles where name=\"{$pname}\"";
904 $this->dbclass->execute_query ( $QUERY );
905 $profile = $this->dbclass->get_result_complete ();
906 }
907 array_push ( $rprofiles, $profile );
908 }
909
910 return $rprofiles;
911 }
912 public function getTrackerTemperatureProfiles($tid) {
913 $QUERY = "SELECT * from trackersFeatures where trackerid={$tid}";
914 $this->dbclass->execute_query ( $QUERY );
915 $enprofiles = $this->dbclass->get_result_complete ();
916 $enprofiles = $enprofiles [0];
917
918 $rprofiles = array ();
919
920 for($i = 1; $i <= 5; $i ++) {
921
922 $profile = false;
923
924 if ($enprofiles ['enTempModel' . $i] == 1) {
925 $pname = $this->dbclass->get_escape_string ( $enprofiles ['tempModel' . $i] );
926
927 $QUERY = "SELECT * from temperatureProfiles where name=\"{$pname}\"";
928 $this->dbclass->execute_query ( $QUERY );
929 $profile = $this->dbclass->get_result_complete ();
930 }
931
932 array_push ( $rprofiles, $profile );
933 }
934
935 return $rprofiles;
936 }
937 public function getFuelFromProfile($profile, $fuel) {
938
939 if ($profile != false && $fuel === NULL)
940 return 0; //New
941
942 if ($profile == false || $fuel === NULL)
943 return null;
944
945 if ($profile [0] ['autoCompute'] == 1)
946 return $fuel;
947
948 $reverse = false;
949
950 if ($profile [0] ['emptyTankVoltage'] > $profile [0] ['fullTankVoltage']) {
951 $lowerReference = $profile [0] ['fullTankVoltage'];
952 $upperReference = $profile [0] ['emptyTankVoltage'];
953 $reverse = true;
954 } else {
955 $lowerReference = $profile [0] ['emptyTankVoltage'];
956 $upperReference = $profile [0] ['fullTankVoltage'];
957 }
958
959 if ($fuel < $lowerReference)
960 $fuel = $lowerReference;
961 else if ($fuel > $upperReference)
962 $fuel = $upperReference;
963
964 if ($reverse)
965 $fuel = $upperReference - $fuel;
966
967 $ref = $upperReference - $lowerReference;
968
969 if ($ref > 0)
970 return floor ( ($fuel / ($upperReference - $lowerReference)) * 100 );
971 else
972 return 0;
973 }
974 public function getTemperatureFromProfile($profile, $temperature) {
975 if ($profile != false && $temperature === NULL)
976 return 0; //New
977
978 if ($profile == false || $temperature === NULL)
979 return null;
980
981 if ($profile [0] ['autoCompute'] == 1)
982 return $temperature;
983
984 $voltageDifference = $profile [0] ['voltageReference'] - $temperature;
985
986 if ($voltageDifference <= 0.00)
987 $voltageDifference = $profile [0] ['voltageReference'];
988
989 $cResistance = ($profile [0] ['fixedResistance'] * $temperature) / ($voltageDifference);
990
991 if ($cResistance == 0)
992 return $temperature;
993
994 $logvalue = log ( $profile [0] ['thermistorResistance'] / $cResistance );
995
996 $tComputed = (298.15 * $profile [0] ['BConstant'] / $logvalue / ($profile [0] ['BConstant'] / $logvalue - 298.15)) - 273.15;
997
998 if ($tComputed < $profile [0] ['lowerLimit'])
999 $tComputed = $profile [0] ['lowerLimit'];
1000 else if ($tComputed > $profile [0] ['upperLimit'])
1001 $tComputed = $profile [0] ['upperLimit'];
1002
1003 return sprintf ( "%2.2f", $tComputed );
1004 }
1005
1006 public function getInputs($tid, $lastInput = true, $date = "", $time = 0, $fscode = "", $adjustMeter = false) {
1007 global $GMONGO;
1008 //$fdate = new FNSDateTime($_SESSION['timezone']);
1009 $fdate = new FNSDateTime('UTC');
1010 $fdate->setUTCDate($date, $time);
1011
1012 if ($lastInput) {
1013 $inputs = $this->getMAGLOBALSrecord($tid);
1014 }else {
1015 $inputs = $GMONGO->getAMRecord($tid, array('timestamp' => $fdate->dateTime->getTimestamp()),1);
1016 }
1017
1018 if ($inputs != false) {
1019 if ($fscode == "FS-65") {
1020 // Fuel input has battery status
1021 // 4.2 as Maximum battery charge voltage
1022 // 3.5 as Minimum battery charge voltage
1023 $minimumCharge = 3.5;
1024 $maximumCharge = 4.2;
1025 $delta = $maximumCharge - $minimumCharge;
1026
1027 $level = floor ( (($inputs [0] ['fuel1'] - $minimumCharge) * 100) / $delta ); // Current Level - Minimum charge
1028
1029 if ($level <= 0)
1030 $level = 1;
1031 if ($level > 100)
1032 $level = 100;
1033
1034 $inputs ['0'] ['ibattery'] = $level;
1035 } else if ($fscode == "FS-29") {
1036 $inps = json_decode($inputs ['0'] ['misc'], true);
1037 list($battery) = sscanf($inps['battery'], "%d");
1038 $inputs[0] = array('ibattery' => $battery, 'misc'=> $inputs[0]['misc']);
1039 } else {
1040 $fprofiles = $this->getTrackerFuelProfiles ( $tid );
1041 $tprofiles = $this->getTrackerTemperatureProfiles ( $tid );
1042
1043
1044 for($i = 0; $i < 5; $i ++) {
1045 if ($fprofiles [$i] != false) {
1046 $inputs ['0'] ['fuel' . ($i + 1)] = $this->getFuelFromProfile ( $fprofiles [$i], $inputs ['0'] ['fuel' . ($i + 1)] );
1047 } else {
1048 unset ( $inputs ['0'] ['fuel' . ($i + 1)] );
1049 }
1050
1051 if ($tprofiles [$i] !== false) {
1052 $inputs ['0'] ['temperature' . ($i + 1)] = $this->getTemperatureFromProfile ( $tprofiles [$i], $inputs ['0'] ['temperature' . ($i + 1)] );
1053 } else {
1054 unset ( $inputs ['0'] ['temperature' . ($i + 1)] );
1055 }
1056 }
1057 }
1058 }
1059
1060 /*var_dump($inputs);
1061 echo "\r\n";*/
1062
1063 return $inputs;
1064 }
1065 /*public function getStatus($tid, $date, $time, $speed, $inputs) {
1066 // Makes Date and Time for non working computations
1067 $gmmtime = time ();
1068
1069 $dt = new datetimeStruct ();
1070 $dt->setTimeSeconds ( $time );
1071 $dt->setDate ( $date );
1072 $tmtime = gmmktime ( $dt->hour, $dt->minutes, $dt->seconds, $dt->month, $dt->day, $dt->year );
1073
1074 if (($gmmtime - $tmtime) > NON_WORKING_TRACKER_TIME) {
1075 return "n";
1076 } else {
1077 if ($speed > 0)
1078 return "m";
1079 else {
1080 if ($inputs == false)
1081 return "s";
1082
1083 // strpos is always checked with the equality (===) operator
1084 if ($this->isIgnitionEnabled ( $tid )) {
1085 if (strpos ( $inputs, "j" ) === false)
1086 return "s";
1087 else
1088 return "i";
1089 }
1090 return "s";
1091 }
1092 }
1093 }*/
1094
1095
1096
1097 public function getStatus($tid, $date, $time, $speed, $inputs) {
1098 // Makes Date and Time for non working computations
1099 $gmmtime = time ();
1100
1101 $dt = new datetimeStruct ();
1102 $dt->setTimeSeconds ( $time );
1103 $dt->setDate ( $date );
1104 $tmtime = gmmktime ( $dt->hour, $dt->minutes, $dt->seconds, $dt->month, $dt->day, $dt->year );
1105
1106 if (($gmmtime - $tmtime) > NON_WORKING_TRACKER_TIME) {
1107 //echo "<br>date ".$date." time ".$time." speed ".$speed." tmtime ".$tmtime." gmtime ".$gmmtime;
1108 return 'n';
1109 } else {
1110 if ($speed > 0)
1111 return 'm';
1112 else {
1113 if ($inputs == false) {
1114 return 's';
1115 //return 'i';
1116 }
1117 // strpos is always checked with the equality (===) operator
1118 if ($this->isIgnitionEnabled($tid)) {
1119 if (strpos($inputs, 'j') === false) return 's';
1120 else if ($speed > 0) return 'm';
1121 else return 'i';
1122 } else {
1123 if ($speed > 0) return 'm';
1124 else return 's';
1125 }
1126 }
1127 }
1128 }
1129
1130 public function getTrackerTypeList() {
1131 $query = "SELECT * FROM trackerHW ORDER BY fscode";
1132 $this->dbclass->execute_query ( $query );
1133 $answer = $this->dbclass->get_result_complete ();
1134 return $answer;
1135 }
1136 public function validateIMEI($imei) {
1137 $data = array();
1138 $query = "SELECT trackerid FROM trackers WHERE imei=\"$imei\"";
1139 $this->dbclass->execute_query ( $query );
1140 $answer = $this->dbclass->get_result_complete ();
1141 $data ['tid'] = $answer [0] ['trackerid'];
1142
1143 if ($answer != false) {
1144 $data ['code'] = EXISTS;
1145 //return - 1;
1146 return $data;
1147 }
1148
1149 $data ['tid'] = false;
1150 $data ['code'] = NOT_EXISTS;
1151 //return 1;
1152 return $data;
1153 }
1154 public function getIconIndex($status, $latitude = null, $timestamp = null) {
1155 switch ($status) {
1156 case 'm' :
1157 if (isset($timestamp) && $timestamp != false){
1158 $diff = time() - $timestamp;
1159 if ($diff <= PACKET_TS_LL)
1160 return 0;
1161 elseif ($diff > PACKET_TS_LL && $diff <= PACKET_TS_UL)
1162 return 6;
1163 elseif ($diff > PACKET_TS_UL)
1164 return 7;
1165 return 0;
1166 }
1167 return 0;
1168
1169 case 's' :
1170 return 1;
1171
1172 case 'i' :
1173 return 2;
1174
1175 case 'n' :
1176 if (isset($latitude) && $latitude && $latitude > -90 && $latitude < 90){
1177 return 5;
1178 }
1179 return 3;
1180
1181 case 'g' :
1182 return 4;
1183 }
1184 }
1185
1186 //private function getTrackerInfoField($tracker) {
1187 public function getTrackerInfoField($tracker) {
1188 if (isset ( $this->trackerTypes ) == false) {
1189 $this->trackerTypes = array ();
1190 $tl = $this->getTrackerTypeList ();
1191
1192 for($i = 0; $i < count ( $tl ); $i ++) {
1193 $this->trackerTypes [$tl [$i] ['fscode']] = $tl [$i];
1194 }
1195 }
1196
1197 if ($tracker ['apptype'] == null || $tracker ['apptype'] == "") {
1198 if (isset ( $this->trackerTypes [$tracker ['type']] ))
1199 $type = $this->trackerTypes [$tracker ['type']] ['trackingType'];
1200 else
1201 $type = $tracker ['apptype'];
1202 } else
1203 $type = $tracker ['apptype'];
1204
1205 switch ($type) {
1206 case 'VT' :
1207 return $tracker ['licensePlate'];
1208 case 'PT' :
1209 return $tracker ['simno'];
1210 case 'OT' :
1211 return $tracker ['simno'];
1212 case 'AT' :
1213 return $tracker ['identificationNo'];
1214 }
1215 }
1216
1217
1218 public function dCache_validateCache($tid) {
1219 if (isset ( $_SESSION ['dCache'] ) == false) {
1220 $_SESSION ['dCache'] = array ();
1221 }
1222
1223 if (isset ( $_SESSION ['dCache'] [$tid] ) == false) {
1224 $trec = $this->getAGLOBALSrecord($tid);
1225
1226 if ($trec != false) {
1227 $_SESSION ['dCache'] [$tid] = array ();
1228 $_SESSION ['dCache'] [$tid][0] = $trec [0] ['timestamp'];
1229 } else {
1230 $_SESSION ['dCache'] [$tid] = array ();
1231 $_SESSION ['dCache'] [$tid] = 0;
1232 }
1233 }
1234 }
1235
1236 public function getTrackerDataObject($tracker, $fetchRecords = true, $trec = false, $sortedReverse = false, $currentTrip = false) {
1237 global $GMONGO;
1238
1239 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
1240
1241 $tinfo = new trackerInfoRecord ();
1242 $tinfo->name = $tracker ['name'];
1243 $tinfo->fscode = $tracker ['type'];
1244 $tinfo->tid = $tracker ['trackerid'];
1245 $tinfo->simno = $tracker ['simno'];
1246 $tinfo->searchKeywords = $tracker ['searchKeywords'];
1247 $tinfo->imei = $tracker ['imei'];
1248 $tinfo->iconText = $tracker ['iconText'];
1249 $tinfo->licensePlate = $tracker ['licensePlate'];
1250 $tinfo->maxrpm = $tracker ['maxrpm'];
1251 $tinfo->hLocations = array ();
1252 $tinfo->cT = $this->getTrackerInfoField ( $tracker );
1253 $tinfo->trackingType = isset ( $tracker ['apptype'] ) ? $tracker ['apptype'] : (isset ( $this->trackerTypes [$tracker ['type']] ) ? $this->trackerTypes [$tracker ['type']] ['trackingType'] : 'VEHICLE');
1254 $tinfo->cStamp = time ();
1255
1256 if ($fetchRecords == true) {
1257 $this->dCache_validateCache ( $tracker ['trackerid'] );
1258 $cTS = $_SESSION ['dCache'] [$tracker ['trackerid']][0];
1259
1260 $trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array("timestamp" => array('$gte' => $cTS), 'latitude' => array('$exists' => 1, '$ne' => null)));
1261 //$trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array("timestamp" => array('$gte' => $cTS)));
1262 } else {
1263 if ($trec != false) {
1264 if ($sortedReverse == false)
1265 if ($sortedReverse == false)
1266 $trec = array_reverse ( $trec );
1267 $_SESSION ['dCache'] [$tracker ['trackerid']][0] = $trec [0] ['timestamp'];
1268 unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] );
1269 }
1270 }
1271
1272 if (isset ( $_GET ['update'] ) && $_GET ['update'] == 1) {
1273 if ($trec == false)
1274 return false;
1275
1276 else if ($trec [0] ['timestamp'] == $_SESSION ['dCache'] [$tracker ['trackerid']][0]) {
1277 //If no update is present
1278 //Get packet with no location
1279 //$linput = $GMONGO->getAMRecord_reverseSorted($tinfo->tid , array('latitude' => array('$exists' => 0)), 1);
1280 $linput = $GMONGO->getLastAMRecord($tinfo->tid);
1281 if ($linput == false) return false;
1282
1283 $ltimestamp = $linput[0]['timestamp'];
1284 $ptimestamp = $trec[0]['timestamp'];
1285
1286 if ($ptimestamp > $ltimestamp) return false;
1287
1288 if ((time () - $ptimestamp) < NON_WORKING_TRACKER_TIME) {
1289
1290 if (($ltimestamp - $ptimestamp) < NO_GPS_ICON_TIME)
1291 return false;
1292 else if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] ))
1293 return false;
1294 } else if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] ))
1295 return false;
1296 } else {
1297 if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] ))
1298 unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] );
1299
1300 if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] ))
1301 unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] );
1302 }
1303 }
1304
1305 if ($trec == false) {
1306 srand ();
1307 $tinfo->status = "n";
1308 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status );
1309 $tinfo = removeNullFromObject ( $tinfo );
1310 return $tinfo;
1311 }
1312
1313 $trec_count = count ( $trec );
1314
1315 if ($trec_count > 2) {
1316 for($x = $trec_count - 2; $x > 0; $x --) {
1317 $n = new trackerRecord ();
1318 foreach ( $n as $k => $v )
1319 $n->{$k} = $trec [$x] [$k];
1320
1321 $fnsdate->setUTCDate ( $n->date, $n->time );
1322 $n->timeString = $fnsdate->getFormattedTimeString ();
1323 array_push ( $tinfo->hLocations, $n );
1324 }
1325 }
1326
1327 $fdate = new FNSDateTime($_SESSION['timezone']);
1328 $fdate->setTimestamp($trec[0]['timestamp']);
1329
1330 $tinfo->latitude = $trec [0] ['latitude'];
1331 $tinfo->longitude = $trec [0] ['longitude'];
1332 $tinfo->speed = $trec [0] ['speed'];
1333 $tinfo->direction = $trec [0] ['direction'];
1334 $tinfo->date = $fdate->UTCDateString;
1335 $tinfo->time = $fdate->UTCTime;
1336 $tinfo->timestamp = $trec [0] ['timestamp'];
1337
1338
1339 $_SESSION ['dCache'] [$tinfo->tid] [0] = $trec[0]['timestamp'];
1340
1341 //$inputs = $trec;
1342 $inputs = $this->getInputs ( $tinfo->tid, false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
1343
1344 if ($inputs != false) {
1345 for($i = 1; $i <= 5; $i ++) {
1346 if (isset ( $inputs [0] ['fuel' . $i] ))
1347 $tinfo->{'fuel' . $i} = $inputs [0] ['fuel' . $i];
1348
1349 if (isset ( $inputs [0] ['temperature' . $i] ))
1350 $tinfo->{'temperature' . $i} = $inputs [0] ['temperature' . $i];
1351 }
1352
1353 if (isset ( $inputs ['0'] ['ibattery'] ))
1354 $tinfo->ibattery = $inputs ['0'] ['ibattery'];
1355
1356 $tinfo->IO = $inputs [0] ['IO'];
1357
1358 $tinfo->JStr = $inputs [0] ['misc'];
1359
1360 if (isset ( $tracker ['privatePublicUse'] ) && $tracker ['privatePublicUse'] == 1)
1361 $tinfo->privatePublic = $inputs [0] ['private'];
1362
1363 $tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
1364 if ($tinfo->odometer == false)
1365 $tinfo->odometer = null;
1366
1367 $tinfo->driver = $this->getDriverName ( $tinfo->tid );
1368 } else {
1369
1370 for($i = 1; $i <= 5; $i ++) {
1371 $tinfo->{'fuel' . $i} = null;
1372 $tinfo->{'temperature' . $i} = null;
1373 }
1374
1375 $tinfo->IO = null;
1376 $tinfo->odometer = null;
1377 $tinfo->privatePublic = 0;
1378 }
1379
1380 $tinfo->status = $this->getStatus ( $tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO );
1381
1382 if ($tinfo->status == 'm' || $tinfo->status == 'i' || $tinfo->status == 's') {
1383
1384
1385 $linput = $this->getInputs($tinfo->tid);
1386
1387 if ($linput != false) {
1388 //if (isset($trec[0]['latitude']) == false) {
1389 $ltimestamp = $linput [0] ['timestamp'];
1390 $ptimestamp = $tinfo->timestamp;
1391
1392 if (($ltimestamp - $ptimestamp) > NO_GPS_ICON_TIME) {
1393 $tinfo->status = 'g';
1394 $_SESSION ['dCache'] [$tracker ['trackerid']] [2] = true;
1395 }
1396 //}
1397 }
1398 } else {
1399 $_SESSION ['dCache'] [$tracker ['trackerid']] [5] = true;
1400 }
1401
1402 //To remove any previous data if last packet has ignition
1403 if ($tinfo->status == 'n' || $tinfo->status == 's'){
1404 $tinfo->hLocations = array();
1405 }
1406
1407 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status, $tinfo->latitude );
1408
1409 $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
1410 $tinfo->dateString = $fnsdate->getFormattedString ();
1411 $tinfo->timeString = $fnsdate->getFormattedTimeString ();
1412
1413 $tinfo->events = $this->getTrackersEvents ( $tinfo->tid, $currentTrip );
1414
1415 $duration = $this->getTrackerDuration ( $tinfo->tid, $tinfo->status );
1416 if ($duration != false) {
1417 $fnsdate->setUTCDate ( $duration->date, $duration->time );
1418 $tinfo->durationStamp = $fnsdate->dateTime->getTimestamp ();
1419 } else {
1420 $tinfo->durationStamp = null;
1421 }
1422
1423 if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] ) == false) {
1424
1425 if (count ( $tinfo->hLocations ) > 0)
1426 $sObj = $tinfo->hLocations [0];
1427 else
1428 $sObj = $tinfo;
1429
1430 $fnsdate->setUTCDate ( $sObj->date, $sObj->time );
1431
1432 if ($tinfo->status == 'm' || $tinfo->status == 'i' || ($tinfo->status == 'g' && count($tinfo->hLocations) > 0)) {
1433 $tinfo->sTime = $fnsdate->getFormattedString ();
1434 $tinfo->sLatitude = $sObj->latitude;
1435 $tinfo->sLongitude = $sObj->longitude;
1436 }
1437
1438 $_SESSION ['dCache'] [$tracker ['trackerid']] [4] = true;
1439 }
1440
1441 return removeNullFromObject ( $tinfo );
1442 }
1443
1444
1445 //Returns tracker data object
1446 public function getTrackerDataObject_mongo ($tracker, $fetchRecords = true, $trec = false, $sortedReverse = false, $currentTrip = false) {
1447 global $GMONGO;
1448
1449 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
1450
1451 $tinfo = new trackerInfoRecord ();
1452 $tinfo->name = $tracker ['name'];
1453 $tinfo->fscode = $tracker ['type'];
1454 $tinfo->tid = $tracker ['trackerid'];
1455 $tinfo->simno = $tracker ['simno'];
1456 $tinfo->searchKeywords = $tracker ['searchKeywords'];
1457 $tinfo->imei = $tracker ['imei'];
1458 $tinfo->trackerSerial = $tracker ['trackerSerial'];
1459 $tinfo->iconText = $tracker ['iconText'];
1460 $tinfo->licensePlate = $tracker ['licensePlate'];
1461 $tinfo->maxrpm = $tracker ['maxrpm'];
1462 $tinfo->hLocations = array ();
1463 $tinfo->cT = $this->getTrackerInfoField ( $tracker );
1464 $tinfo->trackingType = isset ( $tracker ['apptype'] ) ? $tracker ['apptype'] : (isset ( $this->trackerTypes [$tracker ['type']] ) ? $this->trackerTypes [$tracker ['type']] ['trackingType'] : 'VEHICLE');
1465 $tinfo->cStamp = time ();
1466 //$tinfo->iconid = 1;
1467 $tinfo->iconid = $tracker['iconid'];
1468 /*if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
1469 $tinfo->iconid = 'default';*/
1470 if (isset($tracker['groups']))
1471 $tinfo->groups = $tracker['groups'];
1472
1473 if ($fetchRecords == true) {
1474
1475 $this->dCache_validateCache($tracker ['trackerid']);
1476
1477 $cTS = (int)$_SESSION ['dCache'] [$tracker ['trackerid']][0];
1478
1479 if ($cTS == 0 || $cTS == null)
1480 $cTS = (time() - (48 * 3600));
1481
1482 $trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array("timestamp" => array('$gte' => $cTS), 'latitude' => array('$exists' => 1, '$ne' => null)));
1483
1484 } else {
1485 if ($trec != false) {
1486 if ($sortedReverse == false)
1487 $trec = array_reverse ( $trec );
1488 $_SESSION ['dCache'] [$tracker ['trackerid']][0] = $trec [0] ['timestamp'];
1489 if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [4])) //Check
1490 unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [4]);
1491 }
1492 }
1493
1494 if (isset ($_GET ['update']) && $_GET ['update'] == 1) {
1495 if ($trec == false)
1496 return false;
1497
1498 else if ($trec [0] ['timestamp'] == $_SESSION ['dCache'] [$tracker ['trackerid']][0]) {
1499 //If no update is present
1500 //Get packet with no location
1501 $linput = $GMONGO->getLastAMRecord($tinfo->tid);
1502 if ($linput == false) return false;
1503
1504 $ltimestamp = $linput[0]['timestamp'];
1505 $ptimestamp = $trec[0]['timestamp'];
1506
1507 if ($ptimestamp > $ltimestamp) return false;
1508
1509 if ((time() - $ptimestamp) < NON_WORKING_TRACKER_TIME) {
1510
1511 if (($ltimestamp - $ptimestamp) < NO_GPS_ICON_TIME)
1512 return false;
1513 else if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]))
1514 return false;
1515 } else if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]))
1516 return false;
1517 } else {
1518 if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]))
1519 unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]);
1520
1521 if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]))
1522 unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]);
1523 }
1524 }
1525
1526 if ($trec == false) {
1527 srand();
1528 $tinfo->status = 'n';
1529 $tinfo->iconIndex = $this->getIconIndex($tinfo->status);
1530 $tinfo = removeNullFromObject($tinfo);
1531 return $tinfo;
1532 }
1533
1534 $trec_count = count($trec);
1535
1536 if ($trec_count > 2) {
1537 for ($x = $trec_count - 2; $x > 0; $x--) {
1538 $n = new trackerRecord ();
1539 foreach ($n as $k => $v)
1540 $n->{$k} = $trec [$x] [$k];
1541
1542 $fnsdate->setUTCDate($n->date, $n->time);
1543 $n->timeString = $fnsdate->getFormattedTimeString();
1544 array_push($tinfo->hLocations, $n);
1545 }
1546 }
1547
1548 $fdate = new FNSDateTime($_SESSION['timezone']);
1549 $fdate->setTimestamp($trec[0]['timestamp']);
1550
1551 $tinfo->latitude = $trec [0] ['latitude'];
1552 $tinfo->longitude = $trec [0] ['longitude'];
1553 $tinfo->speed = $trec [0] ['speed'];
1554 $tinfo->direction = $trec [0] ['direction'];
1555 //$tinfo->date = $fdate->UTCDateString;
1556 //$tinfo->time = $fdate->UTCTime;
1557 $tinfo->date = $trec[0]['date'];
1558 $tinfo->time = $trec [0] ['time'];
1559
1560 $maglobals = $this->getMAGLOBALSrecord($tinfo->tid);
1561 //$tinfo->timestamp = $trec [0] ['timestamp'];
1562 $tinfo->timestamp = (int)$maglobals [0] ['timestamp'];
1563 //echo "\r\ntimestamp ".$tinfo->timestamp;
1564 //var_dump($maglobals);
1565
1566 $_SESSION ['dCache'] [$tinfo->tid] [0] = $trec[0]['timestamp'];
1567
1568
1569 //$inputs = $trec;
1570 $inputs = $this->getInputs ( $tinfo->tid, false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
1571
1572 //Inputs start
1573 if ($inputs != false) {
1574 for($i = 1; $i <= 5; $i ++) {
1575 if (isset ( $inputs [0] ['fuel' . $i] ))
1576 $tinfo->{'fuel' . $i} = $inputs [0] ['fuel' . $i];
1577
1578 if (isset ( $inputs [0] ['temperature' . $i] ))
1579 $tinfo->{'temperature' . $i} = $inputs [0] ['temperature' . $i];
1580 }
1581
1582 if (isset ( $inputs ['0'] ['ibattery'] ))
1583 $tinfo->ibattery = $inputs ['0'] ['ibattery'];
1584
1585 $tinfo->IO = $inputs [0] ['IO'];
1586
1587 $tinfo->JStr = $inputs [0] ['misc'];
1588
1589 if (isset ( $tracker ['privatePublicUse'] ) && $tracker ['privatePublicUse'] == 1)
1590 $tinfo->privatePublic = $inputs [0] ['private'];
1591
1592 //if ($currentTrip){
1593 if ($currentTrip || (isset ( $_GET ['update'] ) && $_GET ['update'] == 1)){
1594 $tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
1595 $tinfo->driver = $this->getDriverName ( $tinfo->tid );
1596 }
1597 //$tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
1598 if ($tinfo->odometer == false)
1599 $tinfo->odometer = null;
1600
1601 //$tinfo->driver = $this->getDriverName ( $tinfo->tid );
1602 } else {
1603
1604 for($i = 1; $i <= 5; $i ++) {
1605 $tinfo->{'fuel' . $i} = null;
1606 $tinfo->{'temperature' . $i} = null;
1607 }
1608
1609 $tinfo->IO = null;
1610 $tinfo->odometer = null;
1611 $tinfo->privatePublic = 0;
1612 } //Inputs end
1613
1614 $tinfo->status = $this->getStatus($tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO);
1615
1616 if ($tinfo->status == 'm' || $tinfo->status == 'i' || $tinfo->status == 's') {
1617
1618 $linput = $this->getInputs($tinfo->tid);
1619
1620 if ($linput != false) {
1621 //if (isset($trec[0]['latitude']) == false) {
1622 $ltimestamp = $linput [0] ['timestamp'];
1623 $aglobals = $trec = $this->getAGLOBALSrecord($tinfo->tid);
1624 //$ptimestamp = $tinfo->timestamp;
1625 $ptimestamp = $aglobals[0]['timestamp'];
1626
1627 if (($ltimestamp - $ptimestamp) > NO_GPS_ICON_TIME) {
1628 //////////////////////////////////////////////////////////////echo "ltimestamp ".$ltimestamp, " ptimestamp ".$ptimestamp."\r\n";
1629 $tinfo->status = 'g';
1630 /////////////////////////////////////var_dump($tinfo);
1631 /////////////////////////////////die;
1632 $_SESSION ['dCache'] [$tracker ['trackerid']] [2] = true;
1633 }
1634 //}
1635 }
1636 } else {
1637 $_SESSION ['dCache'] [$tracker ['trackerid']] [5] = true;
1638 }
1639
1640 //To remove any previous data if last packet has ignition
1641 if (($tinfo->status == 'n' || $tinfo->status == 's') && $currentTrip) {
1642 $tinfo->hLocations = array();
1643 }
1644
1645 $tinfo->iconIndex = $this->getIconIndex($tinfo->status, $tinfo->latitude, $tinfo->timestamp);
1646
1647 $fnsdate->setUTCDate($tinfo->date, $tinfo->time);
1648 $tinfo->dateString = $fnsdate->getFormattedString();
1649 $tinfo->timeString = $fnsdate->getFormattedTimeString();
1650
1651
1652 $tinfo->events = $this->getTrackersEvents($tinfo->tid, $currentTrip);
1653
1654
1655 $duration = $this->getTrackerDuration ( $tinfo->tid, $tinfo->status );
1656
1657 if ($duration != false) {
1658 $fnsdate->setUTCDate ( $duration->date, $duration->time );
1659 $tinfo->durationStamp = $fnsdate->dateTime->getTimestamp ();
1660 } else {
1661 $tinfo->durationStamp = null;
1662 }
1663
1664 if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] ) == false) {
1665
1666 if (count ( $tinfo->hLocations ) > 0)
1667 $sObj = $tinfo->hLocations [0];
1668 else
1669 $sObj = $tinfo;
1670
1671 $fnsdate->setUTCDate ( $sObj->date, $sObj->time );
1672
1673 if ($currentTrip) {
1674 if ($tinfo->status == 'm' || $tinfo->status == 'i' || ($tinfo->status == 'g' && count($tinfo->hLocations) > 0)) {
1675 $tinfo->sTime = $fnsdate->getFormattedString ();
1676 $tinfo->sLatitude = $sObj->latitude;
1677 $tinfo->sLongitude = $sObj->longitude;
1678 }
1679 } else {
1680 $tinfo->sTime = $fnsdate->getFormattedString ();
1681 $tinfo->sLatitude = $sObj->latitude;
1682 $tinfo->sLongitude = $sObj->longitude;
1683 }
1684
1685 $_SESSION ['dCache'] [$tracker ['trackerid']] [4] = true;
1686
1687 }
1688
1689 return removeNullFromObject ( $tinfo );
1690 }
1691
1692 public function getMAGLOBALSrecord($tid){
1693 $query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$tid."'";
1694 $this->dbclass->execute_query($query);
1695 return $this->dbclass->get_result_complete();
1696 }
1697
1698 public function getAGLOBALSrecord($tid){
1699 $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$tid."'";
1700 $this->dbclass->execute_query($query);
1701 return $this->dbclass->get_result_complete();
1702 }
1703
1704 public function getTrackerDataObject_new ($tracker, $fetchRecords = false, $trec = false, $sortedReverse = false, $currentTrip = false) {
1705 global $GMONGO;
1706
1707 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
1708
1709 $tinfo = new trackerInfoRecord ();
1710 $tinfo->name = $tracker ['name'];
1711 $tinfo->fscode = $tracker ['type'];
1712 $tinfo->tid = $tracker ['trackerid'];
1713 $tinfo->simno = $tracker ['simno'];
1714 $tinfo->searchKeywords = $tracker ['searchKeywords'];
1715 $tinfo->imei = $tracker ['imei'];
1716 $tinfo->trackerSerial = $tracker ['trackerSerial'];
1717 $tinfo->iconText = $tracker ['iconText'];
1718 $tinfo->licensePlate = $tracker ['licensePlate'];
1719 $tinfo->maxrpm = $tracker ['maxrpm'];
1720 $tinfo->hLocations = array ();
1721 $tinfo->cT = $this->getTrackerInfoField ( $tracker );
1722 $tinfo->trackingType = isset ( $tracker ['apptype'] ) ? $tracker ['apptype'] : (isset ( $this->trackerTypes [$tracker ['type']] ) ? $this->trackerTypes [$tracker ['type']] ['trackingType'] : 'VEHICLE');
1723 $tinfo->cStamp = time ();
1724 $tinfo->iconid = $tracker['iconid'];
1725 /*$tinfo->iconid = 1;
1726 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
1727 $tinfo->iconid = 'default';
1728 */
1729 if (isset($tracker['users']))
1730 $tinfo->users = $tracker['users'];
1731
1732 if (isset($tracker['groups']))
1733 $tinfo->groups = $tracker['groups'];
1734
1735 $this->dCache_validateCache ( $tracker ['trackerid'] );
1736 $cTS = $_SESSION ['dCache'] [$tracker ['trackerid']][0];
1737
1738 $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$tracker['trackerid']."' AND timestamp >= $cTS";
1739 $this->dbclass->execute_query($query);
1740 $result = $this->dbclass->get_result_complete();
1741 if (!$result) {
1742 $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$tracker['trackerid']."'";
1743 $this->dbclass->execute_query($query);
1744 $result = $this->dbclass->get_result_complete();
1745 }
1746 $trec = $result;
1747
1748 /*if (!$result) {
1749 echo $query;
1750 var_dump($result);
1751 die;
1752 }*/
1753 //var_dump($result);
1754 //die;
1755
1756 if (isset ( $_GET ['update'] ) && $_GET ['update'] == 1) {
1757 if ($trec == false)
1758 return false;
1759 else if ($trec [0] ['timestamp'] == $_SESSION ['dCache'] [$tracker ['trackerid']][0]) {
1760 //If no update is present
1761 //Get packet with no location
1762 $linput = $this->getMAGLOBALSrecord($tinfo->tid);
1763 if ($linput == false) return false;
1764
1765 $ltimestamp = $linput[0]['timestamp'];
1766 $ptimestamp = $trec[0]['timestamp'];
1767
1768 if ($ptimestamp > $ltimestamp) return false;
1769
1770 if ((time () - $ptimestamp) < NON_WORKING_TRACKER_TIME) {
1771
1772 if (($ltimestamp - $ptimestamp) < NO_GPS_ICON_TIME)
1773 return false;
1774 else if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] ))
1775 return false;
1776 } else if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] ))
1777 return false;
1778 } else {
1779 if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] ))
1780 unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] );
1781
1782 if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] ))
1783 unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] );
1784 }
1785 }
1786
1787 if ($trec == false) {
1788 srand ();
1789 $tinfo->status = "n";
1790 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status);
1791 $tinfo = removeNullFromObject ( $tinfo );
1792 return $tinfo;
1793 }
1794
1795
1796 $fdate = new FNSDateTime($_SESSION['timezone']);
1797 $fdate->setTimestamp($trec[0]['timestamp']);
1798
1799 $tinfo->latitude = $trec [0] ['latitude'];
1800 $tinfo->longitude = $trec [0] ['longitude'];
1801 $tinfo->speed = $trec [0] ['speed'];
1802 $tinfo->direction = $trec [0] ['direction'];
1803 $tinfo->date = $fdate->UTCDateString;
1804 $tinfo->time = $fdate->UTCTime;
1805 $tinfo->timestamp = $trec [0] ['timestamp'];
1806
1807
1808 $_SESSION ['dCache'] [$tinfo->tid] [0] = $trec[0]['timestamp'];
1809
1810 //$inputs = $trec;
1811 //$inputs = false; $this->getInputs ( $tinfo->tid ); // , false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
1812 //$inputs = $this->getInputs ( $tinfo->tid ); // , false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
1813 $inputs = false;
1814
1815 //Inputs start
1816 if ($inputs != false) {
1817 for($i = 1; $i <= 5; $i ++) {
1818 if (isset ( $inputs [0] ['fuel' . $i] ))
1819 $tinfo->{'fuel' . $i} = $inputs [0] ['fuel' . $i];
1820
1821 if (isset ( $inputs [0] ['temperature' . $i] ))
1822 $tinfo->{'temperature' . $i} = $inputs [0] ['temperature' . $i];
1823 }
1824
1825 if (isset ( $inputs ['0'] ['ibattery'] ))
1826 $tinfo->ibattery = $inputs ['0'] ['ibattery'];
1827
1828 $tinfo->IO = $inputs [0] ['IO'];
1829
1830 $tinfo->JStr = $inputs [0] ['misc'];
1831
1832 if (isset ( $tracker ['privatePublicUse'] ) && $tracker ['privatePublicUse'] == 1)
1833 $tinfo->privatePublic = $inputs [0] ['private'];
1834
1835 $tinfo->odometer = null;
1836
1837 } else {
1838
1839 for($i = 1; $i <= 5; $i ++) {
1840 $tinfo->{'fuel' . $i} = null;
1841 $tinfo->{'temperature' . $i} = null;
1842 }
1843
1844 $tinfo->IO = null;
1845 $tinfo->odometer = null;
1846 $tinfo->privatePublic = 0;
1847 } //Inputs end
1848
1849 $tinfo->IO = $trec[0]['IO'];
1850
1851 $tinfo->status = $this->getStatus ( $tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO );
1852
1853 if ($tinfo->status == 'm' || $tinfo->status == 'i' || $tinfo->status == 's') {
1854
1855 $linput = $this->getMAGLOBALSrecord($tinfo->tid);
1856
1857 if ($linput != false) {
1858 $ltimestamp = $linput [0] ['timestamp'];
1859 $ptimestamp = $tinfo->timestamp;
1860
1861 if (($ltimestamp - $ptimestamp) > NO_GPS_ICON_TIME) {
1862 $tinfo->status = 'g';
1863 $_SESSION ['dCache'] [$tracker ['trackerid']] [2] = true;
1864 }
1865 }
1866 } else {
1867 $_SESSION ['dCache'] [$tracker ['trackerid']] [5] = true;
1868 }
1869
1870
1871 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status, $tinfo->latitude, $tinfo->timestamp );
1872
1873 $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
1874 $tinfo->dateString = $fnsdate->getFormattedString ();
1875 $tinfo->timeString = $fnsdate->getFormattedTimeString ();
1876
1877 //$tinfo->events = $this->getTrackersEvents ( $tinfo->tid, $currentTrip );
1878
1879 /*$duration = $this->getTrackerDuration ( $tinfo->tid, $tinfo->status );
1880
1881 if ($duration != false) {
1882 $fnsdate->setUTCDate ( $duration->date, $duration->time );
1883 $tinfo->durationStamp = $fnsdate->dateTime->getTimestamp ();
1884 } else {
1885 $tinfo->durationStamp = null;
1886 }*/
1887 $tinfo->durationStamp = null;
1888
1889 return removeNullFromObject ( $tinfo );
1890 }
1891
1892
1893 public function getReportDebuggerTrackers ($tracker, $fetchRecords = true, $trec = false, $sortedReverse = false, $currentTrip = false) {
1894
1895 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
1896
1897 $tinfo = new trackerInfoRecord ();
1898 $tinfo->name = $tracker ['name'];
1899 $tinfo->fscode = $tracker ['type'];
1900 $tinfo->tid = $tracker ['trackerid'];
1901 $tinfo->simno = $tracker ['simno'];
1902 $tinfo->searchKeywords = $tracker ['searchKeywords'];
1903 $tinfo->imei = $tracker ['imei'];
1904 $tinfo->trackerSerial = $tracker ['trackerSerial'];
1905 $tinfo->iconText = $tracker ['iconText'];
1906 $tinfo->licensePlate = $tracker ['licensePlate'];
1907
1908 if (isset($tracker['groups']))
1909 $tinfo->groups = $tracker['groups'];
1910
1911 $query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$tracker['trackerid']."'";
1912 $this->dbclass->execute_query ( $query );
1913 $trec = $this->dbclass->get_result_complete ();
1914
1915 //$trec = $GMONGO->getLastARecord($tracker['trackerid']);
1916
1917 if ($trec == false) {
1918 srand ();
1919 $tinfo->status = "n";
1920 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status);
1921 $tinfo = removeNullFromObject ( $tinfo );
1922 return $tinfo;
1923 }
1924
1925 if ($trec[0]['latitude'] == NULL || $trec[0]['longitude'] == NULL) {
1926 $tinfo->status = 'g';
1927 } else {
1928 $tinfo->status = $this->getStatus ( $tinfo->tid, $trec[0]['date'], $trec[0]['time'], $trec[0]['speed'], $trec[0]['IO'] );
1929 }
1930
1931 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status, $tinfo->latitude, $tinfo->timestamp );
1932
1933 return removeNullFromObject ( $tinfo );
1934 }
1935
1936 public function getReportTrackers () {
1937 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
1938
1939 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
1940 $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username = '".$_SESSION['username']."'";
1941 } elseif ($_SESSION['accounttype'] == USERTYPE_FLEET) {
1942 $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
1943 }
1944 $this->dbclass->execute_query ( $query );
1945 $trackers = $this->dbclass->get_result_complete ();
1946
1947 if ($_SESSION['accounttype'] == USERTYPE_FLEET)
1948 $trackers = $this->filterExpiredTrackers ( $trackers );
1949
1950 $trackersList = array ();
1951
1952 if ($trackers == false)
1953 return $trackersList;
1954
1955 $tracker_count = count ( $trackers );
1956
1957 if ($tracker_count == 0)
1958 return $trackersList;
1959
1960 for($b = 0; $b < $tracker_count; $b ++) {
1961
1962 $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$trackers [$b]['trackerid']}'";
1963 $this->dbclass->execute_query($query);
1964 $groups = $this->dbclass->get_result_complete();
1965
1966 if ($groups != false) {
1967 $gid = array_map(function ($a) {
1968 return $a['groupName'];
1969 }, $groups);
1970 $trackers [$b]['groups'] = implode(',', $gid);
1971 }
1972
1973 $tinfo = $this->getReportDebuggerTrackers($trackers [$b] );
1974 if ($tinfo != false)
1975 array_push ( $trackersList, $tinfo );
1976 }
1977 return $trackersList;
1978 }
1979
1980 public function getTrackerPosition($trackerid) {
1981 $username = $this->dbclass->get_escape_string($_SESSION['username']);
1982 //$query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username = '".$username."'";
1983 $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE trackerid = '".$trackerid."'";
1984 $this->dbclass->execute_query ( $query );
1985 $trackers = $this->dbclass->get_result_complete ();
1986
1987 $trackersList = array ();
1988
1989 if ($trackers == false)
1990 return false;
1991
1992 //foreach ($trackers as $t) {
1993 //if (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid'] )
1994 // $tinfo = $this->getTrackerDataObject_mongo ( $t );
1995 //else
1996 // $tinfo = $this->getTrackerDataObject_new ( $t );
1997 $tinfo = $this->getTrackerDataObject_new ( $trackers[0] );
1998
1999 //if ($tinfo != false) array_push ( $trackersList, $tinfo );
2000 if ($tinfo != false) return $tinfo;
2001
2002 return false;
2003 //}
2004 /*$totalTrackers = count($trackersList);
2005 if ($totalTrackers) {
2006 $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'admin');
2007 }*/
2008
2009 //return $trackersList;
2010 }
2011
2012 /* For Maliatec Medco */
2013 public function getTrackerLastLatLng ($tid) {
2014 global $GMONGO;
2015 $trec = $GMONGO->getLastARecord($tid);
2016 //var_dump($trec);
2017 //die('check');
2018 return $trec;
2019 }
2020
2021 public function getTrackerInformation($tid) {
2022 $query = "SELECT * FROM trackers inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE trackerid=\"{$tid}\"";
2023 $this->dbclass->execute_query ( $query );
2024 return $this->dbclass->get_result_complete ();
2025 }
2026
2027 public function getDebuggerTrackers() {
2028 $username = $this->dbclass->get_escape_string($_SESSION['username']);
2029 $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username = '".$username."'";
2030 $this->dbclass->execute_query ( $query );
2031 $trackers = $this->dbclass->get_result_complete ();
2032
2033 $trackersList = array ();
2034
2035 if ($trackers == false)
2036 return $trackersList;
2037
2038
2039 foreach ($trackers as $t) {
2040 //session_start();
2041
2042 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR && !isset($_GET['update'])) {
2043 $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$t['trackerid']}\"";
2044 $this->dbclass->execute_query ( $query );
2045 $users = $this->dbclass->get_result_complete();
2046
2047 if ($users != false) {
2048 $arr = array_map(function($a){ return $a['username']; }, $users);
2049 $t ['users'] = implode(",", $arr);
2050 }
2051 }
2052
2053 $iconid = $this->getTrackerIconid($t['trackerid']);
2054 $t['iconid'] = $iconid[0]['iconid'];
2055
2056 if (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid'] )
2057 $tinfo = $this->getTrackerDataObject_mongo ( $t );
2058 else
2059 $tinfo = $this->getTrackerDataObject_new ( $t );
2060 //session_write_close();
2061
2062 if ($tinfo != false) array_push ( $trackersList, $tinfo );
2063 //usleep(250000);
2064 }
2065
2066 $totalTrackers = count($trackersList);
2067 if ($totalTrackers) {
2068 $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'admin');
2069 }
2070
2071 return $trackersList;
2072 }
2073
2074 /*public function getDebuggerTrackers() {
2075 global $GDATABASE;
2076
2077 $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username = '".$_SESSION['username']."'";
2078 //$query = "SELECT * FROM trackers inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid)";
2079 $this->dbclass->execute_query ( $query );
2080 $trackers = $this->dbclass->get_result_complete ();
2081
2082 $trackersList = array ();
2083
2084 if ($trackers == false)
2085 return $trackersList;
2086
2087 $tracker_count = count ( $trackers );
2088
2089 $gm = new FNSGearman();
2090
2091 for($b = 0; $b < $tracker_count; $b ++) {
2092 $dCache = $_SESSION['dCache'][$trackers[$b]['trackerid']];
2093 $eCache = $_SESSION['eCache'][$trackers[$b]['trackerid']];
2094 $arguments = array('trackers' => $trackers [$b], 'session' => $_SESSION, 'dCache' => $dCache, 'eCache' => $eCache);
2095 //print_r($arguments);
2096 //echo "ADDING TASK FOR TRACKER ID ".$trackers[$b]['trackerid']."\r\n";
2097 $gm->addTask('gtdom', json_encode($arguments), null,$trackers[$b]['trackerid']);
2098
2099
2100
2101 //$tinfo = $this->getTrackerDataObject_mongo ( $trackers [$b] );
2102 //if ($tinfo != false)
2103 // array_push ( $trackersList, $tinfo );
2104 }
2105 $gm->runTasks();
2106
2107 foreach ( FNSGearman::$results as $k => $v) {
2108 $row = json_decode($v, true);
2109
2110 //var_dump($row['tinfo']);
2111 /*
2112 if (is_array($row['tinfo']))
2113 array_push ( $trackersList, $row ['tinfo'] );
2114
2115 if (is_array($row['session']))
2116 $_SESSION = $row ['session'];*/
2117
2118 ///////////////////////////////array_push ( $trackersList, $row ['tinfo']);
2119
2120
2121 //print_r($row);
2122
2123 //$_SESSION = $v['session'];
2124 //$tname = $GDATABASE -> getTrackerName ( $k ) [0] ['name'];
2125 //print_r($v[]);
2126
2127 //foreach ($row as $l => $m) {
2128 //$data = json_decode($v, true);
2129 //var_dump($data);
2130
2131 /*comment $fdate = new FNSDateTime ( $_SESSION['timezone'] );
2132 $fdate->setLocalTimestamp ( $row [$l] ['td'] ['ts'] );
2133 $da [$i] ['date'] = $fdate ->dateTime -> format ( 'd-M' );
2134 $da [$i] ['distance'] = $row [$l] ['td'] ['d'];
2135 if ($da [$i] ['distance'] > 0) {
2136 $distance = $da [$i] ['distance'] * 0.621371;
2137 $da [$i] ['distance'] = $this->mConverter->convert($distance, 'D');
2138 }
2139 $da [$i] ['trackerid'] = 't'.$k;
2140 $da [$i] ['tname'] = $tname;
2141 $i++;*/
2142 //}
2143 ///////////////////////////////}
2144 //die;
2145 ///////////////////////////////return $trackersList;
2146 ///////////////////////////////}
2147
2148 public function getLastARecord($tid, $limit = 1) {
2149 global $GMONGO;
2150 return $GMONGO -> getAMRecord_reverseSorted($tid, array('latitude' => array('$exists' => true, '$ne' => null)), $limit);
2151 }
2152
2153 public function getLastWayPoint($tid, $poiID) {
2154 $query = "SELECT * from poiVisits WHERE trackerid='$tid' AND poiID='$poiID' ORDER BY date DESC,time DESC LIMIT 0,1";
2155 $this->dbclass->execute_query ( $query );
2156 return $this->dbclass->get_result_complete ();
2157 }
2158
2159 public function createWayPointEvent($username, $tid, $date, $time, $poiID) {
2160 $query = "INSERT INTO poiVisits SET date='$date', time='$time', username='$username', trackerid = '$tid', poiID='$poiID'";
2161 $this->dbclass->execute_query ( $query );
2162 }
2163
2164 public function createPOIMailerEvent($tid, $username, $date, $time, $event, $desc) {
2165 $query = "INSERT INTO POIMailer SET date='$date', time='$time', eventno='$event', description='$desc', vehicleid='$tid', username='$username'";
2166 $this->dbclass->execute_query ( $query );
2167 }
2168
2169 public function pullPOIMailer(){
2170 $query = "SELECT * from POIMailer";
2171 $this->dbclass->execute_query ( $query );
2172 $ans = $this->dbclass->get_result_complete ();
2173
2174 $query = "DELETE from POIMailer where ID <= ". $ans[count($ans)-1]['id'];
2175 $this->dbclass->execute_query ( $query );
2176
2177 return $ans;
2178 }
2179
2180
2181
2182 public function createEvent($tid, $username, $date, $time, $latitude, $longitude, $speed, $direction, $event, $desc) {
2183 global $GMONGO;
2184 /*$query = "INSERT INTO E{$tid} SET date='$date', time='$time', latitude='$latitude', longitude = '$longitude', speed='$speed', direction='$direction', event='$event', description='$desc'";
2185 $this->dbclass->execute_query ( $query );*/
2186 $records = array();
2187 $records['date'] = $date;
2188 $records['time'] = $time;
2189 $records['latitude'] = $latitude;
2190 $records['longitude'] = $longitude;
2191 $records['speed'] = $speed;
2192 $records['direction'] = $direction;
2193 $records['event'] = $event;
2194 $records['description'] = $desc;
2195
2196 $GMONGO->insertRecordIntoE($tid, $records);
2197
2198 $query = "INSERT INTO mailer SET date='$date', time='$time', eventno='$event', description='$desc', vehicleid='$tid', username='$username'";
2199 $this->dbclass->execute_query ( $query );
2200 }
2201
2202 public function getTrackersMap($username) {
2203 $username = $this->dbclass->get_escape_string ( $username );
2204 $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
2205 $this->dbclass->execute_query ( $query );
2206 $trackers = $this->dbclass->get_result_complete ();
2207
2208 $trackers = $this->filterExpiredTrackers ( $trackers );
2209 if (count ( $trackers ) == 0)
2210 return array ();
2211
2212 $tl = array ();
2213 if ($trackers != false) {
2214 foreach ( $trackers as $v ) {
2215 $tl [$v ['trackerid']] = $v;
2216 }
2217 }
2218 return $tl;
2219 }
2220 public function getUsersFromTracker($tid) {
2221 $query = "SELECT * FROM trackersMap WHERE trackerid=\"{$tid}\"";
2222 $this->dbclass->execute_query ( $query );
2223 return $this->dbclass->get_result_complete ();
2224 }
2225 /*public function getFleetTrackers() {
2226 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
2227 $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
2228 $this->dbclass->execute_query ( $query );
2229 $trackers = $this->dbclass->get_result_complete ();
2230
2231 $trackersList = array ();
2232 $trackers = $this->filterExpiredTrackers ( $trackers );
2233 $tracker_count = count ( $trackers );
2234 if ($tracker_count == 0)
2235 return $trackersList;
2236
2237 for($b = 0; $b < $tracker_count; $b ++) {
2238 $tinfo = $this->getTrackerDataObject ( $trackers [$b] );
2239 if ($tinfo != false)
2240 array_push ( $trackersList, $tinfo );
2241 }
2242
2243 return $trackersList;
2244 }*/
2245 public function getFleetTrackers() {
2246 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
2247 $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
2248 $this->dbclass->execute_query ( $query );
2249 $trackers = $this->dbclass->get_result_complete ();
2250
2251 $trackersList = array ();
2252 $trackers = $this->filterExpiredTrackers ( $trackers );
2253
2254 if ($trackers == false)
2255 return $trackersList;
2256
2257
2258 foreach ($trackers as $t) {
2259 $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$t['trackerid']}'";
2260 $this->dbclass->execute_query($query);
2261 $groups = $this->dbclass->get_result_complete();
2262
2263 if ($groups != false) {
2264 $gid = array_map(function ($a) {
2265 return $a['groupName'];
2266 }, $groups);
2267 $t['groups'] = implode(',', $gid);
2268 }
2269
2270 $iconid = $this->getTrackerIconid($t['trackerid']);
2271 $t['iconid'] = $iconid[0]['iconid'];
2272
2273 if (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid'] )
2274 $tinfo = $this->getTrackerDataObject_mongo ( $t );
2275 else
2276 $tinfo = $this->getTrackerDataObject_new ( $t );
2277
2278 //array_push ( $trackersList, $tinfo );
2279 if ($tinfo != false) array_push ( $trackersList, $tinfo );
2280 }
2281
2282 $totalTrackers = count($trackersList);
2283
2284 if ($totalTrackers) {
2285 $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'user');
2286 }
2287
2288 return $trackersList;
2289 }
2290
2291 public function getFleetListViewTrackers() {
2292 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
2293 $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
2294 $this->dbclass->execute_query ( $query );
2295 $trackers = $this->dbclass->get_result_complete ();
2296
2297 $trackersList = array ();
2298 $trackers = $this->filterExpiredTrackers ( $trackers );
2299
2300 if ($trackers == false)
2301 return $trackersList;
2302
2303
2304 foreach ($trackers as $t) {
2305
2306 $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$t['trackerid']}'";
2307 $this->dbclass->execute_query($query);
2308 $groups = $this->dbclass->get_result_complete();
2309
2310 if ($groups != false) {
2311 $gid = array_map(function ($a) {
2312 return $a['groupName'];
2313 }, $groups);
2314 $t['groups'] = implode(',', $gid);
2315 }
2316
2317 //if (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid'] )
2318 $tinfo = $this->getTrackerDataObject_mongo ( $t, true, false, false, true );
2319 //else
2320 // $tinfo = $this->getTrackerDataObject_new ( $t );
2321
2322 //array_push ( $trackersList, $tinfo );
2323 if ($tinfo != false) array_push ( $trackersList, $tinfo );
2324 }
2325
2326 $totalTrackers = count($trackersList);
2327
2328 if ($totalTrackers) {
2329 $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'user');
2330 }
2331
2332 return $trackersList;
2333 }
2334
2335 private function eCache_validateCache($tid) {
2336 global $GMONGO;
2337
2338 if (isset ( $_SESSION ['eCache'] ) == false) {
2339 $_SESSION ['eCache'] = array ();
2340 }
2341
2342 if (isset ( $_SESSION ['eCache'] [$tid] ) == false) {
2343 $trec = $GMONGO->getLastERecordLimitedField($tid, array(), array('timestamp' => true));
2344
2345 if ($trec != false) {
2346 $_SESSION ['eCache'] [$tid] = array ();
2347 $_SESSION ['eCache'] [$tid] [0] = $trec [0] ['timestamp'];
2348 } else {
2349 $_SESSION ['eCache'] [$tid] = array ();
2350 $_SESSION ['eCache'] [$tid] [0] = 0;
2351 }
2352 return false;
2353 }
2354 return true;
2355 }
2356 public function getTrackersEvents_withDateTime($tid, $sdate, $stime, $edate, $etime) {
2357 global $GMONGO;
2358
2359 $events = array ();
2360
2361 $periodClause = basicTransactions::getPeriodClause ( $sdate, $stime, $edate, $etime );
2362 $periodClauseMongo = basicTransactions::getPeriodClauseMongo ( $sdate, $stime, $edate, $etime );
2363
2364 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
2365
2366 /*$QUERY = "SELECT * from E{$tid} WHERE $periodClause ORDER by date,time";
2367 $this->dbclass->execute_query ( $QUERY );
2368 $trec = $this->dbclass->get_result_complete ();*/
2369
2370 $trec = $GMONGO->getERecords($tid, $periodClauseMongo);
2371
2372 if ($trec == false)
2373 return;
2374
2375 $trCount = count ( $trec );
2376
2377 for($c = 0; $c < $trCount; $c ++) {
2378 $tinfo = new trackerEvent ();
2379 $tinfo->latitude = $trec [$c] ['latitude'];
2380 $tinfo->longitude = $trec [$c] ['longitude'];
2381 $tinfo->speed = $trec [$c] ['speed'];
2382 $tinfo->direction = $trec [$c] ['direction'];
2383 $tinfo->date = $trec [$c] ['date'];
2384 $tinfo->time = $trec [$c] ['time'];
2385 $tinfo->eventno = $trec [$c] ['event'];
2386 $tinfo->description = utf8_encode($trec [$c] ['description']->bin);
2387
2388 $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
2389 $tinfo->dateString = $fnsdate->getFormattedString ();
2390
2391 array_push ( $events, $tinfo );
2392 }
2393
2394 return $events;
2395 }
2396 public function getTrackersEvents($tid, $currentTrip = false) {
2397 global $GMONGO;
2398
2399 $events = array ();
2400
2401 if ($this->eCache_validateCache ( $tid ) == false) {
2402 //return;
2403 }
2404
2405 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
2406
2407 // $this->eCache_validateCache($tid);
2408
2409 if (isset ( $_SESSION ['eCache'] [$tid] ) == false) {
2410 return $events;
2411 }
2412
2413 //if (isset($_GET['update']) || $currentTrip == true) {
2414 if ($currentTrip == true) {
2415 //$ts = time() - 86400;
2416 $ts = time() - (EVENTS_FETCH_TIME * 3600);
2417 //$ts = $_SESSION['eCache'] [$tid] [0];
2418 } else {
2419 //$ts = time() - 86400;
2420 //$ts = time();
2421 $ts = $_SESSION['eCache'] [$tid] [0];
2422 }
2423
2424 $queryCriteria = array('timestamp' => array('$gt' => $ts));
2425 $trec = $GMONGO -> getERecords($tid, $queryCriteria);
2426 /*$QUERY = "SELECT * from E{$tid} WHERE (date = \"" . $_SESSION ['eCache'] [$tid] [0] . "\" AND time > " . $_SESSION ['eCache'] [$tid] [1] . ") OR (date > \"" . $_SESSION ['eCache'] [$tid] [0] . "\") ORDER BY date,time";
2427 $this->dbclass->execute_query ( $QUERY );
2428 $trec = $this->dbclass->get_result_complete ();*/
2429
2430 if ($trec == false)
2431 return $events;
2432
2433 $trCount = count ( $trec );
2434
2435 for($c = 0; $c < $trCount; $c ++) {
2436 $tinfo = new trackerEvent ();
2437 $tinfo->latitude = $trec [$c] ['latitude'];
2438 $tinfo->longitude = $trec [$c] ['longitude'];
2439 $tinfo->speed = $trec [$c] ['speed'];
2440 $tinfo->direction = $trec [$c] ['direction'];
2441 $tinfo->date = $trec [$c] ['date'];
2442 $tinfo->time = $trec [$c] ['time'];
2443 $tinfo->eventno = $trec [$c] ['event'];
2444 $tinfo->description = utf8_encode($trec [$c] ['description'] -> bin);
2445
2446 $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
2447 $tinfo->dateString = $fnsdate->getFormattedString ();
2448
2449 array_push ( $events, $tinfo );
2450 }
2451
2452 if ($c >= 1) {
2453 //$_SESSION ['eCache'] [$tid] [0] = $trec [$c - 1] ['date'];
2454 //$_SESSION ['eCache'] [$tid] [1] = $trec [$c - 1] ['time'];
2455 $_SESSION ['eCache'] [$tid] [0] = $trec [$c - 1] ['timestamp'];
2456 }
2457
2458 return $events;
2459 }
2460
2461
2462 public function getTrackersDatabase($logicalGroups = false, $username = "") {
2463 global $GMONGO;
2464
2465 // Get Escape string for Username
2466 $username = $this->dbclass->get_escape_string ( $username );
2467
2468 // Fetch Groups based on logicalGroups selection from the database
2469 $query = $logicalGroups ? "SELECT name as groups FROM logicalGroups WHERE username=\"$username\" ORDER BY name" : "SELECT username as groups FROM Users ORDER BY username";
2470 $this->dbclass->execute_query ( $query );
2471 $groups = $this->dbclass->get_result_complete ();
2472
2473 if ($groups == false) {
2474 return false;
2475 }
2476
2477 $groups_count = count ( $groups );
2478
2479 $returnAnswer = array ();
2480
2481 // Starts iterating among groups
2482 for($a = 0; $a < $groups_count; $a ++) {
2483 $groupObject = new groupRecord ();
2484 $groupObject->name = base64_encode ( $groups [$a] ['groups'] );
2485 $groupObject->list = array ();
2486 array_push ( $returnAnswer, $groupObject );
2487
2488 $gname = $this->dbclass->get_escape_string ( $groups [$a] ['groups'] );
2489 $query = $logicalGroups ? "SELECT * FROM trackers WHERE username=\"$username\" AND logicalGroup=\"$gname\"" : "SELECT * FROM trackers WHERE username=\"$gname\" ORDER BY name";
2490 $this->dbclass->execute_query ( $query );
2491 $trackers = $this->dbclass->get_result_complete ();
2492
2493 if ($trackers == false)
2494 continue;
2495
2496 $tracker_count = count ( $trackers );
2497
2498 for($b = 0; $b < $tracker_count; $b ++) {
2499 $tinfo = new trackerInfoRecord ();
2500 $tinfo->name = base64_encode ( $trackers [$b] ['name'] );
2501 $tinfo->fscode = $trackers [$b] ['type'];
2502 $tinfo->tid = $trackers [$b] ['trackerid'];
2503
2504 $trec = $GMONGO -> getLastARecord($trackers[$b]['trackerid']);
2505
2506 if ($trec == false) {
2507 $tinfo->status = "n";
2508 array_push ( $groupObject->list, $tinfo );
2509 continue;
2510 }
2511
2512 $tinfo->latitude = $trec [0] ['latitude'];
2513 $tinfo->longitude = $trec [0] ['longitude'];
2514 $tinfo->speed = $trec [0] ['speed'];
2515 $tinfo->direction = $trec [0] ['direction'];
2516 $tinfo->date = $trec [0] ['date'];
2517 $tinfo->time = $trec [0] ['time'];
2518
2519 $inputs = $this->getInputs ( $tinfo->tid, false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
2520
2521 if ($inputs != false) {
2522 $tinfo->fuel = $inputs [0] ['fuel'];
2523 $tinfo->temperature = $inputs [0] ['temperature'];
2524 $tinfo->IO = $inputs [0] ['IO'];
2525 $tinfo->odometer = $inputs [0] ['odometer'];
2526 $tinfo->privatePublic = $inputs [0] ['private'];
2527 } else {
2528 $tinfo->fuel = - 1;
2529 $tinfo->temperature = - 1;
2530 $tinfo->IO = false;
2531 $tinfo->odometer = 0;
2532 $tinfo->privatePublic = 0;
2533 }
2534
2535 $tinfo->status = $this->getStatus ( $tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO );
2536
2537 array_push ( $groupObject->list, $tinfo );
2538 }
2539 }
2540 return $returnAnswer;
2541 }
2542 function getSnailTrack($tid, $nloc) {
2543 global $GMONGO;
2544 /*$query = "SELECT COUNT(*) FROM A{$tid} ORDER BY date,time";
2545 $this->dbclass->execute_query ( $query );
2546 $ans = $this->dbclass->get_result_complete ();*/
2547 $ans = $GMONGO->countDocumentsInA($tid);
2548
2549 /*if ($ans [0] ['COUNT(*)'] >= 5) {
2550 $naoffset = $ans [0] ['COUNT(*)'] - 5;
2551 } else if ($ans [0] ['COUNT(*)'] == 0) {
2552 return false;
2553 } else
2554 $naoffset = 0;*/
2555
2556 if ($ans >= 5) {
2557 $naoffset = $ans - 5;
2558 } else if ($ans == 0) {
2559 return false;
2560 } else
2561 $naoffset = 0;
2562
2563 //$nloc is limit and $naoffset will skip the result it works like LIMIT $naoffset, $nloc
2564 $ans = $GMONGO -> getAMRecord($tid, array('latitude' => array('$exists' => true, '$ne' => null)), $nloc, $naoffset);
2565
2566 return $ans;
2567 }
2568 public function checkTrackerID($tid) {
2569 if (strlen ( $tid ) < 6)
2570 return false;
2571 $query = "SELECT COUNT(*) FROM trackers WHERE trackerid=\"$tid\"";
2572 $this->dbclass->execute_query ( $query );
2573 $tcard = $this->dbclass->get_result_complete ();
2574
2575 if ($tcard == false)
2576 return false;
2577 if ($tcard [0] ['COUNT(*)'] > 0)
2578 return false;
2579
2580 return true;
2581 }
2582
2583 public function getTrackersInfo () {
2584 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
2585 if ($_SESSION ['accounttype'] == USERTYPE_SUPERUSER) {
2586 $QUERY = "SELECT trackerid,name FROM trackers inner join trackersExInfo using (trackerid)";
2587 $this->dbclass->execute_query ( $QUERY );
2588 }
2589 elseif ($_SESSION ['accounttype'] == USERTYPE_ADMINISTRATOR) {
2590 $QUERY = "SELECT trackerid,name FROM trackers inner join trackersExInfo using (trackerid)";
2591 $this->dbclass->execute_query ( $QUERY );
2592 } else {
2593 $QUERY = "SELECT trackerid,name FROM trackers INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersMap USING (trackerid) WHERE username=\"{$_SESSION ['username']}\"";
2594 $this->dbclass->execute_query ( $QUERY );
2595 }
2596
2597 $trackers = $this->dbclass->get_result_complete ();
2598 $trackers = $this->filterExpiredTrackers ( $trackers );
2599
2600 /*if ($trackers != false) {
2601 foreach ($trackers as $k => $v) {
2602 echo "tracker id".$v['trackerid']."";
2603 $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$v['trackerid']}\"";
2604 echo $query;
2605 $this->dbclass->execute_query ( $query );
2606 $trackers [$k] ['trackerExpiry'] = TrackerExpiry::checkExpiry ( $v ['trackerExpiry'] );
2607 $addKeywords = null;
2608
2609 while ( 1 ) {
2610 $user = $this->dbclass->get_result_row ();
2611 var_dump($user);
2612 if ($user == false)
2613 {die; break;}
2614 if ($addKeywords == null){
2615 $addKeywords = $user ['username'];
2616 echo $addKeywords."<br>";
2617 }
2618 else
2619 $addKeywords .= ", " . $user ['username'];
2620 }
2621 $trackers [$k] ['users'] = $addKeywords;
2622 }
2623 }*/
2624
2625 return $trackers;
2626 }
2627
2628
2629
2630
2631 public function getTrackerCard($trackerid) {
2632 $query = "SELECT * FROM trackers JOIN trackersExInfo USING (trackerid) JOIN trackersFeatures USING (trackerid) INNER JOIN trackersDetails USING (trackerid) LEFT JOIN napt ON vehicleid = trackerid WHERE trackerid=\"$trackerid\"";
2633 $this->dbclass->execute_query ( $query );
2634 $tcard = $this->dbclass->get_result_complete ();
2635 return $tcard;
2636 }
2637
2638 public function getTrackerCard_public($trackerid) {
2639 $query = "SELECT * FROM trackers JOIN trackersExInfo USING (trackerid) JOIN trackersFeatures USING (trackerid) LEFT JOIN napt ON vehicleid = trackerid LEFT JOIN trackersDetails using (trackerid) WHERE trackerid=\"$trackerid\"";
2640 $this->dbclass->execute_query ( $query );
2641 $tcard = $this->dbclass->get_result_complete ();
2642
2643 if ($tcard == false) return ERROR;
2644
2645 return $this->encrypt(json_encode($tcard[0]));
2646 }
2647
2648 public function getAccountCard($username) {
2649 $username = $this->dbclass->get_escape_string ( $username );
2650 $query = "SELECT * FROM Users WHERE username=\"$username\"";
2651 $this->dbclass->execute_query ( $query );
2652 $acard = $this->dbclass->get_result_complete ();
2653 return $acard;
2654 }
2655 public function updateTrackerCard() {
2656 $query = "UPDATE trackers INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersFeatures USING (trackerid) INNER JOIN trackersDetails USING (trackerid) INNER JOIN napt ON vehicleid = trackerid SET ";
2657 $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE trackerid=\"" . $_POST ['trackerid'] . "\"";
2658 $result = $this->dbclass->execute_query ( $query );
2659
2660 if ($result != true) {
2661 //$this->writeDebugLog ( "\r\n" . mysql_error ( $this->dbclass->dblink ) );
2662 $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
2663 return ERROR;
2664 }
2665
2666 return SUCCESS;
2667 }
2668 public function insertTrackerCard() {
2669 global $GMONGO;
2670 if (strlen ( $_POST ['trackerid'] ) < 6)
2671 return "false";
2672
2673 if (isset ( $_POST ['vehicleid'] ))
2674 unset ( $_POST ['vehicleid'] );
2675
2676 $QUERY_ARRAY = array();
2677
2678 array_push($QUERY_ARRAY, "INSERT INTO trackers SET trackerid = \"" . $_POST ['trackerid'] . "\"");
2679 array_push($QUERY_ARRAY, "INSERT INTO adminTrackersMap SET trackerid = \"" . $_POST ['trackerid'] . "\", username = \"" . $_SESSION['username'] . "\""); //Added in V5)
2680 array_push($QUERY_ARRAY, "INSERT INTO trackersFeatures SET trackerid = \"" . $_POST ['trackerid'] . "\"");
2681 array_push($QUERY_ARRAY, "INSERT INTO trackersDetails SET trackerid = \"" . $_POST ['trackerid'] . "\"");
2682 array_push($QUERY_ARRAY, "INSERT INTO trackersExInfo SET trackerid = \"" . $_POST ['trackerid'] . "\"");
2683 array_push($QUERY_ARRAY, "INSERT INTO napt SET vehicleid = \"" . $_POST ['trackerid'] . "\", ip=\"-1\", port=\"-1\", protocol=\"" . $_POST ['protocol'] . "\"");
2684 array_push($QUERY_ARRAY, "CREATE TABLE A{$_POST['trackerid']} like dataTable");
2685 array_push($QUERY_ARRAY, "CREATE TABLE E{$_POST['trackerid']} like eventsTable");
2686 array_push($QUERY_ARRAY,"CREATE TABLE M{$_POST['trackerid']} like miscTable");
2687 array_push($QUERY_ARRAY,"CREATE TABLE R{$_POST['trackerid']} like rTable");
2688 array_push($QUERY_ARRAY, "CREATE TABLE RN{$_POST['trackerid']} like rnTable");
2689 array_push($QUERY_ARRAY, "CREATE TABLE RT{$_POST['trackerid']} like rTable");
2690
2691 foreach ($QUERY_ARRAY as $query){
2692 $result = $this->dbclass->execute_query ( $query );
2693
2694 if ($result == false) {
2695 //$this->writeDebugLog ( "\r\n" . mysql_error ( $this->dbclass->dblink ) );
2696 $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
2697 return ERROR."::MySQL";
2698 }
2699 }
2700
2701 //$GMONGO->createIndex($_POST['trackerid'], array('timestamp' => 1));
2702 //$GMONGO->createIndex($_POST['trackerid'], array('timestamp' => -1));
2703 //$GMONGO->enableSharding($_POST['trackerid']);
2704
2705 return $this->updateTrackerCard ();
2706 }
2707
2708 public function insertAccount() {
2709 $query = "INSERT INTO Users SET ";
2710 $query .= basicTransactions::prepareMySQL_POSTRequest ();
2711 $result = $this->dbclass->execute_query ( $query );
2712
2713 if ($result != true) {
2714 //if (mysql_errno($this->dblink) == 1062)
2715 if ($this->dbclass->dblink->errno == 1062)
2716 return EXISTS;
2717 return ERROR;
2718 }
2719
2720 /******ADDED IN V5*******/
2721 $username = $this->dbclass->get_escape_string($_POST['username']);
2722 if ($_POST ['accounttype'] == 3 || $_POST ['accounttype'] == 5) {
2723 $query = "INSERT INTO logicalGroups_V5 SET username = '$username', adminUserName = \"" . $_SESSION['username'] . "\", accounttype = " . $_POST['accounttype'];
2724 $result = $this->dbclass->execute_query($query);
2725 }
2726 /*} else if ($_POST ['accounttype'] == 5) {
2727 $query = "INSERT INTO fleetCareMap SET fcusername = \"".$username."\", adminUserName = \"".$_SESSION['username']."\"";
2728 $result = $this->dbclass->execute_query ( $query );
2729 }*/
2730
2731 if ($result != true) {
2732 //if (mysql_errno($this->dblink) == 1062)
2733 if ($this->dbclass->dblink->errno == 1062)
2734 return EXISTS;
2735 return ERROR;
2736 }
2737
2738 if ($_POST ['accounttype'] == 1) { //If adding user type admin from super user
2739 $query = "INSERT INTO licenses SET username = '".$username."', licenses = 0";
2740 $result = $this->dbclass->execute_query($query);
2741 }
2742
2743 if ($result != true) {
2744 //if (mysql_errno($this->dblink) == 1062)
2745 if ($this->dbclass->dblink->errno == 1062)
2746 return EXISTS;
2747 return ERROR;
2748 }
2749
2750 return SUCCESS;
2751 }
2752
2753 public function updateAccount() {
2754 $username = $this->dbclass->get_escape_string ( $_POST ['username'] );
2755 $query = "UPDATE Users SET ";
2756 $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE username=\"" . $username . "\"";
2757 $result = $this->dbclass->execute_query ( $query );
2758
2759 if ($result != true) {
2760 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
2761 $this->writeDebugLog ( $this->dbclass->dblink->error );
2762 return ERROR;
2763 }
2764
2765 return SUCCESS;
2766 }
2767
2768 public function checkUser ($username) {
2769 $query = "SELECT COUNT(*) FROM Users WHERE username = '".$username."'";
2770 $this->dbclass->execute_query ( $query );
2771 $userCount = $this->dbclass->get_result_complete ();
2772
2773 if ($userCount == false)
2774 return false;
2775 if ($userCount [0] ['COUNT(*)'] > 0)
2776 return true;
2777 }
2778
2779 public function saveTemplate() {
2780 $query = "REPLACE INTO userTemplates SET ";
2781 $query .= basicTransactions::prepareMySQL_POSTRequest ();
2782 $result = $this->dbclass->execute_query ( $query );
2783 return SUCCESS;
2784 }
2785 public function getTemplates() {
2786 $query = "SELECT * FROM userTemplates WHERE type = 0";
2787 $result = $this->dbclass->execute_query ( $query );
2788 $answer = $this->dbclass->get_result_complete ();
2789 return $answer;
2790 }
2791 private function removeCardFromUsers($username) {
2792 $query = "DELETE FROM Users WHERE username=\"" . $username . "\"";
2793 $result = $this->dbclass->execute_query ( $query );
2794
2795 $this->deactivateUserFences ( $username );
2796 $this->deleteUserGeofences ( $username );
2797
2798 $query = "DELETE FROM archiveFences WHERE username=\"" . $username . "\"";
2799 $result = $this->dbclass->execute_query ( $query );
2800
2801 $query = "DELETE FROM POI WHERE username=\"" . $username . "\"";
2802 $result = $this->dbclass->execute_query ( $query );
2803
2804 $query = "DELETE FROM userPreferences WHERE username=\"" . $username . "\"";
2805 $result = $this->dbclass->execute_query ( $query );
2806
2807 $query = "DELETE FROM usersImages WHERE username=\"" . $username . "\"";
2808 $result = $this->dbclass->execute_query ( $query );
2809
2810 $query = "DELETE FROM schools WHERE username=\"" . $username . "\"";
2811 $result = $this->dbclass->execute_query ( $query );
2812
2813 $this->removeUserStudents ( $username );
2814
2815 $query = "DELETE FROM reminders WHERE username=\"" . $username . "\"";
2816 $result = $this->dbclass->execute_query ( $query );
2817
2818 $query = "DELETE FROM alertSettings WHERE username=\"" . $username . "\"";
2819 $result = $this->dbclass->execute_query ( $query );
2820
2821 $query = "DELETE FROM schedules WHERE username=\"" . $username . "\"";
2822 $result = $this->dbclass->execute_query ( $query );
2823
2824 /*$query = "DELETE FROM logicalGroups_V5 WHERE username=\"" . $username . "\"";
2825 $result = $this->dbclass->execute_query ( $query );*/
2826
2827 $this->removeUserDrivers ( $username );
2828
2829 $query = "DELETE FROM contacts WHERE username=\"" . $username . "\"";
2830 $result = $this->dbclass->execute_query ( $query );
2831
2832 return SUCCESS;
2833 }
2834 private function removeFleetAccount($username) // Removes Fleet Account
2835 {
2836 $query = "DELETE FROM trackersMap WHERE username=\"$username\"";
2837 $result = $this->dbclass->execute_query ( $query );
2838 $query = "DELETE FROM logicalGroups_V5 WHERE username = \"$username\"";
2839 $result = $this->dbclass->execute_query ( $query );
2840 return $this->removeCardFromUsers ( $username );
2841 }
2842 private function removeCCareAccount($username) // Remove ccare account
2843 {
2844 return $this->removeCardFromUsers ( $username );
2845 }
2846 private function removeFleetCareAccount($username) // Removes Fleet Care Account
2847 {
2848 $query = "DELETE FROM logicalGroups_V5 WHERE username = \"$username\"";
2849 $result = $this->dbclass->execute_query ( $query );
2850 return $this->removeCardFromUsers ( $username );
2851 }
2852 private function removeAdminAccount($username) // Remove ccare account
2853 {
2854 $query = "DELETE FROM adminTrackersMap WHERE username=\"$username\"";
2855 $result = $this->dbclass->execute_query ( $query );
2856 $query = "DELETE FROM logicalGroups_V5 WHERE adminUserName = \"".$_SESSION['username']."\"";
2857 $result = $this->dbclass->execute_query ( $query );
2858 return $this->removeCardFromUsers ( $username );
2859 }
2860 public function removeAccount($username, $type) {
2861 $username = $this->dbclass->get_escape_string ( $username );
2862
2863 switch ($type) {
2864 case USERTYPE_FLEET :
2865 return $this->removeFleetAccount ( $username );
2866
2867 case USERTYPE_CUSTOMERCARE :
2868 return $this->removeCCareAccount ( $username );
2869
2870 case USERTYPE_FLEETCARE :
2871 return $this->removeFleetCareAccount ( $username );
2872
2873 case USERTYPE_ADMINISTRATOR:
2874 return $this->removeAdminAccount ( $username );
2875 } // switch
2876
2877 return ERROR;
2878 }
2879 public function blacklistAccount($username) {
2880 $username = $this->dbclass->get_escape_string ( $username );
2881 $query = "UPDATE Users SET blocktime = -1 WHERE username=\"" . $username . "\"";
2882 $result = $this->dbclass->execute_query ( $query );
2883
2884 if ($result != true) {
2885 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
2886 $this->writeDebugLog ( $this->dbclass->dblink->error );
2887 return ERROR;
2888 }
2889
2890 return SUCCESS;
2891 }
2892 public function safelistAccount($username) {
2893 $username = $this->dbclass->get_escape_string ( $username );
2894 $query = "UPDATE Users SET blocktime = 0, noofretry = 0 WHERE username=\"" . $username . "\"";
2895 $result = $this->dbclass->execute_query ( $query );
2896
2897 if ($result != true) {
2898 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
2899 $this->writeDebugLog ( $this->dbclass->dblink->error );
2900 return ERROR;
2901 }
2902
2903 $query = "SELECT * from Users where username='".$username."'";
2904 $result = $this->dbclass->execute_query ( $query );
2905 $users = $this->dbclass->get_result_complete ();
2906
2907 $status = array();
2908 $status['username'] = $users[0]['username'];
2909 $status['status'] = systemUtilities::getStatus($users[0]['expirytime'],$users[0]['blocktime'],$users[0]['lastLogin']);
2910
2911 return $status;
2912 }
2913
2914 public function clearTrackersMap($username) {
2915 $username = $this->dbclass->get_escape_string ( $username );
2916 $query = "DELETE FROM trackersMap WHERE username=\"$username\"";
2917 $result = $this->dbclass->execute_query ( $query );
2918 }
2919 public function removeDriversMap($username, $tid) {
2920 $username = $this->dbclass->get_escape_string ( $username );
2921 $query = "DELETE FROM driversMap WHERE username=\"$username\" AND trackerid=\"$tid\"";
2922 $result = $this->dbclass->execute_query ( $query );
2923 }
2924 public function createTrackersMap($username, $tid) {
2925 $username = $this->dbclass->get_escape_string ( $username );
2926 $query = "INSERT INTO trackersMap SET username=\"$username\", trackerid=\"$tid\"";
2927 $result = $this->dbclass->execute_query ( $query );
2928 if ($result == false)
2929 $this->writeDebugLog ( $this->dbclass->dblink->error );
2930 }
2931 public function trackersMapList($username) {
2932 $no = new emptyClass ();
2933 //$username = "demo";
2934 //$query = "SELECT trackerid as id, name,imei,simno,searchKeywords FROM trackers inner join trackersExInfo using (trackerid)";
2935 $admin = $_SESSION['username'];
2936 $query = "SELECT atm.trackerid AS id, name, imei, simno, searchKeywords FROM adminTrackersMap AS atm INNER JOIN trackers ON atm.username = \"$admin\" AND atm.trackerid = trackers.trackerid INNER JOIN trackersExInfo AS ti ON trackers.trackerid = ti.trackerid";
2937 $this->dbclass->execute_query ( $query );
2938 $trackers = $this->dbclass->get_result_complete ();
2939
2940 $no->ATL = array ();
2941 $no->NTL = array ();
2942
2943 if ($trackers != false) {
2944 $tracker_count = count ( $trackers );
2945
2946 for($b = 0; $b < $tracker_count; $b ++)
2947 $no->ATL [$trackers [$b] ['id']] = $trackers [$b];
2948
2949 unset ( $trackers );
2950
2951 $username = $this->dbclass->get_escape_string ( $username );
2952 //$query = "SELECT trackerid as id, name,imei,simno,searchKeywords FROM trackersMap left join trackers using(trackerid) left join trackersExInfo using (trackerid) WHERE username=\"$username\"";
2953 $query = "SELECT atm.trackerid AS id, name, imei, simno, searchKeywords FROM adminTrackersMap AS atm INNER JOIN trackersMap AS tm ON atm.username = \"$admin\" AND atm.trackerid = tm.trackerid LEFT JOIN trackers ON tm.trackerid = trackers.trackerid LEFT JOIN trackersExInfo as ti on trackers.trackerid = ti.trackerid WHERE tm.username=\"$username\"";
2954 $result = $this->dbclass->execute_query ( $query );
2955 $answer = $this->dbclass->get_result_complete ();
2956
2957 if ($answer != false) {
2958 $tracker_count = count ( $answer );
2959 for($b = 0; $b < $tracker_count; $b ++) {
2960 array_push ( $no->NTL, $answer [$b] );
2961 unset ( $no->ATL [$answer [$b] ['id']] );
2962 } // for
2963 } // if
2964 } // if
2965 $no->ATL = array_values ( $no->ATL );
2966 return $no;
2967 }
2968 public function getPrevLogin($username) {
2969 $uname = $this->dbclass->get_escape_string ( $username );
2970 $query = "SELECT prevLogin FROM Users WHERE username =\"{$uname}\"";
2971 $result = $this->dbclass->execute_query ( $query );
2972 $answer = $this->dbclass->get_result_complete ();
2973 return $answer;
2974 }
2975 public function setWeatherLocation($location) {
2976 $location = $this->dbclass->get_escape_string ( $location );
2977 $QUERY = "UPDATE systemPreferences SET weatherLocation=\"" . $location . "\"";
2978 $this->dbclass->execute_query ( $QUERY );
2979 }
2980 public function fleet_setWeatherLocation($location) {
2981 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
2982 $location = $this->dbclass->get_escape_string ( $location );
2983
2984 $QUERY = "SELECT COUNT(*) FROM userPreferences WHERE username=\"{$username}\"";
2985 $this->dbclass->execute_query ( $QUERY );
2986 $ans = $this->dbclass->get_result_complete ();
2987
2988 if ($ans [0] ['COUNT(*)'] > 0) {
2989 $QUERY = "UPDATE userPreferences SET weatherLocation=\"" . $location . "\" WHERE username=\"{$username}\"";
2990 $this->dbclass->execute_query ( $QUERY );
2991 } else {
2992 $QUERY = "INSERT INTO userPreferences SET weatherLocation=\"" . $location . "\", username=\"{$username}\"";
2993 $this->dbclass->execute_query ( $QUERY );
2994 }
2995 }
2996 public function updateLoginSuccess($username) {
2997 $now = time ();
2998 $uname = $this->dbclass->get_escape_string ( $username );
2999
3000 $query = "SELECT lastLogin FROM Users WHERE username =\"{$uname}\"";
3001 $result = $this->dbclass->execute_query ( $query );
3002 $answer = $this->dbclass->get_result_complete ();
3003
3004 $QUERY = "UPDATE Users SET lastLogin=$now, prevLogin=" . $answer [0] ['lastLogin'] . " WHERE username=\"{$uname}\"";
3005 $this->dbclass->execute_query ( $QUERY );
3006 }
3007 public function ccare_get_users_list() {
3008 $fields = "username,name,company,mobile,email,city,country,reseller";
3009 $wClause = "accounttype = " . USERTYPE_FLEET;
3010
3011 $query = "SELECT $fields FROM Users WHERE " . $wClause . " ORDER BY name";
3012 $result = $this->dbclass->execute_query ( $query );
3013 $answer = $this->dbclass->get_result_complete ();
3014 return $answer;
3015 }
3016 public function get_users_list($ccare = false) {
3017 if ($ccare) {
3018 $fields = "*";
3019 $wClause = "accounttype = " . USERTYPE_FLEET . " OR accounttype = " . USERTYPE_CUSTOMERCARE;
3020 } else {
3021 $fields = "username,name,company";
3022 $wClause = "accounttype = " . USERTYPE_FLEET;
3023 }
3024
3025 $query = "SELECT $fields FROM Users WHERE " . $wClause . " ORDER BY username";
3026 $result = $this->dbclass->execute_query ( $query );
3027 $answer = $this->dbclass->get_result_complete ();
3028
3029 return $answer;
3030 }
3031 public function getUserNotificationRecord($username) {
3032 $uname = $this->dbclass->get_escape_string ( $username );
3033
3034 $query = "SELECT * FROM usersNotifications WHERE username =\"{$uname}\"";
3035 $result = $this->dbclass->execute_query ( $query );
3036 return $this->dbclass->get_result_complete ();
3037 }
3038 public function getTrackerNotificationRecord($tid) {
3039 $query = "SELECT * FROM trackersNotifications WHERE trackerid =\"{$tid}\"";
3040 $result = $this->dbclass->execute_query ( $query );
3041 return $this->dbclass->get_result_complete ();
3042 }
3043
3044 public function setUserNotificationRecord($username, $time) {
3045 $uname = $this->dbclass->get_escape_string ( $username );
3046 $query = "REPLACE INTO usersNotifications SET username =\"{$uname}\", UE_NOTICE = '$time'";
3047 $result = $this->dbclass->execute_query ( $query );
3048 }
3049
3050 public function setTrackerNotificationRecord($tid, $time) {
3051 $query = "REPLACE INTO trackersNotifications SET trackerid =\"{$tid}\", TE_NOTICE = '$time'";
3052 $result = $this->dbclass->execute_query ( $query );
3053 }
3054
3055 public function getAllTrackersList() {
3056 global $GMONGO;
3057
3058 //$query = "SELECT trackerid,name,imei,simno,searchKeywords,trackerExpiry,type, chassisNo, licensePlate, iconText FROM trackers INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersDetails USING (trackerid)";
3059 $query = "SELECT * FROM trackers INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersDetails USING (trackerid)";
3060 $this->dbclass->execute_query ( $query );
3061 $answer = $this->dbclass->get_result_complete ();
3062
3063 $fdate = new FNSDateTime($_SESSION['timezone']);
3064
3065 if ($answer != false) {
3066 foreach ( $answer as $k => $v ) {
3067 $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$v['trackerid']}\"";
3068 $this->dbclass->execute_query ( $query );
3069 $answer [$k] ['trackerExpiry'] = TrackerExpiry::checkExpiry ( $v ['trackerExpiry'] );
3070 $addKeywords = null;
3071
3072 while ( 1 ) {
3073 $user = $this->dbclass->get_result_row ();
3074 if ($user == false)
3075 break;
3076 if ($addKeywords == null)
3077 $addKeywords = $user ['username'];
3078 else
3079 $addKeywords .= ", " . $user ['username'];
3080 }
3081 $answer [$k] ['users'] = $addKeywords;
3082 //$lastRecord = $GMONGO->getLastAMRecord($v['trackerid']);
3083 //$query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$tracker['trackerid']."' AND timestamp >= $cTS";
3084 //$fdate->setTimestamp($lastRecord[0]['timestamp']);
3085 //$answer [$k] ['datetime'] = $fdate->getFormattedString();
3086 }
3087 }
3088
3089 return $answer;
3090 }
3091
3092
3093 public function getWorkingDriversList($fields = "*") {
3094
3095 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
3096
3097 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
3098 $query = "SELECT $fields FROM drivers WHERE tagID NOT LIKE 'EXP%'";
3099 }else if ($_SESSION['accounttype'] == USERTYPE_FLEET){
3100 $query = "SELECT $fields FROM drivers WHERE tagID NOT LIKE 'EXP%' AND username=\"$username\"";
3101 }
3102
3103 $this->dbclass->execute_query ( $query );
3104 return $this->dbclass->get_result_complete ();
3105 }
3106
3107
3108 public function getFleetStatus() {
3109 //global $GMONGO;
3110
3111 $uname = $this->dbclass->get_escape_string ( $_SESSION['username'] );
3112
3113 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
3114 //$query = "SELECT * FROM trackers";
3115 $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '{$uname}'";
3116 }else if ($_SESSION['accounttype'] == USERTYPE_FLEET){
3117 $query = "SELECT * FROM trackersMap WHERE username=\"$uname\"";
3118 }
3119
3120 "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '$uname'";
3121
3122 $this->dbclass->execute_query ( $query );
3123 $answer = $this->dbclass->get_result_complete ();
3124
3125 $result = array();
3126 $result['working'] = array();
3127 $result['idle'] = array();
3128 $result['noreport'] = array();
3129
3130 foreach ($answer as $k =>$v){
3131 $ans = $this->getMAGLOBALSrecord($v['trackerid']);
3132 //$ans = $GMONGO->getLastAMRecord($v['trackerid']);
3133
3134 /*if ($ans != false && isset($ans[0]['TIMESTAMP'])) {
3135 $ans[0]['timestamp'] = $ans[0]['TIMESTAMP'];
3136 }*/
3137
3138 if ($ans == false ) {
3139 array_push($result['noreport'], $v);
3140 }else if (time() - $ans[0]['timestamp'] > NEWSPAPER_NON_WORKING_TIME){
3141 array_push($result['noreport'], $v);
3142 } else {
3143
3144 $v['driver'] = $this->getDriverName ( $v['trackerid']);
3145
3146 if (strpos($ans[0]['IO'],"j") === false ) {
3147 array_push($result['idle'], $v);
3148 }else {
3149 array_push($result['working'], $v);
3150 }
3151 }
3152 }
3153
3154 return $result;
3155 }
3156
3157 public function getIterativeTrackersList() {
3158
3159 $uname = $this->dbclass->get_escape_string ( $_SESSION['username'] );
3160
3161 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
3162 //$query = "SELECT * FROM trackers";
3163 $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '$uname'";
3164 }else if ($_SESSION['accounttype'] == USERTYPE_FLEET){
3165 $query = "SELECT * FROM trackersMap INNER JOIN trackers using (trackerid) WHERE username=\"$uname\"";
3166 } else if ($_SESSION['accounttype'] == USERTYPE_CUSTOMERCARE) {
3167 $query = "SELECT * FROM trackers";
3168 } else if ($_SESSION['accounttype'] == USERTYPE_FLEETCARE) {
3169 $QUERY = "SELECT adminUserName from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
3170 $result = $this->dbclass->execute_query ( $QUERY );
3171 $un = $this -> dbclass -> get_result_complete();
3172
3173 $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '".$un[0]['adminUserName']."'";
3174 }
3175
3176 $result = $this->dbclass->execute_query ( $query );
3177 return $this->dbclass->get_result_complete ();
3178 }
3179
3180 public function getCriticalEvents($durationInSecs) {
3181 global $TRACKING_EVENTS;
3182 global $GMONGO;
3183
3184 $events = $TRACKING_EVENTS->getCriticalEventsList(0, NEWSPAPER_CRITICAL_EVENTS_LEVEL);
3185 //$events = $TRACKING_EVENTS->getCriticalEventsList(0, 2);
3186
3187 $answer = $this->getIterativeTrackersList();
3188 $t = time() - $durationInSecs;
3189 $cans = array();
3190 $a = array();
3191
3192 foreach ($events as $e => $f) {
3193 array_push($a, "$f->code");
3194 }
3195
3196
3197 foreach ($answer as $k =>$v){
3198 $cans[$v['trackerid']] = array('name' => $v['name'], 'events' => array());
3199
3200 $ans = $GMONGO->getERecords($v['trackerid'], array('event' => array('$in' => $a), 'timestamp' => array('$gt' => $t)), false);
3201
3202 if ($ans != false) {
3203 foreach($ans as $m => $n) {
3204 $name = $TRACKING_EVENTS->getEventName($n['event']);
3205 if (isset($cans[$v['trackerid']]['events'][$name])) $cans[$v['trackerid']]['events'][$name]++;
3206 else $cans[$v['trackerid']]['events'][$name] = 1;
3207 }
3208 }
3209 }
3210 return $cans;
3211 }
3212
3213
3214 public function tracker_getAllEvents($tid, $durationInSecs) {
3215 global $TRACKING_EVENTS;
3216 global $GMONGO;
3217
3218 $t = time() - $durationInSecs;
3219 $cans = array('cEvents' => array(), 'gEvents' => array());
3220 $a = array();
3221
3222 $ans = $GMONGO->getERecords($tid, array('timestamp' => array('$gt' => $t)), false);
3223
3224 if ($ans != false) {
3225 foreach($ans as $m => $n) {
3226 $name = $TRACKING_EVENTS->getEventName($n['event']);
3227
3228 if ($TRACKING_EVENTS->getCriticalLevel($n['event']) < NEWSPAPER_CRITICAL_EVENTS_LEVEL) {
3229 //$cans['cEvents'][$n['event']] = $name;
3230 if (isset($cans['cEvents']['events'][$name])) $cans['cEvents'][$name]++;
3231 else $cans['cEvents']['events'][$name] = 1;
3232 }else {
3233 //$cans['gEvents'][$n['event']] = $name;
3234 if (isset($cans['gEvents']['events'][$name])) $cans['gEvents']['events'][$name]++;
3235 else $cans['gEvents']['events'][$name] = 1;
3236 }
3237 }
3238 }
3239
3240 return $cans;
3241 }
3242
3243
3244 public function todaysFleet_getAllEvents($durationInSecs) {
3245 global $TRACKING_EVENTS;
3246 global $GMONGO;
3247
3248 $answer = $this->getIterativeTrackersList();
3249 $t = time() - $durationInSecs;
3250 $cans = array();
3251 $a = array();
3252
3253 foreach ($answer as $k =>$v){
3254 $ans = $GMONGO->getERecords($v['trackerid'], array('timestamp' => array('$gt' => $t)), false);
3255
3256 $cEvents = array();
3257 $gEvents = array();
3258 $eventCounter = array();
3259
3260 if ($ans != false) {
3261 foreach($ans as $m => $n) {
3262 $name = $TRACKING_EVENTS->getEventName($n['event']);
3263 $level = $TRACKING_EVENTS->getCriticalLevel($n['event']);
3264
3265 //if ($level < NEWSPAPER_CRITICAL_EVENTS_LEVEL) {
3266 if ($level < 2) {
3267 $cEvents[$n['event']] = $name;
3268 }else {
3269 $gEvents[$n['event']] = $name;
3270 }
3271
3272 if (isset($eventCounter[$name])) {
3273 $eventCounter[$name]->count++;
3274 }
3275 else {
3276 $eventCounter[$name] = new emptyClass();
3277 $eventCounter[$name]->count = 1;
3278 $eventCounter[$name]->level = $level;
3279 }
3280 }
3281 $rec = array();
3282 //$rec['name'] = $v['name'];
3283 $rec['name'] = $this -> getTrackerName ($v['trackerid'])[0]['name'];
3284 $rec['tid'] = $v['trackerid'];
3285 $rec['cEvents'] = implode(",", $cEvents);
3286 $rec['tCount'] = count($ans);
3287 $rec['gEvents'] = implode(",", $gEvents);
3288 $rec['description'] = 'a';
3289 $rec['rating'] = 'b';
3290 $rec['evCount'] = $eventCounter;
3291
3292
3293 array_push($cans, $rec);
3294 }
3295 }
3296
3297 usort($cans, function($a, $b){
3298 return $b['d'] > $a['d'];
3299 });
3300
3301 for ($i = 0; $i < count($cans); $i++)
3302 $cans[$i]['rowNumber'] = $i+1;
3303
3304 return $cans;
3305 }
3306
3307
3308
3309 public function getFleetDistance($durationInSecs) {
3310 //global $GMONGO;
3311
3312 $answer = $this->getIterativeTrackersList();
3313 $gclient = new FNSGearman();
3314
3315 $result = array();
3316 $dresult = array();
3317 $tlistMapper = array();
3318
3319 foreach ($answer as $k =>$v){
3320 $tlistMapper[$v['trackerid']] = $answer[$k];
3321 $gclient->addTask('todaysFleetDMSI',json_encode(array('tinfo' => $v, 'duration' => $durationInSecs, 'session' => $_SESSION)), null, $v['trackerid']);
3322 }
3323 $gclient->runTasks();
3324
3325 foreach(FNSGearman::$results as $k => $v) {
3326 $res = json_decode($v, true);
3327
3328 if (isset($res['td']) && is_array($res['td']) && $res['td']['d'] != 0) {
3329 $nres = $res['td'];
3330 $nres['t'] = $k;
3331 $nres['n'] = $tlistMapper[$k]['name'];
3332 $result[$k] = $nres;
3333 }
3334 if (isset($res['dd']) && is_array($res['dd'])) {
3335 foreach($res['dd'] as $tagID => $value) {
3336 if (isset($dresult[$tagID]) == false) {
3337 $dresult[$tagID] = array('info' => $value['info'], 'time' => $value['time']);
3338 } else {
3339 $dresult[$tagID]['time'] += $value['time'];
3340 }
3341
3342 }
3343 }
3344 }
3345
3346 usort($result, function($a, $b){
3347 return $b['d'] > $a['d'];
3348 });
3349
3350 usort($dresult, function($a, $b){
3351 return $b['time'] > $a['time'];
3352 });
3353
3354 //print_r(array('td' => $result, 'dd'=>$dresult));
3355 //die;
3356
3357 return array('td' => $result, 'dd'=>$dresult);
3358
3359 }
3360
3361
3362 public function getTrackersStatus() {
3363 $trackers = $this->getIterativeTrackersList();
3364 if ($trackers) {
3365 $status = array();
3366
3367 $tcount = count($trackers);
3368 $fdate = new FNSDateTime($_SESSION['timezone']);
3369 for ($i = 0; $i < $tcount; $i++) {
3370 //$trec = $GMONGO->getLastARecord($trackers[$i]['trackerid']);
3371 $trec = $this->getAGLOBALSrecord($trackers[$i]['trackerid']);
3372 $tStatus = new trackerStatus();
3373 $tStatus -> tid = $trackers[$i]['trackerid'];
3374 $tname = $this->getTrackerName($trackers[$i]['trackerid']);
3375
3376 $tStatus -> tname = $tname[0]['name'];
3377 if ($trec != false) {
3378 $geo = new GEOCODER();
3379 $fdate -> setDate($trec[0]['date'], $trec[0]['time']);
3380 $tStatus -> dateTime = $fdate->getFormattedString();
3381
3382 $ts = $trec [0] ['timestamp'];
3383
3384 if ((time() - $ts) < NON_WORKING_TRACKER_TIME)
3385 $tStatus -> status = 'w';
3386
3387 if (isset ($_GET['doGeocode']) && $_GET['doGeocode'] == 1) {
3388 $location = $geo -> search($trec[0]['latitude'], $trec[0]['longitude'], true);
3389 $tStatus -> lastLocation = $location ['location'];
3390 }
3391 else{
3392 $location = ''.$trec[0]['latitude'].', '.$trec[0]['longitude'];
3393 $tStatus -> lastLocation = $location;
3394 }
3395 }
3396 array_push($status, $tStatus);
3397 }
3398
3399 return $status;
3400 }
3401
3402 return ERROR;
3403 }
3404
3405
3406 public function userTrackersList($username) {
3407 $uname = $this->dbclass->get_escape_string ( $username );
3408 $query = "SELECT trackerid FROM trackersMap WHERE username=\"$uname\"";
3409 $result = $this->dbclass->execute_query ( $query );
3410 $answer = $this->dbclass->get_result_complete ();
3411 return $answer;
3412 }
3413 public function getFuelProfilesList() {
3414 $uname = $_SESSION ['username'];
3415 $query = "SELECT * FROM fuelProfiles";
3416 //CHANGES MADE ON 26th June 2015 DUE TO LOGICAL GROUPING IN V5
3417 //$query = "SELECT fuelProfiles.* FROM adminTrackersMap INNER JOIN trackers ON adminTrackersMap.username = \"$uname\" AND adminTrackersMap.trackerid = trackers.trackerid INNER JOIN fuelProfiles ON trackers.name = fuelProfiles.name";
3418 $result = $this->dbclass->execute_query ( $query );
3419 $answer = $this->dbclass->get_result_complete ();
3420 return $answer;
3421 }
3422 public function getTemperatureProfilesList() {
3423 $query = "SELECT * FROM temperatureProfiles";
3424 $result = $this->dbclass->execute_query ( $query );
3425 $answer = $this->dbclass->get_result_complete ();
3426 return $answer;
3427 }
3428 public function getMCProfilesList($adminUserName = false) {
3429 if ($adminUserName == false)
3430 $query = "SELECT * FROM monitoringCentres";
3431 else {
3432 $adminUserName = $this->dbclass->get_escape_string($adminUserName);
3433 $query = "SELECT * FROM monitoringCentres WHERE adminUserName = '{$adminUserName}'";
3434 }
3435
3436 $result = $this->dbclass->execute_query ( $query );
3437 $answer = $this->dbclass->get_result_complete ();
3438 return $answer;
3439 }
3440 public function trackerid_exist($tidrand) {
3441 $query = "SELECT COUNT(*) FROM trackers WHERE trackerid=\"$tidrand\"";
3442 $result = $this->dbclass->execute_query ( $query );
3443 $answer = $this->dbclass->get_result_complete ();
3444 if ($answer [0] ["COUNT(*)"] > 0)
3445 return true;
3446 return false;
3447 }
3448 public function moveTrackerCard($trackerid, $username) {
3449 $username = $this->dbclass->get_escape_string ( $username );
3450 $QUERY = "UPDATE trackers SET username=\"$username\",logicalGroup=\"DEFAULT\" WHERE trackerid=\"{$trackerid}\"";
3451 $this->dbclass->execute_query ( $QUERY );
3452 }
3453 public function addPublicTracker($trackerid, $username) {
3454 $username = $this->dbclass->get_escape_string ( $username );
3455
3456 $QUERY = "SELECT COUNT(*) FROM publicmaps WHERE username=\"$username\" AND trackerid=\"{$trackerid}\"";
3457 $result = $this->dbclass->execute_query ( $QUERY );
3458 $answer = $this->dbclass->get_result_complete ();
3459
3460 if ($answer [0] ["COUNT(*)"] > 0)
3461 return true;
3462
3463 $QUERY = "INSERT INTO publicmaps SET username=\"$username\",trackerid=\"{$trackerid}\"";
3464 $this->dbclass->execute_query ( $QUERY );
3465 }
3466 public function removePublicTracker($trackerid, $username) {
3467 $username = $this->dbclass->get_escape_string ( $username );
3468 $QUERY = "DELETE FROM publicmaps WHERE username=\"$username\" AND trackerid=\"{$trackerid}\"";
3469 $this->dbclass->execute_query ( $QUERY );
3470 }
3471 public function cleanTracker($trackerid, $sDate, $sTime, $eDate, $eTime) {
3472 $periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
3473
3474 $tblStart = array (
3475 "A",
3476 "E",
3477 "M"
3478 );
3479 for($i = 0; $i < count ( $tblStart ); $i ++) {
3480 $QUERY = "DELETE FROM " . $tblStart [$i] . $trackerid . " WHERE $periodClause";
3481 $this->dbclass->execute_query ( $QUERY );
3482
3483 // $QUERY = "OPTIMIZE TABLE " . $tblStart [$i] . $trackerid;
3484 // $this->dbclass->execute_query ( $QUERY );
3485
3486 $QUERY = "ALTER TABLE " . $tblStart [$i] . $trackerid . " DROP PRIMARY KEY, DROP COLUMN id";
3487 $this->dbclass->execute_query ( $QUERY );
3488
3489 $QUERY = "ALTER TABLE " . $tblStart [$i] . $trackerid . " ADD COLUMN id bigint auto_increment primary key first";
3490 $this->dbclass->execute_query ( $QUERY );
3491 }
3492 }
3493
3494 public function checkDriverLogin($user, $pass) {
3495 $user = $this->dbclass->get_escape_string($user);
3496 $QUERY = "SELECT tagID,name,lpass,licno FROM drivers WHERE luser=\"$user\"";
3497 $this->dbclass->execute_query ( $QUERY );
3498 $ans = $this->dbclass->get_result_complete();
3499
3500 if ($ans == false) return ERROR;
3501
3502 if ($ans[0]['lpass'] == $pass) {
3503 return $ans[0];
3504 }
3505 return ERROR;
3506 }
3507
3508
3509 public function getEJMS_PreInsList($username) {
3510 $username = $this->dbclass->get_escape_string($username);
3511 $QUERY = "SELECT id, data FROM ejmspreins WHERE username=\"$username\"";
3512 $this->dbclass->execute_query ( $QUERY );
3513 return $this->dbclass->get_result_complete();
3514 }
3515
3516 public function getEJMS_PreInsRecord($username, $id) {
3517 $username = $this->dbclass->get_escape_string($username);
3518 $id = $this->dbclass->get_escape_string($id);
3519 $QUERY = "SELECT data FROM ejmspreins WHERE username=\"$username\" AND id = \"$id\"";
3520
3521 $this->dbclass->execute_query ( $QUERY );
3522 return $this->dbclass->get_result_complete();
3523 }
3524
3525 public function updateEJMS_PreInsRecord($username, $id, $data) {
3526 $username = $this->dbclass->get_escape_string($username);
3527 $id = $this->dbclass->get_escape_string($id);
3528 $data = $this->dbclass->get_escape_string($data);
3529 $QUERY = "UPDATE ejmspreins SET data='$data' WHERE id=\"$id\" AND username='$username'";
3530
3531 $this->dbclass->execute_query ( $QUERY );
3532 return $id;
3533 }
3534
3535 public function deleteEJMS_PreInsRecord($username, $id) {
3536 $id = $this->dbclass->get_escape_string($id);
3537 $username = $this->dbclass->get_escape_string($username);
3538 $QUERY = "DELETE FROM ejmspreins WHERE id=\"$id\" AND username=\"$username\"";
3539 $this->dbclass->execute_query ( $QUERY );
3540 return SUCCESS;
3541 }
3542
3543 public function eJMSPreInspectionStore($username, $data) {
3544 $username = $this->dbclass->get_escape_string($username);
3545 $data = $this->dbclass->get_escape_string($data);
3546
3547 $QUERY = "INSERT INTO ejmspreins SET id = 0, username=\"$username\",data=\"$data\"";
3548 $this->dbclass->execute_query ( $QUERY );
3549 return $this->dbclass->get_insert_id();
3550 }
3551
3552 public function cleanDatabase($sDate, $sTime, $eDate, $eTime) {
3553 global $GMONGO;
3554 //if ($_SESSION['accounttype'] == USERTYPE_SUPERUSER)
3555 $query = "SELECT trackerid FROM trackers";
3556 /*elseif ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
3557 $query = "SELECT trackerid ";*/
3558 $result = $this->dbclass->execute_query ( $query );
3559 $answer = $this->dbclass->get_result_complete ();
3560 if ($answer == false)
3561 return false;
3562
3563 $tc = count ( $answer );
3564
3565 for($i = 0; $i < $tc; $i ++) {
3566 //$this->cleanTracker ( $answer [$i] ['trackerid'], $sDate, $sTime, $eDate, $eTime );
3567 $GMONGO->cleanTracker( $answer [$i] ['trackerid'], $sDate, $sTime, $eDate, $eTime );
3568 }
3569 return true;
3570 }
3571 private function deactivateUserFences($uname) {
3572 // $uname = $this->dbclass->get_escape_string($uname);
3573 // Username is already espaced
3574 $query = "SELECT * FROM activeGeofences WHERE username='{$uname}'";
3575 $this->dbclass->execute_query ( $query );
3576 $answer = $this->dbclass->get_result_complete ();
3577
3578 if ($answer == false)
3579 return;
3580
3581 $fcount = count ( $answer );
3582
3583 for($i = 0; $i < $fcount; $i ++) {
3584 $query = "INSERT INTO ACTIVEGEO_CACHE (id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,operation) select id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,'D' from activeGeofences where id=" . $answer [$i] ['id'];
3585 $this->dbclass->execute_query ( $query );
3586 $query = "DELETE FROM activeGeofences WHERE id=" . $answer [$i] ['id'];
3587 $this->dbclass->execute_query ( $query );
3588 }
3589 }
3590 public function deactivateTrackerFences($trackerid) {
3591 $query = "SELECT * FROM activeGeofences WHERE trackerid='{$trackerid}'";
3592 $this->dbclass->execute_query ( $query );
3593 $answer = $this->dbclass->get_result_complete ();
3594
3595 if ($answer == false)
3596 return;
3597
3598 $fcount = count ( $answer );
3599
3600 for($i = 0; $i < $fcount; $i ++) {
3601 $query = "INSERT INTO ACTIVEGEO_CACHE (id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,operation) select id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,'D' from activeGeofences where id=" . $answer [$i] ['id'];
3602 $this->dbclass->execute_query ( $query );
3603 $query = "DELETE FROM activeGeofences WHERE id=" . $answer [$i] ['id'];
3604 $this->dbclass->execute_query ( $query );
3605 }
3606 }
3607 public function deactivateUserTrackerFences($uname, $trackerid) {
3608 $uname = $this->dbclass->get_escape_string ( $uname );
3609 $query = "SELECT id FROM activeGeofences WHERE username='{$uname}' AND trackerid='{$trackerid}'";
3610 $this->dbclass->execute_query ( $query );
3611 $answer = $this->dbclass->get_result_complete ();
3612
3613 if ($answer == false)
3614 return;
3615
3616 $fcount = count ( $answer );
3617
3618 for($i = 0; $i < $fcount; $i ++) {
3619 $query = "INSERT INTO ACTIVEGEO_CACHE (id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,operation) select id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,'D' from activeGeofences where id=" . $answer [$i] ['id'];
3620 $this->dbclass->execute_query ( $query );
3621 $query = "DELETE FROM activeGeofences WHERE id=" . $answer [$i] ['id'];
3622 $this->dbclass->execute_query ( $query );
3623 }
3624 }
3625 private function deactivateTrackerPaths($trackerid) {
3626 $query = "SELECT * FROM ACTIVEPATH WHERE trackerid='{$trackerid}'";
3627 $this->dbclass->execute_query ( $query );
3628 $answer = $this->dbclass->get_result_complete ();
3629
3630 if ($answer == false)
3631 return;
3632
3633 $fcount = count ( $answer );
3634
3635 for($i = 0; $i < $fcount; $i ++) {
3636 $record = $answer [$i];
3637
3638 $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
3639 $uname = $this->dbclass->get_escape_string ( $record ['username'] );
3640
3641 $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' AND fencename='{$fname}' AND trackerid='{$record['trackerid']}' AND sdate='{$record['sdate']}' AND ";
3642 $query .= "edate='{$record['edate']}' AND alertOffRoute ='{$record['alertOffRoute']}' AND daysGap='{$record['daysGap']}' AND speedLimit='{$record['speedLimit']}' AND stime='{$record['stime']}' AND etime='{$record['etime']}'";
3643 $this->dbclass->execute_query ( $query );
3644 }
3645 }
3646 public function deactivateUserTrackerPaths($uname, $trackerid) {
3647 $uname = $this->dbclass->get_escape_string ( $uname );
3648 $query = "SELECT * FROM ACTIVEPATH WHERE username = '$uname' and trackerid='{$trackerid}'";
3649 $this->dbclass->execute_query ( $query );
3650 $answer = $this->dbclass->get_result_complete ();
3651
3652 if ($answer == false)
3653 return;
3654
3655 $fcount = count ( $answer );
3656
3657 for($i = 0; $i < $fcount; $i ++) {
3658 $record = $answer [$i];
3659
3660 $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
3661 $uname = $this->dbclass->get_escape_string ( $record ['username'] );
3662
3663 $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' AND fencename='{$fname}' AND trackerid='{$record['trackerid']}' AND sdate='{$record['sdate']}' AND ";
3664 $query .= "edate='{$record['edate']}' AND alertOffRoute ='{$record['alertOffRoute']}' AND daysGap='{$record['daysGap']}' AND speedLimit='{$record['speedLimit']}' AND stime='{$record['stime']}' AND etime='{$record['etime']}'";
3665 $this->dbclass->execute_query ( $query );
3666 }
3667 }
3668 public function removeTrackerCard($trackerid) {
3669 global $GMONGO;
3670
3671 $this->deactivateTrackerFences ( $trackerid );
3672 $this->deactivateTrackerPaths ( $trackerid );
3673
3674 $QUERY = "DELETE FROM archiveFences WHERE trackerid=\"{$trackerid}\"";
3675 $this->dbclass->execute_query ( $QUERY );
3676
3677 $QUERY = "DELETE FROM remindersCache WHERE trackerid=\"{$trackerid}\"";
3678 $this->dbclass->execute_query ( $QUERY );
3679
3680 $QUERY = "DELETE FROM reportSchedules WHERE trackerid=\"{$trackerid}\"";
3681 $this->dbclass->execute_query ( $QUERY );
3682
3683 $QUERY = "DELETE FROM schedules WHERE trackerid=\"{$trackerid}\"";
3684 $this->dbclass->execute_query ( $QUERY );
3685
3686 $QUERY = "DELETE FROM trips WHERE trackerid=\"{$trackerid}\"";
3687 $this->dbclass->execute_query ( $QUERY );
3688
3689 $QUERY = "DELETE FROM alertSettings WHERE trackerid=\"{$trackerid}\"";
3690 $this->dbclass->execute_query ( $QUERY );
3691
3692 $QUERY = "DELETE FROM trackers WHERE trackerid=\"{$trackerid}\"";
3693 $this->dbclass->execute_query ( $QUERY );
3694
3695 $QUERY = "DELETE FROM trackersMap WHERE trackerid=\"{$trackerid}\"";
3696 $this->dbclass->execute_query ( $QUERY );
3697
3698 $QUERY = "DELETE FROM odoTuning WHERE trackerid=\"{$trackerid}\"";
3699 $this->dbclass->execute_query ( $QUERY );
3700
3701 $QUERY = "DELETE FROM trackersExInfo WHERE trackerid=\"{$trackerid}\"";
3702 $this->dbclass->execute_query ( $QUERY );
3703
3704 $QUERY = "DELETE FROM trackersNotifications WHERE trackerid=\"{$trackerid}\"";
3705 $this->dbclass->execute_query ( $QUERY );
3706
3707 $QUERY = "DELETE FROM trackersFeatures WHERE trackerid=\"{$trackerid}\"";
3708 $this->dbclass->execute_query ( $QUERY );
3709
3710 $QUERY = "DELETE FROM trackersDetails WHERE trackerid=\"{$trackerid}\"";
3711 $this->dbclass->execute_query ( $QUERY );
3712
3713 $QUERY = "DELETE FROM alertSettings WHERE trackerid=\"{$trackerid}\"";
3714 $this->dbclass->execute_query ( $QUERY );
3715
3716 $QUERY = "DELETE FROM reminders WHERE trackerid=\"{$trackerid}\"";
3717 $this->dbclass->execute_query ( $QUERY );
3718
3719 $QUERY = "DELETE FROM napt WHERE vehicleid=\"{$trackerid}\"";
3720 $this->dbclass->execute_query ( $QUERY );
3721
3722 $QUERY = "DELETE FROM driverMaps WHERE trackerid=\"{$trackerid}\"";
3723 $this->dbclass->execute_query ( $QUERY );
3724
3725 $query = "DELETE FROM adminTrackersMap WHERE trackerid = \"{$trackerid}\""; //Added in V5
3726 $this->dbclass->execute_query ( $query );
3727
3728 $QUERY = "DROP TABLE IF EXISTS A{$trackerid}";
3729 $this->dbclass->execute_query ( $QUERY );
3730
3731 $GMONGO -> dropCollectionA($trackerid);
3732
3733 $QUERY = "DROP TABLE IF EXISTS M{$trackerid}";
3734 $this->dbclass->execute_query ( $QUERY );
3735
3736 $GMONGO -> dropCollectionM($trackerid);
3737
3738 $QUERY = "DROP TABLE IF EXISTS E{$trackerid}";
3739 $this->dbclass->execute_query ( $QUERY );
3740
3741 $GMONGO -> dropCollectionE($trackerid);
3742
3743 $QUERY = "DROP TABLE IF EXISTS R{$trackerid}";
3744 $this->dbclass->execute_query ( $QUERY );
3745
3746 $QUERY = "DROP TABLE IF EXISTS RN{$trackerid}";
3747 $this->dbclass->execute_query ( $QUERY );
3748
3749 $QUERY = "DROP TABLE IF EXISTS RT{$trackerid}";
3750 $this->dbclass->execute_query ( $QUERY );
3751
3752 $filename = TRACKER_IMAGES_FOLDER . "/T{$trackerid}.png";
3753 if (file_exists ( $filename ))
3754 unlink ( $filename );
3755 }
3756
3757
3758 public function backupDatabase_zip($download, $store) {
3759 global $GMONGO;
3760 $name = $this->dbclass->perform_backup ();
3761 $arr = explode ( "/", $name );
3762 $myfname = $arr [count ( $arr ) - 1];
3763
3764 $mongoname = $GMONGO->performMongoBackup();
3765
3766 //$fname = $mongoname = BACKUP_FOLDER.'/backup';
3767
3768 $arr = explode ( "/", $mongoname );
3769 $mongofname = $arr [count ( $arr ) - 1];
3770
3771 //$query = "INSERT INTO backup_log SET filename = \"{$fname}.gz\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
3772 $query = "INSERT INTO backup_log SET filename = \"{$mongofname}.zip\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
3773 $this->dbclass->execute_query ( $query );
3774
3775 $mongoname = realpath($mongoname);
3776 $files = new RecursiveIteratorIterator(
3777 new RecursiveDirectoryIterator($mongoname),
3778 RecursiveIteratorIterator::LEAVES_ONLY
3779 );
3780
3781 $zip = new ZipArchive();
3782 $file_name = "{$mongoname}.zip";
3783
3784 $res = $zip->open($file_name, ZipArchive::CREATE);
3785 if ($res === true) {
3786 $zip->addFile($name, $myfname);
3787 foreach ($files as $names => $file) {
3788 if (!$file->isDir()) {
3789 $filePath = $file->getRealPath();
3790 $relativePath = substr($filePath, strlen($mongofname) + 1);
3791 $zip->addFile($filePath, $relativePath);
3792 }
3793 }
3794 $zip->close();
3795 } else return ERROR;
3796
3797 if ($download == "1") {
3798 header ( 'Content-Description: File Transfer' );
3799 header ( 'Content-Type: application/octet-stream' );
3800 header ( 'Content-Disposition: attachment; filename=' . basename ( $file_name ) );
3801 header ( 'Content-Transfer-Encoding: binary' );
3802 header ( 'Expires: 0' );
3803 header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
3804 header ( 'Pragma: public' );
3805 header ( 'Content-Length: ' . filesize ( $file_name ) );
3806 ob_clean ();
3807 flush ();
3808
3809 $fp = fopen ( $file_name, "rb" );
3810 while ( ! feof ( $fp ) ) {
3811 print fread ( $fp, 1024 * 512 );
3812 }
3813 fclose ( $fp );
3814 } // if
3815
3816 if ($store != "1") {
3817 unlink ( $file_name );
3818 } // if
3819 $cmd = "rm -R $mongoname $name";
3820 system ( $cmd );
3821 }
3822
3823
3824 public function backupDatabase($download, $store) {
3825 $name = $this->dbclass->perform_backup ();
3826 $arr = explode ( "/", $name );
3827 $fname = $arr [count ( $arr ) - 1];
3828
3829 $query = "INSERT INTO backup_log SET filename = \"{$fname}.gz\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
3830 $this->dbclass->execute_query ( $query );
3831
3832 $cmd = "gzip $name";
3833 system ( $cmd );
3834
3835 $file_name = "{$name}.gz";
3836
3837 if ($download == "1") {
3838 header ( 'Content-Description: File Transfer' );
3839 header ( 'Content-Type: application/octet-stream' );
3840 header ( 'Content-Disposition: attachment; filename=' . basename ( $file_name ) );
3841 header ( 'Content-Transfer-Encoding: binary' );
3842 header ( 'Expires: 0' );
3843 header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
3844 header ( 'Pragma: public' );
3845 header ( 'Content-Length: ' . filesize ( $file_name ) );
3846 ob_clean ();
3847 flush ();
3848
3849 $fp = fopen ( $file_name, "rb" );
3850 while ( ! feof ( $fp ) ) {
3851 print fread ( $fp, 1024 * 512 );
3852 }
3853 fclose ( $fp );
3854 } // if
3855
3856 if ($store != "1") {
3857 unlink ( $file_name );
3858 } // if
3859 }
3860 public function backupMongoDatabase($download, $store) {
3861 global $GMONGO;
3862 //$name = $this->dbclass->perform_backup ();
3863 $name = $GMONGO->performMongoBackup();
3864 $arr = explode ( "/", $name );
3865 $fname = $arr [count ( $arr ) - 1];
3866
3867 $query = "INSERT INTO backup_log SET filename = \"{$fname}.gz\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
3868 $this->dbclass->execute_query ( $query );
3869
3870 //$cmd = "gzip $name";
3871 $cmd = "tar -czf {$name}.gz $name";
3872 system ( $cmd );
3873
3874 /*$cmd = "rm -R $name";
3875 system ( $cmd );*/
3876
3877 $file_name = "{$name}.gz";
3878
3879 if ($download == "1") {
3880 header ( 'Content-Description: File Transfer' );
3881 header ( 'Content-Type: application/octet-stream' );
3882 header ( 'Content-Disposition: attachment; filename=' . basename ( $file_name ) );
3883 header ( 'Content-Transfer-Encoding: binary' );
3884 header ( 'Expires: 0' );
3885 header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
3886 header ( 'Pragma: public' );
3887 header ( 'Content-Length: ' . filesize ( $file_name ) );
3888 ob_clean ();
3889 flush ();
3890
3891 $fp = fopen ( $file_name, "rb" );
3892 while ( ! feof ( $fp ) ) {
3893 print fread ( $fp, 1024 * 512 );
3894 }
3895 fclose ( $fp );
3896 } // if
3897
3898 if ($store != "1") {
3899 unlink ( $file_name );
3900 } // if
3901
3902 }
3903 public function saveFuelProfile() {
3904 $query = "REPLACE INTO fuelProfiles SET ";
3905 $query .= basicTransactions::prepareMySQL_POSTRequest ();
3906 $result = $this->dbclass->execute_query ( $query );
3907
3908 if ($result != true) {
3909 //return $query . mysql_error ( $this->dbclass->dblink );
3910 return $query . $this->dbclass->dblink->error;
3911 }
3912
3913 return SUCCESS;
3914 }
3915 public function saveTemperatureProfile() {
3916 $query = "REPLACE INTO temperatureProfiles SET ";
3917 $query .= basicTransactions::prepareMySQL_POSTRequest ();
3918 $result = $this->dbclass->execute_query ( $query );
3919
3920 if ($result != true) {
3921 //return $query . mysql_error ( $this->dbclass->dblink );
3922 return $query . $this->dbclass->dblink->error;
3923 }
3924
3925 return SUCCESS;
3926 }
3927 public function saveMCProfile() {
3928 $query = "REPLACE INTO monitoringCentres SET ";
3929 $query .= basicTransactions::prepareMySQL_POSTRequest ();
3930 $result = $this->dbclass->execute_query ( $query );
3931
3932 if ($result != true) {
3933 //return $query . mysql_error ( $this->dbclass->dblink );
3934 return $query . $this->dbclass->dblink->error;
3935 }
3936
3937 $tblName = $_POST ['shortName'];
3938 $query = "CREATE TABLE IF NOT EXISTS $tblName LIKE mcTable";
3939 $result = $this->dbclass->execute_query ( $query );
3940
3941 return SUCCESS;
3942 }
3943 public function removeMCProfile($name) {
3944 $name = $this->dbclass->get_escape_string ( $name );
3945 $query = "DELETE FROM monitoringCentres WHERE shortName=\"$name\"";
3946 $result = $this->dbclass->execute_query ( $query );
3947
3948 $query = "DROP TABLE $name";
3949 $result = $this->dbclass->execute_query ( $query );
3950
3951 $query = "UPDATE trackersExInfo SET monitoringCentre=NULL WHERE monitoringCentre=\"$name\"";
3952 $result = $this->dbclass->execute_query ( $query );
3953 }
3954 public function removeFuelProfile($name) {
3955 $name = $this->dbclass->get_escape_string ( $name );
3956 $query = "DELETE FROM fuelProfiles WHERE name=\"$name\"";
3957 $result = $this->dbclass->execute_query ( $query );
3958 }
3959 public function removeTemperatureProfile($name) {
3960 $name = $this->dbclass->get_escape_string ( $name );
3961 $query = "DELETE FROM temperatureProfiles WHERE name=\"$name\"";
3962 $result = $this->dbclass->execute_query ( $query );
3963 }
3964
3965 public function updatePassword($user, $pass) {
3966 $username = $this->dbclass->get_escape_string ( $user);
3967 $password = $this->dbclass->get_escape_string ( $pass);
3968
3969 $query = "UPDATE Users SET password = \"$password\" WHERE username=\"$username\"";
3970 $result = $this->dbclass->execute_query ( $query );
3971 return 1;
3972 }
3973
3974 public function modifyPassword($curr, $pass) {
3975 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
3976
3977 $query = "SELECT password FROM Users Where username=\"$username\"";
3978 $result = $this->dbclass->execute_query ( $query );
3979 $answer = $this->dbclass->get_result_complete ();
3980 if ($answer == false)
3981 return - 1;
3982
3983 if ($answer [0] ['password'] != $curr)
3984 return 0;
3985
3986 $pass = $this->dbclass->get_escape_string ( $pass );
3987 $QUERY = "UPDATE Users SET password=\"$pass\" WHERE username=\"$username\"";
3988 $this->dbclass->execute_query ( $QUERY );
3989
3990 return 1;
3991 }
3992 public function saveSystemPreferences() {
3993 $query = "UPDATE languages SET selected =0";
3994 $result = $this->dbclass->execute_query ( $query );
3995
3996 $query = "UPDATE languages SET selected =1 where lcode=\"{$_POST['defaultLanguage']}\"";
3997 $result = $this->dbclass->execute_query ( $query );
3998
3999 $query = "UPDATE systemPreferences SET ";
4000 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4001 $result = $this->dbclass->execute_query ( $query );
4002
4003 if ($result != true) {
4004 //return $query . mysql_error ( $this->dbclass->dblink );
4005 return $query . $this->dbclass->dblink->error;
4006 }
4007
4008 return SUCCESS;
4009 }
4010 public function getUserPreferences() {
4011 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4012 $QUERY = "SELECT * FROM userPreferences WHERE username=\"$username\"";
4013 $this->dbclass->execute_query ( $QUERY );
4014 return $this->dbclass->get_result_complete ();
4015 }
4016 public function getAdminPreferences() {
4017 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4018 $QUERY = "SELECT * FROM adminPreferences WHERE username=\"$username\"";
4019 $this->dbclass->execute_query ( $QUERY );
4020 return $this->dbclass->get_result_complete ();
4021 }
4022 public function getUTrackersDetails($tid) {
4023 $QUERY = "SELECT * FROM trackers LEFT JOIN trackersDetails USING(trackerid) WHERE trackerid=\"{$tid}\"";
4024 $this->dbclass->execute_query ( $QUERY );
4025 return $this->dbclass->get_result_complete ();
4026 }
4027 public function getTEventsSettings($tid) {
4028 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4029 $QUERY = "SELECT * FROM alertSettings WHERE trackerid=\"$tid\" AND username=\"$uname\"";
4030 $this->dbclass->execute_query ( $QUERY );
4031 return $this->dbclass->get_result_complete ();
4032 }
4033 public function saveTEventsSettings($tid) {
4034 $QUERY = "SELECT MAX(id) FROM alertSettings WHERE trackerid=\"{$_POST['trackerid']}\" and (type=\"{$_POST['type']}\" or id=\"{$_POST['id']}\")";
4035 $this->dbclass->execute_query ( $QUERY );
4036 $ans = $this->dbclass->get_result_complete ();
4037
4038 if ($ans [0] ['MAX(id)'] != NULL) {
4039 if ($_POST ['id'] != $ans [0] ['MAX(id)'])
4040 return EXISTS;
4041 $prefix = "UPDATE";
4042 $returnID = $_POST ['id'];
4043 $postfix = " WHERE trackerid=\"{$_POST['trackerid']}\" and id=\"{$_POST['id']}\"";
4044 } else {
4045 if ($_POST ['id'] != 0)
4046 return ERROR;
4047 $returnID = $_POST ['id'] = 0;
4048 $prefix = "INSERT INTO";
4049 $postfix = "";
4050 }
4051
4052 $_POST ['timezone'] = $_SESSION ['timezone'];
4053 $_POST ['username'] = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4054 $query = $prefix . " alertSettings SET ";
4055 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4056 $query .= $postfix;
4057 $result = $this->dbclass->execute_query ( $query );
4058
4059 if (! $returnID)
4060 $returnID = $this->dbclass->dblink->insert_id;
4061 return $returnID;
4062 }
4063 public function removeTEventsSettings($tid, $id) {
4064 $QUERY = "DELETE FROM alertSettings WHERE trackerid=\"{$tid}\" AND id=\"{$id}\"";
4065 $this->dbclass->execute_query ( $QUERY );
4066 }
4067 public function removeUserTrackerAlerts($uname, $tid) {
4068 $QUERY = "SELECT id FROM alertSettings WHERE trackerid=\"$tid\" AND username=\"$uname\"";
4069 $this->dbclass->execute_query ( $QUERY );
4070 $ans = $this->dbclass->get_result_complete ();
4071 if ($ans == false)
4072 return;
4073
4074 foreach ( $ans as $v ) {
4075 $QUERY = "DELETE FROM alertSettings WHERE id=\"{$v['id']}\"";
4076 $this->dbclass->execute_query ( $QUERY );
4077 }
4078 }
4079 public function saveUTrackerDetails() {
4080 $tname = $this->dbclass->get_escape_string ( $_POST ['name'] );
4081 $tid = $this->dbclass->get_escape_string ( $_POST ['trackerid'] );
4082
4083 unset ( $_POST ['name'] );
4084 unset ( $_POST ['imei'] );
4085 unset ( $_POST ['username'] );
4086 unset ( $_POST ['type'] );
4087 unset ( $_POST ['simno'] );
4088 unset ( $_POST ['trackerType'] );
4089 unset ( $_POST ['fileData'] );
4090
4091 $query = "REPLACE INTO trackersDetails SET ";
4092 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4093 $result = $this->dbclass->execute_query ( $query );
4094
4095 if ($result == false) {
4096 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
4097 $this->writeDebugLog ( $this->dbclass->dblink->error );
4098 return ERROR;
4099 }
4100
4101 $query = "UPDATE trackers SET name=\"$tname\" WHERE trackerid=\"{$tid}\"";
4102 $result = $this->dbclass->execute_query ( $query );
4103
4104 if ($result == false) {
4105 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
4106 $this->writeDebugLog ( $this->dbclass->dblink->error );
4107 return ERROR;
4108 }
4109
4110 return SUCCESS;
4111 }
4112 public function updateCompleteReminderCache($nCache) {
4113 $QUERY = "DELETE FROM remindersCache WHERE cacheCounter != \"$nCache\"";
4114 $this->dbclass->execute_query ( $QUERY );
4115 }
4116 public function updateReminderCacheRec($nc, $tid, $id, $date, $time, $cdist, $enhr) {
4117 $QUERY = "UPDATE remindersCache SET cacheCounter = \"$nc\", date=\"$date\", time=\"$time\", cDistance=\"$cdist\", engineHrs = \"$enhr\" WHERE id=\"$id\"";
4118 $result = $this->dbclass->execute_query ( $QUERY );
4119 if ($result == false) {
4120 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
4121 $this->writeDebugLog ( $this->dbclass->dblink->error );
4122 }
4123 }
4124 public function insertReminderCacheRec($id, $nc, $tid, $sdate, $dist, $date, $time, $cdist, $enhr) {
4125 $query = "INSERT INTO remindersCache SET id = \"$id\", cacheCounter=\"$nc\", trackerid=\"$tid\", sDate=\"$sdate\", date=\"$date\", time=\"$time\", cDistance=\"$cdist\", distance=\"$dist\", engineHrs = \"$enhr\"";
4126 $result = $this->dbclass->execute_query ( $query );
4127 if ($result == false) {
4128 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
4129 $this->writeDebugLog ( $this->dbclass->dblink->error );
4130 }
4131 }
4132 public function removeReminderCacheRec($id) {
4133 $QUERY = "DELETE FROM remindersCache WHERE id=\"$id\"";
4134 $result = $this->dbclass->execute_query ( $QUERY );
4135 if ($result == false) {
4136 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
4137 $this->writeDebugLog ( $this->dbclass->dblink->error );
4138 }
4139 }
4140 public function getReminderCacheRec($id) {
4141 $QUERY = "SELECT * FROM remindersCache WHERE id=\"$id\"";
4142 $this->dbclass->execute_query ( $QUERY );
4143 $answer = $this->dbclass->get_result_complete ();
4144 return $answer;
4145 }
4146 public function getRC_counter() {
4147 $QUERY = "SELECT MAX(cacheCounter) FROM remindersCache";
4148 $this->dbclass->execute_query ( $QUERY );
4149 return $this->dbclass->get_result_complete ();
4150 }
4151
4152 public function insertExpiredReminders ($record, $mailStatus) {
4153 $QUERY = "INSERT INTO expiredReminders SET reminderid = ".$record['id'].", username = '".$record['username']."', trackerid = '".$record['trackerid']."', startDate = '".$record['startDate']."', basedOn = '".$record['basedOn']."', endDate = '".$record['endDate'];
4154 $QUERY .= ", distance = '".$record['distance'].", reminderDate = '".$record['reminderDate']."', remarks = '".$record['remarks']."', engineHrs = '".$record['engineHrs']."', language = '".$record['language']."', engInputs = '".$record['engInputs'];
4155 $QUERY .= "', timezone = '".$record['timezone']."', mailStatus = $mailStatus";
4156 $this->dbclass->execute_query($QUERY);
4157
4158 return $this->dbclass->get_result_complete();
4159 }
4160
4161 public function saveTrackerWorkSchedule ($tid, $schedule) {
4162 $tid = $this->dbclass->get_escape_string($tid);
4163 $schedule = $this->dbclass->get_escape_string($schedule);
4164 $query = 'UPDATE trackersFeatures SET workSchedule = "'.$schedule.'" WHERE trackerid = "'.$tid.'"';
4165 return $this->dbclass->execute_query($query);
4166 }
4167
4168 public function getTrackerWorkingSchedule ($trackeid) {
4169 $query = 'SELECT workSchedule FROM trackersFeatures WHERE trackerid = "'.$trackeid.'"';
4170 $this->dbclass->execute_query($query);
4171 $answer = $this->dbclass->get_result_complete();
4172
4173 $result = json_decode($answer[0]['workSchedule'], true);
4174
4175 return $result;
4176 }
4177
4178 public function getNextRecord() {
4179 if ($this->oldARecord == false)
4180 $drow = $this->dbclass->get_result_row ();
4181 else
4182 $drow = $this->oldARecord;
4183
4184 if ($drow == false) {
4185 if (isset ( $this->result1 ) && gettype ( $this->result1 ) == "resource") {
4186 mysql_free_result ( $this->result1 );
4187 unset ( $this->result1 );
4188 }
4189
4190 if ($this->COMBINE_MODE == RECORD_EXISTS) {
4191 if (isset ( $this->result2 ) && gettype ( $this->result2 ) == "resource") {
4192 mysql_free_result ( $this->result2 );
4193 unset ( $this->result2 );
4194 }
4195 return false;
4196 }
4197 }
4198
4199 if (isset ( $this->result2 ) && gettype ( $this->result2 ) == "resource") {
4200 while ( 1 ) {
4201
4202 if ($this->oldMRecord == false) {
4203 $mrow = $this->dbclass_2->get_result_row ();
4204 } else {
4205 $mrow = $this->oldMRecord;
4206 }
4207
4208 if ($mrow == false) {
4209 mysql_free_result ( $this->result2 );
4210 unset ( $this->result2 );
4211 $this->oldMRecord = false;
4212 break;
4213 }
4214
4215 if ($drow == false) {
4216 $this->oldMRecord = false;
4217 $drow = $mrow;
4218 break;
4219 }
4220
4221 if ($mrow ['TIMESTAMP'] > $drow ['TIMESTAMP']) {
4222 $this->oldMRecord = $mrow;
4223 $this->oldARecord = false;
4224 break;
4225 } else if ($drow ['TIMESTAMP'] == $mrow ['TIMESTAMP']) {
4226 $drow = array_merge ( $drow, $mrow );
4227 $this->oldARecord = false;
4228 break;
4229 } else {
4230 if ($this->COMBINE_MODE == RECORD_EXISTS) {
4231 $this->oldMRecord = false;
4232 continue;
4233 } else {
4234 $this->oldMRecord = false;
4235 $this->oldARecord = $drow;
4236 $drow = $mrow;
4237
4238 break;
4239 }
4240 }
4241 }
4242 }
4243 return $drow;
4244 }
4245 public function queryForDistance($tid, $date, $time) { //Function similar to this is made in MongoDB with name queryForDistanceMongo($tid, $timestamp) in mysqlQueries.php
4246 $this->oldARecord = false;
4247 $this->oldMRecord = false;
4248
4249 $QUERY = "SELECT *, UNIX_TIMESTAMP(CONCAT(date,' ', SEC_TO_TIME(time))) as TIMESTAMP from A{$tid} WHERE (date = \"$date\" AND time > $time) OR date > \"$date\" ORDER BY date, time";
4250 $this->result1 = $this->dbclass->execute_query ( $QUERY );
4251
4252 $QUERY = "SELECT *, UNIX_TIMESTAMP(CONCAT(date,' ', SEC_TO_TIME(time))) as TIMESTAMP from M{$tid} WHERE (date = \"$date\" AND time > $time) OR date > \"$date\" ORDER BY date,time";
4253 $this->result2 = $this->dbclass_2->execute_query ( $QUERY );
4254
4255 $this->COMBINE_MODE = RECORD_EXISTS;
4256 }
4257 public function queryForDistanceMongo($tid, $timestamp) {
4258 global $GMONGO;
4259
4260 $GMONGO->getAMRecordCursor($tid, array('timestamp' => array('$gt' => $timestamp)));
4261 }
4262 public function getCompleteReminders() {
4263 $QUERY = "SELECT * FROM reminders";
4264 $this->dbclass->execute_query ( $QUERY );
4265 return $this->dbclass->get_result_complete ();
4266 }
4267 public function getReminders($tid) {
4268 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4269 $QUERY = "SELECT * FROM reminders WHERE trackerid=\"$tid\" and username=\"$uname\"";
4270 $this->dbclass->execute_query ( $QUERY );
4271 return $this->dbclass->get_result_complete ();
4272 }
4273 public function getExpiredReminders($tid) {
4274 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4275 $QUERY = "SELECT * FROM expiredReminders WHERE trackerid=\"$tid\" and username=\"$uname\"";
4276 $this->dbclass->execute_query ( $QUERY );
4277 return $this->dbclass->get_result_complete ();
4278 }
4279 //public function saveReminder() {
4280 public function saveReminder($trackerid) {
4281 $_POST['trackerid'] = $trackerid;
4282 $QUERY = "SELECT MAX(id) FROM reminders WHERE trackerid=\"{$_POST['trackerid']}\" and id=\"{$_POST['id']}\"";
4283 $this->dbclass->execute_query ( $QUERY );
4284 $ans = $this->dbclass->get_result_complete ();
4285
4286 if ($ans [0] ['MAX(id)'] != NULL) {
4287 if ($_POST ['id'] != $ans [0] ['MAX(id)'])
4288 return ERROR;
4289 $prefix = "UPDATE";
4290 $returnID = $_POST ['id'];
4291 $postfix = " WHERE trackerid=\"{$_POST['trackerid']}\" and id=\"{$_POST['id']}\"";
4292 $this->removeReminderCacheRec ( $_POST ['trackerid'] );
4293 } else {
4294 if ($_POST ['id'] != 0)
4295 return ERROR;
4296 $returnID = $_POST ['id'] = 0;
4297 $prefix = "INSERT INTO";
4298 $postfix = "";
4299 }
4300
4301 $_POST ['username'] = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4302 $_POST ['timezone'] = $this->dbclass->get_escape_string ( $_SESSION ['timezone'] );
4303 $_POST ['language'] = $_SESSION ['language'];
4304
4305 $query = $prefix . " reminders SET ";
4306 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4307 $query .= $postfix;
4308 $result = $this->dbclass->execute_query ( $query );
4309
4310 if (! $returnID)
4311 $returnID = $this->dbclass->dblink->insert_id;
4312 return $returnID;
4313 }
4314 public function removeReminder($tid, $id) {
4315 $query = "DELETE FROM reminders WHERE trackerid=\"{$tid}\" and id = \"{$id}\"";
4316 $result = $this->dbclass->execute_query ( $query );
4317 $this->removeReminderCacheRec ( $id );
4318 return SUCCESS;
4319 }
4320 public function removeUserTrackerReminders($uname, $tid) {
4321 $QUERY = "SELECT id FROM reminders WHERE trackerid=\"{$tid}\" and username=\"{$uname}\"";
4322 $this->dbclass->execute_query ( $QUERY );
4323 $ans = $this->dbclass->get_result_complete ();
4324
4325 if ($ans == false)
4326 return;
4327
4328 foreach ( $ans as $v ) {
4329 $query = "DELETE FROM reminders WHERE id = \"{$v['id']}\"";
4330 $result = $this->dbclass->execute_query ( $query );
4331 $this->removeReminderCacheRec ( $v ['id'] );
4332 }
4333 return SUCCESS;
4334 }
4335 public function getADT($tagid) {
4336 $QUERY = "SELECT trackerid FROM driversMap WHERE tagID=\"$tagid\"";
4337 $this->dbclass->execute_query ( $QUERY );
4338 return $this->dbclass->get_result_complete ();
4339 }
4340 public function assignDriverTrackers() {
4341 $tagid = $this->dbclass->get_escape_string ( $_POST ['tagID'] );
4342 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4343
4344 $QUERY = "SELECT * FROM drivers WHERE tagID=\"" . $_POST ['tagID'] . "\"";
4345 $this->dbclass->execute_query ( $QUERY );
4346 $ans = $this->dbclass->get_result_complete ();
4347 $dc = $ans [0];
4348
4349 $query = "DELETE FROM driversMap WHERE tagID=\"$tagid\" AND username=\"$uname\"";
4350 $result = $this->dbclass->execute_query ( $query );
4351 $exceptions = array ();
4352
4353 for($i = 0; $i < count ( $_POST ['trackers'] ); $i ++) {
4354 if ($dc ['type'] == "S") {
4355 $QUERY = "SELECT * FROM driversMap inner join drivers using (tagID) WHERE trackerid=\"" . $_POST ['trackers'] [$i] . "\" AND type='S'";
4356 $this->dbclass->execute_query ( $QUERY );
4357 $ans = $this->dbclass->get_result_complete ();
4358
4359 if ($ans != false) {
4360 array_push ( $exceptions, $_POST ['trackers'] [$i] );
4361 continue;
4362 }
4363 }
4364
4365 $query = "INSERT INTO driversMap SET tagID=\"$tagid\", username=\"$uname\", trackerid=\"" . $_POST ['trackers'] [$i] . "\"";
4366 $result = $this->dbclass->execute_query ( $query );
4367 }
4368
4369 return $exceptions;
4370 }
4371 public function saveDriverCard() {
4372 $_POST ['username'] = $_SESSION ['username'];
4373
4374 $n1 = "";
4375 $n2 = "";
4376
4377 if ($_POST ['type'] == "S" && $_POST ['tagID'] == '') {
4378 // Generate New TAG
4379 for($i = 0; $i < 13; $i ++) {
4380 $n1 .= chr ( rand ( 48, 57 ) );
4381 $n2 .= chr ( rand ( 65, 90 ) );
4382 }
4383
4384 $_POST ['tagID'] = "ST_" . $n2 . $n1;
4385 }
4386
4387 $query = "REPLACE INTO drivers SET ";
4388 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4389 $result = $this->dbclass->execute_query ( $query );
4390
4391 if ($_POST ['type'] == "E") {
4392 $tagid = $this->dbclass->get_escape_string ( $_POST ['tagID'] );
4393 $query = "DELETE * FROM driversMap WHERE tagID=\"" . $tagid . "\"";
4394 $result = $this->dbclass->execute_query ( $query );
4395 }
4396
4397 if ($result != true) {
4398 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
4399 $this->writeDebugLog ( $this->dbclass->dblink->error );
4400 return ERROR;
4401 }
4402
4403 return $_POST ['tagID'];
4404 }
4405 public function expireDriverCard($tagID) {
4406 global $GMONGO;
4407 $tagid = $this->dbclass->get_escape_string ( $tagID );
4408
4409 srand ();
4410 $newid = "";
4411 $n1 = "";
4412 $n2 = "";
4413
4414 // Generate New TAG
4415 do {
4416 for($i = 0; $i < 13; $i ++) {
4417 $n1 .= chr ( rand ( 48, 57 ) );
4418 $n2 .= chr ( rand ( 65, 90 ) );
4419 }
4420
4421 $rawnewid = "EXP_" . $n2 . $n1;
4422
4423 $newid = $this->dbclass->get_escape_string ( $rawnewid );
4424
4425 // Updates new tag
4426 $query = "UPDATE drivers SET tagID=\"$newid\" WHERE tagID=\"$tagid\"";
4427 $result = $this->dbclass->execute_query ( $query );
4428 } while ( $result != true );
4429
4430 // Get Trackers List
4431 $query = "SELECT trackerid FROM trackersMap";
4432 $this->dbclass->execute_query ( $query );
4433 $trackers = $this->dbclass->get_result_complete ();
4434
4435 if ($trackers == false)
4436 return $rawnewid;
4437 $tCount = count ( $trackers );
4438
4439 // Update all old tags in E & M tables with new tagID
4440 for($i = 0; $i < $tCount; $i ++) {
4441 $updateCriteria = array('driverid' => $tagid);
4442 $updateQuery = array('$set' => array('$driverid' => $newid));
4443 $options = array('multiple' => true);
4444
4445 $GMONGO -> updateCollectionM($trackers[$i]['trackerid'], $updateCriteria, $updateQuery, $options);
4446 /*$query = "UPDATE M{$trackers[$i]['trackerid']} SET driverid=\"$newid\" WHERE driverid=\"$tagid\"";
4447 $this->dbclass->execute_query ( $query );*/
4448
4449 $GMONGO -> updateCollectionE($trackers[$i]['trackerid'], $updateCriteria, $updateQuery, $options);
4450 /*$query = "UPDATE E{$trackers[$i]['trackerid']} SET description=\"$newid\" WHERE description=\"$tagid\"";
4451 $this->dbclass->execute_query ( $query );*/
4452 }
4453
4454 return $rawnewid;
4455 }
4456 public function removeUserDrivers($username) {
4457 // $username is already escaped
4458 $QUERY = "SELECT tagID FROM drivers username=\"$username\"";
4459 $this->dbclass->execute_query ( $QUERY );
4460 $ans = $this->dbclass->get_result_complete ();
4461 for($v = 0; $v < count ( $ans ); $v ++) {
4462 $this->removeDriverCard ( $ans [$v] ['tagID'] );
4463 }
4464 }
4465 public function removeDriverCard($tagID) {
4466 $tagid = $this->dbclass->get_escape_string ( $tagID );
4467 $query = "DELETE FROM drivers WHERE tagID=\"$tagid\"";
4468 $result = $this->dbclass->execute_query ( $query );
4469
4470 $query = "DELETE FROM driversMap WHERE tagID=\"$tagid\"";
4471 $result = $this->dbclass->execute_query ( $query );
4472
4473 if ($result != true) {
4474 return ERROR;
4475 }
4476
4477 return SUCCESS;
4478 }
4479
4480 public function getDriverCard($driverID, $fields = "*", $useSession = true) {
4481 $driverID = $this->dbclass->get_escape_string ( $driverID );
4482
4483 if ($useSession) {
4484 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4485 $QUERY = "SELECT $fields FROM drivers WHERE username=\"$username\" AND tagID=\"$driverID\"";
4486 }else{
4487 $QUERY = "SELECT $fields FROM drivers WHERE tagID=\"$driverID\"";
4488 }
4489
4490 $this->dbclass->execute_query ( $QUERY );
4491 $ans = $this->dbclass->get_result_complete ();
4492 return $ans [0];
4493 }
4494 public function getDriversList($fields = "*") {
4495 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4496 $QUERY = "SELECT $fields FROM drivers WHERE username=\"$username\"";
4497 $this->dbclass->execute_query ( $QUERY );
4498 return $this->dbclass->get_result_complete ();
4499 }
4500 public function getGeoContactsList($fencename, $fields_list = "*") {
4501 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4502 $fencename = $this->dbclass->get_escape_string ( $fencename );
4503
4504 $QUERY = "SELECT {$fields_list} FROM geoContacts WHERE username=\"$username\" and fencename=\"$fencename\" ORDER by contact";
4505 $this->dbclass->execute_query ( $QUERY );
4506 return $this->dbclass->get_result_complete ();
4507 }
4508 public function checkDriverID($id) {
4509 $id = $this->dbclass->get_escape_string ( $id );
4510
4511 $QUERY = "SELECT COUNT(*) FROM drivers WHERE tagID=\"$id\"";
4512 $this->dbclass->execute_query ( $QUERY );
4513 $ans = $this->dbclass->get_result_complete ();
4514
4515 if ($ans [0] ['COUNT(*)'] > 0)
4516 return EXISTS;
4517
4518 return SUCCESS;
4519 }
4520 public function resetGeofenceContacts($fence) {
4521 $fence = $this->dbclass->get_escape_string ( $fence );
4522 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4523
4524 $query = "DELETE FROM geoContacts where username=\"{$username}\" and fencename=\"{$fence}\"";
4525 $result = $this->dbclass->execute_query ( $query );
4526
4527 if ($result != true) {
4528 return ERROR;
4529 }
4530
4531 return SUCCESS;
4532 }
4533 public function removeGeofenceContact($fence, $contact) {
4534 $fence = $this->dbclass->get_escape_string ( $fence );
4535 $contact = $this->dbclass->get_escape_string ( $contact );
4536 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4537
4538 $query = "DELETE FROM geoContacts where username=\"{$username}\" and fencename=\"{$fence}\" and contact =\"{$contact}\"";
4539 $result = $this->dbclass->execute_query ( $query );
4540
4541 if ($result != true) {
4542 return ERROR;
4543 }
4544
4545 return SUCCESS;
4546 }
4547 public function updateGeofenceContact($fence, $contact, $email, $sms, $method, $timebased, $stime, $etime) {
4548 $fence = $this->dbclass->get_escape_string ( $fence );
4549 $contact = $this->dbclass->get_escape_string ( $contact );
4550 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4551 $timezone = $this->dbclass->get_escape_string ( $_SESSION ['timezone'] );
4552
4553 $query = "UPDATE geoContacts SET email=\"{$email}\",sms=\"{$sms}\",method=\"{$method}\",timeBased=\"$timebased\", startTime=\"$stime\", endTime=\"$etime\", timezone=\"$timezone\" where username=\"{$username}\" and fencename=\"{$fence}\" and contact =\"{$contact}\"";
4554 $result = $this->dbclass->execute_query ( $query );
4555
4556 if ($result != true) {
4557 return ERROR;
4558 }
4559
4560 return SUCCESS;
4561 }
4562 public function addGeofenceContact($fence, $contact, $email, $sms, $method) {
4563 $fence = $this->dbclass->get_escape_string ( $fence );
4564 $contact = $this->dbclass->get_escape_string ( $contact );
4565 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4566
4567 $query = "SELECT COUNT(*) from geoContacts Where username=\"{$username}\" and fencename=\"{$fence}\" and contact=\"{$contact}\"";
4568 $result = $this->dbclass->execute_query ( $query );
4569 $ans = $this->dbclass->get_result_complete ();
4570 if ($ans [0] ['COUNT(*)'] > 0)
4571 return EXISTS;
4572
4573 $query = "INSERT into geoContacts SET email=\"{$email}\",sms=\"{$sms}\",method=\"{$method}\", username=\"{$username}\" , fencename=\"{$fence}\" , contact =\"{$contact}\"";
4574 $result = $this->dbclass->execute_query ( $query );
4575
4576 if ($result != true) {
4577 return ERROR;
4578 }
4579
4580 return SUCCESS;
4581 }
4582 public function getContactsList($fields_list = "*") {
4583 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4584 $QUERY = "SELECT {$fields_list} FROM contacts WHERE username=\"$username\" ORDER BY name";
4585 $this->dbclass->execute_query ( $QUERY );
4586 $answer = $this->dbclass->get_result_complete ();
4587 if ($answer == false)
4588 return ERROR;
4589 return $answer;
4590 }
4591 public function removeContactCard($id) {
4592 $query = "SELECT * FROM contacts where id=\"{$id}\"";
4593 $this->dbclass->execute_query ( $query );
4594 $ans = $this->dbclass->get_result_complete ();
4595
4596 $contact = $this->dbclass->get_escape_string ( $ans [0] ['name'] );
4597 $username = $this->dbclass->get_escape_string ( $ans [0] ['username'] );
4598
4599 $query = "DELETE FROM contacts WHERE id=\"$id\"";
4600 $result = $this->dbclass->execute_query ( $query );
4601
4602 $query = "DELETE FROM geoContacts where username=\"{$username}\" and contact=\"{$contact}\"";
4603 $result = $this->dbclass->execute_query ( $query );
4604
4605 if ($result != true) {
4606 return ERROR;
4607 }
4608
4609 return SUCCESS;
4610 }
4611 public function saveContactCard() {
4612 $_POST ['username'] = $_SESSION ['username'];
4613
4614 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4615
4616 $query = "REPLACE INTO contacts SET ";
4617 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4618 $result = $this->dbclass->execute_query ( $query );
4619
4620 if ($result == FALSE) {
4621 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
4622 $this->writeDebugLog ( $this->dbclass->dblink->error );
4623 }
4624 //return mysql_insert_id ( $this->dblink );
4625 return $this->dbclass->dblink->insert_id;
4626 }
4627 public function getTLGroupWise($name) {
4628 $name = $this->dbclass->get_escape_string ( $name );
4629 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4630
4631 $QUERY = "SELECT name,trackerid FROM trackers WHERE logicalGroup=\"$name\" AND username=\"$username\"";
4632 $this->dbclass->execute_query ( $QUERY );
4633 return $this->dbclass->get_result_complete ();
4634 }
4635 public function addGroup($name, $desc) {
4636 $name = $this->dbclass->get_escape_string ( $name );
4637 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4638
4639 $QUERY = "SELECT COUNT(*) FROM logicalGroups WHERE username=\"$username\" AND name=\"$name\"";
4640 $this->dbclass->execute_query ( $QUERY );
4641 $ans = $this->dbclass->get_result_complete ();
4642
4643 if ($ans [0] ['COUNT(*)'] > 0)
4644 return "exists";
4645
4646 $query = "INSERT INTO logicalGroups SET username=\"$username\", name=\"$name\", description=\"$desc\"";
4647 $result = $this->dbclass->execute_query ( $query );
4648
4649 if ($result != true) {
4650 //return $query . mysql_error ( $this->dbclass->dblink );
4651 return $query . $this->dbclass->dblink->error;
4652 }
4653
4654 return SUCCESS;
4655 }
4656 public function removeGroup($name) {
4657 $name = $this->dbclass->get_escape_string ( $name );
4658 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4659
4660 $query = "UPDATE trackers SET logicalGroup=\"DEFAULT\" WHERE username=\"$username\" AND logicalGroup=\"$name\"";
4661 $result = $this->dbclass->execute_query ( $query );
4662
4663 $query = "DELETE FROM logicalGroups WHERE username=\"$username\" AND name=\"$name\"";
4664 $result = $this->dbclass->execute_query ( $query );
4665
4666 return SUCCESS;
4667 }
4668 public function moveTracker($gname, $tid) {
4669 $gname = $this->dbclass->get_escape_string ( $gname );
4670 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4671
4672 $query = "UPDATE trackers SET logicalGroup=\"$gname\" WHERE username=\"$username\" AND trackerid=\"$tid\"";
4673 $result = $this->dbclass->execute_query ( $query );
4674
4675 return SUCCESS;
4676 }
4677 public function isDriverIDEnabled($tid) {
4678 $QUERY = "SELECT driverID FROM trackersFeatures WHERE trackerid=\"$tid\"";
4679 $this->dbclass->execute_query ( $QUERY );
4680 $ans = $this->dbclass->get_result_complete ();
4681 if ($ans [0] ['driverID'] == 1)
4682 return true;
4683 return false;
4684 }
4685 public function verifyDriverTag($driver, $tid) {
4686 if ($driver ['map'] == "E") {
4687 $username = $this->dbclass->get_escape_string ( $driver ['username'] );
4688
4689 $QUERY = "SELECT trackerid FROM trackersMap WHERE username=\"" . $username . "\" AND trackerid = \"$tid\"";
4690 $this->dbclass->execute_query ( $QUERY );
4691 $ans = $this->dbclass->get_result_complete ();
4692 if ($ans == false)
4693 return false;
4694 return true;
4695 } else {
4696
4697 $QUERY = "SELECT trackerid FROM driversMap WHERE tagID = \"" . $driver ['tagID'] . "\" AND trackerid =\"$tid\"";
4698 $this->dbclass->execute_query ( $QUERY );
4699 $ans = $this->dbclass->get_result_complete ();
4700 if ($ans == false)
4701 return false;
4702 return true;
4703 }
4704 return false;
4705 }
4706
4707 public function getDriverTagForTimestamp($tid, $ts){
4708
4709 global $LANGUAGE;
4710 global $GMONGO;
4711
4712 // Check if Driver Identification is turned ON on this unit or not
4713 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4714
4715 $obj = new emptyClass ();
4716 if ($this->isDriverIDEnabled ( $tid ) == false) {
4717
4718 $QUERY = "SELECT name,tagID FROM driversMap INNER JOIN drivers USING(tagID) WHERE trackerid =\"$tid\" AND type='S'";
4719 $this->dbclass->execute_query ( $QUERY );
4720 $ans = $this->dbclass->get_result_complete ();
4721
4722 if ($ans != false && $ans [0] ['name'] != NULL && $ans [0] ['name'] != '') {
4723 $obj->rvalue = DRIVERID_SUCCESS;
4724 $obj->name = $ans [0] ['name'];
4725 $obj->tagID = $ans [0] ['tagID'];
4726 return $obj;
4727 }
4728
4729 $obj->rvalue = DRIVERID_NOT_ENABLED;
4730 return $obj;
4731 }
4732
4733 $ans = $GMONGO->getAMRecord($tid, array('driverID' => array('$exists' => 1, '$ne' => 0, '$ne' => '', '$ne' => null), 'timestamp' => array('$lte', $ts)), 1);
4734
4735 $tag = 0;
4736
4737 if ($ans != false) {
4738 if ($ans [0] ['driverID'] != NULL && $ans [0] ['driverID'] != '') {
4739 $tag = $ans [0] ['driverID'];
4740 }
4741 }
4742
4743 if ($tag == 0) {
4744 $ans = $GMONGO->getERecords_reverseSorted($tid, array('event' => EVENT_RFID_SWEEP, 'timestamp' => array('$lte', $ts)), 1);
4745 if ($ans == false) {
4746 $obj->rvalue = DRIVERID_NOEVENT;
4747 return $obj;
4748 }
4749
4750 $tag = $this->dbclass->get_escape_string ( $ans [0] ['description'] );
4751 }
4752
4753 $QUERY = "SELECT * FROM drivers WHERE tagID=\"$tag\"";
4754 $this->dbclass->execute_query ( $QUERY );
4755 $ans = $this->dbclass->get_result_complete ();
4756 if ($ans == false) {
4757 $obj->rvalue = DRIVERID_NOT_FOUND;
4758 return $obj;
4759 }
4760
4761 $auth = $this->verifyDriverTag ( $ans [0], $tid );
4762
4763 $obj->rvalue = DRIVERID_SUCCESS;
4764 $obj->name = $ans [0] ['name'] . " (" . $ans [0] ['mobile'] . ")";
4765 if ($auth == false)
4766 $obj->name . " " . $LANGUAGE ['UNAUTHORIZED'];
4767 $obj->tagid = $ans [0] ['tagID'];
4768
4769 return $obj;
4770
4771 }
4772
4773
4774 public function getDriverName($tid) {
4775 global $LANGUAGE;
4776 global $GMONGO;
4777
4778 // Check if Driver Identification is turned ON on this unit or not
4779 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4780
4781 $obj = new emptyClass ();
4782 if ($this->isDriverIDEnabled ( $tid ) == false) {
4783
4784 $QUERY = "SELECT name,tagID FROM driversMap INNER JOIN drivers USING(tagID) WHERE trackerid =\"$tid\" AND type='S'";
4785 $this->dbclass->execute_query ( $QUERY );
4786 $ans = $this->dbclass->get_result_complete ();
4787
4788 if ($ans != false && $ans [0] ['name'] != NULL && $ans [0] ['name'] != '') {
4789 $obj->rvalue = DRIVERID_SUCCESS;
4790 $obj->name = $ans [0] ['name'];
4791 $obj->tagID = $ans [0] ['tagID'];
4792 return $obj;
4793 }
4794
4795 $obj->rvalue = DRIVERID_NOT_ENABLED;
4796 return $obj;
4797 }
4798
4799 // $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('driverID' => array('$exists' => 1,'$ne' => 0,'$ne' => '', '$ne' => null)), 1);
4800
4801 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('driverID' => array('$exists' => 1),'driverID' => array('$ne' => 0),'driverID' => array('$ne' => ''),'driverID' => array('$ne' => null), 'driverID' => array('$ne' => "0")), 1);
4802
4803 $tag = 0;
4804
4805 if ($ans != false) {
4806 if ($ans [0] ['driverID'] != NULL && $ans [0] ['driverID'] != '') {
4807 $tag = $ans [0] ['driverID'];
4808 }
4809 }
4810
4811 if ($tag == 0) {
4812 $ans = $GMONGO->getERecords_reverseSorted($tid, array('event' => EVENT_RFID_SWEEP), 1);
4813
4814 if ($ans == false) {
4815 $obj->rvalue = DRIVERID_NOEVENT;
4816 return $obj;
4817 }
4818
4819 $tag = $this->dbclass->get_escape_string ( $ans [0] ['description'] );
4820 }
4821
4822 $QUERY = "SELECT * FROM drivers WHERE tagID=\"$tag\"";
4823 $this->dbclass->execute_query ( $QUERY );
4824 $ans = $this->dbclass->get_result_complete ();
4825 if ($ans == false) {
4826 $obj->rvalue = DRIVERID_NOT_FOUND;
4827 return $obj;
4828 }
4829
4830 $auth = $this->verifyDriverTag ( $ans [0], $tid );
4831
4832 $obj->rvalue = DRIVERID_SUCCESS;
4833 $obj->name = $ans [0] ['name'] . " (" . $ans [0] ['mobile'] . ")";
4834 if ($auth == false)
4835 $obj->name . " " . $LANGUAGE ['UNAUTHORIZED'];
4836 $obj->tagid = $ans [0] ['tagID'];
4837
4838 return $obj;
4839 }
4840
4841
4842
4843
4844 public function isIgnitionEnabled($tid) {
4845 $QUERY = "SELECT ignitionSensor FROM trackersFeatures WHERE trackerid=\"$tid\"";
4846 $this->dbclass->execute_query ( $QUERY );
4847 $ans = $this->dbclass->get_result_complete ();
4848
4849 if ($ans [0] ['ignitionSensor'] != 1) {
4850 return false;
4851 }
4852 return true;
4853 }
4854 public function getFeatures($tid) {
4855 $QUERY = "SELECT * FROM trackersFeatures INNER JOIN trackersExInfo USING(trackerid) WHERE trackerid=\"$tid\"";
4856 $this->dbclass->execute_query ( $QUERY );
4857 $ans = $this->dbclass->get_result_complete ();
4858 return $ans [0];
4859 }
4860
4861
4862 public function getTrackerDuration_withIgnition($tid, $status) {
4863 global $GMONGO;
4864 /*$fdate = new FNSDateTime($_SESSION['timezone']);
4865 $fdate->setUTCDate("1970-01-01", 0);
4866 $sinceBeginning = array(array('timestamp' => $fdate->dateTime->getTimestamp()));*/
4867 $sinceBeginning = array(array('timestamp' => 0));
4868
4869 switch ($status) {
4870 case "s" :
4871 $lastIgnition = $GMONGO->getAMLastIgnition($tid);
4872
4873 if ($lastIgnition == false)
4874 $lastIgnition = $sinceBeginning;
4875
4876 //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp'])),1);
4877 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
4878 break;
4879
4880 case "i" : //Have changed this
4881 //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
4882 $result = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
4883
4884 //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $result[0]['timestamp'])),1);
4885 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $result[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
4886 break;
4887
4888 case "n" :
4889 case "g" :
4890 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('latitude' => array('$exists' => 1, '$ne' => null)),1);
4891 if ($ans == false)
4892 return false;
4893 break;
4894
4895 case "m" :
4896 $ans = $GMONGO->getAMLastStopped($tid);
4897 if ($ans == false) {
4898 $ans = $sinceBeginning;
4899 }
4900 //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp'])),1);
4901 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
4902 break;
4903
4904 default :
4905 return false;
4906 }
4907
4908 $obj = new emptyClass ();
4909 $obj->date = $ans [0] ['date'];
4910 $obj->time = $ans [0] ['time'];
4911 $obj->timestamp = $ans [0] ['timestamp'];
4912
4913 return $obj;
4914 }
4915
4916 public function getTrackerDuration_withoutIgnition($tid, $status) {
4917 global $GMONGO;
4918 /*$fdate = new FNSDateTime($_SESSION['timezone']);
4919 $fdate->setUTCDate("1970-01-01", 0);
4920 $sinceBeginning = array(array('timestamp' => $fdate->dateTime->getTimestamp()));*/
4921 $sinceBeginning = array(array('timestamp' => 0));
4922
4923 switch ($status) {
4924 case "s" :
4925 //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
4926 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
4927
4928 if ($ans == false)
4929 $ans = $sinceBeginning;
4930
4931 //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp'])),1);
4932 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
4933 break;
4934
4935 case "n" :
4936 case "g" :
4937 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('latitude' => array('$exists' => 1, '$ne' => null)),1);
4938 if ($ans == false)
4939 return false;
4940 break;
4941
4942 case "m" :
4943 //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0),1);
4944 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0, 'latitude' => array('$exists' => 1, '$ne' => null)),1);
4945
4946 if ($ans == false)
4947 $ans = $sinceBeginning;
4948 //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp'])),1);
4949 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
4950 break;
4951
4952 default :
4953 return false;
4954 }
4955
4956 $obj = new emptyClass ();
4957 $obj->date = $ans [0] ['date'];
4958 $obj->time = $ans [0] ['time'];
4959 $obj->timestamp = $ans [0] ['timestamp'];
4960
4961 return $obj;
4962 }
4963
4964 // Returns duration for the tracker in stopped or nodata mode
4965 public function getTrackerDuration($tid, $status) {
4966 if ($this->isIgnitionEnabled ( $tid ))
4967 return $this->getTrackerDuration_withIgnition ( $tid, $status );
4968 return $this->getTrackerDuration_withoutIgnition ( $tid, $status );
4969 }
4970
4971
4972 private function getCurrentTrip_withoutIgnition($tid, $status) {
4973 global $GMONGO;
4974
4975 // If status is not moving then fetch last packet with GPS location and send
4976 if ($status == 'n' || $status == 'g') {
4977 //return $GMONGO->getLastAMRecord($tid);
4978 return $GMONGO->getLastARecord($tid);
4979 }
4980
4981 if ($status == 's') {
4982 // Get last Ignition on packet
4983 //return $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0),1);
4984 //$start = time();
4985 $queryCriteria = array('speed' => array('$gt' => 0), 'latitude' => array('$exists' => 1, '$ne' => null)); //Logic is different from V4, changed in V5
4986 $lastIgnition = $GMONGO->getAMRecord_reverseSorted($tid, $queryCriteria, 1);
4987 //$end = time() - $start;
4988 //$this->writeDebugLog("\r\nStop without ignition time TRACKERID $end seconds");
4989
4990 if ($lastIgnition == false || count ( $lastIgnition ) == 0) // NO ignition packet
4991 $answer = $GMONGO->getLastARecord($tid);
4992 else {
4993 //$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
4994 $answer = $GMONGO->getLastARecord($tid);
4995 }
4996
4997 //return $lastIgnition;
4998 return $answer;
4999 }
5000
5001 if ($status == 'm') {
5002 // Get last Ignition on packet
5003 //$lastIgnition = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0),1);
5004 $queryCriteria = array('speed' => 0, 'latitude' => array('$exists' => 1, '$ne' => null));
5005 $lastIgnition = $GMONGO->getAMRecord_reverseSorted($tid, $queryCriteria,1);
5006
5007
5008 if ($lastIgnition == false) {
5009 $lastIgnition = array ();
5010 $lastIgnition[0] = array();
5011 $lastIgnition [0]['timestamp'] = 0;
5012 }
5013
5014 return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
5015 //return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gte' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
5016 }
5017
5018 return false;
5019 }
5020
5021 private function getCurrentTrip_withIgnition($tid, $status) {
5022 global $GMONGO;
5023 // If status is not moving then fetch last packet and send
5024 if ($status == 'n' || $status == 'g') {
5025
5026 $answer = $GMONGO->getLastAMRecord($tid);
5027
5028 if ($answer != false) {
5029 if (strpos ( $answer [0] ['IO'], "j" ) === false) {
5030 $status = "s";
5031 } else {
5032 $status = "m";
5033 }
5034 } else
5035 return false;
5036 }
5037
5038 if ($status == 's') {
5039 // Get last Ignition on packet
5040 //$start = time();
5041 $lastIgnition = $GMONGO->getAMLastIgnition($tid);
5042
5043 //$ignTime = time() - $start;
5044 //$this->writeDebugLog("\r\nIgnition TRACKERID $tid $ignTime seconds");
5045
5046
5047 if ($lastIgnition == false || count ( $lastIgnition ) == 0) {
5048 $answer = $GMONGO->getLastARecord($tid);
5049 } // NO ignition packet
5050 else {
5051 //$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1); //in use
5052 //$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp'])),1);
5053 $answer = $GMONGO->getLastARecord($tid);
5054 }
5055
5056 return $answer;
5057 }
5058
5059 if ($status == 'i' || $status == 'm') {
5060 // Get last Ignition on packet
5061 //$start = time();
5062 $lastIgnition = $GMONGO->getAMLastStopped($tid);
5063
5064 //$end = time() - $start;
5065 //$this->writeDebugLog("\r\nLast stopped time TRACKERID $tid $end seconds");
5066
5067 if ($lastIgnition == false ) {
5068 $lastIgnition = array ();
5069 $lastIgnition[0] = array();
5070 $lastIgnition [0]['timestamp'] = 0;
5071 }
5072
5073
5074 /*$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gte' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
5075
5076 if ($answer == false)
5077 $answer = $GMONGO->getLastARecord($tid);*/
5078 //return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gte' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
5079 return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
5080 }
5081 return false;
5082 }
5083
5084 public function getCurrentTrip($tid, $status, $checkAccess = false) {
5085 if ($this->isIgnitionEnabled ( $tid ))
5086 return $this->getCurrentTrip_withIgnition ( $tid, $status );
5087 return $this->getCurrentTrip_withoutIgnition ( $tid, $status );
5088 }
5089
5090
5091
5092
5093 public function getLiveDetails($tid, $lat, $lng, $status, $geocode = true) {
5094 // Fetch Driver if status is moving or idling
5095 $reply = new emptyClass ();
5096
5097 $reply->driver = $this->getDriverName ( $tid );
5098 $reply->duration = $this->getTrackerDuration ( $tid, $status );
5099
5100 if ($geocode == true) {
5101 $geo = new GEOCODER ();
5102 $reply->location = $geo->search ( $lat, $lng, true );
5103 }
5104
5105 return $reply;
5106 }
5107 public function addPOI() {
5108 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5109
5110 $query = "INSERT INTO POI SET username=\"$username\",";
5111 $query .= basicTransactions::prepareMySQL_POSTRequest ();
5112 $result = $this->dbclass->execute_query ( $query );
5113
5114 $no = new emptyClass ();
5115
5116 if ($result != true) {
5117 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
5118 $this->writeDebugLog ( $this->dbclass->dblink->error );
5119 $no->result = ERROR;
5120 $no->id = - 1;
5121 return $no;
5122 }
5123 $no->result = SUCCESS;
5124 //$no->id = mysql_insert_id ( $this->dbclass->dblink );
5125 $no->id = $this->dbclass->dblink->insert_id;
5126 return $no;
5127 }
5128 public function addPOI2User($poi, $users) {
5129 $poiCount = count ( $poi );
5130 $execute = true;
5131 $index = 0;
5132 $ucount = count ( $users );
5133
5134 while ( $execute ) {
5135 $v = $poiCount - 50;
5136 if ($v < 0) {
5137 $v = $poiCount;
5138 $execute = false;
5139 } else {
5140 $v = 50;
5141 $poiCount -= 50;
5142 }
5143
5144 $id = "";
5145 for($x = 0; $x < $v; $x ++, $index ++) {
5146 if ($x != 0)
5147 $id .= " OR ";
5148 $id .= "id = " . $poi [$index];
5149 }
5150 for($x = 0; $x < $ucount; $x ++) {
5151 $username = $this->dbclass->get_escape_string ( $users [$x] );
5152 $query = "INSERT INTO POI (username, latitude, longitude, color, radius, shortName, description, icontype, metric, keywords) SELECT \"{$username}\" as username, latitude, longitude, color, radius, shortName, description, icontype, metric, keywords FROM POI WHERE " . $id;
5153 $result = $this->dbclass->execute_query ( $query );
5154 }
5155 }
5156 return SUCCESS;
5157 }
5158 public function addPOI_processor($fields, $fcount) {
5159 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5160 $id = 0;
5161
5162 $fieldsTxt = '"' . $username . '"';
5163
5164 for($v = 0; $v < $fcount; $v ++) {
5165 $fieldsTxt .= ',"' . $this->dbclass->get_escape_string ( $fields [$v] ) . '"';
5166 }
5167
5168 $query = "INSERT INTO POI (username,latitude,longitude,color,radius,shortName,description, icontype,metric,keywords) VALUES({$fieldsTxt})";
5169 $result = $this->dbclass->execute_query ( $query );
5170 if ($result == false)
5171 $this->writeDebugLog ( $this->dbclass->dblink->error );
5172 }
5173 public function updatePOI() {
5174 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5175 $id = $_POST ['id'];
5176 unset ( $_POST ['id'] );
5177
5178 $query = "UPDATE POI SET ";
5179 $query .= basicTransactions::prepareMySQL_POSTRequest ();
5180 $query .= " WHERE username=\"$username\" AND id=\"$id\"";
5181
5182 $result = $this->dbclass->execute_query ( $query );
5183
5184 $no = new emptyClass ();
5185
5186 if ($result != true) {
5187 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
5188 $this->writeDebugLog ( $this->dbclass->dblink->error );
5189 $no->result = ERROR;
5190 $no->id = - 1;
5191 return $no;
5192 }
5193
5194 $no->result = SUCCESS;
5195 $no->id = $id;
5196 return $no;
5197 }
5198 public function deletePOI($id) {
5199 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5200 $query = "DELETE FROM POI WHERE id=\"$id\" and username=\"$username\"";
5201
5202 $result = $this->dbclass->execute_query ( $query );
5203
5204 if ($result != true) {
5205 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
5206 $this->writeDebugLog ( $this->dbclass->dblink->error );
5207 return ERROR;
5208 }
5209
5210 return SUCCESS;
5211 }
5212 public function verifyStudentTag($tag) {
5213 $QUERY = "SELECT COUNT(*) FROM students WHERE tag =\"$tag\"";
5214 $this->dbclass->execute_query ( $QUERY );
5215 $ans = $this->dbclass->get_result_complete ();
5216 if ($ans [0] ['COUNT(*)'] > 0)
5217 return ERROR;
5218 return SUCCESS;
5219 }
5220 public function getStudentInfo($tag) {
5221 $QUERY = "SELECT *,students.name as sname FROM students inner join schools on (students.school = schools.id) WHERE students.tag='$tag'";
5222
5223 $this->dbclass->execute_query ( $QUERY );
5224 $ans = $this->dbclass->get_result_complete ();
5225 return $ans;
5226 }
5227 public function getSchoolsList($fields = "*") {
5228 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5229 $QUERY = "SELECT $fields FROM schools WHERE username=\"$username\"";
5230
5231 $this->dbclass->execute_query ( $QUERY );
5232 $ans = $this->dbclass->get_result_complete ();
5233 if ($ans == false)
5234 return ERROR;
5235 return $ans;
5236 }
5237 public function saveSchool() {
5238 $query = "REPLACE INTO schools SET ";
5239 $query .= basicTransactions::prepareMySQL_POSTRequest ();
5240 $result = $this->dbclass->execute_query ( $query );
5241 if ($result == false)
5242 $this->writeDebugLog ( $this->dbclass->dblink->error );
5243 //return mysql_insert_id ( $this->dblink );
5244 return $this->dbclass->dblink->insert_id;
5245 }
5246 public function removeSchool($id) {
5247 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5248 $query = "DELETE FROM schools WHERE id=\"{$id}\" AND username = \"$username\"";
5249 $result = $this->dbclass->execute_query ( $query );
5250
5251 $query = "SELECT id FROM students WHERE school=\"{$id}\" AND username=\"$username\"";
5252 $result = $this->dbclass->execute_query ( $query );
5253 $ans = $this->dbclass->get_result_complete ();
5254 if ($ans == false)
5255 return;
5256 $c = count ( $ans );
5257
5258 for($i = 0; $i < $c; $i ++) {
5259 $this->removeStudent ( $ans [$i] ['id'] );
5260 }
5261 }
5262 public function getStudentsList() {
5263 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5264 $QUERY = "SELECT * FROM students WHERE username=\"$username\"";
5265
5266 $this->dbclass->execute_query ( $QUERY );
5267 $ans = $this->dbclass->get_result_complete ();
5268 if ($ans == false)
5269 return ERROR;
5270 return $ans;
5271 }
5272 public function saveStudent() {
5273 $query = "REPLACE INTO students SET ";
5274 $query .= basicTransactions::prepareMySQL_POSTRequest ();
5275 $result = $this->dbclass->execute_query ( $query );
5276 if ($result == false)
5277 $this->writeDebugLog ( $this->dbclass->dblink->error );
5278 //return mysql_insert_id ( $this->dblink );
5279 return $this->dbclass->dblink->insert_id;
5280 }
5281 public function removeUserStudents($uname) {
5282 // uname is already escaped
5283 $QUERY = "SELECT * FROM students WHERE username=\"$uname\"";
5284 $this->dbclass->execute_query ( $QUERY );
5285 $ans = $this->dbclass->get_result_complete ();
5286
5287 for($i = 0; $i < count ( $ans ); $i ++) {
5288 $query = "DELETE FROM students WHERE id=\"{$ans[$i]['id']}\"";
5289 $result = $this->dbclass->execute_query ( $query );
5290
5291 $query = "DELETE FROM studentsCache WHERE id=\"{$ans[$i]['id']}\"";
5292 $result = $this->dbclass->execute_query ( $query );
5293 }
5294 }
5295 public function removeStudent($id) {
5296 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5297 $query = "DELETE FROM students WHERE id=\"{$id}\" AND username=\"$username\"";
5298 $result = $this->dbclass->execute_query ( $query );
5299
5300 $query = "DELETE FROM studentsCache WHERE id=\"{$id}\"";
5301 $result = $this->dbclass->execute_query ( $query );
5302 }
5303 public function getPOIList($username) {
5304 $username = $this->dbclass->get_escape_string ( $username );
5305 $QUERY = "SELECT id, latitude,longitude,radius,color,shortName,description,icontype, metric, keywords FROM POI WHERE username=\"$username\"";
5306
5307 $this->dbclass->execute_query ( $QUERY );
5308 $ans = $this->dbclass->get_result_complete ();
5309 if ($ans == false)
5310 return ERROR;
5311 return $ans;
5312 }
5313 function getHardwareType($tid) {
5314 $query = "SELECT type FROM trackers WHERE trackerid = \"{$tid}\"";
5315 $this->dbclass->execute_query ( $query );
5316 $answer = $this->dbclass->get_result_complete ();
5317 return $answer;
5318 } // function
5319 public function getHardwareInfo($tid) {
5320 $QUERY = "SELECT * FROM trackers as A2 LEFT JOIN (select ip,port,vehicleid as trackerid, protocol from napt) as A1 using(trackerid) where trackerid=\"$tid\"";
5321 $this->dbclass->execute_query ( $QUERY );
5322 return $this->dbclass->get_result_complete ();
5323 }
5324 public function outputEvent($tid, $ecode) {
5325 global $GMONGO;
5326
5327 $tdate = gmdate ( "Y-m-d", time () );
5328 $ttime = gmdate ( "H-i-s", time () );
5329
5330 $attime = explode ( "-", $ttime );
5331 $tsec = ($attime [0] * 60 * 60) + ($attime [1] * 60) + ($attime [2]);
5332
5333 /*$query = "INSERT INTO E{$tid} SET date=\"{$tdate}\", time = {$tsec},latitude =0, longitude=0, speed=0, direction=0,event={$ecode}";
5334 $result = $this->dbclass->execute_query ( $query );*/
5335
5336 $records = array();
5337 $records['date'] = $tdate;
5338 $records['time'] = $tsec;
5339 $records['latitude'] = 0;
5340 $records['longitude'] = 0;
5341 $records['speed'] = 0;
5342 $records['direction'] = 0;
5343 $records['event'] = $ecode;
5344 $records['description'] = '';
5345
5346 $result = $GMONGO->insertRecordIntoE($tid, $records);
5347
5348
5349 /*if ($result != true) {
5350 return mysql_error ( $this->dbclass->dblink );
5351 }*/
5352
5353 return SUCCESS;
5354 }
5355 public function saveTripName() {
5356 $query = "SELECT COUNT(*) FROM trips WHERE sDate=\"{$_POST['sdate']}\" AND eDate=\"{$_POST['edate']}\" AND sTime=\"{$_POST['stime']}\" AND eTime=\"{$_POST['etime']}\" AND trackerid=\"{$_POST['tid']}\"";
5357 $result = $this->dbclass->execute_query ( $query );
5358 $ans = $this->dbclass->get_result_complete ();
5359
5360 $name = $this->dbclass->get_escape_string ( $_POST ['name'] );
5361 if ($ans [0] ['COUNT(*)'] > 0)
5362 $query = "UPDATE trips SET name=\"{$name}\" WHERE sDate=\"{$_POST['sdate']}\" AND eDate=\"{$_POST['edate']}\" AND sTime=\"{$_POST['stime']}\" AND eTime=\"{$_POST['etime']}\" AND trackerid=\"{$_POST['tid']}\"";
5363 else
5364 $query = "INSERT INTO trips SET sDate=\"{$_POST['sdate']}\",eDate=\"{$_POST['edate']}\",sTime=\"{$_POST['stime']}\",eTime=\"{$_POST['etime']}\",trackerid=\"{$_POST['tid']}\",name=\"{$name}\"";
5365
5366 $result = $this->dbclass->execute_query ( $query );
5367
5368 if ($result != true) {
5369 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
5370 $this->writeDebugLog ( $this->dbclass->dblink->error );
5371 return ERROR;
5372 }
5373 return SUCCESS;
5374 }
5375 public function remOdometerTune($id) {
5376 $QUERY = "DELETE FROM odoTuning WHERE id='$id'";
5377 $this->dbclass->execute_query ( $QUERY );
5378 }
5379 public function getOdotuneList($tid) {
5380 $QUERY = "SELECT * FROM odoTuning WHERE trackerid='$tid' ORDER BY date,time";
5381 $this->dbclass->execute_query ( $QUERY );
5382 $ans = $this->dbclass->get_result_complete ();
5383 if ($ans != false) {
5384 foreach ( $ans as $k => $v ) {
5385 $odo = $this->getOdometer ( $tid, $v ['date'], $v ['time'], ODOMETER_NOADJUST );
5386 $ans [$k] ['odo'] = $v ['odo'] + $odo;
5387 }
5388 }
5389 return $ans;
5390 }
5391
5392 public function addOdometerTune($tid, $date, $time, $value) {
5393 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
5394 $fdate->setDate ( $date, $time );
5395
5396 $date = $fdate->UTCDateString;
5397 $time = $fdate->UTCTime;
5398
5399 $odo = $this->getOdometer ( $tid, $date, $time, ODOMETER_NOADJUST );
5400 $value = $value - $odo;
5401
5402 $QUERY = "INSERT INTO odoTuning SET date='$date',time='$time', trackerid='$tid', odo='$value' ";
5403 $this->dbclass->execute_query ( $QUERY );
5404
5405 $r = new emptyClass ();
5406 //$r->id = mysql_insert_id ( $this->dblink );
5407 $r->id = $this->dbclass->dblink->insert_id;
5408 $r->dateString = $fdate->getFormattedString ();
5409 $r->odo = $odo + $value;
5410 $r->tid = $tid;
5411
5412 print json_encode ( $r );
5413 }
5414
5415 public function getHardwareCode($type) {
5416 $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"$type\"";
5417 $this->dbclass->execute_query ( $QUERY );
5418 $ans = $this->dbclass->get_result_complete ();
5419
5420 return $ans [0] ['hwcode'];
5421 }
5422
5423 public function getOdometerSum($tid, $fromDate, $fromTime, $date, $time) {
5424 $periodClause = basicTransactions::getPeriodClause_excludeStartTime ( $fromDate, $fromTime, $date, $time );
5425 $QUERY = "SELECT SUM(odometer) FROM M{$tid} WHERE ($periodClause)";
5426 $this->dbclass->execute_query ( $QUERY );
5427 $ans = $this->dbclass->get_result_complete ();
5428
5429 return $ans [0] ['SUM(odometer)'];
5430 }
5431
5432
5433 public function getOdometer($tid, $date, $time, $mode = ODOMETER_NONE) {
5434 global $GMONGO;
5435
5436 $features = $this->getTrackerInformation ( $tid );
5437 $features = $features [0];
5438
5439 $fdate = new FNSDateTime($_SESSION['timezone']);
5440
5441 $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"{$features['type']}\"";
5442 $this->dbclass->execute_query ( $QUERY );
5443 $ans = $this->dbclass->get_result_complete ();
5444
5445 $TELTONIKA = false;
5446 if ($ans [0] ['hwcode'] == 'TELT')
5447 $TELTONIKA = true;
5448
5449 if (isset ( $features ['odometerSensor'] ) && $features ['odometerSensor'] == 1) {
5450
5451 // Check for value in the odometer cache
5452 $QUERY = "SELECT * FROM odoTuning WHERE (trackerid='$tid' AND ((date < '$date') or (date = '$date' AND time <= $time))) ORDER BY date desc, time desc LIMIT 0,1";
5453 $this->dbclass->execute_query ( $QUERY );
5454 $ans = $this->dbclass->get_result_complete ();
5455
5456 if ($ans == false) {
5457 if (isset ( $features ['odometerValue'] ) == false || $features ['odometerValue'] == null)
5458 $ov = 0;
5459 else
5460 $ov = $features ['odometerValue'];
5461 } else {
5462 $ov = $ans [0] ['odo'];
5463 }
5464
5465 if ($TELTONIKA == true) {
5466 $QUERY = "SELECT * FROM odoCache WHERE (trackerid='$tid' AND ((date < '$date') or (date = '$date' AND time <= $time))) ORDER BY date desc, time desc LIMIT 0,1";
5467 $this->dbclass->execute_query ( $QUERY );
5468 $ans = $this->dbclass->get_result_complete ();
5469
5470 //var_dump($ans);
5471
5472 $cacheValue = 0;
5473 $fromdate = "1970-01-01";
5474 $fromtime = 0;
5475
5476 if ($ans != false) {
5477 $fromdate = $ans [0] ['date'];
5478 $fromtime = $ans [0] ['time'];
5479 $cacheValue = $ans [0] ['odo'];
5480 }
5481 $fdate->setUTCDate($fromdate, $fromtime);
5482 $fromts = $fdate->dateTime->getTimestamp();
5483 $fdate->setUTCDate($date, $time);
5484 $tots = $fdate->dateTime->getTimestamp();
5485 $odo = $GMONGO->getOdometerSum($tid, $fromts, $tots);
5486 //$odo = $GMONGO->getOdometerSum($tid, $fdate->dateTime->getTimestamp(), time());
5487 $cOdo = $cacheValue + $odo['result'][0]['odometer'];
5488
5489 //var_dump($odo);
5490 //die;
5491
5492 switch ($mode) {
5493 case ODOMETER_NONE :
5494 break;
5495 case ODOMETER_NOADJUST :
5496 $ov = 0;
5497 break;
5498 }
5499
5500 } else {
5501 $fdate->setUTCDate($date, $time);
5502 $ts = $fdate->dateTime->getTimestamp();
5503 switch ($mode) {
5504 case ODOMETER_NONE :
5505 $inputs = $GMONGO->getAMRecord($tid, array('timestamp' => $ts), 1);
5506 break;
5507 case ODOMETER_NOADJUST :
5508 $inputs = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp' => array('$lte' => $ts)), 1);
5509 $ov = 0;
5510 break;
5511 }
5512 $cOdo = $inputs [0] ['odometer'];
5513 }
5514
5515 $cOdo += $ov;
5516 } else
5517 $cOdo = false;
5518
5519 return $cOdo;
5520 }
5521
5522
5523 /*public function getOdometerHistory($tid, $date, $time, $mode = ODOMETER_NONE) {
5524 global $GMONGO;
5525
5526 $features = $this->getTrackerInformation ( $tid );
5527 $features = $features [0];
5528
5529 $fdate = new FNSDateTime($_SESSION['timezone']);
5530
5531 $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"{$features['type']}\"";
5532 $this->dbclass->execute_query ( $QUERY );
5533 $ans = $this->dbclass->get_result_complete ();
5534
5535 $TELTONIKA = false;
5536 if ($ans [0] ['hwcode'] == 'TELT')
5537 $TELTONIKA = true;
5538
5539 if (isset ( $features ['odometerSensor'] ) && $features ['odometerSensor'] == 1) {
5540
5541 // Check for value in the odometer cache
5542 $QUERY = "SELECT * FROM odoTuning WHERE (trackerid='$tid' AND ((date < '$date') or (date = '$date' AND time <= $time))) ORDER BY date desc, time desc LIMIT 0,1";
5543 $this->dbclass->execute_query ( $QUERY );
5544 $ans = $this->dbclass->get_result_complete ();
5545
5546 if ($ans == false) {
5547 if (isset ( $features ['odometerValue'] ) == false || $features ['odometerValue'] == null)
5548 $ov = 0;
5549 else
5550 $ov = $features ['odometerValue'];
5551 } else {
5552 $ov = $ans [0] ['odo'];
5553 }
5554
5555 if ($TELTONIKA == true) {
5556 $QUERY = "SELECT * FROM odoCache WHERE (trackerid='$tid' AND ((date < '$date') or (date = '$date' AND time <= $time))) ORDER BY date desc, time desc LIMIT 0,1";
5557 $this->dbclass->execute_query ( $QUERY );
5558 $ans = $this->dbclass->get_result_complete ();
5559
5560 $cacheValue = 0;
5561 $fromdate = "1970-01-01";
5562 $fromtime = 0;
5563
5564 if ($ans != false) {
5565 $fromdate = $ans [0] ['date'];
5566 $fromtime = $ans [0] ['time'];
5567 $cacheValue = $ans [0] ['odo'];
5568 }
5569 $fdate->setUTCDate($fromdate, $fromtime);
5570 $fromts = $fdate->dateTime->getTimestamp();
5571 $fdate->setUTCDate($date, $time);
5572 $tots = $fdate->dateTime->getTimestamp();
5573 //$odo = $GMONGO->getOdometerSum($tid, $fdate->dateTime->getTimestamp(), time());
5574 $odo = $GMONGO->getOdometerSum($tid, $fromts, $tots);
5575 $cOdo = $cacheValue + $odo['result'][0]['odometer'];
5576
5577 //var_dump($cOdo);
5578 //die;
5579
5580 switch ($mode) {
5581 case ODOMETER_NONE :
5582 break;
5583 case ODOMETER_NOADJUST :
5584 $ov = 0;
5585 break;
5586 }
5587
5588 } else {
5589 $fdate->setUTCDate($date, $time);
5590 $ts = $fdate->dateTime->getTimestamp();
5591 switch ($mode) {
5592 case ODOMETER_NONE :
5593 $inputs = $GMONGO->getAMRecord($tid, array('timestamp' => $ts), 1);
5594 break;
5595 case ODOMETER_NOADJUST :
5596 $inputs = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp' => array('$lte' => $ts)), 1);
5597 $ov = 0;
5598 break;
5599 }
5600 $cOdo = $inputs [0] ['odometer'];
5601 }
5602
5603 $cOdo += $ov;
5604 } else
5605 $cOdo = false;
5606
5607 return $cOdo;
5608 }*/
5609
5610 public function getHistoryDriverName($tid, $date, $time) {
5611 // Driver name
5612 global $LANGUAGE;
5613 global $GMONGO;
5614
5615 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5616
5617 if ($this->isDriverIDEnabled ( $tid ) == false) {
5618 $QUERY = "SELECT name,tagID FROM driversMap INNER JOIN drivers USING(tagID) WHERE trackerid =\"$tid\" AND type='S'";
5619 $this->dbclass->execute_query ( $QUERY );
5620 $ans = $this->dbclass->get_result_complete ();
5621
5622 if ($ans != false && $ans [0] ['name'] != NULL && $ans [0] ['name'] != '') {
5623 return $ans [0] ['name'];
5624 }
5625 }
5626
5627 $tag = 0;
5628
5629 $fdate = new FNSDateTime('UTC');
5630 $fdate->setDate($date, $time);
5631 $timestamp = $fdate->dateTime->getTimestamp();
5632
5633 $queryCriteria = array('timestamp' => $timestamp);
5634 $field = array('driverID' => true);
5635 $ans = $GMONGO->getAMRecordLimitedField($tid, $queryCriteria, $field);
5636
5637 /*$QUERY = "SELECT driverID from M{$tid} WHERE (date =\"" . $date . "\" AND time =\"" . $time . "\")";
5638 $this->dbclass->execute_query ( $QUERY );
5639 $ans = $this->dbclass->get_result_complete ();*/
5640
5641 if ($ans != false && $ans [0] ['driverID'] != NULL && $ans [0] ['driverID'] != '') {
5642 $tag = $ans [0] ['driverID'];
5643 } else {
5644 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
5645 $fdate->setDate ( $fdate->UTCDateString, 0 );
5646 $dayts = $fdate->dateTime->getTimestamp();
5647 $ans = $GMONGO->getERecords_reverseSorted($tid, array('event' => EVENT_RFID_SWEEP, '$or' => array(array('timestamp' => array('$lte' => $timestamp)), array('date' => $fdate->UTCDateString) ) ));
5648
5649 /*$QUERY = "SELECT * from E{$tid} WHERE event=\"" . EVENT_RFID_SWEEP . "\" AND ((date =\"" . $date . "\" AND time <=\"" . $time . "\") OR (date = \"" . $fdate->UTCDateString . "\")) ORDER BY date desc, time desc LIMIT 0,1";
5650 $this->dbclass->execute_query ( $QUERY );
5651 $ans = $this->dbclass->get_result_complete ();*/
5652 if ($ans != false) {
5653 $tag = $ans [0] ['description'];
5654 } else
5655 return false;
5656 }
5657
5658 $QUERY = "SELECT * FROM drivers WHERE tagID=\"{$tag}\"";
5659 $this->dbclass->execute_query ( $QUERY );
5660 $ans = $this->dbclass->get_result_complete ();
5661
5662 if ($ans != false) {
5663 return $ans [0] ['name'] . " " . ($this->verifyDriverTag ( $ans [0], $tid ) ? '' : $LANGUAGE ['UNAUTHORIZED']);
5664 }
5665
5666 return false;
5667 }
5668 public function getExtendedTrackerInformation($tid) {
5669 $info = array ();
5670
5671 $features = $this->getTrackerInformation ( $tid );
5672 $info ['features'] = $features [0];
5673
5674 $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"{$features[0]['type']}\"";
5675 $this->dbclass->execute_query ( $QUERY );
5676 $ans = $this->dbclass->get_result_complete ();
5677
5678 $info ['hardware'] = $ans [0];
5679
5680 return $info;
5681 }
5682 public function getOdometerTuning_periodWise($tid, $sDate, $sTime, $eDate, $eTime) {
5683 $periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
5684 $QUERY = "SELECT date,time,odo FROM odoTuning WHERE (trackerid='$tid' AND ((date < '$sDate') or (date = '$sDate' AND time <= $sTime))) ORDER BY date desc, time desc LIMIT 0,1";
5685 $this->dbclass->execute_query ( $QUERY );
5686 $previousTune = $this->dbclass->get_result_complete ();
5687
5688 $QUERY = "SELECT date,time,odo FROM odoTuning WHERE (trackerid='$tid' AND ($periodClause)) ORDER BY date, time";
5689 $this->dbclass->execute_query ( $QUERY );
5690 $tuneValues = $this->dbclass->get_result_complete ();
5691
5692 if ($previousTune != false) {
5693 if ($tuneValues == false)
5694 $tuneValues = $previousTune;
5695 else
5696 $tuneValues = array_merge ( $previousTune, $tuneValues );
5697 }
5698 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
5699
5700 $tuneTimes = array ();
5701
5702 if ($tuneValues != false) {
5703 foreach ( $tuneValues as $k => $v ) {
5704 $fdate->setUTCDate ( $v ['date'], $v ['time'] );
5705 $n = new emptyClass ();
5706 $n->ts = $fdate->dateTime->getTimestamp ();
5707 $n->odo = $v ['odo'];
5708 array_push ( $tuneTimes, $n );
5709 }
5710 }
5711 return $tuneTimes;
5712 }
5713 public function getTrips($tid, $sDate, $sTime, $eDate, $eTime) {
5714 require_once FLEET_FOLDER . '/tripsLogic.php';
5715
5716 global $GMONGO;
5717
5718 $info = $this->getExtendedTrackerInformation ( $tid );
5719
5720 $features = &$info ['features'];
5721 $hardware = &$info ['hardware'];
5722
5723 $features = $this->getFeatures ( $tid );
5724
5725 if ($features ['ignitionSensor'] != 1) {
5726 $tripWise = false;
5727 } else {
5728 $tripWise = true;
5729 }
5730
5731 //$periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
5732
5733 $periodClauseMongo = array();
5734
5735 $periodClauseMongo = basicTransactions::getPeriodClauseMongo ( $sDate, $sTime, $eDate, $eTime );
5736
5737 $odometer = new OdometerHelper ();
5738 $odometer->initialize ( $tid, $sDate, $sTime, $eDate, $eTime );
5739
5740 /*$QUERY = "SELECT * FROM A{$tid} WHERE " . $periodClause . " ORDER BY date,time";
5741 $this->dbclass->execute_query ( $QUERY );
5742 $ans = $this->dbclass->get_result_complete ();
5743
5744 $QUERY = "SELECT * FROM M{$tid} WHERE " . $periodClause . " ORDER BY date,time";
5745 $this->dbclass->execute_query ( $QUERY );
5746 $mtable = $this->dbclass->get_result_complete ();*/
5747 //$periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
5748
5749 $periodClauseMongo ['latitude'] = array('$exists' => 1, '$ne' => null);
5750
5751 //$mtable = $GMONGO->getAMRecord($tid, $periodClauseMongo);
5752 $ans = $GMONGO->getAMRecord($tid, $periodClauseMongo);
5753
5754 //print_r($mtable);
5755 //die;
5756
5757 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
5758
5759 $rtype = array ();
5760
5761 $odoInitialized = false;
5762
5763 if ($ans != false) {
5764 $acount = count ( $ans );
5765 /*$comp = 0;
5766 $mcount = count ( $mtable );*/
5767
5768 $fprofiles = $this->getTrackerFuelProfiles ( $tid );
5769 $tprofiles = $this->getTrackerTemperatureProfiles ( $tid );
5770
5771 for($x = 0; $x < $acount; $x ++) {
5772 //echo "check".$ans[$x]['odometer']."\r\n";
5773 //echo $x;
5774 //die;
5775 //for(; $comp < $mcount; $comp ++) {
5776 //if ($ans [$x] ['date'] == $mtable [$comp] ['date'] && $ans [$x] ['time'] == $mtable [$comp] ['time']) {
5777 for($i = 0; $i < 5; $i ++) {
5778 if ($fprofiles [$i] != false) {
5779 $ans [$x] ['fuel' . ($i + 1)] = $this->getFuelFromProfile ( $fprofiles [$i], $ans [$x] ['fuel' . ($i + 1)] );
5780 } else {
5781 unset ( $ans [$x] ['fuel' . ($i + 1)] );
5782 }
5783
5784 if ($tprofiles [$i] != false) {
5785 $ans [$x] ['temperature' . ($i + 1)] = $this->getTemperatureFromProfile ( $tprofiles [$i], $ans [$x] ['temperature' . ($i + 1)] );
5786 } else {
5787 unset ( $ans [$x] ['temperature' . ($i + 1)] );
5788 }
5789 }
5790
5791 //$ans [$x] = array_merge ( $ans [$x], $mtable [$comp] );
5792
5793 if ($odoInitialized) {
5794 $ans[$x]['odometer'] = $odometer->getValue($ans[$x]['odometer'],$ans[$x]['date'], $ans[$x]['time']);
5795 } else {
5796 $ans [$x] ['odometer'] = $odometer->begin($ans[$x]['date'], $ans[$x]['time']);
5797 $odoInitialized = true;
5798 }
5799
5800 //$comp ++;
5801 //break;
5802 //} //if
5803 //} //inner for $mcount
5804
5805 if ($ans [$x] ['speed'] > 0)
5806 $status = "m";
5807 else {
5808 if (isset ( $ans [$x] ['IO'] )) {
5809 if (strpos ( $ans [$x] ['IO'], "j" ) === false)
5810 $status = "s";
5811 else
5812 $status = "i";
5813 } else
5814 $status = "s";
5815 }
5816 $ans [$x] ['s'] = $status;
5817
5818 $fnsdate->setUTCDate ( $ans [$x] ['date'], $ans [$x] ['time'] );
5819 $ans [$x] ['dateString'] = $fnsdate->getFormattedString ();
5820 } //Outer for loop, traversing $ans
5821
5822 if ($tripWise == true) {
5823 $rtype ['mode'] = "trip";
5824 $rtype ['data'] = tripsLogic::tripsWithIgnition ( $ans );
5825
5826 $c = count ( $rtype ['data'] );
5827
5828 for($i = 0; $i < $c; $i ++) {
5829 // Trips name
5830 $QUERY = "SELECT name from trips WHERE sDate=\"" . $rtype ['data'] [$i] ['sdate'] . "\" AND eDate=\"" . $rtype ['data'] [$i] ['edate'] . "\" AND sTime =\"" . $rtype ['data'] [$i] ['stime'] . "\" AND eTime=\"" . $rtype ['data'] [$i] ['etime'] . "\" AND trackerid=\"$tid\"";
5831 $this->dbclass->execute_query ( $QUERY );
5832 $ans = $this->dbclass->get_result_complete ();
5833
5834 if ($ans != false) {
5835 $rtype ['data'] [$i] ['name'] = $ans [0] ['name'];
5836 } else {
5837 $rtype ['data'] [$i] ['name'] = '';
5838 }
5839
5840 // Driver name
5841 $dname = $this->getHistoryDriverName ( $tid, $rtype ['data'] [$i] ['sdate'], $rtype ['data'] [$i] ['stime'] );
5842 $rtype ['data'] [$i] ['dname'] = $dname;
5843 }
5844 } else {
5845 $rtype ['mode'] = "continuous";
5846 $rtype ['data'] = array (
5847 'data' => tripsLogic::tripsWithoutIgnition ( $ans )
5848 );
5849 }
5850 }
5851
5852 /*if ($ans != false) {
5853 $acount = count ( $ans );
5854 $comp = 0;
5855 $mcount = count ( $mtable );
5856
5857 $fprofiles = $this->getTrackerFuelProfiles ( $tid );
5858 $tprofiles = $this->getTrackerTemperatureProfiles ( $tid );
5859
5860 for($x = 0; $x < $acount; $x ++) {
5861 for(; $comp < $mcount; $comp ++) {
5862 if ($ans [$x] ['date'] == $mtable [$comp] ['date'] && $ans [$x] ['time'] == $mtable [$comp] ['time']) {
5863 for($i = 0; $i < 5; $i ++) {
5864 if ($fprofiles [$i] != false) {
5865 $mtable [$comp] ['fuel' . ($i + 1)] = $this->getFuelFromProfile ( $fprofiles [$i], $mtable [$comp] ['fuel' . ($i + 1)] );
5866 } else {
5867 unset ( $mtable [$comp] ['fuel' . ($i + 1)] );
5868 }
5869
5870 if ($tprofiles [$i] != false) {
5871 $mtable [$comp] ['temperature' . ($i + 1)] = $this->getTemperatureFromProfile ( $tprofiles [$i], $mtable [$comp] ['temperature' . ($i + 1)] );
5872 } else {
5873 unset ( $mtable [$comp] ['temperature' . ($i + 1)] );
5874 }
5875 }
5876
5877 $ans [$x] = array_merge ( $ans [$x], $mtable [$comp] );
5878
5879 if ($odoInitialized) {
5880 $ans[$x]['odometer'] = $odometer->getValue($ans[$x]['odometer'],$ans[$x]['date'], $ans[$x]['time']);
5881 } else {
5882 $ans [$x] ['odometer'] = $odometer->begin($ans[$x]['date'], $ans[$x]['time']);
5883 $odoInitialized = true;
5884 }
5885
5886 $comp ++;
5887 break;
5888 }
5889 }
5890
5891 if ($ans [$x] ['speed'] > 0)
5892 $status = "m";
5893 else {
5894 if (isset ( $ans [$x] ['IO'] )) {
5895 if (strpos ( $ans [$x] ['IO'], "j" ) === false)
5896 $status = "s";
5897 else
5898 $status = "i";
5899 } else
5900 $status = "s";
5901 }
5902 $ans [$x] ['s'] = $status;
5903
5904 $fnsdate->setUTCDate ( $ans [$x] ['date'], $ans [$x] ['time'] );
5905 $ans [$x] ['dateString'] = $fnsdate->getFormattedString ();
5906 }
5907
5908 if ($tripWise == true) {
5909 $rtype ['mode'] = "trip";
5910 $rtype ['data'] = tripsLogic::tripsWithIgnition ( $ans );
5911
5912 $c = count ( $rtype ['data'] );
5913
5914 for($i = 0; $i < $c; $i ++) {
5915 // Trips name
5916 $QUERY = "SELECT name from trips WHERE sDate=\"" . $rtype ['data'] [$i] ['sdate'] . "\" AND eDate=\"" . $rtype ['data'] [$i] ['edate'] . "\" AND sTime =\"" . $rtype ['data'] [$i] ['stime'] . "\" AND eTime=\"" . $rtype ['data'] [$i] ['etime'] . "\" AND trackerid=\"$tid\"";
5917 $this->dbclass->execute_query ( $QUERY );
5918 $ans = $this->dbclass->get_result_complete ();
5919
5920 if ($ans != false) {
5921 $rtype ['data'] [$i] ['name'] = $ans [0] ['name'];
5922 } else {
5923 $rtype ['data'] [$i] ['name'] = '';
5924 }
5925
5926 // Driver name
5927 $dname = $this->getHistoryDriverName ( $tid, $rtype ['data'] [$i] ['sdate'], $rtype ['data'] [$i] ['stime'] );
5928 $rtype ['data'] [$i] ['dname'] = $dname;
5929 }
5930 } else {
5931 $rtype ['mode'] = "continuous";
5932 $rtype ['data'] = array (
5933 'data' => tripsLogic::tripsWithoutIgnition ( $ans )
5934 );
5935 }
5936 }*/
5937
5938 // Fetch Events
5939 /*$QUERY = "SELECT * FROM E{$tid} WHERE " . basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime ) . " ORDER BY date,time";
5940 $this->dbclass->execute_query ( $QUERY );
5941 $ans = $this->dbclass->get_result_complete ();*/
5942
5943 $ans = $GMONGO->getERecords($tid, $periodClauseMongo);
5944
5945 if ($ans != false) {
5946 $ecount = count ( $ans );
5947
5948 for($i = 0; $i < $ecount; $i ++) {
5949 $fnsdate->setUTCDate ( $ans [$i] ['date'], $ans [$i] ['time'] );
5950 $ans [$i] ['dateString'] = $fnsdate->getFormattedString ();
5951 $ans [$i] ['description'] = utf8_encode($ans [$i] ['description']->bin);
5952 unset ( $ans [$i] ['date'] );
5953 unset ( $ans [$i] ['time'] );
5954 }
5955 $rtype ['events'] = $ans;
5956 }
5957 return $rtype;
5958 }
5959 public function getCompleteGeofences() {
5960 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5961 $QUERY = "SELECT id,radius,fencename,type,color FROM geofences WHERE username='$uname' ORDER BY fencename";
5962 $this->dbclass->execute_query ( $QUERY );
5963 $geofences = $this->dbclass->get_result_complete ();
5964
5965 $c = count ( $geofences );
5966
5967 for($i = 0; $i < $c; $i ++) {
5968 $QUERY = "SELECT * FROM geofencesPoints WHERE id = " . $geofences [$i] ['id'] . " LIMIT 0,1";
5969 $this->dbclass->execute_query ( $QUERY );
5970 $gp = $this->dbclass->get_result_complete ();
5971 $geofences [$i] ['latitude'] = $gp [0] ['latitude'];
5972 $geofences [$i] ['longitude'] = $gp [0] ['longitude'];
5973 }
5974 return $geofences;
5975 }
5976
5977 public function getGeofenceByName($fencenameTemp) {
5978 //$uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5979 $QUERY = "SELECT id,radius,fencename,type,color FROM geofences WHERE fencename='$fencenameTemp' ORDER BY fencename";
5980 $this->dbclass->execute_query ( $QUERY );
5981 $geofences = $this->dbclass->get_result_complete ();
5982
5983 $c = count ( $geofences );
5984
5985 for($i = 0; $i < $c; $i ++) {
5986 $QUERY = "SELECT * FROM geofencesPoints WHERE id = " . $geofences [$i] ['id'] . " LIMIT 0,1";
5987 $this->dbclass->execute_query ( $QUERY );
5988 $gp = $this->dbclass->get_result_complete ();
5989 $geofences [$i] ['latitude'] = $gp [0] ['latitude'];
5990 $geofences [$i] ['longitude'] = $gp [0] ['longitude'];
5991 }
5992 return $geofences;
5993 }
5994
5995 public function getGeofences($trackerid) {
5996 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5997 $QUERY = "SELECT geoid FROM activeGeofences WHERE username=\"$uname\" AND trackerid =\"$trackerid\" GROUP BY geoid";
5998 $this->dbclass->execute_query ( $QUERY );
5999 $result = $this->dbclass->get_result_complete ();
6000 if ($result == false)
6001 return ERROR;
6002 $c = count ( $result );
6003
6004 $fences = array ();
6005 $fences ['t0'] = array ();
6006 $fences ['t1'] = array ();
6007 $fences ['t2'] = array ();
6008
6009 for($i = 0; $i < $c; $i ++) {
6010 $QUERY = "SELECT * FROM geofences WHERE id = " . $result [$i] ['geoid'];
6011 $this->dbclass->execute_query ( $QUERY );
6012 $geofence = $this->dbclass->get_result_complete ();
6013
6014 $QUERY = "SELECT latitude, longitude FROM geofencesPoints WHERE id = " . $result [$i] ['geoid'];
6015 $this->dbclass->execute_query ( $QUERY );
6016 $geofence [0] ['points'] = $this->dbclass->get_result_complete ();
6017
6018 array_push ( $fences ['t' . $geofence [0] ['type']], $geofence [0] );
6019 }
6020 return $fences;
6021 }
6022 private function deactivateGeofence($uname, $fid) {
6023 $QUERY = "SELECT * FROM activeGeofences WHERE username=\"$uname\" AND geoid =\"$fid\"";
6024 $this->dbclass->execute_query ( $QUERY );
6025 $result = $this->dbclass->get_result_complete ();
6026 if ($result == false)
6027 return;
6028 $fcount = count ( $result );
6029
6030 for($i = 0; $i < $fcount; $i ++) {
6031 $query = "DELETE FROM activeGeofences WHERE username='{$uname}' and id='{$result[$i]['id']}'";
6032 $rs = $this->dbclass->execute_query ( $query );
6033
6034 if ($rs != true) {
6035 //$this->writeDebugLog ( "\r\n" . mysql_error ( $this->dbclass->dblink ) );
6036 $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
6037 return ERROR;
6038 }
6039
6040 $query = "INSERT INTO ACTIVEGEO_CACHE SET id='{$result[$i]["id"]}', geoid='{$result[$i]["geoid"]}', username='{$uname}' , fencename='{$result[$i]["fencename"]}' , trackerid='{$result[$i]['trackerid']}' , sdate='{$result[$i]['sdate']}' , shr='{$result[$i]['shr']}' , ";
6041 $query .= "smin='{$result[$i]['smin']}' , edate='{$result[$i]['edate']}' , ehr='{$result[$i]['ehr']}' , emin='{$result[$i]['emin']}', operation='D',speedLimit = '{$result[$i]['speedLimit']}', actType = '{$result[$i]['type']}', timezone = '{$result[$i]['timezone']}', weekDays = '{$result[$i]['weekDays']}', monthDays='{$result[$i]['monthDays']}'";
6042 $rs = $this->dbclass->execute_query ( $query );
6043 if ($rs != true) {
6044 $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
6045 return ERROR;
6046 }
6047 }
6048 }
6049 public function deleteUserGeofences($uname) {
6050 // uname is already escaped
6051 $query = "SELECT id from geofences WHERE username=\"" . $uname . "\"";
6052 $this->dbclass->execute_query ( $query );
6053 $result = $this->dbclass->get_result_complete ();
6054
6055 for($i = 0; $i < count ( $result ); $i ++) {
6056 $fid = $result [$i] ['id'];
6057 $query = "DELETE FROM geofences WHERE username=\"" . $uname . "\" and id = \"" . $fid . "\"";
6058 $this->dbclass->execute_query ( $query );
6059 $query = "DELETE FROM geofencesPoints WHERE id = \"" . $fid . "\"";
6060 $this->dbclass->execute_query ( $query );
6061 $query = "DELETE FROM geoContacts where username=\"{$uname}\" and fencename=\"{$fid}\"";
6062 $this->dbclass->execute_query ( $query );
6063 $query = "DELETE FROM POI WHERE id IN (SELECT POIID from checkpoints WHERE id={$fid})";
6064 $this->dbclass->execute_query ( $query );
6065 $query = "DELETE FROM checkpoints where id=\"{$fid}\"";
6066 $this->dbclass->execute_query ( $query );
6067
6068 $query = "DELETE FROM archiveFences where geoid=\"{$fid}\"";
6069 $this->dbclass->execute_query ( $query );
6070 }
6071 return SUCCESS;
6072 }
6073 public function deleteGeofence($fid) {
6074 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6075
6076 $query = "SELECT id from geofences WHERE username=\"" . $uname . "\" and id = \"" . $fid . "\"";
6077 $this->dbclass->execute_query ( $query );
6078 $result = $this->dbclass->get_result_complete ();
6079 if ($result [0] ['id'] != $fid)
6080 return ERROR;
6081
6082 $this->deactivateGeofence ( $uname, $fid );
6083
6084 $query = "DELETE FROM geofences WHERE username=\"" . $uname . "\" and id = \"" . $fid . "\"";
6085 $this->dbclass->execute_query ( $query );
6086 $query = "DELETE FROM geofencesPoints WHERE id = \"" . $fid . "\"";
6087 $this->dbclass->execute_query ( $query );
6088 $query = "DELETE FROM geoContacts where username=\"{$uname}\" and fencename=\"{$fid}\"";
6089 $this->dbclass->execute_query ( $query );
6090 $query = "DELETE FROM POI WHERE id IN (SELECT POIID from checkpoints WHERE id={$fid})";
6091 $this->dbclass->execute_query ( $query );
6092 $query = "DELETE FROM checkpoints where id=\"{$fid}\"";
6093 $this->dbclass->execute_query ( $query );
6094
6095 $query = "DELETE FROM archiveFences where geoid=\"{$fid}\"";
6096 $this->dbclass->execute_query ( $query );
6097
6098 return SUCCESS;
6099 }
6100 public function getActiveGeofences($fid) {
6101 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6102
6103 $query = "SELECT * FROM activeGeofences WHERE username=\"$uname\" AND geoid=\"$fid\"";
6104 $result = $this->dbclass->execute_query ( $query );
6105 return $this->dbclass->get_result_complete ();
6106 }
6107 public function getCompleteActiveGeofences() {
6108 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6109
6110 if (isset ( $_GET ['type'] ) && $_GET ['type'] == 2) {
6111 $query = "SELECT activeGeofences.* FROM activeGeofences inner join geofences ON (geoid = geofences.id) WHERE geofences.username=\"$uname\" and type = 2";
6112 } else {
6113 $query = "SELECT activeGeofences.* FROM activeGeofences inner join geofences ON (geoid = geofences.id) WHERE geofences.username=\"$uname\" and (type = 0 or type = 1)";
6114 }
6115
6116 $result = $this->dbclass->execute_query ( $query );
6117 return $this->dbclass->get_result_complete ();
6118 }
6119 public function setActiveGeofences($result, $fid) {
6120 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6121
6122 if ($result == false)
6123 return;
6124 $fcount = count ( $result );
6125
6126 $fname = $this->dbclass->get_escape_string ( $result [0] ['fencename'] );
6127
6128 for($i = 0; $i < $fcount; $i ++) {
6129 $query = "INSERT INTO activeGeofences SET id = 0, geoid = $fid, username='{$uname}' , fencename='{$fname}' , trackerid='{$result[$i]['trackerid']}' , sdate='{$result[$i]['sdate']}' , shr='{$result[$i]['shr']}' , ";
6130 $query .= "smin='{$result[$i]['smin']}' , edate='{$result[$i]['edate']}' , ehr='{$result[$i]['ehr']}' , emin='{$result[$i]['emin']}', speedLimit = '{$result[$i]['speedLimit']}', actType = '{$result[$i]['actType']}', timezone = '{$result[$i]['timezone']}', weekDays = '{$result[$i]['weekDays']}', monthDays='{$result[$i]['monthDays']}'";
6131 $this->dbclass->execute_query ( $query );
6132 //$id = mysql_insert_id ( $this->dblink );
6133 $id = $this->dbclass->dblink->insert_id;
6134
6135 $query = "INSERT INTO ACTIVEGEO_CACHE SET id = $id, geoid = $fid, username='{$uname}' , fencename='{$fname}' , trackerid='{$result[$i]['trackerid']}' , sdate='{$result[$i]['sdate']}' , shr='{$result[$i]['shr']}' , ";
6136 $query .= "smin='{$result[$i]['smin']}' , edate='{$result[$i]['edate']}' , ehr='{$result[$i]['ehr']}' , emin='{$result[$i]['emin']}', operation='A', speedLimit = '{$result[$i]['speedLimit']}', actType = '{$result[$i]['actType']}', timezone = '{$result[$i]['timezone']}', weekDays = '{$result[$i]['weekDays']}', monthDays='{$result[$i]['monthDays']}'";
6137 $this->dbclass->execute_query ( $query );
6138 }
6139 }
6140 public function deactivateTrackerFence($record) {
6141 $fname = $this->dbclass->get_escape_string ( rawurldecode ( $record ['fencename'] ) );
6142 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6143
6144 $query = "DELETE FROM activeGeofences WHERE username='{$uname}' AND id='{$record['id']}'";
6145 $this->dbclass->execute_query ( $query );
6146
6147 $query = "INSERT INTO ACTIVEGEO_CACHE SET id = '{$record['id']}', geoid = '{$record['geoid']}', username='{$uname}' , fencename='{$fname}' , trackerid='{$record['trackerid']}' , sdate='{$record['sdate']}' , shr='{$record['shr']}' , ";
6148 $query .= "smin='{$record['smin']}' , edate='{$record['edate']}' , ehr='{$record['ehr']}' , emin='{$record['emin']}', operation = 'D', speedLimit = 0, actType = '{$record['type']}', timezone = '{$_SESSION['timezone']}', weekDays = '{$record['weekDays']}', monthDays='{$record['monthDays']}'";
6149 $this->dbclass->execute_query ( $query );
6150 }
6151 public function activateGeofence($record) {
6152 $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
6153 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6154
6155 $query = "INSERT INTO activeGeofences SET id = 0, geoid={$record['geoid']}, username='{$uname}' , fencename='{$fname}' , trackerid='{$record['trackerid']}' , sdate='{$record['sdate']}' , shr='{$record['shr']}' , ";
6156 $query .= "smin='{$record['smin']}' , edate='{$record['edate']}' , ehr='{$record['ehr']}' , emin='{$record['emin']}', speedLimit = '{$record['speedLimit']}', actType = '{$record['type']}', timezone = '{$_SESSION['timezone']}', weekDays = '{$record['weekDays']}', monthDays='{$record['monthDays']}'";
6157 $result = $this->dbclass->execute_query ( $query );
6158
6159 if ($result == false) {
6160 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
6161 $this->writeDebugLog ( $this->dbclas->dblink->error );
6162 }
6163
6164 //$fid = mysql_insert_id ( $this->dblink );
6165 $fid = $this->dbclass->dblink->insert_id;
6166
6167 $query = "INSERT INTO ACTIVEGEO_CACHE SET id = $fid, geoid={$record['geoid']}, username='{$uname}' , fencename='{$fname}' , trackerid='{$record['trackerid']}' , sdate='{$record['sdate']}' , shr='{$record['shr']}' , ";
6168 $query .= "smin='{$record['smin']}' , edate='{$record['edate']}' , ehr='{$record['ehr']}' , emin='{$record['emin']}', operation = 'A', speedLimit = '{$record['speedLimit']}',actType = '{$record['type']}', timezone = '{$_SESSION['timezone']}', weekDays = '{$record['weekDays']}', monthDays='{$record['monthDays']}'";
6169 $result = $this->dbclass->execute_query ( $query );
6170 if ($result == false) {
6171 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
6172 $this->writeDebugLog ( $this->dbclas->dblink->error );
6173 }
6174 }
6175 public function saveGeofence($record) {
6176 $fname = $this->dbclass->get_escape_string ( $record->fencename );
6177 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6178
6179 $query = "INSERT INTO geofences SET username=\"$username\", fencename=\"$fname\", radius=" . $record->radius . ", type = " . $record->type . ",color = '" . $record->color . "'";
6180 $result = $this->dbclass->execute_query ( $query );
6181 //$geoid = mysql_insert_id ( $this->dblink );
6182 $geoid = $this->dbclass->dblink->insert_id;
6183
6184 $count = count ( $record->locations );
6185
6186 for($i = 0; $i < $count; $i ++) {
6187 $query = "INSERT INTO geofencesPoints SET id=\"$geoid\", latitude=" . $record->locations [$i]->latitude . ", longitude = " . $record->locations [$i]->longitude;
6188 $result = $this->dbclass->execute_query ( $query );
6189 }
6190
6191 if ($record->type == 2) {
6192 $count = count ( $record->checkpoints );
6193
6194 for($i = 0; $i < $count; $i ++) {
6195 $cname = $this->dbclass->get_escape_string ( $record->checkpoints [$i]->chkname );
6196 $poiid = '';
6197
6198 if ($record->checkpoints [$i]->addpoi == 1) {
6199 $query = "INSERT INTO POI SET username='$username', latitude = " . $record->checkpoints [$i]->latitude;
6200 $query .= ", longitude = " . $record->checkpoints [$i]->longitude . ", color='" . $record->color . "', radius = " . $record->checkpoints [$i]->chkradius;
6201 $query .= ", shortName = '" . $cname . "', metric='KILOMETERS',icontype='de', keywords = '$username, $cname'";
6202 $result = $this->dbclass->execute_query ( $query );
6203
6204 //$poiid = ",POIID = " . mysql_insert_id ( $this->dblink );
6205 $poiid = ",POIID = " . $this->dbclass->dblink->insert_id;
6206 }
6207
6208 $query = "INSERT INTO checkpoints SET id=\"$geoid\", name = '" . $cname . "', latitude=" . $record->checkpoints [$i]->latitude . ", longitude = " . $record->checkpoints [$i]->longitude . ", radius = " . $record->checkpoints [$i]->chkradius . $poiid;
6209 $result = $this->dbclass->execute_query ( $query );
6210 }
6211 }
6212
6213 return $geoid;
6214 }
6215 public function loadGeofence($fid) {
6216 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6217
6218 $query = "SELECT * FROM geofences WHERE username=\"$username\" AND id=\"$fid\"";
6219 $result = $this->dbclass->execute_query ( $query );
6220 $basic_settings = $this->dbclass->get_result_complete ();
6221
6222 if ($basic_settings == false)
6223 return ERROR;
6224
6225 $query = "SELECT latitude,longitude FROM geofencesPoints WHERE id=\"$fid\"";
6226 $result = $this->dbclass->execute_query ( $query );
6227 $adv_settings = $this->dbclass->get_result_complete ();
6228
6229 $basic_settings = $basic_settings [0];
6230 $basic_settings ['locations'] = $adv_settings;
6231
6232 if ($basic_settings ['type'] == 2) {
6233 $query = "SELECT * FROM checkpoints WHERE id=\"$fid\"";
6234 $result = $this->dbclass->execute_query ( $query );
6235 $checkpoints = $this->dbclass->get_result_complete ();
6236
6237 $basic_settings ['checkpoints'] = $checkpoints;
6238 }
6239
6240 return $basic_settings;
6241 }
6242 public function getGeofenceList($fields_list = "*") {
6243 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6244 $QUERY = "SELECT {$fields_list} FROM geofences WHERE username=\"$username\" AND (type = 0 OR type = 1)";
6245 $this->dbclass->execute_query ( $QUERY );
6246 $ans = $this->dbclass->get_result_complete ();
6247 if ($ans == false)
6248 return ERROR;
6249 return $ans;
6250 }
6251 public function getPathList($fields_list = "*") {
6252 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6253 $QUERY = "SELECT {$fields_list} FROM geofences WHERE username=\"$username\" AND type = 2";
6254 $this->dbclass->execute_query ( $QUERY );
6255 return $this->dbclass->get_result_complete ();
6256 }
6257 public function getCompleteActivePaths() {
6258 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6259
6260 $query = "SELECT * FROM ACTIVEPATH WHERE username=\"$uname\"";
6261 $result = $this->dbclass->execute_query ( $query );
6262 return $this->dbclass->get_result_complete ();
6263 }
6264 public function getActivePaths($fencename) {
6265 $fname = $this->dbclass->get_escape_string ( $fencename );
6266 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6267
6268 $query = "SELECT * FROM ACTIVEPATH WHERE username=\"$uname\" AND fencename=\"$fname\"";
6269 $result = $this->dbclass->execute_query ( $query );
6270 return $this->dbclass->get_result_complete ();
6271 }
6272 public function setActivePaths($result, $fencename) {
6273 $fname = $this->dbclass->get_escape_string ( $fencename );
6274 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6275
6276 if ($result == false)
6277 return;
6278 $fcount = count ( $result );
6279
6280 for($i = 0; $i < $fcount; $i ++) {
6281
6282 $query = "INSERT INTO ACTIVEPATH SET username='{$uname}' , fencename='{$fname}' , trackerid='{$result[$i]['trackerid']}' , sdate='{$result[$i]['sdate']}' , ";
6283 $query .= "edate='{$result[$i]['edate']}' , alertOffRoute='{$result[$i]['alertOffRoute']}' , daysGap='{$result[$i]['daysGap']}', speedLimit='{$result[$i]['speedLimit']}', stime='{$result[$i]['stime']}', etime='{$result[$i]['etime']}'";
6284 $this->dbclass->execute_query ( $query );
6285 }
6286 }
6287 public function activatePath($record) {
6288 $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
6289 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6290
6291 $query = "INSERT INTO ACTIVEPATH SET username='{$uname}' , fencename='{$fname}' , trackerid='{$record['trackerid']}' , sdate='{$record['sdate']}' ,";
6292 $query .= "edate='{$record['edate']}' , alertOffRoute='{$record['alertOffRoute']}' , daysGap='{$record['daysGap']}', speedLimit='{$record['speedLimit']}', stime='{$record['stime']}', etime='{$record['etime']}'";
6293 $this->dbclass->execute_query ( $query );
6294 }
6295 private function deactivatePath($uname, $fname) {
6296 $QUERY = "SELECT * FROM ACTIVEPATH WHERE username=\"$uname\" AND fencename =\"$fname\"";
6297 $this->dbclass->execute_query ( $QUERY );
6298 $result = $this->dbclass->get_result_complete ();
6299 if ($result == false)
6300 return;
6301 $fcount = count ( $result );
6302
6303 for($i = 0; $i < $fcount; $i ++) {
6304 $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' and fencename='{$fname}' and trackerid='{$result[$i]['trackerid']}' and sdate='{$result[$i]['sdate']}' and ";
6305 $query .= " edate='{$result[$i]['edate']}' and alertOffRoute='{$result[$i]['alertOffRoute']}' and daysGap='{$result[$i]['daysGap']}' and speedLimit='{$result[$i]['speedLimit']}' and stime='{$result[$i]['stime']}' and etime='{$result[$i]['etime']}'";
6306 $this->dbclass->execute_query ( $query );
6307 }
6308 }
6309 public function deactivateTrackerPath($record) {
6310 $fname = $this->dbclass->get_escape_string ( rawurldecode ( $record ['fencename'] ) );
6311 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6312
6313 $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' AND fencename='{$fname}' AND trackerid='{$record['trackerid']}' AND sdate='{$record['sdate']}' AND ";
6314 $query .= " edate='{$record['edate']}' AND alertOffRoute='{$record['alertOffRoute']}' AND daysGap='{$record['daysGap']}' AND speedLimit='{$record['speedLimit']}' AND stime='{$record['stime']}' AND etime='{$record['etime']}'";
6315 $this->dbclass->execute_query ( $query );
6316 }
6317 public function loadPath($fname) {
6318 $n = new emptyClass ();
6319 $n->fencename = $fname;
6320
6321 $fname = $this->dbclass->get_escape_string ( $fname );
6322 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6323
6324 $query = "SELECT radius FROM PATHS WHERE username=\"$username\" AND fencename=\"$fname\" LIMIT 0,1";
6325 $result = $this->dbclass->execute_query ( $query );
6326 $radius = $this->dbclass->get_result_complete ();
6327 if ($radius == false)
6328 return false;
6329
6330 $n->radius = $radius [0] ['radius'];
6331
6332 $query = "SELECT latitude,longitude FROM PATHS WHERE username=\"$username\" AND fencename=\"$fname\"";
6333 $result = $this->dbclass->execute_query ( $query );
6334 $locations = $this->dbclass->get_result_complete ();
6335
6336 $n->locations = $locations;
6337
6338 return $n;
6339 }
6340 public function deletePath($fencename) {
6341 $fname = $this->dbclass->get_escape_string ( $fencename );
6342 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6343
6344 $this->deactivatePath ( $uname, $fname );
6345
6346 $query = "DELETE FROM PATHS WHERE username=\"" . $uname . "\" and fencename = \"" . $fname . "\"";
6347 $this->dbclass->execute_query ( $query );
6348 }
6349 public function savePath($record) {
6350 $fname = $this->dbclass->get_escape_string ( $record->fencename );
6351 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6352
6353 $query = "SELECT COUNT(*) FROM PATHS WHERE username=\"$username\" AND fencename=\"$fname\"";
6354 $result = $this->dbclass->execute_query ( $query );
6355 $answer = $this->dbclass->get_result_complete ();
6356 if ($answer [0] ['COUNT(*)'] > 0)
6357 return EXISTS;
6358
6359 $count = count ( $record->locations );
6360
6361 for($i = 0; $i < $count; $i ++) {
6362 $query = "INSERT INTO PATHS SET username=\"$username\", fencename=\"$fname\", latitude=" . $record->locations [$i]->lat . ", longitude = " . $record->locations [$i]->lng . ",radius = " . $record->radius;
6363 $result = $this->dbclass->execute_query ( $query );
6364 }
6365
6366 return SUCCESS;
6367 }
6368 //public function getActiveFenceDetails ($fid = false, $fenceName, $trackerid) {
6369 public function getActiveFenceDetails ($fenceName, $trackerid) {
6370 $fenceName = $this->dbclass->get_escape_string($fenceName);
6371 $query = "SELECT * FROM activeGeofences WHERE fencename = '{$fenceName}' AND trackerid = '{$trackerid}'";
6372 $result = $this->dbclass->execute_query($query);
6373 if ($result)
6374 return $this->dbclass->get_result_complete();
6375 return $result;
6376 }
6377 public function getTrackerName($tid) {
6378 $query = "SELECT name FROM trackers WHERE trackerid=\"$tid\"";
6379 $this->dbclass->execute_query ( $query );
6380 $answer = $this->dbclass->get_result_complete ();
6381 return $answer;
6382 }
6383 public function getFleetTrackersFuelTanks() {
6384 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6385 $QUERY = "SELECT trackerid, tankCapacity FROM trackersMap inner join trackersDetails using (trackerid) WHERE username=\"{$username}\"";
6386 $this->dbclass->execute_query ( $QUERY );
6387 return $this->dbclass->get_result_complete ();
6388 }
6389
6390 public function getEJMSTrackersList($username, $fields_list = "*") {
6391 $username = $this->dbclass->get_escape_string($username);
6392 $QUERY = "SELECT trackerid, name, licensePlate FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) WHERE username=\"{$username}\"";
6393 $this->dbclass->execute_query ( $QUERY );
6394 $trackers = $this->dbclass->get_result_complete ();
6395 $trackers = $this->filterExpiredTrackers ( $trackers );
6396
6397 if (count ( $trackers ) == 0)
6398 return false;
6399 if ($fields_list == "*")
6400 return $trackers;
6401
6402 $sp = explode ( ",", $fields_list );
6403 $newlist = array ();
6404
6405 foreach ( $trackers as $t ) {
6406 $n = array ();
6407 foreach ( $sp as $v ) {
6408 $n [$v] = $t [$v];
6409 }
6410 array_push ( $newlist, $n );
6411 }
6412
6413 return $newlist;
6414 }
6415
6416 public function getEJMSDriversList($username) {
6417 $username = $this->dbclass->get_escape_string($username);
6418 $QUERY = "SELECT tagID, name, licno FROM drivers WHERE username=\"{$username}\"";
6419 $this->dbclass->execute_query ( $QUERY );
6420 return $this->dbclass->get_result_complete ();
6421 }
6422
6423 private function getTrackerGroups ($tid) {
6424 $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$tid}'";
6425 $this->dbclass->execute_query($query);
6426 $groups = $this->dbclass->get_result_complete();
6427
6428 if ($groups != false) {
6429 $gid = array_map(function ($a) {
6430 return $a['groupName'];
6431 }, $groups);
6432 return implode(',', $gid);
6433 }
6434
6435 return false;
6436 }
6437
6438 public function getTrackersList($fields_list = "*") {
6439 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6440 if ($_SESSION ['accounttype'] == USERTYPE_ADMINISTRATOR) {
6441 //$QUERY = "SELECT {$fields_list} FROM trackers inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid)";
6442 $QUERY = "SELECT {$fields_list} FROM adminTrackersMap INNER JOIN trackers USING(trackerid) INNER JOIN trackersExInfo USING (trackerid) LEFT JOIN trackersDetails USING (trackerid) LEFT JOIN trackersFeatures USING (trackerid) WHERE username = '$username'";
6443 $this->dbclass->execute_query ( $QUERY );
6444 return $this->dbclass->get_result_complete ();
6445 } else {
6446 $QUERY = "SELECT {$fields_list} FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
6447 $this->dbclass->execute_query ( $QUERY );
6448 $trackers = $this->dbclass->get_result_complete ();
6449 $trackers = $this->filterExpiredTrackers ( $trackers );
6450 if (count ( $trackers ) == 0)
6451 return false;
6452
6453 if ($fields_list == "*")
6454 return $trackers;
6455
6456 $sp = explode ( ",", $fields_list );
6457 $newlist = array ();
6458
6459 foreach ( $trackers as $t ) {
6460 $groups = $this->getTrackerGroups($t['trackerid']);
6461 $n = array ();
6462 foreach ( $sp as $v ) {
6463 $n [$v] = $t [$v];
6464 }
6465 if ($groups != false)
6466 $n ['groups'] = $groups;
6467 array_push ( $newlist, $n );
6468 }
6469
6470 return $newlist;
6471 }
6472 }
6473 public function driverTrackersList($did) {
6474 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6475
6476 $QUERY = "SELECT trackerid,name FROM driversMap inner join trackers using (trackerid) WHERE tagID=\"$did\"";
6477 $this->dbclass->execute_query ( $QUERY );
6478 return $this->dbclass->get_result_complete ();
6479 }
6480 public function getFutureSchedulesList() {
6481 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6482 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
6483 $QUERY = "SELECT * FROM schedules WHERE username=\"$username\" AND ((sdate = \"{$fdate->UTCDateString}\" AND stime > \"{$fdate->UTCTime}\") OR (sdate > \"{$fdate->UTCDateString}\"))";
6484 $this->dbclass->execute_query ( $QUERY );
6485 return $this->dbclass->get_result_complete ();
6486 }
6487
6488 public function getPastSchedulesList() {
6489 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6490 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
6491 $QUERY = "SELECT * FROM schedules WHERE username=\"$username\" AND ((sdate = \"{$fdate->UTCDateString}\" AND stime <= \"{$fdate->UTCTime}\") OR (sdate < \"{$fdate->UTCDateString}\"))";
6492 $this->dbclass->execute_query ( $QUERY );
6493 return $this->dbclass->get_result_complete ();
6494 }
6495
6496 private function getScheduleForTracker($tid, $sdate, $stime, $edate, $etime) {
6497 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6498 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
6499
6500 $QUERY = "SELECT sdate,stime,edate,etime FROM schedules WHERE username=\"$username\" AND trackerid=\"$tid\" AND ((sdate = \"{$sdate}\" AND stime > \"{$fdate->UTCTime}\") OR (sdate > \"{$fdate->UTCDateString}\"))";
6501 $this->dbclass->execute_query ( $QUERY );
6502 $answer = $this->dbclass->get_result_complete ();
6503 if ($answer == false)
6504 return false;
6505 $c = count ( $answer );
6506
6507 $fdate->setUTCDate ( $sdate, $stime );
6508 $des_start = $fdate->dateTime->getTimestamp ();
6509
6510 $fdate->setUTCDate ( $edate, $etime );
6511 $des_end = $fdate->dateTime->getTimestamp ();
6512
6513 $busy = false;
6514
6515 for($i = 0; $i < $c; $i ++) {
6516 $fdate->setUTCDate ( $answer [$i] ['sdate'], $answer [$i] ['stime'] );
6517 $sch_start = $fdate->dateTime->getTimestamp ();
6518 $fdate->setUTCDate ( $answer [$i] ['edate'], $answer [$i] ['etime'] );
6519 $sch_end = $fdate->dateTime->getTimestamp ();
6520
6521 if ($des_start >= $sch_start && $des_start <= $sch_end)
6522 $busy = true;
6523 else if ($des_end >= $sch_start && $des_end <= $sch_end)
6524 $busy = true;
6525 }
6526
6527 return $busy;
6528 }
6529 public function SCH_GetTrackers($sdate, $stime, $edate, $etime) {
6530 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6531 $QUERY = "SELECT trackerid,name,color,vtype,trackerExpiry FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using(trackerid) inner join trackersDetails using (trackerid) WHERE username=\"$username\"";
6532 $this->dbclass->execute_query ( $QUERY );
6533 $answer = $this->dbclass->get_result_complete ();
6534 $answer = $this->filterExpiredTrackers ( $answer );
6535
6536 $c = count ( $answer );
6537 $ri = 0;
6538 $response = array ();
6539
6540 for($i = 0; $i < $c; $i ++) {
6541 $busy = $this->getScheduleForTracker ( $answer [$i] ['trackerid'], $sdate, $stime, $edate, $etime );
6542 $groups = $this->getTrackerGroups($answer [$i] ['trackerid']);
6543 if ($groups != false)
6544 $answer [$i] ['groups'] = $groups;
6545 if ($busy != true)
6546 array_push ( $response, $answer [$i] );
6547 }
6548
6549 return $response;
6550 }
6551 private function getScheduleForDriver($tagid, $sdate, $stime, $edate, $etime) {
6552 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6553 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
6554
6555 $QUERY = "SELECT sdate,stime,edate,etime FROM schedules WHERE username=\"$username\" AND dtag=\"$tagid\" AND ((sdate = \"{$sdate}\" AND stime > \"{$fdate->UTCTime}\") OR (sdate > \"{$fdate->UTCDateString}\"))";
6556 $this->dbclass->execute_query ( $QUERY );
6557 $answer = $this->dbclass->get_result_complete ();
6558
6559 if ($answer == false)
6560 return false;
6561
6562 $c = count ( $answer );
6563
6564 $fdate->setUTCDate ( $sdate, $stime );
6565 $des_start = $fdate->dateTime->getTimestamp ();
6566
6567 $fdate->setUTCDate ( $edate, $etime );
6568 $des_end = $fdate->dateTime->getTimestamp ();
6569
6570 $busy = false;
6571
6572 for($i = 0; $i < $c; $i ++) {
6573 $fdate->setUTCDate ( $answer [$i] ['sdate'], $answer [$i] ['stime'] );
6574 $sch_start = $fdate->dateTime->getTimestamp ();
6575 $fdate->setUTCDate ( $answer [$i] ['edate'], $answer [$i] ['etime'] );
6576 $sch_end = $fdate->dateTime->getTimestamp ();
6577 if ($des_start >= $sch_start && $des_start <= $sch_end)
6578 $busy = true;
6579 else if ($des_end >= $sch_start && $des_end <= $sch_end)
6580 $busy = true;
6581 }
6582
6583 return $busy;
6584 }
6585 public function SCH_GetDrivers($sdate, $stime, $edate, $etime) {
6586 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6587 $QUERY = "SELECT name,tagID FROM drivers WHERE username=\"$username\"";
6588 $this->dbclass->execute_query ( $QUERY );
6589 $answer = $this->dbclass->get_result_complete ();
6590
6591 $c = count ( $answer );
6592 $ri = 0;
6593 $response = array ();
6594
6595 for($i = 0; $i < $c; $i ++) {
6596 $busy = $this->getScheduleForDriver ( $answer [$i] ['tagID'], $sdate, $stime, $edate, $etime );
6597 if ($busy != true)
6598 array_push ( $response, $answer [$i] );
6599 }
6600
6601 return $response;
6602 }
6603 public function SCH_RemoveSchedule($id) {
6604 $query = "DELETE FROM schedules WHERE id=\"$id\"";
6605 $result = $this->dbclass->execute_query ( $query );
6606
6607 if ($result != true) {
6608 return ERROR;
6609 }
6610
6611 return SUCCESS;
6612 }
6613 public function SCH_SaveSchedule() {
6614 $_POST ['username'] = $_SESSION ['username'];
6615 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
6616
6617 $stime = $_POST ['shr'] * 3600 + $_POST ['smin'] * 60;
6618 $fdate->setDate ( $_POST ['sdate'], $stime );
6619 $_POST ['sdate'] = $fdate->UTCDateString;
6620 $_POST ['stime'] = $fdate->UTCTime;
6621 $stime_str = $fdate->getFormattedString ();
6622
6623 $etime = $_POST ['ehr'] * 3600 + $_POST ['emin'] * 60;
6624 $fdate->setDate ( $_POST ['edate'], $etime );
6625 $_POST ['edate'] = $fdate->UTCDateString;
6626 $_POST ['etime'] = $fdate->UTCTime;
6627 $etime_str = $fdate->getFormattedString ();
6628
6629 unset ( $_POST ['shr'] );
6630 unset ( $_POST ['smin'] );
6631 unset ( $_POST ['ehr'] );
6632 unset ( $_POST ['emin'] );
6633
6634 $query = "REPLACE INTO schedules SET ";
6635 $query .= basicTransactions::prepareMySQL_POSTRequest ();
6636 $result = $this->dbclass->execute_query ( $query );
6637
6638 if ($result != true) {
6639 $reply ['id'] = "-1";
6640 $reply ['ans'] = ERROR;
6641 return $reply;
6642 }
6643 if ($_POST ['id'] == 0 || $_POST ['id'] == NULL)
6644 $_POST ['id'] = $this->dbclass->dblink->insert_id;
6645 $reply ['id'] = $_POST ['id'];
6646 $reply ['stime'] = $stime_str;
6647 $reply ['etime'] = $etime_str;
6648 $reply ['ans'] = SUCCESS;
6649
6650 return $reply;
6651 }
6652
6653 public function saveAdminSettings () {
6654 $username = $_SESSION['username'];
6655
6656 $QUERY = "SELECT * FROM adminPreferences WHERE username = \"{$username}\"";
6657 $this->dbclass->execute_query ( $QUERY );
6658 $answer = $this->dbclass->get_result_complete ();
6659
6660 if ($answer == false) {
6661 $_POST['username'] = $_SESSION['username'];
6662 $query = "REPLACE INTO adminPreferences SET ";
6663 $query .= basicTransactions::prepareMySQL_POSTRequest ();
6664 $result = $this->dbclass->execute_query ( $query );
6665 } else {
6666 $query = "UPDATE adminPreferences SET ";
6667 $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE username = \"{$username}\"";
6668 $result = $this->dbclass->execute_query ( $query );
6669 }
6670
6671 if ($result != true) {
6672 return ERROR;
6673 }
6674 return SUCCESS;
6675 }
6676
6677 public function saveUserSettings() {
6678 if ($_SESSION['accounttype'] == USERTYPE_FLEET)
6679 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6680 elseif ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
6681 $username = $this->dbclass->get_escape_string ( $_POST ['username'] );
6682
6683 $QUERY = "SELECT * FROM userPreferences WHERE username = \"{$username}\"";
6684 $this->dbclass->execute_query ( $QUERY );
6685 $answer = $this->dbclass->get_result_complete ();
6686
6687 if ($answer == false) {
6688 //$_POST ['username'] = $_SESSION ['username'];
6689 $_POST ['username'] = $username;
6690 $query = "REPLACE INTO userPreferences SET ";
6691 $query .= basicTransactions::prepareMySQL_POSTRequest ();
6692 $result = $this->dbclass->execute_query ( $query );
6693 } else {
6694 $query = "UPDATE userPreferences SET ";
6695 $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE username = \"{$username}\"";
6696 $result = $this->dbclass->execute_query ( $query );
6697 }
6698
6699 if ($result != true) {
6700 return ERROR;
6701 }
6702 return SUCCESS;
6703 }
6704
6705 public function saveAccountPassword($opass, $npass) {
6706 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6707 $QUERY = "SELECT * FROM Users WHERE username = \"{$username}\"";
6708 $this->dbclass->execute_query ( $QUERY );
6709 $answer = $this->dbclass->get_result_complete ();
6710
6711 if ($answer == false) {
6712 return ERROR;
6713 }
6714
6715 if ($answer [0] ['password'] == $opass) {
6716 $password = $this->dbclass->get_escape_string ( $npass );
6717 $QUERY = "UPDATE Users SET password = \"{$password}\" where username = \"{$username}\"";
6718 $this->dbclass->execute_query ( $QUERY );
6719 return SUCCESS;
6720 } else {
6721 return ERROR;
6722 }
6723 }
6724 public function resetMessageLimits($type, $tid) {
6725 if ($type == 'sms') {
6726 $QUERY = "UPDATE msgLimits SET cSMSValue = NULL where trackerid = \"{$tid}\"";
6727 $this->dbclass->execute_query ( $QUERY );
6728 } else if ($type == 'email') {
6729 $QUERY = "UPDATE msgLimits SET cEmailValue = NULL where trackerid = \"{$tid}\"";
6730 $this->dbclass->execute_query ( $QUERY );
6731 }
6732 }
6733 private function filterExpiredTrackers($list) {
6734 $gmmtime = time ();
6735 $nlist = array ();
6736 if ($list == false)
6737 return $nlist;
6738 foreach ( $list as $k => $v ) {
6739 if (isset ( $v ['trackerExpiry'] ) && $v ['trackerExpiry'] != NULL) {
6740 if (($gmmtime - $v ['trackerExpiry']) <= 0) {
6741 array_push ( $nlist, $v );
6742 }
6743 } else {
6744 array_push ( $nlist, $v );
6745 }
6746 }
6747 return $nlist;
6748 }
6749 public function getTrackersCredit() {
6750 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6751 $QUERY = "select * from trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join msgLimits using(trackerid) where username = \"{$username}\"";
6752 $this->dbclass->execute_query ( $QUERY );
6753 $answer = $this->dbclass->get_result_complete ();
6754 if ($answer == false)
6755 return false;
6756
6757 $answer = $this->filterExpiredTrackers ( $answer );
6758 if (count ( $answer ) == 0)
6759 return false;
6760
6761 $ups = $this->getUserPreferences ( $_SESSION ['username'] );
6762 $sps = $this->getSystemPreferences ();
6763 $tz = $sps [0] ['defaultTimezone'];
6764
6765 if ($ups != false && isset ( $ups [0] ['settings'] )) {
6766 $settings = json_decode ( $ups [0] ['settings'], true );
6767 if (isset ( $settings ['timezone'] ) && $settings ['timezone'] != null)
6768 $tz = $settings ['timezone'];
6769 }
6770
6771 $fdate = new FNSDateTime ( $tz );
6772 $myear = $fdate->dateTime->format ( "m-Y" ); // $dt->month . "-" . $dt->year;
6773
6774 foreach ( $answer as $k => $v ) {
6775 if ($v ['cDate'] != NULL && $v ['cDate'] != $fdate->DateString) {
6776 $answer [$k] ['consumedEmail'] = 0;
6777 $answer [$k] ['cEmailValue'] = $answer [$k] ['emailLimitValue'];
6778 } else {
6779 if ($answer [$k] ['sEmailValue'] === NULL)
6780 $answer [$k] ['sEmailValue'] = $answer [$k] ['emailLimitValue'];
6781 if ($answer [$k] ['cEmailValue'] === NULL)
6782 $answer [$k] ['cEmailValue'] = $answer [$k] ['sEmailValue'];
6783
6784 $answer [$k] ['consumedEmail'] = $answer [$k] ['sEmailValue'] - $answer [$k] ['cEmailValue'];
6785
6786 if ($answer [$k] ['sEmailValue'] != $answer [$k] ['emailLimitValue']) {
6787 $answer [$k] ['cEmailValue'] = $answer [$k] ['emailLimitValue'] - $answer [$k] ['consumedEmail'];
6788 }
6789 }
6790
6791 if ($v ['cMonthYear'] != NULL && $v ['cMonthYear'] != $myear) {
6792 $answer [$k] ['consumedSMS'] = 0;
6793 $answer [$k] ['cSMSValue'] = $answer [$k] ['smsLimitValue'];
6794 } else {
6795
6796 if ($answer [$k] ['sSMSValue'] === NULL)
6797 $answer [$k] ['sSMSValue'] = $answer [$k] ['smsLimitValue'];
6798 if ($answer [$k] ['cSMSValue'] === NULL)
6799 $answer [$k] ['cSMSValue'] = $answer [$k] ['sSMSValue'];
6800
6801 $answer [$k] ['consumedSMS'] = $answer [$k] ['sSMSValue'] - $answer [$k] ['cSMSValue'];
6802
6803 if ($answer [$k] ['sSMSValue'] != $answer [$k] ['smsLimitValue']) {
6804 $answer [$k] ['cSMSValue'] = $answer [$k] ['smsLimitValue'] - $answer [$k] ['consumedSMS'];
6805 }
6806 }
6807 }
6808
6809 return $answer;
6810 }
6811 public function ccare_printAccountsList() {
6812 $QUERY = "select username,company,mobile,email,website from Users where accounttype = \"" . USERTYPE_FLEET . "\"";
6813 $this->dbclass->execute_query ( $QUERY );
6814 $answer = $this->dbclass->get_result_complete ();
6815 return $answer;
6816 }
6817 public function report_removeSchedule($id) {
6818 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6819 $QUERY = "DELETE FROM reportSchedules WHERE id = \"$id\" and username='{$username}'";
6820 $this->dbclass->execute_query ( $QUERY );
6821 //if (mysql_errno ( $this->dbclass->dblink ) == 0)
6822 if ( $this->dbclass->dblink->errno == 0)
6823 return SUCCESS;
6824 return ERROR;
6825 }
6826 public function report_removeUserTrackerSchedule($uname, $tid) {
6827 $uname = $this->dbclass->get_escape_string ( $uname );
6828 $QUERY = "SELECT id,getParams FROM reportSchedules WHERE username = \"$uname\"";
6829 $this->dbclass->execute_query ( $QUERY );
6830 $ans = $this->dbclass->get_result_complete ();
6831 if ($ans == false)
6832 return;
6833
6834 foreach ( $ans as $v ) {
6835 $data = json_decode ( $v ['getParams'], true );
6836 $trackers = explode ( ",", $data ['trackers'] );
6837 $newlist = array ();
6838 $updated = false;
6839
6840 foreach ( $trackers as $t ) {
6841 if ($t != $tid)
6842 array_push ( $newlist, $t );
6843 else
6844 $updated = true;
6845 }
6846 if ($updated) {
6847 if (count ( $newlist ) > 0) {
6848 $data ['trackers'] = implode ( ",", $newlist );
6849 $json = $this->dbclass->get_escape_string ( json_encode ( $data ) );
6850
6851 $QUERY = "UPDATE reportSchedules SET getParams='$json' WHERE id=" . $v ['id'];
6852 $this->dbclass->execute_query ( $QUERY );
6853 } else {
6854 $QUERY = "DELETE FROM reportSchedules WHERE id=" . $v ['id'];
6855 $this->dbclass->execute_query ( $QUERY );
6856 }
6857 }
6858 }
6859
6860 //if (mysql_errno ( $this->dbclass->dblink ) == 0)
6861 if ( $this->dbclass->dblink->errno == 0)
6862 return SUCCESS;
6863 return ERROR;
6864 }
6865 public function report_getSchedulesList() {
6866 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6867 $QUERY = "select * from reportSchedules where username=\"{$username}\" order by id ";
6868 $this->dbclass->execute_query ( $QUERY );
6869 $answer = $this->dbclass->get_result_complete ();
6870
6871 if ($answer == false)
6872 return false;
6873 $newanswer = array ();
6874
6875 foreach ( $answer as $k => $a ) {
6876 $getParams = json_decode ( $a ['getParams'], true );
6877 $trackers = explode ( ",", $getParams ['trackers'] );
6878 $newlist = array ();
6879
6880 foreach ( $trackers as $t ) {
6881 $tinfo = $this->getTrackerInformation ( $t );
6882 if (isset ( $tinfo [0] ['trackerExpiry'] ) && $tinfo [0] ['trackerExpiry'] != 0 && (time () - $tinfo [0] ['trackerExpiry']) > 0)
6883 continue;
6884 array_push ( $newlist, $t );
6885 }
6886 if (count ( $newlist ) == 0)
6887 continue;
6888 $getParams ['trackers'] = implode ( ",", $newlist );
6889 $answer [$k] ['getParams'] = json_encode ( $getParams );
6890 array_push ( $newanswer, $answer [$k] );
6891 }
6892
6893 return $newanswer;
6894 }
6895 public function report_updateScheduleDate($id, $date, $time) {
6896 $QUERY = "UPDATE reportSchedules SET date=\"$date\", time=\"$time\" WHERE id=\"$id\"";
6897 $this->dbclass->execute_query ( $QUERY );
6898 }
6899 public function report_saveSchedule($sess, $get, $post, $sch) {
6900 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6901 $sess = $this->dbclass->get_escape_string ( $sess );
6902 $get = $this->dbclass->get_escape_string ( $get );
6903 $post = $this->dbclass->get_escape_string ( $post );
6904 $sch = $this->dbclass->get_escape_string ( $sch );
6905
6906 $QUERY = "INSERT INTO reportSchedules SET id = 0, username=\"{$username}\", sessParams=\"$sess\", getParams = \"$get\", postParams=\"$post\", schParams=\"$sch\"";
6907 $this->dbclass->execute_query ( $QUERY );
6908
6909 //return mysql_insert_id ( $this->dblink );
6910 return $this->dbclass->dblink->insert_id;
6911 }
6912 public function rp_getTrackersDetails($tid) {
6913 $QUERY = "SELECT * FROM trackers LEFT JOIN trackersDetails USING(trackerid) WHERE trackerid=\"$tid\"";
6914 $this->dbclass->execute_query ( $QUERY );
6915 return $this->dbclass->get_result_complete ();
6916 }
6917 public function rp_getTrackerFeatures($tid) {
6918 $QUERY = "SELECT * FROM trackersFeatures WHERE trackerid=\"$tid\"";
6919 $this->dbclass->execute_query ( $QUERY );
6920 return $this->dbclass->get_result_complete ();
6921 }
6922
6923 public function getEJMSTripRecord($username, $id) {
6924 $username = $this->dbclass->get_escape_string ( $username );
6925 $QUERY = "SELECT ejms.*, drivers.name as dname FROM ejms INNER JOIN drivers ON (drivers.tagID = ejms.driver) WHERE ejms.username=\"$username\" and ejms.id='$id'";
6926 $this->dbclass->execute_query ( $QUERY );
6927 return $this->dbclass->get_result_complete ();
6928 }
6929
6930 public function getEJMSList($username) {
6931 $result = array();
6932
6933 $username = $this->dbclass->get_escape_string ( $username );
6934
6935 $user = $this->getUserRecord($_SESSION['username']);
6936 $features = json_decode($user[0]['features'],true);
6937
6938 if (isset($features['driversMgmt']) == false || $features['driversMgmt'] == 0 ){
6939 $QUERY = "SELECT * FROM ejms WHERE username=\"$username\" and driver='". $_SESSION['driverdata']['tagID']."'";
6940 }else {
6941 $QUERY = "SELECT * FROM ejms WHERE username=\"$username\"";
6942 }
6943
6944 $this->dbclass->execute_query ( $QUERY );
6945 $result['ejms'] = $this->dbclass->get_result_complete ();
6946
6947 $QUERY = "SELECT name, tagID FROM drivers WHERE username=\"$username\"";
6948 $this->dbclass->execute_query ( $QUERY );
6949 $result['drivers'] = $this->dbclass->get_result_complete ();
6950
6951 $QUERY = "SELECT * FROM trackersMap INNER JOIN trackersDetails USING(trackerID) WHERE username=\"$username\"";
6952 $this->dbclass->execute_query ( $QUERY );
6953 $result['trackers'] = $this->dbclass->get_result_complete ();
6954
6955 $QUERY = "SELECT * FROM trackersMap INNER JOIN trackersDetails USING(trackerID) WHERE username=\"$username\"";
6956 $this->dbclass->execute_query ( $QUERY );
6957 $result['trackers'] = $this->dbclass->get_result_complete ();
6958
6959 $QUERY = "SELECT * FROM ejms_levelx_people WHERE username=\"$username\"";
6960 $this->dbclass->execute_query ( $QUERY );
6961 $result['levels'] = $this->dbclass->get_result_complete ();
6962
6963 return $result;
6964 }
6965 public function getEJMSRecord($username, $id) {
6966 $username = $this->dbclass->get_escape_string ( $username );
6967 $QUERY = "SELECT * FROM ejms WHERE username=\"$username\" and id='$id'";
6968 $this->dbclass->execute_query ( $QUERY );
6969 $result['ejms'] = $this->dbclass->get_result_complete ();
6970
6971 $QUERY = "SELECT * FROM ejms_levelx_people WHERE username=\"$username\"";
6972 $this->dbclass->execute_query ( $QUERY );
6973 $result['levels'] = $this->dbclass->get_result_complete ();
6974 return $result;
6975 }
6976
6977 public function getEJMSData($id){
6978 $id = $this->dbclass->get_escape_string ( $id );
6979 $QUERY = "SELECT * FROM ejms INNER JOIN trackers ON (vehicleno = trackerid) WHERE id='$id'";
6980 $this->dbclass->execute_query ( $QUERY );
6981 return $this->dbclass->get_result_complete ();
6982 }
6983
6984
6985 public function approveEJMS($level, $id, $key, $email) {
6986 $key = $this->dbclass->get_escape_string($key);
6987 $id = $this->dbclass->get_escape_string($id);
6988 $level = $this->dbclass->get_escape_string($level);
6989 $email = $this->dbclass->get_escape_string($email);
6990
6991 $levelkey = 'level'.$level.'_approved';
6992 $keyfield = 'level'.$level.'_approve_key';
6993 $emailfield = 'level'.$level.'_approver';
6994
6995 $QUERY = "UPDATE ejms SET $levelkey = 1, $emailfield='$email' WHERE id='$id' and $keyfield = '$key'";
6996 $this->dbclass->execute_query ( $QUERY );
6997 }
6998
6999 public function markEJMSTrip_approve_sent($username, $id) {
7000 $username = $this->dbclass->get_escape_string ( $username );
7001 $QUERY = "UPDATE ejms SET approval_sent = 1 WHERE username=\"$username\" and id='$id'";
7002 $this->dbclass->execute_query ( $QUERY );
7003 }
7004
7005
7006 public function saveEJMSTrip($username) {
7007 $username = $_POST['username'] = $this->dbclass->get_escape_string ( $username );
7008
7009 if ($_POST['id'] != 0) {
7010 $id = $this->dbclass->get_escape_string ( $_POST['id'] );
7011 $query = "UPDATE ejms SET ";
7012 $query .= basicTransactions::prepareMySQL_POSTRequest ()." WHERE username='$username' and id = '$id'";
7013 $result = $this->dbclass->execute_query ( $query );
7014 } else {
7015 $query = "INSERT INTO ejms SET ";
7016 $query .= basicTransactions::prepareMySQL_POSTRequest ();
7017 $result = $this->dbclass->execute_query ( $query );
7018 }
7019
7020 $code = array();
7021
7022 if ($result == false) {
7023 $code['code'] = ERROR;
7024 $code['id'] = 0;
7025 }else {
7026 $code['code'] = SUCCESS;
7027 //$code['id'] = mysql_insert_id($this->dblink);
7028 $code['id'] = $this->dbclass->dblink->insert_id;
7029 }
7030 return $code;
7031
7032 }
7033 public function removeEJMSTrip($username, $id) {
7034 $username = $this->dbclass->get_escape_string ( $username );
7035 $id = $this->dbclass->get_escape_string ( $id);
7036
7037 $query = "SELECT preins_id FROM ejms WHERE username='$username' and id='$id' ";
7038 $result = $this->dbclass->execute_query ( $query );
7039 $result = $this->dbclass->get_result_complete();
7040
7041 $preid = $result[0]['preins_id'];
7042 $query = "DELETE FROM ejmspreins WHERE username='$username' and id='$preid' ";
7043 $result = $this->dbclass->execute_query ( $query );
7044
7045 $query = "DELETE FROM ejms WHERE username='$username' and id='$id' ";
7046 $result = $this->dbclass->execute_query ( $query );
7047
7048
7049 }
7050
7051 public function EJMSLevelSave($username) {
7052 $username = $this->dbclass->get_escape_string ( $username );
7053 $level = $this->dbclass->get_escape_string ( $_POST ['level'] );
7054 $query = "SELECT COUNT(*) FROM ejms_levelx_people WHERE username='$username' and level = '$level'";
7055 $result = $this->dbclass->execute_query ( $query );
7056 $result = $this->dbclass->get_result_complete();
7057
7058 if ($result[0]['COUNT(*)'] > 0) {
7059 $query = "UPDATE ejms_levelx_people SET ";
7060 $query .= basicTransactions::prepareMySQL_POSTRequest ();
7061 $query .= " WHERE username = '$username' and level = '$level'";
7062 $result = $this->dbclass->execute_query ( $query );
7063 }else {
7064 $_POST['username'] = $_SESSION['username'];
7065 $query = "INSERT INTO ejms_levelx_people SET ";
7066 $query .= basicTransactions::prepareMySQL_POSTRequest ();
7067 $result = $this->dbclass->execute_query ( $query );
7068 }
7069 }
7070
7071
7072 /*******************************************************************/
7073 /*******************NEW ADMIN DATABASE QUERIES*********************/
7074 /*******************************************************************/
7075
7076
7077 public function get_admin_users($ccare = false) {
7078
7079 $adminUserName = $_SESSION['username'];
7080
7081 $usersList = array();
7082
7083 $query = "SELECT Users.* FROM logicalGroups_V5 AS lg INNER JOIN Users ON lg.adminUserName = \"$adminUserName\" and lg.username = Users.username order by Users.username";
7084 $result = $this->dbclass->execute_query ( $query );
7085 $usersList = $this->dbclass->get_result_complete ();
7086
7087 if ($usersList == "") {
7088 return false;
7089 }
7090
7091 return $usersList;
7092 }
7093
7094 /*
7095 public function get_fleetcare_users($ccare = false) {
7096
7097 $adminUserName = $_SESSION['username'];
7098
7099 $query = "SELECT Users.* FROM logicalGroups_V5 AS lg INNER JOIN Users ON lg.adminUserName = \"$adminUserName\" and lg.username = Users.username order by Users.username";
7100 $result = $this->dbclass->execute_query ( $query );
7101 $usersList = $this->dbclass->get_result_complete ();
7102
7103 if ($usersList == "") {
7104 return false;
7105 }
7106
7107 return $usersList;
7108 }*/
7109
7110 public function getTrackerIDInAdmin ($username = false) {
7111 if(!$username)
7112 $username = $_SESSION['username'];
7113
7114 $query = "SELECT trackerid FROM adminTrackersMap WHERE username = \"" . $username . "\"";
7115 $this->dbclass->execute_query ( $query );
7116 $answer = $this->dbclass->get_result_complete ();
7117 return $answer;
7118 }
7119
7120 public function getAllAdminTrackersList($username = false) {
7121 global $GMONGO;
7122
7123 //if ($username != false && $username != null)
7124 //$result = $this->getTrackerIDInAdmin($username);
7125 /*else
7126 $result = $this->getTrackerIDInAdmin();*/
7127
7128 if (!$username)
7129 $username = $_SESSION['username'];
7130
7131 $query = "SELECT t.trackerid, name, imei, simno, searchKeywords, trackerExpiry, t.type, chassisNo, licensePlate FROM adminTrackersMap AS atm INNER JOIN trackers AS t USING (trackerid) INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersDetails USING (trackerid) WHERE atm.username = \"$username\"";
7132 $this->dbclass->execute_query ( $query );
7133 $answer = $this->dbclass->get_result_complete ();
7134
7135 /*$trackersList = array();
7136
7137 if ($result != false) {
7138 foreach ($result as $v){
7139
7140 $query = "SELECT trackerid,name,imei,simno,searchKeywords,trackerExpiry,type FROM trackers inner join trackersExInfo using (trackerid) WHERE trackerid = ".$v['trackerid'];
7141 $this->dbclass->execute_query ( $query );
7142 $answer = $this->dbclass->get_result_complete ();
7143 if ($answer[0] !== NULL)
7144 array_push($trackersList, $answer[0]);
7145 }
7146 }
7147
7148 $answer = $trackersList;*/
7149
7150 if ($answer != false) {
7151
7152 foreach ( $answer as $k => $v ) {
7153 $answer [$k] ['trackerExpiry'] = TrackerExpiry::checkExpiry ( $v ['trackerExpiry'] );
7154 $addKeywords = null;
7155
7156 $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$v['trackerid']}\"";
7157 $this->dbclass->execute_query ( $query );
7158 $users = $this->dbclass->get_result_complete();
7159
7160 if ($users != false) {
7161 $arr = array_map(function($a){ return $a['username']; }, $users);
7162 $answer [$k] ['users'] = implode(",", $arr);
7163 }
7164
7165 //$lastRecord = $GMONGO->getLastAMRecord($v['trackerid']);
7166 //$fdate->setTimestamp($lastRecord[0]['timestamp']);
7167 //$answer [$k] ['datetime'] = $fdate->getFormattedString();
7168 }
7169 }
7170
7171 return $answer;
7172 }
7173
7174 public function countAdminTrackers () {
7175 $query = "SELECT COUNT(*) FROM adminTrackersMap WHERE username = \"" . $_SESSION['username'] . "\"";
7176 $this->dbclass->execute_query ($query);
7177 $answer = $this->dbclass->get_result_complete($query);
7178 return $answer [0] ['COUNT(*)'];
7179 }
7180
7181 public function countUserTrackers ($username = false) {
7182 if ($username == false)
7183 $username = $_SESSION['username'];
7184 $query = "SELECT COUNT(*) FROM trackersMap WHERE username = \"" . $username . "\"";
7185 $this->dbclass->execute_query ($query);
7186 $answer = $this->dbclass->get_result_complete($query);
7187 return $answer [0] ['COUNT(*)'];
7188 }
7189
7190 //RETURNS LICENSES ALLOTED TO ADMIN BY SUPER USER
7191 public function getAdminLicenses ($username = false) {
7192
7193 if (!$username)
7194 $username = $_SESSION['username'];
7195
7196 $query = "SELECT licenses FROM licenses WHERE username = \"" . $username . "\"";
7197 $this->dbclass->execute_query ($query);
7198 $answer = $this->dbclass->get_result_complete ($query);
7199 return $answer;
7200 }
7201
7202
7203 public function get_users_list_POI() {
7204 $uname = $_SESSION['username'];
7205 $fields = "Users.username, Users.name, Users.company";
7206 $wClause = "Users.accounttype = " . USERTYPE_FLEET;
7207 //$query = "SELECT Users.username, Users.name, Users.company FROM logicalGroups_V5 INNER JOIN Users ON logicalGroups_V5.adminUserName = \"admin\" AND logicalGroups_V5.username = Users.username WHERE Users.accounttype = ".USERTYPE_FLEET." ORDER BY Users.username";
7208 $query = "SELECT $fields FROM logicalGroups_V5 INNER JOIN Users ON logicalGroups_V5.adminUserName = \"$uname\" AND logicalGroups_V5.username = Users.username WHERE ".$wClause." ORDER BY Users.username";
7209 $result = $this->dbclass->execute_query ( $query );
7210 $answer = $this->dbclass->get_result_complete ();
7211
7212 return $answer;
7213 }
7214
7215 /*******************************************************************/
7216 /*******************************************************************/
7217
7218 /*******************************************************************/
7219 /*******************SUPER USER DATABASE QUERIES*********************/
7220 /*******************************************************************/
7221
7222 public function getLicsAlloted ( $username = false ) { //this function logically incorrect have to correct it
7223 if (!$username) {
7224 $query = "SELECT COUNT(trackerid) FROM trackers";
7225 $this->dbclass->execute_query ( $query );
7226 return $this->dbclass->get_result_complete();
7227 }
7228 }
7229
7230 public function getMongoDatabaseStats() {
7231 global $GMONGO;
7232 $query = "SELECT * FROM trackers";
7233 $this->dbclass->execute_query ( $query );
7234 $answer = $this->dbclass->get_result_complete ();
7235
7236 $returnAnswer = new databaseCounting ();
7237
7238 if ($answer == false) {
7239 $returnAnswer->eventRecords = 0;
7240 $returnAnswer->locationRecords = 0;
7241 return $returnAnswer;
7242 }
7243
7244 $tracker_count = count ( $answer );
7245
7246 for($i = 0; $i < $tracker_count; $i ++) {
7247 $cans = $GMONGO->countDocumentsInA($answer[$i]['trackerid']);
7248 if ($cans != false) {
7249 $returnAnswer->locationRecords += $cans;
7250 }
7251 $cans = $GMONGO->countDocumentsInE($answer[$i]['trackerid']);
7252 if ($cans != false) {
7253 $returnAnswer->eventRecords += $cans;
7254 }
7255 $cans = $GMONGO->countDocumentsInM($answer[$i]['trackerid']);
7256 if ($cans != false) {
7257 $returnAnswer->miscellaneousRecords += $cans;
7258 }
7259 }
7260 return $returnAnswer;
7261 } // function
7262
7263 public function get_admin_users_list($ccare = false) {
7264 $fields = "*";
7265 $wClause = "accounttype = " . USERTYPE_ADMINISTRATOR . " OR accounttype = " . USERTYPE_CUSTOMERCARE;
7266
7267 $query = "SELECT $fields FROM Users LEFT JOIN licenses USING(username) WHERE " . $wClause . " ORDER BY username";
7268 $result = $this->dbclass->execute_query ( $query );
7269 $answer = $this->dbclass->get_result_complete ();
7270 return $answer;
7271 }
7272
7273 public function getLicenseInformation($username, $year) {
7274 $username = $this->dbclass->get_escape_string($username);
7275 $year = $this->dbclass->get_escape_string($year);
7276
7277 /*if (isset($year) == false || $year == null) {
7278 //$query = "SELECT SUM(licenses) as lics, MONTHNAME(date) as month, YEAR(date) as year FROM licenseInfo Where username='$username' AND YEAR(date) = YEAR(NOW()) GROUP BY MONTHNAME(date), YEAR(date) ORDER BY MONTH(date)"; //for current year
7279 $query = "SELECT SUM(licenses) as lics, MONTHNAME(date) as month, YEAR(date) as year FROM licenseInfo Where username='$username' GROUP BY MONTHNAME(date), YEAR(date) ORDER BY MONTH(date)"; //for all year
7280 }else {
7281 $query = "SELECT SUM(licenses) as lics, MONTHNAME(date) as month, YEAR(date) as year FROM licenseInfo Where username='$username' AND YEAR(date) = '$year' GROUP BY MONTHNAME(date), YEAR(date) ORDER BY MONTH(date)";
7282 }*/
7283
7284 $query = "SELECT licenseID, tCount, issueDate, creationDate, rate, comments, periodicity, tax, surcharge FROM licenseInfo AS li INNER JOIN paymentRecords AS pr ON li.username = '$username' AND li.licenseID = pr.recordID AND pr.typeId = 1 ORDER BY issueDate";
7285
7286 $this->dbclass->execute_query($query);
7287 $result = $this->dbclass->get_result_complete();
7288 return $result;
7289 }
7290
7291 public function getIssuedLicenses () {
7292 $query = "SELECT SUM(licenses) FROM licenses";
7293 $this->dbclass->execute_query($query);
7294 $result = $this->dbclass->get_result_complete();
7295 return $result;
7296 }
7297
7298 public function escapePostData () {
7299 foreach ($_POST as $x => $y) {
7300 $_POST [$x] = $this->dbclass->get_escape_string($y);
7301 }
7302 }
7303
7304 public function getLicenses ($licenseID) {
7305 $query = "SELECT licenses FROM licenseInfo WHERE licenseID = $licenseID";
7306 $this->dbclass->execute_query($query);
7307 $result = $this->dbclass->get_result_complete();
7308 return $result [0] ['licenses'];
7309 }
7310
7311 public function addLicenses () {
7312 $_POST['typeId'] = 1;
7313
7314 $data = $this->insertPaymentRecord(true);
7315
7316 $query = "INSERT INTO licenseInfo SET username = '".$data['username']."', licenseID = ".$data['recordID'].", licenses = ".$data['tCount'];
7317 $this->dbclass->execute_query($query);
7318
7319 $query = "INSERT INTO licenses SET username = '".$data['username']."', licenses = '".$data['tCount']."' ON DUPLICATE KEY UPDATE licenses = licenses + ".$data['tCount'];
7320 $this->dbclass->execute_query($query);
7321
7322 $result ['licenseID'] = $data ['recordID'];
7323 $result ['creationDate'] = $data ['creationDate'];
7324 return $result;
7325 }
7326
7327 //public function modifyLicenses ($iDate) {
7328 public function modifyLicenses () {
7329
7330 $_POST['typeId'] = 1;
7331 $_POST['recordID'] = $_POST ['licenseID'];
7332 unset($_POST ['licenseID']);
7333
7334 $amount = $this->updatePaymentRecord(true);
7335
7336 $username = $_POST['username'];
7337 //$licenseID = $_POST['licenseID'];
7338 $licenseID = $_POST['recordID'];
7339 $licenses = $_POST['tCount'];
7340 $issueDate = $_POST['issueDate'];
7341 $rate = $_POST['rate'];
7342 $comments = $_POST['comments'];
7343 $periodicity = $_POST['periodicity'];
7344
7345
7346 $cul = $this->getLicenses ($licenseID);
7347
7348 $query = "UPDATE licenseInfo SET licenses = $licenses WHERE username = '$username' AND licenseID = $licenseID";
7349 $this->dbclass->execute_query($query);
7350
7351 if ($_POST['periodicity'] == 0) {
7352 $query = "DELETE FROM paymentHistory WHERE typeId = 1 AND recordID = $licenseID AND isPaid = 0";
7353 $this->dbclass->execute_query($query);
7354 } else {
7355 $query = "SELECT * FROM paymentHistory WHERE typeId = 1 AND recordID = $licenseID AND isPaid = 0";
7356 $this->dbclass->execute_query($query);
7357 $result = $this->dbclass->get_result_complete();
7358 if (!$result) {
7359 $query = "INSERT INTO paymentHistory SET typeId = 1, recordID = $licenseID, date = '$issueDate', amount = $amount, isPaid = 0";
7360 $this->dbclass->execute_query($query);
7361 }
7362 }
7363
7364 $licenses -= $cul;
7365 $query = "UPDATE licenses SET licenses = licenses + $licenses WHERE username = '$username'";
7366 $this->dbclass->execute_query($query);
7367 //echo "\r\n".$query;
7368
7369 //$query = "SELECT licenseID, creationDate FROM licenseInfo WHERE licenseID = ".$licenseID;
7370 $query = "SELECT recordID as licenseID, creationDate FROM paymentRecords WHERE recordID = $licenseID AND typeId = 1";
7371 $this->dbclass->execute_query($query);
7372 $result = $this->dbclass->get_result_complete();
7373
7374 return $result[0];
7375 }
7376
7377 public function removeLicenses ($username, $licenseID) {
7378 $username = $this->dbclass->get_escape_string($username);
7379
7380 $licenses = $this->getLicenses($licenseID);
7381
7382 $query = "DELETE FROM licenseInfo WHERE username = '$username' AND licenseID = $licenseID";
7383 $this->dbclass->execute_query($query);
7384
7385 $query = "DELETE FROM paymentRecords WHERE username = '$username' AND recordID = $licenseID AND typeId = 1";
7386 $this->dbclass->execute_query($query);
7387
7388 $query = "UPDATE licenses SET licenses = licenses - $licenses WHERE username = '$username'";
7389 $this->dbclass->execute_query($query);
7390
7391 $query = "DELETE FROM paymentHistory WHERE recordID = $licenseID, typeId = 1";
7392 $this->dbclass->execute_query($query);
7393
7394 return;
7395 }
7396
7397 public function getUserLicenses ($username) {
7398 $username = $this->dbclass->get_escape_string($username);
7399 $query = "SELECT licenses FROM licenses WHERE username = '$username'";
7400 $this->dbclass->execute_query($query);
7401 $result = $this->dbclass->get_result_complete();
7402
7403 return $result [0] ['licenses'];
7404 }
7405
7406 //RETURNS LIST OF USER TYPE ADMINISTRATOR
7407 public function getAdminUserName () {
7408 $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_ADMINISTRATOR;
7409 $this->dbclass->execute_query($query);
7410 $ans = $this->dbclass->get_result_complete();
7411 return $ans;
7412 }
7413
7414 public function getAdminOfUSer ($user = false) {
7415 if ($user)
7416 $user = $this->dbclass->get_escape_string($user);
7417 else
7418 $user = $this->dbclass->get_escape_string($_SESSION['username']);
7419 $query = "SELECT adminUserName FROM logicalGroups_V5 WHERE username = '{$user}'";
7420 $result = $this->dbclass->execute_query($query);
7421 if ($result) {
7422 $ans = $this->dbclass->get_result_complete();
7423 return $ans[0]['adminUserName'];
7424 }
7425
7426 return false;
7427 }
7428
7429 //RETURNS LIST OF PAYMENT TYPE WITH THEIR typeId
7430
7431 public function getPaymentType () {
7432 if ($_SESSION['username'] == 'root')
7433 $query = "SELECT * FROM paymentType";
7434 else if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
7435 $query = "SELECT * FROM adminPaymentType WHERE adminUserName = '".$_SESSION['username']."'";
7436 $this->dbclass->execute_query ( $query );
7437 $ans = $this->dbclass->get_result_complete();
7438 return $ans;
7439 }
7440
7441 //ADD CUSTOM PAYMENT TYPE IN paymentType TABLE
7442 public function addPaymentType () {
7443 $pType = $this->dbclass->get_escape_string($_POST['pType']);
7444 if ($_SESSION['username'] == 'root')
7445 $query = "INSERT INTO paymentType set pType = '$pType'";
7446 else if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
7447 $query = "INSERT INTO adminPaymentType set pType = '$pType'";
7448 $this->dbclass->execute_query ( $query );
7449 }
7450
7451 //RETURNS LICENSE INFO OF A USER OF TYPE ADMIN
7452 public function getUserLicInfo ($username) { //NAME OF THE FUNCTIONS NEED TO BE CHANGED, IT IS NOT MATCHING ITS FUNCTIONALITY
7453 $username = $this->dbclass->get_escape_string($username);
7454 $typeId = $this->dbclass->get_escape_string($_POST['typeId']);
7455 $ans =array();
7456
7457 if ($typeId == 1){
7458 $query = "SELECT licenseInfo.username, licenses as tCount, DATE(date) as sdate, licenseInfo.rate, licenseID as recordID, comments FROM licenseInfo ";
7459 $query .= "LEFT OUTER JOIN paymentRecords ON licenseInfo.licenseId = paymentRecords.recordId AND paymentRecords.typeId = 1 WHERE paymentRecords.recordID IS NULL AND licenseInfo.username = '$username' ORDER BY DATE(date)";
7460 $this->dbclass->execute_query($query);
7461 $new = $this->dbclass->get_result_complete();
7462 $query = "SELECT * FROM paymentRecords WHERE typeId = 1 AND username = '$username' ORDER BY sdate";
7463 //$query = "SELECT paymentRecords.* FROM paymentRecords INNER JOIN licenseInfo ON paymentRecords.recordID = licenseInfo.licenseID AND paymentRecords.typeId = 1 AND paymentRecords.username = '$username' ORDER BY sdate";
7464 //$query = "SELECT licenses, DATE(date) as date, rate, licenseID as recordID, comments FROM licenseInfo WHERE username = '$username' ORDER BY DATE(date)";
7465 $this->dbclass->execute_query($query);
7466 $present = $this->dbclass->get_result_complete();
7467 $ans ['new'] = $new;
7468 $ans ['present'] = $present;
7469 return $ans;
7470 }
7471 //$query = "SELECT licenseInfo.licenses, licenseInfo.DATE(date) as date, licenseInfo.rate, licenseInfo.licenseID as recordID, licenseInfo.comments FROM licenseInfo WHERE username = '$username' ORDER BY DATE(date)";
7472 //$query = "SELECT paymentRecords.* FROM paymentRecords INNER JOIN licenseInfo ON paymentRecords.recordID = licenseInfo.licenseID AND paymentRecords.typeId = $typeId ORDER BY sdate";
7473 $query = "SELECT * FROM paymentRecords WHERE username = '$username' AND typeId = $typeId ORDER BY sdate";
7474 //$query = "SELECT licenses, DATE(date) as date, rate, licenseID as recordID, comments FROM licenseInfo WHERE username = '$username' ORDER BY DATE(date)";
7475 $this->dbclass->execute_query($query);
7476 $present = $this->dbclass->get_result_complete();
7477
7478 $ans ['new'] = false;
7479 $ans ['present'] = $present;
7480
7481 return $ans;
7482 }
7483
7484 //INSERT NEW PAYMENT RECORD IN TABLE paymentRecords
7485 public function insertPaymentRecord ($license = false) {
7486 $check = true;
7487 $query = "INSERT INTO paymentRecords SET ";
7488 $query .= basicTransactions::prepareMySQL_POSTRequest();
7489 $this->dbclass->execute_query($query);
7490
7491 $fields = "typeId, recordID, issueDate, periodicity, creationDate, updationDate";
7492 if ($license) {
7493 $fields .= ", username, tCount";
7494 $check = false;
7495 }
7496
7497 //$query = "SELECT typeId, recordID, issueDate, periodicity, creationDate, updationDate FROM paymentRecords WHERE ";
7498 $query = "SELECT $fields FROM paymentRecords WHERE ";
7499 $query .= basicTransactions::prepareMySQL_POSTRequest('AND');
7500 $this->dbclass->execute_query($query);
7501 $ans = $this->dbclass->get_result_complete();
7502 //echo $query;
7503
7504 if (($license && $_POST['periodicity'] > 0) || $check) {
7505 $amount = $_POST['tCount'] * $_POST['rate'];
7506 $t = json_decode($_POST['tax'], true);
7507 $tax = 0;
7508
7509 foreach ($t as $k => $v) {
7510 $tax += $v;
7511 }
7512 $amount = ($amount * ($tax + 100)) / 100;
7513
7514 $schrge = json_decode($_POST['surcharge'], true);
7515 foreach ($schrge as $k => $v) {
7516 $amount += $v;
7517 }
7518
7519 $query = "INSERT INTO paymentHistory SET recordID = " . $ans [0] ['recordID'] . ", date = '" . $ans [0] ['issueDate'] . "', typeId = " . $ans [0] ['typeId'] . ", amount = $amount";
7520 $this->dbclass->execute_query($query);
7521
7522 $data ['amount'] = $amount;
7523 $data ['recordID'] = $ans [0] ['recordID'];
7524 $data ['creationDate'] = $ans [0] ['creationDate'];
7525 $data ['updationDate'] = $ans [0] ['updationDate'];
7526 $data ['date'] = $ans [0] ['issueDate'];
7527 $newDate = new FNSDateTime($_SESSION ['timezone']);
7528 $newDate->setUTCDate($data ['issueDate'], 0);
7529 $newDate->addMonth($ans [0] ['periodicity']);
7530 $data ['edate'] = $newDate->dateTime->format('Y-m-d');
7531
7532 }
7533 if ($license)
7534 return $ans [0];
7535 return $data;
7536 }
7537
7538 public function updatePaymentRecord ($license = false) {
7539 //$this->escapePostData();
7540 $check = true;
7541 $query = "UPDATE paymentRecords SET ";
7542 $query .= basicTransactions::prepareMySQL_POSTRequest();
7543 $query .= " WHERE username = '".$_POST['username']."' AND typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID'];
7544 $this->dbclass->execute_query($query);
7545
7546 if ($license) {
7547 $check = false;
7548 }
7549
7550 if (($license && $_POST['periodicity'] > 0) || $check) {
7551 $amount = $_POST['tCount'] * $_POST['rate'];
7552 $t = json_decode($_POST['tax'], true);
7553 $tax = 0;
7554
7555 foreach ($t as $k => $v) {
7556 $tax += $v;
7557 }
7558 $amount = ($amount * ($tax + 100)) / 100;
7559
7560 $schrge = json_decode($_POST['surcharge'], true);
7561 foreach ($schrge as $k => $v) {
7562 $amount += $v;
7563 }
7564
7565 $query = "UPDATE paymentHistory set amount = $amount WHERE recordID = " . $_POST['recordID'] . " AND typeId = " . $_POST['typeId'] . " AND isPaid = 0";
7566 $this->dbclass->execute_query($query);
7567
7568 if (!$check && $license)
7569 return $amount;
7570 }
7571
7572 if ($license)
7573 return;
7574
7575 /*if ($_POST['typeId'] == 1) {
7576 $query = "UPDATE licenseInfo SET issueDate = '".$_POST['sdate']."', rate = ".$_POST['rate']." WHERE username = '".$_POST['username']."' AND licenseID = ".$_POST['recordID'];
7577 $this->dbclass->execute_query($query);
7578 }*/
7579 //$query = "SELECT sdate AS date, periodicity FROM paymentRecords WHERE username = '".$_POST['username']."' AND typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID'];
7580 $query = "SELECT pR.*, pH.date, pH.amount FROM paymentRecords as pR INNER JOIN paymentHistory as pH ON pR.username = '".$_POST['username']."' AND pR.recordID = ".$_POST['recordID']." AND pR.typeID = ".$_POST['typeId']." AND pR.recordID = pH.recordID AND pR.typeId = pH.typeId AND pH.isPaid = 0";
7581 $this->dbclass->execute_query($query);
7582 $ans = $this->dbclass->get_result_complete();
7583
7584 $date = $ans [0] ['date'];
7585 $newDate = new FNSDateTime( $_SESSION ['timezone'] );
7586 $newDate->setUTCDate($date, 0);
7587 $newDate->addMonth($ans [0] ['periodicity']);
7588 $ans [0] ['edate'] = $newDate->dateTime->format('Y-m-d');
7589
7590 return $ans;
7591 }
7592
7593 public function removePaymentRecord () {
7594 $this->escapePostData();
7595 if ($_POST['typeID'] != 1){
7596 $query = "DELETE FROM paymentRecords WHERE username = '".$_POST['username']."' AND typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID'];
7597 $this->dbclass->execute_query($query);
7598 $query = "DELETE FROM paymentHistory WHERE typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID']." AND isPaid = 0";
7599 $this->dbclass->execute_query($query);
7600 return SUCCESS;
7601 }
7602 return ERROR;
7603 }
7604
7605 /*public function dateFormat ($date, $format) {
7606 $dt = new FNSDateTime( $_SESSION['timezone'] );
7607 $dt->setUTCDate($date, 0);
7608 return $dt->dateTime->format($format);
7609 }*/
7610
7611
7612 //RETURNS THE PAYMENT RECORDS PRESENT IN TABLE paymentRecords
7613 public function getPaymentRecords ($username, $fields = '*') {
7614 $username = $this->dbclass->get_escape_string($username);
7615 $ans = array();
7616 $query = "SELECT pR.*, pH.date, pH.amount FROM paymentRecords as pR INNER JOIN paymentHistory as pH ON pR.username = '$username' AND pR.recordID = pH.recordID AND pR.typeId = pH.typeId AND pH.isPaid = 0";
7617 $this->dbclass->execute_query($query);
7618 $ans['np'] = $this->dbclass->get_result_complete();
7619 foreach ($ans['np'] as $x => $v) {
7620 $newDate = new FNSDateTime( $_SESSION ['timezone'] );
7621 $newDate->setUTCDate($ans['np'][$x] ['date'], 0);
7622 $newDate->addMonth($ans['np'][$x] ['periodicity']);
7623 $ans['np'][$x] ['edate'] = $newDate->dateTime->format('Y-m-d');
7624 }
7625 $query = "SELECT pR.*, pH.date, pH.amount, pH.amtRecv, pH.amtRecOn FROM paymentRecords as pR INNER JOIN paymentHistory as pH ON pR.username = '$username' AND pR.recordID = pH.recordID AND pR.typeId = pH.typeId AND pH.isPaid = 1";
7626 $this->dbclass->execute_query($query);
7627 $ans['paid'] = $this->dbclass->get_result_complete();
7628 foreach ($ans['paid'] as $x => $v) {
7629 $newDate = new FNSDateTime( $_SESSION ['timezone'] );
7630 $newDate->setUTCDate($ans['paid'][$x] ['date'], 0);
7631 $newDate->addMonth($ans['paid'][$x] ['periodicity']);
7632 $ans['paid'][$x] ['edate'] = $newDate->dateTime->format('d-m-Y');
7633 $ans['paid'][$x]['amtDue'] = $ans['paid'][$x]['amount'] - $ans['paid'][$x]['amtRecv'];
7634 }
7635 return $ans;
7636 }
7637
7638 public function getPaymentRecordID ($fields = '*') {
7639 $query = "SELECT recordID, sdate FROM paymentRecords WHERE ";
7640 $query .= basicTransactions::prepareMySQL_POSTRequest('AND');
7641
7642 echo $query;
7643
7644 $this->dbclass->execute_query($query);
7645 $ans = $this->dbclass->get_result_complete();
7646
7647 echo "<br>";
7648 print_r($ans);
7649
7650 $query = "INSERT INTO paymentHistory SET recordID = '".$ans [0] ['recordID']."', date = '".$ans [0] ['sdate']."'";
7651 $this->dbclass->execute_query($query);
7652 echo "<br>".$query;
7653 die;
7654 return $ans [0] ['recordID'];
7655 }
7656
7657 public function paymentApproved ()
7658 {
7659 $recordID = $this->dbclass->get_escape_string($_POST['recordID']);
7660 $date = $this->dbclass->get_escape_string($_POST['date']);
7661 $typeId = $this->dbclass->get_escape_string($_POST['typeId']);
7662 $amtRecv = $this->dbclass->get_escape_string($_POST['amtRecv']);
7663 $amtRecOn = $this->dbclass->get_escape_string($_POST['amtRecOn']);
7664 $status = $this->dbclass->get_escape_string($_POST['status']);
7665
7666 if ($status == 'due') {
7667 $query = "UPDATE paymentHistory set amtRecv = $amtRecv, amtRecOn = '$amtRecOn', isPaid = 1 WHERE recordID = $recordID AND date = '$date' AND typeId = $typeId";
7668 $this->dbclass->execute_query($query);
7669 }
7670 else {
7671 $periodicity = $this->dbclass->get_escape_string($_POST['periodicity']);
7672 $query = "UPDATE paymentHistory set amtRecv = '$amtRecv', amtRecOn = '$amtRecOn', isPaid = 1 WHERE recordID = $recordID AND date = '$date' AND typeId = $typeId";
7673 $this->dbclass->execute_query($query);
7674 //echo $query."\r\n";
7675
7676 $query = "SELECT recordID, date, typeId, amount FROM paymentHistory where recordID = $recordID AND date = '$date' AND isPaid = 1 AND typeId = $typeId";
7677 $this->dbclass->execute_query($query);
7678 $ans = $this->dbclass->get_result_complete();
7679
7680 $newDate = new FNSDateTime($_SESSION ['timezone']);
7681 $newDate->setUTCDate($ans [0] ['date'], 0);
7682 $newDate->addMonth($periodicity);
7683 $dt = $newDate->dateTime->format('Y-m-d');
7684
7685 $query = "INSERT INTO paymentHistory SET recordID = " . $ans [0] ['recordID'] . ", date = '" . $dt . "', typeId = " . $ans [0] ['typeId'] . ", amount = " . $ans [0] ['amount'];
7686 $this->dbclass->execute_query($query);
7687 }
7688 }
7689
7690 public function getPaymentRecordsReport ($typeId, $uname) {
7691 //$uname = $this->dbclass->get_escape_string($_POST['username']);
7692
7693 $pr = array();
7694
7695 $query = "SELECT pr.recordID, pr.typeId, pr.rate, pr.periodicity, pr.tax, pr.surcharge, pr.tCount, ph.date FROM paymentRecords AS pr INNER JOIN paymentHistory AS ph ON pr.username = '$uname' AND pr.typeId = $typeId AND pr.typeID = ph.typeId AND pr.recordId = ph.recordId AND ph.isPaid = 1";
7696 $this->dbclass->execute_query($query);
7697 $pr ['paid'] = $this->dbclass->get_result_complete();
7698 //echo $query;
7699
7700 $query = "SELECT pr.recordID, pr.typeId, pr.rate, pr.periodicity, pr.tax, pr.tCount, ph.date FROM paymentRecords AS pr INNER JOIN paymentHistory AS ph ON pr.username = '$uname' AND pr.typeId = $typeId AND pr.typeID = ph.typeId AND pr.recordId = ph.recordId AND ph.isPaid = 0";
7701 $this->dbclass->execute_query($query);
7702 $pr ['np'] = $this->dbclass->get_result_complete();
7703
7704 return $pr;
7705 }
7706
7707
7708 public function sendMessage () {
7709 global $GMONGO;
7710
7711 $sender = $_SESSION['username'];
7712 $receiver = $this->dbclass->get_escape_string($_POST['receiver']);
7713 $msg = $this->dbclass->get_escape_string($_POST['message']);
7714
7715 if (strlen($msg) > 0) {
7716 $record = array('sender' => $sender, 'receiver' => $receiver, 'sent' => true, 'received' => false, 'message' => $msg, 'timestamp' => time(), 'isRead' => false);
7717
7718 $GMONGO -> insertRecord('messages', $record);
7719 //$GMONGO->checkIndex('messages', array('timestamp' => 1, 'timestamp'=> -1), false);
7720 } else
7721 return ERROR;
7722 }
7723
7724 public function getMessages ($sender = false, $limit = false, $lastMessage = false) {
7725 global $GMONGO;
7726
7727 $sender = $this->dbclass->get_escape_string($sender);
7728 $receiver = $_SESSION['username'];
7729 if ($receiver != false) {
7730 $receiver = $this->dbclass->get_escape_string($receiver);
7731 if (!$lastMessage)
7732 $options = array('sender' => $sender, 'receiver' => $receiver, 'isRead' => false);
7733 elseif ($lastMessage)
7734 $options = array('sender' => $sender, 'receiver' => $receiver);
7735 } else
7736 $options = array('sender' => $sender, 'isRead' => false);
7737
7738 $sort = array('timestamp' => -1);
7739 //$ans = $GMONGO -> getRecords('messages', $options, $sort);
7740 $ans = $GMONGO -> getRecords('messages', $options, $sort, $limit);
7741
7742 return $ans;
7743 }
7744
7745 public function getNewMessages () {
7746 global $GMONGO;
7747
7748 $receiver = $_SESSION['username'];
7749 $options = array('receiver' => $receiver, 'isRead' => false);
7750 //$sort = array('timestamp' => -1);
7751 //$ans = $GMONGO -> getRecords('messages', $options, $sort);
7752 $ans = $GMONGO -> getRecords('messages', $options);
7753
7754 return $ans;
7755 }
7756
7757 public function getChatUsers () {
7758
7759 switch ($_SESSION ['accounttype']) {
7760 case USERTYPE_ADMINISTRATOR:
7761 $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$_SESSION['username']."'";
7762 break;
7763
7764 case USERTYPE_CUSTOMERCARE:
7765 $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_FLEET." OR accounttype = ".USERTYPE_ADMINISTRATOR;
7766 break;
7767
7768 case USERTYPE_FLEETCARE:
7769 $QUERY = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
7770 $result = $this->dbclass->execute_query ( $QUERY );
7771 $un = $this -> dbclass -> get_result_complete();
7772
7773 $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$un [0] ['adminUserName']."' AND accounttype = ".USERTYPE_FLEET;
7774 break;
7775
7776 case USERTYPE_FLEET:
7777 $list = array();
7778 $QUERY = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
7779 $result = $this->dbclass->execute_query ( $QUERY );
7780 $un = $this -> dbclass -> get_result_complete();
7781 $list [0] ['username'] = $un [0] ['adminUserName'];
7782 $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$un [0] ['adminUserName']."' AND accounttype = ".USERTYPE_FLEETCARE;
7783
7784 $this->dbclass->execute_query($query);
7785 $ans = $this->dbclass->get_result_complete();
7786 if (isset($ans) && $ans != false)
7787 $list = array_merge($list, $ans);
7788 $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_CUSTOMERCARE;
7789 $this->dbclass->execute_query($query);
7790 $ans = $this->dbclass->get_result_complete();
7791 if (isset($ans) && $ans != false)
7792 $list = array_merge($list, $ans);
7793
7794 return $list;
7795 }
7796
7797 /*if ($_SESSION ['accounttype'] == USERTYPE_ADMINISTRATOR)
7798 $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$_SESSION['username']."'";
7799 else if ($_SESSION ['accounttype'] == USERTYPE_CUSTOMERCARE)
7800 $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_FLEET." OR accounttype = ".USERTYPE_ADMINISTRATOR;
7801 else if ($_SESSION ['accounttype'] == USERTYPE_FLEETCARE) {
7802 $QUERY = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
7803 $result = $this->dbclass->execute_query ( $QUERY );
7804 $un = $this -> dbclass -> get_result_complete();
7805
7806 $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$un [0] ['adminUserName']."' AND accounttype = ".USERTYPE_FLEET;
7807 }*/
7808
7809 $this->dbclass->execute_query($query);
7810 $ans = $this->dbclass->get_result_complete();
7811
7812 return $ans;
7813 }
7814
7815
7816
7817
7818 /*******************************************************************/
7819 /*******************************************************************/
7820
7821 //For Maliatec API
7822 public function getTrackerIDFromName ($tname) {
7823 $query = "SELECT trackerid FROM trackers WHERE name = '$tname'";
7824 $this->dbclass->execute_query($query);
7825 $result = $this->dbclass->get_result_complete();
7826 if ($result)
7827 return $result [0] ['trackerid'];
7828 else
7829 return $result;
7830 }
7831
7832 //Returns last sync date and time, used in Maliatec Mobile Computer
7833 public function lastSyncDateTime () {
7834 $query = "SELECT * FROM lastSyncDateTime";
7835 $this->dbclass->execute_query($query);
7836 $ans = $this->dbclass->get_result_complete($query);
7837
7838 return $ans [0] ['dateTime'];
7839 }
7840
7841 public function updateLastSyncDateTime ($dt) {
7842 $query = "UPDATE lastSyncDateTime SET dateTime = '$dt'";
7843 $this->dbclass->execute_query($query);
7844 }
7845
7846 public function insertIntoAEM ($tid, $data) {
7847 $query = "INSERT INTO A{$tid} SET date = '".$data['date']."', time = ".$data['time'].", latitude = ".$data['latitude'].", longitude = ".$data['longitude'].", ";
7848 $query .= "speed = 0, direction = 0, pdatetime = timestamp(\"".$data['dateTime']."\")";
7849 $this->dbclass->execute_query($query);
7850 }
7851
7852 public function getTrackerID () {
7853 $query = "SELECT trackerid FROM trackers";
7854 $this->dbclass->execute_query($query);
7855 $result = $this->dbclass->get_result_complete();
7856
7857 return $result;
7858 }
7859 /*Maliatec Mobile Computer End*/
7860
7861 /*Maliatec Eduvation*/
7862
7863 public function insertBusSchedule () {
7864 $query = "REPLACE INTO busSchedules SET ";
7865 $query .= basicTransactions::prepareMySQL_POSTRequest ();
7866 return $this->dbclass->execute_query($query);
7867 }
7868
7869 public function getBusSchedule ($username) {
7870 $query = "SELECT * FROM busSchedules WHERE username = '".$username."'";
7871 $this->dbclass->execute_query($query);
7872 $result = $this->dbclass->get_result_complete();
7873
7874 return $result;
7875 }
7876
7877 public function getLatestAlertsList ($fields = false) {
7878 if ($fields == false)
7879 $fields = '*';
7880 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR )
7881 $query = "SELECT $fields FROM adminTrackersMap LEFT JOIN EGLOBAL ON trackerid = tid WHERE username = '".$_SESSION['username']."'";
7882 else if ($_SESSION['accounttype'] == USERTYPE_FLEET)
7883 $query = "SELECT $fields FROM trackersMap LEFT JOIN EGLOBAL ON trackerid = tid WHERE username = '".$_SESSION['username']."'";
7884 else if ($_SESSION['accounttype'] == USERTYPE_CUSTOMERCARE)
7885 $query = "SELECT $fields FROM trackers LEFT JOIN EGLOBAL ON trackerid = tid";
7886 else if ($_SESSION['accounttype'] == USERTYPE_FLEETCARE) {
7887 $QUERY = "SELECT adminUserName from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
7888 $result = $this->dbclass->execute_query ( $QUERY );
7889 $un = $this -> dbclass -> get_result_complete();
7890
7891 $query = "SELECT * FROM adminTrackersMap LEFT JOIN EGLOBAL ON trackerid = tid WHERE username = '".$un[0]['adminUserName']."'";
7892 }
7893 $this -> dbclass -> execute_query($query);
7894 $result = $this -> dbclass -> get_result_complete();
7895
7896 return $result;
7897 }
7898
7899
7900 /*****FOR MIGRATION FROM MySQL TO MongoDB*****/
7901 public function getARecords ($tid) {
7902 $query = "SELECT * FROM A{$tid} WHERE (date = '2015-09-01' AND time >= 0) OR (date >= '2015-09-01') ORDER BY date, time" ;
7903 return $this -> dbclass ->execute_query($query);
7904 //$result = $this -> dbclass -> get_result_complete();
7905
7906 //return $result;
7907 }
7908
7909 public function getERecords ($tid) {
7910 $query = "SELECT * FROM E{$tid} WHERE (date = '2015-09-01' AND time >= 0) OR (date >= '2015-09-01') ORDER BY date, time" ;
7911 return $this -> dbclass ->execute_query($query);
7912 //$result = $this -> dbclass -> get_result_complete();
7913
7914 //return $result;
7915 }
7916
7917 public function getAMRecords ($tid) {
7918 /*$query = "CREATE INDEX dateTime on A{$tid} (date,time)";
7919 $this -> dbclass -> execute_query($query);
7920 $query = "CREATE INDEX dateTime on M{$tid} (date,time)";
7921 $this -> dbclass -> execute_query($query);*/
7922 $query = "SELECT * FROM M{$tid} LEFT JOIN A{$tid} USING (date, time) WHERE (date = '2015-09-01' AND time >= 0) OR (date >= '2015-09-01') ORDER BY date, time" ;
7923 return $this -> dbclass ->execute_query($query);
7924 //$result = $this -> dbclass -> get_result_complete();
7925
7926 //return $result;
7927 }
7928
7929 public function getResultRow () {
7930 return $this->dbclass->get_result_row();
7931 }
7932 /************************************************************/
7933
7934 /*******************************************************************/
7935 /*******************FLEETCARE QUERIES*********************/
7936 /*******************************************************************/
7937
7938 public function fleetcare_get_users_list () {
7939 $fields = "username,name,company,mobile,email,city,country,reseller";
7940 $wClause = "accounttype = " . USERTYPE_FLEET;
7941
7942 $query = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
7943 $result = $this->dbclass->execute_query ( $query );
7944 $un = $this -> dbclass -> get_result_complete();
7945
7946 $query = "SELECT $fields FROM logicalGroups_V5 INNER JOIN Users USING (username) WHERE adminUserName = '".$un [0] ['adminUserName']."' AND Users.accounttype = ".USERTYPE_FLEET;
7947
7948 //$query = "SELECT $fields FROM Users WHERE " . $wClause . " ORDER BY name";
7949 $result = $this->dbclass->execute_query ( $query );
7950 $answer = $this->dbclass->get_result_complete ();
7951
7952 return $answer;
7953 }
7954
7955
7956 /*******************************************************************/
7957 /*******************************************************************/
7958
7959 /*public function insertIntoA ($tid, $data) {
7960 $query = "INSERT INTO A{$tid} SET date = '".$data['date']."', time = ".$data['time'].", latitude = ".$data['latitude'].", longitude = ".$data['longitude'].", ";
7961 $query .= "speed = ".$data['speed'].", direction = ".$data['direction'].", pdatetime = timestamp(\"".$data['dateTime']."\")";
7962 $this->dbclass->execute_query($query);
7963 }
7964
7965 public function insertIntoE ($tid, $data) {
7966 $query = "INSERT INTO E{$tid} SET date = '".$data['date']."', time = ".$data['time'].", latitude = ".$data['latitude'].", longitude = ".$data['longitude'].", ";
7967 $query .= "speed = ".$data['speed'].", direction = ".$data['direction'].", event = ".$data['event'].", description = ".$data['description'].", pdatetime = timestamp(\"".$data['dateTime']."\")";
7968 $this->dbclass->execute_query($query);
7969 }
7970
7971 public function insertIntoM ($tid, $data) {
7972 $query = "INSERT INTO M{$tid} SET date = '".$data['date']."', time = ".$data['time'].", odometer = ".$data['odometer'].", private = ".$data['private'].", IO = '".$data['IO']."', misc = '".$data['misc']."', driverID = '".$data['driverID']."', ";
7973 $query .= "siteID = '".$data['siteID']."', fuel1 = ".$data['fuel1'].", fuel2 = ".$data['fuel2'].", fuel3 = ".$data['fuel3'].", fuel4 = ".$data['fuel4'].", fuel5 = ".$data['fuel5'].", temperature1 = ".$data['temperature1'].", ";
7974 $query .= "temperature2 = ".$data['temperature2'].", temperature3 = ".$data['temperature3'].", temperature4 = ".$data['temperature4'].", temperature5 = ".$data['temperature5'].", ";
7975 //$query .= "speed = ".$data['speed'].", direction = ".$data['direction'].", pdatetime = timestamp(\"".$data['dateTime']."\")";
7976 $this->dbclass->execute_query($query);
7977 }*/
7978
7979 public function createAEM ($tid) {
7980 $query = "CREATE TABLE A{$tid} like dataTable";
7981 $result = $this->dbclass->execute_query ( $query );
7982
7983 $query = "CREATE TABLE E{$tid} like eventsTable";
7984 $result = $this->dbclass->execute_query ( $query );
7985
7986 $query = "CREATE TABLE M{$tid} like miscTable";
7987 $result = $this->dbclass->execute_query ( $query );
7988 }
7989
7990 public function insertIntoMAGlobals ($trackerRecord) {
7991 $query = "INSERT INTO MAGLOBALS SET ";
7992
7993 $initial = true;
7994 foreach ($trackerRecord as $k => $v) {
7995 if ($initial == true)
7996 {
7997 $initial = false;
7998 }else {
7999 $query .= ", ";
8000 }
8001
8002 $query .= $k ." = \"".$this->dbclass->get_escape_string($v)."\"";
8003 }
8004
8005 $this->dbclass->execute_query($query);
8006
8007 //$query = "INSERT INTO MAGLOBALS SET ".basicTransactions::prepareMySQL_POSTRequest($_POST);
8008
8009 echo $query;
8010 }
8011
8012 public function insertIntoAGlobals ($trackerRecord) {
8013 $query = "INSERT INTO AGLOBALS SET ";
8014
8015 $initial = true;
8016 foreach ($trackerRecord as $k => $v) {
8017 if ($initial == true)
8018 {
8019 $initial = false;
8020 }else {
8021 $query .= ", ";
8022 }
8023
8024 $query .= $k ." = \"".$this->dbclass->get_escape_string($v)."\"";
8025 }
8026
8027 $this->dbclass->execute_query($query);
8028
8029 //$query = "INSERT INTO MAGLOBALS SET ".basicTransactions::prepareMySQL_POSTRequest($_POST);
8030
8031 echo $query;
8032 }
8033
8034 public function getTrackerMARecord ($trackerid) {
8035 $query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$trackerid."'";
8036 $this->dbclass->execute_query($query);
8037 $result = $this->dbclass->get_result_complete();
8038
8039 return $result;
8040 }
8041
8042 public function getTrackerARecord ($trackerid) {
8043 $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$trackerid."'";
8044 $this->dbclass->execute_query($query);
8045 $result = $this->dbclass->get_result_complete();
8046
8047 return $result;
8048 }
8049
8050 public function getTrackerIDFromSearchKeywords ($keyword) {
8051 $query = "SELECT trackerid FROM trackersExInfo WHERE searchKeywords LIKE '".$keyword."'";
8052 $this->dbclass->execute_query($query);
8053 return $this->dbclass->get_result_complete($query);
8054 }
8055
8056 public function getLastSentRecordId ($trackerid) {
8057 $query = "SELECT * FROM sentRecordId WHERE trackerid = '".$trackerid."'";
8058 $this->dbclass->execute_query($query);
8059 return $this->dbclass->get_result_complete();
8060 }
8061
8062 public function updateLastSentMiscRecordId ($trackerid, $miscRecordId) {
8063 //$query = "INSERT INTO sentRecordId UPDATE sentRecordId SET miscRecordId = $miscRecordId WHERE trackerid = '".$trackerid."'";
8064 $query = "INSERT INTO sentRecordId SET miscRecordId = $miscRecordId, trackerid = '".$trackerid."' ON DUPLICATE KEY UPDATE miscRecordId = $miscRecordId";
8065 return $this->dbclass->execute_query($query);
8066 }
8067
8068 public function updateLastSentEventRecordId ($trackerid, $eventsRecordId) {
8069 //$query = "UPDATE sentRecordId SET eventsRecordId = $eventsRecordId WHERE trackerid = '".$trackerid."'";
8070 $query = "INSERT INTO sentRecordId SET eventsRecordId = $eventsRecordId, trackerid = '".$trackerid."' ON DUPLICATE KEY UPDATE eventsRecordId = $eventsRecordId";
8071 return $this->dbclass->execute_query($query);
8072 }
8073
8074 public function getARecordsFromRecordId ($trackerid, $recordId) {
8075 $query = "SELECT * FROM A{$trackerid} WHERE id > $recordId ORDER BY id";
8076 $this->dbclass->execute_query($query);
8077 return $this->dbclass->get_result_complete();
8078 }
8079
8080 public function getERecordsFromRecordId ($trackerid, $recordId) {
8081 $query = "SELECT * FROM E{$trackerid} WHERE id > $recordId ORDER BY id";
8082 $this->dbclass->execute_query($query);
8083 return $this->dbclass->get_result_complete();
8084 }
8085
8086 public function getMRecordsFromRecordId ($trackerid, $recordId) {
8087 $query = "SELECT * FROM M{$trackerid} WHERE id > $recordId ORDER BY id";
8088 $this->dbclass->execute_query($query);
8089 return $this->dbclass->get_result_complete();
8090 }
8091
8092 public function getARecord ($trackerid, $date, $time) {
8093 $query = "SELECT * FROM A{$trackerid} WHERE date = '$date' AND time = $time";
8094 $this->dbclass->execute_query($query);
8095 return $this->dbclass->get_result_complete();
8096 }
8097
8098 public function getMRecord ($trackerid, $date, $time) {
8099 $query = "SELECT * FROM M{$trackerid} WHERE date = '$date' AND time = $time";
8100 $this->dbclass->execute_query($query);
8101 return $this->dbclass->get_result_complete();
8102 }
8103
8104 public function getLastMRecordFromId ($trackerid) {
8105 $query = "SELECT * from M{$trackerid} ORDER BY id DESC LIMIT 0, 1";
8106 $this->dbclass->execute_query($query);
8107 return $this->dbclass->get_result_complete();
8108 }
8109
8110 public function getLastERecordFromId ($trackerid) {
8111 $query = "SELECT * from E{$trackerid} ORDER BY id DESC LIMIT 0, 1";
8112 $this->dbclass->execute_query($query);
8113 return $this->dbclass->get_result_complete();
8114 }
8115
8116 //public function saveLogisticSchedule ($username, $trackerid, $datePeriod) {
8117 public function saveLogisticSchedule () {
8118 $_POST['username'] = $_SESSION['username'];
8119 $query = "INSERT INTO logisticScheduler SET ";
8120 $query .= basicTransactions::prepareMySQL_POSTRequest ();
8121 $result = $this->dbclass->execute_query ( $query );
8122
8123 return $result;
8124 }
8125
8126 /*public function removeLogisticSchedule ($id) {
8127 $query = "DELETE FROM logisticScheduler WHERE id = $id";
8128 $result = $this->dbclass->execute_query ( $query );
8129
8130 return $result;
8131 }*/
8132
8133 public function getReportLogisticSchedule ($username, $trackerid, $datePeriod) {
8134 $query = "SELECT * FROM logisticScheduler WHERE username = '".$username."' AND trackerid = '".$trackerid."'";
8135 $query .= " AND stimestamp >= ".$datePeriod['stimestamp']." AND etimestamp <= ".$datePeriod['etimestamp'];
8136 //echo $query;
8137 $this->dbclass->execute_query($query);
8138 $result = $this->dbclass->get_result_complete();
8139
8140 return $result;
8141 }
8142
8143 public function getLogisticSchedule ($username) {
8144 /*$query = "SELECT * FROM logisticScheduler WHERE username = '".$username."' AND trackerid = '".$trackerid."'";
8145 $query .= " AND stimestamp >= ".$datePeriod['stimestamp']." AND etimestamp <= ".$datePeriod['etimestamp'];*/
8146 $query = "SELECT * FROM logisticScheduler WHERE username = '".$username."'";
8147 //echo $query;
8148 $this->dbclass->execute_query($query);
8149 $result = $this->dbclass->get_result_complete();
8150
8151 return $result;
8152 }
8153
8154 public function removeLogisticSchedule ($id) {
8155 $id = $this->dbclass->get_escape_string($id);
8156 $query = "DELETE FROM logisticScheduler WHERE id = $id";
8157 $result = $this->dbclass->execute_query($query);
8158 return $result;
8159 }
8160
8161 public function insertIntoTrackersGallery ($imageData) {
8162
8163 foreach ($imageData as $k => $v) {
8164 $imageData[$k] = $this->dbclass->get_escape_string($v);
8165 }
8166 //$query = "INSERT INTO trackersGallery SET trackerid = '".$imageData['trackerid']."', name = '".$imageData['name']."', description = '".$imageData['description']."'";
8167 $query = "INSERT INTO trackersGallery SET trackerid = '".$imageData['trackerid']."', name = '".$imageData['name']."', type = '".$imageData['type']."', description = '".$imageData['description']."', timestamp = ".$imageData['timestamp'];
8168 return $this->dbclass->execute_query($query);
8169 }
8170
8171 public function getImageDetails ($name) {
8172 $name = $this->dbclass->get_escape_string($name);
8173 $query = "SELECT * FROM trackersGallery WHERE name = '".$name."'";
8174 $this->dbclass->execute_query($query);
8175 return $this->dbclass->get_result_complete();
8176 }
8177
8178 public function getImageDetailsFromId ($id) {
8179 $id = $this->dbclass->get_escape_string($id);
8180 $query = "SELECT * FROM trackersGallery WHERE id = $id";
8181 $this->dbclass->execute_query($query);
8182 return $this->dbclass->get_result_complete();
8183 }
8184
8185 public function removeImagesFromTrackersGallery ($value, $using = 'id') {
8186 $value = $this->dbclass->get_escape_string($value);
8187 if ($using == 'id')
8188 $clause = 'id = '.$value;
8189 elseif ($using == 'name')
8190 $clause = "name = '{$value}'";
8191
8192 //$id = $this->dbclass->get_escape_string($id);
8193 //$query = "DELETE FROM trackersGallery WHERE id = $id";
8194 $query = "DELETE FROM trackersGallery WHERE ".$clause;
8195 return $this->dbclass->execute_query($query);
8196 }
8197
8198 public function saveTrackerGroup ($group) {
8199 $group = $this->dbclass->get_escape_string($group);
8200 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8201
8202 $query = "SELECT * FROM trackersLogicalGroups WHERE groupName = '{$group}', username = '{$username}'";
8203 $this->dbclass->execute_query($query);
8204 $answer = $this->dbclass->get_result_complete();
8205 if ($answer != false)
8206 return EXISTS;
8207
8208 $query = "INSERT INTO trackersLogicalGroups SET groupName = '{$group}', username = '{$username}'";
8209 $result = $this->dbclass->execute_query($query);
8210
8211 if ($result) {
8212 //$returnID = mysql_insert_id ( $this->dblink );
8213 //$returnID = $this->dbclass->get_insert_id();
8214 $returnID = $this->dbclass->dblink->insert_id;
8215 //var_dump($this->dblink);
8216 //$returnID = $this->dblink->insert_id;
8217 //var_dump($returnID);
8218 return $returnID;
8219 }
8220 $errorno = $this->dbclass->get_error_no();
8221
8222 if ($errorno == 1062)
8223 $result = EXISTS;
8224 return $result;
8225 }
8226
8227 public function getFleetUserGroups () {
8228 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8229 $query = "SELECT * FROM trackersLogicalGroups WHERE username = '{$username}'";
8230 $this->dbclass->execute_query($query);
8231 $answer = $this->dbclass->get_result_complete();
8232
8233 return $answer;
8234 }
8235
8236 public function assignTrackerToGroup ($groupid, $trackerid) {
8237 $groupid = $this->dbclass->get_escape_string($groupid);
8238 $trackerid = $this->dbclass->get_escape_string($trackerid);
8239 $query = "INSERT INTO groupTrackersMap SET groupid = $groupid, trackerid = '{$trackerid}'";
8240
8241 return $this->dbclass->execute_query($query);
8242 }
8243
8244 public function removeTrackerGroup ($groupid) {
8245 $groupid = $this->dbclass->get_escape_string($groupid);
8246
8247 $query = 'DELETE FROM trackersLogicalGroups WHERE groupid = '.$groupid;
8248
8249 $result = $this->dbclass->execute_query($query);
8250
8251 if ($result == false)
8252 return $result;
8253
8254 $query = 'DELETE FROM groupTrackersMap WHERE groupid = '.$groupid;
8255
8256 return $this->dbclass->execute_query($query);
8257 }
8258
8259 public function removeTrackerFromGroup ($groupid, $trackerid) {
8260 $groupid = $this->dbclass->get_escape_string($groupid);
8261 $trackerid = $this->dbclass->get_escape_string($trackerid);
8262
8263 $query = "DELETE FROM groupTrackersMap WHERE groupid = $groupid AND trackerid = '{$trackerid}'";
8264 return $this->dbclass->execute_query($query);
8265 }
8266
8267 public function saveFinancialData () {
8268 $returnid = false;
8269 if (($_POST['id'] == 0)) {
8270 $query = 'INSERT INTO financialPackage SET ';
8271 $query .= basicTransactions::prepareMySQL_POSTRequest();
8272 } elseif ($_POST['id'] > 0) {
8273 $query = 'UPDATE financialPackage SET ';
8274 $query .= basicTransactions::prepareMySQL_POSTRequest();
8275 $query .= " WHERE id = {$_POST['id']} AND trackerid = '{$_POST['trackerid']}'";
8276 $returnid = $_POST['id'];
8277 }
8278 $result = $this->dbclass->execute_query($query);
8279 if ($result) {
8280 if (!$returnid)
8281 $returnid = $this->dbclass->dblink->insert_id;
8282 return $returnid;
8283 }
8284
8285 return ERROR;
8286 }
8287
8288 public function savePercentageFinancialData ($trackerid) {
8289 $trackerid = $this->dbclass->get_escape_string($trackerid);
8290 $isRecord = $this->getFinancialData($trackerid);
8291 if ($isRecord) {
8292 $overall = $this->dbclass->get_escape_string($_POST['overall']);
8293 $partial = $this->dbclass->get_escape_string($_POST['partial']);
8294 $query = "UPDATE financialPackage SET overall = '{$overall}', partial = '{$partial}' WHERE trackerid = '{$trackerid}'";
8295 $result = $this->dbclass->execute_query($query);
8296 if ($result)
8297 return $result;
8298 return false;
8299 }
8300
8301 return false;
8302 }
8303
8304 public function getFinancialData ($trackerid) {
8305 $trackerid = $this->dbclass->get_escape_string($trackerid);
8306 $query = "SELECT * FROM financialPackage WHERE trackerid = '{$trackerid}'";
8307 $result = $this->dbclass->execute_query($query);
8308
8309 if ($result) {
8310 $ans = $this->dbclass->get_result_complete();
8311 return $ans;
8312 }
8313
8314 return false;
8315 }
8316
8317 //public function getFinancialDetails ($jstime, $jetime, $tid) {
8318 public function getFinancialDetails ($tid, $isEntireDay = false) {
8319 $tid = $this->dbclass->get_escape_string($tid);
8320
8321 if ($isEntireDay)
8322 $query = "SELECT MAX(rate) FROM financialPackage WHERE trackerid = '{$tid}'";
8323 else {
8324 $query = "SELECT * FROM financialPackage WHERE trackerid = '{$tid}' ORDER by stime, etime";
8325 }
8326
8327 //$CONDITION = "( (stime <= {$jstime} && {$jetime} < etime) || ( (stime <= {$jstime} && {$jetime} > etime) || ) )";
8328
8329 //$query = "SELECT * FROM financialPackage WHERE ";
8330
8331 $result = $this->dbclass->execute_query($query);
8332
8333 if ($result) {
8334 return $this->dbclass->get_result_complete();
8335 }
8336
8337 return false;
8338 }
8339
8340 public function createShift ($shiftName, $shiftSchedule, $description) {
8341 $shiftName = $this->dbclass->get_escape_string($shiftName);
8342 $shiftSchedule = $this->dbclass->get_escape_string($shiftSchedule);
8343 $description = $this->dbclass->get_escape_string($description);
8344 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8345 $returnid = false;
8346 if ($_POST['shiftid'] == 0) {
8347 $query = "SELECT * FROM shifts WHERE username = '{$username}' AND shiftName = '{$shiftName}'";
8348 $this->dbclass->execute_query($query);
8349 $answer = $this->dbclass->get_result_complete();
8350 if ($answer != false) return EXISTS;
8351
8352 $query = "INSERT INTO shifts SET username = '{$username}', shiftName = '{$shiftName}', shiftSchedule = '{$shiftSchedule}', description = '{$description}'";
8353
8354 $returnid = true;
8355
8356 } elseif ($_POST['shiftid'] > 0) {
8357 $query = "UPDATE shifts SET shiftName = '{$shiftName}', shiftSchedule = '{$shiftSchedule}', description = '{$description}' WHERE shiftid = {$_POST['shiftid']}";
8358 }
8359
8360 $result = $this->dbclass->execute_query($query);
8361 if ($result) {
8362 if ($returnid)
8363 return $this->dbclass->dblink->insert_id;
8364
8365 return $_POST['shiftid'];
8366 }
8367
8368
8369 return ERROR;
8370 }
8371
8372 public function getShifts () {
8373 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8374 $query = "SELECT * FROM shifts WHERE username = '{$username}'";
8375 $result = $this->dbclass->execute_query($query);
8376 if ($result) {
8377 $answer = $this->dbclass->get_result_complete();
8378 foreach ($answer as $k => $v) {
8379 $query = "SELECT trackerid FROM shiftsMapper WHERE shiftid = {$v['shiftid']}";
8380 $this->dbclass->execute_query($query);
8381 $trackers = $this->dbclass->get_result_complete();
8382
8383 $firstTracker = true;
8384
8385 $answer [$k] ['trackers'] = '';
8386 if ($trackers) {
8387 foreach ($trackers as $a => $b) {
8388 if ($firstTracker) {
8389 $answer [$k] ['trackers'] .= $b['trackerid'];
8390 $firstTracker = false;
8391 } else
8392 $answer [$k] ['trackers'] .= ','.$b['trackerid'];
8393 }
8394 }
8395 }
8396
8397 return $answer;
8398 }
8399
8400
8401 return false;
8402 }
8403
8404 public function removeShifts ($shiftid) {
8405 $query = "DELETE FROM shifts WHERE shiftid = $shiftid";
8406 $result = $this->dbclass->execute_query($query);
8407 if ($result) {
8408 $query = "DELETE FROM shiftsMapper WHERE shiftid = {$shiftid}";
8409 $this->dbclass->execute_query($query);
8410 }
8411
8412 return $result;
8413 }
8414
8415 public function assignShift ($shiftid, $tid) {
8416 $query = "INSERT INTO shiftsMapper SET shiftid = {$shiftid}, trackerid = '{$tid}'";
8417 //echo $query;
8418 return $this->dbclass->execute_query($query);
8419 }
8420
8421 public function removeAssignedShift ($shiftid, $tid) {
8422 $query = "DELETE FROM shiftsMapper WHERE shiftid = {$shiftid} AND trackerid = '{$tid}'";
8423 //echo $query;
8424 return $this->dbclass->execute_query($query);
8425 }
8426
8427 public function getShiftDetails ($shiftid) {
8428 $query = "SELECT * FROM shifts WHERE shiftid = {$shiftid}";
8429 $result = $this->dbclass->execute_query($query);
8430 if ($result) {
8431 return $this->dbclass->get_result_complete();
8432 }
8433 return false;
8434 }
8435
8436 public function getShiftTrackers ($shiftid) {
8437 $query = "SELECT trackerid FROM shiftsMapper WHERE shiftid = '{$shiftid}'";
8438 $result = $this->dbclass->execute_query($query);
8439 if ($result)
8440 return $this->dbclass->get_result_complete();
8441
8442 return false;
8443 }
8444
8445 public function saveTrackerIcon ($iconName, $icon, $description = '') {
8446 //basicTransactions::prepareMySQL_POSTRequest();
8447 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8448 $iconName = $this->dbclass->get_escape_string($iconName);
8449 $icon = $this->dbclass->get_escape_string($icon);
8450 $description = $this->dbclass->get_escape_string($description);
8451 $query = "INSERT INTO trackerIcons SET username = '{$username}', iconName = '{$iconName}', icon = '{$icon}', description = '{$description}'";
8452 $result = $this->dbclass->execute_query($query);
8453 if ($result) {
8454 return $this->dbclass->dblink->insert_id;
8455 }
8456 return ERROR;
8457 }
8458
8459 public function getTrackerIcon () {
8460 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8461 $query = "SELECT * FROM trackerIcons WHERE username = '{$username}'";
8462 $result = $this->dbclass->execute_query($query);
8463 if ($result)
8464 return $this->dbclass->get_result_complete();
8465
8466 return false;
8467 }
8468
8469 public function assignIcon ($iconid, $tid){
8470 $query = "INSERT INTO trackersIconsMap SET iconid = $iconid, trackerid = '{$tid}'";
8471 return $this->dbclass->execute_query($query);
8472 }
8473
8474 public function getTrackerIconid ($tid) {
8475 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8476 $query = "SELECT iconid FROM trackerIcons INNER JOIN trackersIconsMap USING (iconid) WHERE username = '{$username}' AND trackerid = '{$tid}'";
8477 $result = $this->dbclass->execute_query($query);
8478
8479 if ($result->num_rows)
8480 return $this->dbclass->get_result_complete();
8481 else {
8482
8483 //var_dump(array('0' => array('iconid' => 'default')));
8484 //die;
8485 return array('0' => array('iconid' => 'default'));
8486 }
8487
8488 return false;
8489 }
8490
8491 public function __construct() {
8492 $this->dbclass = new MDATABASE ();
8493
8494 $this->dblink = $this->dbclass->connect ( databaseConfiguration::$usernameSD, databaseConfiguration::$passwordSD, databaseConfiguration::$hostnameSD, databaseConfiguration::$systemDatabase );
8495
8496 $this->dbclass_2 = new MDATABASE ();
8497
8498 $this->dblink_2 = $this->dbclass_2->connect ( databaseConfiguration::$usernameSD, databaseConfiguration::$passwordSD, databaseConfiguration::$hostnameSD, databaseConfiguration::$systemDatabase );
8499
8500 $this->openDebugLog ();
8501 //$this->keyText = "9c24447e34340438654673081ce909b0553be329f5eb5e6e1d718e29fb666666";
8502 $this->keyText = "9c24447e34340438654673081ce909b0553be329f5eb5e6e1d718e29fb210033";
8503 $this->key = pack('H*', $this->keyText);
8504 }
8505
8506 public function __destruct() {
8507 $this->closeDebugLog ();
8508 }
8509}
8510?>