function test_getDateForTimezoneOffset() { appendTestMessage(NEW_LINE_LOG . " >> Tests with timezone offset..." . NEW_LINE_LOG); $testUser = '******'; setConfiguration($testUser, CONFIG_KEY_TIMEZONE_OFFSET_MINUTES, ''); appendTestMessage("time=nowknown, offset=''"); $ret = getDateForTimezoneOffset($testUser, "nowknown", false); $expected = ""; if ($ret == $expected) { appendTestMessage("- ok"); } else { appendTestMessage("- failed"); return false; } appendTestMessage("time=2013-03-25_14:43:01Z+01, offset=''"); $ret = getDateForTimezoneOffset($testUser, "2013-03-25_14:43:01Z+01", false); $expected = "2013-03-25T14:43:01"; if ($ret == $expected) { appendTestMessage("- ok"); } else { appendTestMessage("- failed"); return false; } appendTestMessage("time=2013-03-25_14:43:01Z+01, offset='', date only"); $ret = getDateForTimezoneOffset($testUser, "2013-03-25_14:43:01Z+01", true); $expected = "2013-03-25"; if ($ret == $expected) { appendTestMessage("- ok"); } else { appendTestMessage("- failed"); return false; } // timezone offset Berlin summer setConfiguration($testUser, CONFIG_KEY_TIMEZONE_OFFSET_MINUTES, '-120'); appendTestMessage("time=2013-03-25_14:43:01Z+01, offset='-120'"); $ret = getDateForTimezoneOffset($testUser, "2013-03-25_14:43:01Z+01", false); $expected = "2013-03-25T16:43:01"; if ($ret == $expected) { appendTestMessage("- ok"); } else { appendTestMessage("- failed"); return false; } setConfiguration($testUser, CONFIG_KEY_TIMEZONE_OFFSET_MINUTES, '120'); appendTestMessage("time=2013-03-25_14:43:01Z+01, offset='120'"); $ret = getDateForTimezoneOffset($testUser, "2013-03-25_14:43:01Z+01", false); $expected = "2013-03-25T12:43:01"; if ($ret == $expected) { appendTestMessage("- ok"); } else { appendTestMessage("- failed"); return false; } setConfiguration($testUser, CONFIG_KEY_TIMEZONE_OFFSET_MINUTES, 'not_a_number'); appendTestMessage("time=2013-03-25_14:43:01Z+01, offset='not_a_number'"); $ret = getDateForTimezoneOffset($testUser, "2013-03-25_14:43:01Z+01", false); $expected = "2013-03-25T14:43:01"; if ($ret == $expected) { appendTestMessage("- ok"); } else { appendTestMessage("- failed"); return false; } setConfiguration($testUser, CONFIG_KEY_TIMEZONE_OFFSET_MINUTES, '0'); appendTestMessage("time=2013-03-25_14:43:01Z+01, offset='0'"); $ret = getDateForTimezoneOffset($testUser, "2013-03-25_14:43:01Z+01", false); $expected = "2013-03-25T14:43:01"; if ($ret == $expected) { appendTestMessage("- ok"); } else { appendTestMessage("- failed"); return false; } // DateTime as milliseconds setConfiguration($testUser, CONFIG_KEY_TIMEZONE_OFFSET_MINUTES, '-120'); appendTestMessage("time=1364225224111, offset='-120'"); $ret = getDateForTimezoneOffset($testUser, "1364225224111", false); $expected = "2013-03-25T17:27:04"; if ($ret == $expected) { appendTestMessage("- ok"); } else { appendTestMessage("- failed"); return false; } // The next line is just for debugging $ret = getDateForTimezoneOffset($testUser, "", false); resetConfig($testUser); resetConfig(ADMIN_NAME); return true; }
/** * Get a single track for a user * * @param type $user * @param type $date '2012-03-03' (optional) Takes today if ommited * @param type $lastSentTrackPointTime a dateTime (optional). Retrurns only way points after that time. * @return string track as CSV */ function getTrack($user, $date, $lastSentTrackPointTime) { if (isNullOrEmptyString($date)) { // $date = date("Y-m-d"); $date = getDateForTimezoneOffset($user, '', true); logMessage("Missing parameter date. Take the track from today: {$date}"); } $trackFile = USER_DIR . DIRECTORY_SEPARATOR . $user . DIRECTORY_SEPARATOR . $date . '.csv'; if (!is_file($trackFile)) { logMessage("No track file {$trackFile} for user: "******"No line number given. Return whole track."); return $positionCSVlines; } $lastSentTime = strtotime($lastSentTrackPointTime); $resultBuffer = ''; $lines = explode(PHP_EOL, $positionCSVlines); $count = count($lines); for ($i = 0; $i < $count; $i++) { // Compare the time // lat=47.50457163540115;lon=11.071390274487026;bearing=171.61432;speed=0.7065948;altitude=1067.652498529502;accuracy=6.0;time=2013-03-03T15:48:47.484 $line = trim($lines[$i]); $timeStampStringInLine = findDateTime($line); if (!isNullOrEmptyString($timeStampStringInLine)) { $timeStampInLine = strtotime($timeStampStringInLine); if ($timeStampInLine <= $lastSentTime) { continue; } } if ($resultBuffer != '') { $resultBuffer .= PHP_EOL; } $resultBuffer .= $line; } return $resultBuffer; }