216 lines
6.8 KiB
PHP
216 lines
6.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* -------------------------------------------------------------------------
|
|
* GenericObject plugin for GLPI
|
|
* -------------------------------------------------------------------------
|
|
*
|
|
* LICENSE
|
|
*
|
|
* This file is part of GenericObject.
|
|
*
|
|
* GenericObject is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* GenericObject 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 General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with GenericObject. If not, see <http://www.gnu.org/licenses/>.
|
|
* -------------------------------------------------------------------------
|
|
* @copyright Copyright (C) 2009-2022 by GenericObject plugin team.
|
|
* @license GPLv3 https://www.gnu.org/licenses/gpl-3.0.html
|
|
* @link https://github.com/pluginsGLPI/genericobject
|
|
* -------------------------------------------------------------------------
|
|
*/
|
|
|
|
function plugin_genericobject_AssignToTicket($types) {
|
|
foreach (PluginGenericobjectType::getTypes() as $tmp => $value) {
|
|
$itemtype = $value['itemtype'];
|
|
if ($value['use_tickets']) {
|
|
if (class_exists($itemtype)) {
|
|
$types[$itemtype] = $itemtype::getTypeName();
|
|
} else {
|
|
$types[$itemtype] = $itemtype;
|
|
}
|
|
}
|
|
}
|
|
return $types;
|
|
}
|
|
|
|
// Define Dropdown tables to be manage in GLPI :
|
|
function plugin_genericobject_getDropdown() {
|
|
|
|
$dropdowns = ['PluginGenericobjectTypeFamily' => PluginGenericobjectTypeFamily::getTypeName(2)];
|
|
|
|
$plugin = new Plugin();
|
|
if ($plugin->isActivated("genericobject")) {
|
|
foreach (PluginGenericobjectType::getTypes() as $type) {
|
|
//_log($idx, var_export($type, true));
|
|
$itemtype = $type['itemtype'];
|
|
PluginGenericobjectType::registerOneType($itemtype);
|
|
foreach (PluginGenericobjectType::getDropdownForItemtype($itemtype) as $table) {
|
|
$dropdown_itemtype = getItemTypeForTable($table);
|
|
if (class_exists( $dropdown_itemtype)) {
|
|
$dropdowns[$dropdown_itemtype] = $dropdown_itemtype::getTypeName();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return $dropdowns;
|
|
}
|
|
|
|
// Define dropdown relations
|
|
function plugin_genericobject_getDatabaseRelations() {
|
|
$dropdowns = [];
|
|
|
|
//TODO : purt here relations
|
|
/*
|
|
$plugin = new Plugin();
|
|
if ($plugin->isActivated("genericobject")) {
|
|
foreach(getAllDatasFromTable(getTableForItemType('PluginGenericobjectType'),
|
|
"`is_active`='1'") as $itemtype) {
|
|
foreach(PluginGenericobjectType::getDropdownForItemtype($itemtype) as $table) {
|
|
$dropdowns[$table][] = []
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
return $dropdowns;
|
|
}
|
|
|
|
function plugin_uninstall_addUninstallTypes($uninstal_types = []) {
|
|
foreach (PluginGenericobjectType::getTypes() as $tmp => $type) {
|
|
if ($type["use_plugin_uninstall"]) {
|
|
$uninstal_types[] = $type["itemtype"];
|
|
}
|
|
}
|
|
return $uninstal_types;
|
|
}
|
|
|
|
//----------------------- INSTALL / UNINSTALL FUNCTION -------------------------------//
|
|
|
|
/**
|
|
* Plugin install process
|
|
*
|
|
* @return boolean
|
|
*/
|
|
function plugin_genericobject_install() {
|
|
global $DB;
|
|
|
|
include_once(GENERICOBJECT_DIR."/inc/object.class.php");
|
|
include_once(GENERICOBJECT_DIR."/inc/type.class.php");
|
|
|
|
$migration = new Migration(PLUGIN_GENERICOBJECT_VERSION);
|
|
|
|
foreach ([
|
|
'PluginGenericobjectField',
|
|
'PluginGenericobjectCommonDropdown',
|
|
'PluginGenericobjectCommonTreeDropdown',
|
|
'PluginGenericobjectProfile',
|
|
'PluginGenericobjectType',
|
|
'PluginGenericobjectTypeFamily'
|
|
] as $itemtype) {
|
|
if ($plug=isPluginItemType($itemtype)) {
|
|
$plugname = strtolower($plug['plugin']);
|
|
$dir = Plugin::getPhpDir($plugname)."/inc/";
|
|
$item = strtolower($plug['class']);
|
|
if (file_exists("$dir$item.class.php")) {
|
|
include_once ("$dir$item.class.php");
|
|
if (method_exists($itemtype, 'install')) {
|
|
$itemtype::install($migration);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!is_dir(GENERICOBJECT_CLASS_PATH)) {
|
|
@ mkdir(GENERICOBJECT_CLASS_PATH, 0755, true)
|
|
or die("Can't create folder " . GENERICOBJECT_CLASS_PATH);
|
|
}
|
|
|
|
//Init plugin & types
|
|
plugin_init_genericobject();
|
|
|
|
//Init profiles
|
|
PluginGenericobjectProfile::changeProfile();
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Plugin uninstall process
|
|
*
|
|
* @return boolean
|
|
*/
|
|
function plugin_genericobject_uninstall() {
|
|
global $DB;
|
|
|
|
include_once(GENERICOBJECT_DIR."/inc/object.class.php");
|
|
include_once(GENERICOBJECT_DIR."/inc/type.class.php");
|
|
|
|
//For each type
|
|
foreach (PluginGenericobjectType::getTypes(true) as $tmp => $value) {
|
|
$itemtype = $value['itemtype'];
|
|
if (class_exists($itemtype)) {
|
|
$itemtype::uninstall();
|
|
}
|
|
}
|
|
|
|
foreach ([
|
|
'PluginGenericobjectType',
|
|
'PluginGenericobjectProfile',
|
|
'PluginGenericobjectField',
|
|
'PluginGenericobjectTypeFamily'
|
|
] as $itemtype) {
|
|
if ($plug=isPluginItemType($itemtype)) {
|
|
$plugname = strtolower($plug['plugin']);
|
|
$dir = Plugin::getPhpDir($plugname)."/inc/";
|
|
$item = strtolower($plug['class']);
|
|
if (file_exists("$dir$item.class.php")) {
|
|
include_once ("$dir$item.class.php");
|
|
$itemtype::uninstall();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Delete all models of datainjection about genericobject
|
|
$table_datainjection_model = 'glpi_plugin_datainjection_models';
|
|
if ($DB->tableExists($table_datainjection_model)) {
|
|
$DB->query("DELETE FROM $table_datainjection_model WHERE itemtype LIKE 'PluginGenericobject%'");
|
|
}
|
|
|
|
// Invalidate menu data in current session
|
|
unset($_SESSION['glpimenu']);
|
|
|
|
return true;
|
|
}
|
|
|
|
function plugin_datainjection_populate_genericobject() {
|
|
global $INJECTABLE_TYPES;
|
|
$type = new PluginGenericobjectType();
|
|
foreach ($type->find(['use_plugin_datainjection' => 1, 'is_active' => 1]) as $data) {
|
|
if (class_exists($data ['itemtype']."Injection")) {
|
|
$INJECTABLE_TYPES[$data ['itemtype']."Injection"] = 'genericobject';
|
|
}
|
|
}
|
|
}
|
|
|
|
function plugin_genericobject_MassiveActions($type) {
|
|
$types = PluginGenericobjectType::getTypes();
|
|
if (isset($types[$type])) {
|
|
$objecttype = PluginGenericobjectType::getInstance($type);
|
|
if ($objecttype->isTransferable()) {
|
|
return ['PluginGenericobjectObject'.
|
|
MassiveAction::CLASS_ACTION_SEPARATOR.'plugin_genericobject_transfer' => __("Transfer")];
|
|
} else {
|
|
return [];
|
|
}
|
|
} else {
|
|
return [];
|
|
}
|
|
}
|