Joomla! Platform
Pourquoi l’API Joomla!
C'est une présentation que j'ai fait lors de la 2eme édition de la semaine de web à Alger [événement Algeria 2.0] exactement lors de Joomla! Day Alger le 18 Avril 2012.
J'ai essayé de présenter l'api d'une manière simple et efficace afin d'initier les règles de bases d'utilisation de cette api pour le public présent.
1. Joomla! Platform
Pourquoi l’API Joomla!
Présenter par : SAM Bilel
18/04/2012 Joomla! Day Alger 1
2. I’m?
• Master IA
• Membre fondateur de la JUG-algeria
• Co-founder de
• imaginical inc
• Voxel Solution
• Modérateur sur le forum JUG-algeria
depuis Janvier 2012.
18/04/2012 Joomla! Day Alger 2
5. Joomla! CMS
Joomla! 1.7
Avec la séparation du framework Joomla! ... du CMS
Joomla!
• Joomla! CMS est désormais juste une application qui
utilise la Joomla! Platform
Joomla! =
• Joomla! CMS, pour le CMS Joomla! tel que les
utilisateurs l'utilisent depuis ses débuts,
• Joomla! Platform, pour la partie Framework de Joomla!
qui devient désormais un framework autonome.
18/04/2012 Joomla! Day Alger 5
7. Framework (1)
• Un framework est un kit de composants logiciels structurels, qui
définissent les fondations ainsi que les grandes lignes de
l’organisation de tout ou d’une partie d'un logiciel (architecture).
• Il se distingue d'une simple bibliothèque logicielle principalement
par :
• Son caractère générique, faiblement spécialisé, contrairement à
certaines bibliothèques.
• Peut à ce titre être constitué de plusieurs bibliothèques chacune
spécialisée dans un domaine.
• Peut néanmoins être spécialisé, sur un langage particulier, une
plateforme spécifique, un domaine particulier (Reporting,
mapping, etc).
18/04/2012 Joomla! Day Alger 7
8. Framework (2)
• Il impose par sa construction une certaine architecture
logicielle voire conduisant le développeur à respecter certains
patterns; Les bibliothèques le constituant sont alors
organisées selon le même paradigme
• Les frameworks sont donc conçus et utilisés pour modeler
l'architecture des logiciels applicatifs, des applications web,
des middleware et des composants logiciels.
18/04/2012 Joomla! Day Alger 8
9. Api (1)
• Application Programming Interface
• Une interface de programmation fournie par
un programme informatique.
• Elle permet l'interaction des programmes les
uns avec les autres, de manière analogue à
une interface homme-machine.
18/04/2012 Joomla! Day Alger 9
10. Api (2)
• Du point de vue technique une API est un
ensemble de fonctions, procédures ou classes
mises à disposition par une bibliothèque
logicielle, un système d'exploitation ou un
service.
• La connaissance des API est indispensable à
l'interopérabilité entre les composants
logiciels.
18/04/2012 Joomla! Day Alger 10
11. Api || Framework
Un framework peut inclure des programmes de
soutien, des bibliothèques de code , un langage de
script du logiciel, ou d'autres pour aider à développer
et coller ensemble les différents composants d'un
projet de logiciel.
Diverses parties du cadre peut être exposée à travers
une interface de programmation d'application (API).
18/04/2012 Joomla! Day Alger 11
13. Joomla! le framework ?
• la dernière version de Joomla! Platform est
sortie le 4 janvier 2012.
• Un élément important de l'architecture
Joomla. Il est basé sur les designs patterns
(Modèle de concept OO) qui rendent le
noyau Joomla très maintenable et facilement
extensible.
• 1/3 des développeurs tiers bénéfices de la
richesse et des fonctionnalités facilement
accessibles de ce Framework.
18/04/2012 Joomla! Day Alger 13
14. Joomla! le framework ?
Le projet dans sa version 11.4 est constitué de :
• Classes : 270 (231 dans platform 11.3)
• Méthodes : 2000 (1946 dans platform 11.3)
• Lignes de code : 25970 (24717 dans platform 11.3)
• Commentaires : 62155 (62154 dans platform 11.3)
• Lignes vides : 11877 (11800 dans platform 11.3)
• Joomla! Platform 11.4 Stable (4 Janvier 2012)
Le dépot
• git://github.com/joomla/joomla-platform.git
18/04/2012 Joomla! Day Alger 14
16. La classe jFactory (1)
• Une dizaine de méthodes sont associées à à la classe Jfactory
• getUser() : Retourne les informations d’un utilisateur connecté
• getDBO() : Permet l’accès et la récupération de la base de donnée
• getEditor() : Permet d’accéder à l’éditeur sélectionné de joomla (par exemple
TinyMCE)
• getConfig() : Permet d’accéder aux différentes configurations du site
• getURI() : Retourne des information concernant l’url : actuelle, de base…
• getLanguage() : Retourne le langage actuel
• getDate() : Retourne la date et l’heure actuelle
• getDocument() :Manipule les propriétés du document : Title, Metadata,
Description…
• getApplication() : Renvoie une information sur l’objet
• getTemplate() : Récupère l’objet template
• getSession() : Permet de créer une session
• getACL() : Gère les droits d’accès aux objets
• getMailer() , getCache() , getXMLParser() : …
18/04/2012 Joomla! Day Alger 16
17. La classe jFactory (2)
• getUser() : Retourne les informations d’un
utilisateur connecté.
• getDBO() : Permet l’accès et la récupération
des données à partie de la BD.
18/04/2012 Joomla! Day Alger 17
18. getDBO(1)?
Se connecter à la base de données
• $database = &JFactory::getDBO();
On insère dans la table users et dans le champ
username, le pseudo Joomla.
• $database->setQuery("INSERT INTO #__users
(`username`) VALUES ('Joomla')");
Exécution de la requête :
• $database->query();
18/04/2012 Joomla! Day Alger 18
19. getDBO(2)?
Pour sélectionner le pseudo où le id = 1
• $query = "SELECT username FROM #__user
WHERE id=1";
Exécution de la requête :
• $database->setQuery($query);
Ce qui suit écrira Joomla si l'utilisateur avec l'id 1
dans ma base s'appelle Joomla
• echo $database->LoadResult();
<!– pour une requête qui renvoie un résultat sur une ligne -->
18/04/2012 Joomla! Day Alger 19
20. getDBO(3)?
Pour une requête qui renvoie plusieurs résultats on
utilise loadObjectList :
• $query = "SELECT * FROM #__categories";
• $database->setQuery($query);
On charge les résultats de la requête dans l'objet
$rows
• $rows = $database->loadObjectList();
foreach ($rows as $row)
{
echo $row->title ." : ". $row->description."<br />";
}
<!– On affiche le titre et la description de chaque tuple -->
18/04/2012 Joomla! Day Alger 20
21. getDBO(4) ?
• Pour afficher le prefix des tables
• $db =& JFactory::getDBO();
• echo "Database prefix is : " . $db->getPrefix();
18/04/2012 Joomla! Day Alger 21
22. getUser() ?
• $UserInfo =& JFactory::getUser();
Pour affichera l'id de l'utilisateur
• $UserInfo->id;
Le nom de l'utilisateur
• $UserInfo->name;
• username, email, password , usertype,
registerDate , lastvisitDate , block , guest,
gid, …
18/04/2012 Joomla! Day Alger 22
23. The Question ?
• Pourquoi choisir Joomla! Platform ?
• Peut-on utiliser l’API Joomla! en externe
de Joomla! ?
18/04/2012 Joomla! Day Alger 23