Quantcast
Channel: Documentation PHPBoost
Viewing all 35 articles
Browse latest View live

Présentation de PHPBoost

$
0
0

Présentation générale



PHPBoost est un CMS (Content Managing System ou système de gestion de contenu) français. C'est un logiciel libre distribué sous la licence GNU/GPL. Il permet à n'importe qui de créer son site de façon très simple, tout est assisté. Conçu pour satisfaire les débutants, il devrait également ravir les utilisateurs expérimentés qui souhaiteraient pousser son fonctionnement ou encore développer leurs propres modules.

Comme son nom l'indique, PHPBoost utilise le PHP comme langage de programmation principal, mais comme toute application Web, le XHTML et les CSS pour la mise en forme des pages, le JavaScript pour ajouter une touche dynamique sur celles-ci, ainsi que du SQL pour effectuer des opérations dans la base de données. Il s'installe sur un serveur Web et se paramètre à distance.

Comme pour une grande majorité de logiciels libres, la communauté de PHPBoost permet d'avoir une fiabilité importante, car beaucoup d'utilisateurs ont testé chaque version et les ont ainsi approuvées. Il bénéficie par ailleurs d'une évolution rapide, ainsi nous essayons d'être le plus possible à l'écoute des commentaires et des propositions de chacun. Même si tout le monde ne participe pas à son développement, beaucoup de personnes nous ont aidés, rien qu'en nous donnant des idées, en nous suggérant des modifications ou encore des fonctionnalités supplémentaires.

Si vous ne deviez retenir que quelques points essentiels sur le projet, ce seraient ceux-ci :

  • Projet Open Source sous licence GNU/GPL
  • Code XHTML 1.0 strict et sémantique
  • Multilangue
  • Facilement personnalisable grâce aux thèmes et templates
  • Gestion poussée d'éditions des membres (ajouts/suppressions de champs, restrictions, ...)
  • Gestion fine des droits et des groupes multiples pour chaque utilisateur
  • URL Rewriting
  • Installation et mise à jour automatisées des modules et du noyau
  • Aide au développement de nouveaux modules grâce au framework de PHPBoost
  • Installation et gestion du CMS en ligne de commande possible

Pour en savoir plus concernant les différentes fonctionnalités qu'offre PHPBoost, vous pouvez consulter en démonstration la dernière version de PHPBoost.

Historique



Le projet PHPBoost a été envisagé début juin 2005 et son développement a débuté quelques semaines plus tard, le 17 juin 2005 pour être précis. Courant 2011, les fondateurs originaires de PHPBoost ont décidés de céder leurs places. C'est alors ReidLos qui reprend les rennes du projet, suivi par toute une équipe soudée et prête à sortir la 4.0 prévue pour mi-2012. Notre CMS a déjà plus de sept ans et dispose ainsi d'une certaine maturité.

Voici ensuite la liste des différentes versions qui ont été publiées depuis sa sortie :



Organisation de la communauté française



PHPBoost étant un logiciel français, la communauté française est la plus développée. Elle est dirigée par les développeurs et comporte plusieurs équipes qui se partagent les rôles afin d'assurer la continuité du développement de PHPBoost.
Le support du logiciel est géré par les différentes équipes en s'effectuant sur le forum.

Voyons maintenant les différentes équipes travaillant sur PHPBoost :

