zz log

zaininnari Blog

CakePHP 1.2.7 のリリースとその変更点


CakePHP 1.2.7 released

Since the release of CakePHP 1.2.6 in late January 2010, the development team have closed 36 tickets in 64 commits. This includes a recent minor security concern within the test suite. For those wishing to apply just the minor security patch to an existing installation, we have provided a patch [1] to resolve this issue. This concern is only present in sites that operate with the debug setting enabled, and does not affect deployments using a debug setting of zero.


  • セキュリティ関連の修正がメイン
  • 注意点
    • 最初の部分は省略しています
    • コミットの古い(下にあるもの)から作業しているため、途中で疲れています。
    • 肝心の下にあるものの数点は、電子の海に消えました。。。
      • はてダのバックアップの設定をしてあったのに、容量不足という不運

Commit: 3af22eec91d4e14d2c31f3bdee36b54e237b8c99

Adding tests from 'tfs' fixes inconsistencies in extracting elements with one path selector. Fixes #555

Commit: 629740d59631857996488a5aa420fbe629769450

Fixing discrepancy between how belongsTo and hasOne assocations are treated in relation to their fields being added into the queryData. hasOne and belongsTo associations now behave the same. Fixes #379

  • 影響:Containable behave

Commit: 46c4cab95bd10855ed607d983bd39d5a3e5f9fe4

Fixing Form::dateTime() for GET forms. Tests added. Fixes #522

Commit: 7e277e8239fc643f65c333a8076434a946ce5bbf

Restored ability to link PHP files for CSS and JS from view helpers.

  • PHPファイルも使えるようになった。

Commit: f56e24c64166d2c6e394265fb91d11de5ba52b15

Using Inflector::slug in Object::_persist() to avoid parse errors o malformed variable names, closes #365

  • 影響:なし
  • 変数を Inflector::slug を使って、パースできるようにする

Commit: 289a4e9085ed5b2de0ad937b0ee48111c8a76e2b

Moniro update to file construction.

Commit: 95c1ab3596d0e60964c0c6c99f0e033cb51dbd40

Fixing failing tests in SessionHelper caused by changes in CakeSession. Removing SessionHelper::id() as all it did was call the parent method.

Commit: 39a4566ddc4f5a366ab2526e4275cfc4aa3728e0

Fixing AclNode::node() so that node expressions that could match deeper elements are contained to their parent elements. Test added.

Commit: 5f3f66215aff2af90f06dee407a36adcf8f65f97

Removing return statements from File::__construct.

  • 影響なし
  • リファクタ

Commit: f846005dfd5dd2ec36357515346193c476a32176

Removed unnecessary override of Session::id() in SessionHelper.

  • 影響なし
  • そのまんま

Commit: 3040c6f586436df09231191b33c5ec41ac8cd683

Moving tests around in set test.

  • 影響なし
  • そのまんま

Commit: 35446a42a92907e767442a433384472c40480763

Making filtering of extracted arrays remember their key. This fixes attribute selectors followed by parent selectors returning seemingly random results. Fixes #502

Commit: b559be58221537b220f4bfd1a127e4914e22a349

Moving xml_parser_free() so parser resources are freed immediately after they are used. Helps reduce memory consumption in Xml class. Refs #505

Commit: abefca759a0305b2d945b68aff312a067fa6390b

Fix $host not being defined on SessionHelper.

  • 影響:SessionHelper
  • そのまんま

Commit: ec3f4b8d34005d533d5d0f6d4003e65971a3e394

Fixes #53, ordering of XML::toArray() operations.

  • 影響:XML::toArray() で結果配列の順序に意味を持つ場合
  • 自信なし
  • テストはあるけど、ソースはコメントアウトしただけで、よく把握できてない。

Commit: 9f5949ab5273048c76bf411d7c0057ba217d6132

Fix for Session Component to use CakeSession started() checks. Refs #332.

Commit: 9740029e9e2db239c54f8db53d69046e04ef0dbe

Fixes #332.

Commit: d95e482894927f8f9dbb80959d36a87d57467ed3

Refs #332. Beginning fix for multiple session starts.

  • 影響:SessionComponent
  • クッキーが多重に設定されるのを修正

Commit: 4f4d3f9ffe186ed5fde8c1b800903630e66b6113

Fixing extraction of non-zero arrays with only one element and attribute selectors. Fixes #475

  • 影響:Set::extract()
  • 自信なし
  • パス

Commit: cbb65ca85f514df59486b4ac02517d78b9c7e5a5

Moving failing test into new method for non-zero array extraction.

  • 影響:Set::extract()

  • リファクタ

Commit: e8e520d6f2114b2e954299ca95e7360f4d191535

Added test case for a bug in Set::extract

  • 影響:Set::extract()

  • バグのテストの追加

Commit: 9d3f2fb4a757e0cccbb590a5062dc4a29dff13e4

