"; echo "
"; echo ""; echo ""; echo "
".$LANG['processmaker']['item']['tab']."
"; echo $LANG['processmaker']['item']['selectprocess']." "; echo ""; echo ""; echo ""; echo ""; echo ""; PluginProcessmakerProcess::dropdown( array( 'value' => 0, 'entity' => $_SESSION['glpiactive_entity'], 'name' => 'plugin_processmaker_process_id' )); echo ""; echo ""; echo "
"; Html::closeForm(); } function showFormHelpdesk($ID, $pmItem, $caseInfo, $ticket_template=false) { global $DB, $CFG_GLPI; if (!Ticket::canCreate()) { return false; } if (!$ticket_template && Session::haveRightsOr('ticketvalidation', TicketValidation::getValidateRights())) { $opt = array(); $opt['reset'] = 'reset'; $opt['criteria'][0]['field'] = 55; // validation status $opt['criteria'][0]['searchtype'] = 'equals'; $opt['criteria'][0]['value'] = CommonITILValidation::WAITING; $opt['criteria'][0]['link'] = 'AND'; $opt['criteria'][1]['field'] = 59; // validation aprobator $opt['criteria'][1]['searchtype'] = 'equals'; $opt['criteria'][1]['value'] = Session::getLoginUserID(); $opt['criteria'][1]['link'] = 'AND'; $url_validate = $CFG_GLPI["root_doc"]."/front/ticket.php?".Toolbox::append_params($opt, '&'); if (TicketValidation::getNumberToValidate(Session::getLoginUserID()) > 0) { echo "". __('Tickets awaiting approval')."

