Fehler in der Caldav Schnittstelle behoben bei der die Termine nicht immer korrekt exportiert wurden wenn zur selben Zeit ein LVPlan Eintrag und eine Reservierung vorhanden ist

This commit is contained in:
oesi
2015-04-09 19:01:55 +02:00
parent 31371eab5e
commit e728daf034
2 changed files with 14 additions and 3 deletions
+4 -1
View File
@@ -2438,6 +2438,8 @@ class wochenplan extends basis_db
'Description'=>$description,
'dtstart'=>$start_date_time_ical,
'dtend'=>$end_date_time_ical,
'reservierung'=>$this->std_plan[$i][$j][$idx]->reservierung,
'reservierung_id'=>($this->std_plan[$i][$j][$idx]->reservierung?$this->std_plan[$i][$j][$idx]->stundenplan_id:''),
'updateamum'=>$this->std_plan[$i][$j][$idx]->updateamum,
'data'=>'BEGIN:VEVENT'.$this->crlf
.'UID:'.$UID.$this->crlf
@@ -2488,7 +2490,8 @@ class wochenplan extends basis_db
$lektor1 = $this->std_plan[$tag][$stunde][$idx]->lektor;
$lektor2 = $this->std_plan[$tag][$stunde][$idx1]->lektor;
if($unr1==$unr2 && ($ort1==$ort2 || $lektor1==$lektor2))
if($unr1==$unr2 && ($ort1==$ort2 || $lektor1==$lektor2)
&& !$this->std_plan[$tag][$stunde][$idx]->reservierung && !$this->std_plan[$tag][$stunde][$idx1]->reservierung)
return true;
else
return false;
+10 -2
View File
@@ -211,7 +211,7 @@ class MySabre_CalDAV_Backend extends \Sabre\CalDAV\Backend\AbstractBackend
foreach($val as $row)
{
//einzelnen Eintrag holen
if($row['dtstart']==$dtstart && $row['unr'][0]==$unr)
if($row['dtstart']==$dtstart && ($row['unr'][0]==$unr) || $unr=='R'.$row['reservierung_id'])
{
return $row;
}
@@ -221,6 +221,7 @@ class MySabre_CalDAV_Backend extends \Sabre\CalDAV\Backend\AbstractBackend
$data=array_merge($data, $val);
}
$endtime = microtime(true);
//error_log("\n\nDATA".print_r($data,true));
//error_log("getCalendarData time:".($endtime-$starttime));
//$data.="\nEND:VCALENDAR";
return $data;
@@ -280,9 +281,16 @@ END:VTIMEZONE\n".$event."\nEND:VCALENDAR";
$return = array();
foreach($data as $row)
{
// Reservierungen werden mit einem R markiert und mit der ReservierungID da sonst
// Termine verloren gehen koennen wenn zur selben Zeit eine Reservierung und ein LVPlan Eintrag vorhanden ist
if($row['reservierung'])
$uri = $row['dtstart'].'-R'.$row['reservierung_id'];
else
$uri = $row['dtstart'].'-'.$row['unr'][0];
$return[] = array("id"=>$row['UID'],
"calendardata"=>$this->makeCal($row['data']),
"uri"=>$row['dtstart'].'-'.$row['unr'][0],
"uri"=>$uri,
"lastmodified"=>$row['updateamum'],
"etag"=>'"'.$row['UID'].'"',
"calendarid"=>$calendarId);