2013-09-28 55 views
0

我想實現一個管理共享icloud日曆事件的腳本。 我已經在我的數據庫中存儲了幾個事件,並且根據請求,我需要創建一個要在遠程電話/ ipad上看到的事件等等。通過php curl更新icloud日曆

感謝Andy和他post我有寫沒問題的事件到icloud的,但是當我嘗試更新或刪除事件,icloud的似乎並沒有記錄任何變化。 下面你可以找到我用它來創建事件

$body = <<<__EOD 
BEGIN:VCALENDAR 
PRODID:-// blablabla 
VERSION:2.0 
BEGIN:VEVENT 
METHOD:UPDATE 
UID:$id 
DTSTAMP:$tstamp 
ORGANIZER;CN=$organizer:MAILTO:$email 
DTSTART:$tstart 
DTEND:$tend 
SUMMARY:$name 
LOCATION:$location 
DESCRIPTION:$description 
SEQUENCE:2 
END:VEVENT 
END:VCALENDAR 
__EOD; 



$headers = array(
    'Content-Type: text/calendar; charset=utf-8', 
    'If-None-Match: *', 
    'Expect: ', 
    'Content-Length: '.strlen($body), 
); 



// CONNESSIONE E SCRITTURA 


$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, $userpwd); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $body); 
curl_exec($ch); 

if(curl_errno($ch)) echo 'Curl error: '.curl_error($ch); 

curl_close($ch); 

如果我不排除任何問題連接到的.ics產生更新的iCloud服務器和打印$身體功能的一部分我的本地日曆(然後複製對icloud的更改)。 否則,如果我嘗試連接到icloud它不會保存更改。 我試圖更改服務器請求,但仍然無法離開它

回答

0

從標頭中刪除'If-None-Match:*'。這將允許您使用「PUT」命令更新到iCal。

希望這會有所幫助。