ÉquipeObjectifs

  • Gestion du projet (prise de décisions, coordination des équipes)
  • Développement du noyau et de certains modules
  • Support
  • Direction de la communauté française
  • Rédaction de la documentation de développement


  • Développement du Framework PHPBoost
  • Aide aux utilisateurs
  • Rédaction de la documentation de développement


  • Rédaction de la documentation sur l'ensemble des aspects de PHPBoost
  • Aide aux utilisateurs


  • Traduire le logiciel dans des langues étrangères
  • Créer et entretenir des communautés dans chaque pays


  • Développer de nouveaux modules en utilisant le Framework PHPBoost
  • Rédaction de la documentation de développement


  • Créer des thèmes pour PHPBoost (à la demande ou selon leurs propres idées)
  • Aider les utilisateurs désirant créer leur thème
  • Rédaction de la partie graphisme de la documentation


  • Gérer le forum (règles d'utilisation, déplacer/modifier/supprimer des sujets)
  • Aider les utilisateurs de PHPBoost
  • Gérer les sanctions et avertissements


  • Diffuser les news de PHPBoost sur le site
  • Promouvoir PHPBoost à l’extérieur (sites, forums, ...)
  • Gérer les règles d'utilisation du forum en coopération avec l'équipe Modération


  • Anciens chefs de projet et créateurs de PHPBoost. Nous les remercions



Remerciements



Vous pourrez retrouver ici la liste des projets ayant apporté leur soutien à notre projet, que ce soit en parlant du logiciel, en proposant le téléchargement de PHPBoost sur leur serveur ou de toutes autres manières. Merci à eux dont vous pouvez voir une liste complète ici.


Notepad ++




Notepad ++ est un éditeur libre. PHPBoost a été écrit entièrement grâce à ce magnifique éditeur très performant et intuitif. Merci à son équipe de développement.


Tango Desktop Project




Tango Desktop Project est un projet visant à harmoniser les icônes des logiciels en fonction des différentes plate-formes utilisées. Ce pack d'icônes libres nous a permis de ne pas perdre de temps dans le développement graphique et ces boutons s'adaptent parfaitement à tous les thèmes. Merci à ce projet qui permet de donner plus de couleurs et de convivialité à PHPBoost.


Eclipse PDT



Eclipse est un projet visant à développer tout un environnement de développement libre, extensible et polyvalent. Son objectif est de produire et fournir divers outils gravitant autour de la réalisation de logiciel, englobant les activités de codage logiciel, de modélisation, de conception, etc.
PHPBoost utilise "IDE PHP" (outil de développement PHP) basé sur Eclipse.


TinyMCE



TinyMCE est un éditeur HTML WYSIWYG (What You See Is What You Get) développé en JavaScript.
Cet éditeur transforme un champ de formulaire web en une zone d'édition dotée d'une barre d'icônes. Cette zone peut ensuite être utilisée comme un traitement de texte pour produire du code HTML sans en connaître la syntaxe.


PCLZIP



Développé par PHPConcept, PCLZIP est une librairie permettant de travailler sur des archives au format Zip en PHP. Elle est utilisée à plusieurs reprises dans PHPBoost.


GeSHi



GeSHi (Generic Syntax Highlighter) est un script PHP qui permet de colorer syntaxiquement de nombreux langages informatiques.


Script.aculo.us



script.aculo.us est une bibliothèque (ou Framework) JavaScript et AJAX offrant des effets visuels dynamiques et des éléments d'interface utilisateur.


PHPMathPublisher



PHPMathPublisher est un ensemble de fonctions permettant de mettre en forme des formules mathématiques à partir d'une syntaxe proche de celle du LaTeX.

Transfert des fichiers via logiciel FTP

$
0
0

Préparatifs



Après avoir téléchargé les fichiers de PHPBoost à cette adresse, vient la phase de les transférer sur le serveur de votre hébergement Web.

Pour cela il vous faut un logiciel FTP. Pour cette documentation, nous utiliserons le logiciel gratuit Filezilla, très simple d'utilisation, téléchargeable ici (prendre Filezilla client).

Installez le sur votre ordinateur, puis démarrez le.

Voici l'affichage que vous obtenez :



Enregistrer les paramètres de son site



Afin d'éviter de devoir retaper systématiquement les identifiants de connexion, nous allons les enregistrer dans le logiciel.

  • Cliquez sur Fichiers puis Gestionnaire de sites




  • Cliquez sur Nouveau site

Quelques paramètres sont à renseigner :

  • Hôte : Ceci se trouve dans les paramètres que votre hébergeur vous a fournis
  • Port : 21 (dans la grande majorité des cas)
  • Protocole : FTP
  • Type d'authentification : Normale
  • Utilisateur : Ceci se trouve dans les paramètres que votre hébergeur vous a fournis
  • Mot de passe : Ceci se trouve dans les paramètres que votre hébergeur vous a fournis

Cliquez ensuite sur Connexion.

Par la suite pour vous connecter à votre site, il suffira de cliquer sur l'icône ordinateur et cliquer sur le nom que vous avez donné à votre site, comme ceci :



Transférer les fichiers





La partie gauche correspond aux fichiers contenus dans le dossier que vous avez choisi d'afficher.
La partie droite correspond aux fichiers de votre hébergement.

Maintenant, deux solutions s'offrent à vous :

  • Mettre les fichiers du dossier phpboost directement dans le répertoire www (n'est pas commun à tous les hébergeurs, peut varier. Dans mon cas il n'y a rien) qui est la racine de votre site, pour avoir une adresse du type : www.mon-site.com/bidule.truc
  • Placez directement le dossier phpboost à la racine de votre site, vous aurez alors une adresse du type : www.mon-site.com/phpboost/bidule.truc (cette dernière solution étant utile si plusieurs sites sont hébergés sur le même serveur).


Après avoir choisi une des deux solutions, sélectionnez tous les fichiers et répertoires (ou directement le dossier phpboost si vous avez choisi la deuxième solution) et avec la souris maintenue enfoncée, faites glissez les fichiers dans le répertoire de votre hébergement (qui se trouve à droite).

Le transfert se réalise :



Une fois que tous les fichiers sont transférés, passez à l'installation de PHPBoost.

Choix du serveur local

$
0
0
Dans cet article, nous nous intéresseront donc à l'installation d'un serveur local sur votre ordinateur sous différents système d'exploitation, à savoir Windows, Mac et Linux.

Si vous choisissez d'installer votre site sur un serveur local, c'est que vous voulez travailler tranquillement sur celui-ci qui ne sera accessible qu'à vous et donc qui ne le sera pas sur Internet. Ceci étant conseillé pour préparer votre site pour qu'il soit prêt et opérationnel pour ensuite le transférer sur un serveur en ligne et ainsi le rendre accessible à tout le monde.

Windows



Contrairement aux autres systèmes d'exploitation, Apache (le serveur Web le plus utilisé) n'est pas installé nativement sur Windows. Il va donc falloir le faire manuellement, mais je vous rassure il existe des logiciels qui incluent tout ce dont nous avons besoin pour créer un serveur Web local (Apache, PHP, MySQL (ou autre serveur de base de données), PHPMyAdmin, etc...).

Si Apache ne démarre pas c'est que le port 80 est utilisé par un logiciel sur votre ordinateur (Skype par exemple). Pour cela, fermez tous vos logiciels qui l'utilise pour pouvoir démarrer Apache. Une fois Apache démarré, relancez le logiciel, les deux fonctionneront alors simultanément.

Pour cet article, nous utiliserons WAMPServer, mais vous pouvez également utiliser EasyPHP qui est aussi extrêmement simple d'utilisation.

Installer les modules complémentaires



Pour activer ces modules, il faut cliquer sur le logo WAMP, dans la barre des taches, puis :

  • PHP Settings, PHP extensions, puis cliquez sur le nom du module GD2 à charger si ce n'est pas fait par défaut (php_gd2)
  • Apache Modules où vous activez rewrite_module

Ces modules sont déjà installés par défaut avec EasyPHP

Identifiant et mot de passe



Par défaut l'identifiant pour la base de données est root, et pour le mot de passe, il n'y en a pas.
Le serveur SQL est localhost.

Emplacement des fichiers



Par défaut, si vous ne l'avez pas modifié vous-même pendant l'installation, les fichiers de votre site seront à mettre dans le répertoire : C:/wamp/www.

Pour accéder au site par votre navigateur, cliquez sur l'icône WAMP dans la barre des taches, et cliquez sur localhost.

Créer une base de données



PHPBoost utilise une base de donnée pour sauvegarder le contenu de votre site. Cette base de donnée est accessible via PhpMyAdmin, qui a été installé lorsque vous avez installé WAMPServer.
Ouvrez PHPMyAdmin en cliquant sur l'icône WAMP, dans la barre des taches, puis sur PHPMyAdmin.



Pour créer une base de données, ils vous suffit de cliquer sur Bases de données en haut. Entrez le nom de votre base de données et cliquez sur Créer. Voilà, votre base de données est créée et prête à être utilisée !

Vous pouvez maintenant installer votre site, pour cela regardez l'article sur l'installation de PHPBoost.

Mac



Avec Mac, Apache est déjà livré d'origine, il suffit juste de l'activer et de le coupler avec MySQL et PHP. Il est possible de les activer manuellement. Mais sachez qu'il existe aussi un package prêt à l'emploi, du même type que sur Windows.

Pour activer manuellement ces deux modules, nous allons vous rediriger vers trois tutoriels. Le premier et le deuxième, similaire, permettant une activation plutôt rapide et simple. Le troisième, détaillant un peu plus la procédure. Ce dernier n'étant plus entièrement à jour, mais pouvant largement vous servir.

Pour ceux ne souhaitant pas faire cela, vous pouvez vous diriger vers XAMPP pour Mac. La dernière mise à jour datant de Mars 2010, mais totalement capable de faire tourner la dernière version de PHPBoost.

Linux



Pour Linux, il existe le package XAMPP (le même que pour Mac). Vous pouvez le télécharger à cette adresse. L'installation est très simple, et se fait en seulement 4 étapes. L'ensemble de la documentation et de l'utilisation de XAMPP est accessible à la même adresse (en français).

Vous avez également une autre solution, télécharger tous les packages nécessaires via votre distribution, mais ici la démarche se complique. Selon votre distribution, selon les packages sélectionnés, à l'installation, Apache et MySQL seront ou non installés. Pour en savoir plus, merci de vous reporter à la documentation de votre distribution afin de savoir si le serveur est installé, lancé et si ce n'est pas le cas, pour savoir comment l'installer.

Choix de la distribution

$
0
0
PHPBoost possède une vingtaine de modules. Compte-tenu du fait que les utilisateurs de PHPBoost n'ont pas tous les mêmes besoins, nous avons décidé de proposer PHPBoost sous différentes formes pour proposer un pack d'installation adapté aux besoins de chacun.

Qu'est-ce qu'une distribution ?



PHPBoost possédant un nombre de modules assez important, nous avons pensé que, certainement, peu d'utilisateurs seraient intéressés par l'ensemble des modules. Une distribution est donc un pack contenant l'installateur, le noyau de PHPBoost, une combinaison de modules adaptée à la distribution ainsi qu'un thème.

Le choix de la distribution ne limite en rien l'évolution de votre site. Si vous prenez la distribution publication et que par la suite vous avez, par exemple, besoin du module téléchargement, vous pourrez bien évidemment l'installer.

Les différentes distributions



PHPBoost est distribué sous les formes suivantes :

  • Complète
  • Publication
  • Communauté
  • Développement


Complète



Cette distribution comprend tout simplement l'ensemble des modules. Elle permettra aux utilisateurs ayant des besoins spécifiques de trouver leur bonheur sans avoir à installer des modules supplémentaires.

Publication



Accompagnée d'un thème sobre, cette distribution permet de créer un site de publication de contenu contenant des outils tels que le module de gestion des pages ou d'images.

Communauté



La distribution communauté est destinée aux sites étant à la base d'une communauté. Les différents outils de communication tels que le forum et le wiki facilitent la collaboration au sein d'une communauté, l'espace membre de PHPBoost fournissant le reste des fonctionnalités nécessaires à la gestion d'une communauté.

Développement



Cette distribution, appelée PDK (PHPBoost Development Kit), est dédiée aux développeurs Web qui souhaitent développer un module. Elle contient la documentation du framework de PHPBoost qui permet de trouver assez facilement les différents services du noyau qu'on souhaite utiliser. Elle a aussi la particularité de contenir une version du noyau non optimisée car, les performances ne sont pas l'objectif de cette distribution et les commentaires présents dans le code sont très pratiques pour les développeurs travaillant avec un IDE (logiciel d'assistance au développement).

Détail



Modules Communauté Publication Complète Développement
Articles

Base de données

Calendrier

Connexion

Contact

En ligne

Discussion

Documentation du Framework

FAQ

Forum

Galerie

Liens web

Livre d'or

Multimédia

News

Newsletter

Pages

Recherche

Sondages

Statistiques

Téléchargement

Wiki

Avant d'installer PHPBoost

$
0
0
PHPBoost est, comme son nom l'indique, un logiciel écrit en PHP. Une des particularités de ce langage est que les programmes ne sont pas pré-compilés. Ils le sont lors de l'exécution de chaque page. Il faut donc un logiciel qui puisse interpréter ce langage, ainsi qu'un logiciel qui soit à même de transformer votre ordinateur en serveur web (ou du moins d’interagir avec celui-ci).

Cette page va vous expliquer ce qu'est, brièvement, un serveur Web, la configuration minimale qu'il faut avoir pour installer PHPBoost et toutes les informations qui vont vous permettre de réaliser une installation optimale et rapide. Ce tutoriel vous permettra donc de partir avec de bonnes bases avant l'installation.

Avant propos et explications



PHPBoost est un logiciel qui s'installe sur un serveur Web et non sur un poste utilisateur.
Un serveur est un ordinateur connecté 24h/24 7j/7 sur Internet qui répond aux requêtes que lui demandent les clients (c'est-à-dire vous et moi). Ainsi lorsque vous surfez sur internet ou lorsque vous changez de page, vous demandez au serveur de vous renvoyer le contenu de cette page et il l'exécute.

Il vous faut donc disposer d'un hébergement pour utiliser PHPBoost, il y a deux solutions pour cela, soit faire appel à un prestataire d'hébergement (qui fournit la plupart du temps tout ce qu'il faut) soit créer soi-même un serveur sur son propre un ordinateur (c'est-à-dire en local). Nous y reviendrons plus tard dans ce tutoriel.

Un serveur Web doit être équipé de plusieurs types de logiciels pour pouvoir fonctionner, mais rassurez-vous il est possible de monter un serveur Web uniquement avec des logiciels libres (c'est d'ailleurs la combinaison la plus utilisée).

Système d'exploitation



Un serveur doit d'abord être équipé d'un système d'exploitation, comme tout ordinateur en réalité.

Linux est le système d'exploitation le plus adapté pour ce genre de serveur et est d'ailleurs de loin le plus utilisé. Il est en effet performant, stable, assez peu consommateur en ressource et permet de gérer de façon satisfaisante les droits d'accès aux fichiers. C'est le système qui permet d'avoir les meilleures performances pour PHPBoost (et en général pour l'ensemble des CMS).

Mais il est possible d'utiliser d'autres systèmes d'exploitation, toute la pile logicielle nécessaire à faire fonctionner PHPBoost existe également sous Windows (d'ailleurs un projet de serveur web clé en main sous Windows existe sous le nom de WAMP), mais aussi sous Mac OS, Solaris, etc.

PHP



Comme dit plus haut, PHPBoost est écrit en PHP qui est un langage interprété et non compilé, il est donc nécessaire que votre serveur dispose d'un interpréteur PHP.

PHPBoost 3 et les versions inférieures (1 et 2) sont programmées en PHP 3 et 4. Ce qui veut dire qu'avec PHP 3, vous pouvez tout à fait faire marche PHPBoost. Mais nous recommandons que votre serveur dispose d'au moins PHP 4.4 pour pouvoir faire fonctionner l'ensemble des fonctionnalités de façon optimale. PHP étant rétrocompatible, ces versions de PHPBoost fonctionneront naturellement très bien sur PHP 5.

En revanche, PHPBoost 4 nécessite obligatoirement PHP 5 pour fonctionner, car le code exploite assez abondamment les nombreuses nouveautés offertes par PHP 5. Il faut en fait avoir plus exactement une version supérieure à PHP 5.1.2. Ne vous inquiétez pas, à l'heure actuelle la plupart (si ce n'est l'ensemble) des hébergeurs possèdent PHP 5. Lorsque ce n'est pas le cas la modification d'un fichier permet de forcer l'utilisation de PHP 5.

Serveur Web



Le serveur Web est le logiciel qui va interagir avec les navigateurs des utilisateurs du site via le protocole HTTP. Le serveur Web le plus populaire est Apache HTTP Server, c'est un logiciel libre soutenu par la fondation Apache qui détient plus de 50 % des parts de marché dans ce secteur.
PHPBoost peut fonctionner avec d'autres serveurs Web dans la mesure où ces derniers disposent d'un pont avec PHP. Cependant, c'est Apache qui proposera un fonctionnement optimal à PHPBoost, car certaines fonctionnalités s'appuient directement sur des propriétés d'Apache qui ne sont pas disponibles, c'est par exemple le cas avec l'URL Rewriting qui ne fonctionne que sous Apache. Nous recommandons donc la version 2 d'Apache.

Du côté des solutions Microsoft nous n'avons pas essayé nous-mêmes de faire fonctionner PHPBoost sous ISS (le nom du serveur Web de Microsoft), mais des utilisateurs nous ont fait part de leur réussite.

Vous trouverez, danscet article, une liste d'hébergeurs proposant des offres de qualités, choisis par nous-même.
Pour travailler sur votre site, vous pouvez utiliser un serveur local, dans ce cas, consulter cet article pour en savoir plus.

Base de données



PHPBoost délègue le stockage des données, comme une majorité des applications de gestion, à un système de gestion de base de données qui est une véritable machine de guerre pour ce genre de service.

Actuellement PHPBoost n'est compatible qu'avec MySQL mais, il est prévu dans un futur assez proche qu'il supporte également SQLite et PostGreSQL, deux alternatives, également libres, à MySQL.

La version 5 de MySQL est nécessaire pour faire fonctionner PHPBoost.

Modules complémentaires pouvant être intéressant



Pour des raisons de ressources système, les hébergeurs gratuits (entre autres) bloquent certains modules de PHP et d'Apache gourmands en ressources afin de maintenir une navigation fluide pour tout le monde. Pourtant, certains de ces modules sont pratiques (mais non indispensables).

Voici les deux modules qui sont recommandés pour utiliser PHPBoost :

Librairie GD : Une extension de PHP permettant de travailler sur des images (redimensionnement, fusion et autres opérations bien utiles pour une galerie photos par exemple).

Mod_rewrite (ou URL Rewriting) : Une configuration spéciale d'Apache qui permet de réécrire le nom des pages web et ainsi de les simplifier pour les mettre à un format nettement plus apprécié des moteurs de recherche. Il n'est en aucun cas nécessaire mais, il reste tout de même un net plus pour votre site (pour le référencement par exemple).

Configuration optimale



La pile logicielle que nous recommandons et qui permettra de faire fonctionner PHPBoost d'une façon optimale est baptisée LAMP (Linux Apache MySQL PHP). C'est en général la configuration que propose les hébergeurs.

Le site officiel de PHPBoost s'appuie d'ailleurs sur ce type de configuration.

Choix de la distribution



PHPBoost possède plusieurs modes de distribution.
Compte-tenu du fait que les utilisateurs de PHPBoost n'ont pas tous les mêmes besoins, nous avons décidé de proposer PHPBoost sous différentes formes pour proposer un pack d'installation adapté aux besoins de chacun.

Pour choisir la vôtre, nous vous proposons de regarder cet article expliquant les différences entre les distributions proposées.

Téléchargement



PHPBoost étant codé en PHP, il n'existe aucun fichier exécutable d'installation. L'ensemble des fichiers nécessaires est regroupé dans une archive que vous devez télécharger et décompresser (avec 7-Zip par exemple). Téléchargez la dernière version en suivant ce lien : Télécharger PHPBoost .

Transfert des fichiers



Maintenant que vous avez choisi votre mode de distribution et que vous l'avez téléchargée, il faut mettre vos fichiers sur votre serveur.

Pour mettre votre site en ligne, vous devez transférer tous les fichiers de PHPBoost sur votre serveur grâce à un logiciel FTP.

Nous vous proposons cet article qui va vous guider pas à pas pour mettre vos fichiers sur votre serveur et ainsi procéder à l'installation de PHPBoost !

Choix du serveur en ligne

$
0
0

Comment héberger son site



Souscrire un contrat d'hébergement



Sur internet, de nombreuses sociétés proposent d'héberger votre site internet. Certains hébergeurs sont gratuits, d'autres sont payants. Il existe des hébergeurs gratuits qui fournissent de bons services, mais ils se font rares. Une grande majorité d'entre eux sont payants et proposent un service plus ou moins fiables. Nous vous proposerons, dans cet articles, plusieurs hébergeurs, gratuits comme payants, fournissant de bonnes prestations.

Héberger sois-même son site



Une grande partie des développeurs travaillent sur leur propre ordinateur, en installant un serveur local. Mais certains préfèrent carrément publier leur site hébergé sur leur propre ordinateur. Il faut savoir que c'est tout à fait faisable, sur n'importe quel système d'exploitation mais cela demande des connaissances importantes, et cela entraine des contraintes non négligeables. C'est pourquoi nous ne rentrerons pas dans les détails à ce niveau, trop peu de gens seraient intéressés.

Liste d'hébergeurs (gratuits et payants)



Cette liste n'est pas exhaustive, l'installation de PHPBoost est possible sur ces serveurs sans soucis.
Les hébergeurs sont classés par ordre alphabétique, afin de ne pas privilégier l'un par rapport à l'autre.


Voici une petite liste d'hébergeurs gratuits et payants, afin d'aider les futurs utilisateurs de PHPBoost dans leur choix.

Avant de commencer, voici deux guides qui vous aideront à choisir votre hébergement :



Hébergeurs gratuits




123.fr




Hébergement avec publicité à placer soit même sur votre site. Modules pré-installés. Réponses du support rapides. Les nouveaux se perdront surement dans l'espace membre qui est un peu dense.

http://123.fr/hebergementgratuit.html

L'installation de PHPBoost est réalisable, il faudra juste mettre les répertoires inscriptibles (voir l'installation de PHPBoost, à la 3ème étape) en CHMOD 777


