예제 #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);
     }
 }
예제 #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);
     }
 }
예제 #6
0
 /**
  * Singleton for the unique config record
  */
 static function getInstance()
 {
     if (!isset(self::$_instance)) {
         self::$_instance = new self();
         if (!self::$_instance->getFromDB(1)) {
             self::$_instance->getEmpty();
         }
     }
     return self::$_instance;
 }
 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;
 }
예제 #8
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);
     }
 }
예제 #9
0
(at your option) any later version.

Behaviors 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with Behaviors. If not, see <http://www.gnu.org/licenses/>.

@package   behaviors
@author    Remi Collet
@copyright Copyright (c) 2010-2013 Behaviors plugin team
@license   AGPL License 3.0 or (at your option) any later version
           http://www.gnu.org/licenses/agpl-3.0-standalone.html
@link      https://forge.indepnet.net/projects/behaviors
@link      http://www.glpi-project.org/
@since     2010

--------------------------------------------------------------------------
*/
include "../../../inc/includes.php";
// No autoload when plugin is not activated
require_once '../inc/config.class.php';
$config = new PluginBehaviorsConfig();
if (isset($_POST["update"])) {
    $config->check($_POST['id'], 'w');
    $config->update($_POST);
    Html::back();
}
Html::redirect($CFG_GLPI["root_doc"] . "/front/config.form.php?forcetab=" . urlencode('PluginBehaviorsConfig$1'));
예제 #10
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;
 }
예제 #11
0
파일: hook.php 프로젝트: geldarr/hack-space
function plugin_behaviors_uninstall()
{
    // No autoload when plugin is not activated
    require 'inc/config.class.php';
    return PluginBehaviorsConfig::uninstall();
}
(at your option) any later version.

Behaviors 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with Behaviors. If not, see <http://www.gnu.org/licenses/>.

@package   behaviors
@author    Remi Collet
@copyright Copyright (c) 2010-2014 Behaviors plugin team
@license   AGPL License 3.0 or (at your option) any later version
           http://www.gnu.org/licenses/agpl-3.0-standalone.html
@link      https://forge.indepnet.net/projects/behaviors
@link      http://www.glpi-project.org/
@since     2010

--------------------------------------------------------------------------
*/
include "../../../inc/includes.php";
// No autoload when plugin is not activated
require_once '../inc/config.class.php';
$config = new PluginBehaviorsConfig();
if (isset($_POST["update"])) {
    $config->check($_POST['id'], UPDATE);
    $config->update($_POST);
    Html::back();
}
Html::redirect($CFG_GLPI["root_doc"] . "/front/config.form.php?forcetab=" . urlencode('PluginBehaviorsConfig$1'));