Coppermine Photo Album

有馬の社長から要請があって、サイトのトップに写真ギャラリーみたいなのを付けたいと言われた。とりあえず適当なアルバムスクリプトを持ってきて、RSS配信してサイト側で読めばいいかー、とか負荷を全く考えていない適当なことやることにした*1ので、手頃なものを探してたところCoppermineを見付けた。
ざっと見たところ、

  • まともなユーザ管理
  • 複数アルバム作成
  • アルバム毎のカテゴリ分け
  • 写真毎のキーワード指定
  • コメント機能
  • スライドショウ
  • 言語化対応
  • 検索機能
  • プラグイン機能

とか良さげやったんで使用することにした。

上のサイトを参考に、とりあえず入れてみたところUTF-8で日本語されたんで問題ないかなぁ、と思いきや日本語でタイトル打ったりすると化ける…。多言語化微妙。やむなくlanguageファイルをEUC-JPにして、設定のエンコーディングEUC-JPに切り替えたら上手くいった。
RSS配信機能はないので、親切な人が作ったものを適当に使う。

中の記述中のUTF-8EUC-JPに適宜置換して、ついでにアルバム/カテゴリ別表示も超適当に付ける。

$result = mysql_query("SELECT pid,ctime,title,keywords,filepath,filename,caption,filesize, pwidth,pheight FROM {$CONFIG['TABLE_PICTURES']} ORDER BY pid DESC LIMIT 0,$upperlimit");

$aid=$HTTP_GET_VARS['a'];
$cid=$HTTP_GET_VARS['c'];
$where = "";
if(!empty($aid)){
  $where = " WHERE aid = $aid";
}elseif(!empty($cid)){
  $result = mysql_query("SELECT aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE category=$cid");
  $aids = array();
  while (list($temp) = mysql_fetch_row($result)) {
    $aids[] = $temp;
  }
  $where = " WHERE aid = ".implode($aids, " or aid = ");
}

$result = mysql_query("SELECT pid,ctime,title,keywords,filepath,filename,caption,filesize, pwidth,pheight FROM {$CONFIG['TABLE_PICTURES']} $where ORDER BY pid DESC LIMIT 0,$upperlimit");

にした。呼出し時にa=1とかc=2とかアルバムやカテゴリのID指定でそれだけ表示できる。

あとはなんか適当に、PEARXML_RSSを使った簡易RSS表示スクリプトを改造して、コレ専用に仕立てて終わり。とりあえずやってみて、と言われただけなんで、こんなもんであとは様子見。

*1:つっても今回は同一サーバ内でやるから、負荷の増加はそれ程でもない