Commit 283d3a12 authored by Guillaume Lucas's avatar Guillaume Lucas

[Plugins_GLPI] Tags - Commit initial.

parent 820ff24d
GLPI Tags
======================
Permet d'ajouter manuellement des tags à un ordinateur ou à un équipement réseau dans l'optique d'indiquer à Centreon les templates à utiliser pour un ordinateur ou un équipement réseau donné.
<?php
// On reçoit notre formulaire et on le traite.
include ('../../../inc/includes.php');
if (!Session::haveRight('networking', 'w')
|| !Session::haveRight('computer', 'w'))
{
Html::back();
}
$self = new PluginTagsTags();
if (isset($_POST["add"]))
{
$self->add($_POST);
Html::back();
}
else if (isset($_POST["update"]))
{
$self->update($_POST);
Html::back();
}
else if (isset($_POST["delete"]))
{
if ($_POST['tags'] != '')
$self->delete($_POST);
Html::back();
}
?>
<?php
/**
* Fonction d'installation du plugin.
* On crée la table dans le BDD.
* @return boolean
*/
function plugin_tags_install()
{
global $DB;
// Création de la table uniquement lors de la première installation
if (!TableExists("glpi_plugin_tags"))
{
$query = "CREATE TABLE `glpi_plugin_tags_tags` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`items_id` int(11) NOT NULL,
`itemtype` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`tags` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
if (!$DB->query($query))
return false;
}
return true ;
}
/**
* Fonction de désinstallation du plugin.
* On supprime notre table de la BDD.
* @return boolean
*/
function plugin_tags_uninstall()
{
global $DB;
if (!$DB->query("DROP TABLE IF EXISTS `glpi_plugin_tags_tags`;"))
return false;
return true;
}
?>
<?php
if (!defined('GLPI_ROOT')) {
die("Sorry. You can't access directly to this file");
}
/**
* Classe générale du plugin : affiche l'onglet "Tags" dans ordinateurs
* et équipements réseau et permet la consultation, l'ajout, la mise
* à jour et la suppression de tags.
*/
class PluginTagsTags extends CommonDBTM
{
/**
* Retourne le nom de l'onglet à afficher.
* @param CommonGLPI $item
* @param type $withtemplate
* @return string
* Surcharge de CommonDBTM.
* Tous les paramètres sont sûrs car internes à GLPI.
*/
function getTabNameForItem(CommonGLPI $item, $withtemplate = 0)
{
if ($item->getType() == 'Computer' ||
$item->getType() == 'NetworkEquipment')
{
return "Tags";
}
return '';
}
/**
* Affiche le formulaire de saisi des tags.
* @param int $items_id : l'ID de l'élement sur lequel on va poser
* les tags.
* @param string $itemtype : le type de l'élement sur lequel on va poser
* les tags. Computer ou NetworkEquipment.
* Tous les paramètres sont sûrs car internes à GLPI
* (voir displayTabContentForItem pour $items_id et $itemtype).
*/
function showForm($items_id, $itemtype)
{
// On récupére les tags associés à l'élément courant afin de l'afficher s'il existe.
if ($items_id != '')
$this->getFromDBByQuery("WHERE items_id = ".$items_id." AND itemtype = '".$itemtype."'");
else
$this->getEmpty();
$this->showFormHeader();
echo "<tr>";
echo "<td>Tags (séparés par des virgules) :</td>";
echo "<td>";
echo "<input type='text' name='tags' value='".$this->fields['tags']."' size='30'/>";
echo "</td></tr>";
echo "<tr>";
echo "<td><input type='hidden' name='items_id' value='".$items_id."'/></td>";
echo "<td><input type='hidden' name='itemtype' value='".$itemtype."'/></td>";
echo "</tr>";
$this->showFormButtons();
}
/**
* Gère ce qui doit être affiché en accédant à l'onglet.
* @param CommonGLPI $item
* @param type $tabnum
* @param type $withtemplate
* @return boolean
* Surcharge de CommonDBTM.
* Tous les paramètres sont sûrs car internes à GLPI
*/
static function displayTabContentForItem(CommonGLPI $item, $tabnum = 1, $withtemplate = 0)
{
$self = new self();
$self->showForm($item->getID(), $item->getType());
return true;
}
/**
* Permet de dire si nos tags peuvent être créés ou
* modifiés/supprimés (par absence de surcharge des autres
* méthode can*(), il y a redirection vers canCreate.
* Surcharge de CommonDBTM
* return boolean
*/
static function canCreate()
{
/* Toute personne qui peut ajouter/modifier/supprimer un ordinateur
ou un équipement réseau peut aussi ajouter/modifier/supprimer
les tags associés */
return (Session::haveRight('networking', 'w') && Session::haveRight('computer', 'w'));
}
}
?>
<?php
/**
* Fonction de définition du plugin.
* @return array
*/
function plugin_version_tags()
{
return array(
'name' => 'Tags',
'version' => '0.1',
'author' => 'glucas',
'license' => 'GPLv2+',
'homepage' => '',
'minGlpiVersion' => '0.84');
}
/**
* Fonction de vérification des prérequis.
* Nous n'en avons pas à part la version de GLPI.
* @return boolean
*/
function plugin_tags_check_prerequisites()
{
if (GLPI_VERSION >= 0.84)
return true;
echo "Ce plugin nécessite la version 0.84 de GLPI au minimum";
return false;
}
/**
* Fonction de vérification de la configuration initiale.
* Nous n'avons aucun besoin de configuration initiale.
* @param type $verbose
* @return boolean
* Tous les paramètres sont sûrs car internes à GLPI.
*/
function plugin_tags_check_config($verbose = false)
{
if ($verbose)
echo "Installé/non activé";
return true;
}
/**
* Fonction d'initialisation du plugin.
* @global array $PLUGIN_HOOKS
*/
function plugin_init_tags()
{
global $PLUGIN_HOOKS;
// Obligatoire sinon pas d'activation possible.
$PLUGIN_HOOKS['csrf_compliant']['tags'] = true;
Plugin::registerClass('PluginTagsTags', array('addtabon' => array('Computer', 'NetworkEquipment')));
}
?>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment