Skip to content

Commit 5901908

Browse files
committed
fix(form): multiple selection of validators
Signed-off-by: Thierry Bugier <[email protected]>
1 parent 7ef3496 commit 5901908

File tree

1 file changed

+39
-15
lines changed

1 file changed

+39
-15
lines changed

inc/form.class.php

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,8 @@ public static function getSpecificValueToDisplay($field, $values, array $options
372372
* @return NULL Nothing, just display the form
373373
*/
374374
public function showForm($ID, $options = []) {
375+
global $DB;
376+
375377
$this->initForm($ID, $options);
376378
$this->showFormHeader($options);
377379

@@ -496,14 +498,25 @@ public function showForm($ID, $options = []) {
496498
"$userTable.id" => new QuerySubquery($subQuery)
497499
];
498500
$formValidator = new PluginFormcreatorForm_Validator();
499-
$validatorUsers = $formValidator->getValidatorsForForm($this, User::class);
500-
$validatorUser = array_shift($validatorUsers);
501+
$selectedValidatorUsers = [];
502+
foreach ($formValidator->getValidatorsForForm($this, User::class) as $user) {
503+
$selectedValidatorUsers[$user->getID()] = $user->getID();
504+
}
505+
$users = $DB->request([
506+
'SELECT' => ['id', 'name'],
507+
'FROM' => User::getTable(),
508+
'WHERE' => $usersCondition,
509+
]);
510+
$validatorUsers = [];
511+
foreach($users as $user) {
512+
$validatorUsers[$user['id']] = $user['name'];
513+
}
501514
echo '<div id="validators_users">';
502-
Dropdown::show(
503-
User::class, [
504-
'name' => '_validator_users',
505-
'value' => $validatorUser ? $validatorUser->getID() : 0,
506-
'condition' => $usersCondition,
515+
Dropdown::showFromArray(
516+
'_validator_users',
517+
$validatorUsers, [
518+
'multiple' => true,
519+
'values' => $selectedValidatorUsers
507520
]
508521
);
509522
echo '</div>';
@@ -553,18 +566,29 @@ public function showForm($ID, $options = []) {
553566
$groupsCondition = [
554567
"$groupTable.id" => new QuerySubquery($subQuery),
555568
];
569+
$groups = $DB->request([
570+
'SELECT' => ['id' ,'name'],
571+
'FROM' => Group::getTable(),
572+
'WHERE' => $groupsCondition,
573+
]);
556574
$formValidator = new PluginFormcreatorForm_Validator();
557-
$validatorgroups = $formValidator->getValidatorsForForm($this, Group::class);
558-
$validatorgroup = array_shift($validatorgroups);
575+
$selectecValidatorGroups = [];
576+
foreach($formValidator->getValidatorsForForm($this, Group::class) as $group) {
577+
$selectecValidatorGroups[$group->getID()] = $group->getID();
578+
}
579+
$validatorGroups = [];
580+
foreach($groups as $group) {
581+
$validatorGroups[$group['id']] = $group['name'];
582+
}
559583
echo '<div id="validators_groups" style="width: 100%">';
560-
Dropdown::show(
561-
Group::class, [
562-
'name' => '_validator_groups',
563-
'value' => $validatorgroup ? $validatorgroup->getID() : 0,
564-
'condition' => $groupsCondition
584+
Dropdown::showFromArray(
585+
'_validator_groups',
586+
$validatorGroups,
587+
[
588+
'multiple' => true,
589+
'values' => $selectecValidatorGroups
565590
]
566591
);
567-
568592
echo '</div>';
569593

570594
$script = '$(document).ready(function() {plugin_formcreator_changeValidators(' . $this->fields["validation_required"] . ');});';

0 commit comments

Comments
 (0)