Example #1
0
 /**
  * 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;
 }
Example #3
0
    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');
 }