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
1 changed files with 9 additions and 12 deletions

View File

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