API Addon - OVML : Différence entre versions
(→Utilisation) |
|||
| (6 révisions intermédiaires par 2 utilisateurs non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
| + | [[Catégorie:Développement de modules]] | ||
| + | [[Catégorie:API Ovidentia]] | ||
| + | [[Catégorie:Développement OVML]] | ||
| + | |||
== Introduction == | == Introduction == | ||
L'API addon-OvML permet à un addon d'accéder à tous les containers OVML. | L'API addon-OvML permet à un addon d'accéder à tous les containers OVML. | ||
| Ligne 9 : | Ligne 13 : | ||
Afin d'utiliser cette API, l'addon doit inclure le fichier '''''ovmlapi.php''''': | Afin d'utiliser cette API, l'addon doit inclure le fichier '''''ovmlapi.php''''': | ||
| − | < | + | <source lang="php"> |
include_once $babInstallPath.'utilit/ovmlapi.php'; | include_once $babInstallPath.'utilit/ovmlapi.php'; | ||
| − | </ | + | </source> |
| − | L' | + | L'interaction de l'addon avec cette API se fait par l'intermédiaire de la classe '''''bab_ovmlAPI''''': |
| − | < | + | <source lang="php"> |
include_once $babInstallPath.'utilit/ovmlapi.php'; | include_once $babInstallPath.'utilit/ovmlapi.php'; | ||
| Ligne 33 : | Ligne 37 : | ||
} | } | ||
| − | </ | + | </source> |
| − | L' | + | L'instantiation de cette classe créée un contexte global pour l'OVML. |
| − | Il est possible de passer des variables à ce | + | Il est possible de passer des variables à ce contexte en utilisant le paramètre '''''$args''''': |
| − | < | + | <source lang="php"> |
include_once $babInstallPath.'utilit/ovmlapi.php'; | include_once $babInstallPath.'utilit/ovmlapi.php'; | ||
| Ligne 57 : | Ligne 61 : | ||
} | } | ||
| − | </ | + | </source> |
L'instantiation d'un container OVML se fait par la méthode '''''getContainer''''': | L'instantiation d'un container OVML se fait par la méthode '''''getContainer''''': | ||
| − | < | + | <source lang="php"> |
include_once $babInstallPath.'utilit/ovmlapi.php'; | include_once $babInstallPath.'utilit/ovmlapi.php'; | ||
| Ligne 82 : | Ligne 86 : | ||
} | } | ||
| − | </ | + | </source> |
Dans ce qui précède, on instancie le container OCArticleTopics et on lui passe | Dans ce qui précède, on instancie le container OCArticleTopics et on lui passe | ||
les paramètres ''topicid'', ''archive'' et ''topicorder''. | les paramètres ''topicid'', ''archive'' et ''topicorder''. | ||
| − | On peut ajouter des paramètres au | + | On peut ajouter des paramètres au contexte courant et en récupérer en utilisant les |
deux méthodes suivantes : | deux méthodes suivantes : | ||
| − | < | + | <source lang="php"> |
$vars[] = array('name'=>'count', 'value' => $count); | $vars[] = array('name'=>'count', 'value' => $count); | ||
$vars[] = array('name'=>'index', 'value' => 0); | $vars[] = array('name'=>'index', 'value' => 0); | ||
| Ligne 96 : | Ligne 100 : | ||
$title = $this->tpl->getVar('ArticleTitle'); | $title = $this->tpl->getVar('ArticleTitle'); | ||
$author = $this->tpl->getVar('ArticleAuthor', array('author'=>'%F %L')) | $author = $this->tpl->getVar('ArticleAuthor', array('author'=>'%F %L')) | ||
| − | </ | + | </source> |
La méthode ''''getContainer'''' retourne un objet implémentant la méthode ''''getnext'''' | La méthode ''''getContainer'''' retourne un objet implémentant la méthode ''''getnext'''' | ||
| − | permettant de récupérer les résultats du | + | permettant de récupérer les résultats du container. |
| − | La méthode ''''getnext'''' retourne ''false'' quand il n'y a plus de | + | La méthode ''''getnext'''' retourne ''false'' quand il n'y a plus de résultats et ''true'' dans le cas |
contraire. | contraire. | ||
| − | Quand la méthode retourne false, elle détruit automatiquement son | + | Quand la méthode retourne false, elle détruit automatiquement son contexte. |
| − | Sinon, vous avez la possibilité de détruire le | + | Sinon, vous avez la possibilité de détruire le contexte en appelant la méthode : |
| − | < | + | <source lang="php"> |
$this->cont = $this->tpl->getContainer('ArticleTopics', $args); | $this->cont = $this->tpl->getContainer('ArticleTopics', $args); | ||
$thsi->cont->destroyContext(); | $thsi->cont->destroyContext(); | ||
| − | </ | + | </source> |
| − | L'appel à ''''destroyContext'''' détruit le | + | L'appel à ''''destroyContext'''' détruit le contexte courant et supprime les variables. |
| − | Normalement, à chaque appel à la | + | Normalement, à chaque appel à la méthode ''''getnext'''', le système créé les variables du container |
dans l'objet implémentant la méthode ''''getnext'''': | dans l'objet implémentant la méthode ''''getnext'''': | ||
| − | < | + | <source lang="php"> |
include_once $babInstallPath.'utilit/ovmlapi.php'; | include_once $babInstallPath.'utilit/ovmlapi.php'; | ||
| Ligne 151 : | Ligne 155 : | ||
... | ... | ||
} | } | ||
| − | </ | + | </source> |
Si l'on souhaite créer ces variables dans un autre objet, on peut passer cet objet à chaque | Si l'on souhaite créer ces variables dans un autre objet, on peut passer cet objet à chaque | ||
appel à la fonction ''''getnext'''': | appel à la fonction ''''getnext'''': | ||
| − | < | + | <source lang="php"> |
include_once $babInstallPath.'utilit/ovmlapi.php'; | include_once $babInstallPath.'utilit/ovmlapi.php'; | ||
| Ligne 190 : | Ligne 194 : | ||
... | ... | ||
} | } | ||
| − | </ | + | </source> |
Version actuelle en date du 10 novembre 2008 à 12:00
Introduction
L'API addon-OvML permet à un addon d'accéder à tous les containers OVML. Il est ainsi possible à un addon de lister les catégories, les thèmes d'articles, les articles, les contributions d'un forum etc ...
Tous les fonctionnalités offertes par l'OVML sont ainsi disponibles à un addon.
Utilisation
Afin d'utiliser cette API, l'addon doit inclure le fichier ovmlapi.php:
<source lang="php"> include_once $babInstallPath.'utilit/ovmlapi.php'; </source>
L'interaction de l'addon avec cette API se fait par l'intermédiaire de la classe bab_ovmlAPI:
<source lang="php"> include_once $babInstallPath.'utilit/ovmlapi.php';
function list_topics() { global $babBody;
class list_topics_class { function list_topics_class() { $this->tpl = new bab_ovmlAPI(); } } ...
}
</source>
L'instantiation de cette classe créée un contexte global pour l'OVML. Il est possible de passer des variables à ce contexte en utilisant le paramètre $args:
<source lang="php"> include_once $babInstallPath.'utilit/ovmlapi.php';
function list_topics() { global $babBody;
class list_topics_class { function list_topics_class() { $args['babHtmlEntities'] = 1; $args['topics'] = bab_gp('topicid'); $this->tpl = new bab_ovmlAPI($args); } } ... }
</source>
L'instantiation d'un container OVML se fait par la méthode getContainer:
<source lang="php"> include_once $babInstallPath.'utilit/ovmlapi.php';
function list_topics() { global $babBody;
class list_topics_class { function list_topics_class() { $this->tpl = new bab_ovmlAPI(); $args['topicid'] = 12; $args['archive']='No'; $args['topicorder']='Yes'; $this->cont = $this->tpl->getContainer('ArticleTopics', $args); } } ... }
</source>
Dans ce qui précède, on instancie le container OCArticleTopics et on lui passe les paramètres topicid, archive et topicorder.
On peut ajouter des paramètres au contexte courant et en récupérer en utilisant les deux méthodes suivantes :
<source lang="php"> $vars[] = array('name'=>'count', 'value' => $count); $vars[] = array('name'=>'index', 'value' => 0); $this->tpl->putVar($vars); $title = $this->tpl->getVar('ArticleTitle'); $author = $this->tpl->getVar('ArticleAuthor', array('author'=>'%F %L')) </source>
La méthode 'getContainer' retourne un objet implémentant la méthode 'getnext' permettant de récupérer les résultats du container. La méthode 'getnext' retourne false quand il n'y a plus de résultats et true dans le cas contraire. Quand la méthode retourne false, elle détruit automatiquement son contexte. Sinon, vous avez la possibilité de détruire le contexte en appelant la méthode :
<source lang="php">
$this->cont = $this->tpl->getContainer('ArticleTopics', $args); $thsi->cont->destroyContext(); </source>
L'appel à 'destroyContext' détruit le contexte courant et supprime les variables.
Normalement, à chaque appel à la méthode 'getnext', le système créé les variables du container dans l'objet implémentant la méthode 'getnext':
<source lang="php">
include_once $babInstallPath.'utilit/ovmlapi.php';
function list_articles() { global $babBody;
class list_articles_class { function list_articles_class() { $this->tpl = new bab_ovmlAPI(); $args['topicid'] = 12; $args['archive']='No'; $args['topicorder']='Yes'; $this->cont = $this->tpl->getContainer('ArticleTopics', $args); }
function getnextarticle() { if( $this->cont->getnext() ) { $this->title = $this->cont->ArticleTitle; return true; } else { return false; } }
} ... } </source>
Si l'on souhaite créer ces variables dans un autre objet, on peut passer cet objet à chaque appel à la fonction 'getnext':
<source lang="php"> include_once $babInstallPath.'utilit/ovmlapi.php';
function list_articles() { global $babBody;
class list_articles_class { function list_articles_class() { $this->tpl = new bab_ovmlAPI(); $args['topicid'] = 12; $args['archive']='No'; $args['topicorder']='Yes'; $this->cont = $this->tpl->getContainer('ArticleTopics', $args); }
function getnextarticle() { if( $this->cont->getnext($this) ) { echo $this->ArticleTitle; return true; } else { return false; } }
} ... } </source>