tableExists('glpi_plugin_soc_cases')) { $query = "CREATE TABLE `glpi_plugin_soc_cases` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `entities_id` int(11) NOT NULL DEFAULT '0', `is_recursive` tinyint(1) NOT NULL DEFAULT '0', `severity` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `status` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `date_creation` timestamp NULL DEFAULT NULL, `date_mod` timestamp NULL DEFAULT NULL, `description` text COLLATE utf8_unicode_ci, `users_id_tech` int(11) NOT NULL DEFAULT '0', `groups_id_tech` int(11) NOT NULL DEFAULT '0', `is_deleted` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `name` (`name`), KEY `entities_id` (`entities_id`), KEY `is_recursive` (`is_recursive`), KEY `severity` (`severity`), KEY `status` (`status`), KEY `users_id_tech` (`users_id_tech`), KEY `groups_id_tech` (`groups_id_tech`), KEY `is_deleted` (`is_deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $DB->query($query) or die("Error creating glpi_plugin_soc_cases table " . $DB->error()); } if (!$DB->tableExists('glpi_plugin_soc_case_tickets')) { $query = "CREATE TABLE `glpi_plugin_soc_case_tickets` ( `id` int(11) NOT NULL AUTO_INCREMENT, `plugin_soc_cases_id` int(11) NOT NULL DEFAULT '0', `tickets_id` int(11) NOT NULL DEFAULT '0', `date_creation` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unicity` (`plugin_soc_cases_id`,`tickets_id`), KEY `tickets_id` (`tickets_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $DB->query($query) or die("Error creating glpi_plugin_soc_case_tickets table" . $DB->error()); } if (!$DB->tableExists('glpi_plugin_soc_case_changes')) { $query = "CREATE TABLE `glpi_plugin_soc_case_changes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `plugin_soc_cases_id` int(11) NOT NULL DEFAULT '0', `changes_id` int(11) NOT NULL DEFAULT '0', `date_creation` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unicity` (`plugin_soc_cases_id`,`changes_id`), KEY `changes_id` (`changes_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $DB->query($query) or die("Error creating glpi_plugin_soc_case_changes table" . $DB->error()); } // Create profiles rights PluginSocProfile::initProfile(); PluginSocProfile::createFirstAccess($_SESSION['glpiactiveprofile']['id']); // Initialize plugin configuration PluginSocConfig::install(); return true; } /** * Uninstall the plugin * * @return boolean */ function plugin_soc_uninstall() { global $DB; // Delete plugin tables $tables = [ 'glpi_plugin_soc_cases', 'glpi_plugin_soc_case_tickets', 'glpi_plugin_soc_case_changes', 'glpi_plugin_soc_profiles' ]; foreach ($tables as $table) { $query = "DROP TABLE IF EXISTS `$table`"; $DB->query($query) or die("Error dropping $table table"); } // Delete plugin rights from profiles table $query = "DELETE FROM `glpi_profilerights` WHERE `name` LIKE 'plugin_soc_%'"; $DB->query($query) or die("Error deleting plugin_soc rights"); // Delete plugin display preferences $query = "DELETE FROM `glpi_displaypreferences` WHERE `itemtype` LIKE 'PluginSoc%'"; $DB->query($query) or die("Error deleting plugin_soc display preferences"); // Uninstall plugin configuration PluginSocConfig::uninstall(); return true; } /** * Define database relations */ function plugin_soc_getDatabaseRelations() { return [ 'glpi_entities' => [ 'glpi_plugin_soc_cases' => 'entities_id' ], 'glpi_users' => [ 'glpi_plugin_soc_cases' => 'users_id_tech' ], 'glpi_groups' => [ 'glpi_plugin_soc_cases' => 'groups_id_tech' ], 'glpi_tickets' => [ 'glpi_plugin_soc_case_tickets' => 'tickets_id' ], 'glpi_changes' => [ 'glpi_plugin_soc_case_changes' => 'changes_id' ], 'glpi_plugin_soc_cases' => [ 'glpi_plugin_soc_case_tickets' => 'plugin_soc_cases_id', 'glpi_plugin_soc_case_changes' => 'plugin_soc_cases_id' ] ]; } /** * Define display preferences */ function plugin_soc_getTabNameForItem(CommonGLPI $item, $withtemplate = 0) { $tabs = []; if ($item->getType() == 'Ticket' && Session::haveRight("plugin_soc_case", READ)) { $tabs[1] = __('SOC Cases', 'soc'); } if ($item->getType() == 'Change' && Session::haveRight("plugin_soc_case", READ)) { $tabs[1] = __('SOC Cases', 'soc'); } return $tabs; } /** * Define right names */ function plugin_soc_getRights($itemtype = '') { $rights = [ [ 'itemtype' => 'PluginSocCase', 'label' => __('SOC Case', 'soc'), 'field' => 'plugin_soc_case' ] ]; return $rights; }