2009-07-22 19 views
1

Googleカレンダーにイベントを追加するためにPHP Webアプリケーションを変更しました。現在、正常に追加されています。GoogleカレンダーPHP - イベントURL/ID? (Zend_Gdata)

ただし、イベントを削除して編集したいと考えています。これは、各イベントにどのようなイベントURLが関連付けられているかわからないという点を除いて、簡単なことです。

イベントを追加するときに、このイベントURL(またはID?)を設定する必要がありますか?どのように私はそれを把握する必要がありますか?

私はどこにもこの情報を見つけることができないよう

...

ありがとう!

編集:私はこの(Gdataのパッケージ)のためのZend Frameworkを使用してきた

...

EDIT:あなたはZend_GdataZend_Gdata_Calendarを見ている可能性が

$newIncludePath = array(); 

$newIncludePath[] = '../ZendGdata-1.8.4PL1/library'; 

$newIncludePath = implode($newIncludePath); 

set_include_path($newIncludePath); 



    // load classes 

    require_once 'Zend/Loader.php'; 

    Zend_Loader::loadClass('Zend_Gdata'); 

    Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 

    Zend_Loader::loadClass('Zend_Gdata_Calendar'); 

    Zend_Loader::loadClass('Zend_Http_Client'); 



    // connect to service 

    $gcal = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; 

    $user = "********@gmail.com"; 

    $pass = "*****"; 

    $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $gcal); 

    $gcal = new Zend_Gdata_Calendar($client); 



    // construct event object 

    // save to server  

    try { 

    $event = $gcal->newEventEntry();   

    $event->title = $gcal->newTitle($title); 

    $event->content = $gcal->newContent($desc);  

    $when = $gcal->newWhen(); 

    $when->startTime = $date; 

    $when->endTime = $date; 

    $event->when = array($when);   

    $gcal->insertEvent($event); 

echo $event->getEditLink()->href; 


    } catch (Zend_Gdata_App_Exception $e) { 

    echo "Error: Unable to add event to Google Calendar" . $e->getResponse(); 

    } 

答えて

1

これははっきりZend_Gdataにドキュメントに記載されています:

http://framework.zend.com/manual/en/zend.gdata.calendar.html#zend.gdata.calendar.deleting_events

// Option 1: Events can be deleted directly 
$event->delete(); 

または

// Option 2: Events can be deleted supplying the edit URL of the event 
// to the calendar service, if known 
$service->delete($event->getEditLink()->href); 

後者が必要なようです。

編集:

あなたの$イベントから編集リンクを取得します。上のコードに表示されています:

$event->getEditLink()->href; 

これは保存されたイベントで利用できます。例えば

$newEvent = $service->insertEvent($event); 
echo $newEvent->getEditLink()->href; 
+0

hobodave - 私はそれを見ましたが、混乱しているのは「偶数部分の編集URLを提供する」ことです。イベントを追加したばかりで、削除したいとします。どのようにイベントURLがわかるのですか?オリジナルの投稿に編集を追加して、イベントを追加する方法を教えてください。あなたのお手伝いをありがとう。 – littleK

+1

これは私の最初の答えでした。私はそれを明確にするように更新しました。表示されたコードを試してください*。 – hobodave

+0

ご協力ありがとうございます。 – littleK

1

:それらGoogleのAPIと通信するためにコードを費やす必要がない場合は、他のものを開発するための時間が多くなります。

そしてそれは、それはZend Frameworkののoutsid使用することができそうです。それは、スタンドアロンのダウンロードとしても、利用可能です:あなたは本当にそれを自分で行いたい場合は(http://framework.zend.com/download/gdata

、あなたはまだZend_Gdataはそれをしない方法を理解しようとすることができます^^ )

+1

申し訳ありませんが、私はZend Frameworkを使用してこれまでのことを達成していることに言及しておきます。しかし、APIを見ても、特定のイベントのイベントURLを取得する方法を見つけることができません! – littleK

0

はここでこれであなたを助けるための素晴らしいリソースです: Integrate your PHP application with Google Calendar

ここで私はnewEventEntryでイベントを公開した後、カレンダーイベントのユニークIDを取得する方法です。後で更新または削除して編集する必要がある場合に備えて、$ id値をデータベースに格納します。

try { 
     $event = $gcal->newEventEntry();   
     $event->title = $gcal->newTitle($title);   
     $when = $gcal->newWhen(); 
     $when->startTime = $start; 
     $when->endTime = $end; 
     $event->when = array($when);   
     $gcal->insertEvent($event); 
     $id = substr($event->id, strrpos($event->id, '/')+1); // trim off everything but the id 
     } catch (Zend_Gdata_App_Exception $e) { 
     echo "Error: " . $e->getResponse(); 
     } 

// Do mysql Insert functions here to store the record in db (removed for clarity) 

     echo 'Event '. $id. 'successfully added!'; 

その後、私はIDの$ _POSTを使用して削除/更新するためだけそのイベントをターゲットとするために使用することができ、その特定のイベントにアクセスする必要がある場合:

try { 

$event = $gcal->getCalendarEventEntry('http://www.google.com/calendar/feeds/default/private/full/' . $_POST['id']); 
     $event->title = $gcal->newTitle($title); 
     $when = $gcal->newWhen(); 
     $when->startTime = $start; 
     $when->endTime = $end; 
     $event->when = array($when); 
     $event->save(); 

    } catch (Zend_Gdata_App_Exception $e) { 
     die("Error: " . $e->getResponse()); 
    } 
    echo 'Event successfully modified!'; 

・ホープ、この答えはあなたの質問 - 私はこれを働かせることに苦労しましたが、もし私が助けてくれたら幸いです。あなたがにあなたがする対象の開始時刻、終了時刻とカレンダーID(特定のカレンダーについてinfomrationを持っている場合は、ローカルデータベースでは、ここで別の良い方法イベントを削除するイベントIDを格納したいいけないまあ場合

スコット

0

)開始時刻と終了時刻の間にイベントを削除

function deleteEvent($client,$startDate,$endDate,$startTime,$endTime,$tzOffset,$cal_id) 
{ 
$gdataCal = new Zend_Gdata_Calendar($client); 
$query = $gdataCal->newEventQuery(); 
$query->setUser($cal_id); 
$query->setVisibility('private'); 
$query->setProjection('full'); 
$query->setOrderby('starttime'); 
$query->setStartMin("{$startDate}T{$startTime}:00.000{$tzOffset}"); 
$query->setStartMax("{$endDate}T{$endTime}:00.000{$tzOffset}"); 
$eventFeed = $gdataCal->getCalendarEventFeed($query); 
    foreach ($eventFeed as $event) { 
     $event->delete(); 
    } 
} 

それは私にやったようにそれは、誰かに役立ちます願っています。

関連する問題