/** * Cron for ticketsatisfaction's automatic generated * * @param $task : crontask object * * @return integer (0 : nothing done - 1 : done) **/ static function cronCreateInquest($task) { global $DB; $conf = new Entitydata(); $inquest = new TicketSatisfaction(); $tot = 0; $maxentity = array(); $tabentities = array(); $rate = EntityData::getUsedConfig('inquest_config', 0, 'inquest_rate'); if ($rate > 0) { $tabentities[0] = $rate; } foreach ($DB->request('glpi_entities') as $entity) { $rate = EntityData::getUsedConfig('inquest_config', $entity['id'], 'inquest_rate'); $parent = EntityData::getUsedConfig('inquest_config', $entity['id'], 'entities_id'); if ($rate > 0) { $tabentities[$entity['id']] = $rate; } } foreach ($tabentities as $entity => $rate) { $parent = EntityData::getUsedConfig('inquest_config', $entity, 'entities_id'); $delay = EntityData::getUsedConfig('inquest_config', $entity, 'inquest_delay'); $type = EntityData::getUsedConfig('inquest_config', $entity); $max_closedate = EntityData::getUsedConfig('inquest_config', $entity, 'max_closedate'); $query = "SELECT `glpi_tickets`.`id`,\n `glpi_tickets`.`closedate`,\n `glpi_tickets`.`entities_id`\n FROM `glpi_tickets`\n LEFT JOIN `glpi_ticketsatisfactions`\n ON `glpi_ticketsatisfactions`.`tickets_id` = `glpi_tickets`.`id`\n WHERE `glpi_tickets`.`entities_id` = '{$entity}'\n AND `glpi_tickets`.`status` = 'closed'\n AND `glpi_tickets`.`closedate` > '{$max_closedate}'\n AND ADDDATE(`glpi_tickets`.`closedate`, INTERVAL {$delay} DAY)<=NOW()\n AND `glpi_ticketsatisfactions`.`id` IS NULL\n ORDER BY `closedate` ASC"; $nb = 0; $max_closedate = ''; foreach ($DB->request($query) as $tick) { $max_closedate = $tick['closedate']; if (mt_rand(1, 100) <= $rate) { if ($inquest->add(array('tickets_id' => $tick['id'], 'date_begin' => $_SESSION["glpi_currenttime"], 'entities_id' => $tick['entities_id'], 'type' => $type))) { $nb++; } } } // conservation de toutes les max_closedate des entites filles if (!empty($max_closedate) && (!isset($maxentity[$parent]) || $max_closedate > $maxentity[$parent])) { $maxentity[$parent] = $max_closedate; } if ($nb) { $tot += $nb; $task->addVolume($nb); $task->log(Dropdown::getDropdownName('glpi_entities', $entity) . " : {$nb}"); } } // Sauvegarde du max_closedate pour ne pas tester les même tickets 2 fois foreach ($maxentity as $parent => $maxdate) { $conf->getFromDB($parent); $conf->update(array('id' => $conf->fields['id'], 'entities_id' => $parent, 'max_closedate' => $maxdate)); } return $tot > 0; }
function prepareInputForUpdate($input) { $infocom = new self(); $infocom->getFromDB($input['id']); $entitydata = new EntityData(); $entitydata->getFromDB($infocom->fields['entities_id']); if (isset($input['warranty_duration'])) { $input['_warranty_duration'] = $this->fields['warranty_duration']; } //Check if one or more dates needs to be updated foreach (self::getAutoManagemendDatesFields() as $key => $field) { $result = EntityData::getUsedConfig($key, $infocom->fields['entities_id']); //Only update date if it's empty in DB. Otherwise do nothing if ($result > 0 && !isset($infocom->fields[$field])) { self::autofillDates($input, $field, $result); } } return $input; }
if (haveRight('own_ticket', 1) && haveRight('update_ticket', 1)) { $users_id_requester = 0; } // Set default value... $values = array('_users_id_requester' => $users_id_requester, '_users_id_requester_notif' => array('use_notification' => 1), '_groups_id_requester' => 0, '_users_id_assign' => 0, '_users_id_assign_notif' => array('use_notification' => 1), '_groups_id_assign' => 0, '_users_id_observer' => 0, '_users_id_observer_notif' => array('use_notification' => 1), '_groups_id_observer' => 0, 'suppliers_id_assign' => 0, 'name' => '', 'content' => '', 'ticketcategories_id' => 0, 'urgency' => 3, 'impact' => 3, 'priority' => Ticket::computePriority(3, 3), 'requesttypes_id' => $_SESSION["glpidefault_requesttypes_id"], 'hour' => 0, 'minute' => 0, 'date' => $_SESSION["glpi_currenttime"], 'entities_id' => $_SESSION["glpiactive_entity"], 'status' => 'new', 'followup' => array(), 'itemtype' => '', 'items_id' => 0, 'plan' => array(), 'global_validation' => 'none', 'due_date' => '', 'slas_id' => 0, '_add_validation' => 0, 'type' => -1); // Restore saved value or override with page parameter foreach ($values as $name => $value) { if (isset($_REQUEST[$name])) { $values[$name] = $_REQUEST[$name]; } else { if (isset($_SESSION["helpdeskSaved"][$name])) { $values[$name] = $_SESSION["helpdeskSaved"]["{$name}"]; } } } // Clean text fields $values['name'] = stripslashes($values['name']); $values['content'] = cleanPostForTextArea($values['content']); if (isset($_SESSION["helpdeskSaved"])) { unset($_SESSION["helpdeskSaved"]); } if ($values['type'] <= 0) { $values['type'] = EntityData::getUsedConfig('tickettype', $values['entities_id']); } $track->showForm(0, $values); } if ($_SESSION["glpiactiveprofile"]["interface"] == "helpdesk") { helpFooter(); } else { commonFooter(); }
private function groups($closed = true) { global $DB; $DB->connect(); $a_storedate_temp = self::$storedate; $a_states = getAllDatasFromTable('glpi_plugin_timelineticket_assigngroups', '', FALSE, 'id'); $this->assertEquals(3, count($a_states), 'Number of lines in assigngroup table of plugin'); $ticket = new Ticket(); $calendar = new Calendar(); $ticket->getFromDB(1); $calendars_id = EntityData::getUsedConfig('calendars_id', $ticket->fields['entities_id']); // * 07/ if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) { $begin = $calendar->getActiveTimeBetween($ticket->fields['date'], $a_storedate_temp[3]); } else { // case 24/24 - 7/7 $begin = strtotime($a_storedate_temp[3]) - strtotime($ticket->fields['date']); } $a_ref = array('id' => '1', 'tickets_id' => '1', 'date' => $a_storedate_temp[3], 'groups_id' => '1', 'begin' => $begin, 'delay' => strtotime($a_storedate_temp[7]) - strtotime($a_storedate_temp[3])); $this->assertEquals($a_ref, $a_states[1], '(07/) Group 1'); // * 14/ if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) { $begin = $calendar->getActiveTimeBetween($ticket->fields['date'], $a_storedate_temp[9]); } else { // case 24/24 - 7/7 $begin = strtotime($a_storedate_temp[9]) - strtotime($ticket->fields['date']); } $a_ref = array('id' => '2', 'tickets_id' => '1', 'date' => $a_storedate_temp[9], 'groups_id' => '2', 'begin' => $begin, 'delay' => strtotime($a_storedate_temp[13]) - strtotime($a_storedate_temp[9])); $this->assertEquals($a_ref, $a_states[2], '(14/) Group 2'); // * 20/ if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) { $begin = $calendar->getActiveTimeBetween($ticket->fields['date'], $a_storedate_temp[13]); } else { // case 24/24 - 7/7 $begin = strtotime($a_storedate_temp[13]) - strtotime($ticket->fields['date']); } $a_ref = array('id' => '3', 'tickets_id' => '1', 'date' => $a_storedate_temp[13], 'groups_id' => '1', 'begin' => $begin, 'delay' => NULL); $this->assertEquals($a_ref, $a_states[3], '(20/) Group 1'); }