というわけで、急にですが始めました。

http://ex.bucyou.net/op36/

技術系のアドベントカレンダーです!チュートリアル形式24回をやりたいと思っていましたが、卒論まわりでそれどころではないので最初の数回の除けばTIPS形式で24回乗り切ろうかと思います!
書きたい!!という意欲があればぜひともご連絡下さい。

で、OpenPNE3の情報を追っている人はご存知のこととは思いますが、人不足の状態が続いております。
OpenPNE 3.6.0 のリリースを 2011 年 1 月末以降に延期します

バグ修正周りを見直すだけでなく、テストなどに多くの時間を費やしていています。しかし、実際にバグ修正が出来る人がなかなかいない問題で上手くプロジェクトが進んでいません。修正したりパッチを作ってくれる人は極々限られてしまっているわけです。

この原因って、ユーザが上手く育てられていないのも1つあるんじゃないかな。これが正しい解決法になるかというのは、わかりませんが、まずはアウトプットすることにします。

うぃーん。

OpenPNE3は国際化に対応できる事を売りにしているわけですが、
まだまだです。
その中の取り組みとして、Timezoneに対応させる必要があるわけですが、
設定項目があるものの機能していないことに気づいた人は多いかもしれません。

今回、海外に行く機会もあるので折角なので対応させたよ。

データのTimezone対応としては、以下の手法を使いたいと思います。
http://kriswallsmith.net/post/136226720/doctrine-timestamps-and-user-timezones

独自に、Doctrine_Recordを継承したクラスを作成し、 _set() および _get() の挙動を変えたものを利用するようにする手法です。

OpenPNE3.6beta4-dev 時点では、 opDoctrineRecord を利用しているのでこれをいじればよさそうです。

ユーザ側の設定変更→言語とタイムゾーンの設定から変更することのできるタイムゾーン情報は
Member::getConfig(“time_zone”); により取得ができます。
この画面で保存される値は、PHPでサポートされているタイムゾーンによるものなので、date_default_timezone_set() に渡してしまっても問題なさそうです。

あとは、利用時にタイムゾーンを適切に管理したいところですが、これは symfony の sfUser の言語周りの挙動と同じように
してみようと思います。これを opSecurityUser で行ないます。

そんな感じで出来上がったのが、僕が本線にはまだいれていないものの、アグレッシブな改善を行なっている
「iroiro-kaizen」ブランチに行った以下の2つの変更です。
http://github.com/kawahara/OpenPNE3/commit/cbf84f27036c7f40dccd97ccb4efb69da96dbf1c

http://github.com/kawahara/OpenPNE3/commit/486e5bded4501e7f3a056902e3d44de6cc64d267

*ためしに、運営しているSNSで導入してなんとか動作していますが、無保証・無テスト品です。
*2つのコミットには順序がありますので、ご注意下さい。

サマータイムとかも自動的になんとかしてくれるっぽいのか。こりゃ面白い。

ちなみに、「iroiro-kaizen」ブランチでは、未完成かつ未テストなものの、
OpenPNEの為になるコミットを継続的に行なっていく予定です。
実はメール周りの国際化や、メールの設定周りなどを脳みそから漏らしていますので
本線に入るまで我慢出来ない人は、参考にしてみてもいいかもしれません。
(もちろん無保証です。)

あと、しばらく(他のことが忙しくなり)本線で戦うことができなくなりそうなので
勝手に本線にマージしてしまっても問題ないです。

http://github.com/kawahara/opCsvPlugin

主にモスバーガー平井店を使って作っていた、opCsvPluginがオープンソース状態になりました。
このプラグインはSNSのメンバー情報のCSVのImport/Export(2系互換+)を行うものです。

要望が多くて、無くて悲しんでいる人がいるというので(さらに言えば自分が欲しかったので)作りました。

そんなわけで。pull requestは大歓迎で開発を進めていこうと思います。

現状Importが中途半端にできる状態です。
おまけに、既知の不具合(というか未実装)がいっぱい有るので、ちゃんと使いたいという方は
リリースをお待ちください。8月〜9月中には出すよ。

さらに、僕にビールを奢ったりすると、よりリリースが早くなるかもしれないですよ。(趣味プラグインなので)