mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-08-07 10:01:47 -04:00
Support sequences
This commit is contained in:
parent
81c4adfaa4
commit
56a296f103
@ -97,11 +97,14 @@ class ImportTimesheetData extends Command {
|
|||||||
$codes[$item->name] = $item;
|
$codes[$item->name] = $item;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//FIXME: Make sure we keep track of duplicate UID's so we don't fail when inserting them to the database
|
||||||
$this->info("Start parsing ICAL files");
|
$this->info("Start parsing ICAL files");
|
||||||
foreach($event_sources as $i => $event_source) {
|
foreach($event_sources as $i => $event_source) {
|
||||||
if(!is_array($results[$i])) {
|
if(!is_array($results[$i])) {
|
||||||
$this->info("Find events in ".$event_source->name);
|
$this->info("Find events in ".$event_source->name);
|
||||||
|
file_put_contents("/tmp/".$event_source->name.".ical", $results[$i]);
|
||||||
if(preg_match_all('/BEGIN:VEVENT\r?\n(.+?)\r?\nEND:VEVENT/s', $results[$i], $icalmatches)) {
|
if(preg_match_all('/BEGIN:VEVENT\r?\n(.+?)\r?\nEND:VEVENT/s', $results[$i], $icalmatches)) {
|
||||||
|
$uids = [];
|
||||||
foreach($icalmatches[1] as $eventstr) {
|
foreach($icalmatches[1] as $eventstr) {
|
||||||
//print "---\n";
|
//print "---\n";
|
||||||
//print $eventstr."\n";
|
//print $eventstr."\n";
|
||||||
@ -140,6 +143,25 @@ class ImportTimesheetData extends Command {
|
|||||||
$event->project_id = $code->project_id;
|
$event->project_id = $code->project_id;
|
||||||
$event->project_code_id = $code->id;
|
$event->project_code_id = $code->id;
|
||||||
$event->uid = $data['uid'];
|
$event->uid = $data['uid'];
|
||||||
|
|
||||||
|
# Add RECURRENCE-ID to the UID to make sure the event is unique
|
||||||
|
if(isset($data['recurrence-id'])) {
|
||||||
|
$event->uid .= $data['recurrence-id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for duplicate events in the feed
|
||||||
|
if (isset($uids[$event->uid])) {
|
||||||
|
echo "Duplicate event found:";
|
||||||
|
echo "org:\n";
|
||||||
|
var_dump($uids[$event->uid]);
|
||||||
|
echo "new:\n";
|
||||||
|
var_dump($data);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$uids[$event->uid] = $data;
|
||||||
|
|
||||||
|
//TODO: Bail on RRULE as we don't support that
|
||||||
|
|
||||||
//$event->org_data = $eventstr;
|
//$event->org_data = $eventstr;
|
||||||
|
|
||||||
if(isset($data['location'])) {
|
if(isset($data['location'])) {
|
||||||
@ -188,25 +210,26 @@ class ImportTimesheetData extends Command {
|
|||||||
exit();*/
|
exit();*/
|
||||||
|
|
||||||
// Save event
|
// Save event
|
||||||
echo "'".$event->summary."'\n";
|
|
||||||
if(preg_match("/forbered møde med Peter Pietras - nyt sjovt projekt./", $event->summary)) {
|
//if(!preg_match("/forbered møde med Peter Pietras - nyt sjovt projekt./", $event->summary)) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
//$event->start_date = new DateTime("");
|
//$event->start_date = new DateTime("");
|
||||||
$event->save();
|
$event->save();
|
||||||
} catch (Exception $ex) {
|
} catch (Exception $ex) {
|
||||||
|
echo "'".$event->summary."'\n";
|
||||||
var_dump($data);
|
var_dump($data);
|
||||||
echo $ex->getMessage();
|
echo $ex->getMessage();
|
||||||
echo $ex->getTraceAsString();
|
echo $ex->getTraceAsString();
|
||||||
exit();
|
//exit();
|
||||||
}
|
}
|
||||||
}
|
//}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//TODO: Add to error table so we can show user
|
//TODO: Add to error table so we can show user
|
||||||
echo "Code not found: $codename\n";
|
echo "Code not found: $codename\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user