Ejemplo n.º 1
0
 static function afterAdd(Group_Ticket $item)
 {
     global $DB;
     //Toolbox::logDebug(__METHOD__, $item);
     $config = PluginBehaviorsConfig::getInstance();
     if ($config->getField('add_notif')) {
         if ($item->getField('type') == CommonITILActor::ASSIGN) {
             $ticket = new Ticket();
             if ($ticket->getFromDB($item->getField('tickets_id'))) {
                 NotificationEvent::raiseEvent('plugin_behaviors_ticketnewgrp', $ticket);
             }
         }
     }
     // Check is the connected user is a tech
     if (!is_numeric(Session::getLoginUserID(false)) || !Session::haveRight('own_ticket', 1)) {
         return false;
         // No check
     }
     $config = PluginBehaviorsConfig::getInstance();
     if ($config->getField('single_tech_mode') != 0 && $item->input['type'] == CommonITILActor::ASSIGN) {
         $crit = array('tickets_id' => $item->input['tickets_id'], 'type' => CommonITILActor::ASSIGN);
         foreach ($DB->request('glpi_groups_tickets', $crit) as $data) {
             if ($data['id'] != $item->getID()) {
                 $gu = new Group_Ticket();
                 $gu->delete($data);
             }
         }
         if ($config->getField('single_tech_mode') == 2) {
             foreach ($DB->request('glpi_tickets_users', $crit) as $data) {
                 $gu = new Ticket_User();
                 $gu->delete($data);
             }
         }
     }
 }
 static function beforeUpdate(Problem $problem)
 {
     if (!is_array($problem->input) || !count($problem->input)) {
         // Already cancel by another plugin
         return false;
     }
     //    Toolbox::logDebug("PluginBehaviorsProblem::beforeUpdate(), Problem=", $problem);
     $config = PluginBehaviorsConfig::getInstance();
     // Check is the connected user is a tech
     if (!is_numeric(Session::getLoginUserID(false)) || !Session::haveRight('problem', UPDATE)) {
         return false;
         // No check
     }
     $soltyp = isset($problem->input['solutiontypes_id']) ? $problem->input['solutiontypes_id'] : $problem->fields['solutiontypes_id'];
     // Wand to solve/close the problem
     if (isset($problem->input['solutiontypes_id']) && $problem->input['solutiontypes_id'] || isset($problem->input['solution']) && $problem->input['solution'] || isset($problem->input['status']) && in_array($problem->input['status'], array_merge(Problem::getSolvedStatusArray(), Problem::getClosedStatusArray()))) {
         if ($config->getField('is_problemsolutiontype_mandatory')) {
             if (!$soltyp) {
                 unset($problem->input['status']);
                 unset($problem->input['solution']);
                 unset($problem->input['solutiontypes_id']);
                 Session::addMessageAfterRedirect(__('You cannot close a problem without solution type', 'behaviors'), true, ERROR);
             }
         }
     }
 }
 static function afterUpdate(TicketSatisfaction $ticketsatisfaction)
 {
     $config = PluginBehaviorsConfig::getInstance();
     $ticket = new Ticket();
     if ($config->getField('add_notif') && $ticket->getFromDB($ticketsatisfaction->getField('tickets_id')) && $ticketsatisfaction->input["date_answered"]) {
         NotificationEvent::raiseEvent('plugin_behaviors_replysurvey', $ticket);
     }
 }