"; } } $email = UserEmail::getDefaultForUser($ID); $default_use_notif = Entity::getUsedConfig('is_notif_enable_default', $_REQUEST['entities_id'], '', 1); // Set default values... $default_values = array('_users_id_requester_notif' => array('use_notification' => (($email == "")?0:$default_use_notif)), 'nodelegate' => 1, '_users_id_requester' => 0, '_users_id_observer' => array(0), '_users_id_observer_notif' => array('use_notification' => $default_use_notif), 'name' => '', 'content' => '', 'itilcategories_id' => 0, 'locations_id' => 0, 'urgency' => 3, 'items_id' => 0, 'entities_id' => $_REQUEST['entities_id'], 'plan' => array(), 'global_validation' => CommonITILValidation::NONE, '_add_validation' => 0, 'type' => Entity::getUsedConfig('tickettype', $_REQUEST['entities_id'], '', Ticket::INCIDENT_TYPE), '_right' => "id", '_filename' => array(), '_tag_filename' => array()); // Get default values from posted values on reload form if (!$ticket_template) { if (isset($_POST)) { $values = Html::cleanPostForTextArea($_POST); } } $ticket = new Ticket(); // Restore saved value or override with page parameter if (!function_exists('restoreInput')) { function restoreInput(Array $default=array()) { if (isset($_SESSION['saveInput']['Ticket'])) { $saved = Html::cleanPostForTextArea($_SESSION['saveInput']['Ticket']); // clear saved data when restored (only need once) unset($_SESSION['saveInput']['Ticket']); return $saved; } return $default; } } $saved = restoreInput(); foreach ($default_values as $name => $value) { if (!isset($values[$name])) { if (isset($saved[$name])) { $values[$name] = $saved[$name]; } else { $values[$name] = $value; } } } // Check category / type validity if ($values['itilcategories_id']) { $cat = new ITILCategory(); if ($cat->getFromDB($values['itilcategories_id'])) { switch ($values['type']) { case Ticket::INCIDENT_TYPE : if (!$cat->getField('is_incident')) { $values['itilcategories_id'] = 0; } break; case Ticket::DEMAND_TYPE : if (!$cat->getField('is_request')) { $values['itilcategories_id'] = 0; } break; default : break; } } } if (!$ticket_template) { echo "
"; } $delegating = User::getDelegateGroupsForUser($values['entities_id']); if (count($delegating)) { echo "
"; echo ""; echo ""; echo "
".__('This ticket concerns me')." "; $rand = Dropdown::showYesNo("nodelegate", $values['nodelegate']); $params = array('nodelegate' => '__VALUE__', 'rand' => $rand, 'right' => "delegate", '_users_id_requester' => $values['_users_id_requester'], '_users_id_requester_notif' => $values['_users_id_requester_notif'], 'use_notification' => $values['_users_id_requester_notif']['use_notification'], 'entity_restrict' => $_REQUEST['entities_id']); Ajax::UpdateItemOnSelectEvent("dropdown_nodelegate".$rand, "show_result".$rand, $CFG_GLPI["root_doc"]."/ajax/dropdownDelegationUsers.php", $params); $class = 'right'; if ($CFG_GLPI['use_check_pref'] && $values['nodelegate']) { echo "".__('Check your personnal information'); $class = 'center'; } echo "
"; echo "
"; $self = $ticket; // new self(); if ($values["_users_id_requester"] == 0) { $values['_users_id_requester'] = Session::getLoginUserID(); } else { $values['_right'] = "delegate"; } $self->showActorAddFormOnCreate(CommonITILActor::REQUESTER, $values); echo "
"; if ($CFG_GLPI['use_check_pref'] && $values['nodelegate']) { echo "
"; User::showPersonalInformation(Session::getLoginUserID()); } echo "
"; echo ""; } else { // User as requester $values['_users_id_requester'] = Session::getLoginUserID(); if ($CFG_GLPI['use_check_pref']) { echo "
"; echo ""; echo ""; echo "
".__('Check your personnal information')."
"; User::showPersonalInformation(Session::getLoginUserID()); echo "
"; } } echo ""; echo ""; // Load ticket template if available : $tt = $ticket->getTicketTemplateToUse($ticket_template, $values['type'], $values['itilcategories_id'], $_REQUEST['entities_id']); // Predefined fields from template : reset them if (isset($values['_predefined_fields'])) { $values['_predefined_fields'] = Toolbox::decodeArrayFromInput($values['_predefined_fields']); } else { $values['_predefined_fields'] = array(); } // Store predefined fields to be able not to take into account on change template $predefined_fields = array(); if (isset($tt->predefined) && count($tt->predefined)) { foreach ($tt->predefined as $predeffield => $predefvalue) { if (isset($values[$predeffield]) && isset($default_values[$predeffield])) { // Is always default value : not set // Set if already predefined field // Set if ticket template change if (((count($values['_predefined_fields']) == 0) && ($values[$predeffield] == $default_values[$predeffield])) || (isset($values['_predefined_fields'][$predeffield]) && ($values[$predeffield] == $values['_predefined_fields'][$predeffield])) || (isset($values['_tickettemplates_id']) && ($values['_tickettemplates_id'] != $tt->getID()))) { $values[$predeffield] = $predefvalue; $predefined_fields[$predeffield] = $predefvalue; } } else { // Not defined options set as hidden field echo ""; } } // All predefined override : add option to say predifined exists if (count($predefined_fields) == 0) { $predefined_fields['_all_predefined_override'] = 1; } } else { // No template load : reset predefined values if (count($values['_predefined_fields'])) { foreach ($values['_predefined_fields'] as $predeffield => $predefvalue) { if ($values[$predeffield] == $predefvalue) { $values[$predeffield] = $default_values[$predeffield]; } } } } if (($CFG_GLPI['urgency_mask'] == (1<<3)) || $tt->isHiddenField('urgency')) { // Dont show dropdown if only 1 value enabled or field is hidden echo ""; } // Display predefined fields if hidden if ($tt->isHiddenField('items_id')) { if (!empty($values['items_id'])) { foreach ($values['items_id'] as $itemtype => $items) { foreach ($items as $items_id) { echo ""; } } } } if ($tt->isHiddenField('locations_id')) { echo ""; } echo ""; echo ""; echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; if ($CFG_GLPI['urgency_mask'] != (1<<3)) { if (!$tt->isHiddenField('urgency')) { echo ""; echo ""; echo ""; } } if (empty($delegating) && NotificationTargetTicket::isAuthorMailingActivatedForHelpdesk()) { echo ""; echo ""; echo ""; } if (($_SESSION["glpiactiveprofile"]["helpdesk_hardware"] != 0) && (count($_SESSION["glpiactiveprofile"]["helpdesk_item_type"]))) { if (!$tt->isHiddenField('itemtype')) { echo ""; echo ""; echo ""; } } if (!$tt->isHiddenField('locations_id')) { echo ""; } if (!$tt->isHiddenField('_users_id_observer') || $tt->isPredefinedField('_users_id_observer')) { echo ""; echo ""; echo ""; } if (!$tt->isHiddenField('name') || $tt->isPredefinedField('name')) { echo ""; echo ""; } if (!$tt->isHiddenField('content') || $tt->isPredefinedField('content')) { echo ""; echo ""; } echo ""; echo ""; // File upload system $width = '100%'; if ($CFG_GLPI['use_rich_text']) { $width = '50%'; } echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; if (!$ticket_template) { echo ""; echo ""; } echo "
".$caseInfo->processName.""; if (Session::isMultiEntitiesMode()) { echo "(".Dropdown::getDropdownName("glpi_entities", $_REQUEST['entities_id']).")"; } echo "
".sprintf(__('%1$s%2$s'), __('Urgency'), $tt->getMandatoryMark('urgency')). ""; Ticket::dropdownUrgency(array('value' => $values["urgency"])); echo "
".__('Inform me about the actions taken').""; if ($values["_users_id_requester"] == 0) { $values['_users_id_requester'] = Session::getLoginUserID(); } $_POST['value'] = $values['_users_id_requester']; $_POST['field'] = '_users_id_requester_notif'; $_POST['use_notification'] = $values['_users_id_requester_notif']['use_notification']; include (GLPI_ROOT."/ajax/uemailUpdate.php"); echo "
".sprintf(__('%1$s%2$s'), _n('Watcher', 'Watchers', 2), $tt->getMandatoryMark('_users_id_observer')).""; $values['_right'] = "groups"; if (!$tt->isHiddenField('_users_id_observer')) { // Observer if ($tt->isPredefinedField('_users_id_observer') && !is_array($values['_users_id_observer'])) { //convert predefined value to array $values['_users_id_observer'] = array($values['_users_id_observer']); $values['_users_id_observer_notif']['use_notification'] = array($values['_users_id_observer_notif']['use_notification']); // add new line to permit adding more observers $values['_users_id_observer'][1] = 0; $values['_users_id_observer_notif']['use_notification'][1] = 1; } echo "
"; if (isset($values['_users_id_observer'])) { $observers = $values['_users_id_observer']; foreach ($observers as $index_observer => $observer) { $options = array_merge($values, array('_user_index' => $index_observer)); Ticket::showFormHelpdeskObserver($options); } } echo "
"; } else { // predefined value if (isset($values["_users_id_observer"]) && $values["_users_id_observer"]) { echo Ticket::getActorIcon('user', CommonITILActor::OBSERVER)." "; echo Dropdown::getDropdownName("glpi_users", $values["_users_id_observer"]); echo ""; } } echo "
"; $rand = rand(); $pmCaseUser = $caseInfo->currentUsers[0]; // by default $paramsURL = "DEL_INDEX=".$pmCaseUser->delIndex."&action=".$caseInfo->caseStatus; echo ""; echo "
".sprintf(__('%1$s (%2$s)'), __('File'), Document::getMaxUploadSize()); DocumentType::showAvailableTypesLink(); echo ""; echo "
"; echo "
"; echo ""; echo ""; if ($CFG_GLPI['use_rich_text']) { echo ""; } echo "
"; echo Html::file(array('multiple' => true, 'values' => array('filename' => $values['_filename'], 'tag' => $values['_tag_filename']) )); // "
"; echo "
"; if (!isset($rand)) { $rand = mt_rand(); } echo Html::initImagePasteSystem($content_id, $rand); echo "
"; echo "
"; if (!$ticket_template) { Html::closeForm(); } } function processMakerShowCase( $ID, $from_helpdesk ) { global $CFG_GLPI; $pmItem = new PluginProcessmakerProcessmaker( ); $pmItem->login( ); $caseInfo = $pmItem->getCaseInfo( $_REQUEST['case_id'] ); if ($caseInfo->status_code == 0) { // case is created // Must show it... $rand = rand(); echo ""; //?rand=$rand' showFormHelpdesk(Session::getLoginUserID(), $pmItem, $caseInfo); } } function in_array_recursive($needle, $haystack) { $it = new RecursiveIteratorIterator(new RecursiveArrayIterator($haystack)); foreach ($it AS $element) { if ($element == $needle) { return true; } } return false; } //// redirect if no create ticket right //if (!Session::haveRight('ticket', CREATE )) { // if (Session::haveRight('observe_ticket', 1) || Session::haveRight('validate_ticket', 1)) { // Html::redirect($CFG_GLPI['root_doc']."/front/ticket.php"); // } else if (Session::haveRight('reservation_helpdesk', 1)) { // Html::redirect($CFG_GLPI['root_doc']."/front/reservationitem.php"); // } else if (Session::haveRight('faq', READ)) { // Html::redirect($CFG_GLPI['root_doc']."/front/helpdesk.faq.php"); // } //} //Session::checkHelpdeskAccess(); //Html::helpHeader($LANG['job'][13], $_SERVER['PHP_SELF'], $_SESSION["glpiname"]); // Change profile system if (isset($_POST['newprofile'])) { if (isset($_SESSION["glpiprofiles"][$_POST['newprofile']])) { Session::changeProfile($_POST['newprofile']); if ($_SESSION["glpiactiveprofile"]["interface"] == "central") { Html::redirect($CFG_GLPI['root_doc']."/front/central.php"); } else { Html::redirect($_SERVER['PHP_SELF']); } } else { Html::redirect(preg_replace("/entities_id=.*/", "", $_SERVER['HTTP_REFERER'])); } } // Manage entity change if (isset($_GET["active_entity"])) { if (!isset($_GET["is_recursive"])) { $_GET["is_recursive"] = 0; } if (Session::changeActiveEntities($_GET["active_entity"], $_GET["is_recursive"])) { if ($_GET["active_entity"] == $_SESSION["glpiactive_entity"]) { Html::redirect(preg_replace("/entities_id.*/", "", $_SERVER['HTTP_REFERER'])); } } } // Redirect management if (isset($_GET["redirect"])) { Toolbox::manageRedirect($_GET["redirect"]); } // redirect if no create ticket right if (!Session::haveRight('ticket', CREATE) && !Session::haveRight('reminder_public', READ) && !Session::haveRight("rssfeed_public", READ)) { if (Session::haveRight('followup', TicketFollowup::SEEPUBLIC) || Session::haveRight('task', TicketTask::SEEPUBLIC) || Session::haveRightsOr('ticketvalidation', array(TicketValidation::VALIDATEREQUEST, TicketValidation::VALIDATEINCIDENT))) { Html::redirect($CFG_GLPI['root_doc']."/front/ticket.php"); } else if (Session::haveRight('reservation', ReservationItem::RESERVEANITEM)) { Html::redirect($CFG_GLPI['root_doc']."/front/reservationitem.php"); } else if (Session::haveRight('knowbase', KnowbaseItem::READFAQ)) { Html::redirect($CFG_GLPI['root_doc']."/front/helpdesk.faq.php"); } } Session::checkHelpdeskAccess(); Html::helpHeader(__('New ticket'), $_SERVER['PHP_SELF'], $_SESSION["glpiname"]); if (isset($_REQUEST['case_id'])) { $query = "SELECT * FROM glpi_plugin_processmaker_cases WHERE id='".$_REQUEST['case_id']."'"; $res = $DB->query( $query ); if ($DB->numrows( $res )) { // a ticket already exists for this case, then show new cases processMakerShowProcessList(Session::getLoginUserID(), 1); } else { // before showing the case, we must check the rights for this user to view it, if entity has been changed in the meanwhile // and must check if entity of the ticket is in the tree of authorized entities for current profile $processList = PluginProcessmakerProcessmaker::getProcessesWithCategoryAndProfile( $_REQUEST["itilcategories_id"], $_REQUEST["type"], $_SESSION['glpiactiveprofile']['id'], $_REQUEST['entities_id'] ); if (in_array( $_REQUEST['entities_id'], $_SESSION['glpiactiveentities']) && in_array_recursive( $_REQUEST['process_id'], $processList )) { processMakerShowCase(Session::getLoginUserID(), 1); } else { Html::redirect($CFG_GLPI["root_doc"]."/front/helpdesk.public.php?create_ticket=1"); } } } else { processMakerShowProcessList(Session::getLoginUserID(), 1); } Html::helpFooter();