Moving Non-Zero tests for Set::extract() into a separate method.

影響:Set::extract() (但し、対象はテスト)

  • リファクタ

Commit: 6c8ce984aad2fa830da219cd2665c378cecec340

Adding import for String to ensure that String has been loaded when Security component is used without making any database connections. Fixes #482

  • 影響:security コンポーネントだけを呼ぶ場合
  • 依存する String クラスを読み込んでいなかった。

Commit: f65cb31cbea30b551369689990a1f0d78af0cc84

Updating documentation for Router::normalize(). Refs #486

  • 影響:なし
  • コメントの修正

Commit: c3aec39d75a944c2105adbaba286049e03311f02

Chaging array_push call for array_merge, as the first one would produce worng nested arrays in MediaView. closes #391

  • 影響:IE
  • 自信なし
  • array_push を array_merge に代えたのは理解できるけど、array_push は第1引数の配列に参照が付いているため、返値は気にする必要はないけど、 array_merge の結果は、返値で受け取らないと、期待する変化はないはず。array_merge の関数を呼ぶだけ損な気がする。

Commit: 28cb57a92c54a223fed4aacc738db5ccc8bc71c3

Fixing bug in Model::escapeField() where it would return the wrong string id the datasource's name method returs the unmodified string. Tests added. Closes #473

  • 影響:Model::escapeField()
  • 自信なし
  • 正しく「.」をつけて返さない場合があった。

Commit: bc990f41e3d29db70cf5c181a11668c8e63f4bdf

Prevent sql error for uuids if id is specified as null

  • 影響:sql
  • 自信なし
  • Column %s specified twice」(指定したカラムが2度指定されています。)エラーがでるらしい

Commit: 01a5738f3c7f8553d8203eb565c08beba6e79ca0

Effectively reverting changes made in [190066fd51c222de91989aec97b0042d7bcda7c9] which caused conditions using a falsey values to be removed.

  • 影響:sql
  • モデルで、'foreignKey' を指定しない意図で指定した値が、配列の参照時にキャストされ、$conditions がセットされてしまう。
    • empty関数で 'foreignKey' をチェックするようになった。

Commit: 661fcd32ab56b3c288c922c570ea141461d794ba

Fixing failing tests in PostgreSQL cause by invalid datatype comparisons and missing id fields.

Commit: ea64588a814b09565b82c428845f7a096814c327

Adding tests from 'Stephen Cuppert' to test incorrectly generate DELETE queries for habtm join tables that do not have a primary key when using PostgreSQL. Updating DboSource::_matchRecords() to only query the table if the supplied conditions are actually multi-table conditions. Fixes #459

  • 影響:PostgreSQL hasAndBelongsToMany に関連した削除
  • 自信なし
  • primary key を持っていないテーブルを対象とした削除をおこなった場合、そのテーブルのデータが削除されない

Commit: 190066fd51c222de91989aec97b0042d7bcda7c9

Adding array_filter() to remove empty conditions that can be caused by array casting an empty string.

  • 影響:hasAndBelongsToMany で'unique' が true (デフォルト)で  ’conditions’ に、 配列にキャストした際、1つの要素を持つ配列に変換される値を指定し、それが空文字や false 、0になる場合
  • 自信なし
  • 配列の値に、空文字や false 、0等の場合、削除されるようにした。
    • ’conditions’ の値をマージする際に、 (array) で配列にキャストしてマージ(array_merge)する際に、 ’’ -> array(1), false -> array(false) と変換され、マージすると、それらも引き継がれてしまう。
      • array_merge に array_filter(array_merge($arr1, $arr2)) と 第2引数なしの array_filter を被せるようにした。

Commit: daf02cad61a0979fe6cf85b0aa4e5f2d68a03c2b

Fixing CakeSchema index comparison that was causing failures in postgres tests.

  • 影響:PHP4 & PostgreSQL (但し、対象はテスト)

Commit: 3ab687043e57130cbee76ead4ad7865478da718b

Updating DboPostgres test to reflect changes in test suite.

  • 影響:なし

Commit: 8d58b40642c182afe307d00debf44a1dbd8a3c62

Fixing issue in Containable where if bindModel was used to add / change a binding not permanently, Containable was making the change permanent

  • 影響:Containable を使っている
    • モデルが持つバインド用のテンポラリ(__backAssociation)をチェックするようになった。

Commit: 64c627a35241cf9766a035fc02cdd78a908755ef

Adding checks to force limit to always be a positive integer. Fixes potential out of bounds type queries with paginate(). Fixes #418

  • 影響:controller::paginate()
  • $options['limit'] が 正の整数のみ受け付けるように修正
    • $options['limit'] は、まず、int にキャストされ、その後、1未満の場合は、1にするようになった

Commit: af317a107bdb179bce31323d0d28af2c333ebc12

