public function showForm($datas) { if (!isset($datas['id']) || !$this->getFromDB($datas['id'])) { Html::displayNotFoundError(); } $form = new PluginFormcreatorForm(); $form->getFromDB($this->fields['plugin_formcreator_forms_id']); echo '<form name="formcreator_form' . $form->getID() . '" method="post" role="form" enctype="multipart/form-data" action="' . $GLOBALS['CFG_GLPI']['root_doc'] . '/plugins/formcreator/front/formanswer.form.php" class="formcreator_form form_horizontal">'; echo '<h1 class="form-title">' . $form->fields['name'] . '</h1>'; // Form Header if (!empty($form->fields['content'])) { echo '<div class="form_header">'; echo html_entity_decode($form->fields['content']); echo '</div>'; } if ($this->fields['status'] == 'refused') { echo '<div class="refused_header">'; echo '<div>' . nl2br($this->fields['comment']) . '</div>'; echo '</div>'; } elseif ($this->fields['status'] == 'accepted') { echo '<div class="accepted_header">'; echo '<div>'; if (!empty($this->fields['comment'])) { echo nl2br($this->fields['comment']); } elseif ($form->fields['validation_required']) { echo __('Form accepted by validator.', 'formcreator'); } else { echo __('Form successfully saved.', 'formcreator'); } echo '</div>'; echo '</div>'; } // Get and display sections of the form $question = new PluginFormcreatorQuestion(); $questions = array(); $section_class = new PluginFormcreatorSection(); $find_sections = $section_class->find('plugin_formcreator_forms_id = ' . $form->getID(), '`order` ASC'); echo '<div class="form_section">'; foreach ($find_sections as $section_line) { echo '<h2>' . $section_line['name'] . '</h2>'; // Display all fields of the section $questions = $question->find('plugin_formcreator_sections_id = ' . $section_line['id'], '`order` ASC'); foreach ($questions as $question_line) { $answer = new PluginFormcreatorAnswer(); $found = $answer->find('plugin_formcreator_formanwers_id = "' . $this->getID() . '" AND plugin_formcreator_question_id = "' . $question_line['id'] . '"'); $found = array_shift($found); // if (in_array($question_line['fieldtype'], array('checkboxes', 'multiselect'))) { // $found['answer'] = json_decode($found['answer']); // } $canEdit = $this->fields['status'] == 'refused' && $_SESSION['glpiID'] == $this->fields['requester_id']; if ($canEdit || $question_line['fieldtype'] != "description" && $question_line['fieldtype'] != "hidden") { PluginFormcreatorFields::showField($question_line, $found['answer'], $canEdit); } } } echo '<script type="text/javascript">formcreatorShowFields();</script>'; // Display submit button if ($this->fields['status'] == 'refused' && $_SESSION['glpiID'] == $this->fields['requester_id']) { echo '<div class="form-group line' . (count($questions) + 1) % 2 . '">'; echo '<div class="center">'; echo '<input type="submit" name="save_formanswer" class="submit_button" value="' . __('Save') . '" />'; echo '</div>'; echo '</div>'; // Display validation form } elseif ($this->fields['status'] == 'waiting' && $_SESSION['glpiID'] == $this->fields['validator_id']) { if (Session::haveRight('ticketvalidation', TicketValidation::VALIDATEINCIDENT) || Session::haveRight('ticketvalidation', TicketValidation::VALIDATEREQUEST)) { echo '<div class="form-group required line' . (count($questions) + 1) % 2 . '">'; echo '<label for="comment">' . __('Comment', 'formcreator') . ' <span class="red">*</span></label>'; echo '<textarea class="form-control" rows="5" name="comment" id="comment">' . $this->fields['comment'] . '</textarea>'; echo '<div class="help-block">' . __('Required if refused', 'formcreator') . '</div>'; echo '</div>'; echo '<div class="form-group line' . count($questions) % 2 . '">'; echo '<div class="center" style="float: left; width: 50%;">'; echo '<input type="submit" name="refuse_formanswer" class="submit_button" value="' . __('Refuse', 'formcreator') . '" onclick="return checkComment(this);" />'; echo '</div>'; echo '<div class="center">'; echo '<input type="submit" name="accept_formanswer" class="submit_button" value="' . __('Accept', 'formcreator') . '" />'; echo '</div>'; echo '</div>'; } } echo '<input type="hidden" name="formcreator_form" value="' . $form->getID() . '">'; echo '<input type="hidden" name="id" value="' . $this->getID() . '">'; echo '<input type="hidden" name="_glpi_csrf_token" value="' . Session::getNewCSRFToken() . '">'; echo '</div>'; echo '</form>'; echo '<script type="text/javascript"> function checkComment(field) { if (document.getElementById("comment").value == "") { alert("' . __('Refused comment is required!', 'formcreator') . '"); return false; } } </script>'; }
/** * Display the Form end-user form to be filled * * @param CommonGLPI $item Instance of the Form to be displayed * * @return Null Nothing, just display the form */ public function displayUserForm(CommonGLPI $item) { if (isset($_SESSION['formcreator']['datas'])) { $datas = $_SESSION['formcreator']['datas']; unset($_SESSION['formcreator']['datas']); } else { $datas = null; } echo '<form name="formcreator_form' . $item->getID() . '" method="post" role="form" enctype="multipart/form-data" action="' . $GLOBALS['CFG_GLPI']['root_doc'] . '/plugins/formcreator/front/form.form.php" class="formcreator_form form_horizontal" onsubmit="return validateForm(this);">'; echo '<h1 class="form-title">' . $item->fields['name'] . '</h1>'; // Form Header if (!empty($item->fields['content'])) { echo '<div class="form_header">'; echo html_entity_decode($item->fields['content']); echo '</div>'; } // Get and display sections of the form $question = new PluginFormcreatorQuestion(); $questions = array(); $section_class = new PluginFormcreatorSection(); $find_sections = $section_class->find('plugin_formcreator_forms_id = ' . $item->getID(), '`order` ASC'); echo '<div class="form_section">'; foreach ($find_sections as $section_line) { echo '<h2>' . $section_line['name'] . '</h2>'; // Display all fields of the section $questions = $question->find('plugin_formcreator_sections_id = ' . $section_line['id'], '`order` ASC'); foreach ($questions as $question_line) { if (isset($datas[$question_line['id']])) { // multiple choice question are saved as JSON and needs to be decoded $answer = in_array($question_line['fieldtype'], array('checkboxes', 'multiselect')) ? json_decode($datas[$question_line['id']]) : $datas[$question_line['id']]; } else { $answer = null; } PluginFormcreatorFields::showField($question_line, $answer); } } echo '<script type="text/javascript">formcreatorShowFields();</script>'; // Show validator selector if ($item->fields['validation_required']) { $validators = array(); $tab_users = array(); $subquery = 'SELECT u.`id` FROM `glpi_users` u LEFT JOIN `glpi_plugin_formcreator_formvalidators` fv ON fv.`users_id` = u.`id` WHERE fv.`forms_id` = "' . $this->getID() . '"'; $result = $GLOBALS['DB']->query($subquery); if ($GLOBALS['DB']->numrows($result) == 0) { $subentities = getSonsOf('glpi_entities', $this->fields["entities_id"]); $subentities = implode(',', $subentities); $query = "SELECT u.`id`\n FROM `glpi_users` u\n INNER JOIN `glpi_profiles_users` pu ON u.`id` = pu.`users_id`\n INNER JOIN `glpi_profiles` p ON p.`id` = pu.`profiles_id`\n INNER JOIN `glpi_profilerights` pr ON p.`id` = pr.`profiles_id`\n WHERE pr.`name` = 'ticketvalidation'\n AND (pr.`rights` & " . TicketValidation::VALIDATEREQUEST . " = " . TicketValidation::VALIDATEREQUEST . "\n OR pr.`rights` & " . TicketValidation::VALIDATEINCIDENT . " = " . TicketValidation::VALIDATEINCIDENT . ")\n AND (pu.`entities_id` = {$this->fields["entities_id"]}\n OR (pu.`is_recursive` = 1 AND pu.entities_id IN ({$subentities})))\n GROUP BY u.`id`\n ORDER BY u.`name`"; $result = $GLOBALS['DB']->query($query); } echo '<div class="form-group required liste line' . (count($questions) + 1) % 2 . '" id="form-validator">'; echo '<label>' . __('Choose a validator', 'formcreator') . ' <span class="red">*</span></label>'; echo '<select name="formcreator_validator" id="formcreator_validator" class="required">'; echo '<option value="">---</option>'; while ($user = $GLOBALS['DB']->fetch_assoc($result)) { $userItem = new User(); $userItem->getFromDB($user['id']); echo '<option value="' . $user['id'] . '">' . $userItem->getname() . '</option>'; } echo '</select>'; echo '<script type="text/javascript" src="../scripts/combobox.js.php"></script>'; echo '</div>'; } echo '</div>'; // Display submit button echo '<div class="center">'; echo '<input type="submit" name="submit_formcreator" class="submit_button" value="' . __('Send') . '" />'; echo '</div>'; echo '<input type="hidden" name="formcreator_form" value="' . $item->getID() . '">'; echo '<input type="hidden" name="_glpi_csrf_token" value="' . Session::getNewCSRFToken() . '">'; echo '</form>'; }
/** * Display the Form end-user form to be filled * * @param CommonGLPI $item Instance of the Form to be displayed * * @return Null Nothing, just display the form */ public function displayUserForm(CommonGLPI $item) { if (isset($_SESSION['formcreator']['datas'])) { $datas = $_SESSION['formcreator']['datas']; unset($_SESSION['formcreator']['datas']); } else { $datas = null; } echo '<form name="formcreator_form' . $item->getID() . '" method="post" role="form" enctype="multipart/form-data" action="' . $GLOBALS['CFG_GLPI']['root_doc'] . '/plugins/formcreator/front/form.form.php" class="formcreator_form form_horizontal" onsubmit="return validateForm(this);">'; echo '<h1 class="form-title">' . $item->fields['name'] . '</h1>'; // Form Header if (!empty($item->fields['content'])) { echo '<div class="form_header">'; echo html_entity_decode($item->fields['content']); echo '</div>'; } // Get and display sections of the form $question = new PluginFormcreatorQuestion(); $questions = array(); $section_class = new PluginFormcreatorSection(); $find_sections = $section_class->find('plugin_formcreator_forms_id = ' . (int) $item->getID(), '`order` ASC'); echo '<div class="form_section">'; foreach ($find_sections as $section_line) { echo '<h2>' . $section_line['name'] . '</h2>'; // Display all fields of the section $questions = $question->find('plugin_formcreator_sections_id = ' . (int) $section_line['id'], '`order` ASC'); foreach ($questions as $question_line) { if (isset($datas[$question_line['id']])) { // multiple choice question are saved as JSON and needs to be decoded $answer = in_array($question_line['fieldtype'], array('checkboxes', 'multiselect')) ? json_decode($datas[$question_line['id']]) : $datas[$question_line['id']]; } else { $answer = null; } PluginFormcreatorFields::showField($question_line, $answer); } } echo '<script type="text/javascript">formcreatorShowFields();</script>'; // Show validator selector if ($item->fields['validation_required'] > 0) { $validators = array(0 => Dropdown::EMPTY_VALUE); // Groups if ($item->fields['validation_required'] == 2) { $query = 'SELECT g.`id`, g.`completename` FROM `glpi_groups` g LEFT JOIN `glpi_plugin_formcreator_formvalidators` fv ON fv.`users_id` = g.`id` WHERE fv.`forms_id` = ' . (int) $this->getID(); Toolbox::logDebug($query); $result = $GLOBALS['DB']->query($query); while ($validator = $GLOBALS['DB']->fetch_assoc($result)) { $validators[$validator['id']] = $validator['completename']; } // Users } else { $query = 'SELECT u.`id`, u.`name`, u.`realname`, u.`firstname` FROM `glpi_users` u LEFT JOIN `glpi_plugin_formcreator_formvalidators` fv ON fv.`users_id` = u.`id` WHERE fv.`forms_id` = ' . (int) $this->getID(); $result = $GLOBALS['DB']->query($query); while ($validator = $GLOBALS['DB']->fetch_assoc($result)) { $validators[$validator['id']] = formatUserName($validator['id'], $validator['name'], $validator['realname'], $validator['firstname']); } } echo '<div class="form-group required liste line' . (count($questions) + 1) % 2 . '" id="form-validator">'; echo '<label>' . __('Choose a validator', 'formcreator') . ' <span class="red">*</span></label>'; Dropdown::showFromArray('formcreator_validator', $validators); echo '</div>'; } echo '</div>'; // Display submit button echo '<div class="center">'; echo '<input type="submit" name="submit_formcreator" class="submit_button" value="' . __('Send') . '" />'; echo '</div>'; echo '<input type="hidden" name="formcreator_form" value="' . $item->getID() . '">'; echo '<input type="hidden" name="_glpi_csrf_token" value="' . Session::getNewCSRFToken() . '">'; echo '</form>'; }
public function showForm($ID, $options = array()) { if (!isset($ID) || !$this->getFromDB($ID)) { Html::displayNotFoundError(); } $options = array('canedit' => false); $this->initForm($ID, $options); $this->showFormHeader($options); $form = new PluginFormcreatorForm(); $form->getFromDB($this->fields['plugin_formcreator_forms_id']); $canEdit = $this->fields['status'] == 'refused' && $_SESSION['glpiID'] == $this->fields['requester_id']; if ($form->fields['validation_required'] == 1 && $_SESSION['glpiID'] == $this->fields['validator_id']) { $canValidate = true; } elseif ($form->fields['validation_required'] == 2) { // Get validator users from group $query = "SELECT u.`id`\n FROM `glpi_users` u\n INNER JOIN `glpi_groups_users` gu ON gu.`users_id` = u.`id`\n INNER JOIN `glpi_profiles_users` pu ON u.`id` = pu.`users_id`\n INNER JOIN `glpi_profiles` p ON p.`id` = pu.`profiles_id`\n INNER JOIN `glpi_profilerights` pr ON p.`id` = pr.`profiles_id`\n WHERE pr.`name` = 'ticketvalidation'\n AND (\n pr.`rights` & " . TicketValidation::VALIDATEREQUEST . " = " . TicketValidation::VALIDATEREQUEST . "\n OR pr.`rights` & " . TicketValidation::VALIDATEINCIDENT . " = " . TicketValidation::VALIDATEINCIDENT . ")\n AND gu.`groups_id` = " . $this->fields['validator_id'] . "\n AND u.`id` = " . (int) $_SESSION['glpiID']; $result = $GLOBALS['DB']->query($query); if ($GLOBALS['DB']->numrows($result) == 1) { $canValidate = true; } else { $canValidate = false; } } else { $canValidate = false; } echo '<tr><td colspan="4" class="formcreator_form form_horizontal">'; // Form Header if (!empty($form->fields['content'])) { echo '<div class="form_header">'; echo html_entity_decode($form->fields['content']); echo '</div>'; } if ($this->fields['status'] == 'refused') { echo '<div class="refused_header">'; echo '<div>' . nl2br($this->fields['comment']) . '</div>'; echo '</div>'; } elseif ($this->fields['status'] == 'accepted') { echo '<div class="accepted_header">'; echo '<div>'; if (!empty($this->fields['comment'])) { echo nl2br($this->fields['comment']); } elseif ($form->fields['validation_required']) { echo __('Form accepted by validator.', 'formcreator'); } else { echo __('Form successfully saved.', 'formcreator'); } echo '</div>'; echo '</div>'; } // Get and display sections of the form $question = new PluginFormcreatorQuestion(); $questions = array(); $section_class = new PluginFormcreatorSection(); $find_sections = $section_class->find('plugin_formcreator_forms_id = ' . (int) $form->getID(), '`order` ASC'); echo '<div class="form_section">'; foreach ($find_sections as $section_line) { echo '<h2>' . $section_line['name'] . '</h2>'; // Display all fields of the section $questions = $question->find('plugin_formcreator_sections_id = ' . (int) $section_line['id'], '`order` ASC'); foreach ($questions as $question_line) { $answer = new PluginFormcreatorAnswer(); $found = $answer->find("plugin_formcreator_formanwers_id = " . (int) $this->getID() . "\n AND plugin_formcreator_question_id = " . (int) $question_line['id']); $found = array_shift($found); // if (in_array($question_line['fieldtype'], array('checkboxes', 'multiselect'))) { // $found['answer'] = json_decode($found['answer']); // } if ($canEdit || $question_line['fieldtype'] != "description" && $question_line['fieldtype'] != "hidden") { PluginFormcreatorFields::showField($question_line, $found['answer'], $canEdit); } } } echo '<script type="text/javascript">formcreatorShowFields();</script>'; // Display submit button if ($this->fields['status'] == 'refused' && $_SESSION['glpiID'] == $this->fields['requester_id']) { echo '<div class="form-group line' . (count($questions) + 1) % 2 . '">'; echo '<div class="center">'; echo '<input type="submit" name="save_formanswer" class="submit_button" value="' . __('Save') . '" />'; echo '</div>'; echo '</div>'; // Display validation form } elseif ($this->fields['status'] == 'waiting' && $canValidate) { if (Session::haveRight('ticketvalidation', TicketValidation::VALIDATEINCIDENT) || Session::haveRight('ticketvalidation', TicketValidation::VALIDATEREQUEST)) { echo '<div class="form-group required line' . (count($questions) + 1) % 2 . '">'; echo '<label for="comment">' . __('Comment', 'formcreator') . ' <span class="red">*</span></label>'; echo '<textarea class="form-control" rows="5" name="comment" id="comment">' . $this->fields['comment'] . '</textarea>'; echo '<div class="help-block">' . __('Required if refused', 'formcreator') . '</div>'; echo '</div>'; echo '<div class="form-group line' . count($questions) % 2 . '">'; echo '<div class="center" style="float: left; width: 50%;">'; echo '<input type="submit" name="refuse_formanswer" class="submit_button" value="' . __('Refuse', 'formcreator') . '" onclick="return checkComment(this);" />'; echo '</div>'; echo '<div class="center">'; echo '<input type="submit" name="accept_formanswer" class="submit_button" value="' . __('Accept', 'formcreator') . '" />'; echo '</div>'; echo '</div>'; } } echo '<input type="hidden" name="formcreator_form" value="' . $form->getID() . '">'; echo '<input type="hidden" name="id" value="' . $this->getID() . '">'; echo '<input type="hidden" name="_glpi_csrf_token" value="' . Session::getNewCSRFToken() . '">'; echo '</div>'; // echo '</form>'; echo '<script type="text/javascript"> function checkComment(field) { if (document.getElementById("comment").value == "") { alert("' . __('Refused comment is required!', 'formcreator') . '"); return false; } } </script>'; echo '</td></tr>'; $this->showFormButtons($options); return true; }
/** * Display the Form end-user form to be filled * * @param CommonGLPI $item Instance of the Form to be displayed * * @return Null Nothing, just display the form */ public function displayUserForm(CommonGLPI $item) { if (isset($_SESSION['formcreator']['datas'])) { $datas = $_SESSION['formcreator']['datas']; unset($_SESSION['formcreator']['datas']); } else { $datas = null; } echo '<form name="formcreator_form' . $item->getID() . '" method="post" role="form" enctype="multipart/form-data" action="' . $GLOBALS['CFG_GLPI']['root_doc'] . '/plugins/formcreator/front/form.form.php" class="formcreator_form form_horizontal">'; echo '<h1 class="form-title">' . $item->fields['name'] . '</h1>'; // Form Header if (!empty($item->fields['content'])) { echo '<div class="form_header">'; echo html_entity_decode($item->fields['content']); echo '</div>'; } // Get and display sections of the form $question = new PluginFormcreatorQuestion(); $section_class = new PluginFormcreatorSection(); $find_sections = $section_class->find('plugin_formcreator_forms_id = ' . $item->getID(), '`order` ASC'); foreach ($find_sections as $section_line) { echo '<div class="form_section">'; echo '<h2>' . $section_line['name'] . '</h2>'; // Display all fields of the section $questions = $question->find('plugin_formcreator_sections_id = ' . $section_line['id'], '`order` ASC'); foreach ($questions as $question_line) { PluginFormcreatorFields::showField($question_line, $datas); } echo '</div>'; } // Display submit button echo '<div class="center">'; echo '<input type="submit" name="submit_formcreator" class="submit_button" value="' . __('Send') . '" />'; echo '</div>'; echo '<input type="hidden" name="formcreator_form" value="' . $item->getID() . '">'; echo '<input type="hidden" name="_glpi_csrf_token" value="' . Session::getNewCSRFToken() . '">'; echo '</form>'; }