[PHP] Zend 使用 Google Calendar API – 編輯事件

上一篇介紹了瀏覽 Google Calendar API 範圍內所有的事件,有沒有發現在 index.php 就有瀏覽單一事件的連結,我們透過 API 可以取得單一事件的 evenID,取得的方式就是透過 basename 函式:

basename($event->id->text)
我們可以利用 $_GET 方式讀取到 evenID 值,傳送到 event.php 來接收
$eventId = ( isset($_POST['id']) ) ? $_POST['id'] : $_GET['id'];
1. 新增 event.php 檔案,寫入開頭:
where as $where) {
  $whereValue = $where->valueString;//地點
}
?>

讀取單一事件可寫成一個 getEvent function 到 config.inc.php 檔案,只要傳入 even ID 直進去就可以了。

function getEvent($client, $eventId) 
{
  $gdataCal = new Zend_Gdata_Calendar($client);
  $query = $gdataCal->newEventQuery();
  $query->setUser('default');
  $query->setVisibility('private');
  $query->setProjection('full');
  $query->setEvent($eventId);

  try {
    $eventEntry = $gdataCal->getCalendarEventEntry($query);
    return $eventEntry;
  } catch (Zend_Gdata_App_Exception $e) {
    var_dump($e);
    return null;
  }
}
2. 編輯事件表格:
必須將 event id 寫入 hidden 裡面,傳送到 edit.php 3. 顯示單一事件:
" . $eventEntry->title->text .  "\n";
echo "

    \n"; echo "\t
  • 內容:".nl2br($eventEntry->content->text)."
  • \n"; foreach ($eventEntry->where as $where) { echo "\t
  • 地點:" . $where->valueString . "
  • \n";//地點 } foreach ($eventEntry->when as $when) { echo "\t
  • 開始時間:" . $when->startTime . "
  • \n"; echo "\t
  • 結束時間:" . $when->endTime . "
  • \n"; } echo "\t
  • 事件ID:".basename($eventEntry->id->text)."
  • \n"; echo "
\n"; ?>
當我們編輯好,送出到 edit.php 頁面,就可以利用 updateEvent function 來達到更新資料,官網上面只有更新 title,我加入了地點跟 content 內容更新,這樣會比較實用,程式碼如下:
function updateEvent ($client, $eventId, $newTitle, $where, $desc) 
{
  $gdataCal = new Zend_Gdata_Calendar($client);
  if ($eventOld = getEvent($client, $eventId)) {
    echo "Old title: " . $eventOld->title->text . "
"; $eventOld->title = $gdataCal->newTitle($newTitle); $eventOld->where = array($gdataCal->newWhere($where)); $eventOld->content = $gdataCal->newContent($desc); try { $eventOld->save(); } catch (Zend_Gdata_App_Exception $e) { var_dump($e); return null; } $eventNew = getEvent($client, $eventId); echo "New title: " . $eventNew->title->text . "
"; return $eventNew; } else { return null; } }
最後把 event.php 檔案,跟 edit.php 檔案程式碼寫在下面,有需要用到的可以拿去用。 event.php:
where as $where) {
  $whereValue = $where->valueString;//地點
}
?>




[

上一頁] [刪除]



" . $eventEntry->title->text . "\n"; echo "
    \n"; echo "\t
  • 內容:".nl2br($eventEntry->content->text)."
  • \n"; foreach ($eventEntry->where as $where) { echo "\t
  • 地點:" . $where->valueString . "
  • \n";//地點 } foreach ($eventEntry->when as $when) { echo "\t
  • 開始時間:" . $when->startTime . "
  • \n"; echo "\t
  • 結束時間:" . $when->endTime . "
  • \n"; } echo "\t
  • 事件ID:".basename($eventEntry->id->text)."
  • \n"; echo "
\n"; ?>
edit.php 程式碼:
".$newTitle."";

?>
上一篇:

[PHP] Zend 使用 Google Calendar API - 瀏覽事件 下一篇:[PHP] Zend 使用 Google Calendar API - 新增、刪除事件 - END


See also