/** * Retrieve an item from the database with additional datas * * @since version 0.83 * * @param $ID integer ID of the item to get * @param $withtypeandcategory boolean with type and category (true by default) * * @return true if succeed else false **/ function getFromDBWithDatas($ID, $withtypeandcategory = true) { global $DB; if ($this->getFromDB($ID)) { $ticket = new Ticket(); $tth = new TicketTemplateHiddenField(); $this->hidden = $tth->getHiddenFields($ID, $withtypeandcategory); // Force items_id if itemtype is defined if (isset($this->hidden['itemtype']) && !isset($this->hidden['items_id'])) { $this->hidden['items_id'] = $ticket->getSearchOptionIDByField('field', 'items_id', 'glpi_tickets'); } // Always get all mandatory fields $ttm = new TicketTemplateMandatoryField(); $this->mandatory = $ttm->getMandatoryFields($ID); // Force items_id if itemtype is defined if (isset($this->mandatory['itemtype']) && !isset($this->mandatory['items_id'])) { $this->mandatory['items_id'] = $ticket->getSearchOptionIDByField('field', 'items_id', 'glpi_tickets'); } $ttp = new TicketTemplatePredefinedField(); $this->predefined = $ttp->getPredefinedFields($ID, $withtypeandcategory); // Compute due_date if (isset($this->predefined['due_date'])) { $this->predefined['due_date'] = Html::computeGenericDateTimeSearch($this->predefined['due_date'], false); } // Compute date if (isset($this->predefined['date'])) { $this->predefined['date'] = Html::computeGenericDateTimeSearch($this->predefined['date'], false); } return true; } return false; }
This file is part of GLPI. GLPI is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. GLPI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GLPI. If not, see <http://www.gnu.org/licenses/>. -------------------------------------------------------------------------- */ /** @file * @brief */ include '../inc/includes.php'; Session::checkRight('tickettemplate', 'w'); $item = new TicketTemplatePredefinedField(); // Use masiveaction system to manage add value if (isset($_POST["massiveaction"])) { $item->check(-1, 'w', $_POST); if ($item->add($_POST)) { Event::log($_POST["tickettemplates_id"], "tickettemplate", 4, "maintain", sprintf(__('%s adds predefined field'), $_SESSION["glpiname"])); } Html::back(); } Html::displayErrorAndDie("lost");
This file is part of GLPI. GLPI is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. GLPI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GLPI. If not, see <http://www.gnu.org/licenses/>. -------------------------------------------------------------------------- */ /** @file * @brief */ include '../inc/includes.php'; Session::checkRight('tickettemplate', UPDATE); $item = new TicketTemplatePredefinedField(); // Use masiveaction system to manage add value if (isset($_POST["massiveaction"])) { $item->check(-1, UPDATE, $_POST); if ($item->add($_POST)) { Event::log($_POST["tickettemplates_id"], "tickettemplate", 4, "maintain", sprintf(__('%s adds predefined field'), $_SESSION["glpiname"])); } Html::back(); } Html::displayErrorAndDie("lost");
public static function install(Migration $migration) { $table = getTableForItemType(__CLASS__); if (!TableExists($table)) { $query = "CREATE TABLE IF NOT EXISTS `{$table}` (\n `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,\n `plugin_formcreator_forms_id` tinyint(1) NOT NULL,\n `itemtype` varchar(100) NOT NULL DEFAULT 'PluginFormcreatorTargetTicket',\n `items_id` int(11) NOT NULL DEFAULT 0,\n `name` varchar(255) NOT NULL DEFAULT ''\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $GLOBALS['DB']->query($query) or die($GLOBALS['DB']->error()); // Migration from previous version } elseif (!FieldExists($table, 'itemtype', false)) { // Migration from version 1.5 to 1.6 if (!FieldExists($table, 'type', false)) { $query = "ALTER TABLE `{$table}`\n ADD `type` tinyint(1) NOT NULL default '2';"; $GLOBALS['DB']->query($query); } // Add new column for link with target items $query = "ALTER TABLE `{$table}`\n ADD `itemtype` varchar(100) NOT NULL DEFAULT 'PluginFormcreatorTargetTicket',\n ADD `items_id` int(11) NOT NULL DEFAULT 0;"; $GLOBALS['DB']->query($query); // Create ticket template for each configuration in DB $query = "SELECT t.`urgency`, t.`priority`, t.`itilcategories_id`, t.`type`, f.`entities_id`\n FROM `glpi_plugin_formcreator_targets` t, `glpi_plugin_formcreator_forms` f\n WHERE f.`id` = t.`plugin_formcreator_forms_id`\n GROUP BY t.`urgency`, t.`priority`, t.`itilcategories_id`, t.`type`, f.`entities_id`"; $result = $GLOBALS['DB']->query($query) or die($GLOBALS['DB']->error()); $i = 0; while ($ligne = $GLOBALS['DB']->fetch_array($result)) { $i++; $id = $ligne['urgency'] . $ligne['priority'] . $ligne['itilcategories_id'] . $ligne['type']; $template = new TicketTemplate(); $template_id = $template->add(array('name' => 'Template Formcreator ' . $i, 'entities_id' => $ligne['entities_id'], 'is_recursive' => 1)); $predefinedField = new TicketTemplatePredefinedField(); // Urgency if (!empty($ligne['urgency'])) { $predefinedField->add(array('tickettemplates_id' => $template_id, 'num' => 10, 'value' => $ligne['urgency'])); } // Priority if (!empty($ligne['priority'])) { $predefinedField->add(array('tickettemplates_id' => $template_id, 'num' => 3, 'value' => $ligne['priority'])); } // Category if (!empty($ligne['itilcategories_id'])) { $predefinedField->add(array('tickettemplates_id' => $template_id, 'num' => 7, 'value' => $ligne['itilcategories_id'])); } // Type if (!empty($ligne['type'])) { $predefinedField->add(array('tickettemplates_id' => $template_id, 'num' => 14, 'value' => $ligne['type'])); } $_SESSION["formcreator_tmp"]["ticket_template"]["{$id}"] = $template_id; } // Prepare Mysql CASE For each ticket template $mysql_case_template = "CASE CONCAT(`urgency`, `priority`, `itilcategories_id`, `type`)"; foreach ($_SESSION["formcreator_tmp"]["ticket_template"] as $id => $value) { $mysql_case_template .= " WHEN {$id} THEN {$value} "; } $mysql_case_template .= "END AS `tickettemplates_id`"; // Create Target ticket $version = plugin_version_formcreator(); $migration = new Migration($version['version']); require_once 'targetticket.class.php'; PluginFormcreatorTargetTicket::install($migration); $table_targetticket = getTableForItemType('PluginFormcreatorTargetTicket'); $query = "SELECT `id`, `name`, {$mysql_case_template}, `content` FROM `{$table}`;"; $result = $GLOBALS['DB']->query($query); while ($line = $GLOBALS['DB']->fetch_array($result)) { // Insert target ticket $query_insert = "INSERT INTO {$table_targetticket} SET\n `name` = \"{$line['name']}\",\n `tickettemplates_id` = \"{$line['tickettemplates_id']}\",\n `comment` = \"{$line['content']}\""; $GLOBALS['DB']->query($query_insert); $targetticket_id = $GLOBALS['DB']->insert_id(); // Update target with target ticket id $query_update = "UPDATE `{$table}` SET `items_id` = {$targetticket_id} WHERE `id` = {$line['id']}"; $GLOBALS['DB']->query($query_update); } // Remove useless column content $GLOBALS['DB']->query("ALTER TABLE `{$table}` DROP `content`;"); } return true; }
public function save($form, $input) { $datas = array(); $ticket = new Ticket(); $docItem = new Document_Item(); // Get default request type $query = "SELECT id FROM `glpi_requesttypes` WHERE `name` LIKE 'Formcreator';"; $result = $GLOBALS['DB']->query($query) or die($DB->error()); list($requesttypes_id) = $GLOBALS['DB']->fetch_array($result); $datas['requesttypes_id'] = $requesttypes_id; // Get predefined Fields $ttp = new TicketTemplatePredefinedField(); $predefined_fields = $ttp->getPredefinedFields($this->fields['tickettemplates_id'], true); $datas = array_merge($datas, $predefined_fields); $datas['name'] = $this->parseTags($this->fields['name'], $form, $input); $datas['content'] = $this->parseTags($this->fields['comment'], $form, $input); $datas['entities_id'] = isset($_SESSION['glpiactive_entity']) ? $_SESSION['glpiactive_entity'] : $form->fields['entities_id']; $ticketID = $ticket->add($datas); if (!empty($_SESSION['formcreator_documents'])) { foreach ($_SESSION['formcreator_documents'] as $docID) { $docItem->add(array('documents_id' => $docID, 'itemtype' => 'Ticket', 'items_id' => $ticketID)); } } }
/** * Create a ticket based on ticket recurrent infos * * @param $data array data of a entry of glpi_ticketrecurrents * * @return boolean **/ static function createTicket($data) { $result = false; $tt = new TicketTemplate(); // Create ticket based on ticket template and entity information of ticketrecurrent if ($tt->getFromDB($data['tickettemplates_id'])) { // Get default values for ticket $input = Ticket::getDefaultValues($data['entities_id']); // Apply tickettemplates predefined values $ttp = new TicketTemplatePredefinedField(); $predefined = $ttp->getPredefinedFields($data['tickettemplates_id'], true); if (count($predefined)) { foreach ($predefined as $predeffield => $predefvalue) { $input[$predeffield] = $predefvalue; } } // Set date to creation date $createtime = strtotime($data['next_creation_date']) + $data['create_before']; $input['date'] = date('Y-m-d H:i:s', $createtime); if (isset($predefined['date'])) { $input['date'] = Html::computeGenericDateTimeSearch($predefined['date'], false, $createtime); } // Compute due_date if predefined based on create date if (isset($predefined['due_date'])) { $input['due_date'] = Html::computeGenericDateTimeSearch($predefined['due_date'], false, $createtime); } // Set entity $input['entities_id'] = $data['entities_id']; $input['_auto_import'] = true; $ticket = new Ticket(); $input = Toolbox::addslashes_deep($input); if ($tid = $ticket->add($input)) { $msg = sprintf(__('Ticket %d successfully created'), $tid); $result = true; } else { $msg = __('Ticket creation failed (check mandatory fields)'); } } else { $msg = __('Ticket creation failed (no template)'); } $changes[0] = 0; $changes[1] = ''; $changes[2] = addslashes($msg); Log::history($data['id'], __CLASS__, $changes, '', Log::HISTORY_LOG_SIMPLE_MESSAGE); // Compute next creation date $tr = new self(); if ($tr->getFromDB($data['id'])) { $input = array(); $input['id'] = $data['id']; $input['next_creation_date'] = $tr->computeNextCreationDate($data['begin_date'], $data['end_date'], $data['periodicity'], $data['create_before'], $data['calendars_id']); $tr->update($input); } return $result; }
public function generateNewItem($params) { global $DB; // Retrieve plugin configuration $config = new PluginOrderConfig(); $reference = new PluginOrderReference(); foreach ($params["id"] as $tmp => $values) { //If itemtype cannot be generated, go to the new occurence if (in_array($values['itemtype'], self::getTypesThanCannotBeGenerared())) { continue; } $entity = $values["entities_id"]; //------------- Template management -----------------------// //Look for a template in the entity $templateID = $reference->checkIfTemplateExistsInEntity($values["id"], $values["itemtype"], $entity); $item = new $values["itemtype"](); if ($values['itemtype']) { $order = new PluginOrderOrder(); } $order->getFromDB($values["plugin_order_orders_id"]); $reference->getFromDB($params["plugin_order_references_id"]); if ($templateID) { $item->getFromDB($templateID); unset($item->fields["is_template"]); unset($item->fields["date_mod"]); $fields = array(); foreach ($item->fields as $key => $value) { if ($value != '' && (!isset($fields[$key]) || $fields[$key] == '' || $fields[$key] == 0)) { $input[$key] = $value; } } if ($config->getGeneratedAssetState()) { $input["states_id"] = $config->getGeneratedAssetState(); } $input["entities_id"] = $entity; $input["serial"] = $values["serial"]; if ($item->fields['name']) { $input["name"] = autoName($item->fields["name"], "name", $templateID, $values["itemtype"], $entity); } else { $input["name"] = $values["name"]; } if ($item->getField('otherserial') != NOT_AVAILABLE) { if ($item->fields['otherserial']) { $input["otherserial"] = autoName($item->fields["otherserial"], "otherserial", $templateID, $values["itemtype"], $entity); } else { $input["otherserial"] = $values["otherserial"]; } } if ($config->canAddLocation()) { $input['locations_id'] = $order->fields['locations_id']; } } elseif ($values["itemtype"] == 'Contract') { $input["name"] = $values["name"]; $input["entities_id"] = $entity; $input['contracttypes_id'] = $reference->fields['types_id']; } else { if ($config->getGeneratedAssetState()) { $input["states_id"] = $config->getGeneratedAssetState(); } else { $input["states_id"] = 0; } $input["entities_id"] = $entity; $input["serial"] = $values["serial"]; $input["otherserial"] = $values["otherserial"]; $input["name"] = $values["name"]; // Get bill data if ($config->canAddLocation()) { $input['locations_id'] = $order->fields['locations_id']; } $input["manufacturers_id"] = $reference->fields["manufacturers_id"]; $typefield = getForeignKeyFieldForTable(getTableForItemType($values["itemtype"] . "Type")); $input[$typefield] = $reference->fields["types_id"]; $modelfield = getForeignKeyFieldForTable(getTableForItemType($values["itemtype"] . "Model")); $input[$modelfield] = $reference->fields["models_id"]; } $input = Toolbox::addslashes_deep($input); $newID = $item->add($input); // Attach new ticket if option is on if (isset($params['generate_ticket'])) { $tkt = new TicketTemplate(); if ($tkt->getFromDB($params['generate_ticket']['tickettemplates_id'])) { $input = array(); $input = Ticket::getDefaultValues($entity); $ttp = new TicketTemplatePredefinedField(); $predefined = $ttp->getPredefinedFields($params['generate_ticket']['tickettemplates_id'], true); if (count($predefined)) { foreach ($predefined as $predeffield => $predefvalue) { $input[$predeffield] = $predefvalue; } } $input['entities_id'] = $entity; $input['_users_id_requester'] = empty($order->fields['users_id']) ? Session::getLoginUserID() : $order->fields['users_id']; $input['items_id'] = $newID; $input['itemtype'] = $values["itemtype"]; $ticket = new Ticket(); $ticketID = $ticket->add($input); } } //-------------- End template management ---------------------------------// $result = $this->createLinkWithItem($values["id"], $newID, $values["itemtype"], $values["plugin_order_orders_id"], $entity, $templateID, false, false); //Add item's history $new_value = __("Item generated by using order", "order") . ' : ' . $order->fields["name"]; $order->addHistory($values["itemtype"], '', $new_value, $newID); //Add order's history $new_value = __("Item generated by using order", "order") . ' : '; $new_value .= $item->getTypeName() . " -> " . $item->getField("name"); $order->addHistory('PluginOrderOrder', '', $new_value, $values["plugin_order_orders_id"]); //Copy order documents if needed self::copyDocuments($values['itemtype'], $newID, $values["plugin_order_orders_id"], $entity); Session::addMessageAfterRedirect(__("Item successfully selected", "order"), true); } }
/** * Save form datas to the target * * @param PluginFormcreatorFormanswer $formanswer Answers previously saved */ public function save(PluginFormcreatorFormanswer $formanswer) { $datas = array(); $ticket = new Ticket(); $docItem = new Document_Item(); $form = new PluginFormcreatorForm(); $form->getFromDB($formanswer->fields['plugin_formcreator_forms_id']); // Get default request type $query = "SELECT id FROM `glpi_requesttypes` WHERE `name` LIKE 'Formcreator';"; $result = $GLOBALS['DB']->query($query) or die($GLOBALS['DB']->error()); list($requesttypes_id) = $GLOBALS['DB']->fetch_array($result); $datas['requesttypes_id'] = $requesttypes_id; // Get predefined Fields $ttp = new TicketTemplatePredefinedField(); $predefined_fields = $ttp->getPredefinedFields($this->fields['tickettemplates_id'], true); $datas = array_merge($datas, $predefined_fields); // Parse datas and tags $datas['name'] = addslashes($this->parseTags($this->fields['name'], $formanswer)); $datas['content'] = htmlentities($this->parseTags($this->fields['comment'], $formanswer)); $datas['entities_id'] = isset($_SESSION['glpiactive_entity']) ? $_SESSION['glpiactive_entity'] : $form->fields['entities_id']; $datas['_users_id_requester'] = 0; $datas['_users_id_recipient'] = $_SESSION['glpiID']; $datas['_tickettemplates_id'] = $this->fields['tickettemplates_id']; // Define due date $answer = new PluginFormcreatorAnswer(); $found = $answer->find('plugin_formcreator_formanwers_id = ' . (int) $formanswer->fields['id'] . ' AND plugin_formcreator_question_id = ' . (int) $this->fields['due_date_question']); $date = array_shift($found); $str = "+" . $this->fields['due_date_value'] . " " . $this->fields['due_date_period']; switch ($this->fields['due_date_rule']) { case 'answer': $due_date = $date['answer']; break; case 'ticket': $due_date = date('Y-m-d H:i:s', strtotime($str)); break; case 'calcul': $due_date = date('Y-m-d H:i:s', strtotime($date['answer'] . " " . $str)); break; default: $due_date = null; break; } if (!is_null($due_date)) { $datas['due_date'] = $due_date; } // Select ticket actors $query = "SELECT id, actor_type, actor_value, use_notification\n FROM glpi_plugin_formcreator_targettickets_actors\n WHERE plugin_formcreator_targettickets_id = " . $this->getID() . "\n AND actor_role = 'requester'"; $result = $GLOBALS['DB']->query($query); // If there is only one requester add it on creation, otherwize we will add them later if ($GLOBALS['DB']->numrows($result) == 1) { $actor = $GLOBALS['DB']->fetch_array($result); switch ($actor['actor_type']) { case 'creator': $user_id = $formanswer->fields['requester_id']; break; case 'validator': $user_id = $formanswer->fields['validator_id']; break; case 'person': case 'group': case 'supplier': $user_id = $actor['actor_value']; break; case 'question_person': case 'question_group': case 'question_supplier': $answer = new PluginFormcreatorAnswer(); $found = $answer->find('`plugin_formcreator_question_id` = ' . (int) $actor['actor_value'] . ' AND `plugin_formcreator_formanwers_id` = ' . (int) $formanswer->fields['id']); $found = array_shift($found); if (empty($found['answer'])) { continue; } else { $user_id = (int) $found['answer']; } break; } $datas['_users_id_requester'] = $user_id; } // Create the target ticket if (!($ticketID = $ticket->add($datas))) { return false; } // Add link between Ticket and FormAnswer $itemlink = new Item_Ticket(); $itemlink->add(array('itemtype' => 'PluginFormcreatorFormanswer', 'items_id' => $formanswer->fields['id'], 'tickets_id' => $ticketID)); // Add actors to ticket $query = "SELECT id, actor_role, actor_type, actor_value, use_notification\n FROM glpi_plugin_formcreator_targettickets_actors\n WHERE plugin_formcreator_targettickets_id = " . $this->getID(); $result = $GLOBALS['DB']->query($query); while ($actor = $GLOBALS['DB']->fetch_array($result)) { // If actor type is validator and if the form doesn't have a validator, continue to other actors if ($actor['actor_type'] == 'validator' && !$form->fields['validation_required']) { continue; } switch ($actor['actor_role']) { case 'requester': $role = CommonITILActor::REQUESTER; break; case 'observer': $role = CommonITILActor::OBSERVER; break; case 'assigned': $role = CommonITILActor::ASSIGN; break; } switch ($actor['actor_type']) { case 'creator': $user_id = $formanswer->fields['requester_id']; break; case 'validator': $user_id = $formanswer->fields['validator_id']; break; case 'person': case 'group': case 'supplier': $user_id = $actor['actor_value']; break; case 'question_person': case 'question_group': case 'question_supplier': $answer = new PluginFormcreatorAnswer(); $found = $answer->find('`plugin_formcreator_question_id` = ' . (int) $actor['actor_value'] . ' AND `plugin_formcreator_formanwers_id` = ' . (int) $formanswer->fields['id']); $found = array_shift($found); if (empty($found['answer'])) { continue; } else { $user_id = (int) $found['answer']; } break; } switch ($actor['actor_type']) { case 'creator': case 'validator': case 'person': case 'question_person': $obj = new Ticket_User(); $obj->add(array('tickets_id' => $ticketID, 'users_id' => $user_id, 'type' => $role, 'use_notification' => $actor['use_notification'])); break; case 'group': case 'question_group': $obj = new Group_Ticket(); $obj->add(array('tickets_id' => $ticketID, 'groups_id' => $user_id, 'type' => $role, 'use_notification' => $actor['use_notification'])); break; case 'supplier': case 'question_supplier': $obj = new Supplier_Ticket(); $obj->add(array('tickets_id' => $ticketID, 'suppliers_id' => $user_id, 'type' => $role, 'use_notification' => $actor['use_notification'])); break; } } // Attach documents to ticket $found = $docItem->find("itemtype = 'PluginFormcreatorFormanswer' AND items_id = " . (int) $formanswer->getID()); if (count($found) > 0) { foreach ($found as $document) { $docItem->add(array('documents_id' => $document['documents_id'], 'itemtype' => 'Ticket', 'items_id' => $ticketID)); } } // Attach validation message as first ticket followup if validation is required and // if is set in ticket target configuration // /!\ Followup is directly saved to the database to avoid double notification on ticket // creation and add followup if ($form->fields['validation_required'] && $this->fields['validation_followup']) { $message = addslashes(__('Your form have been accepted by the validator', 'formcreator')); if (!empty($formanswer->fields['comment'])) { $message .= "\n" . addslashes($formanswer->fields['comment']); } $query = "INSERT INTO `glpi_ticketfollowups` SET\n `tickets_id` = {$ticketID},\n `date` = NOW(),\n `users_id` = {$_SESSION['glpiID']},\n `content` = \"{$message}\""; $GLOBALS['DB']->query($query); } return true; }
static function updateTicketFromForm($idform, $idticket) { global $DB; $datas = array(); $templates_id = PluginFormcreatorForm::getTemplateTicketFromForm($idform); $ttp = new TicketTemplatePredefinedField(); $predefined_fields = $ttp->getPredefinedFields($templates_id, true); $Ticket = new Ticket(); $listaObjetos = $Ticket->find("id = '{$idticket}'"); //$listaobjetos es un array que contiene, por cada ticket que comple la condición del find, un array con los campos del ticket $clave = array_keys($listaObjetos); if (isset($clave[0])) { if (isset($listaObjetos[$clave[0]])) { $datas = $listaObjetos[$clave[0]]; unset($datas['urgency']); // unset($datas['priority']); // unset($datas['type']); // unset($datas['itilcategories_id']); // unset($datas['slas_id']); // $datas = array_merge($datas, $predefined_fields); $Ticket->update($datas); } } }
// formulaire par defaut pour les incidents de la catégorie; $template_id = $tickettemplates_id_incident; break; case "2": // formulaire par defaut pour les demandes de la catégorie; $template_id = $tickettemplates_id_demand; break; default: // sans précision le formulaire est indiqué par défaut; $template_id = "1"; //formulaire par defaut; break; } $tt = new TicketTemplate(); $tt->getFromDBWithDatas($template_id, true); $ttp = new TicketTemplatePredefinedField(); $predefined = $ttp->getPredefinedFields($template_id, true); if (isset($predefined['itemtype'])) { $ticket['itemtype'] = $predefined['itemtype']; } if (isset($predefined['items_id'])) { $ticket['items_id'] = $predefined['items_id']; } if (isset($predefined['_users_id_observer'])) { $ticket['_users_id_observer'] = $predefined['_users_id_observer']; } if (isset($predefined['_users_id_assign'])) { $ticket['_users_id_assign'] = $predefined['_users_id_assign']; } if (isset($predefined['_users_id_requester'])) { $ticket['_users_id_requester'] = $predefined['_users_id_requester'];
static function createTicket($data) { $result = false; $tt = new TicketTemplate(); // Create ticket based on ticket template and entity informations of ticketrecurrent if ($tt->getFromDB($data['tickettemplates_id'])) { // Get default values for ticket $input = Ticket::getDefaultValues($data['entities_id']); // Apply tickettemplates predefined values $ttp = new TicketTemplatePredefinedField(); $predefined = $ttp->getPredefinedFields($data['tickettemplates_id'], true); if (count($predefined)) { foreach ($predefined as $predeffield => $predefvalue) { $input[$predeffield] = $predefvalue; } } // Set date to creation date $createtime = date('Y-m-d H:i:s'); $input['date'] = $createtime; // Compute due_date if predefined based on create date if (isset($predefined['due_date'])) { $input['due_date'] = Html::computeGenericDateTimeSearch($predefined['due_date'], false, $createtime); } // Set entity $input['entities_id'] = $data['entities_id']; $input['actiontime'] = $data['actiontime']; $res = new PluginResourcesResource(); if ($res->getFromDB($data['plugin_resources_resources_id'])) { $input['users_id_recipient'] = $res->fields['users_id_recipient']; $input['_users_id_requester'] = $res->fields['users_id_recipient']; if (isset($res->fields['users_id'])) { $input['_users_id_observer'] = $res->fields['users_id']; } $input['_users_id_assign'] = Session::getLoginUserID(); $input["itemtype"] = "PluginResourcesResource"; $input["items_id"] = $data['plugin_resources_resources_id']; $input["name"] .= addslashes(" " . PluginResourcesResource::getResourceName($data['plugin_resources_resources_id'])); } //TODO : ADD checklist lists or add config into plugin ? $input["content"] .= addslashes("\n\n"); $input['status'] = Ticket::CLOSED; $ticket = new Ticket(); $input = Toolbox::addslashes_deep($input); if ($tid = $ticket->add($input)) { $msg = __('Create a end treatment ticket', 'resources') . " OK - ({$tid})"; // Success $result = true; } else { $msg = __('Failed operation'); // Failure } } else { $msg = __('No selected element or badly defined operation'); // Not defined } if ($tid) { $changes[0] = 0; $changes[1] = ''; $changes[2] = addslashes($msg); Log::history($data['plugin_resources_resources_id'], "PluginResourcesResource", $changes, '', Log::HISTORY_LOG_SIMPLE_MESSAGE); } return $result; }