1
0
mirror of https://github.com/e107inc/e107.git synced 2025-04-20 04:32:01 +02:00

Fix for custom batch methods applied to all records.

This commit is contained in:
Cameron 2019-08-10 13:24:14 -07:00
parent f75e378ec3
commit b705e17815

View File

@ -3341,17 +3341,7 @@ class e_admin_controller_ui extends e_admin_controller
$selected = array_values($this->getPosted($multi_name, array()));
$trigger = $tp->toDB(explode('__', $batch_trigger));
if(empty($selected) && !$this->getPosted('etrigger_delete_confirm')) // it's a delete batch, confirm screen
{
$params = $this->getFieldAttr($trigger[1], 'writeParms', array());
if(!is_array($params)) parse_str($params, $params);
if(!vartrue($params['batchNoCheck']))
{
return $this;
}
}
if($selected)
if(!empty($selected))
{
foreach ($selected as $i => $_sel)
{
@ -3359,6 +3349,8 @@ class e_admin_controller_ui extends e_admin_controller
}
}
// XXX An empty selection should always be permitted for custom batch methods which may apply changes to all records, not only selected ones.
if(substr($batch_trigger, 0, 6) === 'batch_')
{
@ -3408,10 +3400,21 @@ class e_admin_controller_ui extends e_admin_controller
break;
case 'delete': //FIXME - confirmation popup
case 'delete':
//method handleListDeleteBatch(); for custom handling of 'delete' batch
// if(empty($selected)) return $this;
// don't check selected data - subclass need to check additional post variables(confirm screen)
if(empty($selected) && !$this->getPosted('etrigger_delete_confirm')) // it's a delete batch, confirm screen
{
$params = $this->getFieldAttr($trigger[1], 'writeParms', array());
if(!is_array($params)) parse_str($params, $params);
if(!vartrue($params['batchNoCheck']))
{
return $this;
}
}
$method = 'handle'.$actionName.'DeleteBatch';
if(method_exists($this, $method)) // callback handling
{
@ -3447,6 +3450,7 @@ class e_admin_controller_ui extends e_admin_controller
case 'deattach':
case 'addAll':
case 'clearAll':
if(empty($selected)) return $this;
$field = $trigger[1];
$value = $trigger[2];
@ -3469,7 +3473,7 @@ class e_admin_controller_ui extends e_admin_controller
// append to userclass list
case 'ucadd':
case 'ucremove':
//if(empty($selected)) return $this;
if(empty($selected)) return $this;
$field = $trigger[1];
$class = $trigger[2];
$user = e107::getUser();
@ -3492,6 +3496,7 @@ class e_admin_controller_ui extends e_admin_controller
// clear userclass list
case 'ucaddall':
case 'ucdelall':
if(empty($selected)) return $this;
$field = $trigger[1];
$user = e107::getUser();
$e_userclass = e107::getUserClass();
@ -3533,7 +3538,7 @@ class e_admin_controller_ui extends e_admin_controller
}
//handleListBatch(); for custom handling of all field names
if(empty($selected)) return $this;
//if(empty($selected)) return $this;
$method = 'handle'.$actionName.'Batch';
e107::getDebug()->log("Checking for batch method: ".$method);
if(method_exists($this, $method))