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); } }
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); } }
/** * 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; }
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); } }
(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'));
/** * @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; }
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'));