Merged revisions 50164 via svnmerge from

svn://svn.silverstripe.com/silverstripe/modules/sapphire/branches/2.2.1-nzct

........
  r50164 | hsmith | 2008-02-26 10:39:54 +1300 (Tue, 26 Feb 2008) | 1 line
  
  API CHANGE: Added DataObject::writeComponents. DataObject::write now has a flag to disable writing of components
........


git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@52438 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Ingo Schommer 2008-04-10 01:43:31 +00:00
parent 37ba118974
commit f337b048e5

View File

@ -506,10 +506,13 @@ class DataObject extends ViewableData implements DataObjectInterface {
* @param boolean $showDebug Show debugging information * @param boolean $showDebug Show debugging information
* @param boolean $forceInsert Run INSERT command rather than UPDATE, even if record already exists * @param boolean $forceInsert Run INSERT command rather than UPDATE, even if record already exists
* @param boolean $forceWrite Write to database even if there are no changes * @param boolean $forceWrite Write to database even if there are no changes
* @param boolean $writeComponents Call write() on all associated component instances which were previously
* retrieved through {@link getComponent()}, {@link getComponents()} or {@link getManyManyComponents()}
* (Default: false)
* *
* @return int The ID of the record * @return int The ID of the record
*/ */
public function write($showDebug = false, $forceInsert = false, $forceWrite = false) { public function write($showDebug = false, $forceInsert = false, $forceWrite = false, $writeComponents = false) {
$firstWrite = false; $firstWrite = false;
$this->brokenOnWrite = true; $this->brokenOnWrite = true;
$isNewRecord = false; $isNewRecord = false;
@ -625,16 +628,36 @@ class DataObject extends ViewableData implements DataObjectInterface {
} }
// Write ComponentSets as necessary // Write ComponentSets as necessary
if($this->components) { if($writeComponents) {
foreach($this->components as $component) { $this->writeComponents(true);
$component->write($firstWrite);
}
} }
return $this->record['ID']; return $this->record['ID'];
} }
/**
* Write the cached components to the database. Cached components could refer to two different instances of the same record.
*
* @param $recursive Recursively write components
*/
public function writeComponents($recursive = false) {
if(!$this->components) return;
foreach($this->components as $component) {
$component->write(false, false, false, $recursive);
}
}
/**
* Gets all fields that written in the last write()-call
*
* @return array
*/
public function getLastWriteFields() {
return $this->lastWriteFields;
}
/** /**
* Perform a write without affecting the version table. * Perform a write without affecting the version table.
* On objects without versioning. * On objects without versioning.