baserCMSに、セキュリティ上の脆弱性があることが発表されました。
ご利用中の方はアップデートされましたか?
■BaserCMSにXSSなど複数の脆弱性、アップデートを呼びかけ(JVN)|ScanNetSecurity
■JVN09789751 / JVN16617002 に対応するバージョン別改善ファイル一覧|改善ファイル|baserCMS - 国産オープンソース!コーポレートサイトにちょうどいいCMS
作業自体はそれ程大掛かりな手間が掛かるワケじゃないので、情報に気付いた方は早目のアップデートを行いましょう!(`・ω・´)
・・・というワケで、今回は「baserCMSの秘めたる力を探る旅:第1弾 (仮題)」。
「TextExヘルパーを覗いてみよう!」です。
そもそもTextExヘルパーとは?
通常のデータをテキスト(Text)表示する方法を、拡張(Extend)したものです。
extension なのか extend なのか expand なのか expansion なのかはこの際、そっと隣の席に置いておく事にします。
とにかく、純正のCakePHPの Textヘルパーを更に拡張し、表示(ビュー)側の処理の利便性を高くしたヘルパーです。です。
■BASERCMS/app/views/helpers/text_ex.php
最初っから事細かに1つずつ見て行くのはアレなので、ここでは幾つかを紹介してみます。
arrayValue($key, $array, $noValue = '')
配列とキーを指定すると、その値を取ってくれる関数です。
使い方はこんな感じ。
arrayValue('取りたいキー', 配列を指定, '値がない時の表示')
例えばこんな風に使えます。
<?php echo $textEx->arrayValue('version', $baser->siteConfig); ?>
この関数を使う良いところ
仮に指定したキーが定義されていない場合でも、エラー表示が出ないです。
値がない場合の表示を指定出来る点。
if文での存在チェックが不要になる点。
echo $baser->siteConfig['version'];
echo $baser->siteConfig['hoge'];
echo $textEx->arrayValue('hoge', $baser->siteConfig, '値がないよ');
noValue($value, $noValue)
指定した値に対してチェックを掛けて、存在する時はその値を、無い時は指定の表示が出来る関数です。
使い方はこんな感じ。
noValue($baser->siteConfig['hoge'], '値がない時の表示')
例えばこんな風に使えます。
echo $textEx->noValue($textEx->arrayValue('hoge', $baser->siteConfig), '無し');
echo $textEx->noValue($textEx->arrayValue('version', $baser->siteConfig), '不明');
この関数を使う良いところ
値がない場合の表示を指定出来る点。
if文での存在チェックが不要になる点。
ちょっち変えてみたところ
この関数は、第2引数の指定が必ず必要な関数なので、その点を省略出来るようにして使っても良いですね。
function noValue($value, $noValue)
↓↓↓
function noValue($value, $noValue = '')
prefList($empty = '都道府県')
都道府県のリストを出力します。
例えばこんな風にするだけで、都道府県選択リストを作る事が出来ます。
<?php echo $formEx->input('Model.key', array('type' => 'select', 'options' => $textEx->preflist())); ?>
この関数を使う良いところ
都道府県リストはtextExヘルパー内で定義されているので、並び替えも自在。
使いたい県名だけのリストに変更する事も可能です。
zipFormat($value)
郵便番号にハイフンとマークを付けて出力してくれます。
例えばこんな風にするだけで、郵便番号表記が簡単に出来上がります。
<?php echo echo $textEx->zipFormat(8100001); ?>
この関数を使う良いところ
数字を簡単に郵便番号付きで表現出来る点。
あとがき
ここで紹介したのは幾つかなのですが、他にも便利関数がたくさん揃ってます。
ビュー(ctp のテンプレート)側を調整する際には、ヘルパーを有効に使ってラクしたいですね!