Connexion à un compte  search
  • Français
  • English
Extensions

themeDévelopper une extension

Weezo permet au travers des extensions de proposer de nouveaux partages.

Des connaissances en PHP sont nécessaires au développement de ces extensions.

Les termes "partage" et "ressource" ont ci-après la même signification.

Une extension se présente sous la forme de scripts PHP auxquels est ajouté un fichier texte nommé "describer.ini" et éventuellement un fichier de licence.

L'ensemble des fichiers doivent être compactés dans un fichier zip ou 7z renommé en .weezoResource
Le nom du fichier définit le nom par défaut de l'extension.


Fichier describer.ini

Ce fichier texte placé au répertoire racine de l'extension, permet notamment de définir :
  • le nom de l'extension (dans les différentes langues supportées)
  • la description de l'extension (dans les différentes langues supportées)
  • le nom du script index
  • le nom du script de configuration (si applicable)
  • l'icône du partage
  • le mode de gestion des sessions
  • une image preview
  • le nom de l'auteur
  • l'url du site de l'auteur
Le format du fichier et le détail des instructions sont détaillés dans le fichier /www/res/misc/describer.ini.readme.txt

Le fichier describer.ini contient un paramètre - resourceStartsSession - dont la valorisation est relativement impactante sur le comportement du partage :
Positionnez ce paramètre à true si vous souhaitez effectuer vous-même la gestion des sessions. Cette option est particulièrement utile dans le cas d'adaptation de scripts existants.
Il assure une complète indépendance entre la session du partage et celle sur laquelle repose Weezo. Le partage peut alors utiliser les fonctions session_start et session_destroy sans risque de déconnecter l'utilisateur.

Si vous positionnez ce paramètre sur false, la session Weezo est maintenue. Vous avez alors accès à toutes les données de session (environnement, thème, informations sur l'utilisateur...).
Attention alors de ne pas effacer les informations contenues dans $_SESSION sous peine de déconnecter l'utilisateur.


Fichier license.txt

Un fichier "license.txt" peut être ajouté au répertoire racine. L'utilisateur devra alors en accepter le contenu lors de la phase d'installation.

Scripts PHP


Configuration du partage

Le script de configuration par défaut est le script config.php placé à la racine du partage. Le nom de script peut être modifié au travers du describer.ini
Si aucun script de configuration n'est défini, l'interface Weezo affichera une page permettant uniquement la sélection du nom du partage.

Spécifiez standaloneConfig=true et éventuellement configStartsSession=true si votre script de configuration est entièrement indépendant.
Spécifiez standaloneConfig=false si vous souhaitez utiliser les mécanismes Weezo. Il est dans ce cas conseillé d'étudier un script config.php existant pour en comprendre la structure et le fonctionnement.

Le fichier de configuration est inclus par un script ayant déjà assuré l'insertion de <head></head><body>.

Il doit avoir la structure suivante :

rcConfigRights(); // Vérification des droits d'accès
rcInsertScriptAndForm(); // Insertion des formulaires et scripts
rcInsertIconName($resourceData); // Insère l'icône du partage et le contrôle nécessaire à la saisie du nom.

[rcProcessData(...)]
[rcProcessData(...)]
...
[rcAdvancedConfigStart()]
[rcProcessData(...)]
[rcProcessData(...)]
...
rcButtonSaveCancel() // Insère les scripts et boutons de sauvegarde
rcWriteResourceFile($resourceData, $fileName); // Sauvegarde les données

La fonction rcProcessData permet à la fois d'afficher le contrôle permettant la saisie d'un paramètre, mais aussi de traiter ce même paramètre.

Format : rcProcessData(nom_du_paramètre, format(dataBoolean, dataList, dataNumeric, dataText, dataPath), valeur par défaut, contraintes, définition de l'affichage, saut à la ligne O/N, donnée sensible O/N);
Il est conseillé de se baser sur son utilisation dans des scripts config.php existants pour comprendre la valorisation des différents paramètres.

La fonction rcAdvancedConfigStart() permet de définir le début du passage spécifique à une configuration avancée.

Le tableau $resourceData contient l'ensemble des paramètres du partage.

Scripts du partage

Le reste des scripts est entièrement libre.
Le script appelé par défaut lors de l'ouverture du partage est index.php. Ceci peut être changé au travers du paramètre baseFile de describer.ini

Règles à respecter sur les variables de session : (si resourceStartsSession=false)
Afin d'éviter les intersection entre les variables de session de plusieurs ressources, il est conseillé d'utiliser les fonctions cfRSetVar() / cfRGetVar(), qui stockent / lisent les variables de session dans l'arborescence du tableau $_SESSION['res'][$resourceId] où $resourceId est l'identifant de la ressource courante. La fonction cfRSetVarArray() permet de définir un tableau.
Vous pouvez évidemment ne pas utiliser ces fonctions et nommer directement vos variables de session. Il est alors conseillé d'utiliser un préfixe propre à votre ressource afin d'éviter les intersections avec les autres ressources Weezo. N'oubliez pas non plus qu'un utilisateur peut se voir attribuer plusieurs ressources d'un même type. Il est donc fortement conseillé de baser à minima les variables de session sur l'identifiant de la ressource...

Gestion des droits d'accès

La gestion des droits d'accès est intégrée à Weezo. Vous n'avez donc pas à l'intégrer vous-même. Elle est assurée par le script security.php automatiquement exécuté avant tout autre script php (auto-prepend).
Un script php ne sera autorisé que s'il est contenu dans le répertoire (ou l'un des sous-répertoires) d'une ressource associée à l'utilisateur connecté/authentifié.
Attention : tout fichier non .php reste accessible aux utilisateurs non authentifiés.

Environnements Apache et PHP

Les fichiers httpd.conf et php.ini définissant les environnements Apache et PHP sont situés dans le répertoire /data/default.

Comment développer et tester l'extension ?

Le plus simple est de directement développer à partir du répertoire /www/res/misc/nom_de_l'extension auquel aura été ajouté le fichier describer.ini
Une fois le script index défini, vous pourrez ajouter votre extension aux partages au travers de l'IU Weezo (après redémarrage).

Peut-on adapter des scripts pour Weezo ?

Oui, il suffit de respecter les règles définies ci-dessus.
Le mécanisme de session introduit par la V2 doit permettre une étanchéité quasi-totale entre vos scripts et ceux de Weezo. Attention pour cela de positionner resourceStartsSession=true dans le describer.ini.
Si vous adaptez des scripts existants, gardez en mémoire que mySQL ne fait pas partie du package Weezo. Vous pouvez utiliser la fonction cfMySQLInstalled() pour savoir si l'utilisateur a installé MySQL.