C-WebHosting




Hébergeur gratuit, avec hébergement de taille modeste (500 MO). Pas de publicité. Il est nécessaire de faire une demande pour être accepté. Pour plus de détails, voir ici.

http://www.c-webhosting.org/index.php

L'installation de PHPBoost est réalisable, il faudra juste mettre les répertoires inscriptibles (voir l'installation de PHPBoost, à la 3ème étape) en CHMOD 777


LegTux




Hébergeur de très bonne qualité, aucunes publicités, un compte Mail, Jabber, Upload, ... Support très réactif via forum. Soumission du projet pour que le compte soit ouvert.
Adresse par défaut du type Mon-site.legtux.org.

http://www.legtux.org/


Léoserveur




Aucune publicité. De 10 MO à 1 GO, et plus encore. Packs personnalisés suivant vos besoins. Les inscriptions peuvent être fermées en raison d'une trop grande demande d'hébergements.

http://www.leobaillard.org/?p=offres


LesCigales




Hébergeur sérieux. Pas de publicité. Hébergement modeste (100 MO). Les places sont limitées.

http://www.lescigales.org/


Olympe Network




Hébergeur de qualité et sans publicités. Impose des quotas sur le nombre d'usages, il faut être patient et chanceux.

https://www.olympe-network.com/

Hébergeurs micro-paiement




Allo-Heberge




Recommandé par les utilisateurs, aucun problème à signaler.

http://www.allo-heberge.com/


Redby




Le serveur propose un hébergement alternatif pour les sites web, les projets, publications, essais, etc. Supporte comme langage de programmation, soit PHP5 soit Ruby On Rails, couplé à une base de données MySQL.

http://www.redby.fr/


Easy Hébergement




Hébergeur reconnu. Solutions 100% info-gérées, adaptées à tous les besoins et tous les budgets.

http://www.easy-hebergement.fr/hebergement-micropaiement

Hébergeurs payants




Nuxit




PHPBoost dispose d'un partenariat avec l'hébergeur web Nuxit qui prête gracieusement un serveur dédié à la communauté PHPBoost, sur lequel sont hébergés l'ensemble des sites de la communauté (sites français et anglais, site de démonstration, téléchargements).
Nous vous recommandons cet hébergeur qui propose différentes offres s'adaptant aux besoins de chacun (du petit hébergement mutualisé, au gros serveur dédié) et une excellente qualité de service, tout ceci à un bon rapport qualité prix. La fidélité des clients est récompensée.
Le support est très réactif (déjà eu des réponses dans la demi-heure à des questions posées à 3h du matin...).
Nuxit propose également un forum d'entraide entre clients.




1and1




Hébergeur reconnu de grande qualité, avec support réactif.

http://www.1and1.fr


Amen




Hébergeur de qualité, compétitif, avec des offres pour tous.

http://www.amen.fr


Hebeh




De 250 MO à 60 GO, aux tarifs de 1 à 5.23€ HT par mois, trafic illimité, même avec la solution de base. Support réactif.

http://www.hebeh.com/


Infomaniak




Offre attractive, mais à prix un peu élevé. 60 Go d'espace disque pour 90€ TTC par an (uniquement la 1ère année).

http://www.infomaniak.com/


Maven Hosting




Hébergement disposant de bons prix, très bon support, serveurs hébergés en France, très bonne qualité.

https://www.mavenhosting.com/


nfrance




Hébergement de qualité. Plusieurs formules avec rapport Prix/Services plutôt moyen.

http://www.nfrance.com/
Forum d'entraide : http://forum.nfrance.com/


OVH




Hébergeur très connu mondialement, avec des offres relativement très compétitives : rapport qualité/prix/services excellent. Bonne rapidité des serveurs, aucun problème à signaler.

http://www.ovh.com/fr/hebergement_mutualise/


PHPNET




Des offres compétitives, côté espace d'hébergement à cout défiant toute concurrence.
Équipe sympathique et réaction rapide aux problèmes.

http://www.phpnet.org/mutualise.php


Planet-Work




Hébergeur depuis 9 ans, de très bonne qualité. Offres nombreuses.

http://www.planet-work.fr/index.html


Rapidenet




Hébergeur jeune, mais de qualité. Offres plus ou moins avantageuses (Attention : paiement en Dollars).

http://www.rapidenet.ca/

Sivit



Hébergeur efficace, bonne interface d'administration et en particulier pour ceux qui ont des parties à protéger, dans des répertoires qui peuvent être placés en amont de la racine du site.

http://www.sivit.fr/fr/index.php
Forum d'entraide : http://forum.sivit.fr/.


Strato




Hébergement à de bons prix. Assistance téléphonique gratuite.

http://www.strato-hebergement.fr

[4.x] Mettre à jour son module vers la nouvelle version

$
0
0

Le fichier de configuration



Dans la version 3.0, nous avons un fichier qui rassemble les différentes informations sur le module : le fichier config.ini qui est dans chaque dossier de langue.

Pour être plus cohérent, nous avons décidé de scinder ce fichier.


Le fichier de configuration : config.ini



Le nouveau fichier de configuration va se trouver à la racine de votre module.

Dans un premier temps, veuillez copier votre config.ini pour le coller à la racine de votre module.

Veuillez renommer :

  • author_link en admin_website
  • starteable_page en home_page
  • url_rewrite en rewrite_rules[]


Supprimez les champs suivant : info, admin_links, name, admin, css, cache, sql_table, com, note


Le fichier de description : desc.ini



Veuillez ensuite renommer le fichier config.ini dans les dossiers de langues en desc.ini.

Ouvrez le fichier et gardez seulement les champs name, info et admin_links.

Il vous faudra ensuite renommer le champ info en desc.

Création et suppression des tables du module



Si vous utilisez des tables spécifique pour votre module, vous avez un dossier nommé db à la racine de votre module.

Celui-ci centralise les fichiers SQL permettant de créer et de supprimer les tables en question lors de l'installation et la désinstallation de votre module.

