Jeans CMS 製作日記:
Deprecated: Function strftime() is deprecated in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/blog.php on line 333
2008年 07月の記事
restriction::restrictHtmlTags()メソッド [Security]
2008年7月27日
先日取り上げた複数ユーザで使用時のアイテムパースでの脆弱性の回避について、結論が出せた。
やはり、ホワイトリストで対処するのが一番確実なやり方なので、利用可能なタグをホワイトリストで用意し、それに該当しないものはずべてhtmlspecialchars()互換の方法で無効化することにした。
やはり、ホワイトリストで対処するのが一番確実なやり方なので、利用可能なタグをホワイトリストで用意し、それに該当しないものはずべてhtmlspecialchars()互換の方法で無効化することにした。
skinの下にtemplate、さらにその下にitem [General]
2008年7月27日
久しぶりに、Jeansのコードを見ている。プログラミングの手を止めて、頭の中でだけ試行錯誤していたときに気になっていたのが、テンプレートエンジンの動作について。
単一のスタティックメソッドを、スキン変数にもテンプレート変数にも対応できるように割り当てられるような仕様は良いのであるが、改めてJeansのコードを眺めてみると、スパゲッティ気味のところもあるような、無いような。
スキン変数の展開や、テンプレート変数の展開には、jitクラスを用いていて、それぞれjit:parse_skin()、jit::parse_tempale()メソッドを利用することになっている。加えて、jit::parse_item()というのもある。これらは結局、同じjitエンジン(self::compile()とself::parse_compiled())を解してコード実行にまわされるのであるが、同じエンジンを用いているにもかかわらず異なる実行内容になるのは、jeans_skinvarテーブルのうち、subtypeカラムの値が異なるものを拾って実行しているからである。
skinの下にtemplateがあり、さらにその下にitemがあるという3段構造になっている。
これをもっとフレキシブルに出来ないのであろうか?最初考えていた、テンプレートの概念をなくしてスキンを多層にするというのがそれなのであるが、もう少し考えてみる余地がありそうである。
単一のスタティックメソッドを、スキン変数にもテンプレート変数にも対応できるように割り当てられるような仕様は良いのであるが、改めてJeansのコードを眺めてみると、スパゲッティ気味のところもあるような、無いような。
スキン変数の展開や、テンプレート変数の展開には、jitクラスを用いていて、それぞれjit:parse_skin()、jit::parse_tempale()メソッドを利用することになっている。加えて、jit::parse_item()というのもある。これらは結局、同じjitエンジン(self::compile()とself::parse_compiled())を解してコード実行にまわされるのであるが、同じエンジンを用いているにもかかわらず異なる実行内容になるのは、jeans_skinvarテーブルのうち、subtypeカラムの値が異なるものを拾って実行しているからである。
skinの下にtemplateがあり、さらにその下にitemがあるという3段構造になっている。
これをもっとフレキシブルに出来ないのであろうか?最初考えていた、テンプレートの概念をなくしてスキンを多層にするというのがそれなのであるが、もう少し考えてみる余地がありそうである。
カテゴリーとタグの実装 [General]
2008年7月22日
Twitterでのカテゴリーとタグに関する議論からひぐちさんが導き出された結論が非常に明快で、まさに目から鱗状態。Jeansの仕様を考える上で、NucleusのMultipleCategoryをJeansのコアで実装することばかりに考えが行っており、頭が凝り固まっていたようだ。
そもそも、カテゴリー分けという概念では、multipleの状態は少々おかしいというか、過大解釈の面があるのかもしれない。1アイテム←→1カテゴリーが、基本的な考え方。multipleに指定したいときは、タグを使うと考えたほうが、スッキリする。
そもそも、カテゴリー分けという概念では、multipleの状態は少々おかしいというか、過大解釈の面があるのかもしれない。1アイテム←→1カテゴリーが、基本的な考え方。multipleに指定したいときは、タグを使うと考えたほうが、スッキリする。