Objets de wakka.php
Cette page a été jardinée et sa nouvelle version se trouve ici:
ClasseWiki.
- Je la laisse temporairement pour pouvoir recopier les descriptions qu'OlivierB a déjà faites dans les pages apropriées, ensuite je propose de placer une redirection ou de la supprimer -- LordFarquaad
- Je l'effacerai une fois qu'elle sera devenue inutile. -- OlivierB
Classe : Wiki
Version :
WikiNi 0.4.3
- Constructeurs :
- function Wiki($config) : constructeur.
- Accès base de données :
- function Query($query) : exécute une requete SQL sur la base.
Utilisez cette fonction pour les requetes de mises à jour de la base.
- function LoadSingle($query) : exécute une requete SQL et retourne un résultat unique (une seule réponse).
- Utilisez cette fonction pour les select ne renvoyant qu'une seule réponse.
- Exemple :
- $user = $this->LoadSingle("select email from ".$this->config["table_prefix"]."users where name ='".$nom_utilisateur."'");
- echo $user["email"];
- function LoadAll($query) : exécute une requete SQL et retourne toutes les réponses dans un liste.
Utilisez cette fonction pour des select renvoyant plus d'une réponse comme par exemple la liste des utilisateurs.
- Divers :
- function GetMicroTime() : à détailler.
- function IncludeBuffered($filename, $notfoundText = " ", $vars = " ", $path = " ") : à détailler.
- Accès aux variables :
- function GetPageTag() : Retourne le nom de la page courante ??
- function GetPageTime() :
- function GetMethod() : Retourne le nom de la méthode (handler) courante ??
- function GetConfigValue($name) : Retourne la valeur de la variable de configuration contenu dans la variable $name.
- function GetWakkaName() : Retourne le nom du site.
- function GetWakkaVersion() : Retourne la version de Wakka.
- function GetWikiNiVersion() : Retourne la version de Wikini.
- Gestion des pages :
- function LoadPage($tag, $time = " ", $cache = 1) : Charge la page en cache ($cache=1) ou directement dans la base de données.
- function GetCachedPage($tag) : Retourne la page en cache.
- function CachePage($page) : Mets la page en cache.
- function SetPage($page) :
- function LoadPageById($id) : Charge la page par rapport à son ID de la base de données.
- function LoadRevisions($page) : Charge les révisions d'une page.
- function LoadPagesLinkingTo($tag) : Charge les pages liées à $tag.
- function LoadRecentlyChanged($limit=50) : Charge les pages changées récemment.
- function LoadAllPages() :
- function FullTextSearch($phrase) : Cherche une phrase dans les pages.
- function LoadWantedPages() : Renvoi les noms wiki n'étant pas associés à une page.
- function LoadOrphanedPages() : Renvoi la liste des pages orphelines (n'ayant pas de référence dans le wiki).
- function IsOrphanedPage($tag) : Test si une page est une page orpheline.
- function DeleteOrphanedPage($tag) : Efface une page oprheline.
- function SavePage($tag, $body, $comment_on = " ") : Sauvegarde une page dans la base de données.
- function PurgePages() : Purge les révisions trop anciennes des pages.
- Gestion des cookies :
- function SetSessionCookie($name, $value) : Crée un cookie valable pour la session.
- function SetPersistentCookie($name, $value, $remember = 0) : Crée un cookie persistent.
- function DeleteCookie($name) : Efface un cookie
- function GetCookie($name) : Récupére un cookie.
- Gestion des informations/actions liées à HTTP et aux liens :.
- function SetMessage($message) : Fait apparaître un message par une fenêtre JavaScript
- function GetMessage() :
- function Redirect($url) : Redirige la page vers l'url $url.
- function MiniHref($method = " ", $tag = " ") : retourne juste le nom de la page ou page/method.
- function Href($method = " ", $tag = " ", $params = " ") : retourne l'url complète d'une page/méthode
- function Link($tag, $method = " ", $text = " ", $track = 1) : Crée un lien en testant les différents types de liens possibles.
- function ComposeLinkToPage($tag, $method = " ", $text = " ", $track = 1) :
- function IsWikiName($text) : Teste si c'est un NomWiki
- function TrackLinkTo($tag) :
- function GetLinkTable() :
- function ClearLinkTable() :
- function StartLinkTracking() :
- function StopLinkTracking() :
- function WriteLinkTable() :
- function Header() : Lance l'action header.
- function Footer() : Lance l'action footer.
- Gestion des formulaires :
- function FormOpen($method = " ", $tag = " ", $formMethod = "post") : Crée le code HTML pour ouvrir un formulaire.
- Par exemple :
- echo $this->FormOpen("methodetraitementformulaire");
- Ouvre un formulaire avec une traitement POST exécuté par la méthode (handler) methodetraitementformulaire.php associé à la page courante. C'est cette méthode qui traitera les données du formulaire.
- echo $this->FormOpen();
- Ouvre un formulaire avec un traitement POST exécuté par le rappel de la même page. C'est l'action qui a créé le formulaire qui sera chargé de faire le traitement lors de la validation du formulaire. Un bon exemple est donné par l'action usersettings.php
- function FormClose() : Crée le code HTML pour fermer un formulaire.
- Par exemple :
- echo $this->FormClose();
- Ferme un formulaire ouvert par FormOpen()
- Gestion des fonctions InterWiki :
- function ReadInterWikiConfig() : Lecture du paramétrage interwiki
- function AddInterWiki($name, $url) : Ajoute une url interwiki
- function GetInterWikiUrl($name, $tag) : récupère une url interwiki
- Gestion des referrers :
- function LogReferrer($tag = " ", $referrer = " ") :
- function LoadReferrers($tag = " ")
- function PurgeReferrers()
- Gestion des plugins :
- function Action($action, $forceLinkTracking = 0) : exécute une action.
- function Method($method) : Exécute une méthode (handler).
- function Format($text, $formatter = "wakka") : Exécute un formateur (par défaut celui de WikiNi).
- Par exemple :
- echo $this->Format("//Vous n'avez pas accès à cette page !//");
- Affiche le texte Vous n'avez pas accès à cette page ! en interprétant la synthaxe de WikiNi
- Gestion des utilisateurs :
- function LoadUser($name, $password = 0) : Récupère un utilisateur (avec test du mot de passe).
- function LoadUsers() : Retourne la liste des utilisateurs triés par nom.
- function GetUserName() : Retourne le nom de l'utisateur ou son adresse si celui-ci est anonyme.
- function UserName() : Ne plus utiliser, correspond à GetUserName().
- function GetUser() : Récupère l'utilisateur de la session.
- function SetUser($user, $remember=0) : Positionne dans la session le nom de l'utilisateur et crée un cookie.
- function LogoutUser() : Déconnecte un utilisateur et efface le cookie.
- function UserWantsComments() : Retourne l'information si la case à cocher voir commentaires est activée.
- Récupération de paramétres :
- function GetParameter($parameter, $default = '') : retourne la valeur du paramétre $parameter.
- Gestion des commentaires :
- function LoadComments($tag) : Récupère les commentaires d'une page.
- function LoadRecentComments() : Récupère les pages ayant des commentaires récents.
- function LoadRecentlyCommented($limit = 50) :
- Gestion des contrôles d'accès :
- function UserIsOwner($tag = " ") : Test si l'utilisateur courant est le propriétaire de la page ou d'une page spécifiée.
- function GetPageOwner($tag = " ", $time = " ") : Récupère le propriétaire d'une page.
- function SetPageOwner($tag, $user) : Positionne le propriétaire d'une page.
- function LoadAcl($tag, $privilege, $useDefaults = 1) : Récupère les droits d'accès à une page.
- function SaveAcl($tag, $privilege, $list) : Sauvegarde les droits d'accès à une page.
- function HasAccess($privilege, $tag = " ", $user = " ") : Test si l'utilisateur (courant ou $user) a les droits correspondants à $privilege.
- Fonction de maintenance :
- function Maintenance() : Lance la purge des pages et des referrers
- Fonction principale :
- function Run($tag, $method = " ") : exécute la méthode de la page $tag
Discussions
Documentation du code
Je pense qu'il serait bon aussi de documenter le code en lui-même, surtout qu'il existe déjà pas mal d'outils qui permettent de faciliter cette tâche. Sous windows il y notemment l'ide
PhpEdit qui fait ressortir la documentation du code et permet de générer des fichier d'aide au format html, mais aussi beaucoup d'autres générateurs de documentation comme
phpDocumentor,
PHPDoc & cie...
Pour ce qui est des tags utilisabes dans l'aide je vous conseille
la documentation de phpDocumentor --
LordFarquaad
Une page par méthode ?
Je propose que l'on crée une page pour chaque méthode, ce qui serait facile puisque en général les méthodes sont des
NomWiki...
Avantages :
- Chaque méthode pourra avoir une longue description (utilisation, paramètres, valeur retournée, notes d'utilisation...) sans que cette page s'allonge considérablement
- Cette page-ci pourra servir d'index, permettant l'utilisation d'une ActionTrail sur chaque page de description, et conservant une description brève comme c'est le cas actuellement. Cet index permettrait donc une recherche facile avec un accès séparé aux détails (ce serait donc un peu similaire à la documentation sur php.net en fait)
- Possibilité de demande d'aide relative à l'utilisation d'une méthode (via les commentaires) sans perturber la page ou avoir à se demander quel commentaire correspond à quoi
- Facilité pour proposer des améliorations du code et éventuellement signaler des bugs ou des failles
- Fécilité d'accès à l'aide puisqu'il suffirait de demander la page NomDeLaMethode? pour y accéder.
Inconvérniants :
- Une page par méthode, c'est grave docteur ? J'imagine qu'il n'y a pas encore d'autres pages qui portent le même nom, si ?
Désolé
OlivierB que tu aies passé ton temps à mettre des paires guillemets doubles partout et que je propose de les enlever... (et même de les rempalcer par des crochets si nécessaire tiens d'ailleurs) :-j --
LordFarquaad -- Pour les guillemets j'ai utilisé la fonction remplacer d'un bon éditeur de texte ( vi ;o) donc pas de problème --
OlivierB
- Je ne suis pas contre mais je demande un petit délai de réflexion. Quid de la relation entre la méthode et la version de WikiNi par exemple ? Il faudrait au moins les préfixer (par exemple, MethodeGetUser) pour être sûr qu'il n'y ai pas de confusion avec d'autre sujet. Une page ayant pour titre "Maintenance" prêterait à confusion. -- CharlesNepote
- Ouep, de fait le préfixe est un incontournable: "Maintenance" n'est pas le pire, il y a le constructeur par exemple lol. Songeant que Wiki ne sera probablement pas la seule classe documentée, je me dis qu'un bon préfixe serait peut-être plutôt quelques chose du genre WikiMethodeGetUser ou même ClasseWikiMethodeGetUser (cette page-ci pourrait alors devenir ClasseWiki). Je songe aussi aux différentes versions, mais si on commence à créer une page pour chaque méthode de chaque version, ça risque de faire beaucoup. Il ne faudrait donc pas oublier de mensionner les infos de version dans chacune des pages (pour ça j'aime bien aussi la doc sur php.net) -- LordFarquaad
- ClasseWiki ça me paraît aussi un peu trop générique... d'un autre côté, ici, le sujet principal c'est WikiNi... Je vois quatre propositions :
- ClasseWiki, puis ClasseWikiMethodeGetUser, etc.
- DocClasseWiki, puis DocClasseWikiMethodeGetUser, etc.
- WikiNiClasseWiki, puis WikiNiClasseWikiMethodeGetUser, etc.
- DocWikiNiClasseWiki, puis DocWikiNiClasseWikiMethodeGetUser, etc.
- L'idéal, à mon sens, ce serait DocWikiNi/DocDeveloppeur/ClasseWiki/MethodeGetUser. PhpWiki permet ce genre de truc et j'ai vu des WikiNi modifiés qui le gèrent bien. Pour le moment je crois que mon préféré est DocClasseWiki qui annonce clairement la couleur et reste assez court. -- CharlesNepote
- Comme tu dis le sujet principale c'est WikiNi, donc je trouve que ClasseWiki ne porte pas vraiment à confusion, sinon ma deuxième préférence va aussi pour DocClasseWiki, ou alors pourquoi pas DevClasseWiki et DevClasseWikiMethodeGetUser etc. puisque c'est de le documentation destinée aux développeurs... mais bon, je conserve ma préférence pour ClasseWiki. WikiNiClasseWiki etc. c'est un peu des noms à rallonge... -- LordFarquaad
- Bon, allez, fonçons pour ClasseWiki ! (sans oublier d'effacer la discussion...) -- CharlesNepote
Au fait
OlivierB, je vois que tu as déjà commencé à documenter une ou deux méthodes, mais ne serait-il pas plus pratique d'attendre d'avoir décidé ceci ? En fait je pense que sur cette page on ne devrait pas mettre plus d'une ligne de description par méthode... --
LordFarquaad
- Ok j'attends ;o) -- OlivierB
- Moi, je dirais "n'attend surtout pas !!". C'est comme ça que les choses trainent. On peut faire deux choses en même temps et quelques copier/coller arangeront le tout. -- CharlesNepote
- Soit, enfin j'espère que la décision sera tout de même prise assez rapidement ;-) Il va falloir jardiner alors :-) -- LordFarquaad
- Ok mainteant on peut y aller pour faire les descriptions page par page depuis la page ClasseWiki ;-) J'ai proposé un ModeleDeDescriptionDesMethodes pour le faire. -- LordFarquaad
- Sur ta page ClasseWiki, il me semble que le lien doit être au début de la ligne sinon l'ActionTrail ne fonctionnera pas. Donc, il faut enlever les "function" et peut être les ## aussi. --OlivierB
- De fait je m'en suis rapidement rendu compte et c'est ce que j'ai fait... c'est un peu dommage en fait, mais bon... -- LordFarquaad