Plugin

Dernière modification : -


// 2007/09/27 20:55 / 86.214.133.95
Réflexions sur une gestion de plugins pour WiKiss.
Elle se doit d'être très simple aussi bien pour l'implémentation dans WiKiss que pour le dev des plugins. Malgrès cela on doit pouvoir offrir le maximum de contrôle au plugin.

!! Principes
* un plugin <--> un fichier php commençant par '''wkp_''' <--> une classe
* regroupés dans un répertoire et chargés automatiquement --> plugins/
* plusieurs points d'entrée représentés par des fonctions :
** action inconnue dans WiKiss de base
** avant l'analyse de la page
** après l'analyse de la page
** remplacement dans le template
** écriture d'une page
** traitement des variables en entrée ($_GET, $_POST)
** ??

!! Liste de plugins
* [wkp_Rss] : Genération de flux RSS
* [wkp_Themes]: Choix du thème d'affichage
* [wkp_ListPlugins] : Liste des plugins installés
* [wkp_Tables] : Permet de faire des tableaux dans vos pages Wiki

!! Développement d'un plugin

!!! Structure
Un plugin se présente sous la forme d'un fichier ''.php'' installé dans le répertoire ''plugins'' de votre WiKiss.
Le nom de ce fichier doit être de la forme '''wkp_'''<LeNomDuPlugin>'''.php'''. Ce fichier ne contient qu'une classe nommée LeNomDuPlugin.
{{
<?php # coding: utf-8
/* fichier wkp_MyWikissPlugin.php */
class MyWikissPlugin
{
/* votre code */
}
?>}}

!!! Méthodes
!!!! __construct
* appelée à l'initialisation du plugin
!!!! __destruct
* appelée à la destruction du plugin
!!!! writedPage
* appelée après l'écriture (la modification) d'une page
* utilisable typiquement pour un flux rss, un envoi de mail ...
!!!! action
* appelée lorsqu'une action est inconnue
* in: le nom de l'action
* out: ''TRUE'' si action traitée, ''FALSE'' sinon
!!!! formatBegin
* appelée au début de l'analyse du formatage de la page
!!!! formatEnd
* appelée à la fin de l'analyse du formatage de la page
!!!!template
* appelée lors de la phase de remplissage du template html
!!! Attributs
!!!! description
* ce que fait le plugin en une ligne
* public

!!! Exemples
Vous trouverez dans le répertoire ''plugins'' de WiKiss quelques plugins simples sur lesquels vous pouvez vous baser.
Un [squelette de plugin|?page=wkp_Test] est aussi disponible.

!! Idées de Plugins
* Upload
* '--Genération de flux RSS [wkp_Rss]--'
* Intégration de page dynamique
* Ajout de contenu ''embeded'' (vidéo YouTube ...)
* '--Gestion des templates (à la [fvaTigerWiki|http://vado.fabrice.free.fr/tigerwiki/]) [wkp_Themes]--'
* Fil d'Arianne
* Hiérarchisation des pages
* gestion des pages (verrouiller ...)
* '--Liste des plugins installés [wkp_ListPlugins]--'

!! Performances
Le nombre de plugins peut faire chuter les performances de WiKiss.
Tests réalisés sur un vieux Celeron, moyenne de 100 affichages de la page [TestSpeed|http://kubuntu.free.fr/TigerWiki/?page=TestSpeed] avec instrumentation du code.
Entre () le nombre de plugins. Les chiffres sont en secondes
{{WiKiss 0.2.1 : 0,388500
WiKiss 0.3dev ( 0): 0,370330
WiKiss 0.3dev ( 2): 0,392012
WiKiss 0.3dev (12): 0,494774
WiKiss 0.3dev (12): 0,530683 *

* : version abandonnée (avec passage de paramètres)
}}

TOC