Nous avons intégré un tout nouveau système permettant de gérer ça plus proprement.

Dorénavant vous allez avoir un seul et même fichier.

Veuillez créer un dossier phpboost à la racine de votre site. Vous pourrez y mettre tout ce qui est relatif à PHPBoost dans son ensemble.

Pour créer le nouveau fichier vous permettant de créer vos tables, veuillez vous reporter à cet article.

Les ExtensionPointProvider



Dans la précédente version, il était déjà possible de communiquer entre plusieurs modules.
Cela est rendu encore plus facile et lisible sur la version 4.0 grâce à un tout nouveau système : Les ExtensionPoint.

Veuillez suivre cet article.

[4.X] Utilisateur courant

$
0
0
La classe CurrentUser gère l'utilisateur au cours de sa session. Elle permet notamment de récupérer ses informations et gérer les autorisations pour les niveaux et groupes d'utilisateurs, sachant qu'elle supporte le fait qu'un utilisateur soit inscrit dans plusieurs groupes.


Informations de l'utilisateur



Pour récupérer une instance de la classe CurrentUser il suffit d'utiliser AppContext :

Code PHP :
AppContext::get_current_user()


Un certains nombres d'informations peuvent être ensuite récupéré grâce à cette classe :

Code PHP :
$user = AppContext::get_current_user();
$user->get_id(); // Identifiant de l'utilisateur
$user->get_pseudo(); // Pseudo de l'utilisateur
$user->get_email(); // Email
$user->get_show_email(); // Autorisation d'afficher l'email ou non
$user->get_level(); // Rang :=> -1 = visiteur, 0 =membre, 1 = modérateur, 2 = administrateur
$user->get_locale(); // Langue
$user->get_theme(); // Thème
$user->get_timezone(); // Fuseau horaire
$user->get_editor(); // Éditeur de texte
$user->get_groups(); // Groupes de l'utilisateur



Gestion des autorisations




Vérification du rang



Un utilisateur a un rang, qui lui est assigné, qui peut aller de visiteur à administrateur.

Pour vérifier si il a bien le rang pour accéder à une page par exemple il faut procéder ainsi :

Code PHP :
if (AppContext::get_current_user()->check_level(User::MEMBER_LEVEL))
{
	echo 'Tu n\'es pas membre, donc tu es un visiteur !';
}



Vérification sur les groupes




La gestion des groupes est à la base de la puissance du système d'autorisation sur PHPBoost. Vous pouvez donner des droits en plus des rangs, à des utilisateurs d'un groupe, et même membre par membre.

La gestion des autorisations est basée sur les opérateurs de bits. Sachant que la majorité des serveurs fonctionnent sur des architectures 32 bits (bien que les architectures 64 bits commencent à se démocratiser) nous pourrons gérer 32 types d'autorisations en une seule variable (il est fortement recommandé de ne pas dépasser ce nombre pour ne pas avoir des dépassements de capacité sur les architectures 32 bits).
En réalité en PHP nous n'avons pas la maîtrise totale des types et donc les entiers sont forcément signés (c'est-à-dire qu'ils peuvent être négatifs ou positifs) et donc le bit de poids fort (le plus à gauche) est utilisé pour savoir le signe du nombre. Sur une architecture 32 bits nous pourrons effectivement gérer que 31 autorisations par variable.
Dans les cas où on souhaite gérer plus de 31 autorisations (très très rare) il faudra gérer les droits en plusieurs variables.


Stockage des règles pour chaque action



