ドキュメントサービスの取得
Zend_Gdata_Docsのコンストラクタを生成します。前回のGoogle Calendarと同様に、引数に認証済みのHTTPクライアントを与えることで、Documentサービスを取得します。
// Documentsサービスのインスタンス作成 $serviceDocs = new Zend_Gdata_Docs($client);
ドキュメントの一覧表示
まずはサーバ上のドキュメントの一覧を取得、表示しましょう。
一覧上に表示されたドキュメント名のリンクをクリックするとそのまま編集を行うことができます。
以下がドキュメントの一覧表示に関するサンプルコードです。
echo "<a href=\"" . $_SERVER['SCRIPT_NAME'] . "?menu=show\">ドキュメント一覧</a><br />"; //【1】
// 各メニューリンク押下時の処理振り分け
if(isset($_GET['menu'])) {
switch ($_GET['menu']) {
case 'show': //【2】
echo "<h2>ドキュメント一覧</h2>";
showAllDocuments($serviceDocs);
break;
}
}
// メソッド:全ドキュメント一覧取得、表示
function showAllDocuments($serviceDocs) { //【3】
// ドキュメントリストの取得
try {
$listFeed= $serviceDocs->getDocumentListFeed();
} catch (Zend_Gdata_App_Exception $e) {
echo "エラー: " . $e->getMessage();
}
showDocumentList($listFeed);
}
// メソッド:指定されたフィードのドキュメント一覧表示
function showDocumentList($listFeed) { //【4】
(略。table表示関連コード)
// ドキュメントのエントリーごとに処理
foreach ($listFeed->entries as $entry) {
// ドキュメントのタイトル取得
$title = $entry->title;
// ドキュメントのリンク取得
foreach ($entry->link as $link) {
if($link->getRel() == 'alternate') {
$linkUrl = $link->getHref();
}
}
// 最終更新日取得
$timestamp = strtotime($entry->updated);
$update = date('Y/m/d H:i:s', $timestamp);
(略。table表示関連コード)
}
}
1. ドキュメント一覧表示リンク
本サンプルコードは1ファイルで完結しています。自身のURLにパラメータ「show」を与えたリンクを作成します。
2. リンクメニューの振り分け
1.のリンクからパラメータを取得し、「show」であった場合、自作メソッドshowAllDocumentsを呼び出します。
3. 全ドキュメント一覧取得、表示メソッド
サーバ上にあるすべてのドキュメントを取得、表示するためのメソッドです。Google CalendarやYoutubeの際と同様に、サービスオブジェクトからフィードを取得します。
$listFeed= $serviceDocs->getDocumentListFeed();
このgetDocumentListFeedメソッドには、サーバに要求するフィードのURIに関する引数を1つ与えることができます。この引数によって目的のフィードを得ることができます。
| 型 | 説明 |
| 空 | デフォルト値(http://docs.google.com/feeds/documents/private/full)が適用され、すべてのフィードを取得する。 |
| Zend_Gdata_Query | QueryオブジェクトのgetQueryUrlメソッドで取得されるURIが適用され、Queryオブジェクトに設定したオプションに従ったフィードを取得する。 |
| String | 文字列で記載されたURLが適用される。 |
サンプルではすべてのドキュメントを表示したいため、引数を指定していません。
取得したフィードを引数として、さらに自作メソッドshowDocumentListを呼び出します。
4. 指定されたフィードのドキュメント一覧表示メソッド
引数に指定されたフィードに含まれるドキュメントのタイトルと最終更新日を取得し、一覧表示するメソッドです。1つのエントリーが1つのドキュメントを表します。
Google CalendarやYoutubeの際と同様にエントリーからは、さまざまなパラメータを情報として取得できます。Zend_Gdata_Docs_DocumentListEntryオブジェクト固有のパラメータはなく、その他のクラスと共通のパラメータ(つまり親クラスであるZend_Gdata_Entryやさらにその親クラスにあたるZend_Gdata_App_FeedEntryParentクラスのパラメータ)のみが取得できます。
得られるパラメータはオフィシャルのドキュメントを参照ください。
また、Google Data APIでフィードとして使用されるAtomでは日付をRFC3339形式で表します。「YYYY:MM:DDTHH:MM:SSSZ」という表記です。このままでは扱いにくいので、一度strtotimeメソッドでPHPの扱えるタイムスタンプに変更してから、dateメソッドにて文字列として加工します。
// 最終更新日取得
$timestamp = strtotime($entry->updated);
$update = date('Y/m/d H:i:s', $timestamp);


