MDL-76270 group: Refactor group action handling

Previously group bulk actions were handled by prepending
_act in the value of the input, and then using a custom function that
accessed $_GET and $_POST to determine which was pressed.

This was refactored in favor of the more standard method of using
optional_param.
This commit is contained in:
Matthew Hilton 2022-12-15 10:56:05 +10:00
parent 661c8d3ddf
commit c5b6ab5ddc
3 changed files with 10 additions and 41 deletions

View File

@ -169,7 +169,7 @@ UpdatableMembersCombo.prototype.refreshMembers = function () {
document.getElementById("deletegroup").disabled = selectionCount == 0;
if(singleSelection) {
var sUrl = this.wwwRoot+"/group/index.php?id="+this.courseId+"&group="+groupId+"&act_ajax_getmembersingroup";
var sUrl = this.wwwRoot + "/group/index.php?id=" + this.courseId + "&group=" + groupId + "&action=ajax_getmembersingroup";
var self = this;
YUI().use('io', function (Y) {
Y.io(sUrl, {

View File

@ -28,7 +28,8 @@ require_once('lib.php');
$courseid = required_param('id', PARAM_INT);
$groupid = optional_param('group', false, PARAM_INT);
$userid = optional_param('user', false, PARAM_INT);
$action = groups_param_action();
$action = optional_param('action', false, PARAM_TEXT);
// Support either single group= parameter, or array groups[].
if ($groupid) {
$groupids = array($groupid);
@ -249,35 +250,3 @@ $output = $PAGE->get_renderer('core_group');
echo $output->render($renderable);
echo $OUTPUT->footer();
/**
* Returns the first button action with the given prefix, taken from
* POST or GET, otherwise returns false.
* @see /lib/moodlelib.php function optional_param().
* @param string $prefix 'act_' as in 'action'.
* @return string The action without the prefix, or false if no action found.
*/
function groups_param_action($prefix = 'act_') {
$action = false;
if ($_POST) {
$formvars = $_POST;
} else if ($_GET) {
$formvars = $_GET;
}
if ($formvars) {
foreach ($formvars as $key => $value) {
if (preg_match("/$prefix(.+)/", $key, $matches)) {
$action = $matches[1];
break;
}
}
}
if ($action && !preg_match('/^\w+$/', $action)) {
$action = false;
throw new \moodle_exception('unknowaction');
}
return $action;
}

View File

@ -92,22 +92,22 @@
</select>
</div>
<div class="form-group">
<input type="submit" name="act_updatemembers" id="updatemembers" value="{{#str}}showmembersforgroup, group{{/str}}" class="btn btn-secondary" />
<button type="submit" name="action" id="updatemembers" value="updatemembers" class="btn btn-secondary">{{#str}}showmembersforgroup, group{{/str}}</button>
</div>
<div class="form-group">
<input type="submit" name="act_showgroupsettingsform" id="showeditgroupsettingsform" value="{{#str}}editgroupsettings, group{{/str}}" {{#editgroupsettingsdisabled}}disabled="disabled"{{/editgroupsettingsdisabled}} class="btn btn-secondary" />
<button type="submit" name="action" id="showeditgroupsettingsform" value="showgroupsettingsform" {{#editgroupsettingsdisabled}}disabled="disabled"{{/editgroupsettingsdisabled}} class="btn btn-secondary">{{#str}}editgroupsettings, group{{/str}}</button>
</div>
<div class="form-group">
<input type="submit" name="act_deletegroup" id="deletegroup" value="{{#str}}deleteselectedgroup, group{{/str}}" {{#deletegroupdisabled}}disabled="disabled"{{/deletegroupdisabled}} class="btn btn-secondary" />
<button type="submit" name="action" id="deletegroup" value="deletegroup" {{#deletegroupdisabled}}disabled="disabled"{{/deletegroupdisabled}} class="btn btn-secondary">{{#str}}deleteselectedgroup, group{{/str}}</button>
</div>
<div class="form-group">
<input type="submit" name="act_showcreateorphangroupform" id="showcreateorphangroupform" value="{{#str}}creategroup, group{{/str}}" class="btn btn-secondary" />
<button type="submit" name="action" id="showcreateorphangroupform" value="showcreateorphangroupform" class="btn btn-secondary">{{#str}}creategroup, group{{/str}}</button>
</div>
<div class="form-group">
<input type="submit" name="act_showautocreategroupsform" id="showautocreategroupsform" value="{{#str}}autocreategroups, group{{/str}}" class="btn btn-secondary" />
<button type="submit" name="action" id="showautocreategroupsform" value="showautocreategroupsform" class="btn btn-secondary">{{#str}}autocreategroups, group{{/str}}</button>
</div>
<div class="form-group">
<input type="submit" name="act_showimportgroups" id="showimportgroups" value="{{#str}}importgroups, group{{/str}}" class="btn btn-secondary" />
<button type="submit" name="action" id="showimportgroups" value="showimportgroups" class="btn btn-secondary">{{#str}}importgroups, group{{/str}}</button>
</div>
</div>
<div class="col-md-6 mb-1">
@ -127,7 +127,7 @@
</select>
</div>
<div class="form-group">
<input type="submit" value="{{#str}}adduserstogroup, group{{/str}}" class="btn btn-secondary" {{#addmembersdisabled}}disabled="disabled"{{/addmembersdisabled}} name="act_showaddmembersform" id="showaddmembersform"/>
<button type="submit" value="showaddmembersform" class="btn btn-secondary" {{#addmembersdisabled}}disabled="disabled"{{/addmembersdisabled}} name="action" id="showaddmembersform">{{#str}}adduserstogroup, group{{/str}}</button>
</div>
</div>
</div>