glpi-plugin-auf : ajout des champs AUF
[auf-serveur.git] / glpi-plugin-auf / plugin / hook.php
index 1275775..98fbe7f 100644 (file)
  Copyright (C) 2014 AUF -- www.auf.org
  */
 
+function plugin_auf_getAddSearchOptions($itemtype) {
+   $sopt = array();
+   if ($itemtype == 'Computer') {
+      $i = 5250;
+      $sopt[$i]['table'] = 'glpi_plugin_auf_categories';
+      $sopt[$i]['field'] = 'name';
+      $sopt[$i]['linkfield'] = 'auf_categories_id';
+      $sopt[$i]['name'] = 'AUF - Catégorie';
+      $sopt[$i]['datatype'] = 'dropdown';
+      $sopt[$i]['massiveaction'] = FALSE;
+      $sopt[$i]['joinparams'] = array('beforejoin'
+         => array('table' => 'glpi_plugin_auf_computers',
+                  'joinparams' => array('jointype' => 'child',
+                                        'linkfield' => 'id') ) );
+      $i++;
+      $sopt[$i]['table'] = 'glpi_plugin_auf_utilisations';
+      $sopt[$i]['field'] = 'name';
+      $sopt[$i]['linkfield'] = 'auf_utilisations_id';
+      $sopt[$i]['name'] = 'AUF - Utilisation';
+      $sopt[$i]['datatype'] = 'dropdown';
+      $sopt[$i]['massiveaction'] = FALSE;
+      $sopt[$i]['joinparams'] = array('beforejoin'
+         => array('table' => 'glpi_plugin_auf_computers',
+                  'joinparams' => array('jointype' => 'child',
+                                        'linkfield' => 'id') ) );
+      $i++;
+      $sopt[$i]['table'] = 'glpi_plugin_auf_computers';
+      $sopt[$i]['field'] = 'annee_acquisition';
+      $sopt[$i]['linkfield'] = 'id';
+      $sopt[$i]['name'] = 'AUF - Année d\'acquisition';
+      $sopt[$i]['datatype'] = 'number';
+      $sopt[$i]['massiveaction'] = FALSE;
+      $i++;
+      $sopt[$i]['table']     = 'glpi_plugin_auf_computers';
+      $sopt[$i]['field']     = 'est_virtuel';
+      $sopt[$i]['linkfield'] = 'id';
+      $sopt[$i]['name']      = 'AUF - Virtuel';
+      $sopt[$i]['datatype']  = 'bool';
+      // $sopt[$i]['joinparams']  = array('jointype' => 'child');
+      $sopt[$i]['massiveaction'] = FALSE;
+   }
+   return $sopt;
+}
+
 function plugin_auf_install() {
+   global $DB;
+
+   $migration = new Migration(100);
+   // Création de la table uniquement lors de la première installation
+   if (!TableExists("glpi_plugin_auf_profiles")) {
+      // requête de création de la table
+      $query = "CREATE TABLE `glpi_plugin_auf_profiles` (
+         `id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_profiles (id)',
+         `right` char(1) collate utf8_unicode_ci default NULL,
+         PRIMARY KEY  (`id`)
+      ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
+      $DB->queryOrDie($query, $DB->error());
+      $migration->migrationOneTable("glpi_plugin_auf_profiles");
+      // creation du premier accès nécessaire lors de l'installation du plugin
+      include_once(GLPI_ROOT."/plugins/auf/inc/profile.class.php");
+      PluginAufProfile::createAdminAccess($_SESSION['glpiactiveprofile']['id']);
+   }
+
+   if (!TableExists("glpi_plugin_auf_computers")) {
+      // requête de création de la table
+      $query = "CREATE TABLE `glpi_plugin_auf_computers` (
+         `id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_computers (id)',
+         `auf_categories_id` int(11) NOT NULL DEFAULT '0',
+         `auf_utilisations_id` int(11) NOT NULL DEFAULT '0',
+         `annee_acquisition` int(11) NOT NULL DEFAULT '0',
+         `est_virtuel` tinyint(1) NOT NULL DEFAULT '0',
+         `affectation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
+         PRIMARY KEY (`id`)
+      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
+      $DB->queryOrDie($query, $DB->error());
+   }
+
+   if (!TableExists("glpi_plugin_auf_categories")) {
+      // requête de création de la table
+      $query = "CREATE TABLE `glpi_plugin_auf_categories` (
+         `id` int(11) NOT NULL AUTO_INCREMENT,
+         `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
+         `comment` text DEFAULT NULL,
+         PRIMARY KEY (`id`),
+         KEY `name` (`name`)
+      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
+      $DB->queryOrDie($query, $DB->error());
+      $query = "INSERT INTO `glpi_plugin_auf_categories` VALUES
+         (1, 'Infrastructure', ''),
+         (2, 'Poste interne', ''),
+         (3, 'Poste public', '')";
+      $DB->queryOrDie($query, $DB->error());
+   }
+
+   if (!TableExists("glpi_plugin_auf_utilisations")) {
+      // requête de création de la table
+      $query = "CREATE TABLE `glpi_plugin_auf_utilisations` (
+         `id` int(11) NOT NULL AUTO_INCREMENT,
+         `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
+         `comment` text DEFAULT NULL,
+         PRIMARY KEY (`id`),
+         KEY `name` (`name`)
+      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
+      $DB->queryOrDie($query, $DB->error());
+      $query = "INSERT INTO `glpi_plugin_auf_utilisations` VALUES
+         (1, 'Production', ''),
+         (2, 'Test', ''),
+         (3, 'Réserve', 'stock, mission, formation, …')";
+      $DB->queryOrDie($query, $DB->error());
+   }
+
+   $migration->executeMigration();
    return TRUE;
 }
 
 function plugin_auf_uninstall() {
+   global $DB;
+
+   $tables = array(); // "glpi_plugin_auf_profiles", // "glpi_plugin_auf_computers",
+   //   "glpi_plugin_auf_categories", "glpi_plugin_auf_utilisations");
+   foreach($tables as $table) {
+      $DB->query("DROP TABLE IF EXISTS `$table`;");
+   }
+
    return TRUE;
 }