darkPoll v0.5
dernière révision : 26/12/2001
darkPoll est un module de Darkmag.net
copyright (C) 2001 YoGi (yogi@darkmag.net)


Sommaire

 
Description

darkPoll est un système de gestion dynamique de sondage écrit et prévu pour tourner avec PHP4 et MySQL, quelle que soit la configuration de PHP (register_global on/off, magic_quotes_[gpc/runtime] on/off), et aussi personnalisable que possible. Cette nouvelle version, à l'inverse de la précédente (v0.3 - ne cherchez pas il n'y a pas eu de v0.4 ;), se veut plus être une API qu'une solution "clef en main". Elle met en effet à disposition du développeur un jeu de méthodes réalisant des actions simples, et c'est à ce dernier qu'incombe la tâche de les mettre en oeuvre de la façon dont il le souhaite. En résulte nécessairement un travail de programmation, mais aussi (et surtout) un niveau de souplesse et de personnalisation qu'il serait plus que difficile (amha) d'atteindre avec une solution "clef en main".

darkPoll ainsi que darkDB (un module nécessaire au fonctionnement darkPoll) sont désormais distribués sous la licence LGPL v2.1 (GNU Lesser General Public License). Vous pouvez consulter les termes d'utilisation et d'exploitation de ces derniers dans le fichier licence.txt fourni avec l'archive ou directement sur le site du GNU Project.

 
Archive - téléchargement

Vous devriez trouver dans l'archive les fichiers suivants :

