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