SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Zend FrameworkでGoogleアプリケーションを使い倒す

PHPアプリケーションからGoogle Calendarを利用しよう(後編)

Zend FrameworkでGoogleアプリケーションを使い倒す(3)

  • X ポスト
  • このエントリーをはてなブックマークに追加

登録にかかわるサンプルコード

 以下、登録部分にかかわるサンプルコードです。

[リスト9]index.php(抜粋)
    // 表示ページのヘッダ部分
    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 】

 イベントを登録するための予約ボタンを作成します。

[リスト10]index.php(抜粋)
// 表示ページのヘッダ部分
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オブジェクトを作成できます。

[リスト11]index.php(抜粋)
$event= $gdataCal->newEventEntry();

 空のZend_Gdata_Calendar_Eventオブジェクトにフォームから取得した内容をプロパティとして与えます。プロパティは先ほど情報を取得する際に紹介したプロパティを設定することができます。時間データについてはRFC3339形式での登録が必要なため、文字列の加工に注意しましょう。

[リスト12]index.php(抜粋)
// フォームからのデータをイベント情報に設定
$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オブジェクトを与えることで実施できます。

[リスト13]index.php(抜粋)
// イベントをGoogle Calenderサーバにアップロード
$newEvent = $gdataCal->insertEvent($event);

次のページ
イベントの編集

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Zend FrameworkでGoogleアプリケーションを使い倒す連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 森山 絵美 (モリヤマ エミ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3886 2009/05/21 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング