2009年7月11日土曜日

phpでgoogle calendarを作成する方法。

phpを使ってgoogle apiを使うことはzendのフレームワークを使えば簡単にできるのだが、権限をつけたりcalendarを作成したりというものは存在しない。だから自分でXMLを作成する必要がある。

Zend_Gdata_Calendar クラスを利用してxmlを送る。
・post() を使ってxmlを特定のurlに送る。
・レスポンスはgetBodyで表示できる。


require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
// ClientAuth 認証用のパラメータ
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = "ここにgoogleアカウントのuser名を入力";
$pass = "ここにgoogleアカウントのpasswordを入力";
// 認証済みの HTTP クライアントを作成します
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);

createCalendar($client,'calendar_name','A new calendar','#2952A3','America/Los_Angeles','false','Berkeley');

function createCalendar($client,$title = 'My New Calendar',$summary = 'A new calendar', $color = '#2952A3',$timezone='America/Los_Angeles', $hidden='false',$where='Berkeley'){
$xml = "<entry xmlns='http://www.w3.org/2005/Atom'
xmlns:gd='http://schemas.google.com/g/2005'
xmlns:gCal='http://schemas.google.com/gCal/2005'>
<title type='text'>[TITLE]</title>
<summary type='text'>[SUMMARY]</summary>
<gCal:timezone value='America/Los_Angeles'></gCal:timezone>
<gCal:hidden value='false'></gCal:hidden>
<gCal:color value='[COLOR]'></gCal:color>
<gd:where rel='' label='' valueString='Oakland'></gd:where>
</entry>";

$gdataCal = new Zend_Gdata_Calendar($client);
$uri = 'http://www.google.com/calendar/feeds/default/owncalendars/full';
$xml = str_replace('[TITLE]', $title, $xml);
$xml = str_replace('[SUMMARY]', $summary, $xml);
$xml = str_replace('[COLOR]', $color, $xml);
$response = $gdataCal->post($xml, $uri);
}

0 件のコメント:

コメントを投稿