function export_pilot_csv($id) { /* to be imported to a Palm with: * pilot-datebook -r csv -f webcalendar-export.txt -w hotsync */ $res = export_get_event_entry($id); echo "uid,attributes,category,untimed,beginDate,beginTime,endDate,endTime,description,note,alarm,advance,advanceUnit,repeatType,repeatForever,repeatEnd,repeatFrequency,repeatDay,repeatWeekdays,repeatWeekstart\n"; while ($row = dbi_fetch_row($res)) { // uid (long) echo $row[0], ','; // attributes (int) // 128 = 0x80 : Deleted // 64 = 0x40 : Dirty // 32 = 0x20 : Busy // 16 = 0x10 : Secret/Private echo $row[7] == 'R' ? '16,' : '0,'; // category (int: 0=Unfiled) echo '0,'; // untimed (int: 0=Appointment, 1=Untimed) // note: Palm "Untimed" is WebCalendar "AllDay" if ($row[4] < 0) { echo '1,', substr($row[3], 0, 4), '-', substr($row[3], 4, 2), '-', substr($row[3], 6, 2), ',00:00:00,', substr($row[3], 0, 4), '-', substr($row[3], 4, 2), '-', substr($row[3], 6, 2), ',00:00:00,'; } else { echo '0,', pilot_date_time($row[3], $row[4], 0, ','), ',', pilot_date_time($row[3], $row[4], $row[8], ','), ','; //endDate,endTime } //end if ( $row[4] < 0 ) // description (str) echo '"', preg_replace("/\r?\n/", "\\n", $row[1]), '",'; // note (str) echo '"', preg_replace("/\r?\n/", "\\n", $row[9]), '",'; // alarm, advance, advanceUnit // alarm (int: 0=no alarm, 1=alarm) // FIXME: verify if WebCal. DB interpreted correctly // advance (int), advanceUnit (int: 0=minutes, 1=hours, 2=days) // FIXME: better adjust unit $ext = get_cal_ent_extras($row[0], 'webcal_site_extras', "cal_name = 'Reminder' AND cal_remind = 1"); if ($ext) { echo '1,', $ext[5], ',0,'; } else { echo '0,0,0,'; } // repeat: // repeatType (int: 0=none, 1=daily, 2=weekly, 3=monthly, 4=monthly/weekday, // repeatForever (int: 0=not forever, 1=forever) 5=yearly) // repeatEnd (time) // repeatFrequency (int) // repeatDay (int: day# or 0..6=Sun..Sat 1st, 7..13 2nd, 14..20 3rd, // 21..27 4th, 28-34 last week) // repeatWeekdays (int: add - 1=Sun,2=Mon,4=Tue,8=Wed,16=Thu,32=Fri,64=Sat) // repeatWeekstart (int) $ext = get_cal_ent_extras($row[0], 'webcal_entry_repeats'); if ($ext) { switch ($ext[1]) { case 'daily': $repType = 1; break; case 'weekly': $repType = 2; break; case 'monthlyByDate': $repType = 3; break; case 'monthlyByDay': $repType = 4; break; case 'yearly': $repType = 5; break; default: $repType = 0; } } else { $repType = 0; } if ($repType) { echo $repType, ','; // repeatType if ($ext[2]) { echo '0,', substr($ext[2], 0, 4), '-', substr($ext[2], 4, 2), '-', substr($ext[2], 6, 2), ' 00:00:00,'; } else { echo '1,,'; } // repeatForever,repeatEnd echo $ext[3], ','; // repeatFrequency switch ($repType) { case 2: // weekly echo '0,', bindec(strtr(strrev($ext[4]), 'yn', '10')), ",1\n"; break; case 3: // monthly/weekday // repeatDay (0..6=Sun..Sat 1st, 7..13 2nd, 14..20 3rd, // 21..27 4th, 28-34 last week) echo floor(substr($row[3], 6, 2) / 7) * 7 + date('w', date_to_epoch($row[3])), ",0,0\n"; break; case 1: // daily // daily case 4: // monthly // monthly case 5: // yearly echo "0,0,0\n"; } //end switch } else { echo "0,0,,0,0,0,0\n"; } } //end if ( $repType ) }
function export_install_datebook($res) { while ($row = dbi_fetch_row($res)) { $start_time = pilot_date_time($row[3], $row[4], 0); $end_time = pilot_date_time($row[3], $row[4], $row[8]); printf("%s\t%s\t\t%s\n", $start_time, $end_time, $row[1]); echo "Start time: {$start_time}\n"; echo "End time: {$end_time}\n"; echo "Duration: {$row['8']}\n"; echo "Name: {$row['1']}\n"; } }