Subversion Repositories Applications.projet

Rev

Rev 264 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1                                                                                      |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or                                        |
// | modify it under the terms of the GNU General Public                                                  |
// | License as published by the Free Software Foundation; either                                         |
// | version 2.1 of the License, or (at your option) any later version.                                   |
// |                                                                                                      |
// | This library is distributed in the hope that it will be useful,                                      |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
// | General Public License for more details.                                                             |
// |                                                                                                      |
// | You should have received a copy of the GNU General Public                                            |
// | License along with this library; if not, write to the Free Software                                  |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: gestion_wikini.class.php,v 1.2 2005-09-27 16:38:54 alexandre_tb Exp $
/**
* Application projet
*
* La classe gestion_wikini
*
*@package projet
//Auteur original :
*@author        Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author        Aucun
*@copyright     Tela-Botanica 2000-2004
*@version       $Revision: 1.2 $
// +------------------------------------------------------------------------------------------------------+
*/


// +------------------------------------------------------------------------------------------------------+
// |                                            ENTETE du PROGRAMME                                       |
// +------------------------------------------------------------------------------------------------------+


/**
 * class gestion_wikini
 * 
 */
class gestion_wikini
{

     /*** Attributes: ***/

    /**
     * Un objet PEAR::DB
     * @access private
     */
    var $_db;

    /**
     * Constructeur
     *
     * @param DB objetDB Une référence vers un objet PEAR:DB
     * @return void
     * @access public
     */
    function gestion_wikini( &$objetDB )
    {
        $this->_db = $objetDB ;
    } // end of member function gestion_wikini

