最近又玩了 Googl 的 API:Google Calendar APIs and Tools,這個 API 可以讓 PHP 開發者對於使用 Google Canledar 有很大的幫助,可以新增事件,刪除事件,修改事件,或者是更改事件,相信在 Google 的 API 裡面都寫的很詳細,這 API 是由 Zend 底下所開發出來的,在 Zend Framework 底下是小 API 模組,大家可以在 這裡 下載到最新的版本 Zend Gdata 1.7.7,大家也可以直接在 Zend Framework 底下做開發,目前支援 PHP5,如果對 Google 月曆不會用的,可以上網找一下,很多 教學 的喔,底下是要針對開發環境建立做介紹。 針對 Google Calendar PHP API 教學大家可以先看看,今天先教大家建置環境,環境用在 Zend Framework 底下的作法,那架設 Zend Framework 可以參考我上一篇文章:[PHP] Zend Framework 安裝筆記教學 Appserv + Zend Framework (一),如果是在 Zend Framwork 底下安裝的話,那必須把 .htaccess 裡面的導向 index.php 的功能 mark 起來,不然就跑不過去喔,不然就是另開一個資料夾,就不需要搭配 Zend Framework,那就在 (www 或者是 data)資料夾,多開一個 GClab 資料夾,把檔案解壓縮到裡面。 1. 新增 google 帳號的設定檔案 config.inc.php
/* * Google 帳號密碼,以及 calendar ID */ $googleAccount = 'xxxxxxx@gmail.com'; $googlePassword = ''; $calendarID = 'xxxxxxxx@gmail.com';
- 設定 include_path 的相關性
/* * 這邊是在設定程式把Zend Gdata Library 載入程式碼中 */ define ('P_S', PATH_SEPARATOR); /* Zend_framework 請寫下面這行 */ set_include_path('.' .P_S . '../library' . P_S . '../application/models/' . P_S . get_include_path()); /* 非 Zend_framework 請 copy 下面 */ set_include_path('.' .P_S . './library' . P_S . get_include_path()); require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata'); Zend_Loader::loadClass('Zend_Gdata_AuthSub'); Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); Zend_Loader::loadClass('Zend_Gdata_HttpClient'); Zend_Loader::loadClass('Zend_Gdata_Calendar');3. 加入兩個 function
/* * 取得 event 資訊 */ 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; } } /* * 更新 event 資訊,title 名稱,地點,內容 */ function updateEvent ($client, $eventId, $newTitle, $where, $desc) { $gdataCal = new Zend_Gdata_Calendar($client); if ($eventOld = getEvent($client, $eventId)) { echo "Old title: " . $eventOld->title->text . "整個 config.inc.php 檔案如下
"; $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; } }
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; } } function updateEvent ($client, $eventId, $newTitle, $where, $desc) { $gdataCal = new Zend_Gdata_Calendar($client); if ($eventOld = getEvent($client, $eventId)) { echo "Old title: " . $eventOld->title->text . "打開瀏覽器,輸入:http://localhost/資料夾/config.inc.php,如果沒有錯誤訊息,那就是成功了喔,看看明天可不可以來寫新增修改刪除範例,還有可以瀏覽整個 Google Calendar 畫面。 下一篇:
"; $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; } } ?>
[PHP] Zend 使用 Google Calendar API - 瀏覽事件
See also
- Laravel 搭配 Google, Facebook, Twitter 第三方 OAuth 認證
- Amazon 推出無限儲存空間方案 一年只要 60 美元
- 用 Google PageSpeed Insights 計算 Desktop 或 Mobile 網站分數
- 認識現今 Google 搜尋引擎
- html5-boilerplate 打算不支援 IE8 瀏覽器
- Youtube IFrame API Unable to post message Issue
- 西聯匯款 Google Adsense 取款步驟
- 測試 Web Responsive Design Tool
- Google App Engine 收費機制 Frontend Instance Hours
- Google Chrome 支援超過 40,000 Extensions! with Greasemonkey