Skip to content

Commit

Permalink
fix(form): validator setting broken
Browse files Browse the repository at this point in the history
btry committed Sep 6, 2019

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent f13b52b commit e431d5d
Showing 3 changed files with 48 additions and 5 deletions.
20 changes: 16 additions & 4 deletions inc/form.class.php
Original file line number Diff line number Diff line change
@@ -457,11 +457,15 @@ public function showForm($ID, $options = []) {
$usersCondition = [
"$userTable.id" => new QuerySubquery($subQuery)
];

$formValidator = new PluginFormcreatorForm_Validator();
$validatorUsers = $formValidator->getValidatorsForForm($this, User::class);
$validatorUser = array_shift($validatorUsers);
echo '<div id="validators_users">';
Dropdown::show(
User::class, [
'condition' => $usersCondition
'name' => '_validator_users',
'value' => $validatorUser ? $validatorUser->fields['items_id'] : 0,
'condition' => $usersCondition,
]
);
echo '</div>';
@@ -511,10 +515,15 @@ public function showForm($ID, $options = []) {
$groupsCondition = [
"$groupTable.id" => new QuerySubquery($subQuery),
];
$formValidator = new PluginFormcreatorForm_Validator();
$validatorgroups = $formValidator->getValidatorsForForm($this, Group::class);
$validatorgroup = array_shift($validatorgroups);
echo '<div id="validators_groups" style="width: 100%">';
Dropdown::show(
Group::class, [
'condition' => $groupsCondition
'name' => '_validator_groups',
'value' => $validatorgroup ? $validatorgroup->fields['items_id'] : 0,
'condition' => $groupsCondition
]
);

@@ -1220,9 +1229,9 @@ class='formcreator_form form_horizontal'>";
$validators = [0 => Dropdown::EMPTY_VALUE];

// Groups
$formFk = self::getForeignKeyField();
if ($this->fields['validation_required'] == 2) {
$groupTable = Group::getTable();
$formFk = self::getForeignKeyField();
$result = $DB->request([
'SELECT' => [
$groupTable => ['id', 'completename']
@@ -1420,6 +1429,9 @@ private function updateValidators() {
$validatorItemtype = Group::class;
break;
}
if (!is_array($validators)) {
$validators = [$validators];
}
foreach ($validators as $itemId) {
$form_validator = new PluginFormcreatorForm_Validator();
$form_validator->add([
31 changes: 30 additions & 1 deletion inc/form_validator.class.php
Original file line number Diff line number Diff line change
@@ -29,6 +29,8 @@
* ---------------------------------------------------------------------
*/

use tests\units\PluginFormcreatorForm_Validator as TestsPluginFormcreatorForm_Validator;

if (!defined('GLPI_ROOT')) {
die("Sorry. You can't access this file directly");
}
@@ -40,7 +42,7 @@ class PluginFormcreatorForm_Validator extends CommonDBRelation implements
PluginFormcreatorExportableInterface
{

// From CommonDBRelation
// From CommonDBRelation
static public $itemtype_1 = PluginFormcreatorForm::class;
static public $items_id_1 = 'plugin_formcreator_forms_id';

@@ -151,4 +153,31 @@ public function export($remove_uuid = false) {

return $validator;
}

/**
* Get validators of type $itemtype associated to a form
*
* @param PluginFormcreatorForm $form
* @param string $itemtype
* @return void
*/
public function getValidatorsForForm(PluginFormcreatorForm $form, $itemtype) {
if (!in_array($itemtype, [User::class, Group::class])) {
return [];
}

$result = [];
$found = $this->find([
PluginFormcreatorForm::getForeignKeyField() => $form->getID(),
'itemtype' => $itemtype,
]);
foreach($found as $id => $row) {
$item = new self();
if ($item->getFromDB($id)) {
$result[$id] = $item;
}
}

return $result;
}
}
2 changes: 2 additions & 0 deletions inc/formlist.class.php
Original file line number Diff line number Diff line change
@@ -50,6 +50,8 @@ static function getMenuContent() {
global $CFG_GLPI;

$menu = parent::getMenuContent();
$menu['title'] = __('Forms waiting for validation', 'formcreator');
$menu['page'] = '/plugins/formcreator/front/formlist.php';
$image = '<img src="' . $CFG_GLPI['root_doc'] . '/plugins/formcreator/pics/check.png"
title="' . __('Forms waiting for validation', 'formcreator') . '"
alt="' . __('Forms waiting for validation', 'formcreator') . '">';

0 comments on commit e431d5d

Please sign in to comment.