    /**
     * 
     *
     * @param string prefixe Le préfixe des tables.
     * @return void
     * @access public
     */
    function creation_tables( $prefixe )
    {
            // Connection à la base de donnée de wikini
            $prefixe .= '_' ;
        $this->_db->query(
                "CREATE TABLE ".$prefixe."pages (".
                    "id int(10) unsigned NOT NULL auto_increment,".
                    "tag varchar(50) NOT NULL default '',".
                    "time datetime NOT NULL default '0000-00-00 00:00:00',".
                    "body text NOT NULL,".
                    "body_r text NOT NULL,".
                    "owner varchar(50) NOT NULL default '',".
                    "user varchar(50) NOT NULL default '',".
                    "latest enum('Y','N') NOT NULL default 'N',".
                    "handler varchar(30) NOT NULL default 'page',".
                    "comment_on varchar(50) NOT NULL default '',".
                    "PRIMARY KEY  (id),".
                    "FULLTEXT KEY tag (tag,body),".
                    "KEY idx_tag (tag),".
                    "KEY idx_time (time),".
                    "KEY idx_latest (latest),".
                    "KEY idx_comment_on (comment_on)".
                    ") TYPE=MyISAM;");
        $this->_db->query(
            "CREATE TABLE ".$prefixe."acls (".
                "page_tag varchar(50) NOT NULL default '',".
                "privilege varchar(20) NOT NULL default '',".
                "list text NOT NULL,".
                "PRIMARY KEY  (page_tag,privilege)".
                ") TYPE=MyISAM");
        $this->_db->query(
            "CREATE TABLE ".$prefixe."links (".
                "from_tag char(50) NOT NULL default '',".
                "to_tag char(50) NOT NULL default '',".
                "UNIQUE KEY from_tag (from_tag,to_tag),".
                "KEY idx_from (from_tag),".
                "KEY idx_to (to_tag)".
                ") TYPE=MyISAM");
        $this->_db->query(
            "CREATE TABLE ".$prefixe."referrers (".
                "page_tag char(50) NOT NULL default '',".
                "referrer char(150) NOT NULL default '',".
                "time datetime NOT NULL default '0000-00-00 00:00:00',".
                "KEY idx_page_tag (page_tag),".
                "KEY idx_time (time)".
                ") TYPE=MyISAM");
        $this->_db->query(
            "CREATE TABLE ".$prefixe."users (".
                "name varchar(80) NOT NULL default '',".
                "password varchar(32) NOT NULL default '',".
                "email varchar(50) NOT NULL default '',".
                "motto text NOT NULL,".
                "revisioncount int(10) unsigned NOT NULL default '20',".
                "changescount int(10) unsigned NOT NULL default '50',".
                "doubleclickedit enum('Y','N') NOT NULL default 'Y',".
                "signuptime datetime NOT NULL default '0000-00-00 00:00:00',".
                "show_comments enum('Y','N') NOT NULL default 'N',".
                "PRIMARY KEY  (name),".
                "KEY idx_name (name),".
                "KEY idx_signuptime (signuptime)".
                ") TYPE=MyISAM");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'PagePrincipale', body = '".mysql_escape_string("====== Bienvenue ! sur le Wikini de ce groupe de travail ======\nEnfin, vous pourrez cliquer sur le lien \"Editer cette page\" au bas de la page pour rédiger.\n\n----\n\n\n\n\n\n\n----\n===== Pages utiles =====\n -[[TableauDeBord Tableau de bord de ce Wikini]]\n -[[ReglesDeFormatage Règles de formatage]]\n -[[BacASable Bac à sable]]")."', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'DerniersChangementsPages', body = '** Retour : ** [[TableauDeBord Tableau de bord]]\n----\n{{RecentChanges}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'DernierChangementCommentaires', body = '** Retour : ** [[TableauDeBord Tableau de bord]]\n----\n{{RecentlyCommented}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'ParametresUtilisateur', body = '** Retour : ** [[PagePrincipale page principale]]\n----\n** Note : ** L\'idéal pour la création d\'un nom Wiki est d\'accoler son prénom et son nom de cette façon : \"PrenomNom\". \n----\n==== Mes paramètres ====\n\n{{UserSettingsCommon}}\n\n----\n==== Voir ma participation à ce Wikini ====\n\n [[MesPagesModifier Voir les pages que j\'ai modifiées ]]\n\n [[MesPagesCreer Voir les pages que j\'ai créées ]]', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'PagesACreer', body = '** Retour : ** [[TableauDeBord Tableau de bord]]\n----\n=== Liste des pages à créer : ===\n\n{{WantedPages}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'PagesOrphelines', body = '** Retour : ** [[TableauDeBord Tableau de bord]]\n----\n=== Liste des pages orphelines ===\n\n{{OrphanedPages}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'RechercheTexte', body = '** Retour : ** [[PagePrincipale Page principale]] > [[TableauDeBord Tableau de bord]]\n----\n{{TextSearch}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'ReglesDeFormatage', body = '** Retour : ** [[PagePrincipale Page principale]]\n----\n====== Guide des règles de formatage ======\n\nLes règles de formatage avec Wakka diffèrent légèrement des autres Wikis. (Voir par exemple [[http://c2.com/cgi/wiki?TextFormattingRules les règles de formatage de WikiWikiWeb]], le premier Wiki connu.)\nTout texte placé entre deux guillemets doubles - \" - est présenté tel que.\n\nVous pouvez effectuer vos propres tests dans le BacASable : c\'est un endroit fait pour ça.\n\n=== Règles de base : ===\n \"\"**Texte en gras !** -----\"\"> **Texte en gras !**\n        \"\"//Texte en italique.// -----\"\"> //Texte en italique.//\n  \"\"Texte __souligné__ ! -----\"\"> Texte __souligné__ !\n    \"\"##texte à espacement fixe## -----\"\"> ##texte à espacement fixe##\n      \"\"%%code%%\"\"\n      \"\"%%(php) PHP code%%\"\"\n\n=== Liens forcés : ===\n \"\"[[http://www.mon-site.org]]\"\"\n   \"\"[[http://www.mon-site.org Mon-site]]\"\"\n  \"\"[[P2P]]\"\"\n      \"\"[[P2P Page sur le P2P]]\"\"\n\n=== Liens dans Wikini ===\n  Pour réaliser un lien dans wikini qui apparaisse avec un style normal utilisez cette écriture :\n     \"\"[[ReglesDeFormatage Règles de Formatage]]\"\"\n    Le lien apparaîtra de cette manière [[ReglesDeFormatage Règles de Formatage]].\n\n=== En-têtes : ===\n      \"\"====== En-tête énorme ======\"\" ====== En-tête énorme ======\n \"\"===== En-tête très gros =====\"\" ===== En-tête très gros =====\n       \"\"==== En-tête gros ====\"\" ==== En-tête gros ====\n       \"\"=== En-tête normal ===\"\" === En-tête normal ===\n       \"\"== Petit en-tête ==\"\" == Petit en-tête ==\n\n=== Séparateur horizontal : ===\n \"\"----\"\"\n\n=== Retour de ligne forcé : ===\n      \"\"---\"\"\n=== Indentation : ===\nL\'indentation de textes se fait avec la touche \"TAB\". Vous pouvez aussi créer des listes à puces ou numérotées :\n   \"\"- liste à puce\"\"\n       \"\"1) liste numérotée (chiffres arabes)\"\"\n        \"\"A) liste numérotée (capitales alphabétiques)\"\"\n       \"\"a) liste numérotée (minuscules alphabétiques)\"\"\n      \"\"i) liste numérotée (chiffres romains)\"\"\n\n=== Inclure une image ===\n\n - Pour inclure un lien sur une image (sans l\'inclure à la page):\n   \"\"[[http://wiki.tela-botanica.org/eflore/bibliotheque/images/table.gif]]\"\"(ne pas indiquer de texte alternatif).\n   Ce qui donne : [[http://wiki.tela-botanica.org/eflore/bibliotheque/images/table.gif]]\n\n - Pour inclure une image sans indiquer de texte alternatif :\n   \"\"[[http://wiki.tela-botanica.org/eflore/bibliotheque/images/table.gif]]\"\"(laisser 3 espaces blancs avant la fermeture des crochets).\n   Ce qui donne quand l\'image est trouvée : [[http://wiki.tela-botanica.org/eflore/bibliotheque/images/table.gif]]\n   Quand l\'image n\'est pas trouvée : [[http://wiki.tela-botanica.org/eflore/bibliotheque/table.gif]]\n\n - Pour inclure une image en indiquant un texte alternatif :\n   \"\"[[http://wiki.tela-botanica.org/eflore/bibliotheque/images/table.gif une puce ]]\"\"\n   Ce qui donne quand l\'image est trouvée : [[http://wiki.tela-botanica.org/eflore/bibliotheque/images/table.gif une puce ]]\n   Quand l\'image n\'est pas trouvée : [[http://wiki.tela-botanica.org/eflore/bibliotheque/table.gif une puce ]]\n\n//Note :// le texte alternatif est affiché à la place de l\'image s\'il y a une erreur lors de l\'affichage de celle-ci.\n\n=== Outils avancés : ===\n\n        \"\"{{Backlinks}}\"\" permet de créer un lien vers la page précédente. \n        \"\"{{Listusers}}\"\" affiche la liste des utilisateurs du site wikini.\n        \"\"{{OrphanedPages}}\"\" affiche les pages orphelines du site wikini.\n        \"\"{{ListPages/tree}}\"\" affiche le plan du site wikini.\n        \"\"{{pageindex}}\"\" affiche un index des pages du site classées par lettres alphabétiques.\n        \"\"{{ListPages}}\"\"  affiche un index des pages du site avec le nom de leur propriétaire.\n        \"\"{{WantedPages}}\"\" affiche la liste des pages restant à créer. Elles apparaissent dans le site avec un ? à la suite de leur nom.\n        \"\"{{RecentChanges}}\"\" affiche la liste des sites faisant référence au site wikini.\n        \"\"{{RecentlyCommented}}\"\" affichage de la liste des derniers commentaires.\n        \"\"{{TextSearch}}\"\" recherche de texte dans les pages du site.\n\n**Note :** à cause d\'un [[http://bugzilla.mozilla.org/show_bug.cgi?id=10547 bogue dans son moteur de rendu]], les listes, utilisant la touche TAB, ne fonctionnent pas (encore) sous Mozilla.\nUne astuce consiste à réaliser une tabulation dans un éditeur de texte puis de la copier. On peut ensuite coller la tabulation dans la zone de saisie de Wikini.\nVous pouvez également indenter du texte en utilisant des caractères espace au lieu de la touche \"TAB\", les exemples ci-dessus restent valables mais attention à ne pas mélanger des \"TAB\" et des espaces dans la même énumération.\n\n---', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'ListeUtilisateurs', body = '** Retour : ** [[TableauDeBord Tableau de bord]]\n----\n=== Liste des utilisateurs ===\n\n... du premier au dernier.\n\n{{Listuserscommon}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'ListeUtilisateursInverse', body = '** Retour : ** [[TableauDeBord Tableau de bord]]\n----\n=== Liste des utilisateurs ===\n\n... du dernier au premier.\n\n{{Listuserscommon/last}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'PlanDuSite', body = '**Retour : ** [[TableauDeBord tableau de bord]]\n----\n=== Plan du site : ===\n\n{{ListPages/tree}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'IndexDesPages', body = '**Retour : ** [[TableauDeBord tableau de bord]]\n----\n=== Liste des pages : ===\n\n{{ListPages}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'IndexDesPagesAlphabet', body = '**Retour : ** [[TableauDeBord tableau de bord]]\n----\n=== Liste des pages par ordre alphabétique : ===\n\n{{pageindex}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'DerniersChangementsRSS', body = '**Retour : ** [[TableauDeBord tableau de bord]]\n----\nCette page renvoie au fils RSS des derniers changement. Pour savoir comment l\'utiliser voir la page \"\"<a href=\"http://www.wikini.net/wakka.php?wiki=WikiniEtLesFluxRSS\" target=\"_blank\" title=\"Wikini et les flux RSS\">Wikini et les flux RSS</a>\"\".\n\n\"\"<!--\n\n{{recentchangesrss/link=\"DerniersChangements\"}}\n\n-->\"\"', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'ListeInterWiki', body = '**Retour : ** [[TableauDeBord tableau de bord]]\n----\n=== Liste des distributions wiki : ===\n\n{{interwikilist}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'BacASable', body = '** Retour : ** [[PagePrincipale Page pincipale]]\n----\nUtilisez cette page pour faire vos tests !', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'MesPagesModifier', body = '**Retour : ** [[ParametresUtilisateur mes paramètres ]]\n----\n{{mychanges}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'TableauDeBord', body = '** Retour : ** [[PagePrincipale Page Principale]]\n----\n===== Tableau de bord =====\n\n    - Listes des utilisateurs : [[ListeUtilisateurs par ordre de création ]] ou [[ListeUtilisateursInverse par ordre inverse de création ]].\n\n  - [[DerniersChangementsPages Dernières modifications sur les pages]]\n - [[DernierChangementCommentaires Dernières modifications sur les commentaires]]\n\n\n - [[PagesOrphelines Pages orphelines]]\n        - [[PagesACreer Pages à créer]]\n\n   - [[RechercheTexte Recherche texte]]\n\n        - [[PlanDuSite Plan du site]]\n - [[IndexDesPages Index des pages avec noms des propriétaires]]\n      - [[IndexDesPagesAlphabet Index des pages par classement alphabétique]]\n\n    - [[DerniersChangementsRSS La page permettant le flux RSS]]\n\n - [[ListeInterWiki Liste des wiki existants ]]\n----\n==== 5 derniers comptes utilisateurs ====\n{{Listuserscommon last=\"5\"}}\n\n==== 5 dernières pages modifiées ====\n{{recentchanges max=\"5\"}}\n----', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'MesPagesCreer', body = '**Retour : ** [[ParametresUtilisateur mes paramètres ]]\n----\n{{mypages}}', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
        $this->_db->query("insert into ".$prefixe."pages set tag = 'NomWiki', body = '** Retour : ** [[PagePrincipale Page Principale]]\n----\nUn NomWiki est un nom qui est écrit \"\"CommeCela\"\".\n\nUn NomWiki est transformé automatiquement en lien. Si la page correspondante n\'existe pas, un \'?\' est affiché à côté du mot.', owner = 'AdminTela', user = 'WikiNiInstaller', time = now(), latest = 'Y'");
    } // end of member function creation_tables

    /**
     * 
     *
     * @param string prefixe Le préfixe des tables à supprimer
     * @return void
     * @access public
     */
    function suppression_tables( $prefixe )
    {
        $resultat = $this->_db->query("DROP TABLE ".$prefixe."_acls ,".$prefixe."_links ,".$prefixe."_pages ,".
                    $prefixe."_referrers ,".$prefixe."_users") ;
        if (DB::isError ($resultat)) {
            echo ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
        }
    } // end of member function suppression_tables





} // end of gestion_wikini
?>