· 8 years ago · Mar 27, 2018, 12:24 PM
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 } else {
1484 if ($trec != false) {
1485 if ($sortedReverse == false)
1486 $trec = array_reverse ( $trec );
1487 $_SESSION ['dCache'] [$tracker ['trackerid']][0] = $trec [0] ['timestamp'];
1488 if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [4])) //Check
1489 unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [4]);
1490 }
1491 }
1492
1493 if (isset ($_GET ['update']) && $_GET ['update'] == 1) {
1494 if ($trec == false)
1495 return false;
1496
1497 else if ($trec [0] ['timestamp'] == $_SESSION ['dCache'] [$tracker ['trackerid']][0]) {
1498 //If no update is present
1499 //Get packet with no location
1500 $linput = $GMONGO->getLastAMRecord($tinfo->tid);
1501 if ($linput == false) return false;
1502
1503 $ltimestamp = $linput[0]['timestamp'];
1504 $ptimestamp = $trec[0]['timestamp'];
1505
1506 if ($ptimestamp > $ltimestamp) return false;
1507
1508 if ((time() - $ptimestamp) < NON_WORKING_TRACKER_TIME) {
1509
1510 if (($ltimestamp - $ptimestamp) < NO_GPS_ICON_TIME)
1511 return false;
1512 else if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]))
1513 return false;
1514 } else if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]))
1515 return false;
1516 } else {
1517 if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]))
1518 unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]);
1519
1520 if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]))
1521 unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]);
1522 }
1523 }
1524
1525 if ($trec == false) {
1526 srand();
1527 $tinfo->status = 'n';
1528 $tinfo->iconIndex = $this->getIconIndex($tinfo->status);
1529 $tinfo = removeNullFromObject($tinfo);
1530 return $tinfo;
1531 }
1532
1533 $trec_count = count($trec);
1534
1535 if ($trec_count > 2) {
1536 for ($x = $trec_count - 2; $x > 0; $x--) {
1537 $n = new trackerRecord ();
1538 foreach ($n as $k => $v)
1539 $n->{$k} = $trec [$x] [$k];
1540
1541 $fnsdate->setUTCDate($n->date, $n->time);
1542 $n->timeString = $fnsdate->getFormattedTimeString();
1543 array_push($tinfo->hLocations, $n);
1544 }
1545 }
1546
1547 $fdate = new FNSDateTime($_SESSION['timezone']);
1548 $fdate->setTimestamp($trec[0]['timestamp']);
1549
1550 $tinfo->latitude = $trec [0] ['latitude'];
1551 $tinfo->longitude = $trec [0] ['longitude'];
1552 $tinfo->speed = $trec [0] ['speed'];
1553 $tinfo->direction = $trec [0] ['direction'];
1554 //$tinfo->date = $fdate->UTCDateString;
1555 //$tinfo->time = $fdate->UTCTime;
1556 $tinfo->date = $trec[0]['date'];
1557 $tinfo->time = $trec [0] ['time'];
1558
1559 $maglobals = $this->getMAGLOBALSrecord($tinfo->tid);
1560 //$tinfo->timestamp = $trec [0] ['timestamp'];
1561 $tinfo->timestamp = (int)$maglobals [0] ['timestamp'];
1562 //echo "\r\ntimestamp ".$tinfo->timestamp;
1563 //var_dump($maglobals);
1564
1565 $_SESSION ['dCache'] [$tinfo->tid] [0] = $trec[0]['timestamp'];
1566
1567
1568 //$inputs = $trec;
1569 $inputs = $this->getInputs ( $tinfo->tid, false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
1570
1571 //Inputs start
1572 if ($inputs != false) {
1573 for($i = 1; $i <= 5; $i ++) {
1574 if (isset ( $inputs [0] ['fuel' . $i] ))
1575 $tinfo->{'fuel' . $i} = $inputs [0] ['fuel' . $i];
1576
1577 if (isset ( $inputs [0] ['temperature' . $i] ))
1578 $tinfo->{'temperature' . $i} = $inputs [0] ['temperature' . $i];
1579 }
1580
1581 if (isset ( $inputs ['0'] ['ibattery'] ))
1582 $tinfo->ibattery = $inputs ['0'] ['ibattery'];
1583
1584 $tinfo->IO = $inputs [0] ['IO'];
1585
1586 $tinfo->JStr = $inputs [0] ['misc'];
1587
1588 if (isset ( $tracker ['privatePublicUse'] ) && $tracker ['privatePublicUse'] == 1)
1589 $tinfo->privatePublic = $inputs [0] ['private'];
1590
1591 //if ($currentTrip){
1592 if ($currentTrip || (isset ( $_GET ['update'] ) && $_GET ['update'] == 1)){
1593 $tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
1594 $tinfo->driver = $this->getDriverName ( $tinfo->tid );
1595 }
1596 //$tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
1597 if ($tinfo->odometer == false)
1598 $tinfo->odometer = null;
1599
1600 //$tinfo->driver = $this->getDriverName ( $tinfo->tid );
1601 } else {
1602
1603 for($i = 1; $i <= 5; $i ++) {
1604 $tinfo->{'fuel' . $i} = null;
1605 $tinfo->{'temperature' . $i} = null;
1606 }
1607
1608 $tinfo->IO = null;
1609 $tinfo->odometer = null;
1610 $tinfo->privatePublic = 0;
1611 } //Inputs end
1612
1613 $tinfo->status = $this->getStatus($tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO);
1614
1615 if ($tinfo->status == 'm' || $tinfo->status == 'i' || $tinfo->status == 's') {
1616
1617 $linput = $this->getInputs($tinfo->tid);
1618
1619 if ($linput != false) {
1620 //if (isset($trec[0]['latitude']) == false) {
1621 $ltimestamp = $linput [0] ['timestamp'];
1622 $aglobals = $trec = $this->getAGLOBALSrecord($tinfo->tid);
1623 //$ptimestamp = $tinfo->timestamp;
1624 $ptimestamp = $aglobals[0]['timestamp'];
1625
1626 if (($ltimestamp - $ptimestamp) > NO_GPS_ICON_TIME) {
1627 //////////////////////////////////////////////////////////////echo "ltimestamp ".$ltimestamp, " ptimestamp ".$ptimestamp."\r\n";
1628 $tinfo->status = 'g';
1629 /////////////////////////////////////var_dump($tinfo);
1630 /////////////////////////////////die;
1631 $_SESSION ['dCache'] [$tracker ['trackerid']] [2] = true;
1632 }
1633 //}
1634 }
1635 } else {
1636 $_SESSION ['dCache'] [$tracker ['trackerid']] [5] = true;
1637 }
1638
1639 //To remove any previous data if last packet has ignition
1640 if (($tinfo->status == 'n' || $tinfo->status == 's') && $currentTrip) {
1641 $tinfo->hLocations = array();
1642 }
1643
1644 $tinfo->iconIndex = $this->getIconIndex($tinfo->status, $tinfo->latitude, $tinfo->timestamp);
1645
1646 $fnsdate->setUTCDate($tinfo->date, $tinfo->time);
1647 $tinfo->dateString = $fnsdate->getFormattedString();
1648 $tinfo->timeString = $fnsdate->getFormattedTimeString();
1649
1650
1651 $tinfo->events = $this->getTrackersEvents($tinfo->tid, $currentTrip);
1652
1653
1654 $duration = $this->getTrackerDuration ( $tinfo->tid, $tinfo->status );
1655
1656 if ($duration != false) {
1657 $fnsdate->setUTCDate ( $duration->date, $duration->time );
1658 $tinfo->durationStamp = $fnsdate->dateTime->getTimestamp ();
1659 } else {
1660 $tinfo->durationStamp = null;
1661 }
1662
1663 if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] ) == false) {
1664
1665 if (count ( $tinfo->hLocations ) > 0)
1666 $sObj = $tinfo->hLocations [0];
1667 else
1668 $sObj = $tinfo;
1669
1670 $fnsdate->setUTCDate ( $sObj->date, $sObj->time );
1671
1672 if ($currentTrip) {
1673 if ($tinfo->status == 'm' || $tinfo->status == 'i' || ($tinfo->status == 'g' && count($tinfo->hLocations) > 0)) {
1674 $tinfo->sTime = $fnsdate->getFormattedString ();
1675 $tinfo->sLatitude = $sObj->latitude;
1676 $tinfo->sLongitude = $sObj->longitude;
1677 }
1678 } else {
1679 $tinfo->sTime = $fnsdate->getFormattedString ();
1680 $tinfo->sLatitude = $sObj->latitude;
1681 $tinfo->sLongitude = $sObj->longitude;
1682 }
1683
1684 $_SESSION ['dCache'] [$tracker ['trackerid']] [4] = true;
1685
1686 }
1687
1688 return removeNullFromObject ( $tinfo );
1689 }
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704 /Returns tracker data object
1705 public function getTrackerDataObject_mongo_fleetListView ($tracker, $fetchRecords = true, $trec = false, $sortedReverse = false, $currentTrip = false) {
1706 global $GMONGO;
1707
1708 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
1709
1710 $tinfo = new trackerInfoRecord ();
1711 $tinfo->name = $tracker ['name'];
1712 $tinfo->fscode = $tracker ['type'];
1713 $tinfo->tid = $tracker ['trackerid'];
1714 $tinfo->simno = $tracker ['simno'];
1715 $tinfo->searchKeywords = $tracker ['searchKeywords'];
1716 $tinfo->imei = $tracker ['imei'];
1717 $tinfo->trackerSerial = $tracker ['trackerSerial'];
1718 $tinfo->iconText = $tracker ['iconText'];
1719 $tinfo->licensePlate = $tracker ['licensePlate'];
1720 $tinfo->maxrpm = $tracker ['maxrpm'];
1721 $tinfo->hLocations = array ();
1722 $tinfo->cT = $this->getTrackerInfoField ( $tracker );
1723 $tinfo->trackingType = isset ( $tracker ['apptype'] ) ? $tracker ['apptype'] : (isset ( $this->trackerTypes [$tracker ['type']] ) ? $this->trackerTypes [$tracker ['type']] ['trackingType'] : 'VEHICLE');
1724 $tinfo->cStamp = time ();
1725 //$tinfo->iconid = 1;
1726 $tinfo->iconid = $tracker['iconid'];
1727 /*if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
1728 $tinfo->iconid = 'default';*/
1729 if (isset($tracker['groups']))
1730 $tinfo->groups = $tracker['groups'];
1731
1732 if ($fetchRecords == true) {
1733
1734 $this->dCache_validateCache($tracker ['trackerid']);
1735
1736 $cTS = (int)$_SESSION ['dCache'] [$tracker ['trackerid']][0];
1737 file_put_contents('php://stderr', print_r("\nin tracker id ----- ---- \n", TRUE));
1738file_put_contents('php://stderr', print_r($tracker['trackerid'], TRUE));
1739
1740file_put_contents('php://stderr', print_r("\nin tracker id CTSSSSS ----- ---- \n", TRUE));
1741file_put_contents('php://stderr', print_r($cTS, TRUE));
1742
1743 //if ($cTS == 0 || $cTS == null)
1744 $cTS = (time() - (1 * 100));
1745
1746 $trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array("timestamp" => array('$gte' => $cTS), 'latitude' => array('$exists' => 1, '$ne' => null)));
1747
1748 if($trec && count($trec) > 0){
1749
1750 }
1751 else{
1752 $trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array('latitude' => array('$exists' => 1, '$ne' => null)),10);
1753 }
1754
1755
1756 } else {
1757 if ($trec != false) {
1758 if ($sortedReverse == false)
1759 $trec = array_reverse ( $trec );
1760 $_SESSION ['dCache'] [$tracker ['trackerid']][0] = $trec [0] ['timestamp'];
1761 if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [4])) //Check
1762 unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [4]);
1763 }
1764 }
1765
1766 if (isset ($_GET ['update']) && $_GET ['update'] == 1) {
1767 if ($trec == false)
1768 return false;
1769
1770 else if ($trec [0] ['timestamp'] == $_SESSION ['dCache'] [$tracker ['trackerid']][0]) {
1771 //If no update is present
1772 //Get packet with no location
1773 $linput = $GMONGO->getLastAMRecord($tinfo->tid);
1774 if ($linput == false) return false;
1775
1776 $ltimestamp = $linput[0]['timestamp'];
1777 $ptimestamp = $trec[0]['timestamp'];
1778
1779 if ($ptimestamp > $ltimestamp) return false;
1780
1781 if ((time() - $ptimestamp) < NON_WORKING_TRACKER_TIME) {
1782
1783 if (($ltimestamp - $ptimestamp) < NO_GPS_ICON_TIME)
1784 return false;
1785 else if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]))
1786 return false;
1787 } else if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]))
1788 return false;
1789 } else {
1790 if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]))
1791 unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]);
1792
1793 if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]))
1794 unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]);
1795 }
1796 }
1797
1798 if ($trec == false) {
1799 srand();
1800 $tinfo->status = 'n';
1801 $tinfo->iconIndex = $this->getIconIndex($tinfo->status);
1802 $tinfo = removeNullFromObject($tinfo);
1803 return $tinfo;
1804 }
1805
1806 $trec_count = count($trec);
1807
1808 if ($trec_count > 2) {
1809 for ($x = $trec_count - 2; $x > 0; $x--) {
1810 $n = new trackerRecord ();
1811 foreach ($n as $k => $v)
1812 $n->{$k} = $trec [$x] [$k];
1813
1814 $fnsdate->setUTCDate($n->date, $n->time);
1815 $n->timeString = $fnsdate->getFormattedTimeString();
1816 array_push($tinfo->hLocations, $n);
1817 }
1818 }
1819
1820 $fdate = new FNSDateTime($_SESSION['timezone']);
1821 $fdate->setTimestamp($trec[0]['timestamp']);
1822
1823 $tinfo->latitude = $trec [0] ['latitude'];
1824 $tinfo->longitude = $trec [0] ['longitude'];
1825 $tinfo->speed = $trec [0] ['speed'];
1826 $tinfo->direction = $trec [0] ['direction'];
1827 //$tinfo->date = $fdate->UTCDateString;
1828 //$tinfo->time = $fdate->UTCTime;
1829 $tinfo->date = $trec[0]['date'];
1830 $tinfo->time = $trec [0] ['time'];
1831
1832 $maglobals = $this->getMAGLOBALSrecord($tinfo->tid);
1833 //$tinfo->timestamp = $trec [0] ['timestamp'];
1834 $tinfo->timestamp = (int)$maglobals [0] ['timestamp'];
1835 //echo "\r\ntimestamp ".$tinfo->timestamp;
1836 //var_dump($maglobals);
1837
1838 $_SESSION ['dCache'] [$tinfo->tid] [0] = $trec[0]['timestamp'];
1839
1840
1841 //$inputs = $trec;
1842 $inputs = $this->getInputs ( $tinfo->tid, false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
1843
1844 //Inputs start
1845 if ($inputs != false) {
1846 for($i = 1; $i <= 5; $i ++) {
1847 if (isset ( $inputs [0] ['fuel' . $i] ))
1848 $tinfo->{'fuel' . $i} = $inputs [0] ['fuel' . $i];
1849
1850 if (isset ( $inputs [0] ['temperature' . $i] ))
1851 $tinfo->{'temperature' . $i} = $inputs [0] ['temperature' . $i];
1852 }
1853
1854 if (isset ( $inputs ['0'] ['ibattery'] ))
1855 $tinfo->ibattery = $inputs ['0'] ['ibattery'];
1856
1857 $tinfo->IO = $inputs [0] ['IO'];
1858
1859 $tinfo->JStr = $inputs [0] ['misc'];
1860
1861 if (isset ( $tracker ['privatePublicUse'] ) && $tracker ['privatePublicUse'] == 1)
1862 $tinfo->privatePublic = $inputs [0] ['private'];
1863
1864 //if ($currentTrip){
1865 if ($currentTrip || (isset ( $_GET ['update'] ) && $_GET ['update'] == 1)){
1866 $tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
1867 $tinfo->driver = $this->getDriverName ( $tinfo->tid );
1868 }
1869 //$tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
1870 if ($tinfo->odometer == false)
1871 $tinfo->odometer = null;
1872
1873 //$tinfo->driver = $this->getDriverName ( $tinfo->tid );
1874 } else {
1875
1876 for($i = 1; $i <= 5; $i ++) {
1877 $tinfo->{'fuel' . $i} = null;
1878 $tinfo->{'temperature' . $i} = null;
1879 }
1880
1881 $tinfo->IO = null;
1882 $tinfo->odometer = null;
1883 $tinfo->privatePublic = 0;
1884 } //Inputs end
1885
1886 $tinfo->status = $this->getStatus($tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO);
1887
1888 if ($tinfo->status == 'm' || $tinfo->status == 'i' || $tinfo->status == 's') {
1889
1890 $linput = $this->getInputs($tinfo->tid);
1891
1892 if ($linput != false) {
1893 //if (isset($trec[0]['latitude']) == false) {
1894 $ltimestamp = $linput [0] ['timestamp'];
1895 $aglobals = $trec = $this->getAGLOBALSrecord($tinfo->tid);
1896 //$ptimestamp = $tinfo->timestamp;
1897 $ptimestamp = $aglobals[0]['timestamp'];
1898
1899 if (($ltimestamp - $ptimestamp) > NO_GPS_ICON_TIME) {
1900 //////////////////////////////////////////////////////////////echo "ltimestamp ".$ltimestamp, " ptimestamp ".$ptimestamp."\r\n";
1901 $tinfo->status = 'g';
1902 /////////////////////////////////////var_dump($tinfo);
1903 /////////////////////////////////die;
1904 $_SESSION ['dCache'] [$tracker ['trackerid']] [2] = true;
1905 }
1906 //}
1907 }
1908 } else {
1909 $_SESSION ['dCache'] [$tracker ['trackerid']] [5] = true;
1910 }
1911
1912 //To remove any previous data if last packet has ignition
1913 if (($tinfo->status == 'n' || $tinfo->status == 's') && $currentTrip) {
1914 $tinfo->hLocations = array();
1915 }
1916
1917 $tinfo->iconIndex = $this->getIconIndex($tinfo->status, $tinfo->latitude, $tinfo->timestamp);
1918
1919 $fnsdate->setUTCDate($tinfo->date, $tinfo->time);
1920 $tinfo->dateString = $fnsdate->getFormattedString();
1921 $tinfo->timeString = $fnsdate->getFormattedTimeString();
1922
1923
1924 $tinfo->events = $this->getTrackersEvents($tinfo->tid, $currentTrip);
1925
1926
1927 $duration = $this->getTrackerDuration ( $tinfo->tid, $tinfo->status );
1928
1929 if ($duration != false) {
1930 $fnsdate->setUTCDate ( $duration->date, $duration->time );
1931 $tinfo->durationStamp = $fnsdate->dateTime->getTimestamp ();
1932 } else {
1933 $tinfo->durationStamp = null;
1934 }
1935
1936 if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] ) == false) {
1937
1938 if (count ( $tinfo->hLocations ) > 0)
1939 $sObj = $tinfo->hLocations [0];
1940 else
1941 $sObj = $tinfo;
1942
1943 $fnsdate->setUTCDate ( $sObj->date, $sObj->time );
1944
1945 if ($currentTrip) {
1946 if ($tinfo->status == 'm' || $tinfo->status == 'i' || ($tinfo->status == 'g' && count($tinfo->hLocations) > 0)) {
1947 $tinfo->sTime = $fnsdate->getFormattedString ();
1948 $tinfo->sLatitude = $sObj->latitude;
1949 $tinfo->sLongitude = $sObj->longitude;
1950 }
1951 } else {
1952 $tinfo->sTime = $fnsdate->getFormattedString ();
1953 $tinfo->sLatitude = $sObj->latitude;
1954 $tinfo->sLongitude = $sObj->longitude;
1955 }
1956
1957 $_SESSION ['dCache'] [$tracker ['trackerid']] [4] = true;
1958
1959 }
1960
1961 return removeNullFromObject ( $tinfo );
1962 }
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994 public function getMAGLOBALSrecord($tid){
1995 $query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$tid."'";
1996 $this->dbclass->execute_query($query);
1997 return $this->dbclass->get_result_complete();
1998 }
1999
2000 public function getAGLOBALSrecord($tid){
2001 $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$tid."'";
2002 $this->dbclass->execute_query($query);
2003 return $this->dbclass->get_result_complete();
2004 }
2005
2006 public function getTrackerDataObject_new ($tracker, $fetchRecords = false, $trec = false, $sortedReverse = false, $currentTrip = false) {
2007 global $GMONGO;
2008
2009 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
2010
2011 $tinfo = new trackerInfoRecord ();
2012 $tinfo->name = $tracker ['name'];
2013 $tinfo->fscode = $tracker ['type'];
2014 $tinfo->tid = $tracker ['trackerid'];
2015 $tinfo->simno = $tracker ['simno'];
2016 $tinfo->searchKeywords = $tracker ['searchKeywords'];
2017 $tinfo->imei = $tracker ['imei'];
2018 $tinfo->trackerSerial = $tracker ['trackerSerial'];
2019 $tinfo->iconText = $tracker ['iconText'];
2020 $tinfo->licensePlate = $tracker ['licensePlate'];
2021 $tinfo->maxrpm = $tracker ['maxrpm'];
2022 $tinfo->hLocations = array ();
2023 $tinfo->cT = $this->getTrackerInfoField ( $tracker );
2024 $tinfo->trackingType = isset ( $tracker ['apptype'] ) ? $tracker ['apptype'] : (isset ( $this->trackerTypes [$tracker ['type']] ) ? $this->trackerTypes [$tracker ['type']] ['trackingType'] : 'VEHICLE');
2025 $tinfo->cStamp = time ();
2026 $tinfo->iconid = $tracker['iconid'];
2027 /*$tinfo->iconid = 1;
2028 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
2029 $tinfo->iconid = 'default';
2030 */
2031 if (isset($tracker['users']))
2032 $tinfo->users = $tracker['users'];
2033
2034 if (isset($tracker['groups']))
2035 $tinfo->groups = $tracker['groups'];
2036
2037 $this->dCache_validateCache ( $tracker ['trackerid'] );
2038 $cTS = $_SESSION ['dCache'] [$tracker ['trackerid']][0];
2039
2040 $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$tracker['trackerid']."' AND timestamp >= $cTS";
2041 $this->dbclass->execute_query($query);
2042 $result = $this->dbclass->get_result_complete();
2043 if (!$result) {
2044 $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$tracker['trackerid']."'";
2045 $this->dbclass->execute_query($query);
2046 $result = $this->dbclass->get_result_complete();
2047 }
2048 $trec = $result;
2049
2050 /*if (!$result) {
2051 echo $query;
2052 var_dump($result);
2053 die;
2054 }*/
2055 //var_dump($result);
2056 //die;
2057
2058 if (isset ( $_GET ['update'] ) && $_GET ['update'] == 1) {
2059 if ($trec == false)
2060 return false;
2061 else if ($trec [0] ['timestamp'] == $_SESSION ['dCache'] [$tracker ['trackerid']][0]) {
2062 //If no update is present
2063 //Get packet with no location
2064 $linput = $this->getMAGLOBALSrecord($tinfo->tid);
2065 if ($linput == false) return false;
2066
2067 $ltimestamp = $linput[0]['timestamp'];
2068 $ptimestamp = $trec[0]['timestamp'];
2069
2070 if ($ptimestamp > $ltimestamp) return false;
2071
2072 if ((time () - $ptimestamp) < NON_WORKING_TRACKER_TIME) {
2073
2074 if (($ltimestamp - $ptimestamp) < NO_GPS_ICON_TIME)
2075 return false;
2076 else if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] ))
2077 return false;
2078 } else if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] ))
2079 return false;
2080 } else {
2081 if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] ))
2082 unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] );
2083
2084 if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] ))
2085 unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] );
2086 }
2087 }
2088
2089 if ($trec == false) {
2090 srand ();
2091 $tinfo->status = "n";
2092 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status);
2093 $tinfo = removeNullFromObject ( $tinfo );
2094 return $tinfo;
2095 }
2096
2097
2098 $fdate = new FNSDateTime($_SESSION['timezone']);
2099 $fdate->setTimestamp($trec[0]['timestamp']);
2100
2101 $tinfo->latitude = $trec [0] ['latitude'];
2102 $tinfo->longitude = $trec [0] ['longitude'];
2103 $tinfo->speed = $trec [0] ['speed'];
2104 $tinfo->direction = $trec [0] ['direction'];
2105 $tinfo->date = $fdate->UTCDateString;
2106 $tinfo->time = $fdate->UTCTime;
2107 $tinfo->timestamp = $trec [0] ['timestamp'];
2108
2109
2110 $_SESSION ['dCache'] [$tinfo->tid] [0] = $trec[0]['timestamp'];
2111
2112 //$inputs = $trec;
2113 //$inputs = false; $this->getInputs ( $tinfo->tid ); // , false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
2114 //$inputs = $this->getInputs ( $tinfo->tid ); // , false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
2115 $inputs = false;
2116
2117 //Inputs start
2118 if ($inputs != false) {
2119 for($i = 1; $i <= 5; $i ++) {
2120 if (isset ( $inputs [0] ['fuel' . $i] ))
2121 $tinfo->{'fuel' . $i} = $inputs [0] ['fuel' . $i];
2122
2123 if (isset ( $inputs [0] ['temperature' . $i] ))
2124 $tinfo->{'temperature' . $i} = $inputs [0] ['temperature' . $i];
2125 }
2126
2127 if (isset ( $inputs ['0'] ['ibattery'] ))
2128 $tinfo->ibattery = $inputs ['0'] ['ibattery'];
2129
2130 $tinfo->IO = $inputs [0] ['IO'];
2131
2132 $tinfo->JStr = $inputs [0] ['misc'];
2133
2134 if (isset ( $tracker ['privatePublicUse'] ) && $tracker ['privatePublicUse'] == 1)
2135 $tinfo->privatePublic = $inputs [0] ['private'];
2136
2137 $tinfo->odometer = null;
2138
2139 } else {
2140
2141 for($i = 1; $i <= 5; $i ++) {
2142 $tinfo->{'fuel' . $i} = null;
2143 $tinfo->{'temperature' . $i} = null;
2144 }
2145
2146 $tinfo->IO = null;
2147 $tinfo->odometer = null;
2148 $tinfo->privatePublic = 0;
2149 } //Inputs end
2150
2151 $tinfo->IO = $trec[0]['IO'];
2152
2153 $tinfo->status = $this->getStatus ( $tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO );
2154
2155 if ($tinfo->status == 'm' || $tinfo->status == 'i' || $tinfo->status == 's') {
2156
2157 $linput = $this->getMAGLOBALSrecord($tinfo->tid);
2158
2159 if ($linput != false) {
2160 $ltimestamp = $linput [0] ['timestamp'];
2161 $ptimestamp = $tinfo->timestamp;
2162
2163 if (($ltimestamp - $ptimestamp) > NO_GPS_ICON_TIME) {
2164 $tinfo->status = 'g';
2165 $_SESSION ['dCache'] [$tracker ['trackerid']] [2] = true;
2166 }
2167 }
2168 } else {
2169 $_SESSION ['dCache'] [$tracker ['trackerid']] [5] = true;
2170 }
2171
2172
2173 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status, $tinfo->latitude, $tinfo->timestamp );
2174
2175 $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
2176 $tinfo->dateString = $fnsdate->getFormattedString ();
2177 $tinfo->timeString = $fnsdate->getFormattedTimeString ();
2178
2179 //$tinfo->events = $this->getTrackersEvents ( $tinfo->tid, $currentTrip );
2180
2181 /*$duration = $this->getTrackerDuration ( $tinfo->tid, $tinfo->status );
2182
2183 if ($duration != false) {
2184 $fnsdate->setUTCDate ( $duration->date, $duration->time );
2185 $tinfo->durationStamp = $fnsdate->dateTime->getTimestamp ();
2186 } else {
2187 $tinfo->durationStamp = null;
2188 }*/
2189 $tinfo->durationStamp = null;
2190
2191 return removeNullFromObject ( $tinfo );
2192 }
2193
2194
2195 public function getReportDebuggerTrackers ($tracker, $fetchRecords = true, $trec = false, $sortedReverse = false, $currentTrip = false) {
2196
2197 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
2198
2199 $tinfo = new trackerInfoRecord ();
2200 $tinfo->name = $tracker ['name'];
2201 $tinfo->fscode = $tracker ['type'];
2202 $tinfo->tid = $tracker ['trackerid'];
2203 $tinfo->simno = $tracker ['simno'];
2204 $tinfo->searchKeywords = $tracker ['searchKeywords'];
2205 $tinfo->imei = $tracker ['imei'];
2206 $tinfo->trackerSerial = $tracker ['trackerSerial'];
2207 $tinfo->iconText = $tracker ['iconText'];
2208 $tinfo->licensePlate = $tracker ['licensePlate'];
2209
2210 if (isset($tracker['groups']))
2211 $tinfo->groups = $tracker['groups'];
2212
2213 $query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$tracker['trackerid']."'";
2214 $this->dbclass->execute_query ( $query );
2215 $trec = $this->dbclass->get_result_complete ();
2216
2217 //$trec = $GMONGO->getLastARecord($tracker['trackerid']);
2218
2219 if ($trec == false) {
2220 srand ();
2221 $tinfo->status = "n";
2222 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status);
2223 $tinfo = removeNullFromObject ( $tinfo );
2224 return $tinfo;
2225 }
2226
2227 if ($trec[0]['latitude'] == NULL || $trec[0]['longitude'] == NULL) {
2228 $tinfo->status = 'g';
2229 } else {
2230 $tinfo->status = $this->getStatus ( $tinfo->tid, $trec[0]['date'], $trec[0]['time'], $trec[0]['speed'], $trec[0]['IO'] );
2231 }
2232
2233 $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status, $tinfo->latitude, $tinfo->timestamp );
2234
2235 return removeNullFromObject ( $tinfo );
2236 }
2237
2238 public function getReportTrackers () {
2239 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
2240
2241 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
2242 $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']."'";
2243 } elseif ($_SESSION['accounttype'] == USERTYPE_FLEET) {
2244 $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}\"";
2245 }
2246 $this->dbclass->execute_query ( $query );
2247 $trackers = $this->dbclass->get_result_complete ();
2248
2249 if ($_SESSION['accounttype'] == USERTYPE_FLEET)
2250 $trackers = $this->filterExpiredTrackers ( $trackers );
2251
2252 $trackersList = array ();
2253
2254 if ($trackers == false)
2255 return $trackersList;
2256
2257 $tracker_count = count ( $trackers );
2258
2259 if ($tracker_count == 0)
2260 return $trackersList;
2261
2262 for($b = 0; $b < $tracker_count; $b ++) {
2263
2264 $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$trackers [$b]['trackerid']}'";
2265 $this->dbclass->execute_query($query);
2266 $groups = $this->dbclass->get_result_complete();
2267
2268 if ($groups != false) {
2269 $gid = array_map(function ($a) {
2270 return $a['groupName'];
2271 }, $groups);
2272 $trackers [$b]['groups'] = implode(',', $gid);
2273 }
2274
2275 $tinfo = $this->getReportDebuggerTrackers($trackers [$b] );
2276 if ($tinfo != false)
2277 array_push ( $trackersList, $tinfo );
2278 }
2279 return $trackersList;
2280 }
2281
2282 public function getTrackerPosition($trackerid) {
2283 $username = $this->dbclass->get_escape_string($_SESSION['username']);
2284 //$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."'";
2285 $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."'";
2286 $this->dbclass->execute_query ( $query );
2287 $trackers = $this->dbclass->get_result_complete ();
2288
2289 $trackersList = array ();
2290
2291 if ($trackers == false)
2292 return false;
2293
2294 //foreach ($trackers as $t) {
2295 //if (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid'] )
2296 // $tinfo = $this->getTrackerDataObject_mongo ( $t );
2297 //else
2298 // $tinfo = $this->getTrackerDataObject_new ( $t );
2299 $tinfo = $this->getTrackerDataObject_new ( $trackers[0] );
2300
2301 //if ($tinfo != false) array_push ( $trackersList, $tinfo );
2302 if ($tinfo != false) return $tinfo;
2303
2304 return false;
2305 //}
2306 /*$totalTrackers = count($trackersList);
2307 if ($totalTrackers) {
2308 $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'admin');
2309 }*/
2310
2311 //return $trackersList;
2312 }
2313
2314 /* For Maliatec Medco */
2315 public function getTrackerLastLatLng ($tid) {
2316 global $GMONGO;
2317 $trec = $GMONGO->getLastARecord($tid);
2318 //var_dump($trec);
2319 //die('check');
2320 return $trec;
2321 }
2322
2323 public function getTrackerInformation($tid) {
2324 $query = "SELECT * FROM trackers inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE trackerid=\"{$tid}\"";
2325 $this->dbclass->execute_query ( $query );
2326 return $this->dbclass->get_result_complete ();
2327 }
2328
2329 public function getDebuggerTrackers() {
2330 $username = $this->dbclass->get_escape_string($_SESSION['username']);
2331 $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."'";
2332 $this->dbclass->execute_query ( $query );
2333 $trackers = $this->dbclass->get_result_complete ();
2334
2335 $trackersList = array ();
2336
2337 if ($trackers == false)
2338 return $trackersList;
2339
2340
2341 foreach ($trackers as $t) {
2342 //session_start();
2343
2344 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR && !isset($_GET['update'])) {
2345 $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$t['trackerid']}\"";
2346 $this->dbclass->execute_query ( $query );
2347 $users = $this->dbclass->get_result_complete();
2348
2349 if ($users != false) {
2350 $arr = array_map(function($a){ return $a['username']; }, $users);
2351 $t ['users'] = implode(",", $arr);
2352 }
2353 }
2354
2355 $iconid = $this->getTrackerIconid($t['trackerid']);
2356 $t['iconid'] = $iconid[0]['iconid'];
2357
2358 if (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid'] )
2359 $tinfo = $this->getTrackerDataObject_mongo ( $t );
2360 else
2361 $tinfo = $this->getTrackerDataObject_new ( $t );
2362 //session_write_close();
2363
2364 if ($tinfo != false) array_push ( $trackersList, $tinfo );
2365 //usleep(250000);
2366 }
2367
2368 $totalTrackers = count($trackersList);
2369 if ($totalTrackers) {
2370 $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'admin');
2371 }
2372
2373 return $trackersList;
2374 }
2375
2376 /*public function getDebuggerTrackers() {
2377 global $GDATABASE;
2378
2379 $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']."'";
2380 //$query = "SELECT * FROM trackers inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid)";
2381 $this->dbclass->execute_query ( $query );
2382 $trackers = $this->dbclass->get_result_complete ();
2383
2384 $trackersList = array ();
2385
2386 if ($trackers == false)
2387 return $trackersList;
2388
2389 $tracker_count = count ( $trackers );
2390
2391 $gm = new FNSGearman();
2392
2393 for($b = 0; $b < $tracker_count; $b ++) {
2394 $dCache = $_SESSION['dCache'][$trackers[$b]['trackerid']];
2395 $eCache = $_SESSION['eCache'][$trackers[$b]['trackerid']];
2396 $arguments = array('trackers' => $trackers [$b], 'session' => $_SESSION, 'dCache' => $dCache, 'eCache' => $eCache);
2397 //print_r($arguments);
2398 //echo "ADDING TASK FOR TRACKER ID ".$trackers[$b]['trackerid']."\r\n";
2399 $gm->addTask('gtdom', json_encode($arguments), null,$trackers[$b]['trackerid']);
2400
2401
2402
2403 //$tinfo = $this->getTrackerDataObject_mongo ( $trackers [$b] );
2404 //if ($tinfo != false)
2405 // array_push ( $trackersList, $tinfo );
2406 }
2407 $gm->runTasks();
2408
2409 foreach ( FNSGearman::$results as $k => $v) {
2410 $row = json_decode($v, true);
2411
2412 //var_dump($row['tinfo']);
2413 /*
2414 if (is_array($row['tinfo']))
2415 array_push ( $trackersList, $row ['tinfo'] );
2416
2417 if (is_array($row['session']))
2418 $_SESSION = $row ['session'];*/
2419
2420 ///////////////////////////////array_push ( $trackersList, $row ['tinfo']);
2421
2422
2423 //print_r($row);
2424
2425 //$_SESSION = $v['session'];
2426 //$tname = $GDATABASE -> getTrackerName ( $k ) [0] ['name'];
2427 //print_r($v[]);
2428
2429 //foreach ($row as $l => $m) {
2430 //$data = json_decode($v, true);
2431 //var_dump($data);
2432
2433 /*comment $fdate = new FNSDateTime ( $_SESSION['timezone'] );
2434 $fdate->setLocalTimestamp ( $row [$l] ['td'] ['ts'] );
2435 $da [$i] ['date'] = $fdate ->dateTime -> format ( 'd-M' );
2436 $da [$i] ['distance'] = $row [$l] ['td'] ['d'];
2437 if ($da [$i] ['distance'] > 0) {
2438 $distance = $da [$i] ['distance'] * 0.621371;
2439 $da [$i] ['distance'] = $this->mConverter->convert($distance, 'D');
2440 }
2441 $da [$i] ['trackerid'] = 't'.$k;
2442 $da [$i] ['tname'] = $tname;
2443 $i++;*/
2444 //}
2445 ///////////////////////////////}
2446 //die;
2447 ///////////////////////////////return $trackersList;
2448 ///////////////////////////////}
2449
2450 public function getLastARecord($tid, $limit = 1) {
2451 global $GMONGO;
2452 return $GMONGO -> getAMRecord_reverseSorted($tid, array('latitude' => array('$exists' => true, '$ne' => null)), $limit);
2453 }
2454
2455 public function getLastWayPoint($tid, $poiID) {
2456 $query = "SELECT * from poiVisits WHERE trackerid='$tid' AND poiID='$poiID' ORDER BY date DESC,time DESC LIMIT 0,1";
2457 $this->dbclass->execute_query ( $query );
2458 return $this->dbclass->get_result_complete ();
2459 }
2460
2461 public function createWayPointEvent($username, $tid, $date, $time, $poiID) {
2462 $query = "INSERT INTO poiVisits SET date='$date', time='$time', username='$username', trackerid = '$tid', poiID='$poiID'";
2463 $this->dbclass->execute_query ( $query );
2464 }
2465
2466 public function createPOIMailerEvent($tid, $username, $date, $time, $event, $desc) {
2467 $query = "INSERT INTO POIMailer SET date='$date', time='$time', eventno='$event', description='$desc', vehicleid='$tid', username='$username'";
2468 $this->dbclass->execute_query ( $query );
2469 }
2470
2471 public function pullPOIMailer(){
2472 $query = "SELECT * from POIMailer";
2473 $this->dbclass->execute_query ( $query );
2474 $ans = $this->dbclass->get_result_complete ();
2475
2476 $query = "DELETE from POIMailer where ID <= ". $ans[count($ans)-1]['id'];
2477 $this->dbclass->execute_query ( $query );
2478
2479 return $ans;
2480 }
2481
2482
2483
2484 public function createEvent($tid, $username, $date, $time, $latitude, $longitude, $speed, $direction, $event, $desc) {
2485 global $GMONGO;
2486 /*$query = "INSERT INTO E{$tid} SET date='$date', time='$time', latitude='$latitude', longitude = '$longitude', speed='$speed', direction='$direction', event='$event', description='$desc'";
2487 $this->dbclass->execute_query ( $query );*/
2488 $records = array();
2489 $records['date'] = $date;
2490 $records['time'] = $time;
2491 $records['latitude'] = $latitude;
2492 $records['longitude'] = $longitude;
2493 $records['speed'] = $speed;
2494 $records['direction'] = $direction;
2495 $records['event'] = $event;
2496 $records['description'] = $desc;
2497
2498 $GMONGO->insertRecordIntoE($tid, $records);
2499
2500 $query = "INSERT INTO mailer SET date='$date', time='$time', eventno='$event', description='$desc', vehicleid='$tid', username='$username'";
2501 $this->dbclass->execute_query ( $query );
2502 }
2503
2504 public function getTrackersMap($username) {
2505 $username = $this->dbclass->get_escape_string ( $username );
2506 $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}\"";
2507 $this->dbclass->execute_query ( $query );
2508 $trackers = $this->dbclass->get_result_complete ();
2509
2510 $trackers = $this->filterExpiredTrackers ( $trackers );
2511 if (count ( $trackers ) == 0)
2512 return array ();
2513
2514 $tl = array ();
2515 if ($trackers != false) {
2516 foreach ( $trackers as $v ) {
2517 $tl [$v ['trackerid']] = $v;
2518 }
2519 }
2520 return $tl;
2521 }
2522 public function getUsersFromTracker($tid) {
2523 $query = "SELECT * FROM trackersMap WHERE trackerid=\"{$tid}\"";
2524 $this->dbclass->execute_query ( $query );
2525 return $this->dbclass->get_result_complete ();
2526 }
2527 /*public function getFleetTrackers() {
2528 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
2529 $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}\"";
2530 $this->dbclass->execute_query ( $query );
2531 $trackers = $this->dbclass->get_result_complete ();
2532
2533 $trackersList = array ();
2534 $trackers = $this->filterExpiredTrackers ( $trackers );
2535 $tracker_count = count ( $trackers );
2536 if ($tracker_count == 0)
2537 return $trackersList;
2538
2539 for($b = 0; $b < $tracker_count; $b ++) {
2540 $tinfo = $this->getTrackerDataObject ( $trackers [$b] );
2541 if ($tinfo != false)
2542 array_push ( $trackersList, $tinfo );
2543 }
2544
2545 return $trackersList;
2546 }*/
2547 public function getFleetTrackers() {
2548 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
2549 $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}\"";
2550 $this->dbclass->execute_query ( $query );
2551 $trackers = $this->dbclass->get_result_complete ();
2552
2553 $trackersList = array ();
2554 $trackers = $this->filterExpiredTrackers ( $trackers );
2555
2556 if ($trackers == false)
2557 return $trackersList;
2558
2559
2560 foreach ($trackers as $t) {
2561 $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$t['trackerid']}'";
2562 $this->dbclass->execute_query($query);
2563 $groups = $this->dbclass->get_result_complete();
2564
2565 if ($groups != false) {
2566 $gid = array_map(function ($a) {
2567 return $a['groupName'];
2568 }, $groups);
2569 $t['groups'] = implode(',', $gid);
2570 }
2571
2572 $iconid = $this->getTrackerIconid($t['trackerid']);
2573 $t['iconid'] = $iconid[0]['iconid'];
2574
2575 if (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid'] )
2576 $tinfo = $this->getTrackerDataObject_mongo ( $t );
2577 else
2578 $tinfo = $this->getTrackerDataObject_new ( $t );
2579
2580 //array_push ( $trackersList, $tinfo );
2581 if ($tinfo != false) array_push ( $trackersList, $tinfo );
2582 }
2583
2584 $totalTrackers = count($trackersList);
2585
2586 if ($totalTrackers) {
2587 $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'user');
2588 }
2589
2590 return $trackersList;
2591 }
2592
2593 public function getFleetListViewTrackers() {
2594 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
2595 $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}\"";
2596 $this->dbclass->execute_query ( $query );
2597 $trackers = $this->dbclass->get_result_complete ();
2598
2599 $trackersList = array ();
2600 $trackers = $this->filterExpiredTrackers ( $trackers );
2601
2602 if ($trackers == false)
2603 return $trackersList;
2604
2605
2606 foreach ($trackers as $t) {
2607
2608 $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$t['trackerid']}'";
2609 $this->dbclass->execute_query($query);
2610 $groups = $this->dbclass->get_result_complete();
2611
2612 if ($groups != false) {
2613 $gid = array_map(function ($a) {
2614 return $a['groupName'];
2615 }, $groups);
2616 $t['groups'] = implode(',', $gid);
2617 }
2618
2619 //if( (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid']) || isset($_GET['update']) )
2620 $tinfo = $this->getTrackerDataObject_mongo_fleetListView ( $t, true, false, false, true );
2621 //else
2622 //$tinfo = $this->getTrackerDataObject_mongo ( $t, false, false, false, true );
2623 //$tinfo = $this->getTrackerDataObject_new ( $t );
2624
2625 //array_push ( $trackersList, $tinfo );
2626 if ($tinfo != false) array_push ( $trackersList, $tinfo );
2627 }
2628
2629 $totalTrackers = count($trackersList);
2630
2631 if ($totalTrackers) {
2632 $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'user');
2633 }
2634
2635 return $trackersList;
2636 }
2637
2638 private function eCache_validateCache($tid) {
2639 global $GMONGO;
2640
2641 if (isset ( $_SESSION ['eCache'] ) == false) {
2642 $_SESSION ['eCache'] = array ();
2643 }
2644
2645 if (isset ( $_SESSION ['eCache'] [$tid] ) == false) {
2646 $trec = $GMONGO->getLastERecordLimitedField($tid, array(), array('timestamp' => true));
2647
2648 if ($trec != false) {
2649 $_SESSION ['eCache'] [$tid] = array ();
2650 $_SESSION ['eCache'] [$tid] [0] = $trec [0] ['timestamp'];
2651 } else {
2652 $_SESSION ['eCache'] [$tid] = array ();
2653 $_SESSION ['eCache'] [$tid] [0] = 0;
2654 }
2655 return false;
2656 }
2657 return true;
2658 }
2659 public function getTrackersEvents_withDateTime($tid, $sdate, $stime, $edate, $etime) {
2660 global $GMONGO;
2661
2662 $events = array ();
2663
2664 $periodClause = basicTransactions::getPeriodClause ( $sdate, $stime, $edate, $etime );
2665 $periodClauseMongo = basicTransactions::getPeriodClauseMongo ( $sdate, $stime, $edate, $etime );
2666
2667 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
2668
2669 /*$QUERY = "SELECT * from E{$tid} WHERE $periodClause ORDER by date,time";
2670 $this->dbclass->execute_query ( $QUERY );
2671 $trec = $this->dbclass->get_result_complete ();*/
2672
2673 $trec = $GMONGO->getERecords($tid, $periodClauseMongo);
2674
2675 if ($trec == false)
2676 return;
2677
2678 $trCount = count ( $trec );
2679
2680 for($c = 0; $c < $trCount; $c ++) {
2681 $tinfo = new trackerEvent ();
2682 $tinfo->latitude = $trec [$c] ['latitude'];
2683 $tinfo->longitude = $trec [$c] ['longitude'];
2684 $tinfo->speed = $trec [$c] ['speed'];
2685 $tinfo->direction = $trec [$c] ['direction'];
2686 $tinfo->date = $trec [$c] ['date'];
2687 $tinfo->time = $trec [$c] ['time'];
2688 $tinfo->eventno = $trec [$c] ['event'];
2689 $tinfo->description = utf8_encode($trec [$c] ['description']->bin);
2690
2691 $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
2692 $tinfo->dateString = $fnsdate->getFormattedString ();
2693
2694 array_push ( $events, $tinfo );
2695 }
2696
2697 return $events;
2698 }
2699 public function getTrackersEvents($tid, $currentTrip = false) {
2700 global $GMONGO;
2701
2702 $events = array ();
2703
2704 if ($this->eCache_validateCache ( $tid ) == false) {
2705 //return;
2706 }
2707
2708 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
2709
2710 // $this->eCache_validateCache($tid);
2711
2712 if (isset ( $_SESSION ['eCache'] [$tid] ) == false) {
2713 return $events;
2714 }
2715
2716 //if (isset($_GET['update']) || $currentTrip == true) {
2717 if ($currentTrip == true) {
2718 //$ts = time() - 86400;
2719 $ts = time() - (EVENTS_FETCH_TIME * 3600);
2720 //$ts = $_SESSION['eCache'] [$tid] [0];
2721 } else {
2722 //$ts = time() - 86400;
2723 //$ts = time();
2724 $ts = $_SESSION['eCache'] [$tid] [0];
2725 }
2726
2727 $queryCriteria = array('timestamp' => array('$gt' => $ts));
2728 $trec = $GMONGO -> getERecords($tid, $queryCriteria);
2729 /*$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";
2730 $this->dbclass->execute_query ( $QUERY );
2731 $trec = $this->dbclass->get_result_complete ();*/
2732
2733 if ($trec == false)
2734 return $events;
2735
2736 $trCount = count ( $trec );
2737
2738 for($c = 0; $c < $trCount; $c ++) {
2739 $tinfo = new trackerEvent ();
2740 $tinfo->latitude = $trec [$c] ['latitude'];
2741 $tinfo->longitude = $trec [$c] ['longitude'];
2742 $tinfo->speed = $trec [$c] ['speed'];
2743 $tinfo->direction = $trec [$c] ['direction'];
2744 $tinfo->date = $trec [$c] ['date'];
2745 $tinfo->time = $trec [$c] ['time'];
2746 $tinfo->eventno = $trec [$c] ['event'];
2747 $tinfo->description = utf8_encode($trec [$c] ['description'] -> bin);
2748
2749 $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
2750 $tinfo->dateString = $fnsdate->getFormattedString ();
2751
2752 array_push ( $events, $tinfo );
2753 }
2754
2755 if ($c >= 1) {
2756 //$_SESSION ['eCache'] [$tid] [0] = $trec [$c - 1] ['date'];
2757 //$_SESSION ['eCache'] [$tid] [1] = $trec [$c - 1] ['time'];
2758 $_SESSION ['eCache'] [$tid] [0] = $trec [$c - 1] ['timestamp'];
2759 }
2760
2761 return $events;
2762 }
2763
2764
2765 public function getTrackersDatabase($logicalGroups = false, $username = "") {
2766 global $GMONGO;
2767
2768 // Get Escape string for Username
2769 $username = $this->dbclass->get_escape_string ( $username );
2770
2771 // Fetch Groups based on logicalGroups selection from the database
2772 $query = $logicalGroups ? "SELECT name as groups FROM logicalGroups WHERE username=\"$username\" ORDER BY name" : "SELECT username as groups FROM Users ORDER BY username";
2773 $this->dbclass->execute_query ( $query );
2774 $groups = $this->dbclass->get_result_complete ();
2775
2776 if ($groups == false) {
2777 return false;
2778 }
2779
2780 $groups_count = count ( $groups );
2781
2782 $returnAnswer = array ();
2783
2784 // Starts iterating among groups
2785 for($a = 0; $a < $groups_count; $a ++) {
2786 $groupObject = new groupRecord ();
2787 $groupObject->name = base64_encode ( $groups [$a] ['groups'] );
2788 $groupObject->list = array ();
2789 array_push ( $returnAnswer, $groupObject );
2790
2791 $gname = $this->dbclass->get_escape_string ( $groups [$a] ['groups'] );
2792 $query = $logicalGroups ? "SELECT * FROM trackers WHERE username=\"$username\" AND logicalGroup=\"$gname\"" : "SELECT * FROM trackers WHERE username=\"$gname\" ORDER BY name";
2793 $this->dbclass->execute_query ( $query );
2794 $trackers = $this->dbclass->get_result_complete ();
2795
2796 if ($trackers == false)
2797 continue;
2798
2799 $tracker_count = count ( $trackers );
2800
2801 for($b = 0; $b < $tracker_count; $b ++) {
2802 $tinfo = new trackerInfoRecord ();
2803 $tinfo->name = base64_encode ( $trackers [$b] ['name'] );
2804 $tinfo->fscode = $trackers [$b] ['type'];
2805 $tinfo->tid = $trackers [$b] ['trackerid'];
2806
2807 $trec = $GMONGO -> getLastARecord($trackers[$b]['trackerid']);
2808
2809 if ($trec == false) {
2810 $tinfo->status = "n";
2811 array_push ( $groupObject->list, $tinfo );
2812 continue;
2813 }
2814
2815 $tinfo->latitude = $trec [0] ['latitude'];
2816 $tinfo->longitude = $trec [0] ['longitude'];
2817 $tinfo->speed = $trec [0] ['speed'];
2818 $tinfo->direction = $trec [0] ['direction'];
2819 $tinfo->date = $trec [0] ['date'];
2820 $tinfo->time = $trec [0] ['time'];
2821
2822 $inputs = $this->getInputs ( $tinfo->tid, false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
2823
2824 if ($inputs != false) {
2825 $tinfo->fuel = $inputs [0] ['fuel'];
2826 $tinfo->temperature = $inputs [0] ['temperature'];
2827 $tinfo->IO = $inputs [0] ['IO'];
2828 $tinfo->odometer = $inputs [0] ['odometer'];
2829 $tinfo->privatePublic = $inputs [0] ['private'];
2830 } else {
2831 $tinfo->fuel = - 1;
2832 $tinfo->temperature = - 1;
2833 $tinfo->IO = false;
2834 $tinfo->odometer = 0;
2835 $tinfo->privatePublic = 0;
2836 }
2837
2838 $tinfo->status = $this->getStatus ( $tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO );
2839
2840 array_push ( $groupObject->list, $tinfo );
2841 }
2842 }
2843 return $returnAnswer;
2844 }
2845 function getSnailTrack($tid, $nloc) {
2846 global $GMONGO;
2847 /*$query = "SELECT COUNT(*) FROM A{$tid} ORDER BY date,time";
2848 $this->dbclass->execute_query ( $query );
2849 $ans = $this->dbclass->get_result_complete ();*/
2850 $ans = $GMONGO->countDocumentsInA($tid);
2851
2852 /*if ($ans [0] ['COUNT(*)'] >= 5) {
2853 $naoffset = $ans [0] ['COUNT(*)'] - 5;
2854 } else if ($ans [0] ['COUNT(*)'] == 0) {
2855 return false;
2856 } else
2857 $naoffset = 0;*/
2858
2859 if ($ans >= 5) {
2860 $naoffset = $ans - 5;
2861 } else if ($ans == 0) {
2862 return false;
2863 } else
2864 $naoffset = 0;
2865
2866 //$nloc is limit and $naoffset will skip the result it works like LIMIT $naoffset, $nloc
2867 $ans = $GMONGO -> getAMRecord($tid, array('latitude' => array('$exists' => true, '$ne' => null)), $nloc, $naoffset);
2868
2869 return $ans;
2870 }
2871 public function checkTrackerID($tid) {
2872 if (strlen ( $tid ) < 6)
2873 return false;
2874 $query = "SELECT COUNT(*) FROM trackers WHERE trackerid=\"$tid\"";
2875 $this->dbclass->execute_query ( $query );
2876 $tcard = $this->dbclass->get_result_complete ();
2877
2878 if ($tcard == false)
2879 return false;
2880 if ($tcard [0] ['COUNT(*)'] > 0)
2881 return false;
2882
2883 return true;
2884 }
2885
2886 public function getTrackersInfo () {
2887 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
2888 if ($_SESSION ['accounttype'] == USERTYPE_SUPERUSER) {
2889 $QUERY = "SELECT trackerid,name FROM trackers inner join trackersExInfo using (trackerid)";
2890 $this->dbclass->execute_query ( $QUERY );
2891 }
2892 elseif ($_SESSION ['accounttype'] == USERTYPE_ADMINISTRATOR) {
2893 $QUERY = "SELECT trackerid,name FROM trackers inner join trackersExInfo using (trackerid)";
2894 $this->dbclass->execute_query ( $QUERY );
2895 } else {
2896 $QUERY = "SELECT trackerid,name FROM trackers INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersMap USING (trackerid) WHERE username=\"{$_SESSION ['username']}\"";
2897 $this->dbclass->execute_query ( $QUERY );
2898 }
2899
2900 $trackers = $this->dbclass->get_result_complete ();
2901 $trackers = $this->filterExpiredTrackers ( $trackers );
2902
2903 /*if ($trackers != false) {
2904 foreach ($trackers as $k => $v) {
2905 echo "tracker id".$v['trackerid']."";
2906 $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$v['trackerid']}\"";
2907 echo $query;
2908 $this->dbclass->execute_query ( $query );
2909 $trackers [$k] ['trackerExpiry'] = TrackerExpiry::checkExpiry ( $v ['trackerExpiry'] );
2910 $addKeywords = null;
2911
2912 while ( 1 ) {
2913 $user = $this->dbclass->get_result_row ();
2914 var_dump($user);
2915 if ($user == false)
2916 {die; break;}
2917 if ($addKeywords == null){
2918 $addKeywords = $user ['username'];
2919 echo $addKeywords."<br>";
2920 }
2921 else
2922 $addKeywords .= ", " . $user ['username'];
2923 }
2924 $trackers [$k] ['users'] = $addKeywords;
2925 }
2926 }*/
2927
2928 return $trackers;
2929 }
2930
2931
2932
2933
2934 public function getTrackerCard($trackerid) {
2935 $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\"";
2936 $this->dbclass->execute_query ( $query );
2937 $tcard = $this->dbclass->get_result_complete ();
2938 return $tcard;
2939 }
2940
2941 public function getTrackerCard_public($trackerid) {
2942 $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\"";
2943 $this->dbclass->execute_query ( $query );
2944 $tcard = $this->dbclass->get_result_complete ();
2945
2946 if ($tcard == false) return ERROR;
2947
2948 return $this->encrypt(json_encode($tcard[0]));
2949 }
2950
2951 public function getAccountCard($username) {
2952 $username = $this->dbclass->get_escape_string ( $username );
2953 $query = "SELECT * FROM Users WHERE username=\"$username\"";
2954 $this->dbclass->execute_query ( $query );
2955 $acard = $this->dbclass->get_result_complete ();
2956 return $acard;
2957 }
2958 public function updateTrackerCard() {
2959 $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 ";
2960 $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE trackerid=\"" . $_POST ['trackerid'] . "\"";
2961 $result = $this->dbclass->execute_query ( $query );
2962
2963 if ($result != true) {
2964 //$this->writeDebugLog ( "\r\n" . mysql_error ( $this->dbclass->dblink ) );
2965 $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
2966 return ERROR;
2967 }
2968
2969 return SUCCESS;
2970 }
2971 public function insertTrackerCard() {
2972 global $GMONGO;
2973 if (strlen ( $_POST ['trackerid'] ) < 6)
2974 return "false";
2975
2976 if (isset ( $_POST ['vehicleid'] ))
2977 unset ( $_POST ['vehicleid'] );
2978
2979 $QUERY_ARRAY = array();
2980
2981 array_push($QUERY_ARRAY, "INSERT INTO trackers SET trackerid = \"" . $_POST ['trackerid'] . "\"");
2982 array_push($QUERY_ARRAY, "INSERT INTO adminTrackersMap SET trackerid = \"" . $_POST ['trackerid'] . "\", username = \"" . $_SESSION['username'] . "\""); //Added in V5)
2983 array_push($QUERY_ARRAY, "INSERT INTO trackersFeatures SET trackerid = \"" . $_POST ['trackerid'] . "\"");
2984 array_push($QUERY_ARRAY, "INSERT INTO trackersDetails SET trackerid = \"" . $_POST ['trackerid'] . "\"");
2985 array_push($QUERY_ARRAY, "INSERT INTO trackersExInfo SET trackerid = \"" . $_POST ['trackerid'] . "\"");
2986 array_push($QUERY_ARRAY, "INSERT INTO napt SET vehicleid = \"" . $_POST ['trackerid'] . "\", ip=\"-1\", port=\"-1\", protocol=\"" . $_POST ['protocol'] . "\"");
2987 array_push($QUERY_ARRAY, "CREATE TABLE A{$_POST['trackerid']} like dataTable");
2988 array_push($QUERY_ARRAY, "CREATE TABLE E{$_POST['trackerid']} like eventsTable");
2989 array_push($QUERY_ARRAY,"CREATE TABLE M{$_POST['trackerid']} like miscTable");
2990 array_push($QUERY_ARRAY,"CREATE TABLE R{$_POST['trackerid']} like rTable");
2991 array_push($QUERY_ARRAY, "CREATE TABLE RN{$_POST['trackerid']} like rnTable");
2992 array_push($QUERY_ARRAY, "CREATE TABLE RT{$_POST['trackerid']} like rTable");
2993
2994 foreach ($QUERY_ARRAY as $query){
2995 $result = $this->dbclass->execute_query ( $query );
2996
2997 if ($result == false) {
2998 //$this->writeDebugLog ( "\r\n" . mysql_error ( $this->dbclass->dblink ) );
2999 $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
3000 return ERROR."::MySQL";
3001 }
3002 }
3003
3004 //$GMONGO->createIndex($_POST['trackerid'], array('timestamp' => 1));
3005 //$GMONGO->createIndex($_POST['trackerid'], array('timestamp' => -1));
3006 //$GMONGO->enableSharding($_POST['trackerid']);
3007
3008 return $this->updateTrackerCard ();
3009 }
3010
3011 public function insertAccount() {
3012 $query = "INSERT INTO Users SET ";
3013 $query .= basicTransactions::prepareMySQL_POSTRequest ();
3014 $result = $this->dbclass->execute_query ( $query );
3015
3016 if ($result != true) {
3017 //if (mysql_errno($this->dblink) == 1062)
3018 if ($this->dbclass->dblink->errno == 1062)
3019 return EXISTS;
3020 return ERROR;
3021 }
3022
3023 /******ADDED IN V5*******/
3024 $username = $this->dbclass->get_escape_string($_POST['username']);
3025 if ($_POST ['accounttype'] == 3 || $_POST ['accounttype'] == 5) {
3026 $query = "INSERT INTO logicalGroups_V5 SET username = '$username', adminUserName = \"" . $_SESSION['username'] . "\", accounttype = " . $_POST['accounttype'];
3027 $result = $this->dbclass->execute_query($query);
3028 }
3029 /*} else if ($_POST ['accounttype'] == 5) {
3030 $query = "INSERT INTO fleetCareMap SET fcusername = \"".$username."\", adminUserName = \"".$_SESSION['username']."\"";
3031 $result = $this->dbclass->execute_query ( $query );
3032 }*/
3033
3034 if ($result != true) {
3035 //if (mysql_errno($this->dblink) == 1062)
3036 if ($this->dbclass->dblink->errno == 1062)
3037 return EXISTS;
3038 return ERROR;
3039 }
3040
3041 if ($_POST ['accounttype'] == 1) { //If adding user type admin from super user
3042 $query = "INSERT INTO licenses SET username = '".$username."', licenses = 0";
3043 $result = $this->dbclass->execute_query($query);
3044 }
3045
3046 if ($result != true) {
3047 //if (mysql_errno($this->dblink) == 1062)
3048 if ($this->dbclass->dblink->errno == 1062)
3049 return EXISTS;
3050 return ERROR;
3051 }
3052
3053 return SUCCESS;
3054 }
3055
3056 public function updateAccount() {
3057 $username = $this->dbclass->get_escape_string ( $_POST ['username'] );
3058 $query = "UPDATE Users SET ";
3059 $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE username=\"" . $username . "\"";
3060 $result = $this->dbclass->execute_query ( $query );
3061
3062 if ($result != true) {
3063 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
3064 $this->writeDebugLog ( $this->dbclass->dblink->error );
3065 return ERROR;
3066 }
3067
3068 return SUCCESS;
3069 }
3070
3071 public function checkUser ($username) {
3072 $query = "SELECT COUNT(*) FROM Users WHERE username = '".$username."'";
3073 $this->dbclass->execute_query ( $query );
3074 $userCount = $this->dbclass->get_result_complete ();
3075
3076 if ($userCount == false)
3077 return false;
3078 if ($userCount [0] ['COUNT(*)'] > 0)
3079 return true;
3080 }
3081
3082 public function saveTemplate() {
3083 $query = "REPLACE INTO userTemplates SET ";
3084 $query .= basicTransactions::prepareMySQL_POSTRequest ();
3085 $result = $this->dbclass->execute_query ( $query );
3086 return SUCCESS;
3087 }
3088 public function getTemplates() {
3089 $query = "SELECT * FROM userTemplates WHERE type = 0";
3090 $result = $this->dbclass->execute_query ( $query );
3091 $answer = $this->dbclass->get_result_complete ();
3092 return $answer;
3093 }
3094 private function removeCardFromUsers($username) {
3095 $query = "DELETE FROM Users WHERE username=\"" . $username . "\"";
3096 $result = $this->dbclass->execute_query ( $query );
3097
3098 $this->deactivateUserFences ( $username );
3099 $this->deleteUserGeofences ( $username );
3100
3101 $query = "DELETE FROM archiveFences WHERE username=\"" . $username . "\"";
3102 $result = $this->dbclass->execute_query ( $query );
3103
3104 $query = "DELETE FROM POI WHERE username=\"" . $username . "\"";
3105 $result = $this->dbclass->execute_query ( $query );
3106
3107 $query = "DELETE FROM userPreferences WHERE username=\"" . $username . "\"";
3108 $result = $this->dbclass->execute_query ( $query );
3109
3110 $query = "DELETE FROM usersImages WHERE username=\"" . $username . "\"";
3111 $result = $this->dbclass->execute_query ( $query );
3112
3113 $query = "DELETE FROM schools WHERE username=\"" . $username . "\"";
3114 $result = $this->dbclass->execute_query ( $query );
3115
3116 $this->removeUserStudents ( $username );
3117
3118 $query = "DELETE FROM reminders WHERE username=\"" . $username . "\"";
3119 $result = $this->dbclass->execute_query ( $query );
3120
3121 $query = "DELETE FROM alertSettings WHERE username=\"" . $username . "\"";
3122 $result = $this->dbclass->execute_query ( $query );
3123
3124 $query = "DELETE FROM schedules WHERE username=\"" . $username . "\"";
3125 $result = $this->dbclass->execute_query ( $query );
3126
3127 /*$query = "DELETE FROM logicalGroups_V5 WHERE username=\"" . $username . "\"";
3128 $result = $this->dbclass->execute_query ( $query );*/
3129
3130 $this->removeUserDrivers ( $username );
3131
3132 $query = "DELETE FROM contacts WHERE username=\"" . $username . "\"";
3133 $result = $this->dbclass->execute_query ( $query );
3134
3135 return SUCCESS;
3136 }
3137 private function removeFleetAccount($username) // Removes Fleet Account
3138 {
3139 $query = "DELETE FROM trackersMap WHERE username=\"$username\"";
3140 $result = $this->dbclass->execute_query ( $query );
3141 $query = "DELETE FROM logicalGroups_V5 WHERE username = \"$username\"";
3142 $result = $this->dbclass->execute_query ( $query );
3143 return $this->removeCardFromUsers ( $username );
3144 }
3145 private function removeCCareAccount($username) // Remove ccare account
3146 {
3147 return $this->removeCardFromUsers ( $username );
3148 }
3149 private function removeFleetCareAccount($username) // Removes Fleet Care Account
3150 {
3151 $query = "DELETE FROM logicalGroups_V5 WHERE username = \"$username\"";
3152 $result = $this->dbclass->execute_query ( $query );
3153 return $this->removeCardFromUsers ( $username );
3154 }
3155 private function removeAdminAccount($username) // Remove ccare account
3156 {
3157 $query = "DELETE FROM adminTrackersMap WHERE username=\"$username\"";
3158 $result = $this->dbclass->execute_query ( $query );
3159 $query = "DELETE FROM logicalGroups_V5 WHERE adminUserName = \"".$_SESSION['username']."\"";
3160 $result = $this->dbclass->execute_query ( $query );
3161 return $this->removeCardFromUsers ( $username );
3162 }
3163 public function removeAccount($username, $type) {
3164 $username = $this->dbclass->get_escape_string ( $username );
3165
3166 switch ($type) {
3167 case USERTYPE_FLEET :
3168 return $this->removeFleetAccount ( $username );
3169
3170 case USERTYPE_CUSTOMERCARE :
3171 return $this->removeCCareAccount ( $username );
3172
3173 case USERTYPE_FLEETCARE :
3174 return $this->removeFleetCareAccount ( $username );
3175
3176 case USERTYPE_ADMINISTRATOR:
3177 return $this->removeAdminAccount ( $username );
3178 } // switch
3179
3180 return ERROR;
3181 }
3182 public function blacklistAccount($username) {
3183 $username = $this->dbclass->get_escape_string ( $username );
3184 $query = "UPDATE Users SET blocktime = -1 WHERE username=\"" . $username . "\"";
3185 $result = $this->dbclass->execute_query ( $query );
3186
3187 if ($result != true) {
3188 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
3189 $this->writeDebugLog ( $this->dbclass->dblink->error );
3190 return ERROR;
3191 }
3192
3193 return SUCCESS;
3194 }
3195 public function safelistAccount($username) {
3196 $username = $this->dbclass->get_escape_string ( $username );
3197 $query = "UPDATE Users SET blocktime = 0, noofretry = 0 WHERE username=\"" . $username . "\"";
3198 $result = $this->dbclass->execute_query ( $query );
3199
3200 if ($result != true) {
3201 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
3202 $this->writeDebugLog ( $this->dbclass->dblink->error );
3203 return ERROR;
3204 }
3205
3206 $query = "SELECT * from Users where username='".$username."'";
3207 $result = $this->dbclass->execute_query ( $query );
3208 $users = $this->dbclass->get_result_complete ();
3209
3210 $status = array();
3211 $status['username'] = $users[0]['username'];
3212 $status['status'] = systemUtilities::getStatus($users[0]['expirytime'],$users[0]['blocktime'],$users[0]['lastLogin']);
3213
3214 return $status;
3215 }
3216
3217 public function clearTrackersMap($username) {
3218 $username = $this->dbclass->get_escape_string ( $username );
3219 $query = "DELETE FROM trackersMap WHERE username=\"$username\"";
3220 $result = $this->dbclass->execute_query ( $query );
3221 }
3222 public function removeDriversMap($username, $tid) {
3223 $username = $this->dbclass->get_escape_string ( $username );
3224 $query = "DELETE FROM driversMap WHERE username=\"$username\" AND trackerid=\"$tid\"";
3225 $result = $this->dbclass->execute_query ( $query );
3226 }
3227 public function createTrackersMap($username, $tid) {
3228 $username = $this->dbclass->get_escape_string ( $username );
3229 $query = "INSERT INTO trackersMap SET username=\"$username\", trackerid=\"$tid\"";
3230 $result = $this->dbclass->execute_query ( $query );
3231 if ($result == false)
3232 $this->writeDebugLog ( $this->dbclass->dblink->error );
3233 }
3234 public function trackersMapList($username) {
3235 $no = new emptyClass ();
3236 //$username = "demo";
3237 //$query = "SELECT trackerid as id, name,imei,simno,searchKeywords FROM trackers inner join trackersExInfo using (trackerid)";
3238 $admin = $_SESSION['username'];
3239 $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";
3240 $this->dbclass->execute_query ( $query );
3241 $trackers = $this->dbclass->get_result_complete ();
3242
3243 $no->ATL = array ();
3244 $no->NTL = array ();
3245
3246 if ($trackers != false) {
3247 $tracker_count = count ( $trackers );
3248
3249 for($b = 0; $b < $tracker_count; $b ++)
3250 $no->ATL [$trackers [$b] ['id']] = $trackers [$b];
3251
3252 unset ( $trackers );
3253
3254 $username = $this->dbclass->get_escape_string ( $username );
3255 //$query = "SELECT trackerid as id, name,imei,simno,searchKeywords FROM trackersMap left join trackers using(trackerid) left join trackersExInfo using (trackerid) WHERE username=\"$username\"";
3256 $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\"";
3257 $result = $this->dbclass->execute_query ( $query );
3258 $answer = $this->dbclass->get_result_complete ();
3259
3260 if ($answer != false) {
3261 $tracker_count = count ( $answer );
3262 for($b = 0; $b < $tracker_count; $b ++) {
3263 array_push ( $no->NTL, $answer [$b] );
3264 unset ( $no->ATL [$answer [$b] ['id']] );
3265 } // for
3266 } // if
3267 } // if
3268 $no->ATL = array_values ( $no->ATL );
3269 return $no;
3270 }
3271 public function getPrevLogin($username) {
3272 $uname = $this->dbclass->get_escape_string ( $username );
3273 $query = "SELECT prevLogin FROM Users WHERE username =\"{$uname}\"";
3274 $result = $this->dbclass->execute_query ( $query );
3275 $answer = $this->dbclass->get_result_complete ();
3276 return $answer;
3277 }
3278 public function setWeatherLocation($location) {
3279 $location = $this->dbclass->get_escape_string ( $location );
3280 $QUERY = "UPDATE systemPreferences SET weatherLocation=\"" . $location . "\"";
3281 $this->dbclass->execute_query ( $QUERY );
3282 }
3283 public function fleet_setWeatherLocation($location) {
3284 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
3285 $location = $this->dbclass->get_escape_string ( $location );
3286
3287 $QUERY = "SELECT COUNT(*) FROM userPreferences WHERE username=\"{$username}\"";
3288 $this->dbclass->execute_query ( $QUERY );
3289 $ans = $this->dbclass->get_result_complete ();
3290
3291 if ($ans [0] ['COUNT(*)'] > 0) {
3292 $QUERY = "UPDATE userPreferences SET weatherLocation=\"" . $location . "\" WHERE username=\"{$username}\"";
3293 $this->dbclass->execute_query ( $QUERY );
3294 } else {
3295 $QUERY = "INSERT INTO userPreferences SET weatherLocation=\"" . $location . "\", username=\"{$username}\"";
3296 $this->dbclass->execute_query ( $QUERY );
3297 }
3298 }
3299 public function updateLoginSuccess($username) {
3300 $now = time ();
3301 $uname = $this->dbclass->get_escape_string ( $username );
3302
3303 $query = "SELECT lastLogin FROM Users WHERE username =\"{$uname}\"";
3304 $result = $this->dbclass->execute_query ( $query );
3305 $answer = $this->dbclass->get_result_complete ();
3306
3307 $QUERY = "UPDATE Users SET lastLogin=$now, prevLogin=" . $answer [0] ['lastLogin'] . " WHERE username=\"{$uname}\"";
3308 $this->dbclass->execute_query ( $QUERY );
3309 }
3310 public function ccare_get_users_list() {
3311 $fields = "username,name,company,mobile,email,city,country,reseller";
3312 $wClause = "accounttype = " . USERTYPE_FLEET;
3313
3314 $query = "SELECT $fields FROM Users WHERE " . $wClause . " ORDER BY name";
3315 $result = $this->dbclass->execute_query ( $query );
3316 $answer = $this->dbclass->get_result_complete ();
3317 return $answer;
3318 }
3319 public function get_users_list($ccare = false) {
3320 if ($ccare) {
3321 $fields = "*";
3322 $wClause = "accounttype = " . USERTYPE_FLEET . " OR accounttype = " . USERTYPE_CUSTOMERCARE;
3323 } else {
3324 $fields = "username,name,company";
3325 $wClause = "accounttype = " . USERTYPE_FLEET;
3326 }
3327
3328 $query = "SELECT $fields FROM Users WHERE " . $wClause . " ORDER BY username";
3329 $result = $this->dbclass->execute_query ( $query );
3330 $answer = $this->dbclass->get_result_complete ();
3331
3332 return $answer;
3333 }
3334 public function getUserNotificationRecord($username) {
3335 $uname = $this->dbclass->get_escape_string ( $username );
3336
3337 $query = "SELECT * FROM usersNotifications WHERE username =\"{$uname}\"";
3338 $result = $this->dbclass->execute_query ( $query );
3339 return $this->dbclass->get_result_complete ();
3340 }
3341 public function getTrackerNotificationRecord($tid) {
3342 $query = "SELECT * FROM trackersNotifications WHERE trackerid =\"{$tid}\"";
3343 $result = $this->dbclass->execute_query ( $query );
3344 return $this->dbclass->get_result_complete ();
3345 }
3346
3347 public function setUserNotificationRecord($username, $time) {
3348 $uname = $this->dbclass->get_escape_string ( $username );
3349 $query = "REPLACE INTO usersNotifications SET username =\"{$uname}\", UE_NOTICE = '$time'";
3350 $result = $this->dbclass->execute_query ( $query );
3351 }
3352
3353 public function setTrackerNotificationRecord($tid, $time) {
3354 $query = "REPLACE INTO trackersNotifications SET trackerid =\"{$tid}\", TE_NOTICE = '$time'";
3355 $result = $this->dbclass->execute_query ( $query );
3356 }
3357
3358 public function getAllTrackersList() {
3359 global $GMONGO;
3360
3361 //$query = "SELECT trackerid,name,imei,simno,searchKeywords,trackerExpiry,type, chassisNo, licensePlate, iconText FROM trackers INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersDetails USING (trackerid)";
3362 $query = "SELECT * FROM trackers INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersDetails USING (trackerid)";
3363 $this->dbclass->execute_query ( $query );
3364 $answer = $this->dbclass->get_result_complete ();
3365
3366 $fdate = new FNSDateTime($_SESSION['timezone']);
3367
3368 if ($answer != false) {
3369 foreach ( $answer as $k => $v ) {
3370 $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$v['trackerid']}\"";
3371 $this->dbclass->execute_query ( $query );
3372 $answer [$k] ['trackerExpiry'] = TrackerExpiry::checkExpiry ( $v ['trackerExpiry'] );
3373 $addKeywords = null;
3374
3375 while ( 1 ) {
3376 $user = $this->dbclass->get_result_row ();
3377 if ($user == false)
3378 break;
3379 if ($addKeywords == null)
3380 $addKeywords = $user ['username'];
3381 else
3382 $addKeywords .= ", " . $user ['username'];
3383 }
3384 $answer [$k] ['users'] = $addKeywords;
3385 //$lastRecord = $GMONGO->getLastAMRecord($v['trackerid']);
3386 //$query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$tracker['trackerid']."' AND timestamp >= $cTS";
3387 //$fdate->setTimestamp($lastRecord[0]['timestamp']);
3388 //$answer [$k] ['datetime'] = $fdate->getFormattedString();
3389 }
3390 }
3391
3392 return $answer;
3393 }
3394
3395
3396 public function getWorkingDriversList($fields = "*") {
3397
3398 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
3399
3400 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
3401 $query = "SELECT $fields FROM drivers WHERE tagID NOT LIKE 'EXP%'";
3402 }else if ($_SESSION['accounttype'] == USERTYPE_FLEET){
3403 $query = "SELECT $fields FROM drivers WHERE tagID NOT LIKE 'EXP%' AND username=\"$username\"";
3404 }
3405
3406 $this->dbclass->execute_query ( $query );
3407 return $this->dbclass->get_result_complete ();
3408 }
3409
3410
3411 public function getFleetStatus() {
3412 //global $GMONGO;
3413
3414 $uname = $this->dbclass->get_escape_string ( $_SESSION['username'] );
3415
3416 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
3417 //$query = "SELECT * FROM trackers";
3418 $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '{$uname}'";
3419 }else if ($_SESSION['accounttype'] == USERTYPE_FLEET){
3420 $query = "SELECT * FROM trackersMap WHERE username=\"$uname\"";
3421 }
3422
3423 "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '$uname'";
3424
3425 $this->dbclass->execute_query ( $query );
3426 $answer = $this->dbclass->get_result_complete ();
3427
3428 $result = array();
3429 $result['working'] = array();
3430 $result['idle'] = array();
3431 $result['noreport'] = array();
3432
3433 foreach ($answer as $k =>$v){
3434 $ans = $this->getMAGLOBALSrecord($v['trackerid']);
3435 //$ans = $GMONGO->getLastAMRecord($v['trackerid']);
3436
3437 /*if ($ans != false && isset($ans[0]['TIMESTAMP'])) {
3438 $ans[0]['timestamp'] = $ans[0]['TIMESTAMP'];
3439 }*/
3440
3441 if ($ans == false ) {
3442 array_push($result['noreport'], $v);
3443 }else if (time() - $ans[0]['timestamp'] > NEWSPAPER_NON_WORKING_TIME){
3444 array_push($result['noreport'], $v);
3445 } else {
3446
3447 $v['driver'] = $this->getDriverName ( $v['trackerid']);
3448
3449 if (strpos($ans[0]['IO'],"j") === false ) {
3450 array_push($result['idle'], $v);
3451 }else {
3452 array_push($result['working'], $v);
3453 }
3454 }
3455 }
3456
3457 return $result;
3458 }
3459
3460 public function getIterativeTrackersList() {
3461
3462 $uname = $this->dbclass->get_escape_string ( $_SESSION['username'] );
3463
3464 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
3465 //$query = "SELECT * FROM trackers";
3466 $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '$uname'";
3467 }else if ($_SESSION['accounttype'] == USERTYPE_FLEET){
3468 $query = "SELECT * FROM trackersMap INNER JOIN trackers using (trackerid) WHERE username=\"$uname\"";
3469 } else if ($_SESSION['accounttype'] == USERTYPE_CUSTOMERCARE) {
3470 $query = "SELECT * FROM trackers";
3471 } else if ($_SESSION['accounttype'] == USERTYPE_FLEETCARE) {
3472 $QUERY = "SELECT adminUserName from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
3473 $result = $this->dbclass->execute_query ( $QUERY );
3474 $un = $this -> dbclass -> get_result_complete();
3475
3476 $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '".$un[0]['adminUserName']."'";
3477 }
3478
3479 $result = $this->dbclass->execute_query ( $query );
3480 return $this->dbclass->get_result_complete ();
3481 }
3482
3483 public function getCriticalEvents($durationInSecs) {
3484 global $TRACKING_EVENTS;
3485 global $GMONGO;
3486
3487 $events = $TRACKING_EVENTS->getCriticalEventsList(0, NEWSPAPER_CRITICAL_EVENTS_LEVEL);
3488 //$events = $TRACKING_EVENTS->getCriticalEventsList(0, 2);
3489
3490 $answer = $this->getIterativeTrackersList();
3491 $t = time() - $durationInSecs;
3492 $cans = array();
3493 $a = array();
3494
3495 foreach ($events as $e => $f) {
3496 array_push($a, "$f->code");
3497 }
3498
3499
3500 foreach ($answer as $k =>$v){
3501 $cans[$v['trackerid']] = array('name' => $v['name'], 'events' => array());
3502
3503 $ans = $GMONGO->getERecords($v['trackerid'], array('event' => array('$in' => $a), 'timestamp' => array('$gt' => $t)), false);
3504
3505 if ($ans != false) {
3506 foreach($ans as $m => $n) {
3507 $name = $TRACKING_EVENTS->getEventName($n['event']);
3508 if (isset($cans[$v['trackerid']]['events'][$name])) $cans[$v['trackerid']]['events'][$name]++;
3509 else $cans[$v['trackerid']]['events'][$name] = 1;
3510 }
3511 }
3512 }
3513 return $cans;
3514 }
3515
3516
3517 public function tracker_getAllEvents($tid, $durationInSecs) {
3518 global $TRACKING_EVENTS;
3519 global $GMONGO;
3520
3521 $t = time() - $durationInSecs;
3522 $cans = array('cEvents' => array(), 'gEvents' => array());
3523 $a = array();
3524
3525 $ans = $GMONGO->getERecords($tid, array('timestamp' => array('$gt' => $t)), false);
3526
3527 if ($ans != false) {
3528 foreach($ans as $m => $n) {
3529 $name = $TRACKING_EVENTS->getEventName($n['event']);
3530
3531 if ($TRACKING_EVENTS->getCriticalLevel($n['event']) < NEWSPAPER_CRITICAL_EVENTS_LEVEL) {
3532 //$cans['cEvents'][$n['event']] = $name;
3533 if (isset($cans['cEvents']['events'][$name])) $cans['cEvents'][$name]++;
3534 else $cans['cEvents']['events'][$name] = 1;
3535 }else {
3536 //$cans['gEvents'][$n['event']] = $name;
3537 if (isset($cans['gEvents']['events'][$name])) $cans['gEvents']['events'][$name]++;
3538 else $cans['gEvents']['events'][$name] = 1;
3539 }
3540 }
3541 }
3542
3543 return $cans;
3544 }
3545
3546
3547 public function todaysFleet_getAllEvents($durationInSecs) {
3548 global $TRACKING_EVENTS;
3549 global $GMONGO;
3550
3551 $answer = $this->getIterativeTrackersList();
3552 $t = time() - $durationInSecs;
3553 $cans = array();
3554 $a = array();
3555
3556 foreach ($answer as $k =>$v){
3557 $ans = $GMONGO->getERecords($v['trackerid'], array('timestamp' => array('$gt' => $t)), false);
3558
3559 $cEvents = array();
3560 $gEvents = array();
3561 $eventCounter = array();
3562
3563 if ($ans != false) {
3564 foreach($ans as $m => $n) {
3565 $name = $TRACKING_EVENTS->getEventName($n['event']);
3566 $level = $TRACKING_EVENTS->getCriticalLevel($n['event']);
3567
3568 //if ($level < NEWSPAPER_CRITICAL_EVENTS_LEVEL) {
3569 if ($level < 2) {
3570 $cEvents[$n['event']] = $name;
3571 }else {
3572 $gEvents[$n['event']] = $name;
3573 }
3574
3575 if (isset($eventCounter[$name])) {
3576 $eventCounter[$name]->count++;
3577 }
3578 else {
3579 $eventCounter[$name] = new emptyClass();
3580 $eventCounter[$name]->count = 1;
3581 $eventCounter[$name]->level = $level;
3582 }
3583 }
3584 $rec = array();
3585 //$rec['name'] = $v['name'];
3586 $rec['name'] = $this -> getTrackerName ($v['trackerid'])[0]['name'];
3587 $rec['tid'] = $v['trackerid'];
3588 $rec['cEvents'] = implode(",", $cEvents);
3589 $rec['tCount'] = count($ans);
3590 $rec['gEvents'] = implode(",", $gEvents);
3591 $rec['description'] = 'a';
3592 $rec['rating'] = 'b';
3593 $rec['evCount'] = $eventCounter;
3594
3595
3596 array_push($cans, $rec);
3597 }
3598 }
3599
3600 usort($cans, function($a, $b){
3601 return $b['d'] > $a['d'];
3602 });
3603
3604 for ($i = 0; $i < count($cans); $i++)
3605 $cans[$i]['rowNumber'] = $i+1;
3606
3607 return $cans;
3608 }
3609
3610
3611
3612 public function getFleetDistance($durationInSecs) {
3613 //global $GMONGO;
3614
3615 $answer = $this->getIterativeTrackersList();
3616 $gclient = new FNSGearman();
3617
3618 $result = array();
3619 $dresult = array();
3620 $tlistMapper = array();
3621
3622 foreach ($answer as $k =>$v){
3623 $tlistMapper[$v['trackerid']] = $answer[$k];
3624 $gclient->addTask('todaysFleetDMSI',json_encode(array('tinfo' => $v, 'duration' => $durationInSecs, 'session' => $_SESSION)), null, $v['trackerid']);
3625 }
3626 $gclient->runTasks();
3627
3628 foreach(FNSGearman::$results as $k => $v) {
3629 $res = json_decode($v, true);
3630
3631 if (isset($res['td']) && is_array($res['td']) && $res['td']['d'] != 0) {
3632 $nres = $res['td'];
3633 $nres['t'] = $k;
3634 $nres['n'] = $tlistMapper[$k]['name'];
3635 $result[$k] = $nres;
3636 }
3637 if (isset($res['dd']) && is_array($res['dd'])) {
3638 foreach($res['dd'] as $tagID => $value) {
3639 if (isset($dresult[$tagID]) == false) {
3640 $dresult[$tagID] = array('info' => $value['info'], 'time' => $value['time']);
3641 } else {
3642 $dresult[$tagID]['time'] += $value['time'];
3643 }
3644
3645 }
3646 }
3647 }
3648
3649 usort($result, function($a, $b){
3650 return $b['d'] > $a['d'];
3651 });
3652
3653 usort($dresult, function($a, $b){
3654 return $b['time'] > $a['time'];
3655 });
3656
3657 //print_r(array('td' => $result, 'dd'=>$dresult));
3658 //die;
3659
3660 return array('td' => $result, 'dd'=>$dresult);
3661
3662 }
3663
3664
3665 public function getTrackersStatus() {
3666 $trackers = $this->getIterativeTrackersList();
3667 if ($trackers) {
3668 $status = array();
3669
3670 $tcount = count($trackers);
3671 $fdate = new FNSDateTime($_SESSION['timezone']);
3672 for ($i = 0; $i < $tcount; $i++) {
3673 //$trec = $GMONGO->getLastARecord($trackers[$i]['trackerid']);
3674 $trec = $this->getAGLOBALSrecord($trackers[$i]['trackerid']);
3675 $tStatus = new trackerStatus();
3676 $tStatus -> tid = $trackers[$i]['trackerid'];
3677 $tname = $this->getTrackerName($trackers[$i]['trackerid']);
3678
3679 $tStatus -> tname = $tname[0]['name'];
3680 if ($trec != false) {
3681 $geo = new GEOCODER();
3682 $fdate -> setDate($trec[0]['date'], $trec[0]['time']);
3683 $tStatus -> dateTime = $fdate->getFormattedString();
3684
3685 $ts = $trec [0] ['timestamp'];
3686
3687 if ((time() - $ts) < NON_WORKING_TRACKER_TIME)
3688 $tStatus -> status = 'w';
3689
3690 if (isset ($_GET['doGeocode']) && $_GET['doGeocode'] == 1) {
3691 $location = $geo -> search($trec[0]['latitude'], $trec[0]['longitude'], true);
3692 $tStatus -> lastLocation = $location ['location'];
3693 }
3694 else{
3695 $location = ''.$trec[0]['latitude'].', '.$trec[0]['longitude'];
3696 $tStatus -> lastLocation = $location;
3697 }
3698 }
3699 array_push($status, $tStatus);
3700 }
3701
3702 return $status;
3703 }
3704
3705 return ERROR;
3706 }
3707
3708
3709 public function userTrackersList($username) {
3710 $uname = $this->dbclass->get_escape_string ( $username );
3711 $query = "SELECT trackerid FROM trackersMap WHERE username=\"$uname\"";
3712 $result = $this->dbclass->execute_query ( $query );
3713 $answer = $this->dbclass->get_result_complete ();
3714 return $answer;
3715 }
3716 public function getFuelProfilesList() {
3717 $uname = $_SESSION ['username'];
3718 $query = "SELECT * FROM fuelProfiles";
3719 //CHANGES MADE ON 26th June 2015 DUE TO LOGICAL GROUPING IN V5
3720 //$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";
3721 $result = $this->dbclass->execute_query ( $query );
3722 $answer = $this->dbclass->get_result_complete ();
3723 return $answer;
3724 }
3725 public function getTemperatureProfilesList() {
3726 $query = "SELECT * FROM temperatureProfiles";
3727 $result = $this->dbclass->execute_query ( $query );
3728 $answer = $this->dbclass->get_result_complete ();
3729 return $answer;
3730 }
3731 public function getMCProfilesList($adminUserName = false) {
3732 if ($adminUserName == false)
3733 $query = "SELECT * FROM monitoringCentres";
3734 else {
3735 $adminUserName = $this->dbclass->get_escape_string($adminUserName);
3736 $query = "SELECT * FROM monitoringCentres WHERE adminUserName = '{$adminUserName}'";
3737 }
3738
3739 $result = $this->dbclass->execute_query ( $query );
3740 $answer = $this->dbclass->get_result_complete ();
3741 return $answer;
3742 }
3743 public function trackerid_exist($tidrand) {
3744 $query = "SELECT COUNT(*) FROM trackers WHERE trackerid=\"$tidrand\"";
3745 $result = $this->dbclass->execute_query ( $query );
3746 $answer = $this->dbclass->get_result_complete ();
3747 if ($answer [0] ["COUNT(*)"] > 0)
3748 return true;
3749 return false;
3750 }
3751 public function moveTrackerCard($trackerid, $username) {
3752 $username = $this->dbclass->get_escape_string ( $username );
3753 $QUERY = "UPDATE trackers SET username=\"$username\",logicalGroup=\"DEFAULT\" WHERE trackerid=\"{$trackerid}\"";
3754 $this->dbclass->execute_query ( $QUERY );
3755 }
3756 public function addPublicTracker($trackerid, $username) {
3757 $username = $this->dbclass->get_escape_string ( $username );
3758
3759 $QUERY = "SELECT COUNT(*) FROM publicmaps WHERE username=\"$username\" AND trackerid=\"{$trackerid}\"";
3760 $result = $this->dbclass->execute_query ( $QUERY );
3761 $answer = $this->dbclass->get_result_complete ();
3762
3763 if ($answer [0] ["COUNT(*)"] > 0)
3764 return true;
3765
3766 $QUERY = "INSERT INTO publicmaps SET username=\"$username\",trackerid=\"{$trackerid}\"";
3767 $this->dbclass->execute_query ( $QUERY );
3768 }
3769 public function removePublicTracker($trackerid, $username) {
3770 $username = $this->dbclass->get_escape_string ( $username );
3771 $QUERY = "DELETE FROM publicmaps WHERE username=\"$username\" AND trackerid=\"{$trackerid}\"";
3772 $this->dbclass->execute_query ( $QUERY );
3773 }
3774 public function cleanTracker($trackerid, $sDate, $sTime, $eDate, $eTime) {
3775 $periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
3776
3777 $tblStart = array (
3778 "A",
3779 "E",
3780 "M"
3781 );
3782 for($i = 0; $i < count ( $tblStart ); $i ++) {
3783 $QUERY = "DELETE FROM " . $tblStart [$i] . $trackerid . " WHERE $periodClause";
3784 $this->dbclass->execute_query ( $QUERY );
3785
3786 // $QUERY = "OPTIMIZE TABLE " . $tblStart [$i] . $trackerid;
3787 // $this->dbclass->execute_query ( $QUERY );
3788
3789 $QUERY = "ALTER TABLE " . $tblStart [$i] . $trackerid . " DROP PRIMARY KEY, DROP COLUMN id";
3790 $this->dbclass->execute_query ( $QUERY );
3791
3792 $QUERY = "ALTER TABLE " . $tblStart [$i] . $trackerid . " ADD COLUMN id bigint auto_increment primary key first";
3793 $this->dbclass->execute_query ( $QUERY );
3794 }
3795 }
3796
3797 public function checkDriverLogin($user, $pass) {
3798 $user = $this->dbclass->get_escape_string($user);
3799 $QUERY = "SELECT tagID,name,lpass,licno FROM drivers WHERE luser=\"$user\"";
3800 $this->dbclass->execute_query ( $QUERY );
3801 $ans = $this->dbclass->get_result_complete();
3802
3803 if ($ans == false) return ERROR;
3804
3805 if ($ans[0]['lpass'] == $pass) {
3806 return $ans[0];
3807 }
3808 return ERROR;
3809 }
3810
3811
3812 public function getEJMS_PreInsList($username) {
3813 $username = $this->dbclass->get_escape_string($username);
3814 $QUERY = "SELECT id, data FROM ejmspreins WHERE username=\"$username\"";
3815 $this->dbclass->execute_query ( $QUERY );
3816 return $this->dbclass->get_result_complete();
3817 }
3818
3819 public function getEJMS_PreInsRecord($username, $id) {
3820 $username = $this->dbclass->get_escape_string($username);
3821 $id = $this->dbclass->get_escape_string($id);
3822 $QUERY = "SELECT data FROM ejmspreins WHERE username=\"$username\" AND id = \"$id\"";
3823
3824 $this->dbclass->execute_query ( $QUERY );
3825 return $this->dbclass->get_result_complete();
3826 }
3827
3828 public function updateEJMS_PreInsRecord($username, $id, $data) {
3829 $username = $this->dbclass->get_escape_string($username);
3830 $id = $this->dbclass->get_escape_string($id);
3831 $data = $this->dbclass->get_escape_string($data);
3832 $QUERY = "UPDATE ejmspreins SET data='$data' WHERE id=\"$id\" AND username='$username'";
3833
3834 $this->dbclass->execute_query ( $QUERY );
3835 return $id;
3836 }
3837
3838 public function deleteEJMS_PreInsRecord($username, $id) {
3839 $id = $this->dbclass->get_escape_string($id);
3840 $username = $this->dbclass->get_escape_string($username);
3841 $QUERY = "DELETE FROM ejmspreins WHERE id=\"$id\" AND username=\"$username\"";
3842 $this->dbclass->execute_query ( $QUERY );
3843 return SUCCESS;
3844 }
3845
3846 public function eJMSPreInspectionStore($username, $data) {
3847 $username = $this->dbclass->get_escape_string($username);
3848 $data = $this->dbclass->get_escape_string($data);
3849
3850 $QUERY = "INSERT INTO ejmspreins SET id = 0, username=\"$username\",data=\"$data\"";
3851 $this->dbclass->execute_query ( $QUERY );
3852 return $this->dbclass->get_insert_id();
3853 }
3854
3855 public function cleanDatabase($sDate, $sTime, $eDate, $eTime) {
3856 global $GMONGO;
3857 //if ($_SESSION['accounttype'] == USERTYPE_SUPERUSER)
3858 $query = "SELECT trackerid FROM trackers";
3859 /*elseif ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
3860 $query = "SELECT trackerid ";*/
3861 $result = $this->dbclass->execute_query ( $query );
3862 $answer = $this->dbclass->get_result_complete ();
3863 if ($answer == false)
3864 return false;
3865
3866 $tc = count ( $answer );
3867
3868 for($i = 0; $i < $tc; $i ++) {
3869 //$this->cleanTracker ( $answer [$i] ['trackerid'], $sDate, $sTime, $eDate, $eTime );
3870 $GMONGO->cleanTracker( $answer [$i] ['trackerid'], $sDate, $sTime, $eDate, $eTime );
3871 }
3872 return true;
3873 }
3874 private function deactivateUserFences($uname) {
3875 // $uname = $this->dbclass->get_escape_string($uname);
3876 // Username is already espaced
3877 $query = "SELECT * FROM activeGeofences WHERE username='{$uname}'";
3878 $this->dbclass->execute_query ( $query );
3879 $answer = $this->dbclass->get_result_complete ();
3880
3881 if ($answer == false)
3882 return;
3883
3884 $fcount = count ( $answer );
3885
3886 for($i = 0; $i < $fcount; $i ++) {
3887 $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'];
3888 $this->dbclass->execute_query ( $query );
3889 $query = "DELETE FROM activeGeofences WHERE id=" . $answer [$i] ['id'];
3890 $this->dbclass->execute_query ( $query );
3891 }
3892 }
3893 public function deactivateTrackerFences($trackerid) {
3894 $query = "SELECT * FROM activeGeofences WHERE trackerid='{$trackerid}'";
3895 $this->dbclass->execute_query ( $query );
3896 $answer = $this->dbclass->get_result_complete ();
3897
3898 if ($answer == false)
3899 return;
3900
3901 $fcount = count ( $answer );
3902
3903 for($i = 0; $i < $fcount; $i ++) {
3904 $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'];
3905 $this->dbclass->execute_query ( $query );
3906 $query = "DELETE FROM activeGeofences WHERE id=" . $answer [$i] ['id'];
3907 $this->dbclass->execute_query ( $query );
3908 }
3909 }
3910 public function deactivateUserTrackerFences($uname, $trackerid) {
3911 $uname = $this->dbclass->get_escape_string ( $uname );
3912 $query = "SELECT id FROM activeGeofences WHERE username='{$uname}' AND trackerid='{$trackerid}'";
3913 $this->dbclass->execute_query ( $query );
3914 $answer = $this->dbclass->get_result_complete ();
3915
3916 if ($answer == false)
3917 return;
3918
3919 $fcount = count ( $answer );
3920
3921 for($i = 0; $i < $fcount; $i ++) {
3922 $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'];
3923 $this->dbclass->execute_query ( $query );
3924 $query = "DELETE FROM activeGeofences WHERE id=" . $answer [$i] ['id'];
3925 $this->dbclass->execute_query ( $query );
3926 }
3927 }
3928 private function deactivateTrackerPaths($trackerid) {
3929 $query = "SELECT * FROM ACTIVEPATH WHERE trackerid='{$trackerid}'";
3930 $this->dbclass->execute_query ( $query );
3931 $answer = $this->dbclass->get_result_complete ();
3932
3933 if ($answer == false)
3934 return;
3935
3936 $fcount = count ( $answer );
3937
3938 for($i = 0; $i < $fcount; $i ++) {
3939 $record = $answer [$i];
3940
3941 $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
3942 $uname = $this->dbclass->get_escape_string ( $record ['username'] );
3943
3944 $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' AND fencename='{$fname}' AND trackerid='{$record['trackerid']}' AND sdate='{$record['sdate']}' AND ";
3945 $query .= "edate='{$record['edate']}' AND alertOffRoute ='{$record['alertOffRoute']}' AND daysGap='{$record['daysGap']}' AND speedLimit='{$record['speedLimit']}' AND stime='{$record['stime']}' AND etime='{$record['etime']}'";
3946 $this->dbclass->execute_query ( $query );
3947 }
3948 }
3949 public function deactivateUserTrackerPaths($uname, $trackerid) {
3950 $uname = $this->dbclass->get_escape_string ( $uname );
3951 $query = "SELECT * FROM ACTIVEPATH WHERE username = '$uname' and trackerid='{$trackerid}'";
3952 $this->dbclass->execute_query ( $query );
3953 $answer = $this->dbclass->get_result_complete ();
3954
3955 if ($answer == false)
3956 return;
3957
3958 $fcount = count ( $answer );
3959
3960 for($i = 0; $i < $fcount; $i ++) {
3961 $record = $answer [$i];
3962
3963 $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
3964 $uname = $this->dbclass->get_escape_string ( $record ['username'] );
3965
3966 $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' AND fencename='{$fname}' AND trackerid='{$record['trackerid']}' AND sdate='{$record['sdate']}' AND ";
3967 $query .= "edate='{$record['edate']}' AND alertOffRoute ='{$record['alertOffRoute']}' AND daysGap='{$record['daysGap']}' AND speedLimit='{$record['speedLimit']}' AND stime='{$record['stime']}' AND etime='{$record['etime']}'";
3968 $this->dbclass->execute_query ( $query );
3969 }
3970 }
3971 public function removeTrackerCard($trackerid) {
3972 global $GMONGO;
3973
3974 $this->deactivateTrackerFences ( $trackerid );
3975 $this->deactivateTrackerPaths ( $trackerid );
3976
3977 $QUERY = "DELETE FROM archiveFences WHERE trackerid=\"{$trackerid}\"";
3978 $this->dbclass->execute_query ( $QUERY );
3979
3980 $QUERY = "DELETE FROM remindersCache WHERE trackerid=\"{$trackerid}\"";
3981 $this->dbclass->execute_query ( $QUERY );
3982
3983 $QUERY = "DELETE FROM reportSchedules WHERE trackerid=\"{$trackerid}\"";
3984 $this->dbclass->execute_query ( $QUERY );
3985
3986 $QUERY = "DELETE FROM schedules WHERE trackerid=\"{$trackerid}\"";
3987 $this->dbclass->execute_query ( $QUERY );
3988
3989 $QUERY = "DELETE FROM trips WHERE trackerid=\"{$trackerid}\"";
3990 $this->dbclass->execute_query ( $QUERY );
3991
3992 $QUERY = "DELETE FROM alertSettings WHERE trackerid=\"{$trackerid}\"";
3993 $this->dbclass->execute_query ( $QUERY );
3994
3995 $QUERY = "DELETE FROM trackers WHERE trackerid=\"{$trackerid}\"";
3996 $this->dbclass->execute_query ( $QUERY );
3997
3998 $QUERY = "DELETE FROM trackersMap WHERE trackerid=\"{$trackerid}\"";
3999 $this->dbclass->execute_query ( $QUERY );
4000
4001 $QUERY = "DELETE FROM odoTuning WHERE trackerid=\"{$trackerid}\"";
4002 $this->dbclass->execute_query ( $QUERY );
4003
4004 $QUERY = "DELETE FROM trackersExInfo WHERE trackerid=\"{$trackerid}\"";
4005 $this->dbclass->execute_query ( $QUERY );
4006
4007 $QUERY = "DELETE FROM trackersNotifications WHERE trackerid=\"{$trackerid}\"";
4008 $this->dbclass->execute_query ( $QUERY );
4009
4010 $QUERY = "DELETE FROM trackersFeatures WHERE trackerid=\"{$trackerid}\"";
4011 $this->dbclass->execute_query ( $QUERY );
4012
4013 $QUERY = "DELETE FROM trackersDetails WHERE trackerid=\"{$trackerid}\"";
4014 $this->dbclass->execute_query ( $QUERY );
4015
4016 $QUERY = "DELETE FROM alertSettings WHERE trackerid=\"{$trackerid}\"";
4017 $this->dbclass->execute_query ( $QUERY );
4018
4019 $QUERY = "DELETE FROM reminders WHERE trackerid=\"{$trackerid}\"";
4020 $this->dbclass->execute_query ( $QUERY );
4021
4022 $QUERY = "DELETE FROM napt WHERE vehicleid=\"{$trackerid}\"";
4023 $this->dbclass->execute_query ( $QUERY );
4024
4025 $QUERY = "DELETE FROM driverMaps WHERE trackerid=\"{$trackerid}\"";
4026 $this->dbclass->execute_query ( $QUERY );
4027
4028 $query = "DELETE FROM adminTrackersMap WHERE trackerid = \"{$trackerid}\""; //Added in V5
4029 $this->dbclass->execute_query ( $query );
4030
4031 $QUERY = "DROP TABLE IF EXISTS A{$trackerid}";
4032 $this->dbclass->execute_query ( $QUERY );
4033
4034 $GMONGO -> dropCollectionA($trackerid);
4035
4036 $QUERY = "DROP TABLE IF EXISTS M{$trackerid}";
4037 $this->dbclass->execute_query ( $QUERY );
4038
4039 $GMONGO -> dropCollectionM($trackerid);
4040
4041 $QUERY = "DROP TABLE IF EXISTS E{$trackerid}";
4042 $this->dbclass->execute_query ( $QUERY );
4043
4044 $GMONGO -> dropCollectionE($trackerid);
4045
4046 $QUERY = "DROP TABLE IF EXISTS R{$trackerid}";
4047 $this->dbclass->execute_query ( $QUERY );
4048
4049 $QUERY = "DROP TABLE IF EXISTS RN{$trackerid}";
4050 $this->dbclass->execute_query ( $QUERY );
4051
4052 $QUERY = "DROP TABLE IF EXISTS RT{$trackerid}";
4053 $this->dbclass->execute_query ( $QUERY );
4054
4055 $filename = TRACKER_IMAGES_FOLDER . "/T{$trackerid}.png";
4056 if (file_exists ( $filename ))
4057 unlink ( $filename );
4058 }
4059
4060
4061 public function backupDatabase_zip($download, $store) {
4062 global $GMONGO;
4063 $name = $this->dbclass->perform_backup ();
4064 $arr = explode ( "/", $name );
4065 $myfname = $arr [count ( $arr ) - 1];
4066
4067 $mongoname = $GMONGO->performMongoBackup();
4068
4069 //$fname = $mongoname = BACKUP_FOLDER.'/backup';
4070
4071 $arr = explode ( "/", $mongoname );
4072 $mongofname = $arr [count ( $arr ) - 1];
4073
4074 //$query = "INSERT INTO backup_log SET filename = \"{$fname}.gz\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
4075 $query = "INSERT INTO backup_log SET filename = \"{$mongofname}.zip\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
4076 $this->dbclass->execute_query ( $query );
4077
4078 $mongoname = realpath($mongoname);
4079 $files = new RecursiveIteratorIterator(
4080 new RecursiveDirectoryIterator($mongoname),
4081 RecursiveIteratorIterator::LEAVES_ONLY
4082 );
4083
4084 $zip = new ZipArchive();
4085 $file_name = "{$mongoname}.zip";
4086
4087 $res = $zip->open($file_name, ZipArchive::CREATE);
4088 if ($res === true) {
4089 $zip->addFile($name, $myfname);
4090 foreach ($files as $names => $file) {
4091 if (!$file->isDir()) {
4092 $filePath = $file->getRealPath();
4093 $relativePath = substr($filePath, strlen($mongofname) + 1);
4094 $zip->addFile($filePath, $relativePath);
4095 }
4096 }
4097 $zip->close();
4098 } else return ERROR;
4099
4100 if ($download == "1") {
4101 header ( 'Content-Description: File Transfer' );
4102 header ( 'Content-Type: application/octet-stream' );
4103 header ( 'Content-Disposition: attachment; filename=' . basename ( $file_name ) );
4104 header ( 'Content-Transfer-Encoding: binary' );
4105 header ( 'Expires: 0' );
4106 header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
4107 header ( 'Pragma: public' );
4108 header ( 'Content-Length: ' . filesize ( $file_name ) );
4109 ob_clean ();
4110 flush ();
4111
4112 $fp = fopen ( $file_name, "rb" );
4113 while ( ! feof ( $fp ) ) {
4114 print fread ( $fp, 1024 * 512 );
4115 }
4116 fclose ( $fp );
4117 } // if
4118
4119 if ($store != "1") {
4120 unlink ( $file_name );
4121 } // if
4122 $cmd = "rm -R $mongoname $name";
4123 system ( $cmd );
4124 }
4125
4126
4127 public function backupDatabase($download, $store) {
4128 $name = $this->dbclass->perform_backup ();
4129 $arr = explode ( "/", $name );
4130 $fname = $arr [count ( $arr ) - 1];
4131
4132 $query = "INSERT INTO backup_log SET filename = \"{$fname}.gz\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
4133 $this->dbclass->execute_query ( $query );
4134
4135 $cmd = "gzip $name";
4136 system ( $cmd );
4137
4138 $file_name = "{$name}.gz";
4139
4140 if ($download == "1") {
4141 header ( 'Content-Description: File Transfer' );
4142 header ( 'Content-Type: application/octet-stream' );
4143 header ( 'Content-Disposition: attachment; filename=' . basename ( $file_name ) );
4144 header ( 'Content-Transfer-Encoding: binary' );
4145 header ( 'Expires: 0' );
4146 header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
4147 header ( 'Pragma: public' );
4148 header ( 'Content-Length: ' . filesize ( $file_name ) );
4149 ob_clean ();
4150 flush ();
4151
4152 $fp = fopen ( $file_name, "rb" );
4153 while ( ! feof ( $fp ) ) {
4154 print fread ( $fp, 1024 * 512 );
4155 }
4156 fclose ( $fp );
4157 } // if
4158
4159 if ($store != "1") {
4160 unlink ( $file_name );
4161 } // if
4162 }
4163 public function backupMongoDatabase($download, $store) {
4164 global $GMONGO;
4165 //$name = $this->dbclass->perform_backup ();
4166 $name = $GMONGO->performMongoBackup();
4167 $arr = explode ( "/", $name );
4168 $fname = $arr [count ( $arr ) - 1];
4169
4170 $query = "INSERT INTO backup_log SET filename = \"{$fname}.gz\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
4171 $this->dbclass->execute_query ( $query );
4172
4173 //$cmd = "gzip $name";
4174 $cmd = "tar -czf {$name}.gz $name";
4175 system ( $cmd );
4176
4177 /*$cmd = "rm -R $name";
4178 system ( $cmd );*/
4179
4180 $file_name = "{$name}.gz";
4181
4182 if ($download == "1") {
4183 header ( 'Content-Description: File Transfer' );
4184 header ( 'Content-Type: application/octet-stream' );
4185 header ( 'Content-Disposition: attachment; filename=' . basename ( $file_name ) );
4186 header ( 'Content-Transfer-Encoding: binary' );
4187 header ( 'Expires: 0' );
4188 header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
4189 header ( 'Pragma: public' );
4190 header ( 'Content-Length: ' . filesize ( $file_name ) );
4191 ob_clean ();
4192 flush ();
4193
4194 $fp = fopen ( $file_name, "rb" );
4195 while ( ! feof ( $fp ) ) {
4196 print fread ( $fp, 1024 * 512 );
4197 }
4198 fclose ( $fp );
4199 } // if
4200
4201 if ($store != "1") {
4202 unlink ( $file_name );
4203 } // if
4204
4205 }
4206 public function saveFuelProfile() {
4207 $query = "REPLACE INTO fuelProfiles SET ";
4208 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4209 $result = $this->dbclass->execute_query ( $query );
4210
4211 if ($result != true) {
4212 //return $query . mysql_error ( $this->dbclass->dblink );
4213 return $query . $this->dbclass->dblink->error;
4214 }
4215
4216 return SUCCESS;
4217 }
4218 public function saveTemperatureProfile() {
4219 $query = "REPLACE INTO temperatureProfiles SET ";
4220 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4221 $result = $this->dbclass->execute_query ( $query );
4222
4223 if ($result != true) {
4224 //return $query . mysql_error ( $this->dbclass->dblink );
4225 return $query . $this->dbclass->dblink->error;
4226 }
4227
4228 return SUCCESS;
4229 }
4230 public function saveMCProfile() {
4231 $query = "REPLACE INTO monitoringCentres SET ";
4232 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4233 $result = $this->dbclass->execute_query ( $query );
4234
4235 if ($result != true) {
4236 //return $query . mysql_error ( $this->dbclass->dblink );
4237 return $query . $this->dbclass->dblink->error;
4238 }
4239
4240 $tblName = $_POST ['shortName'];
4241 $query = "CREATE TABLE IF NOT EXISTS $tblName LIKE mcTable";
4242 $result = $this->dbclass->execute_query ( $query );
4243
4244 return SUCCESS;
4245 }
4246 public function removeMCProfile($name) {
4247 $name = $this->dbclass->get_escape_string ( $name );
4248 $query = "DELETE FROM monitoringCentres WHERE shortName=\"$name\"";
4249 $result = $this->dbclass->execute_query ( $query );
4250
4251 $query = "DROP TABLE $name";
4252 $result = $this->dbclass->execute_query ( $query );
4253
4254 $query = "UPDATE trackersExInfo SET monitoringCentre=NULL WHERE monitoringCentre=\"$name\"";
4255 $result = $this->dbclass->execute_query ( $query );
4256 }
4257 public function removeFuelProfile($name) {
4258 $name = $this->dbclass->get_escape_string ( $name );
4259 $query = "DELETE FROM fuelProfiles WHERE name=\"$name\"";
4260 $result = $this->dbclass->execute_query ( $query );
4261 }
4262 public function removeTemperatureProfile($name) {
4263 $name = $this->dbclass->get_escape_string ( $name );
4264 $query = "DELETE FROM temperatureProfiles WHERE name=\"$name\"";
4265 $result = $this->dbclass->execute_query ( $query );
4266 }
4267
4268 public function updatePassword($user, $pass) {
4269 $username = $this->dbclass->get_escape_string ( $user);
4270 $password = $this->dbclass->get_escape_string ( $pass);
4271
4272 $query = "UPDATE Users SET password = \"$password\" WHERE username=\"$username\"";
4273 $result = $this->dbclass->execute_query ( $query );
4274 return 1;
4275 }
4276
4277 public function modifyPassword($curr, $pass) {
4278 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4279
4280 $query = "SELECT password FROM Users Where username=\"$username\"";
4281 $result = $this->dbclass->execute_query ( $query );
4282 $answer = $this->dbclass->get_result_complete ();
4283 if ($answer == false)
4284 return - 1;
4285
4286 if ($answer [0] ['password'] != $curr)
4287 return 0;
4288
4289 $pass = $this->dbclass->get_escape_string ( $pass );
4290 $QUERY = "UPDATE Users SET password=\"$pass\" WHERE username=\"$username\"";
4291 $this->dbclass->execute_query ( $QUERY );
4292
4293 return 1;
4294 }
4295 public function saveSystemPreferences() {
4296 $query = "UPDATE languages SET selected =0";
4297 $result = $this->dbclass->execute_query ( $query );
4298
4299 $query = "UPDATE languages SET selected =1 where lcode=\"{$_POST['defaultLanguage']}\"";
4300 $result = $this->dbclass->execute_query ( $query );
4301
4302 $query = "UPDATE systemPreferences SET ";
4303 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4304 $result = $this->dbclass->execute_query ( $query );
4305
4306 if ($result != true) {
4307 //return $query . mysql_error ( $this->dbclass->dblink );
4308 return $query . $this->dbclass->dblink->error;
4309 }
4310
4311 return SUCCESS;
4312 }
4313 public function getUserPreferences() {
4314 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4315 $QUERY = "SELECT * FROM userPreferences WHERE username=\"$username\"";
4316 $this->dbclass->execute_query ( $QUERY );
4317 return $this->dbclass->get_result_complete ();
4318 }
4319 public function getAdminPreferences() {
4320 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4321 $QUERY = "SELECT * FROM adminPreferences WHERE username=\"$username\"";
4322 $this->dbclass->execute_query ( $QUERY );
4323 return $this->dbclass->get_result_complete ();
4324 }
4325 public function getUTrackersDetails($tid) {
4326 $QUERY = "SELECT * FROM trackers LEFT JOIN trackersDetails USING(trackerid) WHERE trackerid=\"{$tid}\"";
4327 $this->dbclass->execute_query ( $QUERY );
4328 return $this->dbclass->get_result_complete ();
4329 }
4330 public function getTEventsSettings($tid) {
4331 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4332 $QUERY = "SELECT * FROM alertSettings WHERE trackerid=\"$tid\" AND username=\"$uname\"";
4333 $this->dbclass->execute_query ( $QUERY );
4334 return $this->dbclass->get_result_complete ();
4335 }
4336 public function saveTEventsSettings($tid) {
4337 $QUERY = "SELECT MAX(id) FROM alertSettings WHERE trackerid=\"{$_POST['trackerid']}\" and (type=\"{$_POST['type']}\" or id=\"{$_POST['id']}\")";
4338 $this->dbclass->execute_query ( $QUERY );
4339 $ans = $this->dbclass->get_result_complete ();
4340
4341 if ($ans [0] ['MAX(id)'] != NULL) {
4342 if ($_POST ['id'] != $ans [0] ['MAX(id)'])
4343 return EXISTS;
4344 $prefix = "UPDATE";
4345 $returnID = $_POST ['id'];
4346 $postfix = " WHERE trackerid=\"{$_POST['trackerid']}\" and id=\"{$_POST['id']}\"";
4347 } else {
4348 if ($_POST ['id'] != 0)
4349 return ERROR;
4350 $returnID = $_POST ['id'] = 0;
4351 $prefix = "INSERT INTO";
4352 $postfix = "";
4353 }
4354
4355 $_POST ['timezone'] = $_SESSION ['timezone'];
4356 $_POST ['username'] = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4357 $query = $prefix . " alertSettings SET ";
4358 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4359 $query .= $postfix;
4360 $result = $this->dbclass->execute_query ( $query );
4361
4362 if (! $returnID)
4363 $returnID = $this->dbclass->dblink->insert_id;
4364 return $returnID;
4365 }
4366 public function removeTEventsSettings($tid, $id) {
4367 $QUERY = "DELETE FROM alertSettings WHERE trackerid=\"{$tid}\" AND id=\"{$id}\"";
4368 $this->dbclass->execute_query ( $QUERY );
4369 }
4370 public function removeUserTrackerAlerts($uname, $tid) {
4371 $QUERY = "SELECT id FROM alertSettings WHERE trackerid=\"$tid\" AND username=\"$uname\"";
4372 $this->dbclass->execute_query ( $QUERY );
4373 $ans = $this->dbclass->get_result_complete ();
4374 if ($ans == false)
4375 return;
4376
4377 foreach ( $ans as $v ) {
4378 $QUERY = "DELETE FROM alertSettings WHERE id=\"{$v['id']}\"";
4379 $this->dbclass->execute_query ( $QUERY );
4380 }
4381 }
4382 public function saveUTrackerDetails() {
4383 $tname = $this->dbclass->get_escape_string ( $_POST ['name'] );
4384 $tid = $this->dbclass->get_escape_string ( $_POST ['trackerid'] );
4385
4386 unset ( $_POST ['name'] );
4387 unset ( $_POST ['imei'] );
4388 unset ( $_POST ['username'] );
4389 unset ( $_POST ['type'] );
4390 unset ( $_POST ['simno'] );
4391 unset ( $_POST ['trackerType'] );
4392 unset ( $_POST ['fileData'] );
4393
4394 $query = "REPLACE INTO trackersDetails SET ";
4395 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4396 $result = $this->dbclass->execute_query ( $query );
4397
4398 if ($result == false) {
4399 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
4400 $this->writeDebugLog ( $this->dbclass->dblink->error );
4401 return ERROR;
4402 }
4403
4404 $query = "UPDATE trackers SET name=\"$tname\" WHERE trackerid=\"{$tid}\"";
4405 $result = $this->dbclass->execute_query ( $query );
4406
4407 if ($result == false) {
4408 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
4409 $this->writeDebugLog ( $this->dbclass->dblink->error );
4410 return ERROR;
4411 }
4412
4413 return SUCCESS;
4414 }
4415 public function updateCompleteReminderCache($nCache) {
4416 $QUERY = "DELETE FROM remindersCache WHERE cacheCounter != \"$nCache\"";
4417 $this->dbclass->execute_query ( $QUERY );
4418 }
4419 public function updateReminderCacheRec($nc, $tid, $id, $date, $time, $cdist, $enhr) {
4420 $QUERY = "UPDATE remindersCache SET cacheCounter = \"$nc\", date=\"$date\", time=\"$time\", cDistance=\"$cdist\", engineHrs = \"$enhr\" WHERE id=\"$id\"";
4421 $result = $this->dbclass->execute_query ( $QUERY );
4422 if ($result == false) {
4423 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
4424 $this->writeDebugLog ( $this->dbclass->dblink->error );
4425 }
4426 }
4427 public function insertReminderCacheRec($id, $nc, $tid, $sdate, $dist, $date, $time, $cdist, $enhr) {
4428 $query = "INSERT INTO remindersCache SET id = \"$id\", cacheCounter=\"$nc\", trackerid=\"$tid\", sDate=\"$sdate\", date=\"$date\", time=\"$time\", cDistance=\"$cdist\", distance=\"$dist\", engineHrs = \"$enhr\"";
4429 $result = $this->dbclass->execute_query ( $query );
4430 if ($result == false) {
4431 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
4432 $this->writeDebugLog ( $this->dbclass->dblink->error );
4433 }
4434 }
4435 public function removeReminderCacheRec($id) {
4436 $QUERY = "DELETE FROM remindersCache WHERE id=\"$id\"";
4437 $result = $this->dbclass->execute_query ( $QUERY );
4438 if ($result == false) {
4439 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
4440 $this->writeDebugLog ( $this->dbclass->dblink->error );
4441 }
4442 }
4443 public function getReminderCacheRec($id) {
4444 $QUERY = "SELECT * FROM remindersCache WHERE id=\"$id\"";
4445 $this->dbclass->execute_query ( $QUERY );
4446 $answer = $this->dbclass->get_result_complete ();
4447 return $answer;
4448 }
4449 public function getRC_counter() {
4450 $QUERY = "SELECT MAX(cacheCounter) FROM remindersCache";
4451 $this->dbclass->execute_query ( $QUERY );
4452 return $this->dbclass->get_result_complete ();
4453 }
4454
4455 public function insertExpiredReminders ($record, $mailStatus) {
4456 $QUERY = "INSERT INTO expiredReminders SET reminderid = ".$record['id'].", username = '".$record['username']."', trackerid = '".$record['trackerid']."', startDate = '".$record['startDate']."', basedOn = '".$record['basedOn']."', endDate = '".$record['endDate'];
4457 $QUERY .= ", distance = '".$record['distance'].", reminderDate = '".$record['reminderDate']."', remarks = '".$record['remarks']."', engineHrs = '".$record['engineHrs']."', language = '".$record['language']."', engInputs = '".$record['engInputs'];
4458 $QUERY .= "', timezone = '".$record['timezone']."', mailStatus = $mailStatus";
4459 $this->dbclass->execute_query($QUERY);
4460
4461 return $this->dbclass->get_result_complete();
4462 }
4463
4464 public function saveTrackerWorkSchedule ($tid, $schedule) {
4465 $tid = $this->dbclass->get_escape_string($tid);
4466 $schedule = $this->dbclass->get_escape_string($schedule);
4467 $query = 'UPDATE trackersFeatures SET workSchedule = "'.$schedule.'" WHERE trackerid = "'.$tid.'"';
4468 return $this->dbclass->execute_query($query);
4469 }
4470
4471 public function getTrackerWorkingSchedule ($trackeid) {
4472 $query = 'SELECT workSchedule FROM trackersFeatures WHERE trackerid = "'.$trackeid.'"';
4473 $this->dbclass->execute_query($query);
4474 $answer = $this->dbclass->get_result_complete();
4475
4476 $result = json_decode($answer[0]['workSchedule'], true);
4477
4478 return $result;
4479 }
4480
4481 public function getNextRecord() {
4482 if ($this->oldARecord == false)
4483 $drow = $this->dbclass->get_result_row ();
4484 else
4485 $drow = $this->oldARecord;
4486
4487 if ($drow == false) {
4488 if (isset ( $this->result1 ) && gettype ( $this->result1 ) == "resource") {
4489 mysql_free_result ( $this->result1 );
4490 unset ( $this->result1 );
4491 }
4492
4493 if ($this->COMBINE_MODE == RECORD_EXISTS) {
4494 if (isset ( $this->result2 ) && gettype ( $this->result2 ) == "resource") {
4495 mysql_free_result ( $this->result2 );
4496 unset ( $this->result2 );
4497 }
4498 return false;
4499 }
4500 }
4501
4502 if (isset ( $this->result2 ) && gettype ( $this->result2 ) == "resource") {
4503 while ( 1 ) {
4504
4505 if ($this->oldMRecord == false) {
4506 $mrow = $this->dbclass_2->get_result_row ();
4507 } else {
4508 $mrow = $this->oldMRecord;
4509 }
4510
4511 if ($mrow == false) {
4512 mysql_free_result ( $this->result2 );
4513 unset ( $this->result2 );
4514 $this->oldMRecord = false;
4515 break;
4516 }
4517
4518 if ($drow == false) {
4519 $this->oldMRecord = false;
4520 $drow = $mrow;
4521 break;
4522 }
4523
4524 if ($mrow ['TIMESTAMP'] > $drow ['TIMESTAMP']) {
4525 $this->oldMRecord = $mrow;
4526 $this->oldARecord = false;
4527 break;
4528 } else if ($drow ['TIMESTAMP'] == $mrow ['TIMESTAMP']) {
4529 $drow = array_merge ( $drow, $mrow );
4530 $this->oldARecord = false;
4531 break;
4532 } else {
4533 if ($this->COMBINE_MODE == RECORD_EXISTS) {
4534 $this->oldMRecord = false;
4535 continue;
4536 } else {
4537 $this->oldMRecord = false;
4538 $this->oldARecord = $drow;
4539 $drow = $mrow;
4540
4541 break;
4542 }
4543 }
4544 }
4545 }
4546 return $drow;
4547 }
4548 public function queryForDistance($tid, $date, $time) { //Function similar to this is made in MongoDB with name queryForDistanceMongo($tid, $timestamp) in mysqlQueries.php
4549 $this->oldARecord = false;
4550 $this->oldMRecord = false;
4551
4552 $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";
4553 $this->result1 = $this->dbclass->execute_query ( $QUERY );
4554
4555 $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";
4556 $this->result2 = $this->dbclass_2->execute_query ( $QUERY );
4557
4558 $this->COMBINE_MODE = RECORD_EXISTS;
4559 }
4560 public function queryForDistanceMongo($tid, $timestamp) {
4561 global $GMONGO;
4562
4563 $GMONGO->getAMRecordCursor($tid, array('timestamp' => array('$gt' => $timestamp)));
4564 }
4565 public function getCompleteReminders() {
4566 $QUERY = "SELECT * FROM reminders";
4567 $this->dbclass->execute_query ( $QUERY );
4568 return $this->dbclass->get_result_complete ();
4569 }
4570 public function getReminders($tid) {
4571 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4572 $QUERY = "SELECT * FROM reminders WHERE trackerid=\"$tid\" and username=\"$uname\"";
4573 $this->dbclass->execute_query ( $QUERY );
4574 return $this->dbclass->get_result_complete ();
4575 }
4576 public function getExpiredReminders($tid) {
4577 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4578 $QUERY = "SELECT * FROM expiredReminders WHERE trackerid=\"$tid\" and username=\"$uname\"";
4579 $this->dbclass->execute_query ( $QUERY );
4580 return $this->dbclass->get_result_complete ();
4581 }
4582 //public function saveReminder() {
4583 public function saveReminder($trackerid) {
4584 $_POST['trackerid'] = $trackerid;
4585 $QUERY = "SELECT MAX(id) FROM reminders WHERE trackerid=\"{$_POST['trackerid']}\" and id=\"{$_POST['id']}\"";
4586 $this->dbclass->execute_query ( $QUERY );
4587 $ans = $this->dbclass->get_result_complete ();
4588
4589 if ($ans [0] ['MAX(id)'] != NULL) {
4590 if ($_POST ['id'] != $ans [0] ['MAX(id)'])
4591 return ERROR;
4592 $prefix = "UPDATE";
4593 $returnID = $_POST ['id'];
4594 $postfix = " WHERE trackerid=\"{$_POST['trackerid']}\" and id=\"{$_POST['id']}\"";
4595 $this->removeReminderCacheRec ( $_POST ['trackerid'] );
4596 } else {
4597 if ($_POST ['id'] != 0)
4598 return ERROR;
4599 $returnID = $_POST ['id'] = 0;
4600 $prefix = "INSERT INTO";
4601 $postfix = "";
4602 }
4603
4604 $_POST ['username'] = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4605 $_POST ['timezone'] = $this->dbclass->get_escape_string ( $_SESSION ['timezone'] );
4606 $_POST ['language'] = $_SESSION ['language'];
4607
4608 $query = $prefix . " reminders SET ";
4609 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4610 $query .= $postfix;
4611 $result = $this->dbclass->execute_query ( $query );
4612
4613 if (! $returnID)
4614 $returnID = $this->dbclass->dblink->insert_id;
4615 return $returnID;
4616 }
4617 public function removeReminder($tid, $id) {
4618 $query = "DELETE FROM reminders WHERE trackerid=\"{$tid}\" and id = \"{$id}\"";
4619 $result = $this->dbclass->execute_query ( $query );
4620 $this->removeReminderCacheRec ( $id );
4621 return SUCCESS;
4622 }
4623 public function removeUserTrackerReminders($uname, $tid) {
4624 $QUERY = "SELECT id FROM reminders WHERE trackerid=\"{$tid}\" and username=\"{$uname}\"";
4625 $this->dbclass->execute_query ( $QUERY );
4626 $ans = $this->dbclass->get_result_complete ();
4627
4628 if ($ans == false)
4629 return;
4630
4631 foreach ( $ans as $v ) {
4632 $query = "DELETE FROM reminders WHERE id = \"{$v['id']}\"";
4633 $result = $this->dbclass->execute_query ( $query );
4634 $this->removeReminderCacheRec ( $v ['id'] );
4635 }
4636 return SUCCESS;
4637 }
4638 public function getADT($tagid) {
4639 $QUERY = "SELECT trackerid FROM driversMap WHERE tagID=\"$tagid\"";
4640 $this->dbclass->execute_query ( $QUERY );
4641 return $this->dbclass->get_result_complete ();
4642 }
4643 public function assignDriverTrackers() {
4644 $tagid = $this->dbclass->get_escape_string ( $_POST ['tagID'] );
4645 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4646
4647 $QUERY = "SELECT * FROM drivers WHERE tagID=\"" . $_POST ['tagID'] . "\"";
4648 $this->dbclass->execute_query ( $QUERY );
4649 $ans = $this->dbclass->get_result_complete ();
4650 $dc = $ans [0];
4651
4652 $query = "DELETE FROM driversMap WHERE tagID=\"$tagid\" AND username=\"$uname\"";
4653 $result = $this->dbclass->execute_query ( $query );
4654 $exceptions = array ();
4655
4656 for($i = 0; $i < count ( $_POST ['trackers'] ); $i ++) {
4657 if ($dc ['type'] == "S") {
4658 $QUERY = "SELECT * FROM driversMap inner join drivers using (tagID) WHERE trackerid=\"" . $_POST ['trackers'] [$i] . "\" AND type='S'";
4659 $this->dbclass->execute_query ( $QUERY );
4660 $ans = $this->dbclass->get_result_complete ();
4661
4662 if ($ans != false) {
4663 array_push ( $exceptions, $_POST ['trackers'] [$i] );
4664 continue;
4665 }
4666 }
4667
4668 $query = "INSERT INTO driversMap SET tagID=\"$tagid\", username=\"$uname\", trackerid=\"" . $_POST ['trackers'] [$i] . "\"";
4669 $result = $this->dbclass->execute_query ( $query );
4670 }
4671
4672 return $exceptions;
4673 }
4674 public function saveDriverCard() {
4675 $_POST ['username'] = $_SESSION ['username'];
4676
4677 $n1 = "";
4678 $n2 = "";
4679
4680 if ($_POST ['type'] == "S" && $_POST ['tagID'] == '') {
4681 // Generate New TAG
4682 for($i = 0; $i < 13; $i ++) {
4683 $n1 .= chr ( rand ( 48, 57 ) );
4684 $n2 .= chr ( rand ( 65, 90 ) );
4685 }
4686
4687 $_POST ['tagID'] = "ST_" . $n2 . $n1;
4688 }
4689
4690 $query = "REPLACE INTO drivers SET ";
4691 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4692 $result = $this->dbclass->execute_query ( $query );
4693
4694 if ($_POST ['type'] == "E") {
4695 $tagid = $this->dbclass->get_escape_string ( $_POST ['tagID'] );
4696 $query = "DELETE * FROM driversMap WHERE tagID=\"" . $tagid . "\"";
4697 $result = $this->dbclass->execute_query ( $query );
4698 }
4699
4700 if ($result != true) {
4701 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
4702 $this->writeDebugLog ( $this->dbclass->dblink->error );
4703 return ERROR;
4704 }
4705
4706 return $_POST ['tagID'];
4707 }
4708 public function expireDriverCard($tagID) {
4709 global $GMONGO;
4710 $tagid = $this->dbclass->get_escape_string ( $tagID );
4711
4712 srand ();
4713 $newid = "";
4714 $n1 = "";
4715 $n2 = "";
4716
4717 // Generate New TAG
4718 do {
4719 for($i = 0; $i < 13; $i ++) {
4720 $n1 .= chr ( rand ( 48, 57 ) );
4721 $n2 .= chr ( rand ( 65, 90 ) );
4722 }
4723
4724 $rawnewid = "EXP_" . $n2 . $n1;
4725
4726 $newid = $this->dbclass->get_escape_string ( $rawnewid );
4727
4728 // Updates new tag
4729 $query = "UPDATE drivers SET tagID=\"$newid\" WHERE tagID=\"$tagid\"";
4730 $result = $this->dbclass->execute_query ( $query );
4731 } while ( $result != true );
4732
4733 // Get Trackers List
4734 $query = "SELECT trackerid FROM trackersMap";
4735 $this->dbclass->execute_query ( $query );
4736 $trackers = $this->dbclass->get_result_complete ();
4737
4738 if ($trackers == false)
4739 return $rawnewid;
4740 $tCount = count ( $trackers );
4741
4742 // Update all old tags in E & M tables with new tagID
4743 for($i = 0; $i < $tCount; $i ++) {
4744 $updateCriteria = array('driverid' => $tagid);
4745 $updateQuery = array('$set' => array('$driverid' => $newid));
4746 $options = array('multiple' => true);
4747
4748 $GMONGO -> updateCollectionM($trackers[$i]['trackerid'], $updateCriteria, $updateQuery, $options);
4749 /*$query = "UPDATE M{$trackers[$i]['trackerid']} SET driverid=\"$newid\" WHERE driverid=\"$tagid\"";
4750 $this->dbclass->execute_query ( $query );*/
4751
4752 $GMONGO -> updateCollectionE($trackers[$i]['trackerid'], $updateCriteria, $updateQuery, $options);
4753 /*$query = "UPDATE E{$trackers[$i]['trackerid']} SET description=\"$newid\" WHERE description=\"$tagid\"";
4754 $this->dbclass->execute_query ( $query );*/
4755 }
4756
4757 return $rawnewid;
4758 }
4759 public function removeUserDrivers($username) {
4760 // $username is already escaped
4761 $QUERY = "SELECT tagID FROM drivers username=\"$username\"";
4762 $this->dbclass->execute_query ( $QUERY );
4763 $ans = $this->dbclass->get_result_complete ();
4764 for($v = 0; $v < count ( $ans ); $v ++) {
4765 $this->removeDriverCard ( $ans [$v] ['tagID'] );
4766 }
4767 }
4768 public function removeDriverCard($tagID) {
4769 $tagid = $this->dbclass->get_escape_string ( $tagID );
4770 $query = "DELETE FROM drivers WHERE tagID=\"$tagid\"";
4771 $result = $this->dbclass->execute_query ( $query );
4772
4773 $query = "DELETE FROM driversMap WHERE tagID=\"$tagid\"";
4774 $result = $this->dbclass->execute_query ( $query );
4775
4776 if ($result != true) {
4777 return ERROR;
4778 }
4779
4780 return SUCCESS;
4781 }
4782
4783 public function getDriverCard($driverID, $fields = "*", $useSession = true) {
4784 $driverID = $this->dbclass->get_escape_string ( $driverID );
4785
4786 if ($useSession) {
4787 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4788 $QUERY = "SELECT $fields FROM drivers WHERE username=\"$username\" AND tagID=\"$driverID\"";
4789 }else{
4790 $QUERY = "SELECT $fields FROM drivers WHERE tagID=\"$driverID\"";
4791 }
4792
4793 $this->dbclass->execute_query ( $QUERY );
4794 $ans = $this->dbclass->get_result_complete ();
4795 return $ans [0];
4796 }
4797 public function getDriversList($fields = "*") {
4798 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4799 $QUERY = "SELECT $fields FROM drivers WHERE username=\"$username\"";
4800 $this->dbclass->execute_query ( $QUERY );
4801 return $this->dbclass->get_result_complete ();
4802 }
4803 public function getGeoContactsList($fencename, $fields_list = "*") {
4804 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4805 $fencename = $this->dbclass->get_escape_string ( $fencename );
4806
4807 $QUERY = "SELECT {$fields_list} FROM geoContacts WHERE username=\"$username\" and fencename=\"$fencename\" ORDER by contact";
4808 $this->dbclass->execute_query ( $QUERY );
4809 return $this->dbclass->get_result_complete ();
4810 }
4811 public function checkDriverID($id) {
4812 $id = $this->dbclass->get_escape_string ( $id );
4813
4814 $QUERY = "SELECT COUNT(*) FROM drivers WHERE tagID=\"$id\"";
4815 $this->dbclass->execute_query ( $QUERY );
4816 $ans = $this->dbclass->get_result_complete ();
4817
4818 if ($ans [0] ['COUNT(*)'] > 0)
4819 return EXISTS;
4820
4821 return SUCCESS;
4822 }
4823 public function resetGeofenceContacts($fence) {
4824 $fence = $this->dbclass->get_escape_string ( $fence );
4825 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4826
4827 $query = "DELETE FROM geoContacts where username=\"{$username}\" and fencename=\"{$fence}\"";
4828 $result = $this->dbclass->execute_query ( $query );
4829
4830 if ($result != true) {
4831 return ERROR;
4832 }
4833
4834 return SUCCESS;
4835 }
4836 public function removeGeofenceContact($fence, $contact) {
4837 $fence = $this->dbclass->get_escape_string ( $fence );
4838 $contact = $this->dbclass->get_escape_string ( $contact );
4839 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4840
4841 $query = "DELETE FROM geoContacts where username=\"{$username}\" and fencename=\"{$fence}\" and contact =\"{$contact}\"";
4842 $result = $this->dbclass->execute_query ( $query );
4843
4844 if ($result != true) {
4845 return ERROR;
4846 }
4847
4848 return SUCCESS;
4849 }
4850 public function updateGeofenceContact($fence, $contact, $email, $sms, $method, $timebased, $stime, $etime) {
4851 $fence = $this->dbclass->get_escape_string ( $fence );
4852 $contact = $this->dbclass->get_escape_string ( $contact );
4853 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4854 $timezone = $this->dbclass->get_escape_string ( $_SESSION ['timezone'] );
4855
4856 $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}\"";
4857 $result = $this->dbclass->execute_query ( $query );
4858
4859 if ($result != true) {
4860 return ERROR;
4861 }
4862
4863 return SUCCESS;
4864 }
4865 public function addGeofenceContact($fence, $contact, $email, $sms, $method) {
4866 $fence = $this->dbclass->get_escape_string ( $fence );
4867 $contact = $this->dbclass->get_escape_string ( $contact );
4868 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4869
4870 $query = "SELECT COUNT(*) from geoContacts Where username=\"{$username}\" and fencename=\"{$fence}\" and contact=\"{$contact}\"";
4871 $result = $this->dbclass->execute_query ( $query );
4872 $ans = $this->dbclass->get_result_complete ();
4873 if ($ans [0] ['COUNT(*)'] > 0)
4874 return EXISTS;
4875
4876 $query = "INSERT into geoContacts SET email=\"{$email}\",sms=\"{$sms}\",method=\"{$method}\", username=\"{$username}\" , fencename=\"{$fence}\" , contact =\"{$contact}\"";
4877 $result = $this->dbclass->execute_query ( $query );
4878
4879 if ($result != true) {
4880 return ERROR;
4881 }
4882
4883 return SUCCESS;
4884 }
4885 public function getContactsList($fields_list = "*") {
4886 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4887 $QUERY = "SELECT {$fields_list} FROM contacts WHERE username=\"$username\" ORDER BY name";
4888 $this->dbclass->execute_query ( $QUERY );
4889 $answer = $this->dbclass->get_result_complete ();
4890 if ($answer == false)
4891 return ERROR;
4892 return $answer;
4893 }
4894 public function removeContactCard($id) {
4895 $query = "SELECT * FROM contacts where id=\"{$id}\"";
4896 $this->dbclass->execute_query ( $query );
4897 $ans = $this->dbclass->get_result_complete ();
4898
4899 $contact = $this->dbclass->get_escape_string ( $ans [0] ['name'] );
4900 $username = $this->dbclass->get_escape_string ( $ans [0] ['username'] );
4901
4902 $query = "DELETE FROM contacts WHERE id=\"$id\"";
4903 $result = $this->dbclass->execute_query ( $query );
4904
4905 $query = "DELETE FROM geoContacts where username=\"{$username}\" and contact=\"{$contact}\"";
4906 $result = $this->dbclass->execute_query ( $query );
4907
4908 if ($result != true) {
4909 return ERROR;
4910 }
4911
4912 return SUCCESS;
4913 }
4914 public function saveContactCard() {
4915 $_POST ['username'] = $_SESSION ['username'];
4916
4917 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4918
4919 $query = "REPLACE INTO contacts SET ";
4920 $query .= basicTransactions::prepareMySQL_POSTRequest ();
4921 $result = $this->dbclass->execute_query ( $query );
4922
4923 if ($result == FALSE) {
4924 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
4925 $this->writeDebugLog ( $this->dbclass->dblink->error );
4926 }
4927 //return mysql_insert_id ( $this->dblink );
4928 return $this->dbclass->dblink->insert_id;
4929 }
4930 public function getTLGroupWise($name) {
4931 $name = $this->dbclass->get_escape_string ( $name );
4932 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4933
4934 $QUERY = "SELECT name,trackerid FROM trackers WHERE logicalGroup=\"$name\" AND username=\"$username\"";
4935 $this->dbclass->execute_query ( $QUERY );
4936 return $this->dbclass->get_result_complete ();
4937 }
4938 public function addGroup($name, $desc) {
4939 $name = $this->dbclass->get_escape_string ( $name );
4940 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4941
4942 $QUERY = "SELECT COUNT(*) FROM logicalGroups WHERE username=\"$username\" AND name=\"$name\"";
4943 $this->dbclass->execute_query ( $QUERY );
4944 $ans = $this->dbclass->get_result_complete ();
4945
4946 if ($ans [0] ['COUNT(*)'] > 0)
4947 return "exists";
4948
4949 $query = "INSERT INTO logicalGroups SET username=\"$username\", name=\"$name\", description=\"$desc\"";
4950 $result = $this->dbclass->execute_query ( $query );
4951
4952 if ($result != true) {
4953 //return $query . mysql_error ( $this->dbclass->dblink );
4954 return $query . $this->dbclass->dblink->error;
4955 }
4956
4957 return SUCCESS;
4958 }
4959 public function removeGroup($name) {
4960 $name = $this->dbclass->get_escape_string ( $name );
4961 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4962
4963 $query = "UPDATE trackers SET logicalGroup=\"DEFAULT\" WHERE username=\"$username\" AND logicalGroup=\"$name\"";
4964 $result = $this->dbclass->execute_query ( $query );
4965
4966 $query = "DELETE FROM logicalGroups WHERE username=\"$username\" AND name=\"$name\"";
4967 $result = $this->dbclass->execute_query ( $query );
4968
4969 return SUCCESS;
4970 }
4971 public function moveTracker($gname, $tid) {
4972 $gname = $this->dbclass->get_escape_string ( $gname );
4973 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
4974
4975 $query = "UPDATE trackers SET logicalGroup=\"$gname\" WHERE username=\"$username\" AND trackerid=\"$tid\"";
4976 $result = $this->dbclass->execute_query ( $query );
4977
4978 return SUCCESS;
4979 }
4980 public function isDriverIDEnabled($tid) {
4981 $QUERY = "SELECT driverID FROM trackersFeatures WHERE trackerid=\"$tid\"";
4982 $this->dbclass->execute_query ( $QUERY );
4983 $ans = $this->dbclass->get_result_complete ();
4984 if ($ans [0] ['driverID'] == 1)
4985 return true;
4986 return false;
4987 }
4988 public function verifyDriverTag($driver, $tid) {
4989 if ($driver ['map'] == "E") {
4990 $username = $this->dbclass->get_escape_string ( $driver ['username'] );
4991
4992 $QUERY = "SELECT trackerid FROM trackersMap WHERE username=\"" . $username . "\" AND trackerid = \"$tid\"";
4993 $this->dbclass->execute_query ( $QUERY );
4994 $ans = $this->dbclass->get_result_complete ();
4995 if ($ans == false)
4996 return false;
4997 return true;
4998 } else {
4999
5000 $QUERY = "SELECT trackerid FROM driversMap WHERE tagID = \"" . $driver ['tagID'] . "\" AND trackerid =\"$tid\"";
5001 $this->dbclass->execute_query ( $QUERY );
5002 $ans = $this->dbclass->get_result_complete ();
5003 if ($ans == false)
5004 return false;
5005 return true;
5006 }
5007 return false;
5008 }
5009
5010 public function getDriverTagForTimestamp($tid, $ts){
5011
5012 global $LANGUAGE;
5013 global $GMONGO;
5014
5015 // Check if Driver Identification is turned ON on this unit or not
5016 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5017
5018 $obj = new emptyClass ();
5019 if ($this->isDriverIDEnabled ( $tid ) == false) {
5020
5021 $QUERY = "SELECT name,tagID FROM driversMap INNER JOIN drivers USING(tagID) WHERE trackerid =\"$tid\" AND type='S'";
5022 $this->dbclass->execute_query ( $QUERY );
5023 $ans = $this->dbclass->get_result_complete ();
5024
5025 if ($ans != false && $ans [0] ['name'] != NULL && $ans [0] ['name'] != '') {
5026 $obj->rvalue = DRIVERID_SUCCESS;
5027 $obj->name = $ans [0] ['name'];
5028 $obj->tagID = $ans [0] ['tagID'];
5029 return $obj;
5030 }
5031
5032 $obj->rvalue = DRIVERID_NOT_ENABLED;
5033 return $obj;
5034 }
5035
5036 $ans = $GMONGO->getAMRecord($tid, array('driverID' => array('$exists' => 1, '$ne' => 0, '$ne' => '', '$ne' => null), 'timestamp' => array('$lte', $ts)), 1);
5037
5038 $tag = 0;
5039
5040 if ($ans != false) {
5041 if ($ans [0] ['driverID'] != NULL && $ans [0] ['driverID'] != '') {
5042 $tag = $ans [0] ['driverID'];
5043 }
5044 }
5045
5046 if ($tag == 0) {
5047 $ans = $GMONGO->getERecords_reverseSorted($tid, array('event' => EVENT_RFID_SWEEP, 'timestamp' => array('$lte', $ts)), 1);
5048 if ($ans == false) {
5049 $obj->rvalue = DRIVERID_NOEVENT;
5050 return $obj;
5051 }
5052
5053 $tag = $this->dbclass->get_escape_string ( $ans [0] ['description'] );
5054 }
5055
5056 $QUERY = "SELECT * FROM drivers WHERE tagID=\"$tag\"";
5057 $this->dbclass->execute_query ( $QUERY );
5058 $ans = $this->dbclass->get_result_complete ();
5059 if ($ans == false) {
5060 $obj->rvalue = DRIVERID_NOT_FOUND;
5061 return $obj;
5062 }
5063
5064 $auth = $this->verifyDriverTag ( $ans [0], $tid );
5065
5066 $obj->rvalue = DRIVERID_SUCCESS;
5067 $obj->name = $ans [0] ['name'] . " (" . $ans [0] ['mobile'] . ")";
5068 if ($auth == false)
5069 $obj->name . " " . $LANGUAGE ['UNAUTHORIZED'];
5070 $obj->tagid = $ans [0] ['tagID'];
5071
5072 return $obj;
5073
5074 }
5075
5076
5077 public function getDriverName($tid) {
5078 global $LANGUAGE;
5079 global $GMONGO;
5080
5081 // Check if Driver Identification is turned ON on this unit or not
5082 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5083
5084 $obj = new emptyClass ();
5085 if ($this->isDriverIDEnabled ( $tid ) == false) {
5086
5087 $QUERY = "SELECT name,tagID FROM driversMap INNER JOIN drivers USING(tagID) WHERE trackerid =\"$tid\" AND type='S'";
5088 $this->dbclass->execute_query ( $QUERY );
5089 $ans = $this->dbclass->get_result_complete ();
5090
5091 if ($ans != false && $ans [0] ['name'] != NULL && $ans [0] ['name'] != '') {
5092 $obj->rvalue = DRIVERID_SUCCESS;
5093 $obj->name = $ans [0] ['name'];
5094 $obj->tagID = $ans [0] ['tagID'];
5095 return $obj;
5096 }
5097
5098 $obj->rvalue = DRIVERID_NOT_ENABLED;
5099 return $obj;
5100 }
5101
5102 // $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('driverID' => array('$exists' => 1,'$ne' => 0,'$ne' => '', '$ne' => null)), 1);
5103
5104 $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);
5105
5106 $tag = 0;
5107
5108 if ($ans != false) {
5109 if ($ans [0] ['driverID'] != NULL && $ans [0] ['driverID'] != '') {
5110 $tag = $ans [0] ['driverID'];
5111 }
5112 }
5113
5114 if ($tag == 0) {
5115 $ans = $GMONGO->getERecords_reverseSorted($tid, array('event' => EVENT_RFID_SWEEP), 1);
5116
5117 if ($ans == false) {
5118 $obj->rvalue = DRIVERID_NOEVENT;
5119 return $obj;
5120 }
5121
5122 $tag = $this->dbclass->get_escape_string ( $ans [0] ['description'] );
5123 }
5124
5125 $QUERY = "SELECT * FROM drivers WHERE tagID=\"$tag\"";
5126 $this->dbclass->execute_query ( $QUERY );
5127 $ans = $this->dbclass->get_result_complete ();
5128 if ($ans == false) {
5129 $obj->rvalue = DRIVERID_NOT_FOUND;
5130 return $obj;
5131 }
5132
5133 $auth = $this->verifyDriverTag ( $ans [0], $tid );
5134
5135 $obj->rvalue = DRIVERID_SUCCESS;
5136 $obj->name = $ans [0] ['name'] . " (" . $ans [0] ['mobile'] . ")";
5137 if ($auth == false)
5138 $obj->name . " " . $LANGUAGE ['UNAUTHORIZED'];
5139 $obj->tagid = $ans [0] ['tagID'];
5140
5141 return $obj;
5142 }
5143
5144
5145
5146
5147 public function isIgnitionEnabled($tid) {
5148 $QUERY = "SELECT ignitionSensor FROM trackersFeatures WHERE trackerid=\"$tid\"";
5149 $this->dbclass->execute_query ( $QUERY );
5150 $ans = $this->dbclass->get_result_complete ();
5151
5152 if ($ans [0] ['ignitionSensor'] != 1) {
5153 return false;
5154 }
5155 return true;
5156 }
5157 public function getFeatures($tid) {
5158 $QUERY = "SELECT * FROM trackersFeatures INNER JOIN trackersExInfo USING(trackerid) WHERE trackerid=\"$tid\"";
5159 $this->dbclass->execute_query ( $QUERY );
5160 $ans = $this->dbclass->get_result_complete ();
5161 return $ans [0];
5162 }
5163
5164
5165 public function getTrackerDuration_withIgnition($tid, $status) {
5166 global $GMONGO;
5167 /*$fdate = new FNSDateTime($_SESSION['timezone']);
5168 $fdate->setUTCDate("1970-01-01", 0);
5169 $sinceBeginning = array(array('timestamp' => $fdate->dateTime->getTimestamp()));*/
5170 $sinceBeginning = array(array('timestamp' => 0));
5171
5172 switch ($status) {
5173 case "s" :
5174 $lastIgnition = $GMONGO->getAMLastIgnition($tid);
5175
5176 if ($lastIgnition == false)
5177 $lastIgnition = $sinceBeginning;
5178
5179 //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp'])),1);
5180 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
5181 break;
5182
5183 case "i" : //Have changed this
5184 //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
5185 $result = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
5186
5187 //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $result[0]['timestamp'])),1);
5188 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $result[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
5189 break;
5190
5191 case "n" :
5192 case "g" :
5193 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('latitude' => array('$exists' => 1, '$ne' => null)),1);
5194 if ($ans == false)
5195 return false;
5196 break;
5197
5198 case "m" :
5199 $ans = $GMONGO->getAMLastStopped($tid);
5200 if ($ans == false) {
5201 $ans = $sinceBeginning;
5202 }
5203 //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp'])),1);
5204 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
5205 break;
5206
5207 default :
5208 return false;
5209 }
5210
5211 $obj = new emptyClass ();
5212 $obj->date = $ans [0] ['date'];
5213 $obj->time = $ans [0] ['time'];
5214 $obj->timestamp = $ans [0] ['timestamp'];
5215
5216 return $obj;
5217 }
5218
5219 public function getTrackerDuration_withoutIgnition($tid, $status) {
5220 global $GMONGO;
5221 /*$fdate = new FNSDateTime($_SESSION['timezone']);
5222 $fdate->setUTCDate("1970-01-01", 0);
5223 $sinceBeginning = array(array('timestamp' => $fdate->dateTime->getTimestamp()));*/
5224 $sinceBeginning = array(array('timestamp' => 0));
5225
5226 switch ($status) {
5227 case "s" :
5228 //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
5229 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
5230
5231 if ($ans == false)
5232 $ans = $sinceBeginning;
5233
5234 //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp'])),1);
5235 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
5236 break;
5237
5238 case "n" :
5239 case "g" :
5240 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('latitude' => array('$exists' => 1, '$ne' => null)),1);
5241 if ($ans == false)
5242 return false;
5243 break;
5244
5245 case "m" :
5246 //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0),1);
5247 $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0, 'latitude' => array('$exists' => 1, '$ne' => null)),1);
5248
5249 if ($ans == false)
5250 $ans = $sinceBeginning;
5251 //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp'])),1);
5252 $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
5253 break;
5254
5255 default :
5256 return false;
5257 }
5258
5259 $obj = new emptyClass ();
5260 $obj->date = $ans [0] ['date'];
5261 $obj->time = $ans [0] ['time'];
5262 $obj->timestamp = $ans [0] ['timestamp'];
5263
5264 return $obj;
5265 }
5266
5267 // Returns duration for the tracker in stopped or nodata mode
5268 public function getTrackerDuration($tid, $status) {
5269 if ($this->isIgnitionEnabled ( $tid ))
5270 return $this->getTrackerDuration_withIgnition ( $tid, $status );
5271 return $this->getTrackerDuration_withoutIgnition ( $tid, $status );
5272 }
5273
5274
5275 private function getCurrentTrip_withoutIgnition($tid, $status) {
5276 global $GMONGO;
5277
5278 // If status is not moving then fetch last packet with GPS location and send
5279 if ($status == 'n' || $status == 'g') {
5280 //return $GMONGO->getLastAMRecord($tid);
5281 return $GMONGO->getLastARecord($tid);
5282 }
5283
5284 if ($status == 's') {
5285 // Get last Ignition on packet
5286 //return $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0),1);
5287 //$start = time();
5288 $queryCriteria = array('speed' => array('$gt' => 0), 'latitude' => array('$exists' => 1, '$ne' => null)); //Logic is different from V4, changed in V5
5289 $lastIgnition = $GMONGO->getAMRecord_reverseSorted($tid, $queryCriteria, 1);
5290 //$end = time() - $start;
5291 //$this->writeDebugLog("\r\nStop without ignition time TRACKERID $end seconds");
5292
5293 if ($lastIgnition == false || count ( $lastIgnition ) == 0) // NO ignition packet
5294 $answer = $GMONGO->getLastARecord($tid);
5295 else {
5296 //$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
5297 $answer = $GMONGO->getLastARecord($tid);
5298 }
5299
5300 //return $lastIgnition;
5301 return $answer;
5302 }
5303
5304 if ($status == 'm') {
5305 // Get last Ignition on packet
5306 //$lastIgnition = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0),1);
5307 $queryCriteria = array('speed' => 0, 'latitude' => array('$exists' => 1, '$ne' => null));
5308 $lastIgnition = $GMONGO->getAMRecord_reverseSorted($tid, $queryCriteria,1);
5309
5310
5311 if ($lastIgnition == false) {
5312 $lastIgnition = array ();
5313 $lastIgnition[0] = array();
5314 $lastIgnition [0]['timestamp'] = 0;
5315 }
5316
5317 return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
5318 //return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gte' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
5319 }
5320
5321 return false;
5322 }
5323
5324 private function getCurrentTrip_withIgnition($tid, $status) {
5325 global $GMONGO;
5326 // If status is not moving then fetch last packet and send
5327 if ($status == 'n' || $status == 'g') {
5328
5329 $answer = $GMONGO->getLastAMRecord($tid);
5330
5331 if ($answer != false) {
5332 if (strpos ( $answer [0] ['IO'], "j" ) === false) {
5333 $status = "s";
5334 } else {
5335 $status = "m";
5336 }
5337 } else
5338 return false;
5339 }
5340
5341 if ($status == 's') {
5342 // Get last Ignition on packet
5343 //$start = time();
5344 $lastIgnition = $GMONGO->getAMLastIgnition($tid);
5345
5346 //$ignTime = time() - $start;
5347 //$this->writeDebugLog("\r\nIgnition TRACKERID $tid $ignTime seconds");
5348
5349
5350 if ($lastIgnition == false || count ( $lastIgnition ) == 0) {
5351 $answer = $GMONGO->getLastARecord($tid);
5352 } // NO ignition packet
5353 else {
5354 //$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1); //in use
5355 //$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp'])),1);
5356 $answer = $GMONGO->getLastARecord($tid);
5357 }
5358
5359 return $answer;
5360 }
5361
5362 if ($status == 'i' || $status == 'm') {
5363 // Get last Ignition on packet
5364 //$start = time();
5365 $lastIgnition = $GMONGO->getAMLastStopped($tid);
5366
5367 //$end = time() - $start;
5368 //$this->writeDebugLog("\r\nLast stopped time TRACKERID $tid $end seconds");
5369
5370 if ($lastIgnition == false ) {
5371 $lastIgnition = array ();
5372 $lastIgnition[0] = array();
5373 $lastIgnition [0]['timestamp'] = 0;
5374 }
5375
5376
5377 /*$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gte' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
5378
5379 if ($answer == false)
5380 $answer = $GMONGO->getLastARecord($tid);*/
5381 //return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gte' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
5382 return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
5383 }
5384 return false;
5385 }
5386
5387 public function getCurrentTrip($tid, $status, $checkAccess = false) {
5388 if ($this->isIgnitionEnabled ( $tid ))
5389 return $this->getCurrentTrip_withIgnition ( $tid, $status );
5390 return $this->getCurrentTrip_withoutIgnition ( $tid, $status );
5391 }
5392
5393
5394
5395
5396 public function getLiveDetails($tid, $lat, $lng, $status, $geocode = true) {
5397 // Fetch Driver if status is moving or idling
5398 $reply = new emptyClass ();
5399
5400 $reply->driver = $this->getDriverName ( $tid );
5401 $reply->duration = $this->getTrackerDuration ( $tid, $status );
5402
5403 if ($geocode == true) {
5404 $geo = new GEOCODER ();
5405 $reply->location = $geo->search ( $lat, $lng, true );
5406 }
5407
5408 return $reply;
5409 }
5410 public function addPOI() {
5411 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5412
5413 $query = "INSERT INTO POI SET username=\"$username\",";
5414 $query .= basicTransactions::prepareMySQL_POSTRequest ();
5415 $result = $this->dbclass->execute_query ( $query );
5416
5417 $no = new emptyClass ();
5418
5419 if ($result != true) {
5420 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
5421 $this->writeDebugLog ( $this->dbclass->dblink->error );
5422 $no->result = ERROR;
5423 $no->id = - 1;
5424 return $no;
5425 }
5426 $no->result = SUCCESS;
5427 //$no->id = mysql_insert_id ( $this->dbclass->dblink );
5428 $no->id = $this->dbclass->dblink->insert_id;
5429 return $no;
5430 }
5431 public function addPOI2User($poi, $users) {
5432 $poiCount = count ( $poi );
5433 $execute = true;
5434 $index = 0;
5435 $ucount = count ( $users );
5436
5437 while ( $execute ) {
5438 $v = $poiCount - 50;
5439 if ($v < 0) {
5440 $v = $poiCount;
5441 $execute = false;
5442 } else {
5443 $v = 50;
5444 $poiCount -= 50;
5445 }
5446
5447 $id = "";
5448 for($x = 0; $x < $v; $x ++, $index ++) {
5449 if ($x != 0)
5450 $id .= " OR ";
5451 $id .= "id = " . $poi [$index];
5452 }
5453 for($x = 0; $x < $ucount; $x ++) {
5454 $username = $this->dbclass->get_escape_string ( $users [$x] );
5455 $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;
5456 $result = $this->dbclass->execute_query ( $query );
5457 }
5458 }
5459 return SUCCESS;
5460 }
5461 public function addPOI_processor($fields, $fcount) {
5462 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5463 $id = 0;
5464
5465 $fieldsTxt = '"' . $username . '"';
5466
5467 for($v = 0; $v < $fcount; $v ++) {
5468 $fieldsTxt .= ',"' . $this->dbclass->get_escape_string ( $fields [$v] ) . '"';
5469 }
5470
5471 $query = "INSERT INTO POI (username,latitude,longitude,color,radius,shortName,description, icontype,metric,keywords) VALUES({$fieldsTxt})";
5472 $result = $this->dbclass->execute_query ( $query );
5473 if ($result == false)
5474 $this->writeDebugLog ( $this->dbclass->dblink->error );
5475 }
5476 public function updatePOI() {
5477 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5478 $id = $_POST ['id'];
5479 unset ( $_POST ['id'] );
5480
5481 $query = "UPDATE POI SET ";
5482 $query .= basicTransactions::prepareMySQL_POSTRequest ();
5483 $query .= " WHERE username=\"$username\" AND id=\"$id\"";
5484
5485 $result = $this->dbclass->execute_query ( $query );
5486
5487 $no = new emptyClass ();
5488
5489 if ($result != true) {
5490 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
5491 $this->writeDebugLog ( $this->dbclass->dblink->error );
5492 $no->result = ERROR;
5493 $no->id = - 1;
5494 return $no;
5495 }
5496
5497 $no->result = SUCCESS;
5498 $no->id = $id;
5499 return $no;
5500 }
5501 public function deletePOI($id) {
5502 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5503 $query = "DELETE FROM POI WHERE id=\"$id\" and username=\"$username\"";
5504
5505 $result = $this->dbclass->execute_query ( $query );
5506
5507 if ($result != true) {
5508 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
5509 $this->writeDebugLog ( $this->dbclass->dblink->error );
5510 return ERROR;
5511 }
5512
5513 return SUCCESS;
5514 }
5515 public function verifyStudentTag($tag) {
5516 $QUERY = "SELECT COUNT(*) FROM students WHERE tag =\"$tag\"";
5517 $this->dbclass->execute_query ( $QUERY );
5518 $ans = $this->dbclass->get_result_complete ();
5519 if ($ans [0] ['COUNT(*)'] > 0)
5520 return ERROR;
5521 return SUCCESS;
5522 }
5523 public function getStudentInfo($tag) {
5524 $QUERY = "SELECT *,students.name as sname FROM students inner join schools on (students.school = schools.id) WHERE students.tag='$tag'";
5525
5526 $this->dbclass->execute_query ( $QUERY );
5527 $ans = $this->dbclass->get_result_complete ();
5528 return $ans;
5529 }
5530 public function getSchoolsList($fields = "*") {
5531 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5532 $QUERY = "SELECT $fields FROM schools WHERE username=\"$username\"";
5533
5534 $this->dbclass->execute_query ( $QUERY );
5535 $ans = $this->dbclass->get_result_complete ();
5536 if ($ans == false)
5537 return ERROR;
5538 return $ans;
5539 }
5540 public function saveSchool() {
5541 $query = "REPLACE INTO schools SET ";
5542 $query .= basicTransactions::prepareMySQL_POSTRequest ();
5543 $result = $this->dbclass->execute_query ( $query );
5544 if ($result == false)
5545 $this->writeDebugLog ( $this->dbclass->dblink->error );
5546 //return mysql_insert_id ( $this->dblink );
5547 return $this->dbclass->dblink->insert_id;
5548 }
5549 public function removeSchool($id) {
5550 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5551 $query = "DELETE FROM schools WHERE id=\"{$id}\" AND username = \"$username\"";
5552 $result = $this->dbclass->execute_query ( $query );
5553
5554 $query = "SELECT id FROM students WHERE school=\"{$id}\" AND username=\"$username\"";
5555 $result = $this->dbclass->execute_query ( $query );
5556 $ans = $this->dbclass->get_result_complete ();
5557 if ($ans == false)
5558 return;
5559 $c = count ( $ans );
5560
5561 for($i = 0; $i < $c; $i ++) {
5562 $this->removeStudent ( $ans [$i] ['id'] );
5563 }
5564 }
5565 public function getStudentsList() {
5566 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5567 $QUERY = "SELECT * FROM students WHERE username=\"$username\"";
5568
5569 $this->dbclass->execute_query ( $QUERY );
5570 $ans = $this->dbclass->get_result_complete ();
5571 if ($ans == false)
5572 return ERROR;
5573 return $ans;
5574 }
5575 public function saveStudent() {
5576 $query = "REPLACE INTO students SET ";
5577 $query .= basicTransactions::prepareMySQL_POSTRequest ();
5578 $result = $this->dbclass->execute_query ( $query );
5579 if ($result == false)
5580 $this->writeDebugLog ( $this->dbclass->dblink->error );
5581 //return mysql_insert_id ( $this->dblink );
5582 return $this->dbclass->dblink->insert_id;
5583 }
5584 public function removeUserStudents($uname) {
5585 // uname is already escaped
5586 $QUERY = "SELECT * FROM students WHERE username=\"$uname\"";
5587 $this->dbclass->execute_query ( $QUERY );
5588 $ans = $this->dbclass->get_result_complete ();
5589
5590 for($i = 0; $i < count ( $ans ); $i ++) {
5591 $query = "DELETE FROM students WHERE id=\"{$ans[$i]['id']}\"";
5592 $result = $this->dbclass->execute_query ( $query );
5593
5594 $query = "DELETE FROM studentsCache WHERE id=\"{$ans[$i]['id']}\"";
5595 $result = $this->dbclass->execute_query ( $query );
5596 }
5597 }
5598 public function removeStudent($id) {
5599 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5600 $query = "DELETE FROM students WHERE id=\"{$id}\" AND username=\"$username\"";
5601 $result = $this->dbclass->execute_query ( $query );
5602
5603 $query = "DELETE FROM studentsCache WHERE id=\"{$id}\"";
5604 $result = $this->dbclass->execute_query ( $query );
5605 }
5606 public function getPOIList($username) {
5607 $username = $this->dbclass->get_escape_string ( $username );
5608 $QUERY = "SELECT id, latitude,longitude,radius,color,shortName,description,icontype, metric, keywords FROM POI WHERE username=\"$username\"";
5609
5610 $this->dbclass->execute_query ( $QUERY );
5611 $ans = $this->dbclass->get_result_complete ();
5612 if ($ans == false)
5613 return ERROR;
5614 return $ans;
5615 }
5616 function getHardwareType($tid) {
5617 $query = "SELECT type FROM trackers WHERE trackerid = \"{$tid}\"";
5618 $this->dbclass->execute_query ( $query );
5619 $answer = $this->dbclass->get_result_complete ();
5620 return $answer;
5621 } // function
5622 public function getHardwareInfo($tid) {
5623 $QUERY = "SELECT * FROM trackers as A2 LEFT JOIN (select ip,port,vehicleid as trackerid, protocol from napt) as A1 using(trackerid) where trackerid=\"$tid\"";
5624 $this->dbclass->execute_query ( $QUERY );
5625 return $this->dbclass->get_result_complete ();
5626 }
5627 public function outputEvent($tid, $ecode) {
5628 global $GMONGO;
5629
5630 $tdate = gmdate ( "Y-m-d", time () );
5631 $ttime = gmdate ( "H-i-s", time () );
5632
5633 $attime = explode ( "-", $ttime );
5634 $tsec = ($attime [0] * 60 * 60) + ($attime [1] * 60) + ($attime [2]);
5635
5636 /*$query = "INSERT INTO E{$tid} SET date=\"{$tdate}\", time = {$tsec},latitude =0, longitude=0, speed=0, direction=0,event={$ecode}";
5637 $result = $this->dbclass->execute_query ( $query );*/
5638
5639 $records = array();
5640 $records['date'] = $tdate;
5641 $records['time'] = $tsec;
5642 $records['latitude'] = 0;
5643 $records['longitude'] = 0;
5644 $records['speed'] = 0;
5645 $records['direction'] = 0;
5646 $records['event'] = $ecode;
5647 $records['description'] = '';
5648
5649 $result = $GMONGO->insertRecordIntoE($tid, $records);
5650
5651
5652 /*if ($result != true) {
5653 return mysql_error ( $this->dbclass->dblink );
5654 }*/
5655
5656 return SUCCESS;
5657 }
5658 public function saveTripName() {
5659 $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']}\"";
5660 $result = $this->dbclass->execute_query ( $query );
5661 $ans = $this->dbclass->get_result_complete ();
5662
5663 $name = $this->dbclass->get_escape_string ( $_POST ['name'] );
5664 if ($ans [0] ['COUNT(*)'] > 0)
5665 $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']}\"";
5666 else
5667 $query = "INSERT INTO trips SET sDate=\"{$_POST['sdate']}\",eDate=\"{$_POST['edate']}\",sTime=\"{$_POST['stime']}\",eTime=\"{$_POST['etime']}\",trackerid=\"{$_POST['tid']}\",name=\"{$name}\"";
5668
5669 $result = $this->dbclass->execute_query ( $query );
5670
5671 if ($result != true) {
5672 //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
5673 $this->writeDebugLog ( $this->dbclass->dblink->error );
5674 return ERROR;
5675 }
5676 return SUCCESS;
5677 }
5678 public function remOdometerTune($id) {
5679 $QUERY = "DELETE FROM odoTuning WHERE id='$id'";
5680 $this->dbclass->execute_query ( $QUERY );
5681 }
5682 public function getOdotuneList($tid) {
5683 $QUERY = "SELECT * FROM odoTuning WHERE trackerid='$tid' ORDER BY date,time";
5684 $this->dbclass->execute_query ( $QUERY );
5685 $ans = $this->dbclass->get_result_complete ();
5686 if ($ans != false) {
5687 foreach ( $ans as $k => $v ) {
5688 $odo = $this->getOdometer ( $tid, $v ['date'], $v ['time'], ODOMETER_NOADJUST );
5689 $ans [$k] ['odo'] = $v ['odo'] + $odo;
5690 }
5691 }
5692 return $ans;
5693 }
5694
5695 public function addOdometerTune($tid, $date, $time, $value) {
5696 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
5697 $fdate->setDate ( $date, $time );
5698
5699 $date = $fdate->UTCDateString;
5700 $time = $fdate->UTCTime;
5701
5702 $odo = $this->getOdometer ( $tid, $date, $time, ODOMETER_NOADJUST );
5703 $value = $value - $odo;
5704
5705 $QUERY = "INSERT INTO odoTuning SET date='$date',time='$time', trackerid='$tid', odo='$value' ";
5706 $this->dbclass->execute_query ( $QUERY );
5707
5708 $r = new emptyClass ();
5709 //$r->id = mysql_insert_id ( $this->dblink );
5710 $r->id = $this->dbclass->dblink->insert_id;
5711 $r->dateString = $fdate->getFormattedString ();
5712 $r->odo = $odo + $value;
5713 $r->tid = $tid;
5714
5715 print json_encode ( $r );
5716 }
5717
5718 public function getHardwareCode($type) {
5719 $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"$type\"";
5720 $this->dbclass->execute_query ( $QUERY );
5721 $ans = $this->dbclass->get_result_complete ();
5722
5723 return $ans [0] ['hwcode'];
5724 }
5725
5726 public function getOdometerSum($tid, $fromDate, $fromTime, $date, $time) {
5727 $periodClause = basicTransactions::getPeriodClause_excludeStartTime ( $fromDate, $fromTime, $date, $time );
5728 $QUERY = "SELECT SUM(odometer) FROM M{$tid} WHERE ($periodClause)";
5729 $this->dbclass->execute_query ( $QUERY );
5730 $ans = $this->dbclass->get_result_complete ();
5731
5732 return $ans [0] ['SUM(odometer)'];
5733 }
5734
5735
5736 public function getOdometer($tid, $date, $time, $mode = ODOMETER_NONE) {
5737 global $GMONGO;
5738
5739 $features = $this->getTrackerInformation ( $tid );
5740 $features = $features [0];
5741
5742 $fdate = new FNSDateTime($_SESSION['timezone']);
5743
5744 $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"{$features['type']}\"";
5745 $this->dbclass->execute_query ( $QUERY );
5746 $ans = $this->dbclass->get_result_complete ();
5747
5748 $TELTONIKA = false;
5749 if ($ans [0] ['hwcode'] == 'TELT')
5750 $TELTONIKA = true;
5751
5752 if (isset ( $features ['odometerSensor'] ) && $features ['odometerSensor'] == 1) {
5753
5754 // Check for value in the odometer cache
5755 $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";
5756 $this->dbclass->execute_query ( $QUERY );
5757 $ans = $this->dbclass->get_result_complete ();
5758
5759 if ($ans == false) {
5760 if (isset ( $features ['odometerValue'] ) == false || $features ['odometerValue'] == null)
5761 $ov = 0;
5762 else
5763 $ov = $features ['odometerValue'];
5764 } else {
5765 $ov = $ans [0] ['odo'];
5766 }
5767
5768 if ($TELTONIKA == true) {
5769 $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";
5770 $this->dbclass->execute_query ( $QUERY );
5771 $ans = $this->dbclass->get_result_complete ();
5772
5773 //var_dump($ans);
5774
5775 $cacheValue = 0;
5776 $fromdate = "1970-01-01";
5777 $fromtime = 0;
5778
5779 if ($ans != false) {
5780 $fromdate = $ans [0] ['date'];
5781 $fromtime = $ans [0] ['time'];
5782 $cacheValue = $ans [0] ['odo'];
5783 }
5784 $fdate->setUTCDate($fromdate, $fromtime);
5785 $fromts = $fdate->dateTime->getTimestamp();
5786 $fdate->setUTCDate($date, $time);
5787 $tots = $fdate->dateTime->getTimestamp();
5788 $odo = $GMONGO->getOdometerSum($tid, $fromts, $tots);
5789 //$odo = $GMONGO->getOdometerSum($tid, $fdate->dateTime->getTimestamp(), time());
5790 $cOdo = $cacheValue + $odo['result'][0]['odometer'];
5791
5792 //var_dump($odo);
5793 //die;
5794
5795 switch ($mode) {
5796 case ODOMETER_NONE :
5797 break;
5798 case ODOMETER_NOADJUST :
5799 $ov = 0;
5800 break;
5801 }
5802
5803 } else {
5804 $fdate->setUTCDate($date, $time);
5805 $ts = $fdate->dateTime->getTimestamp();
5806 switch ($mode) {
5807 case ODOMETER_NONE :
5808 $inputs = $GMONGO->getAMRecord($tid, array('timestamp' => $ts), 1);
5809 break;
5810 case ODOMETER_NOADJUST :
5811 $inputs = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp' => array('$lte' => $ts)), 1);
5812 $ov = 0;
5813 break;
5814 }
5815 $cOdo = $inputs [0] ['odometer'];
5816 }
5817
5818 $cOdo += $ov;
5819 } else
5820 $cOdo = false;
5821
5822 return $cOdo;
5823 }
5824
5825
5826 /*public function getOdometerHistory($tid, $date, $time, $mode = ODOMETER_NONE) {
5827 global $GMONGO;
5828
5829 $features = $this->getTrackerInformation ( $tid );
5830 $features = $features [0];
5831
5832 $fdate = new FNSDateTime($_SESSION['timezone']);
5833
5834 $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"{$features['type']}\"";
5835 $this->dbclass->execute_query ( $QUERY );
5836 $ans = $this->dbclass->get_result_complete ();
5837
5838 $TELTONIKA = false;
5839 if ($ans [0] ['hwcode'] == 'TELT')
5840 $TELTONIKA = true;
5841
5842 if (isset ( $features ['odometerSensor'] ) && $features ['odometerSensor'] == 1) {
5843
5844 // Check for value in the odometer cache
5845 $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";
5846 $this->dbclass->execute_query ( $QUERY );
5847 $ans = $this->dbclass->get_result_complete ();
5848
5849 if ($ans == false) {
5850 if (isset ( $features ['odometerValue'] ) == false || $features ['odometerValue'] == null)
5851 $ov = 0;
5852 else
5853 $ov = $features ['odometerValue'];
5854 } else {
5855 $ov = $ans [0] ['odo'];
5856 }
5857
5858 if ($TELTONIKA == true) {
5859 $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";
5860 $this->dbclass->execute_query ( $QUERY );
5861 $ans = $this->dbclass->get_result_complete ();
5862
5863 $cacheValue = 0;
5864 $fromdate = "1970-01-01";
5865 $fromtime = 0;
5866
5867 if ($ans != false) {
5868 $fromdate = $ans [0] ['date'];
5869 $fromtime = $ans [0] ['time'];
5870 $cacheValue = $ans [0] ['odo'];
5871 }
5872 $fdate->setUTCDate($fromdate, $fromtime);
5873 $fromts = $fdate->dateTime->getTimestamp();
5874 $fdate->setUTCDate($date, $time);
5875 $tots = $fdate->dateTime->getTimestamp();
5876 //$odo = $GMONGO->getOdometerSum($tid, $fdate->dateTime->getTimestamp(), time());
5877 $odo = $GMONGO->getOdometerSum($tid, $fromts, $tots);
5878 $cOdo = $cacheValue + $odo['result'][0]['odometer'];
5879
5880 //var_dump($cOdo);
5881 //die;
5882
5883 switch ($mode) {
5884 case ODOMETER_NONE :
5885 break;
5886 case ODOMETER_NOADJUST :
5887 $ov = 0;
5888 break;
5889 }
5890
5891 } else {
5892 $fdate->setUTCDate($date, $time);
5893 $ts = $fdate->dateTime->getTimestamp();
5894 switch ($mode) {
5895 case ODOMETER_NONE :
5896 $inputs = $GMONGO->getAMRecord($tid, array('timestamp' => $ts), 1);
5897 break;
5898 case ODOMETER_NOADJUST :
5899 $inputs = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp' => array('$lte' => $ts)), 1);
5900 $ov = 0;
5901 break;
5902 }
5903 $cOdo = $inputs [0] ['odometer'];
5904 }
5905
5906 $cOdo += $ov;
5907 } else
5908 $cOdo = false;
5909
5910 return $cOdo;
5911 }*/
5912
5913 public function getHistoryDriverName($tid, $date, $time) {
5914 // Driver name
5915 global $LANGUAGE;
5916 global $GMONGO;
5917
5918 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
5919
5920 if ($this->isDriverIDEnabled ( $tid ) == false) {
5921 $QUERY = "SELECT name,tagID FROM driversMap INNER JOIN drivers USING(tagID) WHERE trackerid =\"$tid\" AND type='S'";
5922 $this->dbclass->execute_query ( $QUERY );
5923 $ans = $this->dbclass->get_result_complete ();
5924
5925 if ($ans != false && $ans [0] ['name'] != NULL && $ans [0] ['name'] != '') {
5926 return $ans [0] ['name'];
5927 }
5928 }
5929
5930 $tag = 0;
5931
5932 $fdate = new FNSDateTime('UTC');
5933 $fdate->setDate($date, $time);
5934 $timestamp = $fdate->dateTime->getTimestamp();
5935
5936 $queryCriteria = array('timestamp' => $timestamp);
5937 $field = array('driverID' => true);
5938 $ans = $GMONGO->getAMRecordLimitedField($tid, $queryCriteria, $field);
5939
5940 /*$QUERY = "SELECT driverID from M{$tid} WHERE (date =\"" . $date . "\" AND time =\"" . $time . "\")";
5941 $this->dbclass->execute_query ( $QUERY );
5942 $ans = $this->dbclass->get_result_complete ();*/
5943
5944 if ($ans != false && $ans [0] ['driverID'] != NULL && $ans [0] ['driverID'] != '') {
5945 $tag = $ans [0] ['driverID'];
5946 } else {
5947 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
5948 $fdate->setDate ( $fdate->UTCDateString, 0 );
5949 $dayts = $fdate->dateTime->getTimestamp();
5950 $ans = $GMONGO->getERecords_reverseSorted($tid, array('event' => EVENT_RFID_SWEEP, '$or' => array(array('timestamp' => array('$lte' => $timestamp)), array('date' => $fdate->UTCDateString) ) ));
5951
5952 /*$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";
5953 $this->dbclass->execute_query ( $QUERY );
5954 $ans = $this->dbclass->get_result_complete ();*/
5955 if ($ans != false) {
5956 $tag = $ans [0] ['description'];
5957 } else
5958 return false;
5959 }
5960
5961 $QUERY = "SELECT * FROM drivers WHERE tagID=\"{$tag}\"";
5962 $this->dbclass->execute_query ( $QUERY );
5963 $ans = $this->dbclass->get_result_complete ();
5964
5965 if ($ans != false) {
5966 return $ans [0] ['name'] . " " . ($this->verifyDriverTag ( $ans [0], $tid ) ? '' : $LANGUAGE ['UNAUTHORIZED']);
5967 }
5968
5969 return false;
5970 }
5971 public function getExtendedTrackerInformation($tid) {
5972 $info = array ();
5973
5974 $features = $this->getTrackerInformation ( $tid );
5975 $info ['features'] = $features [0];
5976
5977 $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"{$features[0]['type']}\"";
5978 $this->dbclass->execute_query ( $QUERY );
5979 $ans = $this->dbclass->get_result_complete ();
5980
5981 $info ['hardware'] = $ans [0];
5982
5983 return $info;
5984 }
5985 public function getOdometerTuning_periodWise($tid, $sDate, $sTime, $eDate, $eTime) {
5986 $periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
5987 $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";
5988 $this->dbclass->execute_query ( $QUERY );
5989 $previousTune = $this->dbclass->get_result_complete ();
5990
5991 $QUERY = "SELECT date,time,odo FROM odoTuning WHERE (trackerid='$tid' AND ($periodClause)) ORDER BY date, time";
5992 $this->dbclass->execute_query ( $QUERY );
5993 $tuneValues = $this->dbclass->get_result_complete ();
5994
5995 if ($previousTune != false) {
5996 if ($tuneValues == false)
5997 $tuneValues = $previousTune;
5998 else
5999 $tuneValues = array_merge ( $previousTune, $tuneValues );
6000 }
6001 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
6002
6003 $tuneTimes = array ();
6004
6005 if ($tuneValues != false) {
6006 foreach ( $tuneValues as $k => $v ) {
6007 $fdate->setUTCDate ( $v ['date'], $v ['time'] );
6008 $n = new emptyClass ();
6009 $n->ts = $fdate->dateTime->getTimestamp ();
6010 $n->odo = $v ['odo'];
6011 array_push ( $tuneTimes, $n );
6012 }
6013 }
6014 return $tuneTimes;
6015 }
6016 public function getTrips($tid, $sDate, $sTime, $eDate, $eTime) {
6017 require_once FLEET_FOLDER . '/tripsLogic.php';
6018
6019 global $GMONGO;
6020
6021 $info = $this->getExtendedTrackerInformation ( $tid );
6022
6023 $features = &$info ['features'];
6024 $hardware = &$info ['hardware'];
6025
6026 $features = $this->getFeatures ( $tid );
6027
6028 if ($features ['ignitionSensor'] != 1) {
6029 $tripWise = false;
6030 } else {
6031 $tripWise = true;
6032 }
6033
6034 //$periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
6035
6036 $periodClauseMongo = array();
6037
6038 $periodClauseMongo = basicTransactions::getPeriodClauseMongo ( $sDate, $sTime, $eDate, $eTime );
6039
6040 $odometer = new OdometerHelper ();
6041 $odometer->initialize ( $tid, $sDate, $sTime, $eDate, $eTime );
6042
6043 /*$QUERY = "SELECT * FROM A{$tid} WHERE " . $periodClause . " ORDER BY date,time";
6044 $this->dbclass->execute_query ( $QUERY );
6045 $ans = $this->dbclass->get_result_complete ();
6046
6047 $QUERY = "SELECT * FROM M{$tid} WHERE " . $periodClause . " ORDER BY date,time";
6048 $this->dbclass->execute_query ( $QUERY );
6049 $mtable = $this->dbclass->get_result_complete ();*/
6050 //$periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
6051
6052 $periodClauseMongo ['latitude'] = array('$exists' => 1, '$ne' => null);
6053
6054 //$mtable = $GMONGO->getAMRecord($tid, $periodClauseMongo);
6055 $ans = $GMONGO->getAMRecord($tid, $periodClauseMongo);
6056
6057 //print_r($mtable);
6058 //die;
6059
6060 $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
6061
6062 $rtype = array ();
6063
6064 $odoInitialized = false;
6065
6066 if ($ans != false) {
6067 $acount = count ( $ans );
6068 /*$comp = 0;
6069 $mcount = count ( $mtable );*/
6070
6071 $fprofiles = $this->getTrackerFuelProfiles ( $tid );
6072 $tprofiles = $this->getTrackerTemperatureProfiles ( $tid );
6073
6074 for($x = 0; $x < $acount; $x ++) {
6075 //echo "check".$ans[$x]['odometer']."\r\n";
6076 //echo $x;
6077 //die;
6078 //for(; $comp < $mcount; $comp ++) {
6079 //if ($ans [$x] ['date'] == $mtable [$comp] ['date'] && $ans [$x] ['time'] == $mtable [$comp] ['time']) {
6080 for($i = 0; $i < 5; $i ++) {
6081 if ($fprofiles [$i] != false) {
6082 $ans [$x] ['fuel' . ($i + 1)] = $this->getFuelFromProfile ( $fprofiles [$i], $ans [$x] ['fuel' . ($i + 1)] );
6083 } else {
6084 unset ( $ans [$x] ['fuel' . ($i + 1)] );
6085 }
6086
6087 if ($tprofiles [$i] != false) {
6088 $ans [$x] ['temperature' . ($i + 1)] = $this->getTemperatureFromProfile ( $tprofiles [$i], $ans [$x] ['temperature' . ($i + 1)] );
6089 } else {
6090 unset ( $ans [$x] ['temperature' . ($i + 1)] );
6091 }
6092 }
6093
6094 //$ans [$x] = array_merge ( $ans [$x], $mtable [$comp] );
6095
6096 if ($odoInitialized) {
6097 $ans[$x]['odometer'] = $odometer->getValue($ans[$x]['odometer'],$ans[$x]['date'], $ans[$x]['time']);
6098 } else {
6099 $ans [$x] ['odometer'] = $odometer->begin($ans[$x]['date'], $ans[$x]['time']);
6100 $odoInitialized = true;
6101 }
6102
6103 //$comp ++;
6104 //break;
6105 //} //if
6106 //} //inner for $mcount
6107
6108 if ($ans [$x] ['speed'] > 0)
6109 $status = "m";
6110 else {
6111 if (isset ( $ans [$x] ['IO'] )) {
6112 if (strpos ( $ans [$x] ['IO'], "j" ) === false)
6113 $status = "s";
6114 else
6115 $status = "i";
6116 } else
6117 $status = "s";
6118 }
6119 $ans [$x] ['s'] = $status;
6120
6121 $fnsdate->setUTCDate ( $ans [$x] ['date'], $ans [$x] ['time'] );
6122 $ans [$x] ['dateString'] = $fnsdate->getFormattedString ();
6123 } //Outer for loop, traversing $ans
6124
6125 if ($tripWise == true) {
6126 $rtype ['mode'] = "trip";
6127 $rtype ['data'] = tripsLogic::tripsWithIgnition ( $ans );
6128
6129 $c = count ( $rtype ['data'] );
6130
6131 for($i = 0; $i < $c; $i ++) {
6132 // Trips name
6133 $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\"";
6134 $this->dbclass->execute_query ( $QUERY );
6135 $ans = $this->dbclass->get_result_complete ();
6136
6137 if ($ans != false) {
6138 $rtype ['data'] [$i] ['name'] = $ans [0] ['name'];
6139 } else {
6140 $rtype ['data'] [$i] ['name'] = '';
6141 }
6142
6143 // Driver name
6144 $dname = $this->getHistoryDriverName ( $tid, $rtype ['data'] [$i] ['sdate'], $rtype ['data'] [$i] ['stime'] );
6145 $rtype ['data'] [$i] ['dname'] = $dname;
6146 }
6147 } else {
6148 $rtype ['mode'] = "continuous";
6149 $rtype ['data'] = array (
6150 'data' => tripsLogic::tripsWithoutIgnition ( $ans )
6151 );
6152 }
6153 }
6154
6155 /*if ($ans != false) {
6156 $acount = count ( $ans );
6157 $comp = 0;
6158 $mcount = count ( $mtable );
6159
6160 $fprofiles = $this->getTrackerFuelProfiles ( $tid );
6161 $tprofiles = $this->getTrackerTemperatureProfiles ( $tid );
6162
6163 for($x = 0; $x < $acount; $x ++) {
6164 for(; $comp < $mcount; $comp ++) {
6165 if ($ans [$x] ['date'] == $mtable [$comp] ['date'] && $ans [$x] ['time'] == $mtable [$comp] ['time']) {
6166 for($i = 0; $i < 5; $i ++) {
6167 if ($fprofiles [$i] != false) {
6168 $mtable [$comp] ['fuel' . ($i + 1)] = $this->getFuelFromProfile ( $fprofiles [$i], $mtable [$comp] ['fuel' . ($i + 1)] );
6169 } else {
6170 unset ( $mtable [$comp] ['fuel' . ($i + 1)] );
6171 }
6172
6173 if ($tprofiles [$i] != false) {
6174 $mtable [$comp] ['temperature' . ($i + 1)] = $this->getTemperatureFromProfile ( $tprofiles [$i], $mtable [$comp] ['temperature' . ($i + 1)] );
6175 } else {
6176 unset ( $mtable [$comp] ['temperature' . ($i + 1)] );
6177 }
6178 }
6179
6180 $ans [$x] = array_merge ( $ans [$x], $mtable [$comp] );
6181
6182 if ($odoInitialized) {
6183 $ans[$x]['odometer'] = $odometer->getValue($ans[$x]['odometer'],$ans[$x]['date'], $ans[$x]['time']);
6184 } else {
6185 $ans [$x] ['odometer'] = $odometer->begin($ans[$x]['date'], $ans[$x]['time']);
6186 $odoInitialized = true;
6187 }
6188
6189 $comp ++;
6190 break;
6191 }
6192 }
6193
6194 if ($ans [$x] ['speed'] > 0)
6195 $status = "m";
6196 else {
6197 if (isset ( $ans [$x] ['IO'] )) {
6198 if (strpos ( $ans [$x] ['IO'], "j" ) === false)
6199 $status = "s";
6200 else
6201 $status = "i";
6202 } else
6203 $status = "s";
6204 }
6205 $ans [$x] ['s'] = $status;
6206
6207 $fnsdate->setUTCDate ( $ans [$x] ['date'], $ans [$x] ['time'] );
6208 $ans [$x] ['dateString'] = $fnsdate->getFormattedString ();
6209 }
6210
6211 if ($tripWise == true) {
6212 $rtype ['mode'] = "trip";
6213 $rtype ['data'] = tripsLogic::tripsWithIgnition ( $ans );
6214
6215 $c = count ( $rtype ['data'] );
6216
6217 for($i = 0; $i < $c; $i ++) {
6218 // Trips name
6219 $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\"";
6220 $this->dbclass->execute_query ( $QUERY );
6221 $ans = $this->dbclass->get_result_complete ();
6222
6223 if ($ans != false) {
6224 $rtype ['data'] [$i] ['name'] = $ans [0] ['name'];
6225 } else {
6226 $rtype ['data'] [$i] ['name'] = '';
6227 }
6228
6229 // Driver name
6230 $dname = $this->getHistoryDriverName ( $tid, $rtype ['data'] [$i] ['sdate'], $rtype ['data'] [$i] ['stime'] );
6231 $rtype ['data'] [$i] ['dname'] = $dname;
6232 }
6233 } else {
6234 $rtype ['mode'] = "continuous";
6235 $rtype ['data'] = array (
6236 'data' => tripsLogic::tripsWithoutIgnition ( $ans )
6237 );
6238 }
6239 }*/
6240
6241 // Fetch Events
6242 /*$QUERY = "SELECT * FROM E{$tid} WHERE " . basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime ) . " ORDER BY date,time";
6243 $this->dbclass->execute_query ( $QUERY );
6244 $ans = $this->dbclass->get_result_complete ();*/
6245
6246 $ans = $GMONGO->getERecords($tid, $periodClauseMongo);
6247
6248 if ($ans != false) {
6249 $ecount = count ( $ans );
6250
6251 for($i = 0; $i < $ecount; $i ++) {
6252 $fnsdate->setUTCDate ( $ans [$i] ['date'], $ans [$i] ['time'] );
6253 $ans [$i] ['dateString'] = $fnsdate->getFormattedString ();
6254 $ans [$i] ['description'] = utf8_encode($ans [$i] ['description']->bin);
6255 unset ( $ans [$i] ['date'] );
6256 unset ( $ans [$i] ['time'] );
6257 }
6258 $rtype ['events'] = $ans;
6259 }
6260 return $rtype;
6261 }
6262 public function getCompleteGeofences() {
6263 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6264 $QUERY = "SELECT id,radius,fencename,type,color FROM geofences WHERE username='$uname' ORDER BY fencename";
6265 $this->dbclass->execute_query ( $QUERY );
6266 $geofences = $this->dbclass->get_result_complete ();
6267
6268 $c = count ( $geofences );
6269
6270 for($i = 0; $i < $c; $i ++) {
6271 $QUERY = "SELECT * FROM geofencesPoints WHERE id = " . $geofences [$i] ['id'] . " LIMIT 0,1";
6272 $this->dbclass->execute_query ( $QUERY );
6273 $gp = $this->dbclass->get_result_complete ();
6274 $geofences [$i] ['latitude'] = $gp [0] ['latitude'];
6275 $geofences [$i] ['longitude'] = $gp [0] ['longitude'];
6276 }
6277 return $geofences;
6278 }
6279
6280 public function getGeofenceByName($fencenameTemp) {
6281 //$uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6282 $QUERY = "SELECT id,radius,fencename,type,color FROM geofences WHERE fencename='$fencenameTemp' ORDER BY fencename";
6283 $this->dbclass->execute_query ( $QUERY );
6284 $geofences = $this->dbclass->get_result_complete ();
6285
6286 $c = count ( $geofences );
6287
6288 for($i = 0; $i < $c; $i ++) {
6289 $QUERY = "SELECT * FROM geofencesPoints WHERE id = " . $geofences [$i] ['id'] . " LIMIT 0,1";
6290 $this->dbclass->execute_query ( $QUERY );
6291 $gp = $this->dbclass->get_result_complete ();
6292 $geofences [$i] ['latitude'] = $gp [0] ['latitude'];
6293 $geofences [$i] ['longitude'] = $gp [0] ['longitude'];
6294 }
6295 return $geofences;
6296 }
6297
6298 public function getGeofences($trackerid) {
6299 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6300 $QUERY = "SELECT geoid FROM activeGeofences WHERE username=\"$uname\" AND trackerid =\"$trackerid\" GROUP BY geoid";
6301 $this->dbclass->execute_query ( $QUERY );
6302 $result = $this->dbclass->get_result_complete ();
6303 if ($result == false)
6304 return ERROR;
6305 $c = count ( $result );
6306
6307 $fences = array ();
6308 $fences ['t0'] = array ();
6309 $fences ['t1'] = array ();
6310 $fences ['t2'] = array ();
6311
6312 for($i = 0; $i < $c; $i ++) {
6313 $QUERY = "SELECT * FROM geofences WHERE id = " . $result [$i] ['geoid'];
6314 $this->dbclass->execute_query ( $QUERY );
6315 $geofence = $this->dbclass->get_result_complete ();
6316
6317 $QUERY = "SELECT latitude, longitude FROM geofencesPoints WHERE id = " . $result [$i] ['geoid'];
6318 $this->dbclass->execute_query ( $QUERY );
6319 $geofence [0] ['points'] = $this->dbclass->get_result_complete ();
6320
6321 array_push ( $fences ['t' . $geofence [0] ['type']], $geofence [0] );
6322 }
6323 return $fences;
6324 }
6325 private function deactivateGeofence($uname, $fid) {
6326 $QUERY = "SELECT * FROM activeGeofences WHERE username=\"$uname\" AND geoid =\"$fid\"";
6327 $this->dbclass->execute_query ( $QUERY );
6328 $result = $this->dbclass->get_result_complete ();
6329 if ($result == false)
6330 return;
6331 $fcount = count ( $result );
6332
6333 for($i = 0; $i < $fcount; $i ++) {
6334 $query = "DELETE FROM activeGeofences WHERE username='{$uname}' and id='{$result[$i]['id']}'";
6335 $rs = $this->dbclass->execute_query ( $query );
6336
6337 if ($rs != true) {
6338 //$this->writeDebugLog ( "\r\n" . mysql_error ( $this->dbclass->dblink ) );
6339 $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
6340 return ERROR;
6341 }
6342
6343 $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']}' , ";
6344 $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']}'";
6345 $rs = $this->dbclass->execute_query ( $query );
6346 if ($rs != true) {
6347 $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
6348 return ERROR;
6349 }
6350 }
6351 }
6352 public function deleteUserGeofences($uname) {
6353 // uname is already escaped
6354 $query = "SELECT id from geofences WHERE username=\"" . $uname . "\"";
6355 $this->dbclass->execute_query ( $query );
6356 $result = $this->dbclass->get_result_complete ();
6357
6358 for($i = 0; $i < count ( $result ); $i ++) {
6359 $fid = $result [$i] ['id'];
6360 $query = "DELETE FROM geofences WHERE username=\"" . $uname . "\" and id = \"" . $fid . "\"";
6361 $this->dbclass->execute_query ( $query );
6362 $query = "DELETE FROM geofencesPoints WHERE id = \"" . $fid . "\"";
6363 $this->dbclass->execute_query ( $query );
6364 $query = "DELETE FROM geoContacts where username=\"{$uname}\" and fencename=\"{$fid}\"";
6365 $this->dbclass->execute_query ( $query );
6366 $query = "DELETE FROM POI WHERE id IN (SELECT POIID from checkpoints WHERE id={$fid})";
6367 $this->dbclass->execute_query ( $query );
6368 $query = "DELETE FROM checkpoints where id=\"{$fid}\"";
6369 $this->dbclass->execute_query ( $query );
6370
6371 $query = "DELETE FROM archiveFences where geoid=\"{$fid}\"";
6372 $this->dbclass->execute_query ( $query );
6373 }
6374 return SUCCESS;
6375 }
6376 public function deleteGeofence($fid) {
6377 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6378
6379 $query = "SELECT id from geofences WHERE username=\"" . $uname . "\" and id = \"" . $fid . "\"";
6380 $this->dbclass->execute_query ( $query );
6381 $result = $this->dbclass->get_result_complete ();
6382 if ($result [0] ['id'] != $fid)
6383 return ERROR;
6384
6385 $this->deactivateGeofence ( $uname, $fid );
6386
6387 $query = "DELETE FROM geofences WHERE username=\"" . $uname . "\" and id = \"" . $fid . "\"";
6388 $this->dbclass->execute_query ( $query );
6389 $query = "DELETE FROM geofencesPoints WHERE id = \"" . $fid . "\"";
6390 $this->dbclass->execute_query ( $query );
6391 $query = "DELETE FROM geoContacts where username=\"{$uname}\" and fencename=\"{$fid}\"";
6392 $this->dbclass->execute_query ( $query );
6393 $query = "DELETE FROM POI WHERE id IN (SELECT POIID from checkpoints WHERE id={$fid})";
6394 $this->dbclass->execute_query ( $query );
6395 $query = "DELETE FROM checkpoints where id=\"{$fid}\"";
6396 $this->dbclass->execute_query ( $query );
6397
6398 $query = "DELETE FROM archiveFences where geoid=\"{$fid}\"";
6399 $this->dbclass->execute_query ( $query );
6400
6401 return SUCCESS;
6402 }
6403 public function getActiveGeofences($fid) {
6404 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6405
6406 $query = "SELECT * FROM activeGeofences WHERE username=\"$uname\" AND geoid=\"$fid\"";
6407 $result = $this->dbclass->execute_query ( $query );
6408 return $this->dbclass->get_result_complete ();
6409 }
6410 public function getCompleteActiveGeofences() {
6411 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6412
6413 if (isset ( $_GET ['type'] ) && $_GET ['type'] == 2) {
6414 $query = "SELECT activeGeofences.* FROM activeGeofences inner join geofences ON (geoid = geofences.id) WHERE geofences.username=\"$uname\" and type = 2";
6415 } else {
6416 $query = "SELECT activeGeofences.* FROM activeGeofences inner join geofences ON (geoid = geofences.id) WHERE geofences.username=\"$uname\" and (type = 0 or type = 1)";
6417 }
6418
6419 $result = $this->dbclass->execute_query ( $query );
6420 return $this->dbclass->get_result_complete ();
6421 }
6422 public function setActiveGeofences($result, $fid) {
6423 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6424
6425 if ($result == false)
6426 return;
6427 $fcount = count ( $result );
6428
6429 $fname = $this->dbclass->get_escape_string ( $result [0] ['fencename'] );
6430
6431 for($i = 0; $i < $fcount; $i ++) {
6432 $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']}' , ";
6433 $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']}'";
6434 $this->dbclass->execute_query ( $query );
6435 //$id = mysql_insert_id ( $this->dblink );
6436 $id = $this->dbclass->dblink->insert_id;
6437
6438 $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']}' , ";
6439 $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']}'";
6440 $this->dbclass->execute_query ( $query );
6441 }
6442 }
6443 public function deactivateTrackerFence($record) {
6444 $fname = $this->dbclass->get_escape_string ( rawurldecode ( $record ['fencename'] ) );
6445 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6446
6447 $query = "DELETE FROM activeGeofences WHERE username='{$uname}' AND id='{$record['id']}'";
6448 $this->dbclass->execute_query ( $query );
6449
6450 $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']}' , ";
6451 $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']}'";
6452 $this->dbclass->execute_query ( $query );
6453 }
6454 public function activateGeofence($record) {
6455 $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
6456 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6457
6458 $query = "INSERT INTO activeGeofences SET id = 0, geoid={$record['geoid']}, username='{$uname}' , fencename='{$fname}' , trackerid='{$record['trackerid']}' , sdate='{$record['sdate']}' , shr='{$record['shr']}' , ";
6459 $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']}'";
6460 $result = $this->dbclass->execute_query ( $query );
6461
6462 if ($result == false) {
6463 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
6464 $this->writeDebugLog ( $this->dbclas->dblink->error );
6465 }
6466
6467 //$fid = mysql_insert_id ( $this->dblink );
6468 $fid = $this->dbclass->dblink->insert_id;
6469
6470 $query = "INSERT INTO ACTIVEGEO_CACHE SET id = $fid, geoid={$record['geoid']}, username='{$uname}' , fencename='{$fname}' , trackerid='{$record['trackerid']}' , sdate='{$record['sdate']}' , shr='{$record['shr']}' , ";
6471 $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']}'";
6472 $result = $this->dbclass->execute_query ( $query );
6473 if ($result == false) {
6474 //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
6475 $this->writeDebugLog ( $this->dbclas->dblink->error );
6476 }
6477 }
6478 public function saveGeofence($record) {
6479 $fname = $this->dbclass->get_escape_string ( $record->fencename );
6480 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6481
6482 $query = "INSERT INTO geofences SET username=\"$username\", fencename=\"$fname\", radius=" . $record->radius . ", type = " . $record->type . ",color = '" . $record->color . "'";
6483 $result = $this->dbclass->execute_query ( $query );
6484 //$geoid = mysql_insert_id ( $this->dblink );
6485 $geoid = $this->dbclass->dblink->insert_id;
6486
6487 $count = count ( $record->locations );
6488
6489 for($i = 0; $i < $count; $i ++) {
6490 $query = "INSERT INTO geofencesPoints SET id=\"$geoid\", latitude=" . $record->locations [$i]->latitude . ", longitude = " . $record->locations [$i]->longitude;
6491 $result = $this->dbclass->execute_query ( $query );
6492 }
6493
6494 if ($record->type == 2) {
6495 $count = count ( $record->checkpoints );
6496
6497 for($i = 0; $i < $count; $i ++) {
6498 $cname = $this->dbclass->get_escape_string ( $record->checkpoints [$i]->chkname );
6499 $poiid = '';
6500
6501 if ($record->checkpoints [$i]->addpoi == 1) {
6502 $query = "INSERT INTO POI SET username='$username', latitude = " . $record->checkpoints [$i]->latitude;
6503 $query .= ", longitude = " . $record->checkpoints [$i]->longitude . ", color='" . $record->color . "', radius = " . $record->checkpoints [$i]->chkradius;
6504 $query .= ", shortName = '" . $cname . "', metric='KILOMETERS',icontype='de', keywords = '$username, $cname'";
6505 $result = $this->dbclass->execute_query ( $query );
6506
6507 //$poiid = ",POIID = " . mysql_insert_id ( $this->dblink );
6508 $poiid = ",POIID = " . $this->dbclass->dblink->insert_id;
6509 }
6510
6511 $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;
6512 $result = $this->dbclass->execute_query ( $query );
6513 }
6514 }
6515
6516 return $geoid;
6517 }
6518 public function loadGeofence($fid) {
6519 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6520
6521 $query = "SELECT * FROM geofences WHERE username=\"$username\" AND id=\"$fid\"";
6522 $result = $this->dbclass->execute_query ( $query );
6523 $basic_settings = $this->dbclass->get_result_complete ();
6524
6525 if ($basic_settings == false)
6526 return ERROR;
6527
6528 $query = "SELECT latitude,longitude FROM geofencesPoints WHERE id=\"$fid\"";
6529 $result = $this->dbclass->execute_query ( $query );
6530 $adv_settings = $this->dbclass->get_result_complete ();
6531
6532 $basic_settings = $basic_settings [0];
6533 $basic_settings ['locations'] = $adv_settings;
6534
6535 if ($basic_settings ['type'] == 2) {
6536 $query = "SELECT * FROM checkpoints WHERE id=\"$fid\"";
6537 $result = $this->dbclass->execute_query ( $query );
6538 $checkpoints = $this->dbclass->get_result_complete ();
6539
6540 $basic_settings ['checkpoints'] = $checkpoints;
6541 }
6542
6543 return $basic_settings;
6544 }
6545 public function getGeofenceList($fields_list = "*") {
6546 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6547 $QUERY = "SELECT {$fields_list} FROM geofences WHERE username=\"$username\" AND (type = 0 OR type = 1)";
6548 $this->dbclass->execute_query ( $QUERY );
6549 $ans = $this->dbclass->get_result_complete ();
6550 if ($ans == false)
6551 return ERROR;
6552 return $ans;
6553 }
6554 public function getPathList($fields_list = "*") {
6555 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6556 $QUERY = "SELECT {$fields_list} FROM geofences WHERE username=\"$username\" AND type = 2";
6557 $this->dbclass->execute_query ( $QUERY );
6558 return $this->dbclass->get_result_complete ();
6559 }
6560 public function getCompleteActivePaths() {
6561 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6562
6563 $query = "SELECT * FROM ACTIVEPATH WHERE username=\"$uname\"";
6564 $result = $this->dbclass->execute_query ( $query );
6565 return $this->dbclass->get_result_complete ();
6566 }
6567 public function getActivePaths($fencename) {
6568 $fname = $this->dbclass->get_escape_string ( $fencename );
6569 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6570
6571 $query = "SELECT * FROM ACTIVEPATH WHERE username=\"$uname\" AND fencename=\"$fname\"";
6572 $result = $this->dbclass->execute_query ( $query );
6573 return $this->dbclass->get_result_complete ();
6574 }
6575 public function setActivePaths($result, $fencename) {
6576 $fname = $this->dbclass->get_escape_string ( $fencename );
6577 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6578
6579 if ($result == false)
6580 return;
6581 $fcount = count ( $result );
6582
6583 for($i = 0; $i < $fcount; $i ++) {
6584
6585 $query = "INSERT INTO ACTIVEPATH SET username='{$uname}' , fencename='{$fname}' , trackerid='{$result[$i]['trackerid']}' , sdate='{$result[$i]['sdate']}' , ";
6586 $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']}'";
6587 $this->dbclass->execute_query ( $query );
6588 }
6589 }
6590 public function activatePath($record) {
6591 $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
6592 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6593
6594 $query = "INSERT INTO ACTIVEPATH SET username='{$uname}' , fencename='{$fname}' , trackerid='{$record['trackerid']}' , sdate='{$record['sdate']}' ,";
6595 $query .= "edate='{$record['edate']}' , alertOffRoute='{$record['alertOffRoute']}' , daysGap='{$record['daysGap']}', speedLimit='{$record['speedLimit']}', stime='{$record['stime']}', etime='{$record['etime']}'";
6596 $this->dbclass->execute_query ( $query );
6597 }
6598 private function deactivatePath($uname, $fname) {
6599 $QUERY = "SELECT * FROM ACTIVEPATH WHERE username=\"$uname\" AND fencename =\"$fname\"";
6600 $this->dbclass->execute_query ( $QUERY );
6601 $result = $this->dbclass->get_result_complete ();
6602 if ($result == false)
6603 return;
6604 $fcount = count ( $result );
6605
6606 for($i = 0; $i < $fcount; $i ++) {
6607 $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' and fencename='{$fname}' and trackerid='{$result[$i]['trackerid']}' and sdate='{$result[$i]['sdate']}' and ";
6608 $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']}'";
6609 $this->dbclass->execute_query ( $query );
6610 }
6611 }
6612 public function deactivateTrackerPath($record) {
6613 $fname = $this->dbclass->get_escape_string ( rawurldecode ( $record ['fencename'] ) );
6614 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6615
6616 $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' AND fencename='{$fname}' AND trackerid='{$record['trackerid']}' AND sdate='{$record['sdate']}' AND ";
6617 $query .= " edate='{$record['edate']}' AND alertOffRoute='{$record['alertOffRoute']}' AND daysGap='{$record['daysGap']}' AND speedLimit='{$record['speedLimit']}' AND stime='{$record['stime']}' AND etime='{$record['etime']}'";
6618 $this->dbclass->execute_query ( $query );
6619 }
6620 public function loadPath($fname) {
6621 $n = new emptyClass ();
6622 $n->fencename = $fname;
6623
6624 $fname = $this->dbclass->get_escape_string ( $fname );
6625 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6626
6627 $query = "SELECT radius FROM PATHS WHERE username=\"$username\" AND fencename=\"$fname\" LIMIT 0,1";
6628 $result = $this->dbclass->execute_query ( $query );
6629 $radius = $this->dbclass->get_result_complete ();
6630 if ($radius == false)
6631 return false;
6632
6633 $n->radius = $radius [0] ['radius'];
6634
6635 $query = "SELECT latitude,longitude FROM PATHS WHERE username=\"$username\" AND fencename=\"$fname\"";
6636 $result = $this->dbclass->execute_query ( $query );
6637 $locations = $this->dbclass->get_result_complete ();
6638
6639 $n->locations = $locations;
6640
6641 return $n;
6642 }
6643 public function deletePath($fencename) {
6644 $fname = $this->dbclass->get_escape_string ( $fencename );
6645 $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6646
6647 $this->deactivatePath ( $uname, $fname );
6648
6649 $query = "DELETE FROM PATHS WHERE username=\"" . $uname . "\" and fencename = \"" . $fname . "\"";
6650 $this->dbclass->execute_query ( $query );
6651 }
6652 public function savePath($record) {
6653 $fname = $this->dbclass->get_escape_string ( $record->fencename );
6654 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6655
6656 $query = "SELECT COUNT(*) FROM PATHS WHERE username=\"$username\" AND fencename=\"$fname\"";
6657 $result = $this->dbclass->execute_query ( $query );
6658 $answer = $this->dbclass->get_result_complete ();
6659 if ($answer [0] ['COUNT(*)'] > 0)
6660 return EXISTS;
6661
6662 $count = count ( $record->locations );
6663
6664 for($i = 0; $i < $count; $i ++) {
6665 $query = "INSERT INTO PATHS SET username=\"$username\", fencename=\"$fname\", latitude=" . $record->locations [$i]->lat . ", longitude = " . $record->locations [$i]->lng . ",radius = " . $record->radius;
6666 $result = $this->dbclass->execute_query ( $query );
6667 }
6668
6669 return SUCCESS;
6670 }
6671 //public function getActiveFenceDetails ($fid = false, $fenceName, $trackerid) {
6672 public function getActiveFenceDetails ($fenceName, $trackerid) {
6673 $fenceName = $this->dbclass->get_escape_string($fenceName);
6674 $query = "SELECT * FROM activeGeofences WHERE fencename = '{$fenceName}' AND trackerid = '{$trackerid}'";
6675 $result = $this->dbclass->execute_query($query);
6676 if ($result)
6677 return $this->dbclass->get_result_complete();
6678 return $result;
6679 }
6680 public function getTrackerName($tid) {
6681 $query = "SELECT name FROM trackers WHERE trackerid=\"$tid\"";
6682 $this->dbclass->execute_query ( $query );
6683 $answer = $this->dbclass->get_result_complete ();
6684 return $answer;
6685 }
6686 public function getFleetTrackersFuelTanks() {
6687 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6688 $QUERY = "SELECT trackerid, tankCapacity FROM trackersMap inner join trackersDetails using (trackerid) WHERE username=\"{$username}\"";
6689 $this->dbclass->execute_query ( $QUERY );
6690 return $this->dbclass->get_result_complete ();
6691 }
6692
6693 public function getEJMSTrackersList($username, $fields_list = "*") {
6694 $username = $this->dbclass->get_escape_string($username);
6695 $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}\"";
6696 $this->dbclass->execute_query ( $QUERY );
6697 $trackers = $this->dbclass->get_result_complete ();
6698 $trackers = $this->filterExpiredTrackers ( $trackers );
6699
6700 if (count ( $trackers ) == 0)
6701 return false;
6702 if ($fields_list == "*")
6703 return $trackers;
6704
6705 $sp = explode ( ",", $fields_list );
6706 $newlist = array ();
6707
6708 foreach ( $trackers as $t ) {
6709 $n = array ();
6710 foreach ( $sp as $v ) {
6711 $n [$v] = $t [$v];
6712 }
6713 array_push ( $newlist, $n );
6714 }
6715
6716 return $newlist;
6717 }
6718
6719 public function getEJMSDriversList($username) {
6720 $username = $this->dbclass->get_escape_string($username);
6721 $QUERY = "SELECT tagID, name, licno FROM drivers WHERE username=\"{$username}\"";
6722 $this->dbclass->execute_query ( $QUERY );
6723 return $this->dbclass->get_result_complete ();
6724 }
6725
6726 private function getTrackerGroups ($tid) {
6727 $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$tid}'";
6728 $this->dbclass->execute_query($query);
6729 $groups = $this->dbclass->get_result_complete();
6730
6731 if ($groups != false) {
6732 $gid = array_map(function ($a) {
6733 return $a['groupName'];
6734 }, $groups);
6735 return implode(',', $gid);
6736 }
6737
6738 return false;
6739 }
6740
6741 public function getTrackersList($fields_list = "*") {
6742 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6743 if ($_SESSION ['accounttype'] == USERTYPE_ADMINISTRATOR) {
6744 //$QUERY = "SELECT {$fields_list} FROM trackers inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid)";
6745 $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'";
6746 $this->dbclass->execute_query ( $QUERY );
6747 return $this->dbclass->get_result_complete ();
6748 } else {
6749 $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}\"";
6750 $this->dbclass->execute_query ( $QUERY );
6751 $trackers = $this->dbclass->get_result_complete ();
6752 $trackers = $this->filterExpiredTrackers ( $trackers );
6753 if (count ( $trackers ) == 0)
6754 return false;
6755
6756 if ($fields_list == "*")
6757 return $trackers;
6758
6759 $sp = explode ( ",", $fields_list );
6760 $newlist = array ();
6761
6762 foreach ( $trackers as $t ) {
6763 $groups = $this->getTrackerGroups($t['trackerid']);
6764 $n = array ();
6765 foreach ( $sp as $v ) {
6766 $n [$v] = $t [$v];
6767 }
6768 if ($groups != false)
6769 $n ['groups'] = $groups;
6770 array_push ( $newlist, $n );
6771 }
6772
6773 return $newlist;
6774 }
6775 }
6776 public function driverTrackersList($did) {
6777 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6778
6779 $QUERY = "SELECT trackerid,name FROM driversMap inner join trackers using (trackerid) WHERE tagID=\"$did\"";
6780 $this->dbclass->execute_query ( $QUERY );
6781 return $this->dbclass->get_result_complete ();
6782 }
6783 public function getFutureSchedulesList() {
6784 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6785 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
6786 $QUERY = "SELECT * FROM schedules WHERE username=\"$username\" AND ((sdate = \"{$fdate->UTCDateString}\" AND stime > \"{$fdate->UTCTime}\") OR (sdate > \"{$fdate->UTCDateString}\"))";
6787 $this->dbclass->execute_query ( $QUERY );
6788 return $this->dbclass->get_result_complete ();
6789 }
6790
6791 public function getPastSchedulesList() {
6792 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6793 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
6794 $QUERY = "SELECT * FROM schedules WHERE username=\"$username\" AND ((sdate = \"{$fdate->UTCDateString}\" AND stime <= \"{$fdate->UTCTime}\") OR (sdate < \"{$fdate->UTCDateString}\"))";
6795 $this->dbclass->execute_query ( $QUERY );
6796 return $this->dbclass->get_result_complete ();
6797 }
6798
6799 private function getScheduleForTracker($tid, $sdate, $stime, $edate, $etime) {
6800 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6801 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
6802
6803 $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}\"))";
6804 $this->dbclass->execute_query ( $QUERY );
6805 $answer = $this->dbclass->get_result_complete ();
6806 if ($answer == false)
6807 return false;
6808 $c = count ( $answer );
6809
6810 $fdate->setUTCDate ( $sdate, $stime );
6811 $des_start = $fdate->dateTime->getTimestamp ();
6812
6813 $fdate->setUTCDate ( $edate, $etime );
6814 $des_end = $fdate->dateTime->getTimestamp ();
6815
6816 $busy = false;
6817
6818 for($i = 0; $i < $c; $i ++) {
6819 $fdate->setUTCDate ( $answer [$i] ['sdate'], $answer [$i] ['stime'] );
6820 $sch_start = $fdate->dateTime->getTimestamp ();
6821 $fdate->setUTCDate ( $answer [$i] ['edate'], $answer [$i] ['etime'] );
6822 $sch_end = $fdate->dateTime->getTimestamp ();
6823
6824 if ($des_start >= $sch_start && $des_start <= $sch_end)
6825 $busy = true;
6826 else if ($des_end >= $sch_start && $des_end <= $sch_end)
6827 $busy = true;
6828 }
6829
6830 return $busy;
6831 }
6832 public function SCH_GetTrackers($sdate, $stime, $edate, $etime) {
6833 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6834 $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\"";
6835 $this->dbclass->execute_query ( $QUERY );
6836 $answer = $this->dbclass->get_result_complete ();
6837 $answer = $this->filterExpiredTrackers ( $answer );
6838
6839 $c = count ( $answer );
6840 $ri = 0;
6841 $response = array ();
6842
6843 for($i = 0; $i < $c; $i ++) {
6844 $busy = $this->getScheduleForTracker ( $answer [$i] ['trackerid'], $sdate, $stime, $edate, $etime );
6845 $groups = $this->getTrackerGroups($answer [$i] ['trackerid']);
6846 if ($groups != false)
6847 $answer [$i] ['groups'] = $groups;
6848 if ($busy != true)
6849 array_push ( $response, $answer [$i] );
6850 }
6851
6852 return $response;
6853 }
6854 private function getScheduleForDriver($tagid, $sdate, $stime, $edate, $etime) {
6855 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6856 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
6857
6858 $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}\"))";
6859 $this->dbclass->execute_query ( $QUERY );
6860 $answer = $this->dbclass->get_result_complete ();
6861
6862 if ($answer == false)
6863 return false;
6864
6865 $c = count ( $answer );
6866
6867 $fdate->setUTCDate ( $sdate, $stime );
6868 $des_start = $fdate->dateTime->getTimestamp ();
6869
6870 $fdate->setUTCDate ( $edate, $etime );
6871 $des_end = $fdate->dateTime->getTimestamp ();
6872
6873 $busy = false;
6874
6875 for($i = 0; $i < $c; $i ++) {
6876 $fdate->setUTCDate ( $answer [$i] ['sdate'], $answer [$i] ['stime'] );
6877 $sch_start = $fdate->dateTime->getTimestamp ();
6878 $fdate->setUTCDate ( $answer [$i] ['edate'], $answer [$i] ['etime'] );
6879 $sch_end = $fdate->dateTime->getTimestamp ();
6880 if ($des_start >= $sch_start && $des_start <= $sch_end)
6881 $busy = true;
6882 else if ($des_end >= $sch_start && $des_end <= $sch_end)
6883 $busy = true;
6884 }
6885
6886 return $busy;
6887 }
6888 public function SCH_GetDrivers($sdate, $stime, $edate, $etime) {
6889 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6890 $QUERY = "SELECT name,tagID FROM drivers WHERE username=\"$username\"";
6891 $this->dbclass->execute_query ( $QUERY );
6892 $answer = $this->dbclass->get_result_complete ();
6893
6894 $c = count ( $answer );
6895 $ri = 0;
6896 $response = array ();
6897
6898 for($i = 0; $i < $c; $i ++) {
6899 $busy = $this->getScheduleForDriver ( $answer [$i] ['tagID'], $sdate, $stime, $edate, $etime );
6900 if ($busy != true)
6901 array_push ( $response, $answer [$i] );
6902 }
6903
6904 return $response;
6905 }
6906 public function SCH_RemoveSchedule($id) {
6907 $query = "DELETE FROM schedules WHERE id=\"$id\"";
6908 $result = $this->dbclass->execute_query ( $query );
6909
6910 if ($result != true) {
6911 return ERROR;
6912 }
6913
6914 return SUCCESS;
6915 }
6916 public function SCH_SaveSchedule() {
6917 $_POST ['username'] = $_SESSION ['username'];
6918 $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
6919
6920 $stime = $_POST ['shr'] * 3600 + $_POST ['smin'] * 60;
6921 $fdate->setDate ( $_POST ['sdate'], $stime );
6922 $_POST ['sdate'] = $fdate->UTCDateString;
6923 $_POST ['stime'] = $fdate->UTCTime;
6924 $stime_str = $fdate->getFormattedString ();
6925
6926 $etime = $_POST ['ehr'] * 3600 + $_POST ['emin'] * 60;
6927 $fdate->setDate ( $_POST ['edate'], $etime );
6928 $_POST ['edate'] = $fdate->UTCDateString;
6929 $_POST ['etime'] = $fdate->UTCTime;
6930 $etime_str = $fdate->getFormattedString ();
6931
6932 unset ( $_POST ['shr'] );
6933 unset ( $_POST ['smin'] );
6934 unset ( $_POST ['ehr'] );
6935 unset ( $_POST ['emin'] );
6936
6937 $query = "REPLACE INTO schedules SET ";
6938 $query .= basicTransactions::prepareMySQL_POSTRequest ();
6939 $result = $this->dbclass->execute_query ( $query );
6940
6941 if ($result != true) {
6942 $reply ['id'] = "-1";
6943 $reply ['ans'] = ERROR;
6944 return $reply;
6945 }
6946 if ($_POST ['id'] == 0 || $_POST ['id'] == NULL)
6947 $_POST ['id'] = $this->dbclass->dblink->insert_id;
6948 $reply ['id'] = $_POST ['id'];
6949 $reply ['stime'] = $stime_str;
6950 $reply ['etime'] = $etime_str;
6951 $reply ['ans'] = SUCCESS;
6952
6953 return $reply;
6954 }
6955
6956 public function saveAdminSettings () {
6957 $username = $_SESSION['username'];
6958
6959 $QUERY = "SELECT * FROM adminPreferences WHERE username = \"{$username}\"";
6960 $this->dbclass->execute_query ( $QUERY );
6961 $answer = $this->dbclass->get_result_complete ();
6962
6963 if ($answer == false) {
6964 $_POST['username'] = $_SESSION['username'];
6965 $query = "REPLACE INTO adminPreferences SET ";
6966 $query .= basicTransactions::prepareMySQL_POSTRequest ();
6967 $result = $this->dbclass->execute_query ( $query );
6968 } else {
6969 $query = "UPDATE adminPreferences SET ";
6970 $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE username = \"{$username}\"";
6971 $result = $this->dbclass->execute_query ( $query );
6972 }
6973
6974 if ($result != true) {
6975 return ERROR;
6976 }
6977 return SUCCESS;
6978 }
6979
6980 public function saveUserSettings() {
6981 if ($_SESSION['accounttype'] == USERTYPE_FLEET)
6982 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
6983 elseif ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
6984 $username = $this->dbclass->get_escape_string ( $_POST ['username'] );
6985
6986 $QUERY = "SELECT * FROM userPreferences WHERE username = \"{$username}\"";
6987 $this->dbclass->execute_query ( $QUERY );
6988 $answer = $this->dbclass->get_result_complete ();
6989
6990 if ($answer == false) {
6991 //$_POST ['username'] = $_SESSION ['username'];
6992 $_POST ['username'] = $username;
6993 $query = "REPLACE INTO userPreferences SET ";
6994 $query .= basicTransactions::prepareMySQL_POSTRequest ();
6995 $result = $this->dbclass->execute_query ( $query );
6996 } else {
6997 $query = "UPDATE userPreferences SET ";
6998 $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE username = \"{$username}\"";
6999 $result = $this->dbclass->execute_query ( $query );
7000 }
7001
7002 if ($result != true) {
7003 return ERROR;
7004 }
7005 return SUCCESS;
7006 }
7007
7008 public function saveAccountPassword($opass, $npass) {
7009 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
7010 $QUERY = "SELECT * FROM Users WHERE username = \"{$username}\"";
7011 $this->dbclass->execute_query ( $QUERY );
7012 $answer = $this->dbclass->get_result_complete ();
7013
7014 if ($answer == false) {
7015 return ERROR;
7016 }
7017
7018 if ($answer [0] ['password'] == $opass) {
7019 $password = $this->dbclass->get_escape_string ( $npass );
7020 $QUERY = "UPDATE Users SET password = \"{$password}\" where username = \"{$username}\"";
7021 $this->dbclass->execute_query ( $QUERY );
7022 return SUCCESS;
7023 } else {
7024 return ERROR;
7025 }
7026 }
7027 public function resetMessageLimits($type, $tid) {
7028 if ($type == 'sms') {
7029 $QUERY = "UPDATE msgLimits SET cSMSValue = NULL where trackerid = \"{$tid}\"";
7030 $this->dbclass->execute_query ( $QUERY );
7031 } else if ($type == 'email') {
7032 $QUERY = "UPDATE msgLimits SET cEmailValue = NULL where trackerid = \"{$tid}\"";
7033 $this->dbclass->execute_query ( $QUERY );
7034 }
7035 }
7036 private function filterExpiredTrackers($list) {
7037 $gmmtime = time ();
7038 $nlist = array ();
7039 if ($list == false)
7040 return $nlist;
7041 foreach ( $list as $k => $v ) {
7042 if (isset ( $v ['trackerExpiry'] ) && $v ['trackerExpiry'] != NULL) {
7043 if (($gmmtime - $v ['trackerExpiry']) <= 0) {
7044 array_push ( $nlist, $v );
7045 }
7046 } else {
7047 array_push ( $nlist, $v );
7048 }
7049 }
7050 return $nlist;
7051 }
7052 public function getTrackersCredit() {
7053 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
7054 $QUERY = "select * from trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join msgLimits using(trackerid) where username = \"{$username}\"";
7055 $this->dbclass->execute_query ( $QUERY );
7056 $answer = $this->dbclass->get_result_complete ();
7057 if ($answer == false)
7058 return false;
7059
7060 $answer = $this->filterExpiredTrackers ( $answer );
7061 if (count ( $answer ) == 0)
7062 return false;
7063
7064 $ups = $this->getUserPreferences ( $_SESSION ['username'] );
7065 $sps = $this->getSystemPreferences ();
7066 $tz = $sps [0] ['defaultTimezone'];
7067
7068 if ($ups != false && isset ( $ups [0] ['settings'] )) {
7069 $settings = json_decode ( $ups [0] ['settings'], true );
7070 if (isset ( $settings ['timezone'] ) && $settings ['timezone'] != null)
7071 $tz = $settings ['timezone'];
7072 }
7073
7074 $fdate = new FNSDateTime ( $tz );
7075 $myear = $fdate->dateTime->format ( "m-Y" ); // $dt->month . "-" . $dt->year;
7076
7077 foreach ( $answer as $k => $v ) {
7078 if ($v ['cDate'] != NULL && $v ['cDate'] != $fdate->DateString) {
7079 $answer [$k] ['consumedEmail'] = 0;
7080 $answer [$k] ['cEmailValue'] = $answer [$k] ['emailLimitValue'];
7081 } else {
7082 if ($answer [$k] ['sEmailValue'] === NULL)
7083 $answer [$k] ['sEmailValue'] = $answer [$k] ['emailLimitValue'];
7084 if ($answer [$k] ['cEmailValue'] === NULL)
7085 $answer [$k] ['cEmailValue'] = $answer [$k] ['sEmailValue'];
7086
7087 $answer [$k] ['consumedEmail'] = $answer [$k] ['sEmailValue'] - $answer [$k] ['cEmailValue'];
7088
7089 if ($answer [$k] ['sEmailValue'] != $answer [$k] ['emailLimitValue']) {
7090 $answer [$k] ['cEmailValue'] = $answer [$k] ['emailLimitValue'] - $answer [$k] ['consumedEmail'];
7091 }
7092 }
7093
7094 if ($v ['cMonthYear'] != NULL && $v ['cMonthYear'] != $myear) {
7095 $answer [$k] ['consumedSMS'] = 0;
7096 $answer [$k] ['cSMSValue'] = $answer [$k] ['smsLimitValue'];
7097 } else {
7098
7099 if ($answer [$k] ['sSMSValue'] === NULL)
7100 $answer [$k] ['sSMSValue'] = $answer [$k] ['smsLimitValue'];
7101 if ($answer [$k] ['cSMSValue'] === NULL)
7102 $answer [$k] ['cSMSValue'] = $answer [$k] ['sSMSValue'];
7103
7104 $answer [$k] ['consumedSMS'] = $answer [$k] ['sSMSValue'] - $answer [$k] ['cSMSValue'];
7105
7106 if ($answer [$k] ['sSMSValue'] != $answer [$k] ['smsLimitValue']) {
7107 $answer [$k] ['cSMSValue'] = $answer [$k] ['smsLimitValue'] - $answer [$k] ['consumedSMS'];
7108 }
7109 }
7110 }
7111
7112 return $answer;
7113 }
7114 public function ccare_printAccountsList() {
7115 $QUERY = "select username,company,mobile,email,website from Users where accounttype = \"" . USERTYPE_FLEET . "\"";
7116 $this->dbclass->execute_query ( $QUERY );
7117 $answer = $this->dbclass->get_result_complete ();
7118 return $answer;
7119 }
7120 public function report_removeSchedule($id) {
7121 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
7122 $QUERY = "DELETE FROM reportSchedules WHERE id = \"$id\" and username='{$username}'";
7123 $this->dbclass->execute_query ( $QUERY );
7124 //if (mysql_errno ( $this->dbclass->dblink ) == 0)
7125 if ( $this->dbclass->dblink->errno == 0)
7126 return SUCCESS;
7127 return ERROR;
7128 }
7129 public function report_removeUserTrackerSchedule($uname, $tid) {
7130 $uname = $this->dbclass->get_escape_string ( $uname );
7131 $QUERY = "SELECT id,getParams FROM reportSchedules WHERE username = \"$uname\"";
7132 $this->dbclass->execute_query ( $QUERY );
7133 $ans = $this->dbclass->get_result_complete ();
7134 if ($ans == false)
7135 return;
7136
7137 foreach ( $ans as $v ) {
7138 $data = json_decode ( $v ['getParams'], true );
7139 $trackers = explode ( ",", $data ['trackers'] );
7140 $newlist = array ();
7141 $updated = false;
7142
7143 foreach ( $trackers as $t ) {
7144 if ($t != $tid)
7145 array_push ( $newlist, $t );
7146 else
7147 $updated = true;
7148 }
7149 if ($updated) {
7150 if (count ( $newlist ) > 0) {
7151 $data ['trackers'] = implode ( ",", $newlist );
7152 $json = $this->dbclass->get_escape_string ( json_encode ( $data ) );
7153
7154 $QUERY = "UPDATE reportSchedules SET getParams='$json' WHERE id=" . $v ['id'];
7155 $this->dbclass->execute_query ( $QUERY );
7156 } else {
7157 $QUERY = "DELETE FROM reportSchedules WHERE id=" . $v ['id'];
7158 $this->dbclass->execute_query ( $QUERY );
7159 }
7160 }
7161 }
7162
7163 //if (mysql_errno ( $this->dbclass->dblink ) == 0)
7164 if ( $this->dbclass->dblink->errno == 0)
7165 return SUCCESS;
7166 return ERROR;
7167 }
7168 public function report_getSchedulesList() {
7169 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
7170 $QUERY = "select * from reportSchedules where username=\"{$username}\" order by id ";
7171 $this->dbclass->execute_query ( $QUERY );
7172 $answer = $this->dbclass->get_result_complete ();
7173
7174 if ($answer == false)
7175 return false;
7176 $newanswer = array ();
7177
7178 foreach ( $answer as $k => $a ) {
7179 $getParams = json_decode ( $a ['getParams'], true );
7180 $trackers = explode ( ",", $getParams ['trackers'] );
7181 $newlist = array ();
7182
7183 foreach ( $trackers as $t ) {
7184 $tinfo = $this->getTrackerInformation ( $t );
7185 if (isset ( $tinfo [0] ['trackerExpiry'] ) && $tinfo [0] ['trackerExpiry'] != 0 && (time () - $tinfo [0] ['trackerExpiry']) > 0)
7186 continue;
7187 array_push ( $newlist, $t );
7188 }
7189 if (count ( $newlist ) == 0)
7190 continue;
7191 $getParams ['trackers'] = implode ( ",", $newlist );
7192 $answer [$k] ['getParams'] = json_encode ( $getParams );
7193 array_push ( $newanswer, $answer [$k] );
7194 }
7195
7196 return $newanswer;
7197 }
7198 public function report_updateScheduleDate($id, $date, $time) {
7199 $QUERY = "UPDATE reportSchedules SET date=\"$date\", time=\"$time\" WHERE id=\"$id\"";
7200 $this->dbclass->execute_query ( $QUERY );
7201 }
7202 public function report_saveSchedule($sess, $get, $post, $sch) {
7203 $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
7204 $sess = $this->dbclass->get_escape_string ( $sess );
7205 $get = $this->dbclass->get_escape_string ( $get );
7206 $post = $this->dbclass->get_escape_string ( $post );
7207 $sch = $this->dbclass->get_escape_string ( $sch );
7208
7209 $QUERY = "INSERT INTO reportSchedules SET id = 0, username=\"{$username}\", sessParams=\"$sess\", getParams = \"$get\", postParams=\"$post\", schParams=\"$sch\"";
7210 $this->dbclass->execute_query ( $QUERY );
7211
7212 //return mysql_insert_id ( $this->dblink );
7213 return $this->dbclass->dblink->insert_id;
7214 }
7215 public function rp_getTrackersDetails($tid) {
7216 $QUERY = "SELECT * FROM trackers LEFT JOIN trackersDetails USING(trackerid) WHERE trackerid=\"$tid\"";
7217 $this->dbclass->execute_query ( $QUERY );
7218 return $this->dbclass->get_result_complete ();
7219 }
7220 public function rp_getTrackerFeatures($tid) {
7221 $QUERY = "SELECT * FROM trackersFeatures WHERE trackerid=\"$tid\"";
7222 $this->dbclass->execute_query ( $QUERY );
7223 return $this->dbclass->get_result_complete ();
7224 }
7225
7226 public function getEJMSTripRecord($username, $id) {
7227 $username = $this->dbclass->get_escape_string ( $username );
7228 $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'";
7229 $this->dbclass->execute_query ( $QUERY );
7230 return $this->dbclass->get_result_complete ();
7231 }
7232
7233 public function getEJMSList($username) {
7234 $result = array();
7235
7236 $username = $this->dbclass->get_escape_string ( $username );
7237
7238 $user = $this->getUserRecord($_SESSION['username']);
7239 $features = json_decode($user[0]['features'],true);
7240
7241 if (isset($features['driversMgmt']) == false || $features['driversMgmt'] == 0 ){
7242 $QUERY = "SELECT * FROM ejms WHERE username=\"$username\" and driver='". $_SESSION['driverdata']['tagID']."'";
7243 }else {
7244 $QUERY = "SELECT * FROM ejms WHERE username=\"$username\"";
7245 }
7246
7247 $this->dbclass->execute_query ( $QUERY );
7248 $result['ejms'] = $this->dbclass->get_result_complete ();
7249
7250 $QUERY = "SELECT name, tagID FROM drivers WHERE username=\"$username\"";
7251 $this->dbclass->execute_query ( $QUERY );
7252 $result['drivers'] = $this->dbclass->get_result_complete ();
7253
7254 $QUERY = "SELECT * FROM trackersMap INNER JOIN trackersDetails USING(trackerID) WHERE username=\"$username\"";
7255 $this->dbclass->execute_query ( $QUERY );
7256 $result['trackers'] = $this->dbclass->get_result_complete ();
7257
7258 $QUERY = "SELECT * FROM trackersMap INNER JOIN trackersDetails USING(trackerID) WHERE username=\"$username\"";
7259 $this->dbclass->execute_query ( $QUERY );
7260 $result['trackers'] = $this->dbclass->get_result_complete ();
7261
7262 $QUERY = "SELECT * FROM ejms_levelx_people WHERE username=\"$username\"";
7263 $this->dbclass->execute_query ( $QUERY );
7264 $result['levels'] = $this->dbclass->get_result_complete ();
7265
7266 return $result;
7267 }
7268 public function getEJMSRecord($username, $id) {
7269 $username = $this->dbclass->get_escape_string ( $username );
7270 $QUERY = "SELECT * FROM ejms WHERE username=\"$username\" and id='$id'";
7271 $this->dbclass->execute_query ( $QUERY );
7272 $result['ejms'] = $this->dbclass->get_result_complete ();
7273
7274 $QUERY = "SELECT * FROM ejms_levelx_people WHERE username=\"$username\"";
7275 $this->dbclass->execute_query ( $QUERY );
7276 $result['levels'] = $this->dbclass->get_result_complete ();
7277 return $result;
7278 }
7279
7280 public function getEJMSData($id){
7281 $id = $this->dbclass->get_escape_string ( $id );
7282 $QUERY = "SELECT * FROM ejms INNER JOIN trackers ON (vehicleno = trackerid) WHERE id='$id'";
7283 $this->dbclass->execute_query ( $QUERY );
7284 return $this->dbclass->get_result_complete ();
7285 }
7286
7287
7288 public function approveEJMS($level, $id, $key, $email) {
7289 $key = $this->dbclass->get_escape_string($key);
7290 $id = $this->dbclass->get_escape_string($id);
7291 $level = $this->dbclass->get_escape_string($level);
7292 $email = $this->dbclass->get_escape_string($email);
7293
7294 $levelkey = 'level'.$level.'_approved';
7295 $keyfield = 'level'.$level.'_approve_key';
7296 $emailfield = 'level'.$level.'_approver';
7297
7298 $QUERY = "UPDATE ejms SET $levelkey = 1, $emailfield='$email' WHERE id='$id' and $keyfield = '$key'";
7299 $this->dbclass->execute_query ( $QUERY );
7300 }
7301
7302 public function markEJMSTrip_approve_sent($username, $id) {
7303 $username = $this->dbclass->get_escape_string ( $username );
7304 $QUERY = "UPDATE ejms SET approval_sent = 1 WHERE username=\"$username\" and id='$id'";
7305 $this->dbclass->execute_query ( $QUERY );
7306 }
7307
7308
7309 public function saveEJMSTrip($username) {
7310 $username = $_POST['username'] = $this->dbclass->get_escape_string ( $username );
7311
7312 if ($_POST['id'] != 0) {
7313 $id = $this->dbclass->get_escape_string ( $_POST['id'] );
7314 $query = "UPDATE ejms SET ";
7315 $query .= basicTransactions::prepareMySQL_POSTRequest ()." WHERE username='$username' and id = '$id'";
7316 $result = $this->dbclass->execute_query ( $query );
7317 } else {
7318 $query = "INSERT INTO ejms SET ";
7319 $query .= basicTransactions::prepareMySQL_POSTRequest ();
7320 $result = $this->dbclass->execute_query ( $query );
7321 }
7322
7323 $code = array();
7324
7325 if ($result == false) {
7326 $code['code'] = ERROR;
7327 $code['id'] = 0;
7328 }else {
7329 $code['code'] = SUCCESS;
7330 //$code['id'] = mysql_insert_id($this->dblink);
7331 $code['id'] = $this->dbclass->dblink->insert_id;
7332 }
7333 return $code;
7334
7335 }
7336 public function removeEJMSTrip($username, $id) {
7337 $username = $this->dbclass->get_escape_string ( $username );
7338 $id = $this->dbclass->get_escape_string ( $id);
7339
7340 $query = "SELECT preins_id FROM ejms WHERE username='$username' and id='$id' ";
7341 $result = $this->dbclass->execute_query ( $query );
7342 $result = $this->dbclass->get_result_complete();
7343
7344 $preid = $result[0]['preins_id'];
7345 $query = "DELETE FROM ejmspreins WHERE username='$username' and id='$preid' ";
7346 $result = $this->dbclass->execute_query ( $query );
7347
7348 $query = "DELETE FROM ejms WHERE username='$username' and id='$id' ";
7349 $result = $this->dbclass->execute_query ( $query );
7350
7351
7352 }
7353
7354 public function EJMSLevelSave($username) {
7355 $username = $this->dbclass->get_escape_string ( $username );
7356 $level = $this->dbclass->get_escape_string ( $_POST ['level'] );
7357 $query = "SELECT COUNT(*) FROM ejms_levelx_people WHERE username='$username' and level = '$level'";
7358 $result = $this->dbclass->execute_query ( $query );
7359 $result = $this->dbclass->get_result_complete();
7360
7361 if ($result[0]['COUNT(*)'] > 0) {
7362 $query = "UPDATE ejms_levelx_people SET ";
7363 $query .= basicTransactions::prepareMySQL_POSTRequest ();
7364 $query .= " WHERE username = '$username' and level = '$level'";
7365 $result = $this->dbclass->execute_query ( $query );
7366 }else {
7367 $_POST['username'] = $_SESSION['username'];
7368 $query = "INSERT INTO ejms_levelx_people SET ";
7369 $query .= basicTransactions::prepareMySQL_POSTRequest ();
7370 $result = $this->dbclass->execute_query ( $query );
7371 }
7372 }
7373
7374
7375 /*******************************************************************/
7376 /*******************NEW ADMIN DATABASE QUERIES*********************/
7377 /*******************************************************************/
7378
7379
7380 public function get_admin_users($ccare = false) {
7381
7382 $adminUserName = $_SESSION['username'];
7383
7384 $usersList = array();
7385
7386 $query = "SELECT Users.* FROM logicalGroups_V5 AS lg INNER JOIN Users ON lg.adminUserName = \"$adminUserName\" and lg.username = Users.username order by Users.username";
7387 $result = $this->dbclass->execute_query ( $query );
7388 $usersList = $this->dbclass->get_result_complete ();
7389
7390 if ($usersList == "") {
7391 return false;
7392 }
7393
7394 return $usersList;
7395 }
7396
7397 /*
7398 public function get_fleetcare_users($ccare = false) {
7399
7400 $adminUserName = $_SESSION['username'];
7401
7402 $query = "SELECT Users.* FROM logicalGroups_V5 AS lg INNER JOIN Users ON lg.adminUserName = \"$adminUserName\" and lg.username = Users.username order by Users.username";
7403 $result = $this->dbclass->execute_query ( $query );
7404 $usersList = $this->dbclass->get_result_complete ();
7405
7406 if ($usersList == "") {
7407 return false;
7408 }
7409
7410 return $usersList;
7411 }*/
7412
7413 public function getTrackerIDInAdmin ($username = false) {
7414 if(!$username)
7415 $username = $_SESSION['username'];
7416
7417 $query = "SELECT trackerid FROM adminTrackersMap WHERE username = \"" . $username . "\"";
7418 $this->dbclass->execute_query ( $query );
7419 $answer = $this->dbclass->get_result_complete ();
7420 return $answer;
7421 }
7422
7423 public function getAllAdminTrackersList($username = false) {
7424 global $GMONGO;
7425
7426 //if ($username != false && $username != null)
7427 //$result = $this->getTrackerIDInAdmin($username);
7428 /*else
7429 $result = $this->getTrackerIDInAdmin();*/
7430
7431 if (!$username)
7432 $username = $_SESSION['username'];
7433
7434 $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\"";
7435 $this->dbclass->execute_query ( $query );
7436 $answer = $this->dbclass->get_result_complete ();
7437
7438 /*$trackersList = array();
7439
7440 if ($result != false) {
7441 foreach ($result as $v){
7442
7443 $query = "SELECT trackerid,name,imei,simno,searchKeywords,trackerExpiry,type FROM trackers inner join trackersExInfo using (trackerid) WHERE trackerid = ".$v['trackerid'];
7444 $this->dbclass->execute_query ( $query );
7445 $answer = $this->dbclass->get_result_complete ();
7446 if ($answer[0] !== NULL)
7447 array_push($trackersList, $answer[0]);
7448 }
7449 }
7450
7451 $answer = $trackersList;*/
7452
7453 if ($answer != false) {
7454
7455 foreach ( $answer as $k => $v ) {
7456 $answer [$k] ['trackerExpiry'] = TrackerExpiry::checkExpiry ( $v ['trackerExpiry'] );
7457 $addKeywords = null;
7458
7459 $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$v['trackerid']}\"";
7460 $this->dbclass->execute_query ( $query );
7461 $users = $this->dbclass->get_result_complete();
7462
7463 if ($users != false) {
7464 $arr = array_map(function($a){ return $a['username']; }, $users);
7465 $answer [$k] ['users'] = implode(",", $arr);
7466 }
7467
7468 //$lastRecord = $GMONGO->getLastAMRecord($v['trackerid']);
7469 //$fdate->setTimestamp($lastRecord[0]['timestamp']);
7470 //$answer [$k] ['datetime'] = $fdate->getFormattedString();
7471 }
7472 }
7473
7474 return $answer;
7475 }
7476
7477 public function countAdminTrackers () {
7478 $query = "SELECT COUNT(*) FROM adminTrackersMap WHERE username = \"" . $_SESSION['username'] . "\"";
7479 $this->dbclass->execute_query ($query);
7480 $answer = $this->dbclass->get_result_complete($query);
7481 return $answer [0] ['COUNT(*)'];
7482 }
7483
7484 public function countUserTrackers ($username = false) {
7485 if ($username == false)
7486 $username = $_SESSION['username'];
7487 $query = "SELECT COUNT(*) FROM trackersMap WHERE username = \"" . $username . "\"";
7488 $this->dbclass->execute_query ($query);
7489 $answer = $this->dbclass->get_result_complete($query);
7490 return $answer [0] ['COUNT(*)'];
7491 }
7492
7493 //RETURNS LICENSES ALLOTED TO ADMIN BY SUPER USER
7494 public function getAdminLicenses ($username = false) {
7495
7496 if (!$username)
7497 $username = $_SESSION['username'];
7498
7499 $query = "SELECT licenses FROM licenses WHERE username = \"" . $username . "\"";
7500 $this->dbclass->execute_query ($query);
7501 $answer = $this->dbclass->get_result_complete ($query);
7502 return $answer;
7503 }
7504
7505
7506 public function get_users_list_POI() {
7507 $uname = $_SESSION['username'];
7508 $fields = "Users.username, Users.name, Users.company";
7509 $wClause = "Users.accounttype = " . USERTYPE_FLEET;
7510 //$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";
7511 $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";
7512 $result = $this->dbclass->execute_query ( $query );
7513 $answer = $this->dbclass->get_result_complete ();
7514
7515 return $answer;
7516 }
7517
7518 /*******************************************************************/
7519 /*******************************************************************/
7520
7521 /*******************************************************************/
7522 /*******************SUPER USER DATABASE QUERIES*********************/
7523 /*******************************************************************/
7524
7525 public function getLicsAlloted ( $username = false ) { //this function logically incorrect have to correct it
7526 if (!$username) {
7527 $query = "SELECT COUNT(trackerid) FROM trackers";
7528 $this->dbclass->execute_query ( $query );
7529 return $this->dbclass->get_result_complete();
7530 }
7531 }
7532
7533 public function getMongoDatabaseStats() {
7534 global $GMONGO;
7535 $query = "SELECT * FROM trackers";
7536 $this->dbclass->execute_query ( $query );
7537 $answer = $this->dbclass->get_result_complete ();
7538
7539 $returnAnswer = new databaseCounting ();
7540
7541 if ($answer == false) {
7542 $returnAnswer->eventRecords = 0;
7543 $returnAnswer->locationRecords = 0;
7544 return $returnAnswer;
7545 }
7546
7547 $tracker_count = count ( $answer );
7548
7549 for($i = 0; $i < $tracker_count; $i ++) {
7550 $cans = $GMONGO->countDocumentsInA($answer[$i]['trackerid']);
7551 if ($cans != false) {
7552 $returnAnswer->locationRecords += $cans;
7553 }
7554 $cans = $GMONGO->countDocumentsInE($answer[$i]['trackerid']);
7555 if ($cans != false) {
7556 $returnAnswer->eventRecords += $cans;
7557 }
7558 $cans = $GMONGO->countDocumentsInM($answer[$i]['trackerid']);
7559 if ($cans != false) {
7560 $returnAnswer->miscellaneousRecords += $cans;
7561 }
7562 }
7563 return $returnAnswer;
7564 } // function
7565
7566 public function get_admin_users_list($ccare = false) {
7567 $fields = "*";
7568 $wClause = "accounttype = " . USERTYPE_ADMINISTRATOR . " OR accounttype = " . USERTYPE_CUSTOMERCARE;
7569
7570 $query = "SELECT $fields FROM Users LEFT JOIN licenses USING(username) WHERE " . $wClause . " ORDER BY username";
7571 $result = $this->dbclass->execute_query ( $query );
7572 $answer = $this->dbclass->get_result_complete ();
7573 return $answer;
7574 }
7575
7576 public function getLicenseInformation($username, $year) {
7577 $username = $this->dbclass->get_escape_string($username);
7578 $year = $this->dbclass->get_escape_string($year);
7579
7580 /*if (isset($year) == false || $year == null) {
7581 //$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
7582 $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
7583 }else {
7584 $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)";
7585 }*/
7586
7587 $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";
7588
7589 $this->dbclass->execute_query($query);
7590 $result = $this->dbclass->get_result_complete();
7591 return $result;
7592 }
7593
7594 public function getIssuedLicenses () {
7595 $query = "SELECT SUM(licenses) FROM licenses";
7596 $this->dbclass->execute_query($query);
7597 $result = $this->dbclass->get_result_complete();
7598 return $result;
7599 }
7600
7601 public function escapePostData () {
7602 foreach ($_POST as $x => $y) {
7603 $_POST [$x] = $this->dbclass->get_escape_string($y);
7604 }
7605 }
7606
7607 public function getLicenses ($licenseID) {
7608 $query = "SELECT licenses FROM licenseInfo WHERE licenseID = $licenseID";
7609 $this->dbclass->execute_query($query);
7610 $result = $this->dbclass->get_result_complete();
7611 return $result [0] ['licenses'];
7612 }
7613
7614 public function addLicenses () {
7615 $_POST['typeId'] = 1;
7616
7617 $data = $this->insertPaymentRecord(true);
7618
7619 $query = "INSERT INTO licenseInfo SET username = '".$data['username']."', licenseID = ".$data['recordID'].", licenses = ".$data['tCount'];
7620 $this->dbclass->execute_query($query);
7621
7622 $query = "INSERT INTO licenses SET username = '".$data['username']."', licenses = '".$data['tCount']."' ON DUPLICATE KEY UPDATE licenses = licenses + ".$data['tCount'];
7623 $this->dbclass->execute_query($query);
7624
7625 $result ['licenseID'] = $data ['recordID'];
7626 $result ['creationDate'] = $data ['creationDate'];
7627 return $result;
7628 }
7629
7630 //public function modifyLicenses ($iDate) {
7631 public function modifyLicenses () {
7632
7633 $_POST['typeId'] = 1;
7634 $_POST['recordID'] = $_POST ['licenseID'];
7635 unset($_POST ['licenseID']);
7636
7637 $amount = $this->updatePaymentRecord(true);
7638
7639 $username = $_POST['username'];
7640 //$licenseID = $_POST['licenseID'];
7641 $licenseID = $_POST['recordID'];
7642 $licenses = $_POST['tCount'];
7643 $issueDate = $_POST['issueDate'];
7644 $rate = $_POST['rate'];
7645 $comments = $_POST['comments'];
7646 $periodicity = $_POST['periodicity'];
7647
7648
7649 $cul = $this->getLicenses ($licenseID);
7650
7651 $query = "UPDATE licenseInfo SET licenses = $licenses WHERE username = '$username' AND licenseID = $licenseID";
7652 $this->dbclass->execute_query($query);
7653
7654 if ($_POST['periodicity'] == 0) {
7655 $query = "DELETE FROM paymentHistory WHERE typeId = 1 AND recordID = $licenseID AND isPaid = 0";
7656 $this->dbclass->execute_query($query);
7657 } else {
7658 $query = "SELECT * FROM paymentHistory WHERE typeId = 1 AND recordID = $licenseID AND isPaid = 0";
7659 $this->dbclass->execute_query($query);
7660 $result = $this->dbclass->get_result_complete();
7661 if (!$result) {
7662 $query = "INSERT INTO paymentHistory SET typeId = 1, recordID = $licenseID, date = '$issueDate', amount = $amount, isPaid = 0";
7663 $this->dbclass->execute_query($query);
7664 }
7665 }
7666
7667 $licenses -= $cul;
7668 $query = "UPDATE licenses SET licenses = licenses + $licenses WHERE username = '$username'";
7669 $this->dbclass->execute_query($query);
7670 //echo "\r\n".$query;
7671
7672 //$query = "SELECT licenseID, creationDate FROM licenseInfo WHERE licenseID = ".$licenseID;
7673 $query = "SELECT recordID as licenseID, creationDate FROM paymentRecords WHERE recordID = $licenseID AND typeId = 1";
7674 $this->dbclass->execute_query($query);
7675 $result = $this->dbclass->get_result_complete();
7676
7677 return $result[0];
7678 }
7679
7680 public function removeLicenses ($username, $licenseID) {
7681 $username = $this->dbclass->get_escape_string($username);
7682
7683 $licenses = $this->getLicenses($licenseID);
7684
7685 $query = "DELETE FROM licenseInfo WHERE username = '$username' AND licenseID = $licenseID";
7686 $this->dbclass->execute_query($query);
7687
7688 $query = "DELETE FROM paymentRecords WHERE username = '$username' AND recordID = $licenseID AND typeId = 1";
7689 $this->dbclass->execute_query($query);
7690
7691 $query = "UPDATE licenses SET licenses = licenses - $licenses WHERE username = '$username'";
7692 $this->dbclass->execute_query($query);
7693
7694 $query = "DELETE FROM paymentHistory WHERE recordID = $licenseID, typeId = 1";
7695 $this->dbclass->execute_query($query);
7696
7697 return;
7698 }
7699
7700 public function getUserLicenses ($username) {
7701 $username = $this->dbclass->get_escape_string($username);
7702 $query = "SELECT licenses FROM licenses WHERE username = '$username'";
7703 $this->dbclass->execute_query($query);
7704 $result = $this->dbclass->get_result_complete();
7705
7706 return $result [0] ['licenses'];
7707 }
7708
7709 //RETURNS LIST OF USER TYPE ADMINISTRATOR
7710 public function getAdminUserName () {
7711 $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_ADMINISTRATOR;
7712 $this->dbclass->execute_query($query);
7713 $ans = $this->dbclass->get_result_complete();
7714 return $ans;
7715 }
7716
7717 public function getAdminOfUSer ($user = false) {
7718 if ($user)
7719 $user = $this->dbclass->get_escape_string($user);
7720 else
7721 $user = $this->dbclass->get_escape_string($_SESSION['username']);
7722 $query = "SELECT adminUserName FROM logicalGroups_V5 WHERE username = '{$user}'";
7723 $result = $this->dbclass->execute_query($query);
7724 if ($result) {
7725 $ans = $this->dbclass->get_result_complete();
7726 return $ans[0]['adminUserName'];
7727 }
7728
7729 return false;
7730 }
7731
7732 //RETURNS LIST OF PAYMENT TYPE WITH THEIR typeId
7733
7734 public function getPaymentType () {
7735 if ($_SESSION['username'] == 'root')
7736 $query = "SELECT * FROM paymentType";
7737 else if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
7738 $query = "SELECT * FROM adminPaymentType WHERE adminUserName = '".$_SESSION['username']."'";
7739 $this->dbclass->execute_query ( $query );
7740 $ans = $this->dbclass->get_result_complete();
7741 return $ans;
7742 }
7743
7744 //ADD CUSTOM PAYMENT TYPE IN paymentType TABLE
7745 public function addPaymentType () {
7746 $pType = $this->dbclass->get_escape_string($_POST['pType']);
7747 if ($_SESSION['username'] == 'root')
7748 $query = "INSERT INTO paymentType set pType = '$pType'";
7749 else if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
7750 $query = "INSERT INTO adminPaymentType set pType = '$pType'";
7751 $this->dbclass->execute_query ( $query );
7752 }
7753
7754 //RETURNS LICENSE INFO OF A USER OF TYPE ADMIN
7755 public function getUserLicInfo ($username) { //NAME OF THE FUNCTIONS NEED TO BE CHANGED, IT IS NOT MATCHING ITS FUNCTIONALITY
7756 $username = $this->dbclass->get_escape_string($username);
7757 $typeId = $this->dbclass->get_escape_string($_POST['typeId']);
7758 $ans =array();
7759
7760 if ($typeId == 1){
7761 $query = "SELECT licenseInfo.username, licenses as tCount, DATE(date) as sdate, licenseInfo.rate, licenseID as recordID, comments FROM licenseInfo ";
7762 $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)";
7763 $this->dbclass->execute_query($query);
7764 $new = $this->dbclass->get_result_complete();
7765 $query = "SELECT * FROM paymentRecords WHERE typeId = 1 AND username = '$username' ORDER BY sdate";
7766 //$query = "SELECT paymentRecords.* FROM paymentRecords INNER JOIN licenseInfo ON paymentRecords.recordID = licenseInfo.licenseID AND paymentRecords.typeId = 1 AND paymentRecords.username = '$username' ORDER BY sdate";
7767 //$query = "SELECT licenses, DATE(date) as date, rate, licenseID as recordID, comments FROM licenseInfo WHERE username = '$username' ORDER BY DATE(date)";
7768 $this->dbclass->execute_query($query);
7769 $present = $this->dbclass->get_result_complete();
7770 $ans ['new'] = $new;
7771 $ans ['present'] = $present;
7772 return $ans;
7773 }
7774 //$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)";
7775 //$query = "SELECT paymentRecords.* FROM paymentRecords INNER JOIN licenseInfo ON paymentRecords.recordID = licenseInfo.licenseID AND paymentRecords.typeId = $typeId ORDER BY sdate";
7776 $query = "SELECT * FROM paymentRecords WHERE username = '$username' AND typeId = $typeId ORDER BY sdate";
7777 //$query = "SELECT licenses, DATE(date) as date, rate, licenseID as recordID, comments FROM licenseInfo WHERE username = '$username' ORDER BY DATE(date)";
7778 $this->dbclass->execute_query($query);
7779 $present = $this->dbclass->get_result_complete();
7780
7781 $ans ['new'] = false;
7782 $ans ['present'] = $present;
7783
7784 return $ans;
7785 }
7786
7787 //INSERT NEW PAYMENT RECORD IN TABLE paymentRecords
7788 public function insertPaymentRecord ($license = false) {
7789 $check = true;
7790 $query = "INSERT INTO paymentRecords SET ";
7791 $query .= basicTransactions::prepareMySQL_POSTRequest();
7792 $this->dbclass->execute_query($query);
7793
7794 $fields = "typeId, recordID, issueDate, periodicity, creationDate, updationDate";
7795 if ($license) {
7796 $fields .= ", username, tCount";
7797 $check = false;
7798 }
7799
7800 //$query = "SELECT typeId, recordID, issueDate, periodicity, creationDate, updationDate FROM paymentRecords WHERE ";
7801 $query = "SELECT $fields FROM paymentRecords WHERE ";
7802 $query .= basicTransactions::prepareMySQL_POSTRequest('AND');
7803 $this->dbclass->execute_query($query);
7804 $ans = $this->dbclass->get_result_complete();
7805 //echo $query;
7806
7807 if (($license && $_POST['periodicity'] > 0) || $check) {
7808 $amount = $_POST['tCount'] * $_POST['rate'];
7809 $t = json_decode($_POST['tax'], true);
7810 $tax = 0;
7811
7812 foreach ($t as $k => $v) {
7813 $tax += $v;
7814 }
7815 $amount = ($amount * ($tax + 100)) / 100;
7816
7817 $schrge = json_decode($_POST['surcharge'], true);
7818 foreach ($schrge as $k => $v) {
7819 $amount += $v;
7820 }
7821
7822 $query = "INSERT INTO paymentHistory SET recordID = " . $ans [0] ['recordID'] . ", date = '" . $ans [0] ['issueDate'] . "', typeId = " . $ans [0] ['typeId'] . ", amount = $amount";
7823 $this->dbclass->execute_query($query);
7824
7825 $data ['amount'] = $amount;
7826 $data ['recordID'] = $ans [0] ['recordID'];
7827 $data ['creationDate'] = $ans [0] ['creationDate'];
7828 $data ['updationDate'] = $ans [0] ['updationDate'];
7829 $data ['date'] = $ans [0] ['issueDate'];
7830 $newDate = new FNSDateTime($_SESSION ['timezone']);
7831 $newDate->setUTCDate($data ['issueDate'], 0);
7832 $newDate->addMonth($ans [0] ['periodicity']);
7833 $data ['edate'] = $newDate->dateTime->format('Y-m-d');
7834
7835 }
7836 if ($license)
7837 return $ans [0];
7838 return $data;
7839 }
7840
7841 public function updatePaymentRecord ($license = false) {
7842 //$this->escapePostData();
7843 $check = true;
7844 $query = "UPDATE paymentRecords SET ";
7845 $query .= basicTransactions::prepareMySQL_POSTRequest();
7846 $query .= " WHERE username = '".$_POST['username']."' AND typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID'];
7847 $this->dbclass->execute_query($query);
7848
7849 if ($license) {
7850 $check = false;
7851 }
7852
7853 if (($license && $_POST['periodicity'] > 0) || $check) {
7854 $amount = $_POST['tCount'] * $_POST['rate'];
7855 $t = json_decode($_POST['tax'], true);
7856 $tax = 0;
7857
7858 foreach ($t as $k => $v) {
7859 $tax += $v;
7860 }
7861 $amount = ($amount * ($tax + 100)) / 100;
7862
7863 $schrge = json_decode($_POST['surcharge'], true);
7864 foreach ($schrge as $k => $v) {
7865 $amount += $v;
7866 }
7867
7868 $query = "UPDATE paymentHistory set amount = $amount WHERE recordID = " . $_POST['recordID'] . " AND typeId = " . $_POST['typeId'] . " AND isPaid = 0";
7869 $this->dbclass->execute_query($query);
7870
7871 if (!$check && $license)
7872 return $amount;
7873 }
7874
7875 if ($license)
7876 return;
7877
7878 /*if ($_POST['typeId'] == 1) {
7879 $query = "UPDATE licenseInfo SET issueDate = '".$_POST['sdate']."', rate = ".$_POST['rate']." WHERE username = '".$_POST['username']."' AND licenseID = ".$_POST['recordID'];
7880 $this->dbclass->execute_query($query);
7881 }*/
7882 //$query = "SELECT sdate AS date, periodicity FROM paymentRecords WHERE username = '".$_POST['username']."' AND typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID'];
7883 $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";
7884 $this->dbclass->execute_query($query);
7885 $ans = $this->dbclass->get_result_complete();
7886
7887 $date = $ans [0] ['date'];
7888 $newDate = new FNSDateTime( $_SESSION ['timezone'] );
7889 $newDate->setUTCDate($date, 0);
7890 $newDate->addMonth($ans [0] ['periodicity']);
7891 $ans [0] ['edate'] = $newDate->dateTime->format('Y-m-d');
7892
7893 return $ans;
7894 }
7895
7896 public function removePaymentRecord () {
7897 $this->escapePostData();
7898 if ($_POST['typeID'] != 1){
7899 $query = "DELETE FROM paymentRecords WHERE username = '".$_POST['username']."' AND typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID'];
7900 $this->dbclass->execute_query($query);
7901 $query = "DELETE FROM paymentHistory WHERE typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID']." AND isPaid = 0";
7902 $this->dbclass->execute_query($query);
7903 return SUCCESS;
7904 }
7905 return ERROR;
7906 }
7907
7908 /*public function dateFormat ($date, $format) {
7909 $dt = new FNSDateTime( $_SESSION['timezone'] );
7910 $dt->setUTCDate($date, 0);
7911 return $dt->dateTime->format($format);
7912 }*/
7913
7914
7915 //RETURNS THE PAYMENT RECORDS PRESENT IN TABLE paymentRecords
7916 public function getPaymentRecords ($username, $fields = '*') {
7917 $username = $this->dbclass->get_escape_string($username);
7918 $ans = array();
7919 $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";
7920 $this->dbclass->execute_query($query);
7921 $ans['np'] = $this->dbclass->get_result_complete();
7922 foreach ($ans['np'] as $x => $v) {
7923 $newDate = new FNSDateTime( $_SESSION ['timezone'] );
7924 $newDate->setUTCDate($ans['np'][$x] ['date'], 0);
7925 $newDate->addMonth($ans['np'][$x] ['periodicity']);
7926 $ans['np'][$x] ['edate'] = $newDate->dateTime->format('Y-m-d');
7927 }
7928 $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";
7929 $this->dbclass->execute_query($query);
7930 $ans['paid'] = $this->dbclass->get_result_complete();
7931 foreach ($ans['paid'] as $x => $v) {
7932 $newDate = new FNSDateTime( $_SESSION ['timezone'] );
7933 $newDate->setUTCDate($ans['paid'][$x] ['date'], 0);
7934 $newDate->addMonth($ans['paid'][$x] ['periodicity']);
7935 $ans['paid'][$x] ['edate'] = $newDate->dateTime->format('d-m-Y');
7936 $ans['paid'][$x]['amtDue'] = $ans['paid'][$x]['amount'] - $ans['paid'][$x]['amtRecv'];
7937 }
7938 return $ans;
7939 }
7940
7941 public function getPaymentRecordID ($fields = '*') {
7942 $query = "SELECT recordID, sdate FROM paymentRecords WHERE ";
7943 $query .= basicTransactions::prepareMySQL_POSTRequest('AND');
7944
7945 echo $query;
7946
7947 $this->dbclass->execute_query($query);
7948 $ans = $this->dbclass->get_result_complete();
7949
7950 echo "<br>";
7951 print_r($ans);
7952
7953 $query = "INSERT INTO paymentHistory SET recordID = '".$ans [0] ['recordID']."', date = '".$ans [0] ['sdate']."'";
7954 $this->dbclass->execute_query($query);
7955 echo "<br>".$query;
7956 die;
7957 return $ans [0] ['recordID'];
7958 }
7959
7960 public function paymentApproved ()
7961 {
7962 $recordID = $this->dbclass->get_escape_string($_POST['recordID']);
7963 $date = $this->dbclass->get_escape_string($_POST['date']);
7964 $typeId = $this->dbclass->get_escape_string($_POST['typeId']);
7965 $amtRecv = $this->dbclass->get_escape_string($_POST['amtRecv']);
7966 $amtRecOn = $this->dbclass->get_escape_string($_POST['amtRecOn']);
7967 $status = $this->dbclass->get_escape_string($_POST['status']);
7968
7969 if ($status == 'due') {
7970 $query = "UPDATE paymentHistory set amtRecv = $amtRecv, amtRecOn = '$amtRecOn', isPaid = 1 WHERE recordID = $recordID AND date = '$date' AND typeId = $typeId";
7971 $this->dbclass->execute_query($query);
7972 }
7973 else {
7974 $periodicity = $this->dbclass->get_escape_string($_POST['periodicity']);
7975 $query = "UPDATE paymentHistory set amtRecv = '$amtRecv', amtRecOn = '$amtRecOn', isPaid = 1 WHERE recordID = $recordID AND date = '$date' AND typeId = $typeId";
7976 $this->dbclass->execute_query($query);
7977 //echo $query."\r\n";
7978
7979 $query = "SELECT recordID, date, typeId, amount FROM paymentHistory where recordID = $recordID AND date = '$date' AND isPaid = 1 AND typeId = $typeId";
7980 $this->dbclass->execute_query($query);
7981 $ans = $this->dbclass->get_result_complete();
7982
7983 $newDate = new FNSDateTime($_SESSION ['timezone']);
7984 $newDate->setUTCDate($ans [0] ['date'], 0);
7985 $newDate->addMonth($periodicity);
7986 $dt = $newDate->dateTime->format('Y-m-d');
7987
7988 $query = "INSERT INTO paymentHistory SET recordID = " . $ans [0] ['recordID'] . ", date = '" . $dt . "', typeId = " . $ans [0] ['typeId'] . ", amount = " . $ans [0] ['amount'];
7989 $this->dbclass->execute_query($query);
7990 }
7991 }
7992
7993 public function getPaymentRecordsReport ($typeId, $uname) {
7994 //$uname = $this->dbclass->get_escape_string($_POST['username']);
7995
7996 $pr = array();
7997
7998 $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";
7999 $this->dbclass->execute_query($query);
8000 $pr ['paid'] = $this->dbclass->get_result_complete();
8001 //echo $query;
8002
8003 $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";
8004 $this->dbclass->execute_query($query);
8005 $pr ['np'] = $this->dbclass->get_result_complete();
8006
8007 return $pr;
8008 }
8009
8010
8011 public function sendMessage () {
8012 global $GMONGO;
8013
8014 $sender = $_SESSION['username'];
8015 $receiver = $this->dbclass->get_escape_string($_POST['receiver']);
8016 $msg = $this->dbclass->get_escape_string($_POST['message']);
8017
8018 if (strlen($msg) > 0) {
8019 $record = array('sender' => $sender, 'receiver' => $receiver, 'sent' => true, 'received' => false, 'message' => $msg, 'timestamp' => time(), 'isRead' => false);
8020
8021 $GMONGO -> insertRecord('messages', $record);
8022 //$GMONGO->checkIndex('messages', array('timestamp' => 1, 'timestamp'=> -1), false);
8023 } else
8024 return ERROR;
8025 }
8026
8027 public function getMessages ($sender = false, $limit = false, $lastMessage = false) {
8028 global $GMONGO;
8029
8030 $sender = $this->dbclass->get_escape_string($sender);
8031 $receiver = $_SESSION['username'];
8032 if ($receiver != false) {
8033 $receiver = $this->dbclass->get_escape_string($receiver);
8034 if (!$lastMessage)
8035 $options = array('sender' => $sender, 'receiver' => $receiver, 'isRead' => false);
8036 elseif ($lastMessage)
8037 $options = array('sender' => $sender, 'receiver' => $receiver);
8038 } else
8039 $options = array('sender' => $sender, 'isRead' => false);
8040
8041 $sort = array('timestamp' => -1);
8042 //$ans = $GMONGO -> getRecords('messages', $options, $sort);
8043 $ans = $GMONGO -> getRecords('messages', $options, $sort, $limit);
8044
8045 return $ans;
8046 }
8047
8048 public function getNewMessages () {
8049 global $GMONGO;
8050
8051 $receiver = $_SESSION['username'];
8052 $options = array('receiver' => $receiver, 'isRead' => false);
8053 //$sort = array('timestamp' => -1);
8054 //$ans = $GMONGO -> getRecords('messages', $options, $sort);
8055 $ans = $GMONGO -> getRecords('messages', $options);
8056
8057 return $ans;
8058 }
8059
8060 public function getChatUsers () {
8061
8062 switch ($_SESSION ['accounttype']) {
8063 case USERTYPE_ADMINISTRATOR:
8064 $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$_SESSION['username']."'";
8065 break;
8066
8067 case USERTYPE_CUSTOMERCARE:
8068 $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_FLEET." OR accounttype = ".USERTYPE_ADMINISTRATOR;
8069 break;
8070
8071 case USERTYPE_FLEETCARE:
8072 $QUERY = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
8073 $result = $this->dbclass->execute_query ( $QUERY );
8074 $un = $this -> dbclass -> get_result_complete();
8075
8076 $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$un [0] ['adminUserName']."' AND accounttype = ".USERTYPE_FLEET;
8077 break;
8078
8079 case USERTYPE_FLEET:
8080 $list = array();
8081 $QUERY = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
8082 $result = $this->dbclass->execute_query ( $QUERY );
8083 $un = $this -> dbclass -> get_result_complete();
8084 $list [0] ['username'] = $un [0] ['adminUserName'];
8085 $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$un [0] ['adminUserName']."' AND accounttype = ".USERTYPE_FLEETCARE;
8086
8087 $this->dbclass->execute_query($query);
8088 $ans = $this->dbclass->get_result_complete();
8089 if (isset($ans) && $ans != false)
8090 $list = array_merge($list, $ans);
8091 $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_CUSTOMERCARE;
8092 $this->dbclass->execute_query($query);
8093 $ans = $this->dbclass->get_result_complete();
8094 if (isset($ans) && $ans != false)
8095 $list = array_merge($list, $ans);
8096
8097 return $list;
8098 }
8099
8100 /*if ($_SESSION ['accounttype'] == USERTYPE_ADMINISTRATOR)
8101 $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$_SESSION['username']."'";
8102 else if ($_SESSION ['accounttype'] == USERTYPE_CUSTOMERCARE)
8103 $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_FLEET." OR accounttype = ".USERTYPE_ADMINISTRATOR;
8104 else if ($_SESSION ['accounttype'] == USERTYPE_FLEETCARE) {
8105 $QUERY = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
8106 $result = $this->dbclass->execute_query ( $QUERY );
8107 $un = $this -> dbclass -> get_result_complete();
8108
8109 $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$un [0] ['adminUserName']."' AND accounttype = ".USERTYPE_FLEET;
8110 }*/
8111
8112 $this->dbclass->execute_query($query);
8113 $ans = $this->dbclass->get_result_complete();
8114
8115 return $ans;
8116 }
8117
8118
8119
8120
8121 /*******************************************************************/
8122 /*******************************************************************/
8123
8124 //For Maliatec API
8125 public function getTrackerIDFromName ($tname) {
8126 $query = "SELECT trackerid FROM trackers WHERE name = '$tname'";
8127 $this->dbclass->execute_query($query);
8128 $result = $this->dbclass->get_result_complete();
8129 if ($result)
8130 return $result [0] ['trackerid'];
8131 else
8132 return $result;
8133 }
8134
8135 //Returns last sync date and time, used in Maliatec Mobile Computer
8136 public function lastSyncDateTime () {
8137 $query = "SELECT * FROM lastSyncDateTime";
8138 $this->dbclass->execute_query($query);
8139 $ans = $this->dbclass->get_result_complete($query);
8140
8141 return $ans [0] ['dateTime'];
8142 }
8143
8144 public function updateLastSyncDateTime ($dt) {
8145 $query = "UPDATE lastSyncDateTime SET dateTime = '$dt'";
8146 $this->dbclass->execute_query($query);
8147 }
8148
8149 public function insertIntoAEM ($tid, $data) {
8150 $query = "INSERT INTO A{$tid} SET date = '".$data['date']."', time = ".$data['time'].", latitude = ".$data['latitude'].", longitude = ".$data['longitude'].", ";
8151 $query .= "speed = 0, direction = 0, pdatetime = timestamp(\"".$data['dateTime']."\")";
8152 $this->dbclass->execute_query($query);
8153 }
8154
8155 public function getTrackerID () {
8156 $query = "SELECT trackerid FROM trackers";
8157 $this->dbclass->execute_query($query);
8158 $result = $this->dbclass->get_result_complete();
8159
8160 return $result;
8161 }
8162 /*Maliatec Mobile Computer End*/
8163
8164 /*Maliatec Eduvation*/
8165
8166 public function insertBusSchedule () {
8167 $query = "REPLACE INTO busSchedules SET ";
8168 $query .= basicTransactions::prepareMySQL_POSTRequest ();
8169 return $this->dbclass->execute_query($query);
8170 }
8171
8172 public function getBusSchedule ($username) {
8173 $query = "SELECT * FROM busSchedules WHERE username = '".$username."'";
8174 $this->dbclass->execute_query($query);
8175 $result = $this->dbclass->get_result_complete();
8176
8177 return $result;
8178 }
8179
8180 public function getLatestAlertsList ($fields = false) {
8181 if ($fields == false)
8182 $fields = '*';
8183 if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR )
8184 $query = "SELECT $fields FROM adminTrackersMap LEFT JOIN EGLOBAL ON trackerid = tid WHERE username = '".$_SESSION['username']."'";
8185 else if ($_SESSION['accounttype'] == USERTYPE_FLEET)
8186 $query = "SELECT $fields FROM trackersMap LEFT JOIN EGLOBAL ON trackerid = tid WHERE username = '".$_SESSION['username']."'";
8187 else if ($_SESSION['accounttype'] == USERTYPE_CUSTOMERCARE)
8188 $query = "SELECT $fields FROM trackers LEFT JOIN EGLOBAL ON trackerid = tid";
8189 else if ($_SESSION['accounttype'] == USERTYPE_FLEETCARE) {
8190 $QUERY = "SELECT adminUserName from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
8191 $result = $this->dbclass->execute_query ( $QUERY );
8192 $un = $this -> dbclass -> get_result_complete();
8193
8194 $query = "SELECT * FROM adminTrackersMap LEFT JOIN EGLOBAL ON trackerid = tid WHERE username = '".$un[0]['adminUserName']."'";
8195 }
8196 $this -> dbclass -> execute_query($query);
8197 $result = $this -> dbclass -> get_result_complete();
8198
8199 return $result;
8200 }
8201
8202
8203 /*****FOR MIGRATION FROM MySQL TO MongoDB*****/
8204 public function getARecords ($tid) {
8205 $query = "SELECT * FROM A{$tid} WHERE (date = '2015-09-01' AND time >= 0) OR (date >= '2015-09-01') ORDER BY date, time" ;
8206 return $this -> dbclass ->execute_query($query);
8207 //$result = $this -> dbclass -> get_result_complete();
8208
8209 //return $result;
8210 }
8211
8212 public function getERecords ($tid) {
8213 $query = "SELECT * FROM E{$tid} WHERE (date = '2015-09-01' AND time >= 0) OR (date >= '2015-09-01') ORDER BY date, time" ;
8214 return $this -> dbclass ->execute_query($query);
8215 //$result = $this -> dbclass -> get_result_complete();
8216
8217 //return $result;
8218 }
8219
8220 public function getAMRecords ($tid) {
8221 /*$query = "CREATE INDEX dateTime on A{$tid} (date,time)";
8222 $this -> dbclass -> execute_query($query);
8223 $query = "CREATE INDEX dateTime on M{$tid} (date,time)";
8224 $this -> dbclass -> execute_query($query);*/
8225 $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" ;
8226 return $this -> dbclass ->execute_query($query);
8227 //$result = $this -> dbclass -> get_result_complete();
8228
8229 //return $result;
8230 }
8231
8232 public function getResultRow () {
8233 return $this->dbclass->get_result_row();
8234 }
8235 /************************************************************/
8236
8237 /*******************************************************************/
8238 /*******************FLEETCARE QUERIES*********************/
8239 /*******************************************************************/
8240
8241 public function fleetcare_get_users_list () {
8242 $fields = "username,name,company,mobile,email,city,country,reseller";
8243 $wClause = "accounttype = " . USERTYPE_FLEET;
8244
8245 $query = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
8246 $result = $this->dbclass->execute_query ( $query );
8247 $un = $this -> dbclass -> get_result_complete();
8248
8249 $query = "SELECT $fields FROM logicalGroups_V5 INNER JOIN Users USING (username) WHERE adminUserName = '".$un [0] ['adminUserName']."' AND Users.accounttype = ".USERTYPE_FLEET;
8250
8251 //$query = "SELECT $fields FROM Users WHERE " . $wClause . " ORDER BY name";
8252 $result = $this->dbclass->execute_query ( $query );
8253 $answer = $this->dbclass->get_result_complete ();
8254
8255 return $answer;
8256 }
8257
8258
8259 /*******************************************************************/
8260 /*******************************************************************/
8261
8262 /*public function insertIntoA ($tid, $data) {
8263 $query = "INSERT INTO A{$tid} SET date = '".$data['date']."', time = ".$data['time'].", latitude = ".$data['latitude'].", longitude = ".$data['longitude'].", ";
8264 $query .= "speed = ".$data['speed'].", direction = ".$data['direction'].", pdatetime = timestamp(\"".$data['dateTime']."\")";
8265 $this->dbclass->execute_query($query);
8266 }
8267
8268 public function insertIntoE ($tid, $data) {
8269 $query = "INSERT INTO E{$tid} SET date = '".$data['date']."', time = ".$data['time'].", latitude = ".$data['latitude'].", longitude = ".$data['longitude'].", ";
8270 $query .= "speed = ".$data['speed'].", direction = ".$data['direction'].", event = ".$data['event'].", description = ".$data['description'].", pdatetime = timestamp(\"".$data['dateTime']."\")";
8271 $this->dbclass->execute_query($query);
8272 }
8273
8274 public function insertIntoM ($tid, $data) {
8275 $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']."', ";
8276 $query .= "siteID = '".$data['siteID']."', fuel1 = ".$data['fuel1'].", fuel2 = ".$data['fuel2'].", fuel3 = ".$data['fuel3'].", fuel4 = ".$data['fuel4'].", fuel5 = ".$data['fuel5'].", temperature1 = ".$data['temperature1'].", ";
8277 $query .= "temperature2 = ".$data['temperature2'].", temperature3 = ".$data['temperature3'].", temperature4 = ".$data['temperature4'].", temperature5 = ".$data['temperature5'].", ";
8278 //$query .= "speed = ".$data['speed'].", direction = ".$data['direction'].", pdatetime = timestamp(\"".$data['dateTime']."\")";
8279 $this->dbclass->execute_query($query);
8280 }*/
8281
8282 public function createAEM ($tid) {
8283 $query = "CREATE TABLE A{$tid} like dataTable";
8284 $result = $this->dbclass->execute_query ( $query );
8285
8286 $query = "CREATE TABLE E{$tid} like eventsTable";
8287 $result = $this->dbclass->execute_query ( $query );
8288
8289 $query = "CREATE TABLE M{$tid} like miscTable";
8290 $result = $this->dbclass->execute_query ( $query );
8291 }
8292
8293 public function insertIntoMAGlobals ($trackerRecord) {
8294 $query = "INSERT INTO MAGLOBALS SET ";
8295
8296 $initial = true;
8297 foreach ($trackerRecord as $k => $v) {
8298 if ($initial == true)
8299 {
8300 $initial = false;
8301 }else {
8302 $query .= ", ";
8303 }
8304
8305 $query .= $k ." = \"".$this->dbclass->get_escape_string($v)."\"";
8306 }
8307
8308 $this->dbclass->execute_query($query);
8309
8310 //$query = "INSERT INTO MAGLOBALS SET ".basicTransactions::prepareMySQL_POSTRequest($_POST);
8311
8312 echo $query;
8313 }
8314
8315 public function insertIntoAGlobals ($trackerRecord) {
8316 $query = "INSERT INTO AGLOBALS SET ";
8317
8318 $initial = true;
8319 foreach ($trackerRecord as $k => $v) {
8320 if ($initial == true)
8321 {
8322 $initial = false;
8323 }else {
8324 $query .= ", ";
8325 }
8326
8327 $query .= $k ." = \"".$this->dbclass->get_escape_string($v)."\"";
8328 }
8329
8330 $this->dbclass->execute_query($query);
8331
8332 //$query = "INSERT INTO MAGLOBALS SET ".basicTransactions::prepareMySQL_POSTRequest($_POST);
8333
8334 echo $query;
8335 }
8336
8337 public function getTrackerMARecord ($trackerid) {
8338 $query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$trackerid."'";
8339 $this->dbclass->execute_query($query);
8340 $result = $this->dbclass->get_result_complete();
8341
8342 return $result;
8343 }
8344
8345 public function getTrackerARecord ($trackerid) {
8346 $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$trackerid."'";
8347 $this->dbclass->execute_query($query);
8348 $result = $this->dbclass->get_result_complete();
8349
8350 return $result;
8351 }
8352
8353 public function getTrackerIDFromSearchKeywords ($keyword) {
8354 $query = "SELECT trackerid FROM trackersExInfo WHERE searchKeywords LIKE '".$keyword."'";
8355 $this->dbclass->execute_query($query);
8356 return $this->dbclass->get_result_complete($query);
8357 }
8358
8359 public function getLastSentRecordId ($trackerid) {
8360 $query = "SELECT * FROM sentRecordId WHERE trackerid = '".$trackerid."'";
8361 $this->dbclass->execute_query($query);
8362 return $this->dbclass->get_result_complete();
8363 }
8364
8365 public function updateLastSentMiscRecordId ($trackerid, $miscRecordId) {
8366 //$query = "INSERT INTO sentRecordId UPDATE sentRecordId SET miscRecordId = $miscRecordId WHERE trackerid = '".$trackerid."'";
8367 $query = "INSERT INTO sentRecordId SET miscRecordId = $miscRecordId, trackerid = '".$trackerid."' ON DUPLICATE KEY UPDATE miscRecordId = $miscRecordId";
8368 return $this->dbclass->execute_query($query);
8369 }
8370
8371 public function updateLastSentEventRecordId ($trackerid, $eventsRecordId) {
8372 //$query = "UPDATE sentRecordId SET eventsRecordId = $eventsRecordId WHERE trackerid = '".$trackerid."'";
8373 $query = "INSERT INTO sentRecordId SET eventsRecordId = $eventsRecordId, trackerid = '".$trackerid."' ON DUPLICATE KEY UPDATE eventsRecordId = $eventsRecordId";
8374 return $this->dbclass->execute_query($query);
8375 }
8376
8377 public function getARecordsFromRecordId ($trackerid, $recordId) {
8378 $query = "SELECT * FROM A{$trackerid} WHERE id > $recordId ORDER BY id";
8379 $this->dbclass->execute_query($query);
8380 return $this->dbclass->get_result_complete();
8381 }
8382
8383 public function getERecordsFromRecordId ($trackerid, $recordId) {
8384 $query = "SELECT * FROM E{$trackerid} WHERE id > $recordId ORDER BY id";
8385 $this->dbclass->execute_query($query);
8386 return $this->dbclass->get_result_complete();
8387 }
8388
8389 public function getMRecordsFromRecordId ($trackerid, $recordId) {
8390 $query = "SELECT * FROM M{$trackerid} WHERE id > $recordId ORDER BY id";
8391 $this->dbclass->execute_query($query);
8392 return $this->dbclass->get_result_complete();
8393 }
8394
8395 public function getARecord ($trackerid, $date, $time) {
8396 $query = "SELECT * FROM A{$trackerid} WHERE date = '$date' AND time = $time";
8397 $this->dbclass->execute_query($query);
8398 return $this->dbclass->get_result_complete();
8399 }
8400
8401 public function getMRecord ($trackerid, $date, $time) {
8402 $query = "SELECT * FROM M{$trackerid} WHERE date = '$date' AND time = $time";
8403 $this->dbclass->execute_query($query);
8404 return $this->dbclass->get_result_complete();
8405 }
8406
8407 public function getLastMRecordFromId ($trackerid) {
8408 $query = "SELECT * from M{$trackerid} ORDER BY id DESC LIMIT 0, 1";
8409 $this->dbclass->execute_query($query);
8410 return $this->dbclass->get_result_complete();
8411 }
8412
8413 public function getLastERecordFromId ($trackerid) {
8414 $query = "SELECT * from E{$trackerid} ORDER BY id DESC LIMIT 0, 1";
8415 $this->dbclass->execute_query($query);
8416 return $this->dbclass->get_result_complete();
8417 }
8418
8419 //public function saveLogisticSchedule ($username, $trackerid, $datePeriod) {
8420 public function saveLogisticSchedule () {
8421 $_POST['username'] = $_SESSION['username'];
8422 $query = "INSERT INTO logisticScheduler SET ";
8423 $query .= basicTransactions::prepareMySQL_POSTRequest ();
8424 $result = $this->dbclass->execute_query ( $query );
8425
8426 return $result;
8427 }
8428
8429 /*public function removeLogisticSchedule ($id) {
8430 $query = "DELETE FROM logisticScheduler WHERE id = $id";
8431 $result = $this->dbclass->execute_query ( $query );
8432
8433 return $result;
8434 }*/
8435
8436 public function getReportLogisticSchedule ($username, $trackerid, $datePeriod) {
8437 $query = "SELECT * FROM logisticScheduler WHERE username = '".$username."' AND trackerid = '".$trackerid."'";
8438 $query .= " AND stimestamp >= ".$datePeriod['stimestamp']." AND etimestamp <= ".$datePeriod['etimestamp'];
8439 //echo $query;
8440 $this->dbclass->execute_query($query);
8441 $result = $this->dbclass->get_result_complete();
8442
8443 return $result;
8444 }
8445
8446 public function getLogisticSchedule ($username) {
8447 /*$query = "SELECT * FROM logisticScheduler WHERE username = '".$username."' AND trackerid = '".$trackerid."'";
8448 $query .= " AND stimestamp >= ".$datePeriod['stimestamp']." AND etimestamp <= ".$datePeriod['etimestamp'];*/
8449 $query = "SELECT * FROM logisticScheduler WHERE username = '".$username."'";
8450 //echo $query;
8451 $this->dbclass->execute_query($query);
8452 $result = $this->dbclass->get_result_complete();
8453
8454 return $result;
8455 }
8456
8457 public function removeLogisticSchedule ($id) {
8458 $id = $this->dbclass->get_escape_string($id);
8459 $query = "DELETE FROM logisticScheduler WHERE id = $id";
8460 $result = $this->dbclass->execute_query($query);
8461 return $result;
8462 }
8463
8464 public function insertIntoTrackersGallery ($imageData) {
8465
8466 foreach ($imageData as $k => $v) {
8467 $imageData[$k] = $this->dbclass->get_escape_string($v);
8468 }
8469 //$query = "INSERT INTO trackersGallery SET trackerid = '".$imageData['trackerid']."', name = '".$imageData['name']."', description = '".$imageData['description']."'";
8470 $query = "INSERT INTO trackersGallery SET trackerid = '".$imageData['trackerid']."', name = '".$imageData['name']."', type = '".$imageData['type']."', description = '".$imageData['description']."', timestamp = ".$imageData['timestamp'];
8471 return $this->dbclass->execute_query($query);
8472 }
8473
8474 public function getImageDetails ($name) {
8475 $name = $this->dbclass->get_escape_string($name);
8476 $query = "SELECT * FROM trackersGallery WHERE name = '".$name."'";
8477 $this->dbclass->execute_query($query);
8478 return $this->dbclass->get_result_complete();
8479 }
8480
8481 public function getImageDetailsFromId ($id) {
8482 $id = $this->dbclass->get_escape_string($id);
8483 $query = "SELECT * FROM trackersGallery WHERE id = $id";
8484 $this->dbclass->execute_query($query);
8485 return $this->dbclass->get_result_complete();
8486 }
8487
8488 public function removeImagesFromTrackersGallery ($value, $using = 'id') {
8489 $value = $this->dbclass->get_escape_string($value);
8490 if ($using == 'id')
8491 $clause = 'id = '.$value;
8492 elseif ($using == 'name')
8493 $clause = "name = '{$value}'";
8494
8495 //$id = $this->dbclass->get_escape_string($id);
8496 //$query = "DELETE FROM trackersGallery WHERE id = $id";
8497 $query = "DELETE FROM trackersGallery WHERE ".$clause;
8498 return $this->dbclass->execute_query($query);
8499 }
8500
8501 public function saveTrackerGroup ($group) {
8502 $group = $this->dbclass->get_escape_string($group);
8503 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8504
8505 $query = "SELECT * FROM trackersLogicalGroups WHERE groupName = '{$group}', username = '{$username}'";
8506 $this->dbclass->execute_query($query);
8507 $answer = $this->dbclass->get_result_complete();
8508 if ($answer != false)
8509 return EXISTS;
8510
8511 $query = "INSERT INTO trackersLogicalGroups SET groupName = '{$group}', username = '{$username}'";
8512 $result = $this->dbclass->execute_query($query);
8513
8514 if ($result) {
8515 //$returnID = mysql_insert_id ( $this->dblink );
8516 //$returnID = $this->dbclass->get_insert_id();
8517 $returnID = $this->dbclass->dblink->insert_id;
8518 //var_dump($this->dblink);
8519 //$returnID = $this->dblink->insert_id;
8520 //var_dump($returnID);
8521 return $returnID;
8522 }
8523 $errorno = $this->dbclass->get_error_no();
8524
8525 if ($errorno == 1062)
8526 $result = EXISTS;
8527 return $result;
8528 }
8529
8530 public function getFleetUserGroups () {
8531 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8532 $query = "SELECT * FROM trackersLogicalGroups WHERE username = '{$username}'";
8533 $this->dbclass->execute_query($query);
8534 $answer = $this->dbclass->get_result_complete();
8535
8536 return $answer;
8537 }
8538
8539 public function assignTrackerToGroup ($groupid, $trackerid) {
8540 $groupid = $this->dbclass->get_escape_string($groupid);
8541 $trackerid = $this->dbclass->get_escape_string($trackerid);
8542 $query = "INSERT INTO groupTrackersMap SET groupid = $groupid, trackerid = '{$trackerid}'";
8543
8544 return $this->dbclass->execute_query($query);
8545 }
8546
8547 public function removeTrackerGroup ($groupid) {
8548 $groupid = $this->dbclass->get_escape_string($groupid);
8549
8550 $query = 'DELETE FROM trackersLogicalGroups WHERE groupid = '.$groupid;
8551
8552 $result = $this->dbclass->execute_query($query);
8553
8554 if ($result == false)
8555 return $result;
8556
8557 $query = 'DELETE FROM groupTrackersMap WHERE groupid = '.$groupid;
8558
8559 return $this->dbclass->execute_query($query);
8560 }
8561
8562 public function removeTrackerFromGroup ($groupid, $trackerid) {
8563 $groupid = $this->dbclass->get_escape_string($groupid);
8564 $trackerid = $this->dbclass->get_escape_string($trackerid);
8565
8566 $query = "DELETE FROM groupTrackersMap WHERE groupid = $groupid AND trackerid = '{$trackerid}'";
8567 return $this->dbclass->execute_query($query);
8568 }
8569
8570 public function saveFinancialData () {
8571 $returnid = false;
8572 if (($_POST['id'] == 0)) {
8573 $query = 'INSERT INTO financialPackage SET ';
8574 $query .= basicTransactions::prepareMySQL_POSTRequest();
8575 } elseif ($_POST['id'] > 0) {
8576 $query = 'UPDATE financialPackage SET ';
8577 $query .= basicTransactions::prepareMySQL_POSTRequest();
8578 $query .= " WHERE id = {$_POST['id']} AND trackerid = '{$_POST['trackerid']}'";
8579 $returnid = $_POST['id'];
8580 }
8581 $result = $this->dbclass->execute_query($query);
8582 if ($result) {
8583 if (!$returnid)
8584 $returnid = $this->dbclass->dblink->insert_id;
8585 return $returnid;
8586 }
8587
8588 return ERROR;
8589 }
8590
8591 public function savePercentageFinancialData ($trackerid) {
8592 $trackerid = $this->dbclass->get_escape_string($trackerid);
8593 $isRecord = $this->getFinancialData($trackerid);
8594 if ($isRecord) {
8595 $overall = $this->dbclass->get_escape_string($_POST['overall']);
8596 $partial = $this->dbclass->get_escape_string($_POST['partial']);
8597 $query = "UPDATE financialPackage SET overall = '{$overall}', partial = '{$partial}' WHERE trackerid = '{$trackerid}'";
8598 $result = $this->dbclass->execute_query($query);
8599 if ($result)
8600 return $result;
8601 return false;
8602 }
8603
8604 return false;
8605 }
8606
8607 public function getFinancialData ($trackerid) {
8608 $trackerid = $this->dbclass->get_escape_string($trackerid);
8609 $query = "SELECT * FROM financialPackage WHERE trackerid = '{$trackerid}'";
8610 $result = $this->dbclass->execute_query($query);
8611
8612 if ($result) {
8613 $ans = $this->dbclass->get_result_complete();
8614 return $ans;
8615 }
8616
8617 return false;
8618 }
8619
8620 //public function getFinancialDetails ($jstime, $jetime, $tid) {
8621 public function getFinancialDetails ($tid, $isEntireDay = false) {
8622 $tid = $this->dbclass->get_escape_string($tid);
8623
8624 if ($isEntireDay)
8625 $query = "SELECT MAX(rate) FROM financialPackage WHERE trackerid = '{$tid}'";
8626 else {
8627 $query = "SELECT * FROM financialPackage WHERE trackerid = '{$tid}' ORDER by stime, etime";
8628 }
8629
8630 //$CONDITION = "( (stime <= {$jstime} && {$jetime} < etime) || ( (stime <= {$jstime} && {$jetime} > etime) || ) )";
8631
8632 //$query = "SELECT * FROM financialPackage WHERE ";
8633
8634 $result = $this->dbclass->execute_query($query);
8635
8636 if ($result) {
8637 return $this->dbclass->get_result_complete();
8638 }
8639
8640 return false;
8641 }
8642
8643 public function createShift ($shiftName, $shiftSchedule, $description) {
8644 $shiftName = $this->dbclass->get_escape_string($shiftName);
8645 $shiftSchedule = $this->dbclass->get_escape_string($shiftSchedule);
8646 $description = $this->dbclass->get_escape_string($description);
8647 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8648 $returnid = false;
8649 if ($_POST['shiftid'] == 0) {
8650 $query = "SELECT * FROM shifts WHERE username = '{$username}' AND shiftName = '{$shiftName}'";
8651 $this->dbclass->execute_query($query);
8652 $answer = $this->dbclass->get_result_complete();
8653 if ($answer != false) return EXISTS;
8654
8655 $query = "INSERT INTO shifts SET username = '{$username}', shiftName = '{$shiftName}', shiftSchedule = '{$shiftSchedule}', description = '{$description}'";
8656
8657 $returnid = true;
8658
8659 } elseif ($_POST['shiftid'] > 0) {
8660 $query = "UPDATE shifts SET shiftName = '{$shiftName}', shiftSchedule = '{$shiftSchedule}', description = '{$description}' WHERE shiftid = {$_POST['shiftid']}";
8661 }
8662
8663 $result = $this->dbclass->execute_query($query);
8664 if ($result) {
8665 if ($returnid)
8666 return $this->dbclass->dblink->insert_id;
8667
8668 return $_POST['shiftid'];
8669 }
8670
8671
8672 return ERROR;
8673 }
8674
8675 public function getShifts () {
8676 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8677 $query = "SELECT * FROM shifts WHERE username = '{$username}'";
8678 $result = $this->dbclass->execute_query($query);
8679 if ($result) {
8680 $answer = $this->dbclass->get_result_complete();
8681 foreach ($answer as $k => $v) {
8682 $query = "SELECT trackerid FROM shiftsMapper WHERE shiftid = {$v['shiftid']}";
8683 $this->dbclass->execute_query($query);
8684 $trackers = $this->dbclass->get_result_complete();
8685
8686 $firstTracker = true;
8687
8688 $answer [$k] ['trackers'] = '';
8689 if ($trackers) {
8690 foreach ($trackers as $a => $b) {
8691 if ($firstTracker) {
8692 $answer [$k] ['trackers'] .= $b['trackerid'];
8693 $firstTracker = false;
8694 } else
8695 $answer [$k] ['trackers'] .= ','.$b['trackerid'];
8696 }
8697 }
8698 }
8699
8700 return $answer;
8701 }
8702
8703
8704 return false;
8705 }
8706
8707 public function removeShifts ($shiftid) {
8708 $query = "DELETE FROM shifts WHERE shiftid = $shiftid";
8709 $result = $this->dbclass->execute_query($query);
8710 if ($result) {
8711 $query = "DELETE FROM shiftsMapper WHERE shiftid = {$shiftid}";
8712 $this->dbclass->execute_query($query);
8713 }
8714
8715 return $result;
8716 }
8717
8718 public function assignShift ($shiftid, $tid) {
8719 $query = "INSERT INTO shiftsMapper SET shiftid = {$shiftid}, trackerid = '{$tid}'";
8720 //echo $query;
8721 return $this->dbclass->execute_query($query);
8722 }
8723
8724 public function removeAssignedShift ($shiftid, $tid) {
8725 $query = "DELETE FROM shiftsMapper WHERE shiftid = {$shiftid} AND trackerid = '{$tid}'";
8726 //echo $query;
8727 return $this->dbclass->execute_query($query);
8728 }
8729
8730 public function getShiftDetails ($shiftid) {
8731 $query = "SELECT * FROM shifts WHERE shiftid = {$shiftid}";
8732 $result = $this->dbclass->execute_query($query);
8733 if ($result) {
8734 return $this->dbclass->get_result_complete();
8735 }
8736 return false;
8737 }
8738
8739 public function getShiftTrackers ($shiftid) {
8740 $query = "SELECT trackerid FROM shiftsMapper WHERE shiftid = '{$shiftid}'";
8741 $result = $this->dbclass->execute_query($query);
8742 if ($result)
8743 return $this->dbclass->get_result_complete();
8744
8745 return false;
8746 }
8747
8748 public function saveTrackerIcon ($iconName, $icon, $description = '') {
8749 //basicTransactions::prepareMySQL_POSTRequest();
8750 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8751 $iconName = $this->dbclass->get_escape_string($iconName);
8752 $icon = $this->dbclass->get_escape_string($icon);
8753 $description = $this->dbclass->get_escape_string($description);
8754 $query = "INSERT INTO trackerIcons SET username = '{$username}', iconName = '{$iconName}', icon = '{$icon}', description = '{$description}'";
8755 $result = $this->dbclass->execute_query($query);
8756 if ($result) {
8757 return $this->dbclass->dblink->insert_id;
8758 }
8759 return ERROR;
8760 }
8761
8762 public function getTrackerIcon () {
8763 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8764 $query = "SELECT * FROM trackerIcons WHERE username = '{$username}'";
8765 $result = $this->dbclass->execute_query($query);
8766 if ($result)
8767 return $this->dbclass->get_result_complete();
8768
8769 return false;
8770 }
8771
8772 public function assignIcon ($iconid, $tid){
8773 $query = "INSERT INTO trackersIconsMap SET iconid = $iconid, trackerid = '{$tid}'";
8774 return $this->dbclass->execute_query($query);
8775 }
8776
8777 public function getTrackerIconid ($tid) {
8778 $username = $this->dbclass->get_escape_string($_SESSION['username']);
8779 $query = "SELECT iconid FROM trackerIcons INNER JOIN trackersIconsMap USING (iconid) WHERE username = '{$username}' AND trackerid = '{$tid}'";
8780 $result = $this->dbclass->execute_query($query);
8781
8782 if ($result && $result->num_rows)
8783 return $this->dbclass->get_result_complete();
8784 else {
8785
8786 //var_dump(array('0' => array('iconid' => 'default')));
8787 //die;
8788 return array('0' => array('iconid' => 'default'));
8789 }
8790
8791 return false;
8792 }
8793
8794 public function __construct() {
8795 $this->dbclass = new MDATABASE ();
8796
8797 $this->dblink = $this->dbclass->connect ( databaseConfiguration::$usernameSD, databaseConfiguration::$passwordSD, databaseConfiguration::$hostnameSD, databaseConfiguration::$systemDatabase );
8798
8799 $this->dbclass_2 = new MDATABASE ();
8800
8801 $this->dblink_2 = $this->dbclass_2->connect ( databaseConfiguration::$usernameSD, databaseConfiguration::$passwordSD, databaseConfiguration::$hostnameSD, databaseConfiguration::$systemDatabase );
8802
8803 $this->openDebugLog ();
8804 //$this->keyText = "9c24447e34340438654673081ce909b0553be329f5eb5e6e1d718e29fb666666";
8805 $this->keyText = "9c24447e34340438654673081ce909b0553be329f5eb5e6e1d718e29fb210033";
8806 $this->key = pack('H*', $this->keyText);
8807 }
8808
8809 public function __destruct() {
8810 $this->closeDebugLog ();
8811 }
8812}
8813?>