Zend_Gdata_Calendar クラスを使用して、オンラインの Google Calendar サービスでイベントの閲覧、作成、更新、 そして削除が行えます。
Google Calendar API についての詳細な情報は http://code.google.com/apis/calendar/overview.html を参照ください。
閲覧したいカレンダーの所有者を setUser()
メソッドで指定します。指定する値は文字列で、一般的には
Google Calendar のユーザアカウントとなります。
グループのカレンダーを指定することもできます。
<?php
$gdataCal = new Zend_Gdata_Calendar();
// Google の開発者のの公開カレンダーを取得します
$gdataCal->setUser('developer-calendar@google.com');
$feed = $gdataCal->getCalendarFeed();
?>
このオブジェクトの使用法についての詳細は、 Zend_Feed のドキュメントを参照ください。
ユーザを指定しなかった場合のデフォルトは "default" となります。認証済みの Http クライアントを使用している場合は、 その Google アカウントに関連付けられたカレンダーがデフォルトになります。
<?php $gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient); // 現在のユーザのカレンダーを取得します $myCalendarFeed = $gdataCal->getCalendarFeed(); ?>
setVisibility() メソッドによって、
フィードから返されたエントリを一般に公開するか
プライベートエントリにするかを設定できます。
プライベートエントリは、認証済みの
Http クライアントでアクセスした場合にのみアクセス可能となります。
デフォルトは "public" です。
<?php
$gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient);
// 自分のイベントを、他の人も閲覧できるようにします
$gdataCal->setVisiblity('public');
$feed = $gdataCal->getCalendarFeed();
?>
setProjection() メソッドを使用して、
フィードにどれだけの情報を返すかを指定します。
たとえば "full" を指定すると、
カレンダーのイベントの全プロパティが含まれますが、
エントリに対するコメントは含まれません。
"composite" は "full" と似ていますが、
フィードエントリの中にコメントのフィードが含まれます。
その他指定可能な値についての情報は
Google Calendar API のドキュメントを参照ください。
デフォルト値は "full" です。
<?php
$gdataCal = new Zend_Gdata_Calendar();
// johndoe のカレンダから最小限の情報を取得します
$gdataCal->setUser('johndoe@gmail.com');
$gdataCal->setProjection('free-busy');
$feed = $gdataCal->getCalendarFeed();
?>
setStartMin() メソッドおよび setStartMax()
メソッドで、カレンダーのイベントの日付の範囲を指定します。
startMin を指定すると、
それより前の日付のイベントはフィードに含まれません。
同様に、startMax
で指定した日付より後の日付のイベントもフィードに含まれません。
<?php
$gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient);
// 12/1 より後のイベントのみを取得します
$gdataCal->setStartMin('2006-12-01');
$feed = $gdataCal->getCalendarFeed();
?>
新しいイベントを自分のカレンダーに投稿するには
post() メソッドを使用します。
Google Calendar API のドキュメントのガイドラインにもとづいた
XML 定義でイベントエントリを作成し、その XML を投稿します。
この操作を行うには、認証済みの Http クライアントを使用する必要があります。
<?php
$gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient);
$xmlString = <<<XML
<entry xmlns='http://www.w3.org/2005/Atom'
xmlns:gd='http://schemas.google.com/g/2005'>
<category scheme='http://schemas.google.com/g/2005#kind'
term='http://schemas.google.com/g/2005#event'></category>
<title type='text'>Tennis with Beth</title>
<content type='text'>Meet for a quick lesson.</content>
<author>
<name>Jo March</name>
<email>jo@gmail.com</email>
</author>
<gd:transparency
value='http://schemas.google.com/g/2005#event.opaque'>
</gd:transparency>
<gd:eventStatus
value='http://schemas.google.com/g/2005#event.confirmed'>
</gd:eventStatus>
<gd:where valueString='Rolling Lawn Courts'></gd:where>
<gd:when startTime='2006-04-17T15:00:00.000Z'
endTime='2006-04-17T17:00:00.000Z'></gd:when>
</entry>
XML;
$xml = new SimpleXMLElement($xmlString);
$gdataCal->post($xml->asXML());
?>