setByIDList function update( notices and ajax problem solving )

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@41165 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Romain Louis 2007-09-03 05:08:33 +00:00
parent cb40b7e28a
commit b5c83d3513

View File

@ -159,37 +159,34 @@ class ComponentSet extends DataObjectSet {
* @param array $idList List of IDs. * @param array $idList List of IDs.
*/ */
function setByIDList($idList) { function setByIDList($idList) {
$has = array();
// Index current data // Index current data
if($this->items) { if($this->items) {
foreach($this->items as $item) { foreach( $this->items as $item )
$has[$item->ID] = true; $has[$item->ID] = true;
} }
}
// Keep track of items to delete // Keep track of items to delete
if( isset( $has ) )
$itemsToDelete = $has; $itemsToDelete = $has;
if($idList){ if($idList){
foreach($idList as $id) { foreach($idList as $id) {
if( isset( $itemsToDelete ) )
$itemsToDelete[$id] = false; $itemsToDelete[$id] = false;
if(!isset($has[$id]) && $id) { if( ! isset( $has ) || ( $id && ! isset( $has[$id] ) ) )
$this->add($id); $this->add($id);
} }
} }
}
// Delete any unmentionedItems // Delete any unmentionedItems
if($itemsToDelete) { if( isset( $itemsToDelete ) ) {
$removeList = array();
foreach($itemsToDelete as $id => $actuallyDelete) { foreach($itemsToDelete as $id => $actuallyDelete) {
if($actuallyDelete) $removeList[] = $id; if($actuallyDelete) $removeList[] = $id;
} }
if($removeList) {
if( isset( $removeList ) )
$this->removeMany($removeList); $this->removeMany($removeList);
} }
} }
}
/** /**
* Remove an item from this set. * Remove an item from this set.