Guest User

Untitled

a guest
Feb 8th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 328.33 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4. * @version: 5.1
  5. */
  6.  
  7. class 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. }
  180. public function getPOIByID ($id) {
  181. $QUERY = "SELECT * FROM POI where id=$id";
  182. $this->dbclass->execute_query ( $QUERY );
  183. return $this->dbclass->get_result_complete ();
  184. }
  185.  
  186. public function getUserRecordWithPreferences($username) {
  187. $uname = $this->dbclass->get_escape_string ( $username );
  188. $QUERY = "SELECT * FROM Users left join userPreferences using(username) WHERE username=\"{$uname}\"";
  189. $this->dbclass->execute_query ( $QUERY );
  190. return $this->dbclass->get_result_complete ();
  191. }
  192. public function updateLoginRetries($username, $value) {
  193. $now = time ();
  194. $uname = $this->dbclass->get_escape_string ( $username );
  195. $QUERY = "UPDATE Users SET noofretry=$value, blocktime=$now WHERE username=\"{$uname}\"";
  196. $this->dbclass->execute_query ( $QUERY );
  197. }
  198. public function getRecordFromEmail($email) {
  199. $email = $this->dbclass->get_escape_string ( $email );
  200. $QUERY = "SELECT * FROM Users WHERE email=\"{$email}\"";
  201. $this->dbclass->execute_query ( $QUERY );
  202. return $this->dbclass->get_result_complete ();
  203. }
  204. public function getBackupStats() {
  205. $query = "SELECT datetime,stored,downloaded FROM backup_log ORDER BY datetime DESC LIMIT 0,5";
  206. $this->dbclass->execute_query ( $query );
  207. $answer = $this->dbclass->get_result_complete ();
  208.  
  209. if ($answer == false) {
  210. return array ();
  211. }
  212.  
  213. $entries_count = count ( $answer );
  214.  
  215. $returnAnswer = array ();
  216.  
  217. for($i = 0; $i < $entries_count; $i ++) {
  218. $logEntry = new backupLogEntry ();
  219. $date = new DateTime ( $answer [$i] ['datetime'], new DateTimeZone ( "UTC" ) );
  220. $date->setTimezone ( new DateTimeZone ( $_SESSION ['timezone'] ) );
  221.  
  222. $logEntry->date = $date->format ( 'Y-m-d' );
  223. $logEntry->time = $date->format ( 'H:i:s' );
  224. $logEntry->stored = $answer [$i] ['stored'] ? "1" : "0";
  225. $logEntry->downloaded = $answer [$i] ['downloaded'] ? "1" : "0";
  226. array_push ( $returnAnswer, $logEntry );
  227. }
  228.  
  229. return $returnAnswer;
  230. } // function
  231. public function getDatabaseStats() { //This function is rewritten in MongoDB with name getMongoDatabaseStats() in mysqlQueries.php
  232. global $GMONGO;
  233. $query = "SELECT * FROM trackers";
  234. $this->dbclass->execute_query ( $query );
  235. $answer = $this->dbclass->get_result_complete ();
  236.  
  237. $returnAnswer = new databaseCounting ();
  238.  
  239. if ($answer == false) {
  240. $returnAnswer->eventRecords = 0;
  241. $returnAnswer->locationRecords = 0;
  242. return $returnAnswer;
  243. }
  244.  
  245. $tracker_count = count ( $answer );
  246.  
  247. for($i = 0; $i < $tracker_count; $i ++) {
  248. $QUERY = "SELECT MAX(id) FROM A{$answer[$i]['trackerid']}";
  249. $this->dbclass->execute_query ( $QUERY );
  250. $cans = $this->dbclass->get_result_complete ();
  251.  
  252. if ($cans != false) {
  253. $returnAnswer->locationRecords += $cans [0] ['MAX(id)'];
  254. }
  255.  
  256. $QUERY = "SELECT MAX(id) FROM E{$answer[$i]['trackerid']}";
  257. $this->dbclass->execute_query ( $QUERY );
  258. $cans = $this->dbclass->get_result_complete ();
  259.  
  260. if ($cans != false) {
  261. $returnAnswer->eventRecords += $cans [0] ['MAX(id)'];
  262. }
  263. }
  264.  
  265. return $returnAnswer;
  266. } // function
  267. public function getTrackersStats() {
  268. //global $GMONGO;
  269.  
  270. if ($_SESSION['username'] == 'root')
  271. $query = "SELECT * FROM trackers";
  272. else if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
  273. $query = "SELECT trackers.* FROM adminTrackersMap INNER JOIN trackers USING(trackerid) WHERE username = '".$_SESSION['username']."'";
  274. else if ($_SESSION['accounttype'] == USERTYPE_FLEET)
  275. $query = "SELECT trackers.* FROM trackersMap INNER JOIN trackers USING(trackerid) WHERE username = '".$_SESSION['username']."'";
  276.  
  277. $this->dbclass->execute_query ( $query );
  278. $answer = $this->dbclass->get_result_complete ();
  279.  
  280. if ($answer == false) {
  281. return false;
  282. }
  283.  
  284. $gmmtime = time ();
  285.  
  286. //$dt = new datetimeStruct ();
  287.  
  288. // $tdate = gmdate("Y-m-d",$gmmtime);
  289. // $ttime = gmdate("%H", $gmmtime)*3600 + gmdate("%M", $gmmtime)*60 + gmdate("%S", $gmmtime);
  290.  
  291. $tracker_count = count ( $answer );
  292. $returnAnswer = array ();
  293.  
  294. $returnAnswer ['overall']->workingCount = 0;
  295. $returnAnswer ['overall']->stalledCount = 0;
  296. $returnAnswer ['overall']->totalCount = $tracker_count;
  297.  
  298. for($i = 0; $i < $tracker_count; $i ++) {
  299. //$cans = $GMONGO->getLastARecord($answer[$i]['trackerid']);
  300. $cans = $this->getAGLOBALSrecord($answer[$i]['trackerid']);
  301.  
  302. if (isset ( $returnAnswer [$answer [$i] ['type']] ) == false) {
  303. $returnAnswer [$answer [$i] ['type']] = new trackersCounting ();
  304. $returnAnswer [$answer [$i] ['type']]->type = $answer [$i] ['type'];
  305. }
  306.  
  307. if ($cans != false) {
  308. //$dt->setTimeSeconds ( $cans [0] ['time'] );
  309. //$dt->setDate ( $cans [0] ['date'] );
  310. //$tmtime = gmmktime ( $dt->hour, $dt->minutes, $dt->seconds, $dt->month, $dt->day, $dt->year );
  311. $tmtime = $cans [0] ['timestamp'];
  312.  
  313. if (($gmmtime - $tmtime) > NON_WORKING_TRACKER_TIME) {
  314. $returnAnswer [$answer [$i] ['type']]->stalledCount ++;
  315. $returnAnswer ['overall']->stalledCount ++;
  316. }
  317. else {
  318. $returnAnswer [$answer [$i] ['type']]->workingCount ++;
  319. $returnAnswer ['overall']->workingCount ++;
  320. }
  321. } else {
  322. $returnAnswer [$answer [$i] ['type']]->stalledCount ++;
  323. $returnAnswer ['overall']->stalledCount ++;
  324. }
  325.  
  326. $returnAnswer [$answer [$i] ['type']]->totalCount ++;
  327. }
  328.  
  329. return $returnAnswer;
  330. } // function
  331.  
  332. public function getTrackersCount($username, $type) {
  333. $username = $this->dbclass->get_escape_string($username);
  334.  
  335. if ($type == 'admin') {
  336. $query = "SELECT COUNT(*) FROM adminTrackersMap WHERE username='$username'";
  337. }else {
  338. $query = "SELECT COUNT(*) FROM trackersMap WHERE username='$username'";
  339. }
  340.  
  341. $this->dbclass->execute_query ( $query );
  342. $answer = $this->dbclass->get_result_complete ();
  343.  
  344. return $answer[0]['COUNT(*)'];
  345. }
  346.  
  347. public function getAllTrackersPositions($sDate,$sTime, $eDate, $eTime, $lat, $lng, $radius) { //$sdate, $sTime, $eDate, $eTime are in UTC
  348. global $GMONGO;
  349.  
  350. $trackers = array();
  351.  
  352. $query = "SELECT * FROM trackers inner join trackersExInfo using (trackerid)";
  353. $this->dbclass->execute_query ( $query );
  354. $answer = $this->dbclass->get_result_complete ();
  355.  
  356. if ($answer == false) {
  357. return $trackers;
  358. }
  359.  
  360. $fdate = new FNSDateTime($_SESSION['timezone']);
  361. $fdate->setUTCDate($sDate, $sTime);
  362. $searchtime = $fdate->dateTime->getTimestamp();
  363.  
  364. //$periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
  365. $periodClauseMongo = basicTransactions::getPeriodClauseMongo ( $sDate, $sTime, $eDate, $eTime );
  366. $periodClauseMongo ['latitude'] = array('$exists' => 1, '$ne' => null);
  367.  
  368. foreach ($answer as $k=>$v) {
  369. /*$query = "SELECT * FROM A".$v['trackerid']. " WHERE $periodClause ORDER BY date, time";
  370.  
  371. $this->dbclass->execute_query ( $query );
  372. $records = $this->dbclass->get_result_complete ();*/
  373.  
  374. $records = $GMONGO->getAMRecord($v['trackerid'], $periodClauseMongo);
  375.  
  376. if ($records == false) continue;
  377.  
  378. $recordsCount = count($records);
  379.  
  380. for ($i = 0; $i < $recordsCount; $i++) {
  381. $d = getDistance($lat, $lng, $records[$i]['latitude'], $records[$i]['longitude']) * 1000;
  382. if ($d > $radius) continue;
  383.  
  384. $fdate->setUTCDate($records[$i]['date'], $records[$i]['time']);
  385. $records[$i]['datestamp'] = $fdate->getFormattedString();
  386.  
  387. /*$query = "SELECT * FROM M".$v['trackerid']. " WHERE date = '".$records[$i]['date']."' and time >='".$records[$i]['time']."' ORDER by date,time LIMIT 0,1";
  388. $this->dbclass->execute_query ( $query );
  389. $mrecord = $this->dbclass->get_result_complete ();
  390. if ($mrecord != false) {
  391. $records[$i] = array_merge($records[$i], $mrecord[0]);
  392. }*/
  393.  
  394. $records[$i]['distance'] = $d;
  395. $n = new emptyClass();
  396. $n->info = $v;
  397. $n->record = $records[$i];
  398. array_push($trackers, $n);
  399. break;
  400. } //for
  401. }
  402.  
  403. /*foreach ($answer as $k=>$v) {
  404. $query = "SELECT * FROM A".$v['trackerid']. " WHERE $periodClause ORDER BY date, time";
  405.  
  406. $this->dbclass->execute_query ( $query );
  407. $records = $this->dbclass->get_result_complete ();
  408.  
  409. if ($records == false) continue;
  410.  
  411. $recordsCount = count($records);
  412.  
  413. for ($i = 0; $i < $recordsCount; $i++) {
  414. $d = getDistance($lat, $lng, $records[$i]['latitude'], $records[$i]['longitude']) * 1000;
  415. if ($d > $radius) continue;
  416.  
  417. $fdate->setUTCDate($records[$i]['date'], $records[$i]['time']);
  418. $records[$i]['datestamp'] = $fdate->getFormattedString();
  419.  
  420. $query = "SELECT * FROM M".$v['trackerid']. " WHERE date = '".$records[$i]['date']."' and time >='".$records[$i]['time']."' ORDER by date,time LIMIT 0,1";
  421. $this->dbclass->execute_query ( $query );
  422. $mrecord = $this->dbclass->get_result_complete ();
  423. if ($mrecord != false) {
  424. $records[$i] = array_merge($records[$i], $mrecord[0]);
  425. }
  426.  
  427. $records[$i]['distance'] = $d;
  428. $n = new emptyClass();
  429. $n->info = $v;
  430. $n->record = $records[$i];
  431. array_push($trackers, $n);
  432. break;
  433. } //for
  434. }*/ //foreach
  435.  
  436. return $trackers;
  437. }
  438.  
  439.  
  440. public function getHistoryNearbyTrackers ($stimestamp, $etimestamp, $lat, $lng, $radius) { //$sdate, $sTime, $eDate, $eTime are in UTC
  441. global $GMONGO;
  442.  
  443. $trackers = array();
  444.  
  445. if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
  446. $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username = '".$_SESSION['username']."'";
  447. else if ($_SESSION['accounttype'] == USERTYPE_FLEET)
  448. $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username='".$_SESSION['username']."'";
  449. else
  450. $query = "SELECT * FROM trackers inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid)";
  451.  
  452.  
  453. $this->dbclass->execute_query ( $query );
  454. $answer = $this->dbclass->get_result_complete ();
  455.  
  456. if ($answer == false) {
  457. return $trackers;
  458. }
  459.  
  460. $fdate = new FNSDateTime($_SESSION['timezone']);
  461.  
  462. //$periodClauseMongo = basicTransactions::getPeriodClauseMongo ( $sDate, $sTime, $eDate, $eTime );
  463. $periodClauseMongo = array('timestamp' => array('$gte' => $stimestamp, '$lte' => $etimestamp));
  464. $periodClauseMongo ['latitude'] = array('$exists' => 1, '$ne' => null);
  465.  
  466.  
  467. foreach ($answer as $k=>$v) {
  468. $records = $GMONGO->getAMRecord($v['trackerid'], $periodClauseMongo);
  469. // print_r($records);
  470.  
  471. if ($records == false) continue;
  472.  
  473. $recordsCount = count($records);
  474. //echo $recordsCount."<br>";
  475.  
  476. $r = array();
  477.  
  478. for ($i = 0; $i < $recordsCount; $i++) {
  479. $d = getDistance($lat, $lng, $records[$i]['latitude'], $records[$i]['longitude']) * 1000;
  480. //echo "Distance ".$d." radius ".$radius."<br>";
  481. if ($d > $radius) continue;
  482. //print_r($records[$i]);
  483.  
  484. $fdate->setUTCDate($records[$i]['date'], $records[$i]['time']);
  485. $records[$i]['datestamp'] = $fdate->getFormattedString();
  486.  
  487. $records[$i]['distance'] = $d;
  488. /*$n = new emptyClass();
  489. $n->info = $v;
  490. $n->record = $records[$i];
  491. array_push($trackers, $n);*/
  492. //print_r($records[$i]);
  493. array_push($r, $records[$i]);
  494. //print_r($r);
  495. //array_push($trackers, $this->getTrackerDataObject($v, false, $records[$i], false, true));
  496. // print_r($v);
  497. array_push($trackers, $this->getNearbyTrackerDataObject($v, false, $r, false));
  498. break;
  499. } //for
  500. }
  501.  
  502. return $trackers;
  503. }
  504.  
  505.  
  506.  
  507. public function getTrackerDuration_withIgnitionHistory($tid, $status, $ts) {
  508. global $GMONGO;
  509. $sinceBeginning = array(array('timestamp' => 0));
  510.  
  511. switch ($status) {
  512. case "s" :
  513. //$lastIgnition = $GMONGO->getAMLastIgnition($tid);
  514. $lastIgnition = $GMONGO->getAMLastIgnition_beforeTimestamp($tid, $ts);
  515. if ($lastIgnition == false)
  516. $lastIgnition = $sinceBeginning;
  517.  
  518. $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  519. break;
  520.  
  521. case "i" : //Have changed this
  522. //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
  523. $result = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp'=>array('$lte' => $ts), 'speed' => array('$gt' => 0)),1);
  524.  
  525. $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $result[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  526. break;
  527.  
  528. case "n" :
  529. case "g" :
  530. $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('latitude' => array('$exists' => 1, '$ne' => null)),1);
  531. if ($ans == false)
  532. return false;
  533. break;
  534.  
  535. case "m" :
  536. //$ans = $GMONGO->getAMLastStopped($tid);
  537. $ans = $GMONGO->getAMLastStopped_beforeTimestamp($tid, $ts);
  538. if ($ans == false) {
  539. $ans = $sinceBeginning;
  540. }
  541. $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  542. break;
  543.  
  544. default :
  545. return false;
  546. }
  547.  
  548. $obj = new emptyClass ();
  549. $obj->date = $ans [0] ['date'];
  550. $obj->time = $ans [0] ['time'];
  551. $obj->timestamp = $ans [0] ['timestamp'];
  552.  
  553. return $obj;
  554. }
  555.  
  556. public function getTrackerDuration_withoutIgnitionHistory($tid, $status, $ts) {
  557. global $GMONGO;
  558. //$sinceBeginning = 0;
  559. $sinceBeginning = array(array('timestamp' => 0));
  560.  
  561. switch ($status) {
  562. case "s" :
  563. //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
  564. $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp'=>array('$lte' => $ts), 'speed' => array('$gt' => 0), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  565. //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  566.  
  567. if ($ans == false)
  568. $ans = $sinceBeginning;
  569.  
  570. //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp'])),1);
  571. $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  572. break;
  573.  
  574. case "n" :
  575. case "g" :
  576. $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp'=>array('$lte' => $ts), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  577. if ($ans == false)
  578. return false;
  579. break;
  580.  
  581. case "m" :
  582. //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0),1);
  583. $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp'=>array('$lte' => $ts), 'speed' => 0, 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  584.  
  585. if ($ans == false)
  586. $ans = $sinceBeginning;
  587. $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  588. break;
  589.  
  590. default :
  591. return false;
  592. }
  593.  
  594. $obj = new emptyClass ();
  595. $obj->date = $ans [0] ['date'];
  596. $obj->time = $ans [0] ['time'];
  597. $obj->timestamp = $ans [0] ['timestamp'];
  598.  
  599. return $obj;
  600. }
  601.  
  602. // Returns duration for the tracker in stopped or nodata mode
  603. public function getTrackerDurationHistory($tid, $status, $ts) {
  604. if ($this->isIgnitionEnabled ( $tid ))
  605. return $this->getTrackerDuration_withIgnitionHistory ( $tid, $status, $ts );
  606. return $this->getTrackerDuration_withoutIgnitionHistory ( $tid, $status, $ts );
  607. }
  608.  
  609.  
  610.  
  611. public function getNearbyTrackerDataObject($tracker, $fetchRecords = true, $trec = false, $sortedReverse = false) {
  612. global $GMONGO;
  613.  
  614. $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
  615.  
  616. $tinfo = new trackerInfoRecord ();
  617. $tinfo->name = $tracker ['name'];
  618. $tinfo->fscode = $tracker ['type'];
  619. $tinfo->tid = $tracker ['trackerid'];
  620. $tinfo->simno = $tracker ['simno'];
  621. $tinfo->searchKeywords = $tracker ['searchKeywords'];
  622. $tinfo->imei = $tracker ['imei'];
  623. $tinfo->iconText = $tracker ['iconText'];
  624. $tinfo->licensePlate = $tracker ['licensePlate'];
  625. $tinfo->maxrpm = $tracker ['maxrpm'];
  626. $tinfo->hLocations = array ();
  627. $tinfo->cT = $this->getTrackerInfoField ( $tracker );
  628. $tinfo->trackingType = isset ( $tracker ['apptype'] ) ? $tracker ['apptype'] : (isset ( $this->trackerTypes [$tracker ['type']] ) ? $this->trackerTypes [$tracker ['type']] ['trackingType'] : 'VEHICLE');
  629. $tinfo->cStamp = time ();
  630. if (isset($tracker ['color']))
  631. $tinfo->color = $tracker ['color'];
  632. else
  633. $tinfo->color = '';
  634. if (isset($tracker ['regDate']))
  635. $tinfo->regDate = $tracker ['regDate'];
  636. else
  637. $tinfo->regDate = '';
  638. if (isset($tracker ['vehicleModel']))
  639. $tinfo->vehicleModel = $tracker ['vehicleModel'];
  640. else
  641. $tinfo->vehicleModel = '';
  642.  
  643. if ($fetchRecords == true) {
  644. //$this->dCache_validateCache ( $tracker ['trackerid'] );
  645. //$cTS = $_SESSION ['dCache'] [$tracker ['trackerid']][0];
  646.  
  647. //$trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array("timestamp" => array('$gte' => $cTS), 'latitude' => array('$exists' => 1, '$ne' => null)));
  648. //$trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array("timestamp" => array('$gte' => $cTS)));
  649. } else {
  650. if ($trec != false) {
  651. if ($sortedReverse == false)
  652. $trec = array_reverse ( $trec );
  653. //$_SESSION ['dCache'] [$tracker ['trackerid']][0] = $trec [0] ['timestamp'];
  654. //unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] );
  655. }
  656. }
  657.  
  658. if ($trec == false) {
  659. srand ();
  660. $tinfo->status = "n";
  661. $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status );
  662. $tinfo = removeNullFromObject ( $tinfo );
  663. return $tinfo;
  664. }
  665.  
  666. $trec_count = count ( $trec );
  667.  
  668. if ($trec_count > 2) {
  669. for($x = $trec_count - 2; $x > 0; $x --) {
  670. $n = new trackerRecord ();
  671. foreach ( $n as $k => $v )
  672. $n->{$k} = $trec [$x] [$k];
  673.  
  674. $fnsdate->setUTCDate ( $n->date, $n->time );
  675. $n->timeString = $fnsdate->getFormattedTimeString ();
  676. array_push ( $tinfo->hLocations, $n );
  677. }
  678. }
  679.  
  680. $fdate = new FNSDateTime($_SESSION['timezone']);
  681. $fdate->setTimestamp($trec[0]['timestamp']);
  682.  
  683. $tinfo->latitude = $trec [0] ['latitude'];
  684. $tinfo->longitude = $trec [0] ['longitude'];
  685. $tinfo->speed = $trec [0] ['speed'];
  686. $tinfo->direction = $trec [0] ['direction'];
  687. $tinfo->date = $fdate->UTCDateString;
  688. $tinfo->time = $fdate->UTCTime;
  689. $tinfo->timestamp = $trec [0] ['timestamp'];
  690.  
  691.  
  692. //$_SESSION ['dCache'] [$tinfo->tid] [0] = $trec[0]['timestamp'];
  693.  
  694. //$inputs = $trec;
  695. $inputs = $this->getInputs ( $tinfo->tid, false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
  696.  
  697. if ($inputs != false) {
  698. for($i = 1; $i <= 5; $i ++) {
  699. if (isset ( $inputs [0] ['fuel' . $i] ))
  700. $tinfo->{'fuel' . $i} = $inputs [0] ['fuel' . $i];
  701.  
  702. if (isset ( $inputs [0] ['temperature' . $i] ))
  703. $tinfo->{'temperature' . $i} = $inputs [0] ['temperature' . $i];
  704. }
  705.  
  706. if (isset ( $inputs ['0'] ['ibattery'] ))
  707. $tinfo->ibattery = $inputs ['0'] ['ibattery'];
  708.  
  709. $tinfo->IO = $inputs [0] ['IO'];
  710.  
  711. $tinfo->JStr = $inputs [0] ['misc'];
  712.  
  713. if (isset ( $tracker ['privatePublicUse'] ) && $tracker ['privatePublicUse'] == 1)
  714. $tinfo->privatePublic = $inputs [0] ['private'];
  715.  
  716. $tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
  717. if ($tinfo->odometer == false)
  718. $tinfo->odometer = null;
  719.  
  720. $tinfo->driver = $this->getDriverName ( $tinfo->tid );
  721. } else {
  722.  
  723. for($i = 1; $i <= 5; $i ++) {
  724. $tinfo->{'fuel' . $i} = null;
  725. $tinfo->{'temperature' . $i} = null;
  726. }
  727.  
  728. $tinfo->IO = null;
  729. $tinfo->odometer = null;
  730. $tinfo->privatePublic = 0;
  731. }
  732.  
  733. $tinfo->status = $this->getStatus ( $tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO );
  734.  
  735. /*$gmmtime = time ();
  736.  
  737. $dt = new datetimeStruct ();
  738. $dt->setTimeSeconds ( $time );
  739. $dt->setDate ( $date );
  740. $tmtime = gmmktime ( $dt->hour, $dt->minutes, $dt->seconds, $dt->month, $dt->day, $dt->year );*/
  741.  
  742. /*if (($gmmtime - $tmtime) > NON_WORKING_TRACKER_TIME) {
  743. return "n";
  744. } else*/ //{
  745. if ($tinfo->IO == false)
  746. $tinfo->status = "s";
  747. // strpos is always checked with the equality (===) operator
  748. else {
  749. if ($this->isIgnitionEnabled($tinfo->tid)) {
  750. if (strpos($inputs, "j") === false) $tinfo->status = "s";
  751. else if ($tinfo->speed > 0) $tinfo->status = "m";
  752. else $tinfo->status = "i";
  753. } else {
  754. if ($tinfo->speed > 0) $tinfo->status = "m";
  755. else $tinfo->status = "s";
  756. }
  757. }
  758. //}
  759.  
  760. if ($tinfo->status == 'm' || $tinfo->status == 'i' || $tinfo->status == 's') {
  761.  
  762. /*if ($rtype != 'historypositions') {
  763. $linput = $this->getInputs($tinfo->tid);
  764.  
  765. if ($linput != false) {
  766. //if (isset($trec[0]['latitude']) == false) {
  767. $ltimestamp = $linput [0] ['timestamp'];
  768. $ptimestamp = $tinfo->timestamp;
  769.  
  770. if (($ltimestamp - $ptimestamp) > NO_GPS_ICON_TIME) {
  771. $tinfo->status = 'g';
  772. $_SESSION ['dCache'] [$tracker ['trackerid']] [2] = true;
  773. }
  774. //}
  775. }
  776. }*/
  777. } else {
  778. //$_SESSION ['dCache'] [$tracker ['trackerid']] [5] = true;
  779. }
  780.  
  781. //To remove any previous data if last packet has ignition
  782. if ($tinfo->status == 'n' || $tinfo->status == 's'){
  783. $tinfo->hLocations = array();
  784. }
  785.  
  786. $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status, $tinfo->latitude );
  787.  
  788. $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
  789. $tinfo->dateString = $fnsdate->getFormattedString ();
  790. $tinfo->timeString = $fnsdate->getFormattedTimeString ();
  791.  
  792. //$tinfo->events = $this->getTrackersEvents ( $tinfo->tid, true );
  793.  
  794. $duration = $this->getTrackerDurationHistory ( $tinfo->tid, $tinfo->status, $tinfo->timestamp );
  795. if ($duration != false) {
  796. $fnsdate->setUTCDate ( $duration->date, $duration->time );
  797. $tinfo->durationStamp = $fnsdate->dateTime->getTimestamp ();
  798. } else {
  799. $tinfo->durationStamp = null;
  800. }
  801.  
  802. $tinfo->duration = $tinfo->timestamp - $duration->timestamp;
  803.  
  804. if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] ) == false) {
  805.  
  806. if (count ( $tinfo->hLocations ) > 0)
  807. $sObj = $tinfo->hLocations [0];
  808. else
  809. $sObj = $tinfo;
  810.  
  811. $fnsdate->setUTCDate ( $sObj->date, $sObj->time );
  812.  
  813. if ($tinfo->status == 'm' || $tinfo->status == 'i' || ($tinfo->status == 'g' && count($tinfo->hLocations) > 0)) {
  814. $tinfo->sTime = $fnsdate->getFormattedString ();
  815. $tinfo->sLatitude = $sObj->latitude;
  816. $tinfo->sLongitude = $sObj->longitude;
  817. }
  818.  
  819. $_SESSION ['dCache'] [$tracker ['trackerid']] [4] = true;
  820. }
  821.  
  822. return removeNullFromObject ( $tinfo );
  823. }
  824.  
  825.  
  826. public function fleet_getTrackersStats() {
  827. global $GMONGO;
  828.  
  829. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  830. $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) WHERE username=\"{$username}\"";
  831. $this->dbclass->execute_query ( $query );
  832. $answer = $this->dbclass->get_result_complete ();
  833.  
  834. if ($answer == false) {
  835. return false;
  836. }
  837.  
  838. $gmmtime = time ();
  839. $dt = new datetimeStruct ();
  840.  
  841. $tracker_count = count ( $answer );
  842. $returnAnswer = new emptyClass ();
  843.  
  844. $returnAnswer->workingCount = 0;
  845. $returnAnswer->stalledCount = 0;
  846. $returnAnswer->expiredCount = 0;
  847. $returnAnswer->expiredList = array ();
  848. $returnAnswer->totalCount = $tracker_count;
  849.  
  850. for($i = 0; $i < $tracker_count; $i ++) {
  851. if (isset ( $answer [$i] ['trackerExpiry'] ) && $answer [$i] ['trackerExpiry'] != NULL) {
  852. if (($gmmtime - $answer [$i] ['trackerExpiry']) > 0) {
  853. $returnAnswer->expiredCount ++;
  854. array_push ( $returnAnswer->expiredList, $answer [$i] ['name'] );
  855. continue;
  856. }
  857. }
  858.  
  859. $cans = $GMONGO -> getLastARecord($answer[$i]['trackerid']);
  860.  
  861. if ($cans != false) {
  862. //$dt->setTimeSeconds ( $cans [0] ['time'] );
  863. //$dt->setDate ( $cans [0] ['date'] );
  864. //$tmtime = gmmktime ( $dt->hour, $dt->minutes, $dt->seconds, $dt->month, $dt->day, $dt->year );
  865. $tmtime = $cans [0] ['timestamp'];
  866.  
  867. if (($gmmtime - $tmtime) > NON_WORKING_TRACKER_TIME)
  868. $returnAnswer->stalledCount ++;
  869. else
  870. $returnAnswer->workingCount ++;
  871. } else
  872. $returnAnswer->stalledCount ++;
  873. }
  874.  
  875. return $returnAnswer;
  876. } // function
  877. public function getTrackerFuelProfiles($tid) {
  878. $QUERY = "SELECT * from trackersFeatures where trackerid={$tid}";
  879. $this->dbclass->execute_query ( $QUERY );
  880. $enprofiles = $this->dbclass->get_result_complete ();
  881. $enprofiles = $enprofiles [0];
  882.  
  883. $rprofiles = array ();
  884.  
  885. for($i = 1; $i <= 5; $i ++) {
  886. $profile = false;
  887.  
  888. if ($enprofiles ['enFuelModel' . $i] == 1) {
  889. $pname = $this->dbclass->get_escape_string ( $enprofiles ['fuelModel' . $i] );
  890.  
  891. $QUERY = "SELECT * from fuelProfiles where name=\"{$pname}\"";
  892. $this->dbclass->execute_query ( $QUERY );
  893. $profile = $this->dbclass->get_result_complete ();
  894. }
  895. array_push ( $rprofiles, $profile );
  896. }
  897.  
  898. return $rprofiles;
  899. }
  900. public function getTrackerTemperatureProfiles($tid) {
  901. $QUERY = "SELECT * from trackersFeatures where trackerid={$tid}";
  902. $this->dbclass->execute_query ( $QUERY );
  903. $enprofiles = $this->dbclass->get_result_complete ();
  904. $enprofiles = $enprofiles [0];
  905.  
  906. $rprofiles = array ();
  907.  
  908. for($i = 1; $i <= 5; $i ++) {
  909.  
  910. $profile = false;
  911.  
  912. if ($enprofiles ['enTempModel' . $i] == 1) {
  913. $pname = $this->dbclass->get_escape_string ( $enprofiles ['tempModel' . $i] );
  914.  
  915. $QUERY = "SELECT * from temperatureProfiles where name=\"{$pname}\"";
  916. $this->dbclass->execute_query ( $QUERY );
  917. $profile = $this->dbclass->get_result_complete ();
  918. }
  919.  
  920. array_push ( $rprofiles, $profile );
  921. }
  922.  
  923. return $rprofiles;
  924. }
  925. public function getFuelFromProfile($profile, $fuel) {
  926.  
  927. if ($profile != false && $fuel === NULL)
  928. return 0; //New
  929.  
  930. if ($profile == false || $fuel === NULL)
  931. return null;
  932.  
  933. if ($profile [0] ['autoCompute'] == 1)
  934. return $fuel;
  935.  
  936. $reverse = false;
  937.  
  938. if ($profile [0] ['emptyTankVoltage'] > $profile [0] ['fullTankVoltage']) {
  939. $lowerReference = $profile [0] ['fullTankVoltage'];
  940. $upperReference = $profile [0] ['emptyTankVoltage'];
  941. $reverse = true;
  942. } else {
  943. $lowerReference = $profile [0] ['emptyTankVoltage'];
  944. $upperReference = $profile [0] ['fullTankVoltage'];
  945. }
  946.  
  947. if ($fuel < $lowerReference)
  948. $fuel = $lowerReference;
  949. else if ($fuel > $upperReference)
  950. $fuel = $upperReference;
  951.  
  952. if ($reverse)
  953. $fuel = $upperReference - $fuel;
  954.  
  955. $ref = $upperReference - $lowerReference;
  956.  
  957. if ($ref > 0)
  958. return floor ( ($fuel / ($upperReference - $lowerReference)) * 100 );
  959. else
  960. return 0;
  961. }
  962. public function getTemperatureFromProfile($profile, $temperature) {
  963. if ($profile != false && $temperature === NULL)
  964. return 0; //New
  965.  
  966. if ($profile == false || $temperature === NULL)
  967. return null;
  968.  
  969. if ($profile [0] ['autoCompute'] == 1)
  970. return $temperature;
  971.  
  972. $voltageDifference = $profile [0] ['voltageReference'] - $temperature;
  973.  
  974. if ($voltageDifference <= 0.00)
  975. $voltageDifference = $profile [0] ['voltageReference'];
  976.  
  977. $cResistance = ($profile [0] ['fixedResistance'] * $temperature) / ($voltageDifference);
  978.  
  979. if ($cResistance == 0)
  980. return $temperature;
  981.  
  982. $logvalue = log ( $profile [0] ['thermistorResistance'] / $cResistance );
  983.  
  984. $tComputed = (298.15 * $profile [0] ['BConstant'] / $logvalue / ($profile [0] ['BConstant'] / $logvalue - 298.15)) - 273.15;
  985.  
  986. if ($tComputed < $profile [0] ['lowerLimit'])
  987. $tComputed = $profile [0] ['lowerLimit'];
  988. else if ($tComputed > $profile [0] ['upperLimit'])
  989. $tComputed = $profile [0] ['upperLimit'];
  990.  
  991. return sprintf ( "%2.2f", $tComputed );
  992. }
  993.  
  994. public function getInputs($tid, $lastInput = true, $date = "", $time = 0, $fscode = "", $adjustMeter = false) {
  995. global $GMONGO;
  996. //$fdate = new FNSDateTime($_SESSION['timezone']);
  997. $fdate = new FNSDateTime('UTC');
  998. $fdate->setUTCDate($date, $time);
  999.  
  1000. if ($lastInput) {
  1001. $inputs = $this->getMAGLOBALSrecord($tid);
  1002. }else {
  1003. $inputs = $GMONGO->getAMRecord($tid, array('timestamp' => $fdate->dateTime->getTimestamp()),1);
  1004. }
  1005.  
  1006. if ($inputs != false) {
  1007. if ($fscode == "FS-65") {
  1008. // Fuel input has battery status
  1009. // 4.2 as Maximum battery charge voltage
  1010. // 3.5 as Minimum battery charge voltage
  1011. $minimumCharge = 3.5;
  1012. $maximumCharge = 4.2;
  1013. $delta = $maximumCharge - $minimumCharge;
  1014.  
  1015. $level = floor ( (($inputs [0] ['fuel1'] - $minimumCharge) * 100) / $delta ); // Current Level - Minimum charge
  1016.  
  1017. if ($level <= 0)
  1018. $level = 1;
  1019. if ($level > 100)
  1020. $level = 100;
  1021.  
  1022. $inputs ['0'] ['ibattery'] = $level;
  1023. } else if ($fscode == "FS-29") {
  1024. $inps = json_decode($inputs ['0'] ['misc'], true);
  1025. list($battery) = sscanf($inps['battery'], "%d");
  1026. $inputs[0] = array('ibattery' => $battery, 'misc'=> $inputs[0]['misc']);
  1027. } else {
  1028. $fprofiles = $this->getTrackerFuelProfiles ( $tid );
  1029. $tprofiles = $this->getTrackerTemperatureProfiles ( $tid );
  1030.  
  1031.  
  1032. for($i = 0; $i < 5; $i ++) {
  1033. if ($fprofiles [$i] != false) {
  1034. $inputs ['0'] ['fuel' . ($i + 1)] = $this->getFuelFromProfile ( $fprofiles [$i], $inputs ['0'] ['fuel' . ($i + 1)] );
  1035. } else {
  1036. unset ( $inputs ['0'] ['fuel' . ($i + 1)] );
  1037. }
  1038.  
  1039. if ($tprofiles [$i] !== false) {
  1040. $inputs ['0'] ['temperature' . ($i + 1)] = $this->getTemperatureFromProfile ( $tprofiles [$i], $inputs ['0'] ['temperature' . ($i + 1)] );
  1041. } else {
  1042. unset ( $inputs ['0'] ['temperature' . ($i + 1)] );
  1043. }
  1044. }
  1045. }
  1046. }
  1047.  
  1048. /*var_dump($inputs);
  1049. echo "\r\n";*/
  1050.  
  1051. return $inputs;
  1052. }
  1053. /*public function getStatus($tid, $date, $time, $speed, $inputs) {
  1054. // Makes Date and Time for non working computations
  1055. $gmmtime = time ();
  1056.  
  1057. $dt = new datetimeStruct ();
  1058. $dt->setTimeSeconds ( $time );
  1059. $dt->setDate ( $date );
  1060. $tmtime = gmmktime ( $dt->hour, $dt->minutes, $dt->seconds, $dt->month, $dt->day, $dt->year );
  1061.  
  1062. if (($gmmtime - $tmtime) > NON_WORKING_TRACKER_TIME) {
  1063. return "n";
  1064. } else {
  1065. if ($speed > 0)
  1066. return "m";
  1067. else {
  1068. if ($inputs == false)
  1069. return "s";
  1070.  
  1071. // strpos is always checked with the equality (===) operator
  1072. if ($this->isIgnitionEnabled ( $tid )) {
  1073. if (strpos ( $inputs, "j" ) === false)
  1074. return "s";
  1075. else
  1076. return "i";
  1077. }
  1078. return "s";
  1079. }
  1080. }
  1081. }*/
  1082.  
  1083.  
  1084.  
  1085. public function getStatus($tid, $date, $time, $speed, $inputs) {
  1086. // Makes Date and Time for non working computations
  1087. $gmmtime = time ();
  1088.  
  1089. $dt = new datetimeStruct ();
  1090. $dt->setTimeSeconds ( $time );
  1091. $dt->setDate ( $date );
  1092. $tmtime = gmmktime ( $dt->hour, $dt->minutes, $dt->seconds, $dt->month, $dt->day, $dt->year );
  1093.  
  1094. if (($gmmtime - $tmtime) > NON_WORKING_TRACKER_TIME) {
  1095. //echo "<br>date ".$date." time ".$time." speed ".$speed." tmtime ".$tmtime." gmtime ".$gmmtime;
  1096. return 'n';
  1097. } else {
  1098. if ($speed > 0)
  1099. return 'm';
  1100. else {
  1101. if ($inputs == false) {
  1102. return 's';
  1103. //return 'i';
  1104. }
  1105. // strpos is always checked with the equality (===) operator
  1106. if ($this->isIgnitionEnabled($tid)) {
  1107. if (strpos($inputs, 'j') === false) return 's';
  1108. else if ($speed > 0) return 'm';
  1109. else return 'i';
  1110. } else {
  1111. if ($speed > 0) return 'm';
  1112. else return 's';
  1113. }
  1114. }
  1115. }
  1116. }
  1117.  
  1118. public function getTrackerTypeList() {
  1119. $query = "SELECT * FROM trackerHW ORDER BY fscode";
  1120. $this->dbclass->execute_query ( $query );
  1121. $answer = $this->dbclass->get_result_complete ();
  1122. return $answer;
  1123. }
  1124. public function validateIMEI($imei) {
  1125. $data = array();
  1126. $query = "SELECT trackerid FROM trackers WHERE imei=\"$imei\"";
  1127. $this->dbclass->execute_query ( $query );
  1128. $answer = $this->dbclass->get_result_complete ();
  1129. $data ['tid'] = $answer [0] ['trackerid'];
  1130.  
  1131. if ($answer != false) {
  1132. $data ['code'] = EXISTS;
  1133. //return - 1;
  1134. return $data;
  1135. }
  1136.  
  1137. $data ['tid'] = false;
  1138. $data ['code'] = NOT_EXISTS;
  1139. //return 1;
  1140. return $data;
  1141. }
  1142. public function getIconIndex($status, $latitude = null, $timestamp = null) {
  1143. switch ($status) {
  1144. case 'm' :
  1145. if (isset($timestamp) && $timestamp != false){
  1146. $diff = time() - $timestamp;
  1147. if ($diff <= PACKET_TS_LL)
  1148. return 0;
  1149. elseif ($diff > PACKET_TS_LL && $diff <= PACKET_TS_UL)
  1150. return 6;
  1151. elseif ($diff > PACKET_TS_UL)
  1152. return 7;
  1153. return 0;
  1154. }
  1155. return 0;
  1156.  
  1157. case 's' :
  1158. return 1;
  1159.  
  1160. case 'i' :
  1161. return 2;
  1162.  
  1163. case 'n' :
  1164. if (isset($latitude) && $latitude && $latitude > -90 && $latitude < 90){
  1165. return 5;
  1166. }
  1167. return 3;
  1168.  
  1169. case 'g' :
  1170. return 4;
  1171. }
  1172. }
  1173.  
  1174. //private function getTrackerInfoField($tracker) {
  1175. public function getTrackerInfoField($tracker) {
  1176. if (isset ( $this->trackerTypes ) == false) {
  1177. $this->trackerTypes = array ();
  1178. $tl = $this->getTrackerTypeList ();
  1179.  
  1180. for($i = 0; $i < count ( $tl ); $i ++) {
  1181. $this->trackerTypes [$tl [$i] ['fscode']] = $tl [$i];
  1182. }
  1183. }
  1184.  
  1185. if ($tracker ['apptype'] == null || $tracker ['apptype'] == "") {
  1186. if (isset ( $this->trackerTypes [$tracker ['type']] ))
  1187. $type = $this->trackerTypes [$tracker ['type']] ['trackingType'];
  1188. else
  1189. $type = $tracker ['apptype'];
  1190. } else
  1191. $type = $tracker ['apptype'];
  1192.  
  1193. switch ($type) {
  1194. case 'VT' :
  1195. return $tracker ['licensePlate'];
  1196. case 'PT' :
  1197. return $tracker ['simno'];
  1198. case 'OT' :
  1199. return $tracker ['simno'];
  1200. case 'AT' :
  1201. return $tracker ['identificationNo'];
  1202. }
  1203. }
  1204.  
  1205.  
  1206. public function dCache_validateCache($tid) {
  1207. if (isset ( $_SESSION ['dCache'] ) == false) {
  1208. $_SESSION ['dCache'] = array ();
  1209. }
  1210.  
  1211. if (isset ( $_SESSION ['dCache'] [$tid] ) == false) {
  1212. $trec = $this->getAGLOBALSrecord($tid);
  1213.  
  1214. if ($trec != false) {
  1215. $_SESSION ['dCache'] [$tid] = array ();
  1216. $_SESSION ['dCache'] [$tid][0] = $trec [0] ['timestamp'];
  1217. } else {
  1218. $_SESSION ['dCache'] [$tid] = array ();
  1219. $_SESSION ['dCache'] [$tid] = 0;
  1220. }
  1221. }
  1222. }
  1223.  
  1224. public function getTrackerDataObject($tracker, $fetchRecords = true, $trec = false, $sortedReverse = false, $currentTrip = false) {
  1225. global $GMONGO;
  1226.  
  1227. $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
  1228.  
  1229. $tinfo = new trackerInfoRecord ();
  1230. $tinfo->name = $tracker ['name'];
  1231. $tinfo->fscode = $tracker ['type'];
  1232. $tinfo->tid = $tracker ['trackerid'];
  1233. $tinfo->simno = $tracker ['simno'];
  1234. $tinfo->searchKeywords = $tracker ['searchKeywords'];
  1235. $tinfo->imei = $tracker ['imei'];
  1236. $tinfo->iconText = $tracker ['iconText'];
  1237. $tinfo->licensePlate = $tracker ['licensePlate'];
  1238. $tinfo->maxrpm = $tracker ['maxrpm'];
  1239. $tinfo->hLocations = array ();
  1240. $tinfo->cT = $this->getTrackerInfoField ( $tracker );
  1241. $tinfo->trackingType = isset ( $tracker ['apptype'] ) ? $tracker ['apptype'] : (isset ( $this->trackerTypes [$tracker ['type']] ) ? $this->trackerTypes [$tracker ['type']] ['trackingType'] : 'VEHICLE');
  1242. $tinfo->cStamp = time ();
  1243.  
  1244. if ($fetchRecords == true) {
  1245. $this->dCache_validateCache ( $tracker ['trackerid'] );
  1246. $cTS = $_SESSION ['dCache'] [$tracker ['trackerid']][0];
  1247.  
  1248. $trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array("timestamp" => array('$gte' => $cTS), 'latitude' => array('$exists' => 1, '$ne' => null)));
  1249. //$trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array("timestamp" => array('$gte' => $cTS)));
  1250. } else {
  1251. if ($trec != false) {
  1252. if ($sortedReverse == false)
  1253. if ($sortedReverse == false)
  1254. $trec = array_reverse ( $trec );
  1255. $_SESSION ['dCache'] [$tracker ['trackerid']][0] = $trec [0] ['timestamp'];
  1256. unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] );
  1257. }
  1258. }
  1259.  
  1260. if (isset ( $_GET ['update'] ) && $_GET ['update'] == 1) {
  1261. if ($trec == false)
  1262. return false;
  1263.  
  1264. else if ($trec [0] ['timestamp'] == $_SESSION ['dCache'] [$tracker ['trackerid']][0]) {
  1265. //If no update is present
  1266. //Get packet with no location
  1267. //$linput = $GMONGO->getAMRecord_reverseSorted($tinfo->tid , array('latitude' => array('$exists' => 0)), 1);
  1268. $linput = $GMONGO->getLastAMRecord($tinfo->tid);
  1269. if ($linput == false) return false;
  1270.  
  1271. $ltimestamp = $linput[0]['timestamp'];
  1272. $ptimestamp = $trec[0]['timestamp'];
  1273.  
  1274. if ($ptimestamp > $ltimestamp) return false;
  1275.  
  1276. if ((time () - $ptimestamp) < NON_WORKING_TRACKER_TIME) {
  1277.  
  1278. if (($ltimestamp - $ptimestamp) < NO_GPS_ICON_TIME)
  1279. return false;
  1280. else if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] ))
  1281. return false;
  1282. } else if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] ))
  1283. return false;
  1284. } else {
  1285. if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] ))
  1286. unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] );
  1287.  
  1288. if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] ))
  1289. unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] );
  1290. }
  1291. }
  1292.  
  1293. if ($trec == false) {
  1294. srand ();
  1295. $tinfo->status = "n";
  1296. $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status );
  1297. $tinfo = removeNullFromObject ( $tinfo );
  1298. return $tinfo;
  1299. }
  1300.  
  1301. $trec_count = count ( $trec );
  1302.  
  1303. if ($trec_count > 2) {
  1304. for($x = $trec_count - 2; $x > 0; $x --) {
  1305. $n = new trackerRecord ();
  1306. foreach ( $n as $k => $v )
  1307. $n->{$k} = $trec [$x] [$k];
  1308.  
  1309. $fnsdate->setUTCDate ( $n->date, $n->time );
  1310. $n->timeString = $fnsdate->getFormattedTimeString ();
  1311. array_push ( $tinfo->hLocations, $n );
  1312. }
  1313. }
  1314.  
  1315. $fdate = new FNSDateTime($_SESSION['timezone']);
  1316. $fdate->setTimestamp($trec[0]['timestamp']);
  1317.  
  1318. $tinfo->latitude = $trec [0] ['latitude'];
  1319. $tinfo->longitude = $trec [0] ['longitude'];
  1320. $tinfo->speed = $trec [0] ['speed'];
  1321. $tinfo->direction = $trec [0] ['direction'];
  1322. $tinfo->date = $fdate->UTCDateString;
  1323. $tinfo->time = $fdate->UTCTime;
  1324. $tinfo->timestamp = $trec [0] ['timestamp'];
  1325.  
  1326.  
  1327. $_SESSION ['dCache'] [$tinfo->tid] [0] = $trec[0]['timestamp'];
  1328.  
  1329. //$inputs = $trec;
  1330. $inputs = $this->getInputs ( $tinfo->tid, false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
  1331.  
  1332. if ($inputs != false) {
  1333. for($i = 1; $i <= 5; $i ++) {
  1334. if (isset ( $inputs [0] ['fuel' . $i] ))
  1335. $tinfo->{'fuel' . $i} = $inputs [0] ['fuel' . $i];
  1336.  
  1337. if (isset ( $inputs [0] ['temperature' . $i] ))
  1338. $tinfo->{'temperature' . $i} = $inputs [0] ['temperature' . $i];
  1339. }
  1340.  
  1341. if (isset ( $inputs ['0'] ['ibattery'] ))
  1342. $tinfo->ibattery = $inputs ['0'] ['ibattery'];
  1343.  
  1344. $tinfo->IO = $inputs [0] ['IO'];
  1345.  
  1346. $tinfo->JStr = $inputs [0] ['misc'];
  1347.  
  1348. if (isset ( $tracker ['privatePublicUse'] ) && $tracker ['privatePublicUse'] == 1)
  1349. $tinfo->privatePublic = $inputs [0] ['private'];
  1350.  
  1351. $tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
  1352. if ($tinfo->odometer == false)
  1353. $tinfo->odometer = null;
  1354.  
  1355. $tinfo->driver = $this->getDriverName ( $tinfo->tid );
  1356. } else {
  1357.  
  1358. for($i = 1; $i <= 5; $i ++) {
  1359. $tinfo->{'fuel' . $i} = null;
  1360. $tinfo->{'temperature' . $i} = null;
  1361. }
  1362.  
  1363. $tinfo->IO = null;
  1364. $tinfo->odometer = null;
  1365. $tinfo->privatePublic = 0;
  1366. }
  1367.  
  1368. $tinfo->status = $this->getStatus ( $tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO );
  1369.  
  1370. if ($tinfo->status == 'm' || $tinfo->status == 'i' || $tinfo->status == 's') {
  1371.  
  1372.  
  1373. $linput = $this->getInputs($tinfo->tid);
  1374.  
  1375. if ($linput != false) {
  1376. //if (isset($trec[0]['latitude']) == false) {
  1377. $ltimestamp = $linput [0] ['timestamp'];
  1378. $ptimestamp = $tinfo->timestamp;
  1379.  
  1380. if (($ltimestamp - $ptimestamp) > NO_GPS_ICON_TIME) {
  1381. $tinfo->status = 'g';
  1382. $_SESSION ['dCache'] [$tracker ['trackerid']] [2] = true;
  1383. }
  1384. //}
  1385. }
  1386. } else {
  1387. $_SESSION ['dCache'] [$tracker ['trackerid']] [5] = true;
  1388. }
  1389.  
  1390. //To remove any previous data if last packet has ignition
  1391. if ($tinfo->status == 'n' || $tinfo->status == 's'){
  1392. $tinfo->hLocations = array();
  1393. }
  1394.  
  1395. $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status, $tinfo->latitude );
  1396.  
  1397. $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
  1398. $tinfo->dateString = $fnsdate->getFormattedString ();
  1399. $tinfo->timeString = $fnsdate->getFormattedTimeString ();
  1400.  
  1401. $tinfo->events = $this->getTrackersEvents ( $tinfo->tid, $currentTrip );
  1402.  
  1403. $duration = $this->getTrackerDuration ( $tinfo->tid, $tinfo->status );
  1404. if ($duration != false) {
  1405. $fnsdate->setUTCDate ( $duration->date, $duration->time );
  1406. $tinfo->durationStamp = $fnsdate->dateTime->getTimestamp ();
  1407. } else {
  1408. $tinfo->durationStamp = null;
  1409. }
  1410.  
  1411. if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] ) == false) {
  1412.  
  1413. if (count ( $tinfo->hLocations ) > 0)
  1414. $sObj = $tinfo->hLocations [0];
  1415. else
  1416. $sObj = $tinfo;
  1417.  
  1418. $fnsdate->setUTCDate ( $sObj->date, $sObj->time );
  1419.  
  1420. if ($tinfo->status == 'm' || $tinfo->status == 'i' || ($tinfo->status == 'g' && count($tinfo->hLocations) > 0)) {
  1421. $tinfo->sTime = $fnsdate->getFormattedString ();
  1422. $tinfo->sLatitude = $sObj->latitude;
  1423. $tinfo->sLongitude = $sObj->longitude;
  1424. }
  1425.  
  1426. $_SESSION ['dCache'] [$tracker ['trackerid']] [4] = true;
  1427. }
  1428.  
  1429. return removeNullFromObject ( $tinfo );
  1430. }
  1431.  
  1432.  
  1433. //Returns tracker data object
  1434. public function getTrackerDataObject_mongo ($tracker, $fetchRecords = true, $trec = false, $sortedReverse = false, $currentTrip = false) {
  1435. global $GMONGO;
  1436.  
  1437. $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
  1438.  
  1439. $tinfo = new trackerInfoRecord ();
  1440. $tinfo->name = $tracker ['name'];
  1441. $tinfo->fscode = $tracker ['type'];
  1442. $tinfo->tid = $tracker ['trackerid'];
  1443. $tinfo->simno = $tracker ['simno'];
  1444. $tinfo->searchKeywords = $tracker ['searchKeywords'];
  1445. $tinfo->imei = $tracker ['imei'];
  1446. $tinfo->trackerSerial = $tracker ['trackerSerial'];
  1447. $tinfo->iconText = $tracker ['iconText'];
  1448. $tinfo->licensePlate = $tracker ['licensePlate'];
  1449. $tinfo->maxrpm = $tracker ['maxrpm'];
  1450. $tinfo->hLocations = array ();
  1451. $tinfo->cT = $this->getTrackerInfoField ( $tracker );
  1452. $tinfo->trackingType = isset ( $tracker ['apptype'] ) ? $tracker ['apptype'] : (isset ( $this->trackerTypes [$tracker ['type']] ) ? $this->trackerTypes [$tracker ['type']] ['trackingType'] : 'VEHICLE');
  1453. $tinfo->cStamp = time ();
  1454. //$tinfo->iconid = 1;
  1455. $tinfo->iconid = $tracker['iconid'];
  1456. /*if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
  1457. $tinfo->iconid = 'default';*/
  1458. if (isset($tracker['groups']))
  1459. $tinfo->groups = $tracker['groups'];
  1460.  
  1461. if ($fetchRecords == true) {
  1462.  
  1463. $this->dCache_validateCache($tracker ['trackerid']);
  1464.  
  1465. $cTS = (int)$_SESSION ['dCache'] [$tracker ['trackerid']][0];
  1466.  
  1467. if ($cTS == 0 || $cTS == null)
  1468. $cTS = (time() - (48 * 3600));
  1469.  
  1470. $trec = $GMONGO->getAMRecord_reverseSorted($tracker['trackerid'], array("timestamp" => array('$gte' => $cTS), 'latitude' => array('$exists' => 1, '$ne' => null)));
  1471.  
  1472. } else {
  1473. if ($trec != false) {
  1474. if ($sortedReverse == false)
  1475. $trec = array_reverse ( $trec );
  1476. $_SESSION ['dCache'] [$tracker ['trackerid']][0] = $trec [0] ['timestamp'];
  1477. if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [4])) //Check
  1478. unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [4]);
  1479. }
  1480. }
  1481.  
  1482. if (isset ($_GET ['update']) && $_GET ['update'] == 1) {
  1483. if ($trec == false)
  1484. return false;
  1485.  
  1486. else if ($trec [0] ['timestamp'] == $_SESSION ['dCache'] [$tracker ['trackerid']][0]) {
  1487. //If no update is present
  1488. //Get packet with no location
  1489. $linput = $GMONGO->getLastAMRecord($tinfo->tid);
  1490. if ($linput == false) return false;
  1491.  
  1492. $ltimestamp = $linput[0]['timestamp'];
  1493. $ptimestamp = $trec[0]['timestamp'];
  1494.  
  1495. if ($ptimestamp > $ltimestamp) return false;
  1496.  
  1497. if ((time() - $ptimestamp) < NON_WORKING_TRACKER_TIME) {
  1498.  
  1499. if (($ltimestamp - $ptimestamp) < NO_GPS_ICON_TIME)
  1500. return false;
  1501. else if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]))
  1502. return false;
  1503. } else if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]))
  1504. return false;
  1505. } else {
  1506. if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]))
  1507. unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [2]);
  1508.  
  1509. if (isset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]))
  1510. unset ($_SESSION ['dCache'] [$tracker ['trackerid']] [5]);
  1511. }
  1512. }
  1513.  
  1514. if ($trec == false) {
  1515. srand();
  1516. $tinfo->status = 'n';
  1517. $tinfo->iconIndex = $this->getIconIndex($tinfo->status);
  1518. $tinfo = removeNullFromObject($tinfo);
  1519. return $tinfo;
  1520. }
  1521.  
  1522. $trec_count = count($trec);
  1523.  
  1524. if ($trec_count > 2) {
  1525. for ($x = $trec_count - 2; $x > 0; $x--) {
  1526. $n = new trackerRecord ();
  1527. foreach ($n as $k => $v)
  1528. $n->{$k} = $trec [$x] [$k];
  1529.  
  1530. $fnsdate->setUTCDate($n->date, $n->time);
  1531. $n->timeString = $fnsdate->getFormattedTimeString();
  1532. array_push($tinfo->hLocations, $n);
  1533. }
  1534. }
  1535.  
  1536. $fdate = new FNSDateTime($_SESSION['timezone']);
  1537. $fdate->setTimestamp($trec[0]['timestamp']);
  1538.  
  1539. $tinfo->latitude = $trec [0] ['latitude'];
  1540. $tinfo->longitude = $trec [0] ['longitude'];
  1541. $tinfo->speed = $trec [0] ['speed'];
  1542. $tinfo->direction = $trec [0] ['direction'];
  1543. //$tinfo->date = $fdate->UTCDateString;
  1544. //$tinfo->time = $fdate->UTCTime;
  1545. $tinfo->date = $trec[0]['date'];
  1546. $tinfo->time = $trec [0] ['time'];
  1547.  
  1548. $maglobals = $this->getMAGLOBALSrecord($tinfo->tid);
  1549. //$tinfo->timestamp = $trec [0] ['timestamp'];
  1550. $tinfo->timestamp = (int)$maglobals [0] ['timestamp'];
  1551. //echo "\r\ntimestamp ".$tinfo->timestamp;
  1552. //var_dump($maglobals);
  1553.  
  1554. $_SESSION ['dCache'] [$tinfo->tid] [0] = $trec[0]['timestamp'];
  1555.  
  1556.  
  1557. //$inputs = $trec;
  1558. $inputs = $this->getInputs ( $tinfo->tid, false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
  1559.  
  1560. //Inputs start
  1561. if ($inputs != false) {
  1562. for($i = 1; $i <= 5; $i ++) {
  1563. if (isset ( $inputs [0] ['fuel' . $i] ))
  1564. $tinfo->{'fuel' . $i} = $inputs [0] ['fuel' . $i];
  1565.  
  1566. if (isset ( $inputs [0] ['temperature' . $i] ))
  1567. $tinfo->{'temperature' . $i} = $inputs [0] ['temperature' . $i];
  1568. }
  1569.  
  1570. if (isset ( $inputs ['0'] ['ibattery'] ))
  1571. $tinfo->ibattery = $inputs ['0'] ['ibattery'];
  1572.  
  1573. $tinfo->IO = $inputs [0] ['IO'];
  1574.  
  1575. $tinfo->JStr = $inputs [0] ['misc'];
  1576.  
  1577. if (isset ( $tracker ['privatePublicUse'] ) && $tracker ['privatePublicUse'] == 1)
  1578. $tinfo->privatePublic = $inputs [0] ['private'];
  1579.  
  1580. //if ($currentTrip){
  1581. if ($currentTrip || (isset ( $_GET ['update'] ) && $_GET ['update'] == 1)){
  1582. $tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
  1583. $tinfo->driver = $this->getDriverName ( $tinfo->tid );
  1584. }
  1585. //$tinfo->odometer = $this->getOdometer ( $tinfo->tid, $tinfo->date, $tinfo->time );
  1586. if ($tinfo->odometer == false)
  1587. $tinfo->odometer = null;
  1588.  
  1589. //$tinfo->driver = $this->getDriverName ( $tinfo->tid );
  1590. } else {
  1591.  
  1592. for($i = 1; $i <= 5; $i ++) {
  1593. $tinfo->{'fuel' . $i} = null;
  1594. $tinfo->{'temperature' . $i} = null;
  1595. }
  1596.  
  1597. $tinfo->IO = null;
  1598. $tinfo->odometer = null;
  1599. $tinfo->privatePublic = 0;
  1600. } //Inputs end
  1601.  
  1602. $tinfo->status = $this->getStatus($tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO);
  1603.  
  1604. if ($tinfo->status == 'm' || $tinfo->status == 'i' || $tinfo->status == 's') {
  1605.  
  1606. $linput = $this->getInputs($tinfo->tid);
  1607.  
  1608. if ($linput != false) {
  1609. //if (isset($trec[0]['latitude']) == false) {
  1610. $ltimestamp = $linput [0] ['timestamp'];
  1611. $aglobals = $trec = $this->getAGLOBALSrecord($tinfo->tid);
  1612. //$ptimestamp = $tinfo->timestamp;
  1613. $ptimestamp = $aglobals[0]['timestamp'];
  1614.  
  1615. if (($ltimestamp - $ptimestamp) > NO_GPS_ICON_TIME) {
  1616. //////////////////////////////////////////////////////////////echo "ltimestamp ".$ltimestamp, " ptimestamp ".$ptimestamp."\r\n";
  1617. $tinfo->status = 'g';
  1618. /////////////////////////////////////var_dump($tinfo);
  1619. /////////////////////////////////die;
  1620. $_SESSION ['dCache'] [$tracker ['trackerid']] [2] = true;
  1621. }
  1622. //}
  1623. }
  1624. } else {
  1625. $_SESSION ['dCache'] [$tracker ['trackerid']] [5] = true;
  1626. }
  1627.  
  1628. //To remove any previous data if last packet has ignition
  1629. if (($tinfo->status == 'n' || $tinfo->status == 's') && $currentTrip) {
  1630. $tinfo->hLocations = array();
  1631. }
  1632.  
  1633. $tinfo->iconIndex = $this->getIconIndex($tinfo->status, $tinfo->latitude, $tinfo->timestamp);
  1634.  
  1635. $fnsdate->setUTCDate($tinfo->date, $tinfo->time);
  1636. $tinfo->dateString = $fnsdate->getFormattedString();
  1637. $tinfo->timeString = $fnsdate->getFormattedTimeString();
  1638.  
  1639.  
  1640. $tinfo->events = $this->getTrackersEvents($tinfo->tid, $currentTrip);
  1641.  
  1642.  
  1643. $duration = $this->getTrackerDuration ( $tinfo->tid, $tinfo->status );
  1644.  
  1645. if ($duration != false) {
  1646. $fnsdate->setUTCDate ( $duration->date, $duration->time );
  1647. $tinfo->durationStamp = $fnsdate->dateTime->getTimestamp ();
  1648. } else {
  1649. $tinfo->durationStamp = null;
  1650. }
  1651.  
  1652. if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [4] ) == false) {
  1653.  
  1654. if (count ( $tinfo->hLocations ) > 0)
  1655. $sObj = $tinfo->hLocations [0];
  1656. else
  1657. $sObj = $tinfo;
  1658.  
  1659. $fnsdate->setUTCDate ( $sObj->date, $sObj->time );
  1660.  
  1661. if ($currentTrip) {
  1662. if ($tinfo->status == 'm' || $tinfo->status == 'i' || ($tinfo->status == 'g' && count($tinfo->hLocations) > 0)) {
  1663. $tinfo->sTime = $fnsdate->getFormattedString ();
  1664. $tinfo->sLatitude = $sObj->latitude;
  1665. $tinfo->sLongitude = $sObj->longitude;
  1666. }
  1667. } else {
  1668. $tinfo->sTime = $fnsdate->getFormattedString ();
  1669. $tinfo->sLatitude = $sObj->latitude;
  1670. $tinfo->sLongitude = $sObj->longitude;
  1671. }
  1672.  
  1673. $_SESSION ['dCache'] [$tracker ['trackerid']] [4] = true;
  1674.  
  1675. }
  1676.  
  1677. return removeNullFromObject ( $tinfo );
  1678. }
  1679.  
  1680. public function getMAGLOBALSrecord($tid){
  1681. $query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$tid."'";
  1682. $this->dbclass->execute_query($query);
  1683. return $this->dbclass->get_result_complete();
  1684. }
  1685.  
  1686. public function getAGLOBALSrecord($tid){
  1687. $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$tid."'";
  1688. $this->dbclass->execute_query($query);
  1689. return $this->dbclass->get_result_complete();
  1690. }
  1691.  
  1692. public function getTrackerDataObject_new ($tracker, $fetchRecords = false, $trec = false, $sortedReverse = false, $currentTrip = false) {
  1693. global $GMONGO;
  1694.  
  1695. $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
  1696.  
  1697. $tinfo = new trackerInfoRecord ();
  1698. $tinfo->name = $tracker ['name'];
  1699. $tinfo->fscode = $tracker ['type'];
  1700. $tinfo->tid = $tracker ['trackerid'];
  1701. $tinfo->simno = $tracker ['simno'];
  1702. $tinfo->searchKeywords = $tracker ['searchKeywords'];
  1703. $tinfo->imei = $tracker ['imei'];
  1704. $tinfo->trackerSerial = $tracker ['trackerSerial'];
  1705. $tinfo->iconText = $tracker ['iconText'];
  1706. $tinfo->licensePlate = $tracker ['licensePlate'];
  1707. $tinfo->maxrpm = $tracker ['maxrpm'];
  1708. $tinfo->hLocations = array ();
  1709. $tinfo->cT = $this->getTrackerInfoField ( $tracker );
  1710. $tinfo->trackingType = isset ( $tracker ['apptype'] ) ? $tracker ['apptype'] : (isset ( $this->trackerTypes [$tracker ['type']] ) ? $this->trackerTypes [$tracker ['type']] ['trackingType'] : 'VEHICLE');
  1711. $tinfo->cStamp = time ();
  1712. $tinfo->iconid = $tracker['iconid'];
  1713. /*$tinfo->iconid = 1;
  1714. if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
  1715. $tinfo->iconid = 'default';
  1716. */
  1717. if (isset($tracker['users']))
  1718. $tinfo->users = $tracker['users'];
  1719.  
  1720. if (isset($tracker['groups']))
  1721. $tinfo->groups = $tracker['groups'];
  1722.  
  1723. $this->dCache_validateCache ( $tracker ['trackerid'] );
  1724. $cTS = $_SESSION ['dCache'] [$tracker ['trackerid']][0];
  1725.  
  1726. $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$tracker['trackerid']."' AND timestamp >= $cTS";
  1727. $this->dbclass->execute_query($query);
  1728. $result = $this->dbclass->get_result_complete();
  1729. if (!$result) {
  1730. $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$tracker['trackerid']."'";
  1731. $this->dbclass->execute_query($query);
  1732. $result = $this->dbclass->get_result_complete();
  1733. }
  1734. $trec = $result;
  1735.  
  1736. /*if (!$result) {
  1737. echo $query;
  1738. var_dump($result);
  1739. die;
  1740. }*/
  1741. //var_dump($result);
  1742. //die;
  1743.  
  1744. if (isset ( $_GET ['update'] ) && $_GET ['update'] == 1) {
  1745. if ($trec == false)
  1746. return false;
  1747. else if ($trec [0] ['timestamp'] == $_SESSION ['dCache'] [$tracker ['trackerid']][0]) {
  1748. //If no update is present
  1749. //Get packet with no location
  1750. $linput = $this->getMAGLOBALSrecord($tinfo->tid);
  1751. if ($linput == false) return false;
  1752.  
  1753. $ltimestamp = $linput[0]['timestamp'];
  1754. $ptimestamp = $trec[0]['timestamp'];
  1755.  
  1756. if ($ptimestamp > $ltimestamp) return false;
  1757.  
  1758. if ((time () - $ptimestamp) < NON_WORKING_TRACKER_TIME) {
  1759.  
  1760. if (($ltimestamp - $ptimestamp) < NO_GPS_ICON_TIME)
  1761. return false;
  1762. else if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] ))
  1763. return false;
  1764. } else if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] ))
  1765. return false;
  1766. } else {
  1767. if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] ))
  1768. unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [2] );
  1769.  
  1770. if (isset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] ))
  1771. unset ( $_SESSION ['dCache'] [$tracker ['trackerid']] [5] );
  1772. }
  1773. }
  1774.  
  1775. if ($trec == false) {
  1776. srand ();
  1777. $tinfo->status = "n";
  1778. $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status);
  1779. $tinfo = removeNullFromObject ( $tinfo );
  1780. return $tinfo;
  1781. }
  1782.  
  1783.  
  1784. $fdate = new FNSDateTime($_SESSION['timezone']);
  1785. $fdate->setTimestamp($trec[0]['timestamp']);
  1786.  
  1787. $tinfo->latitude = $trec [0] ['latitude'];
  1788. $tinfo->longitude = $trec [0] ['longitude'];
  1789. $tinfo->speed = $trec [0] ['speed'];
  1790. $tinfo->direction = $trec [0] ['direction'];
  1791. $tinfo->date = $fdate->UTCDateString;
  1792. $tinfo->time = $fdate->UTCTime;
  1793. $tinfo->timestamp = $trec [0] ['timestamp'];
  1794.  
  1795.  
  1796. $_SESSION ['dCache'] [$tinfo->tid] [0] = $trec[0]['timestamp'];
  1797.  
  1798. //$inputs = $trec;
  1799. //$inputs = false; $this->getInputs ( $tinfo->tid ); // , false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
  1800. //$inputs = $this->getInputs ( $tinfo->tid ); // , false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
  1801. $inputs = false;
  1802.  
  1803. //Inputs start
  1804. if ($inputs != false) {
  1805. for($i = 1; $i <= 5; $i ++) {
  1806. if (isset ( $inputs [0] ['fuel' . $i] ))
  1807. $tinfo->{'fuel' . $i} = $inputs [0] ['fuel' . $i];
  1808.  
  1809. if (isset ( $inputs [0] ['temperature' . $i] ))
  1810. $tinfo->{'temperature' . $i} = $inputs [0] ['temperature' . $i];
  1811. }
  1812.  
  1813. if (isset ( $inputs ['0'] ['ibattery'] ))
  1814. $tinfo->ibattery = $inputs ['0'] ['ibattery'];
  1815.  
  1816. $tinfo->IO = $inputs [0] ['IO'];
  1817.  
  1818. $tinfo->JStr = $inputs [0] ['misc'];
  1819.  
  1820. if (isset ( $tracker ['privatePublicUse'] ) && $tracker ['privatePublicUse'] == 1)
  1821. $tinfo->privatePublic = $inputs [0] ['private'];
  1822.  
  1823. $tinfo->odometer = null;
  1824.  
  1825. } else {
  1826.  
  1827. for($i = 1; $i <= 5; $i ++) {
  1828. $tinfo->{'fuel' . $i} = null;
  1829. $tinfo->{'temperature' . $i} = null;
  1830. }
  1831.  
  1832. $tinfo->IO = null;
  1833. $tinfo->odometer = null;
  1834. $tinfo->privatePublic = 0;
  1835. } //Inputs end
  1836.  
  1837. $tinfo->IO = $trec[0]['IO'];
  1838.  
  1839. $tinfo->status = $this->getStatus ( $tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO );
  1840.  
  1841. if ($tinfo->status == 'm' || $tinfo->status == 'i' || $tinfo->status == 's') {
  1842.  
  1843. $linput = $this->getMAGLOBALSrecord($tinfo->tid);
  1844.  
  1845. if ($linput != false) {
  1846. $ltimestamp = $linput [0] ['timestamp'];
  1847. $ptimestamp = $tinfo->timestamp;
  1848.  
  1849. if (($ltimestamp - $ptimestamp) > NO_GPS_ICON_TIME) {
  1850. $tinfo->status = 'g';
  1851. $_SESSION ['dCache'] [$tracker ['trackerid']] [2] = true;
  1852. }
  1853. }
  1854. } else {
  1855. $_SESSION ['dCache'] [$tracker ['trackerid']] [5] = true;
  1856. }
  1857.  
  1858.  
  1859. $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status, $tinfo->latitude, $tinfo->timestamp );
  1860.  
  1861. $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
  1862. $tinfo->dateString = $fnsdate->getFormattedString ();
  1863. $tinfo->timeString = $fnsdate->getFormattedTimeString ();
  1864.  
  1865. //$tinfo->events = $this->getTrackersEvents ( $tinfo->tid, $currentTrip );
  1866.  
  1867. /*$duration = $this->getTrackerDuration ( $tinfo->tid, $tinfo->status );
  1868.  
  1869. if ($duration != false) {
  1870. $fnsdate->setUTCDate ( $duration->date, $duration->time );
  1871. $tinfo->durationStamp = $fnsdate->dateTime->getTimestamp ();
  1872. } else {
  1873. $tinfo->durationStamp = null;
  1874. }*/
  1875. $tinfo->durationStamp = null;
  1876.  
  1877. return removeNullFromObject ( $tinfo );
  1878. }
  1879.  
  1880.  
  1881. public function getReportDebuggerTrackers ($tracker, $fetchRecords = true, $trec = false, $sortedReverse = false, $currentTrip = false) {
  1882.  
  1883. $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
  1884.  
  1885. $tinfo = new trackerInfoRecord ();
  1886. $tinfo->name = $tracker ['name'];
  1887. $tinfo->fscode = $tracker ['type'];
  1888. $tinfo->tid = $tracker ['trackerid'];
  1889. $tinfo->simno = $tracker ['simno'];
  1890. $tinfo->searchKeywords = $tracker ['searchKeywords'];
  1891. $tinfo->imei = $tracker ['imei'];
  1892. $tinfo->trackerSerial = $tracker ['trackerSerial'];
  1893. $tinfo->iconText = $tracker ['iconText'];
  1894. $tinfo->licensePlate = $tracker ['licensePlate'];
  1895.  
  1896. if (isset($tracker['groups']))
  1897. $tinfo->groups = $tracker['groups'];
  1898.  
  1899. $query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$tracker['trackerid']."'";
  1900. $this->dbclass->execute_query ( $query );
  1901. $trec = $this->dbclass->get_result_complete ();
  1902.  
  1903. //$trec = $GMONGO->getLastARecord($tracker['trackerid']);
  1904.  
  1905. if ($trec == false) {
  1906. srand ();
  1907. $tinfo->status = "n";
  1908. $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status);
  1909. $tinfo = removeNullFromObject ( $tinfo );
  1910. return $tinfo;
  1911. }
  1912.  
  1913. if ($trec[0]['latitude'] == NULL || $trec[0]['longitude'] == NULL) {
  1914. $tinfo->status = 'g';
  1915. } else {
  1916. $tinfo->status = $this->getStatus ( $tinfo->tid, $trec[0]['date'], $trec[0]['time'], $trec[0]['speed'], $trec[0]['IO'] );
  1917. }
  1918.  
  1919. $tinfo->iconIndex = $this->getIconIndex ( $tinfo->status, $tinfo->latitude, $tinfo->timestamp );
  1920.  
  1921. return removeNullFromObject ( $tinfo );
  1922. }
  1923.  
  1924. public function getReportTrackers () {
  1925. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  1926.  
  1927. if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
  1928. $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username = '".$_SESSION['username']."'";
  1929. } elseif ($_SESSION['accounttype'] == USERTYPE_FLEET) {
  1930. $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
  1931. }
  1932. $this->dbclass->execute_query ( $query );
  1933. $trackers = $this->dbclass->get_result_complete ();
  1934.  
  1935. if ($_SESSION['accounttype'] == USERTYPE_FLEET)
  1936. $trackers = $this->filterExpiredTrackers ( $trackers );
  1937.  
  1938. $trackersList = array ();
  1939.  
  1940. if ($trackers == false)
  1941. return $trackersList;
  1942.  
  1943. $tracker_count = count ( $trackers );
  1944.  
  1945. if ($tracker_count == 0)
  1946. return $trackersList;
  1947.  
  1948. for($b = 0; $b < $tracker_count; $b ++) {
  1949.  
  1950. $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$trackers [$b]['trackerid']}'";
  1951. $this->dbclass->execute_query($query);
  1952. $groups = $this->dbclass->get_result_complete();
  1953.  
  1954. if ($groups != false) {
  1955. $gid = array_map(function ($a) {
  1956. return $a['groupName'];
  1957. }, $groups);
  1958. $trackers [$b]['groups'] = implode(',', $gid);
  1959. }
  1960.  
  1961. $tinfo = $this->getReportDebuggerTrackers($trackers [$b] );
  1962. if ($tinfo != false)
  1963. array_push ( $trackersList, $tinfo );
  1964. }
  1965. return $trackersList;
  1966. }
  1967.  
  1968. public function getTrackerPosition($trackerid) {
  1969. $username = $this->dbclass->get_escape_string($_SESSION['username']);
  1970. //$query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username = '".$username."'";
  1971. $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE trackerid = '".$trackerid."'";
  1972. $this->dbclass->execute_query ( $query );
  1973. $trackers = $this->dbclass->get_result_complete ();
  1974.  
  1975. $trackersList = array ();
  1976.  
  1977. if ($trackers == false)
  1978. return false;
  1979.  
  1980. //foreach ($trackers as $t) {
  1981. //if (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid'] )
  1982. // $tinfo = $this->getTrackerDataObject_mongo ( $t );
  1983. //else
  1984. // $tinfo = $this->getTrackerDataObject_new ( $t );
  1985. $tinfo = $this->getTrackerDataObject_new ( $trackers[0] );
  1986.  
  1987. //if ($tinfo != false) array_push ( $trackersList, $tinfo );
  1988. if ($tinfo != false) return $tinfo;
  1989.  
  1990. return false;
  1991. //}
  1992. /*$totalTrackers = count($trackersList);
  1993. if ($totalTrackers) {
  1994. $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'admin');
  1995. }*/
  1996.  
  1997. //return $trackersList;
  1998. }
  1999.  
  2000. /* For Maliatec Medco */
  2001. public function getTrackerLastLatLng ($tid) {
  2002. global $GMONGO;
  2003. $trec = $GMONGO->getLastARecord($tid);
  2004. //var_dump($trec);
  2005. //die('check');
  2006. return $trec;
  2007. }
  2008.  
  2009. public function getTrackerInformation($tid) {
  2010. $query = "SELECT * FROM trackers inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE trackerid=\"{$tid}\"";
  2011. $this->dbclass->execute_query ( $query );
  2012. return $this->dbclass->get_result_complete ();
  2013. }
  2014.  
  2015. public function getDebuggerTrackers() {
  2016. $username = $this->dbclass->get_escape_string($_SESSION['username']);
  2017. $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username = '".$username."'";
  2018. $this->dbclass->execute_query ( $query );
  2019. $trackers = $this->dbclass->get_result_complete ();
  2020.  
  2021. $trackersList = array ();
  2022.  
  2023. if ($trackers == false)
  2024. return $trackersList;
  2025.  
  2026.  
  2027. foreach ($trackers as $t) {
  2028. //session_start();
  2029.  
  2030. if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR && !isset($_GET['update'])) {
  2031. $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$t['trackerid']}\"";
  2032. $this->dbclass->execute_query ( $query );
  2033. $users = $this->dbclass->get_result_complete();
  2034.  
  2035. if ($users != false) {
  2036. $arr = array_map(function($a){ return $a['username']; }, $users);
  2037. $t ['users'] = implode(",", $arr);
  2038. }
  2039. }
  2040.  
  2041. $iconid = $this->getTrackerIconid($t['trackerid']);
  2042. $t['iconid'] = $iconid[0]['iconid'];
  2043.  
  2044. if (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid'] )
  2045. $tinfo = $this->getTrackerDataObject_mongo ( $t );
  2046. else
  2047. $tinfo = $this->getTrackerDataObject_new ( $t );
  2048. //session_write_close();
  2049.  
  2050. if ($tinfo != false) array_push ( $trackersList, $tinfo );
  2051. //usleep(250000);
  2052. }
  2053.  
  2054. $totalTrackers = count($trackersList);
  2055. if ($totalTrackers) {
  2056. $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'admin');
  2057. }
  2058.  
  2059. return $trackersList;
  2060. }
  2061.  
  2062. /*public function getDebuggerTrackers() {
  2063. global $GDATABASE;
  2064.  
  2065. $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers USING(trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username = '".$_SESSION['username']."'";
  2066. //$query = "SELECT * FROM trackers inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid)";
  2067. $this->dbclass->execute_query ( $query );
  2068. $trackers = $this->dbclass->get_result_complete ();
  2069.  
  2070. $trackersList = array ();
  2071.  
  2072. if ($trackers == false)
  2073. return $trackersList;
  2074.  
  2075. $tracker_count = count ( $trackers );
  2076.  
  2077. $gm = new FNSGearman();
  2078.  
  2079. for($b = 0; $b < $tracker_count; $b ++) {
  2080. $dCache = $_SESSION['dCache'][$trackers[$b]['trackerid']];
  2081. $eCache = $_SESSION['eCache'][$trackers[$b]['trackerid']];
  2082. $arguments = array('trackers' => $trackers [$b], 'session' => $_SESSION, 'dCache' => $dCache, 'eCache' => $eCache);
  2083. //print_r($arguments);
  2084. //echo "ADDING TASK FOR TRACKER ID ".$trackers[$b]['trackerid']."\r\n";
  2085. $gm->addTask('gtdom', json_encode($arguments), null,$trackers[$b]['trackerid']);
  2086.  
  2087.  
  2088.  
  2089. //$tinfo = $this->getTrackerDataObject_mongo ( $trackers [$b] );
  2090. //if ($tinfo != false)
  2091. // array_push ( $trackersList, $tinfo );
  2092. }
  2093. $gm->runTasks();
  2094.  
  2095. foreach ( FNSGearman::$results as $k => $v) {
  2096. $row = json_decode($v, true);
  2097.  
  2098. //var_dump($row['tinfo']);
  2099. /*
  2100. if (is_array($row['tinfo']))
  2101. array_push ( $trackersList, $row ['tinfo'] );
  2102.  
  2103. if (is_array($row['session']))
  2104. $_SESSION = $row ['session'];*/
  2105.  
  2106. ///////////////////////////////array_push ( $trackersList, $row ['tinfo']);
  2107.  
  2108.  
  2109. //print_r($row);
  2110.  
  2111. //$_SESSION = $v['session'];
  2112. //$tname = $GDATABASE -> getTrackerName ( $k ) [0] ['name'];
  2113. //print_r($v[]);
  2114.  
  2115. //foreach ($row as $l => $m) {
  2116. //$data = json_decode($v, true);
  2117. //var_dump($data);
  2118.  
  2119. /*comment $fdate = new FNSDateTime ( $_SESSION['timezone'] );
  2120. $fdate->setLocalTimestamp ( $row [$l] ['td'] ['ts'] );
  2121. $da [$i] ['date'] = $fdate ->dateTime -> format ( 'd-M' );
  2122. $da [$i] ['distance'] = $row [$l] ['td'] ['d'];
  2123. if ($da [$i] ['distance'] > 0) {
  2124. $distance = $da [$i] ['distance'] * 0.621371;
  2125. $da [$i] ['distance'] = $this->mConverter->convert($distance, 'D');
  2126. }
  2127. $da [$i] ['trackerid'] = 't'.$k;
  2128. $da [$i] ['tname'] = $tname;
  2129. $i++;*/
  2130. //}
  2131. ///////////////////////////////}
  2132. //die;
  2133. ///////////////////////////////return $trackersList;
  2134. ///////////////////////////////}
  2135.  
  2136. public function getLastARecord($tid, $limit = 1) {
  2137. global $GMONGO;
  2138. return $GMONGO -> getAMRecord_reverseSorted($tid, array('latitude' => array('$exists' => true, '$ne' => null)), $limit);
  2139. }
  2140.  
  2141. public function getLastWayPoint($tid, $poiID) {
  2142. $query = "SELECT * from poiVisits WHERE trackerid='$tid' AND poiID='$poiID' ORDER BY date DESC,time DESC LIMIT 0,1";
  2143. $this->dbclass->execute_query ( $query );
  2144. return $this->dbclass->get_result_complete ();
  2145. }
  2146.  
  2147. public function createWayPointEvent($username, $tid, $date, $time, $poiID) {
  2148. $query = "INSERT INTO poiVisits SET date='$date', time='$time', username='$username', trackerid = '$tid', poiID='$poiID'";
  2149. $this->dbclass->execute_query ( $query );
  2150. }
  2151.  
  2152. public function createPOIMailerEvent($tid, $username, $date, $time, $event, $desc) {
  2153. $query = "INSERT INTO POIMailer SET date='$date', time='$time', eventno='$event', description='$desc', vehicleid='$tid', username='$username'";
  2154. $this->dbclass->execute_query ( $query );
  2155. }
  2156.  
  2157. public function pullPOIMailer(){
  2158. $query = "SELECT * from POIMailer";
  2159. $this->dbclass->execute_query ( $query );
  2160. $ans = $this->dbclass->get_result_complete ();
  2161.  
  2162. $query = "DELETE from POIMailer where ID <= ". $ans[count($ans)-1]['id'];
  2163. $this->dbclass->execute_query ( $query );
  2164.  
  2165. return $ans;
  2166. }
  2167.  
  2168.  
  2169.  
  2170. public function createEvent($tid, $username, $date, $time, $latitude, $longitude, $speed, $direction, $event, $desc) {
  2171. global $GMONGO;
  2172. /*$query = "INSERT INTO E{$tid} SET date='$date', time='$time', latitude='$latitude', longitude = '$longitude', speed='$speed', direction='$direction', event='$event', description='$desc'";
  2173. $this->dbclass->execute_query ( $query );*/
  2174. $records = array();
  2175. $records['date'] = $date;
  2176. $records['time'] = $time;
  2177. $records['latitude'] = $latitude;
  2178. $records['longitude'] = $longitude;
  2179. $records['speed'] = $speed;
  2180. $records['direction'] = $direction;
  2181. $records['event'] = $event;
  2182. $records['description'] = $desc;
  2183.  
  2184. $GMONGO->insertRecordIntoE($tid, $records);
  2185.  
  2186. $query = "INSERT INTO mailer SET date='$date', time='$time', eventno='$event', description='$desc', vehicleid='$tid', username='$username'";
  2187. $this->dbclass->execute_query ( $query );
  2188. }
  2189.  
  2190. public function getTrackersMap($username) {
  2191. $username = $this->dbclass->get_escape_string ( $username );
  2192. $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
  2193. $this->dbclass->execute_query ( $query );
  2194. $trackers = $this->dbclass->get_result_complete ();
  2195.  
  2196. $trackers = $this->filterExpiredTrackers ( $trackers );
  2197. if (count ( $trackers ) == 0)
  2198. return array ();
  2199.  
  2200. $tl = array ();
  2201. if ($trackers != false) {
  2202. foreach ( $trackers as $v ) {
  2203. $tl [$v ['trackerid']] = $v;
  2204. }
  2205. }
  2206. return $tl;
  2207. }
  2208. public function getUsersFromTracker($tid) {
  2209. $query = "SELECT * FROM trackersMap WHERE trackerid=\"{$tid}\"";
  2210. $this->dbclass->execute_query ( $query );
  2211. return $this->dbclass->get_result_complete ();
  2212. }
  2213. /*public function getFleetTrackers() {
  2214. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  2215. $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
  2216. $this->dbclass->execute_query ( $query );
  2217. $trackers = $this->dbclass->get_result_complete ();
  2218.  
  2219. $trackersList = array ();
  2220. $trackers = $this->filterExpiredTrackers ( $trackers );
  2221. $tracker_count = count ( $trackers );
  2222. if ($tracker_count == 0)
  2223. return $trackersList;
  2224.  
  2225. for($b = 0; $b < $tracker_count; $b ++) {
  2226. $tinfo = $this->getTrackerDataObject ( $trackers [$b] );
  2227. if ($tinfo != false)
  2228. array_push ( $trackersList, $tinfo );
  2229. }
  2230.  
  2231. return $trackersList;
  2232. }*/
  2233. public function getFleetTrackers() {
  2234. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  2235. $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
  2236. $this->dbclass->execute_query ( $query );
  2237. $trackers = $this->dbclass->get_result_complete ();
  2238.  
  2239. $trackersList = array ();
  2240. $trackers = $this->filterExpiredTrackers ( $trackers );
  2241.  
  2242. if ($trackers == false)
  2243. return $trackersList;
  2244.  
  2245.  
  2246. foreach ($trackers as $t) {
  2247. $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$t['trackerid']}'";
  2248. $this->dbclass->execute_query($query);
  2249. $groups = $this->dbclass->get_result_complete();
  2250.  
  2251. if ($groups != false) {
  2252. $gid = array_map(function ($a) {
  2253. return $a['groupName'];
  2254. }, $groups);
  2255. $t['groups'] = implode(',', $gid);
  2256. }
  2257.  
  2258. $iconid = $this->getTrackerIconid($t['trackerid']);
  2259. $t['iconid'] = $iconid[0]['iconid'];
  2260.  
  2261. if (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid'] )
  2262. $tinfo = $this->getTrackerDataObject_mongo ( $t );
  2263. else
  2264. $tinfo = $this->getTrackerDataObject_new ( $t );
  2265.  
  2266. //array_push ( $trackersList, $tinfo );
  2267. if ($tinfo != false) array_push ( $trackersList, $tinfo );
  2268. }
  2269.  
  2270. $totalTrackers = count($trackersList);
  2271.  
  2272. if ($totalTrackers) {
  2273. $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'user');
  2274. }
  2275.  
  2276. return $trackersList;
  2277. }
  2278.  
  2279. public function getFleetListViewTrackers() {
  2280. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  2281. $query = "SELECT * FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
  2282. $this->dbclass->execute_query ( $query );
  2283. $trackers = $this->dbclass->get_result_complete ();
  2284.  
  2285. $trackersList = array ();
  2286. $trackers = $this->filterExpiredTrackers ( $trackers );
  2287.  
  2288. if ($trackers == false)
  2289. return $trackersList;
  2290.  
  2291.  
  2292. foreach ($trackers as $t) {
  2293.  
  2294. $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$t['trackerid']}'";
  2295. $this->dbclass->execute_query($query);
  2296. $groups = $this->dbclass->get_result_complete();
  2297.  
  2298. if ($groups != false) {
  2299. $gid = array_map(function ($a) {
  2300. return $a['groupName'];
  2301. }, $groups);
  2302. $t['groups'] = implode(',', $gid);
  2303. }
  2304.  
  2305. //if (isset($_GET['tid']) && $_GET['tid'] == $t['trackerid'] )
  2306. $tinfo = $this->getTrackerDataObject_mongo ( $t, true, false, false, true );
  2307. //else
  2308. // $tinfo = $this->getTrackerDataObject_new ( $t );
  2309.  
  2310. //array_push ( $trackersList, $tinfo );
  2311. if ($tinfo != false) array_push ( $trackersList, $tinfo );
  2312. }
  2313.  
  2314. $totalTrackers = count($trackersList);
  2315.  
  2316. if ($totalTrackers) {
  2317. $trackersList[$totalTrackers-1]->trackersCount = $this->getTrackersCount($username,'user');
  2318. }
  2319.  
  2320. return $trackersList;
  2321. }
  2322.  
  2323. private function eCache_validateCache($tid) {
  2324. global $GMONGO;
  2325.  
  2326. if (isset ( $_SESSION ['eCache'] ) == false) {
  2327. $_SESSION ['eCache'] = array ();
  2328. }
  2329.  
  2330. if (isset ( $_SESSION ['eCache'] [$tid] ) == false) {
  2331. $trec = $GMONGO->getLastERecordLimitedField($tid, array(), array('timestamp' => true));
  2332.  
  2333. if ($trec != false) {
  2334. $_SESSION ['eCache'] [$tid] = array ();
  2335. $_SESSION ['eCache'] [$tid] [0] = $trec [0] ['timestamp'];
  2336. } else {
  2337. $_SESSION ['eCache'] [$tid] = array ();
  2338. $_SESSION ['eCache'] [$tid] [0] = 0;
  2339. }
  2340. return false;
  2341. }
  2342. return true;
  2343. }
  2344. public function getTrackersEvents_withDateTime($tid, $sdate, $stime, $edate, $etime) {
  2345. global $GMONGO;
  2346.  
  2347. $events = array ();
  2348.  
  2349. $periodClause = basicTransactions::getPeriodClause ( $sdate, $stime, $edate, $etime );
  2350. $periodClauseMongo = basicTransactions::getPeriodClauseMongo ( $sdate, $stime, $edate, $etime );
  2351.  
  2352. $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
  2353.  
  2354. /*$QUERY = "SELECT * from E{$tid} WHERE $periodClause ORDER by date,time";
  2355. $this->dbclass->execute_query ( $QUERY );
  2356. $trec = $this->dbclass->get_result_complete ();*/
  2357.  
  2358. $trec = $GMONGO->getERecords($tid, $periodClauseMongo);
  2359.  
  2360. if ($trec == false)
  2361. return;
  2362.  
  2363. $trCount = count ( $trec );
  2364.  
  2365. for($c = 0; $c < $trCount; $c ++) {
  2366. $tinfo = new trackerEvent ();
  2367. $tinfo->latitude = $trec [$c] ['latitude'];
  2368. $tinfo->longitude = $trec [$c] ['longitude'];
  2369. $tinfo->speed = $trec [$c] ['speed'];
  2370. $tinfo->direction = $trec [$c] ['direction'];
  2371. $tinfo->date = $trec [$c] ['date'];
  2372. $tinfo->time = $trec [$c] ['time'];
  2373. $tinfo->eventno = $trec [$c] ['event'];
  2374. $tinfo->description = utf8_encode($trec [$c] ['description']->bin);
  2375.  
  2376. $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
  2377. $tinfo->dateString = $fnsdate->getFormattedString ();
  2378.  
  2379. array_push ( $events, $tinfo );
  2380. }
  2381.  
  2382. return $events;
  2383. }
  2384. public function getTrackersEvents($tid, $currentTrip = false) {
  2385. global $GMONGO;
  2386.  
  2387. $events = array ();
  2388.  
  2389. if ($this->eCache_validateCache ( $tid ) == false) {
  2390. //return;
  2391. }
  2392.  
  2393. $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
  2394.  
  2395. // $this->eCache_validateCache($tid);
  2396.  
  2397. if (isset ( $_SESSION ['eCache'] [$tid] ) == false) {
  2398. return $events;
  2399. }
  2400.  
  2401. //if (isset($_GET['update']) || $currentTrip == true) {
  2402. if ($currentTrip == true) {
  2403. //$ts = time() - 86400;
  2404. $ts = time() - (EVENTS_FETCH_TIME * 3600);
  2405. //$ts = $_SESSION['eCache'] [$tid] [0];
  2406. } else {
  2407. //$ts = time() - 86400;
  2408. //$ts = time();
  2409. $ts = $_SESSION['eCache'] [$tid] [0];
  2410. }
  2411.  
  2412. $queryCriteria = array('timestamp' => array('$gt' => $ts));
  2413. $trec = $GMONGO -> getERecords($tid, $queryCriteria);
  2414. /*$QUERY = "SELECT * from E{$tid} WHERE (date = \"" . $_SESSION ['eCache'] [$tid] [0] . "\" AND time > " . $_SESSION ['eCache'] [$tid] [1] . ") OR (date > \"" . $_SESSION ['eCache'] [$tid] [0] . "\") ORDER BY date,time";
  2415. $this->dbclass->execute_query ( $QUERY );
  2416. $trec = $this->dbclass->get_result_complete ();*/
  2417.  
  2418. if ($trec == false)
  2419. return $events;
  2420.  
  2421. $trCount = count ( $trec );
  2422.  
  2423. for($c = 0; $c < $trCount; $c ++) {
  2424. $tinfo = new trackerEvent ();
  2425. $tinfo->latitude = $trec [$c] ['latitude'];
  2426. $tinfo->longitude = $trec [$c] ['longitude'];
  2427. $tinfo->speed = $trec [$c] ['speed'];
  2428. $tinfo->direction = $trec [$c] ['direction'];
  2429. $tinfo->date = $trec [$c] ['date'];
  2430. $tinfo->time = $trec [$c] ['time'];
  2431. $tinfo->eventno = $trec [$c] ['event'];
  2432. $tinfo->description = utf8_encode($trec [$c] ['description'] -> bin);
  2433.  
  2434. $fnsdate->setUTCDate ( $tinfo->date, $tinfo->time );
  2435. $tinfo->dateString = $fnsdate->getFormattedString ();
  2436.  
  2437. array_push ( $events, $tinfo );
  2438. }
  2439.  
  2440. if ($c >= 1) {
  2441. //$_SESSION ['eCache'] [$tid] [0] = $trec [$c - 1] ['date'];
  2442. //$_SESSION ['eCache'] [$tid] [1] = $trec [$c - 1] ['time'];
  2443. $_SESSION ['eCache'] [$tid] [0] = $trec [$c - 1] ['timestamp'];
  2444. }
  2445.  
  2446. return $events;
  2447. }
  2448.  
  2449.  
  2450. public function getTrackersDatabase($logicalGroups = false, $username = "") {
  2451. global $GMONGO;
  2452.  
  2453. // Get Escape string for Username
  2454. $username = $this->dbclass->get_escape_string ( $username );
  2455.  
  2456. // Fetch Groups based on logicalGroups selection from the database
  2457. $query = $logicalGroups ? "SELECT name as groups FROM logicalGroups WHERE username=\"$username\" ORDER BY name" : "SELECT username as groups FROM Users ORDER BY username";
  2458. $this->dbclass->execute_query ( $query );
  2459. $groups = $this->dbclass->get_result_complete ();
  2460.  
  2461. if ($groups == false) {
  2462. return false;
  2463. }
  2464.  
  2465. $groups_count = count ( $groups );
  2466.  
  2467. $returnAnswer = array ();
  2468.  
  2469. // Starts iterating among groups
  2470. for($a = 0; $a < $groups_count; $a ++) {
  2471. $groupObject = new groupRecord ();
  2472. $groupObject->name = base64_encode ( $groups [$a] ['groups'] );
  2473. $groupObject->list = array ();
  2474. array_push ( $returnAnswer, $groupObject );
  2475.  
  2476. $gname = $this->dbclass->get_escape_string ( $groups [$a] ['groups'] );
  2477. $query = $logicalGroups ? "SELECT * FROM trackers WHERE username=\"$username\" AND logicalGroup=\"$gname\"" : "SELECT * FROM trackers WHERE username=\"$gname\" ORDER BY name";
  2478. $this->dbclass->execute_query ( $query );
  2479. $trackers = $this->dbclass->get_result_complete ();
  2480.  
  2481. if ($trackers == false)
  2482. continue;
  2483.  
  2484. $tracker_count = count ( $trackers );
  2485.  
  2486. for($b = 0; $b < $tracker_count; $b ++) {
  2487. $tinfo = new trackerInfoRecord ();
  2488. $tinfo->name = base64_encode ( $trackers [$b] ['name'] );
  2489. $tinfo->fscode = $trackers [$b] ['type'];
  2490. $tinfo->tid = $trackers [$b] ['trackerid'];
  2491.  
  2492. $trec = $GMONGO -> getLastARecord($trackers[$b]['trackerid']);
  2493.  
  2494. if ($trec == false) {
  2495. $tinfo->status = "n";
  2496. array_push ( $groupObject->list, $tinfo );
  2497. continue;
  2498. }
  2499.  
  2500. $tinfo->latitude = $trec [0] ['latitude'];
  2501. $tinfo->longitude = $trec [0] ['longitude'];
  2502. $tinfo->speed = $trec [0] ['speed'];
  2503. $tinfo->direction = $trec [0] ['direction'];
  2504. $tinfo->date = $trec [0] ['date'];
  2505. $tinfo->time = $trec [0] ['time'];
  2506.  
  2507. $inputs = $this->getInputs ( $tinfo->tid, false, $tinfo->date, $tinfo->time, $tinfo->fscode, true );
  2508.  
  2509. if ($inputs != false) {
  2510. $tinfo->fuel = $inputs [0] ['fuel'];
  2511. $tinfo->temperature = $inputs [0] ['temperature'];
  2512. $tinfo->IO = $inputs [0] ['IO'];
  2513. $tinfo->odometer = $inputs [0] ['odometer'];
  2514. $tinfo->privatePublic = $inputs [0] ['private'];
  2515. } else {
  2516. $tinfo->fuel = - 1;
  2517. $tinfo->temperature = - 1;
  2518. $tinfo->IO = false;
  2519. $tinfo->odometer = 0;
  2520. $tinfo->privatePublic = 0;
  2521. }
  2522.  
  2523. $tinfo->status = $this->getStatus ( $tinfo->tid, $tinfo->date, $tinfo->time, $tinfo->speed, $tinfo->IO );
  2524.  
  2525. array_push ( $groupObject->list, $tinfo );
  2526. }
  2527. }
  2528. return $returnAnswer;
  2529. }
  2530. function getSnailTrack($tid, $nloc) {
  2531. global $GMONGO;
  2532. /*$query = "SELECT COUNT(*) FROM A{$tid} ORDER BY date,time";
  2533. $this->dbclass->execute_query ( $query );
  2534. $ans = $this->dbclass->get_result_complete ();*/
  2535. $ans = $GMONGO->countDocumentsInA($tid);
  2536.  
  2537. /*if ($ans [0] ['COUNT(*)'] >= 5) {
  2538. $naoffset = $ans [0] ['COUNT(*)'] - 5;
  2539. } else if ($ans [0] ['COUNT(*)'] == 0) {
  2540. return false;
  2541. } else
  2542. $naoffset = 0;*/
  2543.  
  2544. if ($ans >= 5) {
  2545. $naoffset = $ans - 5;
  2546. } else if ($ans == 0) {
  2547. return false;
  2548. } else
  2549. $naoffset = 0;
  2550.  
  2551. //$nloc is limit and $naoffset will skip the result it works like LIMIT $naoffset, $nloc
  2552. $ans = $GMONGO -> getAMRecord($tid, array('latitude' => array('$exists' => true, '$ne' => null)), $nloc, $naoffset);
  2553.  
  2554. return $ans;
  2555. }
  2556. public function checkTrackerID($tid) {
  2557. if (strlen ( $tid ) < 6)
  2558. return false;
  2559. $query = "SELECT COUNT(*) FROM trackers WHERE trackerid=\"$tid\"";
  2560. $this->dbclass->execute_query ( $query );
  2561. $tcard = $this->dbclass->get_result_complete ();
  2562.  
  2563. if ($tcard == false)
  2564. return false;
  2565. if ($tcard [0] ['COUNT(*)'] > 0)
  2566. return false;
  2567.  
  2568. return true;
  2569. }
  2570.  
  2571. public function getTrackersInfo () {
  2572. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  2573. if ($_SESSION ['accounttype'] == USERTYPE_SUPERUSER) {
  2574. $QUERY = "SELECT trackerid,name FROM trackers inner join trackersExInfo using (trackerid)";
  2575. $this->dbclass->execute_query ( $QUERY );
  2576. }
  2577. elseif ($_SESSION ['accounttype'] == USERTYPE_ADMINISTRATOR) {
  2578. $QUERY = "SELECT trackerid,name FROM trackers inner join trackersExInfo using (trackerid)";
  2579. $this->dbclass->execute_query ( $QUERY );
  2580. } else {
  2581. $QUERY = "SELECT trackerid,name FROM trackers INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersMap USING (trackerid) WHERE username=\"{$_SESSION ['username']}\"";
  2582. $this->dbclass->execute_query ( $QUERY );
  2583. }
  2584.  
  2585. $trackers = $this->dbclass->get_result_complete ();
  2586. $trackers = $this->filterExpiredTrackers ( $trackers );
  2587.  
  2588. /*if ($trackers != false) {
  2589. foreach ($trackers as $k => $v) {
  2590. echo "tracker id".$v['trackerid']."";
  2591. $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$v['trackerid']}\"";
  2592. echo $query;
  2593. $this->dbclass->execute_query ( $query );
  2594. $trackers [$k] ['trackerExpiry'] = TrackerExpiry::checkExpiry ( $v ['trackerExpiry'] );
  2595. $addKeywords = null;
  2596.  
  2597. while ( 1 ) {
  2598. $user = $this->dbclass->get_result_row ();
  2599. var_dump($user);
  2600. if ($user == false)
  2601. {die; break;}
  2602. if ($addKeywords == null){
  2603. $addKeywords = $user ['username'];
  2604. echo $addKeywords."<br>";
  2605. }
  2606. else
  2607. $addKeywords .= ", " . $user ['username'];
  2608. }
  2609. $trackers [$k] ['users'] = $addKeywords;
  2610. }
  2611. }*/
  2612.  
  2613. return $trackers;
  2614. }
  2615.  
  2616.  
  2617.  
  2618.  
  2619. public function getTrackerCard($trackerid) {
  2620. $query = "SELECT * FROM trackers JOIN trackersExInfo USING (trackerid) JOIN trackersFeatures USING (trackerid) INNER JOIN trackersDetails USING (trackerid) LEFT JOIN napt ON vehicleid = trackerid WHERE trackerid=\"$trackerid\"";
  2621. $this->dbclass->execute_query ( $query );
  2622. $tcard = $this->dbclass->get_result_complete ();
  2623. return $tcard;
  2624. }
  2625.  
  2626. public function getTrackerCard_public($trackerid) {
  2627. $query = "SELECT * FROM trackers JOIN trackersExInfo USING (trackerid) JOIN trackersFeatures USING (trackerid) LEFT JOIN napt ON vehicleid = trackerid LEFT JOIN trackersDetails using (trackerid) WHERE trackerid=\"$trackerid\"";
  2628. $this->dbclass->execute_query ( $query );
  2629. $tcard = $this->dbclass->get_result_complete ();
  2630.  
  2631. if ($tcard == false) return ERROR;
  2632.  
  2633. return $this->encrypt(json_encode($tcard[0]));
  2634. }
  2635.  
  2636. public function getAccountCard($username) {
  2637. $username = $this->dbclass->get_escape_string ( $username );
  2638. $query = "SELECT * FROM Users WHERE username=\"$username\"";
  2639. $this->dbclass->execute_query ( $query );
  2640. $acard = $this->dbclass->get_result_complete ();
  2641. return $acard;
  2642. }
  2643. public function updateTrackerCard() {
  2644. $query = "UPDATE trackers INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersFeatures USING (trackerid) INNER JOIN trackersDetails USING (trackerid) INNER JOIN napt ON vehicleid = trackerid SET ";
  2645. $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE trackerid=\"" . $_POST ['trackerid'] . "\"";
  2646. $result = $this->dbclass->execute_query ( $query );
  2647.  
  2648. if ($result != true) {
  2649. //$this->writeDebugLog ( "\r\n" . mysql_error ( $this->dbclass->dblink ) );
  2650. $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
  2651. return ERROR;
  2652. }
  2653.  
  2654. return SUCCESS;
  2655. }
  2656. public function insertTrackerCard() {
  2657. global $GMONGO;
  2658. if (strlen ( $_POST ['trackerid'] ) < 6)
  2659. return "false";
  2660.  
  2661. if (isset ( $_POST ['vehicleid'] ))
  2662. unset ( $_POST ['vehicleid'] );
  2663.  
  2664. $QUERY_ARRAY = array();
  2665.  
  2666. array_push($QUERY_ARRAY, "INSERT INTO trackers SET trackerid = \"" . $_POST ['trackerid'] . "\"");
  2667. array_push($QUERY_ARRAY, "INSERT INTO adminTrackersMap SET trackerid = \"" . $_POST ['trackerid'] . "\", username = \"" . $_SESSION['username'] . "\""); //Added in V5)
  2668. array_push($QUERY_ARRAY, "INSERT INTO trackersFeatures SET trackerid = \"" . $_POST ['trackerid'] . "\"");
  2669. array_push($QUERY_ARRAY, "INSERT INTO trackersDetails SET trackerid = \"" . $_POST ['trackerid'] . "\"");
  2670. array_push($QUERY_ARRAY, "INSERT INTO trackersExInfo SET trackerid = \"" . $_POST ['trackerid'] . "\"");
  2671. array_push($QUERY_ARRAY, "INSERT INTO napt SET vehicleid = \"" . $_POST ['trackerid'] . "\", ip=\"-1\", port=\"-1\", protocol=\"" . $_POST ['protocol'] . "\"");
  2672. array_push($QUERY_ARRAY, "CREATE TABLE A{$_POST['trackerid']} like dataTable");
  2673. array_push($QUERY_ARRAY, "CREATE TABLE E{$_POST['trackerid']} like eventsTable");
  2674. array_push($QUERY_ARRAY,"CREATE TABLE M{$_POST['trackerid']} like miscTable");
  2675. array_push($QUERY_ARRAY,"CREATE TABLE R{$_POST['trackerid']} like rTable");
  2676. array_push($QUERY_ARRAY, "CREATE TABLE RN{$_POST['trackerid']} like rnTable");
  2677. array_push($QUERY_ARRAY, "CREATE TABLE RT{$_POST['trackerid']} like rTable");
  2678.  
  2679. foreach ($QUERY_ARRAY as $query){
  2680. $result = $this->dbclass->execute_query ( $query );
  2681.  
  2682. if ($result == false) {
  2683. //$this->writeDebugLog ( "\r\n" . mysql_error ( $this->dbclass->dblink ) );
  2684. $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
  2685. return ERROR."::MySQL";
  2686. }
  2687. }
  2688.  
  2689. //$GMONGO->createIndex($_POST['trackerid'], array('timestamp' => 1));
  2690. //$GMONGO->createIndex($_POST['trackerid'], array('timestamp' => -1));
  2691. //$GMONGO->enableSharding($_POST['trackerid']);
  2692.  
  2693. return $this->updateTrackerCard ();
  2694. }
  2695.  
  2696. public function insertAccount() {
  2697. $query = "INSERT INTO Users SET ";
  2698. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  2699. $result = $this->dbclass->execute_query ( $query );
  2700.  
  2701. if ($result != true) {
  2702. //if (mysql_errno($this->dblink) == 1062)
  2703. if ($this->dbclass->dblink->errno == 1062)
  2704. return EXISTS;
  2705. return ERROR;
  2706. }
  2707.  
  2708. /******ADDED IN V5*******/
  2709. $username = $this->dbclass->get_escape_string($_POST['username']);
  2710. if ($_POST ['accounttype'] == 3 || $_POST ['accounttype'] == 5) {
  2711. $query = "INSERT INTO logicalGroups_V5 SET username = '$username', adminUserName = \"" . $_SESSION['username'] . "\", accounttype = " . $_POST['accounttype'];
  2712. $result = $this->dbclass->execute_query($query);
  2713. }
  2714. /*} else if ($_POST ['accounttype'] == 5) {
  2715. $query = "INSERT INTO fleetCareMap SET fcusername = \"".$username."\", adminUserName = \"".$_SESSION['username']."\"";
  2716. $result = $this->dbclass->execute_query ( $query );
  2717. }*/
  2718.  
  2719. if ($result != true) {
  2720. //if (mysql_errno($this->dblink) == 1062)
  2721. if ($this->dbclass->dblink->errno == 1062)
  2722. return EXISTS;
  2723. return ERROR;
  2724. }
  2725.  
  2726. if ($_POST ['accounttype'] == 1) { //If adding user type admin from super user
  2727. $query = "INSERT INTO licenses SET username = '".$username."', licenses = 0";
  2728. $result = $this->dbclass->execute_query($query);
  2729. }
  2730.  
  2731. if ($result != true) {
  2732. //if (mysql_errno($this->dblink) == 1062)
  2733. if ($this->dbclass->dblink->errno == 1062)
  2734. return EXISTS;
  2735. return ERROR;
  2736. }
  2737.  
  2738. return SUCCESS;
  2739. }
  2740.  
  2741. public function updateAccount() {
  2742. $username = $this->dbclass->get_escape_string ( $_POST ['username'] );
  2743. $query = "UPDATE Users SET ";
  2744. $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE username=\"" . $username . "\"";
  2745. $result = $this->dbclass->execute_query ( $query );
  2746.  
  2747. if ($result != true) {
  2748. //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
  2749. $this->writeDebugLog ( $this->dbclass->dblink->error );
  2750. return ERROR;
  2751. }
  2752.  
  2753. return SUCCESS;
  2754. }
  2755.  
  2756. public function checkUser ($username) {
  2757. $query = "SELECT COUNT(*) FROM Users WHERE username = '".$username."'";
  2758. $this->dbclass->execute_query ( $query );
  2759. $userCount = $this->dbclass->get_result_complete ();
  2760.  
  2761. if ($userCount == false)
  2762. return false;
  2763. if ($userCount [0] ['COUNT(*)'] > 0)
  2764. return true;
  2765. }
  2766.  
  2767. public function saveTemplate() {
  2768. $query = "REPLACE INTO userTemplates SET ";
  2769. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  2770. $result = $this->dbclass->execute_query ( $query );
  2771. return SUCCESS;
  2772. }
  2773. public function getTemplates() {
  2774. $query = "SELECT * FROM userTemplates WHERE type = 0";
  2775. $result = $this->dbclass->execute_query ( $query );
  2776. $answer = $this->dbclass->get_result_complete ();
  2777. return $answer;
  2778. }
  2779. private function removeCardFromUsers($username) {
  2780. $query = "DELETE FROM Users WHERE username=\"" . $username . "\"";
  2781. $result = $this->dbclass->execute_query ( $query );
  2782.  
  2783. $this->deactivateUserFences ( $username );
  2784. $this->deleteUserGeofences ( $username );
  2785.  
  2786. $query = "DELETE FROM archiveFences WHERE username=\"" . $username . "\"";
  2787. $result = $this->dbclass->execute_query ( $query );
  2788.  
  2789. $query = "DELETE FROM POI WHERE username=\"" . $username . "\"";
  2790. $result = $this->dbclass->execute_query ( $query );
  2791.  
  2792. $query = "DELETE FROM userPreferences WHERE username=\"" . $username . "\"";
  2793. $result = $this->dbclass->execute_query ( $query );
  2794.  
  2795. $query = "DELETE FROM usersImages WHERE username=\"" . $username . "\"";
  2796. $result = $this->dbclass->execute_query ( $query );
  2797.  
  2798. $query = "DELETE FROM schools WHERE username=\"" . $username . "\"";
  2799. $result = $this->dbclass->execute_query ( $query );
  2800.  
  2801. $this->removeUserStudents ( $username );
  2802.  
  2803. $query = "DELETE FROM reminders WHERE username=\"" . $username . "\"";
  2804. $result = $this->dbclass->execute_query ( $query );
  2805.  
  2806. $query = "DELETE FROM alertSettings WHERE username=\"" . $username . "\"";
  2807. $result = $this->dbclass->execute_query ( $query );
  2808.  
  2809. $query = "DELETE FROM schedules WHERE username=\"" . $username . "\"";
  2810. $result = $this->dbclass->execute_query ( $query );
  2811.  
  2812. /*$query = "DELETE FROM logicalGroups_V5 WHERE username=\"" . $username . "\"";
  2813. $result = $this->dbclass->execute_query ( $query );*/
  2814.  
  2815. $this->removeUserDrivers ( $username );
  2816.  
  2817. $query = "DELETE FROM contacts WHERE username=\"" . $username . "\"";
  2818. $result = $this->dbclass->execute_query ( $query );
  2819.  
  2820. return SUCCESS;
  2821. }
  2822. private function removeFleetAccount($username) // Removes Fleet Account
  2823. {
  2824. $query = "DELETE FROM trackersMap WHERE username=\"$username\"";
  2825. $result = $this->dbclass->execute_query ( $query );
  2826. $query = "DELETE FROM logicalGroups_V5 WHERE username = \"$username\"";
  2827. $result = $this->dbclass->execute_query ( $query );
  2828. return $this->removeCardFromUsers ( $username );
  2829. }
  2830. private function removeCCareAccount($username) // Remove ccare account
  2831. {
  2832. return $this->removeCardFromUsers ( $username );
  2833. }
  2834. private function removeFleetCareAccount($username) // Removes Fleet Care Account
  2835. {
  2836. $query = "DELETE FROM logicalGroups_V5 WHERE username = \"$username\"";
  2837. $result = $this->dbclass->execute_query ( $query );
  2838. return $this->removeCardFromUsers ( $username );
  2839. }
  2840. private function removeAdminAccount($username) // Remove ccare account
  2841. {
  2842. $query = "DELETE FROM adminTrackersMap WHERE username=\"$username\"";
  2843. $result = $this->dbclass->execute_query ( $query );
  2844. $query = "DELETE FROM logicalGroups_V5 WHERE adminUserName = \"".$_SESSION['username']."\"";
  2845. $result = $this->dbclass->execute_query ( $query );
  2846. return $this->removeCardFromUsers ( $username );
  2847. }
  2848. public function removeAccount($username, $type) {
  2849. $username = $this->dbclass->get_escape_string ( $username );
  2850.  
  2851. switch ($type) {
  2852. case USERTYPE_FLEET :
  2853. return $this->removeFleetAccount ( $username );
  2854.  
  2855. case USERTYPE_CUSTOMERCARE :
  2856. return $this->removeCCareAccount ( $username );
  2857.  
  2858. case USERTYPE_FLEETCARE :
  2859. return $this->removeFleetCareAccount ( $username );
  2860.  
  2861. case USERTYPE_ADMINISTRATOR:
  2862. return $this->removeAdminAccount ( $username );
  2863. } // switch
  2864.  
  2865. return ERROR;
  2866. }
  2867. public function blacklistAccount($username) {
  2868. $username = $this->dbclass->get_escape_string ( $username );
  2869. $query = "UPDATE Users SET blocktime = -1 WHERE username=\"" . $username . "\"";
  2870. $result = $this->dbclass->execute_query ( $query );
  2871.  
  2872. if ($result != true) {
  2873. //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
  2874. $this->writeDebugLog ( $this->dbclass->dblink->error );
  2875. return ERROR;
  2876. }
  2877.  
  2878. return SUCCESS;
  2879. }
  2880. public function safelistAccount($username) {
  2881. $username = $this->dbclass->get_escape_string ( $username );
  2882. $query = "UPDATE Users SET blocktime = 0, noofretry = 0 WHERE username=\"" . $username . "\"";
  2883. $result = $this->dbclass->execute_query ( $query );
  2884.  
  2885. if ($result != true) {
  2886. //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
  2887. $this->writeDebugLog ( $this->dbclass->dblink->error );
  2888. return ERROR;
  2889. }
  2890.  
  2891. $query = "SELECT * from Users where username='".$username."'";
  2892. $result = $this->dbclass->execute_query ( $query );
  2893. $users = $this->dbclass->get_result_complete ();
  2894.  
  2895. $status = array();
  2896. $status['username'] = $users[0]['username'];
  2897. $status['status'] = systemUtilities::getStatus($users[0]['expirytime'],$users[0]['blocktime'],$users[0]['lastLogin']);
  2898.  
  2899. return $status;
  2900. }
  2901.  
  2902. public function clearTrackersMap($username) {
  2903. $username = $this->dbclass->get_escape_string ( $username );
  2904. $query = "DELETE FROM trackersMap WHERE username=\"$username\"";
  2905. $result = $this->dbclass->execute_query ( $query );
  2906. }
  2907. public function removeDriversMap($username, $tid) {
  2908. $username = $this->dbclass->get_escape_string ( $username );
  2909. $query = "DELETE FROM driversMap WHERE username=\"$username\" AND trackerid=\"$tid\"";
  2910. $result = $this->dbclass->execute_query ( $query );
  2911. }
  2912. public function createTrackersMap($username, $tid) {
  2913. $username = $this->dbclass->get_escape_string ( $username );
  2914. $query = "INSERT INTO trackersMap SET username=\"$username\", trackerid=\"$tid\"";
  2915. $result = $this->dbclass->execute_query ( $query );
  2916. if ($result == false)
  2917. $this->writeDebugLog ( $this->dbclass->dblink->error );
  2918. }
  2919. public function trackersMapList($username) {
  2920. $no = new emptyClass ();
  2921. //$username = "demo";
  2922. //$query = "SELECT trackerid as id, name,imei,simno,searchKeywords FROM trackers inner join trackersExInfo using (trackerid)";
  2923. $admin = $_SESSION['username'];
  2924. $query = "SELECT atm.trackerid AS id, name, imei, simno, searchKeywords FROM adminTrackersMap AS atm INNER JOIN trackers ON atm.username = \"$admin\" AND atm.trackerid = trackers.trackerid INNER JOIN trackersExInfo AS ti ON trackers.trackerid = ti.trackerid";
  2925. $this->dbclass->execute_query ( $query );
  2926. $trackers = $this->dbclass->get_result_complete ();
  2927.  
  2928. $no->ATL = array ();
  2929. $no->NTL = array ();
  2930.  
  2931. if ($trackers != false) {
  2932. $tracker_count = count ( $trackers );
  2933.  
  2934. for($b = 0; $b < $tracker_count; $b ++)
  2935. $no->ATL [$trackers [$b] ['id']] = $trackers [$b];
  2936.  
  2937. unset ( $trackers );
  2938.  
  2939. $username = $this->dbclass->get_escape_string ( $username );
  2940. //$query = "SELECT trackerid as id, name,imei,simno,searchKeywords FROM trackersMap left join trackers using(trackerid) left join trackersExInfo using (trackerid) WHERE username=\"$username\"";
  2941. $query = "SELECT atm.trackerid AS id, name, imei, simno, searchKeywords FROM adminTrackersMap AS atm INNER JOIN trackersMap AS tm ON atm.username = \"$admin\" AND atm.trackerid = tm.trackerid LEFT JOIN trackers ON tm.trackerid = trackers.trackerid LEFT JOIN trackersExInfo as ti on trackers.trackerid = ti.trackerid WHERE tm.username=\"$username\"";
  2942. $result = $this->dbclass->execute_query ( $query );
  2943. $answer = $this->dbclass->get_result_complete ();
  2944.  
  2945. if ($answer != false) {
  2946. $tracker_count = count ( $answer );
  2947. for($b = 0; $b < $tracker_count; $b ++) {
  2948. array_push ( $no->NTL, $answer [$b] );
  2949. unset ( $no->ATL [$answer [$b] ['id']] );
  2950. } // for
  2951. } // if
  2952. } // if
  2953. $no->ATL = array_values ( $no->ATL );
  2954. return $no;
  2955. }
  2956. public function getPrevLogin($username) {
  2957. $uname = $this->dbclass->get_escape_string ( $username );
  2958. $query = "SELECT prevLogin FROM Users WHERE username =\"{$uname}\"";
  2959. $result = $this->dbclass->execute_query ( $query );
  2960. $answer = $this->dbclass->get_result_complete ();
  2961. return $answer;
  2962. }
  2963. public function setWeatherLocation($location) {
  2964. $location = $this->dbclass->get_escape_string ( $location );
  2965. $QUERY = "UPDATE systemPreferences SET weatherLocation=\"" . $location . "\"";
  2966. $this->dbclass->execute_query ( $QUERY );
  2967. }
  2968. public function fleet_setWeatherLocation($location) {
  2969. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  2970. $location = $this->dbclass->get_escape_string ( $location );
  2971.  
  2972. $QUERY = "SELECT COUNT(*) FROM userPreferences WHERE username=\"{$username}\"";
  2973. $this->dbclass->execute_query ( $QUERY );
  2974. $ans = $this->dbclass->get_result_complete ();
  2975.  
  2976. if ($ans [0] ['COUNT(*)'] > 0) {
  2977. $QUERY = "UPDATE userPreferences SET weatherLocation=\"" . $location . "\" WHERE username=\"{$username}\"";
  2978. $this->dbclass->execute_query ( $QUERY );
  2979. } else {
  2980. $QUERY = "INSERT INTO userPreferences SET weatherLocation=\"" . $location . "\", username=\"{$username}\"";
  2981. $this->dbclass->execute_query ( $QUERY );
  2982. }
  2983. }
  2984. public function updateLoginSuccess($username) {
  2985. $now = time ();
  2986. $uname = $this->dbclass->get_escape_string ( $username );
  2987.  
  2988. $query = "SELECT lastLogin FROM Users WHERE username =\"{$uname}\"";
  2989. $result = $this->dbclass->execute_query ( $query );
  2990. $answer = $this->dbclass->get_result_complete ();
  2991.  
  2992. $QUERY = "UPDATE Users SET lastLogin=$now, prevLogin=" . $answer [0] ['lastLogin'] . " WHERE username=\"{$uname}\"";
  2993. $this->dbclass->execute_query ( $QUERY );
  2994. }
  2995. public function ccare_get_users_list() {
  2996. $fields = "username,name,company,mobile,email,city,country,reseller";
  2997. $wClause = "accounttype = " . USERTYPE_FLEET;
  2998.  
  2999. $query = "SELECT $fields FROM Users WHERE " . $wClause . " ORDER BY name";
  3000. $result = $this->dbclass->execute_query ( $query );
  3001. $answer = $this->dbclass->get_result_complete ();
  3002. return $answer;
  3003. }
  3004. public function get_users_list($ccare = false) {
  3005. if ($ccare) {
  3006. $fields = "*";
  3007. $wClause = "accounttype = " . USERTYPE_FLEET . " OR accounttype = " . USERTYPE_CUSTOMERCARE;
  3008. } else {
  3009. $fields = "username,name,company";
  3010. $wClause = "accounttype = " . USERTYPE_FLEET;
  3011. }
  3012.  
  3013. $query = "SELECT $fields FROM Users WHERE " . $wClause . " ORDER BY username";
  3014. $result = $this->dbclass->execute_query ( $query );
  3015. $answer = $this->dbclass->get_result_complete ();
  3016.  
  3017. return $answer;
  3018. }
  3019. public function getUserNotificationRecord($username) {
  3020. $uname = $this->dbclass->get_escape_string ( $username );
  3021.  
  3022. $query = "SELECT * FROM usersNotifications WHERE username =\"{$uname}\"";
  3023. $result = $this->dbclass->execute_query ( $query );
  3024. return $this->dbclass->get_result_complete ();
  3025. }
  3026. public function getTrackerNotificationRecord($tid) {
  3027. $query = "SELECT * FROM trackersNotifications WHERE trackerid =\"{$tid}\"";
  3028. $result = $this->dbclass->execute_query ( $query );
  3029. return $this->dbclass->get_result_complete ();
  3030. }
  3031.  
  3032. public function setUserNotificationRecord($username, $time) {
  3033. $uname = $this->dbclass->get_escape_string ( $username );
  3034. $query = "REPLACE INTO usersNotifications SET username =\"{$uname}\", UE_NOTICE = '$time'";
  3035. $result = $this->dbclass->execute_query ( $query );
  3036. }
  3037.  
  3038. public function setTrackerNotificationRecord($tid, $time) {
  3039. $query = "REPLACE INTO trackersNotifications SET trackerid =\"{$tid}\", TE_NOTICE = '$time'";
  3040. $result = $this->dbclass->execute_query ( $query );
  3041. }
  3042.  
  3043. public function getAllTrackersList() {
  3044. global $GMONGO;
  3045.  
  3046. //$query = "SELECT trackerid,name,imei,simno,searchKeywords,trackerExpiry,type, chassisNo, licensePlate, iconText FROM trackers INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersDetails USING (trackerid)";
  3047. $query = "SELECT * FROM trackers INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersDetails USING (trackerid)";
  3048. $this->dbclass->execute_query ( $query );
  3049. $answer = $this->dbclass->get_result_complete ();
  3050.  
  3051. $fdate = new FNSDateTime($_SESSION['timezone']);
  3052.  
  3053. if ($answer != false) {
  3054. foreach ( $answer as $k => $v ) {
  3055. $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$v['trackerid']}\"";
  3056. $this->dbclass->execute_query ( $query );
  3057. $answer [$k] ['trackerExpiry'] = TrackerExpiry::checkExpiry ( $v ['trackerExpiry'] );
  3058. $addKeywords = null;
  3059.  
  3060. while ( 1 ) {
  3061. $user = $this->dbclass->get_result_row ();
  3062. if ($user == false)
  3063. break;
  3064. if ($addKeywords == null)
  3065. $addKeywords = $user ['username'];
  3066. else
  3067. $addKeywords .= ", " . $user ['username'];
  3068. }
  3069. $answer [$k] ['users'] = $addKeywords;
  3070. //$lastRecord = $GMONGO->getLastAMRecord($v['trackerid']);
  3071. //$query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$tracker['trackerid']."' AND timestamp >= $cTS";
  3072. //$fdate->setTimestamp($lastRecord[0]['timestamp']);
  3073. //$answer [$k] ['datetime'] = $fdate->getFormattedString();
  3074. }
  3075. }
  3076.  
  3077. return $answer;
  3078. }
  3079.  
  3080.  
  3081. public function getWorkingDriversList($fields = "*") {
  3082.  
  3083. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  3084.  
  3085. if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
  3086. $query = "SELECT $fields FROM drivers WHERE tagID NOT LIKE 'EXP%'";
  3087. }else if ($_SESSION['accounttype'] == USERTYPE_FLEET){
  3088. $query = "SELECT $fields FROM drivers WHERE tagID NOT LIKE 'EXP%' AND username=\"$username\"";
  3089. }
  3090.  
  3091. $this->dbclass->execute_query ( $query );
  3092. return $this->dbclass->get_result_complete ();
  3093. }
  3094.  
  3095.  
  3096. public function getFleetStatus() {
  3097. //global $GMONGO;
  3098.  
  3099. $uname = $this->dbclass->get_escape_string ( $_SESSION['username'] );
  3100.  
  3101. if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
  3102. //$query = "SELECT * FROM trackers";
  3103. $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '{$uname}'";
  3104. }else if ($_SESSION['accounttype'] == USERTYPE_FLEET){
  3105. $query = "SELECT * FROM trackersMap WHERE username=\"$uname\"";
  3106. }
  3107.  
  3108. "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '$uname'";
  3109.  
  3110. $this->dbclass->execute_query ( $query );
  3111. $answer = $this->dbclass->get_result_complete ();
  3112.  
  3113. $result = array();
  3114. $result['working'] = array();
  3115. $result['idle'] = array();
  3116. $result['noreport'] = array();
  3117.  
  3118. foreach ($answer as $k =>$v){
  3119. $ans = $this->getMAGLOBALSrecord($v['trackerid']);
  3120. //$ans = $GMONGO->getLastAMRecord($v['trackerid']);
  3121.  
  3122. /*if ($ans != false && isset($ans[0]['TIMESTAMP'])) {
  3123. $ans[0]['timestamp'] = $ans[0]['TIMESTAMP'];
  3124. }*/
  3125.  
  3126. if ($ans == false ) {
  3127. array_push($result['noreport'], $v);
  3128. }else if (time() - $ans[0]['timestamp'] > NEWSPAPER_NON_WORKING_TIME){
  3129. array_push($result['noreport'], $v);
  3130. } else {
  3131.  
  3132. $v['driver'] = $this->getDriverName ( $v['trackerid']);
  3133.  
  3134. if (strpos($ans[0]['IO'],"j") === false ) {
  3135. array_push($result['idle'], $v);
  3136. }else {
  3137. array_push($result['working'], $v);
  3138. }
  3139. }
  3140. }
  3141.  
  3142. return $result;
  3143. }
  3144.  
  3145. public function getIterativeTrackersList() {
  3146.  
  3147. $uname = $this->dbclass->get_escape_string ( $_SESSION['username'] );
  3148.  
  3149. if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR) {
  3150. //$query = "SELECT * FROM trackers";
  3151. $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '$uname'";
  3152. }else if ($_SESSION['accounttype'] == USERTYPE_FLEET){
  3153. $query = "SELECT * FROM trackersMap INNER JOIN trackers using (trackerid) WHERE username=\"$uname\"";
  3154. } else if ($_SESSION['accounttype'] == USERTYPE_CUSTOMERCARE) {
  3155. $query = "SELECT * FROM trackers";
  3156. } else if ($_SESSION['accounttype'] == USERTYPE_FLEETCARE) {
  3157. $QUERY = "SELECT adminUserName from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
  3158. $result = $this->dbclass->execute_query ( $QUERY );
  3159. $un = $this -> dbclass -> get_result_complete();
  3160.  
  3161. $query = "SELECT * FROM adminTrackersMap INNER JOIN trackers using (trackerid) WHERE username = '".$un[0]['adminUserName']."'";
  3162. }
  3163.  
  3164. $result = $this->dbclass->execute_query ( $query );
  3165. return $this->dbclass->get_result_complete ();
  3166. }
  3167.  
  3168. public function getCriticalEvents($durationInSecs) {
  3169. global $TRACKING_EVENTS;
  3170. global $GMONGO;
  3171.  
  3172. $events = $TRACKING_EVENTS->getCriticalEventsList(0, NEWSPAPER_CRITICAL_EVENTS_LEVEL);
  3173. //$events = $TRACKING_EVENTS->getCriticalEventsList(0, 2);
  3174.  
  3175. $answer = $this->getIterativeTrackersList();
  3176. $t = time() - $durationInSecs;
  3177. $cans = array();
  3178. $a = array();
  3179.  
  3180. foreach ($events as $e => $f) {
  3181. array_push($a, "$f->code");
  3182. }
  3183.  
  3184.  
  3185. foreach ($answer as $k =>$v){
  3186. $cans[$v['trackerid']] = array('name' => $v['name'], 'events' => array());
  3187.  
  3188. $ans = $GMONGO->getERecords($v['trackerid'], array('event' => array('$in' => $a), 'timestamp' => array('$gt' => $t)), false);
  3189.  
  3190. if ($ans != false) {
  3191. foreach($ans as $m => $n) {
  3192. $name = $TRACKING_EVENTS->getEventName($n['event']);
  3193. if (isset($cans[$v['trackerid']]['events'][$name])) $cans[$v['trackerid']]['events'][$name]++;
  3194. else $cans[$v['trackerid']]['events'][$name] = 1;
  3195. }
  3196. }
  3197. }
  3198. return $cans;
  3199. }
  3200.  
  3201.  
  3202. public function tracker_getAllEvents($tid, $durationInSecs) {
  3203. global $TRACKING_EVENTS;
  3204. global $GMONGO;
  3205.  
  3206. $t = time() - $durationInSecs;
  3207. $cans = array('cEvents' => array(), 'gEvents' => array());
  3208. $a = array();
  3209.  
  3210. $ans = $GMONGO->getERecords($tid, array('timestamp' => array('$gt' => $t)), false);
  3211.  
  3212. if ($ans != false) {
  3213. foreach($ans as $m => $n) {
  3214. $name = $TRACKING_EVENTS->getEventName($n['event']);
  3215.  
  3216. if ($TRACKING_EVENTS->getCriticalLevel($n['event']) < NEWSPAPER_CRITICAL_EVENTS_LEVEL) {
  3217. //$cans['cEvents'][$n['event']] = $name;
  3218. if (isset($cans['cEvents']['events'][$name])) $cans['cEvents'][$name]++;
  3219. else $cans['cEvents']['events'][$name] = 1;
  3220. }else {
  3221. //$cans['gEvents'][$n['event']] = $name;
  3222. if (isset($cans['gEvents']['events'][$name])) $cans['gEvents']['events'][$name]++;
  3223. else $cans['gEvents']['events'][$name] = 1;
  3224. }
  3225. }
  3226. }
  3227.  
  3228. return $cans;
  3229. }
  3230.  
  3231.  
  3232. public function todaysFleet_getAllEvents($durationInSecs) {
  3233. global $TRACKING_EVENTS;
  3234. global $GMONGO;
  3235.  
  3236. $answer = $this->getIterativeTrackersList();
  3237. $t = time() - $durationInSecs;
  3238. $cans = array();
  3239. $a = array();
  3240.  
  3241. foreach ($answer as $k =>$v){
  3242. $ans = $GMONGO->getERecords($v['trackerid'], array('timestamp' => array('$gt' => $t)), false);
  3243.  
  3244. $cEvents = array();
  3245. $gEvents = array();
  3246. $eventCounter = array();
  3247.  
  3248. if ($ans != false) {
  3249. foreach($ans as $m => $n) {
  3250. $name = $TRACKING_EVENTS->getEventName($n['event']);
  3251. $level = $TRACKING_EVENTS->getCriticalLevel($n['event']);
  3252.  
  3253. //if ($level < NEWSPAPER_CRITICAL_EVENTS_LEVEL) {
  3254. if ($level < 2) {
  3255. $cEvents[$n['event']] = $name;
  3256. }else {
  3257. $gEvents[$n['event']] = $name;
  3258. }
  3259.  
  3260. if (isset($eventCounter[$name])) {
  3261. $eventCounter[$name]->count++;
  3262. }
  3263. else {
  3264. $eventCounter[$name] = new emptyClass();
  3265. $eventCounter[$name]->count = 1;
  3266. $eventCounter[$name]->level = $level;
  3267. }
  3268. }
  3269. $rec = array();
  3270. //$rec['name'] = $v['name'];
  3271. $rec['name'] = $this -> getTrackerName ($v['trackerid'])[0]['name'];
  3272. $rec['tid'] = $v['trackerid'];
  3273. $rec['cEvents'] = implode(",", $cEvents);
  3274. $rec['tCount'] = count($ans);
  3275. $rec['gEvents'] = implode(",", $gEvents);
  3276. $rec['description'] = 'a';
  3277. $rec['rating'] = 'b';
  3278. $rec['evCount'] = $eventCounter;
  3279.  
  3280.  
  3281. array_push($cans, $rec);
  3282. }
  3283. }
  3284.  
  3285. usort($cans, function($a, $b){
  3286. return $b['d'] > $a['d'];
  3287. });
  3288.  
  3289. for ($i = 0; $i < count($cans); $i++)
  3290. $cans[$i]['rowNumber'] = $i+1;
  3291.  
  3292. return $cans;
  3293. }
  3294.  
  3295.  
  3296.  
  3297. public function getFleetDistance($durationInSecs) {
  3298. //global $GMONGO;
  3299.  
  3300. $answer = $this->getIterativeTrackersList();
  3301. $gclient = new FNSGearman();
  3302.  
  3303. $result = array();
  3304. $dresult = array();
  3305. $tlistMapper = array();
  3306.  
  3307. foreach ($answer as $k =>$v){
  3308. $tlistMapper[$v['trackerid']] = $answer[$k];
  3309. $gclient->addTask('todaysFleetDMSI',json_encode(array('tinfo' => $v, 'duration' => $durationInSecs, 'session' => $_SESSION)), null, $v['trackerid']);
  3310. }
  3311. $gclient->runTasks();
  3312.  
  3313. foreach(FNSGearman::$results as $k => $v) {
  3314. $res = json_decode($v, true);
  3315.  
  3316. if (isset($res['td']) && is_array($res['td']) && $res['td']['d'] != 0) {
  3317. $nres = $res['td'];
  3318. $nres['t'] = $k;
  3319. $nres['n'] = $tlistMapper[$k]['name'];
  3320. $result[$k] = $nres;
  3321. }
  3322. if (isset($res['dd']) && is_array($res['dd'])) {
  3323. foreach($res['dd'] as $tagID => $value) {
  3324. if (isset($dresult[$tagID]) == false) {
  3325. $dresult[$tagID] = array('info' => $value['info'], 'time' => $value['time']);
  3326. } else {
  3327. $dresult[$tagID]['time'] += $value['time'];
  3328. }
  3329.  
  3330. }
  3331. }
  3332. }
  3333.  
  3334. usort($result, function($a, $b){
  3335. return $b['d'] > $a['d'];
  3336. });
  3337.  
  3338. usort($dresult, function($a, $b){
  3339. return $b['time'] > $a['time'];
  3340. });
  3341.  
  3342. //print_r(array('td' => $result, 'dd'=>$dresult));
  3343. //die;
  3344.  
  3345. return array('td' => $result, 'dd'=>$dresult);
  3346.  
  3347. }
  3348.  
  3349.  
  3350. public function getTrackersStatus() {
  3351. $trackers = $this->getIterativeTrackersList();
  3352. if ($trackers) {
  3353. $status = array();
  3354.  
  3355. $tcount = count($trackers);
  3356. $fdate = new FNSDateTime($_SESSION['timezone']);
  3357. for ($i = 0; $i < $tcount; $i++) {
  3358. //$trec = $GMONGO->getLastARecord($trackers[$i]['trackerid']);
  3359. $trec = $this->getAGLOBALSrecord($trackers[$i]['trackerid']);
  3360. $tStatus = new trackerStatus();
  3361. $tStatus -> tid = $trackers[$i]['trackerid'];
  3362. $tname = $this->getTrackerName($trackers[$i]['trackerid']);
  3363.  
  3364. $tStatus -> tname = $tname[0]['name'];
  3365. if ($trec != false) {
  3366. $geo = new GEOCODER();
  3367. $fdate -> setDate($trec[0]['date'], $trec[0]['time']);
  3368. $tStatus -> dateTime = $fdate->getFormattedString();
  3369.  
  3370. $ts = $trec [0] ['timestamp'];
  3371.  
  3372. if ((time() - $ts) < NON_WORKING_TRACKER_TIME)
  3373. $tStatus -> status = 'w';
  3374.  
  3375. if (isset ($_GET['doGeocode']) && $_GET['doGeocode'] == 1) {
  3376. $location = $geo -> search($trec[0]['latitude'], $trec[0]['longitude'], true);
  3377. $tStatus -> lastLocation = $location ['location'];
  3378. }
  3379. else{
  3380. $location = ''.$trec[0]['latitude'].', '.$trec[0]['longitude'];
  3381. $tStatus -> lastLocation = $location;
  3382. }
  3383. }
  3384. array_push($status, $tStatus);
  3385. }
  3386.  
  3387. return $status;
  3388. }
  3389.  
  3390. return ERROR;
  3391. }
  3392.  
  3393.  
  3394. public function userTrackersList($username) {
  3395. $uname = $this->dbclass->get_escape_string ( $username );
  3396. $query = "SELECT trackerid FROM trackersMap WHERE username=\"$uname\"";
  3397. $result = $this->dbclass->execute_query ( $query );
  3398. $answer = $this->dbclass->get_result_complete ();
  3399. return $answer;
  3400. }
  3401. public function getFuelProfilesList() {
  3402. $uname = $_SESSION ['username'];
  3403. $query = "SELECT * FROM fuelProfiles";
  3404. //CHANGES MADE ON 26th June 2015 DUE TO LOGICAL GROUPING IN V5
  3405. //$query = "SELECT fuelProfiles.* FROM adminTrackersMap INNER JOIN trackers ON adminTrackersMap.username = \"$uname\" AND adminTrackersMap.trackerid = trackers.trackerid INNER JOIN fuelProfiles ON trackers.name = fuelProfiles.name";
  3406. $result = $this->dbclass->execute_query ( $query );
  3407. $answer = $this->dbclass->get_result_complete ();
  3408. return $answer;
  3409. }
  3410. public function getTemperatureProfilesList() {
  3411. $query = "SELECT * FROM temperatureProfiles";
  3412. $result = $this->dbclass->execute_query ( $query );
  3413. $answer = $this->dbclass->get_result_complete ();
  3414. return $answer;
  3415. }
  3416. public function getMCProfilesList($adminUserName = false) {
  3417. if ($adminUserName == false)
  3418. $query = "SELECT * FROM monitoringCentres";
  3419. else {
  3420. $adminUserName = $this->dbclass->get_escape_string($adminUserName);
  3421. $query = "SELECT * FROM monitoringCentres WHERE adminUserName = '{$adminUserName}'";
  3422. }
  3423.  
  3424. $result = $this->dbclass->execute_query ( $query );
  3425. $answer = $this->dbclass->get_result_complete ();
  3426. return $answer;
  3427. }
  3428. public function trackerid_exist($tidrand) {
  3429. $query = "SELECT COUNT(*) FROM trackers WHERE trackerid=\"$tidrand\"";
  3430. $result = $this->dbclass->execute_query ( $query );
  3431. $answer = $this->dbclass->get_result_complete ();
  3432. if ($answer [0] ["COUNT(*)"] > 0)
  3433. return true;
  3434. return false;
  3435. }
  3436. public function moveTrackerCard($trackerid, $username) {
  3437. $username = $this->dbclass->get_escape_string ( $username );
  3438. $QUERY = "UPDATE trackers SET username=\"$username\",logicalGroup=\"DEFAULT\" WHERE trackerid=\"{$trackerid}\"";
  3439. $this->dbclass->execute_query ( $QUERY );
  3440. }
  3441. public function addPublicTracker($trackerid, $username) {
  3442. $username = $this->dbclass->get_escape_string ( $username );
  3443.  
  3444. $QUERY = "SELECT COUNT(*) FROM publicmaps WHERE username=\"$username\" AND trackerid=\"{$trackerid}\"";
  3445. $result = $this->dbclass->execute_query ( $QUERY );
  3446. $answer = $this->dbclass->get_result_complete ();
  3447.  
  3448. if ($answer [0] ["COUNT(*)"] > 0)
  3449. return true;
  3450.  
  3451. $QUERY = "INSERT INTO publicmaps SET username=\"$username\",trackerid=\"{$trackerid}\"";
  3452. $this->dbclass->execute_query ( $QUERY );
  3453. }
  3454. public function removePublicTracker($trackerid, $username) {
  3455. $username = $this->dbclass->get_escape_string ( $username );
  3456. $QUERY = "DELETE FROM publicmaps WHERE username=\"$username\" AND trackerid=\"{$trackerid}\"";
  3457. $this->dbclass->execute_query ( $QUERY );
  3458. }
  3459. public function cleanTracker($trackerid, $sDate, $sTime, $eDate, $eTime) {
  3460. $periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
  3461.  
  3462. $tblStart = array (
  3463. "A",
  3464. "E",
  3465. "M"
  3466. );
  3467. for($i = 0; $i < count ( $tblStart ); $i ++) {
  3468. $QUERY = "DELETE FROM " . $tblStart [$i] . $trackerid . " WHERE $periodClause";
  3469. $this->dbclass->execute_query ( $QUERY );
  3470.  
  3471. // $QUERY = "OPTIMIZE TABLE " . $tblStart [$i] . $trackerid;
  3472. // $this->dbclass->execute_query ( $QUERY );
  3473.  
  3474. $QUERY = "ALTER TABLE " . $tblStart [$i] . $trackerid . " DROP PRIMARY KEY, DROP COLUMN id";
  3475. $this->dbclass->execute_query ( $QUERY );
  3476.  
  3477. $QUERY = "ALTER TABLE " . $tblStart [$i] . $trackerid . " ADD COLUMN id bigint auto_increment primary key first";
  3478. $this->dbclass->execute_query ( $QUERY );
  3479. }
  3480. }
  3481.  
  3482. public function checkDriverLogin($user, $pass) {
  3483. $user = $this->dbclass->get_escape_string($user);
  3484. $QUERY = "SELECT tagID,name,lpass,licno FROM drivers WHERE luser=\"$user\"";
  3485. $this->dbclass->execute_query ( $QUERY );
  3486. $ans = $this->dbclass->get_result_complete();
  3487.  
  3488. if ($ans == false) return ERROR;
  3489.  
  3490. if ($ans[0]['lpass'] == $pass) {
  3491. return $ans[0];
  3492. }
  3493. return ERROR;
  3494. }
  3495.  
  3496.  
  3497. public function getEJMS_PreInsList($username) {
  3498. $username = $this->dbclass->get_escape_string($username);
  3499. $QUERY = "SELECT id, data FROM ejmspreins WHERE username=\"$username\"";
  3500. $this->dbclass->execute_query ( $QUERY );
  3501. return $this->dbclass->get_result_complete();
  3502. }
  3503.  
  3504. public function getEJMS_PreInsRecord($username, $id) {
  3505. $username = $this->dbclass->get_escape_string($username);
  3506. $id = $this->dbclass->get_escape_string($id);
  3507. $QUERY = "SELECT data FROM ejmspreins WHERE username=\"$username\" AND id = \"$id\"";
  3508.  
  3509. $this->dbclass->execute_query ( $QUERY );
  3510. return $this->dbclass->get_result_complete();
  3511. }
  3512.  
  3513. public function updateEJMS_PreInsRecord($username, $id, $data) {
  3514. $username = $this->dbclass->get_escape_string($username);
  3515. $id = $this->dbclass->get_escape_string($id);
  3516. $data = $this->dbclass->get_escape_string($data);
  3517. $QUERY = "UPDATE ejmspreins SET data='$data' WHERE id=\"$id\" AND username='$username'";
  3518.  
  3519. $this->dbclass->execute_query ( $QUERY );
  3520. return $id;
  3521. }
  3522.  
  3523. public function deleteEJMS_PreInsRecord($username, $id) {
  3524. $id = $this->dbclass->get_escape_string($id);
  3525. $username = $this->dbclass->get_escape_string($username);
  3526. $QUERY = "DELETE FROM ejmspreins WHERE id=\"$id\" AND username=\"$username\"";
  3527. $this->dbclass->execute_query ( $QUERY );
  3528. return SUCCESS;
  3529. }
  3530.  
  3531. public function eJMSPreInspectionStore($username, $data) {
  3532. $username = $this->dbclass->get_escape_string($username);
  3533. $data = $this->dbclass->get_escape_string($data);
  3534.  
  3535. $QUERY = "INSERT INTO ejmspreins SET id = 0, username=\"$username\",data=\"$data\"";
  3536. $this->dbclass->execute_query ( $QUERY );
  3537. return $this->dbclass->get_insert_id();
  3538. }
  3539.  
  3540. public function cleanDatabase($sDate, $sTime, $eDate, $eTime) {
  3541. global $GMONGO;
  3542. //if ($_SESSION['accounttype'] == USERTYPE_SUPERUSER)
  3543. $query = "SELECT trackerid FROM trackers";
  3544. /*elseif ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
  3545. $query = "SELECT trackerid ";*/
  3546. $result = $this->dbclass->execute_query ( $query );
  3547. $answer = $this->dbclass->get_result_complete ();
  3548. if ($answer == false)
  3549. return false;
  3550.  
  3551. $tc = count ( $answer );
  3552.  
  3553. for($i = 0; $i < $tc; $i ++) {
  3554. //$this->cleanTracker ( $answer [$i] ['trackerid'], $sDate, $sTime, $eDate, $eTime );
  3555. $GMONGO->cleanTracker( $answer [$i] ['trackerid'], $sDate, $sTime, $eDate, $eTime );
  3556. }
  3557. return true;
  3558. }
  3559. private function deactivateUserFences($uname) {
  3560. // $uname = $this->dbclass->get_escape_string($uname);
  3561. // Username is already espaced
  3562. $query = "SELECT * FROM activeGeofences WHERE username='{$uname}'";
  3563. $this->dbclass->execute_query ( $query );
  3564. $answer = $this->dbclass->get_result_complete ();
  3565.  
  3566. if ($answer == false)
  3567. return;
  3568.  
  3569. $fcount = count ( $answer );
  3570.  
  3571. for($i = 0; $i < $fcount; $i ++) {
  3572. $query = "INSERT INTO ACTIVEGEO_CACHE (id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,operation) select id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,'D' from activeGeofences where id=" . $answer [$i] ['id'];
  3573. $this->dbclass->execute_query ( $query );
  3574. $query = "DELETE FROM activeGeofences WHERE id=" . $answer [$i] ['id'];
  3575. $this->dbclass->execute_query ( $query );
  3576. }
  3577. }
  3578. public function deactivateTrackerFences($trackerid) {
  3579. $query = "SELECT * FROM activeGeofences WHERE trackerid='{$trackerid}'";
  3580. $this->dbclass->execute_query ( $query );
  3581. $answer = $this->dbclass->get_result_complete ();
  3582.  
  3583. if ($answer == false)
  3584. return;
  3585.  
  3586. $fcount = count ( $answer );
  3587.  
  3588. for($i = 0; $i < $fcount; $i ++) {
  3589. $query = "INSERT INTO ACTIVEGEO_CACHE (id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,operation) select id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,'D' from activeGeofences where id=" . $answer [$i] ['id'];
  3590. $this->dbclass->execute_query ( $query );
  3591. $query = "DELETE FROM activeGeofences WHERE id=" . $answer [$i] ['id'];
  3592. $this->dbclass->execute_query ( $query );
  3593. }
  3594. }
  3595. public function deactivateUserTrackerFences($uname, $trackerid) {
  3596. $uname = $this->dbclass->get_escape_string ( $uname );
  3597. $query = "SELECT id FROM activeGeofences WHERE username='{$uname}' AND trackerid='{$trackerid}'";
  3598. $this->dbclass->execute_query ( $query );
  3599. $answer = $this->dbclass->get_result_complete ();
  3600.  
  3601. if ($answer == false)
  3602. return;
  3603.  
  3604. $fcount = count ( $answer );
  3605.  
  3606. for($i = 0; $i < $fcount; $i ++) {
  3607. $query = "INSERT INTO ACTIVEGEO_CACHE (id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,operation) select id,geoid,username,fencename,trackerid,sdate,shr,smin,edate,ehr,emin,speedLimit,actType,timezone,weekDays,monthDays,'D' from activeGeofences where id=" . $answer [$i] ['id'];
  3608. $this->dbclass->execute_query ( $query );
  3609. $query = "DELETE FROM activeGeofences WHERE id=" . $answer [$i] ['id'];
  3610. $this->dbclass->execute_query ( $query );
  3611. }
  3612. }
  3613. private function deactivateTrackerPaths($trackerid) {
  3614. $query = "SELECT * FROM ACTIVEPATH WHERE trackerid='{$trackerid}'";
  3615. $this->dbclass->execute_query ( $query );
  3616. $answer = $this->dbclass->get_result_complete ();
  3617.  
  3618. if ($answer == false)
  3619. return;
  3620.  
  3621. $fcount = count ( $answer );
  3622.  
  3623. for($i = 0; $i < $fcount; $i ++) {
  3624. $record = $answer [$i];
  3625.  
  3626. $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
  3627. $uname = $this->dbclass->get_escape_string ( $record ['username'] );
  3628.  
  3629. $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' AND fencename='{$fname}' AND trackerid='{$record['trackerid']}' AND sdate='{$record['sdate']}' AND ";
  3630. $query .= "edate='{$record['edate']}' AND alertOffRoute ='{$record['alertOffRoute']}' AND daysGap='{$record['daysGap']}' AND speedLimit='{$record['speedLimit']}' AND stime='{$record['stime']}' AND etime='{$record['etime']}'";
  3631. $this->dbclass->execute_query ( $query );
  3632. }
  3633. }
  3634. public function deactivateUserTrackerPaths($uname, $trackerid) {
  3635. $uname = $this->dbclass->get_escape_string ( $uname );
  3636. $query = "SELECT * FROM ACTIVEPATH WHERE username = '$uname' and trackerid='{$trackerid}'";
  3637. $this->dbclass->execute_query ( $query );
  3638. $answer = $this->dbclass->get_result_complete ();
  3639.  
  3640. if ($answer == false)
  3641. return;
  3642.  
  3643. $fcount = count ( $answer );
  3644.  
  3645. for($i = 0; $i < $fcount; $i ++) {
  3646. $record = $answer [$i];
  3647.  
  3648. $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
  3649. $uname = $this->dbclass->get_escape_string ( $record ['username'] );
  3650.  
  3651. $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' AND fencename='{$fname}' AND trackerid='{$record['trackerid']}' AND sdate='{$record['sdate']}' AND ";
  3652. $query .= "edate='{$record['edate']}' AND alertOffRoute ='{$record['alertOffRoute']}' AND daysGap='{$record['daysGap']}' AND speedLimit='{$record['speedLimit']}' AND stime='{$record['stime']}' AND etime='{$record['etime']}'";
  3653. $this->dbclass->execute_query ( $query );
  3654. }
  3655. }
  3656. public function removeTrackerCard($trackerid) {
  3657. global $GMONGO;
  3658.  
  3659. $this->deactivateTrackerFences ( $trackerid );
  3660. $this->deactivateTrackerPaths ( $trackerid );
  3661.  
  3662. $QUERY = "DELETE FROM archiveFences WHERE trackerid=\"{$trackerid}\"";
  3663. $this->dbclass->execute_query ( $QUERY );
  3664.  
  3665. $QUERY = "DELETE FROM remindersCache WHERE trackerid=\"{$trackerid}\"";
  3666. $this->dbclass->execute_query ( $QUERY );
  3667.  
  3668. $QUERY = "DELETE FROM reportSchedules WHERE trackerid=\"{$trackerid}\"";
  3669. $this->dbclass->execute_query ( $QUERY );
  3670.  
  3671. $QUERY = "DELETE FROM schedules WHERE trackerid=\"{$trackerid}\"";
  3672. $this->dbclass->execute_query ( $QUERY );
  3673.  
  3674. $QUERY = "DELETE FROM trips WHERE trackerid=\"{$trackerid}\"";
  3675. $this->dbclass->execute_query ( $QUERY );
  3676.  
  3677. $QUERY = "DELETE FROM alertSettings WHERE trackerid=\"{$trackerid}\"";
  3678. $this->dbclass->execute_query ( $QUERY );
  3679.  
  3680. $QUERY = "DELETE FROM trackers WHERE trackerid=\"{$trackerid}\"";
  3681. $this->dbclass->execute_query ( $QUERY );
  3682.  
  3683. $QUERY = "DELETE FROM trackersMap WHERE trackerid=\"{$trackerid}\"";
  3684. $this->dbclass->execute_query ( $QUERY );
  3685.  
  3686. $QUERY = "DELETE FROM odoTuning WHERE trackerid=\"{$trackerid}\"";
  3687. $this->dbclass->execute_query ( $QUERY );
  3688.  
  3689. $QUERY = "DELETE FROM trackersExInfo WHERE trackerid=\"{$trackerid}\"";
  3690. $this->dbclass->execute_query ( $QUERY );
  3691.  
  3692. $QUERY = "DELETE FROM trackersNotifications WHERE trackerid=\"{$trackerid}\"";
  3693. $this->dbclass->execute_query ( $QUERY );
  3694.  
  3695. $QUERY = "DELETE FROM trackersFeatures WHERE trackerid=\"{$trackerid}\"";
  3696. $this->dbclass->execute_query ( $QUERY );
  3697.  
  3698. $QUERY = "DELETE FROM trackersDetails WHERE trackerid=\"{$trackerid}\"";
  3699. $this->dbclass->execute_query ( $QUERY );
  3700.  
  3701. $QUERY = "DELETE FROM alertSettings WHERE trackerid=\"{$trackerid}\"";
  3702. $this->dbclass->execute_query ( $QUERY );
  3703.  
  3704. $QUERY = "DELETE FROM reminders WHERE trackerid=\"{$trackerid}\"";
  3705. $this->dbclass->execute_query ( $QUERY );
  3706.  
  3707. $QUERY = "DELETE FROM napt WHERE vehicleid=\"{$trackerid}\"";
  3708. $this->dbclass->execute_query ( $QUERY );
  3709.  
  3710. $QUERY = "DELETE FROM driverMaps WHERE trackerid=\"{$trackerid}\"";
  3711. $this->dbclass->execute_query ( $QUERY );
  3712.  
  3713. $query = "DELETE FROM adminTrackersMap WHERE trackerid = \"{$trackerid}\""; //Added in V5
  3714. $this->dbclass->execute_query ( $query );
  3715.  
  3716. $QUERY = "DROP TABLE IF EXISTS A{$trackerid}";
  3717. $this->dbclass->execute_query ( $QUERY );
  3718.  
  3719. $GMONGO -> dropCollectionA($trackerid);
  3720.  
  3721. $QUERY = "DROP TABLE IF EXISTS M{$trackerid}";
  3722. $this->dbclass->execute_query ( $QUERY );
  3723.  
  3724. $GMONGO -> dropCollectionM($trackerid);
  3725.  
  3726. $QUERY = "DROP TABLE IF EXISTS E{$trackerid}";
  3727. $this->dbclass->execute_query ( $QUERY );
  3728.  
  3729. $GMONGO -> dropCollectionE($trackerid);
  3730.  
  3731. $QUERY = "DROP TABLE IF EXISTS R{$trackerid}";
  3732. $this->dbclass->execute_query ( $QUERY );
  3733.  
  3734. $QUERY = "DROP TABLE IF EXISTS RN{$trackerid}";
  3735. $this->dbclass->execute_query ( $QUERY );
  3736.  
  3737. $QUERY = "DROP TABLE IF EXISTS RT{$trackerid}";
  3738. $this->dbclass->execute_query ( $QUERY );
  3739.  
  3740. $filename = TRACKER_IMAGES_FOLDER . "/T{$trackerid}.png";
  3741. if (file_exists ( $filename ))
  3742. unlink ( $filename );
  3743. }
  3744.  
  3745.  
  3746. public function backupDatabase_zip($download, $store) {
  3747. global $GMONGO;
  3748. $name = $this->dbclass->perform_backup ();
  3749. $arr = explode ( "/", $name );
  3750. $myfname = $arr [count ( $arr ) - 1];
  3751.  
  3752. $mongoname = $GMONGO->performMongoBackup();
  3753.  
  3754. //$fname = $mongoname = BACKUP_FOLDER.'/backup';
  3755.  
  3756. $arr = explode ( "/", $mongoname );
  3757. $mongofname = $arr [count ( $arr ) - 1];
  3758.  
  3759. //$query = "INSERT INTO backup_log SET filename = \"{$fname}.gz\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
  3760. $query = "INSERT INTO backup_log SET filename = \"{$mongofname}.zip\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
  3761. $this->dbclass->execute_query ( $query );
  3762.  
  3763. $mongoname = realpath($mongoname);
  3764. $files = new RecursiveIteratorIterator(
  3765. new RecursiveDirectoryIterator($mongoname),
  3766. RecursiveIteratorIterator::LEAVES_ONLY
  3767. );
  3768.  
  3769. $zip = new ZipArchive();
  3770. $file_name = "{$mongoname}.zip";
  3771.  
  3772. $res = $zip->open($file_name, ZipArchive::CREATE);
  3773. if ($res === true) {
  3774. $zip->addFile($name, $myfname);
  3775. foreach ($files as $names => $file) {
  3776. if (!$file->isDir()) {
  3777. $filePath = $file->getRealPath();
  3778. $relativePath = substr($filePath, strlen($mongofname) + 1);
  3779. $zip->addFile($filePath, $relativePath);
  3780. }
  3781. }
  3782. $zip->close();
  3783. } else return ERROR;
  3784.  
  3785. if ($download == "1") {
  3786. header ( 'Content-Description: File Transfer' );
  3787. header ( 'Content-Type: application/octet-stream' );
  3788. header ( 'Content-Disposition: attachment; filename=' . basename ( $file_name ) );
  3789. header ( 'Content-Transfer-Encoding: binary' );
  3790. header ( 'Expires: 0' );
  3791. header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
  3792. header ( 'Pragma: public' );
  3793. header ( 'Content-Length: ' . filesize ( $file_name ) );
  3794. ob_clean ();
  3795. flush ();
  3796.  
  3797. $fp = fopen ( $file_name, "rb" );
  3798. while ( ! feof ( $fp ) ) {
  3799. print fread ( $fp, 1024 * 512 );
  3800. }
  3801. fclose ( $fp );
  3802. } // if
  3803.  
  3804. if ($store != "1") {
  3805. unlink ( $file_name );
  3806. } // if
  3807. $cmd = "rm -R $mongoname $name";
  3808. system ( $cmd );
  3809. }
  3810.  
  3811.  
  3812. public function backupDatabase($download, $store) {
  3813. $name = $this->dbclass->perform_backup ();
  3814. $arr = explode ( "/", $name );
  3815. $fname = $arr [count ( $arr ) - 1];
  3816.  
  3817. $query = "INSERT INTO backup_log SET filename = \"{$fname}.gz\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
  3818. $this->dbclass->execute_query ( $query );
  3819.  
  3820. $cmd = "gzip $name";
  3821. system ( $cmd );
  3822.  
  3823. $file_name = "{$name}.gz";
  3824.  
  3825. if ($download == "1") {
  3826. header ( 'Content-Description: File Transfer' );
  3827. header ( 'Content-Type: application/octet-stream' );
  3828. header ( 'Content-Disposition: attachment; filename=' . basename ( $file_name ) );
  3829. header ( 'Content-Transfer-Encoding: binary' );
  3830. header ( 'Expires: 0' );
  3831. header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
  3832. header ( 'Pragma: public' );
  3833. header ( 'Content-Length: ' . filesize ( $file_name ) );
  3834. ob_clean ();
  3835. flush ();
  3836.  
  3837. $fp = fopen ( $file_name, "rb" );
  3838. while ( ! feof ( $fp ) ) {
  3839. print fread ( $fp, 1024 * 512 );
  3840. }
  3841. fclose ( $fp );
  3842. } // if
  3843.  
  3844. if ($store != "1") {
  3845. unlink ( $file_name );
  3846. } // if
  3847. }
  3848. public function backupMongoDatabase($download, $store) {
  3849. global $GMONGO;
  3850. //$name = $this->dbclass->perform_backup ();
  3851. $name = $GMONGO->performMongoBackup();
  3852. $arr = explode ( "/", $name );
  3853. $fname = $arr [count ( $arr ) - 1];
  3854.  
  3855. $query = "INSERT INTO backup_log SET filename = \"{$fname}.gz\", stored = $store, datetime = UTC_TIMESTAMP, downloaded = $download";
  3856. $this->dbclass->execute_query ( $query );
  3857.  
  3858. //$cmd = "gzip $name";
  3859. $cmd = "tar -czf {$name}.gz $name";
  3860. system ( $cmd );
  3861.  
  3862. /*$cmd = "rm -R $name";
  3863. system ( $cmd );*/
  3864.  
  3865. $file_name = "{$name}.gz";
  3866.  
  3867. if ($download == "1") {
  3868. header ( 'Content-Description: File Transfer' );
  3869. header ( 'Content-Type: application/octet-stream' );
  3870. header ( 'Content-Disposition: attachment; filename=' . basename ( $file_name ) );
  3871. header ( 'Content-Transfer-Encoding: binary' );
  3872. header ( 'Expires: 0' );
  3873. header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
  3874. header ( 'Pragma: public' );
  3875. header ( 'Content-Length: ' . filesize ( $file_name ) );
  3876. ob_clean ();
  3877. flush ();
  3878.  
  3879. $fp = fopen ( $file_name, "rb" );
  3880. while ( ! feof ( $fp ) ) {
  3881. print fread ( $fp, 1024 * 512 );
  3882. }
  3883. fclose ( $fp );
  3884. } // if
  3885.  
  3886. if ($store != "1") {
  3887. unlink ( $file_name );
  3888. } // if
  3889.  
  3890. }
  3891. public function saveFuelProfile() {
  3892. $query = "REPLACE INTO fuelProfiles SET ";
  3893. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  3894. $result = $this->dbclass->execute_query ( $query );
  3895.  
  3896. if ($result != true) {
  3897. //return $query . mysql_error ( $this->dbclass->dblink );
  3898. return $query . $this->dbclass->dblink->error;
  3899. }
  3900.  
  3901. return SUCCESS;
  3902. }
  3903. public function saveTemperatureProfile() {
  3904. $query = "REPLACE INTO temperatureProfiles SET ";
  3905. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  3906. $result = $this->dbclass->execute_query ( $query );
  3907.  
  3908. if ($result != true) {
  3909. //return $query . mysql_error ( $this->dbclass->dblink );
  3910. return $query . $this->dbclass->dblink->error;
  3911. }
  3912.  
  3913. return SUCCESS;
  3914. }
  3915. public function saveMCProfile() {
  3916. $query = "REPLACE INTO monitoringCentres SET ";
  3917. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  3918. $result = $this->dbclass->execute_query ( $query );
  3919.  
  3920. if ($result != true) {
  3921. //return $query . mysql_error ( $this->dbclass->dblink );
  3922. return $query . $this->dbclass->dblink->error;
  3923. }
  3924.  
  3925. $tblName = $_POST ['shortName'];
  3926. $query = "CREATE TABLE IF NOT EXISTS $tblName LIKE mcTable";
  3927. $result = $this->dbclass->execute_query ( $query );
  3928.  
  3929. return SUCCESS;
  3930. }
  3931. public function removeMCProfile($name) {
  3932. $name = $this->dbclass->get_escape_string ( $name );
  3933. $query = "DELETE FROM monitoringCentres WHERE shortName=\"$name\"";
  3934. $result = $this->dbclass->execute_query ( $query );
  3935.  
  3936. $query = "DROP TABLE \"$name\"";
  3937. $result = $this->dbclass->execute_query ( $query );
  3938.  
  3939. $query = "UPDATE trackersExInfo SET monitoringCentre=NULL WHERE monitoringCentre=\"$name\"";
  3940. $result = $this->dbclass->execute_query ( $query );
  3941. }
  3942. public function removeFuelProfile($name) {
  3943. $name = $this->dbclass->get_escape_string ( $name );
  3944. $query = "DELETE FROM fuelProfiles WHERE name=\"$name\"";
  3945. $result = $this->dbclass->execute_query ( $query );
  3946. }
  3947. public function removeTemperatureProfile($name) {
  3948. $name = $this->dbclass->get_escape_string ( $name );
  3949. $query = "DELETE FROM temperatureProfiles WHERE name=\"$name\"";
  3950. $result = $this->dbclass->execute_query ( $query );
  3951. }
  3952.  
  3953. public function updatePassword($user, $pass) {
  3954. $username = $this->dbclass->get_escape_string ( $user);
  3955. $password = $this->dbclass->get_escape_string ( $pass);
  3956.  
  3957. $query = "UPDATE Users SET password = \"$password\" WHERE username=\"$username\"";
  3958. $result = $this->dbclass->execute_query ( $query );
  3959. return 1;
  3960. }
  3961.  
  3962. public function modifyPassword($curr, $pass) {
  3963. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  3964.  
  3965. $query = "SELECT password FROM Users Where username=\"$username\"";
  3966. $result = $this->dbclass->execute_query ( $query );
  3967. $answer = $this->dbclass->get_result_complete ();
  3968. if ($answer == false)
  3969. return - 1;
  3970.  
  3971. if ($answer [0] ['password'] != $curr)
  3972. return 0;
  3973.  
  3974. $pass = $this->dbclass->get_escape_string ( $pass );
  3975. $QUERY = "UPDATE Users SET password=\"$pass\" WHERE username=\"$username\"";
  3976. $this->dbclass->execute_query ( $QUERY );
  3977.  
  3978. return 1;
  3979. }
  3980. public function saveSystemPreferences() {
  3981. $query = "UPDATE languages SET selected =0";
  3982. $result = $this->dbclass->execute_query ( $query );
  3983.  
  3984. $query = "UPDATE languages SET selected =1 where lcode=\"{$_POST['defaultLanguage']}\"";
  3985. $result = $this->dbclass->execute_query ( $query );
  3986.  
  3987. $query = "UPDATE systemPreferences SET ";
  3988. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  3989. $result = $this->dbclass->execute_query ( $query );
  3990.  
  3991. if ($result != true) {
  3992. //return $query . mysql_error ( $this->dbclass->dblink );
  3993. return $query . $this->dbclass->dblink->error;
  3994. }
  3995.  
  3996. return SUCCESS;
  3997. }
  3998. public function getUserPreferences() {
  3999. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4000. $QUERY = "SELECT * FROM userPreferences WHERE username=\"$username\"";
  4001. $this->dbclass->execute_query ( $QUERY );
  4002. return $this->dbclass->get_result_complete ();
  4003. }
  4004. public function getAdminPreferences() {
  4005. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4006. $QUERY = "SELECT * FROM adminPreferences WHERE username=\"$username\"";
  4007. $this->dbclass->execute_query ( $QUERY );
  4008. return $this->dbclass->get_result_complete ();
  4009. }
  4010. public function getUTrackersDetails($tid) {
  4011. $QUERY = "SELECT * FROM trackers LEFT JOIN trackersDetails USING(trackerid) WHERE trackerid=\"{$tid}\"";
  4012. $this->dbclass->execute_query ( $QUERY );
  4013. return $this->dbclass->get_result_complete ();
  4014. }
  4015. public function getTEventsSettings($tid) {
  4016. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4017. $QUERY = "SELECT * FROM alertSettings WHERE trackerid=\"$tid\" AND username=\"$uname\"";
  4018. $this->dbclass->execute_query ( $QUERY );
  4019. return $this->dbclass->get_result_complete ();
  4020. }
  4021. public function saveTEventsSettings($tid) {
  4022. $QUERY = "SELECT MAX(id) FROM alertSettings WHERE trackerid=\"{$_POST['trackerid']}\" and (type=\"{$_POST['type']}\" or id=\"{$_POST['id']}\")";
  4023. $this->dbclass->execute_query ( $QUERY );
  4024. $ans = $this->dbclass->get_result_complete ();
  4025.  
  4026. if ($ans [0] ['MAX(id)'] != NULL) {
  4027. if ($_POST ['id'] != $ans [0] ['MAX(id)'])
  4028. return EXISTS;
  4029. $prefix = "UPDATE";
  4030. $returnID = $_POST ['id'];
  4031. $postfix = " WHERE trackerid=\"{$_POST['trackerid']}\" and id=\"{$_POST['id']}\"";
  4032. } else {
  4033. if ($_POST ['id'] != 0)
  4034. return ERROR;
  4035. $returnID = $_POST ['id'] = 0;
  4036. $prefix = "INSERT INTO";
  4037. $postfix = "";
  4038. }
  4039.  
  4040. $_POST ['timezone'] = $_SESSION ['timezone'];
  4041. $_POST ['username'] = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4042. $query = $prefix . " alertSettings SET ";
  4043. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  4044. $query .= $postfix;
  4045. $result = $this->dbclass->execute_query ( $query );
  4046.  
  4047. if (! $returnID)
  4048. $returnID = $this->dbclass->dblink->insert_id;
  4049. return $returnID;
  4050. }
  4051. public function removeTEventsSettings($tid, $id) {
  4052. $QUERY = "DELETE FROM alertSettings WHERE trackerid=\"{$tid}\" AND id=\"{$id}\"";
  4053. $this->dbclass->execute_query ( $QUERY );
  4054. }
  4055. public function removeUserTrackerAlerts($uname, $tid) {
  4056. $QUERY = "SELECT id FROM alertSettings WHERE trackerid=\"$tid\" AND username=\"$uname\"";
  4057. $this->dbclass->execute_query ( $QUERY );
  4058. $ans = $this->dbclass->get_result_complete ();
  4059. if ($ans == false)
  4060. return;
  4061.  
  4062. foreach ( $ans as $v ) {
  4063. $QUERY = "DELETE FROM alertSettings WHERE id=\"{$v['id']}\"";
  4064. $this->dbclass->execute_query ( $QUERY );
  4065. }
  4066. }
  4067. public function saveUTrackerDetails() {
  4068. $tname = $this->dbclass->get_escape_string ( $_POST ['name'] );
  4069. $tid = $this->dbclass->get_escape_string ( $_POST ['trackerid'] );
  4070.  
  4071. unset ( $_POST ['name'] );
  4072. unset ( $_POST ['imei'] );
  4073. unset ( $_POST ['username'] );
  4074. unset ( $_POST ['type'] );
  4075. unset ( $_POST ['simno'] );
  4076. unset ( $_POST ['trackerType'] );
  4077. unset ( $_POST ['fileData'] );
  4078.  
  4079. $query = "REPLACE INTO trackersDetails SET ";
  4080. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  4081. $result = $this->dbclass->execute_query ( $query );
  4082.  
  4083. if ($result == false) {
  4084. //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
  4085. $this->writeDebugLog ( $this->dbclass->dblink->error );
  4086. return ERROR;
  4087. }
  4088.  
  4089. $query = "UPDATE trackers SET name=\"$tname\" WHERE trackerid=\"{$tid}\"";
  4090. $result = $this->dbclass->execute_query ( $query );
  4091.  
  4092. if ($result == false) {
  4093. //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
  4094. $this->writeDebugLog ( $this->dbclass->dblink->error );
  4095. return ERROR;
  4096. }
  4097.  
  4098. return SUCCESS;
  4099. }
  4100. public function updateCompleteReminderCache($nCache) {
  4101. $QUERY = "DELETE FROM remindersCache WHERE cacheCounter != \"$nCache\"";
  4102. $this->dbclass->execute_query ( $QUERY );
  4103. }
  4104. public function updateReminderCacheRec($nc, $tid, $id, $date, $time, $cdist, $enhr) {
  4105. $QUERY = "UPDATE remindersCache SET cacheCounter = \"$nc\", date=\"$date\", time=\"$time\", cDistance=\"$cdist\", engineHrs = \"$enhr\" WHERE id=\"$id\"";
  4106. $result = $this->dbclass->execute_query ( $QUERY );
  4107. if ($result == false) {
  4108. //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
  4109. $this->writeDebugLog ( $this->dbclass->dblink->error );
  4110. }
  4111. }
  4112. public function insertReminderCacheRec($id, $nc, $tid, $sdate, $dist, $date, $time, $cdist, $enhr) {
  4113. $query = "INSERT INTO remindersCache SET id = \"$id\", cacheCounter=\"$nc\", trackerid=\"$tid\", sDate=\"$sdate\", date=\"$date\", time=\"$time\", cDistance=\"$cdist\", distance=\"$dist\", engineHrs = \"$enhr\"";
  4114. $result = $this->dbclass->execute_query ( $query );
  4115. if ($result == false) {
  4116. //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
  4117. $this->writeDebugLog ( $this->dbclass->dblink->error );
  4118. }
  4119. }
  4120. public function removeReminderCacheRec($id) {
  4121. $QUERY = "DELETE FROM remindersCache WHERE id=\"$id\"";
  4122. $result = $this->dbclass->execute_query ( $QUERY );
  4123. if ($result == false) {
  4124. //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
  4125. $this->writeDebugLog ( $this->dbclass->dblink->error );
  4126. }
  4127. }
  4128. public function getReminderCacheRec($id) {
  4129. $QUERY = "SELECT * FROM remindersCache WHERE id=\"$id\"";
  4130. $this->dbclass->execute_query ( $QUERY );
  4131. $answer = $this->dbclass->get_result_complete ();
  4132. return $answer;
  4133. }
  4134. public function getRC_counter() {
  4135. $QUERY = "SELECT MAX(cacheCounter) FROM remindersCache";
  4136. $this->dbclass->execute_query ( $QUERY );
  4137. return $this->dbclass->get_result_complete ();
  4138. }
  4139.  
  4140. public function insertExpiredReminders ($record, $mailStatus) {
  4141. $QUERY = "INSERT INTO expiredReminders SET reminderid = ".$record['id'].", username = '".$record['username']."', trackerid = '".$record['trackerid']."', startDate = '".$record['startDate']."', basedOn = '".$record['basedOn']."', endDate = '".$record['endDate'];
  4142. $QUERY .= ", distance = '".$record['distance'].", reminderDate = '".$record['reminderDate']."', remarks = '".$record['remarks']."', engineHrs = '".$record['engineHrs']."', language = '".$record['language']."', engInputs = '".$record['engInputs'];
  4143. $QUERY .= "', timezone = '".$record['timezone']."', mailStatus = $mailStatus";
  4144. $this->dbclass->execute_query($QUERY);
  4145.  
  4146. return $this->dbclass->get_result_complete();
  4147. }
  4148.  
  4149. public function saveTrackerWorkSchedule ($tid, $schedule) {
  4150. $tid = $this->dbclass->get_escape_string($tid);
  4151. $schedule = $this->dbclass->get_escape_string($schedule);
  4152. $query = 'UPDATE trackersFeatures SET workSchedule = "'.$schedule.'" WHERE trackerid = "'.$tid.'"';
  4153. return $this->dbclass->execute_query($query);
  4154. }
  4155.  
  4156. public function getTrackerWorkingSchedule ($trackeid) {
  4157. $query = 'SELECT workSchedule FROM trackersFeatures WHERE trackerid = "'.$trackeid.'"';
  4158. $this->dbclass->execute_query($query);
  4159. $answer = $this->dbclass->get_result_complete();
  4160.  
  4161. $result = json_decode($answer[0]['workSchedule'], true);
  4162.  
  4163. return $result;
  4164. }
  4165.  
  4166. public function getNextRecord() {
  4167. if ($this->oldARecord == false)
  4168. $drow = $this->dbclass->get_result_row ();
  4169. else
  4170. $drow = $this->oldARecord;
  4171.  
  4172. if ($drow == false) {
  4173. if (isset ( $this->result1 ) && gettype ( $this->result1 ) == "resource") {
  4174. mysql_free_result ( $this->result1 );
  4175. unset ( $this->result1 );
  4176. }
  4177.  
  4178. if ($this->COMBINE_MODE == RECORD_EXISTS) {
  4179. if (isset ( $this->result2 ) && gettype ( $this->result2 ) == "resource") {
  4180. mysql_free_result ( $this->result2 );
  4181. unset ( $this->result2 );
  4182. }
  4183. return false;
  4184. }
  4185. }
  4186.  
  4187. if (isset ( $this->result2 ) && gettype ( $this->result2 ) == "resource") {
  4188. while ( 1 ) {
  4189.  
  4190. if ($this->oldMRecord == false) {
  4191. $mrow = $this->dbclass_2->get_result_row ();
  4192. } else {
  4193. $mrow = $this->oldMRecord;
  4194. }
  4195.  
  4196. if ($mrow == false) {
  4197. mysql_free_result ( $this->result2 );
  4198. unset ( $this->result2 );
  4199. $this->oldMRecord = false;
  4200. break;
  4201. }
  4202.  
  4203. if ($drow == false) {
  4204. $this->oldMRecord = false;
  4205. $drow = $mrow;
  4206. break;
  4207. }
  4208.  
  4209. if ($mrow ['TIMESTAMP'] > $drow ['TIMESTAMP']) {
  4210. $this->oldMRecord = $mrow;
  4211. $this->oldARecord = false;
  4212. break;
  4213. } else if ($drow ['TIMESTAMP'] == $mrow ['TIMESTAMP']) {
  4214. $drow = array_merge ( $drow, $mrow );
  4215. $this->oldARecord = false;
  4216. break;
  4217. } else {
  4218. if ($this->COMBINE_MODE == RECORD_EXISTS) {
  4219. $this->oldMRecord = false;
  4220. continue;
  4221. } else {
  4222. $this->oldMRecord = false;
  4223. $this->oldARecord = $drow;
  4224. $drow = $mrow;
  4225.  
  4226. break;
  4227. }
  4228. }
  4229. }
  4230. }
  4231. return $drow;
  4232. }
  4233. public function queryForDistance($tid, $date, $time) { //Function similar to this is made in MongoDB with name queryForDistanceMongo($tid, $timestamp) in mysqlQueries.php
  4234. $this->oldARecord = false;
  4235. $this->oldMRecord = false;
  4236.  
  4237. $QUERY = "SELECT *, UNIX_TIMESTAMP(CONCAT(date,' ', SEC_TO_TIME(time))) as TIMESTAMP from A{$tid} WHERE (date = \"$date\" AND time > $time) OR date > \"$date\" ORDER BY date, time";
  4238. $this->result1 = $this->dbclass->execute_query ( $QUERY );
  4239.  
  4240. $QUERY = "SELECT *, UNIX_TIMESTAMP(CONCAT(date,' ', SEC_TO_TIME(time))) as TIMESTAMP from M{$tid} WHERE (date = \"$date\" AND time > $time) OR date > \"$date\" ORDER BY date,time";
  4241. $this->result2 = $this->dbclass_2->execute_query ( $QUERY );
  4242.  
  4243. $this->COMBINE_MODE = RECORD_EXISTS;
  4244. }
  4245. public function queryForDistanceMongo($tid, $timestamp) {
  4246. global $GMONGO;
  4247.  
  4248. $GMONGO->getAMRecordCursor($tid, array('timestamp' => array('$gt' => $timestamp)));
  4249. }
  4250. public function getCompleteReminders() {
  4251. $QUERY = "SELECT * FROM reminders";
  4252. $this->dbclass->execute_query ( $QUERY );
  4253. return $this->dbclass->get_result_complete ();
  4254. }
  4255. public function getReminders($tid) {
  4256. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4257. $QUERY = "SELECT * FROM reminders WHERE trackerid=\"$tid\" and username=\"$uname\"";
  4258. $this->dbclass->execute_query ( $QUERY );
  4259. return $this->dbclass->get_result_complete ();
  4260. }
  4261. public function getExpiredReminders($tid) {
  4262. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4263. $QUERY = "SELECT * FROM expiredReminders WHERE trackerid=\"$tid\" and username=\"$uname\"";
  4264. $this->dbclass->execute_query ( $QUERY );
  4265. return $this->dbclass->get_result_complete ();
  4266. }
  4267. //public function saveReminder() {
  4268. public function saveReminder($trackerid) {
  4269. $_POST['trackerid'] = $trackerid;
  4270. $QUERY = "SELECT MAX(id) FROM reminders WHERE trackerid=\"{$_POST['trackerid']}\" and id=\"{$_POST['id']}\"";
  4271. $this->dbclass->execute_query ( $QUERY );
  4272. $ans = $this->dbclass->get_result_complete ();
  4273.  
  4274. if ($ans [0] ['MAX(id)'] != NULL) {
  4275. if ($_POST ['id'] != $ans [0] ['MAX(id)'])
  4276. return ERROR;
  4277. $prefix = "UPDATE";
  4278. $returnID = $_POST ['id'];
  4279. $postfix = " WHERE trackerid=\"{$_POST['trackerid']}\" and id=\"{$_POST['id']}\"";
  4280. $this->removeReminderCacheRec ( $_POST ['trackerid'] );
  4281. } else {
  4282. if ($_POST ['id'] != 0)
  4283. return ERROR;
  4284. $returnID = $_POST ['id'] = 0;
  4285. $prefix = "INSERT INTO";
  4286. $postfix = "";
  4287. }
  4288.  
  4289. $_POST ['username'] = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4290. $_POST ['timezone'] = $this->dbclass->get_escape_string ( $_SESSION ['timezone'] );
  4291. $_POST ['language'] = $_SESSION ['language'];
  4292.  
  4293. $query = $prefix . " reminders SET ";
  4294. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  4295. $query .= $postfix;
  4296. $result = $this->dbclass->execute_query ( $query );
  4297.  
  4298. if (! $returnID)
  4299. $returnID = $this->dbclass->dblink->insert_id;
  4300. return $returnID;
  4301. }
  4302. public function removeReminder($tid, $id) {
  4303. $query = "DELETE FROM reminders WHERE trackerid=\"{$tid}\" and id = \"{$id}\"";
  4304. $result = $this->dbclass->execute_query ( $query );
  4305. $this->removeReminderCacheRec ( $id );
  4306. return SUCCESS;
  4307. }
  4308. public function removeUserTrackerReminders($uname, $tid) {
  4309. $QUERY = "SELECT id FROM reminders WHERE trackerid=\"{$tid}\" and username=\"{$uname}\"";
  4310. $this->dbclass->execute_query ( $QUERY );
  4311. $ans = $this->dbclass->get_result_complete ();
  4312.  
  4313. if ($ans == false)
  4314. return;
  4315.  
  4316. foreach ( $ans as $v ) {
  4317. $query = "DELETE FROM reminders WHERE id = \"{$v['id']}\"";
  4318. $result = $this->dbclass->execute_query ( $query );
  4319. $this->removeReminderCacheRec ( $v ['id'] );
  4320. }
  4321. return SUCCESS;
  4322. }
  4323. public function getADT($tagid) {
  4324. $QUERY = "SELECT trackerid FROM driversMap WHERE tagID=\"$tagid\"";
  4325. $this->dbclass->execute_query ( $QUERY );
  4326. return $this->dbclass->get_result_complete ();
  4327. }
  4328. public function assignDriverTrackers() {
  4329. $tagid = $this->dbclass->get_escape_string ( $_POST ['tagID'] );
  4330. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4331.  
  4332. $QUERY = "SELECT * FROM drivers WHERE tagID=\"" . $_POST ['tagID'] . "\"";
  4333. $this->dbclass->execute_query ( $QUERY );
  4334. $ans = $this->dbclass->get_result_complete ();
  4335. $dc = $ans [0];
  4336.  
  4337. $query = "DELETE FROM driversMap WHERE tagID=\"$tagid\" AND username=\"$uname\"";
  4338. $result = $this->dbclass->execute_query ( $query );
  4339. $exceptions = array ();
  4340.  
  4341. for($i = 0; $i < count ( $_POST ['trackers'] ); $i ++) {
  4342. if ($dc ['type'] == "S") {
  4343. $QUERY = "SELECT * FROM driversMap inner join drivers using (tagID) WHERE trackerid=\"" . $_POST ['trackers'] [$i] . "\" AND type='S'";
  4344. $this->dbclass->execute_query ( $QUERY );
  4345. $ans = $this->dbclass->get_result_complete ();
  4346.  
  4347. if ($ans != false) {
  4348. array_push ( $exceptions, $_POST ['trackers'] [$i] );
  4349. continue;
  4350. }
  4351. }
  4352.  
  4353. $query = "INSERT INTO driversMap SET tagID=\"$tagid\", username=\"$uname\", trackerid=\"" . $_POST ['trackers'] [$i] . "\"";
  4354. $result = $this->dbclass->execute_query ( $query );
  4355. }
  4356.  
  4357. return $exceptions;
  4358. }
  4359. public function saveDriverCard() {
  4360. $_POST ['username'] = $_SESSION ['username'];
  4361.  
  4362. $n1 = "";
  4363. $n2 = "";
  4364.  
  4365. if ($_POST ['type'] == "S" && $_POST ['tagID'] == '') {
  4366. // Generate New TAG
  4367. for($i = 0; $i < 13; $i ++) {
  4368. $n1 .= chr ( rand ( 48, 57 ) );
  4369. $n2 .= chr ( rand ( 65, 90 ) );
  4370. }
  4371.  
  4372. $_POST ['tagID'] = "ST_" . $n2 . $n1;
  4373. }
  4374.  
  4375. $query = "REPLACE INTO drivers SET ";
  4376. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  4377. $result = $this->dbclass->execute_query ( $query );
  4378.  
  4379. if ($_POST ['type'] == "E") {
  4380. $tagid = $this->dbclass->get_escape_string ( $_POST ['tagID'] );
  4381. $query = "DELETE * FROM driversMap WHERE tagID=\"" . $tagid . "\"";
  4382. $result = $this->dbclass->execute_query ( $query );
  4383. }
  4384.  
  4385. if ($result != true) {
  4386. //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
  4387. $this->writeDebugLog ( $this->dbclass->dblink->error );
  4388. return ERROR;
  4389. }
  4390.  
  4391. return $_POST ['tagID'];
  4392. }
  4393. public function expireDriverCard($tagID) {
  4394. global $GMONGO;
  4395. $tagid = $this->dbclass->get_escape_string ( $tagID );
  4396.  
  4397. srand ();
  4398. $newid = "";
  4399. $n1 = "";
  4400. $n2 = "";
  4401.  
  4402. // Generate New TAG
  4403. do {
  4404. for($i = 0; $i < 13; $i ++) {
  4405. $n1 .= chr ( rand ( 48, 57 ) );
  4406. $n2 .= chr ( rand ( 65, 90 ) );
  4407. }
  4408.  
  4409. $rawnewid = "EXP_" . $n2 . $n1;
  4410.  
  4411. $newid = $this->dbclass->get_escape_string ( $rawnewid );
  4412.  
  4413. // Updates new tag
  4414. $query = "UPDATE drivers SET tagID=\"$newid\" WHERE tagID=\"$tagid\"";
  4415. $result = $this->dbclass->execute_query ( $query );
  4416. } while ( $result != true );
  4417.  
  4418. // Get Trackers List
  4419. $query = "SELECT trackerid FROM trackersMap";
  4420. $this->dbclass->execute_query ( $query );
  4421. $trackers = $this->dbclass->get_result_complete ();
  4422.  
  4423. if ($trackers == false)
  4424. return $rawnewid;
  4425. $tCount = count ( $trackers );
  4426.  
  4427. // Update all old tags in E & M tables with new tagID
  4428. for($i = 0; $i < $tCount; $i ++) {
  4429. $updateCriteria = array('driverid' => $tagid);
  4430. $updateQuery = array('$set' => array('$driverid' => $newid));
  4431. $options = array('multiple' => true);
  4432.  
  4433. $GMONGO -> updateCollectionM($trackers[$i]['trackerid'], $updateCriteria, $updateQuery, $options);
  4434. /*$query = "UPDATE M{$trackers[$i]['trackerid']} SET driverid=\"$newid\" WHERE driverid=\"$tagid\"";
  4435. $this->dbclass->execute_query ( $query );*/
  4436.  
  4437. $GMONGO -> updateCollectionE($trackers[$i]['trackerid'], $updateCriteria, $updateQuery, $options);
  4438. /*$query = "UPDATE E{$trackers[$i]['trackerid']} SET description=\"$newid\" WHERE description=\"$tagid\"";
  4439. $this->dbclass->execute_query ( $query );*/
  4440. }
  4441.  
  4442. return $rawnewid;
  4443. }
  4444. public function removeUserDrivers($username) {
  4445. // $username is already escaped
  4446. $QUERY = "SELECT tagID FROM drivers username=\"$username\"";
  4447. $this->dbclass->execute_query ( $QUERY );
  4448. $ans = $this->dbclass->get_result_complete ();
  4449. for($v = 0; $v < count ( $ans ); $v ++) {
  4450. $this->removeDriverCard ( $ans [$v] ['tagID'] );
  4451. }
  4452. }
  4453. public function removeDriverCard($tagID) {
  4454. $tagid = $this->dbclass->get_escape_string ( $tagID );
  4455. $query = "DELETE FROM drivers WHERE tagID=\"$tagid\"";
  4456. $result = $this->dbclass->execute_query ( $query );
  4457.  
  4458. $query = "DELETE FROM driversMap WHERE tagID=\"$tagid\"";
  4459. $result = $this->dbclass->execute_query ( $query );
  4460.  
  4461. if ($result != true) {
  4462. return ERROR;
  4463. }
  4464.  
  4465. return SUCCESS;
  4466. }
  4467.  
  4468. public function getDriverCard($driverID, $fields = "*", $useSession = true) {
  4469. $driverID = $this->dbclass->get_escape_string ( $driverID );
  4470.  
  4471. if ($useSession) {
  4472. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4473. $QUERY = "SELECT $fields FROM drivers WHERE username=\"$username\" AND tagID=\"$driverID\"";
  4474. }else{
  4475. $QUERY = "SELECT $fields FROM drivers WHERE tagID=\"$driverID\"";
  4476. }
  4477.  
  4478. $this->dbclass->execute_query ( $QUERY );
  4479. $ans = $this->dbclass->get_result_complete ();
  4480. return $ans [0];
  4481. }
  4482. public function getDriversList($fields = "*") {
  4483. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4484. $QUERY = "SELECT $fields FROM drivers WHERE username=\"$username\"";
  4485. $this->dbclass->execute_query ( $QUERY );
  4486. return $this->dbclass->get_result_complete ();
  4487. }
  4488. public function getGeoContactsList($fencename, $fields_list = "*") {
  4489. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4490. $fencename = $this->dbclass->get_escape_string ( $fencename );
  4491.  
  4492. $QUERY = "SELECT {$fields_list} FROM geoContacts WHERE username=\"$username\" and fencename=\"$fencename\" ORDER by contact";
  4493. $this->dbclass->execute_query ( $QUERY );
  4494. return $this->dbclass->get_result_complete ();
  4495. }
  4496. public function checkDriverID($id) {
  4497. $id = $this->dbclass->get_escape_string ( $id );
  4498.  
  4499. $QUERY = "SELECT COUNT(*) FROM drivers WHERE tagID=\"$id\"";
  4500. $this->dbclass->execute_query ( $QUERY );
  4501. $ans = $this->dbclass->get_result_complete ();
  4502.  
  4503. if ($ans [0] ['COUNT(*)'] > 0)
  4504. return EXISTS;
  4505.  
  4506. return SUCCESS;
  4507. }
  4508. public function resetGeofenceContacts($fence) {
  4509. $fence = $this->dbclass->get_escape_string ( $fence );
  4510. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4511.  
  4512. $query = "DELETE FROM geoContacts where username=\"{$username}\" and fencename=\"{$fence}\"";
  4513. $result = $this->dbclass->execute_query ( $query );
  4514.  
  4515. if ($result != true) {
  4516. return ERROR;
  4517. }
  4518.  
  4519. return SUCCESS;
  4520. }
  4521. public function removeGeofenceContact($fence, $contact) {
  4522. $fence = $this->dbclass->get_escape_string ( $fence );
  4523. $contact = $this->dbclass->get_escape_string ( $contact );
  4524. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4525.  
  4526. $query = "DELETE FROM geoContacts where username=\"{$username}\" and fencename=\"{$fence}\" and contact =\"{$contact}\"";
  4527. $result = $this->dbclass->execute_query ( $query );
  4528.  
  4529. if ($result != true) {
  4530. return ERROR;
  4531. }
  4532.  
  4533. return SUCCESS;
  4534. }
  4535. public function updateGeofenceContact($fence, $contact, $email, $sms, $method, $timebased, $stime, $etime) {
  4536. $fence = $this->dbclass->get_escape_string ( $fence );
  4537. $contact = $this->dbclass->get_escape_string ( $contact );
  4538. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4539. $timezone = $this->dbclass->get_escape_string ( $_SESSION ['timezone'] );
  4540.  
  4541. $query = "UPDATE geoContacts SET email=\"{$email}\",sms=\"{$sms}\",method=\"{$method}\",timeBased=\"$timebased\", startTime=\"$stime\", endTime=\"$etime\", timezone=\"$timezone\" where username=\"{$username}\" and fencename=\"{$fence}\" and contact =\"{$contact}\"";
  4542. $result = $this->dbclass->execute_query ( $query );
  4543.  
  4544. if ($result != true) {
  4545. return ERROR;
  4546. }
  4547.  
  4548. return SUCCESS;
  4549. }
  4550. public function addGeofenceContact($fence, $contact, $email, $sms, $method) {
  4551. $fence = $this->dbclass->get_escape_string ( $fence );
  4552. $contact = $this->dbclass->get_escape_string ( $contact );
  4553. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4554.  
  4555. $query = "SELECT COUNT(*) from geoContacts Where username=\"{$username}\" and fencename=\"{$fence}\" and contact=\"{$contact}\"";
  4556. $result = $this->dbclass->execute_query ( $query );
  4557. $ans = $this->dbclass->get_result_complete ();
  4558. if ($ans [0] ['COUNT(*)'] > 0)
  4559. return EXISTS;
  4560.  
  4561. $query = "INSERT into geoContacts SET email=\"{$email}\",sms=\"{$sms}\",method=\"{$method}\", username=\"{$username}\" , fencename=\"{$fence}\" , contact =\"{$contact}\"";
  4562. $result = $this->dbclass->execute_query ( $query );
  4563.  
  4564. if ($result != true) {
  4565. return ERROR;
  4566. }
  4567.  
  4568. return SUCCESS;
  4569. }
  4570. public function getContactsList($fields_list = "*") {
  4571. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4572. $QUERY = "SELECT {$fields_list} FROM contacts WHERE username=\"$username\" ORDER BY name";
  4573. $this->dbclass->execute_query ( $QUERY );
  4574. $answer = $this->dbclass->get_result_complete ();
  4575. if ($answer == false)
  4576. return ERROR;
  4577. return $answer;
  4578. }
  4579. public function removeContactCard($id) {
  4580. $query = "SELECT * FROM contacts where id=\"{$id}\"";
  4581. $this->dbclass->execute_query ( $query );
  4582. $ans = $this->dbclass->get_result_complete ();
  4583.  
  4584. $contact = $this->dbclass->get_escape_string ( $ans [0] ['name'] );
  4585. $username = $this->dbclass->get_escape_string ( $ans [0] ['username'] );
  4586.  
  4587. $query = "DELETE FROM contacts WHERE id=\"$id\"";
  4588. $result = $this->dbclass->execute_query ( $query );
  4589.  
  4590. $query = "DELETE FROM geoContacts where username=\"{$username}\" and contact=\"{$contact}\"";
  4591. $result = $this->dbclass->execute_query ( $query );
  4592.  
  4593. if ($result != true) {
  4594. return ERROR;
  4595. }
  4596.  
  4597. return SUCCESS;
  4598. }
  4599. public function saveContactCard() {
  4600. $_POST ['username'] = $_SESSION ['username'];
  4601.  
  4602. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4603.  
  4604. $query = "REPLACE INTO contacts SET ";
  4605. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  4606. $result = $this->dbclass->execute_query ( $query );
  4607.  
  4608. if ($result == FALSE) {
  4609. //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
  4610. $this->writeDebugLog ( $this->dbclass->dblink->error );
  4611. }
  4612. //return mysql_insert_id ( $this->dblink );
  4613. return $this->dbclass->dblink->insert_id;
  4614. }
  4615. public function getTLGroupWise($name) {
  4616. $name = $this->dbclass->get_escape_string ( $name );
  4617. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4618.  
  4619. $QUERY = "SELECT name,trackerid FROM trackers WHERE logicalGroup=\"$name\" AND username=\"$username\"";
  4620. $this->dbclass->execute_query ( $QUERY );
  4621. return $this->dbclass->get_result_complete ();
  4622. }
  4623. public function addGroup($name, $desc) {
  4624. $name = $this->dbclass->get_escape_string ( $name );
  4625. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4626.  
  4627. $QUERY = "SELECT COUNT(*) FROM logicalGroups WHERE username=\"$username\" AND name=\"$name\"";
  4628. $this->dbclass->execute_query ( $QUERY );
  4629. $ans = $this->dbclass->get_result_complete ();
  4630.  
  4631. if ($ans [0] ['COUNT(*)'] > 0)
  4632. return "exists";
  4633.  
  4634. $query = "INSERT INTO logicalGroups SET username=\"$username\", name=\"$name\", description=\"$desc\"";
  4635. $result = $this->dbclass->execute_query ( $query );
  4636.  
  4637. if ($result != true) {
  4638. //return $query . mysql_error ( $this->dbclass->dblink );
  4639. return $query . $this->dbclass->dblink->error;
  4640. }
  4641.  
  4642. return SUCCESS;
  4643. }
  4644. public function removeGroup($name) {
  4645. $name = $this->dbclass->get_escape_string ( $name );
  4646. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4647.  
  4648. $query = "UPDATE trackers SET logicalGroup=\"DEFAULT\" WHERE username=\"$username\" AND logicalGroup=\"$name\"";
  4649. $result = $this->dbclass->execute_query ( $query );
  4650.  
  4651. $query = "DELETE FROM logicalGroups WHERE username=\"$username\" AND name=\"$name\"";
  4652. $result = $this->dbclass->execute_query ( $query );
  4653.  
  4654. return SUCCESS;
  4655. }
  4656. public function moveTracker($gname, $tid) {
  4657. $gname = $this->dbclass->get_escape_string ( $gname );
  4658. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4659.  
  4660. $query = "UPDATE trackers SET logicalGroup=\"$gname\" WHERE username=\"$username\" AND trackerid=\"$tid\"";
  4661. $result = $this->dbclass->execute_query ( $query );
  4662.  
  4663. return SUCCESS;
  4664. }
  4665. public function isDriverIDEnabled($tid) {
  4666. $QUERY = "SELECT driverID FROM trackersFeatures WHERE trackerid=\"$tid\"";
  4667. $this->dbclass->execute_query ( $QUERY );
  4668. $ans = $this->dbclass->get_result_complete ();
  4669. if ($ans [0] ['driverID'] == 1)
  4670. return true;
  4671. return false;
  4672. }
  4673. public function verifyDriverTag($driver, $tid) {
  4674. if ($driver ['map'] == "E") {
  4675. $username = $this->dbclass->get_escape_string ( $driver ['username'] );
  4676.  
  4677. $QUERY = "SELECT trackerid FROM trackersMap WHERE username=\"" . $username . "\" AND trackerid = \"$tid\"";
  4678. $this->dbclass->execute_query ( $QUERY );
  4679. $ans = $this->dbclass->get_result_complete ();
  4680. if ($ans == false)
  4681. return false;
  4682. return true;
  4683. } else {
  4684.  
  4685. $QUERY = "SELECT trackerid FROM driversMap WHERE tagID = \"" . $driver ['tagID'] . "\" AND trackerid =\"$tid\"";
  4686. $this->dbclass->execute_query ( $QUERY );
  4687. $ans = $this->dbclass->get_result_complete ();
  4688. if ($ans == false)
  4689. return false;
  4690. return true;
  4691. }
  4692. return false;
  4693. }
  4694.  
  4695. public function getDriverTagForTimestamp($tid, $ts){
  4696.  
  4697. global $LANGUAGE;
  4698. global $GMONGO;
  4699.  
  4700. // Check if Driver Identification is turned ON on this unit or not
  4701. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4702.  
  4703. $obj = new emptyClass ();
  4704. if ($this->isDriverIDEnabled ( $tid ) == false) {
  4705.  
  4706. $QUERY = "SELECT name,tagID FROM driversMap INNER JOIN drivers USING(tagID) WHERE trackerid =\"$tid\" AND type='S'";
  4707. $this->dbclass->execute_query ( $QUERY );
  4708. $ans = $this->dbclass->get_result_complete ();
  4709.  
  4710. if ($ans != false && $ans [0] ['name'] != NULL && $ans [0] ['name'] != '') {
  4711. $obj->rvalue = DRIVERID_SUCCESS;
  4712. $obj->name = $ans [0] ['name'];
  4713. $obj->tagID = $ans [0] ['tagID'];
  4714. return $obj;
  4715. }
  4716.  
  4717. $obj->rvalue = DRIVERID_NOT_ENABLED;
  4718. return $obj;
  4719. }
  4720.  
  4721. $ans = $GMONGO->getAMRecord($tid, array('driverID' => array('$exists' => 1, '$ne' => 0, '$ne' => '', '$ne' => null), 'timestamp' => array('$lte', $ts)), 1);
  4722.  
  4723. $tag = 0;
  4724.  
  4725. if ($ans != false) {
  4726. if ($ans [0] ['driverID'] != NULL && $ans [0] ['driverID'] != '') {
  4727. $tag = $ans [0] ['driverID'];
  4728. }
  4729. }
  4730.  
  4731. if ($tag == 0) {
  4732. $ans = $GMONGO->getERecords_reverseSorted($tid, array('event' => EVENT_RFID_SWEEP, 'timestamp' => array('$lte', $ts)), 1);
  4733. if ($ans == false) {
  4734. $obj->rvalue = DRIVERID_NOEVENT;
  4735. return $obj;
  4736. }
  4737.  
  4738. $tag = $this->dbclass->get_escape_string ( $ans [0] ['description'] );
  4739. }
  4740.  
  4741. $QUERY = "SELECT * FROM drivers WHERE tagID=\"$tag\"";
  4742. $this->dbclass->execute_query ( $QUERY );
  4743. $ans = $this->dbclass->get_result_complete ();
  4744. if ($ans == false) {
  4745. $obj->rvalue = DRIVERID_NOT_FOUND;
  4746. return $obj;
  4747. }
  4748.  
  4749. $auth = $this->verifyDriverTag ( $ans [0], $tid );
  4750.  
  4751. $obj->rvalue = DRIVERID_SUCCESS;
  4752. $obj->name = $ans [0] ['name'] . " (" . $ans [0] ['mobile'] . ")";
  4753. if ($auth == false)
  4754. $obj->name . " " . $LANGUAGE ['UNAUTHORIZED'];
  4755. $obj->tagid = $ans [0] ['tagID'];
  4756.  
  4757. return $obj;
  4758.  
  4759. }
  4760.  
  4761.  
  4762. public function getDriverName($tid) {
  4763. global $LANGUAGE;
  4764. global $GMONGO;
  4765.  
  4766. // Check if Driver Identification is turned ON on this unit or not
  4767. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  4768.  
  4769. $obj = new emptyClass ();
  4770. if ($this->isDriverIDEnabled ( $tid ) == false) {
  4771.  
  4772. $QUERY = "SELECT name,tagID FROM driversMap INNER JOIN drivers USING(tagID) WHERE trackerid =\"$tid\" AND type='S'";
  4773. $this->dbclass->execute_query ( $QUERY );
  4774. $ans = $this->dbclass->get_result_complete ();
  4775.  
  4776. if ($ans != false && $ans [0] ['name'] != NULL && $ans [0] ['name'] != '') {
  4777. $obj->rvalue = DRIVERID_SUCCESS;
  4778. $obj->name = $ans [0] ['name'];
  4779. $obj->tagID = $ans [0] ['tagID'];
  4780. return $obj;
  4781. }
  4782.  
  4783. $obj->rvalue = DRIVERID_NOT_ENABLED;
  4784. return $obj;
  4785. }
  4786.  
  4787. // $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('driverID' => array('$exists' => 1,'$ne' => 0,'$ne' => '', '$ne' => null)), 1);
  4788.  
  4789. $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('driverID' => array('$exists' => 1),'driverID' => array('$ne' => 0),'driverID' => array('$ne' => ''),'driverID' => array('$ne' => null), 'driverID' => array('$ne' => "0")), 1);
  4790.  
  4791. $tag = 0;
  4792.  
  4793. if ($ans != false) {
  4794. if ($ans [0] ['driverID'] != NULL && $ans [0] ['driverID'] != '') {
  4795. $tag = $ans [0] ['driverID'];
  4796. }
  4797. }
  4798.  
  4799. if ($tag == 0) {
  4800. $ans = $GMONGO->getERecords_reverseSorted($tid, array('event' => EVENT_RFID_SWEEP), 1);
  4801.  
  4802. if ($ans == false) {
  4803. $obj->rvalue = DRIVERID_NOEVENT;
  4804. return $obj;
  4805. }
  4806.  
  4807. $tag = $this->dbclass->get_escape_string ( $ans [0] ['description'] );
  4808. }
  4809.  
  4810. $QUERY = "SELECT * FROM drivers WHERE tagID=\"$tag\"";
  4811. $this->dbclass->execute_query ( $QUERY );
  4812. $ans = $this->dbclass->get_result_complete ();
  4813. if ($ans == false) {
  4814. $obj->rvalue = DRIVERID_NOT_FOUND;
  4815. return $obj;
  4816. }
  4817.  
  4818. $auth = $this->verifyDriverTag ( $ans [0], $tid );
  4819.  
  4820. $obj->rvalue = DRIVERID_SUCCESS;
  4821. $obj->name = $ans [0] ['name'] . " (" . $ans [0] ['mobile'] . ")";
  4822. if ($auth == false)
  4823. $obj->name . " " . $LANGUAGE ['UNAUTHORIZED'];
  4824. $obj->tagid = $ans [0] ['tagID'];
  4825.  
  4826. return $obj;
  4827. }
  4828.  
  4829.  
  4830.  
  4831.  
  4832. public function isIgnitionEnabled($tid) {
  4833. $QUERY = "SELECT ignitionSensor FROM trackersFeatures WHERE trackerid=\"$tid\"";
  4834. $this->dbclass->execute_query ( $QUERY );
  4835. $ans = $this->dbclass->get_result_complete ();
  4836.  
  4837. if ($ans [0] ['ignitionSensor'] != 1) {
  4838. return false;
  4839. }
  4840. return true;
  4841. }
  4842. public function getFeatures($tid) {
  4843. $QUERY = "SELECT * FROM trackersFeatures INNER JOIN trackersExInfo USING(trackerid) WHERE trackerid=\"$tid\"";
  4844. $this->dbclass->execute_query ( $QUERY );
  4845. $ans = $this->dbclass->get_result_complete ();
  4846. return $ans [0];
  4847. }
  4848.  
  4849.  
  4850. public function getTrackerDuration_withIgnition($tid, $status) {
  4851. global $GMONGO;
  4852. /*$fdate = new FNSDateTime($_SESSION['timezone']);
  4853. $fdate->setUTCDate("1970-01-01", 0);
  4854. $sinceBeginning = array(array('timestamp' => $fdate->dateTime->getTimestamp()));*/
  4855. $sinceBeginning = array(array('timestamp' => 0));
  4856.  
  4857. switch ($status) {
  4858. case "s" :
  4859. $lastIgnition = $GMONGO->getAMLastIgnition($tid);
  4860.  
  4861. if ($lastIgnition == false)
  4862. $lastIgnition = $sinceBeginning;
  4863.  
  4864. //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp'])),1);
  4865. $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  4866. break;
  4867.  
  4868. case "i" : //Have changed this
  4869. //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
  4870. $result = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
  4871.  
  4872. //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $result[0]['timestamp'])),1);
  4873. $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $result[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  4874. break;
  4875.  
  4876. case "n" :
  4877. case "g" :
  4878. $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('latitude' => array('$exists' => 1, '$ne' => null)),1);
  4879. if ($ans == false)
  4880. return false;
  4881. break;
  4882.  
  4883. case "m" :
  4884. $ans = $GMONGO->getAMLastStopped($tid);
  4885. if ($ans == false) {
  4886. $ans = $sinceBeginning;
  4887. }
  4888. //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp'])),1);
  4889. $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  4890. break;
  4891.  
  4892. default :
  4893. return false;
  4894. }
  4895.  
  4896. $obj = new emptyClass ();
  4897. $obj->date = $ans [0] ['date'];
  4898. $obj->time = $ans [0] ['time'];
  4899. $obj->timestamp = $ans [0] ['timestamp'];
  4900.  
  4901. return $obj;
  4902. }
  4903.  
  4904. public function getTrackerDuration_withoutIgnition($tid, $status) {
  4905. global $GMONGO;
  4906. /*$fdate = new FNSDateTime($_SESSION['timezone']);
  4907. $fdate->setUTCDate("1970-01-01", 0);
  4908. $sinceBeginning = array(array('timestamp' => $fdate->dateTime->getTimestamp()));*/
  4909. $sinceBeginning = array(array('timestamp' => 0));
  4910.  
  4911. switch ($status) {
  4912. case "s" :
  4913. //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0)),1);
  4914. $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => array('$gt' => 0), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  4915.  
  4916. if ($ans == false)
  4917. $ans = $sinceBeginning;
  4918.  
  4919. //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp'])),1);
  4920. $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  4921. break;
  4922.  
  4923. case "n" :
  4924. case "g" :
  4925. $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('latitude' => array('$exists' => 1, '$ne' => null)),1);
  4926. if ($ans == false)
  4927. return false;
  4928. break;
  4929.  
  4930. case "m" :
  4931. //$ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0),1);
  4932. $ans = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0, 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  4933.  
  4934. if ($ans == false)
  4935. $ans = $sinceBeginning;
  4936. //$ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp'])),1);
  4937. $ans = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $ans[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  4938. break;
  4939.  
  4940. default :
  4941. return false;
  4942. }
  4943.  
  4944. $obj = new emptyClass ();
  4945. $obj->date = $ans [0] ['date'];
  4946. $obj->time = $ans [0] ['time'];
  4947. $obj->timestamp = $ans [0] ['timestamp'];
  4948.  
  4949. return $obj;
  4950. }
  4951.  
  4952. // Returns duration for the tracker in stopped or nodata mode
  4953. public function getTrackerDuration($tid, $status) {
  4954. if ($this->isIgnitionEnabled ( $tid ))
  4955. return $this->getTrackerDuration_withIgnition ( $tid, $status );
  4956. return $this->getTrackerDuration_withoutIgnition ( $tid, $status );
  4957. }
  4958.  
  4959.  
  4960. private function getCurrentTrip_withoutIgnition($tid, $status) {
  4961. global $GMONGO;
  4962.  
  4963. // If status is not moving then fetch last packet with GPS location and send
  4964. if ($status == 'n' || $status == 'g') {
  4965. //return $GMONGO->getLastAMRecord($tid);
  4966. return $GMONGO->getLastARecord($tid);
  4967. }
  4968.  
  4969. if ($status == 's') {
  4970. // Get last Ignition on packet
  4971. //return $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0),1);
  4972. //$start = time();
  4973. $queryCriteria = array('speed' => array('$gt' => 0), 'latitude' => array('$exists' => 1, '$ne' => null)); //Logic is different from V4, changed in V5
  4974. $lastIgnition = $GMONGO->getAMRecord_reverseSorted($tid, $queryCriteria, 1);
  4975. //$end = time() - $start;
  4976. //$this->writeDebugLog("\r\nStop without ignition time TRACKERID $end seconds");
  4977.  
  4978. if ($lastIgnition == false || count ( $lastIgnition ) == 0) // NO ignition packet
  4979. $answer = $GMONGO->getLastARecord($tid);
  4980. else {
  4981. //$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1);
  4982. $answer = $GMONGO->getLastARecord($tid);
  4983. }
  4984.  
  4985. //return $lastIgnition;
  4986. return $answer;
  4987. }
  4988.  
  4989. if ($status == 'm') {
  4990. // Get last Ignition on packet
  4991. //$lastIgnition = $GMONGO->getAMRecord_reverseSorted($tid, array('speed' => 0),1);
  4992. $queryCriteria = array('speed' => 0, 'latitude' => array('$exists' => 1, '$ne' => null));
  4993. $lastIgnition = $GMONGO->getAMRecord_reverseSorted($tid, $queryCriteria,1);
  4994.  
  4995.  
  4996. if ($lastIgnition == false) {
  4997. $lastIgnition = array ();
  4998. $lastIgnition[0] = array();
  4999. $lastIgnition [0]['timestamp'] = 0;
  5000. }
  5001.  
  5002. return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
  5003. //return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gte' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
  5004. }
  5005.  
  5006. return false;
  5007. }
  5008.  
  5009. private function getCurrentTrip_withIgnition($tid, $status) {
  5010. global $GMONGO;
  5011. // If status is not moving then fetch last packet and send
  5012. if ($status == 'n' || $status == 'g') {
  5013.  
  5014. $answer = $GMONGO->getLastAMRecord($tid);
  5015.  
  5016. if ($answer != false) {
  5017. if (strpos ( $answer [0] ['IO'], "j" ) === false) {
  5018. $status = "s";
  5019. } else {
  5020. $status = "m";
  5021. }
  5022. } else
  5023. return false;
  5024. }
  5025.  
  5026. if ($status == 's') {
  5027. // Get last Ignition on packet
  5028. //$start = time();
  5029. $lastIgnition = $GMONGO->getAMLastIgnition($tid);
  5030.  
  5031. //$ignTime = time() - $start;
  5032. //$this->writeDebugLog("\r\nIgnition TRACKERID $tid $ignTime seconds");
  5033.  
  5034.  
  5035. if ($lastIgnition == false || count ( $lastIgnition ) == 0) {
  5036. $answer = $GMONGO->getLastARecord($tid);
  5037. } // NO ignition packet
  5038. else {
  5039. //$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)),1); //in use
  5040. //$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp'])),1);
  5041. $answer = $GMONGO->getLastARecord($tid);
  5042. }
  5043.  
  5044. return $answer;
  5045. }
  5046.  
  5047. if ($status == 'i' || $status == 'm') {
  5048. // Get last Ignition on packet
  5049. //$start = time();
  5050. $lastIgnition = $GMONGO->getAMLastStopped($tid);
  5051.  
  5052. //$end = time() - $start;
  5053. //$this->writeDebugLog("\r\nLast stopped time TRACKERID $tid $end seconds");
  5054.  
  5055. if ($lastIgnition == false ) {
  5056. $lastIgnition = array ();
  5057. $lastIgnition[0] = array();
  5058. $lastIgnition [0]['timestamp'] = 0;
  5059. }
  5060.  
  5061.  
  5062. /*$answer = $GMONGO->getAMRecord($tid, array('timestamp' => array('$gte' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
  5063.  
  5064. if ($answer == false)
  5065. $answer = $GMONGO->getLastARecord($tid);*/
  5066. //return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gte' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
  5067. return $GMONGO->getAMRecord($tid, array('timestamp' => array('$gt' => $lastIgnition[0]['timestamp']), 'latitude' => array('$exists' => 1, '$ne' => null)));
  5068. }
  5069. return false;
  5070. }
  5071.  
  5072. public function getCurrentTrip($tid, $status, $checkAccess = false) {
  5073. if ($this->isIgnitionEnabled ( $tid ))
  5074. return $this->getCurrentTrip_withIgnition ( $tid, $status );
  5075. return $this->getCurrentTrip_withoutIgnition ( $tid, $status );
  5076. }
  5077.  
  5078.  
  5079.  
  5080.  
  5081. public function getLiveDetails($tid, $lat, $lng, $status, $geocode = true) {
  5082. // Fetch Driver if status is moving or idling
  5083. $reply = new emptyClass ();
  5084.  
  5085. $reply->driver = $this->getDriverName ( $tid );
  5086. $reply->duration = $this->getTrackerDuration ( $tid, $status );
  5087.  
  5088. if ($geocode == true) {
  5089. $geo = new GEOCODER ();
  5090. $reply->location = $geo->search ( $lat, $lng, true );
  5091. }
  5092.  
  5093. return $reply;
  5094. }
  5095. public function addPOI() {
  5096. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  5097.  
  5098. $query = "INSERT INTO POI SET username=\"$username\",";
  5099. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  5100. $result = $this->dbclass->execute_query ( $query );
  5101.  
  5102. $no = new emptyClass ();
  5103.  
  5104. if ($result != true) {
  5105. //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
  5106. $this->writeDebugLog ( $this->dbclass->dblink->error );
  5107. $no->result = ERROR;
  5108. $no->id = - 1;
  5109. return $no;
  5110. }
  5111. $no->result = SUCCESS;
  5112. //$no->id = mysql_insert_id ( $this->dbclass->dblink );
  5113. $no->id = $this->dbclass->dblink->insert_id;
  5114. return $no;
  5115. }
  5116. public function addPOI2User($poi, $users) {
  5117. $poiCount = count ( $poi );
  5118. $execute = true;
  5119. $index = 0;
  5120. $ucount = count ( $users );
  5121.  
  5122. while ( $execute ) {
  5123. $v = $poiCount - 50;
  5124. if ($v < 0) {
  5125. $v = $poiCount;
  5126. $execute = false;
  5127. } else {
  5128. $v = 50;
  5129. $poiCount -= 50;
  5130. }
  5131.  
  5132. $id = "";
  5133. for($x = 0; $x < $v; $x ++, $index ++) {
  5134. if ($x != 0)
  5135. $id .= " OR ";
  5136. $id .= "id = " . $poi [$index];
  5137. }
  5138. for($x = 0; $x < $ucount; $x ++) {
  5139. $username = $this->dbclass->get_escape_string ( $users [$x] );
  5140. $query = "INSERT INTO POI (username, latitude, longitude, color, radius, shortName, description, icontype, metric, keywords) SELECT \"{$username}\" as username, latitude, longitude, color, radius, shortName, description, icontype, metric, keywords FROM POI WHERE " . $id;
  5141. $result = $this->dbclass->execute_query ( $query );
  5142. }
  5143. }
  5144. return SUCCESS;
  5145. }
  5146. public function addPOI_processor($fields, $fcount) {
  5147. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  5148. $id = 0;
  5149.  
  5150. $fieldsTxt = '"' . $username . '"';
  5151.  
  5152. for($v = 0; $v < $fcount; $v ++) {
  5153. $fieldsTxt .= ',"' . $this->dbclass->get_escape_string ( $fields [$v] ) . '"';
  5154. }
  5155.  
  5156. $query = "INSERT INTO POI (username,latitude,longitude,color,radius,shortName,description, icontype,metric,keywords) VALUES({$fieldsTxt})";
  5157. $result = $this->dbclass->execute_query ( $query );
  5158. if ($result == false)
  5159. $this->writeDebugLog ( $this->dbclass->dblink->error );
  5160. }
  5161. public function updatePOI() {
  5162. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  5163. $id = $_POST ['id'];
  5164. unset ( $_POST ['id'] );
  5165.  
  5166. $query = "UPDATE POI SET ";
  5167. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  5168. $query .= " WHERE username=\"$username\" AND id=\"$id\"";
  5169.  
  5170. $result = $this->dbclass->execute_query ( $query );
  5171.  
  5172. $no = new emptyClass ();
  5173.  
  5174. if ($result != true) {
  5175. //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
  5176. $this->writeDebugLog ( $this->dbclass->dblink->error );
  5177. $no->result = ERROR;
  5178. $no->id = - 1;
  5179. return $no;
  5180. }
  5181.  
  5182. $no->result = SUCCESS;
  5183. $no->id = $id;
  5184. return $no;
  5185. }
  5186. public function deletePOI($id) {
  5187. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  5188. $query = "DELETE FROM POI WHERE id=\"$id\" and username=\"$username\"";
  5189.  
  5190. $result = $this->dbclass->execute_query ( $query );
  5191.  
  5192. if ($result != true) {
  5193. //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
  5194. $this->writeDebugLog ( $this->dbclass->dblink->error );
  5195. return ERROR;
  5196. }
  5197.  
  5198. return SUCCESS;
  5199. }
  5200. public function verifyStudentTag($tag) {
  5201. $QUERY = "SELECT COUNT(*) FROM students WHERE tag =\"$tag\"";
  5202. $this->dbclass->execute_query ( $QUERY );
  5203. $ans = $this->dbclass->get_result_complete ();
  5204. if ($ans [0] ['COUNT(*)'] > 0)
  5205. return ERROR;
  5206. return SUCCESS;
  5207. }
  5208. public function getStudentInfo($tag) {
  5209. $QUERY = "SELECT *,students.name as sname FROM students inner join schools on (students.school = schools.id) WHERE students.tag='$tag'";
  5210.  
  5211. $this->dbclass->execute_query ( $QUERY );
  5212. $ans = $this->dbclass->get_result_complete ();
  5213. return $ans;
  5214. }
  5215. public function getSchoolsList($fields = "*") {
  5216. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  5217. $QUERY = "SELECT $fields FROM schools WHERE username=\"$username\"";
  5218.  
  5219. $this->dbclass->execute_query ( $QUERY );
  5220. $ans = $this->dbclass->get_result_complete ();
  5221. if ($ans == false)
  5222. return ERROR;
  5223. return $ans;
  5224. }
  5225. public function saveSchool() {
  5226. $query = "REPLACE INTO schools SET ";
  5227. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  5228. $result = $this->dbclass->execute_query ( $query );
  5229. if ($result == false)
  5230. $this->writeDebugLog ( $this->dbclass->dblink->error );
  5231. //return mysql_insert_id ( $this->dblink );
  5232. return $this->dbclass->dblink->insert_id;
  5233. }
  5234. public function removeSchool($id) {
  5235. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  5236. $query = "DELETE FROM schools WHERE id=\"{$id}\" AND username = \"$username\"";
  5237. $result = $this->dbclass->execute_query ( $query );
  5238.  
  5239. $query = "SELECT id FROM students WHERE school=\"{$id}\" AND username=\"$username\"";
  5240. $result = $this->dbclass->execute_query ( $query );
  5241. $ans = $this->dbclass->get_result_complete ();
  5242. if ($ans == false)
  5243. return;
  5244. $c = count ( $ans );
  5245.  
  5246. for($i = 0; $i < $c; $i ++) {
  5247. $this->removeStudent ( $ans [$i] ['id'] );
  5248. }
  5249. }
  5250. public function getStudentsList() {
  5251. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  5252. $QUERY = "SELECT * FROM students WHERE username=\"$username\"";
  5253.  
  5254. $this->dbclass->execute_query ( $QUERY );
  5255. $ans = $this->dbclass->get_result_complete ();
  5256. if ($ans == false)
  5257. return ERROR;
  5258. return $ans;
  5259. }
  5260. public function saveStudent() {
  5261. $query = "REPLACE INTO students SET ";
  5262. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  5263. $result = $this->dbclass->execute_query ( $query );
  5264. if ($result == false)
  5265. $this->writeDebugLog ( $this->dbclass->dblink->error );
  5266. //return mysql_insert_id ( $this->dblink );
  5267. return $this->dbclass->dblink->insert_id;
  5268. }
  5269. public function removeUserStudents($uname) {
  5270. // uname is already escaped
  5271. $QUERY = "SELECT * FROM students WHERE username=\"$uname\"";
  5272. $this->dbclass->execute_query ( $QUERY );
  5273. $ans = $this->dbclass->get_result_complete ();
  5274.  
  5275. for($i = 0; $i < count ( $ans ); $i ++) {
  5276. $query = "DELETE FROM students WHERE id=\"{$ans[$i]['id']}\"";
  5277. $result = $this->dbclass->execute_query ( $query );
  5278.  
  5279. $query = "DELETE FROM studentsCache WHERE id=\"{$ans[$i]['id']}\"";
  5280. $result = $this->dbclass->execute_query ( $query );
  5281. }
  5282. }
  5283. public function removeStudent($id) {
  5284. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  5285. $query = "DELETE FROM students WHERE id=\"{$id}\" AND username=\"$username\"";
  5286. $result = $this->dbclass->execute_query ( $query );
  5287.  
  5288. $query = "DELETE FROM studentsCache WHERE id=\"{$id}\"";
  5289. $result = $this->dbclass->execute_query ( $query );
  5290. }
  5291. public function getPOIList($username) {
  5292. $username = $this->dbclass->get_escape_string ( $username );
  5293. $QUERY = "SELECT id, latitude,longitude,radius,color,shortName,description,icontype, metric, keywords FROM POI WHERE username=\"$username\"";
  5294.  
  5295. $this->dbclass->execute_query ( $QUERY );
  5296. $ans = $this->dbclass->get_result_complete ();
  5297. if ($ans == false)
  5298. return ERROR;
  5299. return $ans;
  5300. }
  5301. function getHardwareType($tid) {
  5302. $query = "SELECT type FROM trackers WHERE trackerid = \"{$tid}\"";
  5303. $this->dbclass->execute_query ( $query );
  5304. $answer = $this->dbclass->get_result_complete ();
  5305. return $answer;
  5306. } // function
  5307. public function getHardwareInfo($tid) {
  5308. $QUERY = "SELECT * FROM trackers as A2 LEFT JOIN (select ip,port,vehicleid as trackerid, protocol from napt) as A1 using(trackerid) where trackerid=\"$tid\"";
  5309. $this->dbclass->execute_query ( $QUERY );
  5310. return $this->dbclass->get_result_complete ();
  5311. }
  5312. public function outputEvent($tid, $ecode) {
  5313. global $GMONGO;
  5314.  
  5315. $tdate = gmdate ( "Y-m-d", time () );
  5316. $ttime = gmdate ( "H-i-s", time () );
  5317.  
  5318. $attime = explode ( "-", $ttime );
  5319. $tsec = ($attime [0] * 60 * 60) + ($attime [1] * 60) + ($attime [2]);
  5320.  
  5321. /*$query = "INSERT INTO E{$tid} SET date=\"{$tdate}\", time = {$tsec},latitude =0, longitude=0, speed=0, direction=0,event={$ecode}";
  5322. $result = $this->dbclass->execute_query ( $query );*/
  5323.  
  5324. $records = array();
  5325. $records['date'] = $tdate;
  5326. $records['time'] = $tsec;
  5327. $records['latitude'] = 0;
  5328. $records['longitude'] = 0;
  5329. $records['speed'] = 0;
  5330. $records['direction'] = 0;
  5331. $records['event'] = $ecode;
  5332. $records['description'] = '';
  5333.  
  5334. $result = $GMONGO->insertRecordIntoE($tid, $records);
  5335.  
  5336.  
  5337. /*if ($result != true) {
  5338. return mysql_error ( $this->dbclass->dblink );
  5339. }*/
  5340.  
  5341. return SUCCESS;
  5342. }
  5343. public function saveTripName() {
  5344. $query = "SELECT COUNT(*) FROM trips WHERE sDate=\"{$_POST['sdate']}\" AND eDate=\"{$_POST['edate']}\" AND sTime=\"{$_POST['stime']}\" AND eTime=\"{$_POST['etime']}\" AND trackerid=\"{$_POST['tid']}\"";
  5345. $result = $this->dbclass->execute_query ( $query );
  5346. $ans = $this->dbclass->get_result_complete ();
  5347.  
  5348. $name = $this->dbclass->get_escape_string ( $_POST ['name'] );
  5349. if ($ans [0] ['COUNT(*)'] > 0)
  5350. $query = "UPDATE trips SET name=\"{$name}\" WHERE sDate=\"{$_POST['sdate']}\" AND eDate=\"{$_POST['edate']}\" AND sTime=\"{$_POST['stime']}\" AND eTime=\"{$_POST['etime']}\" AND trackerid=\"{$_POST['tid']}\"";
  5351. else
  5352. $query = "INSERT INTO trips SET sDate=\"{$_POST['sdate']}\",eDate=\"{$_POST['edate']}\",sTime=\"{$_POST['stime']}\",eTime=\"{$_POST['etime']}\",trackerid=\"{$_POST['tid']}\",name=\"{$name}\"";
  5353.  
  5354. $result = $this->dbclass->execute_query ( $query );
  5355.  
  5356. if ($result != true) {
  5357. //$this->writeDebugLog ( mysql_error ( $this->dbclass->dblink ) );
  5358. $this->writeDebugLog ( $this->dbclass->dblink->error );
  5359. return ERROR;
  5360. }
  5361. return SUCCESS;
  5362. }
  5363. public function remOdometerTune($id) {
  5364. $QUERY = "DELETE FROM odoTuning WHERE id='$id'";
  5365. $this->dbclass->execute_query ( $QUERY );
  5366. }
  5367. public function getOdotuneList($tid) {
  5368. $QUERY = "SELECT * FROM odoTuning WHERE trackerid='$tid' ORDER BY date,time";
  5369. $this->dbclass->execute_query ( $QUERY );
  5370. $ans = $this->dbclass->get_result_complete ();
  5371. if ($ans != false) {
  5372. foreach ( $ans as $k => $v ) {
  5373. $odo = $this->getOdometer ( $tid, $v ['date'], $v ['time'], ODOMETER_NOADJUST );
  5374. $ans [$k] ['odo'] = $v ['odo'] + $odo;
  5375. }
  5376. }
  5377. return $ans;
  5378. }
  5379.  
  5380. public function addOdometerTune($tid, $date, $time, $value) {
  5381. $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
  5382. $fdate->setDate ( $date, $time );
  5383.  
  5384. $date = $fdate->UTCDateString;
  5385. $time = $fdate->UTCTime;
  5386.  
  5387. $odo = $this->getOdometer ( $tid, $date, $time, ODOMETER_NOADJUST );
  5388. $value = $value - $odo;
  5389.  
  5390. $QUERY = "INSERT INTO odoTuning SET date='$date',time='$time', trackerid='$tid', odo='$value' ";
  5391. $this->dbclass->execute_query ( $QUERY );
  5392.  
  5393. $r = new emptyClass ();
  5394. //$r->id = mysql_insert_id ( $this->dblink );
  5395. $r->id = $this->dbclass->dblink->insert_id;
  5396. $r->dateString = $fdate->getFormattedString ();
  5397. $r->odo = $odo + $value;
  5398. $r->tid = $tid;
  5399.  
  5400. print json_encode ( $r );
  5401. }
  5402.  
  5403. public function getHardwareCode($type) {
  5404. $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"$type\"";
  5405. $this->dbclass->execute_query ( $QUERY );
  5406. $ans = $this->dbclass->get_result_complete ();
  5407.  
  5408. return $ans [0] ['hwcode'];
  5409. }
  5410.  
  5411. public function getOdometerSum($tid, $fromDate, $fromTime, $date, $time) {
  5412. $periodClause = basicTransactions::getPeriodClause_excludeStartTime ( $fromDate, $fromTime, $date, $time );
  5413. $QUERY = "SELECT SUM(odometer) FROM M{$tid} WHERE ($periodClause)";
  5414. $this->dbclass->execute_query ( $QUERY );
  5415. $ans = $this->dbclass->get_result_complete ();
  5416.  
  5417. return $ans [0] ['SUM(odometer)'];
  5418. }
  5419.  
  5420.  
  5421. public function getOdometer($tid, $date, $time, $mode = ODOMETER_NONE) {
  5422. global $GMONGO;
  5423.  
  5424. $features = $this->getTrackerInformation ( $tid );
  5425. $features = $features [0];
  5426.  
  5427. $fdate = new FNSDateTime($_SESSION['timezone']);
  5428.  
  5429. $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"{$features['type']}\"";
  5430. $this->dbclass->execute_query ( $QUERY );
  5431. $ans = $this->dbclass->get_result_complete ();
  5432.  
  5433. $TELTONIKA = false;
  5434. if ($ans [0] ['hwcode'] == 'TELT')
  5435. $TELTONIKA = true;
  5436.  
  5437. if (isset ( $features ['odometerSensor'] ) && $features ['odometerSensor'] == 1) {
  5438.  
  5439. // Check for value in the odometer cache
  5440. $QUERY = "SELECT * FROM odoTuning WHERE (trackerid='$tid' AND ((date < '$date') or (date = '$date' AND time <= $time))) ORDER BY date desc, time desc LIMIT 0,1";
  5441. $this->dbclass->execute_query ( $QUERY );
  5442. $ans = $this->dbclass->get_result_complete ();
  5443.  
  5444. if ($ans == false) {
  5445. if (isset ( $features ['odometerValue'] ) == false || $features ['odometerValue'] == null)
  5446. $ov = 0;
  5447. else
  5448. $ov = $features ['odometerValue'];
  5449. } else {
  5450. $ov = $ans [0] ['odo'];
  5451. }
  5452.  
  5453. if ($TELTONIKA == true) {
  5454. $QUERY = "SELECT * FROM odoCache WHERE (trackerid='$tid' AND ((date < '$date') or (date = '$date' AND time <= $time))) ORDER BY date desc, time desc LIMIT 0,1";
  5455. $this->dbclass->execute_query ( $QUERY );
  5456. $ans = $this->dbclass->get_result_complete ();
  5457.  
  5458. //var_dump($ans);
  5459.  
  5460. $cacheValue = 0;
  5461. $fromdate = "1970-01-01";
  5462. $fromtime = 0;
  5463.  
  5464. if ($ans != false) {
  5465. $fromdate = $ans [0] ['date'];
  5466. $fromtime = $ans [0] ['time'];
  5467. $cacheValue = $ans [0] ['odo'];
  5468. }
  5469. $fdate->setUTCDate($fromdate, $fromtime);
  5470. $fromts = $fdate->dateTime->getTimestamp();
  5471. $fdate->setUTCDate($date, $time);
  5472. $tots = $fdate->dateTime->getTimestamp();
  5473. $odo = $GMONGO->getOdometerSum($tid, $fromts, $tots);
  5474. //$odo = $GMONGO->getOdometerSum($tid, $fdate->dateTime->getTimestamp(), time());
  5475. $cOdo = $cacheValue + $odo['result'][0]['odometer'];
  5476.  
  5477. //var_dump($odo);
  5478. //die;
  5479.  
  5480. switch ($mode) {
  5481. case ODOMETER_NONE :
  5482. break;
  5483. case ODOMETER_NOADJUST :
  5484. $ov = 0;
  5485. break;
  5486. }
  5487.  
  5488. } else {
  5489. $fdate->setUTCDate($date, $time);
  5490. $ts = $fdate->dateTime->getTimestamp();
  5491. switch ($mode) {
  5492. case ODOMETER_NONE :
  5493. $inputs = $GMONGO->getAMRecord($tid, array('timestamp' => $ts), 1);
  5494. break;
  5495. case ODOMETER_NOADJUST :
  5496. $inputs = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp' => array('$lte' => $ts)), 1);
  5497. $ov = 0;
  5498. break;
  5499. }
  5500. $cOdo = $inputs [0] ['odometer'];
  5501. }
  5502.  
  5503. $cOdo += $ov;
  5504. } else
  5505. $cOdo = false;
  5506.  
  5507. return $cOdo;
  5508. }
  5509.  
  5510.  
  5511. /*public function getOdometerHistory($tid, $date, $time, $mode = ODOMETER_NONE) {
  5512. global $GMONGO;
  5513.  
  5514. $features = $this->getTrackerInformation ( $tid );
  5515. $features = $features [0];
  5516.  
  5517. $fdate = new FNSDateTime($_SESSION['timezone']);
  5518.  
  5519. $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"{$features['type']}\"";
  5520. $this->dbclass->execute_query ( $QUERY );
  5521. $ans = $this->dbclass->get_result_complete ();
  5522.  
  5523. $TELTONIKA = false;
  5524. if ($ans [0] ['hwcode'] == 'TELT')
  5525. $TELTONIKA = true;
  5526.  
  5527. if (isset ( $features ['odometerSensor'] ) && $features ['odometerSensor'] == 1) {
  5528.  
  5529. // Check for value in the odometer cache
  5530. $QUERY = "SELECT * FROM odoTuning WHERE (trackerid='$tid' AND ((date < '$date') or (date = '$date' AND time <= $time))) ORDER BY date desc, time desc LIMIT 0,1";
  5531. $this->dbclass->execute_query ( $QUERY );
  5532. $ans = $this->dbclass->get_result_complete ();
  5533.  
  5534. if ($ans == false) {
  5535. if (isset ( $features ['odometerValue'] ) == false || $features ['odometerValue'] == null)
  5536. $ov = 0;
  5537. else
  5538. $ov = $features ['odometerValue'];
  5539. } else {
  5540. $ov = $ans [0] ['odo'];
  5541. }
  5542.  
  5543. if ($TELTONIKA == true) {
  5544. $QUERY = "SELECT * FROM odoCache WHERE (trackerid='$tid' AND ((date < '$date') or (date = '$date' AND time <= $time))) ORDER BY date desc, time desc LIMIT 0,1";
  5545. $this->dbclass->execute_query ( $QUERY );
  5546. $ans = $this->dbclass->get_result_complete ();
  5547.  
  5548. $cacheValue = 0;
  5549. $fromdate = "1970-01-01";
  5550. $fromtime = 0;
  5551.  
  5552. if ($ans != false) {
  5553. $fromdate = $ans [0] ['date'];
  5554. $fromtime = $ans [0] ['time'];
  5555. $cacheValue = $ans [0] ['odo'];
  5556. }
  5557. $fdate->setUTCDate($fromdate, $fromtime);
  5558. $fromts = $fdate->dateTime->getTimestamp();
  5559. $fdate->setUTCDate($date, $time);
  5560. $tots = $fdate->dateTime->getTimestamp();
  5561. //$odo = $GMONGO->getOdometerSum($tid, $fdate->dateTime->getTimestamp(), time());
  5562. $odo = $GMONGO->getOdometerSum($tid, $fromts, $tots);
  5563. $cOdo = $cacheValue + $odo['result'][0]['odometer'];
  5564.  
  5565. //var_dump($cOdo);
  5566. //die;
  5567.  
  5568. switch ($mode) {
  5569. case ODOMETER_NONE :
  5570. break;
  5571. case ODOMETER_NOADJUST :
  5572. $ov = 0;
  5573. break;
  5574. }
  5575.  
  5576. } else {
  5577. $fdate->setUTCDate($date, $time);
  5578. $ts = $fdate->dateTime->getTimestamp();
  5579. switch ($mode) {
  5580. case ODOMETER_NONE :
  5581. $inputs = $GMONGO->getAMRecord($tid, array('timestamp' => $ts), 1);
  5582. break;
  5583. case ODOMETER_NOADJUST :
  5584. $inputs = $GMONGO->getAMRecord_reverseSorted($tid, array('timestamp' => array('$lte' => $ts)), 1);
  5585. $ov = 0;
  5586. break;
  5587. }
  5588. $cOdo = $inputs [0] ['odometer'];
  5589. }
  5590.  
  5591. $cOdo += $ov;
  5592. } else
  5593. $cOdo = false;
  5594.  
  5595. return $cOdo;
  5596. }*/
  5597.  
  5598. public function getHistoryDriverName($tid, $date, $time) {
  5599. // Driver name
  5600. global $LANGUAGE;
  5601. global $GMONGO;
  5602.  
  5603. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  5604.  
  5605. if ($this->isDriverIDEnabled ( $tid ) == false) {
  5606. $QUERY = "SELECT name,tagID FROM driversMap INNER JOIN drivers USING(tagID) WHERE trackerid =\"$tid\" AND type='S'";
  5607. $this->dbclass->execute_query ( $QUERY );
  5608. $ans = $this->dbclass->get_result_complete ();
  5609.  
  5610. if ($ans != false && $ans [0] ['name'] != NULL && $ans [0] ['name'] != '') {
  5611. return $ans [0] ['name'];
  5612. }
  5613. }
  5614.  
  5615. $tag = 0;
  5616.  
  5617. $fdate = new FNSDateTime('UTC');
  5618. $fdate->setDate($date, $time);
  5619. $timestamp = $fdate->dateTime->getTimestamp();
  5620.  
  5621. $queryCriteria = array('timestamp' => $timestamp);
  5622. $field = array('driverID' => true);
  5623. $ans = $GMONGO->getAMRecordLimitedField($tid, $queryCriteria, $field);
  5624.  
  5625. /*$QUERY = "SELECT driverID from M{$tid} WHERE (date =\"" . $date . "\" AND time =\"" . $time . "\")";
  5626. $this->dbclass->execute_query ( $QUERY );
  5627. $ans = $this->dbclass->get_result_complete ();*/
  5628.  
  5629. if ($ans != false && $ans [0] ['driverID'] != NULL && $ans [0] ['driverID'] != '') {
  5630. $tag = $ans [0] ['driverID'];
  5631. } else {
  5632. $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
  5633. $fdate->setDate ( $fdate->UTCDateString, 0 );
  5634. $dayts = $fdate->dateTime->getTimestamp();
  5635. $ans = $GMONGO->getERecords_reverseSorted($tid, array('event' => EVENT_RFID_SWEEP, '$or' => array(array('timestamp' => array('$lte' => $timestamp)), array('date' => $fdate->UTCDateString) ) ));
  5636.  
  5637. /*$QUERY = "SELECT * from E{$tid} WHERE event=\"" . EVENT_RFID_SWEEP . "\" AND ((date =\"" . $date . "\" AND time <=\"" . $time . "\") OR (date = \"" . $fdate->UTCDateString . "\")) ORDER BY date desc, time desc LIMIT 0,1";
  5638. $this->dbclass->execute_query ( $QUERY );
  5639. $ans = $this->dbclass->get_result_complete ();*/
  5640. if ($ans != false) {
  5641. $tag = $ans [0] ['description'];
  5642. } else
  5643. return false;
  5644. }
  5645.  
  5646. $QUERY = "SELECT * FROM drivers WHERE tagID=\"{$tag}\"";
  5647. $this->dbclass->execute_query ( $QUERY );
  5648. $ans = $this->dbclass->get_result_complete ();
  5649.  
  5650. if ($ans != false) {
  5651. return $ans [0] ['name'] . " " . ($this->verifyDriverTag ( $ans [0], $tid ) ? '' : $LANGUAGE ['UNAUTHORIZED']);
  5652. }
  5653.  
  5654. return false;
  5655. }
  5656. public function getExtendedTrackerInformation($tid) {
  5657. $info = array ();
  5658.  
  5659. $features = $this->getTrackerInformation ( $tid );
  5660. $info ['features'] = $features [0];
  5661.  
  5662. $QUERY = "SELECT * FROM trackerHW WHERE fscode=\"{$features[0]['type']}\"";
  5663. $this->dbclass->execute_query ( $QUERY );
  5664. $ans = $this->dbclass->get_result_complete ();
  5665.  
  5666. $info ['hardware'] = $ans [0];
  5667.  
  5668. return $info;
  5669. }
  5670. public function getOdometerTuning_periodWise($tid, $sDate, $sTime, $eDate, $eTime) {
  5671. $periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
  5672. $QUERY = "SELECT date,time,odo FROM odoTuning WHERE (trackerid='$tid' AND ((date < '$sDate') or (date = '$sDate' AND time <= $sTime))) ORDER BY date desc, time desc LIMIT 0,1";
  5673. $this->dbclass->execute_query ( $QUERY );
  5674. $previousTune = $this->dbclass->get_result_complete ();
  5675.  
  5676. $QUERY = "SELECT date,time,odo FROM odoTuning WHERE (trackerid='$tid' AND ($periodClause)) ORDER BY date, time";
  5677. $this->dbclass->execute_query ( $QUERY );
  5678. $tuneValues = $this->dbclass->get_result_complete ();
  5679.  
  5680. if ($previousTune != false) {
  5681. if ($tuneValues == false)
  5682. $tuneValues = $previousTune;
  5683. else
  5684. $tuneValues = array_merge ( $previousTune, $tuneValues );
  5685. }
  5686. $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
  5687.  
  5688. $tuneTimes = array ();
  5689.  
  5690. if ($tuneValues != false) {
  5691. foreach ( $tuneValues as $k => $v ) {
  5692. $fdate->setUTCDate ( $v ['date'], $v ['time'] );
  5693. $n = new emptyClass ();
  5694. $n->ts = $fdate->dateTime->getTimestamp ();
  5695. $n->odo = $v ['odo'];
  5696. array_push ( $tuneTimes, $n );
  5697. }
  5698. }
  5699. return $tuneTimes;
  5700. }
  5701. public function getTrips($tid, $sDate, $sTime, $eDate, $eTime) {
  5702. require_once FLEET_FOLDER . '/tripsLogic.php';
  5703.  
  5704. global $GMONGO;
  5705.  
  5706. $info = $this->getExtendedTrackerInformation ( $tid );
  5707.  
  5708. $features = &$info ['features'];
  5709. $hardware = &$info ['hardware'];
  5710.  
  5711. $features = $this->getFeatures ( $tid );
  5712.  
  5713. if ($features ['ignitionSensor'] != 1) {
  5714. $tripWise = false;
  5715. } else {
  5716. $tripWise = true;
  5717. }
  5718.  
  5719. //$periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
  5720.  
  5721. $periodClauseMongo = array();
  5722.  
  5723. $periodClauseMongo = basicTransactions::getPeriodClauseMongo ( $sDate, $sTime, $eDate, $eTime );
  5724.  
  5725. $odometer = new OdometerHelper ();
  5726. $odometer->initialize ( $tid, $sDate, $sTime, $eDate, $eTime );
  5727.  
  5728. /*$QUERY = "SELECT * FROM A{$tid} WHERE " . $periodClause . " ORDER BY date,time";
  5729. $this->dbclass->execute_query ( $QUERY );
  5730. $ans = $this->dbclass->get_result_complete ();
  5731.  
  5732. $QUERY = "SELECT * FROM M{$tid} WHERE " . $periodClause . " ORDER BY date,time";
  5733. $this->dbclass->execute_query ( $QUERY );
  5734. $mtable = $this->dbclass->get_result_complete ();*/
  5735. //$periodClause = basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime );
  5736.  
  5737. $periodClauseMongo ['latitude'] = array('$exists' => 1, '$ne' => null);
  5738.  
  5739. //$mtable = $GMONGO->getAMRecord($tid, $periodClauseMongo);
  5740. $ans = $GMONGO->getAMRecord($tid, $periodClauseMongo);
  5741.  
  5742. //print_r($mtable);
  5743. //die;
  5744.  
  5745. $fnsdate = new FNSDateTime ( $_SESSION ['timezone'] );
  5746.  
  5747. $rtype = array ();
  5748.  
  5749. $odoInitialized = false;
  5750.  
  5751. if ($ans != false) {
  5752. $acount = count ( $ans );
  5753. /*$comp = 0;
  5754. $mcount = count ( $mtable );*/
  5755.  
  5756. $fprofiles = $this->getTrackerFuelProfiles ( $tid );
  5757. $tprofiles = $this->getTrackerTemperatureProfiles ( $tid );
  5758.  
  5759. for($x = 0; $x < $acount; $x ++) {
  5760. //echo "check".$ans[$x]['odometer']."\r\n";
  5761. //echo $x;
  5762. //die;
  5763. //for(; $comp < $mcount; $comp ++) {
  5764. //if ($ans [$x] ['date'] == $mtable [$comp] ['date'] && $ans [$x] ['time'] == $mtable [$comp] ['time']) {
  5765. for($i = 0; $i < 5; $i ++) {
  5766. if ($fprofiles [$i] != false) {
  5767. $ans [$x] ['fuel' . ($i + 1)] = $this->getFuelFromProfile ( $fprofiles [$i], $ans [$x] ['fuel' . ($i + 1)] );
  5768. } else {
  5769. unset ( $ans [$x] ['fuel' . ($i + 1)] );
  5770. }
  5771.  
  5772. if ($tprofiles [$i] != false) {
  5773. $ans [$x] ['temperature' . ($i + 1)] = $this->getTemperatureFromProfile ( $tprofiles [$i], $ans [$x] ['temperature' . ($i + 1)] );
  5774. } else {
  5775. unset ( $ans [$x] ['temperature' . ($i + 1)] );
  5776. }
  5777. }
  5778.  
  5779. //$ans [$x] = array_merge ( $ans [$x], $mtable [$comp] );
  5780.  
  5781. if ($odoInitialized) {
  5782. $ans[$x]['odometer'] = $odometer->getValue($ans[$x]['odometer'],$ans[$x]['date'], $ans[$x]['time']);
  5783. } else {
  5784. $ans [$x] ['odometer'] = $odometer->begin($ans[$x]['date'], $ans[$x]['time']);
  5785. $odoInitialized = true;
  5786. }
  5787.  
  5788. //$comp ++;
  5789. //break;
  5790. //} //if
  5791. //} //inner for $mcount
  5792.  
  5793. if ($ans [$x] ['speed'] > 0)
  5794. $status = "m";
  5795. else {
  5796. if (isset ( $ans [$x] ['IO'] )) {
  5797. if (strpos ( $ans [$x] ['IO'], "j" ) === false)
  5798. $status = "s";
  5799. else
  5800. $status = "i";
  5801. } else
  5802. $status = "s";
  5803. }
  5804. $ans [$x] ['s'] = $status;
  5805.  
  5806. $fnsdate->setUTCDate ( $ans [$x] ['date'], $ans [$x] ['time'] );
  5807. $ans [$x] ['dateString'] = $fnsdate->getFormattedString ();
  5808. } //Outer for loop, traversing $ans
  5809.  
  5810. if ($tripWise == true) {
  5811. $rtype ['mode'] = "trip";
  5812. $rtype ['data'] = tripsLogic::tripsWithIgnition ( $ans );
  5813.  
  5814. $c = count ( $rtype ['data'] );
  5815.  
  5816. for($i = 0; $i < $c; $i ++) {
  5817. // Trips name
  5818. $QUERY = "SELECT name from trips WHERE sDate=\"" . $rtype ['data'] [$i] ['sdate'] . "\" AND eDate=\"" . $rtype ['data'] [$i] ['edate'] . "\" AND sTime =\"" . $rtype ['data'] [$i] ['stime'] . "\" AND eTime=\"" . $rtype ['data'] [$i] ['etime'] . "\" AND trackerid=\"$tid\"";
  5819. $this->dbclass->execute_query ( $QUERY );
  5820. $ans = $this->dbclass->get_result_complete ();
  5821.  
  5822. if ($ans != false) {
  5823. $rtype ['data'] [$i] ['name'] = $ans [0] ['name'];
  5824. } else {
  5825. $rtype ['data'] [$i] ['name'] = '';
  5826. }
  5827.  
  5828. // Driver name
  5829. $dname = $this->getHistoryDriverName ( $tid, $rtype ['data'] [$i] ['sdate'], $rtype ['data'] [$i] ['stime'] );
  5830. $rtype ['data'] [$i] ['dname'] = $dname;
  5831. }
  5832. } else {
  5833. $rtype ['mode'] = "continuous";
  5834. $rtype ['data'] = array (
  5835. 'data' => tripsLogic::tripsWithoutIgnition ( $ans )
  5836. );
  5837. }
  5838. }
  5839.  
  5840. /*if ($ans != false) {
  5841. $acount = count ( $ans );
  5842. $comp = 0;
  5843. $mcount = count ( $mtable );
  5844.  
  5845. $fprofiles = $this->getTrackerFuelProfiles ( $tid );
  5846. $tprofiles = $this->getTrackerTemperatureProfiles ( $tid );
  5847.  
  5848. for($x = 0; $x < $acount; $x ++) {
  5849. for(; $comp < $mcount; $comp ++) {
  5850. if ($ans [$x] ['date'] == $mtable [$comp] ['date'] && $ans [$x] ['time'] == $mtable [$comp] ['time']) {
  5851. for($i = 0; $i < 5; $i ++) {
  5852. if ($fprofiles [$i] != false) {
  5853. $mtable [$comp] ['fuel' . ($i + 1)] = $this->getFuelFromProfile ( $fprofiles [$i], $mtable [$comp] ['fuel' . ($i + 1)] );
  5854. } else {
  5855. unset ( $mtable [$comp] ['fuel' . ($i + 1)] );
  5856. }
  5857.  
  5858. if ($tprofiles [$i] != false) {
  5859. $mtable [$comp] ['temperature' . ($i + 1)] = $this->getTemperatureFromProfile ( $tprofiles [$i], $mtable [$comp] ['temperature' . ($i + 1)] );
  5860. } else {
  5861. unset ( $mtable [$comp] ['temperature' . ($i + 1)] );
  5862. }
  5863. }
  5864.  
  5865. $ans [$x] = array_merge ( $ans [$x], $mtable [$comp] );
  5866.  
  5867. if ($odoInitialized) {
  5868. $ans[$x]['odometer'] = $odometer->getValue($ans[$x]['odometer'],$ans[$x]['date'], $ans[$x]['time']);
  5869. } else {
  5870. $ans [$x] ['odometer'] = $odometer->begin($ans[$x]['date'], $ans[$x]['time']);
  5871. $odoInitialized = true;
  5872. }
  5873.  
  5874. $comp ++;
  5875. break;
  5876. }
  5877. }
  5878.  
  5879. if ($ans [$x] ['speed'] > 0)
  5880. $status = "m";
  5881. else {
  5882. if (isset ( $ans [$x] ['IO'] )) {
  5883. if (strpos ( $ans [$x] ['IO'], "j" ) === false)
  5884. $status = "s";
  5885. else
  5886. $status = "i";
  5887. } else
  5888. $status = "s";
  5889. }
  5890. $ans [$x] ['s'] = $status;
  5891.  
  5892. $fnsdate->setUTCDate ( $ans [$x] ['date'], $ans [$x] ['time'] );
  5893. $ans [$x] ['dateString'] = $fnsdate->getFormattedString ();
  5894. }
  5895.  
  5896. if ($tripWise == true) {
  5897. $rtype ['mode'] = "trip";
  5898. $rtype ['data'] = tripsLogic::tripsWithIgnition ( $ans );
  5899.  
  5900. $c = count ( $rtype ['data'] );
  5901.  
  5902. for($i = 0; $i < $c; $i ++) {
  5903. // Trips name
  5904. $QUERY = "SELECT name from trips WHERE sDate=\"" . $rtype ['data'] [$i] ['sdate'] . "\" AND eDate=\"" . $rtype ['data'] [$i] ['edate'] . "\" AND sTime =\"" . $rtype ['data'] [$i] ['stime'] . "\" AND eTime=\"" . $rtype ['data'] [$i] ['etime'] . "\" AND trackerid=\"$tid\"";
  5905. $this->dbclass->execute_query ( $QUERY );
  5906. $ans = $this->dbclass->get_result_complete ();
  5907.  
  5908. if ($ans != false) {
  5909. $rtype ['data'] [$i] ['name'] = $ans [0] ['name'];
  5910. } else {
  5911. $rtype ['data'] [$i] ['name'] = '';
  5912. }
  5913.  
  5914. // Driver name
  5915. $dname = $this->getHistoryDriverName ( $tid, $rtype ['data'] [$i] ['sdate'], $rtype ['data'] [$i] ['stime'] );
  5916. $rtype ['data'] [$i] ['dname'] = $dname;
  5917. }
  5918. } else {
  5919. $rtype ['mode'] = "continuous";
  5920. $rtype ['data'] = array (
  5921. 'data' => tripsLogic::tripsWithoutIgnition ( $ans )
  5922. );
  5923. }
  5924. }*/
  5925.  
  5926. // Fetch Events
  5927. /*$QUERY = "SELECT * FROM E{$tid} WHERE " . basicTransactions::getPeriodClause ( $sDate, $sTime, $eDate, $eTime ) . " ORDER BY date,time";
  5928. $this->dbclass->execute_query ( $QUERY );
  5929. $ans = $this->dbclass->get_result_complete ();*/
  5930.  
  5931. $ans = $GMONGO->getERecords($tid, $periodClauseMongo);
  5932.  
  5933. if ($ans != false) {
  5934. $ecount = count ( $ans );
  5935.  
  5936. for($i = 0; $i < $ecount; $i ++) {
  5937. $fnsdate->setUTCDate ( $ans [$i] ['date'], $ans [$i] ['time'] );
  5938. $ans [$i] ['dateString'] = $fnsdate->getFormattedString ();
  5939. $ans [$i] ['description'] = utf8_encode($ans [$i] ['description']->bin);
  5940. unset ( $ans [$i] ['date'] );
  5941. unset ( $ans [$i] ['time'] );
  5942. }
  5943. $rtype ['events'] = $ans;
  5944. }
  5945. return $rtype;
  5946. }
  5947. public function getCompleteGeofences() {
  5948. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  5949. $QUERY = "SELECT id,radius,fencename,type,color FROM geofences WHERE username='$uname' ORDER BY fencename";
  5950. $this->dbclass->execute_query ( $QUERY );
  5951. $geofences = $this->dbclass->get_result_complete ();
  5952.  
  5953. $c = count ( $geofences );
  5954.  
  5955. for($i = 0; $i < $c; $i ++) {
  5956. $QUERY = "SELECT * FROM geofencesPoints WHERE id = " . $geofences [$i] ['id'] . " LIMIT 0,1";
  5957. $this->dbclass->execute_query ( $QUERY );
  5958. $gp = $this->dbclass->get_result_complete ();
  5959. $geofences [$i] ['latitude'] = $gp [0] ['latitude'];
  5960. $geofences [$i] ['longitude'] = $gp [0] ['longitude'];
  5961. }
  5962. return $geofences;
  5963. }
  5964. public function getGeofences($trackerid) {
  5965. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  5966. $QUERY = "SELECT geoid FROM activeGeofences WHERE username=\"$uname\" AND trackerid =\"$trackerid\" GROUP BY geoid";
  5967. $this->dbclass->execute_query ( $QUERY );
  5968. $result = $this->dbclass->get_result_complete ();
  5969. if ($result == false)
  5970. return ERROR;
  5971. $c = count ( $result );
  5972.  
  5973. $fences = array ();
  5974. $fences ['t0'] = array ();
  5975. $fences ['t1'] = array ();
  5976. $fences ['t2'] = array ();
  5977.  
  5978. for($i = 0; $i < $c; $i ++) {
  5979. $QUERY = "SELECT * FROM geofences WHERE id = " . $result [$i] ['geoid'];
  5980. $this->dbclass->execute_query ( $QUERY );
  5981. $geofence = $this->dbclass->get_result_complete ();
  5982.  
  5983. $QUERY = "SELECT latitude, longitude FROM geofencesPoints WHERE id = " . $result [$i] ['geoid'];
  5984. $this->dbclass->execute_query ( $QUERY );
  5985. $geofence [0] ['points'] = $this->dbclass->get_result_complete ();
  5986.  
  5987. array_push ( $fences ['t' . $geofence [0] ['type']], $geofence [0] );
  5988. }
  5989. return $fences;
  5990. }
  5991. private function deactivateGeofence($uname, $fid) {
  5992. $QUERY = "SELECT * FROM activeGeofences WHERE username=\"$uname\" AND geoid =\"$fid\"";
  5993. $this->dbclass->execute_query ( $QUERY );
  5994. $result = $this->dbclass->get_result_complete ();
  5995. if ($result == false)
  5996. return;
  5997. $fcount = count ( $result );
  5998.  
  5999. for($i = 0; $i < $fcount; $i ++) {
  6000. $query = "DELETE FROM activeGeofences WHERE username='{$uname}' and id='{$result[$i]['id']}'";
  6001. $rs = $this->dbclass->execute_query ( $query );
  6002.  
  6003. if ($rs != true) {
  6004. //$this->writeDebugLog ( "\r\n" . mysql_error ( $this->dbclass->dblink ) );
  6005. $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
  6006. return ERROR;
  6007. }
  6008.  
  6009. $query = "INSERT INTO ACTIVEGEO_CACHE SET id='{$result[$i]["id"]}', geoid='{$result[$i]["geoid"]}', username='{$uname}' , fencename='{$result[$i]["fencename"]}' , trackerid='{$result[$i]['trackerid']}' , sdate='{$result[$i]['sdate']}' , shr='{$result[$i]['shr']}' , ";
  6010. $query .= "smin='{$result[$i]['smin']}' , edate='{$result[$i]['edate']}' , ehr='{$result[$i]['ehr']}' , emin='{$result[$i]['emin']}', operation='D',speedLimit = '{$result[$i]['speedLimit']}', actType = '{$result[$i]['type']}', timezone = '{$result[$i]['timezone']}', weekDays = '{$result[$i]['weekDays']}', monthDays='{$result[$i]['monthDays']}'";
  6011. $rs = $this->dbclass->execute_query ( $query );
  6012. if ($rs != true) {
  6013. $this->writeDebugLog ( "\r\n" . $this->dbclass->dblink->error );
  6014. return ERROR;
  6015. }
  6016. }
  6017. }
  6018. public function deleteUserGeofences($uname) {
  6019. // uname is already escaped
  6020. $query = "SELECT id from geofences WHERE username=\"" . $uname . "\"";
  6021. $this->dbclass->execute_query ( $query );
  6022. $result = $this->dbclass->get_result_complete ();
  6023.  
  6024. for($i = 0; $i < count ( $result ); $i ++) {
  6025. $fid = $result [$i] ['id'];
  6026. $query = "DELETE FROM geofences WHERE username=\"" . $uname . "\" and id = \"" . $fid . "\"";
  6027. $this->dbclass->execute_query ( $query );
  6028. $query = "DELETE FROM geofencesPoints WHERE id = \"" . $fid . "\"";
  6029. $this->dbclass->execute_query ( $query );
  6030. $query = "DELETE FROM geoContacts where username=\"{$uname}\" and fencename=\"{$fid}\"";
  6031. $this->dbclass->execute_query ( $query );
  6032. $query = "DELETE FROM POI WHERE id IN (SELECT POIID from checkpoints WHERE id={$fid})";
  6033. $this->dbclass->execute_query ( $query );
  6034. $query = "DELETE FROM checkpoints where id=\"{$fid}\"";
  6035. $this->dbclass->execute_query ( $query );
  6036.  
  6037. $query = "DELETE FROM archiveFences where geoid=\"{$fid}\"";
  6038. $this->dbclass->execute_query ( $query );
  6039. }
  6040. return SUCCESS;
  6041. }
  6042. public function deleteGeofence($fid) {
  6043. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6044.  
  6045. $query = "SELECT id from geofences WHERE username=\"" . $uname . "\" and id = \"" . $fid . "\"";
  6046. $this->dbclass->execute_query ( $query );
  6047. $result = $this->dbclass->get_result_complete ();
  6048. if ($result [0] ['id'] != $fid)
  6049. return ERROR;
  6050.  
  6051. $this->deactivateGeofence ( $uname, $fid );
  6052.  
  6053. $query = "DELETE FROM geofences WHERE username=\"" . $uname . "\" and id = \"" . $fid . "\"";
  6054. $this->dbclass->execute_query ( $query );
  6055. $query = "DELETE FROM geofencesPoints WHERE id = \"" . $fid . "\"";
  6056. $this->dbclass->execute_query ( $query );
  6057. $query = "DELETE FROM geoContacts where username=\"{$uname}\" and fencename=\"{$fid}\"";
  6058. $this->dbclass->execute_query ( $query );
  6059. $query = "DELETE FROM POI WHERE id IN (SELECT POIID from checkpoints WHERE id={$fid})";
  6060. $this->dbclass->execute_query ( $query );
  6061. $query = "DELETE FROM checkpoints where id=\"{$fid}\"";
  6062. $this->dbclass->execute_query ( $query );
  6063.  
  6064. $query = "DELETE FROM archiveFences where geoid=\"{$fid}\"";
  6065. $this->dbclass->execute_query ( $query );
  6066.  
  6067. return SUCCESS;
  6068. }
  6069. public function getActiveGeofences($fid) {
  6070. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6071.  
  6072. $query = "SELECT * FROM activeGeofences WHERE username=\"$uname\" AND geoid=\"$fid\"";
  6073. $result = $this->dbclass->execute_query ( $query );
  6074. return $this->dbclass->get_result_complete ();
  6075. }
  6076. public function getCompleteActiveGeofences() {
  6077. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6078.  
  6079. if (isset ( $_GET ['type'] ) && $_GET ['type'] == 2) {
  6080. $query = "SELECT activeGeofences.* FROM activeGeofences inner join geofences ON (geoid = geofences.id) WHERE geofences.username=\"$uname\" and type = 2";
  6081. } else {
  6082. $query = "SELECT activeGeofences.* FROM activeGeofences inner join geofences ON (geoid = geofences.id) WHERE geofences.username=\"$uname\" and (type = 0 or type = 1)";
  6083. }
  6084.  
  6085. $result = $this->dbclass->execute_query ( $query );
  6086. return $this->dbclass->get_result_complete ();
  6087. }
  6088. public function setActiveGeofences($result, $fid) {
  6089. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6090.  
  6091. if ($result == false)
  6092. return;
  6093. $fcount = count ( $result );
  6094.  
  6095. $fname = $this->dbclass->get_escape_string ( $result [0] ['fencename'] );
  6096.  
  6097. for($i = 0; $i < $fcount; $i ++) {
  6098. $query = "INSERT INTO activeGeofences SET id = 0, geoid = $fid, username='{$uname}' , fencename='{$fname}' , trackerid='{$result[$i]['trackerid']}' , sdate='{$result[$i]['sdate']}' , shr='{$result[$i]['shr']}' , ";
  6099. $query .= "smin='{$result[$i]['smin']}' , edate='{$result[$i]['edate']}' , ehr='{$result[$i]['ehr']}' , emin='{$result[$i]['emin']}', speedLimit = '{$result[$i]['speedLimit']}', actType = '{$result[$i]['actType']}', timezone = '{$result[$i]['timezone']}', weekDays = '{$result[$i]['weekDays']}', monthDays='{$result[$i]['monthDays']}'";
  6100. $this->dbclass->execute_query ( $query );
  6101. //$id = mysql_insert_id ( $this->dblink );
  6102. $id = $this->dbclass->dblink->insert_id;
  6103.  
  6104. $query = "INSERT INTO ACTIVEGEO_CACHE SET id = $id, geoid = $fid, username='{$uname}' , fencename='{$fname}' , trackerid='{$result[$i]['trackerid']}' , sdate='{$result[$i]['sdate']}' , shr='{$result[$i]['shr']}' , ";
  6105. $query .= "smin='{$result[$i]['smin']}' , edate='{$result[$i]['edate']}' , ehr='{$result[$i]['ehr']}' , emin='{$result[$i]['emin']}', operation='A', speedLimit = '{$result[$i]['speedLimit']}', actType = '{$result[$i]['actType']}', timezone = '{$result[$i]['timezone']}', weekDays = '{$result[$i]['weekDays']}', monthDays='{$result[$i]['monthDays']}'";
  6106. $this->dbclass->execute_query ( $query );
  6107. }
  6108. }
  6109. public function deactivateTrackerFence($record) {
  6110. $fname = $this->dbclass->get_escape_string ( rawurldecode ( $record ['fencename'] ) );
  6111. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6112.  
  6113. $query = "DELETE FROM activeGeofences WHERE username='{$uname}' AND id='{$record['id']}'";
  6114. $this->dbclass->execute_query ( $query );
  6115.  
  6116. $query = "INSERT INTO ACTIVEGEO_CACHE SET id = '{$record['id']}', geoid = '{$record['geoid']}', username='{$uname}' , fencename='{$fname}' , trackerid='{$record['trackerid']}' , sdate='{$record['sdate']}' , shr='{$record['shr']}' , ";
  6117. $query .= "smin='{$record['smin']}' , edate='{$record['edate']}' , ehr='{$record['ehr']}' , emin='{$record['emin']}', operation = 'D', speedLimit = 0, actType = '{$record['type']}', timezone = '{$_SESSION['timezone']}', weekDays = '{$record['weekDays']}', monthDays='{$record['monthDays']}'";
  6118. $this->dbclass->execute_query ( $query );
  6119. }
  6120. public function activateGeofence($record) {
  6121. $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
  6122. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6123.  
  6124. $query = "INSERT INTO activeGeofences SET id = 0, geoid={$record['geoid']}, username='{$uname}' , fencename='{$fname}' , trackerid='{$record['trackerid']}' , sdate='{$record['sdate']}' , shr='{$record['shr']}' , ";
  6125. $query .= "smin='{$record['smin']}' , edate='{$record['edate']}' , ehr='{$record['ehr']}' , emin='{$record['emin']}', speedLimit = '{$record['speedLimit']}', actType = '{$record['type']}', timezone = '{$_SESSION['timezone']}', weekDays = '{$record['weekDays']}', monthDays='{$record['monthDays']}'";
  6126. $result = $this->dbclass->execute_query ( $query );
  6127.  
  6128. if ($result == false) {
  6129. //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
  6130. $this->writeDebugLog ( $this->dbclas->dblink->error );
  6131. }
  6132.  
  6133. //$fid = mysql_insert_id ( $this->dblink );
  6134. $fid = $this->dbclass->dblink->insert_id;
  6135.  
  6136. $query = "INSERT INTO ACTIVEGEO_CACHE SET id = $fid, geoid={$record['geoid']}, username='{$uname}' , fencename='{$fname}' , trackerid='{$record['trackerid']}' , sdate='{$record['sdate']}' , shr='{$record['shr']}' , ";
  6137. $query .= "smin='{$record['smin']}' , edate='{$record['edate']}' , ehr='{$record['ehr']}' , emin='{$record['emin']}', operation = 'A', speedLimit = '{$record['speedLimit']}',actType = '{$record['type']}', timezone = '{$_SESSION['timezone']}', weekDays = '{$record['weekDays']}', monthDays='{$record['monthDays']}'";
  6138. $result = $this->dbclass->execute_query ( $query );
  6139. if ($result == false) {
  6140. //$this->writeDebugLog ( mysql_error ( $this->dblink ) );
  6141. $this->writeDebugLog ( $this->dbclas->dblink->error );
  6142. }
  6143. }
  6144. public function saveGeofence($record) {
  6145. $fname = $this->dbclass->get_escape_string ( $record->fencename );
  6146. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6147.  
  6148. $query = "INSERT INTO geofences SET username=\"$username\", fencename=\"$fname\", radius=" . $record->radius . ", type = " . $record->type . ",color = '" . $record->color . "'";
  6149. $result = $this->dbclass->execute_query ( $query );
  6150. //$geoid = mysql_insert_id ( $this->dblink );
  6151. $geoid = $this->dbclass->dblink->insert_id;
  6152.  
  6153. $count = count ( $record->locations );
  6154.  
  6155. for($i = 0; $i < $count; $i ++) {
  6156. $query = "INSERT INTO geofencesPoints SET id=\"$geoid\", latitude=" . $record->locations [$i]->latitude . ", longitude = " . $record->locations [$i]->longitude;
  6157. $result = $this->dbclass->execute_query ( $query );
  6158. }
  6159.  
  6160. if ($record->type == 2) {
  6161. $count = count ( $record->checkpoints );
  6162.  
  6163. for($i = 0; $i < $count; $i ++) {
  6164. $cname = $this->dbclass->get_escape_string ( $record->checkpoints [$i]->chkname );
  6165. $poiid = '';
  6166.  
  6167. if ($record->checkpoints [$i]->addpoi == 1) {
  6168. $query = "INSERT INTO POI SET username='$username', latitude = " . $record->checkpoints [$i]->latitude;
  6169. $query .= ", longitude = " . $record->checkpoints [$i]->longitude . ", color='" . $record->color . "', radius = " . $record->checkpoints [$i]->chkradius;
  6170. $query .= ", shortName = '" . $cname . "', metric='KILOMETERS',icontype='de', keywords = '$username, $cname'";
  6171. $result = $this->dbclass->execute_query ( $query );
  6172.  
  6173. //$poiid = ",POIID = " . mysql_insert_id ( $this->dblink );
  6174. $poiid = ",POIID = " . $this->dbclass->dblink->insert_id;
  6175. }
  6176.  
  6177. $query = "INSERT INTO checkpoints SET id=\"$geoid\", name = '" . $cname . "', latitude=" . $record->checkpoints [$i]->latitude . ", longitude = " . $record->checkpoints [$i]->longitude . ", radius = " . $record->checkpoints [$i]->chkradius . $poiid;
  6178. $result = $this->dbclass->execute_query ( $query );
  6179. }
  6180. }
  6181.  
  6182. return $geoid;
  6183. }
  6184. public function loadGeofence($fid) {
  6185. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6186.  
  6187. $query = "SELECT * FROM geofences WHERE username=\"$username\" AND id=\"$fid\"";
  6188. $result = $this->dbclass->execute_query ( $query );
  6189. $basic_settings = $this->dbclass->get_result_complete ();
  6190.  
  6191. if ($basic_settings == false)
  6192. return ERROR;
  6193.  
  6194. $query = "SELECT latitude,longitude FROM geofencesPoints WHERE id=\"$fid\"";
  6195. $result = $this->dbclass->execute_query ( $query );
  6196. $adv_settings = $this->dbclass->get_result_complete ();
  6197.  
  6198. $basic_settings = $basic_settings [0];
  6199. $basic_settings ['locations'] = $adv_settings;
  6200.  
  6201. if ($basic_settings ['type'] == 2) {
  6202. $query = "SELECT * FROM checkpoints WHERE id=\"$fid\"";
  6203. $result = $this->dbclass->execute_query ( $query );
  6204. $checkpoints = $this->dbclass->get_result_complete ();
  6205.  
  6206. $basic_settings ['checkpoints'] = $checkpoints;
  6207. }
  6208.  
  6209. return $basic_settings;
  6210. }
  6211. public function getGeofenceList($fields_list = "*") {
  6212. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6213. $QUERY = "SELECT {$fields_list} FROM geofences WHERE username=\"$username\" AND (type = 0 OR type = 1)";
  6214. $this->dbclass->execute_query ( $QUERY );
  6215. $ans = $this->dbclass->get_result_complete ();
  6216. if ($ans == false)
  6217. return ERROR;
  6218. return $ans;
  6219. }
  6220. public function getPathList($fields_list = "*") {
  6221. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6222. $QUERY = "SELECT {$fields_list} FROM geofences WHERE username=\"$username\" AND type = 2";
  6223. $this->dbclass->execute_query ( $QUERY );
  6224. return $this->dbclass->get_result_complete ();
  6225. }
  6226. public function getCompleteActivePaths() {
  6227. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6228.  
  6229. $query = "SELECT * FROM ACTIVEPATH WHERE username=\"$uname\"";
  6230. $result = $this->dbclass->execute_query ( $query );
  6231. return $this->dbclass->get_result_complete ();
  6232. }
  6233. public function getActivePaths($fencename) {
  6234. $fname = $this->dbclass->get_escape_string ( $fencename );
  6235. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6236.  
  6237. $query = "SELECT * FROM ACTIVEPATH WHERE username=\"$uname\" AND fencename=\"$fname\"";
  6238. $result = $this->dbclass->execute_query ( $query );
  6239. return $this->dbclass->get_result_complete ();
  6240. }
  6241. public function setActivePaths($result, $fencename) {
  6242. $fname = $this->dbclass->get_escape_string ( $fencename );
  6243. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6244.  
  6245. if ($result == false)
  6246. return;
  6247. $fcount = count ( $result );
  6248.  
  6249. for($i = 0; $i < $fcount; $i ++) {
  6250.  
  6251. $query = "INSERT INTO ACTIVEPATH SET username='{$uname}' , fencename='{$fname}' , trackerid='{$result[$i]['trackerid']}' , sdate='{$result[$i]['sdate']}' , ";
  6252. $query .= "edate='{$result[$i]['edate']}' , alertOffRoute='{$result[$i]['alertOffRoute']}' , daysGap='{$result[$i]['daysGap']}', speedLimit='{$result[$i]['speedLimit']}', stime='{$result[$i]['stime']}', etime='{$result[$i]['etime']}'";
  6253. $this->dbclass->execute_query ( $query );
  6254. }
  6255. }
  6256. public function activatePath($record) {
  6257. $fname = $this->dbclass->get_escape_string ( $record ['fencename'] );
  6258. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6259.  
  6260. $query = "INSERT INTO ACTIVEPATH SET username='{$uname}' , fencename='{$fname}' , trackerid='{$record['trackerid']}' , sdate='{$record['sdate']}' ,";
  6261. $query .= "edate='{$record['edate']}' , alertOffRoute='{$record['alertOffRoute']}' , daysGap='{$record['daysGap']}', speedLimit='{$record['speedLimit']}', stime='{$record['stime']}', etime='{$record['etime']}'";
  6262. $this->dbclass->execute_query ( $query );
  6263. }
  6264. private function deactivatePath($uname, $fname) {
  6265. $QUERY = "SELECT * FROM ACTIVEPATH WHERE username=\"$uname\" AND fencename =\"$fname\"";
  6266. $this->dbclass->execute_query ( $QUERY );
  6267. $result = $this->dbclass->get_result_complete ();
  6268. if ($result == false)
  6269. return;
  6270. $fcount = count ( $result );
  6271.  
  6272. for($i = 0; $i < $fcount; $i ++) {
  6273. $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' and fencename='{$fname}' and trackerid='{$result[$i]['trackerid']}' and sdate='{$result[$i]['sdate']}' and ";
  6274. $query .= " edate='{$result[$i]['edate']}' and alertOffRoute='{$result[$i]['alertOffRoute']}' and daysGap='{$result[$i]['daysGap']}' and speedLimit='{$result[$i]['speedLimit']}' and stime='{$result[$i]['stime']}' and etime='{$result[$i]['etime']}'";
  6275. $this->dbclass->execute_query ( $query );
  6276. }
  6277. }
  6278. public function deactivateTrackerPath($record) {
  6279. $fname = $this->dbclass->get_escape_string ( rawurldecode ( $record ['fencename'] ) );
  6280. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6281.  
  6282. $query = "DELETE FROM ACTIVEPATH WHERE username='{$uname}' AND fencename='{$fname}' AND trackerid='{$record['trackerid']}' AND sdate='{$record['sdate']}' AND ";
  6283. $query .= " edate='{$record['edate']}' AND alertOffRoute='{$record['alertOffRoute']}' AND daysGap='{$record['daysGap']}' AND speedLimit='{$record['speedLimit']}' AND stime='{$record['stime']}' AND etime='{$record['etime']}'";
  6284. $this->dbclass->execute_query ( $query );
  6285. }
  6286. public function loadPath($fname) {
  6287. $n = new emptyClass ();
  6288. $n->fencename = $fname;
  6289.  
  6290. $fname = $this->dbclass->get_escape_string ( $fname );
  6291. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6292.  
  6293. $query = "SELECT radius FROM PATHS WHERE username=\"$username\" AND fencename=\"$fname\" LIMIT 0,1";
  6294. $result = $this->dbclass->execute_query ( $query );
  6295. $radius = $this->dbclass->get_result_complete ();
  6296. if ($radius == false)
  6297. return false;
  6298.  
  6299. $n->radius = $radius [0] ['radius'];
  6300.  
  6301. $query = "SELECT latitude,longitude FROM PATHS WHERE username=\"$username\" AND fencename=\"$fname\"";
  6302. $result = $this->dbclass->execute_query ( $query );
  6303. $locations = $this->dbclass->get_result_complete ();
  6304.  
  6305. $n->locations = $locations;
  6306.  
  6307. return $n;
  6308. }
  6309. public function deletePath($fencename) {
  6310. $fname = $this->dbclass->get_escape_string ( $fencename );
  6311. $uname = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6312.  
  6313. $this->deactivatePath ( $uname, $fname );
  6314.  
  6315. $query = "DELETE FROM PATHS WHERE username=\"" . $uname . "\" and fencename = \"" . $fname . "\"";
  6316. $this->dbclass->execute_query ( $query );
  6317. }
  6318. public function savePath($record) {
  6319. $fname = $this->dbclass->get_escape_string ( $record->fencename );
  6320. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6321.  
  6322. $query = "SELECT COUNT(*) FROM PATHS WHERE username=\"$username\" AND fencename=\"$fname\"";
  6323. $result = $this->dbclass->execute_query ( $query );
  6324. $answer = $this->dbclass->get_result_complete ();
  6325. if ($answer [0] ['COUNT(*)'] > 0)
  6326. return EXISTS;
  6327.  
  6328. $count = count ( $record->locations );
  6329.  
  6330. for($i = 0; $i < $count; $i ++) {
  6331. $query = "INSERT INTO PATHS SET username=\"$username\", fencename=\"$fname\", latitude=" . $record->locations [$i]->lat . ", longitude = " . $record->locations [$i]->lng . ",radius = " . $record->radius;
  6332. $result = $this->dbclass->execute_query ( $query );
  6333. }
  6334.  
  6335. return SUCCESS;
  6336. }
  6337. //public function getActiveFenceDetails ($fid = false, $fenceName, $trackerid) {
  6338. public function getActiveFenceDetails ($fenceName, $trackerid) {
  6339. $fenceName = $this->dbclass->get_escape_string($fenceName);
  6340. $query = "SELECT * FROM activeGeofences WHERE fencename = '{$fenceName}' AND trackerid = '{$trackerid}'";
  6341. $result = $this->dbclass->execute_query($query);
  6342. if ($result)
  6343. return $this->dbclass->get_result_complete();
  6344. return $result;
  6345. }
  6346. public function getTrackerName($tid) {
  6347. $query = "SELECT name FROM trackers WHERE trackerid=\"$tid\"";
  6348. $this->dbclass->execute_query ( $query );
  6349. $answer = $this->dbclass->get_result_complete ();
  6350. return $answer;
  6351. }
  6352. public function getFleetTrackersFuelTanks() {
  6353. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6354. $QUERY = "SELECT trackerid, tankCapacity FROM trackersMap inner join trackersDetails using (trackerid) WHERE username=\"{$username}\"";
  6355. $this->dbclass->execute_query ( $QUERY );
  6356. return $this->dbclass->get_result_complete ();
  6357. }
  6358.  
  6359. public function getEJMSTrackersList($username, $fields_list = "*") {
  6360. $username = $this->dbclass->get_escape_string($username);
  6361. $QUERY = "SELECT trackerid, name, licensePlate FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) WHERE username=\"{$username}\"";
  6362. $this->dbclass->execute_query ( $QUERY );
  6363. $trackers = $this->dbclass->get_result_complete ();
  6364. $trackers = $this->filterExpiredTrackers ( $trackers );
  6365.  
  6366. if (count ( $trackers ) == 0)
  6367. return false;
  6368. if ($fields_list == "*")
  6369. return $trackers;
  6370.  
  6371. $sp = explode ( ",", $fields_list );
  6372. $newlist = array ();
  6373.  
  6374. foreach ( $trackers as $t ) {
  6375. $n = array ();
  6376. foreach ( $sp as $v ) {
  6377. $n [$v] = $t [$v];
  6378. }
  6379. array_push ( $newlist, $n );
  6380. }
  6381.  
  6382. return $newlist;
  6383. }
  6384.  
  6385. public function getEJMSDriversList($username) {
  6386. $username = $this->dbclass->get_escape_string($username);
  6387. $QUERY = "SELECT tagID, name, licno FROM drivers WHERE username=\"{$username}\"";
  6388. $this->dbclass->execute_query ( $QUERY );
  6389. return $this->dbclass->get_result_complete ();
  6390. }
  6391.  
  6392. private function getTrackerGroups ($tid) {
  6393. $query = "SELECT * FROM groupTrackersMap INNER JOIN trackersLogicalGroups USING (groupid) WHERE trackerid = '{$tid}'";
  6394. $this->dbclass->execute_query($query);
  6395. $groups = $this->dbclass->get_result_complete();
  6396.  
  6397. if ($groups != false) {
  6398. $gid = array_map(function ($a) {
  6399. return $a['groupName'];
  6400. }, $groups);
  6401. return implode(',', $gid);
  6402. }
  6403.  
  6404. return false;
  6405. }
  6406.  
  6407. public function getTrackersList($fields_list = "*") {
  6408. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6409. if ($_SESSION ['accounttype'] == USERTYPE_ADMINISTRATOR) {
  6410. //$QUERY = "SELECT {$fields_list} FROM trackers inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid)";
  6411. $QUERY = "SELECT {$fields_list} FROM adminTrackersMap INNER JOIN trackers USING(trackerid) INNER JOIN trackersExInfo USING (trackerid) LEFT JOIN trackersDetails USING (trackerid) LEFT JOIN trackersFeatures USING (trackerid) WHERE username = '$username'";
  6412. $this->dbclass->execute_query ( $QUERY );
  6413. return $this->dbclass->get_result_complete ();
  6414. } else {
  6415. $QUERY = "SELECT {$fields_list} FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join trackersDetails using (trackerid) left join trackersFeatures using(trackerid) WHERE username=\"{$username}\"";
  6416. $this->dbclass->execute_query ( $QUERY );
  6417. $trackers = $this->dbclass->get_result_complete ();
  6418. $trackers = $this->filterExpiredTrackers ( $trackers );
  6419. if (count ( $trackers ) == 0)
  6420. return false;
  6421.  
  6422. if ($fields_list == "*")
  6423. return $trackers;
  6424.  
  6425. $sp = explode ( ",", $fields_list );
  6426. $newlist = array ();
  6427.  
  6428. foreach ( $trackers as $t ) {
  6429. $groups = $this->getTrackerGroups($t['trackerid']);
  6430. $n = array ();
  6431. foreach ( $sp as $v ) {
  6432. $n [$v] = $t [$v];
  6433. }
  6434. if ($groups != false)
  6435. $n ['groups'] = $groups;
  6436. array_push ( $newlist, $n );
  6437. }
  6438.  
  6439. return $newlist;
  6440. }
  6441. }
  6442. public function driverTrackersList($did) {
  6443. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6444.  
  6445. $QUERY = "SELECT trackerid,name FROM driversMap inner join trackers using (trackerid) WHERE tagID=\"$did\"";
  6446. $this->dbclass->execute_query ( $QUERY );
  6447. return $this->dbclass->get_result_complete ();
  6448. }
  6449. public function getFutureSchedulesList() {
  6450. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6451. $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
  6452. $QUERY = "SELECT * FROM schedules WHERE username=\"$username\" AND ((sdate = \"{$fdate->UTCDateString}\" AND stime > \"{$fdate->UTCTime}\") OR (sdate > \"{$fdate->UTCDateString}\"))";
  6453. $this->dbclass->execute_query ( $QUERY );
  6454. return $this->dbclass->get_result_complete ();
  6455. }
  6456.  
  6457. public function getPastSchedulesList() {
  6458. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6459. $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
  6460. $QUERY = "SELECT * FROM schedules WHERE username=\"$username\" AND ((sdate = \"{$fdate->UTCDateString}\" AND stime <= \"{$fdate->UTCTime}\") OR (sdate < \"{$fdate->UTCDateString}\"))";
  6461. $this->dbclass->execute_query ( $QUERY );
  6462. return $this->dbclass->get_result_complete ();
  6463. }
  6464.  
  6465. private function getScheduleForTracker($tid, $sdate, $stime, $edate, $etime) {
  6466. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6467. $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
  6468.  
  6469. $QUERY = "SELECT sdate,stime,edate,etime FROM schedules WHERE username=\"$username\" AND trackerid=\"$tid\" AND ((sdate = \"{$sdate}\" AND stime > \"{$fdate->UTCTime}\") OR (sdate > \"{$fdate->UTCDateString}\"))";
  6470. $this->dbclass->execute_query ( $QUERY );
  6471. $answer = $this->dbclass->get_result_complete ();
  6472. if ($answer == false)
  6473. return false;
  6474. $c = count ( $answer );
  6475.  
  6476. $fdate->setUTCDate ( $sdate, $stime );
  6477. $des_start = $fdate->dateTime->getTimestamp ();
  6478.  
  6479. $fdate->setUTCDate ( $edate, $etime );
  6480. $des_end = $fdate->dateTime->getTimestamp ();
  6481.  
  6482. $busy = false;
  6483.  
  6484. for($i = 0; $i < $c; $i ++) {
  6485. $fdate->setUTCDate ( $answer [$i] ['sdate'], $answer [$i] ['stime'] );
  6486. $sch_start = $fdate->dateTime->getTimestamp ();
  6487. $fdate->setUTCDate ( $answer [$i] ['edate'], $answer [$i] ['etime'] );
  6488. $sch_end = $fdate->dateTime->getTimestamp ();
  6489.  
  6490. if ($des_start >= $sch_start && $des_start <= $sch_end)
  6491. $busy = true;
  6492. else if ($des_end >= $sch_start && $des_end <= $sch_end)
  6493. $busy = true;
  6494. }
  6495.  
  6496. return $busy;
  6497. }
  6498. public function SCH_GetTrackers($sdate, $stime, $edate, $etime) {
  6499. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6500. $QUERY = "SELECT trackerid,name,color,vtype,trackerExpiry FROM trackersMap inner join trackers using (trackerid) inner join trackersExInfo using(trackerid) inner join trackersDetails using (trackerid) WHERE username=\"$username\"";
  6501. $this->dbclass->execute_query ( $QUERY );
  6502. $answer = $this->dbclass->get_result_complete ();
  6503. $answer = $this->filterExpiredTrackers ( $answer );
  6504.  
  6505. $c = count ( $answer );
  6506. $ri = 0;
  6507. $response = array ();
  6508.  
  6509. for($i = 0; $i < $c; $i ++) {
  6510. $busy = $this->getScheduleForTracker ( $answer [$i] ['trackerid'], $sdate, $stime, $edate, $etime );
  6511. $groups = $this->getTrackerGroups($answer [$i] ['trackerid']);
  6512. if ($groups != false)
  6513. $answer [$i] ['groups'] = $groups;
  6514. if ($busy != true)
  6515. array_push ( $response, $answer [$i] );
  6516. }
  6517.  
  6518. return $response;
  6519. }
  6520. private function getScheduleForDriver($tagid, $sdate, $stime, $edate, $etime) {
  6521. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6522. $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
  6523.  
  6524. $QUERY = "SELECT sdate,stime,edate,etime FROM schedules WHERE username=\"$username\" AND dtag=\"$tagid\" AND ((sdate = \"{$sdate}\" AND stime > \"{$fdate->UTCTime}\") OR (sdate > \"{$fdate->UTCDateString}\"))";
  6525. $this->dbclass->execute_query ( $QUERY );
  6526. $answer = $this->dbclass->get_result_complete ();
  6527.  
  6528. if ($answer == false)
  6529. return false;
  6530.  
  6531. $c = count ( $answer );
  6532.  
  6533. $fdate->setUTCDate ( $sdate, $stime );
  6534. $des_start = $fdate->dateTime->getTimestamp ();
  6535.  
  6536. $fdate->setUTCDate ( $edate, $etime );
  6537. $des_end = $fdate->dateTime->getTimestamp ();
  6538.  
  6539. $busy = false;
  6540.  
  6541. for($i = 0; $i < $c; $i ++) {
  6542. $fdate->setUTCDate ( $answer [$i] ['sdate'], $answer [$i] ['stime'] );
  6543. $sch_start = $fdate->dateTime->getTimestamp ();
  6544. $fdate->setUTCDate ( $answer [$i] ['edate'], $answer [$i] ['etime'] );
  6545. $sch_end = $fdate->dateTime->getTimestamp ();
  6546. if ($des_start >= $sch_start && $des_start <= $sch_end)
  6547. $busy = true;
  6548. else if ($des_end >= $sch_start && $des_end <= $sch_end)
  6549. $busy = true;
  6550. }
  6551.  
  6552. return $busy;
  6553. }
  6554. public function SCH_GetDrivers($sdate, $stime, $edate, $etime) {
  6555. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6556. $QUERY = "SELECT name,tagID FROM drivers WHERE username=\"$username\"";
  6557. $this->dbclass->execute_query ( $QUERY );
  6558. $answer = $this->dbclass->get_result_complete ();
  6559.  
  6560. $c = count ( $answer );
  6561. $ri = 0;
  6562. $response = array ();
  6563.  
  6564. for($i = 0; $i < $c; $i ++) {
  6565. $busy = $this->getScheduleForDriver ( $answer [$i] ['tagID'], $sdate, $stime, $edate, $etime );
  6566. if ($busy != true)
  6567. array_push ( $response, $answer [$i] );
  6568. }
  6569.  
  6570. return $response;
  6571. }
  6572. public function SCH_RemoveSchedule($id) {
  6573. $query = "DELETE FROM schedules WHERE id=\"$id\"";
  6574. $result = $this->dbclass->execute_query ( $query );
  6575.  
  6576. if ($result != true) {
  6577. return ERROR;
  6578. }
  6579.  
  6580. return SUCCESS;
  6581. }
  6582. public function SCH_SaveSchedule() {
  6583. $_POST ['username'] = $_SESSION ['username'];
  6584. $fdate = new FNSDateTime ( $_SESSION ['timezone'] );
  6585.  
  6586. $stime = $_POST ['shr'] * 3600 + $_POST ['smin'] * 60;
  6587. $fdate->setDate ( $_POST ['sdate'], $stime );
  6588. $_POST ['sdate'] = $fdate->UTCDateString;
  6589. $_POST ['stime'] = $fdate->UTCTime;
  6590. $stime_str = $fdate->getFormattedString ();
  6591.  
  6592. $etime = $_POST ['ehr'] * 3600 + $_POST ['emin'] * 60;
  6593. $fdate->setDate ( $_POST ['edate'], $etime );
  6594. $_POST ['edate'] = $fdate->UTCDateString;
  6595. $_POST ['etime'] = $fdate->UTCTime;
  6596. $etime_str = $fdate->getFormattedString ();
  6597.  
  6598. unset ( $_POST ['shr'] );
  6599. unset ( $_POST ['smin'] );
  6600. unset ( $_POST ['ehr'] );
  6601. unset ( $_POST ['emin'] );
  6602.  
  6603. $query = "REPLACE INTO schedules SET ";
  6604. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  6605. $result = $this->dbclass->execute_query ( $query );
  6606.  
  6607. if ($result != true) {
  6608. $reply ['id'] = "-1";
  6609. $reply ['ans'] = ERROR;
  6610. return $reply;
  6611. }
  6612. if ($_POST ['id'] == 0 || $_POST ['id'] == NULL)
  6613. $_POST ['id'] = $this->dbclass->dblink->insert_id;
  6614. $reply ['id'] = $_POST ['id'];
  6615. $reply ['stime'] = $stime_str;
  6616. $reply ['etime'] = $etime_str;
  6617. $reply ['ans'] = SUCCESS;
  6618.  
  6619. return $reply;
  6620. }
  6621.  
  6622. public function saveAdminSettings () {
  6623. $username = $_SESSION['username'];
  6624.  
  6625. $QUERY = "SELECT * FROM adminPreferences WHERE username = \"{$username}\"";
  6626. $this->dbclass->execute_query ( $QUERY );
  6627. $answer = $this->dbclass->get_result_complete ();
  6628.  
  6629. if ($answer == false) {
  6630. $_POST['username'] = $_SESSION['username'];
  6631. $query = "REPLACE INTO adminPreferences SET ";
  6632. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  6633. $result = $this->dbclass->execute_query ( $query );
  6634. } else {
  6635. $query = "UPDATE adminPreferences SET ";
  6636. $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE username = \"{$username}\"";
  6637. $result = $this->dbclass->execute_query ( $query );
  6638. }
  6639.  
  6640. if ($result != true) {
  6641. return ERROR;
  6642. }
  6643. return SUCCESS;
  6644. }
  6645.  
  6646. public function saveUserSettings() {
  6647. if ($_SESSION['accounttype'] == USERTYPE_FLEET)
  6648. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6649. elseif ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
  6650. $username = $this->dbclass->get_escape_string ( $_POST ['username'] );
  6651.  
  6652. $QUERY = "SELECT * FROM userPreferences WHERE username = \"{$username}\"";
  6653. $this->dbclass->execute_query ( $QUERY );
  6654. $answer = $this->dbclass->get_result_complete ();
  6655.  
  6656. if ($answer == false) {
  6657. //$_POST ['username'] = $_SESSION ['username'];
  6658. $_POST ['username'] = $username;
  6659. $query = "REPLACE INTO userPreferences SET ";
  6660. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  6661. $result = $this->dbclass->execute_query ( $query );
  6662. } else {
  6663. $query = "UPDATE userPreferences SET ";
  6664. $query .= basicTransactions::prepareMySQL_POSTRequest () . " WHERE username = \"{$username}\"";
  6665. $result = $this->dbclass->execute_query ( $query );
  6666. }
  6667.  
  6668. if ($result != true) {
  6669. return ERROR;
  6670. }
  6671. return SUCCESS;
  6672. }
  6673.  
  6674. public function saveAccountPassword($opass, $npass) {
  6675. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6676. $QUERY = "SELECT * FROM Users WHERE username = \"{$username}\"";
  6677. $this->dbclass->execute_query ( $QUERY );
  6678. $answer = $this->dbclass->get_result_complete ();
  6679.  
  6680. if ($answer == false) {
  6681. return ERROR;
  6682. }
  6683.  
  6684. if ($answer [0] ['password'] == $opass) {
  6685. $password = $this->dbclass->get_escape_string ( $npass );
  6686. $QUERY = "UPDATE Users SET password = \"{$password}\" where username = \"{$username}\"";
  6687. $this->dbclass->execute_query ( $QUERY );
  6688. return SUCCESS;
  6689. } else {
  6690. return ERROR;
  6691. }
  6692. }
  6693. public function resetMessageLimits($type, $tid) {
  6694. if ($type == 'sms') {
  6695. $QUERY = "UPDATE msgLimits SET cSMSValue = NULL where trackerid = \"{$tid}\"";
  6696. $this->dbclass->execute_query ( $QUERY );
  6697. } else if ($type == 'email') {
  6698. $QUERY = "UPDATE msgLimits SET cEmailValue = NULL where trackerid = \"{$tid}\"";
  6699. $this->dbclass->execute_query ( $QUERY );
  6700. }
  6701. }
  6702. private function filterExpiredTrackers($list) {
  6703. $gmmtime = time ();
  6704. $nlist = array ();
  6705. if ($list == false)
  6706. return $nlist;
  6707. foreach ( $list as $k => $v ) {
  6708. if (isset ( $v ['trackerExpiry'] ) && $v ['trackerExpiry'] != NULL) {
  6709. if (($gmmtime - $v ['trackerExpiry']) <= 0) {
  6710. array_push ( $nlist, $v );
  6711. }
  6712. } else {
  6713. array_push ( $nlist, $v );
  6714. }
  6715. }
  6716. return $nlist;
  6717. }
  6718. public function getTrackersCredit() {
  6719. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6720. $QUERY = "select * from trackersMap inner join trackers using (trackerid) inner join trackersExInfo using (trackerid) left join msgLimits using(trackerid) where username = \"{$username}\"";
  6721. $this->dbclass->execute_query ( $QUERY );
  6722. $answer = $this->dbclass->get_result_complete ();
  6723. if ($answer == false)
  6724. return false;
  6725.  
  6726. $answer = $this->filterExpiredTrackers ( $answer );
  6727. if (count ( $answer ) == 0)
  6728. return false;
  6729.  
  6730. $ups = $this->getUserPreferences ( $_SESSION ['username'] );
  6731. $sps = $this->getSystemPreferences ();
  6732. $tz = $sps [0] ['defaultTimezone'];
  6733.  
  6734. if ($ups != false && isset ( $ups [0] ['settings'] )) {
  6735. $settings = json_decode ( $ups [0] ['settings'], true );
  6736. if (isset ( $settings ['timezone'] ) && $settings ['timezone'] != null)
  6737. $tz = $settings ['timezone'];
  6738. }
  6739.  
  6740. $fdate = new FNSDateTime ( $tz );
  6741. $myear = $fdate->dateTime->format ( "m-Y" ); // $dt->month . "-" . $dt->year;
  6742.  
  6743. foreach ( $answer as $k => $v ) {
  6744. if ($v ['cDate'] != NULL && $v ['cDate'] != $fdate->DateString) {
  6745. $answer [$k] ['consumedEmail'] = 0;
  6746. $answer [$k] ['cEmailValue'] = $answer [$k] ['emailLimitValue'];
  6747. } else {
  6748. if ($answer [$k] ['sEmailValue'] === NULL)
  6749. $answer [$k] ['sEmailValue'] = $answer [$k] ['emailLimitValue'];
  6750. if ($answer [$k] ['cEmailValue'] === NULL)
  6751. $answer [$k] ['cEmailValue'] = $answer [$k] ['sEmailValue'];
  6752.  
  6753. $answer [$k] ['consumedEmail'] = $answer [$k] ['sEmailValue'] - $answer [$k] ['cEmailValue'];
  6754.  
  6755. if ($answer [$k] ['sEmailValue'] != $answer [$k] ['emailLimitValue']) {
  6756. $answer [$k] ['cEmailValue'] = $answer [$k] ['emailLimitValue'] - $answer [$k] ['consumedEmail'];
  6757. }
  6758. }
  6759.  
  6760. if ($v ['cMonthYear'] != NULL && $v ['cMonthYear'] != $myear) {
  6761. $answer [$k] ['consumedSMS'] = 0;
  6762. $answer [$k] ['cSMSValue'] = $answer [$k] ['smsLimitValue'];
  6763. } else {
  6764.  
  6765. if ($answer [$k] ['sSMSValue'] === NULL)
  6766. $answer [$k] ['sSMSValue'] = $answer [$k] ['smsLimitValue'];
  6767. if ($answer [$k] ['cSMSValue'] === NULL)
  6768. $answer [$k] ['cSMSValue'] = $answer [$k] ['sSMSValue'];
  6769.  
  6770. $answer [$k] ['consumedSMS'] = $answer [$k] ['sSMSValue'] - $answer [$k] ['cSMSValue'];
  6771.  
  6772. if ($answer [$k] ['sSMSValue'] != $answer [$k] ['smsLimitValue']) {
  6773. $answer [$k] ['cSMSValue'] = $answer [$k] ['smsLimitValue'] - $answer [$k] ['consumedSMS'];
  6774. }
  6775. }
  6776. }
  6777.  
  6778. return $answer;
  6779. }
  6780. public function ccare_printAccountsList() {
  6781. $QUERY = "select username,company,mobile,email,website from Users where accounttype = \"" . USERTYPE_FLEET . "\"";
  6782. $this->dbclass->execute_query ( $QUERY );
  6783. $answer = $this->dbclass->get_result_complete ();
  6784. return $answer;
  6785. }
  6786. public function report_removeSchedule($id) {
  6787. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6788. $QUERY = "DELETE FROM reportSchedules WHERE id = \"$id\" and username='{$username}'";
  6789. $this->dbclass->execute_query ( $QUERY );
  6790. //if (mysql_errno ( $this->dbclass->dblink ) == 0)
  6791. if ( $this->dbclass->dblink->errno == 0)
  6792. return SUCCESS;
  6793. return ERROR;
  6794. }
  6795. public function report_removeUserTrackerSchedule($uname, $tid) {
  6796. $uname = $this->dbclass->get_escape_string ( $uname );
  6797. $QUERY = "SELECT id,getParams FROM reportSchedules WHERE username = \"$uname\"";
  6798. $this->dbclass->execute_query ( $QUERY );
  6799. $ans = $this->dbclass->get_result_complete ();
  6800. if ($ans == false)
  6801. return;
  6802.  
  6803. foreach ( $ans as $v ) {
  6804. $data = json_decode ( $v ['getParams'], true );
  6805. $trackers = explode ( ",", $data ['trackers'] );
  6806. $newlist = array ();
  6807. $updated = false;
  6808.  
  6809. foreach ( $trackers as $t ) {
  6810. if ($t != $tid)
  6811. array_push ( $newlist, $t );
  6812. else
  6813. $updated = true;
  6814. }
  6815. if ($updated) {
  6816. if (count ( $newlist ) > 0) {
  6817. $data ['trackers'] = implode ( ",", $newlist );
  6818. $json = $this->dbclass->get_escape_string ( json_encode ( $data ) );
  6819.  
  6820. $QUERY = "UPDATE reportSchedules SET getParams='$json' WHERE id=" . $v ['id'];
  6821. $this->dbclass->execute_query ( $QUERY );
  6822. } else {
  6823. $QUERY = "DELETE FROM reportSchedules WHERE id=" . $v ['id'];
  6824. $this->dbclass->execute_query ( $QUERY );
  6825. }
  6826. }
  6827. }
  6828.  
  6829. //if (mysql_errno ( $this->dbclass->dblink ) == 0)
  6830. if ( $this->dbclass->dblink->errno == 0)
  6831. return SUCCESS;
  6832. return ERROR;
  6833. }
  6834. public function report_getSchedulesList() {
  6835. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6836. $QUERY = "select * from reportSchedules where username=\"{$username}\" order by id ";
  6837. $this->dbclass->execute_query ( $QUERY );
  6838. $answer = $this->dbclass->get_result_complete ();
  6839.  
  6840. if ($answer == false)
  6841. return false;
  6842. $newanswer = array ();
  6843.  
  6844. foreach ( $answer as $k => $a ) {
  6845. $getParams = json_decode ( $a ['getParams'], true );
  6846. $trackers = explode ( ",", $getParams ['trackers'] );
  6847. $newlist = array ();
  6848.  
  6849. foreach ( $trackers as $t ) {
  6850. $tinfo = $this->getTrackerInformation ( $t );
  6851. if (isset ( $tinfo [0] ['trackerExpiry'] ) && $tinfo [0] ['trackerExpiry'] != 0 && (time () - $tinfo [0] ['trackerExpiry']) > 0)
  6852. continue;
  6853. array_push ( $newlist, $t );
  6854. }
  6855. if (count ( $newlist ) == 0)
  6856. continue;
  6857. $getParams ['trackers'] = implode ( ",", $newlist );
  6858. $answer [$k] ['getParams'] = json_encode ( $getParams );
  6859. array_push ( $newanswer, $answer [$k] );
  6860. }
  6861.  
  6862. return $newanswer;
  6863. }
  6864. public function report_updateScheduleDate($id, $date, $time) {
  6865. $QUERY = "UPDATE reportSchedules SET date=\"$date\", time=\"$time\" WHERE id=\"$id\"";
  6866. $this->dbclass->execute_query ( $QUERY );
  6867. }
  6868. public function report_saveSchedule($sess, $get, $post, $sch) {
  6869. $username = $this->dbclass->get_escape_string ( $_SESSION ['username'] );
  6870. $sess = $this->dbclass->get_escape_string ( $sess );
  6871. $get = $this->dbclass->get_escape_string ( $get );
  6872. $post = $this->dbclass->get_escape_string ( $post );
  6873. $sch = $this->dbclass->get_escape_string ( $sch );
  6874.  
  6875. $QUERY = "INSERT INTO reportSchedules SET id = 0, username=\"{$username}\", sessParams=\"$sess\", getParams = \"$get\", postParams=\"$post\", schParams=\"$sch\"";
  6876. $this->dbclass->execute_query ( $QUERY );
  6877.  
  6878. //return mysql_insert_id ( $this->dblink );
  6879. return $this->dbclass->dblink->insert_id;
  6880. }
  6881. public function rp_getTrackersDetails($tid) {
  6882. $QUERY = "SELECT * FROM trackers LEFT JOIN trackersDetails USING(trackerid) WHERE trackerid=\"$tid\"";
  6883. $this->dbclass->execute_query ( $QUERY );
  6884. return $this->dbclass->get_result_complete ();
  6885. }
  6886. public function rp_getTrackerFeatures($tid) {
  6887. $QUERY = "SELECT * FROM trackersFeatures WHERE trackerid=\"$tid\"";
  6888. $this->dbclass->execute_query ( $QUERY );
  6889. return $this->dbclass->get_result_complete ();
  6890. }
  6891.  
  6892. public function getEJMSTripRecord($username, $id) {
  6893. $username = $this->dbclass->get_escape_string ( $username );
  6894. $QUERY = "SELECT ejms.*, drivers.name as dname FROM ejms INNER JOIN drivers ON (drivers.tagID = ejms.driver) WHERE ejms.username=\"$username\" and ejms.id='$id'";
  6895. $this->dbclass->execute_query ( $QUERY );
  6896. return $this->dbclass->get_result_complete ();
  6897. }
  6898.  
  6899. public function getEJMSList($username) {
  6900. $result = array();
  6901.  
  6902. $username = $this->dbclass->get_escape_string ( $username );
  6903.  
  6904. $user = $this->getUserRecord($_SESSION['username']);
  6905. $features = json_decode($user[0]['features'],true);
  6906.  
  6907. if (isset($features['driversMgmt']) == false || $features['driversMgmt'] == 0 ){
  6908. $QUERY = "SELECT * FROM ejms WHERE username=\"$username\" and driver='". $_SESSION['driverdata']['tagID']."'";
  6909. }else {
  6910. $QUERY = "SELECT * FROM ejms WHERE username=\"$username\"";
  6911. }
  6912.  
  6913. $this->dbclass->execute_query ( $QUERY );
  6914. $result['ejms'] = $this->dbclass->get_result_complete ();
  6915.  
  6916. $QUERY = "SELECT name, tagID FROM drivers WHERE username=\"$username\"";
  6917. $this->dbclass->execute_query ( $QUERY );
  6918. $result['drivers'] = $this->dbclass->get_result_complete ();
  6919.  
  6920. $QUERY = "SELECT * FROM trackersMap INNER JOIN trackersDetails USING(trackerID) WHERE username=\"$username\"";
  6921. $this->dbclass->execute_query ( $QUERY );
  6922. $result['trackers'] = $this->dbclass->get_result_complete ();
  6923.  
  6924. $QUERY = "SELECT * FROM trackersMap INNER JOIN trackersDetails USING(trackerID) WHERE username=\"$username\"";
  6925. $this->dbclass->execute_query ( $QUERY );
  6926. $result['trackers'] = $this->dbclass->get_result_complete ();
  6927.  
  6928. $QUERY = "SELECT * FROM ejms_levelx_people WHERE username=\"$username\"";
  6929. $this->dbclass->execute_query ( $QUERY );
  6930. $result['levels'] = $this->dbclass->get_result_complete ();
  6931.  
  6932. return $result;
  6933. }
  6934. public function getEJMSRecord($username, $id) {
  6935. $username = $this->dbclass->get_escape_string ( $username );
  6936. $QUERY = "SELECT * FROM ejms WHERE username=\"$username\" and id='$id'";
  6937. $this->dbclass->execute_query ( $QUERY );
  6938. $result['ejms'] = $this->dbclass->get_result_complete ();
  6939.  
  6940. $QUERY = "SELECT * FROM ejms_levelx_people WHERE username=\"$username\"";
  6941. $this->dbclass->execute_query ( $QUERY );
  6942. $result['levels'] = $this->dbclass->get_result_complete ();
  6943. return $result;
  6944. }
  6945.  
  6946. public function getEJMSData($id){
  6947. $id = $this->dbclass->get_escape_string ( $id );
  6948. $QUERY = "SELECT * FROM ejms INNER JOIN trackers ON (vehicleno = trackerid) WHERE id='$id'";
  6949. $this->dbclass->execute_query ( $QUERY );
  6950. return $this->dbclass->get_result_complete ();
  6951. }
  6952.  
  6953.  
  6954. public function approveEJMS($level, $id, $key, $email) {
  6955. $key = $this->dbclass->get_escape_string($key);
  6956. $id = $this->dbclass->get_escape_string($id);
  6957. $level = $this->dbclass->get_escape_string($level);
  6958. $email = $this->dbclass->get_escape_string($email);
  6959.  
  6960. $levelkey = 'level'.$level.'_approved';
  6961. $keyfield = 'level'.$level.'_approve_key';
  6962. $emailfield = 'level'.$level.'_approver';
  6963.  
  6964. $QUERY = "UPDATE ejms SET $levelkey = 1, $emailfield='$email' WHERE id='$id' and $keyfield = '$key'";
  6965. $this->dbclass->execute_query ( $QUERY );
  6966. }
  6967.  
  6968. public function markEJMSTrip_approve_sent($username, $id) {
  6969. $username = $this->dbclass->get_escape_string ( $username );
  6970. $QUERY = "UPDATE ejms SET approval_sent = 1 WHERE username=\"$username\" and id='$id'";
  6971. $this->dbclass->execute_query ( $QUERY );
  6972. }
  6973.  
  6974.  
  6975. public function saveEJMSTrip($username) {
  6976. $username = $_POST['username'] = $this->dbclass->get_escape_string ( $username );
  6977.  
  6978. if ($_POST['id'] != 0) {
  6979. $id = $this->dbclass->get_escape_string ( $_POST['id'] );
  6980. $query = "UPDATE ejms SET ";
  6981. $query .= basicTransactions::prepareMySQL_POSTRequest ()." WHERE username='$username' and id = '$id'";
  6982. $result = $this->dbclass->execute_query ( $query );
  6983. } else {
  6984. $query = "INSERT INTO ejms SET ";
  6985. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  6986. $result = $this->dbclass->execute_query ( $query );
  6987. }
  6988.  
  6989. $code = array();
  6990.  
  6991. if ($result == false) {
  6992. $code['code'] = ERROR;
  6993. $code['id'] = 0;
  6994. }else {
  6995. $code['code'] = SUCCESS;
  6996. //$code['id'] = mysql_insert_id($this->dblink);
  6997. $code['id'] = $this->dbclass->dblink->insert_id;
  6998. }
  6999. return $code;
  7000.  
  7001. }
  7002. public function removeEJMSTrip($username, $id) {
  7003. $username = $this->dbclass->get_escape_string ( $username );
  7004. $id = $this->dbclass->get_escape_string ( $id);
  7005.  
  7006. $query = "SELECT preins_id FROM ejms WHERE username='$username' and id='$id' ";
  7007. $result = $this->dbclass->execute_query ( $query );
  7008. $result = $this->dbclass->get_result_complete();
  7009.  
  7010. $preid = $result[0]['preins_id'];
  7011. $query = "DELETE FROM ejmspreins WHERE username='$username' and id='$preid' ";
  7012. $result = $this->dbclass->execute_query ( $query );
  7013.  
  7014. $query = "DELETE FROM ejms WHERE username='$username' and id='$id' ";
  7015. $result = $this->dbclass->execute_query ( $query );
  7016.  
  7017.  
  7018. }
  7019.  
  7020. public function EJMSLevelSave($username) {
  7021. $username = $this->dbclass->get_escape_string ( $username );
  7022. $level = $this->dbclass->get_escape_string ( $_POST ['level'] );
  7023. $query = "SELECT COUNT(*) FROM ejms_levelx_people WHERE username='$username' and level = '$level'";
  7024. $result = $this->dbclass->execute_query ( $query );
  7025. $result = $this->dbclass->get_result_complete();
  7026.  
  7027. if ($result[0]['COUNT(*)'] > 0) {
  7028. $query = "UPDATE ejms_levelx_people SET ";
  7029. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  7030. $query .= " WHERE username = '$username' and level = '$level'";
  7031. $result = $this->dbclass->execute_query ( $query );
  7032. }else {
  7033. $_POST['username'] = $_SESSION['username'];
  7034. $query = "INSERT INTO ejms_levelx_people SET ";
  7035. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  7036. $result = $this->dbclass->execute_query ( $query );
  7037. }
  7038. }
  7039.  
  7040.  
  7041. /*******************************************************************/
  7042. /*******************NEW ADMIN DATABASE QUERIES*********************/
  7043. /*******************************************************************/
  7044.  
  7045.  
  7046. public function get_admin_users($ccare = false) {
  7047.  
  7048. $adminUserName = $_SESSION['username'];
  7049.  
  7050. $usersList = array();
  7051.  
  7052. $query = "SELECT Users.* FROM logicalGroups_V5 AS lg INNER JOIN Users ON lg.adminUserName = \"$adminUserName\" and lg.username = Users.username order by Users.username";
  7053. $result = $this->dbclass->execute_query ( $query );
  7054. $usersList = $this->dbclass->get_result_complete ();
  7055.  
  7056. if ($usersList == "") {
  7057. return false;
  7058. }
  7059.  
  7060. return $usersList;
  7061. }
  7062.  
  7063. /*
  7064. public function get_fleetcare_users($ccare = false) {
  7065.  
  7066. $adminUserName = $_SESSION['username'];
  7067.  
  7068. $query = "SELECT Users.* FROM logicalGroups_V5 AS lg INNER JOIN Users ON lg.adminUserName = \"$adminUserName\" and lg.username = Users.username order by Users.username";
  7069. $result = $this->dbclass->execute_query ( $query );
  7070. $usersList = $this->dbclass->get_result_complete ();
  7071.  
  7072. if ($usersList == "") {
  7073. return false;
  7074. }
  7075.  
  7076. return $usersList;
  7077. }*/
  7078.  
  7079. public function getTrackerIDInAdmin ($username = false) {
  7080. if(!$username)
  7081. $username = $_SESSION['username'];
  7082.  
  7083. $query = "SELECT trackerid FROM adminTrackersMap WHERE username = \"" . $username . "\"";
  7084. $this->dbclass->execute_query ( $query );
  7085. $answer = $this->dbclass->get_result_complete ();
  7086. return $answer;
  7087. }
  7088.  
  7089. public function getAllAdminTrackersList($username = false) {
  7090. global $GMONGO;
  7091.  
  7092. //if ($username != false && $username != null)
  7093. //$result = $this->getTrackerIDInAdmin($username);
  7094. /*else
  7095. $result = $this->getTrackerIDInAdmin();*/
  7096.  
  7097. if (!$username)
  7098. $username = $_SESSION['username'];
  7099.  
  7100. $query = "SELECT t.trackerid, name, imei, simno, searchKeywords, trackerExpiry, t.type, chassisNo, licensePlate FROM adminTrackersMap AS atm INNER JOIN trackers AS t USING (trackerid) INNER JOIN trackersExInfo USING (trackerid) INNER JOIN trackersDetails USING (trackerid) WHERE atm.username = \"$username\"";
  7101. $this->dbclass->execute_query ( $query );
  7102. $answer = $this->dbclass->get_result_complete ();
  7103.  
  7104. /*$trackersList = array();
  7105.  
  7106. if ($result != false) {
  7107. foreach ($result as $v){
  7108.  
  7109. $query = "SELECT trackerid,name,imei,simno,searchKeywords,trackerExpiry,type FROM trackers inner join trackersExInfo using (trackerid) WHERE trackerid = ".$v['trackerid'];
  7110. $this->dbclass->execute_query ( $query );
  7111. $answer = $this->dbclass->get_result_complete ();
  7112. if ($answer[0] !== NULL)
  7113. array_push($trackersList, $answer[0]);
  7114. }
  7115. }
  7116.  
  7117. $answer = $trackersList;*/
  7118.  
  7119. if ($answer != false) {
  7120.  
  7121. foreach ( $answer as $k => $v ) {
  7122. $answer [$k] ['trackerExpiry'] = TrackerExpiry::checkExpiry ( $v ['trackerExpiry'] );
  7123. $addKeywords = null;
  7124.  
  7125. $query = "SELECT username FROM trackersMap WHERE trackerid=\"{$v['trackerid']}\"";
  7126. $this->dbclass->execute_query ( $query );
  7127. $users = $this->dbclass->get_result_complete();
  7128.  
  7129. if ($users != false) {
  7130. $arr = array_map(function($a){ return $a['username']; }, $users);
  7131. $answer [$k] ['users'] = implode(",", $arr);
  7132. }
  7133.  
  7134. //$lastRecord = $GMONGO->getLastAMRecord($v['trackerid']);
  7135. //$fdate->setTimestamp($lastRecord[0]['timestamp']);
  7136. //$answer [$k] ['datetime'] = $fdate->getFormattedString();
  7137. }
  7138. }
  7139.  
  7140. return $answer;
  7141. }
  7142.  
  7143. public function countAdminTrackers () {
  7144. $query = "SELECT COUNT(*) FROM adminTrackersMap WHERE username = \"" . $_SESSION['username'] . "\"";
  7145. $this->dbclass->execute_query ($query);
  7146. $answer = $this->dbclass->get_result_complete($query);
  7147. return $answer [0] ['COUNT(*)'];
  7148. }
  7149.  
  7150. public function countUserTrackers ($username = false) {
  7151. if ($username == false)
  7152. $username = $_SESSION['username'];
  7153. $query = "SELECT COUNT(*) FROM trackersMap WHERE username = \"" . $username . "\"";
  7154. $this->dbclass->execute_query ($query);
  7155. $answer = $this->dbclass->get_result_complete($query);
  7156. return $answer [0] ['COUNT(*)'];
  7157. }
  7158.  
  7159. //RETURNS LICENSES ALLOTED TO ADMIN BY SUPER USER
  7160. public function getAdminLicenses ($username = false) {
  7161.  
  7162. if (!$username)
  7163. $username = $_SESSION['username'];
  7164.  
  7165. $query = "SELECT licenses FROM licenses WHERE username = \"" . $username . "\"";
  7166. $this->dbclass->execute_query ($query);
  7167. $answer = $this->dbclass->get_result_complete ($query);
  7168. return $answer;
  7169. }
  7170.  
  7171.  
  7172. public function get_users_list_POI() {
  7173. $uname = $_SESSION['username'];
  7174. $fields = "Users.username, Users.name, Users.company";
  7175. $wClause = "Users.accounttype = " . USERTYPE_FLEET;
  7176. //$query = "SELECT Users.username, Users.name, Users.company FROM logicalGroups_V5 INNER JOIN Users ON logicalGroups_V5.adminUserName = \"admin\" AND logicalGroups_V5.username = Users.username WHERE Users.accounttype = ".USERTYPE_FLEET." ORDER BY Users.username";
  7177. $query = "SELECT $fields FROM logicalGroups_V5 INNER JOIN Users ON logicalGroups_V5.adminUserName = \"$uname\" AND logicalGroups_V5.username = Users.username WHERE ".$wClause." ORDER BY Users.username";
  7178. $result = $this->dbclass->execute_query ( $query );
  7179. $answer = $this->dbclass->get_result_complete ();
  7180.  
  7181. return $answer;
  7182. }
  7183.  
  7184. /*******************************************************************/
  7185. /*******************************************************************/
  7186.  
  7187. /*******************************************************************/
  7188. /*******************SUPER USER DATABASE QUERIES*********************/
  7189. /*******************************************************************/
  7190.  
  7191. public function getLicsAlloted ( $username = false ) { //this function logically incorrect have to correct it
  7192. if (!$username) {
  7193. $query = "SELECT COUNT(trackerid) FROM trackers";
  7194. $this->dbclass->execute_query ( $query );
  7195. return $this->dbclass->get_result_complete();
  7196. }
  7197. }
  7198.  
  7199. public function getMongoDatabaseStats() {
  7200. global $GMONGO;
  7201. $query = "SELECT * FROM trackers";
  7202. $this->dbclass->execute_query ( $query );
  7203. $answer = $this->dbclass->get_result_complete ();
  7204.  
  7205. $returnAnswer = new databaseCounting ();
  7206.  
  7207. if ($answer == false) {
  7208. $returnAnswer->eventRecords = 0;
  7209. $returnAnswer->locationRecords = 0;
  7210. return $returnAnswer;
  7211. }
  7212.  
  7213. $tracker_count = count ( $answer );
  7214.  
  7215. for($i = 0; $i < $tracker_count; $i ++) {
  7216. $cans = $GMONGO->countDocumentsInA($answer[$i]['trackerid']);
  7217. if ($cans != false) {
  7218. $returnAnswer->locationRecords += $cans;
  7219. }
  7220. $cans = $GMONGO->countDocumentsInE($answer[$i]['trackerid']);
  7221. if ($cans != false) {
  7222. $returnAnswer->eventRecords += $cans;
  7223. }
  7224. $cans = $GMONGO->countDocumentsInM($answer[$i]['trackerid']);
  7225. if ($cans != false) {
  7226. $returnAnswer->miscellaneousRecords += $cans;
  7227. }
  7228. }
  7229. return $returnAnswer;
  7230. } // function
  7231.  
  7232. public function get_admin_users_list($ccare = false) {
  7233. $fields = "*";
  7234. $wClause = "accounttype = " . USERTYPE_ADMINISTRATOR . " OR accounttype = " . USERTYPE_CUSTOMERCARE;
  7235.  
  7236. $query = "SELECT $fields FROM Users LEFT JOIN licenses USING(username) WHERE " . $wClause . " ORDER BY username";
  7237. $result = $this->dbclass->execute_query ( $query );
  7238. $answer = $this->dbclass->get_result_complete ();
  7239. return $answer;
  7240. }
  7241.  
  7242. public function getLicenseInformation($username, $year) {
  7243. $username = $this->dbclass->get_escape_string($username);
  7244. $year = $this->dbclass->get_escape_string($year);
  7245.  
  7246. /*if (isset($year) == false || $year == null) {
  7247. //$query = "SELECT SUM(licenses) as lics, MONTHNAME(date) as month, YEAR(date) as year FROM licenseInfo Where username='$username' AND YEAR(date) = YEAR(NOW()) GROUP BY MONTHNAME(date), YEAR(date) ORDER BY MONTH(date)"; //for current year
  7248. $query = "SELECT SUM(licenses) as lics, MONTHNAME(date) as month, YEAR(date) as year FROM licenseInfo Where username='$username' GROUP BY MONTHNAME(date), YEAR(date) ORDER BY MONTH(date)"; //for all year
  7249. }else {
  7250. $query = "SELECT SUM(licenses) as lics, MONTHNAME(date) as month, YEAR(date) as year FROM licenseInfo Where username='$username' AND YEAR(date) = '$year' GROUP BY MONTHNAME(date), YEAR(date) ORDER BY MONTH(date)";
  7251. }*/
  7252.  
  7253. $query = "SELECT licenseID, tCount, issueDate, creationDate, rate, comments, periodicity, tax, surcharge FROM licenseInfo AS li INNER JOIN paymentRecords AS pr ON li.username = '$username' AND li.licenseID = pr.recordID AND pr.typeId = 1 ORDER BY issueDate";
  7254.  
  7255. $this->dbclass->execute_query($query);
  7256. $result = $this->dbclass->get_result_complete();
  7257. return $result;
  7258. }
  7259.  
  7260. public function getIssuedLicenses () {
  7261. $query = "SELECT SUM(licenses) FROM licenses";
  7262. $this->dbclass->execute_query($query);
  7263. $result = $this->dbclass->get_result_complete();
  7264. return $result;
  7265. }
  7266.  
  7267. public function escapePostData () {
  7268. foreach ($_POST as $x => $y) {
  7269. $_POST [$x] = $this->dbclass->get_escape_string($y);
  7270. }
  7271. }
  7272.  
  7273. public function getLicenses ($licenseID) {
  7274. $query = "SELECT licenses FROM licenseInfo WHERE licenseID = $licenseID";
  7275. $this->dbclass->execute_query($query);
  7276. $result = $this->dbclass->get_result_complete();
  7277. return $result [0] ['licenses'];
  7278. }
  7279.  
  7280. public function addLicenses () {
  7281. $_POST['typeId'] = 1;
  7282.  
  7283. $data = $this->insertPaymentRecord(true);
  7284.  
  7285. $query = "INSERT INTO licenseInfo SET username = '".$data['username']."', licenseID = ".$data['recordID'].", licenses = ".$data['tCount'];
  7286. $this->dbclass->execute_query($query);
  7287.  
  7288. $query = "INSERT INTO licenses SET username = '".$data['username']."', licenses = '".$data['tCount']."' ON DUPLICATE KEY UPDATE licenses = licenses + ".$data['tCount'];
  7289. $this->dbclass->execute_query($query);
  7290.  
  7291. $result ['licenseID'] = $data ['recordID'];
  7292. $result ['creationDate'] = $data ['creationDate'];
  7293. return $result;
  7294. }
  7295.  
  7296. //public function modifyLicenses ($iDate) {
  7297. public function modifyLicenses () {
  7298.  
  7299. $_POST['typeId'] = 1;
  7300. $_POST['recordID'] = $_POST ['licenseID'];
  7301. unset($_POST ['licenseID']);
  7302.  
  7303. $amount = $this->updatePaymentRecord(true);
  7304.  
  7305. $username = $_POST['username'];
  7306. //$licenseID = $_POST['licenseID'];
  7307. $licenseID = $_POST['recordID'];
  7308. $licenses = $_POST['tCount'];
  7309. $issueDate = $_POST['issueDate'];
  7310. $rate = $_POST['rate'];
  7311. $comments = $_POST['comments'];
  7312. $periodicity = $_POST['periodicity'];
  7313.  
  7314.  
  7315. $cul = $this->getLicenses ($licenseID);
  7316.  
  7317. $query = "UPDATE licenseInfo SET licenses = $licenses WHERE username = '$username' AND licenseID = $licenseID";
  7318. $this->dbclass->execute_query($query);
  7319.  
  7320. if ($_POST['periodicity'] == 0) {
  7321. $query = "DELETE FROM paymentHistory WHERE typeId = 1 AND recordID = $licenseID AND isPaid = 0";
  7322. $this->dbclass->execute_query($query);
  7323. } else {
  7324. $query = "SELECT * FROM paymentHistory WHERE typeId = 1 AND recordID = $licenseID AND isPaid = 0";
  7325. $this->dbclass->execute_query($query);
  7326. $result = $this->dbclass->get_result_complete();
  7327. if (!$result) {
  7328. $query = "INSERT INTO paymentHistory SET typeId = 1, recordID = $licenseID, date = '$issueDate', amount = $amount, isPaid = 0";
  7329. $this->dbclass->execute_query($query);
  7330. }
  7331. }
  7332.  
  7333. $licenses -= $cul;
  7334. $query = "UPDATE licenses SET licenses = licenses + $licenses WHERE username = '$username'";
  7335. $this->dbclass->execute_query($query);
  7336. //echo "\r\n".$query;
  7337.  
  7338. //$query = "SELECT licenseID, creationDate FROM licenseInfo WHERE licenseID = ".$licenseID;
  7339. $query = "SELECT recordID as licenseID, creationDate FROM paymentRecords WHERE recordID = $licenseID AND typeId = 1";
  7340. $this->dbclass->execute_query($query);
  7341. $result = $this->dbclass->get_result_complete();
  7342.  
  7343. return $result[0];
  7344. }
  7345.  
  7346. public function removeLicenses ($username, $licenseID) {
  7347. $username = $this->dbclass->get_escape_string($username);
  7348.  
  7349. $licenses = $this->getLicenses($licenseID);
  7350.  
  7351. $query = "DELETE FROM licenseInfo WHERE username = '$username' AND licenseID = $licenseID";
  7352. $this->dbclass->execute_query($query);
  7353.  
  7354. $query = "DELETE FROM paymentRecords WHERE username = '$username' AND recordID = $licenseID AND typeId = 1";
  7355. $this->dbclass->execute_query($query);
  7356.  
  7357. $query = "UPDATE licenses SET licenses = licenses - $licenses WHERE username = '$username'";
  7358. $this->dbclass->execute_query($query);
  7359.  
  7360. $query = "DELETE FROM paymentHistory WHERE recordID = $licenseID, typeId = 1";
  7361. $this->dbclass->execute_query($query);
  7362.  
  7363. return;
  7364. }
  7365.  
  7366. public function getUserLicenses ($username) {
  7367. $username = $this->dbclass->get_escape_string($username);
  7368. $query = "SELECT licenses FROM licenses WHERE username = '$username'";
  7369. $this->dbclass->execute_query($query);
  7370. $result = $this->dbclass->get_result_complete();
  7371.  
  7372. return $result [0] ['licenses'];
  7373. }
  7374.  
  7375. //RETURNS LIST OF USER TYPE ADMINISTRATOR
  7376. public function getAdminUserName () {
  7377. $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_ADMINISTRATOR;
  7378. $this->dbclass->execute_query($query);
  7379. $ans = $this->dbclass->get_result_complete();
  7380. return $ans;
  7381. }
  7382.  
  7383. public function getAdminOfUSer ($user = false) {
  7384. if ($user)
  7385. $user = $this->dbclass->get_escape_string($user);
  7386. else
  7387. $user = $this->dbclass->get_escape_string($_SESSION['username']);
  7388. $query = "SELECT adminUserName FROM logicalGroups_V5 WHERE username = '{$user}'";
  7389. $result = $this->dbclass->execute_query($query);
  7390. if ($result) {
  7391. $ans = $this->dbclass->get_result_complete();
  7392. return $ans[0]['adminUserName'];
  7393. }
  7394.  
  7395. return false;
  7396. }
  7397.  
  7398. //RETURNS LIST OF PAYMENT TYPE WITH THEIR typeId
  7399.  
  7400. public function getPaymentType () {
  7401. if ($_SESSION['username'] == 'root')
  7402. $query = "SELECT * FROM paymentType";
  7403. else if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
  7404. $query = "SELECT * FROM adminPaymentType WHERE adminUserName = '".$_SESSION['username']."'";
  7405. $this->dbclass->execute_query ( $query );
  7406. $ans = $this->dbclass->get_result_complete();
  7407. return $ans;
  7408. }
  7409.  
  7410. //ADD CUSTOM PAYMENT TYPE IN paymentType TABLE
  7411. public function addPaymentType () {
  7412. $pType = $this->dbclass->get_escape_string($_POST['pType']);
  7413. if ($_SESSION['username'] == 'root')
  7414. $query = "INSERT INTO paymentType set pType = '$pType'";
  7415. else if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR)
  7416. $query = "INSERT INTO adminPaymentType set pType = '$pType'";
  7417. $this->dbclass->execute_query ( $query );
  7418. }
  7419.  
  7420. //RETURNS LICENSE INFO OF A USER OF TYPE ADMIN
  7421. public function getUserLicInfo ($username) { //NAME OF THE FUNCTIONS NEED TO BE CHANGED, IT IS NOT MATCHING ITS FUNCTIONALITY
  7422. $username = $this->dbclass->get_escape_string($username);
  7423. $typeId = $this->dbclass->get_escape_string($_POST['typeId']);
  7424. $ans =array();
  7425.  
  7426. if ($typeId == 1){
  7427. $query = "SELECT licenseInfo.username, licenses as tCount, DATE(date) as sdate, licenseInfo.rate, licenseID as recordID, comments FROM licenseInfo ";
  7428. $query .= "LEFT OUTER JOIN paymentRecords ON licenseInfo.licenseId = paymentRecords.recordId AND paymentRecords.typeId = 1 WHERE paymentRecords.recordID IS NULL AND licenseInfo.username = '$username' ORDER BY DATE(date)";
  7429. $this->dbclass->execute_query($query);
  7430. $new = $this->dbclass->get_result_complete();
  7431. $query = "SELECT * FROM paymentRecords WHERE typeId = 1 AND username = '$username' ORDER BY sdate";
  7432. //$query = "SELECT paymentRecords.* FROM paymentRecords INNER JOIN licenseInfo ON paymentRecords.recordID = licenseInfo.licenseID AND paymentRecords.typeId = 1 AND paymentRecords.username = '$username' ORDER BY sdate";
  7433. //$query = "SELECT licenses, DATE(date) as date, rate, licenseID as recordID, comments FROM licenseInfo WHERE username = '$username' ORDER BY DATE(date)";
  7434. $this->dbclass->execute_query($query);
  7435. $present = $this->dbclass->get_result_complete();
  7436. $ans ['new'] = $new;
  7437. $ans ['present'] = $present;
  7438. return $ans;
  7439. }
  7440. //$query = "SELECT licenseInfo.licenses, licenseInfo.DATE(date) as date, licenseInfo.rate, licenseInfo.licenseID as recordID, licenseInfo.comments FROM licenseInfo WHERE username = '$username' ORDER BY DATE(date)";
  7441. //$query = "SELECT paymentRecords.* FROM paymentRecords INNER JOIN licenseInfo ON paymentRecords.recordID = licenseInfo.licenseID AND paymentRecords.typeId = $typeId ORDER BY sdate";
  7442. $query = "SELECT * FROM paymentRecords WHERE username = '$username' AND typeId = $typeId ORDER BY sdate";
  7443. //$query = "SELECT licenses, DATE(date) as date, rate, licenseID as recordID, comments FROM licenseInfo WHERE username = '$username' ORDER BY DATE(date)";
  7444. $this->dbclass->execute_query($query);
  7445. $present = $this->dbclass->get_result_complete();
  7446.  
  7447. $ans ['new'] = false;
  7448. $ans ['present'] = $present;
  7449.  
  7450. return $ans;
  7451. }
  7452.  
  7453. //INSERT NEW PAYMENT RECORD IN TABLE paymentRecords
  7454. public function insertPaymentRecord ($license = false) {
  7455. $check = true;
  7456. $query = "INSERT INTO paymentRecords SET ";
  7457. $query .= basicTransactions::prepareMySQL_POSTRequest();
  7458. $this->dbclass->execute_query($query);
  7459.  
  7460. $fields = "typeId, recordID, issueDate, periodicity, creationDate, updationDate";
  7461. if ($license) {
  7462. $fields .= ", username, tCount";
  7463. $check = false;
  7464. }
  7465.  
  7466. //$query = "SELECT typeId, recordID, issueDate, periodicity, creationDate, updationDate FROM paymentRecords WHERE ";
  7467. $query = "SELECT $fields FROM paymentRecords WHERE ";
  7468. $query .= basicTransactions::prepareMySQL_POSTRequest('AND');
  7469. $this->dbclass->execute_query($query);
  7470. $ans = $this->dbclass->get_result_complete();
  7471. //echo $query;
  7472.  
  7473. if (($license && $_POST['periodicity'] > 0) || $check) {
  7474. $amount = $_POST['tCount'] * $_POST['rate'];
  7475. $t = json_decode($_POST['tax'], true);
  7476. $tax = 0;
  7477.  
  7478. foreach ($t as $k => $v) {
  7479. $tax += $v;
  7480. }
  7481. $amount = ($amount * ($tax + 100)) / 100;
  7482.  
  7483. $schrge = json_decode($_POST['surcharge'], true);
  7484. foreach ($schrge as $k => $v) {
  7485. $amount += $v;
  7486. }
  7487.  
  7488. $query = "INSERT INTO paymentHistory SET recordID = " . $ans [0] ['recordID'] . ", date = '" . $ans [0] ['issueDate'] . "', typeId = " . $ans [0] ['typeId'] . ", amount = $amount";
  7489. $this->dbclass->execute_query($query);
  7490.  
  7491. $data ['amount'] = $amount;
  7492. $data ['recordID'] = $ans [0] ['recordID'];
  7493. $data ['creationDate'] = $ans [0] ['creationDate'];
  7494. $data ['updationDate'] = $ans [0] ['updationDate'];
  7495. $data ['date'] = $ans [0] ['issueDate'];
  7496. $newDate = new FNSDateTime($_SESSION ['timezone']);
  7497. $newDate->setUTCDate($data ['issueDate'], 0);
  7498. $newDate->addMonth($ans [0] ['periodicity']);
  7499. $data ['edate'] = $newDate->dateTime->format('Y-m-d');
  7500.  
  7501. }
  7502. if ($license)
  7503. return $ans [0];
  7504. return $data;
  7505. }
  7506.  
  7507. public function updatePaymentRecord ($license = false) {
  7508. //$this->escapePostData();
  7509. $check = true;
  7510. $query = "UPDATE paymentRecords SET ";
  7511. $query .= basicTransactions::prepareMySQL_POSTRequest();
  7512. $query .= " WHERE username = '".$_POST['username']."' AND typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID'];
  7513. $this->dbclass->execute_query($query);
  7514.  
  7515. if ($license) {
  7516. $check = false;
  7517. }
  7518.  
  7519. if (($license && $_POST['periodicity'] > 0) || $check) {
  7520. $amount = $_POST['tCount'] * $_POST['rate'];
  7521. $t = json_decode($_POST['tax'], true);
  7522. $tax = 0;
  7523.  
  7524. foreach ($t as $k => $v) {
  7525. $tax += $v;
  7526. }
  7527. $amount = ($amount * ($tax + 100)) / 100;
  7528.  
  7529. $schrge = json_decode($_POST['surcharge'], true);
  7530. foreach ($schrge as $k => $v) {
  7531. $amount += $v;
  7532. }
  7533.  
  7534. $query = "UPDATE paymentHistory set amount = $amount WHERE recordID = " . $_POST['recordID'] . " AND typeId = " . $_POST['typeId'] . " AND isPaid = 0";
  7535. $this->dbclass->execute_query($query);
  7536.  
  7537. if (!$check && $license)
  7538. return $amount;
  7539. }
  7540.  
  7541. if ($license)
  7542. return;
  7543.  
  7544. /*if ($_POST['typeId'] == 1) {
  7545. $query = "UPDATE licenseInfo SET issueDate = '".$_POST['sdate']."', rate = ".$_POST['rate']." WHERE username = '".$_POST['username']."' AND licenseID = ".$_POST['recordID'];
  7546. $this->dbclass->execute_query($query);
  7547. }*/
  7548. //$query = "SELECT sdate AS date, periodicity FROM paymentRecords WHERE username = '".$_POST['username']."' AND typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID'];
  7549. $query = "SELECT pR.*, pH.date, pH.amount FROM paymentRecords as pR INNER JOIN paymentHistory as pH ON pR.username = '".$_POST['username']."' AND pR.recordID = ".$_POST['recordID']." AND pR.typeID = ".$_POST['typeId']." AND pR.recordID = pH.recordID AND pR.typeId = pH.typeId AND pH.isPaid = 0";
  7550. $this->dbclass->execute_query($query);
  7551. $ans = $this->dbclass->get_result_complete();
  7552.  
  7553. $date = $ans [0] ['date'];
  7554. $newDate = new FNSDateTime( $_SESSION ['timezone'] );
  7555. $newDate->setUTCDate($date, 0);
  7556. $newDate->addMonth($ans [0] ['periodicity']);
  7557. $ans [0] ['edate'] = $newDate->dateTime->format('Y-m-d');
  7558.  
  7559. return $ans;
  7560. }
  7561.  
  7562. public function removePaymentRecord () {
  7563. $this->escapePostData();
  7564. if ($_POST['typeID'] != 1){
  7565. $query = "DELETE FROM paymentRecords WHERE username = '".$_POST['username']."' AND typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID'];
  7566. $this->dbclass->execute_query($query);
  7567. $query = "DELETE FROM paymentHistory WHERE typeId = ".$_POST['typeId']." AND recordID = ".$_POST['recordID']." AND isPaid = 0";
  7568. $this->dbclass->execute_query($query);
  7569. return SUCCESS;
  7570. }
  7571. return ERROR;
  7572. }
  7573.  
  7574. /*public function dateFormat ($date, $format) {
  7575. $dt = new FNSDateTime( $_SESSION['timezone'] );
  7576. $dt->setUTCDate($date, 0);
  7577. return $dt->dateTime->format($format);
  7578. }*/
  7579.  
  7580.  
  7581. //RETURNS THE PAYMENT RECORDS PRESENT IN TABLE paymentRecords
  7582. public function getPaymentRecords ($username, $fields = '*') {
  7583. $username = $this->dbclass->get_escape_string($username);
  7584. $ans = array();
  7585. $query = "SELECT pR.*, pH.date, pH.amount FROM paymentRecords as pR INNER JOIN paymentHistory as pH ON pR.username = '$username' AND pR.recordID = pH.recordID AND pR.typeId = pH.typeId AND pH.isPaid = 0";
  7586. $this->dbclass->execute_query($query);
  7587. $ans['np'] = $this->dbclass->get_result_complete();
  7588. foreach ($ans['np'] as $x => $v) {
  7589. $newDate = new FNSDateTime( $_SESSION ['timezone'] );
  7590. $newDate->setUTCDate($ans['np'][$x] ['date'], 0);
  7591. $newDate->addMonth($ans['np'][$x] ['periodicity']);
  7592. $ans['np'][$x] ['edate'] = $newDate->dateTime->format('Y-m-d');
  7593. }
  7594. $query = "SELECT pR.*, pH.date, pH.amount, pH.amtRecv, pH.amtRecOn FROM paymentRecords as pR INNER JOIN paymentHistory as pH ON pR.username = '$username' AND pR.recordID = pH.recordID AND pR.typeId = pH.typeId AND pH.isPaid = 1";
  7595. $this->dbclass->execute_query($query);
  7596. $ans['paid'] = $this->dbclass->get_result_complete();
  7597. foreach ($ans['paid'] as $x => $v) {
  7598. $newDate = new FNSDateTime( $_SESSION ['timezone'] );
  7599. $newDate->setUTCDate($ans['paid'][$x] ['date'], 0);
  7600. $newDate->addMonth($ans['paid'][$x] ['periodicity']);
  7601. $ans['paid'][$x] ['edate'] = $newDate->dateTime->format('d-m-Y');
  7602. $ans['paid'][$x]['amtDue'] = $ans['paid'][$x]['amount'] - $ans['paid'][$x]['amtRecv'];
  7603. }
  7604. return $ans;
  7605. }
  7606.  
  7607. public function getPaymentRecordID ($fields = '*') {
  7608. $query = "SELECT recordID, sdate FROM paymentRecords WHERE ";
  7609. $query .= basicTransactions::prepareMySQL_POSTRequest('AND');
  7610.  
  7611. echo $query;
  7612.  
  7613. $this->dbclass->execute_query($query);
  7614. $ans = $this->dbclass->get_result_complete();
  7615.  
  7616. echo "<br>";
  7617. print_r($ans);
  7618.  
  7619. $query = "INSERT INTO paymentHistory SET recordID = '".$ans [0] ['recordID']."', date = '".$ans [0] ['sdate']."'";
  7620. $this->dbclass->execute_query($query);
  7621. echo "<br>".$query;
  7622. die;
  7623. return $ans [0] ['recordID'];
  7624. }
  7625.  
  7626. public function paymentApproved ()
  7627. {
  7628. $recordID = $this->dbclass->get_escape_string($_POST['recordID']);
  7629. $date = $this->dbclass->get_escape_string($_POST['date']);
  7630. $typeId = $this->dbclass->get_escape_string($_POST['typeId']);
  7631. $amtRecv = $this->dbclass->get_escape_string($_POST['amtRecv']);
  7632. $amtRecOn = $this->dbclass->get_escape_string($_POST['amtRecOn']);
  7633. $status = $this->dbclass->get_escape_string($_POST['status']);
  7634.  
  7635. if ($status == 'due') {
  7636. $query = "UPDATE paymentHistory set amtRecv = $amtRecv, amtRecOn = '$amtRecOn', isPaid = 1 WHERE recordID = $recordID AND date = '$date' AND typeId = $typeId";
  7637. $this->dbclass->execute_query($query);
  7638. }
  7639. else {
  7640. $periodicity = $this->dbclass->get_escape_string($_POST['periodicity']);
  7641. $query = "UPDATE paymentHistory set amtRecv = '$amtRecv', amtRecOn = '$amtRecOn', isPaid = 1 WHERE recordID = $recordID AND date = '$date' AND typeId = $typeId";
  7642. $this->dbclass->execute_query($query);
  7643. //echo $query."\r\n";
  7644.  
  7645. $query = "SELECT recordID, date, typeId, amount FROM paymentHistory where recordID = $recordID AND date = '$date' AND isPaid = 1 AND typeId = $typeId";
  7646. $this->dbclass->execute_query($query);
  7647. $ans = $this->dbclass->get_result_complete();
  7648.  
  7649. $newDate = new FNSDateTime($_SESSION ['timezone']);
  7650. $newDate->setUTCDate($ans [0] ['date'], 0);
  7651. $newDate->addMonth($periodicity);
  7652. $dt = $newDate->dateTime->format('Y-m-d');
  7653.  
  7654. $query = "INSERT INTO paymentHistory SET recordID = " . $ans [0] ['recordID'] . ", date = '" . $dt . "', typeId = " . $ans [0] ['typeId'] . ", amount = " . $ans [0] ['amount'];
  7655. $this->dbclass->execute_query($query);
  7656. }
  7657. }
  7658.  
  7659. public function getPaymentRecordsReport ($typeId, $uname) {
  7660. //$uname = $this->dbclass->get_escape_string($_POST['username']);
  7661.  
  7662. $pr = array();
  7663.  
  7664. $query = "SELECT pr.recordID, pr.typeId, pr.rate, pr.periodicity, pr.tax, pr.surcharge, pr.tCount, ph.date FROM paymentRecords AS pr INNER JOIN paymentHistory AS ph ON pr.username = '$uname' AND pr.typeId = $typeId AND pr.typeID = ph.typeId AND pr.recordId = ph.recordId AND ph.isPaid = 1";
  7665. $this->dbclass->execute_query($query);
  7666. $pr ['paid'] = $this->dbclass->get_result_complete();
  7667. //echo $query;
  7668.  
  7669. $query = "SELECT pr.recordID, pr.typeId, pr.rate, pr.periodicity, pr.tax, pr.tCount, ph.date FROM paymentRecords AS pr INNER JOIN paymentHistory AS ph ON pr.username = '$uname' AND pr.typeId = $typeId AND pr.typeID = ph.typeId AND pr.recordId = ph.recordId AND ph.isPaid = 0";
  7670. $this->dbclass->execute_query($query);
  7671. $pr ['np'] = $this->dbclass->get_result_complete();
  7672.  
  7673. return $pr;
  7674. }
  7675.  
  7676.  
  7677. public function sendMessage () {
  7678. global $GMONGO;
  7679.  
  7680. $sender = $_SESSION['username'];
  7681. $receiver = $this->dbclass->get_escape_string($_POST['receiver']);
  7682. $msg = $this->dbclass->get_escape_string($_POST['message']);
  7683.  
  7684. if (strlen($msg) > 0) {
  7685. $record = array('sender' => $sender, 'receiver' => $receiver, 'sent' => true, 'received' => false, 'message' => $msg, 'timestamp' => time(), 'isRead' => false);
  7686.  
  7687. $GMONGO -> insertRecord('messages', $record);
  7688. //$GMONGO->checkIndex('messages', array('timestamp' => 1, 'timestamp'=> -1), false);
  7689. } else
  7690. return ERROR;
  7691. }
  7692.  
  7693. public function getMessages ($sender = false, $limit = false, $lastMessage = false) {
  7694. global $GMONGO;
  7695.  
  7696. $sender = $this->dbclass->get_escape_string($sender);
  7697. $receiver = $_SESSION['username'];
  7698. if ($receiver != false) {
  7699. $receiver = $this->dbclass->get_escape_string($receiver);
  7700. if (!$lastMessage)
  7701. $options = array('sender' => $sender, 'receiver' => $receiver, 'isRead' => false);
  7702. elseif ($lastMessage)
  7703. $options = array('sender' => $sender, 'receiver' => $receiver);
  7704. } else
  7705. $options = array('sender' => $sender, 'isRead' => false);
  7706.  
  7707. $sort = array('timestamp' => -1);
  7708. //$ans = $GMONGO -> getRecords('messages', $options, $sort);
  7709. $ans = $GMONGO -> getRecords('messages', $options, $sort, $limit);
  7710.  
  7711. return $ans;
  7712. }
  7713.  
  7714. public function getNewMessages () {
  7715. global $GMONGO;
  7716.  
  7717. $receiver = $_SESSION['username'];
  7718. $options = array('receiver' => $receiver, 'isRead' => false);
  7719. //$sort = array('timestamp' => -1);
  7720. //$ans = $GMONGO -> getRecords('messages', $options, $sort);
  7721. $ans = $GMONGO -> getRecords('messages', $options);
  7722.  
  7723. return $ans;
  7724. }
  7725.  
  7726. public function getChatUsers () {
  7727.  
  7728. switch ($_SESSION ['accounttype']) {
  7729. case USERTYPE_ADMINISTRATOR:
  7730. $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$_SESSION['username']."'";
  7731. break;
  7732.  
  7733. case USERTYPE_CUSTOMERCARE:
  7734. $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_FLEET." OR accounttype = ".USERTYPE_ADMINISTRATOR;
  7735. break;
  7736.  
  7737. case USERTYPE_FLEETCARE:
  7738. $QUERY = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
  7739. $result = $this->dbclass->execute_query ( $QUERY );
  7740. $un = $this -> dbclass -> get_result_complete();
  7741.  
  7742. $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$un [0] ['adminUserName']."' AND accounttype = ".USERTYPE_FLEET;
  7743. break;
  7744.  
  7745. case USERTYPE_FLEET:
  7746. $list = array();
  7747. $QUERY = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
  7748. $result = $this->dbclass->execute_query ( $QUERY );
  7749. $un = $this -> dbclass -> get_result_complete();
  7750. $list [0] ['username'] = $un [0] ['adminUserName'];
  7751. $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$un [0] ['adminUserName']."' AND accounttype = ".USERTYPE_FLEETCARE;
  7752.  
  7753. $this->dbclass->execute_query($query);
  7754. $ans = $this->dbclass->get_result_complete();
  7755. if (isset($ans) && $ans != false)
  7756. $list = array_merge($list, $ans);
  7757. $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_CUSTOMERCARE;
  7758. $this->dbclass->execute_query($query);
  7759. $ans = $this->dbclass->get_result_complete();
  7760. if (isset($ans) && $ans != false)
  7761. $list = array_merge($list, $ans);
  7762.  
  7763. return $list;
  7764. }
  7765.  
  7766. /*if ($_SESSION ['accounttype'] == USERTYPE_ADMINISTRATOR)
  7767. $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$_SESSION['username']."'";
  7768. else if ($_SESSION ['accounttype'] == USERTYPE_CUSTOMERCARE)
  7769. $query = "SELECT username FROM Users WHERE accounttype = ".USERTYPE_FLEET." OR accounttype = ".USERTYPE_ADMINISTRATOR;
  7770. else if ($_SESSION ['accounttype'] == USERTYPE_FLEETCARE) {
  7771. $QUERY = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
  7772. $result = $this->dbclass->execute_query ( $QUERY );
  7773. $un = $this -> dbclass -> get_result_complete();
  7774.  
  7775. $query = "SELECT username FROM logicalGroups_V5 WHERE adminUserName = '".$un [0] ['adminUserName']."' AND accounttype = ".USERTYPE_FLEET;
  7776. }*/
  7777.  
  7778. $this->dbclass->execute_query($query);
  7779. $ans = $this->dbclass->get_result_complete();
  7780.  
  7781. return $ans;
  7782. }
  7783.  
  7784.  
  7785.  
  7786.  
  7787. /*******************************************************************/
  7788. /*******************************************************************/
  7789.  
  7790. //For Maliatec API
  7791. public function getTrackerIDFromName ($tname) {
  7792. $query = "SELECT trackerid FROM trackers WHERE name = '$tname'";
  7793. $this->dbclass->execute_query($query);
  7794. $result = $this->dbclass->get_result_complete();
  7795. if ($result)
  7796. return $result [0] ['trackerid'];
  7797. else
  7798. return $result;
  7799. }
  7800.  
  7801. //Returns last sync date and time, used in Maliatec Mobile Computer
  7802. public function lastSyncDateTime () {
  7803. $query = "SELECT * FROM lastSyncDateTime";
  7804. $this->dbclass->execute_query($query);
  7805. $ans = $this->dbclass->get_result_complete($query);
  7806.  
  7807. return $ans [0] ['dateTime'];
  7808. }
  7809.  
  7810. public function updateLastSyncDateTime ($dt) {
  7811. $query = "UPDATE lastSyncDateTime SET dateTime = '$dt'";
  7812. $this->dbclass->execute_query($query);
  7813. }
  7814.  
  7815. public function insertIntoAEM ($tid, $data) {
  7816. $query = "INSERT INTO A{$tid} SET date = '".$data['date']."', time = ".$data['time'].", latitude = ".$data['latitude'].", longitude = ".$data['longitude'].", ";
  7817. $query .= "speed = 0, direction = 0, pdatetime = timestamp(\"".$data['dateTime']."\")";
  7818. $this->dbclass->execute_query($query);
  7819. }
  7820.  
  7821. public function getTrackerID () {
  7822. $query = "SELECT trackerid FROM trackers";
  7823. $this->dbclass->execute_query($query);
  7824. $result = $this->dbclass->get_result_complete();
  7825.  
  7826. return $result;
  7827. }
  7828. /*Maliatec Mobile Computer End*/
  7829.  
  7830. /*Maliatec Eduvation*/
  7831.  
  7832. public function insertBusSchedule () {
  7833. $query = "REPLACE INTO busSchedules SET ";
  7834. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  7835. return $this->dbclass->execute_query($query);
  7836. }
  7837.  
  7838. public function getBusSchedule ($username) {
  7839. $query = "SELECT * FROM busSchedules WHERE username = '".$username."'";
  7840. $this->dbclass->execute_query($query);
  7841. $result = $this->dbclass->get_result_complete();
  7842.  
  7843. return $result;
  7844. }
  7845.  
  7846. public function getLatestAlertsList ($fields = false) {
  7847. if ($fields == false)
  7848. $fields = '*';
  7849. if ($_SESSION['accounttype'] == USERTYPE_ADMINISTRATOR )
  7850. $query = "SELECT $fields FROM adminTrackersMap LEFT JOIN EGLOBAL ON trackerid = tid WHERE username = '".$_SESSION['username']."'";
  7851. else if ($_SESSION['accounttype'] == USERTYPE_FLEET)
  7852. $query = "SELECT $fields FROM trackersMap LEFT JOIN EGLOBAL ON trackerid = tid WHERE username = '".$_SESSION['username']."'";
  7853. else if ($_SESSION['accounttype'] == USERTYPE_CUSTOMERCARE)
  7854. $query = "SELECT $fields FROM trackers LEFT JOIN EGLOBAL ON trackerid = tid";
  7855. else if ($_SESSION['accounttype'] == USERTYPE_FLEETCARE) {
  7856. $QUERY = "SELECT adminUserName from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
  7857. $result = $this->dbclass->execute_query ( $QUERY );
  7858. $un = $this -> dbclass -> get_result_complete();
  7859.  
  7860. $query = "SELECT * FROM adminTrackersMap LEFT JOIN EGLOBAL ON trackerid = tid WHERE username = '".$un[0]['adminUserName']."'";
  7861. }
  7862. $this -> dbclass -> execute_query($query);
  7863. $result = $this -> dbclass -> get_result_complete();
  7864.  
  7865. return $result;
  7866. }
  7867.  
  7868.  
  7869. /*****FOR MIGRATION FROM MySQL TO MongoDB*****/
  7870. public function getARecords ($tid) {
  7871. $query = "SELECT * FROM A{$tid} WHERE (date = '2015-09-01' AND time >= 0) OR (date >= '2015-09-01') ORDER BY date, time" ;
  7872. return $this -> dbclass ->execute_query($query);
  7873. //$result = $this -> dbclass -> get_result_complete();
  7874.  
  7875. //return $result;
  7876. }
  7877.  
  7878. public function getERecords ($tid) {
  7879. $query = "SELECT * FROM E{$tid} WHERE (date = '2015-09-01' AND time >= 0) OR (date >= '2015-09-01') ORDER BY date, time" ;
  7880. return $this -> dbclass ->execute_query($query);
  7881. //$result = $this -> dbclass -> get_result_complete();
  7882.  
  7883. //return $result;
  7884. }
  7885.  
  7886. public function getAMRecords ($tid) {
  7887. /*$query = "CREATE INDEX dateTime on A{$tid} (date,time)";
  7888. $this -> dbclass -> execute_query($query);
  7889. $query = "CREATE INDEX dateTime on M{$tid} (date,time)";
  7890. $this -> dbclass -> execute_query($query);*/
  7891. $query = "SELECT * FROM M{$tid} LEFT JOIN A{$tid} USING (date, time) WHERE (date = '2015-09-01' AND time >= 0) OR (date >= '2015-09-01') ORDER BY date, time" ;
  7892. return $this -> dbclass ->execute_query($query);
  7893. //$result = $this -> dbclass -> get_result_complete();
  7894.  
  7895. //return $result;
  7896. }
  7897.  
  7898. public function getResultRow () {
  7899. return $this->dbclass->get_result_row();
  7900. }
  7901. /************************************************************/
  7902.  
  7903. /*******************************************************************/
  7904. /*******************FLEETCARE QUERIES*********************/
  7905. /*******************************************************************/
  7906.  
  7907. public function fleetcare_get_users_list () {
  7908. $fields = "username,name,company,mobile,email,city,country,reseller";
  7909. $wClause = "accounttype = " . USERTYPE_FLEET;
  7910.  
  7911. $query = "SELECT * from logicalGroups_V5 WHERE username = '".$_SESSION['username']."'" ;
  7912. $result = $this->dbclass->execute_query ( $query );
  7913. $un = $this -> dbclass -> get_result_complete();
  7914.  
  7915. $query = "SELECT $fields FROM logicalGroups_V5 INNER JOIN Users USING (username) WHERE adminUserName = '".$un [0] ['adminUserName']."' AND Users.accounttype = ".USERTYPE_FLEET;
  7916.  
  7917. //$query = "SELECT $fields FROM Users WHERE " . $wClause . " ORDER BY name";
  7918. $result = $this->dbclass->execute_query ( $query );
  7919. $answer = $this->dbclass->get_result_complete ();
  7920.  
  7921. return $answer;
  7922. }
  7923.  
  7924.  
  7925. /*******************************************************************/
  7926. /*******************************************************************/
  7927.  
  7928. /*public function insertIntoA ($tid, $data) {
  7929. $query = "INSERT INTO A{$tid} SET date = '".$data['date']."', time = ".$data['time'].", latitude = ".$data['latitude'].", longitude = ".$data['longitude'].", ";
  7930. $query .= "speed = ".$data['speed'].", direction = ".$data['direction'].", pdatetime = timestamp(\"".$data['dateTime']."\")";
  7931. $this->dbclass->execute_query($query);
  7932. }
  7933.  
  7934. public function insertIntoE ($tid, $data) {
  7935. $query = "INSERT INTO E{$tid} SET date = '".$data['date']."', time = ".$data['time'].", latitude = ".$data['latitude'].", longitude = ".$data['longitude'].", ";
  7936. $query .= "speed = ".$data['speed'].", direction = ".$data['direction'].", event = ".$data['event'].", description = ".$data['description'].", pdatetime = timestamp(\"".$data['dateTime']."\")";
  7937. $this->dbclass->execute_query($query);
  7938. }
  7939.  
  7940. public function insertIntoM ($tid, $data) {
  7941. $query = "INSERT INTO M{$tid} SET date = '".$data['date']."', time = ".$data['time'].", odometer = ".$data['odometer'].", private = ".$data['private'].", IO = '".$data['IO']."', misc = '".$data['misc']."', driverID = '".$data['driverID']."', ";
  7942. $query .= "siteID = '".$data['siteID']."', fuel1 = ".$data['fuel1'].", fuel2 = ".$data['fuel2'].", fuel3 = ".$data['fuel3'].", fuel4 = ".$data['fuel4'].", fuel5 = ".$data['fuel5'].", temperature1 = ".$data['temperature1'].", ";
  7943. $query .= "temperature2 = ".$data['temperature2'].", temperature3 = ".$data['temperature3'].", temperature4 = ".$data['temperature4'].", temperature5 = ".$data['temperature5'].", ";
  7944. //$query .= "speed = ".$data['speed'].", direction = ".$data['direction'].", pdatetime = timestamp(\"".$data['dateTime']."\")";
  7945. $this->dbclass->execute_query($query);
  7946. }*/
  7947.  
  7948. public function createAEM ($tid) {
  7949. $query = "CREATE TABLE A{$tid} like dataTable";
  7950. $result = $this->dbclass->execute_query ( $query );
  7951.  
  7952. $query = "CREATE TABLE E{$tid} like eventsTable";
  7953. $result = $this->dbclass->execute_query ( $query );
  7954.  
  7955. $query = "CREATE TABLE M{$tid} like miscTable";
  7956. $result = $this->dbclass->execute_query ( $query );
  7957. }
  7958.  
  7959. public function insertIntoMAGlobals ($trackerRecord) {
  7960. $query = "INSERT INTO MAGLOBALS SET ";
  7961.  
  7962. $initial = true;
  7963. foreach ($trackerRecord as $k => $v) {
  7964. if ($initial == true)
  7965. {
  7966. $initial = false;
  7967. }else {
  7968. $query .= ", ";
  7969. }
  7970.  
  7971. $query .= $k ." = \"".$this->dbclass->get_escape_string($v)."\"";
  7972. }
  7973.  
  7974. $this->dbclass->execute_query($query);
  7975.  
  7976. //$query = "INSERT INTO MAGLOBALS SET ".basicTransactions::prepareMySQL_POSTRequest($_POST);
  7977.  
  7978. echo $query;
  7979. }
  7980.  
  7981. public function insertIntoAGlobals ($trackerRecord) {
  7982. $query = "INSERT INTO AGLOBALS SET ";
  7983.  
  7984. $initial = true;
  7985. foreach ($trackerRecord as $k => $v) {
  7986. if ($initial == true)
  7987. {
  7988. $initial = false;
  7989. }else {
  7990. $query .= ", ";
  7991. }
  7992.  
  7993. $query .= $k ." = \"".$this->dbclass->get_escape_string($v)."\"";
  7994. }
  7995.  
  7996. $this->dbclass->execute_query($query);
  7997.  
  7998. //$query = "INSERT INTO MAGLOBALS SET ".basicTransactions::prepareMySQL_POSTRequest($_POST);
  7999.  
  8000. echo $query;
  8001. }
  8002.  
  8003. public function getTrackerMARecord ($trackerid) {
  8004. $query = "SELECT * FROM MAGLOBALS WHERE trackerid = '".$trackerid."'";
  8005. $this->dbclass->execute_query($query);
  8006. $result = $this->dbclass->get_result_complete();
  8007.  
  8008. return $result;
  8009. }
  8010.  
  8011. public function getTrackerARecord ($trackerid) {
  8012. $query = "SELECT * FROM AGLOBALS WHERE trackerid = '".$trackerid."'";
  8013. $this->dbclass->execute_query($query);
  8014. $result = $this->dbclass->get_result_complete();
  8015.  
  8016. return $result;
  8017. }
  8018.  
  8019. public function getTrackerIDFromSearchKeywords ($keyword) {
  8020. $query = "SELECT trackerid FROM trackersExInfo WHERE searchKeywords LIKE '".$keyword."'";
  8021. $this->dbclass->execute_query($query);
  8022. return $this->dbclass->get_result_complete($query);
  8023. }
  8024.  
  8025. public function getLastSentRecordId ($trackerid) {
  8026. $query = "SELECT * FROM sentRecordId WHERE trackerid = '".$trackerid."'";
  8027. $this->dbclass->execute_query($query);
  8028. return $this->dbclass->get_result_complete();
  8029. }
  8030.  
  8031. public function updateLastSentMiscRecordId ($trackerid, $miscRecordId) {
  8032. //$query = "INSERT INTO sentRecordId UPDATE sentRecordId SET miscRecordId = $miscRecordId WHERE trackerid = '".$trackerid."'";
  8033. $query = "INSERT INTO sentRecordId SET miscRecordId = $miscRecordId, trackerid = '".$trackerid."' ON DUPLICATE KEY UPDATE miscRecordId = $miscRecordId";
  8034. return $this->dbclass->execute_query($query);
  8035. }
  8036.  
  8037. public function updateLastSentEventRecordId ($trackerid, $eventsRecordId) {
  8038. //$query = "UPDATE sentRecordId SET eventsRecordId = $eventsRecordId WHERE trackerid = '".$trackerid."'";
  8039. $query = "INSERT INTO sentRecordId SET eventsRecordId = $eventsRecordId, trackerid = '".$trackerid."' ON DUPLICATE KEY UPDATE eventsRecordId = $eventsRecordId";
  8040. return $this->dbclass->execute_query($query);
  8041. }
  8042.  
  8043. public function getARecordsFromRecordId ($trackerid, $recordId) {
  8044. $query = "SELECT * FROM A{$trackerid} WHERE id > $recordId ORDER BY id";
  8045. $this->dbclass->execute_query($query);
  8046. return $this->dbclass->get_result_complete();
  8047. }
  8048.  
  8049. public function getERecordsFromRecordId ($trackerid, $recordId) {
  8050. $query = "SELECT * FROM E{$trackerid} WHERE id > $recordId ORDER BY id";
  8051. $this->dbclass->execute_query($query);
  8052. return $this->dbclass->get_result_complete();
  8053. }
  8054.  
  8055. public function getMRecordsFromRecordId ($trackerid, $recordId) {
  8056. $query = "SELECT * FROM M{$trackerid} WHERE id > $recordId ORDER BY id";
  8057. $this->dbclass->execute_query($query);
  8058. return $this->dbclass->get_result_complete();
  8059. }
  8060.  
  8061. public function getARecord ($trackerid, $date, $time) {
  8062. $query = "SELECT * FROM A{$trackerid} WHERE date = '$date' AND time = $time";
  8063. $this->dbclass->execute_query($query);
  8064. return $this->dbclass->get_result_complete();
  8065. }
  8066.  
  8067. public function getMRecord ($trackerid, $date, $time) {
  8068. $query = "SELECT * FROM M{$trackerid} WHERE date = '$date' AND time = $time";
  8069. $this->dbclass->execute_query($query);
  8070. return $this->dbclass->get_result_complete();
  8071. }
  8072.  
  8073. public function getLastMRecordFromId ($trackerid) {
  8074. $query = "SELECT * from M{$trackerid} ORDER BY id DESC LIMIT 0, 1";
  8075. $this->dbclass->execute_query($query);
  8076. return $this->dbclass->get_result_complete();
  8077. }
  8078.  
  8079. public function getLastERecordFromId ($trackerid) {
  8080. $query = "SELECT * from E{$trackerid} ORDER BY id DESC LIMIT 0, 1";
  8081. $this->dbclass->execute_query($query);
  8082. return $this->dbclass->get_result_complete();
  8083. }
  8084.  
  8085. //public function saveLogisticSchedule ($username, $trackerid, $datePeriod) {
  8086. public function saveLogisticSchedule () {
  8087. $_POST['username'] = $_SESSION['username'];
  8088. $query = "INSERT INTO logisticScheduler SET ";
  8089. $query .= basicTransactions::prepareMySQL_POSTRequest ();
  8090. $result = $this->dbclass->execute_query ( $query );
  8091.  
  8092. return $result;
  8093. }
  8094.  
  8095. /*public function removeLogisticSchedule ($id) {
  8096. $query = "DELETE FROM logisticScheduler WHERE id = $id";
  8097. $result = $this->dbclass->execute_query ( $query );
  8098.  
  8099. return $result;
  8100. }*/
  8101.  
  8102. public function getReportLogisticSchedule ($username, $trackerid, $datePeriod) {
  8103. $query = "SELECT * FROM logisticScheduler WHERE username = '".$username."' AND trackerid = '".$trackerid."'";
  8104. $query .= " AND stimestamp >= ".$datePeriod['stimestamp']." AND etimestamp <= ".$datePeriod['etimestamp'];
  8105. //echo $query;
  8106. $this->dbclass->execute_query($query);
  8107. $result = $this->dbclass->get_result_complete();
  8108.  
  8109. return $result;
  8110. }
  8111.  
  8112. public function getLogisticSchedule ($username) {
  8113. /*$query = "SELECT * FROM logisticScheduler WHERE username = '".$username."' AND trackerid = '".$trackerid."'";
  8114. $query .= " AND stimestamp >= ".$datePeriod['stimestamp']." AND etimestamp <= ".$datePeriod['etimestamp'];*/
  8115. $query = "SELECT * FROM logisticScheduler WHERE username = '".$username."'";
  8116. //echo $query;
  8117. $this->dbclass->execute_query($query);
  8118. $result = $this->dbclass->get_result_complete();
  8119.  
  8120. return $result;
  8121. }
  8122.  
  8123. public function removeLogisticSchedule ($id) {
  8124. $id = $this->dbclass->get_escape_string($id);
  8125. $query = "DELETE FROM logisticScheduler WHERE id = $id";
  8126. $result = $this->dbclass->execute_query($query);
  8127. return $result;
  8128. }
  8129.  
  8130. public function insertIntoTrackersGallery ($imageData) {
  8131.  
  8132. foreach ($imageData as $k => $v) {
  8133. $imageData[$k] = $this->dbclass->get_escape_string($v);
  8134. }
  8135. //$query = "INSERT INTO trackersGallery SET trackerid = '".$imageData['trackerid']."', name = '".$imageData['name']."', description = '".$imageData['description']."'";
  8136. $query = "INSERT INTO trackersGallery SET trackerid = '".$imageData['trackerid']."', name = '".$imageData['name']."', type = '".$imageData['type']."', description = '".$imageData['description']."', timestamp = ".$imageData['timestamp'];
  8137. return $this->dbclass->execute_query($query);
  8138. }
  8139.  
  8140. public function getImageDetails ($name) {
  8141. $name = $this->dbclass->get_escape_string($name);
  8142. $query = "SELECT * FROM trackersGallery WHERE name = '".$name."'";
  8143. $this->dbclass->execute_query($query);
  8144. return $this->dbclass->get_result_complete();
  8145. }
  8146.  
  8147. public function getImageDetailsFromId ($id) {
  8148. $id = $this->dbclass->get_escape_string($id);
  8149. $query = "SELECT * FROM trackersGallery WHERE id = $id";
  8150. $this->dbclass->execute_query($query);
  8151. return $this->dbclass->get_result_complete();
  8152. }
  8153.  
  8154. public function removeImagesFromTrackersGallery ($value, $using = 'id') {
  8155. $value = $this->dbclass->get_escape_string($value);
  8156. if ($using == 'id')
  8157. $clause = 'id = '.$value;
  8158. elseif ($using == 'name')
  8159. $clause = "name = '{$value}'";
  8160.  
  8161. //$id = $this->dbclass->get_escape_string($id);
  8162. //$query = "DELETE FROM trackersGallery WHERE id = $id";
  8163. $query = "DELETE FROM trackersGallery WHERE ".$clause;
  8164. return $this->dbclass->execute_query($query);
  8165. }
  8166.  
  8167. public function saveTrackerGroup ($group) {
  8168. $group = $this->dbclass->get_escape_string($group);
  8169. $username = $this->dbclass->get_escape_string($_SESSION['username']);
  8170.  
  8171. $query = "SELECT * FROM trackersLogicalGroups WHERE groupName = '{$group}', username = '{$username}'";
  8172. $this->dbclass->execute_query($query);
  8173. $answer = $this->dbclass->get_result_complete();
  8174. if ($answer != false)
  8175. return EXISTS;
  8176.  
  8177. $query = "INSERT INTO trackersLogicalGroups SET groupName = '{$group}', username = '{$username}'";
  8178. $result = $this->dbclass->execute_query($query);
  8179.  
  8180. if ($result) {
  8181. //$returnID = mysql_insert_id ( $this->dblink );
  8182. //$returnID = $this->dbclass->get_insert_id();
  8183. $returnID = $this->dbclass->dblink->insert_id;
  8184. //var_dump($this->dblink);
  8185. //$returnID = $this->dblink->insert_id;
  8186. //var_dump($returnID);
  8187. return $returnID;
  8188. }
  8189. $errorno = $this->dbclass->get_error_no();
  8190.  
  8191. if ($errorno == 1062)
  8192. $result = EXISTS;
  8193. return $result;
  8194. }
  8195.  
  8196. public function getFleetUserGroups () {
  8197. $username = $this->dbclass->get_escape_string($_SESSION['username']);
  8198. $query = "SELECT * FROM trackersLogicalGroups WHERE username = '{$username}'";
  8199. $this->dbclass->execute_query($query);
  8200. $answer = $this->dbclass->get_result_complete();
  8201.  
  8202. return $answer;
  8203. }
  8204.  
  8205. public function assignTrackerToGroup ($groupid, $trackerid) {
  8206. $groupid = $this->dbclass->get_escape_string($groupid);
  8207. $trackerid = $this->dbclass->get_escape_string($trackerid);
  8208. $query = "INSERT INTO groupTrackersMap SET groupid = $groupid, trackerid = '{$trackerid}'";
  8209.  
  8210. return $this->dbclass->execute_query($query);
  8211. }
  8212.  
  8213. public function removeTrackerGroup ($groupid) {
  8214. $groupid = $this->dbclass->get_escape_string($groupid);
  8215.  
  8216. $query = 'DELETE FROM trackersLogicalGroups WHERE groupid = '.$groupid;
  8217.  
  8218. $result = $this->dbclass->execute_query($query);
  8219.  
  8220. if ($result == false)
  8221. return $result;
  8222.  
  8223. $query = 'DELETE FROM groupTrackersMap WHERE groupid = '.$groupid;
  8224.  
  8225. return $this->dbclass->execute_query($query);
  8226. }
  8227.  
  8228. public function removeTrackerFromGroup ($groupid, $trackerid) {
  8229. $groupid = $this->dbclass->get_escape_string($groupid);
  8230. $trackerid = $this->dbclass->get_escape_string($trackerid);
  8231.  
  8232. $query = "DELETE FROM groupTrackersMap WHERE groupid = $groupid AND trackerid = '{$trackerid}'";
  8233. return $this->dbclass->execute_query($query);
  8234. }
  8235.  
  8236. public function saveFinancialData () {
  8237. $returnid = false;
  8238. if (($_POST['id'] == 0)) {
  8239. $query = 'INSERT INTO financialPackage SET ';
  8240. $query .= basicTransactions::prepareMySQL_POSTRequest();
  8241. } elseif ($_POST['id'] > 0) {
  8242. $query = 'UPDATE financialPackage SET ';
  8243. $query .= basicTransactions::prepareMySQL_POSTRequest();
  8244. $query .= " WHERE id = {$_POST['id']} AND trackerid = '{$_POST['trackerid']}'";
  8245. $returnid = $_POST['id'];
  8246. }
  8247. $result = $this->dbclass->execute_query($query);
  8248. if ($result) {
  8249. if (!$returnid)
  8250. $returnid = $this->dbclass->dblink->insert_id;
  8251. return $returnid;
  8252. }
  8253.  
  8254. return ERROR;
  8255. }
  8256.  
  8257. public function savePercentageFinancialData ($trackerid) {
  8258. $trackerid = $this->dbclass->get_escape_string($trackerid);
  8259. $isRecord = $this->getFinancialData($trackerid);
  8260. if ($isRecord) {
  8261. $overall = $this->dbclass->get_escape_string($_POST['overall']);
  8262. $partial = $this->dbclass->get_escape_string($_POST['partial']);
  8263. $query = "UPDATE financialPackage SET overall = '{$overall}', partial = '{$partial}' WHERE trackerid = '{$trackerid}'";
  8264. $result = $this->dbclass->execute_query($query);
  8265. if ($result)
  8266. return $result;
  8267. return false;
  8268. }
  8269.  
  8270. return false;
  8271. }
  8272.  
  8273. public function getFinancialData ($trackerid) {
  8274. $trackerid = $this->dbclass->get_escape_string($trackerid);
  8275. $query = "SELECT * FROM financialPackage WHERE trackerid = '{$trackerid}'";
  8276. $result = $this->dbclass->execute_query($query);
  8277.  
  8278. if ($result) {
  8279. $ans = $this->dbclass->get_result_complete();
  8280. return $ans;
  8281. }
  8282.  
  8283. return false;
  8284. }
  8285.  
  8286. //public function getFinancialDetails ($jstime, $jetime, $tid) {
  8287. public function getFinancialDetails ($tid, $isEntireDay = false) {
  8288. $tid = $this->dbclass->get_escape_string($tid);
  8289.  
  8290. if ($isEntireDay)
  8291. $query = "SELECT MAX(rate) FROM financialPackage WHERE trackerid = '{$tid}'";
  8292. else {
  8293. $query = "SELECT * FROM financialPackage WHERE trackerid = '{$tid}' ORDER by stime, etime";
  8294. }
  8295.  
  8296. //$CONDITION = "( (stime <= {$jstime} && {$jetime} < etime) || ( (stime <= {$jstime} && {$jetime} > etime) || ) )";
  8297.  
  8298. //$query = "SELECT * FROM financialPackage WHERE ";
  8299.  
  8300. $result = $this->dbclass->execute_query($query);
  8301.  
  8302. if ($result) {
  8303. return $this->dbclass->get_result_complete();
  8304. }
  8305.  
  8306. return false;
  8307. }
  8308.  
  8309. public function createShift ($shiftName, $shiftSchedule, $description) {
  8310. $shiftName = $this->dbclass->get_escape_string($shiftName);
  8311. $shiftSchedule = $this->dbclass->get_escape_string($shiftSchedule);
  8312. $description = $this->dbclass->get_escape_string($description);
  8313. $username = $this->dbclass->get_escape_string($_SESSION['username']);
  8314. $returnid = false;
  8315. if ($_POST['shiftid'] == 0) {
  8316. $query = "SELECT * FROM shifts WHERE username = '{$username}' AND shiftName = '{$shiftName}'";
  8317. $this->dbclass->execute_query($query);
  8318. $answer = $this->dbclass->get_result_complete();
  8319. if ($answer != false) return EXISTS;
  8320.  
  8321. $query = "INSERT INTO shifts SET username = '{$username}', shiftName = '{$shiftName}', shiftSchedule = '{$shiftSchedule}', description = '{$description}'";
  8322.  
  8323. $returnid = true;
  8324.  
  8325. } elseif ($_POST['shiftid'] > 0) {
  8326. $query = "UPDATE shifts SET shiftName = '{$shiftName}', shiftSchedule = '{$shiftSchedule}', description = '{$description}' WHERE shiftid = {$_POST['shiftid']}";
  8327. }
  8328.  
  8329. $result = $this->dbclass->execute_query($query);
  8330. if ($result) {
  8331. if ($returnid)
  8332. return $this->dbclass->dblink->insert_id;
  8333.  
  8334. return $_POST['shiftid'];
  8335. }
  8336.  
  8337.  
  8338. return ERROR;
  8339. }
  8340.  
  8341. public function getShifts () {
  8342. $username = $this->dbclass->get_escape_string($_SESSION['username']);
  8343. $query = "SELECT * FROM shifts WHERE username = '{$username}'";
  8344. $result = $this->dbclass->execute_query($query);
  8345. if ($result) {
  8346. $answer = $this->dbclass->get_result_complete();
  8347. foreach ($answer as $k => $v) {
  8348. $query = "SELECT trackerid FROM shiftsMapper WHERE shiftid = {$v['shiftid']}";
  8349. $this->dbclass->execute_query($query);
  8350. $trackers = $this->dbclass->get_result_complete();
  8351.  
  8352. $firstTracker = true;
  8353.  
  8354. $answer [$k] ['trackers'] = '';
  8355. if ($trackers) {
  8356. foreach ($trackers as $a => $b) {
  8357. if ($firstTracker) {
  8358. $answer [$k] ['trackers'] .= $b['trackerid'];
  8359. $firstTracker = false;
  8360. } else
  8361. $answer [$k] ['trackers'] .= ','.$b['trackerid'];
  8362. }
  8363. }
  8364. }
  8365.  
  8366. return $answer;
  8367. }
  8368.  
  8369.  
  8370. return false;
  8371. }
  8372.  
  8373. public function removeShifts ($shiftid) {
  8374. $query = "DELETE FROM shifts WHERE shiftid = $shiftid";
  8375. $result = $this->dbclass->execute_query($query);
  8376. if ($result) {
  8377. $query = "DELETE FROM shiftsMapper WHERE shiftid = {$shiftid}";
  8378. $this->dbclass->execute_query($query);
  8379. }
  8380.  
  8381. return $result;
  8382. }
  8383.  
  8384. public function assignShift ($shiftid, $tid) {
  8385. $query = "INSERT INTO shiftsMapper SET shiftid = {$shiftid}, trackerid = '{$tid}'";
  8386. //echo $query;
  8387. return $this->dbclass->execute_query($query);
  8388. }
  8389.  
  8390. public function removeAssignedShift ($shiftid, $tid) {
  8391. $query = "DELETE FROM shiftsMapper WHERE shiftid = {$shiftid} AND trackerid = '{$tid}'";
  8392. //echo $query;
  8393. return $this->dbclass->execute_query($query);
  8394. }
  8395.  
  8396. public function getShiftDetails ($shiftid) {
  8397. $query = "SELECT * FROM shifts WHERE shiftid = {$shiftid}";
  8398. $result = $this->dbclass->execute_query($query);
  8399. if ($result) {
  8400. return $this->dbclass->get_result_complete();
  8401. }
  8402. return false;
  8403. }
  8404.  
  8405. public function getShiftTrackers ($shiftid) {
  8406. $query = "SELECT trackerid FROM shiftsMapper WHERE shiftid = '{$shiftid}'";
  8407. $result = $this->dbclass->execute_query($query);
  8408. if ($result)
  8409. return $this->dbclass->get_result_complete();
  8410.  
  8411. return false;
  8412. }
  8413.  
  8414. public function saveTrackerIcon ($iconName, $icon, $description = '') {
  8415. //basicTransactions::prepareMySQL_POSTRequest();
  8416. $username = $this->dbclass->get_escape_string($_SESSION['username']);
  8417. $iconName = $this->dbclass->get_escape_string($iconName);
  8418. $icon = $this->dbclass->get_escape_string($icon);
  8419. $description = $this->dbclass->get_escape_string($description);
  8420. $query = "INSERT INTO trackerIcons SET username = '{$username}', iconName = '{$iconName}', icon = '{$icon}', description = '{$description}'";
  8421. $result = $this->dbclass->execute_query($query);
  8422. if ($result) {
  8423. return $this->dbclass->dblink->insert_id;
  8424. }
  8425. return ERROR;
  8426. }
  8427.  
  8428. public function getTrackerIcon () {
  8429. $username = $this->dbclass->get_escape_string($_SESSION['username']);
  8430. $query = "SELECT * FROM trackerIcons WHERE username = '{$username}'";
  8431. $result = $this->dbclass->execute_query($query);
  8432. if ($result)
  8433. return $this->dbclass->get_result_complete();
  8434.  
  8435. return false;
  8436. }
  8437.  
  8438. public function assignIcon ($iconid, $tid){
  8439. $query = "INSERT INTO trackersIconsMap SET iconid = $iconid, trackerid = '{$tid}'";
  8440. return $this->dbclass->execute_query($query);
  8441. }
  8442.  
  8443. public function getTrackerIconid ($tid) {
  8444. $username = $this->dbclass->get_escape_string($_SESSION['username']);
  8445. $query = "SELECT iconid FROM trackerIcons INNER JOIN trackersIconsMap USING (iconid) WHERE username = '{$username}' AND trackerid = '{$tid}'";
  8446. $result = $this->dbclass->execute_query($query);
  8447.  
  8448. if ($result->num_rows)
  8449. return $this->dbclass->get_result_complete();
  8450. else {
  8451.  
  8452. //var_dump(array('0' => array('iconid' => 'default')));
  8453. //die;
  8454. return array('0' => array('iconid' => 'default'));
  8455. }
  8456.  
  8457. return false;
  8458. }
  8459.  
  8460. public function __construct() {
  8461. $this->dbclass = new MDATABASE ();
  8462.  
  8463. $this->dblink = $this->dbclass->connect ( databaseConfiguration::$usernameSD, databaseConfiguration::$passwordSD, databaseConfiguration::$hostnameSD, databaseConfiguration::$systemDatabase );
  8464.  
  8465. $this->dbclass_2 = new MDATABASE ();
  8466.  
  8467. $this->dblink_2 = $this->dbclass_2->connect ( databaseConfiguration::$usernameSD, databaseConfiguration::$passwordSD, databaseConfiguration::$hostnameSD, databaseConfiguration::$systemDatabase );
  8468.  
  8469. $this->openDebugLog ();
  8470. //$this->keyText = "9c24447e34340438654673081ce909b0553be329f5eb5e6e1d718e29fb666666";
  8471. $this->keyText = "9c24447e34340438654673081ce909b0553be329f5eb5e6e1d718e29fb210033";
  8472. $this->key = pack('H*', $this->keyText);
  8473. }
  8474.  
  8475. public function __destruct() {
  8476. $this->closeDebugLog ();
  8477. }
  8478. }
  8479. ?>
Add Comment
Please, Sign In to add comment