function pre_deleteItem() { $_SESSION['delete_container'] = true; $classname = "PluginFields" . ucfirst(strtolower($this->fields['itemtype'] . preg_replace('/s$/', '', $this->fields['name']))); $class_filename = strtolower($this->fields['itemtype'] . preg_replace('/s$/', '', $this->fields['name'])) . ".class.php"; //delete fields $field_obj = new PluginFieldsField(); $fields = $field_obj->find("plugin_fields_containers_id = " . $this->fields['id']); foreach ($fields as $fields_id => $field) { $field_obj->delete(array('id' => $fields_id)); } //delete profiles $profile_obj = new PluginFieldsProfile(); $profiles = $profile_obj->find("plugin_fields_containers_id = " . $this->fields['id']); foreach ($profiles as $profiles_id => $profile) { $profile_obj->delete(array('id' => $profiles_id)); } //delete table $classname::uninstall(); //clean session unset($_SESSION['delete_container']); //remove file if (file_exists(GLPI_ROOT . "/plugins/fields/inc/{$class_filename}")) { return unlink(GLPI_ROOT . "/plugins/fields/inc/{$class_filename}"); } return true; }
<?php include "../../../inc/includes.php"; if (empty($_GET["id"])) { $_GET["id"] = ""; } Session::checkRight('entity', READ); $field = new PluginFieldsField(); if (isset($_POST["add"])) { $field->check(-1, CREATE, $_POST); $field->add($_POST); Html::back(); } else { if (isset($_POST["delete"])) { $field->check($_POST['id'], DELETE); $field->delete($_POST); Html::back(); } else { if (isset($_REQUEST["purge"])) { $field->check($_REQUEST['id'], PURGE); $field->delete($_REQUEST, 1); Html::back(); } else { if (isset($_POST["update"])) { $field->check($_POST['id'], UPDATE); $field->update($_POST); Html::back(); } else { if (isset($_GET["id"])) { $field->check($_GET['id'], READ); Html::header(PluginFieldsField::getTypeName(1), $_SERVER['PHP_SELF']);
function pre_deleteItem() { $_SESSION['delete_container'] = true; foreach (json_decode($this->fields['itemtypes']) as $itemtype) { $classname = "PluginFields" . ucfirst(strtolower($itemtype . preg_replace('/s$/', '', $this->fields['name']))); $class_filename = strtolower($itemtype . preg_replace('/s$/', '', $this->fields['name'])) . ".class.php"; $injection_filename = strtolower($itemtype . preg_replace('/s$/', '', $this->fields['name'])) . "injection.class.php"; //delete fields $field_obj = new PluginFieldsField(); $fields = $field_obj->find("plugin_fields_containers_id = " . $this->fields['id']); foreach ($fields as $fields_id => $field) { $field_obj->delete(array('id' => $fields_id)); } //delete profiles $profile_obj = new PluginFieldsProfile(); $profiles = $profile_obj->find("plugin_fields_containers_id = " . $this->fields['id']); foreach ($profiles as $profiles_id => $profile) { $profile_obj->delete(array('id' => $profiles_id)); } //delete label translations $translation_obj = new PluginFieldsLabelTranslation(); $translations = $translation_obj->find("plugin_fields_itemtype = '" . self::getType() . "' AND plugin_fields_items_id = " . $this->fields['id']); foreach ($translations as $translation_id => $translation) { $translation_obj->delete(['id' => $translation_id]); } //delete table if (class_exists($classname)) { $classname::uninstall(); } else { //class does not exists; try to remove any existing table $tablename = "glpi_plugin_fields_" . strtolower($itemtype . getPlural(preg_replace('/s$/', '', $this->fields['name']))); $DB->query("DROP TABLE IF EXISTS `{$tablename}`"); } //clean session unset($_SESSION['delete_container']); //remove file if (file_exists(PLUGINFIELDS_CLASS_PATH . "/{$class_filename}")) { unlink(PLUGINFIELDS_CLASS_PATH . "/{$class_filename}"); } if (file_exists(PLUGINFIELDS_CLASS_PATH . "/{$injection_filename}")) { unlink(PLUGINFIELDS_CLASS_PATH . "/{$injection_filename}"); } } return true; }