登録にかかわるサンプルコード
以下、登録部分にかかわるサンプルコードです。
// 表示ページのヘッダ部分
echo "<form method='POST'>";【 1 】
(略)
echo " <button type='submit' name='registEvent'>予約</button>";
echo " <input type='hidden' name='targetList' value='" . $listId . "'>";
echo " <input type='hidden' name='postUri' value='" . $postUri . "'>";
(略)
echo "</form>";
// 予約ボタン押下時の動作【 2 】
if(isset($_POST['registEvent'])) {
// 対象のカレンダーリストのタイトルを表示する
$id = $_POST['targetList'];
$list = $serviceCal->getCalendarListEntry($id);
echo "【" . $list->title . "】を予約します。<br />";
// 登録用のフォームを作成
print <<<END
以下に情報を入力してください。<br />
<form method='POST'>
日付(YYYY-MM-DD):<input type='text' name='date' size='50' /><br />
開始時刻(hh:mm):<input type='text' name='start' size='50' /><br />
終了時刻(hh:mm):<input type='text' name='end' size='50' /><br />
内容:<input type='text' name='title' size='100' /><br />
記入者:<input type='text' name='author' size='50' /><br />
<input type='submit' name='registYes' value='実行' />
<input type='submit' name='cancel' value='キャンセル' />
END;
echo "<input type='hidden' name='postUri' value='" . $_POST['postUri'] . "'>";
echo "</form>";
}
// 予約に対して実行を押下時【 3 】
if(isset($_POST['registYes'])) {
//EventEntry
オブジェクトの作成
$event= $serviceCal->newEventEntry();
// フォームからのデータをイベント情報に設定
$event->title = $serviceCal->newTitle($_POST['title']);
$event->content = $serviceCal->newContent($_POST['author']);
$date = $_POST['date'];
$startTime = $_POST['start'];
$endTime = $_POST['end'];
$tzOffset = "+09";
$when = $serviceCal->newWhen();
$when->startTime = "{$date}T{$startTime}:00.000{$tzOffset}:00";
$when->endTime = "{$date}T{$endTime}:00.000{$tzOffset}:00";
$event->when = array($when);
// イベントをGoogle Calenderサーバにアップロード
$newEvent = $serviceCal->insertEvent($event, $_POST['postUri']);
// 登録終了を表示
echo "登録しました。<br />";
echo "<form action='index.php' method='POST'>";
echo "<input type='submit' value='OK'>";
echo "</form>";
}
予約ボタンの作成【 1 】
イベントを登録するための予約ボタンを作成します。
// 表示ページのヘッダ部分 echo "<form method='POST'>";【 1 】 echo " <button type='submit' name='registEvent'>予約</button>"; echo " <input type='hidden' name='targetList' value='" . $listId . "'>"; echo " <input type='hidden' name='postUri' value='" . $postUri . "'>"; echo "</form>";
どのカレンダーリストに登録するのかをフォーム送信先に知らせるためにhidden
パラメータとしてカレンダーリストのIDと送信先URIを持たせます。
予約ボタン押下時の動作【 2 】
予約ボタンが押下された場合には、ページ下部に登録用のテキストフォームを作成します。フォームの送信先に、イベント登録先のURIをhidden
パラメータで送信します。
予約に対して実行を押下時【 3 】
先ほどの登録フォームにあるregistYesの名前を持つボタンが押された場合に以下の処理を実行します。
Zend_Gdata_Calendar
オブジェクトのnewEventEntry
メソッドを実行すると空のZend_Gdata_Calendar_Event
オブジェクトを作成できます。
$event= $gdataCal->newEventEntry();
空のZend_Gdata_Calendar_Event
オブジェクトにフォームから取得した内容をプロパティとして与えます。プロパティは先ほど情報を取得する際に紹介したプロパティを設定することができます。時間データについてはRFC3339形式での登録が必要なため、文字列の加工に注意しましょう。
// フォームからのデータをイベント情報に設定 $event->title = $gdataCal->newTitle($_POST['title']); $event->content = $gdataCal->newContent($_POST['author']); $date = $_POST['date']; $startTime = $_POST['start']; $endTime = $_POST['end']; $tzOffset = "+09"; $when = $gdataCal->newWhen(); $when->startTime = "{$date}T{$startTime}:00.000{$tzOffset}:00"; $when->endTime = "{$date}T{$endTime}:00.000{$tzOffset}:00"; $event->when = array($when);
必要なプロパティをZend_Gdata_Calendar_Event
オブジェクトに設定し終えたら、サーバにアップロードを行います。これはZend_Gdata_Calendar
オブジェクトのinsertEvent
メソッドの引数にZend_Gdata_Calendar_Event
オブジェクトを与えることで実施できます。
// イベントをGoogle Calenderサーバにアップロード $newEvent = $gdataCal->insertEvent($event);