「タグをフォローする」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にて動作確認済です。

bootstrap-wysiwygをPHPで利用するサンプルを作ってみました。

Bootstrap風のjQueryリッチテキストエディタ、bootstrap-wysiwygで編集されたデータをPHPで受け取って、処理するサンプルをgithubに作ってみました。

https://github.com/Tak0002/bootstrap-wysiwyg-php

screenshot

作ったと言っても他の人が作ったオープンソースソフトウェアの詰め合わせでしかないですが笑

特徴は

  • jQuey側でbase64形式に変換して画像を転送するため、画像のアップロードがスムーズです。
  • PHP側で画像を外部ファイルに分離しています。
  • HTMLPurifierを利用することで適切なXSS対策がされています。

リッチテキストエディタって便利でカッコいいんですが、画像のアップロードに苦戦することが多いのとXSS対策で厄介です。

例えば

<script>タグなんてのはもちろん問題ですが他にも

<a href=”javascript:alert(‘test’)”>や<img onmouseover=”alert(‘test’);”>とかこんなのでもjavascript動いてしまいます。

こういうのを通さずに適切なタグだけ通すのは難しいです。

 

これらの問題を解決するために作ったのが今回のサンプルです。

詳細はindex.htmlのエディタとpost.phpの内容を見てください。

 

WordPress始めました

初めまして、Wepiaです。

大学でウェブサービスとかの勉強をしてます。

今まで、あまり情報発信してこなかったのですが、自分の思いついたことや、考えたことを情報発信していくことで、フィードバックが受けれたりするかなって思ってここにメモ書きをしていこうと思います。

興味関心分野は日によって変わるような感じで、何が専門って聞かれてもよくわからんですし、何も詳しくないのですが・・・w

・ウェブサービスのプランニング

・オンラインストレージと情報整理

・ソーシャルメディアの社会的影響

・JavascriptやPHPなどによるプログラミング

・ウェブサービスのスタートアップ

・ウェブデザイン

・社会イノベーション

などです。

簡単にまとめると「ウェブが社会に与える影響」的な感じです。

画面の中を動かすだけじゃなくて、もっと人生を動かすようなものにしていけたらなーって思ってます。