Fixing issues in Set::combine() when data or paths used result in empty datasets. Tests added. Fixes #414

  • 影響:Set::combine()
  • 内部変数 $keys $values が空の場合、エラーが発生
    • 内部変数 $keys $values が空の場合、Set::combine() は 空の配列を返す。

Commit: 348fe6f57463aaa20d77984254f493d9ca4fe9f1

Expanding documentation for FormHelper::submit() Fixes #390

  • 影響:なし
  • FormHelper::submit() のオプションの説明を追加

Commit: 763aa524b95f666d1a20d7e58b896f39d830dbd0

Fixing recursive directory creation when nested create() calls fail. Fixes #347

  • 影響:Folder::create() を使っている
  •  Folder::create() が成功しても false を返していた
    • ture を返すようになった

Commit: f4c670e5be6bf6a9599d394669999fcadd01e4b1

Fixing lack of space in meta tags lacking a link attribute. Fixes #371

  • 影響:HtmlHelper::meta でコードを生成している(xhtml
  • メタタグの「/>」の前にスペースがなかった。「content="enter any meta keyword here"/>」 -> 「content="enter any meta keyword here" />」

Commit: ab688b88f408132a272b71b1c93dbb8ec42fcbad

Adding test to check that postfix and prefix options don't go into inner objects. Tests added, fixes #348

  • 影響:JavascriptHelper で JSのオブジェクトの生成をしている
  • オプションの postfix と prefix の初期化が不十分で、内部のオブジェクトに正しく伝わっていなかった。
    •  オプションの postfix と prefix の初期化を追加

Commit: 63f7900ba1647e2111b85d9445d3973f746f93f5

Checking if the last query returned a error, tests added. Fixes #72.

  • 影響:mssql で dbo を使っている
  • 自信なし
  • クエリーのエラーとデータベースのエラーを分けていないために、正常なクエリーまでもエラーを返すようになる。
    • クエリーのエラーとデータベースのエラーを分けるコードを追加

Commit: fc499ac48f9caa7e99d656f64c25b64d13348f98

Reversing order of short cut checks. Fixes issues in PHP 5.1.x. Fixes #351

  • 影響:PHP5.1 系で dbo を使っている
  • 自信なし
  •  PHP5.1 系で dbo を使っていると、「Notice (8): Object of class stdClass could not be converted to int 」という Notice エラーが出る模様
  • 以下のチェックを後回しにすると、解消したらしい。
if ($data == '*') {
&nbsp;return '*';


Commit: 2cf294a749144b2cca2d06bab5db24abcb20f3c8
Fixing typo in Finland for sv-fi language. Fixes #308

癒された(*・ω・) < Findland!!


Commit: d5ea6b7c2a99bbda503f2247702aa4a6953dcf1b

Flushing the CR after a model is baked, tests added. Refs #310

  • 影響:bake
  • モデル作成後に、classregistry を初期化するようになった
    • モデルを先に作成すると、アソシエーションの情報が controller と view に正しく伝わっておらず、再生成する必要があった。


Making built-in Canadian postal code validation accept postal
codes with no spaces. Fixes #289

  • 影響:カナダの郵便番号を validation
  • カナダの郵便番号の validation が緩くなった
// 変更前 : 'L4J8D6' (FAIL), 'L4J 8D6' (OK)
$_this->regex  = '/\\A\\b[ABCEGHJKLMNPRSTVXY][0-9][A-Z] [0-9][A-Z][0-9]\\b\\z/i';
// 変更後 : 'L4J8D6' (OK),   'L4J 8D6' (OK)
$_this->regex  = '/\\A\\b[ABCEGHJKLMNPRSTVXY][0-9][A-Z] ?[0-9][A-Z][0-9]\\b\\z/i';


Another fix for array_values() throwing a warning when using
Tree Behavior under certain situations.


Fix array_values() warning when using Tree Behavior under
certain situations.

  • 影響:Tree Behavior
  • array array_values ( array $input ) の引数に false を渡す可能性があった
    • 一旦別の変数に退避して、値をチェックするようになった


Fixes #288. TextHelper truncation not playing nice with
html in ending.

  • 影響:TextHelper::truncation で $ending に html タグを設定している
  • $ending に含まれる html タグまで、省略する文字数に含まれていた。
    • strip_tags 関数により、すべての html タグを削除した状態で文字数をカウントするようになった。
  • その他 :マルチバイトに対応しているなぁ、と思ったら、1ヶ所だけ、規程の文字数と与えられた文字列の比較の所で、strlen が使われていた。$ending (「...」の文字を指定する所)にマルチバイトを与えると、予想以上に、出力する文字が短くなる。と思うのだけど、ここ1ヶ所だけのため、仕様かな、と思える。
if (mb_strlen($text) <= $length) {
	return $text;
} else {
	$truncate = mb_substr($text, 0, $length - strlen($ending));