CakePHP 1.3.13 の変更点メモ
今回のCakePHP 1.3.13 リリースも、バグフィックス及びメンテナンスです。
但し、CakePHP1.3.12 で行われた修正が再度、修正されているものがあります。
個人的には、
Cake2で修正された theme 内の element のキャッシュが正しく読み込まれないバグのバックポートが欲しかったです。
http://cakephp.lighthouseapp.com/projects/42648/tickets/117-cakenocache-not-working-with-themes
(変更点は非常に少ないので、自前ですぐに修正できますが)
- CakePHP 1.3.13 released
- 変更差分(1.3.12 -> 1.3.13)
主な変更点
- 【チケット】【コミット】Amazon SES 等のSMTPサービスで、ファイル添付の際に付加されるヘッダーで拒否される問題を修正&メールアドレスのエイリアスの空白をトリムするよう変更
- 前半の変更についてはよく分からない。
- 【チケット】【コミット】 Model.field.1 記法で、3次元以上の深さをフォームヘルパーで使用すると、フォーム改竄対策のトークンが正しく生成されなくなり、 SecurityComponent::_validatePost()が偽になる問題を修正
- 個人的に嬉しい修正。3次元以上をするときは、今まで、SecurityComponent::disabledFields で回避していた。
- 【コミット】アソシエーションを含み、idが設定されていないデータを保存しようとした場合、 model::savaAll() の挙動を改善
- 【コミット】TranslateBehavior のクエリー最適化
- TranslateBehavior は使ったことがないのでよく分からない。
- 【チケット】【コミット】EmailComponent Message-ID header の処理を 1.3.11 以前へ巻き戻し
- 4e7c46e2-8a10-4066-a55e-33749b79b63c@example.com という素の String::uuid() では、SpamAssassin の RATWR8_MESSID というルール(ratware[スパム業者が利用している大量の電子メールを送信するためのソフトウェア]で生成されるMessage-IDの1パターン)に該当し、スパム判定の評価が高くなりやすかった
- ここは自信ない。ratware判定のフィルタ多すぎて、1.3.12 で修正したと思ったらやっぱり違っていた?
- 4e7c46e2-8a10-4066-a55e-33749b79b63c@example.com という素の String::uuid() では、SpamAssassin の RATWR8_MESSID というルール(ratware[スパム業者が利用している大量の電子メールを送信するためのソフトウェア]で生成されるMessage-IDの1パターン)に該当し、スパム判定の評価が高くなりやすかった
- 【コミット】Helper 内の Set::extract() の引数の順序を更新
- Set::extract() の冒頭で、文字列と配列の型をチェックして、順序が逆でも動作する。
- APIが本来想定している順序に合わせた模様
- 【チケット】【コミット】model::find() に join のキーが含まれる場合、プリフィックスを含めたテーブル名になるよう変更
- 手動で join する際に、自前で、$db->fullTableName() を読んで、プリフィックスを含めたテーブル名を指定しなければならなかったが、フレームワーク側で面倒を見てくれるようになった
- アソシエーションを定義しておけば、内部で、$db->fullTableName() は呼ばれていたが、手動で join する場合は考慮されていなかった
- 【コミット】FormHelper::error() のテキスト表示部分の判定が 「!== null」と厳格になった
- エラー表示をなし(タグはあるが、中身が空)を意図した「$this->Form->input('Contact.password', array('error' => ''));」を表示できるようになった
- 【チケット】【コミット】error handler を自前のものを用意し、DISABLE_DEFAULT_ERROR_HANDLING を定義したにも関わらず、Debugger が呼ばれてしまう。
- この機能はCakePHP2系では削除されている
- 【チケット】【コミット】Controller::paginate() の際、他のモデルの virtualFields と目的のフィールド名が同一の場合、意図しない挙動を起こすのを修正
- virtualFields をチェックする場合は、目的のモデルかどうかを判別するコードが追加された。
- 【チケット】【コミット】Change how floats are formatted in MySQL.
- decimal型での正確さが失われる問題
- CakePHPでは、decimal型がない(float型として扱う)ため。
- コードを見るに、float型だったら文字列化してDB にお任せか
- プログラムで小数点を扱う計算は、ハマるが多いので個人的には避けてる
- 【チケット】【コミット】Removing uses of db->fullTableName() when creating joins.
- 少し上の $db->fullTableName() の問題を behaviors/translate に適応
- 【チケット】【コミット】Set::format が配列の値が null の時をサポート
- isset($data[$i][$j]) はキーをチェックして、さらにその値も評価
- array_key_exists($j, $data[$i]) はキーをチェックするだけで、値にはノーチェック