Commençons par un schéma représentant la façon dont un ordinateur stocke des nombres (l'exemple est pris en architecture 32 bits).



Comme nous l'avons vu nous pouvons traiter les autorisations par séries de 31. Chaque règle (de 1 à 31) est repérée par son numéro et correspond au bit qui est à 1 si l'action est permise ou 0 sinon. Voici un schéma illustrant comment sont stockées les autorisations de chaque utilisateur.



Utilisation :

Code PHP :
AppContext::get_current_user()->check_auth($tableau, $bit)

[4.X] Débogage dans PHPBoost

$
0
0
Cette page décrit les différents éléments qui ont été mis en place dans PHPBoost pour déboguer du code et ainsi améliorer la qualité du logiciel et gagner en productivité.

Fichier de log des erreurs



Tout d'abord, sachez que peut importe la configuration d'un site PHPBoost, les erreurs, notifications et avertissements trouvés sont stockés dans un fichier de log : /cache/error.log. Celui ci contient toutes les erreurs. Vous pouvez le lire plus facilement en vous rendant dans l'administration -> Outils -> Erreurs archivées

Configuration du débogage



L'activation du mode débogage dans l'administration permet d'afficher explicitement les erreurs lors de la navigation sur le site, ce qui vous évite de travailler avec le fichier error.log.

Le mode à également plusieurs niveau : Normal et Stricte.

Si le mode stricte est activé, il arrête le chargement de la page lorsqu'une erreur est rencontrée.

Utilisation avancée avec la classe Debug



Debug::fatal(Exception $exception) permet d'afficher les informations sur une exception ainsi que le stacktrace.

Debug::dump($object); affiche les informations $object en clair (ex : la valeur d'un tableau).

Debug::stop($object); Fais la même chose que dump() mais affiche le stacktrace et stoppe l’exécution de la page.

Déboguer un template



Vous avez la possibilité d'activer le mode strict dans les templates en utilisant la fonction enable_strict_mode() sur votre objet Template.

Exemple :

Code PHP :
$view = new Template('votre_template.tpl');
$view->enable_strict_mode();


Affichera les erreurs qui peuvent être présente dans votre fichier tpl ou dans vos déclarations de variable tpl.

[4.0] Exécuter des requêtes SQL

$
0
0
PHPBoost possède un système de gestion des requêtes SQL propre à lui.

Il a pour but de faciliter les développeurs dans leurs développements et ainsi gagner en productivité.

La classe qui regroupe les différentes fonctions se nomme DBQuerier.

On peut accéder à son objet avec :

Code PHP :
PersistenceContext::get_querier()



Les requêtes



INSERT



Pour insérer un élément en base de donnée, c'est très simple :

Code PHP :
PersistenceContext::get_querier()->insert('la_table_en_question', array(
	'colonne_1' => 'valeur_1', 
	'colonne_2' => 'valeur_2'
));


Il vous suffit de renseigner le nom de la table et de fournir un tableau avec comme clé le nom de la colonne et comme valeur la valeur que vous souhaitez lui attribuer.

Les échappements sont fait automatique. Vous n'avez donc pas à les faire manuellement.

UPDATE



Voici un exemple pour la mise à jour d'un élément en base de données :

Code PHP :
PersistenceContext::get_querier()->update('la_table_en_question', array(
	'colonne_1' => 'valeur_1', 
	'colonne_2' => 'valeur_2'
), 'WHERE user_id=:id', array('id' => 'identifiant à modifier'));


De la même manière que dans un insert, le deuxième argument de la fonction est un tableau avec les colonnes à modifier.

Les arguments 3 et 4 permettent de définir la condition, c'est à dire dans quel(s) élément(s) vous souhaitez modifier.

Encore une fois, pour simplifier la chose, il existe un système de remplacement.

Le troisième argument est la condition, dans celle ci vous avez WHERE user_id=:id. Au lieu de faire de la concaténation, il vous suffit de mettre un double point suivit d'une clé. Dans notre cas c'est :id.

La quatrième argument est un tableau contenant les valeurs de remplacement. La clé du tableau est celle que vous avez renseigné dans la condition.


DELETE




Code PHP :
PersistenceContext::get_querier()->delete('la_table_en_question', 'WHERE user_id=:id', array(
	'id' => 'identifiant à supprimer'
));

[4.X] Système de templates

$
0
0
Afin d'offrir de nouvelles possibilités, le moteur de template de PHPBoost 4.0 a été entièrement revu.

Cette page décrit en détails les possibilités (les nouvelles comme les anciennes) offertes par le moteur de template de PHPBoost.

La syntaxe des templates



Un template se compose de différents éléments de syntaxe.
  • Du texte simple
  • Des variables
  • Des conditions
  • Des boucles
  • Des inclusions de sous-templates
  • Des expressions qui écrivent dans le template
  • Des expressions qui n'écrivent pas dans le template
  • Du PHP


Texte simple



Code TPL :
Il est possible d'écrire du texte simplement dans un template, c'est le contenu par défaut

Le résultat :
Code HTML :
Il est possible d'écrire du texte simplement dans un template, c'est le contenu par défaut

Il est possible d'échapper des caractères spéciaux qui pourrait être interprétés par le moteur de template en les faisant précéder par un antislash : “\”.

La liste de ces caractères spéciaux qu'il peut être nécessaire d'échapper est la suivante : \, $, #, {, }


Variables


Le moteur de template supporte différents types de variables. Dans cette partie, nous détaillerons les variables simples et les variables de langues. Les variables de boucles ne seront pas abordées dans cette partie mais dans la partie concernant les boucles.

Variable Simple


Une variable simple sera remplacée par la valeur assignée à la variable côté PHP.
Code TPL :
Il est possible d'écrire du texte avec des ${VARS}

Code PHP :
$template->put('VARS', 'variables');

Le résultat :
Code HTML :
Il est possible d'écrire du texte avec des variables


Variable de langue


Code TPL :
#{resources('monmodule/meslangues')}
{@hello.world}

Le fichier de langues associé se trouvant dans le répertoire /monmodule/french/meslangues.php
Code PHP :
$lang = array('hello.world' => 'Bonjour');

Le résultat :
Code HTML :
Bonjour

Dans cette exemple on voit deux choses. Tout d'abord, il faut associer la langue au Template avec la méthode resources qui prend en argument le chemin vers la langue à charger. Ce langue sera déterminée à l'exécution pour savoir si il faut aller la chercher dans le répertoire french, english ou autre.

Ceci peut également se faire directement en PHP. Par exemple, ceci est équivalent :
Code TPL :
{@hello.world}

Code PHP :
$template->add_lang(LangLoader::get('meslangues', 'monmodule'));

Le fichier de langues associé se trouvant dans le répertoire /monmodule/french/meslangues.php
Code PHP :
$lang = array('hello.world' => 'Bonjour');

Deuxièmement, la variable de langue est appelé en utilisant la syntaxe @nomDeLaVariableDeLangue. Cette syntaxe est un raccourci pour l'appel suivant i18n('nomDeLaVariableDeLangue'). Cette seconde méthode sera couverte plus en détails dans la partie méthode de template.

Conditions


Le moteur de template supporte les conditions de type IF (not) une condition / ELSE. La condition peut être une variable, une constante, ou bien le retour d'une méthode.

Condition simple


Le template


Code TPL :
# IF VAR1 #
la variable "VAR1" vaut TRUE
# ELSE #
la variable "VAR1" vaut FALSE
# END #
 

Code PHP :
$template->put('VAR1',  true);

Le résultat :
Code HTML :
la variable "VAR1" vaut TRUE


Condition négative


Code TPL :
# IF NOT DayTime::is_lunch_time() #
Ce n'est pas l'heure de manger
# ELSE #
A table
# END #
 

Le résultat si la statique méthode
DayTime::is_lunch_time()
retourne
false

Code HTML :
A table


Boucles


Boucle simple


Code TPL :
# START boucle #
Code répété dans la boucle
# END boucle #

Code PHP :
$my_loop = array();
for ($i = 0; $i < 3; $i++) {
    $my_loop[] = array();
}
$template->put('boucle', $my_loop);

Le résultat :
Code HTML :
Code répété dans la boucle
Code répété dans la boucle
Code répété dans la boucle


Boucle simple avec des variables


Code TPL :
Nom de la boucle : ${LOOP_NAME}
# START boucle #
${boucle.I} * 2 = ${boucle.2I}
# END boucle #

Code PHP :
$template->put('LOOP_NAME' => 'table de 2');
$my_loop = array();
for ($i = 0; $i < 3; $i++) {
    $my_loop[] = array('I' => $i, '2I' => $i * 2));
}
$template->put('boucle', $my_loop);

Le résultat :
Code HTML :
Nom de la boucle : table de 2
0 * 2 = 0
1 * 2 = 2
2 * 2 = 4


Boucles imbriquées


Code TPL :
# START boucle1 #
Code répété dans la boucle 1: {boucle1.VARBOUCLE_1}
    # START boucle1.boucle2 #
    Code répété dans la boucle 2: {boucle1.boucle2.VARBOUCLE_2}
    # END boucle1.boucle2 #
# END boucle1 #

Code PHP :
$loop1 = array();
for ($i = 1; $i <= 3; $i++) {
   $loop2 = array();
   for ($j = 1; $j <= 2; $j++) {
       $loop2[] = array('VARBOUCLE_2' => $j);
   }
   $loop1[] = array('VARBOUCLE_1' => $i, 'boucle2' => $loop2);
}
$template->put('boucle1', $loop1);
 

Le résultat :
Code HTML :
Code répété dans la boucle 1: 1
    Code répété dans la boucle 2: 1
    Code répété dans la boucle 2: 2
Code répété dans la boucle 1: 2
    Code répété dans la boucle 2: 1
    Code répété dans la boucle 2: 2
Code répété dans la boucle 1: 3
    Code répété dans la boucle 2: 1
    Code répété dans la boucle 2: 2


Inclusions


Inclusion directe


Le template


Code TPL :
Ceci est # INCLUDE  SUBTEMPLATE # dans un autre

Le template à inclure


Code TPL :
un template inclus

Le PHP


Code PHP :
$subtemplate = // un objet de type Template ou View
$template->put('SUBTEMPLATE', $subtemplate);

Le résultat


Code HTML :
Ceci est un template inclus dans un autre


Inclusion dans une boucle


Le template


Code TPL :
Ceci est # START loop # # INCLUDE loop.SUBTEMPLATE # # END # dans un autre

Le premier template à inclure
Code TPL :
un temp

Le second template à inclure
Code TPL :
late inclus

Le PHP
Code PHP :
$subtemplates = array($subtemplate1, $subtemplate2); // Objets de type Template ou View
$loop = array();
for ($subtemplates as $subtemplate) {
   $loop[] = array('SUBTEMPLATE' => $subtemplate);
}
$template->put('loop', $loop);

Le résultat :
Code HTML :
Ceci est un template inclus dans un autre


Expressions qui écrivent dans le template


Les expressions permettent d'appeler du PHP directement depuis un template. Ceci est utile car cela permet de ne plus assigner les langues dans le PHP et de mettre en forme les messages directement dans les templates.

Pour cela, il est possible d'appeler soit des fonctions de templates, soit des méthodes statiques sur de vraies classes PHP.

Méthodes de templates


Les méthodes de templates sont des méthodes qui permettent d'appeler certains services directement depuis le template. Voici la liste de ces méthodes :

  • resources(String languageFile) : Charge le fichier de langue et l'associé au template.
  • i18n(String messageId) : retourne le message de langue identifier par l'identifiant messageId trouvé dans les fichiers de langues chargés par la méthode resources() ci-dessus. Le caractères XML '<', '>', '"' et '&' sont échappés
  • i18nraw(String messageId) : pareil que i18n, mais n'échappe pas le xml
  • i18njs(String messageId) : pareil que i18n mais échappe les "'" et les "\n"
  • i18njsraw(String messageId) : pareil que i18nraw mais échappe les "'" et les "\n"
  • setvars(String message, String[String] variables) : remplace les occurences des éléments de la forme ":nom" par la valeur associée à la clé "nom" dans le dictionnaire variables
  • escape(String message) : échappe le xml
  • escapejs(String message, boolean add_quotes = true) : échappe le javascript. Par défaut, la chaîne résultante est entourée de 'simples guillements'

Pour plus d'informations sur ces méthodes, il faut se reporter à la PHPDoc de la classe TemplateFunctions

Code TPL :
${i18n('welcome.message')}

Le résultat :
Code HTML :
Le message de bienvenue contenu dans le fichier langue


Méthodes statique


Code TPL :
${LangLoader::get_message('step.welcome.message', 'install', 'install')}

Le résultat :
Code HTML :
Bienvenue dans l'assistant d'installation de PHPBoost


Expressions qui n'écrivent pas dans le template


Si l'on comprends bien l'intérêt des expressions pour modifier la mise en page de variables passées au template, il est peut-être plus difficile de comprendre l'intérêt des expressions qui n'écrivent rien dans les templates. Pourtant elles sont également très importantes.

En effet, pour associer un fichier de langue à un template, on peut soit le faire en PHP, soit directement dans le template. Dans le cas où cela se fait directement dans le template, aucun élément ne sera à écrire dans le template.

Association d'un fichier de langue


Code TPL :
#{resources('install/install')}
<h1>${i18n('step.welcome.message')}</h1>

Le résultat:
Code HTML :
<h1>Bienvenue dans l'assistant d'installation de PHPBoost</h1>

Dans le cas ou le #{resources()} n'aurait pas été fait, il aurait fallut faire cette association en php de la façon suivante : Code PHP :
$template->add_lang(LangLoader::get('install', 'install'));

Si aucune de ces deux méthodes n'est employée alors un message d'erreur indiquera que la langue n'a pas été trouvée.

PHP


Il est possible d’inclure du PHP dans les templates, cependant, ceci est à proscrire pour plusieurs raisons :

  1. Cela risque fort de mener à avoir des traitements dans le template qui n’ont rien à voir avec la mise en page ce qui rend la maintenance futur du module beaucoup plus compliqué, car en plus de changer la logique dans le code PHP du module, il faudra également retravailler de façon appronfondi les templates.
  2. Cela n’est pas performant. En effet le moteur de rendu de PHPBoost permet d’afficher le template directement avec une instruction echo, ou bien de pouvoir l’injecter ailleur en donnant un rendu sous forme de chaîne de caractère. Ce second cas rend très compliquée la gestion des echos qui pourraient être fait dans le code PHP appelé.
    La solution utilisée par le moteur de template pour supporter ces echos consiste à stocker dans le buffer de sortie ce qui va être écrit. Or l’opération visant à préserver ce buffer est extrêmement coûteuse en terme de performances.

Si malgrès ceci vous avez tout de même besoin d’utiliser du PHP dans vos templates, voici un exemple.

Exemple


Code TPL :
ceci est du <?php echo ‘PHP’; ?>

Le résultat :
Code HTML :
ceci est du PHP


Les Templates en PHP


Nous venons de voir comment écrire des templates et quels était les mécanismes PHP pour communiquer avec ceux-ci.

Nous allons maintenant voir quelques fonctionnalités côté PHP permettant de créer un objet Template et de les utiliser assez simplement.

Création / instanciation d’un objet Template


A partir d'un fichier : FileTemplate


Code PHP :
$my_template = new FileTemplate('mymodule/mytpl.tpl');

Ce bout de code va chercher à créer un objet Template en utilisant le premier fichier de template existant.

  1. /templates/$theme/modules/mymodule/mytpl.tpl : C’est le fichier de template fourni par le thème utilisé. Il est utilisé prioritairement si il est trouvé car il est en accord avec le thème.
  2. /mymodule/templates/mytpl.tpl : C’est le fichier de template fourni par le module à utiliser si le thème ne propose sa propre version.

A partir d'une chaîne de caractère : StringTemplate


Code PHP :
$my_template = new StringTemplate('Ceci est mon template');


Dans les deux cas précédent, un objet template à été créé. Il se comportement indifféremment, peu importe que le template soit issu d’un fichier ou d’une chaîne de caractères.

Assignation automatique


Afin de faciliter le travail des développeurs, un certains nombre de variables sont par défaut assignés au template. En voici la liste :

  • THEME : le nom du dossier du theme courant
  • LANG : le nom du dossier de la langue courante
  • IS_USER_CONNECTED : true si l’utilisateur est connecté
  • PATH_TO_ROOT : le chemin jusqu’à la racine de PHPBoost
  • TOKEN : le token de session permettant de se prémunir des attaques CSRF. Pour plus d’informations, lire http://fr.wikipedia.org/wiki/Cross-site_request_forgery


Compatibilité


Le moteur de template de PHPBoost 4.0 est (presque) entièrement compatible avec les templates de la version 3.0

Ceci signifie que tous les templates de la 3.0 continueront à fonctionner sans nécessiter d'adaptation sur la 4.0 (à de rares exceptions près).

Créer un module additionnel

$
0
0

Avant propos



Vous souhaitez créer un module additionnel, vous êtes au bon endroit. Cet article se veut le plus complet possible afin de vous aider au mieux à utiliser le framework proposé par PHPBoost.

Attention cet article n'est pas un cours de PHP, ni de PHP avancé, cet article s'adresse à des programmeurs PHP confirmés. Certaines notions sont en effet relativement complexe à aborder. Toutefois tout dépend de la complexité de ce que vous souhaitez réaliser.

Le framework PHPBoost est un ensemble d'outils proposés aux développeurs. Ces outils sont utilisés de façon récurrente dans les modules. Le fait d'utiliser ces outils permet d'assurer une grande cohérence entres les modules développés par des personnes différentes. La difficulté réside donc dans le fait qu'il faut s'adapter à la technique de programmation utilisée. Mais une fois ceci fait la vitesse de développement et de débuggage s'en retrouve démultipliée. En effet n'importe quel développeur pourra s'y retrouver car connaissant déjà ces outils.

Cet article va donc détailler le prototype d'un module. Certaines règles ne sont pas obligatoires (ce sera clairement mentionnée) mais le fait de les respecter assure à votre module un succès garantit auprès des développeurs.


Plusieurs points seront détaillés dans des articles connexes, consultez les pour appronfondir vos connaissances sur le framework.


Structure des fichiers d'un module



Avant de commencer à proprement parler la partie programmation, il est important de mettre en place les fichiers pour pouvoir commencer à travailler.
Cette partie est très importante car elle va vous permettre de comprendre l'organisation et la structure d'un module.

Pour commencer que-ce qu'un module?

Un module en faisant une comparaison avec l'ordinateur est en quelque sorte un nouveau logiciel que vous installez sur votre ordinateur. Pour cela il doit pouvoir être installé et désinstallé. Mais avant cela il doit être reconnu par le système d'exploitation. Il doit donc respecter des règles précises sinon il ne pourra même pas être installé ou au mieux fonctionnera anormalement.

On suppose que votre module s'appele votremodule (/votremodule). Il faut tout d'abord créer un dossier à la racine du même nom que votre module.


Fichiers de configuration



Tout d'abord il faut un fichier de configuration du module, pour préciser ses fonctions au noyau PHPBoost. Ce fichier contient des variables dépendantes de la langue, donc ce fichier est dupliqué autant de fois qu'il y a de langue disponibles pour le module.

Un conseil, faire évoluter votre fichier config.ini au cours du développement au fur et à mesure que vous intégrez de nouvelles fonctions.

  • Créez un dossier /lang qui contiendra des dossiers pour chaque langues.
  • Créez un dossier /french à l'intérieur du dossier /lang.
  • Créez un fichier config.ini à l'intérieur du dossier /lang/french/.


L'arborescence doit ressembler à ça:
/votremodule
/lang
/french
config.ini


Attention les fichiers .ini doivent être formatés d'une certaine façon. Les valeurs associées aux clées doivent être entourées de guillement double (") s'il s'agit d'une chaîne de caractère.

Le fichier config.ini doit être sous cette forme:
Code TEXT :
name="Nom de votre module"<br />
author="CrowkaiT, ben.popeye"<br />
author_mail="crowkait@phpboost.com, ben.popeye@phpboost.com"<br />
author_link="http://www.phpboost.com"<br />
version=2.0<br />
info="Desciption de votre module"<br />
date="30/01/08"<br />
compatibility=2.1<br />
admin=1<br />
admin_links=""<br />
css=1<br />
cache=1<br />
sql_table=8<br />
starteable_page="index.php"<br />
moderation_panel=1<br />
config=1<br />
com=""<br />
mini_module=0<br />
url_rewrite=""


  • name : Nom de votre module.
  • author : Auteur(s) du module.
  • author_mail : Mails des auteur(s) du module.
  • author_link : Site web des auteur(s) du module.
  • version : Version du module.
  • info : Description du module.
  • date : Date de création.
  • compatibility : Numéro de version du noyau compatible avec ce module.
  • admin : Possède un panneau d'administration? Mettre 1 si oui, 0 si non.
  • admin_links: Permet d'afficher des sous menus dans l'administration dans les listes déroulantes. La chaine doit être formaté comme un tableau php sans mettre la structure de language array.
  • css : Utilise un css alternatif ? Mettre 1 si oui, 0 si non.
  • cache : Utilise le cache? Mettre 1 si oui, 0 si non.
  • sql_table : Nombre de table SQL utilisées.
  • starteable_page : Possède une page de démarrage? Mettre la page si oui, laissez vide si non.
  • moderation_panel : Possède un panneau de modération ? Mettre 1 si oui, 0 si non.
  • config : Possède une entrée dans la table de configuration ? Mettre 1 si oui, 0 si non.
  • com : Intègre un système de commentaires ? Mettre 1 si oui, 0 si non.
  • mini_module : Le module possède un mini module associé? Mettre 1 si oui, 0 si non.
  • url_rewrite : Si non vide, ajoute une règle de réecriture au fichier .htaccess, pour en savoir plus consultez l'article url rewriting




Fichiers de langues



Vous avez déjà créer un dossier /french dans le dossier /lang dans l'étape précedente.
Votre fichier de langue du module doit s'appeler: votremodule_french.php

Pour la langue anglaise il aurait fallu créer un dossier /english dans le dossier /lang et le fichier aurait dû s'appeler votremodule_english.php

Les fichiers de langues contiennent les langues dans un tableau associatif $LANG
Exemple:
Code PHP :
$LANG['votremodule_exit'] = 'Exit';


A noter qu'il est important de préfixé le nom de la clée par le nom de votre module



Fichiers d'installation



Si votre module a besoin d'exécuter des actions à l'installation il faudra créer des fichiers d'installation afin que ceux-ci soit exécutés. Les fichiers exécutés à l'installation peuvent être des fichiers SQL et/ou des fichiers PHP.

  • Créez un dossier /db

Comme certaines requêtes sont dépendantes de la langue, vous devez créer un dossier pour chacune des langues supportées par le module.
  • Créez un dossier /french dans /db
  • Créez un fichier votremodule.mysql.sql (si le module utilise la base de données). A noter que vous pouvez ajouter un fichier votremodule.SGBD.sql pour un autre système de gestion de base de données (SGBD) si votre module le gère.
  • Créez un fichier votremodule.php (si le module doit exécuter ce fichier pour s'installer).



C'est également dans ce dossier que vous mettrez les fichiers de mise à jour du module.



Fichiers de templates



Les templates représentent le squelette de vos pages, pour plus d'avantage d'information consultez l'articles sur les templates. _____

  • Créez un dossier /templates


Vous pouvez également créer un dossier images à l'intérieur pour séparer les images des templates. N'oubliez pas que ces images ne seront pas dépendant du thème choisi. Pour que votre module s'adapte à chaque thème il faut que ce dossier templates soit placé dans le thème et soit renommé en votremodule. Pour rendre l'adresse variable dans le template consultez l'article: _____


Arborescence finale



/votremodule
/db
/french
votremodule.mysql.sql
votremodule.php
/lang
/french
config.ini
votremodule_french.php
/templates
fichiers.tpl
fichiers.php




Cohérence des modules



Style de programmation



Il est important dans un projet que les développeurs adopent un style d'indentation identique. Ceci favorise la relecture du code et le débuggage.

Cet règle n'est pas obligatoire, mais très fortement recommandée. Vous pouvez donc passer à la partie suivante si vous le souhaitez.

Les conditions
if/elseif/else. Un espace avant la parenthèse, pas d'espace à l'intérieur.
Code PHP :
if ($var == 2)
{
	echo '$var vaut 2';
}


Avec traitement sur plusieurs lignes:
Code PHP :
if ($var == 2)
{
	echo '$var vaut 2';
	$var = 3;
}
elseif ($var == 3)
{
	echo '$var vaut 3';
	$var = 4;
} 
else
{
	echo '$var vaut 4';
}


Avec imbrication:
Code PHP :
if ($var > 1)
{
	if ($var == 2)
	{
		echo '$var vaut 2';
		$var = 3;
	}
	else
	{
		echo '$var différent de 2';
		$var = 4;
	}
}
 



Les boucles
Code PHP :
for ($i = 0; $i < 5; $i++)
{
	echo $i;
}



Code PHP :
$i = 0;
while ($i < 5)
{
	echo $i;
	$i++;
}
 


Cohérence dans la sécurité



La sécurité est la partie la plus importante du projet, aussi bon soit-il, si la fiabilité n'est pas là, un logiciel est voué à sa perte. De plus une fois la crédibilité mise en cause il est difficile de changer d'image. C'est pourquoi cette partie doit-être lue avec le plus grand intérêt et sérieux.

Cohérence avec la programmation orientée objet



Par convention, toutes les variables commencent par une minuscule, y compris les objets. Ceci n'est pas vrai pour les variables globales telles que
$Cache
,
$Sql
qui elles commencent par une majuscule.

Vous ne devrez donc pas utiliser de variables commençant par une majuscule si ce n'est pas une variable globale, au risque d'écraser cette variable existante et de rendre le compte plus dur à comprendre.

Par convention les méthodes des objets s'écrivent en minuscules avec des _ comme séparateur. Les méthodes privées elles commencent toujours par le caractère _. Les variables d'instances elles s'écrivent en minuscules et ne doivent jamais être appelées de l'extérieur de l'objet, tout comme ses méthodes privées.

D'une manière générale, les variables s'écriront toujours de la forme :
Code PHP :
$ma_variable_a_moi

les variables globales :
Code PHP :
$MaVariable
ou Code PHP :
$MA_VARIABLE


les fonctions et méthodes publiques :
Code PHP :
function ma_methode()
{
    // Code de la méthode
}

Les méthodes privées ou protégées :
Code PHP :
function _ma_methode()
{
    // Code de la méthode privée
}


Information générales



Pour pouvoir développer, voici quelques informations essentielles.

Les invités ont pour niveau d'autorisation -1
Les membres ont pour niveau d'autorisation 0
Les modérateurs ont pour niveau d'autorisation 1
Les administrateurs ont pour niveau d'autorisation 2

Ces simples autorisations peuvent être finement modulés par les groupes (qui ont la possibilité d'être multiples).

Framework PHPBoost



Données accessibles


Configuration



La variable $CONFIG est un tableau contenant toutes les informations de configuration du site.
Voiçi le détail de chacune des valeurs:
Code TEXT :
$CONFIG['server_name'] :  Adresse du serveur <br />
$CONFIG['server_path'] : Chemin vers PHPBoost<br />
$CONFIG['site_name'] : Nom du site<br />
$CONFIG['site_desc'] : Description du site<br />
$CONFIG['site_keyword'] : Mots clés du site<br />
$CONFIG['start'] : Timestamp de l'installation du site<br />
$CONFIG['version'] : Version de PHPBoost<br />
$CONFIG['lang'] : Langue par défaut<br />
$CONFIG['theme'] : Thème par défaut<br />
$CONFIG['editor'] : Editeur texte par défaut<br />
$CONFIG['timezone'] : Heure du site en GMT<br />
$CONFIG['start_page'] : Page de démarrage<br />
$CONFIG['maintain'] : Timestamp de la fin de la période de maintenance<br />
$CONFIG['maintain_delay'] : Affichage du délai de maintenance<br />
$CONFIG['maintain_display_admin'] : Afficher le délai de maintenance à l'admin.<br />
$CONFIG['maintain_text'] : Texte de la maintenance<br />
$CONFIG['rewrite'] : Url rewriting<br />
$CONFIG['com_popup'] : Commentaires en popup<br />
$CONFIG['compteur'] : Affichage du compteur<br />
$CONFIG['bench'] : Benchmark du site<br />
$CONFIG['theme_author'] : Affichage de l'auteur du thème<br />
$CONFIG['ob_gzhandler'] : Activation de la compression des pages<br />
$CONFIG['site_cookie'] : Nom du cookie de connexion<br />
$CONFIG['site_session'] : Durée de la session membre<br />
$CONFIG['site_session_invit'] : Durée de la session invité<br />
$CONFIG['mail'] : Mail(s) de l'administrateur<br />
$CONFIG['activ_mail'] : Envoyer les mails à l'administrateur<br />
$CONFIG['sign'] : Signature du mail<br />
$CONFIG['anti_flood'] : Activation de l'anti-flood<br />
$CONFIG['delay_flood'] : Durée pour l'anti-flood<br />
$CONFIG['unlock_admin'] : Clée de déverrouillage de l'administration<br />
$CONFIG['pm_max'] : Messages privés maximum par défaut


Les variables les plus intéressantes sont $CONFIG['theme'] et $CONFIG['lang'] qui vous permettront respectivement de récupérer le thème et la langue de l'utilisateur (quand l'utilisateur est connecté, ses préférences modifies ces variables en conséquence).

Variables utilisateur



Pour récupérer des informations sur un membre, il faut récupérer ses attributs. La méthode Get_attribute() _____ vous permet de récupérer les propriétés suivantes:
Voiçi le détail de chacune des valeurs:
Code TEXT :
$User->Get_attribute('user_id') : Id de l'utilisateur, -1 si invité<br />
$User->Get_attribute('login') : Pseudo de l'utilisateur, Invité si invité<br />
$User->Get_attribute('level') : Niveau d'autorisation de l'utilisateur, -1 si invité<br />
$User->Get_attribute('user_groups') : Groupes de l'utilisateur, séparés par des |<br />
$User->Get_attribute('user_lang') : Langue de l'utilisateur<br />
$User->Get_attribute('user_theme') : Thème de l'utilisateur<br />
$User->Get_attribute('user_mail') : Mail de l'utilisateur<br />
$User->Get_attribute('user_pm') : Nombre de messages privés de l'utilisateur<br />
$User->Get_attribute('user_readonly') : Utilisateur en lecture seule?<br />
$User->Get_attribute('user_editor') : Editeur texte de l'utilisateur<br />
$User->Get_attribute('user_timezone') : Zone horaire de l'utilisateur (GMT)


La variable la plus intéressante est $Member->Get_attribute('user_id') qui vous donne l'identifiant du membre.
A noter que vous pouvez également récupérer les valeurs inséré dans les champs membre supplémentaire. Pour en savoir plus _____



Utilisation du framework



Certaines fonctions sont plus bas niveau que d'autres et donc plus ou moins difficiles à appréhender. Cet article fait en sorte de vulgariser (au bon sens du terme) certaines notions relativement avancée d'informatique afin de vous aidez à comprendre ce qui se pose derrière chaque fonction. Toutefois vous pouvez simplement vous servir de certains outils comme des boites noires et donc ne pas comprendre leur fonctionnement.

Cette partie ne doit pas obligatoirement être lue linéairement même si les chapitres sont classés par ordre de difficulté. Vous pouvez vous référer à une fonction précise sans lire les précédentes.

Vérification des droits d'accès



Les droits d'accès dépendent du niveau d'autorisation du membre ($Member->Get_attribute('level') ou d'autorisations spécifiques au groupes (voir pour plus de détails, la Gestion des groupes_____).

La fonction Check_level de la classe Membre permet de contrôler l'accès suivant le niveau d'autorisation.
Code PHP :
if( $Member->Check_level(0) ) 
	echo 'Vous avez le niveau de membre ou plus';
if( $Member->Check_level(1) ) 
	echo 'Vous avez le niveau de modérateur ou plus';
if( $Member->Check_level(2) ) 
	echo 'Vous avez le niveau d'administrateur';
echo 'Vous avez le niveau visiteur ou plus';


Utilisation des templates



Consultez l'article Utilisation des templates _____


Utilisation de la base de données



Consultez l'article Utilisation de la base de données _____


Formulaires pour ajouter/modifier du contenu et traitement associé





Générer automatiquement une pagination



Consultez l'article Pagination _____



Intégration du gestionnaire de commentaires



Consultez l'article Intégration du gestionnaire de commentaires _____


Fonctions générale



Envoyer un message privé



Consultez l'article Envoi de messages privés _____


Envoyer un mail



Consultez l'article Envoi de mail _____



Générer un flux rss





Uploader un fichier



Consultez l'article Uploader un fichier _____



Fonctions avancées



Utilisation du cache



Consultez l'article Gestion du cache _____


Utilisation des droits sur les groupes



Consultez l'article Gestion des groupes _____


Utilisation de l'Ajax



Consultez l'article Utilisation de l'Ajax _____

Créer un module

$
0
0
L'architecture de PHPBoost se décompose en deux principales parties qui sont le noyau et les modules. Les modules s'appuient sur le noyau pour fonctionner, mais le noyau n'a en aucun cas besoin des modules pour fonctionner. D'ailleurs, il ne les connait pas et peut très bien fonctionner sans module, bien que l'intérêt en soit très réduit. C'est la raison pour laquelle nous pouvons installer ou désinstaller des modules sans aucune contrainte.
Tout cela passe par un standard que les modules doivent respecter de façon à pouvoir s'intégrer à PHPBoost. Cet article va vous permettre de pouvoir créer vos propres modules que vous pourrez installer sur PHPBoost.

Préambule



Cet article n'est en aucun cas un cours de PHP. Pour créer un module pour PHPBoost, il est indispensable de maîtriser les bases du langage PHP. Mais une application Web (PHPBoost en est une et donc votre module aussi) ne se réduit pas uniquement au PHP, il est aussi nécessaire de maitriser les langages de présentation de site Web (HTML, CSS et éventuellement Javascript) et d'intéragir avec une base de données MySQL.
La connaissance de la langue anglaise est aussi fortement recommandée car la documentation de l'environnement de PHPBoost est écrite uniquement en anglais.
Il vous faudra également de la détermination, car même si l'intégration d'un module à PHPBoost a été facilitée au maximum, vous rencontrerez surement des difficultés. Dans ce cas, n'hésitez pas à demander de l'aide sur le forum de support, vous y trouverez toute l'assistance technique nécessaire.
Cet article va vous guider pas à pas dans la création d'un module. Nous vous conseillons d'y consacrer un certains temps afin de vous familiariser avec les différentes notions présentes dans PHPBoost.

Un module = 1 répertoire



Votre module se présentera sous la forme d'un répertoire.
Il est maintenant temps de savoir comment s'appellera votre module, ou du moins le dossier de votre module. Il ne doit pas contenir de caractères spéciaux ni d'espaces et ne pas être trop long. En fait, ce nom apparaîtra dans les URL des pages, c'est la raison pour laquelle vous devez choisir un nom simple.
Le nom que vous donnez à votre dossier sera l'identifiant de votre module et sera utilisé à de nombreuses reprises par la suite de son développement, donc décidez vous une bonne fois pour toute car son changement aura d'importantes conséquences.
Exemples d'identifiants de modules : forum, wiki, news, articles...

Nous allons dans les exemples qui vont suivre créer un module qui s'appellera "mymodule". Créez donc un dossier mymodule à la racine du site.

Les langues



Ce paragraphe explique comment développer un module en faisant en sorte qu'il puisse être traduit en n'importe quelle langue seulement en y ajoutant un fichier.

Pourquoi et comment internationaliser ?



Vous trouverez des explications sur l'intérêt de l'internationalisation, la façon selon laquelle PHPBoost la gère et comment l'utiliser sur cette page.

La mise en pratique



Créez un dossier lang dans le répertoire de votre module.
Créez un dossier french dans le répertoire lang que vous venez de créer.
Enfin créez un fichier mymodule_french.php dans le répertoire french.

A noter que le fichier doit respecter la forme mymodule_langue.php, ici mymodule_french.php

L'arborescence de votre module devrait être celle-ci :
lang
lang/french
lang/french/mymodule_french.php


Dans le fichier mymodule_french.php, placez le contenu suivant :

Code PHP :
<?php
global $MYMODULE_LANG;
$MYMODULE_LANG = array();
$MYMODULE_LANG['hello_world'] = 'Bonjour tout le monde !';
?>


Les templates



La partie interface utilisateur de PHPBoost est régie par un système de templates. Le dossier présentant l'architecture technique de PHPBoost vous aidera certainement à comprendre cette notion et à la situer parmi les différentes couches du CMS.

Principe, fonctionnement et utilisation du moteur de templates de PHPBoost



Vous trouverez des informations sur le fonctionnement et l'utilisation du moteur de templates sur la page qui lui est consacrée.

Mise en place dans votre module



Créez un dossier templates dans le dossier de votre module, puis pour commencer créez un fichier mymodule.tpl dans le répertoire templates.

Votre arborescence devrait ressembler à ceci :
templates
templates/mymodule.tpl


Dans le fichier mymodule.tpl, placez le contenu suivant :

Code TPL :
Mon premier module PHPBoost qui affiche : {L_HELLO_WORLD}


Le fichier de configuration



Votre module a certaines propriétés que le noyau doit pouvoir connaître pour pouvoir travailler avec lui. En outre cela permet de donner des informations aux personnes tierces qui pourrait utiliser votre module. Ces informations sont regroupées en un seul fichier de configuration.

Ce fichier appelé config.ini, est dépendant de la langue, par conséquent il doit se trouver dans le répertoire lang/nomdelalangue/.

Dans notre exemple créez un fichier config.ini dans le répertoire lang/french que nous avons créé dans la partie concernant les langues.

Votre arborescence devrait ressembler à ceci :
lang
lang/french
lang/french/mymodule_french.php
lang/french/config.ini


Dans le fichier config.ini, placez le contenu suivant :

Code TEXT :
name="Mon Module"
author="Moi"
author_mail="moi@mail.com"
author_link="http://www.votresite.com"
version=1.0
info="Mon module de test."
date="01/09/09"
compatibility="3.0"
admin=""
admin_links=""
css=0
cache=0
sql_table=0
starteable_page=""
contribution_interface=""
com=""
note=""
mini_module=""
url_rewrite=""


Pour l'instant peu de fonctionnalités sont utilisées dans notre module. Par la suite nous serons amenés à modifier ce fichier afin d'ajouter de nouvelles possibilités à notre module.

L'interface de communication



La communication inter-modules



Afin de pouvoir implémenter des fonctionnalités particulières, il est indispensable que le noyau et les modules puissent communiquer.
Le dossier présentant les nouveautés de PHPBoost 3.0 explique quels sont les enjeux et quelle est la réponse qui a été choisie dans PHPBoost.

Création de l'interface de communication



L'interface de communication entre le noyau et plus généralement le monde extérieur à votre module (autre modules par exemple) et votre module est matérialisée par un fichier mymodule_interface.class.php à la racine du dossier du module.

C'est ce fichier qui permet l'interaction avec le reste de PHPBoost. En effet ce dernier permet de déterminer à quels appels votre module est capable de répondre et on pourra éventuellement vous demander d'y répondre. La recherche en est un exemple : votre interface annonce que vous proposez de rechercher dans votre module, vous devez implémenter la méthode correspondante afin de déterminer comment vous le faite. A partir de là, quelqu'un d'extérieur à vous peut vous demander de rechercher un mot dans votre contenu.

On retrouvera notamment les fonctions permettant la régénération du cache, l'exécution d'actions journalières, l'exportation de flux RSS, etc...

L'interface de communication faisant partie des fonctions avancées disponibles pour un module, nous verrons plus tard l'implémentation de celle-ci.

Créez un fichier mymodule_interface.class.php à la racine de votre module et placez-y le contenu suivant :
Code PHP :
<?php
import('modules/module_interface');
 
// Classe MymoduleInterface qui hérite de la classe ModuleInterface
class MymoduleInterface extends ModuleInterface
{
    function __construct() //Constructeur de la classe MymoduleInterface
    {
        parent::ModuleInterface('mymodule');
    }
}
?>

Dans cet exemple, l'interface ne propose aucun service particulier. Il est cependant indispensable que vous le créiez, même si son implémentation n'apporte rien.
Pour implémenter des fonctionnalités telle la recherche globale, vous verrez que c'est dans cette interface qu'il faut travailler.

Exécution du module



Votre module doit être lancé par une page php. Votre module pourra contenir plusieurs pages, mais par défaut c'est la page index.php qui est appelée.

Créez un page index.php à la racine de votre module et placez y le contenu suivant :
Code PHP :
<?php header('location: ./mymodule.php'); ?>


Cette ligne de code permet de rediriger les personnes accédant à votre module par l'adresse votresite.com/mymodule vers la page principale de votre module.

La page mymodule.php sera la page principale de votre module. C'est celle-ci qui sera chargée de l'affichage et contiendra les liens vers les autres pages accessibles du module.
Cette page n'existant pas, nous allons la créer. Créez donc une page mymodule.php à la racine de votre module et placez-y le contenu suivant :

Code PHP :
<?php
require_once('../kernel/begin.php'); //Charge les éléments essentiels de PHPBoost
require_once('mymodule_begin.php'); //Charge le début de l'environnement du module
require_once('../kernel/header.php'); //Charge le début de l'environnement graphique de PHPBoost
 
load_module_lang('mymodule'); //Charge le fichier langue
 
$tpl_mymodule = new Template('mymodule/mymodule.tpl');
$tpl_mymodule->assign_vars(array(
    'L_HELLO_WORLD' => $MYMODULE_LANG['hello_world']
));
$tpl_mymodule->parse();
 
require_once('../kernel/footer.php'); //Charge la fin de l'environnement graphique de PHPBoost
?>


Créer également un fichier mymodule_begin.php contenant le code suivant.

Code PHP :
<?php
/* Modification de l'arborescence des catégories. */
$Bread_crumb->add('My module', url('mymodule.php'));
?>


Ce code mérite quelques explications :
  • Nous avons ici chargé l'environnement de PHPBoost (begin.php), c'est ce fichier qui est responsable de charger le noyau.
  • Puis nous avons chargé l'environnement graphique (header.php).
  • Nous créons ici un nouvel objet Template, qui va nous permettre de manipuler notre template mymodule.tpl précédemment créé.
  • Nous lui assignons, avec la méthode Template::assign_vars(), une variable L_HELLO_WORLD. Celle-ci est présente dans le template et nous lui affectons la valeur de la variable de langue que nous avions créée dans le fichier lang/french/mymodule_french.php.
  • Enfin la méthode Template::parse, réalise le remplacement dans le template et affiche le résultat sur la sortie standard
  • Pour finir nous avons chargé la fin de l'environnement graphique (footer.php) qui clôt la page et réalise l'affichage final.


Installation du module



Dans le cadre de l'exemple courant



Jusqu'à présent, nous avons créé la structure permettant au module de fonctionner, mais nous ne pouvons toujours pas le tester. Pour cela il faut que le module soit installé.

Créez un dossier db à la racine de votre module
Créez ensuite un dossier french dans le dossier db que vous venez de créer.
Créez un fichier mymodule.mysql.sql dans le dossier french que vous venez de créer.

L'arborescence de votre module devrait ressembler à ceci :
/db
/db/french
/db/french/mymodule.mysql.sql


Nous laisserons ce fichier vide car notre module n'a pas besoin de base de données pour l'instant. Ce fichier SQL sera exécuté à l'installation du module et permet de créer et initialiser la base de données du module.

Cas général



D'une manière générale, il sera possible d'éditer le fichier mymodule.mysql.sql de la manière suivante.
Code SQL :
DROP TABLE IF EXISTS `phpboost_mymodule_elements`;
CREATE TABLE `phpboost_mymodule_elements` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `level` int(11) NOT NULL DEFAULT '0',
  `name` varchar(100) NOT NULL DEFAULT '',
  `contents` text,
  `icon` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;
 
DROP TABLE IF EXISTS `phpboost_mymodule_events`;
CREATE TABLE `phpboost_mymodule_events` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(100) NOT NULL DEFAULT '',
  `id_a` int(11) NOT NULL,
  `id_b` int(11) NOT NULL,
  PRIMARY KEY (`id`),
) ENGINE=MyISAM;


Désinstallation du module



Dans le cadre de l'exemple courant



Il faut prévoir que votre module peut être désinstallé. Dans notre cas il n'utilise pas la base de données donc il n'y a rien de spécial à faire lors de la désinstallation.

Il suffit de créer un fichier vide appelé uninstall_mymodule.mysql.sql dans le répertoire db/french/ créé à l'étape précédente.

Cas général



Si le module contenait, par exemple, deux tables phpboost_mymodule_elements et phpboost_mymodule_events, alors il faudrait lors de la désinstallation les supprimer de la manière suivante.

Code SQL :
DROP TABLE IF EXISTS `phpboost_mymodule_elements`;
DROP TABLE IF EXISTS `phpboost_mymodule_events`;


Test du module



Vous pouvez désormais vous rendre dans l'administration. Cliquez sur Modules, puis Ajouter un module. Votre module devrait être présent dans la liste, il suffit alors de cliquer sur installer.

Votre module est désormais installé, vous pouvez le tester en vous rendant à l'adresse suivante : votresite/mymodule/mymodule.php.
Si tout s'est bien passé vous devriez voir s'afficher à l'écran, au centre de la page : Mon premier module PHPBoost qui affiche : Hello World !

Et après ?



Maintenant que vous avez une base qui fonctionne, vous êtes prêt à vous lancer dans le développement de votre module.
Nous vous recommandons de lire les bonnes pratiques de développement afin d'écrire du code respectant l'esprit de PHPBoost qui soit maintenable et évolutif. Nous vous invitons également à consulter tout ce que vous pouvez trouver dans cette catégorie de la documentation, vous découvrirez comment tirer partie de l'environnement PHPBoost, notamment grâce à son framework.

Méthode Sql::Sql_num_rows()

$
0
0
Sql_num_rows
sql_num_rows — Retourne le nombre de lignes retournées par la requête SQL.


Description



Code PHP :
int Sql_num_rows(resource $ressource, string $query)


Cette méthode de la classe SQL permet de récupérer le nombre de lignes retournées par la requête identifiée par la ressource $ressource
Une requête SQL $query permettant la même action en SQL strict (SELECT COUNT(*) FROM table WHERE cond) doit être passée pour conserver la compatibilité avec les autres SGDB (Système de Gestion de Base de Données)


Valeur de retour




Cette fonction retourne le nombre de lignes retournées par la requête SQL.


Exemple




Code PHP :
 
$result = $Sql->query_while("SELECT user_id, login
FROM ".PREFIX."member
ORDER BY login", __LINE__, __FILE__);
while( $row = $Sql->Sql_fetch_assoc($result) )
{
	echo $row['login'] . ' : ' . $row['user_id'] . '<br />';
}
$Sql->Close($result);
 
$nbr_lines = $Sql->Sql_num_rows($result , "SELECT COUNT(*) FROM ".PREFIX."member");
echo $nbr_lines; //Retourne le nombre de membres affichés par la requête.
 



Voir aussi



Query_while() (Requête multi ligne)


RETEX



Cette fonction n'existe manifestement plus. L'utilisation, à la place, de num_rows() selon la même procédure semble en revanche fonctionner.

[4.x] ModuleSetup

$
0
0
Dans la version 3.0, nous avions l'impossibilité de personnaliser l'installation et la désinstallation d'un module, outre le fait de travailler avec des fichiers SQL.

Dans la version 4.0, nous avons intégré un nouveau système qui permet d'aller bien plus loin : Le ModuleSetup.


Le fonctionnement



Il nous faut créer un fichier LeNomDeVotreModuleSetup.class.php qui contiendra une classe du même nom.

Cette classe est une classe fille de DefaultModuleSetup et devra contenir une fonction install() et uninstall().

Exemple :

Code PHP :
<?php
class MonModuleSetup extends DefaultModuleSetup
{
	public function install()
	{
 
	}
 
	public function uninstall()
	{
 
	}
}
?>


A chaque installation, et à chaque désinstallation, ce fichier sera appelé. C'est donc à l'intérieur des deux fonctions que vous allez exécuter les différentes tâches que vous souhaitez faire. Créer des tables, les supprimer, etc.


La mise à jour d'un module



Vous allez également pouvoir faire les mises à jour de votre module à travers de ce fichier en rajoutant une fonction upgrade() :

Code PHP :
 
public function upgrade($installed_version)
{
	return null;
}


De cette manière, l'utilisateur qui mettra à jour le module à travers l'administration, ne perdra pas ses données en cas de changement au niveau des tables ou autres. C'est à vous maintenant de procéder à la conversion des différentes choses.

L'argument passé en paramètre renvoi le numéro de version installée sur le serveur de l'utilisateur. En valeur de retour, il faudra renvoyer le nouveau numéro de version. Si la fonction ne retourne rien ou est nulle, alors la page de mise à jour renverra une erreur à l'utilisateur.

Viewing all 35 articles
Browse latest View live