Fr Plugin084to085

Configuration

  • Possibilité pour les plugin d'intégrer leur propre configuration dans la table glpi_configs

Droits

Les droits du coeur ont été entièrement revus en 0.85. La valeur est désormais stockée en numérique.

L'ancien droit Lecture a été transformé en droit READ
session::haveRight('Document', 'r') devient session::haveRight('Document', READ)

L'ancien droit Ecriture a été éclaté en droits CREATE, UPDATE, DELETE (si l'objet à une corbeille) et PURGE.
Lors de la migration, l'ancien droit écriture a englobé également le droit de LECTURE.

Pour contrôler un droit, vous pouvez utiliser la fonction session::HaveRightsOr('objet', array(liste des droits))
Par exemple Session::haveRightsOr('Document', array(READ, UPDATE))
Dans ce cas, la fonction retournera Vrai dès que le premier droit est trouvé dans le profil

Pour contrôler plusieurs droits, vous pouvez utilisez la fonction session::HaveRightsAnd('objet', array(liste des droits))
Dans ce cas, la fonction ne retournera Vrai que si le profil possède TOUS les droits

Les anciens droits en Oui ont été éclaté de la même manière que les anciens droits 'w'.

De plus, les droits ont été regroupés par objet. Par exemple, le droit de lire tous les tickets est désormais une valeur du droit Ticket (READALL).
La définition de tous les droits d'un objet se trouve dans la fonction getRights de la class de l'objet.
C'est dans cette fonction que sont supprimés les droits standard inutiles et ajoutés les droits particuliers suivant l'interface de l'utilisateur.

Le choix des types d'éléments associables à un ticket est maintenant complètement géré par le coeur (y compris les plugins).
Une fois correctement défini $PLUGIN_HOOKS['assign_to_ticket'] et les fonctions associées, l'association des différents types possibles ce fait directement dans les profils du coeur tout comme les autres objets.

Onglets

Actions massives

Menus

  • Si vous voulez afficher votre plugin dans les menus de GLPI :
    • Modifier les Html::header pour pointer vers les menus du coeur
    • Ajouter au setup.php $PLUGIN_HOOKS['menu_toadd']['example'] = array('assets' => 'PluginExampleExample');

hook add et search

Auparavant, vous deviez déclarer dans le setup.php 2 lignes :
$PLUGIN_HOOKS['submenu_entry']['pluginname']['add'] = array(...);
$PLUGIN_HOOKS['submenu_entry']['pluginname']['search'] = array(...);

afin d'avoir les icones + et la loupe sur les page de vos items qui ne sont pas directement dans un menu.
Dans ce cas, il faut ajouter le menu (cf exemple Menus du point ci-dessus) puis ajouter dans la classe PluginExampleExample :

   static function getAdditionalMenuOptions() {

     return array('jouet' = array(
              'title' => PluginExampleJouet::getTypeName(),
              'page'  => PluginExampleJouet::getSearchURL(false),
              'links' => array(
                  'search' => '/plugins/fusioninventory/front/jouet.php',
                  'add'    => '/plugins/fusioninventory/front/jouet.form.php'
              ));
   }

Si l'item est dans un menu, il n'y a rien a déclarer de plus que le 'menu_toadd'

showForm

  • Il faut supprimer $this->showTabs($options); et $this->addDivForTabs(); de la fonction showForm
  • Il faut remplacer l'appel à showForm($_GET["id"]); par >display($_GET);

Notes

  • A faire : migration des notes du plugins vers la table du coeur (glpi_notepads)
  • Ajout de droit dans la classe du plugin : protected $usenotepadrights = true;
  • Modification de l'appel de l'onglet : $this->addStandardTab('Notepad', $ong, $options);