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'];
 }
예제 #2
0
 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;
 }