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