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>';
 }
Exemple #2
0
 /**
  * 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>';
 }