* @created 28.05.2011 */ // input file $file = "MDataStore.db3"; // open sqlite3 database file $db = new PDO('sqlite:'.$file); // get sms $stmt = $db->query("SELECT * FROM MessageEx"); // fetch sms data $data = $stmt->fetchAll(PDO::FETCH_ASSOC); // key time array $keyTimedData = array(); // convert data to ass array with time based keys foreach ($data as $msg){ // calculate unix timestamp from sqlite timestamp $dte = getUnixTS($msg['SentReceivedTimestamp']); // assign timed data $keyTimedData[$dte] = $msg; } // sort by time ksort($keyTimedData, SORT_NUMERIC); // generate xml output $output = ""."\n"; $output .= ''."\n"; foreach ($keyTimedData as $time => $msg){ // get text $txt = htmlspecialchars($msg['Text']); // get adr $adr = $msg['Sender']; // assign time (ms) $dte = $time. '000'; // 5: send // 36: received // msg['Text']; if ($msg['Status']==5){ $output .= ''."\n"; }else{ $output .= ''."\n"; } } $output.= ''; // store xml file file_put_contents('sms-n900.xml', $output); // convert "strange" timestamp to unix timestamp function getUnixTS($str){ // calculate unix timestamp from sqlite timestamp $parts = explode('.', $str); // days since 1.1.1900 in [0] // seconds normalized to 1 in [1] $days = mktime(0,0,0,1,$parts[0]-1,1900); // get normaaalizing factor $nFactor = floatval('0.'.trim($parts[1])); // get seconds $seconds = (60.0*60.0*24.0) * $nFactor; // well there is an offset of 2h return $days+$seconds + (2*60*60); } ?>