public function getDatasForTemplate($event, $options = array()) { $form = new PluginFormcreatorForm(); $form->getFromDB($this->obj->fields['plugin_formcreator_forms_id']); $link = $GLOBALS['CFG_GLPI']['url_base']; $link .= '/plugins/formcreator/front/formanswer.form.php?id=' . $this->obj->getID(); $requester = new User(); $requester->getFromDB($this->obj->fields['requester_id']); $validator = new User(); $validator->getFromDB($this->obj->fields['validator_id']); $this->datas['##formcreator.form_id##'] = $form->getID(); $this->datas['##formcreator.form_name##'] = $form->fields['name']; $this->datas['##formcreator.form_requester##'] = $requester->getName(); $this->datas['##formcreator.form_validator##'] = $validator->getName(); $this->datas['##formcreator.form_creation_date##'] = Html::convDateTime($this->obj->fields['request_date']); $this->datas['##formcreator.form_full_answers##'] = $this->obj->getFullForm(); $this->datas['##formcreator.validation_comment##'] = $this->obj->fields['comment']; $this->datas['##formcreator.validation_link##'] = $link; $this->datas['##formcreator.request_id##'] = $this->obj->fields['id']; }
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>'; }
Html::back(); } elseif (isset($_POST['actor_role'])) { Session::checkRight("entity", UPDATE); $id = (int) $_POST['id']; $actor_value = isset($_POST['actor_value_' . $_POST['actor_type']]) ? $_POST['actor_value_' . $_POST['actor_type']] : ''; $use_notification = $_POST['use_notification'] == 0 ? 0 : 1; $query = "INSERT INTO glpi_plugin_formcreator_targettickets_actors SET\n `plugin_formcreator_targettickets_id` = {$id},\n `actor_role` = '" . $_POST['actor_role'] . "',\n `actor_type` = '" . $_POST['actor_type'] . "',\n `actor_value` = " . (int) $actor_value . ",\n `use_notification` = " . (int) $use_notification; $DB->query($query); Html::back(); } elseif (isset($_GET['delete_actor'])) { $query = "DELETE FROM glpi_plugin_formcreator_targettickets_actors\n WHERE id = " . (int) $_GET['delete_actor']; $DB->query($query); Html::back(); // Show target ticket form } else { Html::header(__('Form Creator', 'formcreator'), $_SERVER['PHP_SELF'], 'admin', 'PluginFormcreatorForm'); $itemtype = "PluginFormcreatorTargetTicket"; $target = new PluginFormcreatorTarget(); $found = $target->find("itemtype = '{$itemtype}' AND items_id = " . (int) $_REQUEST['id']); $first = array_shift($found); $form = new PluginFormcreatorForm(); $form->getFromDB($first['plugin_formcreator_forms_id']); $_SESSION['glpilisttitle'][$itemtype] = sprintf(__('%1$s = %2$s'), $form->getTypeName(1), $form->getName()); $_SESSION['glpilisturl'][$itemtype] = $form->getFormURL() . "?id=" . $form->getID(); $targetticket->display($_REQUEST); Html::footer(); } // Or display a "Not found" error } else { Html::displayNotFoundError(); }
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; }