Ejemplo n.º 4
0
 static function beforePurge(Computer $comp)
 {
     // Toolbox::logDebug("PluginBehaviorsComputer::beforePurge(), Computer=", $comp);
     $config = PluginBehaviorsConfig::getInstance();
     if ($config->getField('remove_from_ocs') > 0 && class_exists('PluginUninstallUninstall')) {
         PluginUninstallUninstall::deleteComputerInOCSByGlpiID($comp->fields['id']);
     }
 }
 static function afterPurge(Document_Item $document_item)
 {
     $config = PluginBehaviorsConfig::getInstance();
     if ($config->getField('add_notif') && $document_item->fields['itemtype'] == 'Ticket' && isset($_POST['item'])) {
         // prevent not use in case of purge ticket
         $ticket = new Ticket();
         $ticket->getFromDB($document_item->fields['items_id']);
         NotificationEvent::raiseEvent('plugin_behaviors_document_itemdel', $ticket);
     }
 }
 private static function getUserGroup($entity, $userid, $filter = '', $first = true)
 {
     global $DB;
     $config = PluginBehaviorsConfig::getInstance();
     $query = "SELECT glpi_groups.id\n                FROM glpi_groups_users\n                INNER JOIN glpi_groups ON (glpi_groups.id = glpi_groups_users.groups_id)\n                WHERE glpi_groups_users.users_id = '" . $userid . "'" . getEntitiesRestrictRequest(' AND ', 'glpi_groups', '', $entity, true);
     if ($filter) {
         $query .= "AND (" . $filter . ")";
     }
     $rep = array();
     foreach ($DB->request($query) as $data) {
         if ($first) {
             return $data['id'];
         }
         $rep[] = $data['id'];
     }
     return $first ? 0 : $rep;
 }
Ejemplo n.º 7
0
 static function afterUpdate(Ticket $ticket)
 {
     // Toolbox::logDebug("PluginBehaviorsTicket::afterUpdate(), Ticket=", $ticket);
     $config = PluginBehaviorsConfig::getInstance();
     if ($config->getField('add_notif') && in_array('status', $ticket->updates) && in_array($ticket->oldvalues['status'], array(implode("','", Ticket::getSolvedStatusArray()), implode("','", Ticket::getclosedStatusArray()))) && !in_array($ticket->input['status'], array(implode("','", Ticket::getSolvedStatusArray()), implode("','", Ticket::getclosedStatusArray())))) {
         NotificationEvent::raiseEvent('plugin_behaviors_ticketreopen', $ticket);
     }
 }
Ejemplo n.º 8
0
 /**
  * @param Ticket $ticket
  * @return bool
  */
 static function assignUserGroup(Ticket $ticket)
 {
     if (!is_array($ticket->input) || !count($ticket->input)) {
         // Already cancel by another plugin
         return false;
     }
     //check plugin behaviors (for avoid conflict)
     $plugin = new Plugin();
     if ($plugin->isInstalled('behaviors') && $plugin->isActivated('behaviors')) {
         $behavior_config = PluginBehaviorsConfig::getInstance();
         if ($behavior_config->getField('use_assign_user_group') != 0) {
             return false;
         }
     }
     //check this plugin config
     if ($_SESSION['plugins']['escalade']['config']['use_assign_user_group'] == 0 || $_SESSION['plugins']['escalade']['config']['use_assign_user_group_creation'] == 0) {
         return false;
     }
     if (isset($ticket->input['_users_id_assign']) && $ticket->input['_users_id_assign'] > 0 && (!isset($ticket->input['_groups_id_assign']) || $ticket->input['_groups_id_assign'] <= 0)) {
         if ($_SESSION['plugins']['escalade']['config']['use_assign_user_group'] == 1) {
             // First group
             $ticket->input['_groups_id_assign'] = PluginEscaladeUser::getTechnicianGroup($ticket->input['entities_id'], $ticket->input['_users_id_assign'], true);
             //prevent adding empty group
             if (empty($ticket->input['_groups_id_assign'])) {
                 unset($ticket->input['_groups_id_assign']);
             }
         } else {
             // All groups
             $ticket->input['_additional_groups_assigns'] = PluginEscaladeUser::getTechnicianGroup($ticket->input['entities_id'], $ticket->input['_users_id_assign'], false);
             //prevent adding empty group
             if (empty($ticket->input['_additional_groups_assigns'])) {
                 unset($ticket->input['_additional_groups_assigns']);
             }
         }
     }
     return true;
 }