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