Si un fichier venait à manquer, je vous invite a (re)télécharger l'archive à l'URL suivante : darkPoll.zip

 
Requirements

  • PHP 3/4
  • MySQL (>= v3.23 pour pouvoir utiliser la détermination aléatoire des sondages ! [clause "ORDER BY rand()"])
  • une 40aine de ko de libre
  • de la patience, un fauteuil confortable, du café à portée de main et un bon CD dans la platine ;)

     
    PHP3 - update du 04/01/2002

    La présente version de darkPoll est prévue pour fonctionner avec PHP4. Cependant, et après quelques tests (merci à "Tomate Powa" pour avoir signalé les problèmes), il est possible de le faire fonctionner avec PHP3, moyennant quelques modifications dans le code.

  • Commencez tout d'abord par renommer les fichiers .php en .php3, et modifiez en conséquence les noms des fichiers dans les directives require_once() (ligne 31 dans class.darkPoll.php et ligne 2 dans darkPollTest.php)
  • A ces mêmes lignes, profitez en pour remplacer les directives require_once() en simples require()
  • Enfin, à la ligne 130 dans class.darkPoll.php, remplacez ini_get("arg_separator.input") par le caractère de séparation des variables en GET - soit "&" dans la grande majorité des cas (caractère qui peut être mené à varier en fonction de la configuration de PHP - vous pouvez l'obtenir avec un simple phpinfo() si jamais vous n'en n'êtes pas sûr).
    Cela donne donc (par exemple) return $url."&".$param."=".$value au lieu de return $url.ini_get("arg_separator.input").$param."=".$value

    Avec ces quelques modifications, darkPoll devrait se montrer fonctionnel avec PHP3. Pour les utilisateurs de Free, j'attire votre attention sur le fait que la variable $PHP_SELF ne contient pas la valeur qu'elle devrait contenir - il convient ainsi de trouver une solution alternative à l'utilisation de cette variable, soit à l'aide d'une expression rationnelle (regexp) qui traitera cette variable, soit en mettant directement en "brut" le nom du script. (Cette liste de solutions étant loin d'être exhaustive)

     
    Installation

    L'installation de darkPoll nécessite quelques étapes :

  • En premier lieu, il convient de créer les tables nécessaires au fonctionnement de darkPoll, ces dernières étant présentes dans le fichier dump.sql (soit à l'aide de phpMyAdmin, soit directement en mode console (avec une commande du type : mysql -u utilisateur -p -h serveur_sql ma_base_de_données < dump.sql)). Si jamais vous utilisiez déjà darkPoll v0.3 et que vous souhaitez garder vos sondages, dans ce cas utilisez plutot le fichier update.sql, qui met à jour la structure des tables de darkPoll v0.3 pour être utilisables avec darkPoll v0.5 (si vous n'avez pas gardé les noms de tables par défaut, vous devez dans ce cas les modifier dans ce dernier fichier)

  • Ensuite, il convient de configurer l'accès à la base de données, en précisant le serveur, l'utilisateur, le mot de passe ainsi que la base de données à utiliser. Vous pouvez soit l'écrire en brut dans les variables de classe de darkDB (voir partie configuration), soit utiliser la méthode set_database() de darkPoll. (voir partie mode paramétrage)

  • Il convient également de configurer darkPoll. Au même titre que l'accès à la base de données, vous pouvez soit l'écrire en brut dans les variables de classe de darkPoll (voir partie configuration), soit utiliser les méthodes prévues à cet effet (set_images(), set_tables(), set_random() etc.. - voir partie mode paramétrage)

  • Incluez le fichier class.darkPoll.php au début de chacun de vos scripts (attention aux chemins !)

  • Insérez (ou reliez) dans/à vos pages HTML la feuille de style darkPoll.css, nécessaire à la personnalisation visuelle de darkPoll (voir à l'intérieur du fichier pour les détails)

  • Voilà, maintenant vous pouvez coder :)

     
    Configuration

    Nous allons à présent évoquer dans cette partie la configuration par l'intermédiaire des variables de classe en brut (la configuration via les setters viendra après)

  • class.darkDB.php :

    Pas grand chose de plus à dire, les noms des variables et les commentaires étant assez explicites.

  • class.darkPoll.php :

    Les 3 premières variables correspondent aux noms des tables à utiliser, celles-ci étant par défaut et respectivement initialisées à "darkpoll", "darkpoll_options" et "darkpoll_log". Notez que c'est ainsi que les tables sont nommées dans le fichier dump.sql.

    Les 4 variables suivantes correspondent aux noms et chemins des images pour les barres de sondage. Ne perdez pas de vue que ces chemins ne correspondent pas forcément aux chemins du fichier class.darkPoll.php aux images, mais de votre script qui inclue class.darkPoll.php aux images. Notez également qu'il en est de même pour la directive require_once ("./modules/class.darkDB.php") ;, qui inclue le fichier class.darkDB.php dans darkPoll (cette dernière directive se trouve à la ligne 31, et est la toute première commande du fichier class.darkPoll.php)

    $POLL_VOTETEXT : correspond au texte qui apparait sur le bouton (submit) de validation du formulaire. (valeurs : toute chaine de caractères)

    Les variables restantes correspondent quant à elles à la configuration proprement dite des fonctionnalités de darkPoll :

    $POLL_DOLOG : détermine si l'on doit logger les IP des visiteurs dans la table $DB_TABLE_LOG, et ce pour les empêcher de voter à nouveau pendant une durée déterminée (par la variable suivante). Ceci ajoute une protection supplémentaire à l'utilisation des cookies, ces derniers étant aisément contournables (par simple suppression du cookie dans le répertoire correspondant) (valeurs : true ou false).

    $POLL_VOTETIMEOUT : détermine, en heures, la durée pendant laquelle les visiteurs ne peuvent plus voter après un vote. (valeurs entières > 0)

    $POLL_TOTALDISP : détermine si l'ont doit afficher le nombre total de votes dans la partie "résultats" du sondage (valeurs : true ou false).

    $POLL_STATSDISP : détermine si l'on affiche les statistiques a coté des barres de sondages. Cette variable peut prendre 3 valeurs : 0 indique que l'on n'affiche pas de statistique, 1 indique que l'on affiche les statistiques sous forme de pourcentages (ie : 32.5%), 2 indique que l'on affiche le nombre de votes par rapport au nombre total de vote (ie : 12/34). (valeurs : 0, 1 ou 2)

    $POLL_RANDOM : détermine si l'on effectue un choix aléatoire des sondages. Attention, cette fonctionnalité ne fonctionnera que si vous avez MySQL version 3.23 ou supérieur ! (valeurs : true ou false) (Voir la partie mode utilisateur pour comprendre les implications de cette variable).

    $POLL_USEDATE : détermine si les dates de début et dates de fin de sondage (ie : date_debut et date_fin) doivent être prises en compte pour la détermination du sondage (valeurs : true ou false) (Voir la partie mode utilisateur pour comprendre les implications de cette variable).

    $POLL_SIZEFACTOR : détermine le coefficient de largeur d'affichage des barres de sondage. Par défaut initialisé à 1, cela signifie que la barre de sondage d'une option qui remporte 100% des votes fera 100 pixels de largeur. Dans une situation similaire, cette variable initialisée à 0.5 donnera une barre de sondage de 50 pixels de largeur. Initialisée à 2, cela donnera une barre de 200 pixels de largeur. A utiliser afin d'ajuster la largeur du sondage par rapport a son emplacement dans l'interface de votre site. (valeurs entières > 0)

     
    Utilisation

    La première chose à faire, après avoir inclue le fichier class.darkPoll.php, est de créer une instance de notre classe :

    Notez que vous devez inclure et instancier un objet de la classe avant tout "affichage" dans la page. Le cas échéant, l'ajout de cookies et les redirections (page des archives) ne pourront avoir lieu. Une manière simple de ne pas rencontrer ce problème est d'inclure et d'instancier directement un objet au début de vos scripts (comme montré dans l'exemple précédent).

    darkPoll dispose de 4 modes de fonctionnement : les modes paramétrage, utilisateur, archives et administrateur. Nous allons maintenant voir en détail les spécificités de chacun de ces modes, et les méthodes qui y sont respectivement utilisables. Notez que darkPoll dispose de bien plus de méthodes que celles présentées ici, vous vous en apercevrez vous même en jettant un coup d'oeil au code source. PHP n'offrant aucun mécanisme de droits (methodes/variables privées/publiques), considérez que les méthodes qui ne sont pas décrites dans ce manuel sont des méthodes privées (de même pour les variables).

     
    Le mode paramétrage

    Après avoir instancié un objet de la classe, vous êtes directement dans le mode paramétrage. Lorsque vous sortez du mode utilisateur, administrateur ou archives, vous revenez dans le mode paramétrage. Ce mode, comme son nom l'indique, vous permet de paramétrer via des méthodes setters darkPoll. En outre, ce mode permet de redéfinir, pour une instance donnée de la classe darkPoll, les paramètres par défaut du sondage que vous avez déterminé précédemment dans la partie configuration. Cela vous permet notamment d'avoir des paramètres par défaut pour tous vos sondages (sizefactor, images, etc..), mais que vous pouvez modifier pour un sondage donné, vous offrant ainsi la possibilité d'avoir sur la même page (ou sur différentes pages) des sondages aux comportements différents.

    Les méthodes utilisables dans le mode paramétrage sont les suivantes :

    (Toutes ces méthodes retournent une variable de type booléen. Elles retournent en effet true si le paramètre a été modifié et que vous êtes bien dans le mode paramétrage, false sinon.

    bool set_dolog(bool b) mode : paramétrage

    Active ou désactive le log des IP dans la table $DB_TABLE_LOG.


    bool set_votetimeout(int i) mode : paramétrage

    Spécifie la durée pendant laquelle les visiteurs ne peuvent voter après un vote. i est un entier > 0.


    bool set_totaldisp(bool b) mode : paramétrage

    Détermine si l'on affiche le nombre total de votes sur la page des résultats.


    bool set_statsdisp(int i) mode : paramétrage

    Détermine le type d'affichage pour les statistiques. i est un entier qui vaut 0, 1 ou 2. 0 indique que l'on n'affiche pas de statistique, 1 indique que l'on affiche les statistiques sous forme de pourcentages (ie : 32.5%), 2 indique que l'on affiche le nombre de votes par rapport au nombre total de vote (ie : 12/34)


    bool set_random(bool b) mode : paramétrage

    Précise si l'on effectue un choix aléatoire des sondages ou non. (MySQL >= v3.23 requis !)


    bool set_usedate(bool b) mode : paramétrage

    Détermine si les dates de début et dates de fin de sondage doivent être prises en compte pour la détermination du sondage.


    bool set_sizefactor(int i) mode : paramétrage

    Détermine le coefficient de largeur d'affichage des barres de sondage. i est un entier > 0.


    bool set_votetext(string str) mode : paramétrage

    Détermine le texte apparaissant sur le bouton (submit) de validation du sondage.


    bool set_images(string img, string img_left, string img_right, string img_blank) mode : paramétrage

    Permet de modifier les images à utiliser pour les barres de sondage. Les paramètres correspondent respectivement à l'image du "corps" du sondage, à l'image de la partie gauche du sondage, à celle de la partie droite, et à l'image transparente de 1x1 pixel.


    bool set_tables(string table, string table_options, string table_log) mode : paramétrage

    Permet de modifier les tables à utiliser pour le sondage. Les paramètres correspondent respectivement à $DB_TABLE, $DB_TABLE_OPTIONS et $DB_TABLE_LOG.


    bool set_database(string host, string login, string password, string database) mode : paramétrage

    Permet de modifier les paramètres d'accès à la base de données. Les paramètres correspondent respectivement aux variables de classe de darkDB suivantes : $DB_HOST, $DB_LOGIN, $DB_PWD et $DB_DATABASE.

    Exemple d'utilisation :

    Une fois que vous avez paramétré selon vos besoins votre instance de darkPoll, vous pouvez entrer soit dans le mode utilisateur, soit dans le mode archives ou soit dans le mode administrateur.

     
    Le mode utilisateur

    Le mode utilisateur est le mode permettant de mettre en oeuvre de manière proprement dite le sondage. Il convient en premier lieu d'entrer dans le mode utilisateur, et ce grâce à la méthode user_start(). Une fois dans le mode utilisateur, vous pouvez afficher le sondage, avec la méthode user_display(). Vous sortez ensuite du mode utilisateur avec la méthode user_end().

    bool user_start(void) mode : paramétrage

    Cette méthode à pour but de permettre à l'instance de la classe de rentrer dans le mode utilisateur. Techniquement parlant, cette méthode ouvre une connexion à la base de données via darkDB, analyse les différents paramètres (par défauts ou affectés dans le mode paramétrage), et fait correspondre un sondage à notre instance de darkPoll. (concrêtement, un ID de sondage est affecté à une variable privée de la classe).

    La détermination d'un sondage est influencée par certains paramètres, entres autres la sélection aléatoire et/ou l'utilisation des dates. L'algorithme de détermination d'un sondage est le suivant :

    soit IDpoll_user : l'ID du sondage donné en paramètre du constructeur
    soit IDpoll : l'ID du sondage courant de l'instance
                  (initialement non affectée)
    
    si IDpoll_user <> 0 alors
      IDpoll := IDpoll_user
    sinon	       /* si IDpoll_user = 0 */
      si $POLL_RANDOM = vrai alors
        si $POLL_USEDATE = vrai alors
          IDpoll := ID de sondage déterminé aléatoirement parmis ceux dont 
          la date de début est antérieure (ou égale) à la date courante
          et dont la date de fin (expiration) est strictement postérieure
          à la date courante.
        sinon
          IDpoll := ID de sondage déterminé aléatoirement parmis tous
          ceux présents.
        fsi
      sinon
        si $POLL_USEDATE = vrai alors
          IDpoll := ID du dernier sondage inséré dont 
          la date de début est antérieure (ou égale) à la date courante
          et dont la date de fin (expiration) est strictement postérieure
          à la date courante.
        sinon
          IDpoll := ID du dernier sondage inséré.
        fsi
      fsi
    fsi

    Ainsi, si vous précisez 0 pour l'ID du poll courant dans le constructeur, un ID sera automatiquement déterminé, en fonction des paramètres $POLL_RANDOM et $POLL_USEDATE. Dans tous les cas, une fois IDpoll affecté, la méthode vérifie que le sondage existe bien, et ce en vérifiant s'il existe une occurence dans la table $DB_TABLE à l'ID correspondant, et si ce sondage à au moins une option (=choix) disponible dans la table $DB_TABLE_OPTIONS.

    Si ce n'est pas le cas, la méthode user_start() retourne false. Si vous tentez d'invoquer cette méthode alors que vous êtes déja dans le mode utilisateur, administrateur ou archives, la méthode retourne false. Sinon, si le sondage déterminé existe bien et que vous n'êtes dans aucun de ces 3 modes, la méthode retourne true, et vous pouvez alors utiliser les méthodes du mode utilisateur.

    Les méthodes utilisables dans le mode utilisateur sont les suivantes :

    bool user_end(void) mode : utilisateur

    Permet de sortir du mode utilisateur et de revenir au mode paramétrage. A utiliser dans tous les cas après être entré dans le mode utilisateur, et ce afin de fermer proprement les connexions à la base de données. Retourne false si vous tentez d'invoquer cette méthode dans le mode administrateur ou archives, ou si vous n'êtes pas dans le mode utilisateur, true sinon.


    mixed user_display(void) mode : utilisateur

    Si cette méthode est invoquée dans le mode utilisateur, elle retourne un tableau contenant la description du sondage courant (ce dernier étant déterminé par user_start()), la date de debut, la date de fin ainsi que le sondage en lui même (formulaire de participation ou tableau de résultats selon le cas). Sinon, elle retourne false.

    exemple :

      $curpoll = $mypoll->user_display() ;
      /* les 4 éléments sont $curpoll["poll"], $curpoll["desc"], 
      $curpoll["date_debut"] et $curpoll["date_fin"] ; */

    Exemple d'utilisation :

     
    Le mode archives

    Le mode archive est le mode qui vous permet d'afficher les archives des sondages. Par le biais de la méthode archives_set(), vous définissez le nombre de sondages que vous souhaitez récupérer ainsi que "la position" à partir de laquelle vous souhaitez commencer. Ensuite, vous récupérez chacun des sondages grâce à la méthode archives_display(). Pour entrer dans le mode archives, vous devez utiliser la méthode archives_start(), et en sortir avec la méthode archives_end().

    bool archives_start(void) mode : paramétrage

    Si vous êtes dans le mode paramétrage, cette méthode ouvre une connexion à la base de données, positionne un flag indiquant que vous êtes dans le mode archives, vous permettant d'utiliser les méthodes de ce mode, et retourne true. Retourne false sinon.


    Les méthodes utilisables dans le mode archives sont les suivantes :

    bool archives_end(void) mode : archives

    Permet de sortir du mode archives (et de fermer la connexion à la base de données). Retourne true si vous étiez dans le mode archives et que vous en êtes bien sorti, false sinon.


    bool archives_set(int nb [, int debut]) mode : archives

    L'affichage des archives requiert l'utilisation conjointe de 2 méthodes : une première qui va déterminer quels sondages afficher (en fonction de ses paramètres), et une seconde qui va permettre d'afficher chaque sondage.

    archives_set() joue ici le rôle de la première méthode. Le premier paramètre nb est un entier > 0 qui correspond au nombre de sondages à afficher. Le second paramètre debut est optionnel, et correspond au nombre de sondages à éliminer, sachant qu'ils sont affichés de manière décroissante (du dernier au premier). Si aucune valeur n'est précisée, debut aura par défaut la valeur 0 (et correspondra donc au dernier sondage inséré)

    Ainsi, la directive $mypoll->archives_set(5) récupérera les 5 derniers sondages insérés. La directive $mypoll->archives_set(5,2) récupérera les 5 sondages qui précèdent l'avant-dernier. Il est ainsi aisément concevable de faire des archives sur plusieurs pages, en propageant un index qui correspond au nombre de sondages déja affichés.

    archives_set() retourne false si elle n'est pas appelée dans le mode archives ou si nb n'est pas un entier > 0, true sinon.


    mixed archives_display(void) mode : archives

    Si la méthode archives_set() a été invoquée préalablement, cette méthode retourne un tableau identique à celui retourné par la méthode user_display(), et place le pointeur interne sur le sondage suivant. Lorsqu'il n'y a plus de sondage à afficher, ou si elle n'est pas appelée dans le mode archives, cette méthode retourne false

    Exemple d'utilisation :

     
    Le mode administrateur

    Le mode administrateur, comme son nom l'indique, permet d'administrer les sondages. En effet, il n'y a pas d'interface a proprement parler d'administration (sous forme de script ou autre), simplement des méthodes qui permettent d'administrer les sondages. Ceci étant, vous pouvez très bien développer votre propre interface d'administration, basée sur ces méthodes. (si réaliser une telle interface vous tente, vous pouvez toujours me la faire parvenir à yogi@darkmag.net ;)

    Au même titre que le mode utilisateur et que le mode archives, vous devez utiliser une méthode afin de rentrer dans le mode administrateur (admin_start()), et une autre pour en sortir (admin_end()).

    bool admin_start(void) mode : paramétrage

    Si cette méthode est invoquée dans le mode paramétrage, elle crée une connexion à la base de données et retourne true. Sinon, elle retourne false.


    bool admin_end(void) mode : administrateur

    Permet de sortir du mode administrateur (et de fermer la connexion à la base de données). Retourne true si vous étiez dans le mode administrateur et que vous en êtes bien sorti, false sinon.


    Une fois dans le mode administrateur, vous devez déterminer le sondage sur lequel vous allez opérer (à moins que vous souhaitiez en ajouter un). Pour ce faire, vous disposez de 2 méthodes :

    bool admin_set_id(int i) mode : administrateur

    i correspond à l'ID d'un sondage, et doit donc être strictement supérieur à 0. Si une occurence a été trouvée à l'ID i dans la table $DB_TABLE et que l'on est dans le mode administrateur, alors cette méthode assigne le sondage trouvé comme sondage courant, et vous pouvez ainsi opérer dessus. Sinon, la méthode retourne false.


    mixed admin_search_id(string pattern [,string order]) mode : administrateur

    Si vous êtes dans le mode administrateur, cette méthode va retourner un tableau indexé (ie : $tab[0], $tab[1]...) contenant les ID des sondages dont le motif pattern a été trouvé dans leurs descriptions respectives. Sinon, elle retourne false. Si aucune description de sondage ne possède le motif précisé en paramètre, elle retourne false.

    Vous pouvez préciser l'ordre de recherche, et ce grâce au paramètre (optionnel) order. Par défaut initialisé à "desc", vous pouvez cependant préciser "asc" si vous souhaitez obtenir les ID des sondages correspondants dans l'ordre croissant (ie : du premier au dernier).


    Une fois que vous avez déterminé le sondage (et plus précisément son ID) sur lequel vous allez opérer, vous pouvez utiliser les méthodes suivantes (qui retournent toutes false si elles ne sont pas invoquées dans le mode administrateur) :

    mixed admin_get_id(void) mode : administrateur

    Retourne l'ID (entier > 0) du sondage courant (cad celui sur lequel l'administrateur opère). Si aucun sondage n'a encore été déterminé, elle retourne false.


    mixed admin_add(string desc, int nbj [,string date_debut]) mode : administrateur

    Si nbj n'est pas > 0, ou si desc est nulle, alors cette méthode retourne false. Sinon, elle crée un nouveau sondage dont la description est desc, la date de début égale à la date courante si date_debut n'est pas affecté ou n'est pas une date valide (cette dernière devant etre au format "Y-m-d"), et la date de fin égale à la date de début à laquelle on additionne nbj jour(s).

    Si un sondage est créé, cette méthode affecte ce nouveau sondage comme sondage courant (pas besoin de admin_set_id() donc) et retourne l'ID (entier > 0) de ce sondage tout fraichement créé.


    bool admin_add_option(string texte) mode : administrateur

    S'il n'y a aucun sondage courant ou si texte est nulle, cette méthode retourne false. Sinon, elle ajoute texte comme option (=choix) du sondage courant et retourne true.


    bool admin_del() mode : administrateur

    S'il n'y a aucun sondage courant, cette méthode retourne false. Sinon, elle efface le sondage courant, ses options ainsi que les logs qui y sont associés (si jamais il y en a), désalloue le sondage courant (il convient donc d'en choisir un autre), et retourne true.


    bool admin_del_option(int rang) mode : administrateur

    S'il n'y a aucun sondage courant ou si rang n'est pas > 0, cette méthode retourne false. Sinon, elle efface l'option au rang donné (s'il existe une option à ce rang donné !) et retourne true.

    Le rang correspond à la position de l'option dans le sondage courant. Lorsque vous affichez un sondage, le premier choix disponible (de "haut en bas") a pour rang 1, le second rang 2, etc.


    bool admin_mod(string desc, int nbj [,string date_debut]) mode : administrateur

    Si nbj n'est pas > 0, si desc est nulle ou s'il n'y a aucun sondage courant, cette méthode retourne false. Sinon, elle met à jour le sondage courant et retourne true. Les paramètres sont identiques a ceux décrits pour la méthode admin_add().


    bool admin_mod_option(int rang, string nbvotes [,string texte]) mode : administrateur

    Si rang n'est pas > 0, s'il n'y a aucun sondage courant, ou si nbvotes est nulle, cette méthode retourne false. Sinon, elle met à jour l'option du sondage courant déterminée par rang. Elle peut mettre à jour le nombre de votes et/ou le texte de l'option. Si texte est nulle, le texte de l'option n'est pas mis à jour. nbvotes doit nécessairement avoir une valeur.

    Ainsi, pour mettre 3 votes à cette option, vous pouvez faire admin_mod_option($rang, "3"). Pour incrémenter le nombre de votes de l'option, vous pouvez faire admin_mod_option($rang, "nbvotes+1"). Pour simplement modifier le texte, vous pouvez faire admin_mod_option($rang, "nbvotes","nouveau_texte").

    Si aucune option n'existe au rang précisé, la méthode retourne false. Sinon, si une option existe à ce rang et a été modifiée, elle retourne true.


    mixed admin_display([bool poll]) mode : administrateur

    S'il n'y a aucun sondage courant, cette méthode retourne false. Sinon, elle retourne un tableau indexé de 4 éléments contenant le sondage courant (même structure que user_display()).

    Par défaut, poll est initialisé à false. Ainsi, si vous ne précisez aucun paramètre, le sondage en lui même ne sera pas retourné, juste sa description et ses dates de début et de fin. Il vous faut alors préciser en paramètre true si vous souhaitez que la méthode vous retourne le résultat du sondage. Ceci a pour unique but d'éviter de consommer des ressources inutilement si vous souhaitez simplement récupérer la description du sondage.


    mixed admin_display_option(int rang) mode : administrateur

    S'il n'y a aucun sondage courant, ou si rang n'est pas > 0, cette méthode retourne false. Sinon, elle retourne un tableau associatif (les 2 éléments étant aux indexes "texte" et "nbvotes" : $tab["texte"] et $tab["nbvotes"]) contenant le texte et le nombre de votes de l'option au rang rang. Si aucune option n'existe au rang précisé, la méthode retourne false.

    Exemple d'utilisation :

     
    Le mot de la fin

    Bien que longuement testé, des bugs doivent toujours subsister. Donc si vous rencontrez des problèmes avec darkPoll, ou si vous avez des questions/suggestions à me faire parvenir, un seul mail : yogi@darkmag.net. En dehors des éventuelles corrections de bugs, je doute qu'il y aura d'autres versions de darkPoll, ne voyant plus vraiment quoi lui ajouter. Cependant, si vous avez des idées d'amélioration (en dehors d'une interface d'administration :p), ou si vous l'améliorez vous même, je vous serais reconnaissant de m'en faire part.

    Je tiens à remercier tout particulièrement les personnes qui m'ont écrit à propos de darkPoll v0.3 pour me signaler des problèmes/bugs, ou tout simplement pour me faire part de leurs impressions à son sujet. Je tiens également à remercier Nescafé(c) (open up !) pour leur café qui m'a aidé a tenir éveillé, et Dark Funeral, Belenos, Tidfall, Anorexia Nervosa ainsi que Furia dont les musiques ont rythmé le développement de darkPoll ;)

    In blackness,

    YoGi - le 26/12/2001