1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-04 21:57:51 +02:00

Fixed #109: Can't delete multiple users

This commit is contained in:
SecretR
2013-02-19 12:18:38 +02:00
parent 10ce319b5a
commit 439fb926a5

View File

@@ -2727,10 +2727,11 @@ class e_admin_controller_ui extends e_admin_controller
//$multi_name = vartrue($this->fields['checkboxes']['toggle'], 'multiselect'); //$multi_name = vartrue($this->fields['checkboxes']['toggle'], 'multiselect');
$multi_name = $this->getFieldAttr('checkboxes', 'toggle', 'multiselect'); $multi_name = $this->getFieldAttr('checkboxes', 'toggle', 'multiselect');
$selected = array_values($this->getPosted($multi_name, array())); $selected = array_values($this->getPosted($multi_name, array()));
$trigger = $tp->toDB(explode('__', $batch_trigger));
if(empty($selected)) if(empty($selected) && !$this->getPosted('etrigger_delete_confirm')) // it's a delete batch, confirm screen
{ {
$params = $this->getFieldAttr($field, 'writeParms', array()); $params = $this->getFieldAttr($trigger[1], 'writeParms', array());
if(!is_array($params)) parse_str($params, $params); if(!is_array($params)) parse_str($params, $params);
if(!vartrue($params['batchNoCheck'])) if(!vartrue($params['batchNoCheck']))
{ {
@@ -2738,8 +2739,14 @@ class e_admin_controller_ui extends e_admin_controller
} }
} }
$selected = array_map('intval', $selected); if($selected)
$trigger = $tp->toDB(explode('__', $batch_trigger)); {
foreach ($selected as $i => $_sel)
{
$selected[$i] = preg_replace('/[^\w\-]/', '', $_sel);
}
}
$this->setTriggersEnabled(false); //disable further triggering $this->setTriggersEnabled(false); //disable further triggering
@@ -3774,7 +3781,6 @@ class e_admin_ui extends e_admin_controller_ui
*/ */
protected function handleListDeleteBatch($selected) protected function handleListDeleteBatch($selected)
{ {
if(!$this->getBatchDelete()) if(!$this->getBatchDelete())
{ {
e107::getMessage()->add(LAN_UI_BATCHDEL_ERROR, E_MESSAGE_WARNING); e107::getMessage()->add(LAN_UI_BATCHDEL_ERROR, E_MESSAGE_WARNING);
@@ -3791,15 +3797,19 @@ class e_admin_ui extends e_admin_controller_ui
else else
{ {
// already confirmed, resurrect selected values // already confirmed, resurrect selected values
$selected = array_map('intval', explode(',', $this->getPosted('delete_confirm_value'))); $selected = explode(',', $this->getPosted('delete_confirm_value'));
foreach ($selected as $i => $_sel)
{
$selected[$i] = preg_replace('/[^\w\-]/', '', $_sel);
}
} }
} }
// delete one by one - more control, less performance // delete one by one - more control, less performance
// pass afterDelete() callback to tree delete method // pass afterDelete() callback to tree delete method
$set_messages = true; $set_messages = true;
$delcount = 0;
$nfcount = 0;
foreach ($selected as $id) foreach ($selected as $id)
{ {
$data = array(); $data = array();
@@ -3810,6 +3820,7 @@ class e_admin_ui extends e_admin_controller_ui
if($this->beforeDelete($data, $id)) if($this->beforeDelete($data, $id))
{ {
$check = $this->getTreeModel()->delete($id); $check = $this->getTreeModel()->delete($id);
if($check) $delcount++;
if(!$this->afterDelete($data, $id, $check)) if(!$this->afterDelete($data, $id, $check))
{ {
$set_messages = false; $set_messages = false;
@@ -3818,13 +3829,20 @@ class e_admin_ui extends e_admin_controller_ui
} }
else else
{ {
$set_messages = "Couldn't get model"; $set_messages = true;
$nfcount++;
} }
} }
//$this->getTreeModel()->delete($selected); //$this->getTreeModel()->delete($selected);
if($set_messages) $this->getTreeModel()->setMessages(); if($set_messages)
{
$this->getTreeModel()->setMessages();
// FIXME lan
if($delcount) e107::getMessage()->addSuccess(sprintf('<strong>%1$d records</strong> successfully deleted.', $delcount));
if($nfcount) e107::getMessage()->addError(sprintf('<strong>%1$d records</strong> not found and not deleted.', $nfcount));
}
//$this->redirect(); //$this->redirect();
} }