1
0
mirror of https://github.com/e107inc/e107.git synced 2025-07-31 03:40:37 +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())); $selected = array_values($this->getPosted($multi_name, array()));
$trigger = $tp->toDB(explode('__', $batch_trigger)); $trigger = $tp->toDB(explode('__', $batch_trigger));
if(empty($selected) && !$this->getPosted('etrigger_delete_confirm')) // it's a delete batch, confirm screen if(!empty($selected))
{
$params = $this->getFieldAttr($trigger[1], 'writeParms', array());
if(!is_array($params)) parse_str($params, $params);
if(!vartrue($params['batchNoCheck']))
{
return $this;
}
}
if($selected)
{ {
foreach ($selected as $i => $_sel) 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_') if(substr($batch_trigger, 0, 6) === 'batch_')
{ {
@@ -3408,10 +3400,21 @@ class e_admin_controller_ui extends e_admin_controller
break; break;
case 'delete': //FIXME - confirmation popup case 'delete':
//method handleListDeleteBatch(); for custom handling of 'delete' batch //method handleListDeleteBatch(); for custom handling of 'delete' batch
// if(empty($selected)) return $this; // if(empty($selected)) return $this;
// don't check selected data - subclass need to check additional post variables(confirm screen) // 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'; $method = 'handle'.$actionName.'DeleteBatch';
if(method_exists($this, $method)) // callback handling if(method_exists($this, $method)) // callback handling
{ {
@@ -3447,6 +3450,7 @@ class e_admin_controller_ui extends e_admin_controller
case 'deattach': case 'deattach':
case 'addAll': case 'addAll':
case 'clearAll': case 'clearAll':
if(empty($selected)) return $this;
$field = $trigger[1]; $field = $trigger[1];
$value = $trigger[2]; $value = $trigger[2];
@@ -3469,7 +3473,7 @@ class e_admin_controller_ui extends e_admin_controller
// append to userclass list // append to userclass list
case 'ucadd': case 'ucadd':
case 'ucremove': case 'ucremove':
//if(empty($selected)) return $this; if(empty($selected)) return $this;
$field = $trigger[1]; $field = $trigger[1];
$class = $trigger[2]; $class = $trigger[2];
$user = e107::getUser(); $user = e107::getUser();
@@ -3492,6 +3496,7 @@ class e_admin_controller_ui extends e_admin_controller
// clear userclass list // clear userclass list
case 'ucaddall': case 'ucaddall':
case 'ucdelall': case 'ucdelall':
if(empty($selected)) return $this;
$field = $trigger[1]; $field = $trigger[1];
$user = e107::getUser(); $user = e107::getUser();
$e_userclass = e107::getUserClass(); $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 //handleListBatch(); for custom handling of all field names
if(empty($selected)) return $this; //if(empty($selected)) return $this;
$method = 'handle'.$actionName.'Batch'; $method = 'handle'.$actionName.'Batch';
e107::getDebug()->log("Checking for batch method: ".$method); e107::getDebug()->log("Checking for batch method: ".$method);
if(method_exists($this, $method)) if(method_exists($this, $method))