「タグをフォローする」TimelineMakerを公開しました

タグをフォローするスタイルのアプリケーションを支援するCakephp向けのVendor、TimelineMakerを公開しました。

https://github.com/Tak0002/TimelineMaker

「タグをフォローする」方式は一部のニュースサイトでは既にありますが、ニュースサイト以外ではあまり見かけないですよね。

けど、他にもイベント告知サイトやショッピングサイトなど、「たくさんの人に見てもらいたい発信者」と「興味ある情報が欲しい」という関係が成り立つサービスならニュース以外でも使える可能性があると考えています。

screenshot

この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にて動作確認済です。