スタッフブログ
NetCommons2のmaple/nccore/db/DbObjectAdodbをみてたら
StartTrans(), FailTrans(), CompleteTrans()なんてメソッドがあって、トランザクションに対応してそうな雰囲気だが、これは罠。
NetCommon2で使ってるのはAdodbのmysqlドライバで、このmysqlドライバが残念ながらトランザクションに対応してない。
なので、Innodb使っててトランザクション処理したいときは自前でexecute('BEGIN')とかするしかないようだ。
NetCommons2はSmartyのdefault_modifiersを利用して自動で全変数にエスケープかかるようになってるが、これが罠。
このdefault_modifiesって表示だけでなく、変数を使うところ全てで適用されるので、下記の様なコードで問題になる。
<{foreach from=$arrayList item=item}>
<{$item}>
<{/foreach}>
from=$arrayList で$arrayListの中身をSmarty::_run_mod_handlerでエスケープかけようします。
_rum_mod_handlerで、配列の中身すべてにdefault_modifiersで指定されたmodifireがかかります。
NetCommons2の場合、escapeです。さらに<{$item}>を表示するときにもdefault_modifiersで指定されたescapeがかかります。
結果、二重にエスケープされるわけです。
これを避けるにはsmarty:nodefaultsを利用してdefault_modifiersが適用されないように、下記の様なコードにします。
<{foreach from=$arrayList|smarty:nodefaults item=item}>
<{$item}>
<{/foreach}>
Smartyのバグ ~default_modifiers~ : アシアルブログも参考にしたんですが、
<{if isset($foo)}>
みたいなときもエスケープかけようとするので、これも下記みたいにしないとダメなようです。
<{if isset($foo|smarty:nodefaults)}>
最近注目しているCMS「NetCommons」のセミナーでNetCommonsの次期バージョン「NetCommons3」に触れて遊んでみようというテーマの勉強会があったので参加してきました。
ただ私は勉強会中にひとりで勝手にNetCommons3をCakePHP3.0で動かせるようにならんかチャレンジしてました(^^;
というのもNetCommons3はCakePHP2.0ベースで開発されてるんですが、CakePHPは既に3.0の開発がすすんでおり、NetCommons3のリリース時期やCakePHP3.0のリリース時期なんかを考えると、できるだけ早めにCakePHP3.0へ乗り換えをした方がよさそうだと感じたからです。
事前予想としては「あんがいすんなりいくんじゃね?」とか思ってたんですが、CakePHP3.0のコードを探すとか、App側のコードがみつからなくてカンでNetCommons3のAppコードいじってなんとかしようとしたりしてどうにもならなかったりで、最終的に動かすことができませんでした…orz
今後のために各コードの所在へのリンクはっときます。
また時間をみつけて、NetCommons3+CakePHP3.0での動作にチャレンジしたいと思います。
「NetCommons」は国立情報学研究所で開発されてる国産CMSです。 グループウェア的にも使えるシステムに仕上がっていて私も注目してます。
21日の「NetCommonsユーザカンファレンス」では、東北の震災に対して どのようにNetCommonsが学校で活用されたのかの事例や 現在開発が進められている次期NetCommons「NetCommons3」についても 話しがありました。
「NetCommons3」はCakephpという人気のPHPフレームワークをベースに開発を しているそうで、現行バージョンよりもモジュールが開発しやすくなるだろうなぁと 思っています。 「NetCommons3」の正式リリース予定は2015年3月とまだまだ先ですが、 楽しみです。
少しお手伝いでブースのお留守番しながらたくさんの方にお話を聞くことができて良かったです。
Go-Coworkingもデモ展示。施設MAPに興味もたれた方、結構いましたねぇ。
午後は2会場にわかれてセッションがあったのですがたくさんの方がセッションに耳をかたむけてました。
ブースで一緒に留守番してくれた「コケロミン」かわいいですよ〜