mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Always update updated/modified columns when a fieldList is used.
When a fieldList is used, and updated is not in the fieldList, the column should continue to be updated even if the column has a value from the user. Because the field is not in the fieldList, we must assume that the intent is for the field to update automatically, as it would have if the updated column was not present in the save data. Refs #7076
This commit is contained in:
parent
0dbabce792
commit
60d7bbaa10
2 changed files with 32 additions and 3 deletions
|
@ -1835,7 +1835,12 @@ class Model extends Object implements CakeEventListener {
|
||||||
$now = time();
|
$now = time();
|
||||||
|
|
||||||
foreach ($dateFields as $updateCol) {
|
foreach ($dateFields as $updateCol) {
|
||||||
if (in_array($updateCol, $fields) || !$this->hasField($updateCol)) {
|
$fieldHasValue = in_array($updateCol, $fields);
|
||||||
|
$fieldInWhitelist = (
|
||||||
|
count($this->whitelist) === 0 ||
|
||||||
|
in_array($updateCol, $this->whitelist)
|
||||||
|
);
|
||||||
|
if (($fieldHasValue && $fieldInWhitelist) || !$this->hasField($updateCol)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -387,6 +387,30 @@ class ModelWriteTest extends BaseModelTest {
|
||||||
$this->assertEquals($whitelist, $model->whitelist);
|
$this->assertEquals($whitelist, $model->whitelist);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that save() with a fieldList continues to write
|
||||||
|
* updated in all cases.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testSaveUpdatedWithFieldList() {
|
||||||
|
$this->loadFixtures('Post', 'Author');
|
||||||
|
$model = ClassRegistry::init('Post');
|
||||||
|
$original = $model->find('first', ['conditions' => ['Post.id' => 1]]);
|
||||||
|
$data = array(
|
||||||
|
'Post' => array(
|
||||||
|
'id' => 1,
|
||||||
|
'title' => 'New title',
|
||||||
|
'updated' => '1999-01-01 00:00:00',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$model->save($data, array(
|
||||||
|
'fieldList' => ['title']
|
||||||
|
));
|
||||||
|
$new = $model->find('first', ['conditions' => ['Post.id' => 1]]);
|
||||||
|
$this->assertGreaterThan($original['Post']['updated'], $new['Post']['updated']);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test save() resets the whitelist after afterSave
|
* Test save() resets the whitelist after afterSave
|
||||||
*
|
*
|
||||||
|
@ -1960,8 +1984,8 @@ class ModelWriteTest extends BaseModelTest {
|
||||||
'title' => 'New Article With Tags and fieldList',
|
'title' => 'New Article With Tags and fieldList',
|
||||||
'body' => '',
|
'body' => '',
|
||||||
'published' => 'N',
|
'published' => 'N',
|
||||||
'created' => '',
|
'created' => static::date(),
|
||||||
'updated' => ''
|
'updated' => static::date(),
|
||||||
),
|
),
|
||||||
'Tag' => array(
|
'Tag' => array(
|
||||||
0 => array(
|
0 => array(
|
||||||
|
|
Loading…
Reference in a new issue