タグをフォローするスタイルのアプリケーションを支援するCakephp向けのVendor、TimelineMakerを公開しました。
https://github.com/Tak0002/TimelineMaker
「タグをフォローする」方式は一部のニュースサイトでは既にありますが、ニュースサイト以外ではあまり見かけないですよね。
けど、他にもイベント告知サイトやショッピングサイトなど、「たくさんの人に見てもらいたい発信者」と「興味ある情報が欲しい」という関係が成り立つサービスならニュース以外でも使える可能性があると考えています。
このTimelineMakerはそんなウェブサービスを作りたい人向けのアプリケーションです。
具体的に何が出来るかと言うと、ユーザーがフォローしているタグに関連付けられたデータを簡単に取得することが出来ます。
想定している構造
CakephpのhasAndBelongsToMany構造でタグが管理されている場合を想定しています。
データベースに
- ユーザーを管理するUser
- イベントを管理するEvent
- タグ名を管理するTag
という3つのテーブルが存在し、
- イベントのタグ付けを管理するEventsTag
- ユーザーがフォローしているタグを管理するUsersTag
の2つのhasAndBelongsToMany構造の中間テーブルが存在することを想定しています。
使い方
vendorに入れて、controlerから呼び出します。
例:
$this->Auth->user()から取得できる配列にはユーザーIDを含む[‘id’]キーが存在することを想定しています。
$timelineMaker = new TimelineMaker($this->Auth->user()); $events = $timelineMaker->getEvents(1, 'Event.id desc', 10, false); $recommends = $timelineMaker->getEvents(1, 'Event.participant desc',3 ,false);
実際に使うときはソースコードを見てみてください。
getEventsメソッドの引数はこんな感じになってます↓
/**
* イベントの詳細を返します。
* @param string $page ページ数の指定
* @param string $order ソート順
* @param int $limit 一回に取得する件数
* @param bool $allowPast 過去のデータを含めるか
* @return array 返り値はcakephpのfindメソッドと同じ挙動です。
*/
ファイルには2つのクラスが入ってますが、これはEventListMakerのメソッドを他から呼び出して使ってた名残ですので、あまり気にしないでください笑
PHP5.5とcake2.4にて動作確認済です。