Communication entre les modules : Différence entre versions

De OviWiki
Aller à : navigation, rechercher
(Proposer des fonctionnalités)
 
(12 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
[[Catégorie:Développement de modules]]
 +
[[Catégorie:Technologies à l'étude]]
 +
 
== Dépendances entre les modules au moment de l'installation ==
 
== Dépendances entre les modules au moment de l'installation ==
  
 
Lors de l'installation d'un module, des dépendances peuvent êtres utilisées, le nom des modules dépendants doivent être ajoutés dans le fichier addonini.php avec le numéro de version minimum nécessaire dans la section "addons" :
 
Lors de l'installation d'un module, des dépendances peuvent êtres utilisées, le nom des modules dépendants doivent être ajoutés dans le fichier addonini.php avec le numéro de version minimum nécessaire dans la section "addons" :
  
exemple avec le module ivdashboard qui nécessite le module client :
+
exemple avec le module dashboard qui nécessite le module client :
 
<pre>
 
<pre>
  
 
[general]
 
[general]
name="ivdashboard"
+
name="dashboard"
 
version=6.09
 
version=6.09
description="Gestion de projets INVIVO"
+
description="Gestion de projets"
db_prefix="ivd_"
+
db_prefix="gdp_"
 
ov_version=5.6.2
 
ov_version=5.6.2
 
php_version=4.1.2
 
php_version=4.1.2
Ligne 22 : Ligne 25 :
 
== Gestionnaire d'événements et fonctionnalités ==
 
== Gestionnaire d'événements et fonctionnalités ==
  
Pour que les différents modules puissent partager des fonctions, les développeurs pourront utiliser le [[API du gestionnaire d'événement|gestionnaire d'événements]]
+
Pour que les différents modules puissent partager des fonctions, les développeurs pourront utiliser le [[API du gestionnaire d'événement|gestionnaire d'événements]] et l'[[API des fonctionnalités]]
  
 
[[Image:Com addons.svg]]
 
[[Image:Com addons.svg]]
 
== API des fonctionalités ==
 
 
'''Attention, cette API sera disponible à partir de ovidentia 6.6.0'''
 
 
 
=== Proposer des fonctionnalités ===
 
 
Chaque fonctionnalité devra être nommée selon un "chemin", par exemple "convertHtml/toPdf/openOffice", les caractères _ sont interdis dans le chemin.
 
 
Une fonction du noyau d'ovidentia permettra d'enregistrer un fichier php en tant que fonctionnalité, le fichier devra contenir une classe PHP nommée en utilisant la même arborescence, par exemple :
 
 
<pre>
 
class convertHtml_toPdf_openOffice extends bab_functionality {
 
 
}
 
 
</pre>
 
 
le _ remplace le / dans le nom de la classe
 
l'objet devra être hérité de bab_functionality.
 
 
Au moment de l'installation ou du programme de reprise, il faut enregistrer la fonctionnalité dans ovidentia, exemple :
 
 
<pre>
 
include_once $GLOBALS['babInstallPath'].'utilit/functionalityincl.php';
 
 
$func = new bab_functionalities();
 
$func->register("convertHtml/toPdf/openOffice", $GLOBALS['babAddonUrl'].'convert.php');
 
</pre>
 
 
 
Dans Ovidentia, un fichier "link.inc" sera créé dans un arbre de répertoire avec pour contenu du code php pour inclure le fichier passé en 2ème paramètre.
 
 
 
 
==== Héritage de fonctionnalités ====
 
 
Il est possible de créer une fonctionnalité qui hérite et utilise l'interface d'une autre fonctionnalité.
 
 
 
exemple : le module "convert" propose une fonctionnalité pour convertir du html
 
 
<pre>
 
 
class convertHtml extends bab_functionality {
 
function getDescription() {
 
return 'convertir du html vers un autre format';
 
}
 
 
function getFunctionalityCallableMethods() {
 
return array(
 
'process'
 
);
 
}
 
 
function process($html) {
 
return NULL;
 
}
 
}
 
 
</pre>
 
 
Dans un autre module "convertToPdf", on propose de convertir du html en pdf en utilisant openOffice. Pour que la fonctionnalité soit acceptée par le programme d'installation, l'objet doit contenir au moins les méthodes du parent. La liste des méthodes sera comparée en utilisant "getFunctionalityCallableMethods".
 
 
 
 
 
<pre>
 
 
bab_functionality::includefile('convertHtml');
 
 
class convertHtml_toPdf_openOffice extends convertHtml {
 
function getDescription() {
 
return 'convertir du html en pdf';
 
}
 
 
function getFunctionalityCallableMethods() {
 
return array(
 
'process'
 
);
 
}
 
 
function process($html) {
 
 
}
 
}
 
 
</pre>
 
 
=== Utiliser une fonctionnalité ===
 
 
La fonction du noyau  bab_functionality::get('convertHtml/toPdf/openOffice'); effectuera une inclusion du fichier "convertHtml/toPdf/openOffice/link.inc" ensuite l'objet convertHtml_toPdf_openOffice sera instancié.
 
 
Les niveaux supérieurs de l'arborescence serons complété avec une copie du fichier link.inc si aucun fichier de lien n'est présent.
 
 
Un formulaire sera disponible pour d'administrateur afin de changer les fichiers interface des niveau supérieurs pour redéfinir les fonctions par défaut dans le cas de sous répertoires multiples.
 
 
Pour simplifier l'exécution des fonctions d'interface, le contexte du module ne sera pas recréé avant que la fonction soit appelée, par conséquent, l'utilisation des variables globales de l'environnement du module ne devrons pas être utilisées.
 
 
 
==== Fonctions ====
 
 
 
bab_functionality::getFunctionalities($path) : obtenir les sous répertoires d'une fonctionnalité
 
 
bab_functionality::get($path) : obtenir l'instance de l'objet
 
 
bab_functionality::includefile($path) : inclure le fichier de la fonctionnalité afin d'effectuer un héritage
 

Version actuelle en date du 6 mars 2009 à 11:07


Dépendances entre les modules au moment de l'installation

Lors de l'installation d'un module, des dépendances peuvent êtres utilisées, le nom des modules dépendants doivent être ajoutés dans le fichier addonini.php avec le numéro de version minimum nécessaire dans la section "addons" :

exemple avec le module dashboard qui nécessite le module client :


[general]
name="dashboard"
version=6.09
description="Gestion de projets"
db_prefix="gdp_"
ov_version=5.6.2
php_version=4.1.2
mysql_version=3.23

[addons]
clients=2.8

Gestionnaire d'événements et fonctionnalités

Pour que les différents modules puissent partager des fonctions, les développeurs pourront utiliser le gestionnaire d'événements et l'API des fonctionnalités

Com addons.svg