@license   GPLv2+
            http://www.gnu.org/licenses/gpl.txt
 @link      https://forge.indepnet.net/projects/genericobject
 @link      http://www.glpi-project.org/
 @since     2009
 ---------------------------------------------------------------------- */
include "../../../inc/includes.php";
if (isset($_POST["delete"])) {
    $type = new PluginGenericobjectType();
    $type->getFromDB($_POST["id"]);
    $itemtype = $type->fields['itemtype'];
    PluginGenericobjectType::registerOneType($itemtype);
    foreach ($_POST["fields"] as $field => $value) {
        if ($type->can($_POST["id"], PURGE) && $value == 1 && PluginGenericobjectField::checkNecessaryFieldsDelete($itemtype, $field)) {
            PluginGenericobjectField::deleteField(getTableForItemType($itemtype), $field);
            Session::addMessageAfterRedirect(__("Field(s) deleted successfully", "genericobject"), true, INFO);
        }
    }
} elseif (isset($_POST["add_field"])) {
    $type = new PluginGenericobjectType();
    if ($_POST["new_field"] && $type->can($_POST["id"], UPDATE)) {
        $itemtype = $type->fields['itemtype'];
        PluginGenericobjectType::registerOneType($itemtype);
        PluginGenericobjectField::addNewField(getTableForItemType($itemtype), $_POST["new_field"]);
        Session::addMessageAfterRedirect(__("Field added successfully", "genericobject"));
    }
} elseif (isset($_POST['action'])) {
    //Move field
    PluginGenericobjectField::changeFieldOrder($_POST);
}
Html::back();
Ejemplo n.º 2
0
 /**
  *
  * Add or delete, if needed some fields to make sure that the itemtype is compatible with
  * GLPI framework
  *
  * @return nothing
  */
 function checkNecessaryFieldsUpdate()
 {
     $itemtype = $this->fields["itemtype"];
     $item = new $itemtype();
     $item->getEmpty();
     $table = getTableForItemType($itemtype);
     //Global search (inventory > status)
     if (isset($this->input['use_global_search']) && $this->input['use_global_search']) {
         PluginGenericobjectField::addNewField($table, 'serial', 'name');
         PluginGenericobjectField::addNewField($table, 'otherserial', 'serial');
         PluginGenericobjectField::addNewField($table, 'locations_id', 'otherserial');
         PluginGenericobjectField::addNewField($table, 'states_id', 'locations_id');
         PluginGenericobjectField::addNewField($table, 'users_id', 'states_id');
         PluginGenericobjectField::addNewField($table, 'groups_id', 'users_id');
         PluginGenericobjectField::addNewField($table, 'manufacturers_id', 'groups_id');
         PluginGenericobjectField::addNewField($table, 'users_id_tech', 'manufacturers_id');
         PluginGenericobjectField::addNewField($table, 'is_deleted', 'id');
     }
     if (isset($this->input['use_recursivity']) && $this->input['use_recursivity']) {
         PluginGenericobjectField::addNewField($table, 'is_recursive', 'entities_id');
     } else {
         PluginGenericobjectField::deleteField($table, 'is_recursive');
     }
     //Template
     if (isset($this->input['use_template']) && $this->input['use_template']) {
         PluginGenericobjectField::addNewField($table, 'is_template', 'id');
         PluginGenericobjectField::addNewField($table, 'template_name', 'is_template');
     } else {
         PluginGenericobjectField::deleteField($table, 'is_template');
         PluginGenericobjectField::deleteField($table, 'template_name');
     }
     //Trash
     if (isset($this->input['use_deleted']) && $this->input['use_deleted']) {
         PluginGenericobjectField::addNewField($table, 'is_deleted', 'id');
     } else {
         PluginGenericobjectField::deleteField($table, 'is_deleted');
     }
     //Reservation needs is_deleted field !
     if ($this->canBeReserved()) {
         PluginGenericobjectField::addNewField($table, 'is_deleted', 'id');
         PluginGenericobjectField::addNewField($table, 'locations_id');
     }
     //Helpdesk post-only
     if ($this->canUseTickets()) {
         //TODO rename is_helpdesk_visible into is_helpdeskvisible
         PluginGenericobjectField::addNewField($table, 'is_helpdesk_visible', 'comment');
     } else {
         PluginGenericobjectField::deleteField($table, 'is_helpdesk_visible');
     }
     //Notes
     if (isset($this->input['use_notes']) && $this->input['use_notes']) {
         PluginGenericobjectField::addNewField($table, 'notepad', 'id');
     } else {
         PluginGenericobjectField::deleteField($table, 'notepad');
     }
     //Networkport
     if ($this->canUseNetworkPorts()) {
         PluginGenericobjectField::addNewField($table, 'locations_id');
     }
     if ($this->canUseDirectConnections()) {
         self::addItemsTable($itemtype);
         self::addItemClassFile($this->fields['name'], $itemtype);
     } else {
         self::deleteItemsTable($itemtype);
         self::deleteClassFile($this->fields['name'] . "_item");
     }
     if ($this->canUsePluginDataInjection() && !file_exists(self::getCompleteInjectionFilename($this->fields['name']))) {
         self::addDatainjectionFile($this->fields['name']);
     }
     if (!$this->canUsePluginDataInjection() && file_exists(self::getCompleteInjectionFilename($this->fields['name']))) {
         self::deleteInjectionFile($this->fields['name']);
     }
 }