Changes to "Plugins" between 2018-08-10 21:37:42 and 2018-08-10 21:53:02

236
237
238
239
240
241
242

243
244
245
246













247
248
249
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263







+




+
+
+
+
+
+
+
+
+
+
+
+
+




Enfin, une autre méthode est de renvoyer un `string` contenant du code PHP dans le callback. Le code sera enregistré dans le fichier de cache compilé et exécuté. Consulter le code de `Garradin\Squelette` pour en savoir plus.

## Historique

### Changements dans la version 0.9.0

* les identifiants des plugins (également utilisé par le nom de répertoire ou d'archive tar.gz) ne peuvent plus contenir que des lettres minuscules, des chiffres et des underscores. Les points, tirets et lettres majuscules ne sont plus possibles.
* les méthodes de callback des signaux doivent obligatoirement commencer par le namespace `Garradin\Plugin\NomDuPlugin` (où NomDuPlugin correspond à l'identifiant du plugin), Garradin utilisera l'auto-chargement des classes (selon PSR-0) pour appeler la méthode. Par exemple en enregistrant un callback sur `Garradin\Plugin\Caisse\Signaux::addMember`, Garradin chargera le fichier `lib/Signaux.php` du plugin `caisse` et appellera la méthode statique `addMember` de la classe `Signaux` située dans le namespace `Garradin\Plugin\Caisse`.
* le fichier `signals.php` à la racine du plugin ne sera plus inclus lors de l'appel d'un signal enregistré par le plugin
* ajout d'un signal `email.envoi`

Si l'identifiant de votre plugin contenait des lettres majuscules, des points ou tirets, il faut le renommer et le réinstaller. Il est conseillé d'inclure le code suivant dans le fichier install.php pour supprimer l'ancien plugin :

```
try {
    $old_plugin = new \Garradin\Plugin('Ancien.nom-de-plugin');
    $old_plugin->uninstall();
} catch (\Garradin\UserException $e) {
    // rien à faire, l'ancien plugin n'était pas installé
}
```

Si le callback d'un signal de votre plugin n'était pas dans le namespace `Garradin\Plugin\NomDuPlugin` il va vous falloir sortir une mise à jour du plugin qui appellera à nouveau `$plugin->registerSignal` (dans le fichier `upgrade.php`). Le nouveau callback remplacera le callback existant si le signal n'a pas changé de nom.

### Changements dans la version 0.8.0

Voir [la page détaillée](/garradin/wiki?name=Plugins-0.8)