Fr Plugin072to078 » History » Version 17

Version 16 (remi, 09/13/2009 10:03 AM) → Version 17/67 (tsmr, 09/13/2009 11:51 AM)

h1. Migration d'un plugin de GLPI 0.72 vers 0.80

{{toc}}

ATTENTION ce document n'est qu'un mémo de ce qui change dans la version développement de GLPI.

h2. Database

h3. CleanDB

Le coeur a subi d'importantes modification au niveau base de données :

https://forge.indepnet.net/wiki/glpi/CleanDbStudy

h2. CommonDBTM

h3. showFormHeader

Nouveau prototype :
<pre>
function showFormHeader ($target, $ID, $withtemplate='', $colspan=1)
</pre>

Nouveau fonctionnement :
* ouverture des <form, <div (tabsbody) et <table (tab_cadre_fixe)
* champs cachés : is_template et entities_id

Conseil : à utiliser conjointement avec showFormHeader

h3. showFormButtons

Nouvelle fonction (factorisation du code)

<pre>
function showFormButtons ($ID, $withtemplate='', $colspan=1)
</pre>

Fonctionnement :
* fermeture des <form, <div et <table
* champs cachés : id

h3. can / check

Nouveau prototype

<pre>
function can($ID,$right,&$input=NULL)
function check($ID,$right,&$input=NULL)
</pre>

Le paramètre $input, uniquement requis lors d'un ajout, attend les valeurs à ajouter (souvent le $_POST) et pas uniquement l'entité cible.

h3. cleanDBonPurge

Les méthodes fournies par le coeur (cleanRelationData/cleanRelationTable) nettoient les enregistrements liés des tables lors de la suppression d'un objet.
* glpi_contracts_items (if registered in 'contract_types')
* glpi_documents_items (doc_types)
* glpi_infocoms (infocom_types)
* glpi_networkports (netport_types)
* glpi_reservationsitems (reservation_types)
* glpi_tickets (helpdesk_types)
* etc.. (à vérifier)

Il n'est donc plus utile de le prévoir dans la méthode *cleanDBonPurge* du type, mais de s'assurer de l'enrichissement des tableaux lors du *registerPluginType*.

h2. Variables de session

<pre>
$_SESSION["glpiview_ID"] remplacé par $_SESSION["glpiis_ids_visible"]
</pre>

h2. Utilisation Mbstring pour gérer UTF8

<pre>
substr remplacé par utf8_substr
</pre>
<pre>
utf8_decode remplacé par decodeFromUtf8
</pre>
<pre>
utf8_encode remplacé par encodeFromUtf8
</pre>
<pre>
strtolower remplacé par utf8_strtolower
</pre>
<pre>
strtoupper remplacé par utf8_strtoupper
</pre>


h2. Configuration

<pre>
$CFG_GLPI["mailing"] remplacé par $CFG_GLPI["use_mailing"]
</pre>

h2. fonctions supprimées

cleanCache();

h2. Tâche planifiée

Le hook *'cron'* n'est plus utilisé

Lors de l'installation un plugin peut enregistrer une tâche en utilisant
<pre>
CronTask::Register('pluginame', 'taskname', DAY_TIMESTAMP, array('param'=>50));
</pre>
La suppression est automatiquement réalisée par le coeur lors de la désinstallation du plugin.

Il devrait ensuite fournir 1 fonction
<pre>
function plugin_example_cron_info($name)
</pre>
Qui retourne un tableau à 2 entrées pour la tâche $name comprenant 'description' (description localisée de la tâche) et 'parameter' (optionnel, description localisée du paramètre)

Et pour chaque tâche, une fonction d'exécution
<pre>
function plugin_example_cron_sample_run($task)
</pre>
L'objet $task permet d'enregistrer des évenements ($task->log) et des statistiques ($task->add/setVolume)
Le code retour doit être : 0 (rien à faire), >0 (terminé) ou <0 (à continuer)