2010年12月26日日曜日

CodeIgniterでGoogleContactsAPIのテスト(8)

さてGoogleContactAPIを叩いての連絡先データをいじいじするテストですが今回で最終回です。連絡先の新規登録、修正及び削除、グループの新規登録、修正及び削除が出来るようになっています。未実装なのは連絡先のデータにグループデータを含める部分ということになりますね。今回の記事では連絡先データの中でのグループデータについて一覧取得、登録そして修正時のxmlデータ扱い方についてご紹介します。

これまでのデータの扱い方が理解できていれば特に問題ない範疇だと思います。

まずは一覧取得時のデータ取得方法です。

$group_data = $this->gdata_groups_model->getGroupsElement();
foreach ($xml->groupMembershipInfo as $g) {
 foreach ($group_data as $key => $val) {
  if ($key == $g['href']) {
   $obj->groups[] = $val;
  }
 }
}

feedデータにはhrefとしてグループのidしか含まれていないのでgroupデータを扱うモデルからElementデータを配列で取得してグループ名を代入していますがやり方としてはおわかり頂けるかと思います。

続いては登録時のxml要素追加方法です。

// add group elements
$groups = $this->input->post('groups', TRUE);
foreach ($groups as $g) {
 $group = $doc->createElement('gContact:groupMembershipInfo');
 $group->setAttribute('deleted','false');
 $group->setAttribute('href',$g);

 $entry->appendChild($group);
}

グループデータはwebサイトデータと同様にgContactに定義されているのでそれで指定してあげます。deleted要素は必要ないような気もしますがデベロッパーガイドに従い加えてあります。

最後に修正時のxml要素追加方法ですが登録時とちょっとだけ違います。

// add group elements
$groups = $this->input->post('groups', TRUE);
foreach ($groups as $g) {
 $group = $doc->createElement('groupMembershipInfo');
 $group->setAttribute('xmlns','http://schemas.google.com/contact/2008');
 $group->setAttribute('deleted','false');
 $group->setAttribute('href',$g);

 $entry->appendChild($group);
}

違いはxmlns要素が追加になっているだけですのでお約束みたいなものでしょうか。
この要素がないとエラーが帰ってしまいますのでご注意ください。

さてCodeIgniterでGoogleContactsAPIを叩きながらwebアプリから連絡先データを操作することが出来るようになりました。まだ連絡先データには様々なデータが扱えるようになっていますがリファレンスガイド等を見ればおそらく操作できるのではないかと思います。

ZendFrameworkを利用したので本当に簡単にデータ操作が出来ました。フレームワークの中でフレームワークを使うような愚はどうかとも思いますがまあ軽量フレームワークのCodeIgniterの利点を活かしつつこのテストを活用したwebアプリをこれから製作する予定です。

しかし連絡先だけでなくカレンダーのデータ操作も実や予定していまして次のシリーズは「CodeIgniterでGoogleCalenderAPIをテスト」シリーズが始まります。(笑

0 件のコメント:

コメントを投稿