/branches/livraison_menes/fichier_attache.php |
---|
New file |
0,0 → 1,98 |
<?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: fichier_attache.php,v 1.1 2006-04-19 13:51:57 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Fichier pour afficher les pièces jointes |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// A faire |
include_once 'configuration/projet.config.inc.php' ; |
include_once ('classes/ezmlmAccessObject.class.php') ; |
include_once 'Mail/mimeDecode.php' ; |
$num_rep = array_shift ($actionargs) ; |
$num_message = array_shift($actionargs) ; |
$xml_parser = &new ezmlmAccessObject('message', PROJET_DOMAINE_LISTE, |
$nom_liste, $GLOBALS['lang']) ; |
$xml_parser->setIdMessage($num_rep, $num_message) ; |
$xml_parser->load(); |
ob_start (); |
$xml_parser->parse() ; |
$mail = ob_get_contents() ; |
ob_end_clean(); |
/* |
$mail = file_get_contents (PROJET_CHEMIN_LISTES.PROJET_DOMAINE_LISTE.'/'.$nom_liste.'/'.'archive/'.$num_rep.'/'.$num_message) ; |
*/ |
$decodeur = new Mail_mimeDecode($mail) ; |
$mailDecode = $decodeur->decode(array ('decode_bodies' => 'true', 'include_bodies' => 'true')) ; |
//var_dump ($mailDecode) ; |
function getParts(&$part, $num_part) { |
$part = $part->parts[$num_part] ; |
return $part ; |
} |
for ($i = 0; $i < count ($actionargs); $i++) { |
$part = getParts($mailDecode, $actionargs[$i]) ; |
} |
$content_type = $part->ctype_primary.'/'.$part->ctype_secondary ; |
// Certain fichiers attaché n'ont pas de ctype_primary et ctype_secondary |
if ($content_type == '/') { |
$content_type = $part->content_type; |
} |
$nom_du_fichier = isset($part->d_parameters['filename']) ? $part->d_parameters['filename'] : $part->ctype_parameters['name'] ; |
//echo $content_type ; |
header('Expires: Wen, 01 Dec 1999 01:00:00 GMT');// Date du passé |
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');// toujours modifié |
header('Cache-Control: Public');// HTTP/1.1 |
header ('Content-Type: '.$content_type."\r\n") ; |
header("Content-Length: ".strlen($part->body).";\r\n"); |
header ('Content-Disposition: attachment; filename="'.$nom_du_fichier.'"'."\r\n"); |
header('Content-Transfer-Encoding: '.$part->content-transfer-encoding); |
echo $part->body ; |
exit(0) ; |
?> |
/branches/livraison_menes/projet.css |
---|
New file |
0,0 → 1,12 |
/* |
+----------------------------------------------------------------------------+ |
| projets.css | |
+----------------------------------------------------------------------------+ |
| Copyright (c) 2004 Tela Botanica | |
+----------------------------------------------------------------------------+ |
| Feuille de style specifique a l'application projet de Tela Botanica | |
+----------------------------------------------------------------------------+ |
| Auteur : Tamara LE BOURG <tamara@tela-botanica.org> | |
| Alexandre Granier <alexandre@tela-botanica.org> | |
+----------------------------------------------------------------------------+ |
*/ |
/branches/livraison_menes/projet.desinscription.inc.php |
---|
New file |
0,0 → 1,70 |
<?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 Lesser 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 | |
// | Lesser General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU Lesser 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: projet.desinscription.inc.php,v 1.2 2006-04-19 13:52:54 alexandre_tb Exp $ |
/** |
* Inscription |
* |
* Le fichier de désinscription de projet, appelé par l'inscription |
* en cas de désinscription d'un utilisateur |
* |
*@package projet |
//Auteur original : |
*@author Alexandre GRANIER <alexandre@tela-botanica.org> |
*@copyright Tela-Botanica 2000-2006 |
*@version $Revision: 1.2 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// On récupère id_utilisateur, l'identifiant de la personne qui se désinscrit |
// On se trouve dans la fonction afficherContenuCorps de inscription.php |
include_once 'client/projet/configuration/projet.config.inc.php' ; |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$participant = new participe($GLOBALS['ins_db']) ; |
$tableau_projet = projet::getTousLesProjets($GLOBALS['ins_db']) ; |
// On boucle sur chaque projet et on désinscrit l'utilisateur |
foreach ($tableau_projet as $projet) { |
// Le statut 4 désinscrit l'utilisateur, dans la méthode setStatut |
$participant->setStatut(4, $id_utilisateur, $projet->getId()) ; |
$projet->getListesAssociees() ; |
if ($projet->avoirListe()) { |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
$annuaire = new annuaire($this->_db, array('identifiant' => PROJET_CHAMPS_ID, 'mail' => PROJET_CHAMPS_MAIL, 'table' => PROJET_ANNUAIRE)) ; |
$annuaire->setId($id_utilisateur) ; |
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ; |
$desinscription= new inscription_liste($GLOBALS['ins_db']) ; |
$desinscription->desinscrireUtilisateur($annuaire, $projet->_listes_associes[0]) ; |
} |
} |
?> |
/branches/livraison_menes/cartouche_arbre_date2.php |
---|
New file |
0,0 → 1,256 |
<? |
//le cartouche |
$fichier_arbre="appli_arbre_date.php"; //c'est le lien du cartouche... |
$req_nb_forum_tela=mysql_query("select NB_MESSAGES,NB_ABONNES,NUM_SEM from $nom_table_tela order by NUM_SEM"); |
$nbrestela=mysql_num_rows($req_nb_forum_tela); |
$nb_forum_tela_mess =mysql_result($req_nb_forum_tela,($nbrestela-1),NB_MESSAGES); |
$nb_forum_tela_ab =mysql_result($req_nb_forum_tela,($nbrestela-1),NB_ABONNES); |
//$nb_forum_tela_ab=0; |
//$nb_forum_tela_mess=0; |
$nb_total_mess=$nb_total_mess+$nb_forum_tela_mess; |
$nb_total_abon=$nb_total_abon+$nb_forum_tela_ab; |
//AFFICHAGE DU CARTOUCHE |
echo" |
<tr> |
<td> |
<center> |
<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\" |
width=\"515\"> |
<tr> |
<td width=\"511\" bordercolor=\"#000000\" colspan=\"2\" |
bgcolor=\"#000000\"> |
<p align=\"center\"> |
<b><font face=\"Arial, Helvetica, sans-serif\" |
color=\"#FFCC00\">$nom_graph</font><BR><font color=#ff0000 size=2>Semaine $num_sem $blabla_thema</font></b> |
</p> |
</td> |
</tr> |
<tr> |
<td width=\"315\" bordercolor=\"#000000\" valign= |
\"middle\"> |
<p align=\"left\"> |
<font face=\"Arial, Helvetica, sans-serif\" |
size=\"1\"><b>Couleur de la feuille :</b> |
Fonction du nombre de messages de la |
semaine</font> |
</p> |
<center> |
<table border=\"0\" cellspacing=\"0\" |
cellpadding=\"0\"> |
<tr> |
<td width=\"10%\" bgcolor=\"#279C27\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#1C6C1C\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#175917\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#114411\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#768000\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#CCCC00\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#FFCC00\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#DD8D22\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#FF6600\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#CC3300\"> |
<p align=\"center\"> |
</p> |
</td> |
</tr> |
<tr> |
<td width=\"50%\" colspan=\"5\" bgcolor= |
\"#000000\"> |
<p align=\"left\"> |
<font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"4\" color=\"#FFFFFF\"><b>-</b></font> |
</p> |
</td> |
<td width=\"50%\" colspan=\"5\" bgcolor= |
\"#000000\"> |
<p align=\"right\"> |
<font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"4\" color=\"#FFFFFF\"><b>+</b></font> |
</p> |
</td> |
</tr> |
</table> |
</center> |
<p align=\"left\"> |
<font face=\"Arial, Helvetica, sans-serif\" |
size=\"1\"><b>Taille de la branche :</b> |
Fonction du nombre de messages</font><br> |
<font face=\"Arial, Helvetica, sans-serif\" |
size=\"1\"><b>Position sur le tronc :</b> |
Fonction de la date de |
création</font> |
</p> |
<font face=\"Arial, Helvetica, sans-serif\" size= |
\"1\">LIENS<br> |
Nom du forum : $texte_lien_branche<br> |
Nombre : $texte_lien_puce<br> |
Feuille : $texte_lien_feuille<br> |
</font> |
</td> |
<td width=\"194\" bordercolor=\"#000000\"> |
<center> |
<table border=\"0\" cellspacing=\"0\" |
cellpadding=\"0\" width=\"158\" bgcolor= |
\"#000000\"> |
<tr> |
<td width=\"106\"> |
<font face= |
\"Arial, Helvetica, sans-serif\" color= |
\"#FFFFFF\"><b><font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"2\">T</font><font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"2\">otal |
abonnés</font> </b></font> |
</td> |
<td width=\"48\"> |
<center> |
<font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"2\" color= |
\"#FFFFFF\">$nb_total_abon</font> |
</center> |
</td> |
</tr> |
<tr> |
<td width=\"106\"> |
<font face= |
\"Arial, Helvetica, sans-serif\" size=\"2\" |
color=\"#FFFFFF\"><b>Total |
messages</b></font> |
</td> |
<td width=\"48\"> |
<center> |
<font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"2\" color= |
\"#FFFFFF\">$nb_total_mess</font> |
</center> |
</td> |
</tr> |
</table> |
</center> |
<p> |
</p> |
<center> |
<table> |
<tr> |
<td width=\"113\"> |
<form method=\"POST\" action= |
\"document.php?project=$project&locale=&doc=".$DOCrow->D_NAME."&set=$set&page=$pageNdx&thema=$thema&fichier_arbre=".$fichier_arbre."\"> |
<p> |
<select name=\"num_sem\"><option selected value=\"2\">num"; |
//requete d'affichage des semaines dans le select |
$req_sem = mysql_query("select NUM_SEM from $nom_table_tela order by NUM_SEM desc"); |
$nb_req_sem = mysql_num_rows($req_sem); |
$nb_sem_max = mysql_result($req_sem,0,0); |
for($i=0;$i<$nb_req_sem-1;$i++) |
{ |
$num = mysql_result($req_sem,$i,0); |
echo"<option value=\"$num\""; |
if ($num_sem == $num) echo " selected"; |
echo ">$num"; |
} |
echo" |
</option> |
</select> |
<input type=image src=Local/arbre/valider.gif></p> |
</form> |
"; |
//calcul semaine precedente |
$num_sem_prec=$num_sem-1; |
if ($num_sem_prec!=1): |
echo"<a href=document.php?project=$project&locale=&doc=".$DOCrow->D_NAME."&set=$set&page=$pageNdx&fichier_arbre=".$fichier_arbre."&num_sem=$num_sem_prec&thema=$thema><img border=\"0\" src=\"Local/arbre/fleche_gauche.gif\" width=\"20\" height=\"16\"></a>"; |
endif; |
echo"sem. $num_sem"; |
//calcul semaine suivante |
$num_sem_suiv=$num_sem+1; |
if ($num_sem_suiv <= $nb_sem_max): |
echo"<a href=document.php?project=$project&locale=&doc=".$DOCrow->D_NAME."&set=$set&page=$pageNdx&fichier_arbre=".$fichier_arbre."&num_sem=$num_sem_suiv&thema=$thema><img border=\"0\" src=\"Local/arbre/fleche_droite.gif\" width=\"20\" height=\"16\"></a>"; |
endif; |
echo" |
</td> |
</tr> |
</table> |
</center> |
<table border=\"0\" cellspacing=\"0\" cellpadding= |
\"0\" width=\"182\"> |
<tr> |
<td width=\"176\" colspan=\"3\"> |
<p align=\"center\"> |
<font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"2\"><b>Evolution de l'arbre</b><br> |
<font size=\"1\">Choisissez la semaine a |
laquelle vous voulez voir |
l'arbre</font></font> |
</p> |
</td> |
</tr> |
<tr> |
<td width=\"34\"> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</center> |
</td> |
</tr>"; |
mysql_free_result($req_nb_forum_tela); |
mysql_free_result($req_sem); |
?> |
/branches/livraison_menes/fonctions2.php3 |
---|
New file |
0,0 → 1,195 |
<? |
/* ***************************** classe arbre *********************************** |
* class permettant la creation d'un arbre, elle est fonctionnelle en tant que module |
* de gsite (www.gsite.org). |
* L'arbre peut servir de representation graphique de donnees statistiques. |
* Copyright 2001 Tela Botanica |
* Auteurs : Daniel Mathieu, Nicolas Touillaud, Alexandre Granier |
* Cette bibliothèque est libre, vous pouvez la redistribuer et/ou la modifier |
* selon les termes de la Licence Publique Générale GNU publiée par la |
* Free Software Foundation. |
* Cette bibliothèque est distribuée car potentiellement utile, mais SANS |
* AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de |
* commercialisation ou d'adaptation dans un but spécifique. |
* |
************************************************************************************/ |
include('php/frame/arbre/tailles.php3'); |
//recuperation des noms de table |
$nom_table_index = "AGORA" ; |
$nom_table_tela = "AGO_TELA_BOTANICAE" ; |
global $GS_GLOBAL ; |
mysql_select_db($GS_GLOBAL['mysql_db'],$GS_GLOBAL['link']) ; |
$tables = mysql_query("select AGO_A_NOMGRP from agora where ((AGO_A_VISIBLE=1) and (AGO_A_NOMGRP <> \"tela-botanicae\"))"); |
$nbtables_dessin = mysql_num_rows($tables); |
mysql_free_result($tables); |
$hauteur=$yfait; |
//verification si il y a des listes a afficher |
if ($nbtables_dessin==""):{$nbdroite=0;} |
else : {$nbdroite=(round($nbtables_dessin/2))+1;} |
endif; |
function calc_xref_branche($xres_,$xfeuille_, $xtronc_) |
//calcule la taille de reference des branches |
{ |
//global $xres, $xfeuille, $xtronc; |
$toto=round(($xres_-$xtronc_-(2*$xfeuille_))/2); |
return $toto; |
} |
//****************************************************** |
// calcule l'espace vertical entre 2 branche d'un meme coté: si il n'y a pas la place -> 12 pixels |
function calc_esver() |
{ |
global $nbdroite ; |
if ($nbdroite != 1): |
{ |
global $yres, $yfait, $yracine, $ybranche, $nbdroite; |
$toto=($yres-$yfait-$yracine-($nbdroite*$ybranche))/($nbdroite-1); |
if($toto<0):{$toto=12;} //on ne se place plus sur 1 ecran mais sur plus |
endif; |
return $toto; |
} |
else:{return 0;} |
endif; |
} |
//****************************************************** |
$esver=calc_esver(); |
//****************************************************** |
//calcul la position en x de la branche |
function calcul_x_branche($adroite,$xreel) |
{ |
global $xres, $xtronc, $xref_branche; |
$tempx=($xres+$xtronc)/2-2; //pour un bug |
if($adroite != 1): |
{ |
$tempx=$tempx+2-$xtronc-($xreel); |
} |
endif; |
return round($tempx); |
} |
//****************************************************** |
//Il est impératif d'afficher 1 branche d'un coté, puis de l'autre etc.. |
//****************************************************** |
//retourne la position y de la branche (et de la feuille) et met à jour la hauteur de la prochaine branche |
function calcul_y_branche() |
{ |
global $esver, $hauteur, $ybranche; |
$toto=$hauteur; |
$hauteur=$hauteur+(($ybranche+$esver)/2); |
return $toto; |
} |
//****************************************************** |
//****************************************************** |
//retourne la position x du tronc |
function x_tronc() |
{ |
global $xtronc, $xres; |
return ($xres-$xtronc)/2; |
} |
//****************************************************** |
//****************************************************** |
//retourne la position y du tronc |
function y_tronc() |
{ |
global $yfait; |
return ($yfait); |
} |
//****************************************************** |
//****************************************************** |
// retourne la position x de la racine |
function x_racine() |
{ |
global $xracine, $xres; |
return ($xres-$xracine)/2; |
} |
//****************************************************** |
//****************************************************** |
//retourne la taille du tronc en pixels |
function taille_tronc() |
{ |
global $nbdroite, $esver, $ybranche; |
$toto=($nbdroite-1)*$esver+($nbdroite*$ybranche); |
return $toto; |
} |
//****************************************************** |
//****************************************************** |
//retourne la position x de la feuille en fonction des param de la branche |
function calcul_x_feuille($adroite, $pos_branche, $xreel_brch) //xreel en % |
{ |
global $xref_branche, $xfeuille; |
if($adroite !=1): |
{ |
$toto=$pos_branche-$xfeuille; |
} |
else: |
{ |
$toto=$pos_branche+($xreel_brch); |
} |
endif; |
return $toto; |
} |
//****************************************************** |
//****************************************************** |
// retourne la position y de la racine |
function y_racine() |
{ |
global $yfait; |
$toto=$yfait+taille_tronc(); |
return $toto; |
} |
//****************************************************** |
//****************************************************** |
//met 1 à 0 et inversement |
function dg($dte) |
{ |
if($dte==1):{return 0;} |
else:{return 1;} |
endif; |
} |
//****************************************************** |
//****************************************************** |
//une fonction qui prend le % de vert *100 et qui sort la chaine html du vert correspondant |
function couleur_f($prc) |
{ |
if ($prc==0) return ("#279C27"); |
if (($prc>0) && ($prc<=16)) return ("#279C27"); |
if (($prc>16) && ($prc<=32)) return ("#CCCC00"); |
if (($prc>32) && ($prc<=48)) return ("#FFCC00"); |
if (($prc>48) && ($prc<=64)) return ("#DD8D22"); |
if (($prc>64) && ($prc<=80)) { |
return "#FF6600" ; |
} else { |
return "#CC3300" ; |
} |
} |
//***************************************************** |
//une fonction qui détermine si un entier est pair ou non |
function est_pair($un_entier) |
{ |
return(($un_entier %2)==0); |
} |
?> |
/branches/livraison_menes/ago_connection.php3 |
---|
New file |
0,0 → 1,10 |
<? |
$dbhostname = "localhost"; |
/* hôte de la base de données */ |
$dbwho = "botanica"; |
/* utilisateur */ |
$dbpass = "zs24ub7y"; |
/* mot de passe utilisateur */ |
$dbnamedb = "TELA"; |
/* nom de la base où sont les données */ |
?> |
/branches/livraison_menes/langues/pro_langue_en.inc.php |
---|
New file |
0,0 → 1,150 |
<?php |
/* +-----------------------------------------------------------------------+ |
* |pro_langue_en.inc.php | |
* +-----------------------------------------------------------------------+ |
* | Copyright (c) 2001 - 2004 Tela Botanica | |
* +-----------------------------------------------------------------------+ |
* | Module projet, permet la création de projet, avec une gestion de la | |
* | propriétés des documents... | |
* +-----------------------------------------------------------------------+ |
* | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
* +-----------------------------------------------------------------------+ |
* $Id: pro_langue_en.inc.php,v 1.3 2005-09-28 16:29:39 ddelon Exp $ |
*/ |
// ========== Partie concernant la description su projet ================================= |
define ("PROJET_ALERTE_TITRE", "The title field must be filled in") ; |
define ("PROJET_DECONNEXION", "Sign off") ; |
define ("PROJET_ADMINISTRATION", "Administration") ; |
define ("PROJET_ADMINISTRATEUR", "Administrator") ; |
define ("PROJET_NOUVEAU_PROJET", "New project") ; |
define ("PROJET_DESTRUCTION_PROJET", "Cancel a project") ; |
define ("PROJET_GESTION_UTILISATEUR", "Users administration") ; |
define ("PROJET_NOUVEAU_UTILISATEUR", "New user") ; |
define ("PROJET_MOD_UTILISATEUR", "User modification") ; |
define ("PROJET_DESTRUCTION_UTILISATEUR", "Delete a user") ; |
define ("PROJET_GERER", "Administrate") ; |
define ("PROJET_GERER_FICHIER", "Files administration") ; |
define ("PROJET_VOIR_PROJET", "To see the project") ; |
define ("PROJET_VOIR_FICHIER", "See files") ; |
define ("PROJET_PRENOM", "First name") ; |
define ("PROJET_MAIL", "E-mail") ; |
define ("PROJET_LABEL_PAYS", "Country") ; |
define ("PROJET_DATE_INSCRIPTION", "Registration date") ; |
define ("PROJET_STATUT", "Status") ; |
define ("PROJET_CHEF", "Coordinator") ; |
define ("PROJET_PAS_D_INSCRIT", "No registered user") ; |
define ("PROJET_PARTICIPER", "Projects you are participating in") ; |
define ("PROJET_VOUS_PARTICIPEZ", "you are participating in") ; |
define ("PROJET_TOUS", "all projects.") ; |
define ("PROJET_PROJETS", "projects") ; |
define ("PROJET_VOTRE_STATUT", "Your status") ; |
define ("PROJET_ACTION", "Action") ; |
define ("PROJET_DESTRUCTION_LAIUS", "The cancellation of a project implies the end of all the rights of its". |
"users, as well as the links with other projects.") ; |
define ("PROJET_DESTRUCTION_EFFECTUEE", "Cancellation done") ; |
define ("PROJET_GESTION_PROJET", "Project administration") ; |
define ("PROJET_EN_TANT_QUE", "As") ; |
define ("PROJET_INTERVENIR", "You can take part in the following items") ; |
define ("PROJET_PROPRIETES", "Project ownership") ; |
define ("PROJET_SELECTIONNER", "Select a target directory") ; |
define ("PROJET_PB_COPIE", "A problem has been encountered while copying") ; |
define ("PROJET_RETABLISSEMENT", "Restoration of the data base") ; |
define ("PROJET_RETBLISSEMENT_EFFECTUE", "Restoration done. You can try again.") ; |
define ("PROJET_METTRE_FICHIER", "Publish a file on line") ; |
define ("PROJET_CREER_REP", "Create a directory") ; |
define ("PROJET_FICHIERS_ASSOCIES", "Files associated to this project") ; |
define ("PROJET_FICHIERS_NOM", "Name") ; |
define ("PROJET_FICHIERS_CREE_LE", "Created on the") ; |
define ("PROJET_FICHIERS_PAR", "By") ; |
define ("PROJET_FICHIERS_TAILLE", "Size") ; |
define ("PROJET_RACINE", "Usenet hierarchy") ; |
define ("PROJET_FICHIERS_VISIBILITE", "Visibility") ; |
define ("PROJET_FICHIERS_ACTION", "Action") ; |
define ("PROJET_LEGENDE", "Legend") ; |
define ("PROJET_LEGENDE_DEPLACE", "Move a file") ; |
define ("PROJET_LEGENDE_MODIFIE", "Modify the informations of a document") ; |
define ("PROJET_LEGENDE_SUPPR", "Delete a file") ; |
define ("PROJET_EMAIL", "E-mail") ; |
define ("PROJET_MOT_DE_PASSE", "Password") ; |
define ("PROJET_TEXTE_PERDU", "If you forgot your password, enter your e-mail address in the Login ". |
"field below and click on Validate"); |
// ========== Partie concernant l'upload de fichier ================================= |
define ("PROJET_DOCUMENT_DU_PROJET", "Project document") ; |
define ("PROJET_FICHIER_MISE_EN_LIGNE", "Publish a file online, step 1") ; |
define ("PROJET_FICHIER_NOM_DOCUMENT", "Name of the document") ; |
define ("PROJET_FICHIER_NOM_DOCUMENT_EXPLICATION", "Enter an explicit name since it will correspond to the text giving ". |
"access to the file with a click.") ; |
define ("PROJET_FICHIER_DESCRIPTION", "Description") ; |
define ("PROJET_FICHIER_PUBLIC", "All type of users") ; |
define ("PROJET_FICHIER_PRIVEE", "Project only") ; |
define ("PROJET_FICHIER_LE_FICHIER", "The file") ; |
define ("PROJET_FICHIER_CONTINUER", "Continue") ; |
define ("PROJET_FICHIER_MISE_EN_LIGNE_2", "Publish a file online, step 2") ; |
define ("PROJET_FICHIER_LABEL", "Label") ; |
define ("PROJET_FICHIER_TYPE", "Type") ; |
define ("PROJET_FICHIER_TRANSFERT_T", "File transfer done...") ; |
define ("PROJET_FICHIER_VALIDER", "Validate") ; |
define ("PROJET_FICHIER_MODIFIER", "MODIFY-") ; |
define ("PROJET_FICHIER_COLLER", "PASTE") ; |
define ("", "CANCEL") ; |
// Directory creation |
define ("PROJET_REP", "Project directory") ; |
define ("PROJET_REP_CREER", "Creation of a new directory") ; |
define ("PROJET_REP_MODIFIER", "Modification of a directory") ; |
define ("PROJET_REP_SUPPRIMER", "Are you sure you want to delete this directory.") ; |
// ========== Partie concernant les wikini =========================================== |
define ('PROJET_ASSOCIER_WIKI', 'Associer un wikini') ; |
define ("PROJET_WIKINI_POSSEDE", "This project has a wiki site") ; |
define ("PROJET_WIKINI_ALLER", "Go on the wiki site") ; |
define ("PROJET_WIKINI_SUPPRIMER", "Supress wiki ") ; |
define ("PROJET_WIKINI_CHOISIR_NOM", "Choose a name for the wiki") ; |
define ("PROJET_WIKINI_NOM_EXPLICATION", "The name has to be in wiki format, this means without accents, without ". |
"spaces and with at least two capital letters. ex MyProject.") ; |
define ("PROJET_WIKINI_NOM_INVALIDE", "This is not a valid wiki name") ; |
define ("PROJET_WIKINI_NOM_EXISTE", "This wiki name already exists!") ; |
define ("PROJET_LISTE_PARTICIPANT", "Participants list") ; |
define ("PROJET_LISTE_PARTICIPANT_LAIUS", "As project manager you are allowed to modify the status of the ". |
"participants or unsubscribe them if necessary.<br /> ". |
"Attention! this action can have some consequences...<br /> ". |
"As project manager, you cannot modify your own status. If you wish to ". |
"leave this function, ask the system administrator. "); |
define ("PROJET_DESINSCRIRE_SUR", "Are you sure you want to unsubscribe?") ; |
// ========== Labels pour projet_liste =========================================== |
define ("PROJET_LISTE", "Projects list") ; |
define ("PROJET_NOMBRE_EN_COURS", "Number of projects in progress") ; |
// ========== Labels pour projet_inscription =========================================== |
define ("PROJET_PROJET", "Project") ; |
define ("PROJET_VOTRE_STATUT", "Your status") ; |
define ("BAZ_EST_INSCRIT_COMME", "is registered as") ; |
define ("BAZ_PAS_INSCRIT", "is not registered for this project") ; |
define ("BAZ_JE_SOUHAITE", "I want to be a member of the project's team") ; |
define ("BAZ_INSCRIT_CONTRIBUTEUR", "I want to be an active member in this project") ; |
define ("BAZ_INSCRIT_OBSERVATEUR", "I want to be an observer in this project") ; |
define ("BAZ_LAIUS_CONTRIBUTEUR", "Active members work in collaboration with the project manager and with members of the team. They appear as co-author of resulting achievements.") ; |
define ("BAZ_LAIUS_OBSERVATEUR", "If you do not have the opportunity or skills to be an active member, you can still register as an observer in order to bring your own personal remarks throughout the steps of the project. However you will not be considered as co-author.") ; |
define ("BAZ_INSCRIT_SUPPRIMER", "I don't want to be part of the project team") ; |
define ("BAZ_LAIUS_DESINSCRIPTION", "You do not wish to be part of the project team. You can still register in the future.") ; |
define ("BAZ_VALIDER", "Update changes") ; |
define ("BAZ_ANNULER", "Cancel") ; |
define ("BAZ_RETOUR_LISTE", "Back to project list") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_SUJET", "I-Jumelage : une personne souhaite s'inscrire à un projet ") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_CORPS_1", "La personne avec le mail suivant :\n") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_CORPS_2", "\nsouhaite s'inscrire au projet : \n") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_CORPS_3", "\nEn tant que coordinateur, vous devez modérer cette inscription.") ; |
define ("BAZ_DEMANDE_INSCRIPTION_PRISE_EN_COMPTE", "Votre demande d'inscription a ét;é transmise aux coordinateurs du projet") ; |
?> |
/branches/livraison_menes/langues/pro_langue_pt.inc.php |
---|
New file |
0,0 → 1,150 |
<?php |
/* +-----------------------------------------------------------------------+ |
* |pro_langue_en.inc.php | |
* +-----------------------------------------------------------------------+ |
* | Copyright (c) 2001 - 2004 Tela Botanica | |
* +-----------------------------------------------------------------------+ |
* | Module projet, permet la création de projet, avec une gestion de la | |
* | propriétés des documents... | |
* +-----------------------------------------------------------------------+ |
* | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
* +-----------------------------------------------------------------------+ |
* $Id: pro_langue_pt.inc.php,v 1.3 2005-09-28 16:29:39 ddelon Exp $ |
*/ |
// ========== Partie concernant la description su projet ================================= |
define ("PROJET_ALERTE_TITRE", "The title field must be filled in") ; |
define ("PROJET_DECONNEXION", "Sign off") ; |
define ("PROJET_ADMINISTRATION", "Administration") ; |
define ("PROJET_ADMINISTRATEUR", "Administrator") ; |
define ("PROJET_NOUVEAU_PROJET", "New project") ; |
define ("PROJET_DESTRUCTION_PROJET", "Cancel a project") ; |
define ("PROJET_GESTION_UTILISATEUR", "Users administration") ; |
define ("PROJET_NOUVEAU_UTILISATEUR", "New user") ; |
define ("PROJET_MOD_UTILISATEUR", "User modification") ; |
define ("PROJET_DESTRUCTION_UTILISATEUR", "Delete a user") ; |
define ("PROJET_GERER", "Administrate") ; |
define ("PROJET_GERER_FICHIER", "Files administration") ; |
define ("PROJET_VOIR_PROJET", "To see the project") ; |
define ("PROJET_VOIR_FICHIER", "See files") ; |
define ("PROJET_PRENOM", "First name") ; |
define ("PROJET_MAIL", "E-mail") ; |
define ("PROJET_LABEL_PAYS", "Country") ; |
define ("PROJET_DATE_INSCRIPTION", "Registration date") ; |
define ("PROJET_STATUT", "Status") ; |
define ("PROJET_CHEF", "Coordinator") ; |
define ("PROJET_PAS_D_INSCRIT", "No registered user") ; |
define ("PROJET_PARTICIPER", "Projects you are participating in") ; |
define ("PROJET_VOUS_PARTICIPEZ", "you are participating in") ; |
define ("PROJET_TOUS", "all projects.") ; |
define ("PROJET_PROJETS", "projects") ; |
define ("PROJET_VOTRE_STATUT", "Your status") ; |
define ("PROJET_ACTION", "Action") ; |
define ("PROJET_DESTRUCTION_LAIUS", "The cancellation of a project implies the end of all the rights of its". |
"users, as well as the links with other projects.") ; |
define ("PROJET_DESTRUCTION_EFFECTUEE", "Cancellation done") ; |
define ("PROJET_GESTION_PROJET", "Project administration") ; |
define ("PROJET_EN_TANT_QUE", "As") ; |
define ("PROJET_INTERVENIR", "You can take part in the following items") ; |
define ("PROJET_PROPRIETES", "Project ownership") ; |
define ("PROJET_SELECTIONNER", "Select a target directory") ; |
define ("PROJET_PB_COPIE", "A problem has been encountered while copying") ; |
define ("PROJET_RETABLISSEMENT", "Restoration of the data base") ; |
define ("PROJET_RETBLISSEMENT_EFFECTUE", "Restoration done. You can try again.") ; |
define ("PROJET_METTRE_FICHIER", "Publish a file on line") ; |
define ("PROJET_CREER_REP", "Create a directory") ; |
define ("PROJET_FICHIERS_ASSOCIES", "Files associated to this project") ; |
define ("PROJET_FICHIERS_NOM", "Name") ; |
define ("PROJET_FICHIERS_CREE_LE", "Created on the") ; |
define ("PROJET_FICHIERS_PAR", "By") ; |
define ("PROJET_FICHIERS_TAILLE", "Size") ; |
define ("PROJET_RACINE", "Usenet hierarchy") ; |
define ("PROJET_FICHIERS_VISIBILITE", "Visibility") ; |
define ("PROJET_FICHIERS_ACTION", "Action") ; |
define ("PROJET_LEGENDE", "Legend") ; |
define ("PROJET_LEGENDE_DEPLACE", "Move a file") ; |
define ("PROJET_LEGENDE_MODIFIE", "Modify the informations of a document") ; |
define ("PROJET_LEGENDE_SUPPR", "Delete a file") ; |
define ("PROJET_EMAIL", "E-mail") ; |
define ("PROJET_MOT_DE_PASSE", "Password") ; |
define ("PROJET_TEXTE_PERDU", "If you forgot your password, enter your e-mail address in the Login ". |
"field below and click on Validate"); |
// ========== Partie concernant l'upload de fichier ================================= |
define ("PROJET_DOCUMENT_DU_PROJET", "Project document") ; |
define ("PROJET_FICHIER_MISE_EN_LIGNE", "Publish a file online, step 1") ; |
define ("PROJET_FICHIER_NOM_DOCUMENT", "Name of the document") ; |
define ("PROJET_FICHIER_NOM_DOCUMENT_EXPLICATION", "Enter an explicit name since it will correspond to the text giving ". |
"access to the file with a click.") ; |
define ("PROJET_FICHIER_DESCRIPTION", "Description") ; |
define ("PROJET_FICHIER_PUBLIC", "All type of users") ; |
define ("PROJET_FICHIER_PRIVEE", "Project only") ; |
define ("PROJET_FICHIER_LE_FICHIER", "The file") ; |
define ("PROJET_FICHIER_CONTINUER", "Continue") ; |
define ("PROJET_FICHIER_MISE_EN_LIGNE_2", "Publish a file online, step 2") ; |
define ("PROJET_FICHIER_LABEL", "Label") ; |
define ("PROJET_FICHIER_TYPE", "Type") ; |
define ("PROJET_FICHIER_TRANSFERT_T", "File transfer done...") ; |
define ("PROJET_FICHIER_VALIDER", "Validate") ; |
define ("PROJET_FICHIER_MODIFIER", "MODIFY-") ; |
define ("PROJET_FICHIER_COLLER", "PASTE") ; |
define ("", "CANCEL") ; |
// Directory creation |
define ("PROJET_REP", "Project directory") ; |
define ("PROJET_REP_CREER", "Creation of a new directory") ; |
define ("PROJET_REP_MODIFIER", "Modification of a directory") ; |
define ("PROJET_REP_SUPPRIMER", "Are you sure you want to delete this directory.") ; |
// ========== Partie concernant les wikini =========================================== |
define ('PROJET_ASSOCIER_WIKI', 'Associer un wikini'); |
define ("PROJET_WIKINI_POSSEDE", "This project has a wiki site") ; |
define ("PROJET_WIKINI_ALLER", "Go on the wiki site") ; |
define ("PROJET_WIKINI_SUPPRIMER", "Supress wiki ") ; |
define ("PROJET_WIKINI_CHOISIR_NOM", "Choose a name for the wiki") ; |
define ("PROJET_WIKINI_NOM_EXPLICATION", "The name has to be in wiki format, this means without accents, without ". |
"spaces and with at least two capital letters. ex MyProject.") ; |
define ("PROJET_WIKINI_NOM_INVALIDE", "This is not a valid wiki name") ; |
define ("PROJET_WIKINI_NOM_EXISTE", "This wiki name already exists!") ; |
define ("PROJET_LISTE_PARTICIPANT", "Participants list") ; |
define ("PROJET_LISTE_PARTICIPANT_LAIUS", "As project manager you are allowed to modify the status of the ". |
"participants or unsubscribe them if necessary.<br /> ". |
"Attention! this action can have some consequences...<br /> ". |
"As project manager, you cannot modify your own status. If you wish to ". |
"leave this function, ask the system administrator. "); |
define ("PROJET_DESINSCRIRE_SUR", "Are you sure you want to unsubscribe?") ; |
// ========== Labels pour projet_liste =========================================== |
define ("PROJET_LISTE", "Projects list") ; |
define ("PROJET_NOMBRE_EN_COURS", "Number of projects in progress") ; |
// ========== Labels pour projet_inscription =========================================== |
define ("PROJET_PROJET", "Project") ; |
define ("PROJET_VOTRE_STATUT", "Your status") ; |
define ("BAZ_EST_INSCRIT_COMME", "is registered as") ; |
define ("BAZ_PAS_INSCRIT", "is not registered for this project") ; |
define ("BAZ_JE_SOUHAITE", "I want to be a member of the project's team") ; |
define ("BAZ_INSCRIT_CONTRIBUTEUR", "I want to be an active member in this project") ; |
define ("BAZ_INSCRIT_OBSERVATEUR", "I want to be an observer in this project") ; |
define ("BAZ_LAIUS_CONTRIBUTEUR", "Active members work in collaboration with the project manager and with members of the team. They appear as co-author of resulting achievements.") ; |
define ("BAZ_LAIUS_OBSERVATEUR", "If you do not have the opportunity or skills to be an active member, you can still register as an observer in order to bring your own personal remarks throughout the steps of the project. However you will not be considered as co-author.") ; |
define ("BAZ_INSCRIT_SUPPRIMER", "I don't want to be part of the project team") ; |
define ("BAZ_LAIUS_DESINSCRIPTION", "You do not wish to be part of the project team. You can still register in the future.") ; |
define ("BAZ_VALIDER", "Update changes") ; |
define ("BAZ_ANNULER", "Cancel") ; |
define ("BAZ_RETOUR_LISTE", "Back to project list") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_SUJET", "I-Jumelage : une personne souhaite s'inscrire à un projet ") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_CORPS_1", "La personne avec le mail suivant :\n") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_CORPS_2", "\nsouhaite s'inscrire au projet : \n") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_CORPS_3", "\nEn tant que coordinateur, vous devez modérer cette inscription.") ; |
define ("BAZ_DEMANDE_INSCRIPTION_PRISE_EN_COMPTE", "Votre demande d'inscription a ét;é transmise aux coordinateurs du projet") ; |
?> |
/branches/livraison_menes/langues/pro_langue_es.inc.php |
---|
New file |
0,0 → 1,128 |
<?php |
/* +-----------------------------------------------------------------------+ |
* |pro_langue_fr.inc.php | |
* +-----------------------------------------------------------------------+ |
* | Copyright (c) 2001 - 2003 Tela Botanica | |
* +-----------------------------------------------------------------------+ |
* | Module projet, permet la création de projet, avec une gestion de la | |
* | propriétés des documents... | |
* +-----------------------------------------------------------------------+ |
* | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
* +-----------------------------------------------------------------------+ |
* $Id: pro_langue_es.inc.php,v 1.3 2005-09-28 16:29:39 ddelon Exp $ |
*/ |
// ========== Partie concernant la description su projet ================================= |
define ("PROJET_ALERTE_TITRE", "pacio titulo no debe estar vacio") ; |
define ("PROJET_DECONNEXION", "Desconectar") ; |
define ("PROJET_ADMINISTRATION", "Aqministracion") ; |
define ("PROJET_ADMINISTRATEUR", "Administrador") ; |
define ("PROJET_NOUVEAU_PROJET", "Nuevo proyecto") ; |
define ("PROJET_DESTRUCTION_PROJET", "Anulacion de un proyecto") ; |
define ("PROJET_GESTION_UTILISATEUR", "Administracion de los usuarios") ; |
define ("PROJET_NOUVEAU_UTILISATEUR", "Nuevo utilizador") ; |
define ("PROJET_MOD_UTILISATEUR", "Cancelacion de un usuario") ; |
define ("PROJET_DESTRUCTION_UTILISATEUR", "Administrar los ficheros") ; |
define ("PROJET_GERER", "Administrar") ; |
define ("PROJET_VOIR_PROJET", "Ver el proyecto") ; |
define ("PROJET_GERER_FICHIERS", "Administrar los ficheros") ; |
define ("PROJET_VOIR_FICHIER", "Ver los ficheros") ; |
define ("PROJET_PRENOM", "Nombre") ; |
define ("PROJET_MAIL", "Correo ") ; |
define ("PROJET_LABEL_PAYS", "Pais") ; |
define ("PROJET_DATE_INSCRIPTION", "Fecha de inscripcion") ; |
define ("PROJET_STATUT", "Estatu") ; |
define ("PROJET_CHEF", "Coordinador") ; |
define ("PROJET_PAS_D_INSCRIT", "Ningun inscritoLos ") ; |
define ("PROJET_PARTICIPER", "proyectos en los cuales Usted participa") ; |
define ("PROJET_VOUS_PARTICIPEZ", "Ustad participa en") ; |
define ("PROJET_TOUS", "todos los proyectos.") ; |
define ("PROJET_DESTRUCTION_LAIUS", "La Anulacion de un proyecto implica la suprecionde todos los derechos de los usuarios de este proyecto, asi como los lazos que los otros proyectos tienen con el.") ; |
define ("PROJET_DESTRUCTION_EFFECTUEE", "Anulacion efectuada") ; |
define ("PROJET_GESTION_PROJET", "Administracion del proyecto") ; |
define ("PROJET_EN_TANT_QUE", "Mientras tanto ") ; |
define ("PROJET_INTERVENIR", "Usted puede intervenir en los items siguientes") ; |
define ("PROJET_PROPRIETES", "Propiedades de un proyecto") ; |
define ("PROJET_ACTION", "Accion") ; |
define ("PROJET_FICHIERS_ASSOCIES", "Los ficheros asociados al proyecto") ; |
define ("PROJET_FICHIERS_NOM", "Nombre") ; |
define ("PROJET_FICHIERS_CREE_LE", "Creado el") ; |
define ("PROJET_FICHIERS_PAR", "Por") ; |
define ("PROJET_FICHIERS_TAILLE", "Tamaño") ; |
define ("PROJET_RACINE", "Raiz") ; |
define ("PROJET_FICHIERS_VISIBILITE", "Visibilidad") ; |
define ("PROJET_METTRE_FICHIER", "Hacer un nuevo fichero") ; |
define ("PROJET_CREER_REP", "Hacer un nuevo agenda") ; |
define ("PROJET_FICHIERS_ACTION", "Accion") ; |
define ("PROJET_LEGENDE", "Explicacion") ; |
define ("PROJET_LEGENDE_DEPLACE", "Mover un fichero") ; |
define ("PROJET_LEGENDE_MODIFIE", "Modificar las informaciones de un documento") ; |
define ("PROJET_LEGENDE_SUPPR", "Cancelar un fichero") ; |
define ("PROJET_EMAIL", "Correo electronico") ; |
define ("PROJET_MOT_DE_PASSE", "Contraseña") ; |
define ("PROJET_TEXTE_PERDU", "Si ha perdido su contraseña, indique su correo electronico en el espaciologin y haga clic en Ingresar") ; |
//================ Partie concernant l'upload de fichier======================================= |
define ("PROJET_DOCUMENT_DU_PROJET", "Documento del proyecto") ; |
define ("PROJET_FICHIER_MISE_EN_LIGNE", "Puesta en linea de un fichero etapa 2") ; |
define ("PROJET_FICHIER_NOM_DOCUMENT", "Sello") ; |
define ("PROJET_FICHIER_DESCRIPTION", "Descripción") ; |
define ("PROJET_FICHIER_PUBLIC", "para todos") ; |
define ("PROJET_FICHIER_PRIVEE", "solo el proyecto") ; |
define ("PROJET_FICHIER_TYPE", "Tipo") ; |
define ("PROJET_FICHIER_TRANSFERT_T", "Transferencia terminada") ; |
define ("PROJET_FICHIER_VALIDER", "Ingresar") ; |
define ("PROJET_FICHIER_MODIFIER", "Modificar") ; |
define ("PROJET_FICHIER_COLLER", "PEGARCANCELAR") ; |
define ("PROJET_FICHIER_LE_FICHIER", "El fichero") ; |
define ("PROJET_FICHIER_NOM_DOCUMENT_EXPLICATION", "Saisissez un nom explicite, il correspond ". |
"au texte sur lequel il faudra cliquer pour accéder au fichier.") ; |
define ("PROJET_FICHIER_CONTINUER", "Continuer") ; |
// Creacion de la agenda |
define ("PROJET_REP", "Hacer de nuevo la agenda del proyecto") ; |
define ("PROJET_REP_CREER", "Hacer un nuevo agenda") ; |
define ("PROJET_REP_MODIFIER", "Modificacion de una agenda ") ; |
define ("PROJET_REP_SUPPRIMER", "esta seguro de cancelar la agenda") ; |
//======= Parte concerniente a los wikis======================================== |
define ('PROJET_ASSOCIER_WIKI', 'Associer un wikini') ; |
define ("PROJET_WIKINI_POSSEDE", "Este proyecto posee un espacio wiki") ; |
define ("PROJET_WIKINI_ALLER", "Ir al wiki") ; |
define ("PROJET_WIKINI_SUPPRIMER", "Cancelar el wiki") ; |
define ("PROJET_WIKINI_CHOISIR_NOM", "Escoja un nombre para el wiki") ; |
define ("PROJET_WIKINI_NOM_EXPLICATION", "El nombre debe estar en formato wiki, es decir, sin acentos, sin espacios ycon al menos dos mayusculas. Ej MiProyecto") ; |
define ("PROJET_WIKINI_NOM_INVALIDE", "Este no es nombre wiki valido") ; |
define ("PROJET_WIKINI_NOM_EXISTE", "Ya existe un wiki con ese nombre!") ; |
define ("PROJET_LISTE_PARTICIPANT", "Lista de los particpantes") ; |
define ("PROJET_LISTE_PARTICIPANT_LAIUS", "Usted es jefe del proyecto. Puede a ese titulo, modificar el estatu de los participantes o desincribirlos en caso de un problema. Cuidado con las consecuencias que esto puede tener...<br />Como jefe del proyecto, Usted no puede modificar su estatu. Si Usted deseaabandonar esta funcion, hay que hacer la solicitud al administrador delsistema ") ; |
//==================== labels pour projet_liste======================================================= |
define ("PROJET_LISTE", "Lista de Proyectos") ; |
define ("PROJET_NOMBRE_EN_COURS", "Numéro de proyectos en curso.") ; |
// ========== Labels pour projet_inscription =========================================== |
define ("PROJET_PROJET", "Proyecto") ; |
define ("PROJET_VOTRE_STATUT", "Votre statut par rapport au projet") ; |
define ("BAZ_EST_INSCRIT_COMME", "est inscrit comme") ; |
define ("BAZ_PAS_INSCRIT", "n'est pas inscrit à ce projet") ; |
define ("BAZ_JE_SOUHAITE", "Je souhaite m'inscrire à ce projet ou modifier mon inscription") ; |
define ("BAZ_INSCRIT_CONTRIBUTEUR", "Je m'inscris comme contributeur au projet") ; |
define ("BAZ_INSCRIT_OBSERVATEUR", "Je m'inscris comme observateur au projet") ; |
define ("BAZ_LAIUS_CONTRIBUTEUR", "Les acteurs d'un projet collaborent activement à sa réalisation en relation avec le chef du projet et l'ensemble des autres membres du projet. Ils ont droit à citation comme co-auteur des travaux réalisés.") ; |
define ("BAZ_LAIUS_OBSERVATEUR", "Si vous manquez de disponibilité ou que vos compétences ne vous permettent pas de travailler activement au projet, vous pouvez cependant suivre son évolution et apporter vos critiques constructives en vous inscrivant comme observateur. Vous ne pourrez pas, normalement, prétendre à être cité comme co-auteur du projet") ; |
define ("BAZ_INSCRIT_SUPPRIMER", "Je supprime mon inscription") ; |
define ("BAZ_LAIUS_DESINSCRIPTION", "Vous ne souhaitez plus, momentanément ou définitivement, participer à ce projet. Vous pourrez vous réinscrire ultérieurement.") ; |
define ("BAZ_VALIDER", "Valider modification") ; |
define ("BAZ_ANNULER", "Annuler") ; |
define ("BAZ_RETOUR_LISTE", "Retourner à la liste des projets") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_SUJET", "I-Jumelage : une personne souhaite s'inscrire à un projet ") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_CORPS_1", "La personne avec le mail suivant :\n") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_CORPS_2", "\nsouhaite s'inscrire au projet : \n") ; |
define ("BAZ_MAIL_DEMANDE_INSCRIPTION_CORPS_3", "\nEn tant que coordinateur, vous devez modérer cette inscription.") ; |
define ("BAZ_DEMANDE_INSCRIPTION_PRISE_EN_COMPTE", "Votre demande d'inscription a ét;é transmise aux coordinateurs du projet") ; |
?> |
/branches/livraison_menes/langues/pro_langue_fr.inc.php |
---|
New file |
0,0 → 1,269 |
<?php |
/* +-----------------------------------------------------------------------+ |
* |pro_langue_fr.inc.php | |
* +-----------------------------------------------------------------------+ |
* | Copyright (c) 2001 - 2003 Tela Botanica | |
* +-----------------------------------------------------------------------+ |
* | Module projet, permet la création de projet, avec une gestion de la | |
* | propriétés des documents... | |
* +-----------------------------------------------------------------------+ |
* | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
* +-----------------------------------------------------------------------+ |
* $Id: pro_langue_fr.inc.php,v 1.14 2006-07-04 09:33:28 alexandre_tb Exp $ |
*/ |
if (file_exists(PROJET_CHEMIN_APPLI.'langues/pro_langue_fr.local.php')) { |
include_once PROJET_CHEMIN_APPLI.'langues/pro_langue_fr.local.php' ; |
} |
// LA liste des projet |
define ('PROJET_TEXTE_NON_IDENTIFIE', 'Vous n\'êtes pas identifié. Identifiez-vous pour accéder à vos projets ou pour vous inscrire aux projet') ; |
define ('PROJET_TEXTE_PARTICIPANT_NON_IDENTIFIE', 'Vous n\'êtes pas identifié. Identifiez-vous pour accéder à la liste des participants') ; |
// ========== Partie concernant la description su projet ================================= |
define ('PROJET_PROJET', 'Projet') ; |
define ("PROJET_ALERTE_TITRE", "Le champs titre ne doit pas être vide") ; |
define ("PROJET_TITRE", "Titre") ; |
if (!defined ('PROJET_RESUME')) { |
define ('PROJET_RESUME', 'Résumé') ; |
} |
define ('PROJET_SYNTHESE', 'Synthèse') ; |
define ("PROJET_DECONNEXION", "Déconnexion") ; |
define ("PROJET_ADMINISTRATION", "Administration") ; |
define ("PROJET_ADMINISTRATEUR", 'administrateur') ; |
define ("PROJET_NOUVEAU_PROJET", "Nouveau projet") ; |
define ('PROJET_ACCUEIL', 'Description du projet') ; |
define ('PROJET_PERE', 'Projet père') ; |
define ('PROJET_MODIFIER_PROPRIETES', 'Modifier le projet') ; |
define ("PROJET_DESTRUCTION_PROJET", "Destruction d'un projet") ; |
define ("PROJET_GESTION_UTILISATEUR", "Gérer les participants") ; |
define ("PROJET_NOUVEAU_UTILISATEUR", "Nouveau participant") ; |
define ('PROJET_NOUVEAU_UTILISATEUR_LAIUS', 'Pour ajouter un participant, inscrivez son adresse mail ci-contre et cliquer sur '.PROJET_NOUVEAU_UTILISATEUR) ; |
define ("PROJET_MOD_UTILISATEUR", "Modification d'un utilisateur") ; |
define ("PROJET_DESTRUCTION_UTILISATEUR", "Suppression d'un utilisateur") ; |
define ("PROJET_VOIR_PROJET", "Voir le projet") ; |
define ('PROJET_S_INSCRIRE', 'S\'inscrire') ; |
define ('PROJET_SE_DESINSCRIRE_LISTE', 'Se désinscrire') ; |
define ('PROJET_SE_DESINSCRIRE_CONFIRMATION', 'Etes vous sûr de vouloir vous désinscrire ?') ; |
define ("PROJET_GERER", "Gérer") ; |
define ("PROJET_GERER_FICHIER", "Gérer fichiers") ; |
define ("PROJET_VOIR_FICHIER", "Voir fichiers") ; |
define ('PROJET_NOM', 'Nom') ; |
define ("PROJET_PRENOM", "Prénom") ; |
define ("PROJET_MAIL", "E mail") ; |
define ('PROJET_DETAIL_PROJET', 'Détail du projet') ; |
define ("PROJET_LABEL_PAYS", "Pays") ; |
define ("PROJET_DATE_INSCRIPTION", "Date d'inscription") ; |
define ("PROJET_STATUT", "Statut") ; |
define ('PROJET_VOUS_ETES', 'Vous êtes ') ; |
define ("PROJET_CHEF" ,"Coordonnateur") ; |
define ('PROJET_CONTRIBUTEUR', 'Participants') ; |
define ('PROJET_NON_INSCRIT', 'non inscrit') ; |
define ("PROJET_PAS_D_INSCRIT", "Il n' y a pas d'inscrit à ce projet") ; |
define ("PROJET_PARTICIPER", "Les projets auxquels vous participez") ; |
define ("PROJET_VOUS_PARTICIPEZ", "Vous participez à ce projet") ; |
define ("PROJET_TOUS", "tous les projets.") ; |
define ("PROJET_PROJETS", "projets") ; |
define ('PROJET_TYPE', 'Type du projet') ; |
define ("PROJET_VOTRE_STATUT", "Votre statut") ; |
define ("PROJET_ACTION", "Action") ; |
define ('PROJET_SUPPRIMER', 'supprimer') ; |
define ('PROJET_SUPPRIMER_LE_PROJET', 'Supprimer le projet') ; |
define ('PROJET_SUPPRIMER_PROJET_CONFIRMATION', 'Supprimer le projet ?') ; |
define ("PROJET_DESTRUCTION_LAIUS", "La destruction d'un projet implique la suppression de tous les droits ". |
"de tous les utilisateurs de ce projet, ainsi que les liens que les autres projets ont ". |
"avec lui.") ; |
define ("PROJET_DESTRUCTION_EFFECTUEE", "Destruction effectuée") ; |
define ("PROJET_GESTION_PROJET", "Gestion du projet") ; |
define ("PROJET_EN_TANT_QUE", "En tant que") ; |
define ("PROJET_INTERVENIR", "vous pouvez intervenir sur les items suivants") ; |
define ("PROJET_PROPRIETES", "Propriétés du projet") ; |
define ("PROJET_SELECTIONNER", "Sélectionner un répertoire cible pour") ; |
define ("PROJET_PB_COPIE", "Probl&eagrave;me lors de la copie") ; |
define ("PROJET_RETABLISSEMENT", "Rétablissement de la base de donnée...") ; |
define ("PROJET_RETBLISSEMENT_EFFECTUE", "Rétablissement effectué. Vous pouvez réessayer.") ; |
define ("PROJET_METTRE_FICHIER", "Mettre un fichier en ligne") ; |
define ("PROJET_CREER_REP", "Créer un répertoire") ; |
define ("PROJET_FICHIERS_ASSOCIES", "Les fichiers associés au projet") ; |
define ('PROJET_PAS_DE_DOCUMENTS', 'Pas de documents associés à ce projet') ; |
define ("PROJET_FICHIERS_NOM", "Nom") ; |
define ("PROJET_FICHIERS_CREE_LE", "Créé le") ; |
define ("PROJET_FICHIERS_PAR", "Par") ; |
define ("PROJET_FICHIERS_TAILLE", "Taille") ; |
define ("PROJET_RACINE", "Racine") ; |
define ("PROJET_FICHIERS_VISIBILITE", "Visibilité"); |
define ("PROJET_FICHIERS_ACTION", "Action") ; |
define ("PROJET_LEGENDE", "Légende") ; |
define ("PROJET_LEGENDE_DEPLACE", "Déplace un fichier"); |
define ("PROJET_LEGENDE_MODIFIE", "Modifie les informations d'un document") ; |
define ("PROJET_LEGENDE_SUPPR", "Supprime un fichier"); |
define ("PROJET_CHAMPS_REQUIS", "Désigne les champs obligatoires") ; |
define ("PROJET_EMAIL", "e-mail") ; |
define ("PROJET_MOT_DE_PASSE", "Mot de passe") ; |
define ("PROJET_TEXTE_PERDU", "Si vous avez perdu votre mot de passe, indiquer ". |
"votre adresse email dans le champs login ci-dessus et cliquez sur \"Valider\"") ; |
define ("PROJET_DESCRIPTION", "Description") ; |
define ("PROJET_ESPACE_INTERNET", "Espace internet") ; |
define ('PROJET_PAS_DE_SITE', 'Pas d\'espace internet externe') ; |
define ("PROJET_DESTRUCTION_ALERTE", "Etes-vous sûr de vouloir supprimer ce projet ?") ; |
define ("PROJET_MENU_GENERAL", "Menu Général") ; |
define ('PROJET_MENU_COORD', 'Menu du coordinateur') ; |
define ('PROJET_MENU_CONTRI', 'Menu du Contributeur') ; |
define ('PROJET_MENU_OBS', 'Menu de l\'observateur') ; |
define ('PROJET_CREER_LISTE', 'Créer un forum de discussion') ; |
define ('PROJET_LISTE_DE_DISCUSSION', 'Forum de discussion') ; |
define ('PROJET_SUPPRIMER_LISTE', 'Supprimer le forum de discussion') ; |
define ('PROJET_SUPPRIMER_LISTE_CONFIRMATION', 'Supprimer le forum ?') ; |
define ('PROJET_NOM_DE_LA_LISTE', 'Nom du forum') ; |
define ('PROJET_NOM_DE_LA_LISTE_REQUIRED', 'Le nom du forum est requis') ; |
define ('PROJET_DOMAINE_DE_LA_LISTE', 'Domaine du forum') ; |
define ('PROJET_DOMAINE_LISTE_REQUIRED', 'Le domaine est requis') ; |
define ('PROJET_MESSAGE_LISTE_DOUBLE', 'Un forum de ce nom la existe déjà') ; |
define ('PROJET_PAS_DE_LISTE', 'Pas de forum') ; |
define ('PROJET_FORUM', 'Forum') ; |
if (!defined ('PROJET_PROPOSER_PROJET')) { |
define ('PROJET_PROPOSER_PROJET', '<h1>Proposer un projet</h1><p>'); |
} |
define ('PROJET_RETOUR_RESUME', 'Retour au résumé'); |
define ('PROJET_MODERE', 'Inscription modérée'); |
define ('PROJET_NON_MODERE', 'Inscription non modérée'); |
define ('PROJET_INSCRIPTION', 'Inscription') ; |
define ('PROJET_DEMANDE_INSCRIPTION', 'Demande d\'inscription au projet'); |
define ('PROJET_EN_ATTENTE', 'en attente de validation'); |
// ========== Partie concernant l'upload de fichier ================================= |
define ("PROJET_DOCUMENT_DU_PROJET", "Documents du projet") ; |
define ('PROJET_FICHIERS_RECENTS', 'Les derniers documents du projet') ; |
define ("PROJET_FICHIER_MISE_EN_LIGNE", "Mise en ligne d'un fichier") ; |
define ("PROJET_FICHIER_NOM_DOCUMENT", "Nom du document") ; |
define ("PROJET_FICHIER_NOM_DOCUMENT_EXPLICATION", "Saisissez un nom explicite, il correspond ". |
"au texte sur lequel il faudra cliquer pour accéder au fichier.") ; |
define ("PROJET_FICHIER_ALERTE", "Vous devez saisir un nom pour le document") ; |
define ("PROJET_FICHIER_DESCRIPTION", "Description") ; |
define ("PROJET_FICHIER_PUBLIC", "Tout public") ; |
define ("PROJET_FICHIER_PRIVEE", "Projet seulement") ; |
define ("PROJET_FICHIER_LE_FICHIER", "Le fichier") ; |
define ("PROJET_FICHIER_ALERTE_PAS_DE_FICHIER", "Vous devez sélectionner un fichier") ; |
define ("PROJET_FICHIER_CONTINUER", "Continuer") ; |
define ("PROJET_FICHIER_MISE_EN_LIGNE_2", "Mise en ligne d'un fichier étape 2") ; |
define ("PROJET_FICHIER_LABEL", "Label") ; |
define ("PROJET_FICHIER_TYPE", "Type") ; |
define ("PROJET_FICHIER_TRANSFERT_T", "Transfert terminé..."); |
define ("PROJET_FICHIER_VALIDER", "Valider") ; |
define ("PROJET_FICHIER_MODIFIER", "Modifier") ; |
define ("PROJET_FICHIER_COLLER", "COLLER") ; |
define ("PROJET_FICHIER_COUPER", "Déplacer") ; |
define ("PROJET_FICHIER_ANNULER", "Annuler") ; |
define ("PROJET_FICHIER_SUPPRIMER", "Supprimer") ; |
define ('PROJET_CHOISISSEZ_REPERTOIRE', 'Choisissez un répertoire pour ce fichier') ; |
define ('PROJET_CHANGER_REPERTOIRE', 'CHANGER UN FICHIER DE REPERTOIRE') ; |
define ('PROJET_FICHIER_A_DEPLACER', 'Fichier à déplacer : ') ; |
define ('PROJET_DOCUMENT', 'Documents') ; |
// Création de répertoire |
define ("PROJET_REP", "Répertoire du projet") ; |
define ("PROJET_REP_CREER", "Création d'un nouveau répertoire") ; |
define ("PROJET_REP_MODIFIER", "Modification d'un répertoire") ; |
define ("PROJET_REP_SUPPRIMER", "êtes-vous sûr de vouloir supprimer le répertoire") ; |
// ========== Partie concernant les wikini =========================================== |
define ('PROJET_CREER_WIKI', 'Gestion Wikinis') ; |
define ('PROJET_ASSOCIER_WIKI', 'Associer un Wikini'); |
if (!defined ('PROJET_WIKI_ASSOCIE')) { |
define ('PROJET_WIKI_ASSOCIE', 'Espace de rédaction collaborative') ; |
} |
define ("PROJET_WIKINI_POSSEDE", "Ce projet possède un espace wikini") ; |
define ("PROJET_WIKINI_ALLER", "Aller sur le wikini") ; |
define ("PROJET_WIKINI_SUPPRIMER", "Supprimer le wikini") ; |
define ("PROJET_WIKINI_CHOISIR_NOM", "Choisissez un nom pour le wikini") ; |
define ("PROJET_WIKINI_NOM_EXPLICATION", "Le nom doit être au format wikini, c'est à dire sans accents, sans espaces et avec au moins deux majuscule. ex MonProjet") ; |
define ("PROJET_WIKINI_NOM_INVALIDE", "Ce n'est pas un nom wiki valide") ; |
define ("PROJET_WIKINI_NOM_EXISTE", "Il existe déjà un wikini de ce nom la !!") ; |
define ("PROJET_WIKINI_PAS", "Pas de Wikini pour ce projet.") ; |
define ('PROJET_NOM_WIKINI_REQUIS', 'Le nom Wikini est requis') ; |
define ('PROJET_PREFIXE_WIKINI', 'Préfixe wikini') ; |
define ('PROJET_PREFIXE_WIKINI_REQUIS', 'Le préfixe est requis') ; |
if (!defined('PROJET_WIKINI')) { |
define ('PROJET_WIKINI', 'Wikini') ; |
} |
define ("PROJET_NOM_WIKINI", "Nom Wikini") ; |
define ("PROJET_PAGE_WIKINI", "Page de démarrage") ; |
define ("PROJET_CHOISIR_WIKINI", "Choisir") ; |
define ("PROJET_SELECTIONNER_WIKINI", "Selection") ; |
define ("PROJET_LISTE_PARTICIPANT", "Liste des participants") ; |
define ("PROJET_LISTE_PARTICIPANT_LAIUS", "Vous êtes chef du projet. Vous pouvez à ce titre, modifier le statut ". |
"des participants ou les désinscrire en cas de problème.<br />". |
"ttention aux conséquences que cela peut avoir...<br />". |
"En tant que chef de projet, vous ne pouvez pas modifier votre statut. Si vous souhaitez abandonner ". |
"cette fonction, il faut en faire la demande à l'administrateur du système ") ; |
define ("PROJET_DESINSCRIRE_SUR", "êtes-vous sûr de vouloir désinscrire") ; |
define ('PROJET_MAIL_ABSENT', 'L\'email que vous avez saisi n\'est pas dans l\'annuaire') ; |
define ('PROJET_ALLER_SUR_WIKINI', 'Entrer dans la page') ; |
// ========== Labels pour projet_liste =========================================== |
define ("PROJET_LISTE", "Liste des projets") ; |
define ('PROJET_TOUS_LES_PROJETS', 'Les autres projets du réseau') ; |
define ("PROJET_NOMBRE_EN_COURS" ,"Nombre de projets en cours") ; |
define ('PROJET_INSCRIT_AUCUN_PROJET', 'Vous n\'êtes inscrit à aucun projet<br /> |
- <a href="http://testv4.tela-botanica.org/papyrus.php?menu=158">Qu\'est-ce qu\'un projet ?</a><br /> |
Le réseau Tela Botanica est organisé autour de projets, discussions ou |
échanges liés à la botanique. Vous pouvez y participer en vous |
inscrivant.') ; |
define ('PROJET_CREATION_LISTE', 'Création d\'un forum de discussion') ; |
define ('PROJET_LISTES_EXTERNES_ASSOCIEES', 'Forum associé du projet') ; |
define ('PROJET_REFERENCER_LISTE', 'Référencer un forum externe') ; |
// ========== Labels pour projet_inscription =========================================== |
define ("PROJET_VOTRE_STATUT_AU_PROJET", "Votre statut par rapport au projet") ; |
define ('PROJET_INSCRIPTION_LISTE_NORMAL', 'Je reçois les messages du forum') ; |
define ('PROJET_INSCRIPTION_LISTE_RESUME', 'Je m\'inscrit à la version résumé du forum') ; |
define ('PROJET_INSCRIPTION_PAS_DE_MAIL', 'Je ne souhaite pas recevoir de messages de ce forum') ; |
define ('PROJET_INSCRIPTION_PROJET', 'Inscription au projet') ; |
define ('PROJET_S_INSCRIRE_AU_PROJET', 'S\'inscrire au projet') ; |
define ('PROJET_MESSAGE_LISTE', 'Messages du forum') ; |
define ('PROJET_ADRESSE_ECRIRE', 'Adresse pour écrire au forum') ; |
define ('PROJET_TOUS_LES_MESSAGES', 'Tous les messages') ; |
define ('PROJET_DERNIERS_MESSAGES', 'Derniers messages du forum du projet') ; |
define ('PROJET_DERNIER_MESSAGE', 'Dernier message') ; |
define ('PROJET_MESSAGE_DU_MOIS', 'Messages du mois ') ; |
define ('PROJET_RECEVOIR_MESSAGES', 'Recevoir les messages') ; |
define ('PROJET_NE_PAS_RECEVOIR_MESSAGES', 'Ne plus recevoir de messages') ; |
define ('PROJET_MESSAGES_DE', 'Messages de ') ; |
define ('PROJET_FILE_DE_DISCUSSION', 'fil de discussion') ; |
define ('PROJET_VOUS_N_ETES_PAS_INSCRIT', 'Vous n\'êtes pas inscrit à ce projet') ; |
define ('PROJET_VOUS_ETES_PARTICIPANT', 'Vous êtes participant à ce projet') ; |
define ('PROJET_SE_DESINSCRIRE', 'Se désinscrire du projet') ; |
// ======================= Labels pour l'envoie d'email ================================== |
define ("PROJET_MAIL_TITRE", "Titre") ; |
define ("PROJET_MAIL_TITRE_REQUIS", "Vous devez indiquer au moins un titre") ; |
define ("PROJET_MAIL_CORPS", "Corps") ; |
define ("PROJET_ECRIRE_LISTE", "Ecrire au forum") ; |
define ('PROJET_LISTES_ASSOCIEES', 'Forum associé au projet') ; |
define ('PROJET_RECEVOIR_LES_MESSAGES', 'Recevoir les messages') ; |
define ('PROJET_NE_PAS_RECEVOIR', 'Pas de messages') ; |
define ('PROJET_RECEVOIR_DES_RESUMES', 'Recevoir des résumés') ; |
define ('PROJET_VOUS_ETES_INSCRIT', 'Vous êtes inscrit à ce forum.') ; |
define ('PROJET_LISTE_PRIVE', 'Vous devez inscrit pour être'); |
// Label pour l'affichage des messages dans le forum |
define ('PROJET_PRECEDENT', 'précédent') ; |
define ('PROJET_SUIVANT', 'suivant') ; |
define ('PROJET_REPONDRE', 'répondre') ; |
define ('PROJET_REDIGER_REPONSE', 'Rédiger votre réponse') ; |
define ('PROJET_FORUMS_VISIBILITE', 'Forum public') ; |
define ('PROJET_OUI', 'oui') ; |
define ('PROJET_NON', 'non') ; |
define ('PROJET_MESSAGE_LISTE_PRIVEE', 'Cette liste est privée, vous devez être inscrit au projet pour y accéder') ; |
?> |
/branches/livraison_menes/forums.param.php |
---|
New file |
0,0 → 1,17 |
<?php |
/* |
Fichier Paramètres v. 1.04 - 20/06/2002 - 10h00 |
*/ |
$tbl['forums'] = "agora"; /* nom de la table où sont indiqués tous les forums botaniques ou Tela */ |
$tbl['forums_cat'] = "agora_categ"; /* nom de la table où sont les categories */ |
$tbl['forums_join'] = "agora_join"; /* nom de la table de jointure */ |
$tbl['forums_img'] = "agora_image"; /* nom de la table des images */ |
$tbl['forums_stats'] = "agora_stats"; /* nom de la table des stats */ |
$how_long = 30; /* $how_long est le nombre de jours (paramétrable) pendant lequel reste affiché "nouveau" */ |
$what_service = "yahoogroupes.fr"; /* Descripteur du service de Mailing Listes utilisé */ |
?> |
/branches/livraison_menes/forums-lst.php |
---|
New file |
0,0 → 1,393 |
<?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: forums-lst.php,v 1.1 2005-09-22 14:02:48 ddelon Exp $ |
/** |
* Application détail d'un forum |
* |
* Fichier d'appel pour papyrus |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once PROJET_CHEMIN_APPLI.'forums.functions.php' ; |
define ('PROJET_CHEMIN_IMAGES', 'client/projet/images/') ; |
/* DEBUT APPLI */ |
function putFrame () { |
/* Inclusion des paramètres généraux spécifiques au programme */ |
include_once PROJET_CHEMIN_APPLI.'forums.param.php' ; |
/* Global des variables */ |
if (isset($_GET['forum'])) $forum = $_GET['forum']; |
else $forum = ""; |
global $sel_rub; |
/* initialisation des variables */ |
if (!empty($GS_ARGUMENTS['sel_rub'])) $sel_rub = $GS_ARGUMENTS['sel_rub']; |
$sous_titre = ""; |
$sel_query = ""; |
$sel_from = ""; |
$ret = "<!-- DEBUT -->\n\n"; |
$ret .= "<div>"; |
$ret .= "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" summary=\"\">"; |
// formatage des colonnes |
$ret .= "<tr><td> </td><td> </td></tr>\n"; |
/* ligne de titre */ |
$ret .= "<tr><td colspan=\"2\" align=\"center\" class=\"insMsg\">\n"; |
if (isset($forum)&&($forum != "")) |
{ |
$ret .= "Détail du forum $forum"; |
$query = "select * from ".$tbl['forums']." where AGO_A_NOMGRP like '$forum'"; |
$result = mysql_query($query) or die ("Erreur de query : $query"); |
$num = mysql_num_rows($result); |
if ($num != 1) |
{ |
die("<B>ERREUR dans la requête</B> : $query retourne $num."); |
} |
else |
{ |
$row = mysql_fetch_object($result); |
$left_image['id'] = $row->AGO_A_IMAGE; |
$left_image['image'] = ""; |
$left_image['alt'] = ""; |
$id_grp = $row->AGO_A_ID; |
$nomgrplg = $row->AGO_A_NOMGRPLG; |
$nomgrp = $row->AGO_A_NOMGRP; |
$alias = $row->AGO_A_ALIAS; |
$date_creation = $row->AGO_A_DATE_CREATION; |
$date_ajout = $row->AGO_A_DATE_AJOUT; |
$mailabo = $row->AGO_A_MAILABO; |
$mailsend = $row->AGO_A_MAILSEND; |
$maildesa = $row->AGO_A_MAILDESA; |
$urlgrp = $row->AGO_A_URLGRP; |
$resum = $row->AGO_A_RESUM; |
$resumlg = $row->AGO_A_RESUMLG; |
$mode_n = $row->AGO_A_MODERATEUR_N; |
$mode_e = $row->AGO_A_MODERATEUR_E; |
$prop_n = $row->AGO_A_PROP_N; |
$prop_e = $row->AGO_A_PROP_E; |
$cekoi = $row->AGO_A_CEKOI; |
$grptype = $row->AGO_A_GRPTYPE; |
$public = $row->AGO_A_PUBLIC; |
$modere = $row->AGO_A_MODERE; |
$grp_tb = $row->AGO_A_GRP_TB; |
$plusinfo = $row->AGO_A_PLUSINFO; |
$helper = $row->AGO_A_HELPER; |
$nb_adherents = $row->AGO_A_NB_ADH; |
$nb_messages = $row->AGO_A_NB_MES; |
mysql_free_result($result); |
} |
} |
else |
{ |
if (isset($sel_rub) && ($sel_rub != "")) |
{ |
$query_c = "select * from ".$tbl['forums_cat']." where AGO_CAT_IDCAT = '$sel_rub'"; |
$resu_c = mysql_query($query_c) or die ("<B>Erreur de query :</B> $query_c"); |
$nb_c = mysql_num_rows($resu_c); |
if ($nb_c != 1) |
{ |
die("<B>ERREUR dans la requête</B> : $query_c retourne $nb_c."); |
} |
else |
{ |
$row_c = mysql_fetch_object($resu_c); |
$sous_titre = $row_c->AGO_CAT_TITRE; |
$left_image['id'] = $row_c->AGO_CAT_IMAGE; |
$left_image['image'] = ""; |
$left_image['alt'] = ""; |
} |
mysql_free_result($resu_c); |
$sel_from = ", ".$tbl['forums_cat'].", ".$tbl['forums_join']; |
$sel_query = "AND AGO_CAT_IDCAT = '$sel_rub' AND (AGO_A_ID = AGO_J_IDFORUM) AND (AGO_J_IDCATEG = AGO_CAT_IDCAT)"; |
} |
$ret .= "Liste des forums"; |
if ($sous_titre != "") $ret .= " "$sous_titre""; |
} |
$ret .= "</td></tr>"; |
$ret .= "<tr><td> </td><td> </td></tr>\n"; |
/* fin de la ligne de titre */ |
/* ouverture de la ligne contenu */ |
$ret .= "<tr>"; |
/* ouverture de la colonne de gauche (placer une image) ; il s'agit de $left_image */ |
$ret .= '<td width="125" valign="top">'; |
get_image(&$left_image); |
$ret .= '<img src="'.PROJET_CHEMIN_IMAGES.$left_image['image'].'" width="100" height="100" alt="'.$left_image['alt'].'" />'."\n"; |
$ret .= "</td>"; |
/* fin de la colonne de gauche */ |
/* colonne de droite */ |
$ret .= "<td>"; |
if ($forum != "") |
{ |
/* ********** Affichage du détail d'un forum ************ */ |
$ret .= "<table summary=\"\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"; |
$ret .= "<tr><td>"; |
$ret .= '<hr size="1" />'; |
if ($plusinfo != "") |
{ |
$ret .= "$plusinfo"; |
$ret .= '<hr size="1" />'; |
} |
$ret .= "<b>Nom complet :</b> $nomgrplg"; |
if (($alias != "")&&($alias != $nomgrplg)) $ret .= " (<i>alias</i> $alias)"; |
/* Ici on met le résumé court */ |
if ($resum != "") $ret .= "<br /><b>Description :</b> $resum"; |
/* Ici on met la date de création de la liste si l'info est connue */ |
if ($date_creation != "") |
{ |
$ret .= "<br /><b>Date de création :</b> "; |
$var_date = explode("-",$date_creation); |
$yr = $var_date[0]; |
$mt = $var_date[1]; |
$day = $var_date[2]; |
$ret .= "$day/$mt/$yr"; |
} |
$ret .= '<hr size="1" />'; |
if ($nb_adherents > 0) $ret .= "<b>Nombre d'abonnés :</b> $nb_adherents"; |
if (($nb_adherents > 0)&&($nb_messages > 0)) $ret .= "<br />"; |
if ($nb_messages > 0) $ret .= "<b>Nombre de messages :</b> $nb_messages"; |
if (($nb_adherents > 0)||($nb_messages > 0)) $ret .= '<hr size="1" />'; |
$ret .= "</td></tr>"; |
/* Ici on met le résumé long */ |
if ($resumlg != "") |
{ |
$ret .= "<tr><td>"; |
$ret .= "<b>Résumé :</b> $resumlg"; |
$ret .= '<hr size="1" />'; |
$ret .= "</td></tr>"; |
} |
/* Ici on met les adresses mails de la liste */ |
if ($urlgrp == "http://") $urlgrp = ""; |
if (($mailabo != "")||($mailsend != "")||($maildesa != "")||($urlgrp != "")) |
{ |
$ret .= "<tr><td>"; |
if ($mailabo != "") $ret .= "<b>Abonnement :</b> <a href=\"mailto:$mailabo\">$mailabo</a>"; |
if (($mailabo != "")&&($mailsend != "")) $ret .= "<br />"; |
if ($mailsend != "") $ret .= "<b>Envoyer un message :</b> <a href=\"mailto:$mailsend\">$mailsend</a>"; |
if (($mailsend != "")&&($maildesa != "")) $ret .= "<br />"; |
if ($maildesa != "") $ret .= "<b>Désabonnement :</b> <a href=\"mailto:$maildesa\">$maildesa</a>"; |
/* Ici on met l'URL */ |
if ($urlgrp != "") $ret .= "<br /><b>Adresse web :</b> <a href=\"$urlgrp\" target=\"_blank\">$urlgrp</a>"; |
$ret .= '<hr size="1" />'; |
$ret .= "</td></tr>"; |
} |
/* Ici on met les infos de propriétaire et de modérateur */ |
if ($mode_n == "Anonyme") $mode_n = ""; |
if ($mode_e == "Anonyme") $mode_e = ""; |
if ($prop_n == "Anonyme") $prop_n = ""; |
if ($prop_e == "Anonyme") $prop_e = ""; |
if (($mode_n != "")||($mode_e != "")||($prop_n != "")||($prop_e != "")) |
{ |
$ret .= "<tr><td>"; |
if (($mode_n != "")&&($mode_e != "")) $mode_aff = "<a href=\"mailto:$mode_e\">$mode_n</a>"; |
else if (($mode_n == "")&&($mode_e != "")) $mode_aff = "<a href=\"mailto:$mode_e\">$mode_e</a>"; |
else if (($mode_n != "")&&($mode_e == "")) $mode_aff = "$mode_n"; |
else $mode_aff = ""; |
if (($prop_n != "")&&($prop_e != "")) $prop_aff = "<a href=\"mailto:$prop_e\">$prop_n</a>"; |
else if (($prop_n == "")&&($prop_e != "")) $prop_aff = "<a href=\"mailto:$prop_e\">$prop_e</a>"; |
else if (($prop_n != "")&&($prop_e == "")) $prop_aff = "$prop_n"; |
else $prop_aff = ""; |
if ($mode_aff != "") $ret .= "<b>Modérateur :</b> $mode_aff"; |
if (($mode_aff != "")&&($prop_aff != "")) $ret .= "<br />"; |
if ($prop_aff != "") $ret .= "<b>Propriétaire :</b> $prop_aff"; |
$ret .= '<hr size="1" />'; |
$ret .= "</td></tr>"; |
} |
/* Ici on met la typologie des forums */ |
$ret .= "<tr><td>"; |
$ret .= "<b>Type :</b> ".ucfirst($cekoi)." de ".ucfirst($grptype)."<br />"; |
if ($public == 1) $public = "Public"; |
else $public = "Privé"; |
if ($modere == 1) $modere = "Modéré"; |
else $modere = "Non modéré"; |
$ret .= "<b>Statut :</b> $public - $modere"; |
$ret .= '<hr size="1" />'; |
$ret .= "</td></tr>"; |
/* Ici on met le plus important ! */ |
if ($grp_tb == 1) $grp_tb = "Créé et géré par Tela Botanica."; |
else $grp_tb = "Ce forum n'est pas géré par Tela Botanica."; |
$ret .= "<tr><td align=\"right\">"; |
$ret .= "$grp_tb"; |
$ret .= "</td></tr>"; |
$ret .= "</table>"; |
/* ********** Fin Affichage forum ************ */ |
} |
else |
{ |
/* ********** Affichage de la liste des forums, avec éventuellement un raffinement par catégorie ************ */ |
$query = "select AGO_A_NOMGRP, AGO_A_NOMGRPLG, AGO_A_ALIAS, AGO_A_DATE_AJOUT, AGO_A_RESUM, AGO_A_GRP_TB from ".$tbl['forums']." $sel_from where AGO_A_VISIBLE = 1 $sel_query ORDER BY AGO_A_PRIORITE, AGO_A_NOMGRP"; |
$result = mysql_query($query) or die ("Erreur de query : $query"); |
$num = mysql_num_rows($result); |
if ($num > 1) $pluriel = "s"; |
$ret .= "<b>$num</b> résultat$pluriel :<br /><br />\n"; |
while ($row = mysql_fetch_object($result)) |
{ |
$nomgrp = $row->AGO_A_NOMGRP; |
$nomgrplg = $row->AGO_A_NOMGRPLG; |
$alias = $row->AGO_A_ALIAS; |
$date_ajout = $row->AGO_A_DATE_AJOUT; |
$resum = $row->AGO_A_RESUM; |
$grp_tb = $row->AGO_A_GRP_TB; |
if ($alias == "") $what_aff = "$nomgrp"; |
else $what_aff = "$alias"; |
if ($grp_tb == '1') $ret .= "<img src=\"Local/".$GS_GLOBAL['project']."/".$GS_GLOBAL['locale']."/feuille20-16.gif\" width=\"20\" height=\"16\" alt=\"\"> \n"; |
else $ret .= "<img src=\"Local/".$GS_GLOBAL['project']."/".$GS_GLOBAL['locale']."/feuille20-16r.gif\" width=\"20\" height=\"16\" alt=\"\"> \n"; |
$ret .= "<b><a href=\"Javascript:openDocumentPopup ('".$GS_GLOBAL['project']."', '".$GS_GLOBAL['locale']."', 'pop-forums-info', '".$GS_GLOBAL['set']."', '&forum=$nomgrp&arg_0=forum%3D$nomgrp&arg_1=forum%3D$nomgrp', 780, 450)\">$what_aff</a></B>\n\n"; |
if ($alias != "") $ret .= " ($nomgrp)"; |
/* calcul qui affiche "nouveau" si le forum a moins d'un certain temps */ |
$how_long_stp = $how_long * 24 * 60 * 60; |
$today_is = time(); |
if (($date_ajout+$how_long_stp)>=$today_is) $ret .= " <img src=\"Local/".$GS_GLOBAL['project']."/".$GS_GLOBAL['locale']."/nouveau.gif\" alt=\"\">\n"; |
$ret .= "<br />$resum"; |
$ret .= "<br /><br />"; |
} |
$ret .= "</td></tr>\n"; |
$ret .= "<tr><td colspan=\"2\" valign=\"top\">\n"; |
$ret .= '<hr size="1" />'; |
$ret .= "<img src=\"Local/".$GS_GLOBAL['project']."/".$GS_GLOBAL['locale']."/feuille20-16.gif\" width=\"20\" height=\"16\" alt=\"\" /> forum Tela Botanica<br />\n"; |
$ret .= "<img src=\"Local/".$GS_GLOBAL['project']."/".$GS_GLOBAL['locale']."/feuille20-16r.gif\" width=\"20\" height=\"16\" alt=\"\" /> forum indépendant\n"; |
/* *************** Fin affichage liste ***************** */ |
} |
/* fin de la colonne d'information */ |
$ret .= "</td>"; |
/* fin de la ligne d'information */ |
$ret .= "</tr>"; |
$ret .= "</table>\n"; |
$ret .= "</div>\n"; |
$ret .= "<!-- FIN -->"; |
return $ret; |
} |
?> |
/branches/livraison_menes/appli_arbre_date.php |
---|
New file |
0,0 → 1,285 |
<? |
//------------------------------------------------------------------------------ |
// FICHIER : $RCSfile: appli_arbre_date.php,v $ |
// AUTEUR : $Author: ddelon $ |
// VERSION : $Revision: 1.1 $ |
// DATE : $Date: 2005-09-22 14:02:49 $ |
//------------------------------------------------------------------------------ |
//============================================================================== |
// FUNCTION putStyles ($STYLErow) |
// |
// Generation of private styles. |
//============================================================================== |
function putStyles ($STYLErow) { |
echo ".actuTexte {\n"; |
echo " font-family: $STYLErow->S_FONT_FAMILY;\n"; |
echo " font-size: $STYLErow->S_FONT_SIZE_SMALL;\n"; |
echo " font-style: normal;\n"; |
/* echo " font-weight: 400;\n"; */ |
// echo " text-align: left;\n"; |
echo " vertical-align: top;\n"; |
echo " color: $STYLErow->S_COLOR_TEXT;\n"; |
echo " background-color: $STYLErow->S_COLOR_3;\n"; |
echo "}\n"; |
} |
//============================================================================== |
// FUNCTION putFrame (...) |
// |
// Generation frame content. |
//============================================================================== |
function putFrame ($db, $link, |
$DOCrow, $PAGEresult, $CURRENTPAGErow, |
$innerTableWidth, $innerTableSpacing) { |
global $project; |
global $locale; |
global $set; |
global $G_mysqlDB; |
global $G_link; |
global $num_sem; |
global $thema; //permet un passage de parametre |
global $fichier_arbre; |
global $fichier_cartouche; |
$page_arg = $CURRENTPAGErow->P_ARGUMENT; |
if($page_arg != ""):$thema=$page_arg;endif; |
include ('php/frame/arbre/chemin.php3'); |
include ("$chemin_ago"); |
include ("$chemin_param"); |
include ('php/frame/arbre/fonctions.php3'); |
$pageNdx = $CURRENTPAGErow->P_ORDER; |
//ici commence mon arbre |
//SCRIPT DE DESSIN DE L'ARBRE Version 2: construction avec des tables |
//------------------------------------------------------------------- |
$xesvert="0";//$xesvert*2=espace verticcal entre 2 branches d'un même coté |
//Connexion a la base |
//mysql_connect ($dbhostname, $dbwho, $dbpass); |
//mysql_select_db ($dbnamedb); |
if($thema != ""): |
$nom_en_cl=mysql_query("select AGO_CAT_TITRE from AGORA_CATEG where AGO_CAT_APPEL LIKE \"%$thema%\"") or die("Theme non répertorié dans la base de donnée : $thema"); |
$thema_temp="and (THEMA LIKE \"%$thema%\")"; |
$nom_en_clair=mysql_result($nom_en_cl,0,"AGO_CAT_TITRE"); |
$blabla_thema="Theme de l'arbre: $nom_en_clair"; |
endif; |
//prerequis au moteur |
//->les requetes $res |
//->les variable $lientela_botanica $nb_ab_tela $nb_total_mess=0 $nb_total_abon=0 $nbtables_dessin |
//->connexion à la base |
//-------------------------------------------------------------------------------------------------------------------------------------------- |
$res = mysql_query |
("select NOM_TABLE, LIEN_BRANCHE, LIEN_FEUILLE, ALIAS, DATE_CREATION, LIEN_PUCE |
from $nom_table_index where ((VISIBLE=1) and (NOM_TABLE <> \"$nom_table_tela\") $thema_temp ) order by \"date_creation\" desc"); |
$nbtables = mysql_num_rows($res); |
// boucle visant a constituer les valeurs couleur, nombre d'abonnes et taille de branche pour les tables concernees |
//(existant deja a la date $nv_date) |
$max_nv_mesg=1; /////////////////////////////////////////////////////////////////////////////////// |
$max_mesg=1; /////////////////////////////////////////////////////////////////////////////////// |
$nb_table_2=0; //index des tables à afficher... puis |
for($i=0;$i<$nbtables;$i++) |
{ |
// on recupere le nom de la table |
$nom_tb[$i] = mysql_result($res,$i,"NOM_TABLE"); |
// on recupere un tuple contenant le nombre de messages, le nombre d'abonnes pour la table concernee |
// et la semaine correspondant a la semaine $num_sem |
$tab = mysql_query("select NB_MESSAGES,NB_ABONNES from $nom_tb[$i] where NUM_SEM=$num_sem"); |
$nb_rows_tab_tmp = mysql_num_rows($tab); |
// on teste si l'on a qqchose a afficher |
if ($nb_rows_tab_tmp > 0) : |
$nb_rows_tab[$nb_table_2]=$nb_rows_tab_tmp; |
$nom_tb02[$nb_table_2]=mysql_result($res,$i,"ALIAS"); |
$tab_lien_branche[$nb_table_2]=mysql_result($res,$i,"LIEN_BRANCHE"); |
$tab_lien_puce[$nb_table_2]=mysql_result($res,$i,"LIEN_PUCE"); |
$tab_lien_feuille[$nb_table_2]=mysql_result($res,$i,"LIEN_FEUILLE"); |
// on recupere le nombre de messages (cumule) pour la semaine $num_sem -1 |
if ($num_sem == 1) : $anc_mesg = 0; |
else : |
$sem_prec = $num_sem -1; |
$anc_mesg = mysql_query("select NB_MESSAGES from $nom_tb[$i] where NUM_SEM=$sem_prec"); |
$nb_rows_anc_mesg = mysql_num_rows($anc_mesg); |
if ($nb_rows_anc_mesg == 0) : $nb_anc_mesg[$nb_table_2] = 0; |
else : $nb_anc_mesg[$nb_table_2] = mysql_result($anc_mesg,0,"NB_MESSAGES"); |
endif; |
endif; |
// on recupere le nombre de messages(cumule) pour la semaine $num_sem |
$nb_nv_mesg[$nb_table_2] = mysql_result($tab,0,"NB_MESSAGES"); |
// on calcule le nombre de messages emis effectivement lors de |
// la semaine $num_sem |
$nb_mesg[$nb_table_2] = $nb_nv_mesg[$nb_table_2] - $nb_anc_mesg[$nb_table_2]; |
// on positionne la variable donnant le maximum de messages |
if ($max_nv_mesg < $nb_nv_mesg[$nb_table_2]) : $max_nv_mesg = $nb_nv_mesg[$nb_table_2]; |
endif; |
// on positionne la variable donnant le maximum de messages de la semaine |
// $num_sem |
if ($max_mesg < $nb_mesg[$nb_table_2]) : $max_mesg = $nb_mesg[$nb_table_2]; |
endif; |
//calcul du nombre de messages total |
$nb_tot_mess += $nb_nv_mesg[$nb_table_2]; |
// on recupere le nombre d'abonnes pour la semaine $num_sem |
$nb_abon[$nb_table_2] = mysql_result($tab,0,"NB_ABONNES"); |
//calcul du nombre d'abonnes total |
$nb_tot_abon += $nb_abon[$nb_table_2]; |
$nb_table_2++; |
endif; |
} |
//cette requete recupere ne nombre d'abonnes et de messages a la semaine num_sem |
$resreq=mysql_query("select NB_ABONNES, NB_MESSAGES from $nom_table_tela where NUM_SEM=$num_sem"); |
$nbresreq=mysql_num_rows($resreq); |
$nb_ab_tela=mysql_result($resreq,($nbresreq-1),nb_abonnes); |
$nb_mes_tela=mysql_result($resreq,($nbresreq-1),nb_messages); |
$temptotoblabla=round(($xres-$nhi_xsommet)/2);// oui, je suis en manque d'inspiration pour les noms de variables ;) |
//sérieusement, c'est le blanc devant la cime de l'arbre |
// l'idee c'est de remetre tout dans une table temporaire pour refaire une requete res et rende tout ca compatible avac le moteur... |
//un nom aléatoir pour la table.. |
function create_new_pwd($n) |
{ |
//caractères possibles en virant ceux qui se ressemblent (ijl1oO0) |
$chaine = "123456789"; |
// $n_car caractères dans le 'mot' généré |
$n_car = $n; |
srand((double)microtime()*1000000); |
for($i = 0; $i < $n_car; $i++) |
{ |
$str .= $chaine[rand()%strlen($chaine)]; |
} |
return "$str"; |
} |
$ago_tempo=TEMP.create_new_pwd(5); |
//en premier lieu, virer la table $ago_tempo si elle existe |
$rep=mysql_query("DROP TABLE IF EXISTS $ago_tempo"); |
//ensuite la créer, et la remplire avec les données récoltées... |
//creation |
$creation = "CREATE table $ago_tempo( |
INDEXE INT, |
NB_MES INT not null, |
LIEN_BRANCHE TINYTEXT not null, |
LIEN_FEUILLE TINYTEXT not null, |
COULEUR TINYINT not null, |
NB_ADH INT not null, |
TAILLE_B TINYINT not null, |
ALIAS TINYTEXT not null, |
LIEN_PUCE TINYTEXT) "; |
$rep=mysql_query("$creation") |
or die ("<font face=\"Arial, Helvetica, sans-serif\" size=2>ERREUR LORS DE LA CREATION DE LA TABLE TEMPORAIRE</font><BR><BR>$creation"); |
//remplissage |
$les_slashes=1; //pour la gestion des parametres du javascript de popup sans erreur d'insertion dans la base |
for($i=0;$i<$nb_table_2;$i++) |
{ |
$couleur = round(($nb_mesg[$i]/$max_mesg)*100);//i+1? |
$tb = round(($nb_nv_mesg[$i]/$max_nv_mesg)*100);//i+1? |
//pour la gestion des parametres du javascript de popup sans erreur d'insertion dans la base |
$tab_lien_branche[$i]=addslashes($tab_lien_branche[$i]); |
$tab_lien_feuille[$i]= addslashes($tab_lien_feuille[$i]); |
$tab_lien_puce[$i]=addslashes($tab_lien_puce[$i]); |
// |
$toto="INSERT INTO $ago_tempo ( |
INDEXE, NB_MES, LIEN_BRANCHE, LIEN_FEUILLE, COULEUR, NB_ADH, TAILLE_B, ALIAS, LIEN_PUCE ) VALUES ('$i','$nb_nv_mesg[$i]','$tab_lien_branche[$i]','$tab_lien_feuille[$i]','$couleur','$nb_abon[$i]','$tb','$nom_tb02[$i]','$tab_lien_puce[$i]')"; |
$rep=mysql_query($toto) |
or die("erreur dans l'insertion dans la table temporaire : $toto"); |
} |
//Calcul des totaux C'est un reliqua d'une version précedente |
//$nb_total_mess=$nb_tot_mess+$nb_mes_tela; |
//$nb_total_abon=$nb_tot_abon+$nb_ab_tela; |
mysql_free_result($res); |
$res = mysql_query("select INDEXE, NB_MES, LIEN_BRANCHE, LIEN_FEUILLE, COULEUR, NB_ADH, TAILLE_B, ALIAS, LIEN_PUCE from $ago_tempo order by \"INDEXE\" ")or die("erreur dans l'interogation de la table temporaire"); |
$rep=mysql_query("DROP TABLE IF EXISTS $ago_tempo"); |
$nbtables_dessin=$nb_table_2; |
$nb_total_mess=0; |
$nb_total_abon=0; |
$req=mysql_query("select LIEN_BRANCHE, LIEN_FEUILLE, LIEN_PUCE from $nom_table_index where NOM_TABLE=\"$nom_table_tela\""); |
$tabtemp=mysql_fetch_array($req); |
$lientela_botanica=$tabtemp["LIEN_BRANCHE"]; |
$lientela_numero=$tabtemp["LIEN_FEUILLE"]; |
$lientela_feuille=$tabtemp["LIEN_PUCE"]; |
// $lientela_botanica=mysql_result($req,0,"LIEN_BRANCHE"); |
// $lientela_numero=mysql_result($req,0,"LIEN_FEUILLE"); |
// $lientela_feuille=mysql_result($req,0,"LIEN_PUCE"); |
//-------------------------------------------------------------------------------------------------------------------------------------------- |
//inclusion du moteur |
include ('php/frame/arbre/moteur_dessin.php'); |
include ('php/frame/arbre/cartouche_arbre_date.php'); |
//purge des résultats de requetes |
mysql_free_result($resreq); |
mysql_free_result($res); |
mysql_free_result($req); |
//fermeture de la connexion |
//mysql_close(); |
//ici finit mon arbre... |
} |
//============================================================================== |
// FUNCTION putFooter () |
// |
// Generation of footer. |
//============================================================================== |
function putFooter () { |
echo ' '; |
} |
//-- End of source ------------------------------------------------------------ |
?> |
/branches/livraison_menes/appli_arbre.php |
---|
New file |
0,0 → 1,183 |
<? |
// +--------------------------------------------------------------------------------------------------+ |
// |appli_arbre.php | |
// +--------------------------------------------------------------------------------------------------+ |
// | Copyright (c) 2002 | |
// +--------------------------------------------------------------------------------------------------+ |
// | Ce programme utilise l'objet arbre défini dans arbre.php pour | |
// | générer un arbre des forums, les tables requises sont | |
// | agora, agora_join, agora_categ, agora_stat | |
// +--------------------------------------------------------------------------------------------------+ |
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
// +--------------------------------------------------------------------------------------------------+ |
// |
// $Id: appli_arbre.php,v 1.1 2005-09-22 14:02:48 ddelon Exp $ |
include ("php/lib/lib.putstyle.php"); |
function afficherContenuCorps () { |
global $thema; //permet un passage de parametre |
global $GS_GLOBAL ; |
$page_arg = $GS_GLOBAL['current_page_row']->P_ARGUMENT; |
if($page_arg != ""):$thema=$page_arg;endif; |
// version alexandre |
//javascript pour la gestion des popup |
//------------------------------------------------------------------------------ |
global $G_javascript; |
$G_javascript = $G_javascript." function MagicPopup (mURL) {"."\n"; |
$G_javascript = $G_javascript." var sArgs = 'toolbar=0'+"."\n"; |
$G_javascript = $G_javascript." ',hotkeys=0'+"."\n"; |
$G_javascript = $G_javascript." ',location=0'+"."\n"; |
$G_javascript = $G_javascript." ',directories=0'+"."\n"; |
$G_javascript = $G_javascript." ',menubar=0'+"."\n"; |
$G_javascript = $G_javascript." ',personalbar=0'+"."\n"; |
$G_javascript = $G_javascript." ',status=0'+"."\n"; |
$G_javascript = $G_javascript." ',scrollbars=1'+"."\n"; |
$G_javascript = $G_javascript." ',resizable=1'+"."\n"; |
$G_javascript = $G_javascript." ',width=640 '+"."\n"; |
$G_javascript = $G_javascript." ',height=450';"."\n"; |
$G_javascript = $G_javascript."\n"; |
$G_javascript = $G_javascript." var wWindow = open (mURL, 'more', sArgs);"."\n"; |
$G_javascript = $G_javascript." wWindow.window.focus ();"."\n"; |
$G_javascript = $G_javascript." }"."\n"; |
$G_javascript = $G_javascript."\n"; |
GEN_ ("MagicPopup" , $G_javascript) ; |
$G_javascript = " function MagicPopup2 (mURL) {"."\n"; |
$G_javascript = $G_javascript." var sArgs = 'toolbar=1'+"."\n"; |
$G_javascript = $G_javascript." ',hotkeys=0'+"."\n"; |
$G_javascript = $G_javascript." ',location=1'+"."\n"; |
$G_javascript = $G_javascript." ',directories=0'+"."\n"; |
$G_javascript = $G_javascript." ',menubar=1'+"."\n"; |
$G_javascript = $G_javascript." ',personalbar=1'+"."\n"; |
$G_javascript = $G_javascript." ',status=1'+"."\n"; |
$G_javascript = $G_javascript." ',scrollbars=1'+"."\n"; |
$G_javascript = $G_javascript." ',resizable=1'+"."\n"; |
$G_javascript = $G_javascript." ',width=800 '+"."\n"; |
$G_javascript = $G_javascript." ',height=600';"."\n"; |
$G_javascript = $G_javascript." ',left=0';"."\n"; |
$G_javascript = $G_javascript." ',top=0';"."\n"; |
$G_javascript = $G_javascript."\n"; |
$G_javascript = $G_javascript." var wWindow = open (mURL, 'more', sArgs);"."\n"; |
$G_javascript = $G_javascript." wWindow.window.focus ();"."\n"; |
$G_javascript = $G_javascript." }"."\n"; |
$G_javascript = $G_javascript."\n"; |
js_register ("MagicPopup2" , $G_javascript) ; |
//------------------------------------------------------------------------------ |
include "php/frame/arbre/arbre.php" ; |
global $num_sem; // le numero de la semaine |
// requete sur le sommet de l'arbre |
$query = "SELECT NB_ABONNES,NUM_SEM FROM agora_stats WHERE FORUM=\"tela-botanicae\" ORDER BY NUM_SEM DESC" ; |
$result = mysql_query($query) or die ("Echec de la requête sur les forums1"); |
$tela = mysql_fetch_object($result) ; |
// le numero de la semaine |
if (empty($num_sem)) $num_sem = $tela->NUM_SEM ; |
// requete sur le sommet de l'arbre avec le bon numero de semaine |
$res = mysql_query("SELECT NB_ABONNES,NB_MESSAGES FROM agora_stats WHERE FORUM=\"tela-botanicae\" AND NUM_SEM=\"$num_sem\""); |
$tel = mysql_fetch_object($res); |
$nb_total_mess = $tel->NB_MESSAGES; |
$nb_total_abon = $tel->NB_ABONNES; |
$query = "SELECT AGO_A_LIEN_PUCE,AGO_A_LIEN_FEUILLE,AGO_A_LIEN_BRANCHE FROM agora WHERE AGO_A_NOMGRP=\"tela-botanicae\"" ; |
$result = mysql_query($query) or die ("Echec de la requête sur les forums2"); |
$tela2 = mysql_fetch_object($result) ; |
// creation de l'arbre |
$arbreforum = new arbre("Tela Botanica",$tela2->AGO_A_LIEN_BRANCHE,$tel->NB_ABONNES,$tela2->AGO_A_LIEN_FEUILLE,"http://fr.groups.yahoo.com/group/tela-botanicae/messages") ; |
$res = "<tr class=\"titlePage\"><td>L'arbre des forums de Tela Botanica</td></tr>\n" ; |
$res.= "<tr><td> </td></tr>\n" ; |
$res .= $arbreforum->cime("Tela Botanica",$tela2->AGO_A_LIEN_BRANCHE,$tel->NB_ABONNES,"javascript:MagicPopup2('$tela2->AGO_A_LIEN_FEUILLE')","http://fr.groups.yahoo.com/group/tela-botanicae/messages") ; |
// requete sur les branches |
// d'abord les nom des groupes |
$query1 = "SELECT agora.AGO_A_NOMGRP FROM agora" ; |
if (!empty($thema)) $query1 .= ",agora_join" ; |
$query1 .= " WHERE agora.AGO_A_NOMGRP<>\"tela-botanicae\" AND |
agora.AGO_A_VISIBLE=1" ; |
if (!empty($thema)) { $query1 .= " AND agora.AGO_A_ID=agora_join.AGO_J_IDFORUM and |
AGO_J_IDCATEG=\"$thema\"" ; |
} |
$query1 .= " ORDER BY AGO_A_DATE_CREATION DESC" ; |
$result_message = mysql_query($query1) or die ("Echec de la requête sur les forums"); |
//tableau stockant la différence du nbre de messages entre la semaine en cours dans la page et la semaine précédente |
$diff_message = array(); |
while ($row_message = mysql_fetch_object($result_message)) { |
//implémentation du tableau $diff_message |
$query_nb_message_1 = "SELECT NB_MESSAGES FROM agora_stats WHERE FORUM=\"$row_message->AGO_A_NOMGRP\" AND NUM_SEM=\"$num_sem\""; |
$result_nb_message_1 = mysql_query($query_nb_message_1) or die ("Echec sur la requête _nb_message_1") ; |
$row_nb_message_1 = mysql_fetch_object($result_nb_message_1) ; |
$query_nb_message_2 = "SELECT NB_MESSAGES FROM agora_stats WHERE FORUM=\"$row_message->AGO_A_NOMGRP\" AND NUM_SEM= ".($num_sem -1).""; |
$result_nb_message_2 = mysql_query($query_nb_message_2) or die ("Echec sur la requête _nb_message_2") ; |
$row_nb_message_2 = mysql_fetch_object($result_nb_message_2) ; |
$diff_message[$row_message->AGO_A_NOMGRP] = $row_nb_message_1->NB_MESSAGES - $row_nb_message_2->NB_MESSAGES; |
} |
$result1 = mysql_query($query1) or die ("Echec de la requête sur les forums"); |
while ($row1 = mysql_fetch_object($result1)) { |
// pour chaque groupe, le nbre de messages et le nbre d'abonnes |
$query2 = "SELECT NB_MESSAGES,NB_ABONNES FROM agora_stats WHERE FORUM=\"$row1->AGO_A_NOMGRP\" AND NUM_SEM=\"$num_sem\"" ; |
$result2 = mysql_query($query2) or die ("Echec de la requête sur agora_stats"); |
$row2 = mysql_fetch_object($result2) ; |
// et le reste des informations pour chaque groupe |
$query3 = "SELECT AGO_A_ALIAS,AGO_A_LIEN_BRANCHE,AGO_A_LIEN_FEUILLE,AGO_A_LIEN_PUCE,AGO_A_COULEUR,AGO_A_TAILLE_B FROM agora WHERE AGO_A_NOMGRP=\"$row1->AGO_A_NOMGRP\""; |
$result3 = mysql_query($query3) or die ("Echec sur la requête 3") ; |
$row3 = mysql_fetch_object($result3) ; |
$lien_feuille = "http://fr.groups.yahoo.com/group/$row1->AGO_A_NOMGRP/messages" ; |
$lien_nombre = "http://fr.groups.yahoo.com/group/$row1->AGO_A_NOMGRP/members" ; |
// On cherche à obtenir une valeur entre 0 et 100 pour déterminer la couleur de la feuille de l'arbre |
$maxi_message = max($diff_message); |
if ($maxi_message == 0){$maxi_message = 0.01;} |
$calcul_couleur = ($diff_message[$row1->AGO_A_NOMGRP])/$maxi_message*100; |
//Fin. La valeur de la couleur pour le groupe en cours est stocké dans $calcul_couleur |
if ($row2->NB_ABONNES != 0) {//pour ne pas afficher les branches n'existant pas encore à la semaine donnée |
$arbreforum->addBranche($row3->AGO_A_ALIAS,$row3->AGO_A_LIEN_BRANCHE,$row2->NB_ABONNES,"javascript:MagicPopup2('$lien_nombre')",$lien_feuille,$calcul_couleur,$row3->AGO_A_TAILLE_B); |
// info pour le cartouche |
$nb_total_mess += $row2->NB_MESSAGES; |
$nb_total_abon += $row2->NB_ABONNES; |
} |
} |
$res .= $arbreforum->affBranche() ; |
$res .= $arbreforum->affRacine() ; |
include ('php/frame/arbre/cartouche.php'); |
//fermeture de la connexion |
//mysql_close(); |
return $res ; |
} |
//============================================================================== |
// FUNCTION putFooter () |
// |
// Generation of footer. |
//============================================================================== |
function putFooter () { |
return ' '; |
} |
//-- End of source ------------------------------------------------------------ |
?> |
/branches/livraison_menes/configuration/projet.config.inc.php |
---|
New file |
0,0 → 1,177 |
<?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 Lesser 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 | |
// | Lesser General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU Lesser 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: projet.config.inc.php,v 1.8 2006-07-04 09:30:56 alexandre_tb Exp $ |
/** |
* Application projet, fichier de configuration |
* |
* Fichier de configuration |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.8 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
/** |
//==================================== LES URLS ================================== |
* Constantes liées à l'utilisation des url |
//================================================================================== |
*/ |
// Définition du lien vers "voir le projet" |
define ("PROJET_LIEN_VOIR", "") ; |
/** |
//==================================== LES CHEMINS ================================= |
* Constantes définissant les chemins d'accé au différents fichiers inclus dans les |
* applications. |
//================================================================================== |
*/ |
define ('PROJET_CHEMIN_APPLI','client/projet/');//le chemin vers l'application courante |
define ('PROJET_CHEMIN_API_ARBRE', 'api/arbre/') ; |
/** Chemin vers la bibliothèque API.*/ |
define ('PROJET_CHEMIN_BIBLIOTHEQUE_API', GEN_CHEMIN_API); |
define ('PROJET_CHEMIN_ICONES', PROJET_CHEMIN_APPLI."icones/") ; |
define ('PROJET_CHEMIN_CLASSES', PROJET_CHEMIN_APPLI.'classes/');//le chemin vers les fichiers propre à GSITE |
define ('PROJET_CHEMIN_FONCTIONS', PROJET_CHEMIN_APPLI.'fonctions/') ; |
define ('PROJET_CHEMIN_LIBRAIRIE','bibliotheque/');//le chemin de la librairie de fichier php |
define ('PROJET_CHEMIN_FICHIER', "client/projet/fichiers/") ; // Chemin ou seront créer les dossiers |
// Chemin vers les classes pour lire les listes de discussion |
define ('PROJET_CHEMIN_CLASSES_LISTES', PROJET_CHEMIN_CLASSES."ezmlm-php-2.0/") ; |
// Langue pas defaut |
define ('PROJET_LANGUE_DEFAUT', "fr") ; |
// Gestion de l'authentification |
$GLOBALS['projet_auth'] = $GLOBALS['_GEN_commun']['pear_auth']; |
// Un objet PEAR:DB connecté |
$GLOBALS['projet_db'] = $GLOBALS['_GEN_commun']['pear_db']; |
$GLOBALS['url'] =& $GLOBALS['_GEN_commun']['url'] ; |
// La langue |
if (!isset ($GLOBALS['lang'])) $GLOBALS['lang'] = PROJET_LANGUE_DEFAUT ; |
/** |
//==================================== CONSTANTES ================================== |
* Constantes des noms de tables et de champs dans l'annuaire |
//================================================================================== |
*/ |
define ("PROJET_ANNUAIRE", "annuaire") ; // Nom de la table d'annuaire |
define ("PROJET_CHAMPS_NOM", "a_nom") ; // Nom du champs nom |
define ("PROJET_CHAMPS_MAIL", "a_mail") ; // Nom du champs mail |
define ("PROJET_CHAMPS_PRENOM", "a_prenom") ; // Nom du champs prénom |
define ("PROJET_CHAMPS_ID", "a_id") ; |
/** |
//==================================== CONSTANTES ================================== |
* Constantes des chemins associés aux wikinis |
//================================================================================== |
*/ |
define ("PROJET_CHEMIN_WIKINI", "wikini/") ; |
define ("PROJET_HOTE_WIKINI", "localhost") ; |
define ("PROJET_UTILISATEUR_WIKINI", "") ; |
define ("PROJET_MDP_WIKINI", "") ; |
define ("PROJET_DB_WIKINI", "") ; |
define ("PROJET_URL_WIKINI", "") ; // L'url vers le wikini |
/** |
//==================================== CONSTANTES ================================== |
* Constantes des emails des administrateurs |
//================================================================================== |
*/ |
define ("PROJET_MAIL_ADMINISTRATEUR", "") ; |
define ("PROJET_VARIABLE_ID_PROJET", "id_projet") ; |
define ("PROJET_VARIABLE_ACTION", "act") ; |
define ("PROJET_VARIABLE_ID_REPERTOIRE", "id_repertoire") ; |
define ("PROJET_VARIABLE_ID_DOCUMENT", "id_document") ; |
/** |
//==================================== CONSTANTES ================================== |
* Constantes pour les listes de discussion |
//================================================================================== |
*/ |
define ('PROJET_CHEMIN_LISTES', '') ; |
define ('PROJET_DOMAINE_LISTE', '') ; |
define ('PROJET_CHEMIN_ATELIERS', 'http://domaine.ext/papyrus.php?site=<>&menu=<>&id_projet=<>') ; |
define ('PROJET_SERVEUR_VPOPMAIL', 'http://vpopmail.domaine.ext') ; |
/** |
//==================================== CONSTANTES ================================== |
* Constantes pour des options |
//================================================================================== |
*/ |
define ('PROJET_UTILISE_TYPE', false) ; |
define ('PROJET_UTILISE_HIERARCHIE', false) ; |
define ('PROJET_LISTE_RESUME',true); |
// Mettre à true si les utilisateurs peuvent déposer des projets |
define ('PROJET_UTILISATEURS_COORD', false) ; |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.7 2006/06/26 11:48:50 alexandre_tb |
* typographie |
* |
* Revision 1.6 2006/03/02 09:24:36 mathilde |
* remplacement des noms de tables de l'annuaire |
* |
* Revision 1.5 2006/02/15 16:33:42 alexandre_tb |
* ajout de la constante PROJET_UTILISATEUR_COORD |
* |
* Revision 1.4 2006/01/26 14:06:07 florian |
* ajout des constantes d'accès à vpopmail. |
* |
* Revision 1.3 2005/11/14 10:14:30 ddelon |
* Projets Wikini |
* |
* Revision 1.2 2005/10/20 10:28:25 ddelon |
* Wikini complet dans l'intégrateur Wikini |
* |
* Revision 1.1 2005/09/27 12:50:28 ddelon |
* Projet configuration |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_menes/presentation/arbre.php |
---|
New file |
0,0 → 1,94 |
<?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: arbre.php,v 1.2.2.1 2007-04-11 14:26:00 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Fichier de présentation de la liste des projets par arbre |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.2.2.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// ON est dans la méthode mesProjets() de la classe projetControleur |
$titre = '<h1>Arbre des Projets</h1>'."\n" ; |
if (PROJET_UTILISE_TYPE && $this->_type != '') { |
$projetListe = projet::getProjetDuType($this->_type, $this->_db) ; |
if ($this->_presentation == 'arbre')array_push ($projetListe, projet::getProjetRacine($this->_db)) ; |
} else { |
// Un tableau de tous les projets dans $projetListe |
$projetListe = projet::getTousLesProjets($this->_db, $this->_projet_exclu) ; |
} |
include_once PROJET_CHEMIN_API_ARBRE.'arbre.class.php' ; |
// initialisation de variables |
$intensite_feuille = '' ; $longueur_branche = '' ; |
$arbre = new arbre() ; |
// recherche du projet principal |
$cime=''; |
foreach ($projetListe as $projet) { |
$this->_url->addQueryString (PROJET_VARIABLE_ID_PROJET, $projet->getId()) ; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_PARTICIPANT) ; |
$lien_feuille = $this->_url->getURL() ; |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
if ($projet->isRacine()) { |
$cime = $arbre->cime($projet->getTitre(), $this->_url->getURL(), $projet->getNombreInscrits(), $lien_feuille, '') ; |
} else { |
$arbre->addBranche($projet->getTitre(), $this->_url->getURL(), $projet->getNombreInscrits(), |
$lien_feuille, $lien_feuille, $intensite_feuille, $longueur_branche) ; |
} |
} |
return $titre.'<table id="arbre">'.$cime.$arbre->affBranche().$arbre->affRacine().'</table>'; |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.2 2006/03/02 16:07:17 alexandre_tb |
* ajout d'un id pour l'arbre |
* |
* Revision 1.1 2005/11/25 14:47:51 alexandre_tb |
* version initiale |
* |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_menes/presentation/liste.php |
---|
New file |
0,0 → 1,246 |
<?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: liste.php,v 1.3.2.1 2007-04-11 14:25:05 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Fichier de présentation de la liste des projets |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.3.2.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
$titre = '<h1>'.PROJET_LISTE.'</h1>'."\n" ; |
if (PROJET_UTILISE_TYPE && $this->_type != '') { |
$projetListe = projet::getProjetDuType($this->_type, $this->_db) ; |
} else { |
// Un tableau de tous les projets dans $projetListe |
$projetListe = projet::getTousLesProjets($this->_db, $this->_projet_exclu) ; |
} |
// On inclue un fichier local |
if (file_exists(PROJET_CHEMIN_APPLI.'langues/pro_langues_fr.local.inc.php')) |
include_once PROJET_CHEMIN_APPLI.'langues/pro_langues_fr.local.inc.php' ; |
// On vérifie si l'utilisateur participe à des projets |
// Entete de la liste, qu'on recupere dans un template |
if (PROJET_UTILISE_TYPE && $this->_type != "") { |
include_once PROJET_CHEMIN_CLASSES.'projetTemplate.class.php' ; |
include_once 'HTML/Template/IT.php'; |
$template = new projetTemplate ($this->_db) ; |
$chaine = $template->getTemplate(2, $GLOBALS['lang'], $this->_type); |
if (projetTemplate::isError ($chaine)) echo $chaine->getMessage() ; |
$tpl = new HTML_Template_IT() ; |
$tpl -> setTemplate($chaine); |
} |
if ($auth){ |
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ; |
$utilisateur_liste = new inscription_liste($this->_db) ; |
// On teste ici s'il y a une mise à jour de statut |
if (isset($_POST['statut'])) { |
// $_POST['statut'] et $_GET['identifiant_projet'] proviennent du formulaire voir HTML_listeProjet |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
$annuaire = new annuaire($this->_db, array('identifiant' => PROJET_CHAMPS_ID, 'mail' => PROJET_CHAMPS_MAIL, 'table' => PROJET_ANNUAIRE)) ; |
$annuaire->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ; |
$projet = new projet ($this->_db, $_GET['identifiant_projet']) ; |
$projet->getListesAssociees() ; |
$utilisateur_liste->modifierTypeInscription($projet->_listes_associes[0],$annuaire, $_POST['statut']) ; |
} |
if (count($participant->getIdProjetsStatuts($id_u))) { |
include_once PROJET_CHEMIN_CLASSES.'HTML_listeProjet.class.php' ; |
$HTML_projetListe = new HTML_listeProjet(true) ; |
$entete_liste = array($auth ? PROJET_VOUS_PARTICIPEZ : PROJET_LISTE) ; |
if ($auth) array_push ($entete_liste, PROJET_SE_DESINSCRIRE, PROJET_LISTE_DE_DISCUSSION) ; |
$tableau_resultat = array () ; |
$HTML_projetListe->construitEntete ($entete_liste) ; |
// On construit $tableau_resultat avec une ligne par projet contenant un tableau (titre, statut_nom, id_statut, id_projet) |
include_once PROJET_CHEMIN_CLASSES.'statut_liste.class.php' ; |
$statut_liste = new statut_liste($this->_db) ; |
$tableau_statut = $statut_liste->getTousLesStatuts() ; |
$statut = '' ; |
$i = 0 ; |
$HTML_projetListe->setModeModification() ; |
$HTML_projetListe->setURL($this->_url) ; |
foreach ($projetListe as $projet) { |
if (participe::getStatutSurProjetCourant($id_u, $projet->getId(), $this->_db) == 4) continue ; |
if ($auth) { |
if ($projet->avoirListe()) { |
$projet->getListesAssociees() ; |
$statut = $utilisateur_liste->getStatutInscrit($projet->_listes_associes[0]->getId(), $this->_auth) ; |
//if ($statut == '') $statut = 0 ; |
} |
} |
$this->_url->addQueryString (PROJET_VARIABLE_ID_PROJET, $projet->getId()) ; |
$ligne_tableau = array ($projet->getId(), $projet->getResume(), |
'<a href="'.$this->_url->getURL().'">'.$projet->getTitre().'</a>' |
) ; |
if ($auth) { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_DESINSCRIPTION_PROJET) ; |
array_push ($ligne_tableau, '<a href="'.$this->_url->getURL().'" onclick="javascript:return confirm(\''. |
PROJET_SE_DESINSCRIRE_CONFIRMATION.'\');">'.PROJET_SE_DESINSCRIRE.'</a>') ; |
if ($projet->avoirListe()) { |
array_push ($ligne_tableau, $statut) ; |
} else { |
array_push($ligne_tableau, '') ; |
} |
array_push ($tableau_resultat, $ligne_tableau) ; |
$this->_url->removeQueryString (PROJET_VARIABLE_ACTION) ; |
} |
$statut = '' ; |
} |
$HTML_projetListe->construitListe ($tableau_resultat, $tableau_statut) ; |
if ($HTML_projetListe->getRowCount() > 1) { |
$res .= '<p>'.PROJET_PARTICIPER.'</p>'; |
$res .= $HTML_projetListe->toHTML() ; |
} |
} else { |
$res .= '<p>'.PROJET_INSCRIT_AUCUN_PROJET.'</p>' ; |
} |
} |
// Un texte pour ceux qui ne sont pas identifiés |
if (!$auth) { |
$res .= '<p>'.PROJET_TEXTE_NON_IDENTIFIE.'</p>'."\n" ; |
} |
// Maintenant la liste des projets où l'utilisateur ne participe pas. |
// Et si pas loggué tous les projets |
if ($auth) { |
$projetNonParticipantListe = $participant -> getProjetsNonParticipant($id_u) ; |
// Si certain projet sont à exclure, on les exclu |
$projet_a_exclure = array() ; |
if (count($this->_projet_exclu)) { |
arsort($this->_projet_exclu) ; |
foreach ($this->_projet_exclu as $valeur) { |
for ($i = 0; $i < count($projetNonParticipantListe); $i++) { |
if ($projetNonParticipantListe[$i]->getId() == $valeur) array_push ($projet_a_exclure, $i);} |
} |
} |
if (PROJET_UTILISE_TYPE && $this->_type != '') { |
for ($i = 0; $i < count($projetNonParticipantListe); $i++) { |
if ($projetNonParticipantListe[$i]->getType() != $this->_type) array_push ($projet_a_exclure, $i) ; |
} |
} |
foreach ($projet_a_exclure as $valeur) { |
unset ($projetNonParticipantListe[$valeur]) ; |
} |
$HTML_projetNonParticipantListe = new HTML_listeProjet(true) ; |
$entete_liste = array (PROJET_LISTE) ; |
array_push ($entete_liste, PROJET_S_INSCRIRE) ; |
$HTML_projetNonParticipantListe->construitEntete($entete_liste) ; |
$liste_projet = array() ; |
// La liste |
foreach ($projetNonParticipantListe as $projet) { |
$this->_url->addQueryString(PROJET_VARIABLE_ID_PROJET, $projet->getId()) ; |
$ligne_projet = array ($projet->getResume(), |
'<a href="'.$this->_url->getURL().'">'.$projet->getTitre().'</a>' // le nom du projet |
) ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ACTION_S_INSCRIRE) ; |
array_push ($ligne_projet, '<a href="'.$this->_url->getURL().'">'.PROJET_S_INSCRIRE.'</a>') ; |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION); |
array_push ($liste_projet, $ligne_projet) ; |
} |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
$HTML_projetNonParticipantListe->construitListe($liste_projet) ; |
if ($HTML_projetNonParticipantListe->getRowCount() > 1) $res .= $HTML_projetNonParticipantListe->toHTML() ; |
} else { |
$projetNonParticipantListe = & $projetListe ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_listeProjet.class.php' ; |
$HTML_projetNonParticipantListe = new HTML_listeProjet(true) ; |
$entete_liste = array (PROJET_LISTE) ; |
$HTML_projetNonParticipantListe->construitEntete($entete_liste) ; |
$liste_projet = array() ; |
// La liste |
foreach ($projetNonParticipantListe as $projet) { |
$this->_url->addQueryString(PROJET_VARIABLE_ID_PROJET, $projet->getId()) ; |
$ligne_projet = array ( $projet->getResume(), |
'<a href="'.$this->_url->getURL().'">'.$projet->getTitre().'</a>', // le nom du projet |
) ; |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION); |
array_push ($liste_projet, $ligne_projet) ; |
} |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
$HTML_projetNonParticipantListe->construitListe($liste_projet) ; |
if ($HTML_projetNonParticipantListe->getRowCount() > 1) { |
$res .= '<p>'.PROJET_TOUS_LES_PROJETS.'</p>' ; |
$res .= $HTML_projetNonParticipantListe->toHTML() ; |
} |
} |
// Nettoyage de l'url |
if (PROJET_UTILISE_TYPE && $this->_type != '') { |
$tpl->setVariable('liste_projet', $res) ; |
$res = $tpl->get(); |
} |
$this->_url->removeQueryString (PROJET_VARIABLE_ID_PROJET); |
return $titre.$res ; |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.3 2006/09/18 09:56:28 alexandre_tb |
* utilisation d'un template pour l'entête de la liste des projets |
* |
* Revision 1.2 2005/11/28 16:25:23 alexandre_tb |
* nettoyage URL en sortie de programme |
* |
* Revision 1.1 2005/11/25 14:47:51 alexandre_tb |
* version initiale |
* |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_menes/presentation/tela.php |
---|
New file |
0,0 → 1,176 |
<?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: tela.php,v 1.5.2.1 2007-04-11 14:24:39 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Fichier de présentation de la liste des projets pour Tela Botanica |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.5.2.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
define ('PROJET_LISTE_RESUME', false) ; |
if (PROJET_UTILISE_TYPE && $this->_type != '') { |
$projetListe = projet::getProjetDuType($this->_type, $this->_db) ; |
if ($this->_presentation == 'arbre')array_push ($projetListe, projet::getProjetRacine($this->_db)) ; |
} else { |
// Un tableau de tous les projets dans $projetListe |
//$projetListe = projet::getTousLesProjets($this->_db, $this->_projet_exclu) ; |
} |
// requete pour recuperer la liste des projets |
$requete = 'select p_id, p_titre, p_wikini, pl_id_liste, plle_id_liste, p_avoir_document from'. |
' projet left join projet_lien_liste on p_id=pl_id_projet'. |
' left join projet_lien_liste_externe on p_id=plle_id_projet'. |
' group by p_id order by p_titre' ; |
$resultat = $this->_db->query($requete) ; |
if (DB::isError($resultat)) { |
return ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$res = '<h1>Liste des projets et forums de Tela Botanica</h1>'."\n" ; |
// Ajout du cartouche résumant la création d'un projet. |
$res .= '<div class="notes"> |
<h4>Créez votre projet...</h4> |
<p class="last"> Toute personne inscrite au réseau Tela Botanica peut demander à créer un forum de discussion ou monter un projet collaboratif. <br /> |
<a href="http://www.tela-botanica.org/page:creez_votre_projet">Voir la démarche en détail</a></p> |
</div>'; |
// On inclue un fichier local |
if (file_exists(PROJET_CHEMIN_APPLI.'langues/pro_langues_fr.local.inc.php')) |
include_once PROJET_CHEMIN_APPLI.'langues/pro_langues_fr.local.inc.php' ; |
// On vérifie si l'utilisateur participe à des projets |
$projetNonParticipantListe = & $projetListe ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_listeProjet.class.php' ; |
$HTML_projetNonParticipantListe = new HTML_listeProjet(true) ; |
$entete_liste = array ('Titre des projets et des forums', 'Forums', 'Wiki','RSS', 'Documents', 'Participants',) ; |
$HTML_projetNonParticipantListe->construitEntete($entete_liste) ; |
$liste_projet = array() ; |
// La liste |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
$this->_url->addQueryString(PROJET_VARIABLE_ID_PROJET, $ligne->p_id) ; |
// Recherche du forum |
if ($ligne->pl_id_liste != null) { |
$this->_url->addQueryString('act', PROJET_ACTION_VOIR_FORUM); |
$forum = '<a href="'.$this->_url->getURL().'"><img src="sites/commun/generique/images/favicones/tela_botanica.png" alt="Tela Botanica"/></a>'; |
} else { |
include_once PROJET_CHEMIN_CLASSES.'liste_externe.class.php' ; |
$listes_ext = new liste_externe ($this->_db) ; |
if ($ligne->plle_id_liste != null) { |
$info_liste = $listes_ext->getInfoListe($ligne->plle_id_liste) ; |
$forum = '<a href="'.$info_liste->AGO_A_URLGRP. |
'"><img src="sites/commun/generique/images/favicones/yahoo.png" alt="Yahoo"/></a>'; |
} else { |
$forum = '-'; |
} |
} |
if ($ligne->p_wikini) { |
$this->_url->addQueryString ('act',PROJET_ACTION_VOIR_WIKINI); |
$link=$this->_url->getURL(); |
$wiki_res = '<a href="'.$link.'">voir</a>' ; |
$this->_url->removeQueryString ('act'); |
} else { |
$wiki_res = '-' ; |
} |
$titre= '<a href="'.$this->_url->getURL().'">'.$ligne->p_titre.'</a>'; |
if ($ligne->p_avoir_document != 0) { |
$this->_url->addQueryString('act', PROJET_ACTION_VOIR_DOCUMENT) ; |
$document = '<a href="'.$this->_url->getURL().'">voir</a>' ; |
} else { |
$document = '-' ; |
} |
if ($ligne->p_wikini) { |
$this->_url->addQueryString ('act',PROJET_ACTION_VOIR_WIKINI); |
$link=$this->_url->getURL(); |
$wiki_rss = '<a href="'.$link.'&wiki=DerniersChangementsRSS/xml'.'"><img src="sites/commun/generique/images/rss.gif" alt="rss"/></a>' ; |
$this->_url->removeQueryString ('act'); |
} else { |
$wiki_rss = '-' ; |
} |
$this->_url->addQueryString ('act', PROJET_ACTION_VOIR_PARTICIPANT); |
$participant = '<a href="'.$this->_url->getURL().'">voir</a>' ; |
$ligne_projet = array ( '', $titre, $forum, // le nom du projet |
$wiki_res, $wiki_rss,$document, $participant) ; |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION); |
array_push ($liste_projet, $ligne_projet) ; |
} |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
$HTML_projetNonParticipantListe->construitListe($liste_projet) ; |
if ($HTML_projetNonParticipantListe->getRowCount() > 1) { |
///$res .= '<p>'.PROJET_TOUS_LES_PROJETS.'</p>' ; |
$res .= $HTML_projetNonParticipantListe->toHTML() ; |
} |
// Nettoyage de l'url |
$this->_url->removeQueryString (PROJET_VARIABLE_ID_PROJET); |
return $res ; |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.5 2006/10/30 11:26:11 jp_milcent |
* Modification du cartouche concernant la création d'un projet sur Tela. |
* |
* Revision 1.4 2006/01/09 21:55:19 ddelon |
* flux rss dans liste des projets |
* |
* Revision 1.3 2005/12/07 11:02:35 jp_milcent |
* Ajout d'attribut alt aux images. |
* |
* Revision 1.2 2005/11/28 11:15:22 alexandre_tb |
* nettoyage URL en sortie de programme |
* |
* Revision 1.1 2005/11/25 14:47:51 alexandre_tb |
* version initiale |
* |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_menes/projet_derniers_telechargements.php |
---|
New file |
0,0 → 1,181 |
<?php |
/* +-----------------------------------------------------------------------+ |
* |projet_derniers_telechargement.php | |
* +-----------------------------------------------------------------------+ |
* | Copyright (c) 2001 - 2005 Tela Botanica | |
* +-----------------------------------------------------------------------+ |
* | Affiche les derniers fichiers uploader dans le module projet | |
* +-----------------------------------------------------------------------+ |
* | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
* +-----------------------------------------------------------------------+ |
* $Id: projet_derniers_telechargements.php,v 1.3 2005-10-06 08:23:48 alexandre_tb Exp $ |
*/ |
// Cette application affiche les derniers documents uploadé dans le module projet |
// ainsi que tous les documents du module |
// =========================================================== |
// Configuration |
// =========================================================== |
// Le nombre à afficher |
define ("PROJET_TELECHARGEMENT_NOMBRE", 8) ; |
//==================== Les labels ======================================= |
define ("PROJET_TELECHARGEMENT_TITRE", "Page de téléchargements rapides") ; |
define ("PROJET_TELECHARGEMENT_DERNIERS", "Derniers documents mis en ligne") ; |
define ("PROJET_TELECHARGEMENT_TOUS", "Tous les documents, par projet") ; |
//=============bibliothèques PEAR =================================== |
include_once 'HTML/Table.php' ; |
include_once 'HTML/TreeMenu.php' ; |
// ========== Bibliothèque Projet ==================================== |
include_once 'configuration/projet.config.inc.php' ; |
include_once PROJET_CHEMIN_CLASSES.'projetControleur.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'document.class.php' ; |
include_once PROJET_CHEMIN_APPLI.'langues/pro_langue_fr.inc.php' ; |
function afficherContenuCorps() { |
global $id_projet, $repcourant, $baseURL, $projet ; |
global $G_ftpHost,$G_ftpUser,$G_ftpPwd,$G_ftpLocal, $PHP_SELF; |
// à remplacer par un div pour genesia |
$res = "<h1>".PROJET_TELECHARGEMENT_TITRE."</h1>\n" ; |
$res .= "<h2>".PROJET_TELECHARGEMENT_DERNIERS."</h2>\n" ; |
$liste_documents = document::getDocumentsRecents( $nombre = 10, $GLOBALS['projet_db'], PROJET_CHEMIN_FICHIER,PROJET_CHEMIN_ICONES) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_Liste.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_listeDocuments.class.php' ; |
$vue_liste_document = new HTML_listeDocuments($GLOBALS['url'], false, '', $GLOBALS['projet_auth']) ; |
$vue_liste_document->setCheminIcones(PROJET_CHEMIN_ICONES) ; |
$entete_liste = array (PROJET_FICHIERS_NOM, PROJET_FICHIERS_TAILLE, PROJET_FICHIERS_PAR, PROJET_FICHIERS_CREE_LE) ; |
if (!isset($droits)) $droits = PROJET_DROIT_AUCUN ; |
$vue_liste_document->construitEntete($entete_liste) ; |
$vue_liste_document->construitListe ($liste_documents, $droits, 'ignore_repertoire', $GLOBALS['projet_db']) ; |
$res .= $vue_liste_document->toHTML() ; |
$res .= "<h2>".PROJET_TELECHARGEMENT_TOUS."</h2>\n" ; |
// Création de l'objet TreeMenu |
GEN_stockerFichierScript(1, "api/TreeMenu/TreeMenu.js") ; |
// Les noms des fichiers graphiques |
$icon = 'folder.gif'; |
$expandedIcon = 'folder-expanded.gif'; |
$i = 0 ; |
// Requete sur les projets |
$requete = "SELECT p_titre, p_id FROM projet ORDER BY p_titre" ; |
$resultat = $GLOBALS['projet_db']->query ($requete) or die ("Echec <br />".mysql_error()."<br />$requete") ; |
$menu = new HTML_TreeMenu() ; |
$node = new HTML_TreeNode(array('text' => "Les projets de Tela Botanica", 'link' => "", 'icon' => $icon, 'expandedIcon' => $expandedIcon)); |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
$titre = $ligne->p_titre ; |
$node_1[$i] = &$node->addItem (new HTML_TreeNode(array('text' => $titre, 'link' => "", 'icon' => $icon, 'expandedIcon' => $expandedIcon))); |
projet_fichiers (&$node_1[$i], $ligne->p_id) ; |
$i++ ; |
} |
$menu->addItem($node); |
$treeMenu = &new HTML_TreeMenu_DHTML($menu, array('images' => 'api/TreeMenu/images', 'defaultClass' => 'text')); |
$res .= "<p>".$treeMenu->toHTML()."</p>\n" ; |
return $res ; |
} |
/** fonction projet_fichiers() - Remplie un noeud avec les fichiers et répertoires |
* |
* Le noeud est passé en référence. Ainsi, cette fonction ne retourne rien mais modifie le tableau des |
* noeuds passé en référence. |
* |
* return void |
*/ |
function projet_fichiers ($noeud, $id_rep, $pere = 0) |
{ |
//Récupération de l'identifiant du répertoire courant |
//La fonction est appelé récursivement quand $pere ne vaut pas null |
//$id_rep prend donc la valeur de $pere transmise par l'appel précédent de la fonction. |
// Les noms des fichiers graphiques |
$icon = 'folder.gif'; |
$expandedIcon = 'folder-expanded.gif'; |
//Requête pour récupérer les noms des répertoires contenus dans le répertoire courant ($id_rep) |
$queryRep = ' SELECT projet_documents.*'. |
' FROM projet_documents'. |
' WHERE projet_documents.pd_pere = '.$pere. |
' AND projet_documents.pd_visibilite = "public" and pd_ce_projet='.$id_rep.' and pd_ce_type=0'. |
' ORDER BY projet_documents.pd_nom ASC' ; |
$resultRep = $GLOBALS['projet_db']->query($queryRep) ; |
if (DB::isError ($resultRep)) { |
die ('Echec de la requete : '.$queryRep.'<br />'.$resultRep->getMessage()) ; |
} |
//Stockage des informations sur les répertoires contenu dans le répertoire courant pour affichage dans un arbre. |
//Et appel récursif de la fonction pour examiner le contenu de chaque répertoire du répertoire courant. |
if ( $resultRep->numRows() != 0 ) { |
while ( $ligneRep = $resultRep->fetchRow(DB_FETCHMODE_OBJECT) ) { |
//Stockage des informations sur le répertoire courant |
$noeud1_1 = &$noeud->addItem(new HTML_TreeNode( |
array( |
'text' => trim ($ligneRep->pd_nom), |
'link' => "", 'icon' => $icon, |
'expandedIcon' => $expandedIcon ) ) ); |
//Appel récursif de fonction courante |
projet_fichiers (&$noeud1_1, $id_rep, $ligneRep->pd_id) ; |
} |
} |
// Requête pour récupérer les fichiers du répertoire courant ($id_rep) et leurs informations |
$requete_fichiers = 'SELECT projet_documents.*, gen_type_de_fichier.gtf_type_icone'. |
' FROM projet_documents, gen_type_de_fichier'. |
' WHERE projet_documents.pd_ce_type= gen_type_de_fichier.gtf_id_type'. |
' AND projet_documents.pd_visibilite= "public" ' ; |
if ($pere == 0) { |
$requete_fichiers .= ' AND projet_documents.pd_ce_projet= '.$id_rep.' and pd_pere=0 and pd_ce_type <> 0' ; |
} else { |
$requete_fichiers .= ' AND projet_documents.pd_pere= '.$pere.' and pd_ce_type<>0' ; |
} |
$requete_fichiers .= ' ORDER BY projet_documents.pd_nom ASC' ; |
$resultat_fichiers = $GLOBALS['projet_db']->query($requete_fichiers) ; |
if (DB::isError ($resultat_fichiers)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat_fichiers->getMessage()) ; |
} |
//Stockage des informations sur les fichiers du répertoires courant pour affichage dans un arbre |
if ( $resultat_fichiers->numRows() != 0 ) { |
while ( $ligne_fichiers = $resultat_fichiers->fetchRow(DB_FETCHMODE_OBJECT) ) { |
//Ajout de slash devant les caractères spéciaux et suppression des caractères invisibles en début et fin des noms de fichier. |
$lien = trim( $ligne_fichiers->pd_nom ); |
$noeud_1_2 = &$noeud->addItem (new HTML_TreeNode ( |
array ( |
"text" => $lien, |
"link" => PROJET_CHEMIN_FICHIER.$ligne_fichiers->pd_lien, |
'icon' => $ligne_fichiers->gtf_type_icone, |
"linkTarget" => "_blank" ))) ; |
} |
} |
} |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_menes/projetRSS.php |
---|
New file |
0,0 → 1,77 |
<?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 Lesser 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 | |
// | Lesser General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU Lesser 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: projetRSS.php,v 1.2 2005-10-28 07:34:32 florian Exp $ |
/** |
* Générateur de flux RSS à partir du bazar |
* |
*@package bazar |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
* |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.2 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once 'configuration/projet.inc.php'; //fichier de configuration de Bazar |
include_once 'bibliotheque/projet.fonct.rss.php'; //fichier des fonctions RSS de Bazar |
// +------------------------------------------------------------------------------------------------------+ |
// | CORPS DU PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
if (isset($_GET['domaine'])) { |
$domaine=$_GET['domaine']; |
} |
else { |
$domaine=''; |
} |
if (isset($_GET['nbitem'])) { |
$nbitem=$_GET['nbitem']; |
} |
else { |
$nbitem=''; |
} |
if (isset($_GET['liste'])) { |
$liste=$_GET['liste']; |
} |
else { |
$liste=''; |
} |
echo html_entity_decode(gen_RSS($domaine, $nbitem, $liste)); |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.1 2005/10/25 13:50:34 alexandre_tb |
* version initiale |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_menes/forums-hlp.php |
---|
New file |
0,0 → 1,442 |
<?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: forums-hlp.php,v 1.1 2005-09-22 14:02:48 ddelon Exp $ |
/** |
* Application aide d'un forum |
* |
* Fichier d'appel pour papyrus |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once PROJET_CHEMIN_APPLI.'configuration/projet.config.inc.php' ; |
include PROJET_CHEMIN_APPLI.'forums.functions.php'; |
/* DEBUT APPLI */ |
function putFrame () |
{ |
/* Inclusion des paramètres généraux spécifiques au programme */ |
include PROJET_CHEMIN_APPLI.'forums.param.php' ; |
/* Global des variables */ |
global $forum; |
$parag = $_GET['parag'] ; |
/* initialisation des variables */ |
if (!empty($GS_ARGUMENTS['sel_rub'])) $sel_rub = $GS_ARGUMENTS['sel_rub']; |
if (!empty($GS_ARGUMENTS['forum'])) $forum = $GS_ARGUMENTS['forum']; |
$ret = "<!-- DEBUT -->\n\n"; |
// si $forum est vide, on attribue le forum par défaut à la variable : [exemple] |
if ($forum == "") |
{ |
$forum = "[exemple]"; |
$what_aff_titre = "générale des forums"; |
} |
else $what_aff_titre = "du forum $forum"; |
/* ouverture de la première ligne de la table (titre) */ |
$ret .= "<table><tr>"; |
$ret .= "<td> </td>"; |
$ret .= "</tr>"; |
$ret .= "<tr>"; |
$ret .= "<td align=\"center\">Aide $what_aff_titre</td>"; |
$ret .= "</tr>"; |
$ret .= "<tr>"; |
$ret .= "<td> </td>"; |
$ret .= "</tr>"; |
/* fin de la première ligne de la table */ |
/* ouverture de la deuxième ligne de la table (boutons) */ |
$ret .= "<tr>"; |
/* la requête récupère les données puis on ferme l'accès à la base */ |
$query = "select AGO_A_MAILABO, AGO_A_MAILSEND, AGO_A_MAILDESA, AGO_A_URLGRP, AGO_A_PROP_E from ".$tbl['forums']." where AGO_A_NOMGRP like '$forum'"; |
$do_query = mysql_query($query) or die ("<b>Erreur de Query :</b> $query"); |
$num = mysql_num_rows($do_query); |
if ($num == 1) |
{ |
$row = mysql_fetch_object($do_query); |
$mailabo = $row->AGO_A_MAILABO; |
$mailsend = $row->AGO_A_MAILSEND; |
$maildesa = $row->AGO_A_MAILDESA; |
$urlgrp = $row->AGO_A_URLGRP; |
$mail_prop = $row->AGO_A_PROP_E; |
/* |
Ici, on teste le nom du fournisseur de service |
$what_service est récupéré par forums.param.php |
*/ |
$find_service = ereg($what_service,$mailsend); |
} |
else die("<b>Erreur :</b> la valeur de sélection devrait être égale à 1 ; elle vaut $num."); |
mysql_free_result($do_query); |
mysql_close(); |
$ret .= "<td align=\"center\">"; |
$ret .= "<table border=\"0\" summary=\"\" cellspacing=\"2\" cellpadding=\"0\"><tr>"; |
$ret .= "<td>"; |
if ($parag == "") $get_the_url = 'NULL'; else $get_the_url = $GLOBALS['url']->getURL ; |
$ret .= afficheBouton("center", "Memento", "$get_the_url"); |
$ret .= "</td><td>"; |
if ($parag == "definitions") { |
$get_the_url = 'NULL' ; |
} else { |
$GLOBALS['url']->addQueryString ('parag', 'definitions') ; |
$get_the_url = $GLOBALS['url']->getURL() ; |
} |
$ret .= afficheBouton("center", "Généralités", $get_the_url); |
$ret .= "</td>"; |
if ($find_service == 1) |
{ |
$ret .= "<td>"; |
if ($parag == "services") $get_the_url = "NULL"; |
else { |
$GLOBALS['url']->addQueryString ('parag', 'services') ; |
$get_the_url = $GLOBALS['url']->getURL() ; |
} |
$ret .= afficheBouton("center", "Services Yahoo", "$get_the_url"); |
$ret .= "</td><td>"; |
if ($parag == "identification") $get_the_url = "NULL"; |
else { |
$GLOBALS['url']->addQueryString ('parag', 'identification') ; |
$get_the_url = $GLOBALS['url']->getURL() ; |
} |
$ret .= afficheBouton("center", "Identification", "$get_the_url"); |
$ret .= "</td><td>"; |
if ($parag == "faq") $get_the_url = "NULL"; |
else { |
$GLOBALS['url']->addQueryString ('parag', 'faq') ; |
$get_the_url = $GLOBALS['url']->getURL() ; |
} |
$ret .= afficheBouton("center", "FAQ Yahoo", "$get_the_url"); |
$ret .= "</td>"; |
} |
$ret .= "</tr></table>"; |
$ret .= "</td>"; |
$ret .= "</tr>"; |
$ret .= "<tr>"; |
$ret .= "<td> </td>"; |
$ret .= "</tr>"; |
/* ouverture de la troisième ligne (contenu de l'aide) */ |
$ret .= "<tr>"; |
$ret .= "<td>"; |
$ret .= '<hr size="1" />'; |
/* |
il y a plusieurs rubriques dans l'aide : |
- Mémento (affiché par défaut) : récapitule les adresses mails et web de base, |
- Définition : rappel des bases de ce qu'est une liste de discussion, |
- Services Yahoo : les services spécifiques de Yahoo!, |
- Identification : rappel sur la procédure d'indentification Yahoo!, |
- FAQ : la FAQ de l'aide, |
*/ |
if ($parag == "faq") |
{ |
$ret .= "<span>Foire Aux Questions YahooGroups</span>"; |
$ret .= '<hr size="1" />'; |
$ret .= "</td></tr>"; |
$ret .= "<tr><td>"; |
$ret .= "<br />La <b>Foire Aux Questions</b> est un document qui regroupe les questions fréquement posées au sujet des Forums. Cette rubrique sera complétée au fur et à mesure des questions posées par les utilisateurs et les modérateurs. N'hésitez pas à nous faire part de votre propre expérience, de vos remarques, ou de vos question à l'adresse <a href=\"mailto:forums@tela-botanica.org\">forums@tela-botanica.org</a>.<br /><br />Cette FAQ ne concerne que des problèmes liés à YahooGroups.<br /><br />"; |
$ret .= "<a name=\"liste_faq\"></a> |
<ol> |
<li> <a href=\"#chang\">Je suis modérateur d'un forum. Un des abonnés vient de changer d'adresse de courriel. Comment changer l'adresse de courriel d'un abonné dans le système YahooGroups ?</a><br /><br /></li> |
<li> <a href=\"#boitdoc\">Comment déposer un document dans la boite à document d'un forum ?</a><br /><br /></li> |
<li> <a href=\"#supp\">Je suis modérateur. Comment supprimer un membre de la liste ?</a><br /><br /></li> |
<li> <a href=\"#nomail\">Je ne pourrais pas relever mes courriels pendant plusieurs jours. Comment éviter l'encombrement de ma boite à lettres électroniques sans pour autant me désabonner ?</a><br /><br /></li> |
<li> <a href=\"#mailnb\">Je dispose de plusieurs adresses mail ; puis-je envoyer des mails à un forum à partir de toutes ces adresses ?</a><br /><br /></li> |
<li> <a href=\"#rech\">Je souhaiterais faire une recherche dans les messages qui ont déjà été envoyés...</a></li> |
</ol>"; |
$ret .= '<hr size="1" />'; |
$ret .= "</td></tr>"; |
$ret .= "<tr><td>"; |
$ret .= "<ol> |
<li><a name=\"chang\"></a> Je suis modérateur d'un forum. Un des abonnés vient de changer d'adresse de courriel. Comment changer l'adresse de courriel d'un abonné dans le système YahooGroups ?<br /><br /> |
<b>R.</b> Il n'est pas possible de changer directement l'adresse d'un abonné ; cependant, des solutions de contournement existent.<br /><br /> |
<ul> |
<li> La première solution consiste à désabonner l'ancienne adresse puis à abonner la nouvelle adresse, sans demander la confirmation de l'utilisateur.</li> |
<li> La seconde méthode consiste à demander à l'abonné de faire la manipulation lui-même, par exemple en allant sur l'interface YahooGroups <a href=\"http://fr.groups.yahoo.com/mygroups\" target=\"blank\">http://fr.groups.yahoo.com/mygroups</a> ; il faut qu'il s'identifie (nous vous l'expliquons la manipulation si vous cliquez notre bouton \"Identification\") puis qu'il clique sur le lien \"Info Compte\". Dans les Informations Personnelles, cliquer sur Modifier, puis dans \"Information d'e-mail\", faire les modifications qui s'imposent.</li>"; |
if (($mailabo != "")&&($maildesa != "")) $ret .= "<li> Dernière méthode (quelque peu détournée) : l'utilisateur peut aussi se désabonner à la liste en envoyant un courriel avec son ancienne adresse à <a href=\"mailto:$maildesa\">$maildesa</a> puis envoyer un mail d'abonnement à la liste avec sa nouvelle adresse à <a href=\"mailto:$mailabo\">$mailabo</a>.</li>"; |
$ret .= " </ul> |
<br />[<a href=\"#liste_faq\">Retour aux Questions</a>]<br /><br /> |
</li> |
<li><a name=\"boitdoc\"></a> Comment déposer un document dans la boite à document d'un forum ? |
<br /><br /> |
<b>R.</b> Pour pouvoir procéder à la manipulation, vous devez être identifié. Pour vous identifier auprès de YahooGroups : cliquez sur le bouton \" Identification\". |
<br /><br /> Après identification, pour déposer un document (image / texte ...) : |
<br /><br /> |
<ul> |
<li> Allez sur <a href=\"http://fr.groups.yahoo.com/group/$forum/files/\" target=\"blank\">http://fr.groups.yahoo.com/group/$forum/files/</a>.</li> |
<li> Cliquez sur le lien \"Créer un dossier\" pour ajouter un nouveau dossier dans lequel ranger les documents ou cliquez sur le dossier dans lequel ranger le document à partager. <b>Attention ! Lorsque vous donnerez un nom à un dossier, proscrivez absolument les caractères spéciaux (à, é, ê et autres caractères accentués) de même que les majuscules et les espaces</b>.</li> |
<li> Cliquez sur \"Ajouter un fichier\".</li> |
<li> Pour sélectionner le fichier sur votre disque dur, cliquez sur \"Parcourir\" puis validez. <b>Attention ! Lorsque vous donnerez un nom à un fichier, proscrivez absolument les caractères spéciaux (à, é, ê et autres caractères accentués) de même que les majuscules et les espaces</b>.</li> |
<li> Saisissez les informations complémentaires (description etc.).</li> |
<li> Cochez les options que vous souhaitez (la diffusion automatique est pratique, mais il ne faut pas en abuser, surtout avec des fichiers un peu lourds). Petit truc : si vous téléchargez ou créez un fichier texte (au format TXT) il ne sera pas envoyé sous forme de fichier joint mais sera automatiquement écrit dans un mail.</li> |
</ul> |
<br />Pour accéder directement à votre fichier, son adresse sera : |
<b>http://fr.groups.yahoo.com/group/$forum/files/[nom-du-dossier]/[nom-du-fichier]</b>. |
<br /><br />Afin d'éviter tout problème de surcharge en octets ou de virus, nous recommandons les formats de fichiers suivants : JPG (JPEG) pour les photos, GIF pour les images ou les dessins, RTF ou TXT pour les documents textes. |
<br /><br />[<a href=\"#liste_faq\">Retour aux Questions</a>]<br /> |
<br /> |
</li> |
<li><a name=\"supp\"></a> Je suis modérateur. Comment supprimer un membre de la liste ? |
<br /><br /> |
<b>R.</b> Pour désabonner un membre, il suffit d'afficher la liste des abonnés (<a href=\"http://fr.groups.yahoo.com/group/$forum/members\" target=\"blank\">http://fr.groups.yahoo.com/group/$forum/members</a>), de sélectionner \"Désinscrire\" dans le menu déroulant à la ligne de la personne concernée, puis de cliquer sur le bouton \"Valider\". Vérifier quand même après si la personne a bien été désabonnée, mais, en règle générale, il n'y a pas de problème. |
<br /><br />[<a href=\"#liste_faq\">Retour aux Questions</a>]<br /> |
<br /> |
</li> |
<li><a name=\"nomail\"></a> Je ne pourrais pas relever mes courriels pendant plusieurs jours. Comment éviter l'encombrement de ma boite à lettres électroniques sans pour autant me désabonner ? |
<br /><br /> |
<b>R.</b> Quand vous vous absentez (vacances, absence prolongée loin de votre ordinateur...), si vous souhaitez éviter de saturer vos boites à lettres, il vous suffit de modifier les options de distribution des courriels en provenance des listes pour lesquelles vous êtes abonné. |
<br /><br />Pour cela allez dans l'espace de gestion de vos forums (<a href=\"http://fr.groups.yahoo.com/mygroups\" target=\"blank\">http://fr.groups.yahoo.com/mygroups</a>) ; la liste des forums auxquels vous êtes abonné s'affiche (si vous êtes Identifié ; sinon, il vous faudra vous identifier : voir la rubrique \"Identification\"). |
<br /><br />Cliquez sur \"Modifier les modes d'envoi\". Vous pouvez sélectionner dans la colonne de droite \"Mode d'Envoi\" le mode de réception des courriels en provenance des forums. Quatre options existent :<br /> |
<ul> |
<li> Emails Séparés (vous recevez tous les courriels émis),</li> |
<li> Emails Groupés (vous ne recevez qu'un courriel par jour, avec tous les mails émis dans la journée et triés par sujet),</li> |
<li> Annonces Particulières (uniquement les messages ayant ce statut),</li> |
<li> Pas d'e-mail (vous ne recevez rien, mais vous pouvez toujours consulter les courriels émis via l'interface web des forums, à l'adresse <a href=\"http://fr.groups.yahoo.com/group/$forum/messages\" target=\"blank\">http://fr.groups.yahoo.com/group/$forum/messages</a>).</li> |
</ul> |
<br /> |
Ainsi, vous restez toujours abonné aux forums ; à votre retour, si vous souhaitez rétablir le mode de distribution originel, retournez sur <a href=\"http://fr.groups.yahoo.com/mygroups\" target=\"blank\">http://fr.groups.yahoo.com/mygroups</a>) puis modifiez de nouveau l'option de distribution. |
<br /><br /> |
[<a href=\"#liste_faq\">Retour aux Questions</a>]<br /><br /></li> |
<li><a name=\"mailnb\"></a> Je dispose de plusieurs adresses mail ; puis-je envoyer des mails à un forum à partir de toutes ces adresses ? |
<br /><br /> |
<b>R.</b> Non. Dans la théorie, seule l'adresse avec laquelle vous êtes abonné permet de diffuser des messages sur la liste. |
<br /><br />En effet, l'identification de l'émetteur se base sur l'adresse mail, qui est unique, et qui nécessite généralement une identification pour envoyer des emails. |
<br /><br />Mais on peut contourner ce système ; il suffit de définir des adresses secondaires dans votre profil pour autoriser ces adresses à émettre des mails vers les forums auxquels vous êtes abonné. |
<br /><br />Allez sur sur l'interface YahooGroups / Infos Compte : <a href=\"http://fr.groups.yahoo.com/mygroups\" target=\"blank\">http://fr.groups.yahoo.com/mygroups</a> ; il faut s'identifier (nous vous l'expliquons la manipulation si vous cliquez notre bouton \"Identification\") puis cliquer sur le lien \"Info Compte\". Dans les Informations Personnelles, cliquer sur Modifier, puis dans \"Information d'e-mail\", faire les modifications qui s'imposent. |
Vous pouvez spécifier des emails supplémentaires. |
<br /><br />Cette option vous permet d'envoyer des messages (mais non de les lire) depuis plusieurs comptes emails. |
<br /><br />[<a href=\"#liste_faq\">Retour aux Questions</a>] |
<br /><br /></li> |
<li><a name=\"rech\"></a> Je souhaiterais faire une recherche dans les messages qui ont déjà été envoyés... |
<br /><br /> |
<b>R.</b> C'est tout à fait possible, et même recommandé pour les nouveaux abonnés. |
<br /><br />On peut avoir accès à la recherche soit à la page d'accueil du forum (<a href=\"http://fr.groups.yahoo.com/group/$forum\" target=\"blank\">http://fr.groups.yahoo.com/group/$forum</a>), soit à la rubrique \"Messages\" du forum (<a href=\"http://fr.groups.yahoo.com/group/$forum/messages\" target=\"blank\">http://fr.groups.yahoo.com/group/$forum/messages</a>). |
<br /><br />Dans la boite de dialogue à coté de \"Rechercher archives\", saisissez l'élément que vous cherchez, puis validez en cliquant sur le bouton. |
<br /><br />[<a href=\"#liste_faq\">Retour aux Questions</a>]</li> |
</ol>"; |
} |
else if ($parag == "definitions") |
{ |
$ret .= "<span>Listes de diffusion : notions de base</span>"; |
$ret .= '<hr size="1" />'; |
$ret .= "</td></tr>"; |
$ret .= "<tr><td>"; |
$ret .= "<br /><b>Définition de la liste de diffusion</b><br /><br />"; |
$ret .= "Une liste de diffusion est un programme-automate qui permet l'échange de messages de façon organisée et automatique. |
<br /><br />Il en existe deux types : |
<ul> |
<li> les listes de diffusion <i>sensus stricto</i> (un émetteur envoi des messages à des abonnés) : l'automate n'autorisera qu'une ou quelques personnes à émettre des messages, et les redistribuera à tous les abonnés.</li> |
<li> les listes de discussion : les abonnés échangent les messages librement entre eux (l'automate recevra tous les messages et les redistribuera lui-même à tous les abonnés).</li> |
</ul> |
D'autre part, une liste peut être privée (l'abonnement est réservé à certains utilisateurs) ou publique (ouverte à tout le monde). |
<br /><br />Enfin, une liste peut être modérée ou non : une liste modérée est une liste dans laquelle une personne physique (le modérateur) reçoit les messages postés par les membres, les vérifie (pour voir s'il n'y a pas de contenu offensant, s'il n'y a pas de contenu hors du propos de la liste etc.). Après vérification, le modérateur approuve ou rejette les messages. Dans le premier cas, ils sont envoyés à tous les abonnés de la liste ; dans le second, ils sont détruits."; |
$ret .= "<br /><br /><b>Des commandes par e-mail ou par le Web</b><br /><br /> |
Au départ, les listes de diffusion étaient un média uniquement utilisable par courriel ; le développement du Web a changé cela. Un automate de liste de diffusion se commande, chez YahooGroups, essentiellement via l'interface Web à la page <a href=\"$urlgrp\" target=\"blank\">$urlgrp</a> ; cependant, certaines commandes peuvent toujours être faites via le courrier électronique. Par exemple : si une personne veut s'abonner à la liste de diffusion, elle n'aura qu'à envoyer un message vide à <a href=\"mailto:$mailabo\">$mailabo</a> et son adhésion sera prise en compte."; |
$ret .= "<br /><br /><b>Différents niveaux d'utilisateurs</b><br /><br /> |
Pour pouvoir être gérées, les listes de diffusion ou de discussion disposent d'un système de hiérarchisation des droits des personnes qui les utilisent. Par droits, on entend \"autorisation d'effectuer certaines actions précises\". |
<ul> |
<li> l'abonné : c'est l'utilisateur de base ; ses droits dépendent du type de la liste ; dans le cas d'une liste de diffusion, il a juste le droit de recevoir des messages ! Dans le cas d'une liste de discussion, il a le droit de poster des messages.</li> |
<li> le modérateur : c'est un utilisateur qui a des droits particuliers (qui peuvent varier selon les configurations de la liste) ; par exemple, un modérateur peut approuver ou rejeter un message. Il peut valider ou rejeter la demande d'adhésion d'un nouvel abonné. Il peut bannir un utilisateur si ce dernier abuse du service (publicité abusive), etc.</li> |
<li> le propriétaire : c'est l'utilisateur le plus \"puissant\" ; il a tous les droits possibles sur la liste, y compris celui de la détruire. Il peut nommer les modérateurs et dispose de tous les droits de ces derniers.</li> |
</ul> |
Les droits attribués aux utilisateurs permettent de leur donner accès à certaines parties d'un site plutôt qu'à d'autres. Ainsi, pas de risque qu'une personne aille modifier une configuration alors qu'elle n'en a pas le droit."; |
} |
else if ($parag == "services") |
{ |
$ret .= "<span>Les services spécifiques YahooGroups</span>"; |
$ret .= '<hr size="1" />'; |
$ret .= "</td></tr>"; |
$ret .= "<tr><td>"; |
$ret .= "<br />YahooGroups propose un certain nombre de petits services plus ou moins utiles ; ces services peuvent être accessibles ou non en fonction de la configuration qui a été choisie par le propriétaire, et selon votre statut dans la liste. Ainsi, un abonné de base ne verra peut-être pas la même chose qu'un modérateur ou qu'un propriétaire, et n'aura probablement pas accès à toutes les options. Certaines rubriques peuvent même être entièrement escamotées pour un groupe d'utilisateurs. Les lignes qui suivent décrivent les grandes rubriques de YahooGroups ; cependant, selon la liste que vous consultez, le propriétaire a peut-être choisi de cacher certaines rubrique. D'autre part, selon votre statut (visiteur, abonné, modérateur, propriétaire), certaines actions ne seront peut-être pas disponibles. |
<br /><br /><b>Accueil</b> : affiche le descriptif de la liste, récapitule les adresses de courriels propres à la liste, quelques statistiques (le nombre de messages classés par mois, le nombre des abonnés...) et les principales options choisies. Affiche aussi les titres des derniers messages. Enfin, elle propose un petit moteur de recherche qui compulse les messages déjà postés afin d'y trouver les mots recherchés. |
<br /><br /><b>Messages</b> : affiche les derniers messages postés par les abonnés ; permet de les afficher par numéro de message ou par \"fil\" de discussion (mais cette dernière option n'est pas très efficace : elle est calculée grâce au sujet indiqué dans les mails, sujet qui peut être modifié). Elle propose aussi un moteur de recherche. |
<br /><br /><b>Messages / En attente</b> : il s'agit là d'un onglet capital lorsque la liste n'est pas totalement ouverte ; cet onglet sert à approuver, rejeter ou ignorer des demandes d'envoi de messages. Si un modérateur approuve, le message est posté à la liste ; si le modérateur rejette, le message n'est pas diffusé (cependant, un courriel est envoyé à la personne à l'origine de la requête) ; si le modérateur ignore, le message n'est pas diffusé (aucun courriel n'est envoyé à la personne à l'origine de la requête). |
<br /><br /><b>Messages / Envoyer</b> : permet d'envoyer directement un message à une liste sans passer par son logiciel de mail. Non accessible à l'abonné de base. |
<br /><br /><b>Tchatche</b> : assez anecdotique, cette onglet \"de convivialité\" permet à tous les utilisateurs de converser en direct ; tous les textes saisis dans la fenêtre adéquate sont partagés en direct avec les autres utilisateurs connectés sur cet onglet en même temps que vous. Il s'agit donc bien là de dialogue en direct. Peu utile, donc indispensable ! |
<br /><br /><b>Fichiers</b> : cet onglet très utile permet de partager des documents entre les membres d'une liste. La boite à documents permet de disposer d'un espace dans lequel sont déposés des fichiers à partager avec les autres utilisateurs, ou par exemple pour mettre à disposition des fichiers souvent demandés par les utilisateurs (montant d'abonnements, etc.). Ainsi, il est possible de télécharger des fichiers vers la boite à documents et de permettre aux utilisateurs de venir les chercher. A noter : le paramétrage de la liste permet de définir qui a l'autorisation de déposer ou de récupérer des fichiers ; les autorisations peuvent même être individuelles. Les fichiers, comme sur un disque dur, peuvent être rangés dans différents dossiers. Remarque importante : lorsque vous donnerez un nom à un dossier ou à un fichier, dans la boite à documents, proscrivez absolument les caractères spéciaux (à, é, ê et autres caractères accentués ou originaux), de même que les majuscules et les espaces. Enfin, certains fichiers peuvent être envoyés automatiquement selon certains critères : avec une fréquence déterminée ou lors d'évènements particuliers (abonnement d'un membre, désabonnement... ). |
<br /><br /><b>Signets</b> : cet onglet très utile permet aux personnes qui en ont le droit (tel que défini dans les paramètres du groupe) de donner et partager des adresses de sites Web qui peuvent intéresser le groupe. Là encore, les liens peuvent être rangés dans différents dossiers thématiques. |
<br /><br /><b>Sondages</b> : cet onglet permet de créer des sondages ou des votes ; on crée une question, on défini les quelques réponses possibles, on paramètre les options (les résultats doivent-ils être visibles pendant le vote ? Le vote est-il nominal ?... ) et on valide ; les abonnés sont alors invités à voter, et, à la fin du sondage, le résultat est publié selon les choix de la personne ayant proposé le sondage. |
<br /><br /><b>Membres</b> : permet de visionner ou de rechercher un abonné ou une liste d'abonnés (par défaut : tous les abonnés). Cet onglet permet d'ajouter ou de supprimer des abonnés (pour ceux qui en ont le droit), ainsi que de télécharger la liste des abonnés au format texte (il est vivement conseillé de le faire régulièrement). Le lien modérateurs/abonnés permet de basculer entre la liste des abonnés à la liste des modérateurs uniquement. Enfin, cet onglet permet de modifier le mode de réception des courriels de chacun des membres. |
<br /><br /><b>Membres / En attente</b> : il s'agit là d'un onglet capital lorsque la liste n'est pas totalement ouverte ; cet onglet sert à approuver, rejeter ou ignorer des demandes d'adhésion. Si un modérateur approuve, le demandeur est abonné/désabonné à/de la liste ; si le modérateur rejette, le demandeur n'est pas abonné/désabonné (cependant, un courriel est envoyé à la personne à l'origine de la requête) ; si le modérateur ignore, le demandeur n'est pas abonné/désabonné (aucun courriel n'est envoyé à la personne à l'origine de la requête). Non accessible à l'abonné de base. |
<br /><br /><b>Membres / Retour à l'expéditeur</b> : cet onglet très important recense les abonnés dont les adresses de courriels posent problème. Le courriel n'est pas 100% parfait, et si les serveurs Internet ont des problèmes pour acheminer un mail, ce dernier peut être retourné à l'expéditeur. Or, quand on envoi un message à la liste, cette dernière le renvoi à tout le monde : si le serveur mail d'un destinataire est \"indisposé\", le mail est retourné à la liste, avec le risque de le publier de nouveau sur la liste, donc de le refaire partir vers le destinataire indisposé, donc donc donc ... La boucle est infernale et peut conduire à une accumulation d'un même mail sur une liste, et, accessoirement, créer de gros problèmes de saturation des serveurs emails ; une bonne liste de diffusion bloque donc les adresses de courriel posant problème. YahooGroups le fait très bien, et peut bloquer de manière temporaire ou définitive l'adresse mail d'un abonné. Si le blocage est définitif, l'abonné ne recevra plus de courriels ; seul le modérateur peut réactiver l'adresse e-mail : il faut alors passer par l'onglet Retour à l'Expéditeur. Non accessible à l'abonné de base. |
<br /><br /><b>Membres / Exclure</b> : cet onglet est important aussi, même si son utilisation est très rare, et doit rester rare ! Il sert à bloquer les adresses de courriel de personnes indésirables sur une liste de discussion. Ainsi, si une personne émet à répétition des propos déplacés, hors contexte de la liste, injurieux, hors-la loi etc., elle peut être désabonnée. Si elle se réabonne et recommence son manège, il faut alors la bannir : en inscrivant son adresse de courriel dans l'onglet Exclure, on interdit à cette personne d'accéder aux services de la liste ou de publier des messages. Attention, cependant : cela ne bloque qu'une adresse e-mail. Si l'abonné indésirable recommence son manège avec une autre adresse e-mail, il faudra aussi bannir ce mail... Non accessible à l'abonné de base. |
<br /><br /><b>Agenda</b> : ce calendrier permet aux abonnés de signaler une date importante (colloque, sortie de terrain, réunions... ). On parle alors \"d'événement\". Le calendrier permet aussi de retrouver ces dates, de les faire connaître par courriel aux abonnés, de les rappeler x jours avant leur échéance, etc. |
<br /><br /><b>Promouvoir</b> : cet onglet vous fournit des codes sources à insérer dans les pages Web HTML de votre site ; ils permettent aux visiteurs de votre site de s'abonner (ou de demander l'abonnement si l'option de restriction a été choisie) directement, sans avoir à passer par l'interface Web de YahooGroups. Non accessible à l'abonné de base. |
<br /><br /><b>Inviter</b> : cet onglet permet d'envoyer un mail d'invitation à des personnes dont vous aurez saisi l'adresse email dans une boite de dialogue. Vous pouvez inviter une ou plusieurs personnes, ou les abonner directement à au groupe. Cependant, il n'est pas recommandé d'ajouter de force des gens dans un forum (c'est absolument contraire à la Nétiquette et à la Loi Informatique et Libertés !). |
<br /><br /><b>Paramètres</b> : cet onglet permet de définir tous les paramètres de la liste ; ces paramètres sont très nombreux et nécessiteraient une notice d'explications à part entière (notice à venir ?). Non accessible à l'abonné de base. |
<br /><br /><b>Activité</b> : cet onglet est très pratique pour suivre les mouvements de votre liste : abonnements/désabonnements, validation de l'envoi de messages par les abonnés ou non abonnés, utilisation des services Web du site YahooGroups (dépôt de fichiers, de liens vers des sites... ), etc. Non accessible à l'abonné de base. |
<br /><br /><b>Sous-rubriques de l'Accueil</b> - La rubrique Accueil propose quelques liens peu visibles mais très importants : |
<ul><li><b>Option d'Envoi</b> : permet de modifier certains paramètres de son abonnement à une liste (mode de réception des messages, emails en HTML, adresse email principale pour une liste...).</li> |
<li><b>Mes Groupes</b> : recense tous les groupes de discussion auxquels vous êtes abonné avec un compte Yahoo! En cliquant sur le lien \"modifier les modes d'envoi\" de cette rubrique, vous pouvez choisir en un seul coup la façon dont vous recevrez les messages de chaque forum.</li> |
<li><b>Mes Préférences</b> : permet de modifier certains paramètres de votre compte Yahoo!</li> |
</ul>"; |
} |
else if ($parag == "identification") |
{ |
$ret .= "<span>L'identification : un mal nécessaire !</span>"; |
$ret .= '<hr size="1" />'; |
$ret .= "</td></tr>"; |
$ret .= "<tr><td>"; |
$ret .= "<br />Pour pouvoir vous reconnaître et vous attribuer vos droits, le service YahooGroups doit pouvoir vous identifier. Ce mal nécessaire est important, et vous donne accès à bon nombre de services utiles. Votre ordinateur doit nécessairement accepter les cookies, petits fichiers témoins qui gardent la mémoire de votre authentification."; |
$ret .= "<br /><br />Pour commencer, allez sur <a href=\"http://fr.groups.yahoo.com/mygroups\" target=\"blank\">http://fr.groups.yahoo.com/mygroups</a>. |
<br /><br />Cette page affiche tous les groupes auxquels vous êtes abonné avec une adresse e-mail définie, si vous vous êtes déjà identifié. Si ce n'est pas le cas, suivez la procédure décrite ici : |
<ul> |
<li> <b>Cas 1</b> : vous avez Compte et un mot de passe YahooGroups ... et vous vous en souvenez !<br /><br /> |
<ul> |
<li> Entrez le nom du compte, puis votre mot de passe.</li> |
<li> Eventuellement cocher la case \"Mémoriser compte et mot de passe\" si vous ne partagez pas votre ordinateur avec d'autres personnes (sinon, n'importe qui pourra accéder à votre compte Yahoo!).<br /><br /></li> |
</ul> |
</li> |
<li> <b>Cas 2</b> : vous avez oublié votre nom de compte ou votre mot de passe :<br /><br /> |
<ul> |
<li> Cliquez sur \"Mot de passe oublié ?\".<br /><br /> |
<ul> |
<li> Entrez les informations qui vont permettre de vous identifier : date de naissance, pays, code postal (enfin, ceux que vous avez saisi lors de la création de votre compte Yahoo!...).</li> |
<li> Si vous avez oublié votre mot de passe : entrez en bas à gauche votre nom de compte ; si vous avez oublié votre nom de compte, saisissez en bas à droite l'adresse email avec laquelle vous recevez les mails des forums.<br /><br /></li> |
</ul> |
</li> |
<li> Un courriel va vous être envoyé (il ne faut que quelques secondes) avec des instructions à suivre ; en règle générale : aller à une adresse Web précise, entrer un code d'identification, entrer un nouveau mot de passe (tout est indiqué dans le courriel qui va vous être envoyé).</li> |
<li> Suivez les instructions reçues. Eventuellement cocher la case \"Mémoriser compte et mot de passe\" si vous ne partagez pas votre ordinateur avec d'autres personnes (sinon, n'importe qui pourra accéder à votre compte Yahoo!).</li> |
<li> Mémorisez bien le mot de passe !<br /><br /></li> |
</ul> |
</li> |
<li> Dans les deux cas, après, une nouvelle page s'affiche, avec le détail des listes de diffusion auxquelles vous êtes abonné. Sélectionnez celle que vous voulez \"visiter\".</li> |
</ul>"; |
} |
else |
{ |
$ret .= "<span>Memento des adresses importantes</span>"; |
$ret .= '<hr size="1" />'; |
$ret .= "</td></tr>"; |
$ret .= "<tr><td>"; |
$ret .= "<br /><b>Adresses email</b> :<br /><br /><ul>"; |
$ret .= "<li> L'adresse pour <b>poster</b> des messages à la liste : <a href=\"mailto:$mailsend\">$mailsend</a></li>"; |
if ($mailabo != "") $ret .= "<li> L'adresse pour <b>s'abonner</b> sans passer par le Web : <a href=\"mailto:$mailabo\">$mailabo</a></li>"; |
if ($maildesa != "") $ret .= "<li> L'adresse pour se <b>désabonner</b> sans passer par le Web : <a href=\"mailto:$maildesa\">$maildesa</a></li>"; |
if ($find_service == 1) $mail_prop = "$forum-owner@$what_service"; |
if (($mail_prop != "") && ($mail_prop != "Anonyme")) $ret .= "<li> Envoyer un message au <b>propriétaire</b> de la liste : <a href=\"mailto:$mail_prop\">$mail_prop</a></li>"; |
$ret .= "</ul>"; |
$ret .= "<br /><b>Adresses web</b> :<br /><br /><ul>"; |
if ($find_service == 1) $ret .= "<li> Le <b>récapitulatif</b> de tous les forums auxquels vous êtes abonnés + les options de base pour la réception des courriels en leur provenance (il faut s'identifier pour avoir accès à cette rubrique) : <a href=\"http://fr.groups.yahoo.com/mygroups\" target=\"blank\">http://fr.groups.yahoo.com/mygroups</a></li>"; |
$ret .= "<li> L'adresse des <b>pages Web</b> de la liste $forum : <a href=\"$urlgrp\" target=\"blank\">$urlgrp</a></li>"; |
if ($find_service == 1) $ret .= "<li> L'adresse de la <b>boite à fichiers</b> de la liste $forum : <a href=\"http://fr.groups.yahoo.com/group/$forum/files/\" target=\"blank\">http://fr.groups.yahoo.com/group/$forum/files/</a></li>"; |
if ($find_service == 1) $ret .= "<li> L'adresse de la liste des <b>abonnés</b> de $forum : <a href=\"http://fr.groups.yahoo.com/group/$forum/members/\" target=\"blank\">http://fr.groups.yahoo.com/group/$forum/members/</a></li>"; |
if ($find_service == 1) $ret .= "<li> L'adresse de la page de <b>liens web</b> de la liste $forum : <a href=\"http://fr.groups.yahoo.com/group/$forum/links/\" target=\"blank\">http://fr.groups.yahoo.com/group/$forum/links/</a></li>"; |
$ret .= '</ul>' ; |
} |
/* fin de la seconde colonne */ |
/* fin de la seconde ligne de la table */ |
$ret .= '</td></tr></table>' ; |
return $ret; |
} |
?> |
/branches/livraison_menes/arbre.css |
---|
New file |
0,0 → 1,18 |
/* |
+----------------------------------------------------------------------------+ |
| arbre.css | |
+----------------------------------------------------------------------------+ |
| Copyright (c) 2005 Tela Botanica | |
+----------------------------------------------------------------------------+ |
| Feuille de style specifique a l'application projet de Tela Botanica | |
+----------------------------------------------------------------------------+ |
| Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
+----------------------------------------------------------------------------+ |
*/ |
.lien_nom { |
font-weight:bold; |
} |
.image_lien, .image_lien:hover { |
display:block; |
background-image:none;} |
/branches/livraison_menes/synchroliste/synchro_listes.php |
---|
New file |
0,0 → 1,50 |
<?php |
include_once "DB.php" ; |
include_once "synchro_listes_conf.php"; |
// Formation du dsn |
$dsn = SYN_PROTOCOLE."://".SYN_UTILISATEUR.":".SYN_MOT_DE_PASSE_DB."@".SYN_HOTE."/".SYN_BASE; |
// Connection à la base |
$db = & DB::connect($dsn) ; |
include_once SYN_CHEMIN_GESTION_PROJET.'/classes/commande_serveur.class.php' ; |
$commande_serveur = new commande_serveur(SYN_CHEMIN_GESTION_PROJET.'/script_cron/ezmlm.sh') ; |
$commande_serveur->enleverToutesCommandes() ; |
unset ($commande_serveur) ; |
$requete = "select distinct pl_adresse_liste from projet_liste"; |
$resultat = $db->query ($requete); |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC)) { |
$nomliste=explode('@',$ligne['pl_adresse_liste']) ; |
echo "\nSynchronisation de la liste ".$nomliste[0].":\n"; |
if (!is_dir(SYN_CHEMIN_GESTION_PROJET.'/synchroliste/liste/'.SYN_NOMDOMAINE)) { |
mkdir(SYN_CHEMIN_GESTION_PROJET.'/synchroliste/liste/'.SYN_NOMDOMAINE); |
} |
$commande='/usr/bin/rsync -rptgo --delete --log-format="%o %f %l %t" /home/vpopmail/domains/' |
.SYN_NOMDOMAINE.'/'.$nomliste[0].' '.SYN_CHEMIN_GESTION_PROJET.'/synchroliste/liste/'.SYN_NOMDOMAINE.' '; |
echo exec ($commande, $sortie) ; |
$commande = 'chmod 711 '.SYN_CHEMIN_GESTION_PROJET.'/synchroliste/liste/'.SYN_NOMDOMAINE.'/'.$nomliste[0] ; |
echo" $commande\n"; |
echo exec($commande, $sortie); |
$commande = 'chmod 750 '.SYN_CHEMIN_GESTION_PROJET.'/synchroliste/liste/'.SYN_NOMDOMAINE.'/'.$nomliste[0].'/archive/' ; |
echo" $commande\n"; |
echo exec($commande, $sortie); |
$commande = 'chmod 755 '.SYN_CHEMIN_GESTION_PROJET.'/synchroliste/liste/'.SYN_NOMDOMAINE.'/'.$nomliste[0].'/text/' ; |
echo" $commande\n"; |
echo exec($commande, $sortie);$commande = 'chmod 755 '.SYN_CHEMIN_GESTION_PROJET.'/synchroliste/liste/'.SYN_NOMDOMAINE.'/'.$nomliste[0].'/text/info' ; |
echo" $commande\n"; |
echo exec($commande, $sortie); |
echo "\n--->Synchronisation terminée!!\n\n"; |
} |
echo "\nMise à jour des droits sur le répertoire\n"; |
$commande='chown '.SYN_UTILISATEUR.':'.SYN_GROUPE.' '.SYN_CHEMIN_GESTION_PROJET.'/synchroliste/liste/ -R'; |
echo "$commande\n" ; |
echo exec($commande, $sortie); |
?> |
/branches/livraison_menes/synchroliste/liste/vide.txt |
---|
--- synchroliste/synchro_listes_conf.php (revision 0) |
+++ synchroliste/synchro_listes_conf.php (revision 196) |
@@ -0,0 +1,17 @@ |
+<?php |
+/** |
+//==================================== CONSTANTES ================================== |
+* Constantes de l'appli de synchronisation |
+//================================================================================== |
+*/ |
+define ("SYN_PROTOCOLE", "mysql") ; |
+define ("SYN_UTILISATEUR", "") ; |
+define ("SYN_MOT_DE_PASSE_DB", "") ; |
+define ("SYN_HOTE", "localhost") ; |
+define ("SYN_BASE", "") ; |
+define ("SYN_NOMDOMAINE", ""); |
+define ("SYN_CHEMIN_GESTION_PROJET", "") ; |
+define ("SYN_CHEMIN_LOG", "") ; |
+define ("SYN_UTILISATEUR", '') ; |
+define ('SYN_GROUPE', '') ; |
+?> |
/branches/livraison_menes/synchroliste/vpopmail/ajout_abonne.php |
---|
New file |
0,0 → 1,7 |
<?php |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
echo exec ('ezmlm-sub '.$repertoire.' '.$mail, $output, $ret) ; |
echo 'ezmlm-sub '.$repertoire.' '.$mail; |
?> |
/branches/livraison_menes/synchroliste/vpopmail/creation_liste.php |
---|
New file |
0,0 → 1,16 |
<?php |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
$fichier_qmail = '/home/vpopmail/domains/'.$domaine.'/.qmail-'.$liste ; |
// Transformation de ma chaine $parametres ((de aBud en -a -B -u -D) |
$para = '' ; |
for ($i = 0; $i < count ($parametres); $i++) { |
$para .= '-'.$parametres.' ' ; |
} |
// On ajoute que la réponse doit repartir à la liste |
$para .= ' -3 '.$liste.'@'.$domaine; |
echo exec ('ezmlm-make '.$para.' '.$repertoire.' '.$fichier_qmail.' '.$liste.' '.$domaine, $output, $ret) ; |
?> |
/branches/livraison_menes/synchroliste/vpopmail/liste_abonnes.php |
---|
New file |
0,0 → 1,18 |
<?php |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
//echo $repertoire; |
exec ('ezmlm-list '.$repertoire, $output, $ret) ; |
include_once 'XML/Util.php' ; |
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ; |
$xml .= XML_Util::createStartElement ('ezmlm_liste_abonnes', array('domaine' => $domaine, 'liste' => $liste)) ; |
foreach ($output as $mail) $xml .= XML_Util::createTag('email', '', $mail) ; |
$xml .= XML_Util::createEndElement('ezmlm_liste_abonnes') ; |
header ('Content-type: text/xml'); |
echo $xml ; |
?> |
/branches/livraison_menes/synchroliste/vpopmail/ajout_moderateur.php |
---|
New file |
0,0 → 1,7 |
<?php |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste.'/mod' ; |
echo exec ('ezmlm-sub '.$repertoire.' '.$mail, $output, $ret) ; |
echo 'ezmlm-sub '.$repertoire.' '.$mail ; |
?> |
/branches/livraison_menes/synchroliste/vpopmail/suppression_liste.php |
---|
New file |
0,0 → 1,19 |
<?php |
if (!isset ($domaine) || $domaine == '' || !isset($liste) || $liste == '') { |
die ('manque paramètre domaine ou liste') ; |
} |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
$fichier_qmail = '/home/vpopmail/domains/'.$domaine.'/.qmail-' ; |
echo exec ('rm '.$fichier_qmail.$liste, $output2, $ret2) ; |
echo exec ('rm '.$fichier_qmail.$liste.'-default', $output2, $ret2) ; |
echo exec ('rm '.$fichier_qmail.$liste.'-digest-owner', $output2, $ret2) ; |
echo exec ('rm '.$fichier_qmail.$liste.'-digest-return-default', $output2, $ret2) ; |
echo exec ('rm '.$fichier_qmail.$liste.'-owner', $output2, $ret2) ; |
echo exec ('rm '.$fichier_qmail.$liste.'-return-default', $output2, $ret2) ; |
echo exec ('rm -rf '.$repertoire, $output, $ret) ; |
?> |
/branches/livraison_menes/synchroliste/vpopmail/suppression_abonne.php |
---|
New file |
0,0 → 1,7 |
<?php |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
echo exec ('ezmlm-unsub '.$repertoire.' '.$mail, $output, $ret) ; |
echo 'ezmlm-unsub '.$repertoire.' '.$mail; |
?> |
/branches/livraison_menes/synchroliste/vpopmail/forumRSS.php |
---|
New file |
0,0 → 1,48 |
<?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 Lesser 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 | |
// | Lesser General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU Lesser 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: forumRSS.php,v 1.1 2005-11-23 11:40:49 alexandre_tb Exp $ |
/** |
* Générateur de flux RSS à partir d'une liste |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
* |
*@copyright Tela-Botanica 2000-2004 |
*@version $$ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
include_once 'ezmlm-php-2.0/ezmlm-xml.php' ; |
// test des variables |
if (!isset($domaine) || !isset($liste)) { |
exit() ; |
} |
$list = new ezmlm_xml() ; |
$list->listdir = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
header('Content-type: text/xml') ; |
$list->show_rss() ; |
?> |
/branches/livraison_menes/synchroliste/fichier_attache.php |
---|
New file |
0,0 → 1,86 |
<?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: fichier_attache.php,v 1.2 2005-09-27 16:46:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Fichier pour afficher les pièces jointes |
* |
*@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 | |
// +------------------------------------------------------------------------------------------------------+ |
// A faire |
include_once '../configuration/projet.config.inc.php' ; |
include_once 'Mail/mimeDecode.php' ; |
$num_rep = array_shift ($actionargs) ; |
$num_message = array_shift($actionargs) ; |
$mail = file_get_contents (PROJET_CHEMIN_LISTES.PROJET_DOMAINE_LISTE.'/'.$nom_liste.'/'.'archive/'.$num_rep.'/'.$num_message) ; |
$decodeur = new Mail_mimeDecode($mail) ; |
$mailDecode = $decodeur->decode(array ('decode_bodies' => 'true', 'include_bodies' => 'true')) ; |
//var_dump ($mailDecode) ; |
function getParts(&$part, $num_part) { |
$part = $part->parts[$num_part] ; |
return $part ; |
} |
for ($i = 0; $i < count ($actionargs); $i++) { |
$part = getParts($mailDecode, $actionargs[$i]) ; |
} |
$content_type = $part->ctype_primary.'/'.$part->ctype_secondary ; |
// Certain fichiers attaché n'ont pas de ctype_primary et ctype_secondary |
if ($content_type == '/') { |
$content_type = $part->content_type; |
} |
$nom_du_fichier = isset($part->d_parameters['filename']) ? $part->d_parameters['filename'] : $part->ctype_parameters['name'] ; |
//echo $content_type ; |
header('Expires: Wen, 01 Dec 1999 01:00:00 GMT');// Date du passé |
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');// toujours modifié |
header('Cache-Control: Public');// HTTP/1.1 |
header ('Content-Type: '.$content_type."\r\n") ; |
header("Content-Length: ".strlen($part->body).";\r\n"); |
header ('Content-Disposition: attachment; filename="'.$nom_du_fichier.'"'."\r\n"); |
header('Content-Transfer-Encoding: '.$part->content-transfer-encoding); |
echo $part->body ; |
exit(0) ; |
?> |
/branches/livraison_menes/chooser.php |
---|
New file |
0,0 → 1,14 |
<? |
if(empty($fichier_cartouche)):$fichier_cartouche="cartouche.php"; |
endif; |
$fichier_cartouche="php/frame/arbre/$fichier_cartouche"; |
if(empty($fichier_arbre)):include('php/frame/arbre/appli_arbre.php'); |
else : { |
$toto="php/frame/arbre/$fichier_arbre"; |
include($toto); |
} |
endif; |
?> |
/branches/livraison_menes/projet.php |
---|
New file |
0,0 → 1,261 |
<?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: projet.php,v 1.12.2.1 2007-04-11 14:26:34 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Fichier d'appel pour papyrus |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.12.2.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once 'configuration/projet.config.inc.php' ; |
include_once PROJET_CHEMIN_CLASSES.'projetControleur.class.php' ; |
// Inclusion des styles selon papyrus |
if (function_exists("GEN_stockerStyleExterne")) { |
if (file_exists('client/projet/projet.css')) GEN_stockerStyleExterne('projet','client/projet/projet.css') ; |
if (file_exists('client/projet/arbre.css')) GEN_stockerStyleExterne('projet_arbre','client/projet/arbre.css') ; |
} |
// +------------------------------------------------------------------------------------------------------+ |
// | LISTE des constantes | |
// +------------------------------------------------------------------------------------------------------+ |
define ("PROJET_DEFAUT", 1) ; |
define ("PROJET_VOIR", 2) ; |
define ('PROJET_MENU_AFFICHER_CONTENU_CORPS', 1) ; |
// +------------------------------------------------------------------------------------------------------+ |
// | LISTE de FONCTIONS | |
// +------------------------------------------------------------------------------------------------------+ |
if (isset($_REQUEST[PROJET_VARIABLE_ID_PROJET])) { |
function afficherContenuNavigation () { |
$GLOBALS['url']->addQueryString(PROJET_VARIABLE_ID_PROJET, $_REQUEST[PROJET_VARIABLE_ID_PROJET]) ; |
if (empty($_REQUEST[PROJET_VARIABLE_ACTION])) { |
$_REQUEST[PROJET_VARIABLE_ACTION] = PROJET_ACTION_VOIR_RESUME ; |
} |
$res = '' ; |
if (isset($GLOBALS['_GEN_commun']['info_application']->presentation)) { |
$res .= '<ul class="onglets">'; |
$GLOBALS['url']->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_RESUME); |
$res .= '<li id="projet_resume" class="'.cma(PROJET_ACTION_VOIR_RESUME).'"><a href="'.$GLOBALS['url']->getURL().'">'.PROJET_SYNTHESE.'</a></li>'; |
$GLOBALS['url']->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_DESCRIPTION); |
$res .= '<li id="projet_description" class="'.cma(PROJET_ACTION_VOIR_DESCRIPTION).'"><a href="'.$GLOBALS['url']->getURL().'">'.PROJET_DESCRIPTION.'</a></li>'; |
$GLOBALS['url']->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_WIKINI); |
$res .= '<li id="projet_wikini" class="'.cma(PROJET_ACTION_VOIR_WIKINI).'"><a href="'.$GLOBALS['url']->getURL().'">'.PROJET_WIKINI.'</a></li>'; |
$GLOBALS['url']->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_DOCUMENT) ; |
$res .= '<li id="projet_documents" class="'.cma(PROJET_ACTION_VOIR_DOCUMENT).'"><a href="'.$GLOBALS['url']->getURL().'">Documents</a></li>'; |
$GLOBALS['url']->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_FORUM) ; |
$res .= '<li id="projet_forum" class="'.cma(PROJET_ACTION_VOIR_FORUM).'"><a href="'.$GLOBALS['url']->getURL().'">Forum</a></li>'; |
$GLOBALS['url']->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_PARTICIPANT) ; |
$res .= '<li id="projet_participants" class="'.cma(PROJET_ACTION_VOIR_PARTICIPANT).'"><a href="'.$GLOBALS['url']->getURL().'">Participants</a></li>'; |
$res .= '</ul>'; |
$GLOBALS['url']->removeQueryString (PROJET_VARIABLE_ACTION) ; |
} |
if (isset ($GLOBALS['_GEN_commun']['info_application']->seulement_forum)) { |
$res = '' ; |
} |
return $res ; |
} |
} |
function afficherContenuMenu() |
{ |
$sortie = ''; |
// on fait de même pour id_projet |
$id_projet = isset($_REQUEST[PROJET_VARIABLE_ID_PROJET]) ? $_REQUEST[PROJET_VARIABLE_ID_PROJET] : ''; |
// On recherche une action dans la variable $action, s'il n'y a pas, on envoie defaut |
$action = isset($_REQUEST[PROJET_VARIABLE_ACTION]) ? $_REQUEST[PROJET_VARIABLE_ACTION] : PROJET_DEFAUT; |
// et pour id_repertoire |
$id_repertoire = isset($_REQUEST['id_repertoire']) ? $_REQUEST['id_repertoire'] : ''; |
$controleur = new projetControleur($GLOBALS['projet_db'], $GLOBALS['projet_auth'], $GLOBALS['url']) ; |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
if ($id_projet != '' && projet::projetExiste($GLOBALS['projet_db'], $id_projet)) { |
$controleur->setIdProjet($id_projet) ; |
} |
if ($id_repertoire != "") { |
$controleur->setIdRepertoire($id_repertoire) ; |
} |
if (isset ($GLOBALS['_GEN_commun']['info_application']->prive)) { |
$controleur->setPrive() ; |
} |
// Dans le cas de la présentation par arbre, on met les menus |
if (isset($GLOBALS['_GEN_commun']['info_application']->presentation)){ |
$sortie .= $controleur->menuGeneral() ; |
} |
if (isset($GLOBALS['_GEN_commun']['info_application']->seulement)) { |
$controleur->setIdProjet($GLOBALS['_GEN_commun']['info_application']->seulement) ; |
} |
if (isset($GLOBALS['_GEN_commun']['info_application']->telechargement)) { |
// L'action "Mettre un fichier en ligne" |
$controleur->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_FICHIER) ; |
$res = "<ul><li><a href=\"".$controleur->_url->getURL()."\">".PROJET_METTRE_FICHIER."</a></li>\n" ; |
// L'action créer un répertoire |
$controleur->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_REPERTOIRE) ; |
$res .= "<li><a href=\"".$controleur->_url->getURL()."\">".PROJET_CREER_REP."</a></li>\n" ; |
$res .= '</ul></li>' ; |
$sortie .= $res ; |
} |
// Dans le cas d'un forum simple, on ne met pas les menus |
if (isset ($GLOBALS['_GEN_commun']['info_application']->seulement_forum)) { |
return ; |
} |
return $sortie; |
} |
function afficherContenuCorps() { |
// On recherche une action dans la variable $action, s'il n'y a pas, on envoie defaut |
$action = isset($_REQUEST[PROJET_VARIABLE_ACTION]) ? $_REQUEST[PROJET_VARIABLE_ACTION] : PROJET_DEFAUT; |
// on fait de même pour id_projet |
$id_projet = isset($_REQUEST[PROJET_VARIABLE_ID_PROJET]) ? $_REQUEST[PROJET_VARIABLE_ID_PROJET] : ''; |
// et pour id_repertoire |
$id_repertoire = isset($_REQUEST['id_repertoire']) ? $_REQUEST['id_repertoire'] : ''; |
// et pour id_document |
$id_document = isset($_REQUEST['id_document']) ? $_REQUEST['id_document'] : ''; |
// On construit le controleur en lui passant en paramètre l'identifiant de connexion à la BD |
// l'objet d'authentification et l'url de la page |
$controleur = new projetControleur(&$GLOBALS['projet_db'], &$GLOBALS['projet_auth'], &$GLOBALS['url']) ; |
$controleur->setAction ($action) ; |
// On indique au controleur sur quel projet on travaille |
if ($id_projet != "") { |
$controleur->setIdProjet($id_projet) ; |
} |
if ($id_repertoire != "") { |
$controleur->setIdRepertoire($id_repertoire) ; |
} |
if ($id_document != "") { |
$controleur->setIdDocument($id_document) ; |
} |
// récupération des paramètres de l'appli |
if (isset($GLOBALS['_GEN_commun']['info_application']->presentation)) { |
$controleur->setPresentation($GLOBALS['_GEN_commun']['info_application']->presentation) ; |
} |
if (isset($GLOBALS['_GEN_commun']['info_application']->projet_type)) { |
$controleur->setType($GLOBALS['_GEN_commun']['info_application']->projet_type) ; |
} |
if (isset ($GLOBALS['_GEN_commun']['info_application']->exclure)) { |
$a_exclure = explode (',', $GLOBALS['_GEN_commun']['info_application']->exclure) ; |
foreach ($a_exclure as $valeur) $controleur->exclure($valeur) ; |
} |
if (isset ($GLOBALS['_GEN_commun']['info_application']->seulement_forum)) { |
$controleur->setIdProjet($GLOBALS['_GEN_commun']['info_application']->seulement_forum) ; |
// S'il n'y a pas d'action en mode forum, on affiche l'onglet Forum |
if (!isset($_REQUEST[PROJET_VARIABLE_ACTION])) $controleur->setAction (PROJET_ACTION_VOIR_FORUM) ; |
} |
if (isset($GLOBALS['_GEN_commun']['info_application']->telechargement)) { |
if (!isset($_REQUEST[PROJET_VARIABLE_ACTION])) $controleur->setAction (PROJET_ACTION_VOIR_DOCUMENT) ; |
} |
if (isset ($GLOBALS['_GEN_commun']['info_application']->seulement)) { |
$controleur->setIdProjet($GLOBALS['_GEN_commun']['info_application']->seulement) ; |
} |
// Si le parametre prive est passé, les inscriptions sont modérés |
// TODO : permettre la demande d'inscription |
if (isset ($GLOBALS['_GEN_commun']['info_application']->prive)) { |
$controleur->setPrive() ; |
} |
$res = $controleur->run() ; |
return $res ; |
} |
/** cma() calcule menu actif |
* |
* |
* @return |
*/ |
function cma ($var) { |
$class = $_REQUEST[PROJET_VARIABLE_ACTION] == $var ? 'menu_actif' : 'menu_inactif' ; |
return $class ; |
} |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.12 2006/07/04 09:35:04 alexandre_tb |
* Simplification du code et ajout de controle |
* |
* Revision 1.11 2006/04/28 12:41:28 florian |
* corrections erreurs chemin |
* |
* Revision 1.10 2005/12/01 16:38:32 alexandre_tb |
* ajout de l'action telechargement |
* |
* Revision 1.9 2005/11/25 14:48:44 alexandre_tb |
* ajout de la gestion de la présentation tela |
* |
* Revision 1.8 2005/10/25 13:50:13 alexandre_tb |
* Ajout de la gestion des projets privés |
* |
* Revision 1.7 2005/10/17 16:22:28 alexandre_tb |
* rien |
* |
* Revision 1.6 2005/10/06 14:54:06 alexandre_tb |
* ajout de la gestion du paramètre seulement_forum |
* |
* Revision 1.5 2005/10/04 10:06:32 alexandre_tb |
* ajout du parametre seulement_forum |
* |
* Revision 1.4 2005/09/28 16:29:39 ddelon |
* Merge modification projet |
* |
* Revision 1.3 2005/09/27 16:31:06 alexandre_tb |
* ?? |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_menes/wikini/COPYING |
---|
New file |
0,0 → 1,340 |
GNU GENERAL PUBLIC LICENSE |
Version 2, June 1991 |
Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
Preamble |
The licenses for most software are designed to take away your |
freedom to share and change it. By contrast, the GNU General Public |
License is intended to guarantee your freedom to share and change free |
software--to make sure the software is free for all its users. This |
General Public License applies to most of the Free Software |
Foundation's software and to any other program whose authors commit to |
using it. (Some other Free Software Foundation software is covered by |
the GNU Library General Public License instead.) You can apply it to |
your programs, too. |
When we speak of free software, we are referring to freedom, not |
price. Our General Public Licenses are designed to make sure that you |
have the freedom to distribute copies of free software (and charge for |
this service if you wish), that you receive source code or can get it |
if you want it, that you can change the software or use pieces of it |
in new free programs; and that you know you can do these things. |
To protect your rights, we need to make restrictions that forbid |
anyone to deny you these rights or to ask you to surrender the rights. |
These restrictions translate to certain responsibilities for you if you |
distribute copies of the software, or if you modify it. |
For example, if you distribute copies of such a program, whether |
gratis or for a fee, you must give the recipients all the rights that |
you have. You must make sure that they, too, receive or can get the |
source code. And you must show them these terms so they know their |
rights. |
We protect your rights with two steps: (1) copyright the software, and |
(2) offer you this license which gives you legal permission to copy, |
distribute and/or modify the software. |
Also, for each author's protection and ours, we want to make certain |
that everyone understands that there is no warranty for this free |
software. If the software is modified by someone else and passed on, we |
want its recipients to know that what they have is not the original, so |
that any problems introduced by others will not reflect on the original |
authors' reputations. |
Finally, any free program is threatened constantly by software |
patents. We wish to avoid the danger that redistributors of a free |
program will individually obtain patent licenses, in effect making the |
program proprietary. To prevent this, we have made it clear that any |
patent must be licensed for everyone's free use or not licensed at all. |
The precise terms and conditions for copying, distribution and |
modification follow. |
GNU GENERAL PUBLIC LICENSE |
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
0. This License applies to any program or other work which contains |
a notice placed by the copyright holder saying it may be distributed |
under the terms of this General Public License. The "Program", below, |
refers to any such program or work, and a "work based on the Program" |
means either the Program or any derivative work under copyright law: |
that is to say, a work containing the Program or a portion of it, |
either verbatim or with modifications and/or translated into another |
language. (Hereinafter, translation is included without limitation in |
the term "modification".) Each licensee is addressed as "you". |
Activities other than copying, distribution and modification are not |
covered by this License; they are outside its scope. The act of |
running the Program is not restricted, and the output from the Program |
is covered only if its contents constitute a work based on the |
Program (independent of having been made by running the Program). |
Whether that is true depends on what the Program does. |
1. You may copy and distribute verbatim copies of the Program's |
source code as you receive it, in any medium, provided that you |
conspicuously and appropriately publish on each copy an appropriate |
copyright notice and disclaimer of warranty; keep intact all the |
notices that refer to this License and to the absence of any warranty; |
and give any other recipients of the Program a copy of this License |
along with the Program. |
You may charge a fee for the physical act of transferring a copy, and |
you may at your option offer warranty protection in exchange for a fee. |
2. You may modify your copy or copies of the Program or any portion |
of it, thus forming a work based on the Program, and copy and |
distribute such modifications or work under the terms of Section 1 |
above, provided that you also meet all of these conditions: |
a) You must cause the modified files to carry prominent notices |
stating that you changed the files and the date of any change. |
b) You must cause any work that you distribute or publish, that in |
whole or in part contains or is derived from the Program or any |
part thereof, to be licensed as a whole at no charge to all third |
parties under the terms of this License. |
c) If the modified program normally reads commands interactively |
when run, you must cause it, when started running for such |
interactive use in the most ordinary way, to print or display an |
announcement including an appropriate copyright notice and a |
notice that there is no warranty (or else, saying that you provide |
a warranty) and that users may redistribute the program under |
these conditions, and telling the user how to view a copy of this |
License. (Exception: if the Program itself is interactive but |
does not normally print such an announcement, your work based on |
the Program is not required to print an announcement.) |
These requirements apply to the modified work as a whole. If |
identifiable sections of that work are not derived from the Program, |
and can be reasonably considered independent and separate works in |
themselves, then this License, and its terms, do not apply to those |
sections when you distribute them as separate works. But when you |
distribute the same sections as part of a whole which is a work based |
on the Program, the distribution of the whole must be on the terms of |
this License, whose permissions for other licensees extend to the |
entire whole, and thus to each and every part regardless of who wrote it. |
Thus, it is not the intent of this section to claim rights or contest |
your rights to work written entirely by you; rather, the intent is to |
exercise the right to control the distribution of derivative or |
collective works based on the Program. |
In addition, mere aggregation of another work not based on the Program |
with the Program (or with a work based on the Program) on a volume of |
a storage or distribution medium does not bring the other work under |
the scope of this License. |
3. You may copy and distribute the Program (or a work based on it, |
under Section 2) in object code or executable form under the terms of |
Sections 1 and 2 above provided that you also do one of the following: |
a) Accompany it with the complete corresponding machine-readable |
source code, which must be distributed under the terms of Sections |
1 and 2 above on a medium customarily used for software interchange; or, |
b) Accompany it with a written offer, valid for at least three |
years, to give any third party, for a charge no more than your |
cost of physically performing source distribution, a complete |
machine-readable copy of the corresponding source code, to be |
distributed under the terms of Sections 1 and 2 above on a medium |
customarily used for software interchange; or, |
c) Accompany it with the information you received as to the offer |
to distribute corresponding source code. (This alternative is |
allowed only for noncommercial distribution and only if you |
received the program in object code or executable form with such |
an offer, in accord with Subsection b above.) |
The source code for a work means the preferred form of the work for |
making modifications to it. For an executable work, complete source |
code means all the source code for all modules it contains, plus any |
associated interface definition files, plus the scripts used to |
control compilation and installation of the executable. However, as a |
special exception, the source code distributed need not include |
anything that is normally distributed (in either source or binary |
form) with the major components (compiler, kernel, and so on) of the |
operating system on which the executable runs, unless that component |
itself accompanies the executable. |
If distribution of executable or object code is made by offering |
access to copy from a designated place, then offering equivalent |
access to copy the source code from the same place counts as |
distribution of the source code, even though third parties are not |
compelled to copy the source along with the object code. |
4. You may not copy, modify, sublicense, or distribute the Program |
except as expressly provided under this License. Any attempt |
otherwise to copy, modify, sublicense or distribute the Program is |
void, and will automatically terminate your rights under this License. |
However, parties who have received copies, or rights, from you under |
this License will not have their licenses terminated so long as such |
parties remain in full compliance. |
5. You are not required to accept this License, since you have not |
signed it. However, nothing else grants you permission to modify or |
distribute the Program or its derivative works. These actions are |
prohibited by law if you do not accept this License. Therefore, by |
modifying or distributing the Program (or any work based on the |
Program), you indicate your acceptance of this License to do so, and |
all its terms and conditions for copying, distributing or modifying |
the Program or works based on it. |
6. Each time you redistribute the Program (or any work based on the |
Program), the recipient automatically receives a license from the |
original licensor to copy, distribute or modify the Program subject to |
these terms and conditions. You may not impose any further |
restrictions on the recipients' exercise of the rights granted herein. |
You are not responsible for enforcing compliance by third parties to |
this License. |
7. If, as a consequence of a court judgment or allegation of patent |
infringement or for any other reason (not limited to patent issues), |
conditions are imposed on you (whether by court order, agreement or |
otherwise) that contradict the conditions of this License, they do not |
excuse you from the conditions of this License. If you cannot |
distribute so as to satisfy simultaneously your obligations under this |
License and any other pertinent obligations, then as a consequence you |
may not distribute the Program at all. For example, if a patent |
license would not permit royalty-free redistribution of the Program by |
all those who receive copies directly or indirectly through you, then |
the only way you could satisfy both it and this License would be to |
refrain entirely from distribution of the Program. |
If any portion of this section is held invalid or unenforceable under |
any particular circumstance, the balance of the section is intended to |
apply and the section as a whole is intended to apply in other |
circumstances. |
It is not the purpose of this section to induce you to infringe any |
patents or other property right claims or to contest validity of any |
such claims; this section has the sole purpose of protecting the |
integrity of the free software distribution system, which is |
implemented by public license practices. Many people have made |
generous contributions to the wide range of software distributed |
through that system in reliance on consistent application of that |
system; it is up to the author/donor to decide if he or she is willing |
to distribute software through any other system and a licensee cannot |
impose that choice. |
This section is intended to make thoroughly clear what is believed to |
be a consequence of the rest of this License. |
8. If the distribution and/or use of the Program is restricted in |
certain countries either by patents or by copyrighted interfaces, the |
original copyright holder who places the Program under this License |
may add an explicit geographical distribution limitation excluding |
those countries, so that distribution is permitted only in or among |
countries not thus excluded. In such case, this License incorporates |
the limitation as if written in the body of this License. |
9. The Free Software Foundation may publish revised and/or new versions |
of the General Public License from time to time. Such new versions will |
be similar in spirit to the present version, but may differ in detail to |
address new problems or concerns. |
Each version is given a distinguishing version number. If the Program |
specifies a version number of this License which applies to it and "any |
later version", you have the option of following the terms and conditions |
either of that version or of any later version published by the Free |
Software Foundation. If the Program does not specify a version number of |
this License, you may choose any version ever published by the Free Software |
Foundation. |
10. If you wish to incorporate parts of the Program into other free |
programs whose distribution conditions are different, write to the author |
to ask for permission. For software which is copyrighted by the Free |
Software Foundation, write to the Free Software Foundation; we sometimes |
make exceptions for this. Our decision will be guided by the two goals |
of preserving the free status of all derivatives of our free software and |
of promoting the sharing and reuse of software generally. |
NO WARRANTY |
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
REPAIR OR CORRECTION. |
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
POSSIBILITY OF SUCH DAMAGES. |
END OF TERMS AND CONDITIONS |
How to Apply These Terms to Your New Programs |
If you develop a new program, and you want it to be of the greatest |
possible use to the public, the best way to achieve this is to make it |
free software which everyone can redistribute and change under these terms. |
To do so, attach the following notices to the program. It is safest |
to attach them to the start of each source file to most effectively |
convey the exclusion of warranty; and each file should have at least |
the "copyright" line and a pointer to where the full notice is found. |
<one line to give the program's name and a brief idea of what it does.> |
Copyright (C) <year> <name of author> |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Also add information on how to contact you by electronic and paper mail. |
If the program is interactive, make it output a short notice like this |
when it starts in an interactive mode: |
Gnomovision version 69, Copyright (C) year name of author |
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
This is free software, and you are welcome to redistribute it |
under certain conditions; type `show c' for details. |
The hypothetical commands `show w' and `show c' should show the appropriate |
parts of the General Public License. Of course, the commands you use may |
be called something other than `show w' and `show c'; they could even be |
mouse-clicks or menu items--whatever suits your program. |
You should also get your employer (if you work as a programmer) or your |
school, if any, to sign a "copyright disclaimer" for the program, if |
necessary. Here is a sample; alter the names: |
Yoyodyne, Inc., hereby disclaims all copyright interest in the program |
`Gnomovision' (which makes passes at compilers) written by James Hacker. |
<signature of Ty Coon>, 1 April 1989 |
Ty Coon, President of Vice |
This General Public License does not permit incorporating your program into |
proprietary programs. If your program is a subroutine library, you may |
consider it more useful to permit linking proprietary applications with the |
library. If this is what you want to do, use the GNU Library General |
Public License instead of this License. |
/branches/livraison_menes/wikini/bibliotheque/documents/vide.txt |
---|
/branches/livraison_menes/wikini/wakka.print.css |
---|
New file |
0,0 → 1,75 |
* {margin: 0; padding: 0;} |
p, td, li, input, select, textarea{ font-family:Georgia, Helvetica, Verdana, sans-serif;font-size:12px;color:#000;} |
body {font-family:Georgia, Helvetica, Verdana, sans-serif;font-size:12px;color:#000;background: transparent;} |
h1 {font-size:16px;font-weight:bold;padding:5px;} |
h2 {font-size:14px;color:black;font-weight:bold;} |
h3 {font-size:12px;color:black;font-weight:bold;} |
h4 {font-size:12px;color:black;} |
h5 {font-size:12px;color:black;} |
hr {border: 1px solid;color:black;margin-top:5px;} |
img {display:block;border:0;} |
img a {display:block;} |
a {color:#669;text-decoration:none;} |
.wiki_name { display:none; float: left; padding-left: 60px; margin: 0px 15px 0px 10px; font-size: 150%; font-weight: bold; background-color: transparent; color: black;} |
.page_name { display:none; font-size: 150%; background-color: transparent;} |
.header { display:none; padding: 10px; padding-top: 5px; padding-left: 75px;} |
ul { margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; padding-left: 10px;} |
ol { margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; } |
form { margin: 0px; padding: 0px; } |
tt {color: black; } |
.error { display:none;color: #CC3333; font-weight: bold; } |
.indent { margin-left: 40px; } |
.additions { display:none;color: #008800; } |
.deletions { display:none;color: #880000; } |
.add { display:none;font-weight: bold; color: #c00; text-decoration: underline; } |
.del { display:none;font-style: italic; color: #c00; text-decoration: line-through; } |
.page { padding: 10px; margin:10px;border: 0px inset;} |
.prev_alert { display:none;background-color: red; color: white; font-size: 1.7em; font-weight: bold; margin-bottom: 5px; } |
.edit { width: 100%; height: 400px; } |
.footer { display:none;background-color: #DDDDDD; padding: 5px 10px; border: 1px inset; border-top: none; border-top: 1px solid #CCCCCC } |
.code { background: #FFFFFF; border: solid #888888 2px; font-family: 'Courier New', Courier; color: black; font-size: 10pt; width: 100%; height: 400px; overflow: scroll; padding: 3px; } |
.revisioninfo { color: #AAAAAA; padding-bottom: 20px; } |
.commentsheader { display:none;background-color: #DDDDDD; padding: 2px 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC } |
.comment { display:none;background-color: #EEEEEE; padding: 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC; border-bottom: 1px solid #EEEEEE; } |
.commentinfo { display:none;color: #AAAAAA; } |
.commentform { background-color: #EEEEEE; padding: 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC } |
.copyright { display:none;font-size: 11px; color: #AAAAAA; text-align: right; } |
.copyright A { display:none;color: #AAAAAA; } |
.searchbox { display:none;background: #FFFFF8; border: 0px; border-bottom: 1px solid #CCCCAA; padding: 0px; margin: 0px; } |
.debug { display:none;font-size: 11px; color: #888888; } |
.hr_clear { clear: both; visibility: hidden; } |
.include_right { float: right; width: 17%; } /* bloc flotant à droite */ |
.include_left { float: left; width: 17%; } /* bloc flotant à gauche */ |
.include_solid_border { border: solid; padding: 2px; } /* encadré noir */ |
.include_gray_background { background-color: #DDDDDD; } /* fond gris */ |
.include_small_fonts { font-size: 0.8em; } /* petites polices */ |
.include_big_fonts { font-size: 1.2em; } /* grandes polces */ |
.include_height10em { height: 10em; overflow: scroll; } /* boite de 10em de hauteur, avec ascenseur */ |
.include_height15em { height: 15em; overflow: scroll; } |
.include_height30em { height: 30em; overflow: scroll; } |
.include_height60em { height: 60em; overflow: scroll; } |
.trail_table { line-height: 30px;} |
.trail_button { color: #993333; } |
/* CONTRIBUTION MENU GAUCHE */ |
.page_table {margin: 20px; padding: 0px ; border: none; height: 100%;width: 100%;} |
.menu_column { display:none;vertical-align: top; width: 210px; border: 0px; padding:5px; margin-top: 50px; } |
.body_column {vertical-align: top; border: none;padding:5px;} |
/* CONTRIBUTION ACTION ATTACH */ |
/* - les images */ |
.attach_margin05em { margin: 0.5em;} /* marge de 0.5 em autour de l'image*/ |
.attach_margin1em { margin: 1em;} /* marge de 1em autour de l'image*/ |
.attach_left {float: left;} /* bloc flotant à gauche */ |
.attach_right {float: right;} /* bloc flotant à droite */ |
.attach_noborder {border-width: 0px;} /* pas de bordure */ |
.attach_vmiddle {vertical-align: text-bottom;} /* aligenement vertical au milieu */ |
/* CONTRIBUTION ACeditor */ |
.image_left {float: left;} /* bloc flotant à gauche */ |
.image_right {float: right;} /* bloc flotant à droite */ |
.image_center {text-align:center;} /* bloc centré */ |
/branches/livraison_menes/wikini/ACEdImages/link.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/link.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/listepuce.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/listepuce.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/listenum.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/listenum.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/separator.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/separator.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/strike.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/strike.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/italic.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/italic.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/hr.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/hr.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/link.old.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/link.old.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/code.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/code.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/bold.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/bold.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/image.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/image.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/t1.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/t1.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/underline.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/underline.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/t2.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/t2.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/t3.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/t3.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/crlf.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/crlf.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/listealpha.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/listealpha.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/t4.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/t4.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/php.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/php.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/ACEdImages/t5.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/wikini/ACEdImages/t5.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/wikini/LICENSE |
---|
New file |
0,0 → 1,36 |
Copyright (c) 2002, 2003 Hendrik Mans <hendrik@mans.de> |
All rights reserved. |
Copyright 2003 Carlo ZOTTMANN |
Copyright 2002, 2003, 2004 David DELON |
Copyright 2002, 2003, 2004 Charles NEPOTE |
Copyright 2002, 2003, 2004 Patrick PAUL |
Copyright 2003 Eric DELORD |
Copyright 2003, 2004 Eric FELDSTEIN |
Copyright 2003 Jean-Pascal MILCENT |
Copyright 2003 Jérôme DESQUILBET |
Copyright 2003 Erus UMBRAE |
Copyright 2004 David VANTYGHEM |
Copyright 2004 Jean Christophe ANDRE |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
/branches/livraison_menes/wikini/wakka.php |
---|
New file |
0,0 → 1,846 |
<?php |
/* encoding: iso-8859-1 |
wakka.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2003 Carlo Zottmann |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003, 2004 Charles NÉPOTE |
Copyright 2002, 2003 Patrick PAUL |
Copyright 2003 Éric DELORD |
Copyright 2003 Éric FELDSTEIN |
Copyright 2004 Jean-Christophe ANDRÉ |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/* |
Yes, most of the formatting used in this file is HORRIBLY BAD STYLE. However, |
most of the action happens outside of this file, and I really wanted the code |
to look as small as what it does. Basically. Oh, I just suck. :) |
*/ |
// do not change this line, you fool. In fact, don't change anything! Ever! |
define("WAKKA_VERSION", "0.1.1"); |
define("WIKINI_VERSION", "0.4.3 + contributions"); |
// start the compute time |
list($g_usec, $g_sec) = explode(" ",microtime()); |
define ("t_start", (float)$g_usec + (float)$g_sec); |
$t_SQL=0; |
class Wiki |
{ |
var $dblink; |
var $page; |
var $tag; |
var $parameter = array(); |
var $queryLog = array(); |
var $interWiki = array(); |
var $VERSION; |
var $CookiePath = '/'; |
// constructor |
function Wiki($config) |
{ |
$this->config = $config; |
// some host do not allow mysql_pconnect |
$this->dblink = @mysql_connect ( |
$this->config["mysql_host"], |
$this->config["mysql_user"], |
$this->config["mysql_password"]); |
if ($this->dblink) |
{ |
if (!@mysql_select_db($this->config["mysql_database"], $this->dblink)) |
{ |
@mysql_close($this->dblink); |
$this->dblink = false; |
} |
} |
$this->VERSION = WAKKA_VERSION; |
//determine le chemin pour le cookie |
$a = parse_url($this->GetConfigValue('base_url')); |
$this->CookiePath = dirname($a['path']); |
if ($this->CookiePath != '/') $this->CookiePath .= '/'; |
} |
// DATABASE |
function Query($query) |
{ |
if($this->GetConfigValue("debug")) $start = $this->GetMicroTime(); |
if (!$result = mysql_query($query, $this->dblink)) |
{ |
ob_end_clean(); |
die("Query failed: ".$query." (".mysql_error().")"); |
} |
if($this->GetConfigValue("debug")) |
{ |
$time = $this->GetMicroTime() - $start; |
$this->queryLog[] = array( |
"query" => $query, |
"time" => $time); |
} |
return $result; |
} |
function LoadSingle($query) { if ($data = $this->LoadAll($query)) return $data[0]; } |
function LoadAll($query) |
{ |
$data=array(); |
if ($r = $this->Query($query)) |
{ |
while ($row = mysql_fetch_assoc($r)) $data[] = $row; |
mysql_free_result($r); |
} |
return $data; |
} |
// MISC |
function GetMicroTime() { list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } |
function IncludeBuffered($filename, $notfoundText = "", $vars = "", $path = "") |
{ |
if ($path) $dirs = explode(":", $path); |
else $dirs = array(""); |
foreach($dirs as $dir) |
{ |
if ($dir) $dir .= "/"; |
$fullfilename = $dir.$filename; |
if (file_exists($fullfilename)) |
{ |
if (is_array($vars)) extract($vars); |
ob_start(); |
include($fullfilename); |
$output = ob_get_contents(); |
ob_end_clean(); |
return $output; |
} |
} |
if ($notfoundText) return $notfoundText; |
else return false; |
} |
// VARIABLES |
function GetPageTag() { return $this->tag; } |
function GetPageTime() { return $this->page["time"]; } |
function GetMethod() { return $this->method; } |
function GetConfigValue($name) { return $this->config[$name]; } |
function GetWakkaName() { return $this->GetConfigValue("wakka_name"); } |
function GetWakkaVersion() { return $this->VERSION; } |
function GetWikiNiVersion() { return WIKINI_VERSION; } |
// PAGES |
function LoadPage($tag, $time = "", $cache = 1) { |
// retrieve from cache |
if (!$time && $cache && ($cachedPage = $this->GetCachedPage($tag))) { $page = $cachedPage;} |
// load page |
if (!isset($page)) $page = $this->LoadSingle("select * from ".$this->config["table_prefix"]."pages where tag = '".mysql_escape_string($tag)."' ".($time ? "and time = '".mysql_escape_string($time)."'" : "and latest = 'Y'")." limit 1"); |
// cache result |
if (!$time) $this->CachePage($page); |
return $page; |
} |
function GetCachedPage($tag) {return (isset($this->pageCache[$tag]) ? $this->pageCache[$tag] : ''); } |
function CachePage($page) { $this->pageCache[$page["tag"]] = $page; } |
function SetPage($page) { $this->page = $page; if ($this->page["tag"]) $this->tag = $this->page["tag"]; } |
function LoadPageById($id) { return $this->LoadSingle("select * from ".$this->config["table_prefix"]."pages where id = '".mysql_escape_string($id)."' limit 1"); } |
function LoadRevisions($page) { return $this->LoadAll("select * from ".$this->config["table_prefix"]."pages where tag = '".mysql_escape_string($page)."' order by time desc"); } |
function LoadPagesLinkingTo($tag) { return $this->LoadAll("select from_tag as tag from ".$this->config["table_prefix"]."links where to_tag = '".mysql_escape_string($tag)."' order by tag"); } |
function LoadRecentlyChanged($limit=50) { |
$limit= (int) $limit; |
if ($pages = $this->LoadAll("select tag, time, user, owner from ".$this->config["table_prefix"]."pages where latest = 'Y' and comment_on = '' order by time desc limit $limit")) |
{ |
foreach ($pages as $page) |
{ |
$this->CachePage($page); |
} |
return $pages; |
} |
} |
function LoadAllPages() { return $this->LoadAll("select * from ".$this->config["table_prefix"]."pages where latest = 'Y' order by tag"); } |
function FullTextSearch($phrase) { return $this->LoadAll("select * from ".$this->config["table_prefix"]."pages where latest = 'Y' and match(tag, body) against('".mysql_escape_string($phrase)."')"); } |
function LoadWantedPages() { return $this->LoadAll("select distinct ".$this->config["table_prefix"]."links.to_tag as tag,count(".$this->config["table_prefix"]."links.from_tag) as count from ".$this->config["table_prefix"]."links left join ".$this->config["table_prefix"]."pages on ".$this->config["table_prefix"]."links.to_tag = ".$this->config["table_prefix"]."pages.tag where ".$this->config["table_prefix"]."pages.tag is NULL group by tag order by count desc"); } |
function LoadOrphanedPages() { return $this->LoadAll("select distinct tag from ".$this->config["table_prefix"]."pages left join ".$this->config["table_prefix"]."links on ".$this->config["table_prefix"]."pages.tag = ".$this->config["table_prefix"]."links.to_tag where ".$this->config["table_prefix"]."links.to_tag is NULL and ".$this->config["table_prefix"]."pages.comment_on = '' order by tag"); } |
function IsOrphanedPage($tag) { return $this->LoadAll("select distinct tag from ".$this->config["table_prefix"]."pages left join ".$this->config["table_prefix"]."links on ".$this->config["table_prefix"]."pages.tag = ".$this->config["table_prefix"]."links.to_tag where ".$this->config["table_prefix"]."links.to_tag is NULL and ".$this->config["table_prefix"]."pages.comment_on ='' and tag='".mysql_escape_string($tag)."'"); } |
function DeleteOrphanedPage($tag) { |
$this->Query("delete from ".$this->config["table_prefix"]."pages where tag='".mysql_escape_string($tag)."' "); |
$this->Query("delete from ".$this->config["table_prefix"]."links where from_tag='".mysql_escape_string($tag)."' "); |
$this->Query("delete from ".$this->config["table_prefix"]."acls where page_tag='".mysql_escape_string($tag)."' "); |
$this->Query("delete from ".$this->config["table_prefix"]."referrers where page_tag='".mysql_escape_string($tag)."' "); |
} |
function SavePage($tag, $body, $comment_on = "") { |
// get current user |
$user = $this->GetUserName(); |
//die($tag); |
// TODO: check write privilege |
if ($this->HasAccess("write", $tag)) |
{ |
// is page new? |
if (!$oldPage = $this->LoadPage($tag)) |
{ |
// create default write acl. store empty write ACL for comments. |
$this->SaveAcl($tag, "write", ($comment_on ? "" : $this->GetConfigValue("default_write_acl"))); |
// create default read acl |
$this->SaveAcl($tag, "read", $this->GetConfigValue("default_read_acl")); |
// create default comment acl. |
$this->SaveAcl($tag, "comment", $this->GetConfigValue("default_comment_acl")); |
// current user is owner; if user is logged in! otherwise, no owner. |
if ($this->GetUser()) $owner = $user; |
} |
else |
{ |
// aha! page isn't new. keep owner! |
$owner = $oldPage["owner"]; |
} |
// set all other revisions to old |
$this->Query("update ".$this->config["table_prefix"]."pages set latest = 'N' where tag = '".mysql_Escape_string($tag)."'"); |
// add new revision |
$this->Query("insert into ".$this->config["table_prefix"]."pages set ". |
"tag = '".mysql_escape_string($tag)."', ". |
($comment_on ? "comment_on = '".mysql_escape_string($comment_on)."', " : ""). |
"time = now(), ". |
"owner = '".mysql_escape_string($owner)."', ". |
"user = '".mysql_escape_string($user)."', ". |
"latest = 'Y', ". |
"body = '".mysql_escape_string(chop($body))."'"); |
} |
} |
function PurgePages() { |
if ($days = $this->GetConfigValue("pages_purge_time")) { |
// Selection of pages which can be deleted |
$pages = $this->LoadAll("select distinct tag, time from ".$this->config["table_prefix"]."pages where time < date_sub(now(), interval '".mysql_escape_string($days)."' day) and latest = 'N' order by time asc"); |
foreach ($pages as $page) { |
// Deletion if there are more than 2 versions avalaible (TODO : parameter ?) |
$tags=$this->LoadAll("select distinct tag from ".$this->config["table_prefix"]."pages where tag = '".mysql_escape_string($page[tag])."' group by tag having count(*) > 2 order by tag"); |
foreach ($tags as $tag) { |
$this->Query("delete from ".$this->config["table_prefix"]."pages where time = '".mysql_escape_string($page[time])."' and tag = '".mysql_escape_string($tag[tag])."'"); |
} |
} |
} |
} |
// COOKIES |
function SetSessionCookie($name, $value) { SetCookie($name, $value, 0, $this->CookiePath); $_COOKIE[$name] = $value; } |
function SetPersistentCookie($name, $value, $remember = 0) { SetCookie($name, $value, time() + ($remember ? 90*24*60*60 : 60 * 60), $this->CookiePath); $_COOKIE[$name] = $value; } |
function DeleteCookie($name) { SetCookie($name, "", 1, $this->CookiePath); $_COOKIE[$name] = ""; } |
function GetCookie($name) { return $_COOKIE[$name]; } |
// HTTP/REQUEST/LINK RELATED |
function SetMessage($message) { $_SESSION["message"] = $message; } |
function GetMessage() |
{ |
if (isset($_SESSION["message"])) $message = $_SESSION["message"]; |
else $message = ""; |
$_SESSION["message"] = ""; |
return $message; |
} |
function Redirect($url) |
{ |
header("Location: $url"); |
exit; |
} |
// returns just PageName[/method]. |
function MiniHref($method = "", $tag = "") |
{ |
if (!$tag = trim($tag)) $tag = $this->tag; |
return $tag.($method ? "/".$method : ""); |
} |
// returns the full url to a page/method. |
function Href($method = "", $tag = "", $params = "") |
{ |
$href = $this->config["base_url"].$this->MiniHref($method, $tag); |
if ($params) |
{ |
$href .= ($this->config["rewrite_mode"] ? "?" : "&").$params; |
} // ajout TEla |
return $href; |
} |
function Link($tag, $method = "", $text = "", $track = 1) { |
$tag=htmlspecialchars($tag); //avoid xss |
$text=htmlspecialchars($text); //paranoiac again |
if (!$text) $text = $tag; |
// is this an interwiki link? |
if (preg_match("/^([A-Z][A-Z,a-z]+)[:]([A-Z,a-z,0-9]*)$/s", $tag, $matches)) |
{ |
$tag = $this->GetInterWikiUrl($matches[1], $matches[2]); |
return "<a href=\"$tag\">$text (interwiki)</a>"; |
} |
// is this a full link? ie, does it contain non alpha-numeric characters? |
// Note : [:alnum:] is equivalent [0-9A-Za-z] |
// [^[:alnum:]] means : some caracters other than [0-9A-Za-z] |
// For example : "www.adress.com", "mailto:adress@domain.com", "http://www.adress.com" |
else if (preg_match("/[^[:alnum:]]/", $tag)) |
{ |
// check for email addresses |
if (preg_match("/^.+\@.+$/", $tag)) |
{ |
$tag = "mailto:".$tag; |
} |
// check for protocol-less URLs |
else if (!preg_match("/:\/\//", $tag)) |
{ |
$tag = "http://".$tag; //Very important for xss (avoid javascript:() hacking) |
} |
// is this an inline image (text!=tag and url ends png,gif,jpeg) |
if ($text!=$tag and preg_match("/.(gif|jpeg|png|jpg)$/i",$tag)) |
{ |
return "<img src=\"$tag\" alt=\"$text\" />"; |
} |
else |
{ |
return "<a href=\"$tag\">$text</a>"; |
} |
} |
else |
{ |
// it's a Wiki link! |
if (isset($_SESSION["linktracking"]) && $track) $this->TrackLinkTo($tag); |
return ($this->LoadPage($tag) ? "<a href=\"".$this->href($method, $tag)."\">".$text."</a>" : "<span class=\"missingpage\">".$text."</span><a href=\"".$this->href("edit", $tag)."\">?</a>"); |
} |
} |
function ComposeLinkToPage($tag, $method = "", $text = "", $track = 1) { |
if (!$text) $text = $tag; |
$text = htmlentities($text); |
if (isset($_SESSION["linktracking"]) && $track) |
$this->TrackLinkTo($tag); |
return '<a href="'.$this->href($method, $tag).'">'.$text.'</a>'; |
} |
// function PregPageLink($matches) { return $this->Link($matches[1]); } |
function IsWikiName($text) { return preg_match("/^[A-Z][a-z]+[A-Z,0-9][A-Z,a-z,0-9]*$/", $text); } |
function TrackLinkTo($tag) { $_SESSION["linktable"][] = $tag; } |
function GetLinkTable() { return $_SESSION["linktable"]; } |
function ClearLinkTable() { $_SESSION["linktable"] = array(); } |
function StartLinkTracking() { $_SESSION["linktracking"] = 1; } |
function StopLinkTracking() { $_SESSION["linktracking"] = 0; } |
function WriteLinkTable() { |
// delete old link table |
$this->Query("delete from ".$this->config["table_prefix"]."links where from_tag = '".mysql_escape_string($this->GetPageTag())."'"); |
if ($linktable = $this->GetLinkTable()) |
{ |
$from_tag = mysql_escape_string($this->GetPageTag()); |
foreach ($linktable as $to_tag) |
{ |
$lower_to_tag = strtolower($to_tag); |
if (!$written[$lower_to_tag]) |
{ |
$this->Query("insert into ".$this->config["table_prefix"]."links set from_tag = '".$from_tag."', to_tag = '".mysql_escape_string($to_tag)."'"); |
$written[$lower_to_tag] = 1; |
} |
} |
} |
} |
function Header() { return $this->Action($this->GetConfigValue("header_action"), 1); } |
function Footer() { return $this->Action($this->GetConfigValue("footer_action"), 1); } |
// FORMS |
function FormOpen($method = "", $tag = "", $formMethod = "post") { |
/* Debut de la modif ACeditor */ |
// ACEditor: id=\"ACEditor\" name=\"ACEditor\" ci-dessous le if a été ajouté (initialement, seule la ligne du else existait) |
// si l'url se termine par edit (expression régulière edit$), on est en mode édition et dans ce cas on donne les id et name au formulaire |
// Sinon surtout pas car ça marche plus dans la mesure ou plusieurs formulaires auraient ces ID et name et dans ce cas |
// il semble que le dernier soit considéré, c'est à dire pas le bon :o( |
if (ereg('edit$', $this->href($method, $tag))) { |
$result = "<form id=\"ACEditor\" name=\"ACEditor\" action=\"".$this->href($method, $tag)."\" method=\"".$formMethod."\">\n"; |
} else { |
$result = "<form action=\"".$this->href($method, $tag)."\" method=\"".$formMethod."\">\n"; |
} |
/* fin de la modif ACeditor */ |
if (!$this->config["rewrite_mode"]) $result .= "<input type=\"hidden\" name=\"wiki\" value=\"".$this->MiniHref($method, $tag)."\" />\n"; |
return $result; |
} |
function FormClose() { |
return "</form>\n"; |
} |
// INTERWIKI STUFF |
function ReadInterWikiConfig() { |
if ($lines = file("interwiki.conf")) |
{ |
foreach ($lines as $line) |
{ |
if ($line = trim($line)) |
{ |
list($wikiName, $wikiUrl) = explode(" ", trim($line)); |
$this->AddInterWiki($wikiName, $wikiUrl); |
} |
} |
} |
} |
function AddInterWiki($name, $url) { |
$this->interWiki[$name] = $url; |
} |
function GetInterWikiUrl($name, $tag) { |
if (isset($this->interWiki[$name])) |
{ |
return $this->interWiki[$name].$tag; |
} else { |
return 'http://'.$tag; //avoid xss by putting http:// in front of JavaScript:() |
} |
} |
// REFERRERS |
function LogReferrer($tag = "", $referrer = "") { |
// fill values |
if (!$tag = trim($tag)) $tag = $this->GetPageTag(); |
if (!$referrer = trim($referrer) AND isset($_SERVER["HTTP_REFERER"])) $referrer = $_SERVER["HTTP_REFERER"]; |
// check if it's coming from another site |
if ($referrer && !preg_match("/^".preg_quote($this->GetConfigValue("base_url"), "/")."/", $referrer)) |
{ |
$this->Query("insert into ".$this->config["table_prefix"]."referrers set ". |
"page_tag = '".mysql_escape_string($tag)."', ". |
"referrer = '".mysql_escape_string($referrer)."', ". |
"time = now()"); |
} |
} |
function LoadReferrers($tag = "") { |
return $this->LoadAll("select referrer, count(referrer) as num from ".$this->config["table_prefix"]."referrers ".($tag = trim($tag) ? "where page_tag = '".mysql_escape_string($tag)."'" : "")." group by referrer order by num desc"); |
} |
function PurgeReferrers() { |
if ($days = $this->GetConfigValue("referrers_purge_time")) { |
$this->Query("delete from ".$this->config["table_prefix"]."referrers where time < date_sub(now(), interval '".mysql_escape_string($days)."' day)"); |
} |
} |
// PLUGINS |
function Action($action, $forceLinkTracking = 0) |
{ |
$action = trim($action); $vars=array(); |
// stupid attributes check |
if ((stristr($action, "=\"")) || (stristr($action, "/"))) |
{ |
// extract $action and $vars_temp ("raw" attributes) |
preg_match("/^([A-Za-z0-9]*)\/?(.*)$/", $action, $matches); |
list(, $action, $vars_temp) = $matches; |
// match all attributes (key and value) |
$this->parameter[$vars_temp]=$vars_temp; |
preg_match_all("/([A-Za-z0-9]*)=\"(.*)\"/U", $vars_temp, $matches); |
// prepare an array for extract() to work with (in $this->IncludeBuffered()) |
if (is_array($matches)) |
{ |
for ($a = 0; $a < count($matches[1]); $a++) |
{ |
$vars[$matches[1][$a]] = $matches[2][$a]; |
$this->parameter[$matches[1][$a]]=$matches[2][$a]; |
} |
} |
} |
if (!$forceLinkTracking) $this->StopLinkTracking(); |
$result = $this->IncludeBuffered(strtolower($action).".php", "<i>Action inconnue \"$action\"</i>", $vars, $this->config["action_path"]); |
$this->StartLinkTracking(); |
if (isset($parameter)) unset($this->parameter[$parameter]); |
unset($this->parameter); |
return $result; |
} |
function Method($method) { |
if (!$handler = $this->page["handler"]) $handler = "page"; |
$methodLocation = $handler."/".$method.".php"; |
return $this->IncludeBuffered($methodLocation, "<i>Méthode inconnue \"$methodLocation\"</i>", "", $this->config["handler_path"]); |
} |
function Format($text, $formatter = "wakka") { |
return $this->IncludeBuffered("formatters/".$formatter.".php", "<i>Impossible de trouver le formateur \"$formatter\"</i>", compact("text")); |
} |
// USERS |
//============================= Lignes modifiées pour Tela Botanica =================================== |
function LoadUser($name, $password = 0) { return $this->LoadSingle("select * from ".$this->config["common_table_prefix"]."users where name = '".mysql_escape_string($name)."' ".($password === 0 ? "" : "and password = '".mysql_escape_string($password)."'")." limit 1"); } |
function LoadUsers() { return $this->LoadAll("select * from ".$this->config["common_table_prefix"]."users order by name"); } |
//=============================================================================================== |
function GetUserName() { if ($user = $this->GetUser()) $name = $user["name"]; else if (!$name = gethostbyaddr($_SERVER["REMOTE_ADDR"])) $name = $_SERVER["REMOTE_ADDR"]; return $name; } |
function UserName() { /* deprecated! */ return $this->GetUserName(); } |
function GetUser() { return (isset($_SESSION["user"]) ? $_SESSION["user"] : '');} |
function SetUser($user, $remember=0) { $_SESSION["user"] = $user; $this->SetPersistentCookie("name", $user["name"], $remember); $this->SetPersistentCookie("password", $user["password"], $remember); $this->SetPersistentCookie("remember", $remember, $remember); } |
function LogoutUser() { $_SESSION["user"] = ""; $this->DeleteCookie("name"); $this->DeleteCookie("password"); } |
function UserWantsComments() { if (!$user = $this->GetUser()) return false; return ($user["show_comments"] == "Y"); } |
function GetParameter($parameter, $default = '') { return (isset($this->parameter[$parameter]) ? $this->parameter[$parameter] : $default); } |
// COMMENTS |
function LoadComments($tag) { return $this->LoadAll("select * from ".$this->config["table_prefix"]."pages where comment_on = '".mysql_escape_string($tag)."' and latest = 'Y' order by time"); } |
function LoadRecentComments() { return $this->LoadAll("select * from ".$this->config["table_prefix"]."pages where comment_on != '' and latest = 'Y' order by time desc"); } |
function LoadRecentlyCommented($limit = 50) { |
// NOTE: this is really stupid. Maybe my SQL-Fu is too weak, but apparently there is no easier way to simply select |
// all comment pages sorted by their first revision's (!) time. ugh! |
// load ids of the first revisions of latest comments. err, huh? |
$pages=array(); |
$comments=array(); |
if ($ids = $this->LoadAll("select min(id) as id from ".$this->config["table_prefix"]."pages where comment_on != '' group by tag order by id desc")) |
{ |
// load complete comments |
foreach ($ids as $id) |
{ |
$comment = $this->LoadSingle("select * from ".$this->config["table_prefix"]."pages where id = '".$id["id"]."' limit 1"); |
$num=0; |
if (!isset($comments[$comment["comment_on"]])) $comments[$comment["comment_on"]]=''; |
if (!$comments[$comment["comment_on"]] && $num < $limit) |
{ |
$comments[$comment["comment_on"]] = $comment; |
$num++; |
} |
} |
// now load pages |
if ($comments) |
{ |
// now using these ids, load the actual pages |
foreach ($comments as $comment) |
{ |
$page = $this->LoadPage($comment["comment_on"]); |
$page["comment_user"] = $comment["user"]; |
$page["comment_time"] = $comment["time"]; |
$page["comment_tag"] = $comment["tag"]; |
$pages[] = $page; |
} |
} |
} |
// load tags of pages |
//return $this->LoadAll("select comment_on as tag, max(time) as time, tag as comment_tag, user from ".$this->config["table_prefix"]."pages where comment_on != '' group by comment_on order by time desc"); |
return $pages; |
} |
// ACCESS CONTROL |
// returns true if logged in user is owner of current page, or page specified in $tag |
function UserIsOwner($tag = "") { |
// check if user is logged in |
if (!$this->GetUser()) return false; |
// set default tag |
if (!$tag = trim($tag)) $tag = $this->GetPageTag(); |
// check if user is owner |
if ($this->GetPageOwner($tag) == $this->GetUserName()) return true; |
} |
function GetPageOwner($tag = "", $time = "") { if (!$tag = trim($tag)) $tag = $this->GetPageTag(); if ($page = $this->LoadPage($tag, $time)) return $page["owner"]; } |
function SetPageOwner($tag, $user) { |
// check if user exists |
if (!$this->LoadUser($user)) return; |
// updated latest revision with new owner |
$this->Query("update ".$this->config["table_prefix"]."pages set owner = '".mysql_escape_string($user)."' where tag = '".mysql_escape_string($tag)."' and latest = 'Y' limit 1"); |
} |
function LoadAcl($tag, $privilege, $useDefaults = 1) { |
if ((!$acl = $this->LoadSingle("select * from ".$this->config["table_prefix"]."acls where page_tag = '".mysql_escape_string($tag)."' and privilege = '".mysql_escape_string($privilege)."' limit 1")) && $useDefaults) |
{ |
$acl = array("page_tag" => $tag, "privilege" => $privilege, "list" => $this->GetConfigValue("default_".$privilege."_acl")); |
} |
return $acl; |
} |
function SaveAcl($tag, $privilege, $list) { |
if ($this->LoadAcl($tag, $privilege, 0)) $this->Query("update ".$this->config["table_prefix"]."acls set list = '".mysql_escape_string(trim(str_replace("\r", "", $list)))."' where page_tag = '".mysql_escape_string($tag)."' and privilege = '".mysql_escape_string($privilege)."' limit 1"); |
else $this->Query("insert into ".$this->config["table_prefix"]."acls set list = '".mysql_escape_string(trim(str_replace("\r", "", $list)))."', page_tag = '".mysql_escape_string($tag)."', privilege = '".mysql_escape_string($privilege)."'"); |
} |
// returns true if $user (defaults to current user) has access to $privilege on $page_tag (defaults to current page) |
function HasAccess($privilege, $tag = "", $user = "") { |
// set defaults |
if (!$tag = trim($tag)) $tag = $this->GetPageTag(); |
if (!$user = $this->GetUserName()); |
// load acl |
$acl = $this->LoadAcl($tag, $privilege); |
// if current user is owner, return true. owner can do anything! |
if ($this->UserIsOwner($tag)) return true; |
// fine fine... now go through acl |
foreach (explode("\n", $acl["list"]) as $line) |
{ |
$line = trim($line); |
// check for inversion character "!" |
if (preg_match("/^[!](.*)$/", $line, $matches)) |
{ |
$negate = 1; |
$line = $matches[1]; |
} |
else |
{ |
$negate = 0; |
} |
// if there's still anything left... lines with just a "!" don't count! |
if ($line) |
{ |
switch ($line[0]) |
{ |
// comments |
case "#": |
break; |
// everyone |
case "*": |
return !$negate; |
// aha! a user entry. |
case "+": |
if (!$this->LoadUser($user)) |
{ |
return $negate; |
} |
else |
{ |
return !$negate; |
} |
default: |
if ($line == $user) |
{ |
return !$negate; |
} |
} |
} |
} |
// tough luck. |
return false; |
} |
// MAINTENANCE |
function Maintenance() { |
// purge referrers |
$this->PurgeReferrers(); |
// purge old page revisions |
$this->PurgePages(); |
} |
// THE BIG EVIL NASTY ONE! |
function Run($tag, $method = "") { |
if(!($this->GetMicroTime()%3)) $this->Maintenance(); |
$this->ReadInterWikiConfig(); |
// do our stuff! |
if (!$this->method = trim($method)) $this->method = "show"; |
if (!$this->tag = trim($tag)) $this->Redirect($this->href("", $this->config["root_page"])); |
if ((!$this->GetUser() && isset($_COOKIE["name"])) && ($user = $this->LoadUser($_COOKIE["name"], $_COOKIE["password"]))) $this->SetUser($user, $_COOKIE["remember"]); |
$this->SetPage($this->LoadPage($tag, (isset($_REQUEST["time"]) ? $_REQUEST["time"] :''))); |
$this->LogReferrer(); |
//correction pour un support plus facile de nouveaux handlers |
print($this->Method($this->method)); |
} |
} |
// stupid version check |
if (!isset($_REQUEST)) die('$_REQUEST[] not found. Wakka requires PHP 4.1.0 or higher!'); |
// workaround for the amazingly annoying magic quotes. |
function magicQuotesSuck(&$a) |
{ |
if (is_array($a)) |
{ |
foreach ($a as $k => $v) |
{ |
if (is_array($v)) |
magicQuotesSuck($a[$k]); |
else |
$a[$k] = stripslashes($v); |
} |
} |
} |
set_magic_quotes_runtime(0); |
if (get_magic_quotes_gpc()) |
{ |
magicQuotesSuck($_POST); |
magicQuotesSuck($_GET); |
magicQuotesSuck($_COOKIE); |
} |
// default configuration values |
$wakkaConfig= array(); |
$wakkaDefaultConfig = array( |
'wakka_version' => '', |
'wikini_version' => '', |
'debug' => 'no', |
"mysql_host" => "localhost", |
"mysql_database" => "wikini", |
"mysql_user" => "wikini", |
"mysql_password" => '', |
"table_prefix" => "wikini_", |
"root_page" => "PagePrincipale", |
"wakka_name" => "MonSiteWikiNi", |
"base_url" => "http://".$_SERVER["SERVER_NAME"].($_SERVER["SERVER_PORT"] != 80 ? ":".$_SERVER["SERVER_PORT"] : "").$_SERVER["REQUEST_URI"].(preg_match("/".preg_quote("wakka.php")."$/", $_SERVER["REQUEST_URI"]) ? "?wiki=" : ""), |
"rewrite_mode" => (preg_match("/".preg_quote("wakka.php")."$/", $_SERVER["REQUEST_URI"]) ? "0" : "1"), |
'meta_keywords' => '', |
'meta_description' => '', |
"action_path" => "actions", |
"handler_path" => "handlers", |
"header_action" => "header", |
"footer_action" => "footer", |
"navigation_links" => "DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur", |
"referrers_purge_time" => 24, |
"pages_purge_time" => 90, |
"default_write_acl" => "*", |
"default_read_acl" => "*", |
"default_comment_acl" => "*", |
"menu_page" => "PageMenu", |
"preview_before_save" => "0"); |
// load config |
if (!$configfile = GetEnv("WAKKA_CONFIG")) $configfile = "wakka.config.php"; |
if (file_exists($configfile)) include($configfile); |
$wakkaConfigLocation = $configfile; |
$wakkaConfig = array_merge($wakkaDefaultConfig, $wakkaConfig); |
// check for locking |
if (file_exists("locked")) { |
// read password from lockfile |
$lines = file("locked"); |
$lockpw = trim($lines[0]); |
// is authentification given? |
if (isset($_SERVER["PHP_AUTH_USER"])) { |
if (!(($_SERVER["PHP_AUTH_USER"] == "admin") && ($_SERVER["PHP_AUTH_PW"] == $lockpw))) { |
$ask = 1; |
} |
} else { |
$ask = 1; |
} |
if ($ask) { |
header("WWW-Authenticate: Basic realm=\"".$wakkaConfig["wakka_name"]." Install/Upgrade Interface\""); |
header("HTTP/1.0 401 Unauthorized"); |
echo "Ce site est en cours de mise à jour. Veuillez essayer plus tard." ; |
exit; |
} |
} |
// compare versions, start installer if necessary |
if ($wakkaConfig["wakka_version"] && (!$wakkaConfig["wikini_version"])) { $wakkaConfig["wikini_version"]=$wakkaConfig["wakka_version"]; } |
if (($wakkaConfig["wakka_version"] != WAKKA_VERSION) || ($wakkaConfig["wikini_version"] != WIKINI_VERSION)) { |
// start installer |
if (!isset($_REQUEST["installAction"]) OR !$installAction = trim($_REQUEST["installAction"])) $installAction = "default"; |
include("setup/header.php"); |
if (file_exists("setup/".$installAction.".php")) include("setup/".$installAction.".php"); else echo "<i>Invalid action</i>" ; |
include("setup/footer.php"); |
exit; |
} |
// configuration du cookie de session |
//determine le chemin pour le cookie |
$a = parse_url($wakkaConfig['base_url']); |
$CookiePath = dirname($a['path']); |
if ($CookiePath != '/') $CookiePath .= '/'; |
$a = session_get_cookie_params(); |
session_set_cookie_params($a['lifetime'],$CookiePath); |
unset($a); |
unset($CookiePath); |
// start session |
session_start(); |
// fetch wakka location |
if (!isset($_REQUEST["wiki"])) $_REQUEST["wiki"] = ''; |
$wiki = $_REQUEST["wiki"]; |
// remove leading slash |
$wiki = preg_replace("/^\//", "", $wiki); |
// split into page/method |
if (preg_match("#^(.+?)/([A-Za-z0-9_]*)$#", $wiki, $matches)) list(, $page, $method) = $matches; |
else if (preg_match("#^(.*)$#", $wiki, $matches)) list(, $page) = $matches; |
// create wiki object |
$wiki = new Wiki($wakkaConfig); |
// check for database access |
if (!$wiki->dblink) |
{ |
echo "<p>Pour des raisons indépendantes de notre volonté, le contenu de ce Wiki est temporairement inaccessible. Veuillez réessayer ultérieurement, merci de votre compréhension.</p>"; |
exit; |
} |
function compress_output($output) |
{ |
return gzencode($output); |
} |
// Check if the browser supports gzip encoding, HTTP_ACCEPT_ENCODING |
if (strstr ($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') ) |
{ |
// Start output buffering, and register compress_output() (see |
// below) |
ob_start ("compress_output"); |
// Tell the browser the content is compressed with gzip |
header ("Content-Encoding: gzip"); |
} |
// go! |
if (!isset($method)) $method=''; |
// Security (quick hack) : Check method syntax |
if (!(preg_match('#^[A-Za-z0-9_]*$#',$method))) { |
$method=''; |
} |
$wiki->Run($page, $method); |
?> |
/branches/livraison_menes/wikini/wakka.css |
---|
New file |
0,0 → 1,108 |
/*Début modification sytle TELA BOTANICA*/ |
body |
{ |
background-color: #D7F2D7; |
color: black; |
background-image: url(bibliotheque/images/telabotanica/logo_tb_pr_wikini.png); |
background-repeat: no-repeat; |
background-position: top left; |
} |
h1 { margin: 0px; padding: 0px; font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; font-size: 1.6em; font-style: normal; background-color: #2B8648; border-style: none; color: #FFFFFF; text-align: center;} |
h2 { margin: 0px; padding: 0px; font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; font-size: 1.4em; font-style: oblique;} |
h3 { margin: 0px; padding: 0px; font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; font-size: 1.2em; font-style: normal;} |
h4 { margin: 0px; padding: 0px; font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; font-size: 1.1em; font-style: oblique;} |
h5 { margin: 0px; padding: 0px; font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; font-size: 1.1em; font-style: normal; font-weight: bold; color : #2B8648;} |
a { color: #993333; text-decoration: none; font-weight: bold;} |
a:hover { text-decoration: underline;} |
.wiki_name { float: left; padding-left: 60px; margin: 0px 15px 0px 10px; font-size: 150%; font-weight: bold; background-color: transparent; color: black;} |
.page_name { font-size: 150%; background-color: transparent;} |
.header { padding: 10px; padding-top: 5px; padding-left: 75px;} |
/*Fin modification sytle TELA BOTANICA*/ |
body, p, td, li, input, select, textarea { font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.3; } |
ul { margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; } |
ol { margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; } |
form { margin: 0px; padding: 0px; } |
tt { color: Navy; } |
hr { border: 0px; color: Black; /* Internet Explorer */ background-color: Black; height: 1px; } |
.error { color: #CC3333; font-weight: bold; } |
.indent { margin-left: 40px; } |
.additions { color: #008800; } |
.deletions { color: #880000; } |
.add { font-weight: bold; color: #c00; text-decoration: underline; } |
.del { font-style: italic; color: #c00; text-decoration: line-through; } |
.page { background-color: #FFFFFF; padding: 10px; border: 1px inset; border-bottom: none; } |
.prev_alert { background-color: red; color: white; font-size: 1.7em; font-weight: bold; margin-bottom: 5px; } |
.edit { width: 100%; height: 400px; } |
.footer { background-color: #DDDDDD; padding: 5px 10px; border: 1px inset; border-top: none; border-top: 1px solid #CCCCCC } |
.code { background: #FFFFFF; border: solid #888888 2px; font-family: 'Courier New', Courier; color: black; font-size: 10pt; width: 100%; height: 400px; overflow: scroll; padding: 3px; } |
.revisioninfo { color: #AAAAAA; padding-bottom: 20px; } |
.commentsheader { background-color: #DDDDDD; padding: 2px 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC } |
.comment { background-color: #EEEEEE; padding: 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC; border-bottom: 1px solid #EEEEEE; } |
.commentinfo { color: #AAAAAA; } |
.commentform { background-color: #EEEEEE; padding: 10px; border-left: 1px inset; border-right: 1px inset; border-top: 1px solid #CCCCCC } |
.copyright { font-size: 11px; color: #AAAAAA; text-align: right; } |
.copyright A { color: #AAAAAA; } |
.searchbox { background: #FFFFF8; border: 0px; border-bottom: 1px solid #CCCCAA; padding: 0px; margin: 0px; } |
.debug { font-size: 11px; color: #888888; } |
.hr_clear { clear: both; visibility: hidden; } |
.include_right { float: right; width: 17%; } /* bloc flotant à droite */ |
.include_left { float: left; width: 17%; } /* bloc flotant à gauche */ |
.include_solid_border { border: solid; padding: 2px; } /* encadré noir */ |
.include_gray_background { background-color: #DDDDDD; } /* fond gris */ |
.include_small_fonts { font-size: 0.8em; } /* petites polices */ |
.include_big_fonts { font-size: 1.2em; } /* grandes polces */ |
.include_height10em { height: 10em; overflow: scroll; } /* boite de 10em de hauteur, avec ascenseur */ |
.include_height15em { height: 15em; overflow: scroll; } |
.include_height30em { height: 30em; overflow: scroll; } |
.include_height60em { height: 60em; overflow: scroll; } |
.trail_table { line-height: 30px;} |
.trail_button { color: #993333; } |
/*Spécifique TELA BOTANICA*/ |
.rouge { color: red; font-weight: bold; } |
.jaune { color: #D8D100; font-weight: bold; } |
.vert { color: green; font-weight: bold; } |
.pair { background-color: #FFF6D5; } |
.impair { background-color: #F4FFEF; } |
/* CONTRIBUTION MENU GAUCHE */ |
.page_table {margin: 0; padding: 0 ; border: none; height: 100%;width: 100%;} |
.menu_column {display:none;} |
/*.menu_column {background-color: #FFFFCC; vertical-align: top; width: 200px; border: 1px solid #000000; padding:0.2em; margin-top: 50px; } |
.menu_column a {font-size: 0.8em;} |
.menu_column ul { padding-left: 5px; margin-left: 5px; list-style-type: none;} |
.body_column {vertical-align: top; border: none;padding:5px;}*/ |
/* CONTRIBUTION ACTION ATTACH */ |
/* - les images */ |
.attach_margin05em { margin: 0.5em;} /* marge de 0.5 em autour de l'image*/ |
.attach_margin1em { margin: 1em;} /* marge de 1em autour de l'image*/ |
.attach_left {float: left;} /* bloc flotant à gauche */ |
.attach_right {float: right;} /* bloc flotant à droite */ |
.attach_noborder {border-width: 0px;} /* pas de bordure */ |
.attach_vmiddle {vertical-align: text-bottom;} /* aligenement vertical au milieu */ |
/* - le gestionnaire des uploads */ |
.tableFM {border: thin solid Black; width: 100%; } |
.tableFM THEAD { background-color: Silver; font-weight: bold; text-align: center; } |
.tableFM TFOOT { background-color: Silver; font-weight: bold; text-align: left; } |
.tableFM TBODY TR { text-align: center; } |
.tableFMCol1 { background-color: Aqua; } |
.tableFMCol2 { background-color: Yellow; } |
/* CONTRIBUTION ACeditor */ |
.image_left {float: left;} /* bloc flotant à gauche */ |
.image_right {float: right;} /* bloc flotant à droite */ |
.image_center {text-align:center;} /* bloc centré */ |
/branches/livraison_menes/wikini/formatters/tableaux.php |
---|
New file |
0,0 → 1,87 |
<?php |
function parsetable($thing) |
{ |
$tableattr = 'border="1"'; |
// echo "parsetable debut : \$thing = $thing<br>"; |
// recuperation des attributs |
preg_match("/^\[\|(.*)$/m",$thing,$match); |
// echo "parsetable : \$match = ";var_dump($match);echo "<br>"; |
if ($match[1]){ |
$tableattr = $match[1]; |
} |
$table = "<table $tableattr >\n"; |
//suppression de [|xxxx et de |] |
$thing = preg_replace("/^\[\|(.*)$/m","",$thing); |
$thing = trim(preg_replace("/\|\]/m","",$thing)); |
// echo "parsetable suppression [| |]: \$thing = $thing<br>"; |
//recuperation de chaque ligne |
$rows = preg_split("/$/m",$thing,-1,PREG_SPLIT_NO_EMPTY); |
// echo "parsetable preg_split:";var_dump($rows);echo "<br>"; |
//analyse de chaque ligne |
foreach ($rows as $row){ |
$table .= parsetablerow($row); |
} |
$table.= "</table>"; |
return $table; |
} |
//parse la definition d'une ligne |
function parsetablerow($row) |
{ |
$rowattr = ""; |
$row = trim($row); |
// echo "parsetablerow debut : \$row = $row<br>"; |
//detection des attributs de ligne => si la ligne ne commence pas par | alors attribut |
if (!preg_match("/^\|/",$row,$match)){ |
preg_match("/^!([^\|]*)!\|/",$row,$match); |
$rowattr = $match[1]; |
// echo "\$rowattr = $rowattr<br>"; |
$row = trim(preg_replace("/^!([^\|]*)!/","",$row)); |
} |
$result .= " <tr $rowattr>\n"; |
$row = preg_replace("/^\|/","",$row); |
$row = preg_replace("/\|$/","",$row); |
// echo "parsetablerow sans attribut : \$row = $row<br>"; |
//recuperation de chaque cellule |
$cells = explode("|",$row); //nb : seule les indices impaire sont significatif |
// echo "parsetablerow preg_split \$cells:";var_dump($cells);echo "<br>"; |
$i=0; |
foreach ($cells as $cell){ |
// if ($i % 2){ |
// echo "\$cell = $cell<br>"; |
$result .= parsetablecell($cell); |
// } |
$i++; |
} |
$result .= " </tr>\n"; |
return $result; |
} |
//parse la definition d'une cellule |
function parsetablecell($cell) |
{ |
global $wiki; |
$cellattr = ""; |
if (preg_match("/^!(.*)!/",$cell,$match)){ |
$cellattr = $match[1]; |
} |
$cell = preg_replace("/^!(.*)!/","",$cell); |
//si espace au debut => align=right |
//si espace a la fin => align=left |
//si espace debut et fin => align=center |
if (preg_match("/^\s(.*)/",$cell)){ |
$align="right"; |
} |
if (preg_match("/^(.*)\s$/",$cell)){ |
$align="left"; |
} |
if (preg_match("/^\s(.*)\s$/",$cell)){ |
$align="center"; |
} |
if ($align) $cellattr .= " align=\"$align\""; |
// echo "\$this->classname = ".get_class($wiki)."<br>"; |
return " <td $cellattr>".$wiki->Format($cell)."</td>\n"; |
} |
?> |
/branches/livraison_menes/wikini/formatters/php.php |
---|
New file |
0,0 → 1,3 |
<?php |
highlight_string($text) |
?> |
/branches/livraison_menes/wikini/formatters/hightlighter.class.inc |
---|
New file |
0,0 → 1,250 |
<?php |
/* |
* $Id: hightlighter.class.inc,v 1.1 2005-09-22 14:02:49 ddelon Exp $ |
* |
* Souligneur générique pour colorier la syntaxe de langage de programmation |
* |
* copyrigth Eric Feldstein 2004 mailto:garfield_fr@tiscali.fr |
* |
* Licence : la meme que wikini(voir le fichier LICENCE). |
* Vous êtes libre d'utiliser et de modifier ce code à condition de laisser le copyright |
* d'origine. Vous pouvez bien sur vous ajouter à la liste des auteurs. |
* |
* INSTALLATION : copier le fichier dans le repertoire "formatters" de WikiNi |
* UTILISATION : importer la classe dans le script de coloration |
* ATTRIBUTS DE LA CLASSE : |
* - isCaseSensitiv : booleen - indique si la syntaxe est sensible a la casse |
* - comment : array - tableau d'expressions regulieres definissant les commentaires multiligne |
* ex : array('({[^$][^}]*})', //commentaires: { ... } |
* '(\(\*[^$](.*)\*\))' //commentaires: (* ... *) |
* ); |
* - commentLine : array tableau d'expressions regulieres definissant les commentaires monoligne |
* ex : array('(//.*\n)'); //commentaire // |
* - commentStyle : string - style CSS inline a utiliser pour la coloration(utilisé dans une |
* balise <SPAN style="..."></SPAN>) |
* - directive : array - tableau d'expression reguliere pour definir les directive de |
* compilation |
* - directiveStyle : string - style CSS inline a utiliser pour la coloration |
* - string : array - tableau d'expression reguliere pour definir les chaine de caracteres |
* - stringStyle : string - style CSS inline a utiliser pour la coloration |
* - number : array - tableau d'expression reguliere pour definir les nombres |
* - numberStyle : string - style CSS inline a utiliser pour la coloration |
* - keywords : array - tableau asociatif contenant des tableaux de liste de mots avec leur style. Ex : |
* $oHightlighter->keywords['Liste1']['words'] = array('liste1mot1','liste1mot2','liste1mot3'); |
* $oHightlighter->keywords['Liste1']['style'] = 'color: red'; |
* $oHightlighter->keywords['Liste2']['words'] = array('liste2mot1','liste2mot2'); |
* $oHightlighter->keywords['Liste2']['style'] = 'color: yellow'; |
* chaque tableau keywords['...'] DOIT posseder les 2 clé 'words' et 'style'. |
* - symboles : array - tableau conteant la liste des symboles |
* - symbolesStyle : string - style CSS inline a utiliser pour la coloration |
* - identifier : array - tableau d'expression reguliere pour definir les identifiants |
* - identStyle : string - style CSS inline a utiliser pour la coloration |
* METHODE PUBLIQUE DE LA CLASSE : |
* - Analyse($text) : $text string Chaine a analyser |
* renvoie le texte colorié. |
* |
* NOTES IMPORTANTES |
* - Les expressions reguliere doivent être entre parenthèse capturante pour etre utilisé |
* dans une fonction de remplacement. Voir le fichier coloration_delphi.php pour un exemple |
* - Lorsque un style est defini à vide, l'expression reguliere n'est pas prise en compte dans |
* l'analyse. |
* - L'option de recherche est msU : multiligne, le . peut être un \n et la recherche |
* est 'not greedy' qui inverse la tendance à la gourmandise des expressions régulières. |
*/ |
class Hightlighter{ |
//sensibilite majuscule/minuscule |
var $isCaseSensitiv = false; |
//commentaires |
var $comment = array(); //commentaire multiligne |
var $commentLine = array(); //commentaire monoligne |
var $commentStyle = '';//'color: red'; |
//directives de compilation |
var $directive = array(); |
var $directiveStyle = '';//'color: green'; |
//chaine de caracteres |
var $string = array(); |
var $stringStyle = ''; |
//nombre |
var $number = array(); |
var $numberStyle = ''; |
//mots clé |
var $keywords = array(); |
//séparateurs |
var $symboles = array(); |
var $symbolesStyle = ''; |
//identifiant |
var $identifier = array(); |
var $identStyle = ''; |
//******************************************************* |
// Variable privées |
//******************************************************* |
var $_patOpt = 'msU'; //option de recherche |
var $_pattern = ''; //modele complet |
var $_commentPattern = ''; //modele des commentaires |
var $_directivePattern = '';//modele des directives |
var $_numberPattern = ''; //modele des nombres |
var $_stringPattern = ''; //modele des chaine de caracteres |
var $_keywordPattern = ''; //modele pour le mots cle |
var $_symbolesPattern = ''; //modele pour les symbole |
var $_separatorPattern = '';//modele pour les sparateurs |
var $_identPattern = ''; //modele pour les identifiants |
/******************************************************** |
Methodes de la classe |
*********************************************************/ |
/** |
* Renvoie le pattern pour les commentaires |
*/ |
function _getCommentPattern(){ |
$a = array_merge($this->commentLine,$this->comment); |
return implode('|',$a); |
} |
/** |
* Renvoie le pattern pour les directives de compilation |
*/ |
function _getDirectivePattern(){ |
return implode('|',$this->directive); |
} |
/** |
* Renvoie le pattern pour les chaine de caracteres |
*/ |
function _getStringPattern(){ |
return implode('|',$this->string); |
} |
/** |
* Renvoie le pattern pour les nombre |
*/ |
function _getNumberPattern(){ |
return implode('|',$this->number); |
} |
/** |
* Renvoie le pattern pour les mots clé |
*/ |
function _getKeywordPattern(){ |
$aResult = array(); |
foreach($this->keywords as $key=>$keyword){ |
$aResult = array_merge($aResult, $keyword['words']); |
$this->keywords[$key]['pattern'] = '\b'.implode('\b|\b',$keyword['words']).'\b'; |
} |
return '\b'.implode('\b|\b',$aResult).'\b'; |
} |
/** |
* Renvoie le pattern pour les symboles |
*/ |
function _getSymbolesPattern(){ |
$a = array(); |
foreach($this->symboles as $s){ |
$a[] = preg_quote($s,'`'); |
} |
return implode('|',$a); |
} |
/** |
* Renvoie le pattern pour les identifiants |
*/ |
function _getIdentifierPattern(){ |
return implode('|',$this->identifier); |
} |
/** |
* Liste des separateur d'apres la liste des symboles |
*/ |
function _getSeparatorPattern(){ |
$a = array_unique(preg_split('//', implode('',$this->symboles), -1, PREG_SPLIT_NO_EMPTY)); |
$pattern = '['.preg_quote(implode('',$a),'`').'\s]+'; |
return $pattern; |
} |
/** |
* Renvoie le modele a utiliser dans l'expression regulière |
* |
* @return string Modele de l'expression régulière |
*/ |
function _getPattern(){ |
$this->_separatorPattern = $this->_getSeparatorPattern(); |
$this->_symbolesPattern = $this->_getSymbolesPattern(); |
$this->_commentPattern = $this->_getCommentPattern(); |
$this->_directivePattern = $this->_getDirectivePattern(); |
$this->_stringPattern = $this->_getStringPattern(); |
$this->_numberPattern = $this->_getNumberPattern(); |
$this->_keywordPattern = $this->_getKeywordPattern(); |
$this->_identPattern = $this->_getIdentifierPattern(); |
//construction du modele globale en fonction de l'existance d'un style(optimisation) |
if($this->commentStyle){ $a[] = $this->_commentPattern; } |
if($this->directiveStyle){ $a[] = $this->_directivePattern; } |
if($this->stringStyle){ $a[] = $this->_stringPattern; } |
if($this->numberStyle){ $a[] = $this->_numberPattern; } |
if(count($this->keywords)>0){ $a[] = $this->_keywordPattern; } |
if($this->symbolesStyle){ $a[] = $this->_symbolesPattern; } |
if($this->identStyle){ $a[] = $this->_identPattern; } |
$this->_pattern = implode('|',$a); |
return $this->_pattern; |
} |
/** |
* Fonction de remplacement de chaque élement avec leur style. |
*/ |
function replacecallback($match){ |
$text = $match[0]; |
$pcreOpt = $this->_patOpt; |
$pcreOpt .= ($this->isCaseSensitiv)?'':'i'; |
//commentaires |
if($this->commentStyle){ |
if (preg_match('`'.$this->_commentPattern."`$pcreOpt",$text,$m)){ |
return "<span style=\"$this->commentStyle\">".$match[0].'</span>'; |
} |
} |
//directive de compilation |
if ($this->directiveStyle){ |
if (preg_match('`'.$this->_directivePattern."`$pcreOpt",$text,$m)){ |
return "<span style=\"$this->directiveStyle\">".$match[0].'</span>'; |
} |
} |
//chaine de caracteres |
if ($this->stringStyle){ |
if (preg_match('`'.$this->_stringPattern."`$pcreOpt",$text,$m)){ |
return "<span style=\"$this->stringStyle\">".$match[0].'</span>'; |
} |
} |
//nombres |
if ($this->numberStyle){ |
if (preg_match('`'.$this->_numberPattern."`$pcreOpt",$text,$m)){ |
return "<span style=\"$this->numberStyle\">".$match[0].'</span>'; |
} |
} |
//mot clé |
if (count($this->keywords)>0){ |
foreach($this->keywords as $key=>$keywords){ |
if ($keywords['style']){ |
if(preg_match('`'.$keywords['pattern']."`$pcreOpt",$text,$m)){ |
return "<span style=\"".$keywords['style']."\">".$match[0].'</span>'; |
} |
} |
} |
} |
//symboles |
if ($this->symbolesStyle){ |
if (preg_match('`'.$this->_symbolesPattern."`$pcreOpt",$text,$m)){ |
return "<span style=\"$this->symbolesStyle\">".$match[0].'</span>'; |
} |
} |
//identifiants |
if ($this->identStyle){ |
if (preg_match('`'.$this->_identPattern."`$pcreOpt",$text,$m)){ |
return "<span style=\"$this->identStyle\">".$match[0].'</span>'; |
} |
} |
return $match[0]; |
} |
/** |
* renvois le code colorié |
* |
* @param $text string Texte a analyser |
* @return string texte colorié |
*/ |
function Analyse($text){ |
$pattern = '`'.$this->_getPattern()."`$this->_patOpt"; |
if (!$this->isCaseSensitiv){ |
$pattern .= 'i'; |
} |
$text = preg_replace_callback($pattern,array($this,'replacecallback'),$text); |
return $text; |
} |
} //class Hightlighter |
?> |
/branches/livraison_menes/wikini/formatters/raw.php |
---|
New file |
0,0 → 1,31 |
<?php |
/* |
raw.php |
Copyright 2002, 2003 David DELON |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
if ($test=$_REQUEST["text"]) { |
echo ""; |
} |
else if ($lines = file($text)) { |
foreach ($lines as $line) { |
// To avoid loop:ignore inclusion of other raw link |
if (!(preg_match("/^\[\[\|(\S*)(\s+(.+))?\]\]$/", $line, $matches))) |
echo $line; |
} |
} |
?> |
/branches/livraison_menes/wikini/formatters/code.php |
---|
New file |
0,0 → 1,33 |
<pre> |
<?php |
/* |
code.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002 Charles NEPOTE |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
echo htmlentities($text)."\n"; |
?> |
</pre> |
/branches/livraison_menes/wikini/formatters/action.php |
---|
New file |
0,0 → 1,64 |
<?php |
/* |
action.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2003 David DELON |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
// This may look a bit strange, but all possible formatting tags have to be in a single regular expression for this to work correctly. Yup! |
if (!function_exists("wakka2callback")) |
{ |
function wakka2callback($things) |
{ |
$thing = $things[1]; |
global $wiki; |
// events |
if (preg_match("/^\{\{(.*?)\}\}$/s", $thing, $matches)) |
{ |
if ($matches[1]) |
return $wiki->Action($matches[1]); |
else |
return "{{}}"; |
} |
else if (preg_match("/^.*$/s", $thing, $matches)) |
{ |
return ""; |
} |
// if we reach this point, it must have been an accident. |
return $thing; |
} |
} |
$text = str_replace("\r", "", $text); |
$text = trim($text)."\n"; |
$text = preg_replace_callback( |
"/(\{\{.*?\}\}|.*)/msU", "wakka2callback", $text); |
echo $text ; |
?> |
/branches/livraison_menes/wikini/formatters/coloration_delphi.php |
---|
New file |
0,0 → 1,77 |
<?php |
/* |
* $Id: coloration_delphi.php,v 1.1 2005-09-22 14:02:49 ddelon Exp $ |
* |
* Souligneur syntaxique Delphi |
* |
* copyrigth Eric Feldstein 2003 2004 mailto:garfield_fr@tiscali.fr |
* |
* Licence : la meme que wikini (voir le fichier LICENCE). |
* Vous êtes libre d'utiliser et de modifier ce code à condition de laisser le copyright |
* d'origine. Vous pouvez bien sur vous ajouter à la liste des auteurs. |
* |
* Installation : copier le fichier dans le repertoire "formatters" de WikiNi |
*/ |
include_once('formatters/hightlighter.class.inc'); |
$DH = new Hightlighter(); |
$DH->isCaseSensitiv = false; |
//************* commentaires ************* |
$DH->comment = array('({[^$][^}]*})', //commentaires: { ... } |
'(\(\*[^$](.*)\*\))' //commentaires: (* ... *) |
); |
$DH->commentLine = array('(//.*\n)'); //commentaire // |
$DH->commentStyle = "color: red; font-style: italic"; //style CSS pour balise SPAN |
//************* directives de compilation ************* |
$DH->directive = array('({\\$[^{}]*})', //directive {$....} |
'(\(\*\\$(.*)\*\))' //directive (*$....*) |
); |
$DH->directiveStyle = "color: green"; //style CSS pour balise SPAN |
//************* chaines de caracteres ************* |
$DH->string = array("('[^']*')",'(#\d+)'); //chaine = 'xxxxxxxx' ou #23 |
$DH->stringStyle = "background: yellow"; |
//************* nombres ************* |
$DH->number[] = '(\b\d+(\.\d*)?([eE][+-]?\d+)?)'; //123 ou 123. ou 123.456 ou 123.E-34 ou 123.e-34 123.45E+34 ou 4e54 |
$DH->number[] = '(\$[0-9A-Fa-f]+\b)'; //ajout des nombres hexadecimaux : $AF |
$DH->numberStyle = 'color: blue'; |
//************* mots clé ************* |
$DH->keywords['MotCle']['words'] = array('absolute','abstract','and','array','as','asm', |
'begin', |
'case','class','const','constructor', |
'default','destructor','dispinterface','div','do','downto', |
'else','end','except','exports','external', |
'file','finalization','finally','for','function', |
'goto', |
'if','implementation','inherited','initialization','inline','interface','is', |
'label','library','loop','message', |
'mod', |
'nil','not', |
'object','of','or','out','overload','override', |
'packed','private','procedure','program','property','protected','public','published', |
'raise','read','record','repeat','resourcestring', |
'set','shl','shr','stdcall','string', |
'then','threadvar','to','try','type','unit','until', |
'use','uses', |
'var','virtual','while', |
'with','write', |
'xor' |
); |
$DH->keywords['MotCle']['style'] = 'font-weight: bold'; //style CSS pour balise SPAN |
//************* liste des symboles ************* |
$DH->symboles = array('#','$','&','(','(.',')','*','+',',','-','.','.)','..', |
'/',':',':=',';','<','<=','<>','=','>','>=','@','[',']','^'); |
$DH->symbolesStyle = ''; |
//************* identifiants ************* |
$DH->identifier = array('[_A-Za-z]?[_A-Za-z0-9]+'); |
$DH->identStyle = ''; |
echo "<pre>".$DH->Analyse($text)."</pre>"; |
unset($DH); |
?> |
/branches/livraison_menes/wikini/formatters/wakka.php |
---|
New file |
0,0 → 1,340 |
<?php |
/* |
wakka.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2002, 2003 Patrick PAUL |
Copyright 2003 Eric DELORD |
Copyright 2003 Eric FELDSTEIN |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
// This may look a bit strange, but all possible formatting tags have to be in a single regular expression for this to work correctly. Yup! |
if (!function_exists("wakka2callback")) |
{ |
include("formatters/tableaux.php"); //EF => tableaux |
function wakka2callback($things) |
{ |
$thing = $things[1]; |
$result=''; |
static $oldIndentLevel = 0; |
static $oldIndentLength= 0; |
static $indentClosers = array(); |
static $newIndentSpace= array(); |
static $br = 1; |
$brf=0; |
global $wiki; |
// convert HTML thingies |
if ($thing == "<") |
return "<"; |
else if ($thing == ">") |
return ">"; |
//EF=> tableaux |
else if (preg_match("/^\[\|(.*)\|\]/s", $thing)) |
{ |
return parsetable($thing); |
} //end tableaux |
// bold |
else if ($thing == "**") |
{ |
static $bold = 0; |
return (++$bold % 2 ? "<b>" : "</b>"); |
} |
// italic |
else if ($thing == "//") |
{ |
static $italic = 0; |
return (++$italic % 2 ? "<i>" : "</i>"); |
} |
// underlinue |
else if ($thing == "__") |
{ |
static $underline = 0; |
return (++$underline % 2 ? "<u>" : "</u>"); |
} |
// monospace |
else if ($thing == "##") |
{ |
static $monospace = 0; |
return (++$monospace % 2 ? "<tt>" : "</tt>"); |
} |
// Deleted |
else if ($thing == "@@") |
{ |
static $deleted = 0; |
return (++$deleted % 2 ? "<span class=\"del\">" : "</span>"); |
} |
// Inserted |
else if ($thing == "££") |
{ |
static $inserted = 0; |
return (++$inserted % 2 ? "<span class=\"add\">" : "</span>"); |
} |
// urls |
else if (preg_match("/^([a-z]+:\/\/\S+?)([^[:alnum:]^\/])?$/", $thing, $matches)) { |
$url = $matches[1]; |
if (!isset($matches[2])) $matches[2] = ''; |
return "<a href=\"$url\">$url</a>".$matches[2]; |
} |
// header level 5 |
else if ($thing == "==") |
{ |
static $l5 = 0; |
$br = 0; |
return (++$l5 % 2 ? "<h5>" : "</h5>"); |
} |
// header level 4 |
else if ($thing == "===") |
{ |
static $l4 = 0; |
$br = 0; |
return (++$l4 % 2 ? "<h4>" : "</h4>"); |
} |
// header level 3 |
else if ($thing == "====") |
{ |
static $l3 = 0; |
$br = 0; |
return (++$l3 % 2 ? "<h3>" : "</h3>"); |
} |
// header level 2 |
else if ($thing == "=====") |
{ |
static $l2 = 0; |
$br = 0; |
return (++$l2 % 2 ? "<h2>" : "</h2>"); |
} |
// header level 1 |
else if ($thing == "======") |
{ |
static $l1 = 0; |
$br = 0; |
return (++$l1 % 2 ? "<h1>" : "</h1>"); |
} |
// forced line breaks |
else if ($thing == "---") |
{ |
return "<br />"; |
} |
// escaped text |
else if (preg_match("/^\"\"(.*)\"\"$/s", $thing, $matches)) |
{ |
return $matches[1]; |
} |
// code text |
else if (preg_match("/^\%\%(.*)\%\%$/s", $thing, $matches)) |
{ |
// check if a language has been specified |
$code = $matches[1]; |
$language=''; |
if (preg_match("/^\((.+?)\)(.*)$/s", $code, $matches)) |
{ |
list(, $language, $code) = $matches; |
} |
//Select formatter for syntaxe hightlighting |
if (file_exists("formatters/coloration_".$language.".php")){ |
$formatter = "coloration_".$language; |
}else{ |
$formatter = "code"; |
} |
$output = "<div class=\"code\">"; |
$output .= $wiki->Format(trim($code), $formatter); |
$output .= "</div>"; |
return $output; |
} |
// raw inclusion from another wiki |
// (regexp documentation : see "forced link" below) |
else if (preg_match("/^\[\[\|(\S*)(\s+(.+))?\]\]$/", $thing, $matches)) |
{ |
list (,$url,,$text) = $matches; |
if (!$text) $text = "404"; |
if ($url) |
{ |
$url.="/wakka.php?wiki=".$text."/raw"; |
return $wiki->Format($wiki->Format($url, "raw"),"wakka"); |
} |
else |
{ |
return ""; |
} |
} |
// forced links |
// \S : any character that is not a whitespace character |
// \s : any whitespace character |
else if (preg_match("/^\[\[(\S*)\s+(.+)?\]\]$/", $thing, $matches)) |
{ |
list (, $url, $text) = $matches; |
if ($url) |
{ |
if ($url!=($url=(preg_replace("/@@|££|\[\[/","",$url))))$result="</span>"; |
if (!$text) $text = $url; |
$text=preg_replace("/@@|££|\[\[/","",$text); |
return $result.$wiki->Link($url, "", $text); |
} |
else |
{ |
return ""; |
} |
} |
// indented text |
else if ((preg_match("/\n(\t+|([ ]{1})+)(-|([0-9,a-z,A-Z]+)\))?/s", $thing, $matches)) |
|| (preg_match("/^(\t+|([ ]{1})+)(-|([0-9,a-z,A-Z]+)\))?/s", $thing, $matches) && $brf=1)) |
{ |
// new line |
if ($brf) $br=0; |
$result .= ($br ? "<br />\n" : ""); |
// we definitely want no line break in this one. |
$br = 0; |
// find out which indent type we want |
if (!isset($matches[3])) $matches[3] = ''; |
$newIndentType = $matches[3]; |
if (!$newIndentType) { $opener = "<div class=\"indent\">"; $closer = "</div>"; $br = 1; } |
else if ($newIndentType == "-") { $opener = "<ul>\n"; $closer = "</li>\n</ul>"; $li = 1; } |
else { $opener = "<ol type=\"".$matches[4]."\">\n"; $closer = "</li>\n</ol>"; $li = 1; } |
// get new indent level |
if (strpos($matches[1],"\t")) $newIndentLevel = strlen($matches[1]); |
else |
{ |
$newIndentLevel=$oldIndentLevel; |
$newIndentLength = strlen($matches[1]); |
if ($newIndentLength>$oldIndentLength) |
{ |
$newIndentLevel++; |
$newIndentSpace[$newIndentLength]=$newIndentLevel; |
} |
else if ($newIndentLength<$oldIndentLength) |
$newIndentLevel=$newIndentSpace[$newIndentLength]; |
} |
$op=0; |
if ($newIndentLevel > $oldIndentLevel) |
{ |
for ($i = 0; $i < $newIndentLevel - $oldIndentLevel; $i++) |
{ |
$result .= $opener; |
$op=1; |
array_push($indentClosers, $closer); |
} |
} |
else if ($newIndentLevel < $oldIndentLevel) |
{ |
for ($i = 0; $i < $oldIndentLevel - $newIndentLevel; $i++) |
{ |
$op=1; |
$result .= array_pop($indentClosers); |
if ($oldIndentLevel && $li) $result .= "</li>"; |
} |
} |
if (isset($li) && $op) $result .= "<li>"; |
else if (isset($li)) |
$result .= "</li>\n<li>"; |
$oldIndentLevel = $newIndentLevel; |
$oldIndentLength= $newIndentLength; |
return $result; |
} |
// new lines |
else if ($thing == "\n") |
{ |
// if we got here, there was no tab in the next line; this means that we can close all open indents. |
$c = count($indentClosers); |
for ($i = 0; $i < $c; $i++) |
{ |
$result .= array_pop($indentClosers); |
$br = 0; |
} |
$oldIndentLevel = 0; |
$oldIndentLength= 0; |
$newIndentSpace=array(); |
$result .= ($br ? "<br />\n" : "\n"); |
$br = 1; |
return $result; |
} |
// events |
else if (preg_match("/^\{\{(.*?)\}\}$/s", $thing, $matches)) |
{ |
if ($matches[1]) |
return $wiki->Action($matches[1]); |
else |
return "{{}}"; |
} |
// interwiki links! |
else if (preg_match("/^[A-Z][A-Z,a-z]+[:]([A-Z,a-z,0-9]*)$/s", $thing)) |
{ |
return $wiki->Link($thing); |
} |
// wiki links! |
else if (preg_match("/^[A-Z][a-z]+[A-Z,0-9][A-Z,a-z,0-9]*$/s", $thing)) |
{ |
return $wiki->Link($thing); |
} |
// separators |
else if (preg_match("/-{4,}/", $thing, $matches)) |
{ |
// TODO: This could probably be improved for situations where someone puts text on the same line as a separator. |
// Which is a stupid thing to do anyway! HAW HAW! Ahem. |
$br = 0; |
return "<hr />"; |
} |
// if we reach this point, it must have been an accident. |
return $thing; |
} |
} |
$text = str_replace("\r", "", $text); |
$text = chop($text)."\n"; |
$text = preg_replace_callback( |
"/(\%\%.*?\%\%|". |
"^\[\|.*?\|\]|". //EF => tableaux |
"\"\".*?\"\"|". |
"\[\[.*?\]\]|". |
"\b[a-z]+:\/\/\S+|". |
"\*\*|\#\#|@@|££|__|<|>|\/\/|". |
"======|=====|====|===|==|". |
"-{4,}|---|". |
"\n(\t+|([ ]{1})+)(-|[0-9,a-z,A-Z]+\))?|". |
"^(\t+|([ ]{1})+)(-|[0-9,a-z,A-Z]+\))?|". |
"\{\{.*?\}\}|". |
"\b[A-Z][A-Z,a-z]+[:]([A-Z,a-z,0-9]*)\b|". |
"\b([A-Z][a-z]+[A-Z,0-9][A-Z,a-z,0-9]*)\b|". |
"\n)/ms", "wakka2callback", $text); |
// we're cutting the last <br /> |
$text = preg_replace("/<br \/>$/","", trim($text)); |
echo $text ; |
?> |
/branches/livraison_menes/wikini/formatters/coloration_php.php |
---|
New file |
0,0 → 1,30 |
<?php |
/* |
coloration_php.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2003 Eric FELDSTEIN |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
highlight_string($text) |
?> |
/branches/livraison_menes/wikini/wakka.config.php |
---|
New file |
0,0 → 1,35 |
<?php |
// wakka.config.php créée Fri Mar 18 11:37:11 2005 |
// ne changez pas la wikini_version manuellement! |
$nom_wiki = $_GET['wikini'] ; |
//echo $nom_wiki ; |
$wakkaConfig = array( |
"wakka_version" => "0.1.1", |
"wikini_version" => "0.4.3 + contributions", |
"debug" => "no", |
"mysql_host" => "localhost", |
"mysql_database" => "tela_prod_wikini", |
"mysql_user" => "telabotap", |
"mysql_password" => "ppo50cvb", |
"table_prefix" => strtolower($nom_wiki)."_", |
"root_page" => "PagePrincipale", |
"wakka_name" => $nom_wiki, |
"base_url" => "http://www.tela-botanica.org/client/projet/wikini/wakka.php?wikini=$nom_wiki&wiki=", |
"rewrite_mode" => "0", |
"meta_keywords" => "", |
"meta_description" => "", |
"action_path" => "actions", |
"handler_path" => "handlers", |
"header_action" => "header", |
"footer_action" => "footer", |
"navigation_links" => "[[DerniersChangementsPages Derniers changements ]] :: [[TableauDeBord Tableau de bord ]]\n[[ParametresUtilisateur Paramêtres utilisateur ]]", |
"referrers_purge_time" => "24", |
"pages_purge_time" => "365", |
"default_write_acl" => "*", |
"default_read_acl" => "*", |
"default_comment_acl" => "*", |
"menu_page" => "PageMenu", |
"preview_before_save" => "0", |
"common_table_prefix" => "interwikini_"); |
?> |
/branches/livraison_menes/wikini/interwiki.conf |
---|
New file |
0,0 → 1,91 |
AbbeNormal http://www.ourpla.net/cgi-bin/pikie.cgi? |
Acronym http://www.acronymfinder.com/af-query.asp?String=exact&Acronym= |
AcadWiki http://xarch.tu-graz.ac.at/autocad/wiki/ |
Advogato http://www.advogato.org/ |
ArtificialLife http://www.alife.org/wiki/ |
AndStuff http://andstuff.org/ |
BenefitsWiki http://www.benefitslink.com/cgi-bin/wiki.cgi? |
Bible http://bible.gospelcom.net/bible? |
BrianLane http://www.brianlane.com/wiki/ |
BridgesWiki http://c2.com/w2/bridges/ |
CLiki http://ww.telent.net/cliki/ |
CmWiki http://www.ourpla.net/cgi-bin/wiki.pl? |
ColdWiki http://coldstore.sourceforge.net/wiki/ |
CreationMatters http://www.ourpla.net/cgi-bin/wiki.pl? |
CsWiki http://cs.messiah.edu/~scmoonen/index.php? |
DejaNews http://www.deja.com/=dnc/getdoc.xp?AN= |
Dictionary http://www.dictionary.com/cgi-bin/dict.pl?term= |
DolphinWiki http://www.object-arts.com/wiki/html/Dolphin/ |
EfnetCppWiki http://www.encrypted.net/~jh/cpp-wiki/moin.cgi/ |
EfnetPythonWiki http://www.encrypted.net/~jh/python-wiki/moin.cgi/ |
EfnetXmlWiki http://www.encrypted.net/~jh/xml-wiki/moin.cgi/ |
EmacsWiki http://www.emacswiki.org/cgi-bin/wiki.pl? |
Foldoc http://www.foldoc.org/foldoc/foldoc.cgi? |
FoxWiki http://fox.wikis.com/wc.dll?Wiki~ |
Google http://www.google.com/search?q= |
GoogleGroups http://groups.google.com/groups?q= |
GreenCheese http://www.greencheese.org/ |
H2G2 http://www.h2g2.com/Search?searchstring= |
HammondWiki http://www.dairiki.org/HammondWiki/index.php? |
IAwiki http://www.IAwiki.net/ |
ICQ http://wwp.icq.com/ |
IMDB http://us.imdb.com/Title? |
JargonFile http://sunir.org/apps/meta.pl?wiki=JargonFile&redirect= |
JiniWiki http://www.cdegroot.com/cgi-bin/jini? |
JustDoItWiki http://www.just-do.it/ |
KnowHow http://www2.iro.umontreal.ca/~paquetse/cgi-bin/wiki.cgi? |
LegoWiki http://www.object-arts.com/wiki/html/Lego-Robotics/ |
LiveJournal http://www.livejournal.com/users/ |
MbTest http://www.usemod.com/cgi-bin/mbtest.pl? |
MeatBall http://www.usemod.com/cgi-bin/mb.pl? |
MetaWiki http://sunir.org/apps/meta.pl?words= |
MoinMoin http://purl.net/wiki/moin/ |
MuWeb http://www.dunstable.com/scripts/MuWebWeb? |
OpenWiki http://openwiki.com/? |
OrgPatterns http://www.bell-labs.com/cgi-user/OrgPatterns/OrgPatterns? |
PeerCastWiki http://www.peercastwiki.com/ |
PersonalTelco http://www.personaltelco.net/index.cgi/ |
PGPKey http://keys.pgp.dk:11371/pks/lookup?op=get&search= |
PPR http://c2.com/cgi/wiki? |
PhpWiki http://phpwiki.sourceforge.net/phpwiki/index.php? |
Pikie http://pikie.darktech.org/cgi/pikie? |
PolitizenWiki http://www.politizen.com/wiki.asp? |
PyWiki http://www.voght.com/cgi-bin/pywiki? |
PythonInfo http://www.python.org/cgi-bin/moinmoin/ |
Raging http://ragingsearch.altavista.com/cgi-bin/query?q= |
RFC http://www.rfc.org.uk/cgi-bin/lookup.cgi?rfc= |
RichmondFreeWireless http://www.richmondfreewireless.org/index.php?page= |
SeattleWireless http://seattlewireless.net/? |
SenseisLibrary http://senseis.xmp.net/? |
SourceForge http://sourceforge.net/ |
SourceMage http://wiki.sourcemage.org/ |
Squeak http://minnow.cc.gatech.edu/squeak/ |
SquirrelMail http://squirrelmail.org/wiki/wiki.php? |
Stikki http://steaky.dhs.org/tavi/ |
StrikiWiki http://ch.twi.tudelft.nl/~mostert/striki/teststriki.pl? |
Tavi http://tavi.sourceforge.net/ |
Thesaurus http://www.thesaurus.com/cgi-bin/search?config=roget&words= |
Thinki http://www.thinkware.se/cgi-bin/thinki.cgi/ |
TWiki http://twiki.sourceforge.net/cgi-bin/view/ |
UseMod http://www.usemod.com/cgi-bin/wiki.pl? |
VisualWorks http://wiki.cs.uiuc.edu/VisualWorks/ |
Webster http://m-w.com/cgi-bin/dictionary?va= |
Why http://clublet.com/c/c/why? |
Wiki http://c2.com/cgi/wiki? |
WikiFind http://c2.com/cgi/wiki?FindPage&value= |
WikiPedia http://www.wikipedia.com/wiki/wiki.phtml?title= |
ZWiki http://www.zwiki.org/ |
ZigZag http://zigzag.adsl.dk/zwiki/ |
ZooKeeper http://zookeeper.sourceforge.net/index.php? |
RussellFreedom http://www.russellfreedom.com/ |
JTF http://www.justthefaqs.org/?page= |
Wiki-Wiki-Wireless http://www.andaluciawireless.net/ |
WebDevWikiNL http://www.promo-it.nl/WebDevWiki/index.php?page= |
IfDef http://ifdef.undef.net/ |
MACCAWS http://www.maccaws.com/wiki/ |
AviSynth http://www.avisynth.org/ |
WakkaWiki http://www.wakkawiki.com/ |
WikiNi http://www.wikini.net/wakka.php?wiki= |
WikkiTikkiTavi http://tavi.sourceforge.net/ |
WackoWiki http://wiki.oversite.ru/ |
CraoWiki http://wiki.crao.net/index.php/ |
/branches/livraison_menes/wikini/README |
---|
New file |
0,0 → 1,23 |
Wakka |
A Wiki-esque website toolkit by Hendrik Mans. |
Not much to read here. For some quick installation instructions, please |
check out INSTALL. |
Most of the Wakka documentation is available online only. Please visit |
the official Wakka homepage at <http://www.wakkawiki.com>. You'll |
find everything else there. |
- Hendrik Mans <hendrik@mans.de>, 2002-09-04 |
Wikini, a fork of Wakka. |
The original code and derived work is under modified BSD license (see header). |
New code is either under modified BSD licence or GPL license (see header of each program). |
Please visit the official Wikini homepage at <http://www/wikini.net>. |
- Wikini Team : David Delon, Charles Nepote, Patrick Paul, Eric Feldstein, |
Jean-Christophe Andre. 2004-02-17 |
/branches/livraison_menes/wikini/index.php |
---|
New file |
0,0 → 1,30 |
<?php |
/* |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
header("Location: wakka.php"); |
exit; |
?> |
/branches/livraison_menes/wikini/actions/header.php |
---|
New file |
0,0 → 1,115 |
<?php |
/* header.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003, 2004 Charles NEPOTE |
Copyright 2002 Patrick PAUL |
Copyright 2003 Eric DELORD |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
$message = $this->GetMessage(); |
$user = $this->GetUser(); |
?> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
<html> |
<head> |
<title><?php echo $this->GetWakkaName().":".$this->GetPageTag(); ?></title> |
<?php if ($this->GetMethod() != 'show') |
echo "<meta name=\"robots\" content=\"noindex, nofollow\"/>\n";?> |
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> |
<meta name="keywords" content="<?php echo $this->GetConfigValue("meta_keywords") ?>" /> |
<meta name="description" content="<?php echo $this->GetConfigValue("meta_description") ?>" /> |
<link rel="stylesheet" type="text/css" media="screen" href="wakka.basic.css" /> |
<link rel="stylesheet" type="text/css" media="print" href="wakka.print.css" /> |
<style type="text/css" media="screen"> @import "<?php echo (!$_COOKIE["sitestyle"])?'wakka':$_COOKIE["sitestyle"] ?>.css";</style> |
<style type="text/css" media="print"> @import "wakka.print.css";</style> |
<script type="text/javascript"> |
function fKeyDown() { |
if (event.keyCode == 9) { |
event.returnValue= false; |
document.selection.createRange().text = String.fromCharCode(9) } } |
</script> |
<!-- Début modif ACeditor --> |
<style type="text/css"> |
.buttons { background: #ccc; border: 1px solid #ccc; margin: 1; float:left; } |
.raise{ border-top: 1px solid buttonhighlight; border-left: 1px solid buttonhighlight; border-bottom: 1px solid buttonshadow; border-right: 1px solid buttonshadow; background: #ccc; margin:1; float:left; } |
.press { border-top: 1px solid buttonshadow; border-left: 1px solid buttonshadow; border-bottom: 1px solid buttonhighlight; border-right: 1px solid buttonhighlight; background: #ccc; margin:1; float:left; } |
/* ci dessous les petits champs */ |
.ACsearchbox { background: #FFFFF8; border: 0px; border-bottom: 1px solid #CCCCAA; padding: 0px; margin: 0px; font-size: 10px; } |
.texteChampsImage {font-size: 10px; } |
#toolbar { margin: 0; width: 450px; padding: 0; height:20px; background: #ccc; border-top: 1px solid buttonhighlight; border-left: 1px solid buttonhighlight; border-bottom: 1px solid buttonshadow; border-right: 1px solid buttonshadow; text-align:left; } |
</style> |
<script type="text/javascript" src="ACeditor.js"></script> |
<!-- Fin modif ACeditor --> |
</head> |
<body <?php echo (!$user || ($user["doubleclickedit"] == 'Y')) && ($this->GetMethod() == "show") ? "ondblclick=\"document.location='".$this->href("edit")."';\" " : "" ?> |
<?php |
/*Début modif ACeditor*/ |
echo $message ? "onLoad=\"alert('".$message."');thisForm=document.ACEditor;\" " : "onLoad=\"thisForm=document.ACEditor;\"" |
/*Fin modif ACeditor*/ |
?> > |
<div style="display: none;"><a href="<?php echo $this->href() ?>/resetstyle" accesskey="7"></a></div> |
<h1 class="wiki_name"><?php echo $this->config["wakka_name"] ?></h1> |
<h1 class="page_name"> |
<a href="<?php echo $this->config["base_url"] ?>RechercheTexte&phrase=<?php echo urlencode($this->GetPageTag()); ?>"> |
<?php echo $this->GetPageTag(); ?> |
</a> |
</h1> |
<div class="header"> |
<?php echo $this->ComposeLinkToPage($this->config["root_page"]); ?> :: |
<?php echo $this->config["navigation_links"] ? $this->Format($this->config["navigation_links"])." :: \n" : "" ?> |
Vous êtes <?php echo $this->Format($this->GetUserName()); if ($user = $this->GetUser()) echo " (<a href=\"".$this->config["base_url"] ."ParametresUtilisateur&action=logout\">Déconnexion</a>)\n"; ?> |
</div> |
<? |
/*Début modif Menu Page*/ |
$menu_page=$this->config["menu_page"]; |
if (isset($menu_page) and ($menu_page!="")) |
{ |
// Ajout Menu de Navigation |
echo '<table class="page_table">'; |
echo '<tr><td class="menu_column">'; |
$wikiMenu = $this; |
$wikiMenu->tag=$menu_page; |
$wikiMenu->SetPage($wikiMenu->LoadPage($wikiMenu->tag)); |
echo $wikiMenu->Format($wikiMenu->page["body"], "wakka"); |
echo '</td>'; |
echo '<td class="body_column">'; |
} |
/*Fin modif Menu Page*/ |
?> |
/branches/livraison_menes/wikini/actions/listpages.php |
---|
New file |
0,0 → 1,85 |
<?php |
/* |
listpages.php |
Copyright 2002 David DELON |
Copyright 2003 Patrick PAUL |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
if (!function_exists("TreeView")) |
{ |
function TreeView($node,$level,$indent=0) |
{ |
global $wiki; |
if ($level>0) { |
$head=split(" :: ",$wiki->GetConfigValue("navigation_links")); |
// we don't want page from the header |
if (!in_array($node, $head, TRUE)) |
{ |
if (($indent>0) && (!($wiki->GetConfigValue("root_page")==$node)) || ($indent==0) ) |
{ |
// Ignore users too ... |
if (!$wiki->LoadUser($node)) |
{ |
if ($indent) |
echo (str_repeat(" ",$indent)),$wiki->Link($node),"<br/>\n"; |
$pages = $wiki->LoadAll("select to_tag from ".$wiki->config["table_prefix"]."links where from_tag='".mysql_escape_string($node)."' order by to_tag asc"); |
if (is_array($pages)) { |
foreach ($pages as $page) |
{ |
$wiki->CachePage($page); |
TreeView($page["to_tag"],$level-1,$indent+1); |
} |
} |
} |
} |
} |
} |
} |
} |
if($sortkey = $this->GetParameter("sort")) { |
if (($sortkey != "tag") && ($sortkey != "time") && ($sortkey != "owner") && ($sortkey != "user")) $sortkey = "tag"; |
$pages = $this->LoadAll("select tag, owner, user from ".$this->config["table_prefix"]."pages where latest = 'Y' and comment_on = '' order by $sortkey asc"); |
foreach ($pages as $page) { |
$this->CachePage($page); |
$owner=$page["owner"]?$page["owner"]:"Inconnu"; |
echo " ",$this->ComposeLinkToPage($page["tag"], "", "", 0)," . . . . ",$this->Format($owner),". . . . dernière modification par " , $this->Format($page["user"]) , "<br/>\n" ; |
} |
} |
// Tree display |
else if ($sortkey = $this->GetParameter("tree")) |
{ |
// No rootpage specified, assume root_page |
if ($sortkey=="tree") $sortkey=$this->GetConfigValue("root_page"); |
echo $this->ComposeLinkToPage($sortkey),"<br /><br/>\n" ; |
// 3 levels displayed, It should be parameter ... |
TreeView($sortkey,3); |
} |
// Default Action : sort by tag |
else |
{ |
$pages = $this->LoadAll("select tag, owner, user from ".$this->config["table_prefix"]."pages where latest = 'Y' and comment_on = '' order by tag asc"); |
foreach ($pages as $page) { |
$this->CachePage($page); |
$owner=$page["owner"]?$page["owner"]:"Inconnu"; |
echo " ",$this->ComposeLinkToPage($page["tag"], "", "", 0)," . . . . ",$this->Format($owner),"<br/>\n" ; |
} |
} |
?> |
/branches/livraison_menes/wikini/actions/listusers.php |
---|
New file |
0,0 → 1,45 |
<?php |
/* |
listusers.php |
Copyright 2002 Patrick PAUL |
Copyright 2003 David DELON |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
if ($last = $this->GetParameter("last")) |
{ |
if ($last=="last") $last=150; else $last= (int) $last; |
if ($last) |
{ |
$last_users = $this->LoadAll("select name, signuptime from ".$this->config["table_prefix"]."users order by signuptime desc limit $last"); |
foreach($last_users as $user) { echo $this->Format($user["name"])," . . . ",$user["signuptime"],"<br />\n" ; } |
} |
} |
else |
{ |
if ($last_users = $this->LoadAll("select name, signuptime from ".$this->config["table_prefix"]."users order by name asc") |
) |
{ |
foreach($last_users as $user) |
{ |
echo $this->Format($user["name"])," . . . ",$user["signuptime"],"<br />\n" ; |
} |
} |
} |
?> |
/branches/livraison_menes/wikini/actions/footer.php |
---|
New file |
0,0 → 1,105 |
<div class="footer"> |
<?php |
/* footer.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003, 2004 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2002, 2003 Patrick PAUL |
Copyright 2003 Eric DELORD |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
echo $this->FormOpen("", "RechercheTexte", "get"); |
echo $this->HasAccess("write") ? "<a href=\"".$this->href("edit")."\" title=\"Cliquez pour éditer cette page.\">Éditer cette page</a> ::\n" : ""; |
echo $this->GetPageTime() ? "<a href=\"".$this->href("revisions")."\" title=\"Cliquez pour voir les dernières modifications sur cette page.\">".$this->GetPageTime()."</a> ::\n" : ""; |
// if this page exists |
if ($this->page) |
{ |
// if owner is current user |
if ($this->UserIsOwner()) |
{ |
echo |
"Propriétaire : vous :: \n", |
"<a href=\"",$this->href("acls")."\" title=\"Cliquez pour éditer les permissions de cette page.\">Éditer permissions</a> :: \n", |
"<a href=\"",$this->href("deletepage")."\">Supprimer</a> :: \n", |
"<a href=\"",$this->href("filemanager")."\">Fichiers & images</a> :: \n";//Gestion de l'action ATTACH |
} |
else |
{ |
if ($owner = $this->GetPageOwner()) |
{ |
echo "Propriétaire : ",$this->Format($owner); |
} |
else |
{ |
echo "Pas de propriétaire "; |
echo ($this->GetUser() ? "(<a href=\"".$this->href("claim")."\">Appropriation</a>)" : ""); |
} |
echo " :: \n"; |
} |
} |
?> |
<a href="<?php echo $this->href("referrers") ?>" title="Cliquez pour voir les URLs faisant référence à cette page."> |
Références</a> :: |
Recherche : <input name="phrase" size="15" class="searchbox" /> |
<?php echo $this->FormClose(); ?> |
</div> |
<div class="copyright"> |
<a href="http://validator.w3.org/check/referer">XHTML 1.0 valide ?</a> :: |
<a href="http://jigsaw.w3.org/css-validator/check/referer">CSS valide ?</a> :: |
-- Fonctionne avec <?php echo $this->Link("WikiNi:PagePrincipale", "", "WikiNi ".$this->GetWikiNiVersion()) . "\n"; ?> |
</div> |
<?php |
if ($this->GetConfigValue("debug")=="yes") |
{ |
echo "<span class=\"debug\"><b>Query log :</b><br />\n"; |
$t_SQL=0; |
foreach ($this->queryLog as $query) |
{ |
echo $query["query"]." (".round($query["time"],4).")<br />\n"; |
$t_SQL = $t_SQL + $query["time"]; |
} |
echo "</span>\n"; |
echo "<span class=\"debug\">".round($t_SQL, 4)." s (total SQL time)</span><br />\n"; |
list($g2_usec, $g2_sec) = explode(" ",microtime()); |
define ("t_end", (float)$g2_usec + (float)$g2_sec); |
echo "<span class=\"debug\"><b>".round(t_end-t_start, 4)." s (total time)</b></span><br />\n"; |
echo "<span class=\"debug\">SQL time represent : ".round((($t_SQL/(t_end-t_start))*100),2)."% of total time</span>\n"; |
} |
?> |
<? |
$menu_page=$this->config["menu_page"]; |
if (isset($menu_page) and ($menu_page!="")) echo '</td></tr></table>'; |
?> |
</body> |
</html> |
/branches/livraison_menes/wikini/actions/usersettings.php |
---|
New file |
0,0 → 1,256 |
<?php |
/* |
usersettings.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2002 Patrick PAUL |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
if (!isset($_REQUEST["action"])) $_REQUEST["action"] = ''; |
if ($_REQUEST["action"] == "logout") |
{ |
$this->LogoutUser(); |
$this->SetMessage("Vous êtes maintenant déconnecté !"); |
$this->Redirect($this->href()); |
} |
else if ($user = $this->GetUser()) |
{ |
// is user trying to update? |
if ($_REQUEST["action"] == "update") |
{ |
$this->Query("update ".$this->config["table_prefix"]."users set ". |
"email = '".mysql_escape_string($_POST["email"])."', ". |
"doubleclickedit = '".mysql_escape_string($_POST["doubleclickedit"])."', ". |
"show_comments = '".mysql_escape_string($_POST["show_comments"])."', ". |
"revisioncount = '".mysql_escape_string($_POST["revisioncount"])."', ". |
"changescount = '".mysql_escape_string($_POST["changescount"])."', ". |
"motto = '".mysql_escape_string($_POST["motto"])."' ". |
"where name = '".$user["name"]."' limit 1"); |
$this->SetUser($this->LoadUser($user["name"])); |
// forward |
$this->SetMessage("Paramètres sauvegardés !"); |
$this->Redirect($this->href()); |
} |
if ($_REQUEST["action"] == "changepass") |
{ |
// check password |
$password = $_POST["password"]; |
if (preg_match("/ /", $password)) $error = "Les espaces ne sont pas permis dans les mots de passe."; |
else if (strlen($password) < 5) $error = "Mot de passe trop court."; |
else if ($user["password"] != md5($_POST["oldpass"])) $error = "Mauvais mot de passe."; |
else |
{ |
$this->Query("update ".$this->config["table_prefix"]."users set "."password = md5('".mysql_escape_string($password)."') "."where name = '".$user["name"]."'"); |
$this->SetMessage("Mot de passe changé !"); |
$user["password"]=md5($password); |
$this->SetUser($user); |
$this->Redirect($this->href()); |
} |
} |
// user is logged in; display config form |
echo $this->FormOpen(); |
?> |
<input type="hidden" name="action" value="update" /> |
<table> |
<tr> |
<td align="right"></td> |
<td>Bonjour, <?php echo $this->Link($user["name"]) ?> !</td> |
</tr> |
<tr> |
<td align="right">Votre adresse de messagerie électronique :</td> |
<td><input name="email" value="<?php echo htmlentities($user["email"]) ?>" size="40" /></td> |
</tr> |
<tr> |
<td align="right">Édition en double-cliquant :</td> |
<td><input type="hidden" name="doubleclickedit" value="N" /><input type="checkbox" name="doubleclickedit" value="Y" <?php echo $user["doubleclickedit"] == "Y" ? "checked=\"checked\"" : "" ?> /></td> |
</tr> |
<tr> |
<td align="right">Par défaut, montrer les commentaires :</td> |
<td><input type="hidden" name="show_comments" value="N" /><input type="checkbox" name="show_comments" value="Y" <?php echo $user["show_comments"] == "Y" ? "checked\"checked\"" : "" ?> /></td> |
</tr> |
<tr> |
<td align="right">Nombre maximum de derniers commentaires :</td> |
<td><input name="changescount" value="<?php echo htmlentities($user["changescount"]) ?>" size="40" /></td> |
</tr> |
<tr> |
<td align="right">Nombre maximum de versions :</td> |
<td><input name="revisioncount" value="<?php echo htmlentities($user["revisioncount"]) ?>" size="40" /></td> |
</tr> |
<tr> |
<td align="right">Votre devise :</td> |
<td><input name="motto" value="<?php echo htmlentities($user["motto"]) ?>" size="40" /></td> |
</tr> |
<tr> |
<td></td> |
<td><input type="submit" value="Mise à jour" /> <input type="button" value="Déconnexion" onclick="document.location='<?php echo $this->href("", "", "action=logout"); ?>'" /></td> |
</tr> |
<?php |
echo $this->FormClose(); |
echo $this->FormOpen(); |
?> |
<input type="hidden" name="action" value="changepass" /> |
<tr> |
<td> </td> |
<td> </td> |
</tr> |
<tr> |
<td align="right"></td> |
<td><?php echo $this->Format("Changement de mot de passe"); ?></td> |
</tr> |
<?php |
if (isset($error)) |
{ |
echo "<tr><td></td><td><div class=\"error\">", $this->Format($error), "</div></td></tr>\n"; |
} |
?> |
<tr> |
<td align="right">Votre ancien mot de passe :</td> |
<td><input type="password" name="oldpass" size="40" /></td> |
</tr> |
<tr> |
<td align="right">Nouveau mot de passe :</td> |
<td><input type="password" name="password" size="40" /></td> |
</tr> |
<tr> |
<td></td> |
<td><input type="submit" value="Changer" size="40" /></td> |
</tr> |
</table> |
<?php |
echo $this->FormClose(); |
} |
else |
{ |
// user is not logged in |
// is user trying to log in or register? |
if ($_REQUEST["action"] == "login") |
{ |
// if user name already exists, check password |
if ($existingUser = $this->LoadUser($_POST["name"])) |
{ |
// check password |
if ($existingUser["password"] == md5($_POST["password"])) |
{ |
$this->SetUser($existingUser, $_POST["remember"]); |
$this->Redirect($this->href()); |
} |
else |
{ |
$error = "Mauvais mot de passe !"; |
} |
} |
// otherwise, create new account |
else |
{ |
$name = trim($_POST["name"]); |
$email = trim($_POST["email"]); |
$password = $_POST["password"]; |
$confpassword = $_POST["confpassword"]; |
// check if name is WikkiName style |
if (!$this->IsWikiName($name)) $error = "Votre nom d'utilisateur doit être formaté en NomWiki."; |
else if (!$email) $error = "Vous devez spécifier une adresse de messagerie électronique."; |
else if (!preg_match("/^.+?\@.+?\..+$/", $email)) $error = "Ceci ne ressemble pas à une adresse de messagerie électronique."; |
else if ($confpassword != $password) $error = "Les mots de passe n'étaient pas identiques"; |
else if (preg_match("/ /", $password)) $error = "Les espaces ne sont pas permis dans un mot de passe."; |
else if (strlen($password) < 5) $error = "Mot de passe trop court. Un mot de passe doit contenir au minimum 5 caractères alphanumériques."; |
else |
{ |
$this->Query("insert into ".$this->config["table_prefix"]."users set ". |
"signuptime = now(), ". |
"name = '".mysql_escape_string($name)."', ". |
"email = '".mysql_escape_string($email)."', ". |
"password = md5('".mysql_escape_string($_POST["password"])."')"); |
// log in |
$this->SetUser($this->LoadUser($name)); |
// forward |
$this->Redirect($this->href()); |
} |
} |
} |
echo $this->FormOpen(); |
?> |
<input type="hidden" name="action" value="login" /> |
<table> |
<tr> |
<td></td> |
<td><?php echo $this->Format("Si vous êtes déjà enregistré, identifiez-vous ici"); ?></td> |
</tr> |
<?php |
if (isset($error)) |
{ |
echo "<tr><td></td><td><div class=\"error\">", $this->Format($error), "</div></td></tr>\n"; |
} |
?> |
<tr> |
<td align="right">Votre NomWiki :</td> |
<td><input name="name" size="40" value="<?php if (isset($name)) echo $name ?>" /></td> |
</tr> |
<tr> |
<td align="right">Mot de passe (5 caractères minimum) :</td> |
<td> |
<input type="password" name="password" size="40" /> |
<input type="hidden" name="remember" value="0" /> |
<input type="checkbox" name="remember" value="1" /> Se souvenir de moi. |
</td> |
</tr> |
<tr> |
<td></td> |
<td><input type="submit" value="Identification" size="40" /></td> |
</tr> |
<tr> |
<td></td> |
<td width="500"><?php echo $this->Format("Les champs suivants sont à remplir si vous vous identifiez pour la première fois (vous créerez ainsi un compte)"); ?></td> |
</tr> |
<tr> |
<td align="right">Confirmation du mot de passe :</td> |
<td><input type="password" name="confpassword" size="40" /></td> |
</tr> |
<tr> |
<td align="right">Adresse de messagerie électronique. :</td> |
<td><input name="email" size="40" value="<?php if (isset($email)) echo $email ?>" /></td> |
</tr> |
<tr> |
<td></td> |
<td><input type="submit" value="Nouveau compte" size="40" /></td> |
</tr> |
</table> |
<?php |
echo $this->FormClose(); |
} |
?> |
/branches/livraison_menes/wikini/actions/redirect.php |
---|
New file |
0,0 → 1,48 |
<?php |
/* |
redirect.php : Permet de faire une redirection vers une autre pages Wiki du site |
Copyright 2003 Eric FELDSTEIN |
Copyright 2003 David DELON |
Copyright 2004 Jean Christophe ANDRE |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
/* |
Parametres : page : nom wiki de la page vers laquelle ont doit rediriger (obligatoire) |
exemple : {{redirect page="BacASable"}} |
*/ |
//recuperation du parametres |
$redirPageName = $this->GetParameter("page"); |
if (empty($redirPageName)){ |
echo $this->Format("//Le paramêtre \"page\" est manquant.//"); |
}else{ |
if (eregi("^".$redirPageName."$",$this->GetPageTag())){ |
echo $this->Format("//Impossible à une page de se rediriger vers elle même.//"); |
}else{ |
$fromPages = array(); |
$fromPages = explode(":",$_COOKIE['redirectfrom']); |
if (in_array($this->GetPageTag(),$fromPages)){ |
echo $this->Format("//Redirection circulaire.//"); |
}else{ |
$fromPages[] = $this->GetPageTag(); |
SetCookie('redirectfrom', implode(":",$fromPages), time() + 30, $this->CookiePath); |
$this->Redirect($this->Href('', $redirPageName)); |
} |
} |
} |
?> |
/branches/livraison_menes/wikini/actions/recentchangesrss.php |
---|
New file |
0,0 → 1,60 |
<?php |
/* |
recentchangesrss.php |
Copyright 2003 David DELON |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
if ($user = $this->GetUser()) |
{ |
$max = $user["changescount"]; |
} |
else |
{ |
$max = 50; |
} |
if ($pages = $this->LoadRecentlyChanged($max)) |
{ |
if (!($link = $this->GetParameter("link"))) $link=$this->config["root_page"]; |
$output = "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n"; |
$output .= "<!-- RSS v0.91 generated by Wikini -->\n"; |
$output .= "<rdf:RDF\n"; |
$output .= "xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n"; |
$output .= "xmlns=\"http://my.netscape.com/publish/formats/rss-0.91.dtd\">\n"; |
$output .= "<channel>\n"; |
$output .= "<title> Derniers changements sur ". $this->config["wakka_name"] . "</title>\n"; |
$output .= "<link>".str_replace('&', '&', $this->config["base_url"].$link)."</link>\n"; |
$output .= "<description> Derniers changements sur " . $this->config["wakka_name"] . " </description>\n"; |
$output .= "<language>fr</language>\n"; |
$output .= "</channel>\n"; |
foreach ($pages as $i => $page) |
{ |
list($day, $time) = explode(" ", $page["time"]); |
$day= preg_replace("/-/", " ", $day); |
list($hh,$mm,$ss) = explode(":", $time); |
$output .= "<item>\n"; |
$output .= "<title>" . $page["tag"] . " --- par " .$page["user"] . " le " . $day ." - ". $hh .":". $mm . "</title>\n"; |
$output .= "<description> Modification de " . $page["tag"] . " --- par " .$page["user"] . " le " . $day ." - ". $hh .":". $mm . "</description>\n"; |
$output .= "<link>".str_replace('&', '&', $this->config["base_url"].$page["tag"])."&time=" . rawurlencode($page["time"]) . "</link>\n"; |
$output .= "</item>\n"; |
} |
$output .= "</rdf:RDF>\n"; |
echo $output ; |
} |
?> |
/branches/livraison_menes/wikini/actions/backlinks.php |
---|
New file |
0,0 → 1,62 |
<?php |
/* |
backlinks.php |
Copyright 2002 Patrick PAUL |
Copyright 2003 David DELON |
Copyright 2003 Charles NEPOTE |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
if ($this->GetParameter("page")) |
{ |
$page = $this->GetParameter("page"); |
$title = "Pages ayant un lien vers ".$this->ComposeLinkToPage($page)." : <br />\n"; |
} |
else |
{ |
$page = $this->getPageTag(); |
$title = "Pages ayant un lien vers la page courante : <br />\n"; |
} |
$pages = $this->LoadPagesLinkingTo($page); |
if ($pages) |
{ |
echo $title; |
if (!$exclude = $this->GetParameter("exclude")) |
{ |
foreach ($pages as $page) |
{ |
echo $this->ComposeLinkToPage($page["tag"]), "<br />\n"; |
} |
} |
else |
{ |
foreach ($pages as $page) |
{ |
// Show link if it isn't an excluded link |
if (!preg_match("/".$page["tag"]."(;|$)/", $exclude)) echo $this->ComposeLinkToPage($page["tag"]), "<br />\n"; |
} |
} |
} |
else |
{ |
echo "<i>Aucune page n'a de lien vers ", $this->ComposeLinkToPage($page), ".</i>"; |
} |
?> |
/branches/livraison_menes/wikini/actions/interwikilist.php |
---|
New file |
0,0 → 1,30 |
<?php |
/*interwikilist.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2003 David DELON |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
$file = implode("", file("interwiki.conf", 1)); |
echo $this->Format("%%".$file."%%") ; |
?> |
/branches/livraison_menes/wikini/actions/wantedpages.php |
---|
New file |
0,0 → 1,43 |
<?php |
/* |
wantedpages.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002 Charles NEPOTE |
Copyright 2002 Patrick PAUL |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
if ($pages = $this->LoadWantedPages()) |
{ |
foreach ($pages as $page) |
{ |
echo $this->Link($page["tag"])," (<a |
ref=\"",$this->href(),"&linking_to=",$page["tag"],"\">",$page["count"],"</a>)<br />\n"; |
} |
} |
else |
{ |
echo "<i>Aucune page à créer.</i>"; |
} |
?> |
/branches/livraison_menes/wikini/actions/pageindex.php |
---|
New file |
0,0 → 1,54 |
<?php |
/* |
pageindex.php |
Copyright (c) 2003, Hendrik Mans <hendrik@mans.de> |
Copyright 2003 David DELON |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
if ($pages = $this->LoadAllPages()) |
{ |
foreach ($pages as $page) |
{ |
if (!preg_match("/^Comment/", $page["tag"])) { |
$firstChar = strtoupper($page["tag"][0]); |
if (!preg_match("/[A-Z,a-z]/", $firstChar)) { |
$firstChar = "#"; |
} |
if ($firstChar != $curChar) { |
if ($curChar) echo "<br />\n" ; |
echo "<b>$firstChar</b><br />\n" ; |
$curChar = $firstChar; |
} |
echo $this->ComposeLinkToPage($page["tag"]),"<br />\n" ; |
} |
} |
} |
else |
{ |
echo "<i>Aucune page trouvée.</i>" ; |
} |
?> |
/branches/livraison_menes/wikini/actions/attach.php |
---|
New file |
0,0 → 1,121 |
<?php |
/* |
attach.php |
Code original de ce fichier : Eric FELDSTEIN |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2003,2004 Eric FELDSTEIN |
Copyright 2003 Jean-Pascal MILCENT |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/****************************************************************************** |
* DOCUMENTATION |
******************************************************************************* |
RESUME |
L'action {{attach}} permet de lier un fichier à une page, d'uploader ce fichier |
et de downloader ce fichier. Si le fichier est une image, elle est affichée |
dans la page. Lorsque le fichier est sur le serveur, il est possible de faire |
une mise à jour de celui-ci. |
PARAMETRES DE L'ACTION |
L'action {{attach}} prend les paramètres suivants : |
- file ou attachfile: nom du fichier tel qu'il sera sur le serveur. Les |
espaces sont remplacé par des "_". (OBLIGATOIRE) |
- desc ou attachdesc: description du fichier. C'est le texte qui sera affiché |
comme lien vers le fichier ou dans l'attribut alt de la balise <img>. Ce |
paramètre est obligatoire pour les images pour être conforme au XHTML. |
- delete ou attachdelete: Si ce paramètre est non vide alors le fichier sera |
effacé sur le serveur. |
- link ou attachlink: URL de lien pour une image sensible. le lien peut être |
un nom de page WikiNi, un lien interwiki ou une adresse http |
- class: indique le nom de la ou les classes de style à utiliser pour afficher |
l'image. les noms des classes sont séparés par un espace. |
EXEMPLES |
- Attacher un fichier archive: |
{{attach file="archive.zip"}} |
- Attacher un fichier archive avec une description |
{{attach file="archive.zip" desc="Code source de l'application"}} |
- Supprimer un fichier: |
{{attach file="archive.zip" delete="y"}} |
- Afficher une image: |
{{attach file="image.png" desc="voici une image"}} |
- Afficher une image sensible: |
{{attach file="image.png" desc="voici une image" link="PagePrincipale"}} |
{{attach file="image.png" desc="voici une image" link="WikiNi:PagePrincipale"}} |
{{attach file="image.png" desc="voici une image" link="http://www.wikini.net"}} |
- Afficher une image collé sur le bord droit et sans contour: |
{{attach file="image.png" desc="voici une image" class="right noborder"}} |
INSTALLATION |
1) Copiez le fichier attach.php dans le répertoire des actions (/actions) |
2) Copiez le fichier attach.class.php dans le répertoire des actions (/actions) |
3) Copiez le fichier attachfm.php dans le repertoire des actions (/actions) |
4) Copiez le fichier filamanager.php dans le répertoire des handlers (/handlers/page) |
5) Copiez le fichier upload.php dans le répertoire des handlers (/handlers/page) |
6) Copiez le fichier download.php dans le répertoire des handlers (/handlers/page) |
7) Créez le répertoire racine des uploads sur le site du wiki. Si le SAFE_MODE |
de PHP est activé, vous devez créer vous même ce répertoire et autoriser |
l'écriture dans ce répertoire pour l'utilisateur et le groupe. |
8) Ouvrez le fichier wakka.config.php et ajoutez la configuration de l'action. |
Tous les paramètres de configuration ont une valeur par défaut. |
Le configuration par défaut est: |
$wakkaConfig["attach_config"] = array( |
"upload_path" => 'files', //repertoire racine des uploads |
"ext_images" => 'gif|jpeg|png|jpg', //extension des fichiers images |
"ext_script" => 'php|php3|asp|asx|vb|vbs|js', //extension des script(non utilisé) |
"update_symbole" => '*', //symbole pour faire un update du fichier |
"max_file_size" => 1024*100, //taille maximum du fichier en octer (100Ko par défaut) |
"fmDelete_symbole" => 'Supr', //symbole a afficher pour le lien "supprimer" dans le gestionnaire de fichier |
"fmRestore_symbole" => 'Rest', //symbole a afficher pour le lien "restaurer" dans le gestionnaire de fichier |
"fmTrash_symbole" => 'Poubelle') //symbole a afficher pour le lien "Poubelle" dans le gestionnaire de fichier |
9) Ajoutez les classes de style au fichier wakka.css. Exemple de style : |
.attach_margin05em { margin: 0.5em;} |
.attach_margin1em { margin: 1em;} |
.attach_left {float: left;} |
.attach_right {float: right;} |
.attach_noborder {border-width: 0px;} |
.attach_vmiddle {vertical-align: text-bottom;} |
10)Pour configurer l'aspect du gestionnnaire de fichier utiliser les classes de style .tableFM |
tableFMCol1 et tableFMCol2 |
Exemple : |
.tableFM {border: thin solid Black; width: 100%; } |
.tableFM THEAD { background-color: Silver; font-weight: bold; text-align: center; } |
.tableFM TFOOT { background-color: Silver; font-weight: bold; text-align: left; } |
.tableFM TBODY TR { text-align: center; } |
.tableFMCol1 { background-color: Aqua; } |
.tableFMCol2 { background-color: Yellow; } |
*******************************************************************************/ |
if (!class_exists('attach')){ |
include($this->GetConfigValue('action_path').'/attach.class.php'); |
} |
$att = new attach($this); |
$att->doAttach(); |
unset($att); |
?> |
/branches/livraison_menes/wikini/actions/resetpassword.php |
---|
New file |
0,0 → 1,80 |
<?php |
/* |
resetpassword.php |
Copyright 2003 Patrick PAUL |
Copyright 2003 David DELON |
Copyright 2004 David VANTYGHEM |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
if (($user = $this->GetUser()) && ($user["name"]==$this->GetConfigValue("admin")) && $this->GetConfigValue("admin")) |
{ |
if (($_REQUEST["action"] == "resetpass")) |
{ |
$this->Query("update ".$this->config["table_prefix"]."users set ". |
"password = md5('".mysql_escape_string($_POST["password"])."') ". |
"where name = '".mysql_escape_string($_POST["name"])."' limit 1"); |
$this->SetMessage("Mot de passe réinitialisé !"); |
$this->Redirect($this->href()); |
} |
else |
{ |
$error=""; |
//$error = "Il est interdit de réinitialiser le mot de passe de cet utilisateur ! Non mais !"; |
} |
echo $this->FormOpen() ; |
$name=$_GET["name"]; |
?> |
<input type="hidden" name="action" value="resetpass"> |
<table> |
<tr> |
<td align="right"></td> |
<td><?php echo $this->Format("Réinitialisation du mot de passe"); ?></td> |
</tr> |
<?php |
if ($error) |
{ |
echo "<tr><td></td><td><div class=\"error\">".$this->Format($error)."</div></td></tr>\n" ; |
} |
?> |
<tr> |
<td align="right">Login:</td> |
<td><input name="name" size="40" value="<?php echo $name ?>"></td> |
</tr> |
<tr> |
<td align="right">Nouveau mot de passe:</td> |
<td><input type="password" name="password" size="40"></td> |
</tr> |
<tr> |
<td></td> |
<td><input type="submit" value="Reset password" size="40"></td> |
</tr> |
</table> |
<?php |
echo $this->FormClose() ; |
} |
else |
{ |
echo "<i>Vous n'avez pas les permissions nécessaires pour exécuter cette action.</i>" ; |
} |
?> |
/branches/livraison_menes/wikini/actions/mypages.php |
---|
New file |
0,0 → 1,78 |
<?php |
// actions/mypages.php |
// written by Carlo Zottmann |
// http://wakkawikki.com/CarloZottmann |
/* |
mypages.php |
Copyright (c) 2003, Carlo Zottmann |
Copyright 2003 David DELON |
Copyright 2003 Jean Pascal MILCENT |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
if ($user = $this->GetUser()) |
{ |
echo "<b>Liste des pages dont vous êtes le propriétaire.</b><br /><br />\n" ; |
$my_pages_count = 0; |
if ($pages = $this->LoadAllPages()) |
{ |
foreach ($pages as $page) |
{ |
if ($this->UserName() == $page["owner"] && !preg_match("/^Comment/", $page["tag"])) { |
$firstChar = strtoupper($page["tag"][0]); |
if (!preg_match("/[A-Z,a-z]/", $firstChar)) { |
$firstChar = "#"; |
} |
if ($firstChar != $curChar) { |
if ($curChar) echo "<br />\n" ; |
echo "<b>$firstChar</b><br />\n" ; |
$curChar = $firstChar; |
} |
echo $this->ComposeLinkToPage($page["tag"]),"<br />\n" ; |
$my_pages_count++; |
} |
} |
if ($my_pages_count == 0) |
{ |
echo "<i>Vous n'êtes le propriétaire d'aucune page.</i>"; |
} |
} |
else |
{ |
echo "<i>Aucune page trouvée.</i>" ; |
} |
} |
else |
{ |
echo "<i>Vous n'êtes pas identifié : impossible d'afficher la liste des pages que vous avez modifiées.</i>" ; |
} |
?> |
/branches/livraison_menes/wikini/actions/listuserscommon.php |
---|
New file |
0,0 → 1,24 |
<?php |
if ($last = $this->GetParameter("last")) |
{ |
if ($last=="last") $last=150; else $last= (int) $last; |
if ($last) |
{ |
$last_users = $this->LoadAll("select name, signuptime from ".$this->config["common_table_prefix"]."users order by signuptime desc limit $last"); |
foreach($last_users as $user) { print($this->Format($user["name"])." . . . ".$user["signuptime"]."<br />\n"); } |
} |
} |
else |
{ |
if ($last_users = $this->LoadAll("select name, signuptime from ".$this->config["common_table_prefix"]."users order by name asc") |
) |
{ |
foreach($last_users as $user) |
{ |
print($this->Format($user["name"])." . . . ".$user["signuptime"]."<br />\n"); |
} |
} |
} |
?> |
/branches/livraison_menes/wikini/actions/changestyle.php |
---|
New file |
0,0 → 1,67 |
<?php |
// Action changesstyle.php version 0.2 du 16/03/2004 |
// pour WikiNi 0.4.1rc (=> à la version du 200403xx) et supérieurs |
// Par Charles Népote (c) 2004 |
// Licence GPL |
// Fonctionnement |
// |
// Cette action regroupe la fonction de changement de style ainsi que l'interface |
// de modification du style. |
// Une fois le style sélectionné via l'interface, la requête est envoyée sous la forme : |
// http://example.org/PageTest&set="NomDeFeuilleDeStyle" |
// . si ce nom n'est pas constitué uniquement de caractères alphanumériques, |
// une erreur est retournée |
// . si ce nom est valide et que la feuille de style existe : |
// . on change le cookie utilisateur |
// . on redirrige l'utilisateur vers http://example.org/PageTest où |
// l'utilisateur peut alors constater le changement de style |
// Usage : |
// |
// -- {{changestyle link="xxx.css"}} |
// donne le lien suivant : |
// Feuille de style xxx.css |
// |
// -- {{changestyle link="xxx.css" title="Ouragan"}} |
// donne le lien suivant : |
// Ouragan |
// A compléter (peut-être un jour) : |
// |
// -- {{changestyle}} |
// donne un formulaire : |
// Entrer l'adresse de la feuille de style désirée : [ ] |
// |
// -- {{changestyle choice="zzz.css;ttt.css"}} |
// [] Feuille de style zzz |
// [] Feuille de style ttt |
$set = $_GET["set"]; |
if ($this->GetParameter(link)) |
{ |
echo "<a href=\"".$this->href()."&set=".$this->GetParameter(link)."\">"; |
echo (!$this->GetParameter(title))?"Feuille de style ".$this->GetParameter(link):$this->GetParameter(title); |
echo "</a>"; |
} |
// Do it. |
if (preg_match("/^[A-Za-z0-9][A-Za-z0-9]+$/", $set)) |
{ |
$this->SetPersistentCookie('sitestyle',$set,1); |
header("Location: ".$this->href()); |
} |
else if ($set) |
{ |
$this->SetMessage("La feuille de style ".$set." est non valide !"); |
header("Location: ".$this->href()); |
} |
?> |
/branches/livraison_menes/wikini/actions/attach.class.php |
---|
New file |
0,0 → 1,625 |
<?php |
/* |
attach.class.php |
Code original de ce fichier : Eric FELDSTEIN |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2003,2004 Eric FELDSTEIN |
Copyright 2003 Jean-Pascal MILCENT |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
# Classe de gestion de l'action {{attach}} |
# voir actions/attach.php ppour la documentation |
# copyrigth Eric Feldstein 2003-2004 |
class attach { |
var $wiki = ''; //objet wiki courant |
var $attachConfig = array(); //configuration de l'action |
var $file = ''; //nom du fichier |
var $desc = ''; //description du fichier |
var $link = ''; //url de lien (image sensible) |
var $isPicture = 0; //indique si c'est une image |
var $classes = ''; //classe pour afficher une image |
var $attachErr = ''; //message d'erreur |
var $pageId = 0; //identifiant de la page |
var $isSafeMode = false; //indicateur du safe mode de PHP |
/** |
* Constructeur. Met les valeurs par defaut aux paramètres de configuration |
*/ |
function attach(&$wiki){ |
$this->wiki = $wiki; |
$this->attachConfig = $this->wiki->GetConfigValue("attach_config"); |
if (empty($this->attachConfig["ext_images"])) $this->attachConfig["ext_images"] = "gif|jpeg|png|jpg"; |
if (empty($this->attachConfig["ext_script"])) $this->attachConfig["ext_script"] = "php|php3|asp|asx|vb|vbs|js"; |
if (empty($this->attachConfig['upload_path'])) $this->attachConfig['upload_path'] = 'files'; |
if (empty($this->attachConfig['update_symbole'])) $this->attachConfig['update_symbole'] = '*'; |
if (empty($this->attachConfig['max_file_size'])) $this->attachConfig['max_file_size'] = 1024*100; //100ko max |
if (empty($this->attachConfig['fmDelete_symbole'])) $this->attachConfig['fmDelete_symbole'] = 'Supr'; |
if (empty($this->attachConfig['fmRestore_symbole'])) $this->attachConfig['fmRestore_symbole'] = 'Rest'; |
if (empty($this->attachConfig['fmTrash_symbole'])) $this->attachConfig['fmTrash_symbole'] = 'Poubelle'; |
$this->isSafeMode = ini_get("safe_mode"); |
} |
/****************************************************************************** |
* FONCTIONS UTILES |
*******************************************************************************/ |
/** |
* Création d'une suite de répertoires récursivement |
*/ |
function mkdir_recursif ($dir) { |
if (strlen($dir) == 0) return 0; |
if (is_dir($dir)) return 1; |
elseif (dirname($dir) == $dir) return 1; |
return ($this->mkdir_recursif(dirname($dir)) and mkdir($dir,0755)); |
} |
/** |
* Renvois le chemin du script |
*/ |
function GetScriptPath () { |
if (preg_match("/.(php)$/i",$_SERVER["PHP_SELF"])){ |
$a = explode('/',$_SERVER["PHP_SELF"]); |
$a[count($a)-1] = ''; |
$path = implode('/',$a); |
}else{ |
$path = $_SERVER["PHP_SELF"]; |
} |
return !empty($_SERVER["HTTP_HOST"])? 'http://'.$_SERVER["HTTP_HOST"].$path : 'http://'.$_SERVER["SERVER_NAME"].$path ; |
} |
/** |
* Calcul le repertoire d'upload en fonction du safe_mode |
*/ |
function GetUploadPath(){ |
if ($this->isSafeMode) { |
$path = $this->attachConfig['upload_path']; |
}else{ |
$path = $this->attachConfig['upload_path'].'/'.$this->wiki->GetPageTag(); |
if (! is_dir($path)) $this->mkdir_recursif($path); |
} |
return $path; |
} |
/** |
* Calcule le nom complet du fichier attaché en fonction du safe_mode, du nom et de la date de |
* revision la page courante. |
* Le nom du fichier "mon fichier.ext" attache à la page "LaPageWiki"sera : |
* mon_fichier_datepage_update.ext |
* update : date de derniere mise a jour du fichier |
* datepage : date de revision de la page à laquelle le fichier a ete lié/mis a jour |
* Si le fichier n'est pas une image un '_' est ajoute : mon_fichier_datepage_update.ext_ |
* Selon la valeur de safe_mode : |
* safe_mode = on : LaPageWiki_mon_fichier_datepage_update.ext_ |
* safe_mode = off: LaPageWiki/mon_fichier_datepage_update.ext_ avec "LaPageWiki" un sous-repertoire du répertoire upload |
*/ |
function GetFullFilename($newName = false){ |
$pagedate = $this->convertDate($this->wiki->page['time']); |
//decompose le nom du fichier en nom+extension |
if (preg_match('`^(.*)\.(.*)$`', str_replace(' ','_',$this->file), $match)){ |
list(,$file['name'],$file['ext'])=$match; |
if(!$this->isPicture()) $file['ext'] .= '_'; |
}else{ |
return false; |
} |
//recuperation du chemin d'upload |
$path = $this->GetUploadPath($this->isSafeMode); |
//generation du nom ou recherche de fichier ? |
if ($newName){ |
$full_file_name = $file['name'].'_'.$pagedate.'_'.$this->getDate().'.'.$file['ext']; |
if($this->isSafeMode){ |
$full_file_name = $path.'/'.$this->wiki->GetPageTag().'_'.$full_file_name; |
}else{ |
$full_file_name = $path.'/'.$full_file_name; |
} |
}else{ |
//recherche du fichier |
if($this->isSafeMode){ |
//TODO Recherche dans le cas ou safe_mode=on |
$searchPattern = '`^'.$this->wiki->GetPageTag().'_'.$file['name'].'_\d{14}_\d{14}\.'.$file['ext'].'$`'; |
}else{ |
$searchPattern = '`^'.$file['name'].'_\d{14}_\d{14}\.'.$file['ext'].'$`'; |
} |
$files = $this->searchFiles($searchPattern,$path); |
$unedate = 0; |
foreach ($files as $file){ |
//recherche du fichier qui une datepage <= a la date de la page |
if($file['datepage']<=$pagedate){ |
//puis qui a une dateupload la plus grande |
if ($file['dateupload']>$unedate){ |
$theFile = $file; |
$unedate = $file['dateupload']; |
} |
} |
} |
if (is_array($theFile)){ |
$full_file_name = $path.'/'.$theFile['realname']; |
} |
} |
return $full_file_name; |
} |
/** |
* Test si le fichier est une image |
*/ |
function isPicture(){ |
return preg_match("/.(".$this->attachConfig["ext_images"].")$/i",$this->file)==1; |
} |
/** |
* Renvoie la date courante au format utilise par les fichiers |
*/ |
function getDate(){ |
return date('YmdHis'); |
} |
/** |
* convertie une date yyyy-mm-dd hh:mm:ss au format yyyymmddhhmmss |
*/ |
function convertDate($date){ |
$date = str_replace(' ','', $date); |
$date = str_replace(':','', $date); |
return str_replace('-','', $date); |
} |
/** |
* Parse une date au format yyyymmddhhmmss et renvoie un tableau assiatif |
*/ |
function parseDate($sDate){ |
$pattern = '`^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$`'; |
$res = ''; |
if (preg_match($pattern, $sDate, $m)){ |
//list(,$res['year'],$res['month'],$res['day'],$res['hour'],$res['min'],$res['sec'])=$m; |
$res = $m[1].'-'.$m[2].'-'.$m[3].' '.$m[4].':'.$m[5].':'.$m[6]; |
} |
return ($res?$res:false); |
} |
/** |
* Decode un nom long de fichier |
*/ |
function decodeLongFilename($filename){ |
$afile = array(); |
$afile['realname'] = basename($filename); |
$afile['size'] = filesize($filename); |
$afile['path'] = dirname($filename); |
if(preg_match('`^(.*)_(\d{14})_(\d{14})\.(.*)(trash\d{14})?$`', $afile['realname'], $m)){ |
$afile['name'] = $m[1]; |
//suppression du nom de la page si safe_mode=on |
if ($this->isSafeMode){ |
$afile['name'] = preg_replace('`^('.$this->wiki->tag.')_(.*)$`i', '$2', $afile['name']); |
} |
$afile['datepage'] = $m[2]; |
$afile['dateupload'] = $m[3]; |
$afile['trashdate'] = preg_replace('`(.*)trash(\d{14})`', '$2', $m[4]); |
//suppression de trashxxxxxxxxxxxxxx eventuel |
$afile['ext'] = preg_replace('`^(.*)(trash\d{14})$`', '$1', $m[4]); |
$afile['ext'] = rtrim($afile['ext'],'_'); |
//$afile['ext'] = rtrim($m[4],'_'); |
} |
return $afile; |
} |
/** |
* Renvois un tableau des fichiers correspondant au pattern. Chaque element du tableau est un |
* tableau associatif contenant les informations sur le fichier |
*/ |
function searchFiles($filepattern,$start_dir){ |
$files_matched = array(); |
$start_dir = rtrim($start_dir,'\/'); |
$fh = opendir($start_dir); |
while (($file = readdir($fh)) !== false) { |
if (strcmp($file, '.')==0 || strcmp($file, '..')==0 || is_dir($file)) continue; |
if (preg_match($filepattern, $file)){ |
$files_matched[] = $this->decodeLongFilename($start_dir.'/'.$file); |
} |
} |
return $files_matched; |
} |
/****************************************************************************** |
* FONCTIONS D'ATTACHEMENTS |
*******************************************************************************/ |
/** |
* Test les paramètres passé à l'action |
*/ |
function CheckParams(){ |
//recuperation des parametres necessaire |
$this->file = $this->wiki->GetParameter("attachfile"); |
if (empty($this->file)) $this->file = $this->wiki->GetParameter("file"); |
$this->desc = $this->wiki->GetParameter("attachdesc"); |
if (empty($this->desc)) $this->desc = $this->wiki->GetParameter("desc"); |
$this->link = $this->wiki->GetParameter("attachlink");//url de lien - uniquement si c'est une image |
if (empty($this->link)) $this->link = $this->wiki->GetParameter("link"); |
//test de validité des parametres |
if (empty($this->file)){ |
$this->attachErr = $this->wiki->Format("//action attach : paramètre **file** manquant//---"); |
} |
if ($this->isPicture() && empty($this->desc)){ |
$this->attachErr .= $this->wiki->Format("//action attach : paramètre **desc** obligatoire pour une image//---"); |
} |
if ($this->wiki->GetParameter("class")) { |
$array_classes = explode(" ", $this->wiki->GetParameter("class")); |
foreach ($array_classes as $c) { $this->classes = $this->classes . "attach_" . $c . " "; } |
$this->classes = trim($this->classes); |
} |
} |
/** |
* Affiche le fichier lié comme une image |
*/ |
function showAsImage($fullFilename){ |
//c'est une image : balise <IMG..../> |
$img = "<img src=\"".$this->GetScriptPath().$fullFilename."\" ". |
"alt=\"".$this->desc.($this->link?"\nLien vers: $this->link":"")."\" />"; |
//test si c'est une image sensible |
if(!empty($this->link)){ |
//c'est une image sensible |
//test si le lien est un lien interwiki |
if (preg_match("/^([A-Z][A-Z,a-z]+)[:]([A-Z,a-z,0-9]*)$/s", $this->link, $matches)) |
{ //modifie $link pour être un lien vers un autre wiki |
$this->link = $this->wiki->GetInterWikiUrl($matches[1], $matches[2]); |
} |
//calcule du lien |
$output = $this->wiki->Format('[['.$this->link." $this->file]]"); |
$output = eregi_replace(">$this->file<",">$img<",$output);//insertion du tag <img...> dans le lien |
}else{ |
//ce n'est pas une image sensible |
$output = $img; |
} |
$output = ($this->classes?"<span class=\"$this->classes\">$output</span>":$output); |
echo $output; |
$this->showUpdateLink(); |
} |
/** |
* Affiche le fichier lié comme un lien |
*/ |
function showAsLink($fullFilename){ |
$url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=$this->file"); |
echo '<a href="'.$url.'">'.($this->desc?$this->desc:$this->file)."</a>"; |
$this->showUpdateLink(); |
} |
/** |
* Affiche le lien de mise à jour |
*/ |
function showUpdateLink(){ |
echo " <a href=\"". |
$this->wiki->href("upload",$this->wiki->GetPageTag(),"file=$this->file"). |
"\" title='Mise à jour'>".$this->attachConfig['update_symbole']."</a>"; |
} |
/** |
* Affiche un liens comme un fichier inexistant |
*/ |
function showFileNotExits(){ |
echo $this->file."<a href=\"".$this->wiki->href("upload",$this->wiki->GetPageTag(),"file=$this->file")."\">?</a>"; |
} |
/** |
* Affiche l'attachement |
*/ |
function doAttach(){ |
$this->CheckParams(); |
if ($this->attachErr) { |
echo $this->attachErr; |
return; |
} |
$fullFilename = $this->GetFullFilename(); |
//test d'existance du fichier |
if((!file_exists($fullFilename))||($fullFilename=='')){ |
$this->showFileNotExits(); |
return; |
} |
//le fichier existe : affichage en fonction du type |
if($this->isPicture()){ |
$this->showAsImage($fullFilename); |
}else{ |
$this->showAsLink($fullFilename); |
} |
} |
/****************************************************************************** |
* FONTIONS D'UPLOAD DE FICHIERS |
*******************************************************************************/ |
/** |
* Traitement des uploads |
*/ |
function doUpload(){ |
$HasAccessWrite=$this->wiki->HasAccess("write"); |
if ($HasAccessWrite){ |
switch ($_SERVER["REQUEST_METHOD"]) { |
case 'GET' : $this->showUploadForm(); break; |
case 'POST': $this->performUpload(); break; |
default : echo $this->wiki->Format("//Methode de requete invalide//---"); |
} |
}else{ |
echo $this->wiki->Format("//Vous n'avez pas l'accès en écriture à cette page//---"); |
echo $this->wiki->Format("Retour à la page ".$this->wiki->GetPageTag()); |
} |
} |
/** |
* Formulaire d'upload |
*/ |
function showUploadForm(){ |
echo $this->wiki->Format("====Formulaire d'envois de fichier====\n---"); |
$this->file = $_GET['file']; |
echo $this->wiki->Format("**Envois du fichier $this->file :**\n") |
."<form enctype=\"multipart/form-data\" name=\"frmUpload\" method=\"POST\" action=\"".$_SERVER["PHP_SELF"]."\">\n" |
." <input type=\"hidden\" name=\"wiki\" value=\"".$this->wiki->GetPageTag()."/upload\" />\n" |
." <input TYPE=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"".$this->attachConfig['max_file_size']."\" />\n" |
." <input type=\"hidden\" name=\"file\" value=\"$this->file\" />\n" |
." <input type=\"file\" name=\"upFile\" size=\"50\" /><br />\n" |
." <input type=\"submit\" value=\"Envoyer\" />\n" |
."</form>\n"; |
} |
/** |
* Execute l'upload |
*/ |
function performUpload(){ |
$this->file = $_POST['file']; |
$destFile = $this->GetFullFilename(true); //nom du fichier destination |
//test de la taille du fichier recu |
if($_FILES['upFile']['error']==0){ |
$size = filesize($_FILES['upFile']['tmp_name']); |
if ($size > $this->attachConfig['max_file_size']){ |
$_FILES['upFile']['error']=2; |
} |
} |
switch ($_FILES['upFile']['error']){ |
case 0: |
$srcFile = $_FILES['upFile']['tmp_name']; |
if (move_uploaded_file($srcFile,$destFile)){ |
chmod($destFile,0644); |
header("Location: ".$this->wiki->href("",$this->wiki->GetPageTag(),"")); |
}else{ |
echo $this->wiki->Format("//Erreur lors du déplacement du fichier temporaire//---"); |
} |
break; |
case 1: |
echo $this->wiki->Format("//Le fichier téléchargé excède la taille de upload_max_filesize, configuré dans le php.ini.//---"); |
break; |
case 2: |
echo $this->wiki->Format("//Le fichier téléchargé excède la taille de MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML.//---"); |
break; |
case 3: |
echo $this->wiki->Format("//Le fichier n'a été que partiellement téléchargé.//---"); |
break; |
case 4: |
echo $this->wiki->Format("//Aucun fichier n'a été téléchargé.//---"); |
break; |
} |
echo $this->wiki->Format("Retour à la page ".$this->wiki->GetPageTag()); |
} |
/****************************************************************************** |
* FUNCTIONS DE DOWNLOAD DE FICHIERS |
*******************************************************************************/ |
function doDownload(){ |
$this->file = $_GET['file']; |
$fullFilename = $this->GetUploadPath().'/'.$this->file; |
if(!file_exists($fullFilename)){ |
$fullFilename = $this->GetFullFilename(); |
$dlFilename = $this->file; |
$size = filesize($fullFilename); |
}else{ |
$file = $this->decodeLongFilename($fullFilename); |
$size = $file['size']; |
$dlFilename =$file['name'].'.'.$file['ext']; |
} |
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); |
header("Content-type: application/force-download"); |
header('Pragma: public'); |
header("Pragma: no-cache");// HTTP/1.0 |
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT'); |
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1 |
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1 |
header('Content-Transfer-Encoding: none'); |
header('Content-Type: application/octet-stream; name="' . $dlFilename . '"'); //This should work for the rest |
header('Content-Type: application/octetstream; name="' . $dlFilename . '"'); //This should work for IE & Opera |
header('Content-Type: application/download; name="' . $dlFilename . '"'); //This should work for IE & Opera |
header('Content-Disposition: attachment; filename="'.$dlFilename.'"'); |
header("Content-Description: File Transfer"); |
header("Content-length: $size".'bytes'); |
readfile($fullFilename); |
} |
/****************************************************************************** |
* FONTIONS DU FILEMANAGER |
*******************************************************************************/ |
function doFileManager(){ |
$do = $_GET['do']?$_GET['do']:''; |
switch ($do){ |
case 'restore' : |
$this->fmRestore(); |
$this->fmShow(true); |
break; |
case 'erase' : |
$this->fmErase(); |
$this->fmShow(true); |
break; |
case 'del' : |
$this->fmDelete(); |
$this->fmShow(); |
break; |
case 'trash' : |
$this->fmShow(true); break; |
case 'emptytrash' : |
$this->fmEmptyTrash(); //pas de break car apres un emptytrash => retour au gestionnaire |
default : |
$this->fmShow(); |
} |
} |
/** |
* Affiche la liste des fichiers |
*/ |
function fmShow($trash=false){ |
$fmTitlePage = $this->wiki->Format("====Gestion des fichiers attachés à la page ".$this->wiki->tag."====\n---"); |
if($trash){ |
//Avertissement |
$fmTitlePage .= '<div class="prev_alert">Les fichiers effacés sur cette page le sont définitivement</div>'; |
//Pied du tableau |
$url = $this->wiki->Link($this->wiki->tag,'filemanager','Gestion des fichiers'); |
$fmFootTable = ' <tfoot>'."\n". |
' <tr>'."\n". |
' <td colspan="6">'.$url.'</td>'."\n"; |
$url = $this->wiki->Link($this->wiki->tag,'filemanager&do=emptytrash','Vider la poubelle'); |
$fmFootTable.= ' <td>'.$url.'</td>'."\n". |
' </tr>'."\n". |
' </tfoot>'."\n"; |
}else{ |
//pied du tableau |
$url = '<a href="'.$this->wiki->href('filemanager',$this->wiki->GetPageTag(),'do=trash').'" title="Poubelle">'.$this->attachConfig['fmTrash_symbole']."</a>"; |
$fmFootTable = ' <tfoot>'."\n". |
' <tr>'."\n". |
' <td colspan="6">'.$url.'</td>'."\n". |
' </tr>'."\n". |
' </tfoot>'."\n"; |
} |
//entete du tableau |
$fmHeadTable = ' <thead>'."\n". |
' <tr>'."\n". |
' <td> </td>'."\n". |
' <td>Nom du fichier</td>'."\n". |
' <td>Nom réel du fichier</td>'."\n". |
' <td>Taille</td>'."\n". |
' <td>Révision de la page</td>'."\n". |
' <td>Révison du fichier</td>'."\n"; |
if($trash){ |
$fmHeadTable.= ' <td>Suppression</td>'."\n"; |
} |
$fmHeadTable.= ' </tr>'."\n". |
' </thead>'."\n"; |
//corps du tableau |
$files = $this->fmGetFiles($trash); |
$files = $this->sortByNameRevFile($files); |
$fmBodyTable = ' <tbody>'."\n"; |
$i = 0; |
foreach ($files as $file){ |
$i++; |
$color= ($i%2?"tableFMCol1":"tableFMCol2"); |
//lien de suppression |
if ($trash){ |
$url = $this->wiki->href('filemanager',$this->wiki->GetPageTag(),'do=erase&file='.$file['realname']); |
}else{ |
$url = $this->wiki->href('filemanager',$this->wiki->GetPageTag(),'do=del&file='.$file['realname']); |
} |
$dellink = '<a href="'.$url.'" title="Supprimer">'.$this->attachConfig['fmDelete_symbole']."</a>"; |
//lien de restauration |
$restlink = ''; |
if ($trash){ |
$url = $this->wiki->href('filemanager',$this->wiki->GetPageTag(),'do=restore&file='.$file['realname']); |
$restlink = '<a href="'.$url.'" title="Restaurer">'.$this->attachConfig['fmRestore_symbole']."</a>"; |
} |
//lien pour downloader le fichier |
$url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=".$file['realname']); |
$dlLink = '<a href="'.$url.'">'.$file['name'].'.'.$file['ext']."</a>"; |
$fmBodyTable .= ' <tr class="'.$color.'">'."\n". |
' <td>'.$dellink.' '.$restlink.'</td>'."\n". |
' <td>'.$dlLink.'</td>'."\n". |
' <td>'.$file['realname'].'</td>'."\n". |
' <td>'.$file['size'].'</td>'."\n". |
' <td>'.$this->parseDate($file['datepage']).'</td>'."\n". |
' <td>'.$this->parseDate($file['dateupload']).'</td>'."\n"; |
if($trash){ |
$fmBodyTable.= ' <td>'.$this->parseDate($file['trashdate']).'</td>'."\n"; |
} |
$fmBodyTable .= ' </tr>'."\n"; |
} |
$fmBodyTable .= ' </tbody>'."\n"; |
//pied de la page |
$fmFooterPage = "---\n-----\n[[".$this->wiki->tag." Retour à la page ".$this->wiki->tag."]]\n"; |
//affichage |
echo $fmTitlePage."\n"; |
echo '<table class="tableFM" border="0" cellspacing="0">'."\n".$fmHeadTable.$fmFootTable.$fmBodyTable.'</table>'."\n"; |
echo $this->wiki->Format($fmFooterPage); |
} |
/** |
* Renvoie la liste des fichiers |
*/ |
function fmGetFiles($trash=false){ |
$path = $this->GetUploadPath(); |
if($this->isSafeMode){ |
$filePattern = '^'.$this->wiki->GetPageTag().'_.*_\d{14}_\d{14}\..*'; |
}else{ |
$filePattern = '^.*_\d{14}_\d{14}\..*'; |
} |
if($trash){ |
$filePattern .= 'trash\d{14}'; |
}else{ |
$filePattern .= '[^(trash\d{14})]'; |
} |
return $this->searchFiles('`'.$filePattern.'$`', $path); |
} |
/** |
* Vide la poubelle |
*/ |
function fmEmptyTrash(){ |
$files = $this->fmGetFiles(true); |
foreach ($files as $file){ |
$filename = $file['path'].'/'.$file['realname']; |
if(file_exists($filename)){ |
unlink($filename); |
} |
} |
} |
/** |
* Effacement d'un fichier dans la poubelle |
*/ |
function fmErase(){ |
$path = $this->GetUploadPath(); |
$filename = $path.'/'.($_GET['file']?$_GET['file']:''); |
if (file_exists($filename)){ |
unlink($filename); |
} |
} |
/** |
* Met le fichier a la poubelle |
*/ |
function fmDelete(){ |
$path = $this->GetUploadPath(); |
$filename = $path.'/'.($_GET['file']?$_GET['file']:''); |
if (file_exists($filename)){ |
$trash = $filename.'trash'.$this->getDate(); |
rename($filename, $trash); |
} |
} |
/** |
* Restauration d'un fichier mis a la poubelle |
*/ |
function fmRestore(){ |
$path = $this->GetUploadPath(); |
$filename = $path.'/'.($_GET['file']?$_GET['file']:''); |
if (file_exists($filename)){ |
$restFile = preg_replace('`^(.*\..*)trash\d{14}$`', '$1', $filename); |
rename($filename, $restFile); |
} |
} |
/** |
* Tri tu tableau liste des fichiers par nom puis par date de revision(upload) du fichier, ordre croissant |
*/ |
function sortByNameRevFile($files){ |
if (!function_exists('ByNameByRevFile')){ |
function ByNameByRevFile($f1,$f2){ |
$f1Name = $f1['name'].'.'.$f1['ext']; |
$f2Name = $f2['name'].'.'.$f2['ext']; |
$res = strcasecmp($f1Name, $f2Name); |
if($res==0){ |
//si meme nom => compare la revision du fichier |
$res = strcasecmp($f1['dateupload'], $f2['dateupload']); |
} |
return $res; |
} |
} |
usort($files,'ByNameByRevFile'); |
return $files; |
} |
} |
?> |
/branches/livraison_menes/wikini/actions/usersettingscommon.php |
---|
New file |
0,0 → 1,231 |
<?php |
if (!function_exists("LoadUser")) |
{ |
function LoadUser($name, $password = 0) |
{ |
global $wiki; |
return $wiki->LoadSingle("select * from ".$wiki->config["common_table_prefix"]."users where name = '".mysql_escape_string($name)."' ".($password === 0 ? "" : "and password = '".mysql_escape_string($password)."'")." limit 1"); |
} |
} |
if ($_REQUEST["action"] == "logout") |
{ |
$this->LogoutUser(); |
$this->SetMessage("Vous êtes maintenant déconnecté !"); |
$this->Redirect($this->href()); |
} |
else if ($user = $this->GetUser()) |
{ |
// is user trying to update? |
if ($_REQUEST["action"] == "update") |
{ |
$this->Query("update ".$this->config["common_table_prefix"]."users set ". |
"email = '".mysql_escape_string($_POST["email"])."', ". |
"doubleclickedit = '".mysql_escape_string($_POST["doubleclickedit"])."', ". |
"show_comments = '".mysql_escape_string($_POST["show_comments"])."', ". |
"revisioncount = '".mysql_escape_string($_POST["revisioncount"])."', ". |
"changescount = '".mysql_escape_string($_POST["changescount"])."', ". |
"motto = '".mysql_escape_string($_POST["motto"])."' ". |
"where name = '".$user["name"]."' limit 1"); |
$this->SetUser(LoadUser($user["name"])); |
// forward |
$this->SetMessage("Paramètres sauvegardés !"); |
$this->Redirect($this->href()); |
} |
if ($_REQUEST["action"] == "changepass") |
{ |
// check password |
$password = $_POST["password"]; |
if (preg_match("/ /", $password)) $error = "Les espaces ne sont pas permis dans les mots de passe."; |
else if (strlen($password) < 5) $error = "Password too short."; |
else if ($user["password"] != md5($_POST["oldpass"])) $error = "Mauvais mot de passe."; |
else |
{ |
$this->Query("update ".$this->config["common_table_prefix"]."users set "."password = md5('".mysql_escape_string($password)."') "."where name = '".$user["name"]."'"); |
$this->SetMessage("Mot de passe changé !"); |
$user["password"]=md5($password); |
$this->SetUser($user); |
$this->Redirect($this->href()); |
} |
} |
// user is logged in; display config form |
print($this->FormOpen()); |
?> |
<input type="hidden" name="action" value="update" /> |
<table> |
<tr> |
<td align="right"></td> |
<td>Hello, <?php echo $this->Link($user["name"]) ?>!</td> |
</tr> |
<tr> |
<td align="right">Votre adresse e-mail :</td> |
<td><input name="email" value="<?php echo htmlentities($user["email"]) ?>" size="40" /></td> |
</tr> |
<tr> |
<td align="right">Edition en Doublecliquant :</td> |
<td><input type="hidden" name="doubleclickedit" value="N" /><input type="checkbox" name="doubleclickedit" value="Y" <?php echo $user["doubleclickedit"] == "Y" ? "checked=\"checked\"" : "" ?> /></td> |
</tr> |
<tr> |
<td align="right">Montrer les commentaires par default :</td> |
<td><input type="hidden" name="show_comments" value="N" /><input type="checkbox" name="show_comments" value="Y" <?php echo $user["show_comments"] == "Y" ? "checked\"checked\"" : "" ?> /></td> |
</tr> |
<tr> |
<td align="right">Nombre maximum de derniers commentaires :</td> |
<td><input name="changescount" value="<?php echo htmlentities($user["changescount"]) ?>" size="40" /></td> |
</tr> |
<tr> |
<td align="right">Nombre maximum de versions :</td> |
<td><input name="revisioncount" value="<?php echo htmlentities($user["revisioncount"]) ?>" size="40" /></td> |
</tr> |
<tr> |
<td align="right">Votre devise :</td> |
<td><input name="motto" value="<?php echo htmlentities($user["motto"]) ?>" size="40" /></td> |
</tr> |
<tr> |
<td></td> |
<td><input type="submit" value="Mise à jour" /> <input type="button" value="Déconnection" onClick="document.location='<?php echo $this->href("", "", "action=logout"); ?>'" /></td> |
</tr> |
<?php |
print($this->FormClose()); |
print($this->FormOpen()); |
?> |
<input type="hidden" name="action" value="changepass" /> |
<tr> |
<td> </td> |
<td> </td> |
</tr> |
<tr> |
<td align="right"></td> |
<td><?php echo $this->Format("Changement de mot de passe"); ?></td> |
</tr> |
<?php |
if ($error) |
{ |
print("<tr><td></td><td><div class=\"error\">".$this->Format($error)."</div></td></tr>\n"); |
} |
?> |
<tr> |
<td align="right">Votre ancien mot de passe :</td> |
<td><input type="password" name="oldpass" size="40" /></td> |
</tr> |
<tr> |
<td align="right">Nouveau mot de passe :</td> |
<td><input type="password" name="password" size="40" /></td> |
</tr> |
<tr> |
<td></td> |
<td><input type="submit" value="Changer" size="40" /></td> |
</tr> |
</table> |
<?php |
print($this->FormClose()); |
} |
else |
{ |
// user is not logged in |
// is user trying to log in or register? |
if ($_REQUEST["action"] == "login") |
{ |
// if user name already exists, check password |
if ($existingUser = LoadUser($_POST["name"])) |
{ |
// check password |
if ($existingUser["password"] == md5($_POST["password"])) |
{ |
$this->SetUser($existingUser, $_POST["remember"]); |
$this->Redirect($this->href()); |
} |
else |
{ |
$error = "Mauvais mot de passe !"; |
} |
} |
// otherwise, create new account |
else |
{ |
$name = trim($_POST["name"]); |
$email = trim($_POST["email"]); |
$password = $_POST["password"]; |
$confpassword = $_POST["confpassword"]; |
// check if name is WikkiName style |
if (!$this->IsWikiName($name)) $error = "Votre nom d'utilisateur dois être formaté en NomWiki."; |
else if (!$email) $error = "Vous devez spécifier une adresse e-mail."; |
else if (!preg_match("/^.+?\@.+?\..+$/", $email)) $error = "Ceci ne ressemble pas à une adresse e-mail."; |
else if ($confpassword != $password) $error = "Les mots de passe n'étaient pas identiques"; |
else if (preg_match("/ /", $password)) $error = "Les espaces ne sont pas permis dans un mot de passe."; |
else if (strlen($password) < 5) $error = "Mot de passe trop court. Un mot de passe doit contenir au minimum 5 caractères alphanumériques."; |
else |
{ |
$this->Query("insert into ".$this->config["common_table_prefix"]."users set ". |
"signuptime = now(), ". |
"name = '".mysql_escape_string($name)."', ". |
"email = '".mysql_escape_string($email)."', ". |
"password = md5('".mysql_escape_string($_POST["password"])."')"); |
// log in |
$this->SetUser(LoadUser($name)); |
// forward |
$this->Redirect($this->href()); |
} |
} |
} |
print($this->FormOpen()); |
?> |
<input type="hidden" name="action" value="login" /> |
<table> |
<tr> |
<td align="right"></td> |
<td><?php echo $this->Format("Si vous êtes déjà enregistré, identifiez-vous ici"); ?></td> |
</tr> |
<?php |
if ($error) |
{ |
print("<tr><td></td><td><div class=\"error\">".$this->Format($error)."</div></td></tr>\n"); |
} |
?> |
<tr> |
<td align="right">Votre NomWiki :</td> |
<td><input name="name" size="40" value="<?php echo $name ?>" /></td> |
</tr> |
<tr> |
<td align="right">Mot de passe (5 caractères minimum) :</td> |
<td><input type="password" name="password" size="40" /> |
<input type="hidden" name="remember" value="0" /><input type="checkbox" name="remember" value="1" /> <?php echo $this->Format("Se souvenir de moi.") ?> </td> |
</tr> |
<tr> |
<td></td> |
<td><input type="submit" value="Identification" size="40" /></td> |
</tr> |
<tr> |
<td align="right"></td> |
<td width="500"><?php echo $this->Format("Les champs suivants sont à remplir si vous vous identifiez pour la première fois (vous créérez ainsi un compte)"); ?></td> |
</tr> |
<tr> |
<td align="right">Confirmation du mot de passe :</td> |
<td><input type="password" name="confpassword" size="40" /></td> |
</tr> |
<tr> |
<td align="right">Adresse e-mail :</td> |
<td><input name="email" size="40" value="<?php echo $email ?>" /></td> |
</tr> |
<tr> |
<td></td> |
<td><input type="submit" value="Nouveau compte" size="40" /></td> |
</tr> |
</table> |
<?php |
print($this->FormClose()); |
} |
?> |
/branches/livraison_menes/wikini/actions/recentchanges.php |
---|
New file |
0,0 → 1,76 |
<?php |
/* |
recentchanges.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2002 Patrick PAUL |
Copyright 2003 Eric DELORD |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
// Which is the max number of pages to be shown ? |
if ($max = $this->GetParameter("max")) |
{ |
if ($max=="last") $max=50; else $last = (int) $max; |
} |
elseif ($user = $this->GetUser()) |
{ |
$max = $user["changescount"]; |
} |
else |
{ |
$max = 50; |
} |
// Show recently changed pages |
if ($pages = $this->LoadRecentlyChanged($max)) |
{ |
if ($this->GetParameter("max")) |
{ |
foreach ($pages as $i => $page) |
{ |
// echo entry |
echo "(",$page["time"],") (",$this->ComposeLinkToPage($page["tag"], "revisions", "historique", 0),") ",$this->ComposeLinkToPage($page["tag"], "", "", 0)," . . . . ",$this->Format($page["user"]),"<br />\n" ; |
} |
} |
else |
{ |
$curday=''; |
foreach ($pages as $i => $page) |
{ |
// day header |
list($day, $time) = explode(" ", $page["time"]); |
if ($day != $curday) |
{ |
if ($curday) echo "<br />\n" ; |
echo "<b>$day :</b><br />\n" ; |
$curday = $day; |
} |
// echo entry |
echo " (",$time,") (",$this->ComposeLinkToPage($page["tag"], "revisions", "historique", 0),") ",$this->ComposeLinkToPage($page["tag"], "", "", 0)," . . . . ",$this->Format($page["user"]),"<br />\n" ; |
} |
} |
} |
?> |
/branches/livraison_menes/wikini/actions/textsearch.php |
---|
New file |
0,0 → 1,106 |
<?php |
/* |
textsearch.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002 Patrick PAUL |
Copyright 2004 Jean Christophe ANDRÉ |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
// label à afficher devant la zone de saisie |
$label = $this->GetParameter('label', 'Ce que vous souhaitez chercher : '); |
// largeur de la zone de saisie |
$size = $this->GetParameter('size', '40'); |
// texte du bouton |
$button = $this->GetParameter('button', 'Chercher'); |
// texte à chercher |
$phrase = $this->GetParameter('phrase', false); |
// séparateur entre les éléments trouvés |
$separator = $this->GetParameter('separator', false); |
// se souvenir si c'était un paramètre de l'action ou du CGI |
$paramPhrase = $phrase; |
// récupérer le paramètre du CGI le cas échéant |
if (!isset($_REQUEST['phrase'])) $_REQUEST['phrase'] = ''; |
if (!$phrase) $phrase = $_REQUEST['phrase']; |
// s'il y a un paramètre d'action "phrase", on affiche uniquement le résultat |
// dans le cas contraire, présenter une zone de saisie |
if (!$paramPhrase) |
{ |
echo $this->FormOpen('', '', 'get'); |
if ($label) |
{ |
echo $this->Format($label), ' '; |
} |
echo '<input name="phrase" size="', htmlspecialchars($size), '" value="', htmlentities($phrase), '" />'; |
if ($button) |
{ |
echo ' <input type="submit" value="', htmlspecialchars($button), '" />'; |
} |
echo "\n", $this->FormClose(); |
} |
if ($phrase) |
{ |
if ($results = $this->FullTextSearch($phrase)) |
{ |
if ($separator) |
{ |
$separator = htmlspecialchars($separator); |
if (!$paramPhrase) |
{ |
echo '<p>Résultat(s) de la recherche de "', htmlspecialchars($phrase), '" : '; |
} |
foreach ($results as $i => $page) |
{ |
if ($i > 0) echo $separator; |
echo $this->ComposeLinkToPage($page['tag']); |
} |
if (!$paramPhrase) |
{ |
echo '</p>', "\n"; |
} |
} |
else |
{ |
echo '<p><strong>Résultat(s) de la recherche de "', htmlspecialchars($phrase), '" :</strong></p>', "\n", |
'<ol>', "\n"; |
foreach ($results as $i => $page) |
{ |
echo "<li>", $this->ComposeLinkToPage($page["tag"]), "</li>\n"; |
} |
echo "</ol>\n"; |
} |
} |
else |
{ |
if (!$paramPhrase) |
{ |
echo "<p>Aucun résultat pour \"", htmlspecialchars($phrase), "\". :-(</p>"; |
} |
} |
} |
?> |
/branches/livraison_menes/wikini/actions/trail.php |
---|
New file |
0,0 → 1,102 |
<?php |
/* |
trail.php : Permet d'afficher des liens "Page Suivante" "Sommaire" "Page Precedente" dans une page |
Copyright 2003 Eric FELDSTEIN |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
/* |
* Cette action permet de lier des pages entre elle via une page contenant la liste |
* ordonnées de ces pages. L'action affiche des liens de navigation permettant de |
* passer à la page suivante ou précédente ou de revenir au sommaire. |
* |
* @param toc string nom de la page contenant la liste ordonnée des pages à liées entre elles |
*/ |
/* La page sommaire doit contenir une liste de pages. Le premier mot de chaque élément |
de la liste doit être le nom d'une page du wiki, donc un mot wiki ou un lien force |
exemple de page sommaire: |
===Sommaire=== |
IntroductionAuProjet : présentation du projet. |
[[AnalyseProjet Analyse]] : analyse des besoins |
-BesoinDesUtilisateurs |
-ContraintesTechniques |
OutilsEtNormes |
Texte texte texte texte texte texte texte texte texte texte |
texte texte texte texte texte texte texte texte texte texte texte |
texte texte texte texte texte texte texte texte texte texte texte texte |
*/ |
//echo $this->Format("===Action Trail==="); |
$sommaire = $this->GetParameter("toc"); |
if (!$sommaire) { |
echo $this->Format("//Indiquez le nom de la page sommaire, paramètre 'toc'//."); |
}else{ |
//chargement de la page sommaire |
$tocPage = $this->LoadPage($sommaire); |
//analyse de la page sommaire pour récupérer la liste des pages |
//recuperation de la liste |
if (preg_match_all("/\n[\t ]+(.*)/",$tocPage["body"],$tocListe)){ |
//analyse de chaque ligne de la liste pour recupérer la page cible |
$currentPageIndex = NULL; |
foreach ($tocListe[1] as $line){ |
//suppression d'un signe de liste eventuel |
$line = trim(preg_replace("/^([A-Za-z0-9]+\)|-)/","",$line)); |
//recuperation du 1er mot |
$line = preg_replace("/^(\[\[.*\]\]|[A-Za-z0-9]+)\s*(.*)$/","$1",$line); |
//ajout a la liste des pages si le 1er mot est un lien force ou un mot wiki |
if (preg_match("/\[\[.*\]\]/",$line,$match)|$this->IsWikiName($line)){ |
$pages[] = $line; |
//regarde si la page ajoute a la liste est la page courante |
if (strcasecmp($this->GetPageTag(),$line)==0){ |
$currentPageIndex = count($pages)-1; |
}else { //traite le cas des lien force |
if (preg_match("/\[\[(.*:)?".$this->GetPageTag()."(\s.*)?\]\]$/",$line)) { |
$currentPageIndex = count($pages)-1; |
} |
} |
} |
}//foreach |
} |
//ecriture des liens Page Précedente/sommaire/page suivante |
if ($currentPageIndex>0) { |
$PrevPage = $pages[$currentPageIndex-1]; |
$btnPrev = "<span class=\"trail_button\">".$this->Format("<< $PrevPage")."</span>"; |
}else{ |
$btnPrev = " "; |
} |
$btnTOC = "<span class=\"trail_button\">".$this->Format($sommaire)."</span>"; |
if ($currentPageIndex < (count($pages)-1)){ |
$NextPage = $pages[$currentPageIndex+1]; |
$btnNext = "<span class=\"trail_button\">".$this->Format("$NextPage >>")."</span>"; |
}else{ |
$btnNext = " "; |
} |
echo "<table class=\"trail_table\" width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"5\">\n"; |
echo " <tr>\n"; |
echo " <td align=\"left\" width=\"35%\">$btnPrev</td>\n"; |
echo " <td align=\"center\">$btnTOC</td>\n"; |
echo " <td align=\"right\" width=\"35%\">$btnNext</td>\n"; |
echo " </tr>\n"; |
echo "</table>\n"; |
} |
?> |
/branches/livraison_menes/wikini/actions/findpage.php |
---|
New file |
0,0 → 1,0 |
The unfinished FindPage action. |
/branches/livraison_menes/wikini/actions/mychanges.php |
---|
New file |
0,0 → 1,118 |
<?php |
/* |
mychanges.php |
Copyright (c) 2003, Carlo Zottmann |
Copyright 2003 David DELON |
Copyright 2003 Charles NEPOTE |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
if ($user = $this->GetUser()) |
{ |
$my_edits_count = 0; |
if (($bydate = $this->GetParameter("bydate"))) |
{ |
echo "<b>Liste des pages que vous avez modifiées, triée par date de modification.</b><br /><br />\n"; |
if ($pages = $this->LoadAll("SELECT tag, time FROM ".$this->config["table_prefix"]."pages WHERE user = '".mysql_escape_string($this->UserName())."' AND tag NOT LIKE 'Comment%' ORDER BY time ASC, tag ASC")) |
{ |
foreach ($pages as $page) |
{ |
$edited_pages[$page["tag"]] = $page["time"]; |
} |
arsort($edited_pages); |
foreach ($edited_pages as $page["tag"] => $page["time"]) |
{ |
// day header |
list($day, $time) = explode(" ", $page["time"]); |
if ($day != $curday) |
{ |
if ($curday) echo "<br />\n"; |
echo "<b>$day:</b><br />\n"; |
$curday = $day; |
} |
// echo entry |
echo " ($time) (",$this->ComposeLinkToPage($page["tag"], "revisions", "history", 0),") ",$this->ComposeLinkToPage($page["tag"], "", "", 0),"<br />\n"; |
$my_edits_count++; |
} |
if ($my_edits_count == 0) |
{ |
echo "<i>Vous n'avez pas modifié de page.</i>"; |
} |
} |
else |
{ |
echo "<i>Aucune page trouvée.</i>"; |
} |
} |
else |
{ |
echo "<b>Liste des pages que vous avez modifiées, triée par ordre alphabétique.</b><br /><br />\n"; |
if ($pages = $this->LoadAll("SELECT tag, time FROM ".$this->config["table_prefix"]."pages WHERE user = '".mysql_escape_string($this->UserName())."' AND tag NOT LIKE 'Comment%' ORDER BY tag ASC, time DESC")) |
{ |
foreach ($pages as $page) |
{ |
if ($last_tag != $page["tag"]) { |
$last_tag = $page["tag"]; |
$firstChar = strtoupper($page["tag"][0]); |
if (!preg_match("/[A-Z,a-z]/", $firstChar)) { |
$firstChar = "#"; |
} |
if ($firstChar != $curChar) { |
if ($curChar) echo "<br />\n"; |
echo "<b>$firstChar</b><br />\n"; |
$curChar = $firstChar; |
} |
// echo entry |
echo " (",$page["time"],") (",$this->ComposeLinkToPage($page["tag"], "revisions", "history", 0),") ",$this->ComposeLinkToPage($page["tag"], "", "", 0),"<br />\n"; |
$my_edits_count++; |
} |
} |
if ($my_edits_count == 0) |
{ |
echo "<i>Vous n'avez pas modifié de page.</i>"; |
} |
} |
else |
{ |
echo "<i>Aucune page trouvée.</i>"; |
} |
} |
} |
else |
{ |
echo "<i>Vous n'êtes pas identifié : impossible d'afficher la liste des pages que vous avez modifiées.</i>"; |
} |
?> |
/branches/livraison_menes/wikini/actions/test.php |
---|
New file |
0,0 → 1,0 |
I'm a test! |
/branches/livraison_menes/wikini/actions/orphanedpages.php |
---|
New file |
0,0 → 1,35 |
<?php |
/* |
orphanedpages.php |
Copyright 2002, 2003 David DELON |
Copyright 2002 Charles NEPOTE |
Copyright 2002 Patrick PAUL |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
if ($pages = $this->LoadOrphanedPages()) |
{ |
foreach ($pages as $page) |
{ |
echo $this->ComposeLinkToPage($page["tag"], "", "", 0),"<br />\n" ; |
} |
} |
else |
{ |
echo "<i>Pas de pages orphelines</i>" ; |
} |
?> |
/branches/livraison_menes/wikini/actions/recentlycommented.php |
---|
New file |
0,0 → 1,76 |
<?php |
/* |
recentlycommented.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003, 2004 Charles NEPOTE |
Copyright 2002 Patrick PAUL |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
// Which is the max number of pages to be shown ? |
if ($max = $this->GetParameter("max")) |
{ |
if ($max=="last") $max=50; else $last = (int) $max; |
} |
else |
{ |
$max = 50; |
} |
// Show recently commented pages |
if ($pages = $this->LoadRecentlyCommented($max)) |
{ |
if ($this->GetParameter("max")) |
{ |
foreach ($pages as $page) |
{ |
// echo entry |
echo "(",$page["comment_time"],") <a href=\"",$this->href("", $page["tag"], "show_comments=1"),"#",$page["comment_tag"],"\">",$page["tag"],"</a> . . . . dernier commentaire par ",$this->Format($page["comment_user"]),"<br />\n" ; |
} |
} |
else |
{ |
$curday=''; |
foreach ($pages as $page) |
{ |
// day header |
list($day, $time) = explode(" ", $page["comment_time"]); |
if ($day != $curday) |
{ |
if ($curday) echo "<br />\n" ; |
echo "<b>$day :</b><br />\n" ; |
$curday = $day; |
} |
// echo entry |
echo " (",$time,") <a href=\"",$this->href("", $page["tag"], "show_comments=1"),"#",$page["comment_tag"],"\">",$page["tag"],"</a> . . . . dernier commentaire par ",$this->Format($page["comment_user"]),"<br />\n" ; |
} |
} |
} |
else |
{ |
echo "<i>Aucune page n'a été commentée récemment.</i>" ; |
} |
?> |
/branches/livraison_menes/wikini/actions/include.php |
---|
New file |
0,0 → 1,55 |
<?php |
/* |
include.php : Permet d'inclure une page Wiki dans un autre page |
Copyright 2003 Eric FELDSTEIN |
Copyright 2003 Charles NEPOTE |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
/* Paramètres : |
-- page : nom wiki de la page a inclure (obligatoire) |
-- class : nom de la classe de style à inclure (facultatif) |
*/ |
// récuperation du parametres |
$incPageName = $this->GetParameter("page"); |
// TODO : améliorer le traitement des classes |
if ($this->GetParameter("class")) { |
$classes=''; |
$array_classes = explode(" ", $this->GetParameter("class")); |
foreach ($array_classes as $c) { $classes = $classes . "include_" . $c . " "; } |
} |
// Affichage de la page ou d'un message d'erreur |
if (empty($incPageName)) { |
echo $this->Format("//Le paramètre \"page\" est manquant.//"); |
} else { |
if (eregi("^".$incPageName."$",$this->GetPageTag())) { |
echo $this->Format("//Impossible à une page de s'inclure dans elle même.//"); |
} else { |
if (!$this->HasAccess("read",$incPageName)){ |
echo $this->Format("//Lecture de la page inclue $page non autorisée.//"); |
} else { |
$incPage = $this->LoadPage($incPageName); |
$output = $this->Format($incPage["body"]); |
if ($classes) echo "<div class=\"", $classes,"\">\n", $output, "</div>\n"; |
else echo $output; |
} |
} |
} |
?> |
/branches/livraison_menes/wikini/actions/recentcomments.php |
---|
New file |
0,0 → 1,54 |
<?php |
/* |
recentcomments.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002 Charles NEPOTE |
Copyright 2002 Patrick PAUL |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
if ($comments = $this->LoadRecentComments()) |
{ |
foreach ($comments as $comment) |
{ |
// day header |
list($day, $time) = explode(" ", $comment["time"]); |
if ($day != $curday) |
{ |
if ($curday) echo "<br />\n" ; |
echo "<b>$day:</b><br />\n" ; |
$curday = $day; |
} |
// echo entry |
echo " (",$comment["time"],") <a href=\"",$this->href("", $comment["comment_on"], "show_comments=1"),"#",$comment["tag"],"\">",$comment["comment_on"],"</a> . . . . ",$this->Format($comment["user"]),"<br />\n" ; |
} |
} |
else |
{ |
echo "<i>Pas de commentaires récents.</i>" ; |
} |
?> |
/branches/livraison_menes/wikini/actions/attachfm.php |
---|
New file |
0,0 → 1,38 |
<?php |
/* |
attachfm.php |
Code original de ce fichier : Eric FELDSTEIN |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2003,2004 Eric FELDSTEIN |
Copyright 2003 Jean-Pascal MILCENT |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/* |
*/ |
$url = $this->href('filemanager',$this->GetPageTag()); |
echo '<a href="'.$url.'"><span class="attachfm"><span>Gestion des fichiers attachés</span></span></a>'; |
?> |
/branches/livraison_menes/wikini/handlers/page/show.php |
---|
New file |
0,0 → 1,170 |
<?php |
/* |
show.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2003 Eric DELORD |
Copyright 2003 Eric FELDSTEIN |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
?> |
<div class="page"> |
<?php |
if ($HasAccessRead=$this->HasAccess("read")) |
{ |
if (!$this->page) |
{ |
echo "Cette page n'existe pas encore, voulez vous la <a href=\"".$this->href("edit")."\">créer</a> ?" ; |
} |
else |
{ |
// comment header? |
if ($this->page["comment_on"]) |
{ |
echo "<div class=\"commentinfo\">Ceci est un commentaire sur ",$this->ComposeLinkToPage($this->page["comment_on"], "", "", 0),", posté par ",$this->Format($this->page["user"])," à ",$this->page["time"],"</div>"; |
} |
if ($this->page["latest"] == "N") |
{ |
echo "<div class=\"revisioninfo\">Ceci est une version archivée de <a href=\"",$this->href(),"\">",$this->GetPageTag(),"</a> à ",$this->page["time"],".</div>"; |
} |
// display page |
echo $this->Format($this->page["body"], "wakka"); |
// if this is an old revision, display some buttons |
if (($this->page["latest"] == "N") && $this->HasAccess("write")) |
{ |
$latest = $this->LoadPage($this->tag); |
?> |
<br /> |
<?php echo $this->FormOpen("edit") ?> |
<input type="hidden" name="previous" value="<?php echo $latest["id"] ?>"> |
<input type="hidden" name="body" value="<?php echo htmlentities($this->page["body"]) ?>"> |
<input type="submit" value="Rééditer cette version archivée"> |
<?php echo $this->FormClose(); ?> |
<?php |
} |
} |
} |
else |
{ |
echo "<i>Vous n'êtes pas autorisé à lire cette page</i>" ; |
} |
?> |
<hr class="hr_clear" /> |
</div> |
<?php |
if ($HasAccessRead) |
{ |
// load comments for this page |
$comments = $this->LoadComments($this->tag); |
// store comments display in session |
$tag = $this->GetPageTag(); |
if (!isset($_SESSION["show_comments"][$tag])) |
$_SESSION["show_comments"][$tag] = ($this->UserWantsComments() ? "1" : "0"); |
if (isset($_REQUEST["show_comments"])){ |
switch($_REQUEST["show_comments"]) |
{ |
case "0": |
$_SESSION["show_comments"][$tag] = 0; |
break; |
case "1": |
$_SESSION["show_comments"][$tag] = 1; |
break; |
} |
} |
// display comments! |
if ($this->page && $_SESSION["show_comments"][$tag]) |
{ |
// display comments header |
?> |
<div class="commentsheader"> |
Commentaires [<a href="<?php echo $this->href("", "", "show_comments=0") ?>">Cacher commentaires/formulaire</a>] |
</div> |
<?php |
// display comments themselves |
if ($comments) |
{ |
foreach ($comments as $comment) |
{ |
echo "<a name=\"",$comment["tag"],"\"></a>\n" ; |
echo "<div class=\"comment\">\n" ; |
echo $this->Format($comment["body"]),"\n" ; |
echo "<div class=\"commentinfo\">\n-- ",$this->Format($comment["user"])," (".$comment["time"],")\n</div>\n" ; |
echo "</div>\n" ; |
} |
} |
// display comment form |
echo "<div class=\"commentform\">\n" ; |
if ($this->HasAccess("comment")) |
{ |
?> |
Ajouter un commentaire à cette page:<br /> |
<?php echo $this->FormOpen("addcomment"); ?> |
<textarea name="body" rows="6" style="width: 100%"></textarea><br /> |
<input type="submit" value="Ajouter Commentaire" accesskey="s"> |
<?php echo $this->FormClose(); ?> |
<?php |
} |
echo "</div>\n" ; |
} |
else |
{ |
?> |
<div class="commentsheader"> |
<?php |
switch (count($comments)) |
{ |
case 0: |
echo "Il n'y a pas de commentaire sur cette page." ; |
break; |
case 1: |
echo "Il y a un commentaire sur cette page." ; |
break; |
default: |
echo "Il y a ",count($comments)," commentaires sur cette page." ; |
} |
?> |
[<a href="<?php echo $this->href("", "", "show_comments=1") ?>">Afficher commentaires/formulaire</a>] |
</div> |
<?php |
} |
} |
echo $this->Footer(); |
?> |
/branches/livraison_menes/wikini/handlers/page/revisions.php |
---|
New file |
0,0 → 1,86 |
<?php |
/* |
revisions.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2003 Eric FELDSTEIN |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
?> |
<div class="page"> |
<?php |
// load revisions for this pageif |
if ($this->HasAccess("read")) { |
$output=''; |
if ($pages = $this->LoadRevisions($this->tag)) |
{ |
$output .= $this->FormOpen("diff", "", "post"); |
$output .= "<table border=\"0\" cellspacing=\"0\" cellpadding=\"1\">\n"; |
$output .= "<tr>\n"; |
$output .= "<td><input type=\"submit\" value=\"Voir Différences\" /></td>"; |
$output .= "<td><input type=\"checkbox\" name=\"fastdiff\"/>\n".$this->Format("Affichage simplifié")."</td>"; |
$output .= "</tr>\n"; |
$output .= "</table>\n"; |
$output .= "<table border=\"0\" cellspacing=\"0\" cellpadding=\"1\">\n"; |
if ($user = $this->GetUser()) |
{ |
$max = $user["revisioncount"]; |
} |
else |
{ |
$max = 20; |
} |
$c = 0; |
foreach ($pages as $page) |
{ |
$c++; |
if (($c <= $max) || !$max) |
{ |
$output .= "<tr>"; |
$output .= "<td><input type=\"radio\" name=\"a\" value=\"".$page["id"]."\" ".($c == 1 ? "checked=\"checked\"" : "")." /></td>"; |
$output .= "<td><input type=\"radio\" name=\"b\" value=\"".$page["id"]."\" ".($c == 2 ? "checked=\"checked\"" : "")." /></td>"; |
$output .= "<td> <a href=\"".$this->href("show")."&time=".urlencode($page["time"])."\">".$page["time"]."</a></td>"; |
$output .= "<td> by ".$this->Format($page["user"])."</td>"; |
$output .= "</tr>\n"; |
} |
} |
$output .= "</table>\n".$this->FormClose()."\n"; |
} |
echo $output ; |
} |
else |
{ |
echo "<i>Vous n'avez pas accès à cette page.</i>" ; |
} |
?> |
</div> |
<?php echo $this->Footer(); ?> |
/branches/livraison_menes/wikini/handlers/page/acls.php |
---|
New file |
0,0 → 1,128 |
<?php |
/* |
acls.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2003 Eric FELDSTEIN |
Copyright 2003 Jean-Pascal MILCENT |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
?> |
<div class="page"> |
<?php |
if ($this->UserIsOwner()) |
{ |
if ($_POST) |
{ |
// store lists |
$this->SaveAcl($this->GetPageTag(), "read", $_POST["read_acl"]); |
$this->SaveAcl($this->GetPageTag(), "write", $_POST["write_acl"]); |
$this->SaveAcl($this->GetPageTag(), "comment", $_POST["comment_acl"]); |
$message = "Droits d\'accès mis à jour ";//$message = "Access control lists updated"; |
// change owner? |
if ($newowner = $_POST["newowner"]) |
{ |
$this->SetPageOwner($this->GetPageTag(), $newowner); |
$message .= " et changement du propriétaire. Nouveau propriétaire : ".$newowner;//$message .= " and gave ownership to ".$newowner; |
} |
// redirect back to page |
$this->SetMessage($message."!"); |
$this->Redirect($this->Href()); |
} |
else |
{ |
// load acls |
$readACL = $this->LoadAcl($this->GetPageTag(), "read"); |
$writeACL = $this->LoadAcl($this->GetPageTag(), "write"); |
$commentACL = $this->LoadAcl($this->GetPageTag(), "comment"); |
// show form |
?> |
<h3>Liste des droits d'accès de la page <?php echo $this->ComposeLinkToPage($this->GetPageTag()) ?></h3><!-- Access Control Lists for--> |
<br /> |
<?php echo $this->FormOpen("acls") ?> |
<table border="0" cellspacing="0" cellpadding="0"> |
<tr> |
<td valign="top" style="padding-right: 20px"> |
<b>Droits de lecture :</b><br /><!-- Read ACL:--> |
<textarea name="read_acl" rows="4" cols="20"><?php echo $readACL["list"] ?></textarea> |
</td> |
<td valign="top" style="padding-right: 20px"> |
<b>Droits d'écriture :</b><br /><!-- Write ACL:--> |
<textarea name="write_acl" rows="4" cols="20"><?php echo $writeACL["list"] ?></textarea> |
</td> |
<td valign="top" style="padding-right: 20px"> |
<b>Droits des commentaires :</b><br /><!-- Comments ACL:--> |
<textarea name="comment_acl" rows="4" cols="20"><?php echo $commentACL["list"] ?></textarea> |
</td> |
</tr> |
<tr> |
<td colspan="3"> |
<b>Changer le propriétaire :</b><br /><!-- Set Owner:--> |
<select name="newowner"> |
<option value="">Ne rien modifier</option><!-- Don't change--> |
<option value=""></option> |
<?php |
if ($users = $this->LoadUsers()) |
{ |
foreach($users as $user) |
{ |
echo "<option value=\"",htmlentities($user["name"]),"\">",$user["name"],"</option>\n"; |
} |
} |
?> |
</select> |
</td> |
</tr> |
<tr> |
<td colspan="3"> |
<br /> |
<input type="submit" value="Enregistrer" style="width: 120px" accesskey="s" /><!-- Store ACLs--> |
<input type="button" value="Annuler" onclick="history.back();" style="width: 120px" /><!-- Cancel --> |
</td> |
</tr> |
</table> |
<?php |
echo$this->FormClose(); |
} |
} |
else |
{ |
echo"<i>Vous n'êtes pas le propriétaire de cette page.</i>"; |
//echo"<i>You're not the owner of this page.</i>"; |
} |
?> |
</div> |
<?php echo $this->Footer(); ?> |
/branches/livraison_menes/wikini/handlers/page/upload.php |
---|
New file |
0,0 → 1,55 |
<?php |
/* |
upload.php |
Code original de ce fichier : Eric FELDSTEIN |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2003,2004 Eric FELDSTEIN |
Copyright 2003 Jean-Pascal MILCENT |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
# Execute l'upload des fichiers lier par l'action {{attach}} |
# Necessite le fichier actions/attach.php pour fonctionner |
# voir actions/attach.php ppour la documentation |
# copyrigth Eric Feldstein 2003-2004 |
//vérification de sécurité |
if (!WIKINI_VERSION) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
?> |
<div class="page"> |
<?php |
if (!class_exists('attach')){ |
include($this->GetConfigValue('action_path').'/attach.class.php'); |
} |
$att = new attach($this); |
$att->doUpload(); |
unset($att); |
?> |
</div> |
<?php echo $this->Footer(); ?> |
/branches/livraison_menes/wikini/handlers/page/claim.php |
---|
New file |
0,0 → 1,46 |
<?php |
/* |
claim.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2003 Eric FELDSTEIN |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
// only claim ownership if this page has no owner, and if user is logged in. |
if ($this->page && !$this->GetPageOwner() && $this->GetUser()) |
{ |
$this->SetPageOwner($this->GetPageTag(), $this->GetUserName()); |
$this->SetMessage("Vous êtes maintenant le propriétaire de cette page"); |
} |
$this->Redirect($this->href()); |
echo $this->Footer(); |
?> |
/branches/livraison_menes/wikini/handlers/page/edit.php |
---|
New file |
0,0 → 1,144 |
<?php |
/* |
edit.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2002, 2003 Patrick PAUL |
Copyright 2003 Eric FELDSTEIN |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
?> |
<div class="page"> |
<?php |
if ($this->HasAccess("write") && $this->HasAccess("read")) |
{ |
$output=''; |
if ($_POST) |
{ |
// only if saving: |
if ($_POST["submit"] == "Sauver") |
{ |
// check for overwriting |
if ($this->page) |
{ |
if ($this->page["id"] != $_POST["previous"]) |
{ |
$error = "ALERTE : ". |
"Cette page a été modifiée par quelqu'un d'autre pendant que vous l'éditiez.<br />\n". |
"Veuillez copier vos changements et rééditer cette page.\n"; |
} |
} |
// store |
if (!$error) |
{ |
$body = str_replace("\r", "", $_POST["body"]); |
// test si la nouvelle page est differente de la précédente |
if(rtrim($body)==rtrim($this->page["body"])) { |
$this->SetMessage("Cette page n\'a pas été enregistrée car elle n\'a subi aucune modification."); |
$this->Redirect($this->href()); |
} |
// add page (revisions) |
$this->SavePage($this->tag, $body); |
// now we render it internally so we can write the updated link table. |
$this->ClearLinkTable(); |
$this->StartLinkTracking(); |
$dummy = $this->Header(); |
$dummy .= $this->Format($body); |
$dummy .= $this->Footer(); |
$this->StopLinkTracking(); |
$this->WriteLinkTable(); |
$this->ClearLinkTable(); |
// forward |
$this->Redirect($this->href()); |
} |
} |
} |
// fetch fields |
if (!$previous = $_POST["previous"]) $previous = $this->page["id"]; |
if (!$body = $_POST["body"]) $body = $this->page["body"]; |
// preview? |
if ($_POST["submit"] == "Aperçu") |
{ |
$output .= |
"<div class=\"prev_alert\"><strong>Aperçu</strong></div>\n". |
$this->Format($body)."\n\n". |
$this->FormOpen("edit"). |
"<input type=\"hidden\" name=\"previous\" value=\"".$previous."\" />\n". |
"<input type=\"hidden\" name=\"body\" value=\"".htmlentities($body)."\" />\n". |
"<br />\n". |
"<input name=\"submit\" type=\"submit\" value=\"Sauver\" accesskey=\"s\" />\n". |
"<input name=\"submit\" type=\"submit\" value=\"Rééditer \" accesskey=\"p\" />\n". |
"<input type=\"button\" value=\"Annulation\" onclick=\"document.location='".$this->href("")."';\" />\n". |
$this->FormClose()."\n"; |
} |
else |
{ |
// display form |
if ($error) |
{ |
$output .= "<div class=\"error\">$error</div>\n"; |
} |
// append a comment? |
if ($_REQUEST["appendcomment"]) |
{ |
$body = trim($body)."\n\n----\n\n--".$this->UserName()." (".strftime("%c").")"; |
} |
require_once("ACeditor.buttonsBar.php"); |
$output .= |
$this->FormOpen("edit"). |
"<input type=\"hidden\" name=\"previous\" value=\"".$previous."\" />\n".$ACbuttonsBar. |
"<textarea onkeydown=\"fKeyDown()\" name=\"body\" cols=\"60\" rows=\"40\" wrap=\"soft\" class=\"edit\">\n". |
htmlspecialchars($body). |
"\n</textarea><br />\n". |
($this->config["preview_before_save"] ? "" : "<input name=\"submit\" type=\"submit\" value=\"Sauver\" accesskey=\"s\" />\n"). |
"<input name=\"submit\" type=\"submit\" value=\"Aperçu\" accesskey=\"p\" />\n". |
"<input type=\"button\" value=\"Annulation\" onclick=\"document.location='".$this->href("")."';\" />\n". |
$this->FormClose(); |
} |
echo $output; |
} |
else |
{ |
echo "<i>Vous n'avez pas accès en écriture à cette page !</i>\n"; |
} |
?> |
<hr class="hr_clear" /> |
</div> |
<?php echo $this->Footer(); ?> |
/branches/livraison_menes/wikini/handlers/page/raw.php |
---|
New file |
0,0 → 1,45 |
<?php |
/* |
raw.php |
Copyright 2002 David DELON |
Copyright 2003 Eric FELDSTEIN |
Copyright 2003 Charles NEPOTE |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
if ($this->HasAccess("read")) |
{ |
if (!$this->page) |
{ |
return; |
} |
else |
{ |
header("Content-type: text/plain"); |
// display raw page |
echo $this->page["body"]; |
} |
} |
else |
{ |
return; |
} |
?> |
/branches/livraison_menes/wikini/handlers/page/deletepage.php |
---|
New file |
0,0 → 1,53 |
<?php |
/* |
deletepage.php |
Copyright 2002 David DELON |
Copyright 2003 Eric FELDSTEIN |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
?> |
<div class="page"> |
<?php |
if ($this->UserIsOwner()) |
{ |
if ($pages = $this->IsOrphanedPage($this->GetPageTag())) |
{ |
foreach ($pages as $page) |
{ |
$this->DeleteOrphanedPage($this->GetPageTag()); |
} |
} |
else |
{ |
echo"<i>Cette page n'est pas orpheline.</i>"; |
} |
} |
else |
{ |
echo"<i>Vous n'êtes pas le propriétaire de cette page.</i>"; |
} |
?> |
</div> |
<?php echo $this->Footer(); ?> |
/branches/livraison_menes/wikini/handlers/page/referrers.php |
---|
New file |
0,0 → 1,86 |
<?php |
/* |
referrers.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2003 Eric FELDSTEIN |
Copyright 2003 Jean-Pascal MILCENT |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
?> |
<div class="page"> |
<?php |
if ($global = $_REQUEST["global"]) |
{ |
$title = "Sites faisant référence à ce wiki (<a href=\"".$this->href("referrers_sites", "", "global=1")."\">voir la liste des domaines</a>) :"; |
$referrers = $this->LoadReferrers(); |
} |
else |
{ |
$title = "Pages externes faisant référence à ".$this->ComposeLinkToPage($this->GetPageTag()). |
($this->GetConfigValue("referrers_purge_time") ? " (depuis ".($this->GetConfigValue("referrers_purge_time") == 1 ? "24 heures" : $this->GetConfigValue("referrers_purge_time")." jours").")" : "")." (<a href=\"".$this->href("referrers_sites")."\">voir la liste des domaines</a>) :"; |
$referrers = $this->LoadReferrers($this->GetPageTag()); |
} |
echo "<b>$title</b><br /><br />\n" ; |
if ($referrers) |
{ |
{ |
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n" ; |
foreach ($referrers as $referrer) |
{ |
echo "<tr>" ; |
echo "<td width=\"30\" align=\"right\" valign=\"top\" style=\"padding-right: 10px\">",$referrer["num"],"</td>" ; |
echo "<td valign=\"top\"><a href=\"",$referrer["referrer"],"\">",$referrer["referrer"],"</a></td>" ; |
echo "</tr>\n" ; |
} |
echo "</table>\n" ; |
} |
} |
else |
{ |
echo "<i>Aucune <acronym tilte=\"Uniform Resource Locator (adresse web)\">URL</acronym> ne fait référence à cette page.</i><br />\n" ; |
} |
if ($global) |
{ |
echo "<br />[<a href=\"",$this->href("referrers_sites"),"\">Voir les domaines faisant référence à ",$this->GetPageTag()," seulement</a> | <a href=\"",$this->href("referrers"),"\">Voir les références à ",$this->GetPageTag()," seulement</a>]" ; |
} |
else |
{ |
echo "<br />[<a href=\"",$this->href("referrers_sites", "", "global=1"),"\">Voir tous les domaines faisant référence </a> | <a href=\"",$this->href("referrers", "", "global=1"),"\">Voir toutes les références </a>]" ; |
} |
?> |
</div> |
<?php echo $this->Footer(); ?> |
/branches/livraison_menes/wikini/handlers/page/slide_show.php |
---|
New file |
0,0 → 1,233 |
<?php |
/* |
Handler "slide_show" pour WikiNi version WikiNi 0.4.1rc et supérieurs. |
Développé par Charles Népote. |
Version 0.08 du 26/04/2004. |
Licence GPL. |
Par défaut il utilise les classes de style suivantes : |
.slide { font-size: 160%; margin: 5%; background-color: #FFFFFF; padding: 30px; border: 1px inset; line-height: 1.5; } |
.slide UL, LI { font-size: 100%; } |
.slide LI LI { font-size: 90% } |
.sl_nav p { text-decoration: none; text-align: right; font-size: 80%; line-height: 0.4; } |
.sl_nav A { text-decoration: none; } |
.sl_nav a:hover { color: #CF8888 } |
.sum { font-size: 8px; } |
Pour modifier ces styles il faut créer un fichier "slideshow.css" contenant les styles modifiés. |
Le fichier "slideshow.css" sera reconnu automatiquement. |
*/ |
// On teste si le script n'est pas appelé en direct |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) |
{ |
die ("accès direct interdit"); |
} |
// On teste si l'utilisateur peut lire la page |
if (!$this->HasAccess("read")) |
{ |
return; |
} |
else |
{ |
// On teste si la page existe |
if (!$this->page) |
{ |
return; |
} |
else |
{ |
/* |
Exemple de page : |
(1) Présentation xxxxxxxxxxxxxx |
===== (2) Titre ===== |
Diapo 2. |
===== (3) Titre ===== |
Diapo 3. |
===== (4) Titre ===== |
Diapo 4. |
===== (5) Titre ===== |
Diapo 5. |
===== (6) Titre ===== |
Diapo 6. |
===== (7) Titre ===== |
Diapo 7. |
Autre exemple : |
===== (1) Titre ===== |
Diapo 1. |
===== (2) Titre ===== |
Diapo 2. |
===== (3) Titre ===== |
Diapo 3. |
===== (4) Titre ===== |
Diapo 4. |
===== (5) Titre ===== |
Diapo 5. |
===== (6) Titre ===== |
Diapo 6. |
===== (7) Titre ===== |
Diapo 7. |
*/ |
// |
// découpe la page |
$body_f = $this->format($this->page["body"]); |
$body = preg_split('/(.*<h2>.*<\/h2>)/',$body_f,-1,PREG_SPLIT_DELIM_CAPTURE); |
if ($_REQUEST["debug"] == "1") print_r("<div style=\"display: none\">".$body."</div>"); |
// Si la première diapositive commence par un titre de niveau 1 |
if (preg_match('/^<h2>.*<\/h2>/', $body_f)) $major = "0"; |
else $major = "1"; |
$user = $this->GetUser(); // echo $this->GetUser(); |
// On teste toutes les paramètres du handler "slide_show" ; s'il n'y en a pas, c'est le paramètre "slide=1" qui est invoqué par défaut |
/* |
switch ($_REQUEST["method"]) |
{ |
case "export": |
export(); |
break; |
case "show": |
showSlide(); |
break; |
default: |
showSlide(); |
break; |
} |
*/ |
//if ($_REQUEST["export"]) { return; } |
if (!$body) |
{ |
return; |
} |
else |
{ |
// Si on ne précise pas de paramètre, on affiche par défaut la première diapo |
if (!$_REQUEST["slide"] or $_REQUEST["slide"] == "1") $slide = "1"; |
else $slide = $_REQUEST["slide"]; |
// Affiche l'en-tête |
echo |
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"; |
echo |
"<html>\n\n\n", |
"<head>\n", |
"<title>", $this->GetWakkaName(), ":", $this->GetPageTag(), "</title>\n", |
"<meta name=\"robots\" content=\"noindex, nofollow\" />\n", |
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n"; |
echo |
"<style type=\"text/css\" media=\"all\"> @import \"wakka.css\";</style>\n"; |
// Teste s'il existe une feuille de style externe, sinon utilise des styles par défaut |
if (!file_exists("slideshow.css")) |
{ |
echo "<style type=\"text/css\">\n", |
".slide { font-size: 160%; margin: 5%; background-color: #FFFFFF; padding: 30px; border: 1px inset; line-height: 1.5; }\n", |
".slide UL, LI { font-size: 100%; }\n", |
".slide LI LI { font-size: 90% }\n", |
".sl_nav p { text-decoration: none; text-align: right; font-size: 80%; line-height: 0.4; }\n", |
".sl_nav A { text-decoration: none; }\n", |
".sl_nav a:hover { color: #CF8888 }\n", |
".sum { font-size: 8px; }\n", |
"</style>\n"; |
} |
else |
{ |
echo "<style type=\"text/css\" media=\"all\"> @import \"slideshow.css\";</style>\n"; |
} |
echo |
"</head>\n\n\n"; |
// Affiche le corps de la page |
echo |
"<body "; |
echo (!$user || ($user["doubleclickedit"] == 'Y')) ? "ondblclick=\"document.location='".$this->href("edit")."';\" " : "", ">\n"; |
// Affichage du sommaire [à compléter] |
/* |
if ($_REQUEST["sum"] == "on") |
{ |
echo "<ul class=\"sum\">\n"; |
if ($major = "1") echo "<li>", $this->format($body[0]), "</li>\n"; |
foreach ($body as $title_sum) |
{ |
$i = $i + 1; |
$type = gettype($i/2); |
// Ne retourne que les 50 premiers caractères du titre |
$title_sum = substr($title_sum, 0, 50); |
if ($type == "integer") |
{ |
echo "<li>",$this->format($title_sum),"</li>\n"; |
} |
} |
echo "</ul>\n\n"; |
} |
*/ |
// Affichage du menu de navigation |
echo |
"<div class=\"sl_nav\">\n", |
"<p>"; |
if ($slide !== "1") |
echo |
"<a href=\"",$this->href(),"/slide_show&slide=",$_REQUEST['slide']-1,"\"><< précédent</a>", |
" :: <a href=\"",$this->href(),"/slide_show&slide=1\">[début]</a>\n"; |
echo " :: "; |
if ($body[($slide)*2-($nb*2)+2] or $slide == "1") |
echo "<a href=\"",$this->href(),"/slide_show&slide=",$slide+1,"\">suivant >></a>\n"; |
echo |
"</p>\n"; |
echo "<p><a href=\"",$this->href(),"/edit\">Éditer </a> :: <a href=\"",$this->href(),"\">[]-></a></p>\n"; |
echo |
"</div>\n\n"; |
echo |
"<div class=\"slide\">\n"; |
// Si c'est la première diapositive |
if ($slide == "1" and $major == "1") |
{ |
echo $body[0], "<br /><br />"; |
} |
// A partir de la deuxième diapositive |
else |
{ |
echo |
$body[($slide*2)-($major*2)-1].$body[($slide*2)-($major*2)],"\n"; |
echo "\n"; |
} |
echo |
"</div>\n\n"; |
echo |
"</body>\n", |
"</html>"; |
} |
} |
} |
?> |
/branches/livraison_menes/wikini/handlers/page/xml.php |
---|
New file |
0,0 → 1,39 |
<?php |
/* |
xml.php |
Copyright 2003 David DELON |
Copyright 2003 Eric FELDSTEIN |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
header("Content-type: text/xml"); |
if ($HasAccessRead=$this->HasAccess("read")) |
{ |
// TODO : Return an empty xml ? |
// TODO : Return an error read (noaccess) xml ? |
if ($this->page) |
{ |
// display page |
echo $this->Format($this->page["body"], "action") ; |
} |
} |
?> |
/branches/livraison_menes/wikini/handlers/page/resetstyle.php |
---|
New file |
0,0 → 1,27 |
<?php |
// Handler resetstyle.php version 0.2 du 16/03/2004 |
// pour WikiNi 0.4.1rc (=> à la version du 200403xx) et supérieurs |
// Par Charles Népote (c) 2004 |
// Licence GPL |
// Fonctionnement |
// |
// Cet handler permet à l'utilisateur de revenir à la feuille de style par défaut du site. |
// Techniquement : |
// Usage : |
// http://example.org/PageTest/resetstyle |
// A compléter (peut-être un jour) : |
// |
// -- détecter le fichier par défaut via une variable de configuration |
// |
$this->SetPersistentCookie('sitestyle','wakka',1); |
header("Location: ".$this->href()); |
?> |
/branches/livraison_menes/wikini/handlers/page/referrers_sites.php |
---|
New file |
0,0 → 1,98 |
<?php |
/* |
wakka.php |
Copyright (c) 2003, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2003 Eric FELDSTEIN |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
?> |
<div class="page"> |
<?php |
if ($global = $_REQUEST["global"]) |
{ |
$title = "Domaines faisant référence à ce wiki (<a href=\"".$this->href("referrers", "", "global=1")."\">voir la liste des pages externes</a>):"; |
$referrers = $this->LoadReferrers(); |
} |
else |
{ |
$title = "Domaines faisant référence à ".$this->Link($this->GetPageTag()). |
($this->GetConfigValue("referrers_purge_time") ? " (depuis ".($this->GetConfigValue("referrers_purge_time") == 1 ? "24 heures" : $this->GetConfigValue("referrers_purge_time")." jours").")" : "")." (<a href=\"".$this->href("referrers")."\">voir la liste des pages externes</a>):"; |
$referrers = $this->LoadReferrers($this->GetPageTag()); |
} |
echo "<b>$title</b><br /><br />\n" ; |
if ($referrers) |
{ |
for ($a = 0; $a < count($referrers); $a++) |
{ |
$temp_parse_url = parse_url($referrers[$a]["referrer"]); |
$temp_parse_url = ($temp_parse_url["host"] != "") ? strtolower(preg_replace("/^www\./Ui", "", $temp_parse_url["host"])) : "inconnu"; |
if (isset($referrer_sites["$temp_parse_url"])) |
{ |
$referrer_sites["$temp_parse_url"] += $referrers[$a]["num"]; |
} |
else |
{ |
$referrer_sites["$temp_parse_url"] = $referrers[$a]["num"]; |
} |
} |
array_multisort($referrer_sites, SORT_DESC, SORT_NUMERIC); |
reset($referrer_sites); |
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n" ; |
foreach ($referrer_sites as $site => $site_count) |
{ |
echo "<tr>" ; |
echo "<td width=\"30\" align=\"right\" valign=\"top\" style=\"padding-right: 10px\">" , $site_count, "</td>" ; |
echo "<td valign=\"top\">" , (($site != "unknown") ? "<a href=\"http://$site\">$site</a>" : $site) , "</td>" ; |
echo "</tr>\n" ; |
} |
echo "</table>\n" ; |
} |
else |
{ |
echo "<i>None</i><br />\n" ; |
} |
if ($global) |
{ |
echo "<br />[<a href=\"",$this->href("referrers_sites"),"\">Voir les domaines faisant référence à ",$this->GetPageTag()," seulement</a> | <a href=\"",$this->href("referrers"),"\">Voir les références ",$this->GetPageTag()," seulement</a>]"; |
} |
else |
{ |
echo "<br />[<a href=\"",$this->href("referrers_sites", "", "global=1"),"\">Voir tous les domaines faisant référence </a> | <a href=\"",$this->href("referrers", "", "global=1"),"\">Voir toutes les références </a>]" ; |
} |
?> |
</div> |
<?php echo $this->Footer(); ?> |
/branches/livraison_menes/wikini/handlers/page/diff.orig.php |
---|
New file |
0,0 → 1,39 |
<div class="page"> |
<?php |
/* NOTE: This is a really cheap way to do it. I think it may be more intelligent to write the two |
pages to temporary files and run /usr/bin/diff over them. Then again, maybe not. */ |
// load pages |
$pageA = $this->LoadPageById($_REQUEST["a"]); |
$pageB = $this->LoadPageById($_REQUEST["b"]); |
// prepare bodies |
$bodyA = explode("\n", $pageA["body"]); |
$bodyB = explode("\n", $pageB["body"]); |
$added = array_diff($bodyA, $bodyB); |
$deleted = array_diff($bodyB, $bodyA); |
$output .= "<b>Comparing <a href=\"".$this->href("", "", "time=".urlencode($pageA["time"]))."\">".$pageA["time"]."</a> to <a href=\"".$this->href("", "", "time=".urlencode($pageB["time"]))."\">".$pageB["time"]."</a></b><br />\n"; |
if ($added) |
{ |
// remove blank lines |
$output .= "<br />\n<b>Additions:</b><br />\n"; |
$output .= "<div class=\"additions\">".$this->Format(implode("\n", $added))."</div>"; |
} |
if ($deleted) |
{ |
$output .= "<br />\n<b>Deletions:</b><br />\n"; |
$output .= "<div class=\"deletions\">".$this->Format(implode("\n", $deleted))."</div>"; |
} |
if (!$added && !$deleted) |
{ |
$output .= "<br />\nNo differences."; |
} |
print($output); |
?> |
</div> |
/branches/livraison_menes/wikini/handlers/page/download.php |
---|
New file |
0,0 → 1,48 |
<?php |
/* |
download.php |
Code original de ce fichier : Eric FELDSTEIN |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2003,2004 Eric FELDSTEIN |
Copyright 2003 Jean-Pascal MILCENT |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
# Execute le download des fichiers lier par l'action {{attach}} |
# Necessite le fichier actions/attach.php pour fonctionner |
# voir actions/attach.php ppour la documentation |
# copyrigth Eric Feldstein 2003-2004 |
//vérification de sécurité |
if (!WIKINI_VERSION) { |
die ("accès direct interdit"); |
} |
if (!class_exists('attach')){ |
include($this->GetConfigValue('action_path').'/attach.class.php'); |
} |
$att = new attach($this); |
$att->doDownload(); |
unset($att); |
?> |
/branches/livraison_menes/wikini/handlers/page/diff.php |
---|
New file |
0,0 → 1,1003 |
<?php |
/* |
diff.php |
Copyright (C) 1992 Free Software Foundation, Inc. Francois Pinard <pinard@iro.umontreal.ca>. |
Copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org> |
Copyright 2002,2003,2004 David DELON |
Copyright 2002 Patrick PAUL |
Copyright 2003 Eric FELDSTEIN |
This program 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 of the License, or |
(at your option) any later version. |
This program 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 program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
original diff.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
?> |
<div class="page"> |
<?php |
if ($this->HasAccess("read")) |
{ |
// If asked, call original diff |
if ($_REQUEST["fastdiff"]) { |
/* NOTE: This is a really cheap way to do it. I think it may be more intelligent to write the two pages to temporary files and run /usr/bin/diff over them. Then again, maybe not. */ |
// load pages |
$pageA = $this->LoadPageById($_REQUEST["a"]); |
$pageB = $this->LoadPageById($_REQUEST["b"]); |
// prepare bodies |
$bodyA = explode("\n", $pageA["body"]); |
$bodyB = explode("\n", $pageB["body"]); |
$added = array_diff($bodyA, $bodyB); |
$deleted = array_diff($bodyB, $bodyA); |
$output .= "<b>Comparaison de <a href=\"".$this->href("", "", "time=".urlencode($pageA["time"]))."\">".$pageA["time"]."</a> à <a href=\"".$this->href("", "", "time=".urlencode($pageB["time"]))."\">".$pageB["time"]."</a></b><br />\n"; |
if ($added) |
{ |
// remove blank lines |
$output .= "<br />\n<b>Ajouts:</b><br />\n"; |
$output .= "<div class=\"additions\">".$this->Format(implode("\n", $added))."</div>"; |
} |
if ($deleted) |
{ |
$output .= "<br />\n<b>Suppressions:</b><br />\n"; |
$output .= "<div class=\"deletions\">".$this->Format(implode("\n", $deleted))."</div>"; |
} |
if (!$added && !$deleted) |
{ |
$output .= "<br />\nPas de différences."; |
} |
echo $output; |
} |
else { |
// load pages |
$pageA = $this->LoadPageById($_REQUEST["b"]); |
$pageB = $this->LoadPageById($_REQUEST["a"]); |
// extract text from bodies |
$textA = $pageA["body"]; |
$textB = $pageB["body"]; |
$sideA = new Side($textA); |
$sideB = new Side($textB); |
$bodyA=''; |
$sideA->split_file_into_words($bodyA); |
$bodyB=''; |
$sideB->split_file_into_words($bodyB); |
// diff on these two file |
$diff = new Diff(split("\n",$bodyA),split("\n",$bodyB)); |
// format output |
$fmt = new DiffFormatter(); |
$sideO = new Side($fmt->format($diff)); |
$resync_left=0; |
$resync_right=0; |
$count_total_right=$sideB->getposition() ; |
$sideA->init(); |
$sideB->init(); |
$output=''; |
while (1) { |
$sideO->skip_line(); |
if ($sideO->isend()) { |
break; |
} |
if ($sideO->decode_directive_line()) { |
$argument=$sideO->getargument(); |
$letter=$sideO->getdirective(); |
switch ($letter) { |
case 'a': |
$resync_left = $argument[0]; |
$resync_right = $argument[2] - 1; |
break; |
case 'd': |
$resync_left = $argument[0] - 1; |
$resync_right = $argument[2]; |
break; |
case 'c': |
$resync_left = $argument[0] - 1; |
$resync_right = $argument[2] - 1; |
break; |
} |
$sideA->skip_until_ordinal($resync_left); |
$sideB->copy_until_ordinal($resync_right,$output); |
// deleted word |
if (($letter=='d') || ($letter=='c')) { |
$sideA->copy_whitespace($output); |
$output .="@@"; |
$sideA->copy_word($output); |
$sideA->copy_until_ordinal($argument[1],$output); |
$output .="@@"; |
} |
// inserted word |
if ($letter == 'a' || $letter == 'c') { |
$sideB->copy_whitespace($output); |
$output .="££"; |
$sideB->copy_word($output); |
$sideB->copy_until_ordinal($argument[3],$output); |
$output .="££"; |
} |
} |
} |
$sideB->copy_until_ordinal($count_total_right,$output); |
$sideB->copy_whitespace($output); |
$out=$this->Format($output); |
echo $out; |
} |
} |
else{ |
echo "<i>Vous n'êtes pas autorisé à lire cette page.</i>" ; |
} |
// Side : a string for wdiff |
class Side { |
var $position; |
var $cursor; |
var $content; |
var $character; |
var $directive; |
var $argument; |
var $length; |
function Side($content) { |
$this->content=$content; |
$this->position=0; |
$this->cursor=0; |
$this->directive=''; |
$this->argument=array(); |
$this->length=strlen($this->content); |
$this->character=substr($this->content,0,1); |
} |
function getposition() { |
return $this->position; |
} |
function getcharacter() { |
return $this->character; |
} |
function getdirective() { |
return $this->directive; |
} |
function getargument() { |
return $this->argument; |
} |
function nextchar() { |
$this->cursor++; |
$this->character=substr($this->content,$this->cursor,1); |
} |
function copy_until_ordinal($ordinal,&$out) { |
while ($this->position < $ordinal) { |
$this->copy_whitespace($out); |
$this->copy_word($out); |
} |
} |
function skip_until_ordinal($ordinal) { |
while ($this->position < $ordinal) { |
$this->skip_whitespace(); |
$this->skip_word(); |
} |
} |
function split_file_into_words (&$out) { |
while (!$this->isend()) { |
$this->skip_whitespace(); |
if ($this->isend()) { |
break; |
} |
$this->copy_word($out); |
$out .="\n"; |
} |
} |
function init() { |
$this->position=0; |
$this->cursor=0; |
$this->directive=''; |
$this->argument=array(); |
$this->character=substr($this->content,0,1); |
} |
function isspace($char) { |
if (ereg('[[:space:]]',$char)) { |
return true; |
} |
else { |
return false; |
} |
} |
function isdigit($char) { |
if (ereg('[[:digit:]]',$char)) { |
return true; |
} |
else { |
return false; |
} |
} |
function isend() { |
if (($this->cursor)>=($this->length)) { |
return true; |
} |
else { |
return false; |
} |
} |
function copy_whitespace(&$out) { |
while (!$this->isend() && $this->isspace($this->character)) { |
$out .=$this->character; |
$this->nextchar(); |
} |
} |
function skip_whitespace() { |
while (!$this->isend() && $this->isspace($this->character)) { |
$this->nextchar(); |
} |
} |
function skip_line() { |
while (!$this->isend() && !$this->isdigit($this->character)) { |
while (!$this->isend() && $this->character!="\n") |
$this->nextchar(); |
if($this->character=="\n") |
$this->nextchar(); |
} |
} |
function copy_word(&$out) { |
while (!$this->isend() && !($this->isspace($this->character))) { |
$out.=$this->character; |
$this->nextchar(); |
} |
$this->position++; |
} |
function skip_word() { |
while (!$this->isend() && !($this->isspace($this->character))) { |
$this->nextchar(); |
} |
$this->position++; |
} |
function decode_directive_line() { |
$value=0; |
$state=0; |
$error=0; |
while (!$error && $state < 4) { |
if ($this->isdigit($this->character)) { |
$value = 0; |
while($this->isdigit($this->character)) { |
$value = 10 * $value + $this->character - '0'; |
$this->nextchar(); |
} |
} |
else if ($state != 1 && $state != 3) |
$error = 1; |
/* Assign the proper value. */ |
$this->argument[$state] = $value; |
/* Skip the following character. */ |
switch ($state) { |
case 0: |
case 2: |
if ($this->character == ',') |
$this->nextchar(); |
break; |
case 1: |
if ($this->character == 'a' || $this->character == 'd' || $this->character == 'c') { |
$this->directive = $this->character; |
$this->nextchar(); |
} |
else |
$error = 1; |
break; |
case 3: |
if ($this->character != "\n") |
$error = 1; |
break; |
} |
$state++; |
} |
/* Complete reading of the line and return success value. */ |
while ((!$this->isend()) && ($this->character != "\n")) { |
$this->nextchar(); |
} |
if ($this->character == "\n") |
$this->nextchar(); |
return !$error; |
} |
} |
// difflib |
// |
// A PHP diff engine for phpwiki. |
// |
// Copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org> |
// You may copy this code freely under the conditions of the GPL. |
// |
// PHP3 does not have assert() |
define('USE_ASSERTS', function_exists('assert')); |
class _DiffOp { |
var $type; |
var $orig; |
var $final; |
function norig() { |
return $this->orig ? sizeof($this->orig) : 0; |
} |
function nfinal() { |
return $this->final ? sizeof($this->final) : 0; |
} |
} |
class _DiffOp_Copy extends _DiffOp { |
var $type = 'copy'; |
function _DiffOp_Copy ($orig, $final = false) { |
if (!is_array($final)) |
$final = $orig; |
$this->orig = $orig; |
$this->final = $final; |
} |
} |
class _DiffOp_Delete extends _DiffOp { |
var $type = 'delete'; |
function _DiffOp_Delete ($lines) { |
$this->orig = $lines; |
$this->final = false; |
} |
} |
class _DiffOp_Add extends _DiffOp { |
var $type = 'add'; |
function _DiffOp_Add ($lines) { |
$this->final = $lines; |
$this->orig = false; |
} |
} |
class _DiffOp_Change extends _DiffOp { |
var $type = 'change'; |
function _DiffOp_Change ($orig, $final) { |
$this->orig = $orig; |
$this->final = $final; |
} |
} |
/** |
* Class used internally by Diff to actually compute the diffs. |
* |
* The algorithm used here is mostly lifted from the perl module |
* Algorithm::Diff (version 1.06) by Ned Konz, which is available at: |
* http://www.perl.com/CPAN/authors/id/N/NE/NEDKONZ/Algorithm-Diff-1.06.zip |
* |
* More ideas are taken from: |
* http://www.ics.uci.edu/~eppstein/161/960229.html |
* |
* Some ideas are (and a bit of code) are from from analyze.c, from GNU |
* diffutils-2.7, which can be found at: |
* ftp://gnudist.gnu.org/pub/gnu/diffutils/diffutils-2.7.tar.gz |
* |
* Finally, some ideas (subdivision by NCHUNKS > 2, and some optimizations) |
* are my own. |
* |
* @author Geoffrey T. Dairiki |
* @access private |
*/ |
class _DiffEngine |
{ |
function diff ($from_lines, $to_lines) { |
$n_from = sizeof($from_lines); |
$n_to = sizeof($to_lines); |
$this->xchanged = $this->ychanged = array(); |
$this->xv = $this->yv = array(); |
$this->xind = $this->yind = array(); |
unset($this->seq); |
unset($this->in_seq); |
unset($this->lcs); |
// Skip leading common lines. |
for ($skip = 0; $skip < $n_from && $skip < $n_to; $skip++) { |
if ($from_lines[$skip] != $to_lines[$skip]) |
break; |
$this->xchanged[$skip] = $this->ychanged[$skip] = false; |
} |
// Skip trailing common lines. |
$xi = $n_from; $yi = $n_to; |
for ($endskip = 0; --$xi > $skip && --$yi > $skip; $endskip++) { |
if ($from_lines[$xi] != $to_lines[$yi]) |
break; |
$this->xchanged[$xi] = $this->ychanged[$yi] = false; |
} |
// Ignore lines which do not exist in both files. |
for ($xi = $skip; $xi < $n_from - $endskip; $xi++) |
$xhash[$from_lines[$xi]] = 1; |
for ($yi = $skip; $yi < $n_to - $endskip; $yi++) { |
$line = $to_lines[$yi]; |
if ( ($this->ychanged[$yi] = empty($xhash[$line])) ) |
continue; |
$yhash[$line] = 1; |
$this->yv[] = $line; |
$this->yind[] = $yi; |
} |
for ($xi = $skip; $xi < $n_from - $endskip; $xi++) { |
$line = $from_lines[$xi]; |
if ( ($this->xchanged[$xi] = empty($yhash[$line])) ) |
continue; |
$this->xv[] = $line; |
$this->xind[] = $xi; |
} |
// Find the LCS. |
$this->_compareseq(0, sizeof($this->xv), 0, sizeof($this->yv)); |
// Merge edits when possible |
$this->_shift_boundaries($from_lines, $this->xchanged, $this->ychanged); |
$this->_shift_boundaries($to_lines, $this->ychanged, $this->xchanged); |
// Compute the edit operations. |
$edits = array(); |
$xi = $yi = 0; |
while ($xi < $n_from || $yi < $n_to) { |
USE_ASSERTS && assert($yi < $n_to || $this->xchanged[$xi]); |
USE_ASSERTS && assert($xi < $n_from || $this->ychanged[$yi]); |
// Skip matching "snake". |
$copy = array(); |
while ( $xi < $n_from && $yi < $n_to |
&& !$this->xchanged[$xi] && !$this->ychanged[$yi]) { |
$copy[] = $from_lines[$xi++]; |
++$yi; |
} |
if ($copy) |
$edits[] = new _DiffOp_Copy($copy); |
// Find deletes & adds. |
$delete = array(); |
while ($xi < $n_from && $this->xchanged[$xi]) |
$delete[] = $from_lines[$xi++]; |
$add = array(); |
while ($yi < $n_to && $this->ychanged[$yi]) |
$add[] = $to_lines[$yi++]; |
if ($delete && $add) |
$edits[] = new _DiffOp_Change($delete, $add); |
elseif ($delete) |
$edits[] = new _DiffOp_Delete($delete); |
elseif ($add) |
$edits[] = new _DiffOp_Add($add); |
} |
return $edits; |
} |
/* Divide the Largest Common Subsequence (LCS) of the sequences |
* [XOFF, XLIM) and [YOFF, YLIM) into NCHUNKS approximately equally |
* sized segments. |
* |
* Returns (LCS, PTS). LCS is the length of the LCS. PTS is an |
* array of NCHUNKS+1 (X, Y) indexes giving the diving points between |
* sub sequences. The first sub-sequence is contained in [X0, X1), |
* [Y0, Y1), the second in [X1, X2), [Y1, Y2) and so on. Note |
* that (X0, Y0) == (XOFF, YOFF) and |
* (X[NCHUNKS], Y[NCHUNKS]) == (XLIM, YLIM). |
* |
* This function assumes that the first lines of the specified portions |
* of the two files do not match, and likewise that the last lines do not |
* match. The caller must trim matching lines from the beginning and end |
* of the portions it is going to specify. |
*/ |
function _diag ($xoff, $xlim, $yoff, $ylim, $nchunks) { |
$flip = false; |
if ($xlim - $xoff > $ylim - $yoff) { |
// Things seems faster (I'm not sure I understand why) |
// when the shortest sequence in X. |
$flip = true; |
list ($xoff, $xlim, $yoff, $ylim) |
= array( $yoff, $ylim, $xoff, $xlim); |
} |
if ($flip) |
for ($i = $ylim - 1; $i >= $yoff; $i--) |
$ymatches[$this->xv[$i]][] = $i; |
else |
for ($i = $ylim - 1; $i >= $yoff; $i--) |
$ymatches[$this->yv[$i]][] = $i; |
$this->lcs = 0; |
$this->seq[0]= $yoff - 1; |
$this->in_seq = array(); |
$ymids[0] = array(); |
$numer = $xlim - $xoff + $nchunks - 1; |
$x = $xoff; |
for ($chunk = 0; $chunk < $nchunks; $chunk++) { |
if ($chunk > 0) |
for ($i = 0; $i <= $this->lcs; $i++) |
$ymids[$i][$chunk-1] = $this->seq[$i]; |
$x1 = $xoff + (int)(($numer + ($xlim-$xoff)*$chunk) / $nchunks); |
for ( ; $x < $x1; $x++) { |
$line = $flip ? $this->yv[$x] : $this->xv[$x]; |
if (empty($ymatches[$line])) |
continue; |
$matches = $ymatches[$line]; |
reset($matches); |
while (list ($junk, $y) = each($matches)) |
if (empty($this->in_seq[$y])) { |
$k = $this->_lcs_pos($y); |
USE_ASSERTS && assert($k > 0); |
$ymids[$k] = $ymids[$k-1]; |
break; |
} |
while (list ($junk, $y) = each($matches)) { |
if ($y > $this->seq[$k-1]) { |
USE_ASSERTS && assert($y < $this->seq[$k]); |
// Optimization: this is a common case: |
// next match is just replacing previous match. |
$this->in_seq[$this->seq[$k]] = false; |
$this->seq[$k] = $y; |
$this->in_seq[$y] = 1; |
} |
else if (empty($this->in_seq[$y])) { |
$k = $this->_lcs_pos($y); |
USE_ASSERTS && assert($k > 0); |
$ymids[$k] = $ymids[$k-1]; |
} |
} |
} |
} |
$seps[] = $flip ? array($yoff, $xoff) : array($xoff, $yoff); |
$ymid = $ymids[$this->lcs]; |
for ($n = 0; $n < $nchunks - 1; $n++) { |
$x1 = $xoff + (int)(($numer + ($xlim - $xoff) * $n) / $nchunks); |
$y1 = $ymid[$n] + 1; |
$seps[] = $flip ? array($y1, $x1) : array($x1, $y1); |
} |
$seps[] = $flip ? array($ylim, $xlim) : array($xlim, $ylim); |
return array($this->lcs, $seps); |
} |
function _lcs_pos ($ypos) { |
$end = $this->lcs; |
if ($end == 0 || $ypos > $this->seq[$end]) { |
$this->seq[++$this->lcs] = $ypos; |
$this->in_seq[$ypos] = 1; |
return $this->lcs; |
} |
$beg = 1; |
while ($beg < $end) { |
$mid = (int)(($beg + $end) / 2); |
if ( $ypos > $this->seq[$mid] ) |
$beg = $mid + 1; |
else |
$end = $mid; |
} |
USE_ASSERTS && assert($ypos != $this->seq[$end]); |
$this->in_seq[$this->seq[$end]] = false; |
$this->seq[$end] = $ypos; |
$this->in_seq[$ypos] = 1; |
return $end; |
} |
/* Find LCS of two sequences. |
* |
* The results are recorded in the vectors $this->{x,y}changed[], by |
* storing a 1 in the element for each line that is an insertion |
* or deletion (ie. is not in the LCS). |
* |
* The subsequence of file 0 is [XOFF, XLIM) and likewise for file 1. |
* |
* Note that XLIM, YLIM are exclusive bounds. |
* All line numbers are origin-0 and discarded lines are not counted. |
*/ |
function _compareseq ($xoff, $xlim, $yoff, $ylim) { |
// Slide down the bottom initial diagonal. |
while ($xoff < $xlim && $yoff < $ylim |
&& $this->xv[$xoff] == $this->yv[$yoff]) { |
++$xoff; |
++$yoff; |
} |
// Slide up the top initial diagonal. |
while ($xlim > $xoff && $ylim > $yoff |
&& $this->xv[$xlim - 1] == $this->yv[$ylim - 1]) { |
--$xlim; |
--$ylim; |
} |
if ($xoff == $xlim || $yoff == $ylim) |
$lcs = 0; |
else { |
// This is ad hoc but seems to work well. |
//$nchunks = sqrt(min($xlim - $xoff, $ylim - $yoff) / 2.5); |
//$nchunks = max(2,min(8,(int)$nchunks)); |
$nchunks = min(7, $xlim - $xoff, $ylim - $yoff) + 1; |
list ($lcs, $seps) |
= $this->_diag($xoff,$xlim,$yoff, $ylim,$nchunks); |
} |
if ($lcs == 0) { |
// X and Y sequences have no common subsequence: |
// mark all changed. |
while ($yoff < $ylim) |
$this->ychanged[$this->yind[$yoff++]] = 1; |
while ($xoff < $xlim) |
$this->xchanged[$this->xind[$xoff++]] = 1; |
} |
else { |
// Use the partitions to split this problem into subproblems. |
reset($seps); |
$pt1 = $seps[0]; |
while ($pt2 = next($seps)) { |
$this->_compareseq ($pt1[0], $pt2[0], $pt1[1], $pt2[1]); |
$pt1 = $pt2; |
} |
} |
} |
/* Adjust inserts/deletes of identical lines to join changes |
* as much as possible. |
* |
* We do something when a run of changed lines include a |
* line at one end and has an excluded, identical line at the other. |
* We are free to choose which identical line is included. |
* `compareseq' usually chooses the one at the beginning, |
* but usually it is cleaner to consider the following identical line |
* to be the "change". |
* |
* This is extracted verbatim from analyze.c (GNU diffutils-2.7). |
*/ |
function _shift_boundaries ($lines, &$changed, $other_changed) { |
$i = 0; |
$j = 0; |
USE_ASSERTS && assert('sizeof($lines) == sizeof($changed)'); |
$len = sizeof($lines); |
$other_len = sizeof($other_changed); |
while (1) { |
/* |
* Scan forwards to find beginning of another run of changes. |
* Also keep track of the corresponding point in the other file. |
* |
* Throughout this code, $i and $j are adjusted together so that |
* the first $i elements of $changed and the first $j elements |
* of $other_changed both contain the same number of zeros |
* (unchanged lines). |
* Furthermore, $j is always kept so that $j == $other_len or |
* $other_changed[$j] == false. |
*/ |
while ($j < $other_len && $other_changed[$j]) |
$j++; |
while ($i < $len && ! $changed[$i]) { |
USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]'); |
$i++; $j++; |
while ($j < $other_len && $other_changed[$j]) |
$j++; |
} |
if ($i == $len) |
break; |
$start = $i; |
// Find the end of this run of changes. |
while (++$i < $len && $changed[$i]) |
continue; |
do { |
/* |
* Record the length of this run of changes, so that |
* we can later determine whether the run has grown. |
*/ |
$runlength = $i - $start; |
/* |
* Move the changed region back, so long as the |
* previous unchanged line matches the last changed one. |
* This merges with previous changed regions. |
*/ |
while ($start > 0 && $lines[$start - 1] == $lines[$i - 1]) { |
$changed[--$start] = 1; |
$changed[--$i] = false; |
while ($start > 0 && $changed[$start - 1]) |
$start--; |
USE_ASSERTS && assert('$j > 0'); |
while ($other_changed[--$j]) |
continue; |
USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]'); |
} |
/* |
* Set CORRESPONDING to the end of the changed run, at the last |
* point where it corresponds to a changed run in the other file. |
* CORRESPONDING == LEN means no such point has been found. |
*/ |
$corresponding = $j < $other_len ? $i : $len; |
/* |
* Move the changed region forward, so long as the |
* first changed line matches the following unchanged one. |
* This merges with following changed regions. |
* Do this second, so that if there are no merges, |
* the changed region is moved forward as far as possible. |
*/ |
while ($i < $len && $lines[$start] == $lines[$i]) { |
$changed[$start++] = false; |
$changed[$i++] = 1; |
while ($i < $len && $changed[$i]) |
$i++; |
USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]'); |
$j++; |
if ($j < $other_len && $other_changed[$j]) { |
$corresponding = $i; |
while ($j < $other_len && $other_changed[$j]) |
$j++; |
} |
} |
} while ($runlength != $i - $start); |
/* |
* If possible, move the fully-merged run of changes |
* back to a corresponding run in the other file. |
*/ |
while ($corresponding < $i) { |
$changed[--$start] = 1; |
$changed[--$i] = 0; |
USE_ASSERTS && assert('$j > 0'); |
while ($other_changed[--$j]) |
continue; |
USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]'); |
} |
} |
} |
} |
/** |
* Class representing a 'diff' between two sequences of strings. |
*/ |
class Diff |
{ |
var $edits; |
/** |
* Constructor. |
* Computes diff between sequences of strings. |
* |
* @param $from_lines array An array of strings. |
* (Typically these are lines from a file.) |
* @param $to_lines array An array of strings. |
*/ |
function Diff($from_lines, $to_lines) { |
$eng = new _DiffEngine; |
$this->edits = $eng->diff($from_lines, $to_lines); |
} |
} |
/** |
* A class to format Diffs |
* |
* This class formats the diff in classic diff format. |
* It is intended that this class be customized via inheritance, |
* to obtain fancier outputs. |
*/ |
class DiffFormatter |
{ |
/** |
* Format a diff. |
* |
* @param $diff object A Diff object. |
* @return string The formatted output. |
*/ |
function format($diff) { |
$xi = $yi = 1; |
$block = false; |
$context = array(); |
$this->_start_diff(); |
foreach ($diff->edits as $edit) { |
if ($edit->type == 'copy') { |
if (is_array($block)) { |
if (sizeof($edit->orig) <= 0) { |
$block[] = $edit; |
} |
else{ |
$this->_block($x0, + $xi - $x0, |
$y0, + $yi - $y0, |
$block); |
$block = false; |
} |
} |
} |
else { |
if (! is_array($block)) { |
$x0 = $xi; |
$y0 = $yi; |
$block = array(); |
} |
$block[] = $edit; |
} |
if ($edit->orig) |
$xi += sizeof($edit->orig); |
if ($edit->final) |
$yi += sizeof($edit->final); |
} |
if (is_array($block)) |
$this->_block($x0, $xi - $x0, |
$y0, $yi - $y0, |
$block); |
return $this->_end_diff(); |
} |
function _block($xbeg, $xlen, $ybeg, $ylen, &$edits) { |
$this->_start_block($this->_block_header($xbeg, $xlen, $ybeg, $ylen)); |
} |
function _start_diff() { |
ob_start(); |
} |
function _end_diff() { |
$val = ob_get_contents(); |
ob_end_clean(); |
return $val; |
} |
function _block_header($xbeg, $xlen, $ybeg, $ylen) { |
if ($xlen > 1) |
$xbeg .= "," . ($xbeg + $xlen - 1); |
if ($ylen > 1) |
$ybeg .= "," . ($ybeg + $ylen - 1); |
return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg; |
} |
function _start_block($header) { |
echo $header."\n"; |
} |
} |
?> |
</div> |
<?php echo $this->Footer(); ?> |
/branches/livraison_menes/wikini/handlers/page/filemanager.php |
---|
New file |
0,0 → 1,58 |
<?php |
/* |
filemanager.php |
Code original de ce fichier : Eric FELDSTEIN |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Charles NEPOTE |
Copyright 2003,2004 Eric FELDSTEIN |
Copyright 2003 Jean-Pascal MILCENT |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
# Execute le gestion des fichiers lier par l'action {{attach}} |
# Necessite le fichier actions/attach.php pour fonctionner |
# voir actions/attach.php ppour la documentation |
# copyrigth Eric Feldstein 2003-2004 |
//vérification de sécurité |
if (!WIKINI_VERSION) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
?> |
<div class="page"> |
<?php |
if($this->UserIsOwner()){ |
if (!class_exists('attach')){ |
include($this->GetConfigValue('action_path').'/attach.class.php'); |
} |
$att = new attach($this); |
$att->doFilemanager(); |
unset($att); |
}else{ |
echo $this->Format("//Seul le propriétaire de cette page peut accéder au gestionnaire des fichiers attaché//"); |
} |
?> |
</div> |
<?php echo $this->Footer(); ?> |
/branches/livraison_menes/wikini/handlers/page/addcomment.php |
---|
New file |
0,0 → 1,71 |
<?php |
/* |
addcomment.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2003 Eric FELDSTEIN |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
//vérification de sécurité |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) { |
die ("accès direct interdit"); |
} |
echo $this->Header(); |
if ($this->HasAccess("comment")) |
{ |
// find number |
if ($latestComment = $this->LoadSingle("select tag, id from ".$this->config["table_prefix"]."pages where comment_on != '' order by id desc limit 1")) |
{ |
preg_match("/^Comment([0-9]+)$/", $latestComment["tag"], $matches); |
$num = $matches[1] + 1; |
} |
else |
{ |
$num = "1"; |
} |
$body = trim($_POST["body"]); |
if (!$body) |
{ |
$this->SetMessage("Commentaire vide -- pas de sauvegarde !"); |
} |
else |
{ |
// store new comment |
$this->SavePage("Comment".$num, $body, $this->tag); |
} |
// redirect to page |
$this->redirect($this->href()); |
} |
else |
{ |
echo"<div class=\"page\"><i>Vous n'êtes pas autorisé à commenter cette page.</i></div>\n"; |
} |
echo $this->Footer(); |
?> |
/branches/livraison_menes/wikini/setup/default.php |
---|
New file |
0,0 → 1,90 |
<form action="<?php echo myLocation() ?>?installAction=install" method="POST"> |
<table> |
<tr><td></td><td><b>Installation de WikiNi</b></td></tr> |
<?php |
/* |
default.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002 Patrick PAUL |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
if (($wakkaConfig["wakka_version"]) || ($wakkaConfig["wikini_version"])) |
{ |
if ($wakkaConfig["wikini_version"]) { |
$config=$wakkaConfig["wikini_version"]; |
} |
else { |
$config=$wakkaConfig["wakka_version"]; |
} |
echo "<tr><td></td><td>Votre système WikiNi existant a été reconnu comme étant la version ",$config,". Vous êtes sur le point de <b>mettre à jour</b> WikiNi pour la version ",WIKINI_VERSION,". Veuillez revoir vos informations de configuration ci-dessous.</td></tr>\n"; |
} |
else |
{ |
echo "<tr><td></td><td>Vous êtes sur le point d'installer WikiNi ",WIKINI_VERSION,". Veuillez configurer votre WikiNi en utilisant le formulaire suivant.</td></tr>\n"; |
} |
?> |
<tr><td></td><td><br>NOTE: Ce programme d'installation va essayer de modifier les options de configurations dans le fichier <tt>wakka.config.php</tt>, situé dans votre répertoire WikiNi. Pour que cela fonctionne, veuillez vous assurez que votre serveur a les droits d'accès en écriture pour ce fichier. Si pour une raison quelconque vous ne pouvez pas faire ça vous devrez modifier ce fichier manuellement (ce programme d'installation vous dira comment).</td></tr> |
<tr><td></td><td><br><b>Configuration de la base de données</b></td></tr> |
<tr><td></td><td>La machine sur laquelle se trouve votre serveur MySQL. En général c'est "localhost" (ie, la même machine que celle où se trouve les pages de WikiNi.).</td></tr> |
<tr><td align="right" nowrap>Machine MySQL :</td><td><input type="text" size="50" name="config[mysql_host]" value="<?php echo $wakkaConfig["mysql_host"] ?>"></td></tr> |
<tr><td></td><td>La base de données MySQL à utiliser pour WikiNi. Cette base de données doit déjà exister avant de pouvoir continuer.</td></tr> |
<tr><td align="right" nowrap>Base de données MySQL :</td><td><input type="text" size="50" name="config[mysql_database]" value="<?php echo $wakkaConfig["mysql_database"] ?>"></td></tr> |
<tr><td></td><td>Nom et mot de passe de l'utilisateur MySQL qui sera utilisé pour se connecter à votre base de données.</td></tr> |
<tr><td align="right" nowrap>Non de l'utilisateur MySQL :</td><td><input type="text" size="50" name="config[mysql_user]" value="<?php echo $wakkaConfig["mysql_user"] ?>"></td></tr> |
<tr><td align="right" nowrap>Mot de passe MySQL :</td><td><input type="password" size="50" name="config[mysql_password]" value=""></td></tr> |
<tr><td></td><td>Préfixe à utiliser pour toutes les tables utilisées par WikiNi. Ceci vous permet d'utiliser plusieurs WikiNi sur une même base de donnnées en donnant différents préfixes aux tables.</td></tr> |
<tr><td align="right" nowrap>Prefixe des tables :</td><td><input type="text" size="50" name="config[table_prefix]" value="<?php echo $wakkaConfig["table_prefix"] ?>"></td></tr> |
<tr><td></td><td><br><b>Configuration de votre site WikiNi</b></td></tr> |
<tr><td></td><td>Le nom de votre site WikiNi. Ceci est généralement un NomWiki et EstSousCetteForme.</td></tr> |
<tr><td align="right" nowrap>Le nom de votre WikiNi :</td><td><input type="text" size="50" name="config[wakka_name]" value="<?php echo $wakkaConfig["wakka_name"] ?>"></td></tr> |
<tr><td></td><td>La page d'accueil de votre WikiNi. Ceci doit être un NomWiki.</td></tr> |
<tr><td align="right" nowrap>Home page:</td><td><input type="text" size="50" name="config[root_page]" value="<?php echo $wakkaConfig["root_page"] ?>"></td></tr> |
<tr><td></td><td>META Mots clefs/Description qui seront insérés dans les codes HTML.</td></tr> |
<tr><td align="right" nowrap>Mots clefs :</td><td><input type="text" size="50" name="config[meta_keywords]" value="<?php echo $wakkaConfig["meta_keywords"] ?>"></td></tr> |
<tr><td align="right" nowrap>Description :</td><td><input type="text" size="50" name="config[meta_description]" value="<?php echo $wakkaConfig["meta_description"] ?>"></td></tr> |
<tr><td></td><td><br><b>Configuration de l'URL de votre WikiNi</b><?php echo $wakkaConfig["wikini_version"] ? "" : "<br>Ceci est une nouvelle installation. Le programme d'installation va essayer de trouver les valeurs appropriées. Changez-les uniquement si vous savez ce que vous faites." ?></td></tr> |
<tr><td></td><td>L'URL de base de votre site WikiNi. Les noms des pages seront directement rajoutés à cet URL. Supprimez la partie "?wiki=" uniquement si vous utilisez la redirection (voir ci après).</td></tr> |
<tr><td align="right" nowrap>URL de base :</td><td><input type="text" size="50" name="config[base_url]" value="<?php echo $wakkaConfig["base_url"] ?>"></td></tr> |
<tr><td></td><td>Le mode "redirection automatique" doit être sélectionné uniquement si vous utilisez WikiNi avec la redirection d'URL (si vous ne savez pas ce qu'est la redirection d'URL n'activez pas cette option).</td></tr> |
<tr><td align="right" nowrap>Mode "redirection" :</td><td><input type="hidden" name="config[rewrite_mode]" value="0"><input type="checkbox" name="config[rewrite_mode]" value="1" <?php echo $wakkaConfig["rewrite_mode"] ? "checked" : "" ?>> Activation</td></tr> |
<tr><td></td><td><br><b>Options supplémentaires</b></td></tr> |
<tr><td></td><td><input type="hidden" name="config[preview_before_save]" value="0"><input type="checkbox" name="config[preview_before_save]" value="1" <?php echo $wakkaConfig["preview_before_save"] ? "checked" : "" ?>> Imposer de faire un aperçu avant de pouvoir sauver une page.</td></tr> |
<tr><td></td><td><input type="submit" value="Continuer"></td></tr> |
</table> |
</form> |
/branches/livraison_menes/wikini/setup/install.php |
---|
New file |
0,0 → 1,175 |
<?php |
/* |
install.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Patrick PAUL |
Copyright 2003 Eric FELDSTEIN |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
// fetch configuration |
$config = $_POST["config"]; |
// test configuration |
echo "<b>Test de la configuration</b><br>\n"; |
test("Test connexion MySQL ...", $dblink = @mysql_connect($config["mysql_host"], $config["mysql_user"], $config["mysql_password"])); |
test("Recherche base de données ...", @mysql_select_db($config["mysql_database"], $dblink), "La base de données que vous avez choisie n'existe pas, vous devez la créer avant d'installer WikiNi !"); |
echo "<br>\n" ; |
// do installation stuff |
if (!$version = trim($wakkaConfig["wikini_version"])) $version = "0"; |
switch ($version) |
{ |
// new installation |
case "0": |
echo "<b>Installation</b><br>\n"; |
test("Creation table page...", |
@mysql_query( |
"CREATE TABLE ".$config["table_prefix"]."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;", $dblink), "Déjà créée ?", 0); |
test("Creation table ACL ...", |
@mysql_query( |
"CREATE TABLE ".$config["table_prefix"]."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", $dblink), "Déjà créée ?", 0); |
test("Creation table link ...", |
@mysql_query( |
"CREATE TABLE ".$config["table_prefix"]."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", $dblink), "Déjà créée ?", 0); |
test("Creation table referrer ...", |
@mysql_query( |
"CREATE TABLE ".$config["table_prefix"]."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", $dblink), "Déjà créée ?", 0); |
test("Creation table user ...", |
@mysql_query( |
"CREATE TABLE ".$config["table_prefix"]."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", $dblink), "Déjà créée ?", 0); |
//insertion des pages de documentation et des pages standards |
$d = dir("setup/doc/"); |
while ($doc = $d->read()){ |
if ($doc != "." && $doc != ".." && !is_dir($doc)){ |
$pagecontent = implode ('', file("setup/doc/$doc")); |
if ($doc=='_root_page.txt'){ |
$pagename = $config["root_page"]; |
}else{ |
$pagename = substr($doc,0,strpos($doc,'.txt')); |
} |
$sql = "Select tag from ".$config["table_prefix"]."pages where tag='$pagename'"; |
// Insert documentation page if not present (a previous failed installation ?) |
if (($r=@mysql_query($sql, $dblink)) && (mysql_num_rows($r)==0)) { |
$sql = "Insert into ".$config["table_prefix"]."pages ". |
"set tag = '$pagename', ". |
"body = '".mysql_escape_string($pagecontent)."', ". |
"user = 'WikiNiInstaller', ". |
"time = now(), ". |
"latest = 'Y'"; |
test("Insertion de la page $pagename ...", @mysql_query($sql, $dblink),"?",0); |
// update table_links |
$wiki = new Wiki($config); |
$wiki->SetPage($wiki->LoadPage($pagename,"",0)); |
$wiki->ClearLinkTable(); |
$wiki->StartLinkTracking(); |
$wiki->TrackLinkTo($pagename); |
$dummy = $wiki->Header(); |
$dummy .= $wiki->Format($pagecontent); |
$dummy .= $wiki->Footer(); |
$wiki->StopLinkTracking(); |
$wiki->WriteLinkTable(); |
$wiki->ClearLinkTable(); |
} |
else |
{ |
test("Insertion de la page $pagename ...", 0 ,"Existe déjà.",0); |
} |
} |
} |
break; |
// The funny upgrading stuff. Make sure these are in order! // |
case "0.1": |
echo "<b>En cours de mise à jour de WikiNi 0.1</b><br>\n"; |
test("Just very slightly altering the pages table...", |
@mysql_query("alter table ".$config["table_prefix"]."pages add body_r text not null default '' after body", $dblink), "Already done? Hmm!", 0); |
test("Claiming all your base...", 1); |
} |
?> |
<p> |
A l'étape suivante, le programme d'installation va essayer |
d'écrire le fichier de configuration <tt><?php echo $wakkaConfigLocation ?></tt>. |
Assurez vous que le serveur web a bien le droit d'écrire dans ce fichier, sinon vous devrez le modifier manuellement. </p> |
<form action="<?php echo myLocation(); ?>?installAction=writeconfig" method="POST"> |
<input type="hidden" name="config" value="<?php echo htmlentities(serialize($config)) ?>"> |
<input type="submit" value="Continuer"> |
</form> |
/branches/livraison_menes/wikini/setup/header.php |
---|
New file |
0,0 → 1,65 |
<?php |
/* |
header.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002 Patrick PAUL |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
// stuff |
function test($text, $condition, $errorText = "", $stopOnError = 1) { |
echo "$text " ; |
if ($condition) |
{ |
echo "<span class=\"ok\">OK</span><br>\n" ; |
} |
else |
{ |
echo "<span class=\"failed\">ECHEC</span>" ; |
if ($errorText) echo ": ",$errorText ; |
echo "<br>\n" ; |
if ($stopOnError) exit; |
} |
} |
function myLocation() |
{ |
list($url, ) = explode("?", $_SERVER["REQUEST_URI"]); |
return $url; |
} |
?> |
<html> |
<head> |
<title>Installation de WikiNi</title> |
<style> |
P, BODY, TD, LI, INPUT, SELECT, TEXTAREA { font-family: Verdana; font-size: 13px; } |
INPUT { color: #880000; } |
.ok { color: #008800; font-weight: bold; } |
.failed { color: #880000; font-weight: bold; } |
A { color: #0000FF; } |
</style> |
</head> |
<body> |
/branches/livraison_menes/wikini/setup/footer.php |
---|
New file |
0,0 → 1,2 |
</body> |
</html> |
/branches/livraison_menes/wikini/setup/doc/DerniersChangements.txt |
---|
New file |
0,0 → 1,0 |
{{RecentChanges}} |
/branches/livraison_menes/wikini/setup/doc/PagesOrphelines.txt |
---|
New file |
0,0 → 1,0 |
{{OrphanedPages}} |
/branches/livraison_menes/wikini/setup/doc/ActionListPages.txt |
---|
New file |
0,0 → 1,16 |
L'action ""{{ListPages}}"" liste la totalité des pages du site. |
Pour obtenir la liste des pages du site on pourra voir également l'action [[ActionPageIndex PageIndex]]. |
L'action ""ListPages"" s'utilise avec différents paramètres : |
- ""{{ListPages}}"" : établi un IndexDesPages, liste de toutes les pages du site dans l'ordre alphabétique de leur nom, avec leur propriétaire (identique à ""{{ListPages/sort}}"" et ""{{ListPages/sort="tag"}}"") |
- ""{{ListPages/tree}}"" : établi un PlanDuSite, c'est-à-dire une liste hiérarchique des pages sur trois niveaux à partir de la page d'accueil (cette action ne liste donc pas toutes les pages du site) |
- ""{{ListPages/tree="MotWiki"}}"" : établi une liste hiérarchique des pages sur trois niveaux à partir de la page passée en paramètre, ici ""MotWiki"". |
- ""{{ListPages/sort}}"" : liste de toutes les pages du site classées par ordre alphabétique (identique à ""{{ListPages}}"" et ""{{ListPages/sort="tag"}}"") |
- ""{{ListPages/sort="time"}}"" : liste toutes les pages du site classées par ordre de dernière date de modification |
- ""{{ListPages/sort="owner"}}"" : liste de toute les pages du site classées par ordre du nom du propriétaire de la page |
- ""{{ListPages/sort="user"}}"" : liste de toutes les pages du site classées par ordre du nom du dernier utilisateur à l'avoir modifiée |
- ""{{ListPages/sort="tag"}}"" : liste de toutes les pages du site classées par ordre alphabétique (identique à ""{{ListPages}}"" et ""{{ListPages/sort}}"") |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/ActionListUsers.txt |
---|
New file |
0,0 → 1,20 |
==== Liste des comptes utilisateurs ==== |
Cette fonction permet de lister les comptes utilisateurs créés. |
La fonction est loin d'être indispensable, mais elle permet, par exemple, de connaître les nouveaux utilisateurs qui se sont inscrits pour des raisons pratiques (paramétrage) mais qui n'ont pas encore renseigné leur page personnelle. Autre exemple, on peut observer le nombre de nouveaux inscrits suite à une promotion du site, etc. |
Par défaut, cette fonction donne la liste des comptes par ordre alphabétique. Cette fonction accepte en outre le paramètre "last" permettant le tri des comptes par odre inverse de date de création. Ce dernier paramètre accepte lui-même, de surcroit, un chiffre en paramètre permettant de réduire le nombre comptes affichés. La syntaxe d'utilisation de cette "action" est donnée ci-dessous. |
""{{Listusers/last}}"" : donne la liste des derniers comptes utilisateurs |
{{listusers/last}} |
""{{Listusers/last="3"}}"" |
{{listusers/last="3"}} |
""{{Listusers/last="50"}}"" |
{{listusers/last="50"}} |
""{{Listusers}}"" : donne la liste des comptes utilisateurs par ordre alphabétique |
{{listusers}} |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/BacASable.txt |
---|
New file |
0,0 → 1,0 |
Faites vos test sur [[http://www.wikini.net WikiNi]] sur cette page |
/branches/livraison_menes/wikini/setup/doc/ActionUserSettings.txt |
---|
New file |
0,0 → 1,10 |
L'action ""{{UserSettings}}"" permet aux utilisateurs d'effectuer les actions suivantes : |
- création d'un nouveau compte |
- authentification |
- réglage des paramètres utilisateur |
- changement de mot-de-passe |
On peut la voir en action dans les ParametresUtilisateur. |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/ParametresUtilisateur.txt |
---|
New file |
0,0 → 1,0 |
{{UserSettings}} |
/branches/livraison_menes/wikini/setup/doc/ActionRedirect.txt |
---|
New file |
0,0 → 1,23 |
L'action ##""{{redirect page="PagePrincipale"}}""## permet d'être redirigé vers une autre page lorsqu'une page est demandée (ici vers la PagePrincipale). Cela permet de faire des "alias" de page, plusieurs noms différents pour une même page. |
**Synthèse des cas** où cette action peut être utile : |
- dans le cas où certains termes sont d'orthographe variable, comme par exemple Persistance of Vision - qui devient ""PoV"", ""POV"", ""PovRay"", ""POV-Ray""... et certains Wiki voient donc deux pages apparaitre pour la même chose, avec du contenu trop élaboré pour être facilement reconciliable en une seule page. |
- en cas de renommage d'une page (en fait le déplacement d'une page vers une autre page), l'ancien nom peut rediriger vers le nouveau nom ; ceci peut être particulièrement utile dans le cas où de très nombreuses pages pointe sur la page originelle, évitant ainsi de changer les liens dans chaque page |
- redirection d'une page au nom wiki disgracieux vers une page au nom wiki plus lisible ; exemples : ""SpIp"" => Spip, ""DelPhine"" => Delphine, etc. |
Une différence notable entre une inclusion et une redirection : lors d'une inclusion, le contenu de la page incluant une autre page peut être modifé, donc utiliser l'inclusion pour faire des alias de page ne me parait pas très sûr car il risque d'apparaitre des divergences de contenu si c'est la page incluant une autre page qui est modifée. Par contre, une redirection __impose__ qu'une seule page est éditable et la cohérence de contenu est donc correcte. |
===== Paramètres ===== |
Cette action accepte un seul paramètre : |
- page : paramètre obligatoire pour désigner la page vers laquelle la page est redirigée. |
===== Modification d'une page contenant l'action ##redirect## ===== |
Il faut entrer manuellement dans la barre d'adresse du navigateur l'adresse de la page + le "handler" désiré ; par exemple : |
Pour la modifier : |
- http://domaine/wakka.php?wiki=NomDeLaPage/edit |
Pour la supprimer : |
- http://domaine/wakka.php?wiki=NomDeLaPage/deletepage |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/ActionBacklinks.txt |
---|
New file |
0,0 → 1,24 |
Action permettant d'insérer la liste de toutes les pages faisant référence à la page courante. Dans cette présente page, ""{{backlinks}}"" donne ceci : |
{{BackLinks}} |
Sur la page personnelle d'un utilisateur, cette action affichera aussi les pages dont il est le propriétaire ou le dernier modificateur. |
===== Paramètres ===== |
==== Paramètre "page" ==== |
Le paramètre "page" ([[http://www.wikini.net WikiNi]] >= 0.4.1) permet de spécifier une page différente de la page courante. |
Par exemple ##""{{backlinks page="PagePrincipale"}}""## |
Ce paramètre peut être utile, par exemple : |
- pour améliorer le TableauDeBordDeCeWiki : il suffit d'ajouter la liste des pages liées à la page ""AFaire"" pour connaître les pages qui doivent faire l'objet d'un travail |
- pour consolider des données sur une seule page : par exemple la liste des pages liées aux pages ""EstUnHomme"" et ""EstUneFemme"" |
- autres ? |
==== Paramètre "exclude" ==== |
Le paramètre "exclude" ([[http://www.wikini.net WikiNi]] >= 0.4.1) permet de spécifier des pages à exclure de la liste des pages qui ont pourtant un lien vers la page de référence. |
Il est en effet parfois génant d'afficher la totalité des pages faisant référence à une page. Par exemple, la page ""AFaire"" liste la page ""CharlesNepoteVeilleSurInternet"" alors que, non seulement cette information n'a pas d'intérêt mais elle pollue en outre la lecture de cette page. Autre exemple, une page ""MamiFeres"" a intérêt par exemple à lister ""CheVal"" et ""ElePhant"" mais pas nécessairement ""AniMaux"" qui est une catégorie supérieure. Je suggère donc la création d'un paramètre exclude destiné à exclure certaines pages : par exemple : |
##""{{backlinks exclude="AniMaux"}}""## |
Le paramètre "exclude" peut contenir plusieurs noms de page séparés par des ";", par exemple : ##""{{backlinks exclude="AniMaux; PagePrincipale"}}""## |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/ActionWantedPages.txt |
---|
New file |
0,0 → 1,5 |
L'action ""{{WantedPages}}"" liste tous les MotWiki du site qui n'ont pas vu la création d'une page. |
Cette page est visible en action sur les PagesACreer. |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/ActionPageIndex.txt |
---|
New file |
0,0 → 1,7 |
L'action ""{{PageIndex}}"" liste toutes les pages classées par ordre alphabétique et regroupées par lettre. On peut la voir en action sur l'IndexDesPagesBis. |
Pour obtenir la liste des pages du site on pourra voir également l'action [[ActionListPages ListPages]]. |
Cette action ne prend aucun paramètre. |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/RechercheTexte.txt |
---|
New file |
0,0 → 1,0 |
{{TextSearch}} |
/branches/livraison_menes/wikini/setup/doc/TableauDeBordDeCeWiki.txt |
---|
New file |
0,0 → 1,14 |
Ce tableau de bord regroupe toutes les pages utiles à l'analyse et à l'animation de ce site. |
- DerniersChangements et DerniersCommentaires |
- PlanDuSite à partir de la racine |
- IndexDesPages, IndexDesPagesBis |
- PagesOrphelines |
- PagesACreer |
---- |
==== 8 derniers comptes utilisateurs ==== |
{{Listusers last="8"}} |
==== 8 dernières pages modifiées ==== |
{{recentchanges max="8"}} |
==== 5 dernières pages commentées ==== |
{{RecentlyCommented max="5"}} |
/branches/livraison_menes/wikini/setup/doc/ActionRecentChanges.txt |
---|
New file |
0,0 → 1,10 |
L'action ""{{RecentChanges}}"" affiche la liste des pages récement modifiées. Elle est illustrée dans la page DerniersChangements. |
==== Paramètres ==== |
Cette action prend en compte le paramètre "max", permettant à un utilisateur de spécifier le nombre de pages affichées. |
Par exemple ""{{recentchanges max="3"}}"" donne : |
{{recentchanges max="3"}} |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/PlanDuSite.txt |
---|
New file |
0,0 → 1,0 |
{{listpages/tree}} |
/branches/livraison_menes/wikini/setup/doc/ListeDesActionsWikini.txt |
---|
New file |
0,0 → 1,22 |
Wikini propose par défaut les "actions" suivantes. |
- ActionBacklinks |
- ActionFindpage |
- ActionInclude : inclusion d'une page au sein d'une autre |
- ActionListPages |
- ActionListUsers |
- ActionMyChanges |
- ActionMyPages |
- ActionOrphanedPages : recherche les pages qui n'ont pas de liens vers elle (par orpheline ) |
- ActionPageIndex |
- ActionRecentChanges |
- ActionRecentChangesRSS |
- ActionRecentComments |
- ActionRecentlyCommented |
- ActionRedirect : redirection d'une page vers une autre |
- ActionTextSearch : recherche d'une chaine de caractères dans l'ensemble des page de [[http://www.wikini.net WikiNi]] |
- ActionTrail : permet de lier des pages entres elles et de passer de l'une à l'autre avec un petit navigateur style "précédente/suivante" |
- ActionUserSettings |
- ActionWantedPages : liste les pages devant être écrites. |
/branches/livraison_menes/wikini/setup/doc/ActionTextSearch.txt |
---|
New file |
0,0 → 1,12 |
L'action ##""{{TextSearch}}""## permet de lister les pages contenant un ou plusieurs mots entré(s) par l'utilisateur. |
On peut la voir en action sur la page RechercheTexte. |
Cette action utilise la fonction d'indexation en texte intégral de ""MySQL"" et hérite de ses qualités et défauts : |
- la recherche est quasi instantanée |
- la recherche est limitée à des mots de 4 lettres au minimim |
- la recherche n'accepte pas de caractères génériques (ou caractères joker : ".*?", etc.) |
- la recherche n'est pas lématisée : la recherche de "protocole" ne trouvera pas "protocoles" ; la recherche de "lascif" ne trouvera pas "lascive" |
- la recherche n'est pas effectuée sur une partie de MotWiki : la recherche de "text" ne donnera pas ActionTextSearch pour résultat |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/ActionTrail.txt |
---|
New file |
0,0 → 1,38 |
L'action ##""{{trail toc="NomDePage"}}""## permet de lier des pages entres elles grace à une page de sommaire. Cette action affiche un navigateur du type "précedente/suivante" en indiquant le nom des pages précende et suivante. |
====Paramètre==== |
Le paramètre ##toc## permet d'indiquer le nom de la page contenant le liste des pages liées. |
====Configuration==== |
L'aspet des liens du navigateur est définis par deux classe CSS présente dans wakka.css : |
## |
.trail_table { line-height: 30px;} |
.trail_button { color: #993333; } |
## |
====Ecriture d'une page "toc"==== |
Cette page peut contenir n'importe quel texte. Les règles qui permettent de définir la liste des pages liées sont : |
- Le nom de la page appartient à une liste (numéroté, à bulle ou sans signe) |
- Le nom de la page est le **1er** mot de chaque élément de la liste |
- Les liens ##""[[NomPageWikiNi Nom d'une page WikiNi]]""## sont acceptés et doivent être le **1er mot** de chaque éléments de la liste. |
Un exemple de page sommaire : |
----- |
====Sommaire==== |
Texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte. |
- Page1 : texte texte texte texte texte texte texte texte texte texte texte |
- Page2 : texte texte texte texte texte texte texte texte texte texte texte texte texte |
- [[Page3 Vers la page 3]] : texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte |
- Page31 : texte texte texte texte texte texte texte texte texte texte texte |
- Page32 : texte texte texte texte texte texte texte texte texte texte texte |
- Page4 : texte texte texte texte texte texte texte texte texte texte texte |
texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte. |
- Page5 : texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte |
- Page6 : texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte |
----- |
{{trail toc="ListeDesActionsWikiNi"}} |
/branches/livraison_menes/wikini/setup/doc/NomWiki.txt |
---|
New file |
0,0 → 1,3 |
Un NomWiki est un nom qui est écrit ""CommeCela"". |
Un NomWiki est transformé automatiquement en lien. Si la page correspondante n'existe pas, un '?' est affiché à côté du mot. |
/branches/livraison_menes/wikini/setup/doc/AideWikiNi.txt |
---|
New file |
0,0 → 1,5 |
=====Les pages d'aide sur [[http://www.wikini.net WikiNi]]===== |
- ReglesDeFormatage : résumé des syntaxes ""WikNi"" permettant la mise en forme du texte. |
- ListeDesActionsWikini : liste des actions disponible dans [[http://www.wikini.net WikiNi]]. |
- ControlerLAccesAuxPages : explique comment gérer les droits d'accès aux page de [[http://www.wikini.net WikiNi]]. |
/branches/livraison_menes/wikini/setup/doc/_root_page.txt |
---|
New file |
0,0 → 1,3 |
Bienvenue ! Cliquez sur le lien "Editer cette page" au bas de la page pour démarrer. |
Pages utiles: PagesOrphelines, PagesACreer, RechercheTexte, ReglesDeFormatage, AideWikiNi, TableauDeBordDeCeWiki. |
/branches/livraison_menes/wikini/setup/doc/ActionOrphanedPages.txt |
---|
New file |
0,0 → 1,11 |
L'action ""{{OrphanedPages}}"" liste toutes les pages orphelines, c'est-à-dire toutes les pages n'étant reliées à aucune autre page. |
Cette action est utilisée ici dans la page : PagesOrphelines. |
Elle peut servir : |
- à localiser les pages qui ont besoin d'être reliées à d'autres pages |
- à localiser les pages rendues inutiles et que l'on peut alors effacer |
Cette page ne comporte aucun paramètre. |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/ActionRecentlyCommented.txt |
---|
New file |
0,0 → 1,10 |
L'action ""{{RecentlyCommented}}"" permet d'afficher la liste des pages ayant été récement commentées. Cette action est visible sur la page DerniersCommentaires. |
==== Paramètres ==== |
Cette action accepte un seul paramètre, le paramètre "max" permettant de spécifier le nombre maximum de pages récemment commentées à afficher. |
Par exemple ""{{RecentlyCommented max="3"}}"" va donner le résultat suivant : |
{{RecentlyCommented max="3"}} |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/ReglesDeFormatage.txt |
---|
New file |
0,0 → 1,61 |
==== Guide des règles de formatage ==== |
Les 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.) |
Tout texte placé entre deux guillemets doubles - " - est présenté tel que. |
Vous pouvez effectuer vos propres test dans le BacASable : c'est un endroit fait pour ça. |
Règles de base : |
""**Texte en gras !** ---""> **Texte en gras !** |
""//Texte en italique.// ---""> //Texte en italique.// |
""Texte __souligné__ ! ---""> Texte __souligné__ ! |
""Texte @@barré@@ ! ---""> Texte @@barré@@ ! |
""##texte à espacement fixe## ---""> ##texte à espacement fixe## |
""%%code%%"" |
""%%(php) PHP code%%"" |
""%%(delphi) code delphi/pascal%%"" |
Empêcher le formatage du texte : |
Pour empêcher que Wikini n'interprète les balises de formatage de texte qu'il reconnait, encadrer le texte par une paire de guillemets doubles. ""Par __exemple__, ce **texte** @@contient@@ des %%balises%% reconnue par Wikini qui ne sont //pas// interprétée car il est encadré par une paire de **guillemets double** comme __vous__ pouvez vous en apercevoir :)"" |
Deux autres utilisations : |
- écrire directement du HTML dans le wikini - par exemple pour les tableaux... ;-) - vu que ce qui est renvoyé est tout de même interprété par le moteur de rendu de Mozilla |
- afficher des logs / des scripts shell en ajoutant les tag <pre> et </pre> qui seront interprétés pour afficher le texte tel quel par le navigateur (sous réserve qu'il n'y ait pas de double guillemet dedans). Cela permet d'avoir le contenu in extenso plutôt que dans une boîte de code qui est de taille fixe (contrairement à la fonctionnalité de phpBB2 avec les tags [code] et [/code]) |
Liens forcés : |
""[[http://www.mon-site.org]]"" |
""[[http://www.mon-site.org Mon-site]]"" |
""[[P2P]]"" |
""[[P2P Page sur le P2P]]"" |
En-têtes : |
""====== En-tête énorme ======"" ====== En-tête énorme ====== |
""===== En-tête très gros ====="" ===== En-tête très gros ===== |
""==== En-tête gros ===="" ==== En-tête gros ==== |
""=== En-tête normal ==="" === En-tête normal === |
""== Petit en-tête =="" == Petit en-tête == |
Séparateur horizontal : il suffit de taper au moins 4 "-", au dela de 4 tirets c'est le meme effet |
Exemple : ""----"" |
------- |
Retour de ligne forcé : |
""---"" |
L'indentation de textes se fait avec la touche "TAB". Vous pouvez aussi créer des listes à puces ou numérotées : |
""- liste à puce"" |
""1) liste numérotée (chiffres arabes)"" |
""A) liste numérotée (capitales alphabétiques)"" |
""a) liste numérotée (minuscules alphabétiques)"" |
""i) liste numérotée (chiffres romains)"" |
Vous 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. |
""- liste à puce"" |
""1) liste numérotée (chiffres arabes)"" |
""A) liste numérotée (capitales alphabétiques)"" |
""a) liste numérotée (minuscules alphabétiques)"" |
""i) liste numérotée (chiffres romains)"" |
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. |
/branches/livraison_menes/wikini/setup/doc/ControlerLAccesAuxPages.txt |
---|
New file |
0,0 → 1,29 |
Chaque page possède trois niveaux de contrôle d'accès : |
- lecture de la page |
- écriture/modification de la page |
- commentaire de la page |
Les contrôles d'accès ne peuvent être modifiés que par le propriétaire de la page -- l'administrateur technique peut aussi manuellement modifier ces contrôles en travaillant directement sur la base de données. |
Le propriétaire d'une page voit apparaître, dans la page dont il est propriétaire, l'option "Éditer permissions" : cette option lui permet de modifier les contrôles d'accès. |
Ces contrôles sont matérialisés par des colonnes où le propriétaire va ajouter ou supprimer des informations. |
Le propriétaire peut compléter ces colonnes par les informations suivantes, séparées par des espaces : |
- le nom d'un ou plusieurs utilisateurs : par exemple ""CharlesNepote"" ou ""DavidDelon"" |
- le caractère ***** désignant tous les utilisateurs |
- le caractère **+** désignant les utilisateurs enregistrés |
- le caractère **!** signifiant la négation : par exemple !""CharlesNepote"" signifie que ""CharlesNepote"" **ne doit pas** avoir accès à cette page |
===== Droits d'accès par défaut ===== |
Pour toute nouvelle page créée, [[http://www.wikini.net WikiNi]] applique des droits d'accès par défaut. Ces droits d'accès sont configurables via le fichier /wakka.config.php. |
Il faut renseigner les trois variables de configuration suivantes : |
## |
"default_write_acl" => "*", |
"default_read_acl" => "*", |
"default_comment_acl" => "*", |
## |
Par exemple, vous pouvez souhaiter que, par défaut, seuls les utilisateurs enregistrés puisse modifier des pages. Vous utiliserez alors : |
## |
"default_write_acl" => "+", |
"default_read_acl" => "*", |
"default_comment_acl" => "*", |
## |
/branches/livraison_menes/wikini/setup/doc/PagesACreer.txt |
---|
New file |
0,0 → 1,0 |
{{WantedPages}} |
/branches/livraison_menes/wikini/setup/doc/IndexDesPagesBis.txt |
---|
New file |
0,0 → 1,0 |
{{pageindex}} |
/branches/livraison_menes/wikini/setup/doc/ActionInclude.txt |
---|
New file |
0,0 → 1,40 |
L'action ##""{{include page="PagePrincipale"}}""## ([[http://www.wikini.net WikiNi]] >= 0.4.1) permet d'inclure dans une page une autre page du wiki (ici la page PagePrincipale). Cette action possède plusieurs applications : |
- elle permet de regrouper plusieurs pages en une seule et donc, par exemple, créer un document à partir de différentes "sections" disséminées dans plusieurs pages |
- elle permet de commenter/critiquer une page en lecture seule en l'incluant dans le corps d'une autre page |
- elle peut permettre, par exemple, de constituer des blocs d'informations redondantes qui seront répétés (inclus) dans plusieurs autres pages (il peut s'agir d'un menu, d'une signature, d'une mention légale, ou autre) |
- encore plus fort ! il semble possible configurer ainsi le menu de navigation de [[http://www.wikini.net WikiNi]] de cette manière ! dans le fichier wakka.config.php, il suffit d'indiquer : |
##"navigation_links" => """{{include page=\"MenuDuHaut\"}}""",## |
et de créer dans la page ""MenuDuHaut"" ce que l'on souhaite voir apparaître. Cette page peut être protégée en lecture seule pour tout le monde et en écriture pour les administrateurs fonctionnels. |
- elle permet une sorte de syndication en incluant des pages d'un autre __""WikiNi""__. |
==== Paramètres ==== |
Cette action accepte deux paramètres : |
- page : paramètre obligatoire pour désigner la page à inclure (sans lequel l'action ne fonctionne pas). Ce paramètre peut être une page local au [[http://www.wikini.net WikiNi]] ou une page d'un autre [[http://www.wikini.net WikiNi]]. |
- class : désignant une ou plusieurs classes de style, séparées par des espaces, agissant sur la mise en forme de l'inclusion ; ce paramètre est optionnel. |
Actuellement, [[http://www.wikini.net WikiNi]] intègre plusieurs classes prédéfinies pour gérer la mise en forme de l'inclusion : |
%% |
.include_right { float: right; width: 17%; } /* bloc flotant à droite */ |
.include_left { float: left; width: 17%; } /* bloc flotant à gauche */ |
.include_solid_border { border: solid; padding: 2px; } /* encadré noir */ |
.include_gray_background { background-color: #DDDDDD; } /* fond gris */ |
.include_small_fonts { font-size: 0.8em; } /* petites polices */ |
.include_big_fonts { font-size: 1.2em; } /* grandes polces */ |
.include_height10em { height: 10em; overflow: scroll; } /* boite de 10em de hauteur, avec ascenseur */ |
.include_height15em { height: 15em; overflow: scroll; } |
.include_height30em { height: 30em; overflow: scroll; } |
.include_height60em { height: 60em; overflow: scroll; } |
%% |
{{include page="ListeDesActionsWikini" class="right height15em small_fonts solid_border gray_background"}} |
Ces classes de style peuvent être employées cumulativement. Ainsi, si l'on souhaite obtenir, par exemple, une boite grise avec une bordure et de petits caractères, on employera : |
##""{{include page="ListeDesActionsWikini" class="gray_background solid_border small_fonts"}}""## |
L'inclusion par défaut, pour le moment, produit une présentation non différenciée par rapport au reste de la page ; il faut **spécifier** un style (comme en HTML classique), pour le voir appliqué. L'utilisation des classes de style doit faire l'objet d'une attention particulière, certains navigateurs ne supportant que peu ou pas les styles CSS. |
La boite ci à droite correspond à l'inclusion suivante : ##""{{include page="ListeDesActionsWikini" class="right height15em small_fonts solid_border gray_background"}}""## |
Une page ne peut-être inclue dans elle-même : cela provoquerait une boucle récursive infinie : un page affichant une page, affichant une page, affichant une page, etc. |
De même, les boucles d'inclusion portant sur plus d'une page, sont impossibles. Prenons par exemple : un page ""Page1"" inclus une page ""Page2"" qui inclus une page ""Page3"" qui inclus la page ""Page1"". Lorsque ont demande à afficher la page ""Page1"", on voit le contenu des pages ""Page1"", ""Page2"" et ""Page3"" et le message d'erreur indiquant qu'il est impossible d'inclure une page dans elle même. En effet, la page "active" est ""Page1"" et le test dans l'action ##""{{include}}""## regarde si le nom de la page inclus est le même que celui de la page active ce qui provoque une erreur car l'inclusion d'autres pages ne change pas la page active. |
On verra cet exemple concrètement développé dans WikiNi:ActionIncludeExempleDeBouclePage1 et suivantes. |
---- |
{{trail toc="ListeDesActionsWikini"}} |
/branches/livraison_menes/wikini/setup/doc/DerniersCommentaires.txt |
---|
New file |
0,0 → 1,0 |
{{RecentlyCommented}} |
/branches/livraison_menes/wikini/setup/doc/IndexDesPages.txt |
---|
New file |
0,0 → 1,0 |
{{listpages}} |
/branches/livraison_menes/wikini/setup/doc/MotWiki.txt |
---|
New file |
0,0 → 1,0 |
{{redirect page="NomWiki"}} |
/branches/livraison_menes/wikini/setup/writeconfig.php |
---|
New file |
0,0 → 1,77 |
<?php |
/* |
writeconfig.php |
Copyright (c) 2002, Hendrik Mans <hendrik@mans.de> |
Copyright 2002, 2003 David DELON |
Copyright 2002, 2003 Patrick PAUL |
Copyright 2003 Jean-Pascal MILCENT |
All rights reserved. |
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions |
are met: |
1. Redistributions of source code must retain the above copyright |
notice, this list of conditions and the following disclaimer. |
2. Redistributions in binary form must reproduce the above copyright |
notice, this list of conditions and the following disclaimer in the |
documentation and/or other materials provided with the distribution. |
3. The name of the author may not be used to endorse or promote products |
derived from this software without specific prior written permission. |
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
// fetch config |
$config = $config2 = unserialize($_POST["config"]); |
// merge existing configuration with new one |
$config = array_merge($wakkaConfig, $config); |
// set version to current version, yay! |
$config["wikini_version"] = WIKINI_VERSION; |
$config["wakka_version"] = WAKKA_VERSION; |
// convert config array into PHP code |
$configCode = "<?php\n// wakka.config.php créée ".strftime("%c")."\n// ne changez pas la wikini_version manuellement!\n\n\$wakkaConfig = array(\n"; |
foreach ($config as $k => $v) |
{ |
$entries[] = "\t\"".$k."\" => \"".$v."\""; |
} |
$configCode .= implode(",\n", $entries).");\n?>"; |
// try to write configuration file |
echo "<b>Création du fichier de configuration en cours...</b><br>\n"; |
test("Écriture du fichier de configuration <tt>".$wakkaConfigLocation."</tt>...", $fp = @fopen($wakkaConfigLocation, "w"), "", 0); |
if ($fp) |
{ |
fwrite($fp, $configCode); |
// write |
fclose($fp); |
echo "<p>Voila c'est terminé ! Vous pouvez <a href=\"",$config["base_url"],"\">retourner sur votre site WikiNi</a>. Il est conseillé de retirer l'accès en écriture au fichier <tt>wakka.config.php</tt>. Ceci peut être une faille dans la sécurité.</p>"; |
} |
else |
{ |
// complain |
echo"<p><span class=\"failed\">AVERTISSEMENT:</span> Le |
fichier de configuration <tt>",$wakkaConfigLocation,"</tt> n'a pu être |
créé. Veuillez vous assurez que votre serveur a les droits d'accès en écriture pour ce fichier. Si pour une raison quelconque vous ne pouvez pas faire ça vous devez copier les informations suivantes dans un fichier et les transférer au moyen d'un logiciel de transfert de fichier (ftp) sur le serveur dans un fichier <tt>wakka.config.php</tt> directement dans le répertoire de WikiNi. Une fois que vous aurez fait cela, votre site WikiNi devrait fonctionner correctement.</p>\n"; |
?> |
<form action="<?php echo myLocation() ?>?installAction=writeconfig" method="POST"> |
<input type="hidden" name="config" value="<?php echo htmlentities(serialize($config2)) ?>"> |
<input type="submit" value="Essayer à nouveau"> |
</form> |
<?php |
echo"<div style=\"background-color: #EEEEEE; padding: 10px 10px;\">\n<xmp>",$configCode,"</xmp>\n</div>\n"; |
} |
?> |
/branches/livraison_menes/wikini/ACeditor.buttonsBar.php |
---|
New file |
0,0 → 1,43 |
<?php |
$ACbuttonsBar = " |
<div id=\"toolbar\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'**','**');\" src=\"ACEdImages/bold.gif\" title=\"Passe le texte sélectionné en gras ( Ctrl-Maj-b )\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'//','//');\" src=\"ACEdImages/italic.gif\" title=\"Passe le texte sélectionné en italique ( Ctrl-Maj-t )\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'__','__');\" src=\"ACEdImages/underline.gif\" title=\"Souligne le texte sélectionné ( Ctrl-Maj-u )\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'@@','@@');\" src=\"ACEdImages/strike.gif\" title=\"Barre le texte sélectionné\"> |
<img class=\"buttons\" src=\"ACEdImages/separator.gif\" > |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'======','======\\n');\" src=\"ACEdImages/t1.gif\" title=\" En-tête énorme\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'=====','=====\\n');\" src=\"ACEdImages/t2.gif\" title=\" En-tête très gros\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'====','====\\n');\" src=\"ACEdImages/t3.gif\" title=\" En-tête gros\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'===','===\\n');\" src=\"ACEdImages/t4.gif\" title=\" En-tête normal\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'==','==');\" src=\"ACEdImages/t5.gif\" title=\" Petit en-tête\"> |
<img class=\"buttons\" src=\"ACEdImages/separator.gif\" > |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelectionWithLink(thisForm.body);\" src=\"ACEdImages/link.gif\" title=\"Ajoute un lien au texte sélectionné\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'\\t- ','');\" src=\"ACEdImages/listepuce.gif\" title=\"Liste\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'\\t1) ','');\" src=\"ACEdImages/listenum.gif\" title=\"Liste numérique\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'\\ta) ','');\" src=\"ACEdImages/listealpha.gif\" title=\"Liste alphabéthique\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelectionBis(thisForm.body,'\\n---','');\" src=\"ACEdImages/crlf.gif\" title=\"Insère un retour chariot\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelectionBis(thisForm.body,'\\n------','');\" src=\"ACEdImages/hr.gif\" title=\"Insère une ligne horizontale\"> |
<img class=\"buttons\" src=\"ACEdImages/separator.gif\" > |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'%%','%%');\" src=\"ACEdImages/code.gif\" title=\"Code\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelection(thisForm.body,'%%(php)','%%');\" src=\"ACEdImages/php.gif\" title=\"Code PHP\"> |
</div> |
<div id=\"toolbar\"> |
<img class=\"buttons\" onmouseover=\"mouseover(this);\" onmouseout=\"mouseout(this);\" onmousedown=\"mousedown(this);\" onmouseup=\"mouseup(this);\" onclick=\"wrapSelectionWithImage(thisForm.body);\" src=\"ACEdImages/image.gif\" title=\"insère un tag image \"> |
<span class=\"texteChampsImage\"> |
Fichier <input type=\"text\" name=\"filename\" class=\"ACsearchbox\" size=\"10\"> Description <input type=\"text\" name=\"description\" class=\"ACsearchbox\" size=\"10\"> |
Alignement <select id=\"alignment\" class=\"ACsearchbox\"> |
<option value=\"left\">Gauche</option> |
<option value=\"center\">Centré</option> |
<option value=\"right\">Droite</option> |
</select> |
</span> |
</div>"; |
?> |
/branches/livraison_menes/wikini/files/vide.txt |
---|
--- wikini/ACeditor.js (revision 0) |
+++ wikini/ACeditor.js (revision 196) |
@@ -0,0 +1,124 @@ |
+ |
+ /* |
+ written by chris wetherell |
+ http://www.massless.org |
+ chris [THE AT SIGN] massless.org |
+ warning: it only works for IE4+/Win and Moz1.1+ |
+ feel free to take it for your site |
+ if there are any problems, let chris know. |
+ */ |
+ |
+ |
+ var ACEditor; /* make sure to change the onload handler of the |
+ <body> tag to the form you're using!... */ |
+ |
+ function mozWrap(txtarea, lft, rgt) { |
+ var selLength = txtarea.textLength; |
+ var selStart = txtarea.selectionStart; |
+ var selEnd = txtarea.selectionEnd; |
+ if (selEnd==1 || selEnd==2) selEnd=selLength; |
+ var s1 = (txtarea.value).substring(0,selStart); |
+ var s2 = (txtarea.value).substring(selStart, selEnd) |
+ var s3 = (txtarea.value).substring(selEnd, selLength); |
+ txtarea.value = s1 + lft + s2 + rgt + s3; |
+ } |
+ |
+ function IEWrap(lft, rgt) { |
+ strSelection = document.selection.createRange().text; |
+ if (strSelection!="") { |
+ document.selection.createRange().text = lft + strSelection + rgt; |
+ } |
+ } |
+ // Cette fonction permet de faire fonctionner l'insertion de tag image dans un textarea de IE sans sélection initiale, |
+ // à la position du curseur |
+ |
+ function IEWrap2(txtarea,lft, rgt) { |
+ txtarea.focus(); |
+ if (document.selection) { |
+ txtarea.focus(); |
+ sel = document.selection.createRange(); |
+ sel.text = lft+rgt; |
+ } |
+ } |
+ |
+ function wrapSelection(txtarea, lft, rgt) { |
+ if (document.all) {IEWrap(lft, rgt);} |
+ else if (document.getElementById) {mozWrap(txtarea, lft, rgt);} |
+ } |
+ |
+ function wrapSelectionBis(txtarea, lft, rgt) { |
+ // pareil que la wrapSelection, avec une différence dans IE |
+ // qui permet à wrapSelectionBis de pouvoir insérer à l'endroit du curseur même sans avoir sélectionné des caractères !!! |
+ // Pour mozilla, c'est bien la fonction Wrap standard qui est appelée, aucun changement |
+ |
+ if (document.all) { // document.all est une infamie de IE, on détecte cette horreur ! |
+ IEWrap2(txtarea,lft, rgt); // Attention, un parametre de plus que IEWrap |
+ } else if (document.getElementById) { |
+ mozWrap(txtarea, lft, rgt); // là on est chez les gentils |
+ } |
+ } |
+ |
+ function wrapSelectionWithLink(txtarea) { |
+ var my_link = prompt("Entrez l'URL: ","http://"); |
+ if (my_link != null) { |
+ lft="[[" + my_link + " "; |
+ rgt="]]"; |
+ wrapSelection(txtarea, lft, rgt); |
+ } |
+ return; |
+ } |
+ /* Aaaxl modif for ACeditor */ |
+ function wrapSelectionWithImage(txtarea) { |
+ nom = document.ACEditor.filename.value; |
+ descript = document.ACEditor.description.value; |
+ align = document.ACEditor.alignment.value; |
+ |
+ lft= " {{attach file=\"" + nom + "\" desc=\"" + descript + "\" class=\"" + align + "\" }} "; |
+ rgt = ""; |
+ wrapSelectionBis(txtarea, lft, rgt); |
+ return; |
+ } |
+ |
+ document.onkeypress = function (e) { |
+ if (document.all) { |
+ key=event.keyCode; txtarea=thisForm.body; |
+ if (key == 1) wrapSelectionWithLink(txtarea); |
+ if (key == 2) wrapSelection(txtarea,'**','**'); |
+ if (key == 20) wrapSelection(txtarea,'//','//'); |
+ } |
+ else if (document.getElementById) { |
+ ctrl=e.ctrlKey; shft=e.shiftKey; chr=e.charCode; |
+ if (ctrl) if (shft) if (chr==65) wrapSelectionWithLink(thisForm.body); |
+ if (ctrl) if (shft) if (chr==66) wrapSelection(thisForm.body,'**','**'); |
+ if (ctrl) if (shft) if (chr==84) wrapSelection(thisForm.body,'//','//'); |
+ //if (ctrl) if (shft) if (chr==85) wrapSelection(thisForm.body,'__','__'); |
+ } |
+ return true; |
+ } |
+ /* end chris w. script */ |
+ |
+ |
+ |
+ /* |
+ written by meg hourihan |
+ http://www.megnut.com |
+ meg@megnut.com |
+ |
+ warning: it only works for IE4+/Win and Moz1.1+ |
+ feel free to take it for your site |
+ but leave this text in place. |
+ any problems, let meg know. |
+ */ |
+ function mouseover(el) { |
+ el.className = "raise"; |
+ } |
+ function mouseout(el) { |
+ el.className = "buttons"; |
+ } |
+ function mousedown(el) { |
+ el.className = "press"; |
+ } |
+ function mouseup(el) { |
+ el.className = "raise"; |
+ } |
+ /* end meg script */ |
/branches/livraison_menes/wikini/wakka.basic.css |
---|
New file |
0,0 → 1,56 |
body { background-color: #F5F5F5; color: black; font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; } |
a { color: #993333; } |
body, p, td, li, input, select, textarea { font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; font-size: 13px; } |
h1, h2, h3, h4, h5 { margin: 0px; padding: 0px; } |
ul { margin-top: 0px; padding-top: 0px; padding-bottom: 0px; } |
ol { margin-top: 0px; padding-top: 0px; padding-bottom: 0px; } |
form { margin: 0px; padding: 0px; } |
tt { color: Navy; } |
.error { color: #CC3333; font-weight: bold; } |
.indent { margin-left: 40px; } |
.additions { color: #008800; } |
.deletions { color: #880000; } |
.add { font-weight: bold; color:#c00; text-decoration: underline; } |
.del { font-style: italic; color:#c00; text-decoration: line-through; } |
.header { padding: 10px; padding-top: 0px; } |
.page { background-color: #FFFFFF; padding: 10px; border: 1px inset; } |
.prev_alert { background-color: red; color: white; font-size: 1.7em; font-weight: bold; margin-bottom: 5px; } |
.edit { width: 100%; height: 400px; } |
.footer { background-color: #DDDDDD;padding: 5px; border: 1px inset } |
.code { background: #FFFFFF; border: solid #888888 2px; font-family: 'Courier New', Courier; color: black; font-size: 10pt; width: 100%; overflow: scroll; padding: 3px; } |
.revisioninfo { color: #AAAAAA; padding-bottom: 20px; } |
.commentsheader { background-color: #DDDDDD; padding: 2px 10px; } |
.comment { background-color: #EEEEEE; padding: 10px; } |
.commentinfo { color: #AAAAAA; } |
.commentform { background-color: #EEEEEE; padding: 10px; } |
.copyright { font-size: 11px; color: #AAAAAA; text-align: right; } |
.copyright A { color: #AAAAAA; } |
.searchbox { background: #FFFFF8; border: 0px; padding: 0px; margin: 0px; } |
.debug { font-size: 11px; color: #888888; } |
/* CONTRIBUTION MENU GAUCHE */ |
.page_table {margin: 0px; padding: 0px ; border: none; height: 100%;width: 100%;} |
.menu_column {background-color: #FFFFCC; vertical-align: top; width: 150px; border: 1px solid #000000;padding:5px;} |
.body_column {vertical-align: top; border: none;padding:5px;} |
/* CONTRIBUTION ACTION ATTACH */ |
/* - les images */ |
.attach_margin05em { margin: 0.5em;} /* marge de 0.5 em autour de l'image*/ |
.attach_margin1em { margin: 1em;} /* marge de 1em autour de l'image*/ |
.attach_left {float: left;} /* bloc flotant à gauche */ |
.attach_right {float: right;} /* bloc flotant à droite */ |
.attach_noborder {border-width: 0px;} /* pas de bordure */ |
.attach_vmiddle {vertical-align: text-bottom;} /* aligenement vertical au milieu */ |
/* - le gestionnaire des uploads */ |
.tableFM {border: thin solid Black; width: 100%; } |
.tableFM THEAD { background-color: Silver; font-weight: bold; text-align: center; } |
.tableFM TFOOT { background-color: Silver; font-weight: bold; text-align: left; } |
.tableFM TBODY TR { text-align: center; } |
.tableFMCol1 { background-color: Aqua; } |
.tableFMCol2 { background-color: Yellow; } |
/branches/livraison_menes/wikini/INSTALL |
---|
New file |
0,0 → 1,25 |
Wakka / Wikini Installation |
Not much to it (as long as it works, ahem). Unpack/upload the distribution files |
into a directory that can be accessed via the web. Then go to the corresponding URL. |
A web-based installer will walk you through the rest. |
Example: |
If your website, say, http://www.mysite.com, is mapped to the directory /home/jdoe/www/, |
and you place the Wakka distribution files into /home/jdoe/www/wakka/, you should go to |
http://www.mysite.com/wakka/. |
Note that Wakka distributions normally unpack into directories that include the version |
in their name; you'll probably want to rename those to just "wakka" -- or, if you're |
on a unixoid system, set up a symbolic link. |
IMPORTANT: for installing or upgrading Wakka, do NOT access any of the files contained |
in the setup/ subdirectory. They're used by the web-based installer/updater, but you |
should really just access the Wakka directory itself, and it will (or at least should) |
work perfectly. |
Detailed instructions are available at <http://www.wakkawiki.com/WakkaInstallation>. |
- Hendrik Mans <hendrik@mans.de> |
/branches/livraison_menes/fichiers/vide.txt |
---|
--- classes/statut.class.php (revision 0) |
+++ classes/statut.class.php (revision 196) |
@@ -0,0 +1,138 @@ |
+<?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: statut.class.php,v 1.2 2005-09-27 16:42:00 alexandre_tb Exp $ |
+/** |
+* Application projet |
+* |
+* La classe statut |
+* |
+*@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 | |
+// +------------------------------------------------------------------------------------------------------+ |
+ |
+define ('PROJET_STATUT_TOUS', 1) ; |
+define ('PROJET_STATUT_SAUF_ADM', 2) ; |
+define ('PROJET_STATUT_SAUF_ADM_COORD', 3) ; |
+ |
+/** |
+ * class statut |
+ * |
+ */ |
+class statut |
+{ |
+ |
+ /** Aggregations: */ |
+ |
+ /** Compositions: */ |
+ |
+ /*** Attributes: ***/ |
+ |
+ /** |
+ * L'identifiant du statut |
+ * @access private |
+ */ |
+ var $_id_statut; |
+ /** |
+ * Le label du statut, dans la table. |
+ * @access private |
+ */ |
+ var $_label; |
+ /** |
+ * Un objet PEAR::DB |
+ * @access private |
+ */ |
+ var $_db; |
+ |
+ /** |
+ * Constructeur. |
+ * |
+ * @param int id_statut L'identifiant du statut créé. |
+ * @param DB objetDB Un objet PEAR::DB |
+ * @return void |
+ * @access public |
+ */ |
+ function statut( $id_statut, &$objetDB ) |
+ { |
+ $requete = "select * from projet_statut where ps_id_statut=$id_statut" ; |
+ $resultat = $objetDB->query ($requete) ; |
+ if (PEAR::isError ($resultat)) { |
+ die ($resultat->getMessage()."<br />".$requete."<br />") ; |
+ } |
+ $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
+ $this->_db = $objetDB ; |
+ $this->_id_statut = $ligne->pd_id_statut ; |
+ $this->_label = $ligne->ps_statut_nom; |
+ } // end of member function statut |
+ |
+ /** |
+ * Renvoie le label du statut. |
+ * |
+ * @return string |
+ * @access public |
+ */ |
+ function getLabel( ) |
+ { |
+ return $this->_label ; |
+ } // end of member function getLabel |
+ /** |
+ * |
+ * |
+ * @param int type_statut Indique quels statuts l'on désire voir retourner PROJET_STATUT_TOUS |
+ * PROJET_STATUT_SAUF_ADM PROJET_STATUT_SAUF_ADM_COORD |
+ * @return Array |
+ * @static |
+ * @access public |
+ */ |
+ function getTousLesStatuts( $type_statut = PROJET_STATUT_TOUS, &$objetDB) |
+ { |
+ $requete = 'select * from projet_statut' ; |
+ if ($type_statut == PROJET_STATUT_SAUF_ADM) { |
+ $requete .= ' where ps_id_statut <> 0' ; |
+ } |
+ if ($type_statut == PROJET_STATUT_SAUF_ADM_COORD) { |
+ $requete .= ' where ps_id_statut > 1' ; |
+ } |
+ $resultat = $objetDB->query ($requete) ; |
+ $tableau_resultat = array(); |
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
+ $tableau_resultat[$ligne->ps_id_statut] = $ligne->ps_statut_nom ; |
+ } |
+ return $tableau_resultat; |
+ } // end of member function getTousLesStatuts |
+ |
+ |
+ |
+ |
+ |
+} // end of statut |
+?> |
/branches/livraison_menes/classes/statut_liste.class.php |
---|
New file |
0,0 → 1,100 |
<?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: statut_liste.class.php,v 1.2 2005-09-27 16:42:00 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe statut_liste |
* |
*@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 statut_liste |
* |
*/ |
class statut_liste |
{ |
/*** Attributes: ***/ |
/** |
* Une ressource PEAR::DB |
* @access private |
*/ |
var $_db; |
/** |
* |
* @access private |
*/ |
var $_id_statut; |
/** |
* |
* @access private |
*/ |
var $_label; |
/** |
* |
* |
* @param DB objetDB Une ressource PEAR::DB |
* @return void |
* @access public |
*/ |
function statut_liste( &$objetDB ) |
{ |
$this->_db = $objetDB ; |
} // end of member function statut_liste |
/** |
* Renvoie un tableu avec tous les status d'inscription à une liste 0 => 'Pas |
* d'email' 1 => ' ... |
* |
* @return Array |
* @access public |
*/ |
function getTousLesStatuts( ) |
{ |
$requete = 'select * from projet_liste_statut' ; |
$resultat = $this->_db->query ($requete) ; |
$tableau_resultat = array(); |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
$tableau_resultat[$ligne->pls_id_statut] = $ligne->pls_statut_nom ; |
} |
return $tableau_resultat; |
} // end of member function getTousLesStatuts |
} // end of statut_liste |
?> |
/branches/livraison_menes/classes/HTML_formulaireListeExterne.class.php |
---|
New file |
0,0 → 1,116 |
<?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: HTML_formulaireListeExterne.class.php,v 1.2 2005-09-27 16:42:00 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe controleur projet |
* |
*@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 | |
// +------------------------------------------------------------------------------------------------------+ |
/** Inclure le fichier de langue pour utiliser cette classe de façon autonome. */ |
require_once 'HTML/QuickForm.php' ; |
require_once 'HTML/QuickForm/checkbox.php' ; |
// +------------------------------------------------------------------------------------------------------+ |
// | LISTE des constantes | |
// +------------------------------------------------------------------------------------------------------+ |
/** |
* class HTML_formulaireListe |
* Cette classe représente un formulaire pour saisir un projet ou le modifier. |
*/ |
class HTML_formulaireListeExterne extends HTML_QuickForm |
{ |
/** |
* Constructeur |
* |
* @param string formName Le nom du formulaire. |
* @param string method Soit get soit post, voir le protocole HTTP |
* @param string action L'action du formulaire. |
* @param string target La cible du formulaire. |
* @param Array attributes Des attributs supplémentaires pour la balise <form> |
* @param bool trackSubmit Pour repérer si la formulaire a été soumis. |
* @return void |
* @access public |
*/ |
function HTML_formulaireListe( $formName = "", $method = "post", $action = "", $target = "_self", $attributes = "", $trackSubmit = false ) |
{ |
HTML_QuickForm::HTML_QuickForm($formName, $method, $action, $target, $attributes, $trackSubmit) ; |
} // end of member function HTML_formulaireListe |
/** |
* Renvoie le code HTML du formulaire. |
* |
* @return string |
* @access public |
*/ |
function toHTML( ) |
{ |
$res = HTML_QuickForm::toHTML() ; |
return $res ; |
} // end of member function toHTML |
/** |
* Ajoute les champs nécessaire au formulaire. |
* |
* @return void |
* @access public |
*/ |
function construitFormulaire($tableau_liste_externe) |
{ |
foreach ($tableau_liste_externe as $cle => $valeur) { |
$this->addElement ('checkbox', 'liste_'.$cle, '', $valeur) ; |
} |
$this->setRequiredNote('<span style="color: #ff0000">*</span>'.PROJET_CHAMPS_REQUIS) ; |
$url_annuler = new Net_URL($this->getAttribute('action')) ; |
$url_annuler->removeQueryString(PROJET_VARIABLE_ACTION) ; |
$buttons[] = &HTML_QuickForm::createElement('link', 'annuler', PROJET_FICHIER_ANNULER, |
preg_replace ("/&/", "&", $url_annuler->getURL()), PROJET_FICHIER_ANNULER); // Le preg_replace contourne un pb de QuickForm et Net_URL |
// qui remplacent deux fois les & par des & |
// ce qui fait échouer le lien |
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider', PROJET_FICHIER_VALIDER); |
$this->addGroup($buttons, null, null, ' '); |
} // end of member function _construitFormulaire |
} // end of HTML_formulaireListe |
?> |
/branches/livraison_menes/classes/HTML_listeParticipants.class.php |
---|
New file |
0,0 → 1,200 |
<?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: HTML_listeParticipants.class.php,v 1.3 2006-01-11 10:32:09 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe HTML_listeParticipants |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.3 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once PROJET_CHEMIN_CLASSES.'HTML_Liste.class.php' ; |
/** |
* class HTML_listeParticipants |
* |
*/ |
class HTML_listeParticipants extends HTML_Liste |
{ |
/*** Attributes: ***/ |
/** |
* Le mode, par défaut 0 => normal 1 => modification En mode modification, une |
* colonne de plus pour désinscrire un utilisateur |
* @access private |
*/ |
var $_mode; |
/** |
* L'url vers la page affichant la liste |
* @access private |
*/ |
var $_url; |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function HTML_listeParticipants( $utilise_pager) |
{ |
HTML_Liste::HTML_Liste($utilise_pager, array('class' => 'table_cadre')) ; |
} // end of member function HTML_listeParticipants |
/** |
* |
* |
* @param Array elements Tableau des éléments de l'entête. Des labels. |
* @return void |
* @access public |
*/ |
function construitEntete( $elements ) |
{ |
if ($this->_mode == 1) { |
array_push ($elements, PROJET_SUPPRIMER) ; |
} |
$this->addRow ($elements, '', 'TH') ; |
} // end of member function construitEntete |
/** |
* |
* |
* @param Array elements Tableau à deux dimension contenant les éléments à afficher. |
* @return void |
* @access public |
*/ |
function construitListe( $elements, $tableau_statut = '' ) |
{ |
for ($i = 0; $i < count ($elements) ; $i++) { |
// L'identifiant de l'utilisateur est le premier élément du tableau |
$id_utilisateur = array_shift ($elements[$i]) ; |
// L'identifiant du statut est le dernier |
$id_statut = (int) array_pop ($elements[$i]) ; |
// En mode modif on ajoute la colonne supprimer |
if ($this->_mode == 1) { |
$this->_url->addQueryString ('id_utilisateur', $id_utilisateur) ; |
$this->_url->addQueryString('statut', 4) ; |
array_push ($elements[$i], '', '<a href="'.$this->_url->getURL().'" onclick="javascript:return confirm(\''.PROJET_SUPPRIMER.' ?\')">' |
.PROJET_SUPPRIMER.'</a>'); |
$this->_url->removeQueryString('statut') ; |
} |
$this->addRow ($elements[$i]) ; |
// mise à jour du champs mail en l'entourant par la balise mailto |
/// $i+1 pour sauter la ligne de titre, |
if (strlen ($elements[$i][2]) > 10) { |
$mail_racourci = substr($elements[$i][2], 0, 10).'...' ; |
} |
$this->setCellContents ($i+1, 2, '<a href="mailto:'.$elements[$i][2].'">'.$mail_racourci.'</a>') ; |
// Mise à jour de la cellule contenant le statut |
if ($this->_mode == 1) { |
$this->_url->addQueryString ('id_utilisateur', $id_utilisateur) ; |
$select = '<form action="'.$this->_url->getURL().'" method="post">'."\n" ; |
$select .= '<select name="statut" onchange="javascript:this.form.submit();">' ; |
foreach ($tableau_statut as $cle =>$element_statut) { |
$select .= '<option value="'.$cle.'"' ; |
if ($cle == $id_statut) { |
$select .= ' selected="selected"' ; |
} |
$select .= '>'.$element_statut.'</option>'."\n" ; |
} |
$select .= '</select>'."\n".'</form>'."\n" ; |
$this->setCellContents($i+1, 4, $select) ; |
} |
if ($id_statut == 1 && $this->_mode != 1) { |
$this->setCellContents($i + 1, 4, PROJET_CHEF) ; |
$this->updateRowAttributes ($i + 1, array('style' => 'font-weight:bold'), true) ; |
} |
if ($this->_mode != 1 && $id_statut != 1) { |
$this->setCellContents($i + 1, 4, $tableau_statut[$id_statut]) ; |
} |
$this->updateCellAttributes ($i + 1, 0, array ('class' => 'nom')) ; |
$this->updateCellAttributes ($i + 1, 1, array ('class' => 'prenom')) ; |
} |
} // end of member function construitListe |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function setModeModification( ) |
{ |
$this->_mode = 1 ; |
} // end of member function setModeModification |
/** |
* Renvoie le code HTML de la table. |
* |
* @return string |
* @access public |
*/ |
function toHTML( ) |
{ |
// Application de style |
$this->altRowAttributes(1, array('class' =>'ligne_paire'), array('class' =>'ligne_impaire'), true) ; |
// s'il n'y a qu'une seule ligne, on renvoie un message indiquant qu'il n'y a pas de participants |
if ($this->getRowCount() == 1) { |
return '<div>'.PROJET_PAS_D_INSCRIT.'</div>'."\n"; |
} |
$res = HTML_Table::toHTML() ; |
return $res ; |
} // end of member function toHTML |
/** |
* Fixe la valeur de l'URL |
* |
* @param Net_URL url Un pointeur vers un objet Net_URL |
* @return void |
* @access public |
*/ |
function setURL( &$url ) |
{ |
$this->_url = $url ; |
} // end of member function setURL |
} // end of HTML_listeParticipants |
?> |
/branches/livraison_menes/classes/HTML_listeDocuments.class.php |
---|
New file |
0,0 → 1,337 |
<?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: HTML_listeDocuments.class.php,v 1.7.2.1 2007-04-11 12:31:53 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe HTML_listeDocuments |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.7.2.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// | LISTE des constantes | |
// +------------------------------------------------------------------------------------------------------+ |
define ("FICHIER_ICONE_COUPER", "cut.gif") ; |
define ("FICHIER_ICONE_COLLER", "paste.gif") ; |
define ("FICHIER_ICONE_SUPPRIMER", "trash.gif") ; |
define ("FICHIER_ICONE_MODIFIER", "modif.png") ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_Liste.class.php'; |
/** |
* class HTML_listeDocuments |
* |
*/ |
class HTML_listeDocuments extends HTML_Liste |
{ |
/*** Attributes: ***/ |
/** |
* Une url. |
* @access private |
*/ |
var $_url; |
/** |
* Tableau contenant les actions possibles. "couper" => 1, "modifier" => 2, |
* "supprimer" => 3 Elles seront passées en paramètre aux url des icones des |
* documents. |
* @access private |
*/ |
var $_actions = array ("couper" => 1, "modifier" => 2, "supprimer" => 3) ; |
/** |
* Indique le chemin des icones couper, coller, modifier, supprimer. |
* @access private |
*/ |
var $_chemin_icone = "icones/"; |
/** |
* L'identifiant du répertoire que l'on est en train d'observer. |
* @access private |
*/ |
var $_id_repertoire; |
/** |
* Un tableau contenant les id et les noms du chemin des répertoires. 0 => ["id"], |
* ["nom"] etc. |
* @access private |
*/ |
var $_chemin_navigation = array (); |
/** |
* un pointeur vers une authentificatin PEAR |
* @access private |
*/ |
var $_auth ; |
/** |
* |
* |
* @param bool utilise_pager Indique l'utilisation ou non du Pager. |
* @return void |
* @access public |
*/ |
function HTML_listeDocuments(&$url, $utilise_pager = false, $id_repertoire = 0, $auth = '' ) |
{ |
HTML_Liste::HTML_Liste($utilise_pager, array('class' => 'table_cadre')) ; |
$this->_url = $url ; |
$this->_id_repertoire = $id_repertoire ; |
if (is_object($auth)) { |
$this->_auth = $auth ; |
} |
} // end of member function HTML_listeDocuments |
/** |
* |
* |
* @param bool utilise_pager Voir HTML_listeDocuments |
* @return void |
* @access public |
*/ |
function __construct( &$url, $utilise_pager = false, $id_repertoire = 0, $auth = '' ) |
{ |
$this->HTML_listeDocuments($url, $utilise_pager, $id_repertoire, $auth); |
} // end of member function __construct |
/** |
* |
* |
* @param Array tableau_label Un tableau contenant les labels à afficher dans l'entête. |
* @return void |
* @access public |
*/ |
function construitEntete( $tableau_label ) |
{ |
$this->addRow ($tableau_label, NULL, 'TH') ; |
} // end of member function construitEntete |
/** |
* |
* |
* @param Array tableau_label Un tableau à deux dimensions avec les labels à afficher dans le corps du |
* tableau. |
* @return void |
* @access public |
*/ |
function construitListe( &$tableau_document, $droits, $mode = '', $objetDB = '') |
{ |
$compteur = 0 ;$class[0] = 'ligne_impaire'; $class[1] = 'ligne_paire' ; |
for ($i = 0; $i < count ($tableau_document) ; $i++) { |
// Première condition : est-ce que le fichier a pour père le répertoire courant, si oui on l'affiche |
if ($tableau_document[$i]->_id_pere == $this->_id_repertoire || $mode == 'ignore_repertoire') { |
// d'abord l'image |
$icone = '<img src="'.$tableau_document[$i]->getCheminIcone().'" />' ; |
// Si le document est un répertoire, on ajoute id_repertoire au lien. |
if ($tableau_document[$i]->isRepertoire()) { |
$this->_url->addQueryString ('id_repertoire', $tableau_document[$i]->getChemin()) ; |
$lien = $this->_url->getURL() ; |
} else { // Si c'est un fichier, on fait un lien direct |
$lien = $tableau_document[$i]->getChemin() ; |
} |
// pour éviter des effets de bords, on enlève id_repertoire de l'url |
// dans le cas d'un répertoire, pour les fichiers on le laisse pour |
// qu'après une opération, on reste dans le répertoire où a eu lieu l'opération |
if ($tableau_document[$i]->isRepertoire()) $this->_url->removeQueryString('id_repertoire') ; |
// on insère le lien |
$lien_nom = '<a href="'.$lien.'">'.$icone.' '.$tableau_document[$i]->getNomLong()."</a>\n" ; |
// Pour la taille on divise par 1000 et on écrit Ko |
$taille = round($tableau_document[$i]->getTaille() / 1000).' Ko' ; |
// Récupération de l'auteur |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
$annuaire = new annuaire($objetDB, array('table' => PROJET_ANNUAIRE, 'identifiant' => PROJET_CHAMPS_ID, |
'nom' => PROJET_CHAMPS_NOM, 'prenom' => PROJET_CHAMPS_PRENOM)) ; |
$annuaire->setId($tableau_document[$i]->_id_proprietaire) ; |
$nom_prenom = $annuaire->getInfo('nom').' '.$annuaire->getInfo('prenom') ; |
// On rempli le tableau à donner en paramètre à HTML_Table avec toutes ces infos, une par colonne |
$ligne_tableau = array($lien_nom, $taille, $nom_prenom, $tableau_document[$i]->getDateMiseAJour()) ; |
if ($droits <= PROJET_DROIT_CONTRIBUTEUR) array_push ($ligne_tableau, $tableau_document[$i]->getVisibilite()) ; |
// On ajoute au tableau, les action couper / modifier / supprimer |
if ($droits <= PROJET_DROIT_COORDINATEUR || $this->_auth->getAuthData(PROJET_CHAMPS_ID) == $tableau_document[$i]->_id_proprietaire) |
array_push ($ligne_tableau, $this->_actions ($tableau_document[$i])) ; |
if ($tableau_document[$i]->getVisibilite() != 'prive' || $droits < PROJET_DROIT_AUCUN) { |
$this->addRow ($ligne_tableau, array('class' => $class[$compteur]), 'TD', true) ; |
// enfin , s'il y a une description, on l'ajoute, mais sur une ligne entière (colspan) |
if ($tableau_document[$i]->getDescription() != "") { |
$this->addRow (array ($tableau_document[$i]->getDescription()), |
array ('colspan' => $this->getColCount(), 'class' => $class[$compteur])) ; |
$this->updateRowAttributes ($this->getRowCount()-1, array ('class' => $class[$compteur]), true) ; |
} |
} |
$compteur++; |
} |
if ($compteur == 2) $compteur = 0 ; |
} |
$this->updateColAttributes(0, array ('class' => 'col1')) ; |
} // end of member function construitListe |
/** |
* |
* |
* @param Array actions Un tableau avec les valeurs d'actions comme clé. "couper", modifier", |
* "supprimer". |
* @return void |
* @access public |
*/ |
function setAction( $actions ) |
{ |
$this->_actions = $actions ; |
} // end of member function setAction |
/** |
* |
* |
* @param string chemin Le chemin vers les icones couper, coller ... |
* @return void |
* @access public |
*/ |
function setCheminIcones( $chemin ) |
{ |
$this->_chemin_icone = $chemin ; |
} // end of member function setCheminIcones |
/** |
* Surcharge de l'opération de la classe mère. Ajoute la navigation dans les |
* répertoires. |
* |
* @return string |
* @access public |
*/ |
function toHTML( ) |
{ |
$chemin_navig = "" ; |
if ($this->_id_repertoire != "") { |
$this->_url->removeQueryString(PROJET_VARIABLE_ID_REPERTOIRE) ; |
$chemin_navig = "<p>" ; |
$chemin_navig .= "<a href=\"".$this->_url->getURL()."\">".PROJET_RACINE."</a>\n" ; |
$this->_url->addQueryString(PROJET_VARIABLE_ID_REPERTOIRE, $this->_id_repertoire) ; |
for ($i = 0; $i < count ($this->_chemin_navigation); $i+=2) { |
$chemin_navig .= "> " ; |
$nom = $this->_chemin_navigation[$i+1] ; |
$this->_url->addQueryString ('id_repertoire', $this->_chemin_navigation[$i]) ; |
$chemin_navig .= "<a href=\"".$this->_url->getURL()."\">".$nom."</a>\n" ; |
} |
$chemin_navig .= "</p>\n" ; |
} |
$res = $chemin_navig.HTML_Liste::toHTML() ; |
if ($this->getRowCount() == 1 && $this->_id_repertoire == '') { |
return '<div>'.PROJET_PAS_DE_DOCUMENTS.'</div>'."\n"; |
} |
return $res ; |
} // end of member function toHTML |
/** |
* |
* |
* @param Array tableau_navigation Un tableau contenant les identifiants et les noms des répertoires. 0 => ["id"], |
* ["nom"] etc. |
* @return void |
* @access public |
*/ |
function setCheminNavigation( $tableau_navigation ) |
{ |
$this->_chemin_navigation = $tableau_navigation ; |
} // end of member function setCheminNavigation |
/** |
* Affiche la légende des actions du module "documents" |
* |
* @return string |
* @access public |
*/ |
function affLegende( ) |
{ |
$res = "<h2 class=\"titre2_projet\">".PROJET_LEGENDE."</h2>\n" ; |
$res .= "<p><img src=\"".$this->_chemin_icone."/cut.gif\" title=\"couper\" alt=\"couper\">".PROJET_LEGENDE_DEPLACE."</p>\n" ; |
$res .= "<p><img src=\"".$this->_chemin_icone."/modif.png\" title=\"modifier\" alt=\"modifier\"> ".PROJET_LEGENDE_MODIFIE."</p>\n" ; |
$res .= "<p><img src=\"".$this->_chemin_icone."/trash.gif\" title=\"supprimer\" alt=\"supprimer\"> ".PROJET_LEGENDE_SUPPR."</p>\n" ; |
return $res ; |
} // end of member function affLegende |
/** |
* Renvoie le chemin HTML, depuis le répertoire courant jusqu'à la racine. |
* |
* @return string |
* @access private |
*/ |
function _getCheminHTML( ) |
{ |
$path = "" ; |
return $path ; |
} // end of member function _getCheminHTML |
/** |
* Renvoie une chaine contenant le code html des icones des actions possibles sur un |
* fichier, c'est à dire couper, modifier, supprimer. |
* |
* @return string |
* @access private |
*/ |
function _actions($document) |
{ |
$this->_url->addQueryString ('id_document', $document->getIdDocument()) ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, $this->_actions["couper"]) ; |
$couper = ' '.PROJET_FICHIER_COUPER ; |
if (!$document->isRepertoire()) $couper = '<a href="'.$this->_url->getURL().'">'.$couper.'</a>' ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, $this->_actions["modifier"]) ; |
$modifier = '<a href="'.$this->_url->getURL().'">'.PROJET_FICHIER_MODIFIER.'</a> ' ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, $this->_actions["supprimer"]) ; |
$supprimer= '<a href="'.$this->_url->getURL().'" onclick="javascript:return confirm (\''.PROJET_FICHIER_SUPPRIMER.' ?\');">'.PROJET_FICHIER_SUPPRIMER.'</a>' ; |
$this->_url->removeQueryString ('id_document') ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_DOCUMENT) ; |
return $modifier.$supprimer.$couper ; |
} // end of member function _action |
} // end of HTML_listeDocuments |
?> |
/branches/livraison_menes/classes/HTML_listeProjet.class.php |
---|
New file |
0,0 → 1,197 |
<?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: HTML_listeProjet.class.php,v 1.7 2006-09-15 12:35:54 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe controleur projet |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.7 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once PROJET_CHEMIN_CLASSES.'HTML_Liste.class.php' ; |
/** |
* class HTML_listeProjet |
* |
*/ |
class HTML_listeProjet extends HTML_Liste |
{ |
/*** Attributes: ***/ |
/** |
* 0 mode normal 1 mode modification, rajoute un formulaire pour modifier le statut |
* d'un utilisateur. |
* @access private |
*/ |
var $_mode; |
/** |
* Un objet PEAR::Net_URL |
* @access private |
*/ |
var $_url; |
/** |
* |
* |
* @param bool utilise_pager Indique si les résultats sont divisés en page. |
* @return void |
* @access public |
*/ |
function HTML_listeProjet( $utilise_pager = false ) |
{ |
HTML_Liste::HTML_Liste($utilise_pager, array ('class' => 'table_cadre', 'summary' => PROJET_LISTE)) ; |
} // end of member function HTML_listeProjet |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function __construct($utilise_pager = false) |
{ |
$this->HTML_listeProjet($utilise_pager); |
} // end of member function __cosntruct |
/** |
* |
* |
* @param Array label_entete Un tableau contenant les labels pour l'entête de la liste. |
* @return void |
* @access public |
*/ |
function construitEntete( $label_entete ) |
{ |
$this->addRow ($label_entete, '', 'TH') ; |
} // end of member function construitEntete |
/** |
* |
* |
* @param Array label_liste Un tableau à double dimension contenant les valeurs de la liste. du type |
* 0 =>'label', 'label2', |
* 1 => ... |
* @return void |
* @access public |
*/ |
function construitListe( $label_liste, $tableau_statut = '' ) |
{ |
for ($i = 0; $i < count ($label_liste) ; $i++) { |
if ($this->_mode == 1) { |
$id_projet = array_shift ($label_liste[$i]) ; |
$id_statut = array_pop ($label_liste[$i]) ; |
} |
$resume = array_shift ($label_liste[$i]) ; |
$this->addRow ($label_liste[$i]) ; |
if ($this->_mode == 1 && $id_statut < 3) { |
$this->_url->addQueryString ('identifiant_projet', $id_projet) ; |
$this->_url->removeQueryString (PROJET_VARIABLE_ID_PROJET) ; |
$select = '<form action="'.$this->_url->getURL().'" method="post" class="magali">'."\n" ; |
$select .= '<select name="statut" onchange="javascript:this.form.submit();">' ; |
foreach ($tableau_statut as $cle =>$element_statut) { |
$select .= '<option value="'.$cle.'"' ; |
if ($cle == $id_statut) { |
$select .= ' selected="selected"' ; |
} |
$select .= '>'.$element_statut.'</option>'."\n" ; |
} |
$select .= '</select>'."\n".'</form>'."\n" ; |
if (is_int($id_statut)) { |
//$this->setCellContents($i+1, 2, $select) ; |
$this->setCellContents($this->getRowCount() - 1, 2, $select) ; |
} else { |
$this->setCellContents($i+1, 2, PROJET_PAS_DE_LISTE) ; |
} |
} |
// On affiche le résumé dans la deuxième ligne |
if (PROJET_LISTE_RESUME) { |
$this->addRow (array ($resume), array('colspan' => $this->getColCount())); |
} |
} |
$this->altRowAttributes(1, array('class' => 'ligne_impaire'), array('class' => 'ligne_paire')) ; |
} // end of member function construitListe |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function setModeModification( ) |
{ |
$this->_mode = 1 ; |
} // end of member function setModeModification |
/** |
* |
* |
* @param Net_URL url Un objet PEAR::Net_URL |
* @return void |
* @access public |
*/ |
function setURL(& $url ) |
{ |
$this->_url = $url ; |
} // end of member function setURL |
/** |
* Alternates the row attributes starting at $start |
* @param int $start Row index of row in which alternating begins |
* @param mixed $attributes1 Associative array or string of table row attributes |
* @param mixed $attributes2 Associative array or string of table row attributes |
* @param bool $inTR false if attributes are to be applied in TD tags |
* true if attributes are to be applied in TR tag |
* @access public |
*/ |
function altRowAttributes($start, $attributes1, $attributes2, $inTR = false) |
{ |
for ($row = $start ; $row < $this->_rows ; $row++) { |
$attributes = ( ($row+$start)%2 == 0 ) ? $attributes1 : $attributes2; |
$this->updateRowAttributes($row, $attributes, $inTR); |
if (PROJET_LISTE_RESUME) { |
$row++; |
$this->updateRowAttributes($row, $attributes, $inTR); |
$start++; |
} |
} |
} // end func altRowAttributes |
} // end of HTML_listeProjet |
?> |
/branches/livraison_menes/classes/HTML_formulaireDocument.class.php |
---|
New file |
0,0 → 1,146 |
<?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: HTML_formulaireDocument.class.php,v 1.3 2006-01-05 15:02:55 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe HTML_formulaireDocument |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.3 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/** Inclure le fichier de langue pour utiliser cette classe de façon autonome. */ |
require_once 'HTML/QuickForm.php' ; |
require_once 'HTML/QuickForm/checkbox.php' ; |
require_once 'HTML/QuickForm/select.php' ; |
/** |
* class HTML_formulaireDocument |
* |
*/ |
class HTML_formulaireDocument extends HTML_QuickForm |
{ |
/** Le type d'un document, par défaut 'fichier' |
* |
* @access private |
*/ |
var $_type = 'fichier'; |
/** |
* Constructeur |
* |
* @param string formName Le nom du formulaire |
* @param string method Méthode post ou get |
* @param string action L'action du formulaire. |
* @param int target La cible. |
* @param Array attributes Les attributs HTML en plus. |
* @param bool trackSubmit ?? |
* @return void |
* @access public |
*/ |
function HTML_formulaireDocument( $formName, $method = "post", $action, $target = "_self", $attributes = '', $trackSubmit = false ) |
{ |
HTML_QuickForm::HTML_QuickForm($formName, $method, $action, $target, $attributes, $trackSubmit) ; |
} // end of member function HTML_formulaireDocument |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function construitFormulaire($action = PROJET_NOUVEAU_FICHIER) |
{ |
$this->addElement ('text', 'document_nom', PROJET_FICHIER_NOM_DOCUMENT, array ('size' => 40)) ; |
$this->addRule ('document_nom', PROJET_FICHIER_ALERTE, 'required', '', 'client') ; |
$this->addElement ('html', '<tr><td colspan="2">'.PROJET_FICHIER_NOM_DOCUMENT_EXPLICATION.'</td></tr>') ; |
$this->addElement ('textarea', 'document_description', PROJET_FICHIER_DESCRIPTION, array('cols'=>40, 'rows'=>10)) ; |
// on fait un groupe avec les boutons radio pour les mettres sur la même ligne |
$radio[] = &HTML_QuickForm::createElement('radio', 'document_visibilite', 'public', PROJET_FICHIER_PUBLIC, 'public') ; |
$radio[] = &HTML_QuickForm::createElement('radio', 'document_visibilite', 'prive', PROJET_FICHIER_PRIVEE, 'prive'); |
$this->addGroup($radio, null, PROJET_FICHIERS_VISIBILITE, ' '); |
// Le champs fichier si le type du document est un fichier |
if ($this->_type == 'fichier' && $action == PROJET_NOUVEAU_FICHIER) { |
$GLOBALS['fichier'] = $this->addElement ('file', 'fichier', PROJET_FICHIER_LE_FICHIER) ; |
$this->setMaxFileSize(4*1024*1024) ; |
$this->addRule ('fichier', PROJET_FICHIER_ALERTE_PAS_DE_FICHIER, 'required', '', 'client') ; |
} |
$url_annuler = new Net_URL($this->getAttribute('action')) ; |
$url_annuler->removeQueryString(PROJET_VARIABLE_ACTION) ; |
// on fait un groupe avec les boutons pour les mettres sur la même ligne |
$buttons[] = &HTML_QuickForm::createElement('link', 'annuler', PROJET_FICHIER_ANNULER, |
preg_replace ("/&/", "&", $url_annuler->getURL()), PROJET_FICHIER_ANNULER); // Le preg_replace contourne un pb de QuickForm et Net_URL |
// qui remplacent deux fois les & par des & |
// ce qui fait échouer le lien |
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider', PROJET_FICHIER_VALIDER); |
$this->addGroup($buttons, null, null, ' '); |
$this->applyFilter('document_nom', 'addslashes') ; |
$this->applyFilter('document_description', 'addslashes') ; |
$this->setRequiredNote('<span style="color: #ff0000">*</span>'.PROJET_CHAMPS_REQUIS) ; |
} // end of member function construitFormulaire |
/** |
* Permet de spécifier le type de formulaire à montrer |
* |
* @param string type Le type d'un document, 'fichier' ou 'repertoire' |
* @return void |
* @access public |
*/ |
function setType( $type ) |
{ |
if ($type != 'fichier' && $type != 'repertoire') trigger_error ('type invalide', E_USER_ERROR) ; |
$this->_type = $type ; |
} // end of member function setType |
/** |
* |
* |
* @return string |
* @access public |
*/ |
function toHTML( ) |
{ |
$res = HTML_QuickForm::toHTML() ; |
return $res ; |
} // end of member function toHTML |
} // end of HTML_formulaireDocument |
?> |
/branches/livraison_menes/classes/HTML_formulaireCreationWikini.class.php |
---|
New file |
0,0 → 1,108 |
<?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: HTML_formulaireCreationWikini.class.php,v 1.2 2005-09-27 16:39:47 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe HTML_formulaireCreationWikini |
* |
*@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 HTML_formulaireCreationWikini |
* |
*/ |
class HTML_formulaireCreationWikini extends HTML_QuickForm |
{ |
/*** Attributes: ***/ |
/** |
* Constructeur |
* |
* @return void |
* @access public |
*/ |
function HTML_formulaireCreationWikini($formName = "", $method = "post", $action = "", $target = "_self", $attributes = "", $trackSubmit = false) |
{ |
HTML_QuickForm::HTML_QuickForm($formName, $method, $action, $target, $attributes, $trackSubmit) ; |
} // end of member function HTML_formulaireCreationWikini |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function construitFormulaire( ) |
{ |
$this->addElement ('html', '<p>'.PROJET_WIKINI_NOM_EXPLICATION.'</p>') ; |
$this->addElement ('text', 'nom_wikini', PROJET_WIKINI_CHOISIR_NOM) ; |
$this->addRule ('nom_wikini', PROJET_NOM_WIKINI_REQUIS, 'required', '', 'client') ; |
$this->addRule ('nom_wikini', PROJET_WIKINI_NOM_INVALIDE, 'regex', '/^[A-Z][a-z]+[A-Z,0-9][A-Z,a-z,0-9]*$/', 'client') ; |
/* |
$this->addElement ('text', 'prefixe_wikini', PROJET_PREFIXE_WIKINI) ; |
$this->addRule ('prefixe_wikini', PROJET_PREFIXE_WIKINI_REQUIS, 'required', '', 'client'); |
*/ |
$this->setRequiredNote('<span style="color: #ff0000">*</span>'.PROJET_CHAMPS_REQUIS) ; |
$url_annuler = new Net_URL($this->getAttribute('action')) ; |
$url_annuler->removeQueryString(PROJET_VARIABLE_ACTION) ; |
// on fait un groupe avec les boutons pour les mettres sur la même ligne |
$buttons[] = &HTML_QuickForm::createElement('link', 'annuler', PROJET_FICHIER_ANNULER, |
preg_replace ("/&/", "&", $url_annuler->getURL()), PROJET_FICHIER_ANNULER); // Le preg_replace contourne un pb de QuickForm et Net_URL |
// qui remplacent deux fois les & par des & |
// ce qui fait échouer le lien |
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider', PROJET_FICHIER_VALIDER); |
$this->addGroup($buttons, null, null, ' '); |
} // end of member function construitFormulaire |
/** |
* Renvoie le code HTML du formulaire. |
* |
* @return string |
* @access public |
*/ |
function toHTML( ) |
{ |
$res = HTML_QuickForm::toHTML() ; |
return $res ; |
} // end of member function toHTML |
} // end of HTML_formulaireCreationWikini |
?> |
/branches/livraison_menes/classes/HTML_formulaireListe.class.php |
---|
New file |
0,0 → 1,123 |
<?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: HTML_formulaireListe.class.php,v 1.2 2005-09-27 16:40:39 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe HTML_formulaireListe |
* |
*@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 | |
// +------------------------------------------------------------------------------------------------------+ |
/** Inclure le fichier de langue pour utiliser cette classe de façon autonome. */ |
require_once 'HTML/QuickForm.php' ; |
require_once 'HTML/QuickForm/checkbox.php' ; |
require_once 'HTML/QuickForm/select.php' ; |
// +------------------------------------------------------------------------------------------------------+ |
// | LISTE des constantes | |
// +------------------------------------------------------------------------------------------------------+ |
/** |
* class HTML_formulaireListe |
* Cette classe représente un formulaire pour saisir un projet ou le modifier. |
*/ |
class HTML_formulaireListe extends HTML_QuickForm |
{ |
/** |
* Constructeur |
* |
* @param string formName Le nom du formulaire. |
* @param string method Soit get soit post, voir le protocole HTTP |
* @param string action L'action du formulaire. |
* @param string target La cible du formulaire. |
* @param Array attributes Des attributs supplémentaires pour la balise <form> |
* @param bool trackSubmit Pour repérer si la formulaire a été soumis. |
* @return void |
* @access public |
*/ |
function HTML_formulaireListe( $formName = "", $method = "post", $action = "", $target = "_self", $attributes = "", $trackSubmit = false ) |
{ |
HTML_QuickForm::HTML_QuickForm($formName, $method, $action, $target, $attributes, $trackSubmit) ; |
} // end of member function HTML_formulaireListe |
/** |
* Renvoie le code HTML du formulaire. |
* |
* @return string |
* @access public |
*/ |
function toHTML( ) |
{ |
$res = HTML_QuickForm::toHTML() ; |
return $res ; |
} // end of member function toHTML |
/** |
* Ajoute les champs nécessaire au formulaire. |
* |
* @return void |
* @access public |
*/ |
function construitFormulaire() |
{ |
$this->addElement ('text', 'nom_liste', PROJET_NOM_DE_LA_LISTE, array('size' => '20')) ; |
$this->addRule ('nom_liste', PROJET_NOM_DE_LA_LISTE_REQUIRED, 'required', '', 'client') ; |
$this->applyFilter('nom_liste', 'strtolower') ; |
$this->addElement ('text', 'domaine_liste', PROJET_DOMAINE_DE_LA_LISTE, array('size' => '20')) ; |
$this->addRule ('domaine_liste', PROJET_DOMAINE_LISTE_REQUIRED, 'required', '', 'client') ; |
$radio[] = &HTML_QuickForm::createElement('radio', 'liste_visibilite', 1, PROJET_OUI, 1) ; |
$radio[] = &HTML_QuickForm::createElement('radio', 'liste_visibilite', 0, PROJET_NON, 0); |
$this->addGroup($radio, null, PROJET_FORUMS_VISIBILITE, ' '); |
$this->setRequiredNote('<span style="color: #ff0000">*</span>'.PROJET_CHAMPS_REQUIS) ; |
$url_annuler = new Net_URL($this->getAttribute('action')) ; |
$url_annuler->removeQueryString(PROJET_VARIABLE_ACTION) ; |
$buttons[] = &HTML_QuickForm::createElement('link', 'annuler', PROJET_FICHIER_ANNULER, |
preg_replace ("/&/", "&", $url_annuler->getURL()), PROJET_FICHIER_ANNULER); // Le preg_replace contourne un pb de QuickForm et Net_URL |
// qui remplacent deux fois les & par des & |
// ce qui fait échouer le lien |
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider', PROJET_FICHIER_VALIDER); |
$this->addGroup($buttons, null, null, ' '); |
} // end of member function _construitFormulaire |
} // end of HTML_formulaireListe |
?> |
/branches/livraison_menes/classes/HTML_formulaireMail.class.php |
---|
New file |
0,0 → 1,117 |
<?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: HTML_formulaireMail.class.php,v 1.3 2006-07-05 09:44:11 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe HTML_formulaireMail |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.3 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/** Inclure le fichier de langue pour utiliser cette classe de façon autonome. */ |
require_once 'HTML/QuickForm.php' ; |
// +------------------------------------------------------------------------------------------------------+ |
// | LISTE des constantes | |
// +------------------------------------------------------------------------------------------------------+ |
/** |
* class HTML_formulaireMail |
* Cette classe représente un formulaire pour saisir un projet ou le modifier. |
*/ |
class HTML_formulaireMail extends HTML_QuickForm |
{ |
/** |
* Constructeur |
* |
* @param string formName Le nom du formulaire. |
* @param string method Soit get soit post, voir le protocole HTTP |
* @param string action L'action du formulaire. |
* @param string target La cible du formulaire. |
* @param Array attributes Des attributs supplémentaires pour la balise <form> |
* @param bool trackSubmit Pour repérer si la formulaire a été soumis. |
* @return void |
* @access public |
*/ |
function HTML_formulaireProjet( $formName = "", $method = "post", $action = "", $target = "_self", $attributes = "", $trackSubmit = false ) |
{ |
HTML_QuickForm::HTML_QuickForm($formName, $method, $action, $target, $attributes, $trackSubmit) ; |
} // end of member function HTML_formulaireProjet |
/** |
* Renvoie le code HTML du formulaire. |
* |
* @return string |
* @access public |
*/ |
function toHTML( ) |
{ |
$res = HTML_QuickForm::toHTML() ; |
return $res ; |
} // end of member function toHTML |
/** |
* Ajoute les champs nécessaire au formulaire. |
* |
* @return void |
* @access public |
*/ |
function construitFormulaire() |
{ |
$this->addElement ('text', 'mail_titre', PROJET_MAIL_TITRE, array ('size' => 60, 'id' => 'titre_mail')) ; |
$this->addRule ('mail_titre', PROJET_MAIL_TITRE_REQUIS, 'required', '', 'client') ; |
$this->addElement ('textarea', 'mail_corps', PROJET_MAIL_CORPS, array('cols'=>80, 'rows'=>30, 'id' => 'corps_mail')) ; |
$url_annuler = new Net_URL($this->getAttribute('action')) ; |
$url_annuler->removeQueryString(PROJET_VARIABLE_ACTION) ; |
// on fait un groupe avec les boutons pour les mettres sur la même ligne |
$buttons[] = &HTML_QuickForm::createElement('link', 'annuler', PROJET_FICHIER_ANNULER, |
preg_replace ("/&/", "&", $url_annuler->getURL()), PROJET_FICHIER_ANNULER); // Le preg_replace contourne un pb de QuickForm et Net_URL |
// qui remplacent deux fois les & par des & |
// ce qui fait échouer le lien |
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider', PROJET_FICHIER_VALIDER); |
$this->addGroup($buttons, null, null, ' '); |
$this->setRequiredNote('<span style="color: #ff0000">*</span>'.PROJET_CHAMPS_REQUIS) ; |
} // end of member function _construitFormulaire |
} // end of HTML_formulaireProjet |
?> |
/branches/livraison_menes/classes/ezmlmAccessObject.class.php |
---|
New file |
0,0 → 1,318 |
<?php |
//vim: set expandtab tabstop=4 shiftwidth=4: |
// Copyright (C) 1999-2006 Tela Botanica (accueil@tela-botanica.org) |
// |
// Ce logiciel est un programme informatique servant à gérer du contenu et des |
// applications web. |
// Ce logiciel est régi par la licence CeCILL soumise au droit français et |
// respectant les principes de diffusion des logiciels libres. Vous pouvez |
// utiliser, modifier et/ou redistribuer ce programme sous les conditions |
// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA |
// sur le site "http://www.cecill.info". |
// En contrepartie de l'accessibilité au code source et des droits de copie, |
// de modification et de redistribution accordés par cette licence, il n'est |
// offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, |
// seule une responsabilité restreinte pèse sur l'auteur du programme, le |
// titulaire des droits patrimoniaux et les concédants successifs. |
// A cet égard l'attention de l'utilisateur est attirée sur les risques |
// associés au chargement, à l'utilisation, à la modification et/ou au |
// développement et à la reproduction du logiciel par l'utilisateur étant |
// donné sa spécificité de logiciel libre, qui peut le rendre complexe à |
// manipuler et qui le réserve donc à des développeurs et des professionnels |
// avertis possédant des connaissances informatiques approfondies. Les |
// utilisateurs sont donc invités à charger et tester l'adéquation du |
// logiciel à leurs besoins dans des conditions permettant d'assurer la |
// sécurité de leurs systèmes et ou de leurs données et, plus généralement, |
// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. |
// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez |
// pris connaissance de la licence CeCILL, et que vous en avez accepté les |
// termes. |
// ---- |
// CVS : $Id: ezmlmAccessObject.class.php,v 1.3.2.1 2007-03-13 11:06:07 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe ezmlmAccessObject |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2006 |
*@version $Revision: 1.3.2.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
/** Etend XML_Parser_Simple */ |
require_once 'XML/Parser/Simple.php' ; |
/** |
* Les codes erreurs |
*/ |
define ('EZMLM_ACCESS_OBJECT_ACTION_NON_SUPPORTEE', 206) ; |
/** |
* classe ezmlmAccessObject parse les fichiers XML |
* issue de ezmlm |
* |
* @category XML |
* @package projet |
* @author alex |
*/ |
class ezmlmAccessObject extends XML_Parser_Simple { |
/** |
* Le domaine de la liste |
*/ |
var $domaine ; |
/** |
* Le nom de la liste |
*/ |
var $liste ; |
/** |
* Les actions valides |
*/ |
var $actions_supportees = array ('calendrier_messages', |
'message', |
'derniers_messages', |
'messages_auteur', |
'messages_mois', |
'messages_thread', |
'supprimer'); |
/** |
* l'action sélectionnée |
*/ |
var $action ; |
/** |
* La langue 'fr-FR' |
*/ |
var $langue ; |
/** |
* L'url de base |
*/ |
var $url ; |
/** |
* L'identifiant du répertoire |
*/ |
var $identifiant_repertoire ; |
/** |
* Identifiant message |
*/ |
var $identifiant_message; |
/** |
* L'identifiant du répertoire |
*/ |
var $_numeroRepertoireSuivant ; |
/** |
* L'identifiant du répertoire |
*/ |
var $hash_auteur ; |
/** |
* Le mois à afficher |
*/ |
var $mois ; |
var $_numeraRepertoirePrecedent; |
/** |
* Identifiant message |
*/ |
var $_numeroFichierSuivant; |
var $_numeroFichierPrecedent; |
var $chemin_fichier_xml; |
/** |
* Creation de l'objet d'accès |
* |
* |
*/ |
function ezmlmAccessObject ($action, $domaine, $liste, $langue = 'fr', $url = '') { |
$this->XML_Parser_Simple(null, 'func') ; |
$this->action = $action ; |
$this->domaine = $domaine ; |
$this->liste = $liste ; |
$this->langue = $langue ; |
$this->url = $url ; |
} |
/** |
* Gestion des balises |
* |
* Cette méthode spécifie les balises reconnus par ezmlmAccessObject |
* Elle remplace la méthode handleElement de XML_Parser_Simple |
* |
* @access public |
* @param string nom de l'élément (Voir la doc de PHP) |
* @param array attributes |
* @param |
* @link http://fr.php.net/manual/fr/ref.xml.php manuel |
*/ |
function handleElement_ezmlm_message ($name, $attribs, $data) { |
echo $data ; |
} |
function handleElement_message_suivant ($name, $attribs, $data) { |
$this->_numeroRepertoireSuivant = $attribs['NUMERO_REPERTOIRE'] ; |
$this->_numeroFichierSuivant = $attribs['NUMERO'] ; |
} |
function handleElement_message_precedent ($name, $attribs, $data) { |
$this->_numeroRepertoirePrecedent = $attribs['NUMERO_REPERTOIRE'] ; |
$this->_numeroFichierPrecedent = $attribs['NUMERO'] ; |
} |
function handleElement_ezmlm_calendrier_messages ($name, $attribs, $data) { echo $data ; } |
function handleElement_ezmlm_derniers_messages ($name, $attribs, $data) { echo $data ; } |
function handleElement_ezmlm_messages_auteur ($name, $attribs, $data) { echo $data ; } |
function handleElement_ezmlm_messages_mois ($name, $attribs, $data) { echo $data ; } |
function handleElement_ezmlm_messages_thread ($name, $attribs, $data) { echo $data ; } |
/** |
* Choix de l'action |
* |
* Liste des actions : |
* 'calendrier_messages' |
* |
* @access public |
* @param string une action qui doit être supporté |
*/ |
function setAction($action) { |
// vérification de l'action |
if (!in_array($action, $this->actions_supportees)) { |
return raiseError(EZMLM_ACCESS_OBJECT_ACTION_NON_SUPPORTEE) ; |
} |
$this->action = $action ; |
// Libere les ressources (XML_Parser::free) |
$this->free(); |
// Charge la nouvelle action |
$this->load() ; |
} |
/** |
* Charge une action |
* |
* cad affecte un fichier xml au parser |
* |
* @access public |
*/ |
function load() { |
$this->chemin_fichier_xml = PROJET_SERVEUR_VPOPMAIL.'/'.$this->action.'.php?domaine='. |
$this->domaine.'&liste='.$this->liste.'&langue='. |
$this->langue ; |
if ($this->url != '') $this->chemin_fichier_xml.= '&url='.urlencode($this->url) ; |
if (isset ($this->identifiant_repertoire)) |
$this->chemin_fichier_xml .= '&actionargs[]='.$this->identifiant_repertoire ; |
if (isset ($this->identifiant_message)) |
$this->chemin_fichier_xml .= '&actionargs[]='.$this->identifiant_message ; |
if (isset ($this->hash_auteur)) |
$this->chemin_fichier_xml .= '&actionargs[]='.$this->hash_auteur ; |
if (isset ($this->mois)) |
$this->chemin_fichier_xml .= '&actionargs[]='.$this->mois ; |
$this->setInputFile($this->chemin_fichier_xml) ; |
} |
/** |
* Précise un message à extraire |
* |
* On indique le numéro de répertoire ezmlm et le numéro du message |
* @param integer le numéro du répertoire |
* @param integer le numéro du message |
* |
*/ |
function setIdMessage ($identifiant_repertoire, $identifiant_message) { |
$this->identifiant_repertoire = $identifiant_repertoire ; |
$this->identifiant_message = $identifiant_message ; |
} |
/** |
* Précise un auteur |
* |
* On indique le numéro de répertoire ezmlm et le numéro du message |
* @param string le hash d'un auteur |
* |
*/ |
function setHashAuteur ($hash_auteur) { |
$this->hash_auteur = $hash_auteur; |
} |
/** |
* Précise un mois |
* |
* On indique le numéro de répertoire ezmlm et le numéro du message |
* @param string le hash d'un auteur |
* |
*/ |
function setMois ($mois) { |
$this->mois = $mois; |
} |
/** |
* Renvoi le numero du repertoire suivant |
* |
* |
*/ |
function getNumeroRepertoireSuivant() { return $this->_numeroRepertoireSuivant; } |
function getNumeroFichierSuivant () { return $this->_numeroFichierSuivant ; } |
function getNumeroRepertoirePrecedent() { return $this->_numeroRepertoirePrecedent; } |
function getNumeroFichierPrecedent () { return $this->_numeroFichierPrecedent ; } |
function parse() |
{ |
if (substr(phpversion(), 0, 1) == '5') { |
$xml = new SimpleXMLElement(file_get_contents($this->chemin_fichier_xml)); |
echo utf8_decode ($xml); |
switch ($this->action) { |
case 'calendrier_messages' : echo utf8_decode($xml->ezmlm_calendrier_messages); |
break; |
case 'message': |
$this->_numeroRepertoirePrecedent = $xml->message_precedent['numero_repertoire']; |
$this->_numeroRepertoireSuivant = $xml->message_suivant['numero_repertoire']; |
$this->_numeroFichierSuivant = $xml->message_suivant['numero']; |
$this->_numeroFichierPrecedent = $xml->message_precedent['numero']; |
} |
} else { |
return parent::parse(); |
} |
} |
} |
?> |
/branches/livraison_menes/classes/commande_serveur.class.php |
---|
New file |
0,0 → 1,107 |
<?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: commande_serveur.class.php,v 1.2 2005-09-27 16:37:40 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe commande_serveur |
* |
*@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 commande_serveur |
* Cette classe permet d'accéder au fichier ezmlm.sh afin de lui ajouter des |
* commandes qui seront effectués périodiquement par le serveur. |
*/ |
class commande_serveur |
{ |
/*** Attributes: ***/ |
/** |
* Pointeur vers le fichier des commandes |
* @access private |
*/ |
var $_fichier; |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function commande_serveur($fichier) |
{ |
$this->_fichier = fopen ($fichier,'a+') ; |
if (!$this->_fichier) { |
return 'Impossible d\'ouvrir le fichier de commande' ; |
} |
} // end of member function commande_serveur |
/** |
* |
* |
* @param string commande La commande, une chaine à ajouter à la fin du fichier ezmlm.sh |
* @return bool |
* @access public |
*/ |
function ajouterCommande( $commande ) |
{ |
fwrite ($this->_fichier, "\n".$commande) ; |
} // end of member function ajouterCommande |
/** |
* Destructeur |
* |
* @return void |
* @access public |
*/ |
function _commande_serveur($fichier) |
{ |
fclose ($this->_fichier) ; |
} // end of member function commande_serveur |
/** |
* |
* |
* @return |
*/ |
function enleverToutesCommandes () { |
ftruncate ($this->_fichier, 12) ; |
} |
} // end of commande_serveur |
?> |
/branches/livraison_menes/classes/HTML_formulaireInscriptionProjet.class.php |
---|
New file |
0,0 → 1,114 |
<?php |
// +------------------------------------------------------------------------------------------------------+ |
// | 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: HTML_formulaireInscriptionProjet.class.php,v 1.2 2005-09-27 16:40:23 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe HTML_formulaireInscriptionProjet |
* Elle se base sur la table projet_statut_utilisateur |
* |
*@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 | |
// +------------------------------------------------------------------------------------------------------+ |
require_once 'HTML/QuickForm/radio.php'; |
/** |
* class HTML_formulaireInscriptionProjet |
* |
*/ |
class HTML_formulaireInscriptionProjet extends HTML_QuickForm |
{ |
/*** Attributes: ***/ |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function HTML_formulaireInscriptionProjet( $formName = '', $method = 'post', $action = '', $target = '_self', $attributes = '', $trackSubmit = false ) |
{ |
HTML_QuickForm::HTML_QuickForm($formName, $method, $action, $target, $attributes, $trackSubmit) ; |
} // end of member function HTML_formulaireInscriptionProjet |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function construitFormulaire(& $projet ) |
{ |
$squelette =& $this->defaultRenderer(); |
$squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'{content}'."\n".'</form>'."\n"); |
$modele_element_debut = '<li class="groupe_formulaire">'."\n".'<span class="inscription_label1">{label}<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required --></span>'. |
"\n".'{element}'."\n".''."\n". |
'<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n". |
''."\n" ; |
$modele_element_fin = "\n".'<span class="inscription_label2">{label}<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required --></span>'. |
"\n".'{element}'."\n".''."\n". |
'<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n". |
'</li>'."\n" ; |
$squelette->setElementTemplate( '<li class="liste_inscription">'."\n".'<span class="inscription_label">{label}<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required --></span>'. |
"\n".'{element}'."\n".''."\n". |
'<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n". |
'</li>'."\n"); |
$squelette->setElementTemplate( '<ul><li class="groupe_bouton">{element}', 'annuler'); |
$squelette->setElementTemplate( '{element}</li></ul>', 'valider'); |
$squelette->setRequiredNoteTemplate("\n".'<p>'."\n".'<span class="symbole_obligatoire">*</span> {requiredNote}'."\n".'</p>'."\n"); |
if ($projet->avoirListe()) { |
$this->addElement ('radio', 'radio_inscription_liste', ' ', PROJET_INSCRIPTION_LISTE_NORMAL, 2) ; |
$this->addElement ('radio', 'radio_inscription_liste', ' ', PROJET_INSCRIPTION_PAS_DE_MAIL, 1) ; |
// Indisponible pour le moment |
//$this->addElement ('radio', 'radio_inscription_liste', ' ', PROJET_INSCRIPTION_LISTE_RESUME, 2) ; |
} |
$this->addElement ('hidden', 'id_projet', $projet->getId()) ; |
$url_annuler = new Net_URL($this->getAttribute('action')) ; |
$url_annuler->removeQueryString(PROJET_VARIABLE_ACTION) ; |
$url_annuler->removeQueryString(PROJET_VARIABLE_ID_PROJET) ; |
// on fait un groupe avec les boutons pour les mettres sur la même ligne |
$buttons[] = &HTML_QuickForm::createElement('link', 'annuler', PROJET_FICHIER_ANNULER, |
preg_replace ("/&/", "&", $url_annuler->getURL()), PROJET_FICHIER_ANNULER); // Le preg_replace contourne un pb de QuickForm et Net_URL |
// qui remplacent deux fois les & par des & |
// ce qui fait échouer le lien |
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider_inscription_projet', PROJET_S_INSCRIRE_AU_PROJET); |
$this->addGroup($buttons, null, null, ' '); |
} // end of member function construitFormulaire |
} // end of HTML_formulaireInscriptionProjet |
?> |
/branches/livraison_menes/classes/projetTemplate.class.php |
---|
New file |
0,0 → 1,67 |
<?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: projetTemplate.class.php,v 1.1 2006-09-15 12:36:32 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe controleur projet |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once 'PEAR.php' ; |
class projetTemplate extends PEAR { |
var $_db ; |
function projetTemplate(&$objetDB) { |
$this->_db = $objetDB ; |
} |
function getTemplate ($id_template, $lang='fr-FR', $argument = 0) { |
$requete = 'select pt_template from projet_template where pt_id_template='.$id_template. |
' and pt_i18n like "'.$lang.'%"' ; |
if ($argument != 0) $requete .= ' and pt_argument='.$argument ; |
$resultat = $this->_db->query($requete) ; |
if (DB::isError($resultat)) return $this->raiseError ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ; |
if ($resultat->numRows() == 0) return $this->raiseError ('Aucun template avec l\'identifiant: '.$id_template. |
' et la langue: '.$lang) ; |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
return $ligne->pt_template ; |
} |
} |
?> |
/branches/livraison_menes/classes/inscription_liste.class.php |
---|
New file |
0,0 → 1,236 |
<?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: inscription_liste.class.php,v 1.5 2006-04-19 13:50:49 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe inscription_liste |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.5 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/** |
* class isncription_liste |
* |
*/ |
class inscription_liste |
{ |
/*** Attributes: ***/ |
/** |
* Identifiant de la liste |
* @access private |
*/ |
var $_id_liste; |
/** |
* Identifiant de l'utilisateur |
* @access private |
*/ |
var $_id_utilisateur; |
/** |
* Une ressource PEAR::DB |
* @access private |
*/ |
var $_db; |
/** |
* Le type d'inscription indique : - 0 : pas d'email - 1 : normale - 2 : résumé |
* @access private |
*/ |
var $_type_inscription; |
/** |
* Constructeur |
* |
* @param DB objetDB Une ressource PEAR::DB |
* @return void |
* @access public |
*/ |
function inscription_liste( &$objetDB ) |
{ |
$this->_db = $objetDB ; |
} // end of member function inscription_liste |
/** |
* Renvoie un tableau avec la liste des inscrit à une liste. |
* |
* @param int id_liste L'identifiant de la liste |
* @return Array |
* @access public |
*/ |
function getInscritsListe( $id_liste ) |
{ |
} // end of member function getInscritsListe |
/** |
* |
* |
* @param annire utilisateur |
* @param liste_discussion id_liste |
* @param int type_inscription |
* @return void |
* @access public |
*/ |
function inscrireUtilisateur( &$utilisateur, &$liste, $type_inscription ) |
{ |
$requete = 'update projet_inscription_liste set '. |
'pil_id_liste='.$liste->getId().', pil_id_statut='.$type_inscription.' where pil_id_utilisateur='.$utilisateur->getInfo('identifiant') ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
echo ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
if ($this->_db->affectedRows() == 0) { |
$requete = 'insert into projet_inscription_liste set pil_id_utilisateur='.$utilisateur->getInfo('identifiant'). |
', pil_id_liste='.$liste->getId().', pil_id_statut='.$type_inscription ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
echo ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
} |
// Ajout dans la liste des commandes au serveur |
// On inscrit le créateur de la liste |
$resultat_ajout_utilisateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/ajout_abonne.php?domaine='. |
$liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$utilisateur->getInfo('mail')) ; |
} // end of member function inscrireUtilisateur |
/** |
* |
* |
* @param int id_utilisateur |
* @param int id_liste |
* @return void |
* @access public |
*/ |
function desinscrireUtilisateur( &$utilisateur, &$liste ) |
{ |
$requete = 'delete from projet_inscription_liste where pil_id_utilisateur='.$utilisateur->getInfo('identifiant').' and pil_id_liste='.$liste->getId() ; |
$resultat = $this->_db->query ($requete) ; |
$resultat_suppression_utilisateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/suppression_abonne.php?domaine='. |
$liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$utilisateur->getInfo('mail')) ; |
} // end of member function desinscrireUtilisateur |
/** |
* |
* |
* @param int id_liste |
* @param int id_utilisateur |
* @param int type_inscription |
* @return void |
* @access public |
*/ |
function modifierTypeInscription( $liste, $utilisateur, $type_inscription ) |
{ |
// envoie d'une demande d'inscription par email à la liste |
//include_once 'Mail.php' ; |
switch ($type_inscription) { |
case 0 : |
// Ajout du modérateur en tant qu'utilisateur |
$resultat_suppression_utilisateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/suppression_abonne.php?domaine='. |
$liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$utilisateur->getInfo('mail')) ; |
break ; |
case 1 : |
break ; |
case 2 : |
// Ajout d'un utilisateur |
$resultat_ajout_utilisateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/ajout_abonne.php?domaine='. |
$liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$utilisateur->getInfo('mail')) ; |
break ; |
} |
} // end of member function modifierTypeInscription |
/** |
* Renvoie la liste des statuts d'un utilisateur |
* |
* @param int id_utilisateur |
* @return Array |
* @access public |
*/ |
function getStatutsInscrit( $id_utilisateur ) |
{ |
$requete = 'select pil_id_liste, pil_id_statut from projet_inscription_liste where pil_id_utilisateur='.$id_utilisateur ; |
$resultat = $this->_db->query ($requete) ;echo $requete; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$tableau_resultat = array() ; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
$tableau_resultat[$ligne->pil_id_liste] = $ligne->pil_id_statut ; |
} |
return $tableau_resultat ; |
} // end of member function getStatutsInscrit |
/** |
* Renvoie le statut d'un inscrit à une liste |
* |
* @param int id_liste |
* @param int id_utilisateur |
* @return int |
* @access public |
*/ |
function getStatutInscrit( $id_liste, &$auth ) |
{ |
// Récupération de la liste des listes !! |
$requete = 'select pl_nom_liste, pl_domaine from projet_liste where pl_id_liste='.$id_liste ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ; |
$xml = file_get_contents(PROJET_SERVEUR_VPOPMAIL.'/liste_abonnes.php?domaine='. |
$ligne->pl_domaine.'&liste='.$ligne->pl_nom_liste) ; |
$tableau_mail = array() ; |
$tableau_ligne = explode ('<email>', $xml) ; |
foreach ($tableau_ligne as $ligne) array_push ($tableau_mail, strip_tags($ligne)) ; |
array_shift($tableau_mail) ; |
if (in_array($auth->getUsername(), $tableau_mail)) { |
return 2; // Inscrit est le statut 2 |
} |
return 0 ; |
} // end of member function getStatutInscrit |
} // end of isncription_liste |
?> |
/branches/livraison_menes/classes/annuaire.class.php |
---|
New file |
0,0 → 1,150 |
<?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: annuaire.class.php,v 1.5 2006-07-04 09:25:38 alexandre_tb Exp $ |
/** |
* Application annuaire |
* |
* La classe annuaire |
* |
*@package annuaire |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.5 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once 'PEAR.php' ; |
/** |
* class annuaire |
* |
*/ |
class annuaire extends PEAR |
{ |
/*** Attributes: ***/ |
/** |
* |
* @access private |
*/ |
var $_db; |
/** |
* |
* @access private |
*/ |
var $_id_utilisateur; |
/** |
* Tableau contenant les noms des champs |
* @access private |
*/ |
var $_champs_base; |
/** |
* |
* |
* @param int objetDB Une ressource PEAR::DB |
* @param Array param un tableau indiquant les noms des champs dans la base. 'nom' => 'CHAMPS_NOM', |
'prenom' => .. 'date_inscription' => .. 'identifiant' => ... 'ville' => ... |
'pays' => ... |
* @return void |
* @access public |
*/ |
function annuaire( &$objetDB, $param ) |
{ |
$this->_db = $objetDB ; |
$this->_champs_base = $param ; |
} // end of member function annuaire |
/** |
* Spécifie l'identifiant d'un utilisateur ou plusieurs utilisateurs |
* |
* @param mixed id_utilisateur L'identifiant d'un utilisateur |
* @return void |
* @access public |
*/ |
function setId( $id_utilisateur ) |
{ |
$this->_id_utilisateur = $id_utilisateur ; |
} // end of member function setId |
/** |
* Renvoie l'info de l'utilisateur courant. Sans paramètre, renvoie un tableau avec |
* tous les champs. |
* |
* @param string parametre Un paramètre de l'objet : - 'nom', 'prenom' .... |
* @return void |
* @access public |
*/ |
function getInfo( $parametre ) |
{ |
$requete = 'select '.$this->_champs_base[$parametre]. |
' from '.$this->_champs_base['table']. |
' where '.$this->_champs_base['identifiant'].'='.$this->_id_utilisateur ; |
$resultat = $GLOBALS['projet_db']->query($requete) ; |
if (DB::isError($resultat)) { |
echo $requete.' erreur '.$resultat->getMessage() ; |
} |
$ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC) ; |
return $ligne[$this->_champs_base[$parametre]] ; |
} // end of member function getInfo |
/** |
* Renvoie la liste de tous el inscris ou celle dont le champs passé en paramètre |
* ressemble à la valeur souhaité. Ex : $maliste->getListe (array('nom' => '%toto')) |
* ; renvoie la liste des adhérents dont le nom commence par toto. |
* |
* @param Array param Un tableau du type 'nom' => 'chaine' |
* @return void |
* @access public |
*/ |
function getListe( $param ) |
{ |
} // end of member function getListe |
/** |
* Renvoie la liste des inscrits dont le nom commence par lettre |
* |
* @param char lettre La lettre |
* @return void |
* @access public |
*/ |
function getListeAlphabetique( $lettre ) |
{ |
} // end of member function getListeAlphabetique |
} // end of annuaire |
?> |
/branches/livraison_menes/classes/projet.class.php |
---|
New file |
0,0 → 1,895 |
<?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: projet.class.php,v 1.7.2.1 2007-04-11 12:24:47 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe projet |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.7.2.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once PROJET_CHEMIN_CLASSES.'document.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'liste_discussion.class.php' ; |
/* Permet la récupération d'un nouvel identifiant d'une table.*/ |
require_once PROJET_CHEMIN_BIBLIOTHEQUE_API.'sql/SQL_manipulation.fonct.php'; |
include_once 'Mail.php' ; |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/** |
* class projet |
* |
*/ |
class projet |
{ |
/** Aggregations: */ |
/** |
* Le tableau d'objet document associés au projet |
* |
*/ |
var $_documents_associes = array(); |
var $_listes_associes = array(); |
/** Compositions: */ |
/*** Attributes: ***/ |
/** |
* L'identifiant du projet. |
* @access private |
*/ |
var $_id_projet; |
/** |
* Le titre du projet, tel que dans la base de donnée. |
* @access private |
*/ |
var $_titre; |
/** |
* La description du projet, tel que dans la base. |
* @access private |
*/ |
var $_description; |
/** |
* L'URL d'un site sur le projet. Facultatif. |
* @access private |
*/ |
var $_espace_internet; |
/** |
* Le nom du wikini associé au projet, avec la syntaxe wikini. Vide par défaut. |
* @access private |
*/ |
var $_nom_wikini; |
/** |
* Date de création du projet. A priori ne varie pas dans le temps. |
* @access private |
*/ |
var $_date_creation; |
/** |
* Le chemin relatif vers le répertoire contenant les wikinis. |
* @access private |
*/ |
var $_chemin_wikini; |
/** |
* Une connexion vers la base de donnée. |
* @access private |
*/ |
var $_db; |
/** |
* Contient le nom du répertoire du projet tel que sur le disque. |
* @access private |
*/ |
var $_nom_repertoire; |
/** |
* Le chemin jusqu'au répertoire où seront stockés les fichiers. |
* @access private |
*/ |
var $_chemin_repertoire; |
/** |
* Vaut vrai si le projet est un projet racine et s'il est le seul. |
* @access private |
*/ |
var $_est_racine; |
/** |
* Le résumé du projet |
* @access private |
*/ |
var $_resume; |
/** |
* Contient le numéro du type du projet |
* @access private |
*/ |
var $_type; |
/** |
* Indique si l'inscription au projet est moderes |
* @access private |
*/ |
var $_isModere; |
/** |
* Indique si le projet a des documents |
* @access private |
*/ |
var $_avoirDocument; |
/** |
* |
* PHP5 |
* @return projet |
* @access public |
*/ |
function __construct( &$dbObject, $id_projet = "") |
{ |
$this->projet($dbObject, $id_projet); |
} // end of member function __construct |
/** |
* |
* |
* @param DB dbObject Un objet PEAR:DB |
* @param int id_projet On passe un identifiant de projet au constructeur. Cela lui permet de faire une |
* première requête pour les infos de bases comme le titre, le description etc. |
* @return projet |
* @access public |
*/ |
function projet( &$dbObject, $id_projet = "") |
{ |
$this->_db = $dbObject ; |
if ($id_projet != "") { |
$requete = "select * from projet where p_id=$id_projet" ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
// Affectations dans les propriétés |
$this->_id_projet = $ligne->p_id ; |
$this->_titre = $ligne->p_titre ; |
$this->_description = $ligne->p_description ; |
$this->_espace_internet = $ligne->p_espace_internet ; |
$this->_date_creation = $ligne->p_date_creation ; |
$this->_nom_wikini = $ligne->p_wikini ; |
$this->_resume = $ligne->p_resume; |
$this->_type = $ligne->p_type ; |
// On récupère le nom du répertoire |
$this->_nom_repertoire = $ligne->p_nom_repertoire ; |
$this->_isModere = $ligne->p_modere; |
$this->_avoirDocument = $ligne->p_avoir_document; |
// on regarde si on a à faire au projet racine |
if (PROJET_UTILISE_HIERARCHIE) { |
$requete = 'select ph_id_projet_pere, ph_id_projet_fils from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
if (!$resultat->numRows()) { |
$this->_est_racine = true ; |
} else { |
$this->_est_racine = false ; |
} |
} |
} |
} // end of member function projet |
/** |
* |
* |
* @param DB dbObject Un objet PEAR:DB |
* @param int id_projet On passe un identifiant de projet au constructeur. |
* @return bool |
* @access public |
*/ |
function projetExiste( &$dbObject, $id_projet) |
{ |
if ($id_projet != "") { |
$requete = "select * from projet where p_id=$id_projet" ; |
$resultat = $dbObject->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
if ($resultat->numRows() != 0) { |
return true ; |
} |
} |
} // end of member function projet |
/** |
* |
* |
* @param int id_projet |
* @return string |
* @access public |
*/ |
function getTitre( $id_projet = "" ) |
{ |
return $this->_titre ; |
} // end of member function getTitre |
/** |
* |
* |
* @return string |
* @access public |
*/ |
function getResume( ) |
{ |
return $this->_resume ; |
} // end of member function getResume |
/** |
* Renvoie l'identifiant du projet courant. |
* |
* @return int |
* @access public |
*/ |
function getId( ) |
{ |
return $this->_id_projet ; |
} // end of member function getId |
/** |
* |
* |
* @return string |
* @access public |
*/ |
function getDescription( ) |
{ |
return $this->_description; |
} // end of member function getDescription |
/** |
* |
* |
* @return string |
* @access public |
*/ |
function getEspaceInternet( ) |
{ |
return $this->_espace_internet; |
} // end of member function getEspaceInternet |
/** |
* Charge dans l'objet projet, les listes de discussion |
* ['nom_liste'] |
* ['domaine'] |
* ['adresse'] |
* |
* @return boolean true en cas de succès |
* @access public |
*/ |
function getListesAssociees( ) |
{ |
// On rajoute un test pour éviter l'appel SQL si il a déjà été fait une fois |
if (count($this->_listes_associes) > 0) return ; |
$requete = "select pl_id_liste from projet_lien_liste where pl_id_projet=".$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
$retour = array() ; |
if ($resultat->numRows()) { |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
$this->_listes_associes[] = new liste_discussion($ligne->pl_id_liste, $this->_db) ; |
} |
} // end of member function getListesAssociees |
/** |
* Renvoie vrai si le projet a au moins une liste |
* |
* @return bool |
* @access public |
*/ |
function avoirListe( ) |
{ |
$this->getListesAssociees() ; |
if (count($this->_listes_associes)) { |
return true ; |
} |
return false ; |
} |
/** |
* Renvoie vrai si le projet a au moins un document, fichier ou repertoire |
* |
* Mis en place pour des raisons de performances avant la methode getListesDocuments etait utilisee |
* |
* @return bool |
* @access public |
*/ |
function avoirDocument( ) |
{ |
return $this->_avoirDocument; |
} |
/** |
* Permet de fixer la colonne p_avoir_document à 1 |
* |
* Mis en place pour des raisons de performances avant la methode getListesDocuments etait utilisee |
* |
* @param bool |
* @return mixed true si la requete fonctionne |
* @access public |
*/ |
function setAvoirDocument($bool) |
{ |
$val = 0 ; |
if ($bool) $val = 1; |
$requete = 'update projet set p_avoir_document='.$val.' where p_id='.$this->_id_projet; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
echo ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
return true; |
} |
/** |
* Renvoie la liste des documents associés sous forme d'un tableau, avec les |
* informations afférentes. 0 => "nom (cliquable)" |
"Taille" |
"Date |
* de création" "Proriétaire" "Visibilité" "Action |
* (cliquable)" |
* |
* @param visibilite visibilite Si visibilite est à prive, tous les fichiers sont renvoyés ainsi qu'une entrée |
* pour indiquer la visibilité du document. |
* @return Array |
* @access public |
*/ |
function getListesDocuments( $chemin, $chemin_icones = "icones/" ) |
{ |
// On réalise une requete sur projet_documents avec une jointure sur l'annuaire |
// et sur gen_type_de_fichier pour envoyer un résultat complet. |
// On exclue les fichiers racines cad pd_pere is null |
$requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' order by pd_nom' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$tableau_document = array() ; |
// Un compteur |
$i = 0 ; |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_document, new document ($ligne->pd_id, &$this->_db, $chemin, $chemin_icones)) ; |
} |
return $tableau_document ; |
} // end of member function getListesDocuments |
/** |
* Renvoie un tableau avec tous les répertoires d'un projet, imbriqué. ['rep1'], |
* ['rep2'] => array (['rep21'], ['rep22']), etc . |
* |
* @return Array |
* @access public |
*/ |
function getListeRepertoireHierarchisee( ) |
{ |
// On ne prend que les répertoires |
$requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' and pd_ce_type=0 order by pd_nom' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$tableau_document = array() ; |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_document, new document ($ligne->pd_id, $this->_db)); |
} |
return $tableau_document ; |
} // end of member function getListeRepertoireHierarchisee |
/** |
* Renvoie un tableau comprenant tous les objets projet de la base. |
* |
* @return Array |
* @static |
* @access public |
*/ |
function getTousLesProjets(&$objetDB, $exclu = '') |
{ |
$sql = ''; |
if (count($this->_projet_exclu)) { |
$sql = 'where p_id not in ('; |
foreach ($this->_projet_exclu as $valeur) { |
$sql .= $valeur.',' ; |
} |
$sql[count($sql)-1] = ')'; |
} |
$requete = 'select p_id from projet '.$sql.' order by p_titre' ; |
$resultat = $objetDB->query ($requete) ; |
if (DB::isError($resultat)) { |
echo ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$tableau_resultat = array() ; |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ; |
} |
return $tableau_resultat ; |
} // end of member function getTousLesProjets |
/** |
* Renvoie un tableau comprenant les objets projet de la base du type $type. |
* |
* @return Array |
* @static |
* @access public |
*/ |
function getProjetDuType($type, &$objetDB) |
{ |
$requete = "select p_id from projet where p_type=$type order by p_titre" ; |
$resultat = $objetDB->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$tableau_resultat = array() ; |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ; |
} |
return $tableau_resultat ; |
} // end of member function getTousLesProjets |
/** |
* Renvoie un le projet racine. |
* |
* @return projet |
* @static |
* @access public |
*/ |
function getProjetRacine(&$objetDB) |
{ |
$requete = "select p_id from projet where p_id not in (select ph_id_projet_fils from projet_hierarchie)" ; |
$resultat = $objetDB->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
if ($resultat->numRows() == 1) { |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ; |
return new projet($objetDB, $ligne->p_id) ; |
} |
$tableau_resultat = array() ; |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ; |
} |
return $tableau_resultat ; |
} // end of member function getTousLesProjets |
/** |
* Desctructeur de la classe. Libère la mémoire, ferme les connexions et fichiers. |
* |
* @return void |
* @access public |
*/ |
function __destruct( ) |
{ |
} // end of member function __destruct |
/** |
* Supprime le projet courrant. Il s'ensuit une suppression en cascade de tous les |
* éléments liés. |
* |
* @return void |
* @access public |
*/ |
function supprimer( ) |
{ |
} // end of member function supprimer |
/** |
* Permet d'enregistrer une ligne dans la table concernée. |
* |
* @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments |
* du formulaire. |
* @return int |
* @access public |
*/ |
function enregistrerSQL( $tableau_de_valeur ) |
{ |
$nom_repertoire = projet::genereNomRepertoire($tableau_de_valeur['projet_titre'], $this->_db) ; |
if (!$this->_creationRepertoire ($nom_repertoire)) { |
echo 'Impossible de crée un répertoire'.$nom_repertoire ; |
return false ; |
} |
// Traitement du type |
if (!PROJET_UTILISE_TYPE) { |
$tableau_de_valeur['projet_type'] = 0 ; |
} |
$id = SQL_obtenirNouveauId($this->_db, 'projet', 'p_id') ; |
$requete = 'insert into projet set p_id='.$id ; |
if (!isset($tableau_de_valeur['projet_wikini'])) { |
$tableau_de_valeur['projet_wikini']=''; |
} |
$requete .= ', p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'. |
', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'", p_date_creation=NOW()'. |
', p_wikini="'.$tableau_de_valeur['projet_wikini'].'", p_nom_repertoire="'.$nom_repertoire.'", p_resume="'.$tableau_de_valeur['projet_resume']. |
'", p_type='.$tableau_de_valeur['projet_type'].', p_modere="'.$tableau_de_valeur['projet_moderation'].'"' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
// On affecte à l'objet projet son identifiant |
$this->_id_projet = $id ; |
//insertion dans projet_hiérarchie |
if (PROJET_UTILISE_HIERARCHIE) { |
$requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso']. |
', ph_id_projet_fils='.$id ; |
$resultat = $this->_db->query ($requete) ; |
} |
return true ; |
} // end of member function enregistrerSQL |
/** |
* Permet de mettre à jour une ligne dans la table concernée. |
* |
* @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments |
* du formulaire. |
* @return int |
* @access public |
*/ |
function majSQL( $tableau_de_valeur ) |
{ |
// Traitement du type |
if (!PROJET_UTILISE_TYPE) { |
$tableau_de_valeur['projet_type'] = 0 ; |
} |
$requete = 'update projet set '; |
$requete .= 'p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'. |
', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'"'. |
', p_resume="'.$tableau_de_valeur['projet_resume'].'", p_type='.$tableau_de_valeur['projet_type']. |
', p_modere='.$tableau_de_valeur['projet_moderation']. |
' where p_id="'.$this->_id_projet.'"' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
if (PROJET_UTILISE_HIERARCHIE) { |
// suppression dans projet_hierarchie |
$requete = 'delete from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
//insertion dans projet_hiérarchie |
$requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso']. |
', ph_id_projet_fils='.$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
} |
return true ; |
} // end of member function enregistrerSQL |
/** |
* Met à jour dans la base de donnée le champs p_nom_wikini |
* |
* @param int nom_wikini Le nouveau nom wikini |
* @return bool |
* @access public |
*/ |
function majNomWikini( $nom_wikini ) |
{ |
$requete = 'update projet set p_wikini="'.$nom_wikini.'" where p_id="'.$this->_id_projet.'"' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
return true ; |
} // end of member function majNomWikini |
/** |
* |
* |
* @param string code_sql |
* @return bool |
* @access public |
*/ |
function suppressionSQL() |
{ |
$msg = '' ; |
// Supression du répertoire du projet |
if (!$this->_suppression_repertoire()) { |
$msg = 'La suppression du répertoire n\'a pas fonctionné' ; |
} |
// A ajouter la suppression des documents associés |
// La suppression des évènements associés |
// Le projet lui-même |
$requete = "delete from projet where p_id=".$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
if (PROJET_UTILISE_HIERARCHIE) { |
$requete = "delete from projet_hierarchie where ph_id_projet_fils=".$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
} |
$requete = "delete from projet_statut_utilisateurs where psu_id_projet=".$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
return $msg ; |
} // end of member function suppressionSQL |
/** |
* Supprime le répertoire associé au projet (le répertoire doit être vide). |
* |
* @return void |
* @access private |
*/ |
function _suppression_repertoire( ) |
{ |
return rmdir ($this->_chemin_repertoire.$this->_nom_repertoire) ; |
} // end of member function _suppression_repertoire |
/** |
* Permet de créer le répertoire associé au projet. |
* |
* @param string nom_repertoire Le nom du répertoire à créer. |
* @return boolean |
* @access private |
*/ |
function _creationRepertoire( $nom_repertoire ) |
{ |
return mkdir ($this->_chemin_repertoire.$nom_repertoire) ; |
} // end of member function _creationRepertoire |
/** |
* Permet d'indiquer où seront stockés les fichiers. |
* |
* @param string cheminRepertoire Le chemin jusqu'au répertoire où seront stockés les fichiers. |
* @return void |
* @access public |
*/ |
function setCheminRepertoire( $cheminRepertoire ) |
{ |
$this->_chemin_repertoire = $cheminRepertoire ; |
} // end of member function setCheminRepertoire |
/** |
* Génère un nom de répertoire à partir de la première lettre de la chaine passé en |
* paramètre et de l'identifiant du dernier projet. |
* |
* @param string chaine Une chaine à partir de laquelle sera générer le nom du répertoire. |
* @param DB objetDB un objet PEAR::DB |
* @return string |
* @static |
* @access public |
*/ |
function genereNomRepertoire( $chaine, &$objetDB ) |
{ |
$requete = "select p_id from projet order by p_id desc limit 0,1" ; |
$resultat = $objetDB->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
if ($resultat->numRows() > 0) { |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
$nom = strtoupper(substr($chaine, 0, 1)) ; |
$nom .= $ligne->p_id + 1 ; |
} |
else { |
$nom = strtoupper(substr($chaine, 0, 1)) ; |
$nom .= 1 ; |
} |
return $nom ; |
} // end of member function genereNomRepertoire |
/** |
* Permet de récupérer le nom du répertoire d'un projet. |
* |
* @return string |
* @access public |
*/ |
function getNomRepertoire( ) |
{ |
return $this->_nom_repertoire ; |
} // end of member function getNomRepertoire |
/** |
* Ajoute une liste à un projet |
* Effectue une insertion dans projet_lien_liste |
* |
* @param liste_discussion liste Une instance de la classe liste_discussion |
* @return void |
* @access public |
*/ |
function ajouterListe( &$liste ) |
{ |
$requete = "insert into projet_lien_liste set pl_id_liste=".$liste->getId(). |
', pl_id_projet='.$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
} // end of member function ajouterListe |
/** |
* Supprime la liste de discussion associée au projet |
* |
* @return void |
* @access public |
*/ |
function supprimerListe(&$liste) |
{ |
$requete = 'delete from projet_lien_liste where pl_id_liste='.$liste->getId() ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$requete = 'delete from projet_liste where pl_id_liste='.$liste->getId() ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
} // end of member function supprimerListe |
/** |
* Renvoie vrai si le projet est racine. |
* |
* @return bool |
* @access public |
*/ |
function isRacine( ) |
{ |
return $this->_est_racine ; |
} // end of member function isRacine |
/** |
* Renvoie le nombre d'inscrits au projet. Effectue une requete dans la table |
* projet_statut_utilisateurs |
* |
* @return int |
* @access public |
*/ |
function getNombreInscrits( ) |
{ |
$requete = 'select count(psu_id_utilisateur) as nbre from projet_statut_utilisateurs where psu_id_projet='.$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
return $ligne->nbre ; |
} // end of member function getNombreInscrits |
/** |
* Renvoie un tableau contenant les identifiants des fils du projet courant. |
* |
* @return Array |
* @access public |
*/ |
function getHierarchie( ) |
{ |
$requete = 'select ph_id_projet_fils from projet_hierarchie where ph_id_projet_pere='.$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$tableau_resultat = array() ; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_resultat, $ligne->ph_id_projet_fils) ; |
} |
return $tableau_resultat ; |
} // end of member function getHierarchie |
/** |
* Renvoie l'identifiant du pere du projet courrant. |
* |
* @return int |
* @access public |
*/ |
function getIdPere() |
{ |
$requete = 'select ph_id_projet_pere from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$tableau_resultat = array() ; |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ; |
return $ligne->ph_id_projet_pere ; |
} // end of member function getIdPere() |
/** |
* Renvoie le nom Wiki du wikini associé au projet. |
* |
* @return string |
* @access public |
*/ |
function getWikini( ) |
{ |
return $this->_nom_wikini ; |
} // end of member function getWikini |
/** |
* Renvoie le type du projet, ou zéro si le projet n'a pas de type. |
* |
* @return int |
* @access public |
*/ |
function getType( ) |
{ |
return $this->_type ; |
} // end of member function getType |
/** |
* Renvoie 1 si les inscriptions au projet sont modérées. |
* |
* @return int |
* @access public |
*/ |
function isModere( ) |
{ |
return $this->_isModere ; |
} // end of member function getType |
/** |
* initAttributes sets all projet attributes to its default value make |
* sure to call this method within your class constructor |
*/ |
function initAttributes( ) |
{ |
$this->chemin_wikini = "projet/wikini/"; |
} |
} // end of projet |
?> |
/branches/livraison_menes/classes/index.php |
---|
New file |
0,0 → 1,19 |
<?php |
// An even simpler version of the index page than version 1. All the actual work of |
// determining what needs to be included and what needs to be run is now in the main class. |
// Also, 'register_globals' doesn't need to be 'on' anymore. |
require_once("ezmlm.php"); |
$ezmlm = new ezmlm_php(); |
$action = ($_POST['action'] ? $_POST['action'] : ($_GET['action'] ? $_GET['action'] : "list_info")); |
$actionargs = ($_POST['actionargs'] ? $_POST['actionargs'] : ($_GET['actionargs'] ? $_GET['actionargs'] : "")); |
$ezmlm->set_action($action); |
$ezmlm->set_actionargs($actionargs); |
$ezmlm->run(); |
unset($ezmlm); |
?> |
/branches/livraison_menes/classes/projet_type.class.php |
---|
New file |
0,0 → 1,107 |
<?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: projet_type.class.php,v 1.2 2005-10-14 08:55:50 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe projet_type |
* |
*@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 projet_type |
* |
*/ |
class projet_type |
{ |
/*** Attributes: ***/ |
/** |
* Une connection vers une base de donnée |
* @access private |
*/ |
var $_db; |
/** |
* Renvoie tous types de projets (de la table projet_type) ans un tableau avec pour |
* clé l'identifiant et pour valeur le label. |
* |
* @return Array |
* @static |
* @access public |
*/ |
function getTousLesTypes(& $objetDB ) |
{ |
$requete = 'select * from projet_type' ; |
return $objetDB->getAssoc ($requete) ; |
} // end of member function getTousLesTypes |
/** |
* |
* |
* @param DB objetDB Une instance de la classe PEAR::DB |
* @return void |
* @access public |
*/ |
function projet_type( & $objetDB ) |
{ |
$this->_db = $objetDB ; |
} // end of member function projet_type |
/** |
* |
* |
* @param DB objetDB Une instance de la classe PEAR::DB |
* @return void |
* @access public |
*/ |
function getLabelType( $id_type) |
{ |
$requete = 'select pt_label_type from projet_type where pt_id_type='.$id_type ; |
$resultat = $this->_db->getOne($requete) ; |
if (DB::isError($resultat)) { |
echo $resultat->getMessage() ; |
} |
return $resultat ; |
} // end of member function projet_type |
} // end of projet_type |
?> |
/branches/livraison_menes/classes/HTML_Liste.class.php |
---|
New file |
0,0 → 1,77 |
<?php |
// +------------------------------------------------------------------------------------------------------+ |
// | 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: HTML_Liste.class.php,v 1.2 2005-09-27 16:42:00 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe HTML_Liste, classe de base pour toutes les listes du module projet |
* |
*@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 | |
// +------------------------------------------------------------------------------------------------------+ |
include_once 'HTML/Table.php' ; |
/** |
* class HTML_Liste |
* |
*/ |
class HTML_Liste extends HTML_Table |
{ |
/*** Attributes: ***/ |
/** |
* |
* @access protected |
*/ |
var $pager; |
/** |
* |
* @access private |
*/ |
var $_utilise_pager; |
/** |
* |
* |
* @param bool utilise_pager Si l'on souhaite que les résultats soient divisés en page, on passe true. |
* @return HTML_Liste |
* @access public |
*/ |
function HTML_Liste( $utilise_pager = false, $attributes = '') |
{ |
HTML_Table::HTML_Table($attributes) ; |
$this->_utilise_pager = $utilise_pager ; |
} // end of member function HTML_Liste |
} // end of HTML_Liste |
?> |
/branches/livraison_menes/classes/HTML_formulaireCouperColler.class.php |
---|
New file |
0,0 → 1,132 |
<?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: HTML_formulaireCouperColler.class.php,v 1.2 2005-09-27 16:39:25 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe HTML_formulaireCouperColler |
* |
*@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 HTML_formulaireCouperColler |
* |
*/ |
class HTML_formulaireCouperColler extends HTML_QuickForm |
{ |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function construitFormulaire($tableau_repertoire) |
{ |
$squelette =& $this->defaultRenderer(); |
$squelette->setFormTemplate("\n".'<form{attributes}><ul>'."\n".'{content}'."\n".'</ul></form>'."\n"); |
$squelette->setElementTemplate( '<li style="list-style-type: none;">'."\n".'{element}'."\n".'</li>'."\n"); |
$this->addElement('radio', 'projet_repertoire', '', PROJET_RACINE, 0) ; |
if (count ($tableau_repertoire)) { |
$this->addElement('html', '<ul>') ; |
foreach ($tableau_repertoire as $cle => $valeur) { |
if ($valeur->_id_pere ==0) { |
$this->addElement ('radio', 'projet_repertoire', '', $valeur->getNomLong(), $valeur->getIdDocument()) ; |
$sous_tableau = array() ; |
foreach ($tableau_repertoire as $valeur_fils) { |
if ($valeur_fils->_id_pere == $valeur->getIdDocument()) { |
array_push ($sous_tableau, $valeur_fils) ; |
} |
} |
if (count ($sous_tableau)) $this->construitLigneRepertoire($sous_tableau) ; |
} |
} |
$this->addElement('html', '</ul>') ; |
} |
$url_annuler = new Net_URL($this->getAttribute('action')) ; |
$url_annuler->removeQueryString(PROJET_VARIABLE_ACTION) ; |
// on fait un groupe avec les boutons pour les mettres sur la même ligne |
$buttons[] = &HTML_QuickForm::createElement('link', 'annuler', '', |
preg_replace ("/&/", "&", $url_annuler->getURL()), PROJET_FICHIER_ANNULER |
); // Le preg_replace contourne un pb de QuickForm et Net_URL |
// qui remplacent deux fois les & par des & |
// ce qui fait échouer le lien |
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider_inscription_projet', PROJET_FICHIER_VALIDER); |
$this->addGroup($buttons, null, null, ' '); |
} // end of member function construitFormulaire |
/** |
* |
* |
* |
* |
*/ |
function construitLigneRepertoire($tableau) { |
$this->addElement('html', '<ul>') ; |
foreach ($tableau as $valeur) { |
$this->addElement('radio', 'projet_repertoire', '', $valeur->getNomLong(), $valeur->getIdDocument()) ; |
} |
$this->addElement('html', '</ul>') ; |
} |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function HTML_formulaireCouperColler($formName = '', $method = 'post', $action = '', $target = '_self', $attributes = '', $trackSubmit = false ) |
{ |
HTML_QuickForm::HTML_QuickForm($formName, $method, $action, $target, $attributes, $trackSubmit) ; |
} // end of member function HTML_formulaireCouperColler |
/** |
* |
* |
* @return string |
* @access public |
*/ |
function toHTML($nom_de_fichier) |
{ |
$res = '<h2>'.PROJET_CHANGER_REPERTOIRE.'</h2>'."\n" ; |
$res .= PROJET_FICHIER_A_DEPLACER . $nom_de_fichier; |
$res .= '<h2>'.PROJET_CHOISISSEZ_REPERTOIRE.'</h2>' ; |
$res .= HTML_QuickForm::toHTML() ; |
return $res ; |
} // end of member function toHTML |
} // end of HTML_formulaireCouperColler |
?> |
/branches/livraison_menes/classes/fichier.class.php |
---|
New file |
0,0 → 1,295 |
<?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: fichier.class.php,v 1.5 2005-10-04 10:13:33 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe fichier |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.5 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once PROJET_CHEMIN_CLASSES.'type_fichier_mime.class.php' ; |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/** |
* class fichier |
* Cette classe représente un fichier au sens physique du terme. Elle fonctionne |
* pour les système UNIX. A faire : adaptation selon les système. L'objectif est de |
* gérer correctement l'upload de fichier. |
*/ |
class fichier |
{ |
/*** Attributes: ***/ |
/** |
* Le nom du fichier, avec son extension. |
* @access private |
*/ |
var $_nom; |
/** |
* Le chemin UNIX ou Windows pour accéder au fichier sur le serveur (par ex; |
* /var/www/fichier.txt |
* @access private |
*/ |
var $_chemin; |
/** |
* Cet attribut contient une valeur du type 755, indiquant les droits afférent à un |
* fichier selon le système UNIX (propriétaire, groupe, autres) |
* @access private |
*/ |
var $_droits_unix; |
/** |
* Le type indique si le fichier est un répertoire, un lien ou un fichier. |
* @access private |
*/ |
var $_type = 'fichier'; |
/** |
* l'identifiant du type mime. |
* @access private |
*/ |
var $_type_mime; |
/** |
* Le chemin vers le fichier, en partant du répertoire de travail. |
* @access private |
*/ |
var $_prefixe_chemin; |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function fichier( $chemin, &$objetDB) |
{ |
$this->_chemin = $chemin ; |
// On analyse l'extension pour découvrir le type mime |
$partie_chemin = pathinfo ($this->_chemin) ; |
if (is_object($objetDB) && isset($partie_chemin['extension'])) { |
$this->_type_mime = type_fichier_mime::factory ($partie_chemin['extension'], $objetDB) ; |
} |
// calcul du type |
if (is_dir ($this->_chemin)) $this->_type = 'repertoire' ; |
} // end of member function fichier |
/** |
* Le constructeur de la classe. |
* |
* @param string chemin Le chemin du fichier sur le serveur. |
* @return fichier |
* @access public |
*/ |
function __construct( $chemin, &$objetDB) |
{ |
$this->fichier($chemin, $objetDB); |
} // end of member function __construct |
/** |
* |
* |
* @return void |
* @access public |
*/ |
function suppression() |
{ |
if ($this->_type == 'repertoire') rmdir ($this->_chemin) ; |
if ($this->_type == 'fichier') unlink ($this->_chemin) ; |
} // end of member function suppression |
/** |
* Réalise l'upload d'un fichier vers chemin_destination. |
* |
* @param string chemin_destination Il s'agit du chemin UNIX de destination du fichier. Le script doit avoir les |
* droits en écriture sur le répertoire. |
* @global mixed une référence vers un objet HTML_QuickForm_File |
* @return void |
* @access public |
*/ |
function upload( $chemin_destination ) |
{ |
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $chemin_destination)) { |
return true ; |
} else { |
return false ; |
} |
} // end of member function upload |
/** |
* Déplace un fichier, renvoie vrai en cas de succès. |
* |
* @param string origine L'emplacement de départ du fichier. |
* @param string destination Le répertoire d'arrivé. |
* @return bool |
* @access public |
*/ |
function deplace( $origine, $destination ) |
{ |
if (copy ($origine, $destination )) { |
if (unlink($origine)) return true ; |
} |
return false ; |
} // end of member function deplace |
/** |
* |
* |
* @param int id_type_mime L'identifiant du type mime du document. |
* @return type_fichier_mime |
* @access public |
*/ |
function getTypeMime( ) |
{ |
return $this->_type_mime; |
} // end of member function getTypeMime |
/** |
* Renvoie vrai si le document est un répertoire. |
* |
* @return bool |
* @access public |
*/ |
function isRepertoire( ) |
{ |
return is_dir ($this->_chemin) ; |
} // end of member function isRepertoire |
/** |
* |
* |
* @param int id_type_mime L'identifiant du type mime. |
* @return void |
* @access public |
*/ |
function setTypeMime( $id_type_mime ) |
{ |
$this->_type_mime = $id_type_mime ; |
} // end of member function set TypeMime |
/** |
* Renvoie la taille du fichier en octet. Nécessite un accès au disque. |
* |
* @return int |
* @access public |
*/ |
function getTaille( ) |
{ |
if ($this->isRepertoire()) { |
return $this->_tailleRepertoire($this->_chemin) ; |
} |
return filesize ($this->_chemin) ; |
} // end of member function getTaille |
/** |
* Renovie le nom du fichier, sur le disque. |
* |
* @return string |
* @access public |
*/ |
function getNom( ) |
{ |
} // end of member function getNom |
/** |
* Renvoie le chemin du fichier. |
* |
* @return string |
* @access public |
*/ |
function getChemin( ) |
{ |
return $this->_chemin ; |
} // end of member function getChemin |
/** |
* Permet de calculer la taille en octet du repertoire courrant |
* |
* @return int |
* @access protected |
*/ |
function _tailleRepertoire($rep) |
{ |
$taille = 0 ; |
$liste_fichier = scandir ($rep) ; |
foreach ($liste_fichier as $key => $value) { |
if (is_dir ($rep."/".$value) && $value != ".." && $value != ".") { |
$taille += $this->_tailleRepertoire ($rep.$value."/") ; |
} else { |
if ($value != '..' && $value != '.') $taille += filesize ($rep.$value) ; |
} |
} |
return $taille ; |
} // end of member function _tailleRepertoire |
/** |
* initAttributes sets all fichier attributes to its default value make |
* sure to call this method within your class constructor |
*/ |
function initAttributes( ) |
{ |
$this->_type = 'fichier'; |
} |
} // end of fichier |
if(!function_exists("scandir")) |
{ |
function scandir($dirstr) |
{ |
// php.net/scandir (PHP5) |
$files = array(); |
$fh = opendir($dirstr); |
while (false !== ($filename = readdir($fh))) |
{ |
array_push($files, $filename); |
} |
closedir($fh); |
return $files; |
} |
} |
?> |
/branches/livraison_menes/classes/liste_externe.class.php |
---|
New file |
0,0 → 1,162 |
<?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: liste_externe.class.php,v 1.2 2005-09-27 16:42:00 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe liste_externe |
* |
*@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 liste_externe |
* |
*/ |
class liste_externe |
{ |
/*** Attributes: ***/ |
/** |
* Identifiant de la liste, dans la table agora et dans la table |
* projet_lien_liste_externe |
* @access private |
*/ |
var $_id_liste; |
/** |
* |
* @access private |
*/ |
var $_db; |
/** |
* Constructeur |
* |
* @param DB objetDB Un objet PEAR::DB |
* @return void |
* @access public |
*/ |
function liste_externe(&$objetDB ) |
{ |
$this->_db = $objetDB ; |
} // end of member function liste_externe |
/** |
* Renvoie un tableau avec en clé l'identifiant d'une liste et en valeur le nom de |
* la liste. |
* |
* @return Array |
* @access public |
*/ |
function getListeNom( ) |
{ |
$requete = 'select AGO_A_ID, AGO_A_NOMGRPLG from agora' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$tableau_resultat = array() ; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$tableau_resultat[$ligne['AGO_A_ID']] = $ligne['AGO_A_NOMGRPLG'] ; |
} |
return $tableau_resultat ; |
} // end of member function getListeNom |
/** |
* Renvoie un tableau avec les identifiants des listes associées au projet passé en |
* paramètre. |
* |
* @param int id_projet L'identifiant du projet |
* @return Array |
* @access public |
*/ |
function getListesAssociees( $id_projet ) |
{ |
$requete = 'select plle_id_liste from projet_lien_liste_externe where plle_id_projet='.$id_projet ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$tableau_resultat = array() ; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_resultat, $ligne->plle_id_liste) ; |
} |
return $tableau_resultat ; |
} // end of member function getListesAssociees |
/** |
* enregistrerSQL |
* |
* @return |
*/ |
function enregistrerSQL ($valeur, $id_projet) { |
// on commence par supprimer |
$requete = 'delete from projet_lien_liste_externe where plle_id_projet='.$id_projet ; |
$resultat = $this->_db->query ($requete) ; |
// puis on réinsère |
foreach ($valeur as $cle => $val) { |
if (!preg_match ('/liste_/', $cle)) continue ; |
$id_liste = preg_replace ('/liste_/', '', $cle) ; |
$requete = 'insert into projet_lien_liste_externe set plle_id_liste='.$id_liste.', plle_id_projet='.$id_projet ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
} |
} |
/** |
* Renvoie un tableau avec les infos sur la liste, voir les noms des champs de la |
* table agora pour une description plus détaillé. |
* |
* @param int id_liste L'identifiant de la liste |
* @return void |
* @access public |
*/ |
function getInfoListe( $id_liste ) |
{ |
$requete = 'select * from agora where AGO_A_ID='.$id_liste ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
return $ligne ; |
} // end of member function getInfoListe |
} // end of liste_externe |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/ezmlm-author.php |
---|
New file |
0,0 → 1,72 |
<?php |
// $Id: ezmlm-author.php,v 1.2.4.2 2007-03-12 11:24:25 alexandre_tb Exp $ |
// |
// ezmlm-author.php - ezmlm-php v2.0 |
// -------------------------------------------------------------- |
// Displays all messages by a given author |
// -------------------------------------------------------------- |
require_once("ezmlm.php"); |
class ezmlm_author extends ezmlm_php { |
function display($authorhash) { |
$file = "/archive/authors/" . substr($authorhash,0,2) . "/" . substr($authorhash,2,18); |
//echo $file ; |
if (!is_file($this->listdir . $file)) { $this->error(EZMLM_INVALID_AUTHOR); return; } |
// Le fichier author comprend |
// Première ligne hash_auteur nom_auteur |
// num_mess:annéemois:hash_sujet sujet |
$fd = @fopen($this->listdir . $file, "r"); |
$i = 0 ; |
$class = array ('ligne_impaire', 'ligne_paire') ; |
while (!feof($fd)) { |
$buf = fgets($fd,4096); |
if (preg_match('/^' . $authorhash . '/', $buf)) { |
// this should ALWAYS be the first line in the file |
$author = preg_replace('/^' . $authorhash . ' /', '', $buf); |
print '<h3>'.$author.'</h3>' ; |
print '<table class="table_cadre">'."\n"; |
print '<tr><th class="col1">De</th><th>Sujet</th><th>Date</th></tr>'."\n"; |
$tableopened = TRUE; |
} else if (preg_match('/^[0-9]*:[0-9]/',$buf)) { |
// si la ligne est valide |
// on récupère le numéro du message pour en extraire le nom du fichier |
$msgfile = preg_replace('/^([0-9]*):.*/', '\1', $buf); |
$msgdir = (int)((int)$msgfile / 100); |
$msgfile = (int)$msgfile % 100; |
if ($msgfile < 10) { $msgfile = "0" . $msgfile; } |
if (!is_file($this->listdir . "/archive/" . $msgdir . "/" . $msgfile)) { |
print "<!-- " . $this->listdir . "/archive/" . $msgdir . "/" . $msgfile . " -->\n"; |
$this->error(EZMLM_INCONSISTANCY); |
fclose($fd); |
return; |
} |
//$msg = new ezmlm_parser(); |
//$msg->parse_file_headers($this->listdir . "/archive/" . $msgdir . "/" . $msgfile); |
$message = file_get_contents($this->listdir . "/archive/" . $msgdir . "/" . $msgfile) ; |
$mimeDecode = new Mail_mimeDecode($message) ; |
$mailDecode = $mimeDecode->decode() ; |
$subject = $mailDecode->headers['subject']; |
$subject = preg_replace("/\[" . $this->listname . "\]/", "", $subject); |
$date = preg_replace ('/CEST/', '', $mailDecode->headers['date']); |
print '<tr class="'.$class[$i].'">'."\n"; |
if ($mailDecode->headers['from'] == '') $from = $mailDecode->headers['return-path'] ; else $from = $mailDecode->headers['from']; |
$hash = $this->makehash($from); |
print '<td>'.$this->makelink("action=show_author_msgs&actionargs[]=" . $hash,$this->decode_iso($this->protect_email($from,false))); |
print '</td>'; |
print "<td><b>" . $this->makelink("action=show_msg&actionargs[]=" . $msgdir . "&actionargs[]=" . $msgfile, $this->decode_iso($subject)) . "</b></td>"; |
print "<td>" . $this->date_francaise($mailDecode->headers['date']) . "</td>\n"; |
print "</tr>\n"; |
$i++; |
if ($i == 2) $i = 0 ; |
unset ($mailDecode) ; |
} |
} |
if ($tableopened) { print "</table>\n"; } |
} |
} |
/branches/livraison_menes/classes/ezmlm-php-2.0/ezmlm.php |
---|
New file |
0,0 → 1,327 |
<?php |
// $Id: ezmlm.php,v 1.3.2.3 2007-04-12 13:37:49 alexandre_tb Exp $ |
// |
// ezmlm.php - ezmlm-php v2.0 |
// -------------------------------------------------------------- |
// As the site that ezmlm-php was developed for grew, and grew |
// the old system used had to be bandaid fixed more, and more |
// because the site started moving to an object oriented design |
// for all the backend systems and ezmlm wasn't playing nice |
// with the new design. So, ezmlm was redesigned too, and here |
// it is. |
// |
// It may look a little more confusing if you're not used to |
// working with objects but it actually is much more effiecient |
// and organized in it's new incarnation. |
// Simply edit the variables in the ezmlm-php constructor below |
// just like you would with the old ezmlm-php-config.php file, |
// if you're unsure howto do this check out the file CONFIG, |
// then check the USAGE file for how you should include and use |
// the new classes if you are integrating ezmlm-php into your |
// site. |
// (SEARCH FOR: USER-CONFIG to find where to edit.) |
// -------------------------------------------------------------- |
require_once("ezmlm-errors.def"); |
require_once("ezmlm-parser.php"); |
require_once("ezmlm-threads.php"); |
require_once("ezmlm-listinfo.php"); |
require_once("ezmlm-msgdisplay.php"); |
require_once("ezmlm-repondre.php"); |
require_once("ezmlm-author.php"); |
$GLOBALS['mois'] = array ('Jan', 'Fév', 'Mars', 'Avril', 'Mai', 'Juin', 'Juil', 'Août', 'Sept', 'Oct', 'Nov', 'Déc') ; |
// CLASS: ezmlm_php |
// the base class, contains common functions and the config |
class ezmlm_php { |
var $listdir; // the root directory of the list |
var $listname; // the list address upto the @ |
var $listdomain; // the domain for the list |
var $tempdir; // a directory in which the webserver can write cache files |
var $sendheaders; // send generic page headers |
var $sendbody; // send generic body definitions |
var $sendfooters; // send generic page footers |
var $includebefore; // a file to include before the content |
var $includeafter; // a file to include after the content |
var $href; // what to add before the '?param=value' in links |
var $prefertype; // what mime type do you prefer? |
var $showheaders; // what headers should we show? |
var $msgtemplate; // the template for displaying messages (see the file TEMPLATE) |
var $tablecolours; // what are the colours for the table rows? |
var $thread_subjlen; // the maximum length of subjects in the thread view (0 = no limit) |
var $forcehref; // force the base of makelink(); |
// --------- END USER CONFIGURATION --------- |
// Internal variables |
var $action = ''; |
var $actionargs; |
function ezmlm_php() { |
// USER-CONFIG section |
// these variables act the same way ezmlm-php-config.php did in the first release |
// simply edit these variables to match your setup |
$this->listdir = ""; |
$this->listname = ""; |
$this->listdomain = ""; |
$this->tempdir = ""; |
$this->sendheaders = TRUE; |
$this->sendbody = TRUE; |
$this->sendfooters = TRUE; |
$this->includebefore = ""; |
$this->includeafter = ""; |
$this->href = ""; |
$this->prefertype = "text/html"; |
$this->showheaders = array( |
"to", |
"from", |
"subject", |
"date" |
); |
$this->header_en_francais = array ('to' => 'A', |
'from' => 'De', |
'subject' => 'Sujet', |
'date' => 'Date') ; |
$this->msgtemplate = "<pre><ezmlm-body></pre>"; // if blank it will use the internal one |
$this->tablecolours = array( |
// delete the next line if you don't want alternating colours |
"#eeeeee", |
"#ffffff" |
); |
$this->thread_subjlen = 55; |
// --- STOP EDITING HERE --- |
// some sanity checking |
if ((!is_dir($this->listdir . "/archive")) or |
(!is_dir($this->listdir . "/archive/authors")) or |
(!is_dir($this->listdir . "/archive/threads")) or |
(!is_dir($this->listdir . "/archive/subjects"))) { |
return false ; |
/*$this->error(EZMLM_INVALID_DIR,TRUE);*/ |
} |
} |
function set_action($action) { |
if (is_array($action)) { $this->error(EZMLM_INVALID_SYNTAX,TRUE); } |
$this->action = $action; |
} |
function set_actionargs($actionargs) { |
if ($this->action == '') { $this->error(EZMLM_INVALID_SYNTAX,TRUE); } |
$this->actionargs = $actionargs; |
} |
function run() { |
if ($this->action == '') { $this->error(EZMLM_INVALID_SYNTAX,TRUE); } |
if ($this->sendheaders) { $this->sendheaders(); } |
if ($this->sendbody) { $this->sendbody(); } |
if ($this->includebefore != '') { @include_once($this->includebefore); } |
switch ($this->action) { |
case "list_info": |
$info = new ezmlm_listinfo(); |
$info->display(); |
break; |
case "show_msg": |
if (count($this->actionargs) < 2) { |
$this->error(EZMLM_INVALID_SYNTAX,TRUE); |
} |
$show_msg = new ezmlm_msgdisplay(); |
$show_msg->display($this->actionargs[0] . "/" . $this->actionargs[1]); |
break; |
case "show_threads": |
$threads = new ezmlm_threads(); |
$threads->load($this->actionargs[0]); |
break; |
case "show_author_msgs": |
$author = new ezmlm_author(); |
$author->display($this->actionargs[0]); |
break; |
} |
if ($this->includeafter != '') { @include_once($this->includeafter); } |
if ($this->sendfooters) { $this->sendfooters(); } |
} |
function sendheaders() { |
print "<html><head>\n"; |
print "<style type=\"text/css\">\n"; |
print "<!--\n"; |
print ".heading { font-family: helvetica; font-size: 16px; line-height: 18px; font-weight: bold; }\n"; |
print "//-->\n"; |
print "</style>\n"; |
print "</head>\n"; |
} |
function sendbody() { |
print "<body>\n"; |
} |
function sendfooters() { |
print "</body>\n"; |
print "</html>\n"; |
} |
// begin common functions |
// makehash - generates an author hash using the included makehash program |
function makehash($str) { |
$str = preg_replace ('/>/', '', $str) ; |
$handle = popen ('/usr/local/lib/safe_mode/makehash \''.$str.'\'', 'r') ; |
$hash = fread ($handle, 256) ; |
pclose ($handle) ; |
return $hash; |
} |
// makelink - writes the <a href=".."> tag |
function makelink($params,$text) { |
if ($this->forcehref != "") { |
$basehref = $this->forcehref; |
} else { |
$basehref = preg_replace('/^(.*)\?.*/', '\\1', $_SERVER['REQUEST_URI']); |
} |
$link = '<a href="'. $basehref . '&' . $params . '">' . $text . '</a>'; |
return $link; |
} |
// md5_of_file - provides wrapper function that emulates md5_file for PHP < 4.2.0 |
function md5_of_file($file) { |
if (function_exists("md5_file")) { // php >= 4.2.0 |
return md5_file($file); |
} else { |
if (is_file($file)) { |
$fd = fopen($file, "rb"); |
$filecontents = fread($fd, filesize($file)); |
fclose ($fd); |
return md5($filecontents); |
} else { |
return FALSE; |
} |
} |
} |
// protect_email - protects email address turns user@domain.com into user@d... |
function protect_email($str,$short = FALSE) { |
if (preg_match("/[a-zA-Z0-9\-\.]\@[a-zA-Z0-9\-\.]*\./", $str)) { |
$outstr = preg_replace("/([a-zA-Z0-9\-\.]*\@)([a-zA-Z0-9\-\.])[a-zA-Z0-9\-\.]*\.[a-zA-Z0-9\-\.]*/","\\1\\2...",$str); |
$outstr = preg_replace("/\</", '<', $outstr); |
$outstr = preg_replace("/\>/", '>', $outstr); |
} else { |
$outstr = $str; |
} |
if ($short) { |
$outstr = preg_replace("/<.*>/", '', $outstr); |
$outstr = preg_replace("/[\"']/", '', $outstr); |
} |
return trim($outstr); |
} |
// cleanup_body: sortta like protect_email, just for message bodies |
function cleanup_body($str) { |
$outstr = preg_replace("/([a-zA-Z0-9\-\.]*\@)([a-zA-Z0-9\-\.])[a-zA-Z0-9\-\.]*\.[a-zA-Z0-9\-\.]*/","\\1\\2...",$str); |
return $outstr; |
} |
function error($def, $critical = FALSE) { |
global $ezmlm_error; |
print "\n\n"; |
print "<table width=600 border=1 cellpadding=3 cellspacing=0>\n"; |
print "<tr bgcolor=\"#cccccc\"><td><b>EZMLM-PHP Error: " . $ezmlm_error[$def]['title'] . "</td></tr>\n"; |
print "<tr bgcolor=\"#aaaaaa\"><td>" . $ezmlm_error[$def]['body'] . "</td></tr>\n"; |
print "</table>\n\n"; |
if ($critical) { die; } |
} |
/** |
* Parse une chaime et supprime les problême d'encodage de type ISO-4 ... |
* |
* @return string |
*/ |
function decode_iso ($chaine) { |
if (preg_match ('/windows-[0-9][0-9][0-9][0-9]/i', $chaine, $nombre)) { |
$reg_exp = $nombre[0] ; |
$chaine = str_replace(' ', '', $chaine); |
} else { |
$reg_exp = 'ISO-8859-15?' ; |
} |
if (preg_match ('/UTF/i', $chaine)) $reg_exp = 'UTF-8' ; |
preg_match_all ("/=\?$reg_exp\?(Q|B)\?(.*?)\?=/i", $chaine, $match, PREG_PATTERN_ORDER) ; |
for ($i = 0; $i < count ($match[0]); $i++ ) { |
if (strtoupper($match[1][$i]) == 'Q') { |
$decode = quoted_printable_decode ($match[2][$i]) ; |
} elseif ($match[1][$i] == 'B') { |
$decode = base64_decode ($match[2][$i]) ; |
} |
$decode = preg_replace ("/_/", " ", $decode) ; |
if ($reg_exp == 'UTF-8') { |
$decode = utf8_decode ($decode) ; |
} |
$chaine = str_replace ($match[0][$i], $decode, $chaine) ; |
} |
return $chaine ; |
} |
/** |
* |
* |
* @return |
*/ |
function date_francaise ($date_mail) { |
$date_mail = preg_replace ('/CEST/', '', $date_mail) ; |
$numero_mois = date('m ', strtotime($date_mail)) - 1 ; |
$date = date ('d ', strtotime($date_mail)).$GLOBALS['mois'][$numero_mois] ; // Le jour et le mois |
$date .= date(' Y ', strtotime($date_mail)) ; // l'année |
if (date('a', strtotime($date_mail)) == 'pm') { |
$date .= (int) date('g', strtotime($date_mail)) + 12 ; // Les heures |
} else { |
$date .= date('g', strtotime($date_mail)) ; |
} |
$date .= date(':i', strtotime($date_mail)) ; // Les minutes |
return $date ; |
} |
/** |
* Cette fonction renvoie le prefixe, cad 0 ou rien |
* d un nom de message, ex : pour 09, on renvoie 0 |
* pour 12 on renvoie rien |
*/ |
function prefixe_nom_message($nom) { |
if (preg_match ('/0([1-9][0-9]*)/', $nom, $match)) { |
$nom_fichier = $match[1]; |
return '0' ; |
} else { |
return '' ; |
} |
} |
} |
// |
// --- END OF CLASS DEFINITION --- |
// |
// FIN |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/ajout_moderateur.php |
---|
New file |
0,0 → 1,7 |
<?php |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste.'/mod' ; |
echo exec ('ezmlm-sub '.$repertoire.' '.$mail, $output, $ret) ; |
echo 'ezmlm-sub '.$repertoire.' '.$mail ; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/suppression_liste.php |
---|
New file |
0,0 → 1,20 |
<?php |
if (!isset ($domaine) || $domaine == '' || !isset($liste) || $liste == '') { |
die ('manque paramètre domaine ou liste') ; |
} |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
$fichier_qmail = '/home/vpopmail/domains/'.$domaine.'/.qmail-'.$liste ; |
echo exec ('rm '.$fichier_qmail, $output2, $ret2) ; |
echo exec ('rm '.$fichier_qmail.'-default', $output2, $ret2) ; |
echo exec ('rm '.$fichier_qmail.'-digest-owner', $output2, $ret2) ; |
echo exec ('rm '.$fichier_qmail.'-digest-return-default', $output2, $ret2) ; |
echo exec ('rm '.$fichier_qmail.'-owner', $output2, $ret2) ; |
echo exec ('rm '.$fichier_qmail.'-return-default', $output2, $ret2) ; |
echo 'rm '.$fichier_qmail ; |
echo exec ('rm -rf '.$repertoire, $output, $ret) ; |
echo 'rm -rf '.$repertoire ; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/messages_auteur.php |
---|
New file |
0,0 → 1,32 |
<?php |
include_once 'ezmlm-php-2.0/ezmlm.php' ; |
// Parametrage de la liste |
$info = new ezmlm_author(); |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
$info->forcehref = $url; |
$info->listdir = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
$info->listname = $liste; |
$info->listdomain = $domaine ; |
ob_start() ; |
if (!$info->display($actionargs[0])) { |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
} |
$html = ob_get_contents() ; |
ob_end_clean() ; |
include_once 'XML/Util.php' ; |
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ; |
$xml .= XML_Util::createStartElement ('ezmlm_messages_auteur', array('domaine' => $domaine, 'liste' => $liste, 'langue' => $langue )) ; |
$xml .= '<![CDATA[ '.$html.']]>'; |
$xml .= XML_Util::createEndElement('ezmlm_messages_auteur') ; |
header ('Content-type: text/xml'); |
echo $xml ; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/suppression_abonne.php |
---|
New file |
0,0 → 1,7 |
<?php |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
echo exec ('ezmlm-unsub '.$repertoire.' '.$mail, $output, $ret) ; |
echo 'ezmlm-unsub '.$repertoire.' '.$mail; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/messages_mois.php |
---|
New file |
0,0 → 1,32 |
<?php |
include_once 'ezmlm-php-2.0/ezmlm.php' ; |
// Parametrage de la liste |
$info = new ezmlm_listinfo(); |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
$info->forcehref = $url; |
$info->listdir = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
$info->listname = $liste; |
$info->listdomain = $domaine ; |
ob_start() ; |
if (!$info->show_month($actionargs[0])) { |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
} |
$html = ob_get_contents() ; |
ob_end_clean() ; |
include_once 'XML/Util.php' ; |
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ; |
$xml .= XML_Util::createStartElement ('ezmlm_messages_mois', array('domaine' => $domaine, 'liste' => $liste, 'langue' => $langue)) ; |
$xml .= '<![CDATA[ '.$html.']]>'; |
$xml .= XML_Util::createEndElement('ezmlm_messages_mois') ; |
header ('Content-type: text/xml'); |
echo $xml ; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/messages_thread.php |
---|
New file |
0,0 → 1,32 |
<?php |
include_once 'ezmlm-php-2.0/ezmlm.php' ; |
// Parametrage de la liste |
$info = new ezmlm_threads(); |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
$info->forcehref = $url; |
$info->listdir = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
$info->listname = $liste; |
$info->listdomain = $domaine ; |
$info->tempdir = '/home/vpopmail/www/tmp' ; |
ob_start() ; |
if (!$info->load($actionargs[0])) { |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
} |
$html = ob_get_contents() ; |
ob_end_clean() ; |
include_once 'XML/Util.php' ; |
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ; |
$xml .= XML_Util::createStartElement ('ezmlm_messages_thread', array('domaine' => $domaine, 'liste' => $liste, 'langue' => $langue)) ; |
$xml .= '<![CDATA[ '.$html.']]>'; |
$xml .= XML_Util::createEndElement('ezmlm_messages_thread') ; |
header ('Content-type: text/xml'); |
echo $xml ; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/calendrier_messages.php |
---|
New file |
0,0 → 1,32 |
<?php |
include_once 'ezmlm-php-2.0/ezmlm.php' ; |
// Parametrage de la liste |
$info = new ezmlm_threads(); |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
$info->forcehref = $url; |
$info->listdir = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
$info->listname = $liste; |
$info->listdomain = $domaine ; |
ob_start() ; |
if (!$info->listmessages()) { |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
} |
$html = ob_get_contents() ; |
ob_end_clean() ; |
include_once 'XML/Util.php' ; |
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ; |
$xml .= XML_Util::createStartElement ('ezmlm_calendrier_messages', array('domaine' => $domaine, 'liste' => $liste, 'langue' => $langue)) ; |
$xml .= '<![CDATA[ '.$html.']]>'; |
$xml .= XML_Util::createEndElement('ezmlm_calendrier_messages') ; |
header ('Content-type: text/xml'); |
echo $xml ; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/derniers_messages.php |
---|
New file |
0,0 → 1,32 |
<?php |
include_once 'ezmlm-php-2.0/ezmlm.php' ; |
// Parametrage de la liste |
$info = new ezmlm_listinfo(); |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
$info->forcehref = $url; |
$info->listdir = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
$info->listname = $liste; |
$info->listdomain = $domaine ; |
ob_start() ; |
if (!$info->show_recentmsgs()) { |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
} |
$html = ob_get_contents() ; |
ob_end_clean() ; |
include_once 'XML/Util.php' ; |
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ; |
$xml .= XML_Util::createStartElement ('ezmlm_derniers_messages', array('domaine' => $domaine, 'liste' => $liste, 'langue' => $langue)) ; |
$xml .= '<![CDATA[ '.$html.']]>'; |
$xml .= XML_Util::createEndElement('ezmlm_derniers_messages') ; |
header ('Content-type: text/xml'); |
echo $xml ; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/ajout_abonne.php |
---|
New file |
0,0 → 1,6 |
<?php |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
echo exec ('ezmlm-sub '.$repertoire.' '.$mail, $output, $ret) ; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/creation_liste.php |
---|
New file |
0,0 → 1,20 |
<?php |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
$fichier_qmail = '/home/vpopmail/domains/'.$domaine.'/.qmail-'.$liste ; |
// Transformation de ma chaine $parametres ((de aBud en -a -B -u -D) |
$para = '' ; |
for ($i = 0; $i < count ($parametres); $i++) { |
$para .= '-'.$parametres.' ' ; |
} |
echo exec ('ezmlm-make '.$para.' '.$repertoire.' '.$fichier_qmail.' '.$liste.' '.$domaine, $output, $ret) ; |
echo "\n" ; |
echo exec ('ezmlm-reply-to '.$domaine.' '.$liste) ; |
echo "\n" ; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/message.php |
---|
New file |
0,0 → 1,38 |
<?php |
include_once 'ezmlm-php-2.0/ezmlm.php' ; |
// Parametrage de la liste |
$message = new ezmlm_msgdisplay(); |
if (!$message) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
$message->forcehref = $url; |
$message->listdir = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
$message->listname = $liste; |
$message->listdomain = $domaine ; |
$id_rep = $actionargs[0] ; |
$num_message = $actionargs[1] ; |
if ($id_rep =='' || $num_message == '') exit(); |
$html = $message->display ($id_rep.'/'.$num_message) ; |
include_once 'XML/Util.php' ; |
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ; |
$xml .= XML_Util::createStartElement ('ezmlm_message', array('domaine' => $domaine, 'liste' => $liste, 'langue' => $langue)) ; |
$xml .= "\n".'<![CDATA[ '.$html.']]>'; |
$info_suivant = $message->getInfoSuivant() ; |
$xml .= XML_Util::createStartElement ('message_suivant', array ('numero' => $info_suivant['fichier_suivant'], |
'numero_repertoire' => $info_suivant['repertoire_suivant'])) ; |
$xml .= XML_Util::createEndElement('message_suivant') ; |
$xml .= XML_Util::createStartElement ('message_precedent', array ('numero' => $info_suivant['fichier_precedent'], |
'numero_repertoire' => $info_suivant['repertoire_precedent'])) ; |
$xml .= XML_Util::createEndElement('message_precedent') ; |
$xml .= XML_Util::createEndElement('ezmlm_message') ; |
header ('Content-type: text/xml'); |
echo $xml ; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/.htaccess |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/.htaccess |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/liste_abonnes.php |
---|
New file |
0,0 → 1,17 |
<?php |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
exec ('ezmlm-list '.$repertoire, $output, $ret) ; |
include_once 'XML/Util.php' ; |
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ; |
$xml .= XML_Util::createStartElement ('ezmlm_liste_abonnes', array('domaine' => $domaine, 'liste' => $liste)) ; |
foreach ($output as $mail) $xml .= XML_Util::createTag('email', '', $mail) ; |
$xml .= XML_Util::createEndElement('ezmlm_liste_abonnes') ; |
header ('Content-type: text/xml'); |
echo $xml ; |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/services_vpopmail/supprimer.php |
---|
New file |
0,0 → 1,15 |
<?php |
/** |
* Supprime un message d'une liste |
* Entrée domaine, liste, numero_repertoire, numero_message |
*/ |
$repertoire_liste = '/home/vpopmail/domains/'.$domaine.'/'.$liste; |
$message_a_supprimer = $repertoire_liste.'/archive/'.$actionargs[0].'/'.$actionargs[1] ; |
if (file_exists ($message_a_supprimer)) { |
echo $message_a_supprimer; |
exec ('rm '.$message_a_supprimer) ; |
exec ('ezmlm-archive -c '.$repertoire_liste); |
exec ('ezmlm-idx '.$repertoire_liste); |
} |
/branches/livraison_menes/classes/ezmlm-php-2.0/ezmlm-errors.def |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/classes/ezmlm-php-2.0/ezmlm-errors.def |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/classes/ezmlm-php-2.0/index.php |
---|
New file |
0,0 → 1,19 |
<?php |
// An even simpler version of the index page than version 1. All the actual work of |
// determining what needs to be included and what needs to be run is now in the main class. |
// Also, 'register_globals' doesn't need to be 'on' anymore. |
require_once("ezmlm.php"); |
$ezmlm = new ezmlm_php(); |
$action = ($_POST['action'] ? $_POST['action'] : ($_GET['action'] ? $_GET['action'] : "list_info")); |
$actionargs = ($_POST['actionargs'] ? $_POST['actionargs'] : ($_GET['actionargs'] ? $_GET['actionargs'] : "")); |
$ezmlm->set_action($action); |
$ezmlm->set_actionargs($actionargs); |
$ezmlm->run(); |
unset($ezmlm); |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/ezmlm-listinfo.php |
---|
New file |
0,0 → 1,189 |
<?php |
// $Id: ezmlm-listinfo.php,v 1.2.4.2 2007-03-12 11:22:56 alexandre_tb Exp $ |
// |
// ezmlm-listinfo.php - ezmlm-php v2.0 |
// -------------------------------------------------------------- |
// Displays general list info in the format of a welcome page. |
// -------------------------------------------------------------- |
require_once("ezmlm.php"); |
class ezmlm_listinfo extends ezmlm_php { |
function ezmlm_listinfo () { |
return is_dir($this->listdir.'/archive/0') ; |
} |
function display() { |
if (!is_dir($this->listdir.'/archive/0')) { // On teste si il y a au moins un message, cad le répertoire 0 |
echo $this->listdir.'/archive/0' ; |
return false ; |
} |
$parser = new ezmlm_parser(); |
$parser->listdir = $this->listdir ; |
//$this->show_info_file(); |
$threads = new ezmlm_threads(); |
$threads->listdir = $this->listdir ; |
$threads->listname = $this->listname ; |
$threads->forcehref = $this->forcehref ; /// ajout alex |
$threads->listmessages() ; |
$this->show_recentmsgs(); |
return true ; |
} |
function show_info_file() { |
if (@is_file($this->listdir . "/text/info")) { |
$infofile = @file($this->listdir . "/text/info"); |
while (list($line_num, $line) = each($infofile)) { |
print nl2br($line); |
} |
} |
} |
function show_recentmsgs($title = "Messages récents") { |
if (!is_dir($this->listdir.'/archive/0')) return false; |
$parser = new ezmlm_parser(); |
$parser->listdir = $this->listdir ; |
print '<table class="table_cadre">'."\n"; |
print '<tr><th class="col1">Num</th><th>De</th><th>Sujet</th><th>Date</th></tr>'."\n"; |
$ctc = 0; |
$recent = $parser->recent_msgs(); |
// le tableau recent est de la forme |
// $recent[numero_message][1] sujet |
// $recent[numero_message][2] date en anglais => (22 May 2006) |
// $recent[numero_message][3] le hash de l auteur |
// $recent[numero_message][4] auteur |
$class = array ('ligne_paire', 'ligne_impaire') ; |
while (list($key,$val) = each($recent)) { |
print '<tr class="'.$class[$ctc].'">'."\n"; |
//print '<td>'.$val->nummessage.'</td>' ; |
// $key contient le numero du message tel que dans les fichiers d index par ex 216 |
// on retrouve le nom du repertoire et le nom du fichier |
$decimal = (string) $key; |
if ($key >= 100) { |
$fichier_message = substr($decimal, -2) ; |
$repertoire_message = substr ($decimal, 0,count ($decimal) -2) ; |
} else { |
if ($key < 10) { |
$fichier_message = '0'.$key; |
} else { |
$fichier_message = $decimal; |
} |
$repertoire_message = '0'; |
} |
print '<td>'.$key.'</td>' ; |
print '<td>'; |
$from = $val[4]; |
print $this->makelink("action=show_author_msgs&actionargs[]=".$val[3],$this->decode_iso($this->protect_email($from,false))); |
print "</td>\n"; |
print '<td><b>'; |
$actionargs = preg_split("/\//", $val->msgfile); |
print $this->makelink("action=show_msg&actionargs[]=" . $repertoire_message . |
"&actionargs[]=" . $fichier_message ,$this->decode_iso($val[1])); |
print "</b></td>\n"; |
//print '<td>'.$this->date_francaise($val[2]).'</td>'."\n"; |
print '<td>'.$val[2].'</td>'."\n"; |
print "</tr>\n"; |
$ctc++; |
if ($ctc == 2) { $ctc = 0; } |
} |
print '</table>'."\n"; |
return true; |
} |
function show_month ($month) { |
// Le nom du fichier est annéemoi ex 200501 pour janvier 2005 |
// on ouvre chaque fichier en lecture |
$fd = file_get_contents($this->listdir . '/archive/threads/' . $month, 'r'); |
$fichier = explode ("\n", $fd) ; |
// on récupère la première ligne |
$premiere_ligne = $fichier[0] ; |
$derniere_ligne = $fichier[count($fichier)-2]; |
preg_match ('/[0-9]+/', $premiere_ligne, $match) ; |
$numero_premier_mail = $match[0] ; |
preg_match ('/[0-9]+/', $derniere_ligne, $match1) ; |
$numero_dernier_mail = $match1[0] ; |
// On cherche le répertoire du premier mail |
$repertoire_premier_mail = (int) ($numero_premier_mail / 100) ; |
// petite verification de coherence |
if ($numero_premier_mail > $numero_dernier_mail) { |
$temp = $numero_premier_mail; |
$numero_premier_mail = $numero_dernier_mail ; |
$numero_dernier_mail = $temp; |
} |
print '<table class="table_cadre">'."\n"; |
print '<tr><th class="col1">Num</th><th>De</th><th>Sujet</th><th>Date</th></tr>'."\n"; |
$ctc = 0; |
$class = array ('ligne_paire', 'ligne_impaire') ; |
for ($i = $numero_premier_mail, $compteur = $numero_premier_mail ; $compteur <= $numero_dernier_mail; $i++, $compteur++) { |
if ($i > 99) { |
$multiplicateur = (int) ($i / 100) ; |
// pour les nails > 99, on retranche n fois 100, ex 256 => 56 cad 256 - 2 * 100 |
$i = $i - $multiplicateur * 100 ; |
} |
if ($i < 10) $num_message = '0'.$i ; else $num_message = $i ; |
if (file_exists($this->listdir.'/archive/'.$repertoire_premier_mail.'/'.$num_message)) { |
$mimeDecode = new Mail_mimeDecode(file_get_contents ($this->listdir.'/archive/'.$repertoire_premier_mail.'/'.$num_message)) ; |
$mailDecode = $mimeDecode->decode() ; |
if ($i == 99) { |
$repertoire_premier_mail++; |
$i = -1; |
} |
print '<tr class="'.$class[$ctc].'">'."\n"; |
print '<td>'.($repertoire_premier_mail != 0 ? $repertoire_premier_mail : '').$num_message.'</td><td>'; |
$hash = $this->makehash($mailDecode->headers['from']); |
print $this->makelink("action=show_author_msgs&actionargs[]=". |
$hash,$this->decode_iso($this->protect_email($mailDecode->headers['from'],TRUE))); |
print "</td>\n"; |
print '<td><b>'; |
$actionargs[0] = $repertoire_premier_mail ; |
$actionargs[1] = $num_message ; |
if (count ($actionargs) > 1) { |
print $this->makelink("action=show_msg&actionargs[]=". |
$actionargs[(count($actionargs) - 2)] . |
"&actionargs[]=". |
$actionargs[(count($actionargs) - 1)] ,$this->decode_iso($mailDecode->headers['subject'])); |
} |
print "</b></td>\n"; |
print '<td>'.$this->date_francaise($mailDecode->headers['date']).'</td>'."\n"; |
print "</tr>\n"; |
$ctc++; |
if ($ctc == 2) { $ctc = 0; } |
} |
} |
print '</table>'."\n"; |
return true; |
} |
} |
/branches/livraison_menes/classes/ezmlm-php-2.0/makehash |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/classes/ezmlm-php-2.0/makehash |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/classes/ezmlm-php-2.0/ezmlm-threads.php |
---|
New file |
0,0 → 1,351 |
<?php |
// $Id: ezmlm-threads.php,v 1.4.2.3 2007-04-12 13:35:48 alexandre_tb Exp $ |
// |
// ezmlm-threads.php - ezmlm-php v2.0 |
// -------------------------------------------------------------- |
// Builds, maintains & displays thread caches |
// These cache files live in $ezmlm->tmpdir and are serialized |
// php objects that can be unserialized and displayed easily |
// -------------------------------------------------------------- |
require_once("ezmlm.php"); |
require_once("ezmlm-parser.php"); |
require_once ('ezmlm-langue-fr.php'); |
// CLASS: ezmlm_threads will build, maintain & display thread files (even if a thread is only 1 msg) |
class ezmlm_threads extends ezmlm_php { |
// load: this is the main function that should be called. |
// it first checks to see if the cache files are stale, if they are it calls build |
// other wise it loads them and calls display |
function load($month) { |
if (!is_dir($this->tempdir . "/ezmlm-php-" . $this->listname)) { |
$checksum = $this->tempdir . "/ezmlm-php-" . $this->listname . "-" . $month . "-" . "checksum"; |
} else { |
$checksum = $this->tempdir . "/ezmlm-php-" . $this->listname . "/" . $month . "-" . "checksum"; |
} |
$md5 = '' ; |
if (!is_file($checksum)) { |
$this->build($month); |
} else { |
$fd = fopen($checksum,"r"); |
while (!preg_match('/^md5:/', $md5)) { $md5 = fgets($fd,4096); } |
fclose($fd); |
$md5 = rtrim(preg_replace('/^md5:/', '', $md5), "\n"); |
if ($md5 != $this->md5_of_file($this->listdir . "/archive/threads/" . $month)) { |
print "<!-- $md5 ne " . $this->md5_of_file($this->listdir . "/archive/threads/" . $month) . " -->\n"; |
$this->build($month); |
} |
} |
$this->display($month); |
} |
// display: this loads each cache file sequentially and displays the messages in them |
// there is no checking of checksum's done here so load() is the preferred method to |
// view the threads |
function display($month) { |
$seq = 0; |
if (!is_dir($this->tempdir . "/ezmlm-php-" . $this->listname)) { |
$cache = $this->tempdir . "/ezmlm-php-" . $this->listname . "-" . $month; |
} else { |
$cache = $this->tempdir . "/ezmlm-php-" . $this->listname . "/" . $month; |
} |
// Le lien par date et par thread |
echo '[ '.$this->makelink('action=show_month&actionargs[]='.$month, 'par date').' ]' ; |
$months = array(1 => 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); |
// remplacé par le tableau globals $mois dans ezmlm.php |
print '<h2>'.FIL_DE_DISCUSSION.' pour '.$GLOBALS['mois'][((int)substr($month,4,2) / 1)] .', ' . substr($month,0,4) . '</h2>'."\n"; |
print '<table class="table_cadre">'."\n"; |
print '<tr><th>Num</th><th>De</th><th>Sujet</th><th>Date</th></tr>'."\n"; |
print '<tr><td colspan="3"><hr /></td></tr>'."\n"; |
$ctc = 0; |
if (is_file($cache)) { |
include($cache); |
} |
print '<tr><td colspan="3"></td></tr>'."\n"; |
print '</table>'."\n"; |
} |
function thread_to_html($thread) { |
$html = ''; |
$lastdepth = -1; |
$ctc = 0 ; |
$thread_curr = $thread; |
$class = array ('ligne_paire', 'ligne_impaire') ; |
while ($thread_curr != NULL) { |
preg_match ('!/archive/([0-9]*)/([0-9]*)!', $thread_curr->file, $match) ; |
if (!isset($GLOBALS['fichiers_analyses'][$match[1]][$match[2]])) { |
$message = file_get_contents($this->listdir . "/archive/" . $msgdir . "/" . $msgfile) ; |
$mimeDecode = new Mail_mimeDecode($message) ; |
$mailDecode = $mimeDecode->decode() ; |
//$msg = new ezmlm_parser(); |
//$msg->parse_file($this->listdir . $thread_curr->file, TRUE); |
} else { |
$mailDecode = $GLOBALS['fichiers_analyses'][$match[1]][$match[2]] ; |
} |
$actionargs = preg_split("/\//", $thread_curr->file); |
$html .= '<tr class="'.$class[$ctc].'">'."\n"; |
$html .= '<td>'.$actionargs[2].$actionargs[3].'</td><td>'; |
$html .= $this->makelink('action=show_author_msgs&actionargs[]='. |
$this->makehash($this->decode_iso($mailDecode->headers['from'])),$this->decode_iso($this->protect_email($mailDecode->headers['from'],TRUE))); |
$html .= '</td>'."\n"; |
$html .= '<td><b>'; |
//$html .= " <a name=\"" . urlencode($thread_curr->file) . "\">"; A quoi ça sert ? |
for ($i = 0; $i < $thread_curr->depth; $i++) { |
$html .= " "; |
} |
if (($this->thread_subjlen > 0) and (strlen($this->decode_iso($mailDecode->headers['subject'])) > $this->thread_subjlen)) { |
$subject = substr($this->decode_iso($mailDecode->headers['subject']), 0, ($this->thread_subjlen - 3 - ($thread_curr->depth * 2))); |
$subject = $subject . "..."; |
} else { |
$subject = $this->decode_iso($mailDecode->headers['subject']); |
} |
$subject = preg_replace("/\[" . $this->listname . "\]/", "", $subject); |
$html .= $this->makelink("action=show_msg&actionargs[]=" . $actionargs[2] . "&actionargs[]=" . $actionargs[3], $subject); |
$html .= "</b></td>\n"; |
$html .= '<td>' .$this->date_francaise($mailDecode->headers['date']).'</td>'."\n"; |
$html .= "</tr>\n"; |
$ctc++; |
if ($ctc == count($this->tablecolours)) { $ctc = 0; } |
$lastdepth = $thread_curr->depth; |
$thread_curr = $thread_curr->next; |
} |
$html .= '<tr><td colspan="3"><hr noshade size="1" /></td></tr>'."\n"; |
return $html; |
} |
// build: takes one argument in the format YYYYMM and builds the thread cache file |
// for that month if the ezmlm thread file exists. The resulting cache file is then |
// stored in $this->tmpdir; |
function build($month) { |
if (!is_file($this->listdir . "/archive/threads/" . $month)) { return FALSE; } |
if (!is_dir($this->tempdir . "/ezmlm-php-" . $this->listname)) { |
$fd2 = fopen($this->tempdir . "/ezmlm-php-" . $this->listname . "-" . $month,"w+"); |
} else { |
$fd2 = fopen($this->tempdir . "/ezmlm-php-" . $this->listname . "/" . $month,"w+"); |
} |
fclose($fd2); |
$i=0; |
// ouverture du fichier thread de ezmlm |
// Ils sont classés mois par mois |
$fd1 = fopen($this->listdir . "/archive/threads/" . $month, "r"); |
while (!feof($fd1)) { |
$line = fgets($fd1,4096); |
if (preg_match('/^[0-9]*\:[a-z]* \[.*/', $line)) { |
// valid ezmlm thread file entry |
// On place dans $subjectfile le chemin vers le fichier sujet |
$subjectfile = preg_replace("/^[0-9]*\:([a-z]*) \[.*/", "\\1", $line); |
$subjectfile = substr($subjectfile,0,2) . '/' . substr($subjectfile,2,18); |
$thread_head = NULL; |
$thread_curr = NULL; |
$thread_temp = NULL; |
$thread_depth = 1; |
if (!is_file($this->listdir . "/archive/subjects/" . $subjectfile)) { continue; } |
// on ouvre le fichier sujet |
// Celui-ci contient sur la première ligne le hash du sujet puis le sujet |
// sur les autres lignes : |
// num_message:annéemois:hash_auteur nom_auteur |
$fd2 = fopen($this->listdir . "/archive/subjects/" . $subjectfile, "r"); |
while (!feof($fd2)) { |
$line2 = fgets($fd2,4096); |
if (preg_match('/^[0-9]/',$line2)) { |
$msgnum = preg_replace('/^([0-9]*):.*/', '\\1', $line2); |
$msgfile = $msgnum % 100; |
$msgdir = (int)($msgnum / 100); |
if ($msgfile < 10) { $msgfile = "0" . $msgfile; } |
//$msg = new ezmlm_parser(); |
//$msg->parse_file_headers($this->listdir . "/archive/" . $msgdir . "/" . $msgfile, TRUE); |
$message = file_get_contents($this->listdir . "/archive/" . $msgdir . "/" . $msgfile) ; |
$mimeDecode = new Mail_mimeDecode($message) ; |
$mailDecode = $mimeDecode->decode() ; |
// On stocke le fichier analysée pour réutilisation ultérieure |
$GLOBALS['fichiers_analyses'][$msgdir][$msgfile] = $mailDecode ; |
$msgid = (isset ($mailDecode->headers['message-id']) ? $mailDecode->headers['message-id'] : ''); |
$inreply = (isset($mailDecode->headers['in-reply-to']) ? $mailDecode->headers['in-reply-to'] : ''); |
$references = (isset ($mailDecode->headers['references']) ? $mailDecode->headers['references'] : '') ; |
$thread_depth = 1; |
if ($thread_head == NULL) { |
$thread_head = new ezmlm_thread(0,'/archive/' . $msgdir . '/' . $msgfile,$msgid); |
} else { |
$thread_curr = new ezmlm_thread($depth,'/archive/' . $msgdir . '/' . $msgfile,$msgid); |
if ($inreply != '') { $thread_curr->inreply = $inreply; } |
if ($references != '') { $thread_curr->references = $references; } |
$thread_head->append($thread_curr); |
} |
} |
} |
fclose($fd2); |
// so now after all that mess $thread_head contains a full thread tree |
// first build the depth of each message based on 'in-reply-to' and 'references' |
unset($thread_temp); |
$thread_temp = NULL; |
$thread_curr =& $thread_head->next; |
while (get_class($thread_curr) == 'ezmlm_thread') { |
unset($thread_temp); |
$thread_temp = NULL; |
if ($thread_curr->inreply != '') { $thread_temp =& $thread_head->find_msgid($thread_curr->inreply); } |
if ($thread_temp == NULL) { |
if ($thread_curr->references != '') { |
$refs = preg_split('/ /', $thread_curr->references); |
$refs = array_pop($refs); |
$thread_temp =& $thread_head->find_msgid($refs); |
} |
} |
if ($thread_temp == NULL) { |
// we couldn't find anything... set depth to 1, the default |
$thread_curr->depth = 1; |
} else { |
// we found a reference, set it to it's depth + 1 |
$thread_curr->depth = $thread_temp->depth + 1; |
} |
$thread_curr =& $thread_curr->next; |
} |
// now write it to a temp file named MONTH-SEQ where seq is cronologic sequence order of the thread. |
if (!is_dir($this->tempdir . "/ezmlm-php-" . $this->listname)) { |
@mkdir($this->tempdir . "/ezmlm-php-" . $this->listname, 0755); |
if (!is_dir($this->tempdir . "/ezmlm-php-" . $this->listname)) { |
$fd2 = fopen($this->tempdir . "/ezmlm-php-" . $this->listname . "-" . $month, "a"); |
} else { |
$fd2 = fopen($this->tempdir . "/ezmlm-php-" . $this->listname . "/" . $month, "a"); |
} |
} else { |
$fd2 = fopen($this->tempdir . "/ezmlm-php-" . $this->listname . "/" . $month, "a"); |
} |
fputs($fd2,$this->thread_to_html($thread_head)); |
fclose($fd2); |
} |
} |
// finally store our checksum |
if (!is_dir($this->tempdir . "/ezmlm-php-" . $this->listname)) { |
$fd2 = fopen($this->tempdir . "/ezmlm-php-" . $this->listname . "-" . $month . "-" . "checksum","w+"); |
} else { |
$fd2 = fopen($this->tempdir . "/ezmlm-php-" . $this->listname . "/" . $month . "-" . "checksum","w+"); |
} |
fputs($fd2,"md5:" . $this->md5_of_file($this->listdir . "/archive/threads/" . $month) . "\n"); |
fclose($fd2); |
fclose($fd1); |
return TRUE; |
} |
// listmessages: prints out a nice little calendar and displays the message |
// totals for each month. The link jumps to the thread listing. |
// On lit le répetoire archive/threads/ qui contient un fichier par moi avec tous les thread, par sujet |
// Présentés comme suit |
// num_thread:hash [taille_du_thread] Sujet du thread (le dernier) |
// les messages sont rangés par leur numéro |
function listmessages() { |
if (!is_dir($this->listdir . "/archive/threads/")) { |
return false ; |
} |
$threadcount = array(); |
$repertoire_archive = opendir($this->listdir . "/archive/"); |
while (false !== ($item = readdir($repertoire_archive))) { |
// $item contient les noms des repertoires |
// on ne garde que ceux qui sont des chiffres |
if (preg_match('/[0-9]+/', $item)) { |
// on ouvre le fichier d index de chaque repertoire |
$fichier_index = fopen($this->listdir.'/archive/'.$item.'/index', 'r'); |
$compteur = 0 ; |
while (!feof($fichier_index)) { |
// On ignore la premiere ligne |
$temp = fgets($fichier_index, 4096); |
// dans la seconde on recupere la date |
$temp = fgets($fichier_index, 4096); |
preg_match('/\t([0-9]+) ([a-zA-Z][a-zA-Z][a-zA-Z]) ([0-9][0-9][0-9][0-9])/', $temp, $match) ; |
if ($match[0] != '') { |
$threadmonth = date('n', strtotime($match[0])) ; |
$threadyear = date('Y', strtotime($match[0])) ; |
$threadcount[$threadyear][$threadmonth]++; |
} |
} |
fclose ($fichier_index); |
} |
} |
// La partie qui suit, simple, crée la table avec le nombre de message échangé chaque mois |
$res = '<table id="petit_calendrier">'."\n"; |
$res .= " <tr>\n"; |
$res .= " <td></td>" ; |
foreach ($GLOBALS['mois'] as $valeur) $res .= '<td>'.$valeur.'</td>' ; |
$res .=" </tr>\n"; |
while (list($key,$val) = each($threadcount)) { |
$res .= " <tr>\n"; |
$res .= " <td>$key</td>"; |
for ($i = 1; $i <= 12; $i++) { |
if (isset($threadcount[$key][$i]) && $threadcount[$key][$i] > 0) { |
$res .= "<td bgcolor=\"" . $this->tablecolours[0] . "\" valign=\"middle\">"; |
$res .= $this->makelink('action=show_month&actionargs[]='.$key.($i < 10 ? '0'.$i:$i),$threadcount[$key][$i]); |
$res .= "</td>"; |
} else { |
$res .= "<td bgcolor=\"" . $this->tablecolours[0] . "\"></td>"; |
} |
} |
$res .= "</tr>\n"; |
} |
$res .= "</table>\n"; |
echo $res ; |
} |
} |
// CLASS: ezmlm-thread is a quick little class to allow us to define |
// a structure of the current thread in a single-linked list. |
// it's a little messy since php doesn't support pointers like C does |
// so we have to use references and a head object to append to the list. |
class ezmlm_thread { |
var $next; |
var $depth; |
var $file; |
var $msgid; |
var $inreply; |
var $references; |
function append($thread) { |
$thread_curr =& $this; |
while ($thread_curr->next != NULL) { |
$thread_curr =& $thread_curr->next; |
} |
$thread_curr->next = $thread; |
} |
function &find_msgid($msgid) { |
$thread_curr =& $this; |
while ($thread_curr->next != NULL) { |
if (trim($thread_curr->msgid) == trim($msgid)) { return $thread_curr; } |
$thread_curr =& $thread_curr->next; |
} |
return NULL; |
} |
function ezmlm_thread($depth,$file,$msgid) { |
$this->depth = $depth; |
$this->file = $file; |
$this->msgid = $msgid; |
$this->next = NULL; |
} |
} |
?> |
/branches/livraison_menes/classes/ezmlm-php-2.0/ezmlm-msgdisplay.php |
---|
New file |
0,0 → 1,364 |
<?php |
// $Id: ezmlm-msgdisplay.php,v 1.3.2.2 2007-03-12 11:21:31 alexandre_tb Exp $ |
// |
// ezmlm-msgdisplay.php - ezmlm-php v2.0 |
// -------------------------------------------------------------- |
// Will parse a template (if specified) and display a message. |
// Includes a default template. |
// -------------------------------------------------------------- |
require_once("ezmlm.php"); |
require_once("Mail/mimeDecode.php") ; |
class ezmlm_msgdisplay extends ezmlm_php { |
// our template |
var $msgtmpl; |
var $message_rendu ; |
var $_auth ; |
// display: parses a message (using ezmlm_parser) and displays it |
// using a template |
var $msgfile; |
function display($msgfile) { |
if (!is_file($msgfile)) { |
if (is_file($this->listdir . "/" . $msgfile)) { $msgfile = $this->listdir . "/" . $msgfile; } |
else if (is_file($this->listdir . "/archive/" . $msgfile)) { $msgfile = $this->listdir . "/archive/" . $msgfile; } |
else { return FALSE; } |
} |
$this->msgfile = $msgfile ; |
$message = file_get_contents($msgfile) ; |
// En cours de codage |
// La fonction display retourne tout simplement le source du mail |
// Il n'y a plus d'analyse à ce niveau |
return $message; |
$mimeDecode = new Mail_mimeDecode($message) ; |
$mailDecode = $mimeDecode->decode(array('decode_bodies' => 'true', 'include_bodies' => 'true')) ; |
// $msg->msgfile contient le chemin du fichier du mail en partant de la racine |
// Le point d'exclamation est le délimiteur de l'expression régulière |
$relfile = preg_replace('!' . $this->listdir . '!', '', $msgfile); |
$a1 = preg_replace('!/archive/(.*)/.*$!', '\1', $relfile); // $a1 contient le nom du répertoire |
$a2 = preg_replace('!/archive/.*/(.*)$!', '\1', $relfile); // $a2 contient le nom du fichier |
if (isset($mailDecode->headers['date'])) $msgtime = strtotime(preg_replace ('/CEST/', '', $mailDecode->headers['date'])); |
$threadidx = date("Ym", $msgtime); |
if ($a2 <= 10) $numero_precedent = '0'.($a2 - 1) ; else $numero_precedent = ($a2 - 1) ; |
if ($a2 < 9) $numero_suivant = '0'.($a2 + 1) ; else $numero_suivant = ($a2 + 1); |
// On teste si le message suivant existe |
$decoupe = explode ('/', $msgfile) ; |
// Les nom de fichiers sont du format : |
// archive/0/01 |
// archive/0/02 ... 0/99 archive/1/01 ... |
$nom_fichier = $decoupe[count($decoupe)-1] ; |
$nom_repertoire = $decoupe[count($decoupe)-2] ; |
$repertoire_suivant = $nom_repertoire ; $repertoire_precedent = $nom_repertoire ; |
if ($nom_fichier > 8) { |
$fichier_suivant = $nom_fichier + 1 ; |
if ($nom_fichier == 99) { |
$fichier_suivant = '01' ; |
$repertoire_suivant = $nom_repertoire + 1 ; |
} |
} else { |
$fichier_suivant = '0'.($nom_fichier + 1) ; |
} |
if ($nom_fichier > 10) { |
$fichier_precedent = $nom_fichier - 1 ; |
} else { |
if ($nom_fichier == '01') { |
$fichier_precedent = '99' ; |
$repertoire_precedent = $nom_repertoire - 1 ; |
} else { |
$fichier_precedent = '0'.($nom_fichier - 1) ; |
} |
} |
print $this->parse_entete_mail($mailDecode) ; |
$this->parse_template($mailDecode, $a2, $a1); |
print $this->message_rendu; |
//print '</div>' ; |
} |
/** |
* Renvoie les infos des messages suivants |
* |
* |
*/ |
function getInfoSuivant() { |
$relfile = preg_replace('!' . $this->listdir . '!', '', $this->msgfile); |
$nom_repertoire = preg_replace('!/archive/(.*)/.*$!', '\1', $relfile); |
$nom_fichier = preg_replace('!/archive/.*/(.*)$!', '\1', $relfile); |
$repertoire_suivant = $nom_repertoire; |
// a partir du nom du fichier |
// et du nom du repertoire, on reconstitue |
// le numero du message stocke dans le fichier d index |
// le message 12 du repertoire 2 a le numero 112 |
if ($nom_repertoire == '0') { |
$numero_message = $nom_fichier; |
} else { |
$numero_message = $nom_repertoire.$nom_fichier ; |
} |
// On ouvre le fichier d index |
$fichier_index = fopen ($this->listdir.'/archive/'.$nom_repertoire.'/index', 'r'); |
$compteur_ligne = 1; |
if (preg_match ('/0([1-9][0-9]*)/', $nom_fichier, $match)) { |
$nom_fichier = $match[1]; |
$prefixe = '0' ; |
} else { |
$prefixe = '' ; |
} |
$prefixe = $this->prefixe_nom_message($nom_fichier); |
//echo $numero_message; |
// on cherche la ligne avec le numero du message |
while (!feof($fichier_index)) { |
$temp = fgets($fichier_index,4096); |
list($num, $hash, $sujet) = split (':', $temp) ; |
if ($num == $numero_message) { |
$ligne_message_precedent = $compteur_ligne -2; |
$temp = fgets($fichier_index, 4096); |
$temp = fgets($fichier_index, 4096); |
list ($fichier_suivant,$hash, $sujet) = split(':', $temp); |
// Au cas ou est au dernier message du fichier d index |
// il faut ouvrir le suivant |
if (feof($fichier_index)) { |
$repertoire_suivant++; |
if (file_exists($this->listdir.'/archive/'.$repertoire_suivant.'/index')) { |
$fichier_index_suivant = fopen($this->listdir.'/archive/'.$repertoire_suivant.'/index', 'r'); |
// on recupere le numero du premier message |
list($fichier_suivant, $hash, $sujet) = split (':', fgets($fichier_index_suivant), 4096); |
fclose ($fichier_index_suivant); |
} |
} |
// Si le numero est > 100, il faut decouper et ne retenir |
// que les dizaines et unites |
if ($fichier_suivant >= 100) { |
$decimal = (string) $fichier_suivant; |
$numero = substr($decimal, -2) ; |
$fichier_suivant = $numero ; |
} else { |
if ($fichier_suivant < 9)$fichier_suivant = '0'.$fichier_suivant; |
} |
break; |
} |
// On avance d une ligne, la 2e ligne contient date hash auteur |
$temp2 = fgets($fichier_index, 4096); |
$compteur_ligne += 2; |
} |
// On utilise $ligne_message_precedent pour recupere le num du message precedent |
// Si $ligne_precedent est negatif soit c le premier message de la liste |
// soit il faut ouvrir le repertoire precedent |
if ($ligne_message_precedent > 0) { |
$compteur = 1; |
rewind($fichier_index); |
while (!feof($fichier_index)) { |
$temp = fgets($fichier_index, 4096); |
if ($ligne_message_precedent == $compteur) { |
list ($fichier_precedent, $hash, $sujet) = split (':', $temp) ; |
} |
$compteur++; |
} |
// Le nom du repertoire precedent est le meme que le repertoire courant |
$repertoire_precedent = $nom_repertoire ; |
// Si $ligne_message_precedent est negatif, alors il faut ouvrir |
// le fichier index du repertoire precedent |
// si le nom du repertoire est 0, alors il n y a pas de repertoire precedent |
// et donc pas de message precedent |
} else { |
if ($nom_repertoire != '0') { |
$repertoire_precedent = $nom_repertoire -1 ; |
// on ouvre le fichier d index et on extraie le numero |
// du dernier message |
$fichier_index_precedent = fopen ($this->listdir.'/archive/'.$repertoire_precedent.'/index', 'r') ; |
while (!feof($fichier_index_precedent)) { |
$temp = fgets($fichier_index_precedent,4096); |
$ligne = split (':', $temp) ; |
if ($ligne[0] != '') $fichier_precedent = $ligne[0]; |
$temp = fgets($fichier_index_precedent,4096); |
} |
fclose ($fichier_index_precedent); |
// on se situe dans le repertoire 0 donc pas de message precedent |
} else { |
$fichier_precedent = null; |
$repertoire_precedent = null; |
} |
} |
if ($fichier_precedent > 100) { |
$decimal = (string) $fichier_precedent; |
$numero = substr($decimal, -2) ; |
$fichier_precedent = $numero ; |
} else { |
if ($fichier_precedent < 10 )$fichier_precedent = '0'.$fichier_precedent; |
} |
fclose ($fichier_index); |
//if ($fichier_precedent != null && $fichier_precedent < 10) $fichier_precedent = '0'.$fichier_precedent; |
return array ('fichier_suivant' => $fichier_suivant, |
'repertoire_suivant' => $repertoire_suivant, |
'fichier_precedent' => $fichier_precedent, |
'repertoire_precedent' => $repertoire_precedent); |
} |
/** |
* analyse l'entete d'un mail pour en extraire les entêtes |
* to, from, subject, date |
* met à jour la variable $this->msgtmpl |
* |
*/ |
function parse_entete_mail (&$mailDecode) { |
$startpos = strpos(strtolower($this->msgtmpl_entete), '<ezmlm-headers>'); |
$endpos = strpos(strtolower($this->msgtmpl_entete), '</ezmlm-headers>'); |
$headers = substr($this->msgtmpl_entete,$startpos + 15,($endpos - $startpos - 15)); |
$headers_replace = '' ; |
for ($i = 0; $i < count($this->showheaders); $i++) { |
$val = $this->showheaders[$i]; |
$headers_replace .= $headers; |
$hnpos = strpos(strtolower($headers_replace), '<ezmlm-header-name>'); |
$headers_replace = substr_replace($headers_replace, $this->header_en_francais[$val], $hnpos, 19); |
$hvpos = strpos(strtolower($headers_replace), '<ezmlm-header-value'); |
$headers_replace = $this->decode_iso ($headers_replace) ; |
switch ($val) { |
case 'date': |
$headers_replace = substr_replace($headers_replace, $this->date_francaise($mailDecode->headers[strtolower($val)]), $hvpos, 20); |
break; |
case 'from': |
if ($mailDecode->headers[strtolower($val)] == '') $from = $mailDecode->headers['return-path'] ; |
else $from = $mailDecode->headers['from']; |
$headers_replace = substr_replace($headers_replace, $this->protect_email($this->decode_iso($from)), $hvpos, 20); |
//$headers_replace = htmlspecialchars($headers_replace); |
break; |
default: |
$headers_replace = substr_replace($headers_replace, $this->protect_email($this->decode_iso($mailDecode->headers[strtolower($val)])), $hvpos, 20); |
} |
} |
return substr_replace($this->msgtmpl_entete, $headers_replace, $startpos, (($endpos + 16) - $startpos)); |
} |
function parse_template(&$mailDecode, $numero_mail, $numero_mois, $num_part = '') { |
static $profondeur = array(); |
array_push ($profondeur, $num_part) ; |
$corps = '' ; |
if ($mailDecode->ctype_primary == 'multipart') { |
include_once PROJET_CHEMIN_CLASSES.'type_fichier_mime.class.php' ; |
for ($i = 0; $i < count($mailDecode->parts); $i++) { |
switch ($mailDecode->parts[$i]->ctype_secondary) { |
case 'plain' : |
if ($mailDecode->parts[$i]->headers['content-transfer-encoding'] == '8bit') { |
$corps .= $this->_cte_8bit($mailDecode->parts[$i]->body); |
} |
break; |
case 'html' : $corps .= $mailDecode->parts[$i]->body ; |
break ; |
case 'mixed' : |
case 'rfc822' : |
case 'alternative' : |
case 'appledouble' : |
$this->parse_template($mailDecode->parts[$i], $numero_mail, $numero_mois, $i) ; |
break ; |
case 'applefile' : continue ; |
break ; |
default : |
if ($mailDecode->parts[$i]->ctype_secondary == 'octet-stream') { |
$nom_piece_jointe = $mailDecode->parts[$i]->ctype_parameters['name'] ; |
$tab = explode ('.', $nom_piece_jointe) ; |
$extension = $tab[count ($tab) - 1] ; |
$mimeType = type_fichier_mime::factory($extension, $GLOBALS['projet_db']); |
$mimeType->setCheminIcone(PROJET_CHEMIN_ICONES) ; |
} else { |
$nom_piece_jointe = isset ($mailDecode->parts[$i]->d_parameters['filename']) ? |
$mailDecode->parts[$i]->d_parameters['filename'] : $mailDecode->parts[$i]->ctype_parameters['name'] ; |
$mimeType = new type_fichier_mime($GLOBALS['projet_db'], $mailDecode->parts[$i]->ctype_primary.'/'. |
$mailDecode->parts[$i]->ctype_secondary, PROJET_CHEMIN_ICONES) ; |
} |
$corps .= '<a href="'.PROJET_CHEMIN_APPLI.'synchroliste/fichier_attache.php?nom_liste='.$this->listname. |
'&actionargs[]='.$numero_mois. |
'&actionargs[]='.$numero_mail; |
if (count ($profondeur) > 0) { |
array_shift($profondeur) ; |
for ($j= 0; $j < count ($profondeur); $j++) $corps .= '&actionargs[]='.$profondeur[$j]; |
} |
$corps .= '&actionargs[]='.$i ; |
$corps .= '">'.'<img src="'.$mimeType->getCheminIcone().'" alt="'.$nom_piece_jointe.'" /> ' ; |
$corps .= $nom_piece_jointe; |
$corps .= '</a><br />' ; |
break ; |
} |
} |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', $this->cleanup_body($corps,TRUE), $this->msgtmpl); |
} else if ($mailDecode->ctype_primary == 'message') { |
$this->message_rendu .= "\n".'<div class="message">'.$this->parse_entete_mail($mailDecode->parts[0]); |
$corps .= $this->parse_template($mailDecode->parts[0], $numero_mail, $numero_mois, 0) ; |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', $this->cleanup_body($corps,true), $this->msgtmpl).'</div>'; |
} else if ($mailDecode->ctype_primary == 'application' || $mailDecode->ctype_primary == 'image'){ |
if ($mailDecode->ctype_secondary == 'applefile') return ; |
$mimeType = new type_fichier_mime($GLOBALS['projet_db'], $mailDecode->ctype_primary.'/'.$mailDecode->ctype_secondary,PROJET_CHEMIN_ICONES) ; |
if ($mimeType->getIdType() != 12) { |
$corps .= '<a href="'.PROJET_CHEMIN_APPLI.'synchroliste/fichier_attache.php?nom_liste='.$this->listname.'&actionargs[]='. |
$numero_mois.'&actionargs[]='. |
$numero_mail.'&actionargs[]='.$i.'">'. |
'<img src="'.$mimeType->getCheminIcone().'" alt="'.$mailDecode->ctype_parameters['name'].'" /> ' ; |
$corps .= $mailDecode->ctype_parameters['name'].'</a><br />' ; |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', $this->cleanup_body($corps,true), $this->msgtmpl); |
} |
} else { |
if (preg_match('/html/i', $mailDecode->ctype_secondary)) { |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', $this->cleanup_body($mailDecode->body,TRUE), $this->msgtmpl); |
} else { |
if (isset ($mailDecode->ctype_parameters['charset']) && $mailDecode->ctype_parameters['charset'] == 'UTF-8') { |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', '<pre>' . utf8_decode($this->cleanup_body($mailDecode->body,TRUE)) . '</pre>', $this->msgtmpl); |
} else { |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', '<pre>' . $this->cleanup_body($mailDecode->body,TRUE) . '</pre>', $this->msgtmpl); |
} |
} |
} |
} |
function ezmlm_msgdisplay() { |
$this->ezmlm_php(); |
if (($this->msgtemplate != "") and (is_file($this->msgtemplate))) { |
$fd = fopen($this->msgtemplate, "r"); |
while (!feof($fd)) { $this->msgtmpl .= fgets($fd,4096); } |
fclose($fd); |
} else { |
$this->msgtmpl = '<pre> |
<ezmlm-body> |
</pre> |
'; |
} |
$this->msgtmpl_entete = '<dl><ezmlm-headers> |
<dt><ezmlm-header-name> :</dt> |
<dd><ezmlm-header-value></dd> |
</ezmlm-headers> |
</dl>' ; |
} |
} |
/branches/livraison_menes/classes/ezmlm-php-2.0/ezmlm-parser.php |
---|
New file |
0,0 → 1,409 |
<?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: ezmlm-parser.php,v 1.2.4.3 2007-04-12 13:37:02 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* classe ezmlm_parser pour lire les fichiers d index de ezmlm-idx |
* |
*@package projet |
//Auteur original : ?? recupere dans ezmlm-php |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.2.4.3 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// $Id: ezmlm-parser.php,v 1.2.4.3 2007-04-12 13:37:02 alexandre_tb Exp $ |
// |
require_once("ezmlm.php"); |
require_once("Mail/mimeDecode.php") ; |
// CLASS: ezmlm-parser |
class ezmlm_parser extends ezmlm_php { |
var $headers; // the full untouched headers of the message |
var $body; // the full untouched (but decoded) body (this is not $this->parts[0]->body) |
var $parts; // all the parts, if it is a multipart message. each part is an ezmlm_parser object... |
// Here's the most accessed headers, everything else can be |
// accessed from the $this->headers array. |
var $to; // To: |
var $from; // From: |
var $date; // Date: |
var $subject; // Subject: |
var $replyto; // Reply-To: |
var $contenttype; // Content-Type: |
var $multipart; // TRUE if the message is a multipart message |
var $msgfile; // if parsed from a file, this is the filename... |
// functions |
/** |
* recent_msgs renvoie les derniers messages de la liste de discussion |
* ezmlm |
* |
* ( |
* [0] => Array |
* ( |
* [1] => sujet |
* [2] => date en anglais |
* [3] => le hash de l auteur |
* [4] => l auteur |
* ) |
* [1] => ... |
* ) |
* @param int le nombre de message a renvoye |
* @return array un tableau contenant les messages |
* @access public |
*/ |
function recent_msgs($show = 20, $month = "") { |
$repertoire_archive = opendir($this->listdir . "/archive/"); |
$repertoire_message = array() ; |
$dernier_repertoire = 0 ; |
while (false !== ($item = readdir($repertoire_archive))) { |
// $item contient les noms des repertoires |
// on ne garde que ceux qui sont des chiffres |
if (preg_match('/[0-9]+/', $item)) { |
// on ouvre le fichier d index de chaque repertoire |
if ((int) $item > $dernier_repertoire) $dernier_repertoire = (int) $item; |
} |
} |
$tableau_message = array() ; |
$compteur_message = 0 ; |
$fichier_index = fopen ($this->listdir.'/archive/'.$dernier_repertoire.'/index', 'r') ; |
while (!feof($fichier_index)) { |
// Recuperation du numero de message, du hash du sujet et du sujet |
$temp = fgets($fichier_index, 4096); |
preg_match('/([0-9]+): ([a-z]+) (.*)/', $temp, $match) ; |
// dans la seconde on recupere la date, hash auteur et auteur |
$temp = fgets($fichier_index, 4096); |
preg_match('/\t([0-9]+) ([a-zA-Z][a-zA-Z][a-zA-Z]) ([0-9][0-9][0-9][0-9]) ([^;]+);([^ ]*) (.*)/', $temp, $match_deuxieme_ligne) ; |
if ($match[1] != '') { |
$tableau_message[$match[1]] = array ($match[2], $match[3], |
$match_deuxieme_ligne[1].' '.$match_deuxieme_ligne[2].' '.$match_deuxieme_ligne[3], |
$match_deuxieme_ligne[5], |
$match_deuxieme_ligne[6]); |
} |
} |
fclose ($fichier_index); |
// on renverse le tableau pour afficher les derniers messages en premier |
$tableau_message = array_reverse($tableau_message, true); |
// On compte le nombre de message, s il est inferieur $show et que l on est |
// pas dans le premier index, on ouvre le fichier precedent et recupere |
// le n dernier message |
if (count ($tableau_message) < $show && $dernier_repertoire != '0') { |
$avant_dernier_repertoire = $dernier_repertoire - 1 ; |
// On utilise file_get_contents pour renverser le fichier |
$fichier_index = array_reverse( |
explode ("\n", |
preg_replace ('/\n$/', '', |
file_get_contents ($this->listdir.'/archive/'.$avant_dernier_repertoire.'/index')) ), true) ; |
reset ($fichier_index); |
//var_dump ($fichier_index); |
for ($i = count ($tableau_message); $i <= $show; $i++) { |
// Recuperation du numero de message, du hash du sujet et du sujet |
// dans la seconde on recupere la date, hash auteur et auteur |
preg_match('/\t([0-9]+) ([a-zA-Z][a-zA-Z][a-zA-Z]) ([0-9][0-9][0-9][0-9]) ([^;]+);([^ ]*) (.*)/', |
current ($fichier_index), $match_deuxieme_ligne) ; |
preg_match('/([0-9]+): ([a-z]+) (.*)/', next($fichier_index), $match) ; |
next ($fichier_index); |
if ($match[1] != '') { |
$tableau_message[$match[1]] = array ($match[2], $match[3], |
$match_deuxieme_ligne[1].' '.$match_deuxieme_ligne[2].' '.$match_deuxieme_ligne[3], |
$match_deuxieme_ligne[5], |
$match_deuxieme_ligne[6]); |
} |
} |
} else { |
// Si le nombre de message est > $show on limite le tableau de retour |
$tableau_message = array_slice($tableau_message, 0, $show, true); |
} |
return $tableau_message ; |
} |
// parse_file - opens a file and feeds the data to parse, file can be relative to the listdir |
function parse_file($file,$simple = FALSE) { |
if (!is_file($file)) { |
if (is_file($this->listdir . "/" . $file)) { $file = $this->listdir . "/" . $file; } |
else if (is_file($this->listdir . "/archive/" . $file)) { $file = $this->listdir . "/archive/" . $file; } |
else { return FALSE; } |
} |
$this->msgfile = $file; |
$data = '' ; |
$fd = fopen($file, "r"); |
while (!feof($fd)) { $data .= fgets($fd,4096); } |
fclose($fd); |
return $this->parse($data,$simple); |
} |
// parse_file_headers - ouvre un fichier et analyse les entêtes |
function parse_file_headers($file,$simple = FALSE) { |
if (!is_file($file)) { |
if (is_file($this->listdir . "/" . $file)) { $file = $this->listdir . "/" . $file; } |
else if (is_file($this->listdir . "/archive/" . $file)) { $file = $this->listdir . "/archive/" . $file; } |
else { return FALSE; } |
} |
$this->msgfile = $file; |
$data = file_get_contents ($file) ; |
$message = file_get_contents($file) ; |
$mimeDecode = new Mail_mimeDecode($message) ; |
$mailDecode = $mimeDecode->decode() ; |
return $mailDecode ; |
} |
// this does all of the work (well it calls two functions that do all the work :) |
// all the decoding a part breaking follows RFC2045 (http://www.faqs.org/rfcs/rfc2045.html) |
function parse($data,$simple = FALSE) { |
if (($this->_get_headers($data,$simple)) && $this->_get_body($data,$simple)) { return TRUE; } |
return FALSE; |
} |
// all of these are internal functions, you shouldn't call them directly... |
// _ct_parse: parse Content-Type headers -> $ct[0] = Full header, $ct[1] = Content-Type, $ct[2] ... $ct[n] = AP's |
function _ct_parse() { |
$instr = $this->headers['content-type']; |
preg_replace('/\(.*\)/','',$instr); // strip rfc822 comments |
if (preg_match('/: /', $instr)) { |
$ct = preg_split('/:/',trim($instr),2); |
$ct = preg_split('/;/',trim($ct[1])); |
} else { |
$ct = preg_split('/;/',trim($instr)); |
} |
if (isset($ct[1])) $attrs = preg_split('/[\s\n]/',$ct[1]); |
$i = 2; |
$ct[1] = $ct[0]; |
$ct[0] = $this->headers['content-type']; |
if (isset($attrs) && is_array($attrs)) { |
while (list($key, $val) = each($attrs)) { |
if ($val == '') continue; |
$ap = preg_split('/=/',$val,2); |
if (preg_match('/^"/',$ap[1])) { $ap[1] = substr($ap[1],1,strlen($ap[1])-2); } |
$ct[$i] = $ap; |
$i++; |
} |
} |
// are we a multipart message? |
if (preg_match('/^multipart/i', $ct[1])) { $this->multipart = TRUE; } |
return $ct; |
} |
// _get_headers: pulls the headers out of the data and builds the $this->headers array |
function _get_headers($data,$simple = FALSE) { |
$lines = preg_split('/\n/', $data); |
while (list($key, $val) = each($lines)) { |
$val = trim($val); |
if ($val == "") break; |
if (preg_match('/^From[^:].*$/', $val)) continue; /* strips out any From lines added by the MTA */ |
$hdr = preg_split('/: /', $val, 2); |
if (count($hdr) == 1) { |
// this is a continuation of the last header (like a recieved from line) |
$this->headers[$last] .= $val; |
} else { |
$this->headers[strtolower($hdr[0])] = $hdr[1]; |
//echo htmlspecialchars($this->headers['from'])."<br />" ; |
$last = strtolower($hdr[0]); |
} |
} |
// ajout alex |
// pour supprimer le problème des ISO... |
// a déplacer ailleur, et appelé avant affichage |
if (preg_match ('/windows-[0-9][0-9][0-9][0-9]/', $this->headers['subject'], $nombre)) { |
$reg_exp = $nombre[0] ; |
} else { |
$reg_exp = 'ISO-8859-15?' ; |
} |
if (preg_match ('/UTF/i', $this->headers['subject'])) $reg_exp = 'UTF-8' ; |
preg_match_all ("/=\?$reg_exp\?(Q|B)\?(.*?)\?=/i", $this->headers['subject'], $match, PREG_PATTERN_ORDER) ; |
for ($i = 0; $i < count ($match[0]); $i++ ) { |
if ($match[1][$i] == 'Q') { |
$decode = quoted_printable_decode ($match[2][$i]) ; |
} elseif ($match[1][$i] == 'B') { |
$decode = base64_decode ($match[2][$i]) ; |
} |
$decode = preg_replace ("/_/", " ", $decode) ; |
if ($reg_exp == 'UTF-8') { |
$decode = utf8_decode ($decode) ; |
} |
$this->headers['subject'] = str_replace ($match[0][$i], $decode, $this->headers['subject']) ; |
} |
// sanity anyone? |
if (!$this->headers['content-type']) { $this->headers['content-type'] = "text/plain; charset=us-ascii"; } |
if (!$simple) { $this->headers['content-type'] = $this->_ct_parse(); } |
return TRUE; |
} |
// _get_body: pulls the body out of the data and fills $this->body, decoding the data if nessesary. |
function _get_body($data,$simple = FALSE) { |
$lines = preg_split('/\n/', $data); |
$doneheaders = FALSE; |
$data = ""; |
while (list($key,$val) = each($lines)) { |
//echo htmlspecialchars($val)."<br>"; |
if (($val == '') and (!$doneheaders)) { |
$doneheaders = TRUE; |
continue; |
} else if ($doneheaders) { |
$data .= $val . "\n"; |
} |
} |
// now here comes the fun part... decoding. |
switch($this->headers['content-transfer-encoding']) { |
case 'binary': |
$this->body = $this->_cte_8bit($this->_cte_qp($this->_cte_binary($data)),$simple); |
break; |
case 'base64': |
$this->body = $this->_cte_8bit($this->_cte_qp($this->_cte_base64($data)),$simple); |
break; |
case 'quoted-printable': |
$this->body = $this->_cte_8bit($this->_cte_qp($data),$simple); |
break; |
case '8bit': |
$this->body = $this->_cte_8bit($data,$simple); |
break; |
case '7bit': // 7bit doesn't need to be decoded |
default: // And the fall through as well... |
$this->body = $data; |
break; |
} |
//echo $this->headers['content-type'][2][1]; |
if (isset($this->headers['content-type'][2][1]) && $this->headers['content-type'][2][1] == 'UTF-8') { |
//$this->body = utf8_decode ($this->body) ; |
//echo quoted_printable_decode(utf8_decode ($this->body)) ; |
} |
if ($simple) { return TRUE; } |
// if we are a multipart message then break up the parts and decode, set the appropriate variables. |
// here comes the best part about making ezmlm-php OOP. since each part is just really a little message |
// in itself each part becomes a new parser object and all the wheels turn again... :) |
if ($this->multipart) { |
$boundary = ''; |
for ($i = 2; $i <= count($this->headers['content-type']); $i++) { |
if (preg_match('/boundary/i', $this->headers['content-type'][$i][0])) { |
$boundary = $this->headers['content-type'][$i][1]; |
} |
} |
if ($boundary != '') { |
$this->_get_parts($this->body,$boundary); |
} else { |
// whoopps... something's not right here. we were told that the message is supposed |
// to be a multipart message, yet the boundary wasn't set in the content type. |
// mark the message as non multipart and add a message to the top of the body. |
$this->multipart = FALSE; |
$this->body = "PARSER ERROR:\nWHILE PARSING THIS MESSAGE AS A MULTIPART MESSAGE AS DEFINED IN RFC2045 THE BOUNDARY IDENTIFIER WAS NOT FOUND!\nTHIS MESSAGE WILL NOT DISPLAY CORRECTLY!\n\n" . $this->body; |
} |
} |
return TRUE; |
} |
// _get_parts: breaks up $data into parts based on $boundary following the rfc specs |
// detailed in section 5 of RFC2046 (http://www.faqs.org/rfcs/rfc2046.html) |
// After the parts are broken up they are then turned into parser objects and the |
// resulting array of parts is set to $this->parts; |
function _get_parts($data,$boundary) { |
$inpart = -1; |
$lines = preg_split('/\n/', $data); |
// La première partie contient l'avertissement pour les client mail ne supportant pas |
// multipart, elle est stocké dans parts[-1] |
while(list($key,$val) = each($lines)) { |
if ($val == "--" . $boundary) { $inpart++; continue; } // start of a part |
else if ($val == "--" . $boundary . "--") { break; } // the end of the last part |
else { $parts[$inpart] .= $val . "\n"; } |
} |
for ($i = 0; $i < count($parts) - 1; $i++) { // On saute la première partie |
$part[$i] = new ezmlm_parser(); |
$part[$i]->parse($parts[$i]); |
$this->parts[$i] = $part[$i]; |
//echo $this->parts[$i]."<br>" ; |
} |
} |
// _cte_8bit: decode a content transfer encoding of 8bit |
// NOTE: this function is a little bit special. Since the end result will be displayed in |
// a web browser _cte_8bit decodes ASCII characters > 127 (the US-ASCII table) into the |
// html ordinal equivilant, it also ensures that the messages content-type is changed |
// to include text/html if it changes anything... |
function _cte_8bit($data,$simple = FALSE) { |
if ($simple) { return $data; } |
$changed = FALSE; |
$chars = preg_split('//',$data); |
while (list($key,$val) = each($chars)) { |
if (ord($val) > 127) { $out .= '&#' . ord($val) . ';'; $changed = TRUE; } |
else { $out .= $val; } |
} |
if ($changed) { $this->headers['content-type'][1] = 'text/html'; } |
return $out; |
} |
// _cte_binary: decode a content transfer encoding of binary |
function _cte_binary($data) { return $data; } |
// _cte_base64: decode a content transfer encoding of base64 |
function _cte_base64($data) { return base64_decode($data); } |
// _cte_qp: decode a content transfer encoding of quoted_printable |
function _cte_qp($data) { |
// For the time being we'll use PHP's function, it seems to work well enough. |
return quoted_printable_decode($data); |
} |
} |
/branches/livraison_menes/classes/ezmlm-php-2.0/ezmlm-repondre.php |
---|
New file |
0,0 → 1,187 |
<?php |
// $Id: ezmlm-repondre.php,v 1.2 2005-09-27 16:43:08 alexandre_tb Exp $ |
// |
// ezmlm-msgdisplay.php - ezmlm-php v2.0 |
// -------------------------------------------------------------- |
// Will parse a template (if specified) and display a message. |
// Includes a default template. |
// -------------------------------------------------------------- |
require_once("ezmlm.php"); |
require_once("Mail/mimeDecode.php") ; |
class ezmlm_repondre extends ezmlm_php { |
// our template |
var $msgtmpl; |
var $message_rendu ; |
// display: parses a message (using ezmlm_parser) and displays it |
// using a template |
function repondre($msgfile) { |
if (!is_file($msgfile)) { |
if (is_file($this->listdir . "/" . $msgfile)) { $msgfile = $this->listdir . "/" . $msgfile; } |
else if (is_file($this->listdir . "/archive/" . $msgfile)) { $msgfile = $this->listdir . "/archive/" . $msgfile; } |
else { return FALSE; } |
} |
$message = file_get_contents($msgfile) ; |
$mimeDecode = new Mail_mimeDecode($message) ; |
$mailDecode = $mimeDecode->decode(array('decode_bodies' => 'true', 'include_bodies' => 'true')) ; |
// $msg->msgfile contient le chemin du fichier du mail en partant de la racine |
// Le point d'exclamation est le délimiteur de l'expression régulière |
$relfile = preg_replace('!' . $this->listdir . '!', '', $msgfile); |
$a1 = preg_replace('!/archive/(.*)/.*$!', '\1', $relfile); // $a1 contient le nom du répertoire |
$a2 = preg_replace('!/archive/.*/(.*)$!', '\1', $relfile); // $a2 contient le nom du fichier |
if (isset($mailDecode->headers['date'])) $msgtime = strtotime(preg_replace ('/CEST/', '', $mailDecode->headers['date'])); |
$threadidx = date("Ym", $msgtime); |
if ($a2 <= 10) $numero_precedent = '0'.($a2 - 1) ; else $numero_precedent = ($a2 - 1) ; |
if ($a2 < 9) $numero_suivant = '0'.($a2 + 1) ; else $numero_suivant = ($a2 + 1); |
// On teste si le message suivant existe |
$decoupe = explode ('/', $msgfile) ; |
// Les nom de fichiers sont du format : |
// archive/0/01 |
// archive/0/02 ... 0/99 archive/1/01 ... |
$nom_fichier = $decoupe[count($decoupe)-1] ; |
$nom_repertoire = $decoupe[count($decoupe)-2] ; |
$repertoire_suivant = $nom_repertoire ; $repertoire_precedent = $nom_repertoire ; |
if ($nom_fichier > 8) { |
$fichier_suivant = $nom_fichier + 1 ; |
if ($nom_fichier == 99) { |
$fichier_suivant = '01' ; |
$repertoire_suivant = $nom_repertoire + 1 ; |
} |
} else { |
$fichier_suivant = '0'.($nom_fichier + 1) ; |
} |
if ($nom_fichier > 10) { |
$fichier_precedent = $nom_fichier - 1 ; |
} else { |
if ($nom_fichier == '01') { |
$fichier_precedent = '99' ; |
$repertoire_precedent = $nom_repertoire - 1 ; |
} else { |
$fichier_precedent = '0'.($nom_fichier - 1) ; |
} |
} |
print '<br />'."\n"; |
$this->parse_template($mailDecode, $a2, $a1); |
$formulaireReponse = new HTML_formulaireMail('formulaire_reponse', 'post', str_replace('&', '&', $this->forcehref).'&action=repondre&'. |
'actionargs[]='.$a1.'&actionargs[]='.$a2.'&'.PROJET_VARIABLE_ACTION.'='.PROJET_ENVOYER_UN_MAIL_V) ; |
$formulaireReponse->construitFormulaire() ; |
$formulaireReponse->addElement ('hidden', 'messageid', $mailDecode->headers['message-id']) ; |
// Ajout de > au début de chaque ligne du message |
$tableau = explode ("\n", $this->message_rendu) ; |
$this->message_rendu = "> ".implode ("\n> ", $tableau) ; |
$formulaireReponse->setDefaults(array('mail_corps' => $this->message_rendu, |
'mail_titre' => 'Re : '.$this->decode_iso ($mailDecode->headers['subject']))) ; |
print $formulaireReponse->toHTML() ; |
} |
function parse_template(&$mailDecode, $numero_mail, $numero_mois, $num_part = '') { |
static $profondeur = array(); |
array_push ($profondeur, $num_part) ; |
$corps = '' ; |
if ($mailDecode->ctype_primary == 'multipart') { |
include_once PROJET_CHEMIN_CLASSES.'type_fichier_mime.class.php' ; |
for ($i = 0; $i < count($mailDecode->parts); $i++) { |
switch ($mailDecode->parts[$i]->ctype_secondary) { |
case 'plain' : |
case 'html' : $corps .= $mailDecode->parts[$i]->body ; |
break ; |
case 'mixed' : |
case 'rfc822' : |
case 'alternative' : |
case 'appledouble' : |
$this->parse_template($mailDecode->parts[$i], $numero_mail, $numero_mois, $i) ; |
break ; |
case 'applefile' : continue ; |
break ; |
default : |
if ($mailDecode->parts[$i]->ctype_secondary == 'octet-stream') { |
$nom_piece_jointe = $mailDecode->parts[$i]->ctype_parameters['name'] ; |
$tab = explode ('.', $nom_piece_jointe) ; |
$extension = $tab[count ($tab) - 1] ; |
$mimeType = type_fichier_mime::factory($extension, $GLOBALS['projet_db']); |
$mimeType->setCheminIcone(PROJET_CHEMIN_ICONES) ; |
} else { |
$nom_piece_jointe = isset ($mailDecode->parts[$i]->d_parameters['filename']) ? |
$mailDecode->parts[$i]->d_parameters['filename'] : $mailDecode->parts[$i]->ctype_parameters['name'] ; |
$mimeType = new type_fichier_mime($GLOBALS['projet_db'], $mailDecode->parts[$i]->ctype_primary.'/'. |
$mailDecode->parts[$i]->ctype_secondary, PROJET_CHEMIN_ICONES) ; |
} |
$corps .= ''; |
if (count ($profondeur) > 0) { |
array_shift($profondeur) ; |
//for ($j= 0; $j < count ($profondeur); $j++) $corps .= '&actionargs[]='.$profondeur[$j]; |
} |
/*$corps .= '&actionargs[]='.$i ; |
$corps .= '">'.'<img src="'.$mimeType->getCheminIcone().'" alt="'.$nom_piece_jointe.'" /> ' ; |
$corps .= $nom_piece_jointe; |
$corps .= '</a><br />' ;*/ |
break ; |
} |
} |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', $this->cleanup_body($corps,TRUE), $this->msgtmpl); |
} else if ($mailDecode->ctype_primary == 'message') { |
$this->message_rendu .= "\n".'<div class="message">'.$this->parse_entete_mail($mailDecode->parts[0]); |
$corps .= $this->parse_template($mailDecode->parts[0], $numero_mail, $numero_mois, 0) ; |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', $this->cleanup_body($corps,true), $this->msgtmpl).'</div>'; |
} else if ($mailDecode->ctype_primary == 'application' || $mailDecode->ctype_primary == 'image'){ |
if ($mailDecode->ctype_secondary == 'applefile') return ; |
$mimeType = new type_fichier_mime($GLOBALS['projet_db'], $mailDecode->ctype_primary.'/'.$mailDecode->ctype_secondary,PROJET_CHEMIN_ICONES) ; |
if ($mimeType->getIdType() != 12) { |
$corps .= '' ; |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', $this->cleanup_body($corps,true), $this->msgtmpl); |
} |
} else { |
if (preg_match('/html/i', $mailDecode->ctype_secondary)) { |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', $this->cleanup_body($mailDecode->body), $this->msgtmpl); |
} else { |
if (isset ($mailDecode->ctype_parameters['charset']) && $mailDecode->ctype_parameters['charset'] == 'UTF-8') { |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', utf8_decode($this->cleanup_body($mailDecode->body)) , $this->msgtmpl); |
} else { |
$this->message_rendu .= preg_replace('/<ezmlm-body>/i', $this->cleanup_body($mailDecode->body), $this->msgtmpl); |
} |
} |
} |
} |
function ezmlm_repondre() { |
$this->ezmlm_php(); |
if (($this->msgtemplate != "") and (is_file($this->msgtemplate))) { |
$fd = fopen($this->msgtemplate, "r"); |
while (!feof($fd)) { $this->msgtmpl .= fgets($fd,4096); } |
fclose($fd); |
} else { |
$this->msgtmpl = '<ezmlm-body>'; |
} |
$this->msgtmpl_entete = '<dl><ezmlm-headers> |
<dt><ezmlm-header-name> :</dt> |
<dd><ezmlm-header-value></dd> |
</ezmlm-headers> |
</dl>' ; |
} |
} |
/branches/livraison_menes/classes/ezmlm-php-2.0/ezmlm-langue-fr.php |
---|
New file |
0,0 → 1,5 |
<?php |
define ('FIL_DE_DISCUSSION', 'Fil de discussion') ; |
?> |
/branches/livraison_menes/classes/HTML_formulaireProjet.class.php |
---|
New file |
0,0 → 1,149 |
<?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: HTML_formulaireProjet.class.php,v 1.6 2006-07-04 09:26:46 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe HTML_formulaireProjet |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.6 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/** Inclure le fichier de langue pour utiliser cette classe de façon autonome. */ |
require_once 'HTML/QuickForm.php' ; |
require_once 'HTML/QuickForm/checkbox.php' ; |
require_once 'HTML/QuickForm/select.php' ; |
// +------------------------------------------------------------------------------------------------------+ |
// | LISTE des constantes | |
// +------------------------------------------------------------------------------------------------------+ |
/** |
* class HTML_formulaireProjet |
* Cette classe représente un formulaire pour saisir un projet ou le modifier. |
*/ |
class HTML_formulaireProjet extends HTML_QuickForm |
{ |
/** |
* Constructeur |
* |
* @param string formName Le nom du formulaire. |
* @param string method Soit get soit post, voir le protocole HTTP |
* @param string action L'action du formulaire. |
* @param string target La cible du formulaire. |
* @param Array attributes Des attributs supplémentaires pour la balise <form> |
* @param bool trackSubmit Pour repérer si la formulaire a été soumis. |
* @return void |
* @access public |
*/ |
function HTML_formulaireProjet( $formName = "", $method = "post", $action = "", $target = "_self", $attributes = "", $trackSubmit = false ) |
{ |
HTML_QuickForm::HTML_QuickForm($formName, $method, $action, $target, $attributes, $trackSubmit) ; |
} // end of member function HTML_formulaireProjet |
/** |
* Renvoie le code HTML du formulaire. |
* |
* @return string |
* @access public |
*/ |
function toHTML( ) |
{ |
$res = HTML_QuickForm::toHTML() ; |
return $res ; |
} // end of member function toHTML |
/** |
* Ajoute les champs nécessaire au formulaire. |
* |
* @return void |
* @access public |
*/ |
function construitFormulaire(&$tableau_projet, $tableau_type = '') |
{ |
$this->addElement ('text', 'projet_titre', PROJET_TITRE, array ('class' => 'projet_titre', 'maxlength' => 255)) ; |
$this->addRule ('projet_titre', PROJET_ALERTE_TITRE, 'required', '', 'client') ; |
if ($tableau_type != '') { |
$select = new HTML_QuickForm_select ('projet_type', PROJET_TYPE, $tableau_type, array ('class' => 'projet_type')) ; |
$this->addElement($select) ; |
unset ($select) ; |
} |
$this->addElement ('textarea', 'projet_resume', PROJET_RESUME, array('class'=>'projet_resume', 'rows'=>"10")) ; |
$this->addElement ('textarea', 'projet_description', PROJET_DESCRIPTION, array('class'=>"projet_resume", 'rows'=>"20")) ; |
$this->addElement ('text', 'projet_espace_internet', PROJET_ESPACE_INTERNET, array ('class' => 'projet_espace_internet')) ; |
// on fait un groupe avec les boutons radio pour les mettres sur la même ligne |
$radio[] = &HTML_QuickForm::createElement('radio', 'projet_moderation', '0', PROJET_NON_MODERE, '0') ; |
$radio[] = &HTML_QuickForm::createElement('radio', 'projet_moderation', '1', PROJET_MODERE, '1'); |
$this->addGroup($radio, null, PROJET_INSCRIPTION, ' '); |
$label_projet = array() ; |
$id_projet = array() ; |
foreach ($tableau_projet as $projet) { |
$label_projet[] = $projet->getTitre() ; |
$id_projet[] = $projet->getId() ; |
} |
if (PROJET_UTILISE_HIERARCHIE) { |
$select = new HTML_QuickForm_select ('projet_asso', PROJET_PERE, $label_projet, array ('class' => 'projet_asso')) ; |
$this->addElement($select) ; |
unset ($select) ; |
} |
$this->applyFilter(array('projet_resume', 'projet_description'), 'addslashes') ; |
$this->setRequiredNote('<span style="color: #ff0000">*</span>'.PROJET_CHAMPS_REQUIS) ; |
$url_annuler = new Net_URL($this->getAttribute('action')) ; |
$url_annuler->removeQueryString(PROJET_VARIABLE_ACTION) ; |
// on fait un groupe avec les boutons pour les mettres sur la même ligne |
$buttons[] = &HTML_QuickForm::createElement('link', 'annuler', PROJET_FICHIER_ANNULER, |
preg_replace ("/&/", "&", $url_annuler->getURL()), PROJET_FICHIER_ANNULER); // Le preg_replace contourne un pb de QuickForm et Net_URL |
// qui remplacent deux fois les & par des & |
// ce qui fait échouer le lien |
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider', PROJET_FICHIER_VALIDER); |
$this->addGroup($buttons, null, null, ' '); |
} // end of member function _construitFormulaire |
} // end of HTML_formulaireProjet |
?> |
/branches/livraison_menes/classes/document.class.php |
---|
New file |
0,0 → 1,586 |
<?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: document.class.php,v 1.5 2006-01-18 10:52:03 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe document |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.5 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once PROJET_CHEMIN_CLASSES.'fichier.class.php' ; |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/** |
* class document |
* Représente un document associé à un projet. C'est à dire un fichier |
* téléchargeable disposant en plus d'une visibilité, d'un nom long, d'une |
* description et d'une url. |
*/ |
class document extends fichier |
{ |
/*** Attributes: ***/ |
/** |
* Description qui apparaitra à l'écran. |
* @access private |
*/ |
var $_description; |
/** |
* Date de dernière mise à jour des attributs du fichier. |
* @access private |
*/ |
var $_date_mise_a_jour; |
/** |
* Soit public, soit privé. |
* @access private |
*/ |
var $_visibilite; |
/** |
* Le nom du fichier tel qu'il apparaitra à l'écran. |
* @access private |
*/ |
var $_nom_long; |
/** |
* Un objet PEAR:DB |
* @access private |
*/ |
var $_db; |
/** |
* L'identifiant du document dans la table projet_document. |
* @access private |
*/ |
var $_id; |
/** |
* |
* @access private |
*/ |
var $_chemin_icone; |
/** |
* L'identifiant du père, peut être à NULL |
* @access private |
*/ |
var $_id_pere; |
/** |
* L'identifiant du propriétaire. Provient d'un annuaire. Peut être à NULL. |
* @access private |
*/ |
var $_id_proprietaire; |
/** |
* L'identifiant du projet auquel appartient le document. Peut être à NULL. |
* @access private |
*/ |
var $_id_projet; |
/** |
* Le chemin du fichier, depuis le répertoire du projet |
* |
*/ |
var $_pd_lien ; |
/** |
* |
* |
* @param int id_document L'identifiant du document dans la base. |
* @param int objetDB un objet PEAR:DB |
* @return void |
* @access public |
*/ |
function document( $id_document = "", &$objetDB, $chemin = '', $chemin_icones = '') |
{ |
$this->_db = $objetDB ; |
$this->_chemin_icone = $chemin_icones ; |
if ($id_document != "") { |
$requete = "select * from projet_documents where pd_id=".$id_document ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
if ($resultat->numRows()>0) { |
fichier::fichier($chemin.$ligne->pd_lien, $this->_db) ; |
$this->_id = $ligne->pd_id ; |
if (is_object ($this->_type_mime)) $this->_type_mime->setCheminIcone ($chemin_icones) ; |
$this->_id_proprietaire = $ligne->pd_ce_utilisateur ; |
$this->_nom_long = $ligne->pd_nom ; |
$this->_visibilite = $ligne->pd_visibilite ; |
$this->_date_mise_a_jour = $ligne->pd_date_de_mise_a_jour ; |
$this->_description = $ligne->pd_description ; |
$this->_pd_lien = $ligne->pd_lien; |
if ($this->_isRacine($ligne->pd_pere)) { |
$this->_id_pere = 0 ; |
} else { |
$this->_id_pere = $ligne->pd_pere ; |
} |
} |
} |
} // end of member function document |
/** |
* |
* |
* @param int id_document L'identifiant du document dans la base. |
* @param int objetDB Un objet PEAR:DB |
* @return document |
* @access public |
*/ |
function __construct( $id_document = "", &$objetDB, $chemin = '', $chemin_icones = '' ) |
{ |
$this->document($id_document, $objetDB, $chemin, $chemin_icones); |
} // end of member function __construct |
/** |
* Renvoie le nom long du fichier. |
* |
* @return string |
* @access public |
*/ |
function getNomLong( ) |
{ |
return $this->_nom_long ; |
} // end of member function getNomLong |
/** |
* Renvoie la visibilité du document, soit "public" soit "prive" |
* |
* @return visibilite |
* @access public |
*/ |
function getVisibilite( ) |
{ |
return $this->_visibilite ; |
} // end of member function getVisibilite |
/** |
* Renvoie la description du document, sous forme de chaine. |
* |
* @return string |
* @access public |
*/ |
function getDescription( ) |
{ |
return $this->_description ; |
} // end of member function getDescription |
/** |
* Renvoie la date de création ou de mise à jour du fichier. |
* |
* @return date |
* @access public |
*/ |
function getDateMiseAJour( ) |
{ |
return $this->_date_mise_a_jour ; |
} // end of member function getDateMiseAJour |
/** |
* Renvoie l'identifiant d'un document. |
* |
* @return int |
* @access public |
*/ |
function getIdDocument( ) |
{ |
return $this->_id ; |
} // end of member function getIdDocument |
/** |
* Renvoie le chemin de l'icone du fichier. Fait un appel à type_fichier_mime. |
* |
* @return string |
* @access public |
*/ |
function getCheminIcone() |
{ |
if ($this->isRepertoire()) { |
return $this->_chemin_icone."repertoire.gif" ; |
} else { |
return $this->_type_mime->getCheminIcone() ; |
} |
} // end of member function getCheminIcone |
/** |
* Permet de récupérer le nom du répertoire racine associé à un projet. |
* |
* @param int id_projet L'identifiant du projet dont on veux récupérer le répertoire racine. |
* @param DB objetDB Un objet PEAR:DB |
* @return string |
* @static |
* @access public |
*/ |
function getNomRepertoireProjet( $id_projet , &$objetDB) |
{ |
// Dans la table projet_documents, pour les répertoires racines, pd_pere = null |
$requete = "select pd_nom from projet_documents where pd_ce_projet=$id_projet and pd_pere is null" ; |
$resultat = $objetDB->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
return $ligne->pd_nom ; |
} // end of member function getNomRepertoireProjet |
/** |
* Renvoie true si le document passé en paramètre est le répertoire racine. |
* |
* @param int id_document L'identifiant du document dont on veut savoir si c'est la racine. |
* @return bool |
* @access public |
*/ |
function _isRacine( $id_document ) |
{ |
if ($id_document) { |
$requete = "select pd_pere from projet_documents where pd_id=".$id_document ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ; |
if ($resultat->numRows() >0) { |
if ($ligne->pd_pere == null){ |
return true ; |
} |
} |
} |
return false ; |
} // end of member function _isRacine |
/** |
* Renvoie le chemin d'un fichier ou d'un répertoire. Contrairement à la classe |
* mère, cette méthode renvoie une URL projet et non pas un fichier. |
* |
* @return string |
* @access public |
*/ |
function getChemin( ) |
{ |
if ($this->isRepertoire()) { |
return $this->_id ; |
} else { |
return $this->_chemin ; |
} |
} // end of member function getChemin |
/** |
* Renvoie pour le répertoire courant, les identifiants et les noms de tous les |
* répertoires père jusqu'à la racine. 0 => ['id'], ['nom'] 1 => [id'], ['nom'] etc. |
* En commençant par la racine et en descendant. Pour la racine id vaut "" et nom |
* vaut "". |
* |
* @param int id_repertoire L'identifiant d'un répertoire. |
* @return Array |
* @access public |
*/ |
function getCheminIdRepertoire( $id_repertoire, &$objetDB ) |
{ |
if ($id_repertoire == "") $id_repertoire = 0; |
// on commence par rechercher le répertoire père, dans la base de donnée |
$requete = "select pd_pere, pd_nom, pd_id from projet_documents where pd_id=$id_repertoire" ; |
$resultat = $objetDB->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
$chemin_rep_id_nom = array() ; |
if ($resultat->numRows()>0) { |
if ($ligne->pd_pere == 0) { |
$tab = array ($ligne->pd_id, $ligne->pd_nom) ; |
return $tab ; |
} |
else { |
$requete_pere = "select pd_id, pd_nom from projet_documents where pd_id=$ligne->pd_pere" ; |
$resultat_pere = $objetDB->query ($requete_pere) ; |
if (DB::isError($resultat_pere)) { |
die ("Echec de la requete<br />".$resultat_pere->getMessage()."<br />".$resultat_pere->getDebugInfo()) ; |
} |
$ligne_pere = $resultat_pere->fetchRow (DB_FETCHMODE_OBJECT) ; |
array_push ($chemin_rep_id_nom, $ligne->pd_id,$ligne->pd_nom) ; |
$tab = document::getCheminIdRepertoire($ligne_pere->pd_id, $objetDB) ; |
$chemin_rep_id_nom = array_merge ($chemin_rep_id_nom, $tab) ; |
} |
} |
$tabl_resultat = array() ; |
for ($i = 0; $i < count ($chemin_rep_id_nom); $i++) { |
$val1 = array_pop ($chemin_rep_id_nom) ; |
$val2 = array_pop ($chemin_rep_id_nom) ; |
array_push ($tabl_resultat, $val2, $val1) ; |
} |
return $tabl_resultat ; |
} // end of member function getCheminIdRepertoire |
/** |
* Calcule le chemin vers le fichier ou le répertoire uploadé |
* renvoie un chaine de la forme dir1/dir2/fichier.ext |
* En prenant comme racine le répertoire du projet, exclu. |
* @return string Le chemin |
*/ |
function calculeCheminUploaded ($radical) { |
// On recherche le chemin vers le fichier, en fonction du répertoire |
// ici on renomme le fichier à partir du dernier ID de la table gen_voiraussi |
$requete_document = "select pd_id from projet_documents order by pd_id desc limit 1,1" ; |
$resultat_document = $this->_db->query($requete_document) ; |
$ligne_document = $resultat_document->fetchRow(DB_FETCHMODE_OBJECT) ; |
$nouveau_nom = $ligne_document->pd_id+ 1 ; |
$extension = preg_replace("/([^\.]+)\.([a-zA-Z0-9]+$)/", "\\2", $_FILES['fichier']['name']) ; |
$nouveau_nom = $radical."_".$nouveau_nom.".".$extension ; |
if ($this->_id_pere != '') { |
// On appelle la méthode getCheminIdRepertoire qui renvoie un tableau avec la liste |
// des répertoires jusqu'à la racine, on enlève la racine ($i = 0) et on concatène |
// toutes les entrées pour obtenir le chemin jusqu'au répertoire courant |
$chemin_repertoire_entre_racine_et_repertoire_a_cree = '' ; |
$tableau_navigation = $this->getCheminIdRepertoire($this->_id_pere, $this->_db) ; |
for ($i = 0; $i < count ($tableau_navigation); $i+=2) $chemin_repertoire_entre_racine_et_repertoire_a_cree.= $tableau_navigation[$i]."/"; |
$chemin = $chemin_repertoire_entre_racine_et_repertoire_a_cree.$nouveau_nom ; |
} else { |
// Si l'on est à la racine du projet, le chemin est le nom du fichier |
return $nouveau_nom ; |
} |
return $chemin ; |
} |
/** |
* Enregistre une ligne dans la table projet_document |
* Le tableau de valeur doit contenir les éléments suivants 'document_nom','document_description','document_visibilite','fichier' |
* |
* @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments |
* @access public |
* @return void |
*/ |
function enregistrerSQL ($valeur, $chemin) { |
// On teste si on a affaire à un répertoire ou un fichier |
if (isset ($_FILES['fichier']['name'])) { |
// On tente de déterminer le type du fichier à partir de son nom dans $valeur['$fichier'] |
$tableau_nom = explode (".", $_FILES['fichier']['name']) ; |
// On prend le dernier élément du tableau, si c'est un tableau |
if (is_array($tableau_nom)) { |
$extension = array_pop($tableau_nom) ; |
$type = type_fichier_mime::factory($extension, $this->_db) ; |
$id_extension = $type->getIdType() ; |
} else { |
$id_extension = 12 ; |
} |
$pd_lien = $chemin ; |
} else { // Le cas ou on a affaire à un répertoire |
$id_extension = 0 ; |
// Le nom du répertoire est son identifiant avec un slash à la fin |
$pd_lien = $chemin."/" ; |
if ($this->_id_pere != '') { |
// On appelle la méthode getCheminIdRepertoire qui renvoie un tableau avec la liste |
// des répertoires jusqu'à la racine, on enlève la racine ($i = 0) et on concatène |
// toutes les entrées pour obtenir le chemin jusqu'au répertoire courant |
$chemin_repertoire_entre_racine_et_repertoire_a_cree = '' ; |
$tableau_navigation = $this->getCheminIdRepertoire($this->_id_pere, $this->_db) ; |
for ($i = 0; $i < count ($tableau_navigation); $i+=2) $chemin_repertoire_entre_racine_et_repertoire_a_cree.= $tableau_navigation[$i]."/"; |
$pd_lien .= $chemin_repertoire_entre_racine_et_repertoire_a_cree ; |
} |
$pd_lien .= SQL_obtenirNouveauId($this->_db, 'projet_documents', 'pd_id')."/" ; |
} |
$id = SQL_obtenirNouveauId($this->_db, 'projet_documents', 'pd_id') ; |
$requete = "insert into projet_documents set pd_id=".$id ; |
$requete .= ", pd_nom=\"".$valeur['document_nom']."\", pd_description=\"".$valeur['document_description']."\"". |
", pd_visibilite=\"".$valeur['document_visibilite']."\", pd_date_de_mise_a_jour=NOW(),". |
"pd_ce_projet=\"".$this->_id_projet."\", pd_ce_utilisateur=\"".$this->_id_proprietaire."\"". |
", pd_pere=\"$this->_id_pere\", pd_ce_type=\"$id_extension\", pd_lien=\"$pd_lien\"" ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$this->_id = $id ; |
return $pd_lien; |
} |
/** |
* Met à jour une ligne dans la table projet_document |
* Le tableau de valeur doit contenir les éléments suivants 'document_nom','document_description','document_visibilite','fichier' |
* |
* @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments |
* @access public |
* @return void |
*/ |
function majSQL ($valeur) { |
$requete = "update projet_documents set pd_nom=\"".$valeur['document_nom']."\", pd_description=\"".$valeur['document_description']."\"". |
", pd_visibilite=\"".$valeur['document_visibilite']."\", pd_date_de_mise_a_jour=NOW()". |
" where pd_id=".$this->_id; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
return ; |
} |
/** Supprime les donnéexs du document dans la table projet_documents |
* |
* |
* @return true en cas de succès |
*/ |
function suppressionSQL () { |
$requete = 'delete from projet_documents where pd_id='.$this->_id ; |
$resultat = $this->_db->query ($requete) ; |
if ($this->_db->affectedRows()) return true ; |
return false ; |
} |
/** |
* Déplace un document au sein d'un même projet |
* |
* @param int repertoire_destination L'identifiant du répertoire destination. |
* @return bool |
* @access public |
*/ |
function deplace( $repertoire_destination, $repertoire_projet ) |
{ |
// On récupère les informations du répertoire cible |
if ($repertoire_destination != 0) { |
$repertoire_cible = new document ($repertoire_destination, $this->_db) ; |
$rep = $repertoire_cible->_pd_lien ; |
} else { |
$rep = $repertoire_projet.'/' ; |
} |
// On récupère le nom du fichier |
$decoupe = explode ('/', $this->_pd_lien) ; |
$nom_fichier = $decoupe[count($decoupe)-1] ; |
$requete = 'update projet_documents set pd_lien="'.$rep.$nom_fichier.'", pd_pere='.$repertoire_destination.' where pd_id='.$this->_id ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
echo ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
return false ; |
} |
return fichier::deplace ($this->_chemin, PROJET_CHEMIN_FICHIER.$rep.$nom_fichier) ; |
} // end of member function deplace |
/** |
* Pour modifier l'identifiant du projet auquel appartient un document. |
* |
* @param int id_projet L'identifiant du projet. |
* @return void |
* @access public |
*/ |
function setIdProjet( $id_projet ) |
{ |
$this->_id_projet = $id_projet ; |
} // end of member function setIdProjet |
/** |
* Permet de modifier l'identifiant du propietaire d'un projet. |
* |
* @param int id_proprietaire L'identifiant du proprietaire d'un document. |
* @return void |
* @access public |
*/ |
function setIdProprietaire( $id_proprietaire ) |
{ |
$this->_id_proprietaire = $id_proprietaire ; |
} // end of member function setIdProprietaire |
/** |
* Permet de modifier l'identifiant du répertoire d'un document. |
* |
* @param int id_repertoire L'identifiant du repertoire d'un document. |
* @return void |
* @access public |
*/ |
function setIdRepertoire( $id_repertoire ) |
{ |
$this->_id_pere = $id_repertoire; |
} // end of member function setIdRepertoire |
/** |
* initAttributes sets all document attributes to its default value make |
* sure to call this method within your class constructor |
*/ |
function initAttributes( ) |
{ |
$this->_visibilite = "public"; |
} |
/** |
* Renvoie les derniers documents de l'ensemble des projets. |
* |
* @param int nombre Le nombre de document à renvoyer |
* @return Array |
* @static |
* @access public |
*/ |
function getDocumentsRecents( $nombre = 10, &$objetDB, $chemin, $chemin_icones, $id_projet = '', $visible = true) |
{ |
// on recherche les documents, hors répertoire |
$requete = 'select pd_id from projet_documents where pd_ce_type<>0 '; |
if ($id_projet != '') $requete .= ' and pd_ce_projet='.$id_projet.' '; |
if (!$visible) $requete .= ' and pd_visibilite="public" '; |
$requete .= 'order by pd_date_de_mise_a_jour desc limit 0,'.$nombre ; |
$resultat = $objetDB->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$tableau_document = array() ; |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_document, new document ($ligne->pd_id, $objetDB, $chemin, $chemin_icones)) ; |
} |
return $tableau_document ; |
} // end of member function getDocumentsRecents |
} // end of document |
?> |
/branches/livraison_menes/classes/projetControleur.class.php |
---|
New file |
0,0 → 1,1778 |
<?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: projetControleur.class.php,v 1.29.2.5 2007-04-13 08:27:07 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe controleur projet |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.29.2.5 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
if (isset ($GLOBALS['lang'])) { |
/** le fichier de langue, par defaut PROJET_LANGUE_DEFAUT */ |
include_once 'client/projet/langues/pro_langue_'.$GLOBALS['lang'].'.inc.php' ; |
} else { |
include_once 'client/projet/langues/pro_langue_'.PROJET_LANGUE_DEFAUT.'.inc.php' ; |
} |
require_once GEN_CHEMIN_API.'html/HTML_TableFragmenteur.php' ; |
// +------------------------------------------------------------------------------------------------------+ |
// | LISTE des constantes | |
// +------------------------------------------------------------------------------------------------------+ |
define ("PROJET_ACTION_COUPER", 3) ; |
define ("PROJET_ACTION_MODIFIER", 4) ; |
define ("PROJET_SUPPRESSION_FICHIER", 5) ; |
define ("PROJET_NOUVEAU", 6) ; |
define ("PROJET_NOUVEAU_V", 7) ; |
define ('PROJET_MODIFIER_DESCRIPTION', 19) ; |
define ('PROJET_MODIFIER_DESCRIPTION_V', 20) ; |
define ("PROJET_NOUVEAU_FICHIER", 8) ; |
define ("PROJET_NOUVEAU_FICHIER_V", 9) ; |
define ("PROJET_NOUVEAU_REPERTOIRE", 11) ; |
define ("PROJET_NOUVEAU_REPERTOIRE_V", 12) ; |
define ("PROJET_SUPPRESSION_PROJET", 10) ; |
define ("PROJET_ENVOYER_UN_MAIL", 13) ; |
define ("PROJET_ENVOYER_UN_MAIL_V", 14) ; |
define ("PROJET_ACTION_MODIFIER_V", 15) ; |
define ('PROJET_ACTION_NOUVELLE_LISTE', 16) ; |
define ('PROJET_ACTION_NOUVELLE_LISTE_V', 17) ; |
define ('PROJET_ACTION_S_INSCRIRE', 21) ; |
define ('PROJET_ACTION_CREER_WIKI', 22) ; |
define ('PROJET_ACTION_SUPPRIMER_WIKI', 23) ; |
define ('PROJET_ACTION_CREER_WIKI_V', 24) ; |
define ('PROJET_ACTION_SUPPRIMER_LISTE', 25) ; |
define ('PROJET_ACTION_DESINSCRIPTION_PROJET', 26) ; |
define ('PROJET_ACTION_INSCRIPTION_LISTE', 27) ; |
define ('PROJET_ACTION_DESINSCRIPTION_LISTE', 28) ; |
define ('PROJET_ACTION_REFERENCER_LISTE', 29) ; |
define ('PROJET_ACTION_REFERENCER_LISTE_V', 30) ; |
define ('PROJET_ACTION_COLLER', 32) ; |
define ('PROJET_ACTION_ASSOCIER_WIKI', 36) ; |
define ('PROJET_ACTION_ASSOCIER_WIKI_V', 37) ; |
define ('PROJET_ACTION_VOIR_RESUME', 'resume') ; |
define ('PROJET_ACTION_VOIR_DESCRIPTION', 'description') ; |
define ('PROJET_ACTION_VOIR_DOCUMENT', 'documents') ; |
define ('PROJET_ACTION_VOIR_FORUM', 'forums') ; |
define ('PROJET_ACTION_VOIR_PARTICIPANT', 'participants') ; |
define ('PROJET_ACTION_VOIR_WIKINI', 'wikini') ; |
/** |
* Code erreur pour l'interface projetControleur qui trouveront leur message |
* correspondant via la fonction projetControleur::messageErreur() |
*/ |
define ("PROJETCONTROLEUR_ACTION_INVALIDE", -1) ; |
define ("PROJETCONTROLEUR_ERREUR_SUPPRESSION_REPERTOIRE", -2) ; |
define ("PROJETCONTROLEUR_PAS_DE_DOCUMENT_SELECTIONNE", -3) ; |
define ("PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE", -4) ; |
/** |
* Constantes pour définir les droits |
* |
*/ |
define ('PROJET_DROIT_ADMINISTRATEUR', 1) ; |
define ('PROJET_DROIT_COORDINATEUR', 2) ; |
define ('PROJET_DROIT_PROPRIETAIRE', 4) ; |
define ('PROJET_DROIT_CONTRIBUTEUR', 8) ; |
define ('PROJET_DROIT_AUCUN', 16) ; |
define ('PROJET_DROIT_EN_ATTENTE', 32); |
/** |
* class projetControleur |
* Cette classe sert à lancer les diverses applications du module projet, en |
* fonction des paramêtre de l'URL GET ou POST. La méthode principale est run() |
*/ |
class projetControleur |
{ |
/*** Attributes: ***/ |
/** |
* Contient l'action du controleur, qui correspond à une action du module projet. |
* @access private |
*/ |
var $_action; |
/** |
* Une connexion à une base de donnée DB. |
* @access private |
*/ |
var $_db; |
/** |
* Un objet PEAR:Auth |
* @access private |
*/ |
var $_auth; |
/** |
* |
* @access private |
*/ |
var $_url; |
/** |
* L'identifiant du projet sur lequel on travaille. Dans l'action par défaut, cet |
* attribut n'a pas de valeur. |
* @access private |
*/ |
var $_id_projet; |
/** |
* L'identifiant du répertoire que l'on est en train d'observer. Il sera passé en |
* paramètre à la classe HTML_listeDocuments. |
* @access private |
*/ |
var $_id_repertoire; |
/** |
* L'identifiant du fichier que l'on est en train de modifier / supprimer. |
* @access private |
*/ |
var $_id_document; |
/** |
* La présentation de la liste des projets, par défaut vide, signifie en liste. |
* Valeurs possibles: arbre |
* @access private |
*/ |
var $_presentation; |
/** |
* Le type du projets, par défaut 0, signifie en pas de type particumier. |
* Valeurs possibles: 0, 1, 2, 3 ... |
* @access private |
*/ |
var $_type ; |
/** |
* Le tableau des projets à ne pas afficher, ni dans l'arbre, ni dans les listes |
* @access private |
*/ |
var $_projet_exclu = array(); |
/** |
* parametre indiquant le type d'inscription possible |
* @access private |
*/ |
var $_prive = 0 ; |
/** |
* Méthode principale de la classe. Elle permet d'appeler les méthodes du modules |
* projet en fonction de l'action. |
* |
* @return string |
* @access public |
*/ |
function run( ) |
{ |
if ($this->_action == '') { |
return $this->messageErreur(PROJETCONTROLEUR_ACTION_INVALIDE) ; |
} |
// Si il n'y a pas d'action mais un projet, on transmet par défaut l'action PROJET_VOIR |
if ($this->_id_projet != "" && $this->_action == PROJET_DEFAUT) { |
$this->_action = PROJET_ACTION_VOIR_RESUME ; |
$this->_url->addQueryString (PROJET_VARIABLE_ID_PROJET, $this->_id_projet) ; |
} |
if ($this->_id_document != "") { |
$this->_url->addQueryString (PROJET_VARIABLE_ID_DOCUMENT, $this->_id_document) ; |
} |
if ($this->_id_repertoire != '') { |
$this->_url->addQueryString (PROJET_VARIABLE_ID_REPERTOIRE, $this->_id_repertoire) ; |
} |
$retour = '' ; |
if (!defined('PROJET_MENU_AFFICHER_CONTENU_CORPS')) $retour = $this->menuGeneral() ; |
switch ($this->_action) { |
case PROJET_DEFAUT : |
$retour .= $this->mesProjets() ; |
break ; |
case PROJET_VOIR : |
$retour .= $this->accueilProjet(); |
break ; |
case PROJET_NOUVEAU : |
$retour .= $this->formulaireProjet(PROJET_NOUVEAU_V) ; |
break ; |
case PROJET_NOUVEAU_V : |
$retour .= $this->nouveauProjetValidation().$this->mesProjets() ; |
break ; |
case PROJET_NOUVEAU_FICHIER : |
$retour .= $this->formulaireFichier(PROJET_NOUVEAU_FICHIER) ; |
break ; |
case PROJET_ACTION_MODIFIER : |
$retour .= $this->formulaireFichier (PROJET_ACTION_MODIFIER) ; |
break ; |
case PROJET_ACTION_MODIFIER_V : |
$retour .= $this->modifierFichier () ; |
$this->_action = PROJET_ACTION_VOIR_DOCUMENT ; |
break ; |
case PROJET_NOUVEAU_FICHIER_V : |
$retour .= $this->nouveauFichierValidation() ; |
$this->_action = PROJET_ACTION_VOIR_DOCUMENT ; |
break ; |
case PROJET_ACTION_COUPER : |
$retour .= $this->fichierCouper() ; |
$this->_action = PROJET_ACTION_VOIR_DOCUMENT ; |
break ; |
case PROJET_SUPPRESSION_PROJET : |
$retour .= $this->suppressionProjet().$this->mesProjets() ; |
break ; |
case PROJET_NOUVEAU_REPERTOIRE : |
$retour .= $this->nouveauRepertoire() ; |
break ; |
case PROJET_NOUVEAU_REPERTOIRE_V : |
$retour .= $this->nouveauRepertoireValidation() ; |
$this->_action = PROJET_ACTION_VOIR_DOCUMENT ; |
break ; |
case PROJET_SUPPRESSION_FICHIER : |
$retour .=$this->suppressionFichier() ; |
$this->_action = PROJET_ACTION_VOIR_DOCUMENT ; |
break ; |
case PROJET_ENVOYER_UN_MAIL : |
$retour .= $this->envoyerUnMailFormulaire() ; |
break ; |
case PROJET_ENVOYER_UN_MAIL_V : |
$retour .= $this->envoyerUnMailValidation() ; |
$this->_action = PROJET_ACTION_VOIR_FORUM ; |
break ; |
case PROJET_ACTION_NOUVELLE_LISTE : $retour .= $this->formulaireListe(PROJET_ACTION_NOUVELLE_LISTE) ; |
break ; |
case PROJET_ACTION_NOUVELLE_LISTE_V : $retour .= $this->nouvelleListeValidation() ; |
$this->_action = PROJET_ACTION_VOIR_FORUM ; |
break ; |
case PROJET_ACTION_SUPPRIMER_LISTE : $retour .= $this->supprimerListe() ; |
$this->_action = PROJET_ACTION_VOIR_RESUME ; |
break ; |
case PROJET_MODIFIER_DESCRIPTION : $retour .= $this->formulaireProjet(PROJET_MODIFIER_DESCRIPTION_V) ; |
break ; |
case PROJET_MODIFIER_DESCRIPTION_V : $retour .= $this->modifierProjet() ; |
$this->_action = PROJET_ACTION_VOIR_RESUME ; |
break ; |
case PROJET_ACTION_S_INSCRIRE : $retour .= $this->inscriptionProjet() ; |
break ; |
case PROJET_ACTION_DESINSCRIPTION_PROJET : $retour .= $this->desinscriptionProjet() ; |
break ; |
case PROJET_ACTION_CREER_WIKI : $retour .= $this->formulaireWiki() ; |
break ; |
case PROJET_ACTION_CREER_WIKI_V : $retour .= $this->creationWiki() ; |
$this->_action = PROJET_ACTION_VOIR_RESUME ; |
break ; |
case PROJET_ACTION_ASSOCIER_WIKI : $retour .= $this->associerWiki() ; |
break ; |
case PROJET_ACTION_ASSOCIER_WIKI_V : $retour .= $this->associationWiki() ; |
$this->_action = PROJET_ACTION_VOIR_RESUME ; |
break ; |
case PROJET_ACTION_SUPPRIMER_WIKI : $retour .= $this->supprimerWiki(); |
$this->_action = PROJET_ACTION_VOIR_RESUME ; |
break ; |
case PROJET_ACTION_INSCRIPTION_LISTE : $retour .= $this->inscriptionListe() ; |
$this->_action = PROJET_ACTION_VOIR_FORUM ; |
break ; |
case PROJET_ACTION_DESINSCRIPTION_LISTE : $retour .= $this->desinscriptionListe() ; |
$this->_action = PROJET_ACTION_VOIR_FORUM ; |
break ; |
case PROJET_ACTION_REFERENCER_LISTE : $retour .= $this->referencerListeExterne() ; |
break ; |
case PROJET_ACTION_REFERENCER_LISTE_V : $retour .= $this->referencerListeExterneValidation() ; |
$this->_action = PROJET_ACTION_VOIR_RESUME ; |
break ; |
} |
if (!is_int($this->_action)) { |
if (file_exists(PROJET_CHEMIN_APPLI.'actions/'.$this->_action.'.php')) { |
include_once PROJET_CHEMIN_APPLI.'actions/'.$this->_action.'.php' ; |
} |
} |
return $retour ; |
} // end of member function run |
/** |
* Permet de fixer la valeur de l'action pour l'objet projetControleur. Cette action |
* provient généralement de $_POST['action'] ou $_GET['action'] |
* |
* @param int action L'action à passer provient de l'URL. |
* @return void |
* @access public |
*/ |
function setAction( $action ) |
{ |
$this->_action = $action ; |
} // end of member function setAction |
/** |
* Constructeur. |
* |
* @return void |
* @access public |
*/ |
function projetControleur(&$dbObjet, &$authObjet, $urlObjet = "") |
{ |
$this->_db = $dbObjet ; |
$this->_auth = $authObjet ; |
$this->_id_repertoire = 0 ; |
$this->_type = '' ; |
if (is_object ($urlObjet)) { |
$this->_url = $urlObjet ; |
} |
} // end of member function projetControleur |
/** |
* Renvoie la liste des projets auquel participe la personne logguée, avec son |
* statut et un lien vers l'action pour gérer le projet. |
* |
* @return string |
* @access public |
*/ |
function mesProjets( ) |
{ |
$res = '' ; |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$participant = new participe ($this->_db) ; |
// Les entêtes des tableaux |
$tableau_label_statut_action = array (PROJET_GERER, PROJET_GERER, PROJET_GERER_FICHIER, PROJET_VOIR_FICHIER, "---") ; |
$auth = $this->_auth->getAuth() ; // Pour raccourcir le code |
$id_u = $this->_auth->getAuthData(PROJET_CHAMPS_ID) ; // -------------- |
return include_once PROJET_CHEMIN_APPLI.'presentation/'.$this->_presentation.'.php' ; |
} |
/** |
* Renvoie le menu général de l'application projet. Avec différents liens selon le |
* statut de l'utilisateur. |
* |
* @return string |
* @access public |
*/ |
function menuGeneral( ) |
{ |
$res = '' ; |
$auth = $this->_auth->getAuth() ; |
if (!$auth) return ; |
$res .= '<div class="menu_projet">'."\n"; |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$participant = new participe($this->_db) ; |
if ($participant->isAdministrateur($this->_auth->getAuthData(PROJET_CHAMPS_ID))) { |
$isAdm = 1; $isCoord = 1 ; $isContri = 1 ; |
$label_statut = PROJET_ADMINISTRATEUR; |
} else { |
$isAdm = 0 ; $isCoord = 0 ; $isContri = 0 ; |
} |
// Les menus spécifiques aux projets |
if ($this->_id_projet != '') { |
if (!$isCoord) { |
$isCoord = $participant->isCoordinateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_id_projet, $this->_db) ; |
if ($isCoord) { |
$label_statut = PROJET_CHEF ; |
$isContri = true ; |
} |
} |
if (!$isContri && !$isAdm) { |
$isContri = $participant->isContributeur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_id_projet, $this->_db) ; |
if ($isContri) { |
$label_statut = PROJET_VOUS_PARTICIPEZ ; |
} else { |
$label_statut = PROJET_VOUS_N_ETES_PAS_INSCRIT ; |
} |
} |
if ($participant->isEnAttente($this->_auth->getAuthData(PROJET_CHAMPS_ID),$this->_id_projet,$this->_db)) { |
$isEnAttente = true ; |
$label_statut = PROJET_EN_ATTENTE ; |
} else { |
$isEnAttente = false ; |
} |
} |
if ($isContri || $isAdm) { |
$res .= '<h2>' ; |
if ($isAdm) $res .= PROJET_VOUS_ETES.' ' ; |
$res .= $label_statut.'</h2>'."\n" ; |
} else { |
if ($this->_id_projet != '') $res .= '<h2>'.$label_statut.'</h2>'."\n" ; |
} |
if ($this->_id_projet != '') { |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
// Participant |
if (!$isEnAttente) { |
$res .= '<ul id ="projet_groupe_niv1"><li class="projet_niv1">'.PROJET_CONTRIBUTEUR ; |
$res .= '<ul id="projet_groupe_niv2_con">' ; |
} |
if ($isCoord || $isContri) { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_DESINSCRIPTION_PROJET) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_SE_DESINSCRIRE."</a></li>\n" ; |
} else { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_S_INSCRIRE) ; |
if (!$isEnAttente) $res .= '<li class="projet_niv2"><a href="'. |
$this->_url->getURL().'">'.PROJET_S_INSCRIRE_AU_PROJET."</a></li>\n" ; |
} |
// L'action gérer les utilisateurs |
if ($isCoord || $isAdm) { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_PARTICIPANT) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_GESTION_UTILISATEUR."</a></li>\n" ; |
} |
$res .= '</ul></li>' ; |
//document |
if ($isContri || $isCoord || $isAdm) { |
$res .= '<li class="projet_niv2">'.PROJET_DOCUMENT ; |
// L'action "Mettre un fichier en ligne" |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_FICHIER) ; |
$res .= '<ul><li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_METTRE_FICHIER."</a></li>\n" ; |
// L'action créer un répertoire |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_REPERTOIRE) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_CREER_REP."</a></li>\n" ; |
$res .= '</ul></li>' ; |
// Forum |
$res .= '<li class="projet_niv1">'.PROJET_FORUM ; |
$res .= '<ul id="projet_groupe_niv2_for">' ; |
if ($projet->avoirListe()) { |
// On vérifie si l'utilisateur est inscrit ou non à la liste et on ajoute le lien |
//$projet->getListesAssociees(); |
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php'; |
foreach ($projet->_listes_associes as $info_liste) { |
$inscription_liste = new inscription_liste($this->_db) ; |
if ($inscription_liste->getStatutInscrit($info_liste->getId(), $this->_auth) == 0) { |
$action_inscription = PROJET_ACTION_INSCRIPTION_LISTE ; |
$label_inscription = PROJET_RECEVOIR_MESSAGES ; |
} else { |
// L'action envoyer un mail |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ENVOYER_UN_MAIL) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_ECRIRE_LISTE.'</a></li>'."\n" ; |
$action_inscription = PROJET_ACTION_DESINSCRIPTION_LISTE ; |
$label_inscription = PROJET_NE_PAS_RECEVOIR_MESSAGES ; |
} |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, $action_inscription) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'; |
$res .= $label_inscription.'</a></li> '; |
} |
if ($isAdm || (PROJET_UTILISATEURS_COORD && $isCoord)) { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_SUPPRIMER_LISTE) ; |
$texte_liste = PROJET_SUPPRIMER_LISTE ; |
$onclic = ' onclick="javascript:return confirm(\''.PROJET_SUPPRIMER_LISTE_CONFIRMATION.'\');"' ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'"'.$onclic.'>'.$texte_liste.'</a></li>'."\n" ; |
} |
} else { |
if ($isAdm || $isCoord) { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_NOUVELLE_LISTE) ; |
$texte_liste = PROJET_CREER_LISTE ; |
$onclic = '' ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'"'.$onclic.'>'.$texte_liste.'</a></li>'."\n" ; |
} |
} |
if ($isAdm) { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_REFERENCER_LISTE) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_REFERENCER_LISTE.'</a></li>'."\n" ; |
} |
$res .= '</ul></li>' ; |
} |
// Gestion projet |
if ($isCoord || $isAdm) { |
$res .= '<li class="projet_niv1">'.PROJET_GESTION_PROJET ; |
$res .= '<ul id="projet_group_niv2_ges">' ; |
// L'action modifier les propriétés du projet |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_MODIFIER_DESCRIPTION) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_MODIFIER_PROPRIETES."</a></li>\n" ; |
if ($isAdm || (PROJET_UTILISATEURS_COORD && $isCoord)) { |
$this->_url->removeQueryString (PROJET_VARIABLE_ID_PROJET) ; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_NOUVEAU) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_NOUVEAU_PROJET.'</a></li>'."\n" ; |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
// L'action supprimer le projet |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_SUPPRESSION_PROJET) ; |
$this->_url->addQueryString(PROJET_VARIABLE_ID_PROJET, $this->_id_projet) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'" onclick="javascript:return confirm(\''.PROJET_SUPPRIMER_PROJET_CONFIRMATION.'\');">' |
.PROJET_SUPPRIMER_LE_PROJET."</a></li>\n" ; |
} |
$res .= '</ul></li>' ; |
} |
// Wikini |
if ($isAdm || $isCoord) { |
$res .= '<li class="projet_niv1">'.PROJET_WIKINI ; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_CREER_WIKI) ; |
$res .= '<ul><li class="projet_niv2"><a href="'.$this->_url->getURL()."\">".PROJET_CREER_WIKI."</a></li>\n" ; |
// L'action choisir un wikini |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_ASSOCIER_WIKI) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL()."\">".PROJET_ASSOCIER_WIKI."</a></li>\n" ; |
$res .= '</ul></li>' ; |
} |
} else { |
if ($isAdm) { |
$res .= '<li class="projet_niv1">'.PROJET_GESTION_PROJET ; |
$res .= '<ul>' ; |
$this->_url->removeQueryString (PROJET_VARIABLE_ID_PROJET) ; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_NOUVEAU) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_NOUVEAU_PROJET.'</a></li>'."\n" ; |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
$res .= '</ul></li>' ; |
} |
} |
$res .= '</ul>' ; |
$res .= "</div>\n" ; |
$this->_url->removeQueryString (PROJET_VARIABLE_ACTION) ; |
return $res ; |
} // end of member function menuGeneral |
/** |
* Renvoie le formulaire de création d'un projet. |
* |
* @return string |
* @access public |
*/ |
function formulaireProjet($action) |
{ |
if (!$this->_auth->getAuth()) { |
return PROJET_TEXTE_NON_IDENTIFIE; |
} |
if (fileperms(PROJET_CHEMIN_FICHIER) & 0x0002) { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, $action) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireProjet.class.php' ; |
$formulaire_projet = new HTML_formulaireProjet('formulaire_projet', 'post',str_replace ("&", "&", $this->_url->getURL())) ; |
$tableau_type = '' ; |
if (PROJET_UTILISE_TYPE) { |
include_once PROJET_CHEMIN_CLASSES.'projet_type.class.php' ; |
$tableau_type = projet_type::getTousLesTypes($this->_db) ; |
} |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$formulaire_projet->construitFormulaire(projet::getTousLesProjets($this->_db), $tableau_type) ; |
if ($action == PROJET_MODIFIER_DESCRIPTION_V) { |
$projet = new projet($this->_db, $this->_id_projet) ; |
$valeurs_par_defaut = array ( 'projet_titre' => $projet->getTitre(), |
'projet_description' => $projet->getDescription(), |
'projet_asso' => $projet->getIdPere(), |
'projet_wikini' => $projet->getWikini(), |
'projet_resume' => $projet->getResume(), |
'projet_espace_internet' => $projet->getEspaceInternet(), |
'projet_type'=> $projet->getType(), |
'projet_moderation' => $projet->isModere() |
) ; |
$formulaire_projet->setDefaults($valeurs_par_defaut) ; |
} else { |
$formulaire_projet->setDefaults (array ('projet_moderation'=> '0')) ; |
} |
$res = PROJET_PROPOSER_PROJET ; |
return $res . $formulaire_projet->toHTML() ; |
} else { |
return 'Veuillez régler les permissions en écriture sur '.PROJET_CHEMIN_FICHIER ; |
} |
} // end of member function nouveauProjet |
/** |
* Valide le formulaire et appelle la fonction d'insertion. |
* |
* @return string |
* @access public |
*/ |
function nouveauProjetValidation( ) |
{ |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_V) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireProjet.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$formulaire_projet = new HTML_formulaireProjet('formulaire_projet', 'post', str_replace ('&', '&', $this->_url->getURL())) ; |
$formulaire_projet->construitFormulaire(projet::getTousLesProjets($this->_db)) ; |
if ($formulaire_projet->validate()) { |
$projet = new projet ($this->_db) ; |
$projet->setCheminRepertoire (PROJET_CHEMIN_FICHIER) ; |
if (!$projet->enregistrerSQL($formulaire_projet->getSubmitValues())) { |
return 'erreur' ; |
} |
// On inscrit le déposant du projet en tant que coordinateur |
if (PROJET_UTILISATEURS_COORD) { |
// Si le projet n'a pas de liste, on inscrit directement |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$participant = new participe($this->_db) ; |
$participant->setStatut(1, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $projet->getId()) ; |
} |
} else { |
return $formulaire_projet->toHTML() ; |
} |
} // end of member function nouveauProjetValidation |
/** |
* Valide le formulaire et appelle la fonction de mise à jour. |
* |
* @return void |
* @access public |
*/ |
function modifierProjet( ) |
{ |
// création de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ACTION_MODIFIER_V) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireProjet.class.php' ; |
$formulaire_projet = new HTML_formulaireProjet('formulaire_projet', 'post', str_replace ('&', '&', $this->_url->getURL())) ; |
$formulaire_projet->construitFormulaire(projet::getTousLesProjets($this->_db)) ; |
if ($formulaire_projet->validate()) { |
$projet->majSQL($formulaire_projet->getSubmitValues()) ; |
} else { |
return $formulaire_projet->toHTML() ; |
} |
unset ($projet) ; |
} |
/** |
* Renvoie le formulaire d'upload d'un fichier. |
* |
* @return void |
* @access public |
*/ |
function formulaireFichier($action) |
{ |
$res = '<h1>'.PROJET_FICHIER_MISE_EN_LIGNE.'</h1>'."\n" ; |
if (isset($_SESSION['formulaire_document'])) { |
unset ($_SESSION['formulaire_document']) ; |
} |
$action_future = $action == PROJET_NOUVEAU_FICHIER ? PROJET_NOUVEAU_FICHIER_V : PROJET_ACTION_MODIFIER_V ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, $action_future) ; |
if ($this->_id_repertoire != '') $this->_url->addQueryString (PROJET_VARIABLE_ID_REPERTOIRE, $this->_id_repertoire) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireDocument.class.php' ; |
$formulaire_document = new HTML_formulaireDocument('formulaire_document', 'post',preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_document->construitFormulaire($action) ; |
if ($action == PROJET_ACTION_MODIFIER) { |
$document = new document($this->_id_document, $this->_db, PROJET_CHEMIN_FICHIER, PROJET_CHEMIN_ICONES) ; |
// On affecte dans un tableau les valeurs de chaque champs du formulaire avec le nom de chaque élément de formulaire |
// voir HTML_formulaireDocument |
$valeurs_par_defaut = array ('document_nom' => $document->getNomLong(), |
'document_description' => $document->getDescription(), |
'document_visibilite' => $document->getVisibilite()) ; |
// On rajoute un champs caché avec l'identifiant du document |
$formulaire_document->addElement ('hidden', 'id_document', $this->_id_document) ; |
$formulaire_document->setDefaults($valeurs_par_defaut) ; |
} else { |
$formulaire_document->setDefaults (array ('document_visibilite'=> 'public')) ; |
} |
return $res.$formulaire_document->toHTML() ; |
} // end of member function nouveauFichier |
/** |
* Présente un formulaire pour déplacer un fichier |
* |
* |
*/ |
function fichierCouper() { |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$res = '<h1>'.PROJET_PROJET.' : '.$projet->getTitre().'</h1>' ; |
$document = new document($this->_id_document, $this->_db, PROJET_CHEMIN_FICHIER) ; |
// On traite le cas où l'on vient de déplacer un fichier |
if (isset ($_POST['projet_repertoire'])) { |
if (!$document -> deplace ($_POST['projet_repertoire'], $projet->getNomRepertoire())) { |
echo 'echec du déplacement' ; |
} |
return ; |
} |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireCouperColler.class.php' ; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_COUPER) ; |
$HTML_formulaireCouperColler = new HTML_formulaireCouperColler('formulaire_couper_coller', 'post', str_replace('&', '&', $this->_url->getURL())) ; |
$HTML_formulaireCouperColler -> construitFormulaire($projet->getListeRepertoireHierarchisee()) ; |
return $res.$HTML_formulaireCouperColler->toHTML('<img src="'.PROJET_CHEMIN_ICONES.$document->getCheminIcone().'" /> '.$document->getNomLong()); |
} |
/** |
* Supprime un fichier. |
* |
* @return void |
* @access public |
*/ |
function suppressionFichier( ) |
{ |
if ($this->_id_document == "") { |
return $this->messageErreur(PROJETCONTROLEUR_PAS_DE_DOCUMENT_SELECTIONNE) ; |
} |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$document = new document($this->_id_document, $this->_db, PROJET_CHEMIN_FICHIER) ; |
$document->suppression() ; |
$document->suppressionSQL() ; |
// On verifie s il reste des documents associes au projet et si non on met |
// a jour projet.p_avoir_document |
if (count ($projet->getListesDocuments(PROJET_CHEMIN_FICHIER)) == 0) $projet->setAvoirDocument(false); |
return ; |
} // end of member function nouveauFichier |
/** |
* Renvoie le formulaire de création d'un répertoire. |
* |
* @return void |
* @access public |
*/ |
function nouveauRepertoire( ) |
{ |
$res = '<h1>'.PROJET_REP_CREER.'</h1>'."\n" ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_REPERTOIRE_V) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireDocument.class.php' ; |
$formulaire_repertoire = new HTML_formulaireDocument('formulaire_repertoire', 'post',preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_repertoire->setType ('repertoire') ; |
$formulaire_repertoire->construitFormulaire() ; |
$formulaire_repertoire->setDefaults (array ('document_visibilite'=> 'public')) ; |
return $res.$formulaire_repertoire->toHTML() ; |
} |
/** |
* Valide le formulaire et appelle la fonction d'insertion. |
* |
* @return void |
* @access public |
*/ |
function nouveauFichierValidation( ) |
{ |
// création de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
if (isset($_SESSION['formulaire_document']) && $_SESSION['formulaire_document'] == 'valide') { |
return include_once PROJET_CHEMIN_APPLI.'actions/documents.php' ; |
} |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_FICHIER_V) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireDocument.class.php' ; |
$formulaire_document = new HTML_formulaireDocument('formulaire_document', 'post', preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_document->construitFormulaire() ; |
if ($formulaire_document->validate()) { |
// Création d'un objet document vide |
$document = new document ("", $this->_db) ; |
// avant d'appeler la méthode enregistrerSQL, il faut indiquer l'identifiant du projet et l'identifiant du propriétaire |
$document->setIdProjet ($this->_id_projet) ; |
$document->setIdProprietaire ($this->_auth->getAuthData (PROJET_CHAMPS_ID)) ; |
// On passe aussi le numéro de répertoire s'il existe |
if ($this->_id_repertoire != '') $document->setIdRepertoire($this->_id_repertoire) ; |
$chemin_upload = $document->calculeCheminUploaded($projet->getNomRepertoire()) ; |
if (!$document->upload (PROJET_CHEMIN_FICHIER.$projet->getNomRepertoire().'/'.$chemin_upload)) { |
echo 'Echec de l\'upload' ; |
trigger_error('echec d\'upload !', E_USER_ERROR) ; |
} |
$document->enregistrerSQL($formulaire_document->getSubmitValues(), $projet->getNomRepertoire().'/'.$chemin_upload) ; |
// On place a 1 la colonne p_avoir_document |
if (!$projet->avoirDocument()) $projet->setAvoirDocument(true); |
// On ajoute une information de session |
$_SESSION['formulaire_document'] = 'valide'; |
} else { |
return $formulaire_document->toHTML() ; |
} |
unset ($projet) ; |
} // end of member function nouveauFichierValidation |
/** |
* Valide le formulaire et appelle la fonction d'insertion. |
* |
* @return void |
* @access public |
*/ |
function modifierFichier( ) |
{ |
// création de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ACTION_MODIFIER_V) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireDocument.class.php' ; |
$formulaire_document = new HTML_formulaireDocument('formulaire_document', 'post',preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_document->construitFormulaire(PROJET_ACTION_MODIFIER_V) ; |
if ($formulaire_document->validate()) { |
// Création d'un objet document vide |
$document = new document ($this->_id_document, $this->_db) ; |
// On passe aussi le numéro de répertoire s'il existe |
if ($this->_id_repertoire != '') $document->setIdRepertoire($this->_id_repertoire) ; |
$document->majSQL($formulaire_document->getSubmitValues()) ; |
} else { |
return $formulaire_document->toHTML() ; |
} |
unset ($projet) ; |
} // end of member function nouveauFichierValidation |
/** |
* Valide le formulaire et appelle la fonction d'insertion. |
* |
* @return void |
* @access public |
*/ |
function nouveauRepertoireValidation( ) |
{ |
// création de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_FICHIER_V) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireDocument.class.php' ; |
$formulaire_repertoire = new HTML_formulaireDocument('formulaire_repertoire', 'post',preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_repertoire->setType ('repertoire') ; |
$formulaire_repertoire->construitFormulaire() ; |
if ($formulaire_repertoire->validate()) { |
// Création d'un objet |
$document = new document ("", $this->_db) ; |
// avant d'appeler la méthode enregistrerSQL, il faut indiquer l'identifiant du projet et l'identifiant du propriétaire |
$document->setIdProjet ($this->_id_projet) ; |
$document->setIdProprietaire ($this->_auth->getAuthData (PROJET_CHAMPS_ID)) ; |
// On passe aussi le numéro de répertoire s'il existe |
if ($this->_id_repertoire != '') $document->setIdRepertoire($this->_id_repertoire) ; |
$lien = $document->enregistrerSQL($formulaire_repertoire->getSubmitValues(), $projet->getNomRepertoire()) ; |
// La création du répertoire sur le disque, chemin / nom_repertoire_projet / id_repertoire |
if (!mkdir (PROJET_CHEMIN_FICHIER.$lien)) { |
$document->suppressionSQL() ; |
return $this->messageErreur(PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE).'<br />'.PROJET_CHEMIN_FICHIER.$lien ; |
} |
// On place a 1 la colonne p_avoir_document |
if (!$projet->avoirDocument()) $projet->setAvoirDocument(true); |
} else { |
return $formulaire_repertoire->toHTML() ; |
} |
} // end of member function nouveauFichierValidation |
/** |
* Permet de spécifier au controleur sur quel projet l'on travaille. |
* |
* @param int id_projet L'identifiant du projet. |
* @return void |
* @access public |
*/ |
function setIdProjet( $id_projet ) |
{ |
$this->_id_projet = $id_projet ; |
} // end of member function setIdProjet |
/** |
* Renvoie la page d'accueil d'un projet. |
* |
* @return string |
* @access public |
*/ |
function accueilProjet( ) |
{ |
$res = '' ; |
// création de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
// récupération de la liste des documents associés |
$liste_documents = $projet->getListesDocuments(PROJET_CHEMIN_FICHIER, PROJET_CHEMIN_ICONES) ; |
// création de la vue liste de document, on nettoie l'url |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_listeDocuments.class.php' ; |
$vue_liste_document = new HTML_listeDocuments($this->_url, false, $this->_id_repertoire) ; |
// réglage de paramètres de la vue |
$vue_liste_document->setAction (array ("couper" => PROJET_ACTION_COUPER, "modifier" => PROJET_ACTION_MODIFIER, "supprimer" => PROJET_SUPPRESSION_FICHIER)) ; |
$vue_liste_document->setCheminIcones(PROJET_CHEMIN_ICONES) ; |
$tableau_navigation = document::getCheminIdRepertoire($this->_id_repertoire, $this->_db) ; |
$vue_liste_document->setCheminNavigation ($tableau_navigation) ; |
// vérification des droits de l'utilisateur |
$entete_liste = array (PROJET_FICHIERS_NOM, PROJET_FICHIERS_TAILLE, PROJET_FICHIERS_CREE_LE) ; |
if ($this->_auth->getAuth()) { |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$participant = new participe($this->_db) ; |
$id_u = $this->_auth->getAuthData(PROJET_CHAMPS_ID) ; |
$isCoord = $participant->isCoordinateur($id_u, $this->_id_projet, $this->_db) ; |
if ($isCoord) $droits = PROJET_DROIT_COORDINATEUR ; |
$isAdm = participe::isAdministrateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_db) ; |
if ($isAdm) $droits = PROJET_DROIT_ADMINISTRATEUR ; |
if ($isAdm) $isCoord = true ; |
$statut = participe::getStatutSurProjetCourant ($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_id_projet, $this->_db) ; |
// si participant, on ajoute le champs visibilite |
if ($statut !='' || $isAdm) { |
array_push ($entete_liste, PROJET_FICHIERS_VISIBILITE) ; |
} |
// si chef de projet ou si propriétaire d'au moins 1 document |
$proprietaire_un_document = false ; |
foreach ($liste_documents as $document) { |
if ($this->_auth->getAuthData(PROJET_CHAMPS_ID) == $document) { |
$proprietaire_un_document = true ; |
$droits = PROJET_DROIT_PROPRIETAIRE ; |
} |
} |
if ($statut > 0 || $proprietaire_un_document) { |
array_push ($entete_liste, PROJET_ACTION) ; |
} |
} else { |
$droits = PROJET_DROIT_AUCUN ; |
} |
if (!isset($droits)) $droits = PROJET_DROIT_AUCUN ; |
$vue_liste_document->construitEntete($entete_liste) ; |
$vue_liste_document->construitListe ($liste_documents, $droits) ; |
$wiki_res = '' ; |
// Les wikinis associés au projet |
if ($projet->getWikini()) { |
$wiki_res .= '<div><a href="'.PROJET_URL_WIKINI.'wakka.php?wiki=PagePrincipale&wikini='.$projet->getWikini().'">'.PROJET_URL_WIKINI.'</a>' ; |
if ($this->_auth->getAuth() && $isCoord) { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_SUPPRIMER_WIKI) ; |
$wiki_res .= ' <a href="'.$this->_url->getURL().'" onclick="javascript:return confirm(\''.PROJET_WIKINI_SUPPRIMER.' ?\')">'.PROJET_WIKINI_SUPPRIMER.'</a>' ; |
} |
$wiki_res .= '</div>' ; |
} else { |
$wiki_res .= '<div>'.PROJET_WIKINI_PAS.'</div>'."\n" ; |
} |
// On charge les listes de discussion du projet |
// Pour le moment seul ezmlm est supportée |
$projet->getListesAssociees(); |
$sortie_liste = '' ; |
if ($projet->avoirListe()) { |
include_once PROJET_CHEMIN_CLASSES_LISTES.'ezmlm.php' ; |
foreach ($projet->_listes_associes as $info_liste) { |
$liste = new ezmlm_php() ; |
// Paramétrage de la liste |
$liste->listdir = PROJET_CHEMIN_LISTES.$info_liste->getDomaine().'/'.$info_liste->getNom(); |
$liste->listname = $info_liste->getNom() ; |
$liste->listdomain = $info_liste->getDomaine(); |
if (isset ($GLOBALS['action']) && $GLOBALS['action'] != '') { |
$liste->set_action($GLOBALS['action']) ; |
$liste->set_actionargs($GLOBALS['actionargs']) ; |
} else { |
$liste->set_action('list_info') ; |
} |
$liste->sendheaders = false; |
$liste->sendbody = false; |
$liste->sendfooters = false; |
$liste->forcehref = $this->_url->getURL() ; |
ob_start() ; |
print '<span class="heading">Liste <strong>' . $info_liste->getAdresseEnvoi() ; |
print "</strong></span><br />\n"; |
if ($this->_auth->getAuth()) { |
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php'; |
$inscription_liste = new inscription_liste($this->_db) ; |
if ($inscription_liste->getStatutInscrit( $info_liste->getId(), $this->_auth) == '') { |
$action_inscription = PROJET_ACTION_INSCRIPTION_LISTE ; |
$label_inscription = PROJET_S_INSCRIRE ; |
} else { |
$action_inscription = PROJET_ACTION_DESINSCRIPTION_LISTE ; |
$label_inscription = PROJET_SE_DESINSCRIRE ; |
} |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, $action_inscription) ; |
print '<a href="'.$this->_url->getURL().'">'; |
print $label_inscription.'</a><br /> '; |
} |
print "\n<hr noshade><br />\n"; |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
switch ($liste->action) { |
case "show_msg": |
if (count($liste->actionargs) < 2) { |
$liste->error(EZMLM_INVALID_SYNTAX,TRUE); |
} |
$show_msg = new ezmlm_msgdisplay(); |
$show_msg->listdir = $liste->listdir ; |
$show_msg->forcehref = $this->_url->getURL(); |
// actionargs[0] contient le nom du répertoire et actionargs[1] le nom du fichier |
// On appelle la fonction qui affiche un fichier |
$show_msg->display($liste->actionargs[0] . "/" . $liste->actionargs[1]); |
break; |
case "list_info": |
$info = new ezmlm_listinfo(); |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
$info->forcehref = $this->_url->getURL(); |
$info->listdir = $liste->listdir ; |
$info->listname = $info_liste->getNom(); |
$info->listdomain = $info_liste->getDomaine() ; |
if (!$info->display()) { |
echo 'Pas de message dans cette liste' ; |
} |
break; |
case "show_threads": |
$threads = new ezmlm_threads(); |
$threads->forcehref = $this->_url->getURL() ; |
$threads->listdir = $liste->listdir ; |
$threads->listname = $info_liste->getNom() ; |
$threads->listdomain = $info_liste->getDomaine() ; |
$threads->tempdir = PROJET_CHEMIN_APPLI.'/tmp' ; |
$threads->load($liste->actionargs[0]); |
break; |
case "show_author_msgs" : |
$author = new ezmlm_author(); |
$author->listdir = $liste->listdir ; |
$author->listname = $info_liste->getNom() ; |
$author->listdomain = $info_liste->getDomaine() ; |
$author->forcehref = $this->_url->getURL() ; |
$author->display($liste->actionargs[0]); |
break ; |
} |
$sortie_liste = ob_get_contents() ; |
ob_end_clean() ; |
} |
} else { |
$sortie_liste = '<div>'.PROJET_PAS_DE_LISTE.'</div>'."\n" ; |
} |
$res .= "<h1>".$projet->getTitre()."</h1>" ; |
$res .= '<div>'.$projet->getDescription().'</div>'."\n" ; |
$res .= '<h2>'.PROJET_WIKI_ASSOCIE.'</h2>' ; |
$res .= $wiki_res ; |
$res .= '<h2>'.PROJET_FICHIERS_ASSOCIES.'</h2>'."\n" ; |
$res .= $vue_liste_document->toHTML() ; |
$res .= '<h2>'.PROJET_LISTES_ASSOCIEES.'</h2>'."\n" ; |
$res .= $sortie_liste ; |
include_once PROJET_CHEMIN_CLASSES.'liste_externe.class.php' ; |
$listes_ext = new liste_externe ($this->_db) ; |
$tableau_liste = $listes_ext->getListesAssociees($this->_id_projet) ; |
if (count ($tableau_liste) != 0) { |
$res .= '<h2>'.PROJET_LISTES_EXTERNES_ASSOCIEES.'</h2>'."\n" ; |
for ($i = 0; $i < count ($tableau_liste); $i++) { |
$info_liste = $listes_ext->getInfoListe($tableau_liste[$i]) ; |
$res .= '<h2>'.$info_liste->AGO_A_NOMGRPLG.'</h2>'."\n" ; |
$res .= '<p>'.$info_liste->AGO_A_RESUMLG.'</p>'."\n" ; |
$res .= '<p><a href="'.$info_liste->AGO_A_URLGRP.'">'.$info_liste->AGO_A_URLGRP.'</a></p>'."\n" ; |
$res .= '<br />'."\n" ; |
} |
} |
return $res ; |
} // end of member function accueilProjet |
/** |
* Permet de spécifier quel répertoire, dans la vue de document afficher. Il sera |
* passé en paramètre à la classe HTML_listeDocuments. |
* |
* @param int id_repertoire L'identifiant du répertoire à afficher. |
* @return void |
* @access public |
*/ |
function setIdRepertoire( $id_repertoire ) |
{ |
$this->_id_repertoire = $id_repertoire ; |
} // end of member function setIdRepertoire |
/** |
* Supprime un projet et tout ce qui va avec. |
* |
* @return void |
* @access public |
*/ |
function suppressionProjet( ) |
{ |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$projet->setCheminRepertoire (PROJET_CHEMIN_FICHIER) ; |
$projet->getListesAssociees() ; |
if ($projet->avoirListe()) $projet->supprimerListe($projet->_listes_associes[0]) ; |
$msg = $projet->suppressionSQL() ; |
unset ($this->_id_projet) ; unset($_GET['id_projet']); |
return $msg ; |
} |
/** |
* Permet d'indiquer au controleur sur quel document on travaille. |
* |
* @param int id_document |
* @return void |
* @access public |
*/ |
function setIdDocument( $id_document ) |
{ |
$this->_id_document = $id_document ; |
} |
/** |
* Renvoie le formulaire d'envoie de mail |
* |
* @return void |
* @access public |
*/ |
function envoyerUnMailFormulaire( ) |
{ |
if (!$this->_auth->getAuth()) { |
return PROJET_LISTE_PROJET; |
} |
if (isset($_SESSION['formulaire_mail'])) { |
unset ($_SESSION['formulaire_mail']) ; |
} |
$res = '<h1>'.PROJET_ECRIRE_LISTE.'</h1>'."\n" ; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ENVOYER_UN_MAIL_V) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireMail.class.php' ; |
$formulaire_mail = new HTML_formulaireMail('formulaire_mail', 'post',preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_mail->construitFormulaire() ; |
return $res.$formulaire_mail->toHTML() ; |
} |
/** |
* Envoie le mail |
* |
* @return void |
* @access public |
*/ |
function envoyerUnMailValidation( ) |
{ |
// Vérifications |
if (isset($_SESSION['formulaire_mail']) && $_SESSION['formulaire_mail'] == 'valide') { |
return include_once PROJET_CHEMIN_APPLI.'actions/forums.php' ; |
} |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ENVOYER_UN_MAIL_V ); |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireMail.class.php' ; |
$formulaire_mail = new HTML_formulaireMail('formulaire_mail', 'post', preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_mail->construitFormulaire() ; |
if ($formulaire_mail->validate()) { |
// création de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$info_liste = $projet->getListesAssociees() ; |
$valeurs_mail = $formulaire_mail->getSubmitValues() ; |
// Pour envoyer le mail on utilise la classe Mail de PEAR |
// on a besoin du mail de l'inscrit |
$entetes['From'] = $this->_auth->getUserName(); |
$entetes['To'] = $projet->_listes_associes[0]->getAdresseEnvoi() ; |
$entetes['Subject'] = $valeurs_mail['mail_titre'] ; |
$entetes['Date'] = date ('D, M j G:i:s \C\E\S\T Y') ; |
$entetes['Message-ID'] = md5(time()).'@'.$projet->_listes_associes[0]->getNom().'.'.$projet->_listes_associes[0]->getDomaine() ; |
$entetes['reply-to'] = $projet->_listes_associes[0]->getAdresseEnvoi() ; |
$entetes['Content-Type'] = 'text/plain' ; |
// Traitement de la reference s'il s'agit d'une réponse |
if (isset ($_POST['messageid'])) { |
$entetes['In-Reply-To'] = $_POST['messageid'] ; |
} |
$objet_mail =& Mail::factory('smtp'); |
$objet_mail->send($entetes['To'], $entetes, $valeurs_mail['mail_corps']); |
$_SESSION['formulaire_mail'] = 'valide'; |
return ; |
} else { |
return $formulaire_mail->toHTML() ; |
} |
} // end of member function envoyerUnMailValidation |
/** |
* Renvoie le formulaire de création d'une liste. |
* |
* @param int action Indique le type d'action, PROJET_ACTION_NOUVELLE_LISTE |
* @return string |
* @access public |
*/ |
function formulaireListe( $action ) |
{ |
$res = '<h1>'.PROJET_CREATION_LISTE.'</h1>'."\n" ; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_NOUVELLE_LISTE_V) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireListe.class.php' ; |
$formulaire_liste = new HTML_formulaireListe('formulaire_liste', 'post',preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_liste->construitFormulaire() ; |
$formulaire_liste->setDefaults(array('domaine_liste' => PROJET_DOMAINE_LISTE)) ; |
$formulaire_liste->updateElementAttr('domaine_liste', array('readonly' => 'readonly')) ; |
return $res.$formulaire_liste->toHTML() ; |
} // end of member function formulaireListe |
/** |
* Transmet au serveur la demande de création d'une nouvelle liste. |
* |
* @return void |
* @access public |
*/ |
function nouvelleListeValidation( ) |
{ |
// Vérifications |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ACTION_NOUVELLE_LISTE_V ); |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireListe.class.php' ; |
$formulaire_liste = new HTML_formulaireListe('formulaire_liste', 'post', preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_liste->construitFormulaire() ; |
if ($formulaire_liste->validate()) { |
// création de l'objet liste_discussion |
$liste = new liste_discussion('', $this->_db) ; |
// On vérifie que le nom de la liste soit unique |
if (liste_discussion::verifieDoubleListe($formulaire_liste->getSubmitValue('nom_liste').'@'. |
$formulaire_liste->getSubmitValue('domaine_liste'), $this->_db)) { |
// On rajoute la liste dans la base |
$liste->enregistrerSQL($formulaire_liste->getSubmitValues()) ; |
// On la relie au projet |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$projet->ajouterListe($liste) ; |
// Création de la liste |
$resultat_creation = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/creation_liste.php?domaine='. |
$liste->getDomaine().'&liste='.$liste->getNom().'¶metres=aBiud') ; |
// Ajout du modérateur |
$resultat_ajout_moderateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/ajout_moderateur.php?domaine='. |
$liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$this->_auth->getUserName()) ; |
// Ajout du modérateur en tant qu'utilisateur |
$resultat_ajout_utilisateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/ajout_abonne.php?domaine='. |
$liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$this->_auth->getUserName()) ; |
} else { |
return PROJET_MESSAGE_LISTE_DOUBLE.$formulaire_liste->toHTML() ; |
} |
return $resultat_creation.$resultat_ajout_moderateur.$resultat_ajout_utilisateur; |
} else { |
return $formulaire_liste->toHTML() ; |
} |
} // end of member function nouvelleListeValidation |
/** |
* Supprime la liste de discussion associée au projet |
* |
* @return void |
* @access public |
*/ |
function supprimerListe( ) |
{ |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet($this->_db, $this->_id_projet) ; |
$projet->getListesAssociees() ; |
$resultat_suppression = file_get_contents(PROJET_SERVEUR_VPOPMAIL.'/suppression_liste.php?domaine='. |
$projet->_listes_associes[0]->getDomaine().'&liste='.$projet->_listes_associes[0]->getNom()) ; |
$projet->supprimerListe($projet->_listes_associes[0]) ; |
return $resultat_suppression; |
} // end of member function supprimerListe |
/** |
* |
* |
* @param string presentation Pour affecter une présentation au projet |
* @return void |
* @access public |
*/ |
function setPresentation( $presentation ) |
{ |
$this->_presentation = $presentation ; |
} // end of member function setPresentation |
/** |
* |
* |
* @param string type Pour affecter un type au projet |
* @return void |
* @access public |
*/ |
function setType( $type) |
{ |
$this->_type = $type ; |
} // end of member function setPresentation |
/** |
* Fonction affichant les participants à un projet |
* |
* @return string |
* @access public |
*/ |
function voirParticipants( ) |
{ |
include_once PROJET_CHEMIN_CLASSES.'HTML_listeParticipants.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$titre = '<h1>'.$projet->getTitre().'</h1>'."\n" ; |
$titre .= '<h2>'.PROJET_LISTE_PARTICIPANT.'</h2>'."\n" ; |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$participants = new participe($this->_db) ; |
// On teste ici s'il y a une mise à jour de statut |
if (isset($_POST['statut'])) { |
// $_GET['id_utilisateur'] et $_GET['statut'] proviennent du formulaire voir HTML_listeParticipants |
$participants->setStatut($_POST['statut'], $_GET['id_utilisateur'], $this->_id_projet) ; |
} |
// Ce qui suit doit être amélioré pour sortir la requête sur l'annuaire |
// On teste s'il y a un ajout d'utilisateur voir HTML_listeParticipants |
if (isset($_POST['mail_utilisateur'])) { |
$requete = 'select '.PROJET_CHAMPS_ID.' from '.PROJET_ANNUAIRE.' where '.PROJET_CHAMPS_MAIL.'="'.$_POST['mail_utilisateur'].'"'; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
if (!$resultat->numRows()) { |
$msg = PROJET_MAIL_ABSENT; |
} else { |
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ; |
$participants->setStatut(3, $ligne[PROJET_CHAMPS_ID], $this->_id_projet) ; |
} |
} |
if ($this->_auth->getAuth()) { |
$statut = participe::getStatutSurProjetCourant($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_id_projet, $this->_db) ; |
if ($statut == 2) $droits = PROJET_DROIT_CONTRIBUTEUR ; |
if ($statut == 1) $droits = PROJET_DROIT_COORDINATEUR ; |
if (participe::isAdministrateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_db)) $droits = PROJET_DROIT_ADMINISTRATEUR ; |
$HTML_listeParticipants = new HTML_listeParticipants(true) ; |
if ($statut < 2) $HTML_listeParticipants->setModeModification() ; |
// Mise en place de l'url |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_PARTICIPANT) ; |
$HTML_listeParticipants->setURL($this->_url) ; |
// Construction de l'entete |
$entete = array (PROJET_NOM, PROJET_PRENOM) ; |
if ($this->_auth->getAuth()) { |
array_push ($entete, PROJET_MAIL) ; |
} else { |
$droits = PROJET_DROIT_AUCUN ; |
} |
$info_utilisateur = $participants->getInscrits($this->_id_projet, $droits) ; |
array_push ($entete, PROJET_DATE_INSCRIPTION) ; |
$HTML_listeParticipants->construitEntete($entete) ; |
$HTML_listeParticipants->construitListe($info_utilisateur, statut::getTousLesStatuts(PROJET_STATUT_SAUF_ADM_COORD, $this->_db)) ; |
$res = $HTML_listeParticipants->toHTML() ; |
if ($statut < 2) { |
$res .= PROJET_NOUVEAU_UTILISATEUR_LAIUS ; |
$res .= '<form action="'.$this->_url->getURL().'" method="post">'."\n" ; |
if (isset ($msg) && $msg != '') { |
$res .= '<div>'.$msg.'</div>' ; |
} |
$res .= '<input type="text" name="mail_utilisateur" size="32" />' ; |
$res .= '<input type="submit" value="'.PROJET_NOUVEAU_UTILISATEUR.'" />'."\n" ; |
$res .= '</form>'."\n" ; |
} |
} else { |
$res .= '<p>'.PROJET_TEXTE_NON_IDENTIFIE.'</p>'."\n" ; |
} |
return $titre.$res ; |
} // end of member function voirParticipants |
/** |
* Inscrit un utilisateur à un projet avec le statut observateur |
* |
* @return void |
* @access public |
*/ |
function inscriptionProjet( ) |
{ |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireInscriptionProjet.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
// Si le projet n'a pas de liste, on inscrit directement |
if (isset ($this->_id_projet)) { |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$participant = new participe($this->_db) ; |
if (!$projet->avoirListe()) { |
if ($projet->isModere()) { |
$participant->setStatut(3, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ; |
} else { |
$participant->setStatut(2, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ; |
} |
return $this->mesProjets() ; |
} |
} |
if (isset($_POST['valider_inscription_projet'])) { |
if (isset($_POST['radio_inscription_liste'])) { |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
$utilisateur = new annuaire($this->_db, array('identifiant' => PROJET_CHAMPS_ID, |
'mail' => PROJET_CHAMPS_MAIL, 'table' => PROJET_ANNUAIRE, |
'nom'=> PROJET_CHAMPS_NOM, 'prenom' => PROJET_CHAMPS_PRENOM)) ; |
$utilisateur->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ; |
if (!$projet->isModere()) { |
$participant->setStatut(2, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ; |
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ; |
$projet->getListesAssociees() ; |
$inscription_liste = new inscription_liste($this->_db) ; |
$inscription_liste->inscrireUtilisateur( $utilisateur, |
$projet->_listes_associes[0], |
$_POST['radio_inscription_liste']) ; |
} else { |
$participant->setStatut(3, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ; |
$tableau_coordinateur = $participant->getCoordinateurs($this->_id_projet) ; |
#include_once PROJET_CHEMIN_API.'pear/Mail.php'; |
$entetes['From'] = $this->_auth->getUserName(); |
$entetes['To'] = ''; |
$entetes['Subject'] = PROJET_DEMANDE_INSCRIPTION ; |
$entetes['Date'] = date ('D, M j G:i:s \C\E\S\T Y') ; |
$entetes['Message-ID'] = md5(time()) ; |
$entetes['reply-to'] = '' ; |
$entetes['Content-Type'] = 'text/plain' ; |
$objet_mail =& Mail::factory('smtp'); |
require_once PROJET_CHEMIN_BIBLIOTHEQUE_API.'pear/HTML/Template/IT.php'; |
$tpl = new HTML_Template_IT() ; |
// Le gabarit du mail est dans un template |
// template 1 |
$requete = 'select pt_template from projet_template where pt_id_template=1'. |
' and pt_i18n like "%'.PROJET_LANGUE_DEFAUT.'"' ; |
if (!$tpl -> setTemplate($this->_db->getOne ($requete))) { |
echo 'erreur' ; |
} |
$tpl->setVariable('nom', $utilisateur->getInfo( 'nom')) ; |
$tpl->setVariable('prenom', $utilisateur->getInfo( 'prenom')) ; |
$tpl->setVariable('nom_projet', $projet->getTitre()) ; |
$tpl->setVariable('lien', str_replace ('&', '&', $this->_url->getURL())) ; |
foreach ($tableau_coordinateur as $coordinateur) { |
$entetes['To'] .= $coordinateur[3]; // Le champs 3 est le mail |
} |
$objet_mail->send($entetes['To'], $entetes, $tpl->get()); |
} |
} |
if ($this->_presentation != 'arbre') { |
return include_once PROJET_CHEMIN_APPLI.'actions/resume.php' ; |
} else { |
$this->_action = PROJET_ACTION_VOIR_RESUME; |
} |
return ; |
} |
$res = '<h1>'.PROJET_INSCRIPTION_PROJET.' : '.$projet->getTitre().'</h1>'."\n" ; |
if ($projet->avoirListe()) $res .= '<h2>'.PROJET_MESSAGE_LISTE.'</h2>'."\n" ; |
//$participant = new participe($this->_db) ; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_S_INSCRIRE) ; |
$HTML_formulaireInscriptionProjet = new HTML_formulaireInscriptionProjet('inscription_projet', 'post', str_replace ('&', '&', $this->_url->getURL())) ; |
$HTML_formulaireInscriptionProjet->construitFormulaire($projet) ; |
$HTML_formulaireInscriptionProjet->setDefaults(array('radio_inscription_liste' => 2)) ; |
return $res.$HTML_formulaireInscriptionProjet->toHTML() ; |
} // end of member function inscriptionProjet |
/** |
* Inscrit l'utilisateur loggué à la liste dont le paraètre est en post. |
* |
* @return void |
* @access public |
*/ |
function inscriptionListe( ) |
{ |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ; |
$projet->getListesAssociees() ; |
$utilisateur = new annuaire($this->_db, array('identifiant' => PROJET_CHAMPS_ID, 'mail' => PROJET_CHAMPS_MAIL, 'table' => PROJET_ANNUAIRE)) ; |
$utilisateur->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ; |
$inscription_liste = new inscription_liste($this->_db) ; |
$inscription_liste->inscrireUtilisateur( $utilisateur, $projet->_listes_associes[0], 2) ; // 2 est la statut inscription normale |
} // end of member function inscriptionListe |
/** |
* Inscrit l'utilisateur loggué à la liste dont le paraètre est en post. |
* |
* @return void |
* @access public |
*/ |
function desinscriptionListe( ) |
{ |
if (isset($_GET['inscription_liste']) || $this->_action = PROJET_ACTION_DESINSCRIPTION_LISTE) { |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ; |
$projet->getListesAssociees() ; |
$utilisateur = new annuaire($this->_db, array('identifiant' => PROJET_CHAMPS_ID, |
'mail' => PROJET_CHAMPS_MAIL, |
'table' => PROJET_ANNUAIRE)) ; |
$utilisateur->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ; |
$inscription_liste = new inscription_liste($this->_db) ; |
$inscription_liste->desinscrireUtilisateur( $utilisateur, $projet->_listes_associes[0], $_GET['inscription_liste']) ; |
} |
} // end of member function inscriptionListe |
/** |
* desinscrit un utilisateur à un projet |
* |
* @return void |
* @access public |
*/ |
function desinscriptionProjet( ) |
{ |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$participant = new participe($this->_db) ; |
// Le statut 4 désinscrit l'utilisateur, dans la méthode setStatut |
$participant->setStatut(4, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ; |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$projet->getListesAssociees() ; |
if ($projet->avoirListe()) { |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
$annuaire = new annuaire($this->_db, array('identifiant' => PROJET_CHAMPS_ID, 'mail' => PROJET_CHAMPS_MAIL, 'table' => PROJET_ANNUAIRE)) ; |
$annuaire->setId($this->_auth->getAuthData(PROJET_CHAMPS_ID)) ; |
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ; |
$desinscription= new inscription_liste($this->_db) ; |
$desinscription->desinscrireUtilisateur($annuaire, $projet->_listes_associes[0]) ; |
} |
if ($this->_presentation != 'arbre') { |
include_once PROJET_CHEMIN_APPLI.'actions/resume.php' ; |
return $retour ; |
} else { |
$this->_action = PROJET_ACTION_VOIR_RESUME; |
} |
} // end of member function inscriptionProjet |
/** |
* Renvoie le formulaire de création d'un wiki |
* |
* @return void |
* @access public |
*/ |
function formulaireWiki( ) |
{ |
require_once 'client/integrateur_wikini/bibliotheque/iw_admin_wikini.fonct.php'; |
$url = &$GLOBALS['_GEN_commun']['url'] ; |
$url->addQueryString ('act', PROJET_ACTION_CREER_WIKI) ; |
$url->addQueryString (PROJET_VARIABLE_ID_PROJET, $this->_id_projet) ; |
$res =admin_afficherContenuCorps(); |
$res .= '<br /><a href="'.$this->_url->getURL().'">'.PROJET_RETOUR_RESUME.'</a>'; |
return $res; |
} // end of member function formulaireWiki |
function associerWiki( ) |
{ |
$res = '<h1>'.PROJET_ASSOCIER_WIKI.'</h1>'."\n" ; |
$db = &$GLOBALS['_GEN_commun']['pear_db'] ; |
$res=''; |
// Comportement par défaut |
// requete sur la table gen_wikini pour affichage de la liste des Wikini |
$requete = "select gewi_id_wikini, gewi_code_alpha_wikini, gewi_page from gen_wikini" ; |
$resultat = $db->query ($requete) ; |
if (DB::isError ($resultat)) { |
$GLOBALS['_GEN_commun']['debogage_erreur']->gererErreur(E_USER_WARNING, "Echec de la requete : $requete<br />".$resultat->getMessage(), |
__FILE__, __LINE__, 'admin_wikini') ; |
return ; |
} |
$liste = new HTML_TableFragmenteur () ; |
$liste->construireEntete(array (PROJET_NOM_WIKINI,PROJET_PAGE_WIKINI, PROJET_SELECTIONNER_WIKINI)) ; |
$tableau_wikini = array() ; |
while ($ligne = $resultat->fetchRow()) { |
$this->_url->addQueryString ('id_wikini', $ligne[0]) ; |
array_push ($tableau_wikini, array ($ligne[1]."\n", // Première colonne, le nom de l'application |
$ligne[2]."\n", // Deuxieme colonne, la page par defaut |
'<a href="'.$this->_url->getURL()."&".PROJET_VARIABLE_ACTION."=".PROJET_ACTION_ASSOCIER_WIKI_V."".'">'.PROJET_CHOISIR_WIKINI.'</a>'."\n", |
)); |
} |
$liste->construireListe($tableau_wikini) ; |
$res .= $liste->toHTML(); |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
return $res ; |
} // end of member function formulaireWiki |
/** |
* Associe un wiki au projet courant |
* |
* @return void |
* @access public |
*/ |
function associationWiki( ) { |
if (isset($_GET['id_wikini'])) { |
$db = &$GLOBALS['_GEN_commun']['pear_db'] ; |
$requete = "select gewi_code_alpha_wikini from gen_wikini where gewi_id_wikini = ".$_GET['id_wikini'] ; |
$resultat = $db->query ($requete) ; |
if (DB::isError ($resultat)) { |
$GLOBALS['_GEN_commun']['debogage_erreur']->gererErreur(E_USER_WARNING, "Echec de la requete : $requete<br />".$resultat->getMessage(), |
__FILE__, __LINE__, 'admin_wikini') ; |
return ; |
} |
$ligne = $resultat->fetchRow(); |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet($this->_db, $this->_id_projet) ; |
$projet->majNomWikini($ligne[0]); |
} |
} |
/** |
* Supprime le wiki du projet courant |
* |
* @return void |
* @access public |
*/ |
function supprimerWiki( ) |
{ |
include_once PROJET_CHEMIN_CLASSES.'gestion_wikini.class.php' ; |
// On crée une nouvelle connexion avec les paramètres spécifiques aux wikinis |
$connexion_bd = DB::connect('mysql://'.PROJET_UTILISATEUR_WIKINI.':'.PROJET_MDP_WIKINI.'@'.PROJET_HOTE_WIKINI.'/'.PROJET_DB_WIKINI) ; |
$gerantWiki = new gestion_wikini($connexion_bd) ; |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$gerantWiki->suppression_tables(strtolower($projet->getWikini())) ; |
$projet->majNomWikini('') ; |
} // end of member function supprimerWiki |
/** |
* Permet de lier une ou plusieurs listes de la table agora à un projet. |
* |
* @return string |
* @access public |
*/ |
function referencerListeExterne( ) |
{ |
$requete = 'show tables like \'agora\'' ; |
$resultat = $this->_db->query ($requete); |
if ($resultat->numRows() == 0) { |
return 'Cette fonctionnalité n\'est pas active' ; |
} |
$res = '<h1>'.PROJET_REFERENCER_LISTE.'</h1>' ; |
include_once PROJET_CHEMIN_CLASSES.'liste_externe.class.php' ; |
$liste_externe = new liste_externe($this->_db) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireListeExterne.class.php' ; |
$this->_url->addQueryString(PROJET_VARIABLE_ID_PROJET, $this->_id_projet) ; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_REFERENCER_LISTE_V) ; |
$HTML_formulaireListeExterne = new HTML_formulaireListeExterne('formulaire_liste_externe', 'post', str_replace('&', '&', $this->_url->getURL())) ; |
$HTML_formulaireListeExterne->construitFormulaire($liste_externe->getListeNom()) ; |
$liste_assoc = $liste_externe->getListesAssociees($this->_id_projet) ; |
$default = array() ; |
foreach ($liste_assoc as $val) $default['liste_'.$val] = 1 ; |
$HTML_formulaireListeExterne->setDefaults($default) ; |
return $res.$HTML_formulaireListeExterne->toHTML() ; |
} // end of member function referencerListeExterne |
/** |
* Réalise les mises à jours dans la table projet_lien_liste_externe |
* |
* @return void |
* @access public |
*/ |
function referencerListeExterneValidation( ) |
{ |
include_once PROJET_CHEMIN_CLASSES.'liste_externe.class.php' ; |
$liste_externe = new liste_externe($this->_db) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireListeExterne.class.php' ; |
$HTML_formulaireListeExterne = new HTML_formulaireListeExterne('formulaire_liste_externe', 'post', str_replace('&', '&', $this->_url->getURL())) ; |
$HTML_formulaireListeExterne->construitFormulaire($liste_externe->getListeNom()) ; |
$liste_externe->enregistrerSQL($HTML_formulaireListeExterne->getSubmitValues(), $this->_id_projet) ; |
} // end of member function referencerListeExterneValidation |
/** |
* permet d'exclure un projet de l'affichage |
* |
* @return void |
* @access public |
*/ |
function exclure($id_projet) |
{ |
array_push ($this->_projet_exclu, $id_projet) ; |
} // end of member function exclure |
/** |
* permet d'exclure un projet de l'affichage |
* |
* @return void |
* @access public |
*/ |
function setPrive() |
{ |
$this->_prive = 1 ; |
} // end of member function exclure |
/** |
* Renvoie un message d'erreur, en fonction du code de l'erreur. |
* |
* @param int valeur Le code du message d'erreur. |
* @return string |
* @access public |
*/ |
function messageErreur( $valeur ) |
{ |
$messageErreur = array ( |
PROJETCONTROLEUR_ACTION_INVALIDE => "Action non valide", |
PROJETCONTROLEUR_ERREUR_SUPPRESSION_REPERTOIRE => "Impossible de supprimer le répertoire", |
PROJETCONTROLEUR_PAS_DE_DOCUMENT_SELECTIONNE => 'Pas de fichier sélectionné', |
PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE => 'Impossible de créer le répertoire' |
) ; |
return '<p class="erreur">'.$messageErreur[$valeur].'</p>' ; |
} // end of member function messageErreur |
} // end of projetControleur |
?> |
/branches/livraison_menes/classes/participe.class.php |
---|
New file |
0,0 → 1,362 |
<?php |
// +------------------------------------------------------------------------------------------------------+ |
// | 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: participe.class.php,v 1.3 2006-07-04 09:27:40 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe partiicpe assure la jointure entre projet et Auth |
* Elle se base sur la table projet_statut_utilisateur |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.3 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/** |
* class participe |
* |
*/ |
class participe |
{ |
/*** Attributes: ***/ |
/** |
* Date d'inscription au projet de l'utilisateur. |
* @access private |
*/ |
var $_date_inscription; |
/** |
* Statut de l'utilisateur, un entier. |
* @access private |
*/ |
var $_statut; |
/** |
* Connexion à la base de donnée. |
* @access private |
*/ |
var $_db; |
/** |
* Constructeur. Nécessite un objet DB valide connecté à la base contenant les |
* tables projets. |
* |
* @param DB objetDB Un objet PEAR:DB valide. |
* @return void |
* @access public |
*/ |
function participe( &$objetDB ) |
{ |
$this->_db = $objetDB ; |
} // end of member function participe |
/** |
* Renvoie la liste des inscrit à un projet avec leur statut. |
* |
* @return Array |
* @access public |
*/ |
function getInscrits($id_projet, $droits ) |
{ |
$tableau_resultat = array() ; |
$requete = 'select psu_id_utilisateur,'.PROJET_CHAMPS_NOM.','.PROJET_CHAMPS_PRENOM.',' ; |
$requete .= PROJET_CHAMPS_MAIL.', ' ; |
$requete .= 'psu_date_inscription, ps_id_statut '. |
' from projet_statut_utilisateurs, projet_statut,'.PROJET_ANNUAIRE. |
' where psu_id_projet='.$id_projet.' and psu_id_utilisateur='.PROJET_CHAMPS_ID. |
' and psu_id_statut=ps_id_statut order by ps_id_statut,'.PROJET_CHAMPS_NOM; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ORDERED)) { |
array_push ($tableau_resultat, $ligne) ; |
} |
$resultat->free() ; |
return $tableau_resultat ; |
} // end of member function getInscrits |
/** |
* Renvoie un tableau contenant la liste des identifiants des projets et des statuts |
* d'un inscrit. 0 => ['psu_id_utilisateur'] ['psu_id_statut'] 1 => ... |
* |
* @param int id_utilisateur Un identifiant d'utilisateur pour le champs |
* projet_statut_utilisateurs:psu_id_utilisateur |
* @return Array |
* @access public |
*/ |
function getIdProjetsStatuts( $id_utilisateur ) |
{ |
$tableau_resultat = array() ; |
$requete = "select psu_id_utilisateur, psu_id_statut from projet_statut_utilisateurs". |
" where psu_id_utilisateur=".$id_utilisateur ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
array_push ($tableau_resultat, $ligne) ; |
} |
$resultat->free() ; |
return $tableau_resultat ; |
} // end of member function getIdProjetsStatuts |
/** |
* Renvoie un tableau à 2 dimensions avec les informations sur l'inscription aux |
* différents projets d'un utilisateur. 0 => ['p_titre'] Le titre du projet |
* ['ps_label'] Le statut de l'utilisateur 1 => .... (autant que de |
* projets) |
* |
* @param int id_utilisateur L'identifiant d'un utilisateur. |
* @return Array |
* @access public |
*/ |
function getInformationsUtilisateurs( $id_utilisateur ) |
{ |
$tableau_resultat = array() ; |
$requete = "select p_titre, ps_statut_nom, psu_id_statut, psu_id_projet from projet_statut_utilisateurs, projet, projet_statut". |
" where psu_id_utilisateur=".$id_utilisateur. |
" and psu_id_projet = p_id and psu_id_statut = ps_id_statut" ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow()) { |
array_push ($tableau_resultat, $ligne) ; |
} |
$resultat->free() ; |
return $tableau_resultat ; |
} // end of member function getInformationsUtilisateurs |
/** |
* Renvoie le statut du projet passé en paramètre. |
* |
* @param int id_utilisateur |
* @param int id_projet |
* @param int dbObject |
* @return int |
* @static |
* @access public |
*/ |
function getStatutSurProjetCourant( $id_utilisateur, $id_projet, &$dbObject ) |
{ |
$requete = 'select psu_id_statut from projet_statut_utilisateurs'. |
' where psu_id_utilisateur="'.$id_utilisateur.'" and psu_id_projet ='.$id_projet ; |
$resultat = $dbObject->query ($requete) ; |
if (DB::isError ($resultat)) { |
echo ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ; |
if (!$resultat->numRows()) { |
return 4 ; // Le statut ne participe pas |
} |
return $ligne->psu_id_statut ; |
} // end of member function getStatutSurProjetCourant |
/** |
* Réalise une requête dans projet_statut_utilisateurs et renvoie true si l'utilisateur |
* est administrateur de l'application projet. |
* |
* @param int id_utilisateur L'identifiant d'un utilisateur. |
* @param DB objetDB Un objet PEAR::DB |
* @return bool |
* @access public |
*/ |
function isAdministrateur( $id_utilisateur, $objetDB = "" ) |
{ |
// La table projet_statut_utilisateurs possède une entré avec psu_id_projet = 0 |
// pour indiquer un administrateur |
$requete = "select psu_id_statut from projet_statut_utilisateurs where psu_id_utilisateur=$id_utilisateur". |
" and psu_id_projet=0" ; |
if ($objetDB != "") { |
$resultat = $objetDB->query ($requete) ; |
} else { |
$resultat = $this->_db->query ($requete) ; |
} |
if ($resultat->numRows () != 0) { |
return true; |
} |
return false ; |
} // end of member function isAdministrateur |
/** |
* Met à jour le statut d'un utilisateur sur un projet |
* |
* @param int id_statut L'identifiant du statut à ajouter ou mettre à jour |
* @param int id_utilisateur Identifiant de l'utilisateur |
* @param int id_projet Identifiant du projet |
* @return bool |
* @access public |
*/ |
function setStatut( $id_statut, $id_utilisateur, $id_projet ) |
{ |
$requete = 'update projet_statut_utilisateurs set psu_id_statut='.$id_statut. |
' where psu_id_utilisateur='.$id_utilisateur.' and psu_id_projet='.$id_projet; |
if (participe::getStatutSurProjetCourant($id_utilisateur, $id_projet, $this->_db) == 4) { |
$requete = 'insert into projet_statut_utilisateurs set psu_id_statut='.$id_statut. |
', psu_id_utilisateur='.$id_utilisateur.',psu_id_projet='.$id_projet. |
', psu_date_inscription=NOW()'; |
} |
if ($id_statut == 4) { // Si le statut est ne participe pas, on supprime l'inscrit |
$requete = 'delete from projet_statut_utilisateurs where psu_id_utilisateur='.$id_utilisateur.' and psu_id_projet='.$id_projet ; |
} |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
return true ; |
} // end of member function setStatut |
/** |
* Renvoie vrai si l'utilisateur est coordinateur, faux dans les autres cas |
* |
* @param int id_utilisateur L'identifiant d'un utilisateur |
* @param DB objetDB Optionnel, nécessaire si on appelle cette méthode statiquement |
* @return bool |
* @static |
* @access public |
*/ |
function isCoordinateur( $id_utilisateur, $id_projet, &$objetDB ) |
{ |
$statut = $this->getStatutSurProjetCourant($id_utilisateur, $id_projet, $objetDB) ; |
if ($statut == 1) { |
return true; |
} |
return false ; |
} // end of member function isCoordinateur |
/** |
* Renvoie la liste des projets auquels l'utilisateur passé en paramètre ne |
* participe pas. |
* |
* @param int id_utilisateur L'identifiant de l'utilisateur. |
* @return Array |
* @access public |
*/ |
function getProjetsNonParticipant( $id_utilisateur ) |
{ |
$tableau_resultat = array() ; |
$requete = 'select p_id from projet'. |
' where p_id not in (select psu_id_projet from projet_statut_utilisateurs where psu_id_utilisateur="'.$id_utilisateur.'")' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_resultat, new projet ($this->_db, $ligne->p_id)) ; |
} |
$resultat->free() ; |
return $tableau_resultat ; |
} // end of member function getProjetsNonParticipant |
/** |
* Renvoie true si l'utilisateur passé en paramètre est observateur du projet passé |
* en paramètre. |
* |
* @param int id_utilisateur L'identifiant de l'utilisateur |
* @param int id_projet L'identifiant du projet |
* @return bool |
* @access public |
*/ |
function isObservateur( $id_utilisateur, $id_projet, &$objetDB ) |
{ |
if ($this->getStatutSurProjetCourant($id_utilisateur, $id_projet, $objetDB) == 3) { |
return true; |
} |
return false ; |
} // end of member function isObservateur |
/** |
* Renvoie true si l'utilisateur passé en paramètre est contributeur du projet passé |
* en paramètre. |
* |
* @param int id_utilisateur L'identifiant de l'utilisateur |
* @param int id_projet L'identifiant du projet |
* @return bool |
* @access public |
*/ |
function isContributeur( $id_utilisateur, $id_projet, &$objetDB ) |
{ |
if ($this->getStatutSurProjetCourant($id_utilisateur, $id_projet, $objetDB) == 4) return false; |
if ($this->getStatutSurProjetCourant($id_utilisateur, $id_projet, $objetDB) == 2) { |
return true; |
} |
return false ; |
} // end of member function isObservateur |
/** |
* Renvoie true si l'utilisateur passé en paramètre est contributeur du projet passé |
* en paramètre. |
* |
* @param int id_utilisateur L'identifiant de l'utilisateur |
* @param int id_projet L'identifiant du projet |
* @return bool |
* @access public |
*/ |
function isEnAttente( $id_utilisateur, $id_projet, &$objetDB ) |
{ |
if ($this->getStatutSurProjetCourant($id_utilisateur, $id_projet, $objetDB) == 3) { |
return true; |
} |
return false ; |
} // end of member function isObservateur |
/** |
* Renvoie les infos sur les coordinateurs d'un projet |
* |
* @param int id_projet L'identifiant du projet |
* @return array Un tableau contenant les infos concernants les coordinateurs du projet |
* @access public |
*/ |
function getCoordinateurs($id_projet) |
{ |
$tableau_resultat = array() ; |
$requete = 'select psu_id_utilisateur,'.PROJET_CHAMPS_NOM.','.PROJET_CHAMPS_PRENOM.',' ; |
$requete .= PROJET_CHAMPS_MAIL.', ' ; |
$requete .= 'psu_date_inscription, ps_id_statut '. |
' from projet_statut_utilisateurs, projet_statut,'.PROJET_ANNUAIRE. |
' where psu_id_projet='.$id_projet.' and psu_id_utilisateur='.PROJET_CHAMPS_ID. |
' and psu_id_statut=ps_id_statut and psu_id_statut=1 order by ps_id_statut,'.PROJET_CHAMPS_NOM; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ORDERED)) { |
array_push ($tableau_resultat, $ligne) ; |
} |
$resultat->free() ; |
return $tableau_resultat ; |
} // end of member function getCoordinateurs |
} // end of participe |
?> |
/branches/livraison_menes/classes/type_fichier_mime.class.php |
---|
New file |
0,0 → 1,187 |
<?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: type_fichier_mime.class.php,v 1.2 2005-09-27 16:42:00 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe type_fichier_mime |
* |
*@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 | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/** |
* class type_fichier_mime |
* |
*/ |
class type_fichier_mime |
{ |
/*** Attributes: ***/ |
/** |
* Le nom du type en français (ex Image jpg) |
* @access private |
*/ |
var $_nom; |
/** |
* L'extension du fichier (ex: png) |
* @access private |
*/ |
var $_extension; |
/** |
* Le nom du fichier de l'icône représentant ce fichier. |
* @access private |
*/ |
var $_icone; |
/** |
* Le type mime. |
* @access private |
*/ |
var $_type_mime; |
/** |
* |
* @access private |
*/ |
var $_description; |
/** |
* Le chemin UNIX ou Windows vers le dossier des icônes. Il ne commence pas par un |
* slash et termine par slash. |
* @access private |
*/ |
var $_chemin_icone = "icones/"; |
/** |
* Un objet PEAR:DB |
* @access private |
*/ |
var $_db; |
/** |
* L'identifiant du type dans la table gen_type_de_fichier |
* @access private |
*/ |
var $_id_type; |
/** |
* Renvoie le chemin vers les icônes. |
* |
* @return string |
* @access public |
*/ |
function getCheminIcone( ) |
{ |
return $this->_chemin_icone.$this->_icone ; ; |
} // end of member function getCheminIcone |
/** |
* |
* |
* @param string chemin Le chemin vers l'icône. |
* @return void |
* @access public |
*/ |
function setCheminIcone( $chemin ) |
{ |
$this->_chemin_icone = $chemin ; |
} // end of member function setCheminIcone |
/** |
* |
* |
* @param DB objetDB un objet PEAR:DB |
* @param int id_type |
* @return void |
* @access public |
*/ |
function type_fichier_mime( &$objetDB, $id_type = '', $chemin_icones = "icones/" ) |
{ |
$this->_db = $objetDB ; |
$requete = 'select * from gen_type_de_fichier where ' ; |
if (is_numeric ($id_type)) { |
$requete .= 'gtf_id_type='.$id_type ; |
} else { |
$requete .= 'gtf_type_mime="'.$id_type.'"' ; |
} |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
$this->_chemin_icone = $chemin_icones ; |
$this->_icone = $ligne->gtf_type_icone ; |
$this->_id_type = $ligne->gtf_id_type ; |
} // end of member function type_fichier_mime |
/** |
* Tente de renvoyer un objet type_fichier_mime à partir de l'extension passé en |
* paramètre. S'il elle n'y arrive pas, elle renvoie 'inconnue'. |
* |
* @param string extension On passe un extension en paramètre, pour déterminer le type mime. |
* @param DB objetDB un objet PEAR:DB |
* @return type_fichier_mime |
* @static |
* @access public |
*/ |
function factory( $extension, &$objetDB ) |
{ |
$requete = "select * from gen_type_de_fichier where gtf_extension=\"$extension\" or gtf_type_mime=\"$extension\"" ; |
$resultat = $objetDB->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
if ($resultat->numRows() != 0) { |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
return new type_fichier_mime ($objetDB, $ligne->gtf_id_type) ; |
} else { |
// si il n'y a pas de résultat, on renvoie inconnue |
return new type_fichier_mime ($objetDB, 12) ; |
} |
} // end of member function factory |
/** |
* Renvoie l'identifiant du type Mime de la table gen_type_de_fichier |
* |
* @return int |
* @access public |
*/ |
function getIdType( ) |
{ |
return $this->_id_type; |
} // end of member function getIdType |
} // end of type_fichier_mime |
?> |
/branches/livraison_menes/classes/gestion_wikini.class.php |
---|
New file |
0,0 → 1,182 |
<?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 |
?> |
/branches/livraison_menes/classes/liste_discussion.class.php |
---|
New file |
0,0 → 1,291 |
<?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: liste_discussion.class.php,v 1.2.4.1 2007-04-13 08:26:44 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La classe liste_discussion |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.2.4.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
require_once GEN_CHEMIN_API.'sql/SQL_manipulation.fonct.php' ; |
/** |
* class liste_discussion |
* |
*/ |
class liste_discussion |
{ |
/*** Attributes: ***/ |
/** |
* Le nom de la liste, sans le domaine. |
* @access private |
*/ |
var $_nom; |
/** |
* |
* @access private |
*/ |
var $_adresse; |
/** |
* Le domaine de la liste |
* @access private |
*/ |
var $_domaine; |
/** |
* |
* @access private |
*/ |
var $_adresse_inscription; |
/** |
* |
* @access private |
*/ |
var $_adresse_desinscription; |
/** |
* |
* @access private |
*/ |
var $_adresse_aide; |
/** |
* Une connexion PEAR::DB |
* @access private |
*/ |
var $_db; |
/** |
* L'identifiant de la liste. |
* @access private |
*/ |
var $_id; |
/** |
* |
* @access private |
*/ |
var $_adresse_inscription_resume; |
/** |
* Indique la portée, publique ou privé de la liste |
* @access private |
*/ |
var $_portee; |
/** |
* Le constructeur |
* |
* @param int id_liste L'identifiant de la liste souhaité |
* @param DB objetDB Un objet PEAR:DB |
* @return void |
* @access public |
*/ |
function liste_discussion( $id_liste, & $objetDB ) |
{ |
$this->_db = $objetDB ; |
if ($id_liste != '') { |
$this->_id = $id_liste ; |
$requete_liste = 'select * from projet_liste where pl_id_liste='.$this->_id ; |
$resultat_liste = $this->_db->query ($requete_liste) ; |
if (DB::isError ($resultat_liste)) { |
die ("Echec de la requete : $requete_liste<br />".$resultat_liste->getMessage()) ; |
} |
$ligne_liste = $resultat_liste->fetchRow(DB_FETCHMODE_OBJECT) ; |
$this->_adresse = $ligne_liste->pl_adresse_liste ; |
$this->_domaine = $ligne_liste->pl_domaine ; |
$this->_nom = $ligne_liste->pl_nom_liste ; |
$this->_adresse_inscription = $ligne_liste->pl_adresse_inscription ; |
$this->_adresse_inscription_resume = $ligne_liste->pl_nom_liste.'-digest-subscribe@'.$this->_domaine ; |
$this->_portee = $ligne_liste->pl_visibilite ; |
} |
} // end of member function liste_discussion |
/** |
* Renvoie le domaine de la liste |
* |
* @return string |
* @access public |
*/ |
function getDomaine( ) |
{ |
return $this->_domaine ; |
} // end of member function getDomaine |
/** |
* Renvoie le nom de la liste |
* |
* @return string |
* @access public |
*/ |
function getNom( ) |
{ |
return $this->_nom ; |
} // end of member function getNom |
/** |
* Renvoie l'identifiant de la liste |
* |
* @return integer |
* @access public |
*/ |
function getId( ) |
{ |
return $this->_id ; |
} // end of member function getNom |
/** |
* Enregistre une ligne dans la table projet_liste |
* Le tableau de valeur doit contenir les éléments suivants 'nom_liste','','domaine_liste' |
* |
* @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments |
* @access public |
* @return void |
*/ |
function enregistrerSQL ($valeur) { |
$id = SQL_obtenirNouveauId($this->_db, 'projet_liste', 'pl_id_liste') ; |
$requete = "insert into projet_liste set pl_id_liste=".$id ; |
$requete .= ", pl_nom_liste=\"".$valeur['nom_liste']."\", pl_domaine=\"".$valeur['domaine_liste']."\"". |
", pl_adresse_liste=\"".$valeur['nom_liste'].'@'.$valeur['domaine_liste'].'", pl_adresse_inscription="'. |
$valeur['nom_liste']."-subscribe@".$valeur['domaine_liste'].'",pl_adresse_desinscription="'. |
$valeur['nom_liste']."-unsubscribe@".$valeur['domaine_liste'].'", pl_adresse_aide="'. |
$valeur['nom_liste']."-help@".$valeur['domaine_liste'].'", pl_visibilite="'.$valeur['liste_visibilite'].'"' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$this->_id = $id ; |
$this->_domaine = $valeur['domaine_liste'] ; |
$this->_nom = $valeur['nom_liste'] ; |
return $id; |
} |
/** |
* |
* |
* @param string code_sql |
* @return bool |
* @access public |
*/ |
function suppressionSQL() |
{ |
$requete = "delete from projet_liste where pl_id_liste=".$this->_id ; |
$resultat = $this->_db->query ($requete) ; |
return true ; |
} // end of member function suppressionSQL |
/** |
* Vérifie si une liste existe déjà dans la table projet_liste. |
* |
* @param string adresse_liste L'adresse de la liste à tester |
* @param DB objetDB Un objet PEAR::DB |
* @return bool |
* @static |
* @access public |
*/ |
function verifieDoubleListe( $adresse_liste, &$objetDB ) |
{ |
$requete = 'select pl_id_liste from projet_liste where pl_adresse_liste="'.$adresse_liste.'"' ; |
$resultat = $objetDB->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
if ($resultat->numRows()) { |
return false; |
} |
return true ; |
} // end of member function verifieDoubleListe |
/** |
* Renvoie l'adresse de la liste |
* |
* @return string |
* @access public |
*/ |
function getAdresseEnvoi( ) |
{ |
return $this->_adresse ; |
} // end of member function getAdresseEnvoi |
/** |
* Renvoie l'adresse de la liste |
* |
* @return string |
* @access public |
*/ |
function getAdresseInscription( ) |
{ |
return $this->_adresse_inscription ; |
} // end of member function getAdresseEnvoi |
/** |
* |
* |
* @return string |
* @access public |
*/ |
function getAdresseResume( ) |
{ |
return $this->_adresse_inscription_resume ; |
} // end of member function getAdresseResume |
/** |
* |
* |
* @return string |
* @access public |
*/ |
function isPublic( ) |
{ |
return $this->_portee ; |
} // end of member function getAdresseResume |
} // end of liste_discussion |
?> |
/branches/livraison_menes/actions/description.php |
---|
New file |
0,0 → 1,57 |
<?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: description.php,v 1.2.4.1 2007-04-11 12:18:23 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Action description |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.2.4.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// RAPPEL IMPORTANT |
// On se situe dans la méthode run() de la classe projetControleur |
// |
// création de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$retour .= '<h1>'.PROJET_PROJET.' : '.$projet->getTitre()."</h1>" ; |
$retour .= '<h2>'.PROJET_RESUME.'</h2>'."\n" ; |
$retour .= '<div>'.$projet->getResume().'</div>'."\n" ; |
$retour .= '<h2>'.PROJET_DESCRIPTION.'</h2>' ; |
$retour .= '<div>'.$projet->getDescription().'</div>'."\n" ; |
?> |
/branches/livraison_menes/actions/wikini.php |
---|
New file |
0,0 → 1,93 |
<?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: wikini.php,v 1.14.2.1 2007-04-11 12:20:49 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Action participants |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.14.2.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// RAPPEL IMPORTANT |
// On se situe dans la méthode run() de la classe projetControleur |
// |
$res = '' ; |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$wiki_res = '' ; |
$wiki_res.= '<h1>'.PROJET_PROJET.' : '.$projet->getTitre()."</h1>" ; |
// Les wikinis associés au projet |
if ($wiki=$projet->getWikini()) { |
if ($projet->isModere()) { |
if ($this->_auth->getAuth()) { |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$participant = new participe($this->_db) ; |
if ($participant->getStatutSurProjetCourant($this->_auth->getAuthData(PROJET_CHAMPS_ID), $projet->getId(), $this->_db) < 3) { |
$wiki_res .= '<a href="http://'.$GLOBALS['_GEN_commun']['url']->host.'/'. |
PROJET_CHEMIN_WIKINI.$projet->getWikini().'" target="_blank">'.PROJET_WIKINI_ALLER.'</a>'; |
$GLOBALS['_GEN_commun']['info_application']->wikini = $wiki; |
$GLOBALS['_GEN_commun']['url']->addQueryString(PROJET_VARIABLE_ACTION,'wikini'); |
$GLOBALS['_GEN_commun']['url']->addQueryString(PROJET_VARIABLE_ID_PROJET,$this->_id_projet); |
require_once 'client/integrateur_wikini/bibliotheque/iw_integrateur.fonct.php'; |
$wiki_res.= afficherPageWikini(); |
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_MENU'] =afficherPageMenuWikini(); |
$retour .= $wiki_res ; |
} else { |
$retour .= PROJET_VOUS_N_ETES_PAS_INSCRIT; |
} |
} else { |
$retour .= PROJET_TEXTE_NON_IDENTIFIE; |
} |
} else { |
$wiki_res .= '<a href="http://'.$GLOBALS['_GEN_commun']['url']->host.'/'. |
PROJET_CHEMIN_WIKINI.$projet->getWikini().'" target="_blank">'.PROJET_WIKINI_ALLER.'</a>'; |
$GLOBALS['_GEN_commun']['info_application']->wikini = $wiki; |
$GLOBALS['_GEN_commun']['url']->addQueryString(PROJET_VARIABLE_ACTION,'wikini'); |
$GLOBALS['_GEN_commun']['url']->addQueryString(PROJET_VARIABLE_ID_PROJET,$this->_id_projet); |
require_once 'client/integrateur_wikini/bibliotheque/iw_integrateur.fonct.php'; |
$wiki_res.= afficherPageWikini(); |
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_MENU'] =afficherPageMenuWikini(); |
$retour .= $wiki_res ; |
} |
} else { |
$wiki_res .= '<div>'.PROJET_WIKINI_PAS.'</div>'."\n" ; |
$retour .= $wiki_res ; |
} |
?> |
/branches/livraison_menes/actions/forums.php |
---|
New file |
0,0 → 1,331 |
<?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: forums.php,v 1.10.2.2 2007-04-11 12:19:38 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Action forums |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.10.2.2 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
include_once (PROJET_CHEMIN_CLASSES.'HTML_formulaireMail.class.php') ; |
include_once (PROJET_CHEMIN_CLASSES.'inscription_liste.class.php') ; |
include_once (PROJET_CHEMIN_CLASSES.'ezmlmAccessObject.class.php') ; |
// RAPPEL IMPORTANT |
// On se situe dans la méthode run() de la classe projetControleur |
// |
// création de l'objet projet courant |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$liste_ext_res = '' ; |
$sortie_liste = '' ; |
$inscription_laius ='' ; |
$this->_url->addQueryString (PROJET_VARIABLE_ID_PROJET, $this->_id_projet); |
if ($projet->avoirListe()) { |
foreach ($projet->_listes_associes as $info_liste) { |
ob_start() ; |
$id_u = $this->_auth->getAuthData(PROJET_CHAMPS_ID) ; |
if ($this->_auth->getAuth()) { |
$participant = new participe($this->_db) ; |
$isCoord = $participant->isCoordinateur($id_u, $this->_id_projet, $this->_db) ; |
if ($isCoord) $droits = PROJET_DROIT_COORDINATEUR ; |
$isAdm = participe::isAdministrateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_db) ; |
if ($isAdm) $droits = PROJET_DROIT_ADMINISTRATEUR ; |
if ($isAdm) $isCoord = true ; |
} else { |
$droits = PROJET_DROIT_AUCUN; |
} |
// gestion de l'inscription désinscription à la liste |
// TODO : la gestion de linscription au résumé |
$inscription_liste = new inscription_liste($this->_db) ; |
$statut = $inscription_liste->getStatutInscrit( $info_liste->getId(), $this->_auth ) ; |
if ($this->_auth->getAuth() && isset($GLOBALS['_GEN_commun']['info_application']->seulement_forum)) { |
if ($statut == 2) { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_DESINSCRIPTION_LISTE); |
$inscription_laius ='<h2>'.PROJET_VOUS_ETES_INSCRIT.'</h2>'."\n" ; |
$inscription_laius .= '<a href="'.$this->_url->getURL().'">'.PROJET_SE_DESINSCRIRE_LISTE.'</a>'."\n" ; |
} else { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_INSCRIPTION_LISTE); |
$inscription_laius ='<h2>'.PROJET_VOUS_N_ETES_PAS_INSCRIT.'</h2>'."\n" ; |
$inscription_laius .= '<a href="'.$this->_url->getURL().'">'.PROJET_S_INSCRIRE.'</a>'."\n" ; |
} |
} |
if ($info_liste->isPublic() || $droits <= PROJET_DROIT_CONTRIBUTEUR) { |
include_once PROJET_CHEMIN_CLASSES_LISTES.'ezmlm.php' ; |
$liste = new ezmlm_php() ; |
// Paramétrage de la liste |
$liste->listdir = PROJET_CHEMIN_LISTES.$info_liste->getDomaine().'/'.$info_liste->getNom(); |
$liste->listname = $info_liste->getNom() ; |
$liste->listdomain = $info_liste->getDomaine(); |
if (isset ($GLOBALS['action']) && $GLOBALS['action'] != '') { |
$liste->set_action($GLOBALS['action']) ; |
$liste->set_actionargs($GLOBALS['actionargs']) ; |
} else { |
$liste->set_action('list_info') ; |
} |
$liste->sendheaders = false; |
$liste->sendbody = false; |
$liste->sendfooters = false; |
$liste->forcehref = $this->_url->getURL() ; |
print '<a href="mailto:'.$info_liste->getAdresseEnvoi().'">' . $info_liste->getAdresseEnvoi() ; |
print "</a><br />\n"; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ENVOYER_UN_MAIL); |
if (isset ($GLOBALS['_GEN_commun']['info_application']->seulement_forum)) |
print '<a href="'.$this->_url->getURL().'">'.PROJET_ECRIRE_LISTE.'</a><br />'; |
print '<h2>'.PROJET_TOUS_LES_MESSAGES.'</h2>'."\n"; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_FORUM); |
$xml_parser = &new ezmlmAccessObject('calendrier_messages', $info_liste->getDomaine(), |
$info_liste->getNom(), $GLOBALS['lang'], |
$this->_url->getURL()) ; |
$xml_parser->load(); |
$resultat = $xml_parser->parse() ; |
$xml_parser->reset(); |
//$this->_url->addQueryString(PROJET_VARIABLE_ACTION, $this->_action) ; |
// On teste si l'on vient d'une réponse à un email, si oui |
// on modifie $liste->action pour renvoyer le message auquelon vient de répondre |
if (isset($_POST['messageid'])) { |
$liste->action = 'show_msg' ; |
} |
switch ($liste->action) { |
case "show_msg": |
if (count($liste->actionargs) < 2) { |
$liste->error(EZMLM_INVALID_SYNTAX,TRUE); |
} |
// actionargs[0] contient le nom du répertoire et actionargs[1] le nom du fichier |
// On appelle la fonction qui affiche un fichier |
$xml_parser->setAction ('message'); |
$xml_parser->setIdMessage($liste->actionargs[0], $liste->actionargs[1]) ; |
$xml_parser->load(); |
ob_start (); |
$xml_parser->parse() ; |
$mail = ob_get_contents() ; |
ob_end_clean(); |
$mimeDecode = new Mail_mimeDecode($mail) ; |
$mailDecode = $mimeDecode->decode(array('decode_bodies' => 'true', |
'include_bodies' => 'true')) ; |
$message = new ezmlm_msgdisplay() ; |
$message->listname = $info_liste->getNom(); |
$this->_url->addQueryString ('action', 'show_msg'); |
if ($xml_parser->getNumeroFichierPrecedent() != '') { |
print '[<a href="' . $this->_url->getURL(). '&actionargs[]='. |
$xml_parser->getNumeroRepertoirePrecedent().'&actionargs[]='. |
$xml_parser->getNumeroFichierPrecedent(). |
'">'.PROJET_PRECEDENT.'</a>]'; |
} else { |
print '['.PROJET_PRECEDENT.']' ; |
} |
if ($xml_parser->getNumeroFichierSuivant() != '') { |
print '[<a href="' .$this->_url->getURL().'&actionargs[]='.$xml_parser->getNumeroRepertoireSuivant() |
.'&actionargs[]='.$xml_parser->getNumeroFichierSuivant().'">'.PROJET_SUIVANT. '</a>]'; |
} else { |
print '['.PROJET_SUIVANT.']' ; |
} |
$this->_url->addQueryString ('action', 'repondre'); |
print '[<a href="'.$this->_url->getURL().'&actionargs[]='.$liste->actionargs[0]. |
'&actionargs[]='.$liste->actionargs[1].'">'.PROJET_REPONDRE.'</a>]'; |
if ($isCoord) { |
$this->_url->addQueryString ('action', 'supprimer'); |
print '[<a href="'.$this->_url->getURL().'&actionargs[]='.$liste->actionargs[0]. |
'&actionargs[]='.$liste->actionargs[1].'" onclick="javascript:return confirm(\''.PROJET_SUPPRIMER.' ?\');">'. |
PROJET_SUPPRIMER.'</a>]'; |
} |
print '<div class="message">' ; |
print $message->parse_entete_mail($mailDecode) ; |
//var_dump($mailDecode); |
$message->parse_template($mailDecode, $liste->actionargs[1], $liste->actionargs[0]); |
print $message->message_rendu; |
print '</div>' ; |
break; |
case "list_info": |
print'<h2>'.PROJET_DERNIERS_MESSAGES.'</h2>'."\n" ; |
$xml_parser->reset() ; |
$xml_parser->setAction ('derniers_messages'); |
$xml_parser->load(); |
ob_start (); |
$xml_parser->parse() ; |
$derniers_messages = ob_get_contents() ; |
ob_end_clean(); |
echo $derniers_messages ; |
break; |
case "show_threads": |
$xml_parser->reset() ; |
$xml_parser->setAction ('messages_thread'); |
$xml_parser->setMois($liste->actionargs[0]); |
$xml_parser->load(); |
ob_start (); |
$xml_parser->parse() ; |
$messages_thread = ob_get_contents() ; |
ob_end_clean(); |
echo $messages_thread ; |
break; |
case "show_author_msgs" : |
$xml_parser->reset() ; |
$xml_parser->setAction ('messages_auteur'); |
$xml_parser->setHashAuteur($liste->actionargs[0]); |
$xml_parser->load(); |
ob_start (); |
$xml_parser->parse() ; |
$messages_auteur = ob_get_contents() ; |
ob_end_clean(); |
echo $messages_auteur ; |
break; |
case 'show_month' : |
echo '[ '.$liste->makelink(PROJET_VARIABLE_ACTION.'=forums&action=show_threads&actionargs[]='. |
$liste->actionargs[0], 'par fil de discussion').' ]' ; |
$xml_parser->reset() ; |
$xml_parser->setAction ('messages_mois'); |
$xml_parser->setMois($liste->actionargs[0]); |
$xml_parser->load(); |
ob_start (); |
$xml_parser->parse() ; |
$messages_mois = ob_get_contents() ; |
ob_end_clean(); |
echo $messages_mois ; |
break; |
case 'repondre' : |
if (count($liste->actionargs) < 2) { |
$liste->error(EZMLM_INVALID_SYNTAX,TRUE); |
} |
$xml_parser->setAction ('message'); |
$xml_parser->setIdMessage($liste->actionargs[0], $liste->actionargs[1]) ; |
$xml_parser->load(); |
ob_start (); |
$xml_parser->parse() ; |
$message = ob_get_contents() ; |
ob_end_clean(); |
$mimeDecode = new Mail_mimeDecode($message) ; |
$mailDecode = $mimeDecode->decode(array('decode_bodies' => 'true', 'include_bodies' => 'true')) ; |
if (isset($_SESSION['formulaire_mail'])) { |
unset ($_SESSION['formulaire_mail']) ; |
} |
$formulaireReponse = new HTML_formulaireMail('formulaire_reponse', 'post', |
str_replace('&', '&', $this->_url->getURL()). |
'&action='.PROJET_ENVOYER_UN_MAIL_V. |
'&actionargs[]='.$liste->actionargs[0]. |
'&actionargs[]='.$liste->actionargs[1]. |
'&'.PROJET_VARIABLE_ACTION.'='.PROJET_ENVOYER_UN_MAIL_V) ; |
$formulaireReponse->construitFormulaire() ; |
$repondre = new ezmlm_repondre(); |
$repondre->listdir = $liste->listdir ; |
$this->_url->removeQueryString (PROJET_VARIABLE_ACTION) ; |
$repondre->forcehref = $this->_url->getURL(); |
$repondre->listname = $info_liste->getNom() ; |
// actionargs[0] contient le nom du répertoire et actionargs[1] le nom du fichier |
// On appelle la fonction qui affiche un fichier |
print'<h2>'.PROJET_REDIGER_REPONSE.'</h2>'."\n" ; |
$repondre->repondre($liste->actionargs[0] . "/" . $liste->actionargs[1]); |
$repondre->parse_template($mailDecode, $liste->actionargs[0], $liste->actionargs[1]); |
$formulaireReponse->addElement ('hidden', 'messageid', $mailDecode->headers['message-id']) ; |
// Ajout de > au début de chaque ligne du message |
$tableau = explode ("\n", $repondre->message_rendu) ; |
$repondre->message_rendu = "> ".implode ("\n> ", $tableau) ; |
$formulaireReponse->setDefaults(array('mail_corps' => $repondre->message_rendu, |
'mail_titre' => 'Re : '.$repondre->decode_iso ($mailDecode->headers['subject']))) ; |
print $formulaireReponse->toHTML() ; |
break; |
case 'supprimer' : |
$xml_parser->reset() ; |
$xml_parser->setAction ('supprimer'); |
$xml_parser->setIdMessage($liste->actionargs[0], $liste->actionargs[1]) ; |
$xml_parser->load(); |
print'<h2>'.PROJET_DERNIERS_MESSAGES.'</h2>'."\n" ; |
$xml_parser->reset() ; |
$xml_parser->setAction ('derniers_messages'); |
$xml_parser->load(); |
ob_start (); |
$xml_parser->parse() ; |
$derniers_messages = ob_get_contents() ; |
ob_end_clean(); |
echo $derniers_messages ; |
break; |
} |
} else { |
print PROJET_MESSAGE_LISTE_PRIVEE ; |
} |
$sortie_liste = ob_get_contents() ; |
ob_end_clean() ; |
} |
} |
include_once PROJET_CHEMIN_CLASSES.'liste_externe.class.php' ; |
$listes_ext = new liste_externe ($this->_db) ; |
$tableau_liste = $listes_ext->getListesAssociees($this->_id_projet) ; |
if (count ($tableau_liste) != 0) { |
//$liste_ext_res .= '<h2>'.PROJET_LISTES_ASSOCIEES.'</h2>'."\n" ; |
for ($i = 0; $i < count ($tableau_liste); $i++) { |
$info_liste = $listes_ext->getInfoListe($tableau_liste[$i]) ; |
$liste_ext_res .= '<p><a href="'.$info_liste->AGO_A_URLGRP.'">'.$info_liste->AGO_A_URLGRP.'</a></p>'."\n" ; |
$liste_ext_res .= '<br />'."\n" ; |
} |
} |
$retour .= '<h1>' ; |
if (!isset($GLOBALS['_GEN_commun']['info_application']->seulement_forum)) $retour .= PROJET_PROJET.' : '; |
$retour .= $projet->getTitre()."</h1>" ; |
$retour .= $inscription_laius ; |
$retour .= '<h2>'.PROJET_ADRESSE_ECRIRE.'</h2>'."\n" ; |
$retour .= $sortie_liste ; |
$retour .= $liste_ext_res ; |
?> |
/branches/livraison_menes/actions/resume.php |
---|
New file |
0,0 → 1,230 |
<?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: resume.php,v 1.10.2.2 2007-04-11 12:20:23 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Action resume |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.10.2.2 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// RAPPEL IMPORTANT |
// On se situe dans la méthode run() de la classe projetControleur |
// |
$retour = ''; |
// création de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
// récupération de la liste des documents associés |
$liste_documents = document::getDocumentsRecents(4, $this->_db, PROJET_CHEMIN_FICHIER, |
PROJET_CHEMIN_ICONES, $this->_id_projet) ; |
// création de la vue liste de document, on nettoie l'url |
//$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_listeDocuments.class.php' ; |
include_once (PROJET_CHEMIN_CLASSES.'ezmlmAccessObject.class.php') ; |
$vue_liste_document = new HTML_listeDocuments($this->_url, false, '', $this->_auth) ; |
// réglage de paramètres de la vue |
$vue_liste_document->setAction (array ("couper" => PROJET_ACTION_COUPER, "modifier" => PROJET_ACTION_MODIFIER, "supprimer" => PROJET_SUPPRESSION_FICHIER)) ; |
$vue_liste_document->setCheminIcones(PROJET_CHEMIN_ICONES) ; |
// vérification des droits de l'utilisateur |
$entete_liste = array (PROJET_FICHIERS_NOM, PROJET_FICHIERS_TAILLE, PROJET_FICHIERS_PAR, PROJET_FICHIERS_CREE_LE) ; |
if ($this->_auth->getAuth()) { |
$droits = PROJET_DROIT_AUCUN; |
$participant = new participe($this->_db) ; |
$id_u = $this->_auth->getAuthData(PROJET_CHAMPS_ID) ; |
$isCoord = $participant->isCoordinateur($id_u, $this->_id_projet, $this->_db) ; |
$isParticipant = $participant->isContributeur($id_u, $this->_id_projet, $this->_db) ; |
if ($isParticipant) $droits = PROJET_DROIT_CONTRIBUTEUR; |
if ($isCoord) $droits = PROJET_DROIT_COORDINATEUR ; |
$isAdm = participe::isAdministrateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_db) ; |
if ($isAdm) $droits = PROJET_DROIT_ADMINISTRATEUR ; |
if ($isAdm) $isCoord = true ; |
$statut = participe::getStatutSurProjetCourant ($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_id_projet, $this->_db) ; |
// si participant, on ajoute le champs visibilite |
if ($statut !='' || $isAdm) { |
array_push ($entete_liste, PROJET_FICHIERS_VISIBILITE) ; |
$visible = true ; |
} else { |
$visible = false ; |
} |
// récupération de la liste des documents associés |
$liste_documents = document::getDocumentsRecents(4, $this->_db, PROJET_CHEMIN_FICHIER, |
PROJET_CHEMIN_ICONES, $this->_id_projet, $visible) ; |
// si chef de projet ou si propriétaire d'au moins 1 document |
$proprietaire_un_document = false ; |
foreach ($liste_documents as $document) { |
if ($this->_auth->getAuthData(PROJET_CHAMPS_ID) == $document->_id_proprietaire) { |
$proprietaire_un_document = true ; |
$droits = PROJET_DROIT_PROPRIETAIRE ; |
} |
} |
if ($droits <= PROJET_DROIT_COORDINATEUR || $proprietaire_un_document) { |
array_push ($entete_liste, PROJET_ACTION) ; |
} |
} else { |
$droits = PROJET_DROIT_AUCUN ; |
// récupération de la liste des documents associés |
$liste_documents = document::getDocumentsRecents(4, $this->_db, PROJET_CHEMIN_FICHIER, |
PROJET_CHEMIN_ICONES, $this->_id_projet, false) ; |
} |
if (!isset($droits)) $droits = PROJET_DROIT_AUCUN ; |
$vue_liste_document->construitEntete($entete_liste) ; |
$vue_liste_document->construitListe ($liste_documents, $droits, 'ignore_repertoire', $this->_db) ; |
$wiki_res = '' ; |
// Les wikinis associés au projet |
if ($projet->getWikini()) { |
$url = $GLOBALS['_GEN_commun']['url'] ; |
$this->_url->addQueryString ('act',PROJET_ACTION_VOIR_WIKINI); |
$link=$this->_url->getURL(); |
$wiki_res .= '<div><a href="'.$link.'">'.PROJET_ALLER_SUR_WIKINI.'</a> ('.$projet->getWikini().')' ; |
$wiki_res .= '</div>' ; |
} else { |
$wiki_res .= '<div>'.PROJET_WIKINI_PAS.'</div>'."\n" ; |
} |
// On charge les listes de discussion du projet |
// Pour le moment seul ezmlm est supportée |
$projet->getListesAssociees(); |
$sortie_liste = '' ; |
$liste_ext_res = '' ; |
if ($projet->avoirListe()) { |
ob_start() ; |
include_once PROJET_CHEMIN_CLASSES_LISTES.'ezmlm.php' ; |
foreach ($projet->_listes_associes as $info_liste) { |
$liste = new ezmlm_php() ; |
// Paramétrage de la liste |
$liste->listdir = PROJET_CHEMIN_LISTES.$info_liste->getDomaine().'/'.$info_liste->getNom(); |
$liste->listname = $info_liste->getNom() ; |
$liste->listdomain = $info_liste->getDomaine(); |
if (isset ($GLOBALS['action']) && $GLOBALS['action'] != '') { |
$liste->set_action($GLOBALS['action']) ; |
$liste->set_actionargs($GLOBALS['actionargs']) ; |
} else { |
$liste->set_action('list_info') ; |
} |
$liste->sendheaders = false; |
$liste->sendbody = false; |
$liste->sendfooters = false; |
$liste->forcehref = $this->_url->getURL() ; |
if ($info_liste->isPublic() || $droits <= PROJET_DROIT_CONTRIBUTEUR) { |
$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
switch ($liste->action) { |
case "list_info": |
$this->_url->addQueryString('act', PROJET_ACTION_VOIR_FORUM); |
$xml_parser = &new ezmlmAccessObject('calendrier_messages', $info_liste->getDomaine(), |
$info_liste->getNom(), $GLOBALS['lang'], |
$this->_url->getURL()) ; |
$xml_parser->reset() ; |
$xml_parser->setAction ('derniers_messages'); |
$xml_parser->load(); |
ob_start (); |
$xml_parser->parse() ; |
$derniers_messages = ob_get_contents() ; |
ob_end_clean(); |
echo $derniers_messages ; |
break; |
} |
} else { |
print PROJET_MESSAGE_LISTE_PRIVEE; |
} |
$sortie_liste = ob_get_contents() ; |
ob_end_clean() ; |
} |
} |
// Site internet associé |
$sortie_web = '<h2>'.PROJET_ESPACE_INTERNET.'</h2>'."\n" ; |
if ($projet->getEspaceInternet() != '') { |
$sortie_web .= '<a href="'.$projet->getEspaceInternet().'" target="_blank">'.$projet->getEspaceInternet().'</a>'."\n" ; |
} else { |
$sortie_web .= PROJET_PAS_DE_SITE ; |
} |
include_once PROJET_CHEMIN_CLASSES.'liste_externe.class.php' ; |
$listes_ext = new liste_externe ($this->_db) ; |
$tableau_liste = $listes_ext->getListesAssociees($this->_id_projet) ; |
if (count ($tableau_liste) != 0) { |
$liste_ext_res .= '<h2>'.PROJET_LISTES_ASSOCIEES.'</h2>'."\n" ; |
for ($i = 0; $i < count ($tableau_liste); $i++) { |
$info_liste = $listes_ext->getInfoListe($tableau_liste[$i]) ; |
//$liste_ext_res .= '<h2>'.$info_liste->AGO_A_NOMGRPLG.'</h2>'."\n" ; |
//$liste_ext_res .= '<p>'.$info_liste->AGO_A_RESUMLG.'</p>'."\n" ; |
$liste_ext_res .= '<p><a href="'.$info_liste->AGO_A_URLGRP.'" target="_blank">'.$info_liste->AGO_A_URLGRP.'</a></p>'."\n" ; |
//$liste_ext_res .= '<br />'."\n" ; |
} |
} |
$retour .= '<h1>'.PROJET_PROJET.' : '.$projet->getTitre()."</h1>" ; |
$retour .= '<h2>'.PROJET_RESUME.'</h2>'."\n" ; |
$retour .= '<div>'.$projet->getResume().'</div>'."\n" ; |
$retour .= '<h2>'.PROJET_WIKI_ASSOCIE.'</h2>' ; |
$retour .= $wiki_res ; |
$retour .= $sortie_web ; |
$retour .= '<h2>'.PROJET_DERNIERS_MESSAGES.'</h2>'."\n" ; |
$retour .= $liste_ext_res.$sortie_liste ; |
$retour .= '<h2>'.PROJET_FICHIERS_RECENTS.'</h2>'."\n" ; |
$retour .= $vue_liste_document->toHTML() ; |
//$retour .= '<h2>'.PROJET_LISTES_ASSOCIEES.'</h2>'."\n" ; |
//$retour .= $sortie_liste ; |
?> |
/branches/livraison_menes/actions/documents.php |
---|
New file |
0,0 → 1,117 |
<?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: documents.php,v 1.4.2.1 2007-04-11 12:19:09 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Action documents |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.4.2.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// RAPPEL IMPORTANT |
// On se situe dans la méthode run() de la classe projetControleur |
// |
$retour = ''; |
// création de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
// récupération de la liste des documents associés |
$liste_documents = $projet->getListesDocuments(PROJET_CHEMIN_FICHIER, PROJET_CHEMIN_ICONES) ; |
// création de la vue liste de document, on nettoie l'url |
//$this->_url->removeQueryString(PROJET_VARIABLE_ACTION) ; |
include_once PROJET_CHEMIN_CLASSES.'HTML_listeDocuments.class.php' ; |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, $this->_action) ; |
$vue_liste_document = new HTML_listeDocuments($this->_url, false, $this->_id_repertoire, $this->_auth) ; |
// réglage de paramètres de la vue |
$vue_liste_document->setAction (array ("couper" => PROJET_ACTION_COUPER, "modifier" => PROJET_ACTION_MODIFIER, "supprimer" => PROJET_SUPPRESSION_FICHIER)) ; |
$vue_liste_document->setCheminIcones(PROJET_CHEMIN_ICONES) ; |
$tableau_navigation = document::getCheminIdRepertoire($this->_id_repertoire, $this->_db) ; |
$vue_liste_document->setCheminNavigation ($tableau_navigation) ; |
// vérification des droits de l'utilisateur |
$entete_liste = array (PROJET_FICHIERS_NOM, PROJET_FICHIERS_TAILLE, PROJET_FICHIERS_PAR, PROJET_FICHIERS_CREE_LE) ; |
if ($this->_auth->getAuth()) { |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$participant = new participe($this->_db) ; |
$id_u = $this->_auth->getAuthData(PROJET_CHAMPS_ID) ; |
$isCoord = $participant->isCoordinateur($id_u, $this->_id_projet, $this->_db) ; |
if ($isCoord) $droits = PROJET_DROIT_COORDINATEUR ; |
$isAdm = participe::isAdministrateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_db) ; |
if ($isAdm) $droits = PROJET_DROIT_ADMINISTRATEUR ; |
if ($isAdm) $isCoord = true ; |
$isParticipant = $participant->isContributeur($id_u, $this->_id_projet, $this->_db); |
if ($isParticipant) $droits = PROJET_DROIT_CONTRIBUTEUR; |
$statut = participe::getStatutSurProjetCourant ($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_id_projet, $this->_db) ; |
// si participant, on ajoute le champs visibilite |
if ($statut !='' || $isAdm) { |
array_push ($entete_liste, PROJET_FICHIERS_VISIBILITE) ; |
} |
// si chef de projet ou si propriétaire d'au moins 1 document |
$proprietaire_un_document = false ; |
foreach ($liste_documents as $document) { |
if ($this->_auth->getAuthData(PROJET_CHAMPS_ID) == $document) { |
$proprietaire_un_document = true ; |
$droits = PROJET_DROIT_PROPRIETAIRE ; |
} |
} |
if ($statut > 0 || $proprietaire_un_document) { |
array_push ($entete_liste, PROJET_ACTION) ; |
} |
} else { |
$droits = PROJET_DROIT_AUCUN ; |
} |
if (!isset($droits)) $droits = PROJET_DROIT_AUCUN ; |
$vue_liste_document->construitEntete($entete_liste) ; |
$vue_liste_document->construitListe ($liste_documents, $droits, '', $this->_db) ; |
$retour .= '<h1>'.PROJET_PROJET.' : '.$projet->getTitre()."</h1>" ; |
$retour .= '<h2>'.PROJET_DOCUMENT_DU_PROJET.'</h2>'."\n" ; |
$retour .= $vue_liste_document->toHTML() ; |
?> |
/branches/livraison_menes/actions/participants.php |
---|
New file |
0,0 → 1,129 |
<?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: participants.php,v 1.5.4.1 2007-04-11 12:20:01 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Action participants |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.5.4.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// RAPPEL IMPORTANT |
// On se situe dans la méthode run() de la classe projetControleur |
// |
include_once PROJET_CHEMIN_CLASSES.'HTML_listeParticipants.class.php' ; |
$res = '' ; |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$retour .= '<h1>'.PROJET_PROJET.' : '.$projet->getTitre()."</h1>" ; |
$titre = '<h2>'.PROJET_LISTE_PARTICIPANT.'</h2>'."\n" ; |
$participants = new participe($this->_db) ; |
// On teste ici s'il y a une mise à jour de statut |
if (isset($_REQUEST['statut'])) { |
$participants->setStatut($_REQUEST['statut'], $_GET['id_utilisateur'], $this->_id_projet) ; |
$projet->getListesAssociees() ; |
if ($projet->avoirListe()) { |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
$annuaire = new annuaire($this->_db, array('identifiant' => PROJET_CHAMPS_ID, 'mail' => PROJET_CHAMPS_MAIL, 'table' => PROJET_ANNUAIRE)) ; |
$annuaire->setId($_GET['id_utilisateur']) ; |
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ; |
$desinscription= new inscription_liste($this->_db) ; |
$desinscription->desinscrireUtilisateur($annuaire, $projet->_listes_associes[0]) ; |
} |
} |
// Ce qui suit doit être amélioré pour sortir la requête sur l'annuaire |
// On teste s'il y a un ajout d'utilisateur voir HTML_listeParticipants |
if (isset($_POST['mail_utilisateur'])) { |
$requete = 'select '.PROJET_CHAMPS_ID.' from '.PROJET_ANNUAIRE.' where '.PROJET_CHAMPS_MAIL.'="'.$_POST['mail_utilisateur'].'"'; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError ($resultat)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ; |
} |
if (!$resultat->numRows()) { |
$msg = PROJET_MAIL_ABSENT; |
} else { |
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ; |
// Le statut 2 est le statut participant |
$participants->setStatut(2, $ligne[PROJET_CHAMPS_ID], $this->_id_projet) ; |
} |
} |
if ($this->_auth->getAuth()) { |
$statut = participe::getStatutSurProjetCourant($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_id_projet, $this->_db) ; |
if ($statut == 2) $droits = PROJET_DROIT_CONTRIBUTEUR ; |
if ($statut == 1) $droits = PROJET_DROIT_COORDINATEUR ; |
if ($statut == 4) $droits = PROJET_DROIT_AUCUN ; |
if (participe::isAdministrateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_db)) $droits = PROJET_DROIT_ADMINISTRATEUR ; |
$HTML_listeParticipants = new HTML_listeParticipants(true) ; |
if ($droits <= PROJET_DROIT_COORDINATEUR) $HTML_listeParticipants->setModeModification() ; |
// Mise en place de l'url |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_PARTICIPANT) ; |
$HTML_listeParticipants->setURL($this->_url) ; |
// Construction de l'entete |
$entete = array (PROJET_NOM, PROJET_PRENOM) ; |
array_push ($entete, PROJET_MAIL) ; |
$info_utilisateur = $participants->getInscrits($this->_id_projet, $droits) ; |
array_push ($entete, PROJET_DATE_INSCRIPTION, PROJET_STATUT) ; |
$HTML_listeParticipants->construitEntete($entete) ; |
include_once PROJET_CHEMIN_CLASSES.'statut.class.php' ; |
$HTML_listeParticipants->construitListe($info_utilisateur, statut::getTousLesStatuts(PROJET_STATUT_SAUF_ADM, $this->_db)) ; |
$res = $HTML_listeParticipants->toHTML() ; |
if ($droits <= PROJET_DROIT_COORDINATEUR || participe::isAdministrateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_db)) { |
$res .= PROJET_NOUVEAU_UTILISATEUR_LAIUS ; |
$res .= '<form action="'.$this->_url->getURL().'" method="post">'."\n" ; |
if (isset ($msg) && $msg != '') { |
$res .= '<div>'.$msg.'</div>' ; |
} |
$res .= '<input type="text" name="mail_utilisateur" size="32" />' ; |
$res .= '<input type="submit" value="'.PROJET_NOUVEAU_UTILISATEUR.'" />'."\n" ; |
$res .= '</form>'."\n" ; |
} |
} else { |
$res .= '<p>'.PROJET_TEXTE_PARTICIPANT_NON_IDENTIFIE.'</p>'."\n" ; |
} |
$retour .= $titre.$res ; |
?> |
/branches/livraison_menes/tmp/vide.txt |
---|
--- cartouche.php (revision 0) |
+++ cartouche.php (revision 196) |
@@ -0,0 +1,48 @@ |
+<? |
+//le cartouche |
+/* |
+* |
+* derniere modification par alexandre GRANIER le 10 decembre 2001 |
+* |
+* |
+* |
+*/ |
+$fichier_arbre="appli_arbre_date.php"; //c'est le lien du cartouche... |
+/* |
+$req_nb_forum_tela=mysql_query("select NB_MESSAGES,NB_ABONNES,NUM_SEM from $nom_table_tela order by NUM_SEM"); |
+ $nbrestela=mysql_num_rows($req_nb_forum_tela); |
+ $nb_forum_tela_mess =mysql_result($req_nb_forum_tela,($nbrestela-1),NB_MESSAGES); |
+ $nb_forum_tela_ab =mysql_result($req_nb_forum_tela,($nbrestela-1),NB_ABONNES); |
+*/ |
+ //$nb_total_mess=$nb_total_mess+$nb_forum_tela_mess; |
+ //$nb_total_abon=$nb_total_abon+$nb_forum_tela_ab; |
+ //AFFICHAGE DU CARTOUCHE |
+ |
+$res .= '<div>Agora Botanica</div>' ; |
+$GLOBALS['url']->removeQueryString ('forum') ; |
+$res .= '<div><form method="post" action="'.$GLOBALS['url']->getURL() ; |
+if (isset($thema)) { |
+ $res .= '&thema='.$thema ; |
+} |
+$res .= '">' ; |
+$res .= "<span> Nombre d'abonnés |
+ $nb_total_abon</span> <span>Nombre de messages $nb_total_mess Semaine </span> |
+ <select name=\"num_sem\">"; |
+//requete d'affichage des semaines dans le select |
+ $req_sem = mysql_query("select distinct(NUM_SEM) from agora_stats order by NUM_SEM desc"); |
+ $nb_req_sem = mysql_num_rows($req_sem); |
+ for($i=0;$i<$nb_req_sem-1;$i++) |
+ { |
+ $num = mysql_result($req_sem,$i,0); |
+ $res .= "<option value=\"$num\""; |
+ if ($num_sem == $num) $res .= ' selected="selected"'; |
+ $res .= ">$num</option>"; |
+ } |
+ |
+ $res .= '</select> |
+ <input type="submit" value="valider" /> |
+ </form></div> |
+ <div>Evolution de l\'arbre, choisissez la semaine à laquelle vous voulez voir l\'arbre</div>'; |
+mysql_free_result($req_sem); |
+ |
+?> |
\ No newline at end of file |
/branches/livraison_menes/images/arbre.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/arbre.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/feuille_droite.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/feuille_droite.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/fleche_droite.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/fleche_droite.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/puce.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/puce.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/feuille_gauche.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/feuille_gauche.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/haut.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/haut.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/racine.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/racine.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/fleche_gauche.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/fleche_gauche.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/barre_blanche.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/barre_blanche.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/feuille2.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/feuille2.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/branche_droite.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/branche_droite.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/branche_gauche.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/branche_gauche.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/feuille.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/feuille.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/tronc.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/tronc.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/valider.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/valider.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/images/vide.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/images/vide.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/appli_arbre old.php |
---|
New file |
0,0 → 1,137 |
<? |
//------------------------------------------------------------------------------ |
// FICHIER : $RCSfile: appli_arbre old.php,v $ |
// AUTEUR : $Author: ddelon $ |
// VERSION : $Revision: 1.1 $ |
// DATE : $Date: 2005-09-22 14:02:48 $ |
//------------------------------------------------------------------------------ |
//============================================================================== |
// FUNCTION putStyles ($STYLErow) |
// |
// Generation of private styles. |
//============================================================================== |
function putStyles ($STYLErow) { |
echo ".actuTexte {\n"; |
echo " font-family: $STYLErow->S_FONT_FAMILY;\n"; |
echo " font-size: 13;\n"; |
echo " font-style: normal;\n"; |
/* echo " font-weight: 400;\n"; */ |
// echo " text-align: left;\n"; |
echo " vertical-align: top;\n"; |
echo " color: $STYLErow->S_COLOR_TEXT;\n"; |
echo " background-color: $STYLErow->S_COLOR_3;\n"; |
echo "}\n"; |
} |
//============================================================================== |
// FUNCTION putFrame (...) |
// |
// Generation frame content. |
//============================================================================== |
function putFrame ($db, $link, |
$DOCrow, $PAGEresult, $CURRENTPAGErow, |
$innerTableWidth, $innerTableSpacing) { |
global $project; |
global $locale; |
global $set; |
global $G_mysqlDB; |
global $G_link; |
global $thema; //permet un passage de parametre |
$page_arg = $CURRENTPAGErow->P_ARGUMENT; |
if($page_arg != ""):$thema=$page_arg;endif; |
include ('php/frame/arbre/chemin.php3'); |
include ("$chemin_ago"); |
include ("$chemin_param"); |
include ('php/frame/arbre/fonctions.php3'); |
$pageNdx = $CURRENTPAGErow->P_ORDER; |
//ici commence mon arbre |
//SCRIPT DE DESSIN DE L'ARBRE Version 2: construction avec des tables |
//------------------------------------------------------------------- |
$xesvert="0";//$xesvert*2=espace verticcal entre 2 branches d'un même coté |
//Connexion a la base |
//mysql_connect ($dbhostname, $dbwho, $dbpass); |
//mysql_select_db ($dbnamedb); |
if($thema != ""): |
$nom_en_cl=mysql_query("select AGO_CAT_TITRE from AGORA_CATEG where AGO_CAT_APPEL LIKE \"%$thema%\"") or die("Theme non répertorié dans la base de donnée: -$thema-"); |
$thema_temp="and (THEMA LIKE \"%$thema%\")"; |
$nom_en_clair=mysql_result($nom_en_cl,0,"AGO_CAT_TITRE"); |
$blabla_thema="Theme de l'arbre: $nom_en_clair"; |
endif; |
//requete pour récupurer le nombre d'abonnes |
$resreq=mysql_query("select NB_ABONNES, NUM_SEM from $nom_table_tela order by NUM_SEM") |
or die("<font face=\"Arial, Helvetica, sans-serif\" size=2><B>Erreur lors de la requete qui récupère le nombre d'abonnes dans la table du forum principal</B></FONT></BODY></HTML>"); |
$nbresreq=mysql_num_rows($resreq); |
$nbresreq=$nbresreq-1;//le nombre actuel se trouve à la derniere ligne... |
$nb_ab_tela=mysql_result($resreq,$nbresreq,0); |
$req=mysql_query("select LIEN_BRANCHE, LIEN_FEUILLE,LIEN_PUCE from $nom_table_index where NOM_TABLE=\"$nom_table_tela\""); |
$tabtemp=mysql_fetch_array($req); |
$lientela_botanica=$tabtemp["LIEN_BRANCHE"]; |
$lientela_numero=$tabtemp["LIEN_FEUILLE"]; |
$lientela_feuille=$tabtemp["LIEN_FEUILLE"]; // $lientela_feuille=$tabtemp["LIEN_PUCE"] |
// $lientela_botanica=mysql_result($req,0,"LIEN_BRANCHE"); |
// $lientela_numero=mysql_result($req,0,"LIEN_FEUILLE"); |
// $lientela_feuille=mysql_result($req,0,"LIEN_PUCE"); |
$nb_total_mess=0;//pour le cartouche |
$nb_total_abon=0;//pour le cartouche |
$res = mysql_query("select LIEN_BRANCHE, LIEN_FEUILLE, COULEUR, NB_ADH, NB_MES, TAILLE_B, ALIAS, DATE_CREATION, LIEN_PUCE from $nom_table_index where ((VISIBLE=1) and (NOM_TABLE <> \"$nom_table_tela\") $thema_temp ) order by \"DATE_CREATION\" desc"); |
$nbtables_dessin = mysql_num_rows($res); |
//prerequis au moteur |
//->les requetes $res |
//->les variable $lientela_botanica $nb_ab_tela $nb_total_mess=0 $nb_total_abon=0 |
//->connexion à la base |
//inclusion du moteur |
include ('php/frame/arbre/moteur_dessin.php'); |
include ('php/frame/arbre/cartouche.php'); |
//purge des résultats de requetes |
mysql_free_result($resreq); |
mysql_free_result($res); |
//fermeture de la connexion |
//mysql_close(); |
//ici finit mon arbre... |
} |
//============================================================================== |
// FUNCTION putFooter () |
// |
// Generation of footer. |
//============================================================================== |
function putFooter () { |
echo ' '; |
} |
//-- End of source ------------------------------------------------------------ |
?> |
/branches/livraison_menes/moteur_dessin.php |
---|
New file |
0,0 → 1,273 |
<? |
//pre-requis à l'utilisation de ce moteur... |
// |
//->le requetes $res de type $res = mysql_query("select lien_branche, lien_feuille, couleur, nb_adh, nb_mes, taille_b, alias, date_creation, |
// lien_puce from $nom_table_index where ((VISIBLE=1) and (NOM_TABLE <> \"$nom_table_tela\") ) order by \"date_creation\" desc"); |
//->les variable $lientela_botanica $nb_ab_tela $nb_total_mess=0 $nb_total_abon=0 $nbtables_dessin $xres(qui DOIT etre pair) $nhi_xsommet |
//->connexion à la base effectuée |
// |
//javascript pour la gestion des popup |
//------------------------------------------------------------------------------ |
global $G_javascript; |
$G_javascript = $G_javascript." function MagicPopup (mURL) {"."\n"; |
$G_javascript = $G_javascript." var sArgs = 'toolbar=0'+"."\n"; |
$G_javascript = $G_javascript." ',hotkeys=0'+"."\n"; |
$G_javascript = $G_javascript." ',location=0'+"."\n"; |
$G_javascript = $G_javascript." ',directories=0'+"."\n"; |
$G_javascript = $G_javascript." ',menubar=0'+"."\n"; |
$G_javascript = $G_javascript." ',personalbar=0'+"."\n"; |
$G_javascript = $G_javascript." ',status=0'+"."\n"; |
$G_javascript = $G_javascript." ',scrollbars=1'+"."\n"; |
$G_javascript = $G_javascript." ',resizable=1'+"."\n"; |
$G_javascript = $G_javascript." ',width=780'+"."\n"; |
$G_javascript = $G_javascript." ',height=450';"."\n"; |
$G_javascript = $G_javascript."\n"; |
$G_javascript = $G_javascript." var wWindow = open (mURL, 'more', sArgs);"."\n"; |
$G_javascript = $G_javascript." wWindow.window.focus ();"."\n"; |
$G_javascript = $G_javascript." }"."\n"; |
$G_javascript = $G_javascript."\n"; |
//------------------------------------------------------------------------------ |
$temptotoblabla=round(($xres-$nhi_xsommet)/2);// oui, je suis en manque d'inspiration pour les noms de variables ;) |
//sérieusement, c'est le blanc devant la cime de l'arbre et la racine... |
echo(" |
<TR> |
<TD align=\"center\"><font size=2 face=\"Arial, Helvetica, sans-serif\"><a href=\"$lientela_botanica\"><B><i>Tela Botanica</B></a> <a target=\"_blank\" href=\"$lientela_numero\"><B>($nb_ab_tela)</i></B></a></font></TD> |
</TR> |
<TR> |
<TD align=\"center\"><TABLE width=\"$xres\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" summary=\"\"> |
<!-- Haut de l'arbre --> |
<TR> |
<TD><TABLE border=\"0\" cellspacing=\"0\" cellpadding=\"0\" summary=\"\"> |
<TR> |
<TD><IMG alt=\"\" width=\"$temptotoblabla\" height=\"1\" src=\"Local/arbre/vide.gif\"></TD> |
<TD width=\"$nhi_xsommet\" height=\"$nhi_ysommet\"><a href=\"$lientela_feuille\" target=\"_blank\"><IMG alt=\"\" width=\"$nhi_xsommet\" height=\"$nhi_ysommet\" border=\"0\" src=\"Local/arbre/haut.gif\"></a></TD> |
<TD> </TD> |
</TR> |
</TABLE> |
</TD> |
</TR> |
"); |
//echo("<!-- xres=$xres -->"); |
//echo("<!-- xfeuille=$xfeuille -->"); |
//echo("<!-- xtronc=$xtronc -->"); |
$xref_branche=calc_xref_branche($xres,$xfeuille,$xtronc); |
echo("<!-- xref_branche=$xref_branche -->"); |
$yinv=$ybranche-$yfeuille; //Hauteur de la case vide sous la feuille |
//le tableau des branches |
// |
//ici, la boucle |
//ajustement de la boucle: le nombre de tables doit être pair dans la boucle |
$la_limite_de_la_boucle = $nbtables_dessin; |
if(true != est_pair($la_limite_de_la_boucle)): //ajustement de la boucle |
{ |
$la_limite_de_la_boucle-=1; |
}endif; |
for($i=0;$i<$la_limite_de_la_boucle;$i+=2) |
{ |
//infos pour la branche droite |
$lien_branche=mysql_result($res,$i+1,"LIEN_BRANCHE"); |
$lien_feuille=mysql_result($res,$i+1,"LIEN_FEUILLE"); |
$couleur=mysql_result($res,$i+1,"COULEUR"); |
$coul_=couleur_f($couleur); |
$nb_ab=mysql_result($res,$i+1,"NB_ADH"); |
$tb=mysql_result($res,$i+1,"TAILLE_B"); |
$nm_table=mysql_result($res,$i+1,"ALIAS"); |
$lien_puce=mysql_result($res,$i+1,"LIEN_FEUILLE"); // LIEN_PUCE remplace par LIEN_FEUILLE, |
if ( $lien_puce != ""):{$le_lien_puce=" <a target=\"_blank\" href=\"$lien_puce\"><img src=\"Local/arbre/puce.gif\" width=\"$xpuce\" height=\"$ypuce\" border=\"0\"></a>";} |
endif; |
$xrel=$tb/100; |
$tbr=round($xrel*$xref_branche); |
if($tbr<$taille_mini):$tbr=$taille_mini+$tbr;endif; //taille mini de la branche |
//pour des parametress de javascript, le addslash provient de appli_dessin_date |
if($les_slashes==1):{ |
$lien_branche=stripslashes($lien_branche); |
$lien_feuille= stripslashes($lien_feuille); |
$lien_puce=stripslashes($lien_puce); |
}endif; |
// |
//infos pour le cartouche |
$nb_total_mess += mysql_result($res,$i+1,"NB_MES"); |
$nb_total_abon += $nb_ab; |
//infos pour la branche gauche |
$lien_branche2=mysql_result($res,$i,"LIEN_BRANCHE"); |
$lien_feuille2=mysql_result($res,$i,"LIEN_FEUILLE"); |
$couleur2=mysql_result($res,$i,"COULEUR"); |
$coul_2=couleur_f($couleur2); |
$nb_ab2=mysql_result($res,$i,"NB_ADH"); |
$tb2=mysql_result($res,$i,"TAILLE_B"); |
$nm_table2=mysql_result($res,$i,"ALIAS"); |
$lien_puce2=mysql_result($res,$i,"LIEN_FEUILLE"); // LIEN_PUCE remplace par LIEN_FEUILLE, le 2 decembre |
if ( $lien_puce2 != ""):{$le_lien_puce2=" <a target=\"_blank\" href=\"$lien_puce2\"><img src=\"Local/arbre/puce.gif\" width=\"$xpuce\" height=\"$ypuce\" border=\"0\"></a>";} |
endif; |
$xrel2=$tb2/(100); |
$tbr2=round($xrel2*$xref_branche); |
if($tbr2<$taille_mini):$tbr2=$taille_mini+$tbr2;endif; //taille mini de la branche |
//pour des parametress de javascript, le addslash provient de appli_dessin_date |
if($les_slashes==1):{ |
$lien_branche2=stripslashes($lien_branche2); |
$lien_feuille2=stripslashes($lien_feuille2); |
$lien_puce2=stripslashes($lien_puce2); |
}endif; |
// |
//infos pour le cartouche |
$nb_total_mess += mysql_result($res,$i,"NB_MES"); |
$nb_total_abon += $nb_ab2; |
//espace à gauche |
$espace_a_gauche=round((($xres-$xtronc)/2)-$tbr2-$xfeuille); |
//espace à droite |
$espace_a_droite=round($xres-$xtronc-$tbr-$tbr2-2*$xfeuille-$espace_a_gauche); |
echo(" |
<!-- Les noms des listes --> |
<TR> |
<TD> |
<TABLE border=\"0\" cellspacing=\"0\" cellpadding=\"0\" summary=\"\"> |
<TR> |
<TD colspan=\"3\" align=\"right\"><b><i><font size=2 face=\"Arial, Helvetica, sans-serif\"><a href=\"$lien_branche2\">$nm_table2</a>"); |
if($nb_ab2!=0):{echo" <a target=\"_blank\" href=\"$lien_feuille2\"><B>($nb_ab2)</B></a>";}endif;echo("</font></i></b> </TD> |
<!-- Le tronc --> |
<TD bgcolor=\"#663333\"><IMG alt=\"\" width=\"$xtronc\" height=\"20\" src=\"Local/arbre/vide.gif\"></TD> |
<TD colspan=\"3\" align=\"left\"> <b><i><font size=2 face=\"Arial, Helvetica, sans-serif\"><a href=\"$lien_branche\">$nm_table</a>"); |
if($nb_ab!=0):{echo" <a target=\"_blank\" href=\"$lien_feuille\"><B>($nb_ab)</B></a>";}endif;echo("</font></i></b></TD> |
</TR> |
<!-- Bloc de 2 branches --> |
<TR> |
<!-- Espace gauche --> |
<TD rowspan=\"2\"><IMG alt=\"\" width=\"$espace_a_gauche\" height=\"1\" src=\"Local/arbre/vide.gif\"></TD> |
<!-- Feuille gauche --> |
<TD class=\"chiffre\" align=\"center\" bgcolor=\"$coul_2\" width=\"$xfeuille\" height=\"$yfeuille\">"); |
if($lien_puce2!=""):{echo"<a target=\"_blank\" href=\"$lien_puce2\">";}endif;echo("<IMG alt=\"\" width=\"$xfeuille\" height=\"$yfeuille\" border=\"0\" src=\"Local/arbre/feuille_gauche.gif\">"); |
if($lien_puce2!=""):{echo"</a>";}endif;echo("</TD> |
<!-- Branche gauche: taille $tb2 % = $tbr2 pixels --> |
<TD rowspan=\"2\"><IMG alt=\"\" width=\"$tbr2\" height=\"$ybranche\" src=\"Local/arbre/branche_gauche.gif\"></TD> |
<!-- Le tronc --> |
<TD rowspan=\"2\" bgcolor=\"#663333\"><IMG alt=\"\" width=\"$xtronc\" src=\"Local/arbre/vide.gif\"></TD> |
<!-- Branche droite: taille $tb % = $tbr pixels --> |
<TD rowspan=\"2\"><IMG alt=\"\" width=\"$tbr\" height=\"$ybranche\" src=\"Local/arbre/branche_droite.gif\"></TD> |
<!-- Feuille droite --> |
<TD class=\"chiffre\" align=\"center\" bgcolor=\"$coul_\" width=\"$xfeuille\" height=\"$yfeuille\">"); |
if($lien_puce!=""):{echo"<a target=\"_blank\" href=\"$lien_puce\">";}endif;echo("<IMG alt=\"\" width=\"$xfeuille\" height=\"$yfeuille\" border=\"0\" src=\"Local/arbre/feuille_droite.gif\">"); |
if($lien_puce!=""):{echo"</a>";}endif;echo("</TD> |
<!-- Espace droit --> |
<!-- TD rowspan=\"2\"><IMG alt=\"\" width=\"100\" height=\"1\" src=\"Local/vide.gif\"></TD --> |
<TD rowspan=\"2\"><IMG alt=\"\" width=\"$espace_a_droite\" height=\"1\" src=\"Local/vide.gif\"></TD> |
</TR> |
<!-- Les cases vides sous les feuilles --> |
<TR> |
<TD height=\"$yinv\"><IMG alt=\"\" width=\"1\" height=\"$yinv\" src=\"Local/vide.gif\"></TD> |
<TD height=\"$yinv\"><IMG alt=\"\" width=\"1\" height=\"$yinv\" src=\"Local/vide.gif\"></TD> |
</TR> |
</TABLE> |
</TD> |
</TR> |
<!-- Fin du bloc de 2 branches --> |
"); |
} |
if(!est_pair($nbtables_dessin)): |
{ |
//infos pour la branche gauche |
$lien_branche2=mysql_result($res,$i,"LIEN_BRANCHE"); |
$lien_feuille2=mysql_result($res,$i,"LIEN_FEUILLE"); |
$couleur2=mysql_result($res,$i,"COULEUR"); |
$coul_2=couleur_f($couleur2); |
$nb_ab2=mysql_result($res,$i,"NB_ADH"); |
$tb2=mysql_result($res,$i,"TAILLE_B"); |
$nm_table2=mysql_result($res,$i,"ALIAS"); |
$lien_puce2=mysql_result($res,$i,"LIEN_FEUILLE"); // LIEN_PUCE remplace par LIEN_FEUILLE, |
if ( $lien_puce2 != ""):{$le_lien_puce2=" <a target=\"_blank\" href=\"$lien_puce2\"><img src=\"Local/arbre/puce.gif\" width=\"$xpuce\" height=\"$ypuce\" border=\"0\"></a>";} |
endif; |
$xrel2=$tb2/100.0; |
$tbr2=round($xrel2*$xref_branche); |
if($tbr2<$taille_mini):$tbr2=$taille_mini+$tbr2;endif; //taille mini de la branche |
//pour des parametress de javascript, le addslash provient de appli_dessin_date |
if($les_slashes==1):{ |
$lien_branche2=stripslashes($lien_branche2); |
$lien_feuille2=stripslashes($lien_feuille2); |
$lien_puce2=stripslashes($lien_puce2); |
}endif; |
// |
//infos pour le cartouche |
$nb_total_mess += mysql_result($res,$i,"NB_MES"); |
$nb_total_abon += $nb_ab2; |
//espace à gauche |
$espace_a_gauche=round((($xres-$xtronc)/2)-$tbr2-$xfeuille); |
echo(" |
<!-- Le nom de la liste --> |
<TR> |
<TD> |
<TABLE border=\"0\" cellspacing=\"0\" cellpadding=\"0\" summary=\"\"> |
<TR> |
<TD colspan=\"3\" align=\"right\"><b><i><font size=2 face=\"Arial, Helvetica, sans-serif\"><a href=\"$lien_branche2\">$nm_table2</a>"); |
if($nb_ab2!=0):{echo" <a target=\"_blank\" href=\"$lien_feuille2\"><B>($nb_ab2)</B></a>";}endif;echo("</font></i></b> </TD> |
<!-- Le tronc --> |
<TD bgcolor=\"#663333\"><IMG alt=\"\" width=\"$xtronc\" height=\"20\" src=\"Local/arbre/vide.gif\"></TD> |
<TD colspan=\"3\" rowspan=\"3\" align=\"left\"> </TD> |
</TR> |
<!-- Bloc de 1 branche --> |
<TR> |
<!-- Espace gauche --> |
<TD rowspan=\"2\"><IMG alt=\"\" width=\"$espace_a_gauche\" height=\"1\" src=\"Local/arbre/vide.gif\"></TD> |
<!-- Feuille gauche --> |
<TD class=\"chiffre\" align=\"center\" bgcolor=\"#33CC33\" width=\"$xfeuille\" height=\"$yfeuille\" >"); |
if($lien_puce2!=""):{echo"<a target=\"_blank\" href=\"$lien_puce2\">";}endif;echo("<IMG alt=\"\" width=\"$xfeuille\" height=\"$yfeuille\" border=\"0\" src=\"Local/arbre/feuille_gauche.gif\">"); |
if($lien_puce2!=""):{echo"</a>";}endif;echo("</TD> |
<!-- Branche gauche: taille $tb2 % = $tbr2 pixels --> |
<TD rowspan=\"2\"><IMG alt=\"\" width=\"$tbr2\" height=\"$ybranche\" src=\"Local/arbre/branche_gauche.gif\"></TD> |
<!-- Le tronc --> |
<TD rowspan=\"2\" bgcolor=\"#663333\"><IMG alt=\"\" width=\"$xtronc\" src=\"Local/arbre/vide.gif\"></TD> |
</TR> |
<!-- La case vide sous la feuille --> |
<TR> |
<TD height=\"$yinv\"><IMG alt=\"\" width=\"1\" height=\"$yinv\" src=\"Local/vide.gif\"></TD> |
</TR> |
</TABLE> |
</TD> |
</TR> |
"); |
} |
endif; |
echo("<!-- la racine --> |
<tr> |
<td><IMG alt=\"\" width=\"$temptotoblabla\" height=\"1\" border=\"0\" src=\"Local/arbre/vide.gif\"><img src=\"Local/arbre/racine.gif\" width=\"$xracine\" height=\"$yracine\" border=\"0\"> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
"); |
?> |
/branches/livraison_menes/forums.functions.php |
---|
New file |
0,0 → 1,121 |
<? |
/* Fonctions locales de AGORA */ |
/* |
array get_image(&$tableau) |
réupère les infos d'une image d'identifant $id ou |
choisi au hasard l'une des entrées dans un tableau |
(liste de nom de fichiers) si $id vaut NULL |
retourne un tableau : |
$tableau['id'] id de l'image |
$tableau['image'] nom de l'image |
$tableau['alt'] infos de l'image |
*/ |
function get_image(&$left_image) |
{ |
global $tbl; |
if ($left_image['id'] == "") $add_query = "AGO_I_ALLOW = 1"; |
else $add_query = "AGO_I_ID = ".$left_image['id']; |
$query = "select * from agora_image where $add_query"; |
$result = mysql_query($query) or die("<B>Erreur de requête de récupération des images AGORA...</B> $query"); |
$nbquery = mysql_num_rows($result); |
if ($nbquery > 1) |
{ |
$i = 0; |
while ($row = mysql_fetch_object($result)) |
{ |
$tmp_id = $row->AGO_I_ID; |
$tmp_img = $row->AGO_I_IMAGE; |
if (($tmp_id != "")&&($tmp_img != "")) |
{ |
$tableau[$i]['id'] = $tmp_id; |
$tableau[$i]['image'] = $tmp_img; |
$tableau[$i]['alt'] = $row->AGO_I_ALT; |
} |
$i++; |
} |
$tmp_nb = count($tableau); |
mt_srand((float) microtime()*1000000); |
$aleatoire = mt_rand(1,$tmp_nb); |
$left_image['id'] = $tableau[$aleatoire-1]['id']; |
$left_image['image'] = $tableau[$aleatoire-1]['image']; |
$left_image['alt'] = $tableau[$aleatoire-1]['alt']; |
} |
else if ($nbquery == 1) |
{ |
$row = mysql_fetch_object($result); |
$left_image['id'] = $row->AGO_I_ID; |
$left_image['image'] = $row->AGO_I_IMAGE; |
$left_image['alt'] = $row->AGO_I_ALT; |
} |
else |
{ |
die ("Arrêt du programme causé par la fonction get_image() de AGORA... NbQuery a une valeur incohérente."); |
} |
if ($left_image['alt'] == "") $left_image['alt'] = $left_image['image']; |
mysql_free_result($result); |
} |
function afficheBouton ($alignTable, $leLibele1, $laCmd1) |
{ |
$StyleFond = ""; |
$StyleActif = "tabActive"; |
$StyleTxtInnactif = "tabInactiveAnchor"; |
$StyleInnactif = "tabInactive"; |
$ret = ""; |
$ret .= "\n<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" align=\"$alignTable\"><tr>\n"; |
$ret .= '<td align="left" valign="bottom" class="tabInactive" colspan="5"><img src="'.PROJET_CHEMIN_IMAGE.'vide.gif" width="1" height="1" border="0" alt="" /></td>'."\n"; |
$ret .= "</tr><tr>\n"; |
$ret .= "<td align=\"left\" valign=\"bottom\" class=\"tabInactive\"><img src=\"".PROJET_CHEMIN_IMAGE."vide.gif\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" /></td>\n"; |
if ($laCmd1 != "NULL") |
{ |
$ret .= "<td align=\"left\" valign=\"bottom\" class=\"$StyleActif\"><img src=\"".PROJET_CHEMIN_IMAGE."vide.gif\" width=\"5\" height=\"1\" border=\"0\" alt=\"\" /></td>\n"; |
$ret .= "<td align=\"left\" valign=\"bottom\" class=\"$StyleActif\"><a href=\"$laCmd1\" class=\"anchor\">$leLibele1</a></td>\n"; |
$ret .= "<td align=\"left\" valign=\"bottom\" class=\"$StyleActif\"><img src=\"".PROJET_CHEMIN_IMAGE."vide.gif\" width=\"5\" height=\"1\" border=\"0\" alt=\"\" /></td>\n"; |
} |
else |
{ |
$ret .= "<td align=\"left\" valign=\"bottom\" class=\"$StyleInnactif\"><img src=\"".PROJET_CHEMIN_IMAGE."vide.gif\" width=\"5\" height=\"1\" border=\"0\" alt=\"\" /></td>\n"; |
$ret .= "<td align=\"left\" valign=\"bottom\" class=\"$StyleInnactif\"><span class=\"$StyleTxtInnactif\">$leLibele1</span></td>\n"; |
$ret .= "<td align=\"left\" valign=\"bottom\" class=\"$StyleInnactif\"><img src=\"".PROJET_CHEMIN_IMAGE."vide.gif\" width=\"5\" height=\"1\" border=\"0\" alt=\"\" /></td>\n"; |
} |
$ret .= "<td align=\"left\" valign=\"bottom\" class=\"tabInactive\"><img src=\"".PROJET_CHEMIN_IMAGE."vide.gif\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" /></td>\n"; |
$ret .= "</tr><tr>\n"; |
$ret .= "<td align=\"left\" valign=\"bottom\" class=\"tabInactive\" colspan=\"5\"><img src=\"".PROJET_CHEMIN_IMAGE."vide.gif\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" /></td>\n"; |
$ret .= "</tr></table>\n\n"; |
return $ret; |
} |
?> |
/branches/livraison_menes/param.php3 |
---|
New file |
0,0 → 1,24 |
<? |
/* table index générale */ |
$nom_table_index="AGORA"; |
/* table contenant les statistiques du forum general */ |
$nom_table_tela="AGO_TELA_BOTANICAE"; |
/* Légendes du cartouches */ |
$nom_graph="Agora Botanica"; //titre du graphique |
$phrase_cartouche="<B>L'Arbre des Forums de Tela Botanica</B>"; //texte du cartouche |
$texte_lien_branche="Vers la fiche d'information du Forum"; |
$texte_lien_feuille="Vers la page web du forum ou le moteur de recherche"; |
$texte_lien_puce="Vers la Liste des abonnés du Forum"; |
/* Table où sont les données de Thèmes */ |
$tbl_forums_cat = "AGORA_CATEG"; |
?> |
/branches/livraison_menes/documentation/projet_v0.24.sql |
---|
New file |
0,0 → 1,179 |
INSERT INTO `gen_application` ( `gap_id_application` , `gap_nom` , `gap_description` , `gap_chemin` , `gap_bool_applette` ) |
VALUES ( |
'18', 'Projets', 'Application de gestion de projets', 'client/projet/projet.php', '0' |
); |
CREATE TABLE `projet` ( |
`p_id` int(10) unsigned NOT NULL default '0', |
`p_titre` varchar(255) NOT NULL default '', |
`p_resume` varchar(255) NOT NULL default '', |
`p_description` text, |
`p_espace_internet` varchar(255) default NULL, |
`p_wikini` varchar(255) NOT NULL default '', |
`p_date_creation` date NOT NULL default '0000-00-00', |
`p_nom_repertoire` varchar(255) NOT NULL default '', |
`p_type` smallint(5) unsigned NOT NULL default '0', |
`p_modere` tinyint(3) unsigned NOT NULL default '0', |
PRIMARY KEY (`p_id`) |
); |
CREATE TABLE `projet_documents` ( |
`pd_id` int(10) unsigned NOT NULL default '0', |
`pd_ce_projet` int(10) unsigned NOT NULL default '0', |
`pd_ce_utilisateur` int(11) default '0', |
`pd_ce_type` int(11) NOT NULL default '0', |
`pd_nom` varchar(255) default NULL, |
`pd_lien` varchar(255) default NULL, |
`pd_pere` int(10) unsigned NOT NULL default '0', |
`pd_permissions` smallint(5) unsigned default NULL, |
`pd_date_de_mise_a_jour` date default NULL, |
`pd_description` text, |
`pd_visibilite` varchar(64) NOT NULL default '', |
PRIMARY KEY (`pd_id`) |
); |
CREATE TABLE `projet_evenement` ( |
`pe_id` int(10) unsigned NOT NULL auto_increment, |
`pe_ce_utilisateur` int(11) NOT NULL default '0', |
`pe_ce_projet` int(10) unsigned NOT NULL default '0', |
`pe_date_debut` date default NULL, |
`pe_titre` varchar(255) default NULL, |
`pe_description` text, |
`pe_date_fin` date default NULL, |
PRIMARY KEY (`pe_id`) |
); |
CREATE TABLE `projet_hierarchie` ( |
`ph_id_projet_pere` int(10) unsigned NOT NULL default '0', |
`ph_id_projet_fils` int(10) unsigned NOT NULL default '0', |
PRIMARY KEY (`ph_id_projet_pere`,`ph_id_projet_fils`) |
); |
CREATE TABLE `projet_inscription_liste` ( |
`pil_id_liste` int(10) unsigned NOT NULL default '0', |
`pil_id_utilisateur` int(10) unsigned NOT NULL default '0', |
`pil_id_statut` tinyint(3) unsigned NOT NULL default '0', |
PRIMARY KEY (`pil_id_liste`,`pil_id_utilisateur`) |
); |
CREATE TABLE `projet_lien_liste` ( |
`pl_id_liste` int(10) unsigned NOT NULL default '0', |
`pl_id_projet` int(10) unsigned NOT NULL default '0' |
); |
CREATE TABLE `projet_lien_liste_externe` ( |
`plle_id_projet` int(10) unsigned NOT NULL default '0', |
`plle_id_liste` int(10) unsigned NOT NULL default '0', |
PRIMARY KEY (`plle_id_projet`,`plle_id_liste`) |
); |
CREATE TABLE `projet_liste` ( |
`pl_id_liste` int(10) unsigned NOT NULL auto_increment, |
`pl_nom_liste` varchar(255) NOT NULL default '', |
`pl_domaine` varchar(255) NOT NULL default '', |
`pl_adresse_liste` varchar(255) default NULL, |
`pl_adresse_inscription` varchar(255) default NULL, |
`pl_adresse_desinscription` varchar(255) default NULL, |
`pl_adresse_aide` varchar(255) default NULL, |
`pl_visibilite` tinyint(3) unsigned NOT NULL default '0', |
PRIMARY KEY (`pl_id_liste`) |
); |
CREATE TABLE `projet_liste_statut` ( |
`pls_id_statut` tinyint(3) unsigned NOT NULL default '0', |
`pls_statut_nom` varchar(255) NOT NULL default '', |
PRIMARY KEY (`pls_id_statut`) |
); |
INSERT INTO `projet_liste_statut` VALUES (0, 'Pas d''email'); |
INSERT INTO `projet_liste_statut` VALUES (2, 'Email'); |
CREATE TABLE `projet_statut` ( |
`ps_id_statut` int(10) unsigned NOT NULL default '0', |
`ps_statut_nom` varchar(255) NOT NULL default '', |
PRIMARY KEY (`ps_id_statut`) |
); |
INSERT INTO `projet_statut` VALUES (0, 'Administrateur'); |
INSERT INTO `projet_statut` VALUES (1, 'Coordonateur'); |
INSERT INTO `projet_statut` VALUES (2, 'Participant'); |
CREATE TABLE `projet_statut_utilisateurs` ( |
`psu_id_statut` int(10) unsigned NOT NULL default '0', |
`psu_id_utilisateur` int(11) NOT NULL default '0', |
`psu_id_projet` int(10) unsigned NOT NULL default '0', |
`psu_date_inscription` date default '0000-00-00', |
PRIMARY KEY (`psu_id_statut`,`psu_id_utilisateur`,`psu_id_projet`) |
); |
-- La table projet_statut_utilisateurs possède une entré avec psu_id_projet = 0 |
-- pour indiquer un administrateur |
INSERT INTO `projet_statut_utilisateurs` ( `psu_id_statut` , `psu_id_utilisateur` , `psu_id_projet` , `psu_date_inscription` ) |
VALUES ( |
'0', '1', '0', '0000-00-00' |
); |
CREATE TABLE `gen_type_de_fichier` ( |
`gtf_id_type` int(11) NOT NULL default '0', |
`gtf_nom` varchar(255) NOT NULL default '', |
`gtf_extension` varchar(255) NOT NULL default '', |
`gtf_type_icone` varchar(255) NOT NULL default 'default.gif', |
`gtf_type_mime` varchar(255) NOT NULL default '', |
`gtf_description` varchar(255) default NULL, |
PRIMARY KEY (`gtf_id_type`) |
) ; |
-- |
-- Contenu de la table `gen_type_de_fichier` |
-- |
INSERT INTO `gen_type_de_fichier` VALUES (1, 'Fichier Document', 'doc', 'docdoc.gif', 'application/msword', ''); |
INSERT INTO `gen_type_de_fichier` VALUES (2, 'Fichier Texte', 'txt', 'doctxt.gif', 'text/plain', ''); |
INSERT INTO `gen_type_de_fichier` VALUES (3, 'Fichier Texte Enrichi', 'rtf', 'docdoc.gif', 'text/rtf', ''); |
INSERT INTO `gen_type_de_fichier` VALUES (4, 'Fichier Compressé', 'zip', 'doczip.gif', 'application/zip', ''); |
INSERT INTO `gen_type_de_fichier` VALUES (5, 'Document PDF', 'pdf', 'pdf.gif', 'application/pdf', ''); |
INSERT INTO `gen_type_de_fichier` VALUES (6, 'Page Web', 'htm', 'web.gif', 'text/html', 'htm, html'); |
INSERT INTO `gen_type_de_fichier` VALUES (7, 'Feuille de Calcul Excel', 'xls', 'docxls.gif', 'application/vnd.ms-excel', ''); |
INSERT INTO `gen_type_de_fichier` VALUES (8, 'Présentation Power Point', 'ppt', 'docppt.gif', 'application/vnd.ms-powerpoint', ''); |
INSERT INTO `gen_type_de_fichier` VALUES (9, 'Image JPG', 'jpg', 'docimg.gif', 'image/jpg', 'jpg, jpeg'); |
INSERT INTO `gen_type_de_fichier` VALUES (10, 'Image GIF', 'gif', 'docimg.gif', 'image/gif', ''); |
INSERT INTO `gen_type_de_fichier` VALUES (11, 'Image PNG', 'png', 'docimg.gif', 'image/png', ''); |
INSERT INTO `gen_type_de_fichier` VALUES (12, 'Inconnu', '', 'default.gif', '', ''); |
INSERT INTO `gen_type_de_fichier` VALUES (13, 'Fichier PHP', 'php', 'php.gif', '', ''); |
INSERT INTO `gen_type_de_fichier` VALUES (14, 'Fichier Photoshop', 'psd', 'docpsd.gif', 'image/psd', 'psd'); |
INSERT INTO `gen_type_de_fichier` VALUES (15, 'Présentation OpenOffice Impress', 'sxi', 'docppt.gif', 'application/vnd.sun.xml.impress', 'sxi'); |
INSERT INTO `gen_type_de_fichier` VALUES (16, 'Image JPG', 'jpg', 'docimg.gif', 'image/jpeg', 'jpg, jpeg'); |
INSERT INTO `gen_type_de_fichier` VALUES (17, 'Image JPG', 'jpg', 'docimg.gif', 'image/pjpeg', 'jpg, jpeg'); |
CREATE TABLE `projet_type` ( |
`pt_id_type` tinyint(3) unsigned NOT NULL default '0', |
`pt_label_type` varchar(255) NOT NULL default '', |
PRIMARY KEY (`pt_id_type`) |
) ; |
CREATE TABLE `projet_template` ( |
`pt_id_template` smallint(5) unsigned NOT NULL default '0', |
`pt_i18n` varchar(5) NOT NULL default '', |
`pt_template` text NOT NULL, |
PRIMARY KEY (`pt_id_template`) |
); |
# |
# Contenu de la table `projet_template` |
# |
INSERT INTO `projet_template` VALUES (1, 'fr-FR', 'L\'utilisateur {nom} {prenom} souhaite être inscrit au projet {nom_projet} dont vous êtes modérateur.\r\nCliquez sur le lien suivant pour modérer son inscription.\r\n{lien}\r\n'); |
# Mise a jour performance |
ALTER TABLE `projet` ADD `p_avoir_document` TINYINT UNSIGNED DEFAULT '0' NOT NULL ; |
/branches/livraison_menes/documentation/installation.txt |
---|
New file |
0,0 → 1,33 |
Installation du module projet. |
1. Uploader tous les fichiers de client/projet vers le serveur distant |
2. Editer configuration/projet.config.inc.php, mettre des valeurs adéquates |
3. Effectuer les requetes du fichier documentation/projet.sql |
4. Ajouter un administrateur dans la table projet_statut_utilisateurs avec comme |
statut 0 |
5. Déployer l'application dans un menu de papyrus, mettre en argument presentation=arbre |
afin de pouvoir créer un premier projet |
6. S'identifier avec le compte administrateur |
7. Aller sur l'appli projet et créer le premier projet |
8. éventuellement enlever le paramètre presentation |
## Les paramètres |
presentation=(arbre,liste) Note lorsqu'on choisit liste, les menus apparaissent par défaut |
c'est une liste qui apparait mais sans les menus (cad seulement un point d'accès aux projets |
exclure=(un nombre) n'affichera pas le projet dont le numéro est indiqué, |
sert à créer des projets qui n'apparaissent pas mais sont accessible via une url |
on peut indiquer plusieur numéro en les séparant par des virgules |
projet_type=(un_type) permet de filtrer les projets selon leur type |
seulement_forum=(nombre) n'affiche que le projet nombre et uniquement la page forum |
utilise lorsqu'on veut un simple forum |
seulement=(identifiant projet) n'affichera qu'un seul projet |
prive=(0/1) si nombre = 1 alors les utilisateurs ne peuvent pas s'inscrire seul, |
il faut l'intervention du coordonateur ou plus. |
telechargement=1 Affiche un porte-document juste pour télécharger les fichier, à utiliser conjointement |
avec "seulement" |
## NOTE |
dans la présentation par arbre, il faut veiller à avoir une cime, cad un projet qui n'a pas de père |
Installation de la synchronisation |
/branches/livraison_menes/cartouche_arbre_date.php |
---|
New file |
0,0 → 1,81 |
<? |
//le cartouche |
$fichier_arbre="appli_arbre_date.php"; //c'est le lien du cartouche... |
$req_nb_forum_tela=mysql_query("select NB_MESSAGES,NB_ABONNES,NUM_SEM from $nom_table_tela order by NUM_SEM"); |
$nbrestela=mysql_num_rows($req_nb_forum_tela); |
$nb_forum_tela_mess =mysql_result($req_nb_forum_tela,($nbrestela-1),NB_MESSAGES); |
$nb_forum_tela_ab =mysql_result($req_nb_forum_tela,($nbrestela-1),NB_ABONNES); |
//$nb_forum_tela_ab=0; |
//$nb_forum_tela_mess=0; |
$nb_total_mess=$nb_total_mess+$nb_forum_tela_mess; |
$nb_total_abon=$nb_total_abon+$nb_forum_tela_ab; |
//AFFICHAGE DU CARTOUCHE |
echo" |
<tr> |
<td align=\"center\" class=\"actuTexte\" colspan=\"2\"><font size=\"3\" color=\"Maroon\">Agora Botanica</font></td> |
</tr> |
<tr><td> </td></tr> |
<tr> |
<td> |
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"600\" bgcolor=\"#FFFFFF\"> |
<tr bgcolor=\"#FFFFFF\"> |
<td colspan=\"2\"> |
<form method=\"POST\" action= |
\"document.php?project=$project&locale=&doc=".$DOCrow->D_NAME."&set=$set&page=$pageNdx&thema=$thema&fichier_arbre=".$fichier_arbre."\"> |
<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpading=\"0\" bordercolor=\"#000000\"> |
<tr> |
<td width=\"100%\" class=\"actuTexte\" valign=\"middle\" align=\"center\"><b> nombre d'abonnés </b> |
$nb_total_abon <b>nombre de messages </b>$nb_total_mess |
Semaine |
<select name=\"num_sem\"><option selected value=\"2\">num"; |
//requete d'affichage des semaines dans le select |
$req_sem = mysql_query("select NUM_SEM from $nom_table_tela order by NUM_SEM desc"); |
$nb_req_sem = mysql_num_rows($req_sem); |
for($i=0;$i<$nb_req_sem-1;$i++) |
{ |
$num = mysql_result($req_sem,$i,0); |
echo"<option value=\"$num\""; |
if ($num_sem == $num) echo " selected"; |
echo ">$num"; |
} |
echo" |
</option> |
</select> |
<input type=image src=Local/arbre/valider.gif> |
</td> |
</tr> |
</table> |
</form> |
</td> |
</tr> |
<tr bgcolor=\"#FFFFFF\"> |
<td> </td> |
<td align=\"right\"><font color=\"#000000\" size=\"-1\">Evolution |
de l'arbre, choisissez la semaine à laquelle vous voulez voir l'arbre</font></td> |
</tr> |
</table> |
</td> |
</tr> |
<tr><td> </td></tr> |
<tr><td align=\"center\"><a href=\"http://v2.tela-botanica.org/document.php?project=tela&locale=fr&doc=aide&page=0\"><font color=\"Maroon\">Légende de l'arbre</font></a></td></tr> |
"; |
mysql_free_result($req_nb_forum_tela); |
mysql_free_result($req_sem); |
?> |
/branches/livraison_menes/chemin.php3 |
---|
New file |
0,0 → 1,4 |
<? |
$chemin_ago="php/frame/arbre/ago_connection.php3"; //chemin d'accès relatif complet vers le fichier ago_connection.php3 |
$chemin_param="php/frame/arbre/param.php3"; //chemin d'accès relatif complet vers le fichier param.php3 |
?> |
/branches/livraison_menes/bibliotheque/images/logo_tb_pr_wikini.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/bibliotheque/images/logo_tb_pr_wikini.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/bibliotheque/images/tela.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/bibliotheque/images/tela.jpg |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/bibliotheque/images/tela.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/bibliotheque/images/tela.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/bibliotheque/projet.fonct.rss.php |
---|
New file |
0,0 → 1,105 |
<?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 Lesser 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 | |
// | Lesser General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU Lesser 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: projet.fonct.rss.php,v 1.1 2005-10-25 13:50:54 alexandre_tb Exp $ |
/** |
* Générateur de flux RSS à partir de l'application projet |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
* |
*@copyright Tela-Botanica 2000-2004 |
*@version $$ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// | CORPS DU PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
/** gen_RSS() - générer un fichier de flux RSS par type liste |
* |
* @param string Le type de l'annonce (laisser vide pour tout type d'annonce) |
* @param integer Le nombre d'annonces a regrouper dans le fichier XML (laisser vide pour toutes) |
* @param integer L'identifiant de l'emetteur (laisser vide pour tous) |
* @param integer L'état de validation de l'annonce (laisser 1 pour les annonces validées, 0 pour les non-validées) |
* @param string La requête SQL personnalisée |
* |
* @return string Le code du flux RSS |
*/ |
function gen_RSS($domaine='', $nbitem='', $liste='') { |
// En-tête du flux RSS version 2.0 |
$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n".'<rss version="2.0">'."\n"; |
$xml .= '<channel>'."\n".'<title>'.$nomflux.'</title>'."\n".'<link>'.BAZ_RSS_ADRESSESITE.'</link>'."\n"; |
$xml .= '<description>'.BAZ_RSS_DESCRIPTIONSITE.'</description>'."\n".'<language>fr-FR</language>'."\n". |
'<copyright>Copyright 2005 '.BAZ_RSS_NOMSITE.'</copyright>'."\n"; |
// Ajout de la date actuelle de publication (suivant la DTD RSS) |
$xml .= '<lastBuildDate>'.strftime('%d %b %Y %H:%M:%S GMT').'</lastBuildDate>'."\n"; |
// En-tête suite et fin |
$xml .= '<docs>http://www.stervinou.com/projets/rss/</docs>'."\n".'<category>'.BAZ_RSS_CATEGORIE.'</category>'."\n". |
'<managingEditor>'.BAZ_RSS_MANAGINGEDITOR.'</managingEditor>'."\n".'<webMaster>'.BAZ_RSS_WEBMASTER.'</webMaster>'."\n"; |
$xml .= '<ttl>60</ttl>'."\n".'<image>'."\n".'<title>'.BAZ_RSS_NOMSITE.'</title>'."\n".'<url>'.BAZ_RSS_LOGOSITE.'</url>'."\n". |
'<link>'.BAZ_RSS_ADRESSESITE.'</link>'."\n".'</image>'."\n"; |
if ($resultat->numRows()>0) { |
// Creation des items : titre + lien + description + date de publication |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$xml .= '<item>'."\n"; |
$xml .= '<title>'.$ligne['bf_titre'].'</title>'."\n"; |
$lien=$GLOBALS['_BAZAR_']['url']; |
$lien->addQueryString('action', BAZ_VOIR_FICHE); |
$lien->addQueryString('id_fiche', $ligne['bf_id_fiche']); |
$xml .= '<link>'.str_replace ('&', '&', $lien->getURL()).'</link>'."\n"; |
$xml .= '<description>'."\n".'<![CDATA['.baz_voir_fiche(0,$ligne['bf_id_fiche']).']]>'."\n".'</description>'."\n"; |
$xml .= '<pubDate>'.strftime('%d %b %Y %H:%M:%S GMT',strtotime($ligne['bf_date_debut_validite_fiche'])).'</pubDate>'."\n"; |
$xml .= '</item>'."\n"; |
} |
} |
else {//pas d'annonces |
$xml .= '<item>'."\n"; |
$xml .= '<title>'.BAZ_PAS_D_ANNONCES.'</title>'."\n"; |
$xml .= '<link></link>'."\n"; |
$xml .= '<description>'.BAZ_PAS_D_ANNONCES.'</description>'."\n"; |
$xml .= '<pubDate>'.strftime('%d %b %Y %H:%M:%S GMT',strtotime('12/12/2004')).'</pubDate>'."\n"; |
$xml .= '</item>'."\n"; |
} |
$xml .= '</channel>'."\n".'</rss>'."\n"; |
return $xml; |
} |
/** baz_liste() Formate la liste de toutes les annonces actuelles |
* |
* @return string le code HTML à afficher |
*/ |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_menes/appli_arbre_req.php |
---|
New file |
0,0 → 1,124 |
<? |
//------------------------------------------------------------------------------ |
// FICHIER : $RCSfile: appli_arbre_req.php,v $ |
// AUTEUR : $Author: ddelon $ |
// VERSION : $Revision: 1.1 $ |
// DATE : $Date: 2005-09-22 14:02:48 $ |
//------------------------------------------------------------------------------ |
//============================================================================== |
// FUNCTION putStyles ($STYLErow) |
// |
// Generation of private styles. |
//============================================================================== |
function putStyles ($STYLErow) { |
echo ".actuTexte {\n"; |
echo " font-family: $STYLErow->S_FONT_FAMILY;\n"; |
echo " font-size: $STYLErow->S_FONT_SIZE_SMALL;\n"; |
echo " font-style: normal;\n"; |
/* echo " font-weight: 400;\n"; */ |
//echo " text-align: left;\n"; |
echo " vertical-align: top;\n"; |
echo " color: $STYLErow->S_COLOR_TEXT;\n"; |
echo " background-color: $STYLErow->S_COLOR_3;\n"; |
echo "}\n"; |
} |
//============================================================================== |
// FUNCTION putFrame (...) |
// |
// Generation frame content. |
//============================================================================== |
function putFrame ($db, $link, |
$DOCrow, $PAGEresult, $CURRENTPAGErow, |
$innerTableWidth, $innerTableSpacing) { |
global $project; |
global $locale; |
global $set; |
global $G_mysqlDB; |
global $G_link; |
global $requete;// contient la clause du where de la requete, sans le WHERE et précédé de and |
global $fichier_cartouche; |
include ('php/frame/arbre/chemin.php3'); |
include ("$chemin_ago"); |
include ("$chemin_param"); |
include ('php/frame/arbre/fonctions.php3'); |
$pageNdx = $CURRENTPAGErow->P_ORDER; |
//ici commence mon arbre |
//SCRIPT DE DESSIN DE L'ARBRE Version 2: construction avec des tables |
//------------------------------------------------------------------- |
$xesvert="0";//$xesvert*2=espace verticcal entre 2 branches d'un même coté |
//Connexion a la base |
mysql_connect ($dbhostname, $dbwho, $dbpass); |
mysql_select_db ($dbnamedb); |
//requete pour récupurer le nombre d'abonnes |
$resreq=mysql_query("select nb_abonnes, num_sem from $nom_table_tela order by num_sem") |
or die("<font face=\"Arial, Helvetica, sans-serif\" size=2><B>Erreur lors de la requete qui récupère le nombre d'abonnes dans la table du forum principal</B></FONT></BODY></HTML>"); |
$nbresreq=mysql_num_rows($resreq); |
$nbresreq=$nbresreq-1;//le nombre actuel se trouve à la derniere ligne... |
$nb_ab_tela=mysql_result($resreq,$nbresreq,0); |
$req=mysql_query("select lien_branche from $nom_table_index where nom_table='$nom_table_tela'"); |
$lientela_botanica=mysql_result($req,0,0); |
$nb_total_mess=0;//pour le cartouche |
$nb_total_abon=0;//pour le cartouche |
$res = mysql_query("select lien_branche, lien_feuille, couleur, nb_adh, nb_mes, taille_b, alias, date_creation, lien_puce from $nom_table_index where ((VISIBLE=1) and (NOM_TABLE <> \"$nom_table_tela\") $requete ) order by \"date_creation\" desc"); |
$nbtables_dessin = mysql_num_rows($res); |
//prerequis au moteur |
//->les requetes $res |
//->les variable $lientela_botanica $nb_ab_tela $nb_total_mess=0 $nb_total_abon=0 |
//->connexion à la base |
//inclusion du moteur |
include ('php/frame/arbre/moteur_dessin.php'); |
include ('php/frame/arbre/$fichier_cartouche'); |
//purge des résultats de requetes |
mysql_free_result($resreq); |
mysql_free_result($res); |
//fermeture de la connexion |
mysql_close(); |
//ici finit mon arbre... |
} |
//============================================================================== |
// FUNCTION putFooter () |
// |
// Generation of footer. |
//============================================================================== |
function putFooter () { |
echo ' '; |
} |
//-- End of source ------------------------------------------------------------ |
?> |
/branches/livraison_menes/icones/lock.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/lock.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/nav-end.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/nav-end.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/openclose-plus-trait.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/openclose-plus-trait.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/cut.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/cut.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/newflech.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/newflech.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/bbadd.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/bbadd.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/print.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/print.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/ico-cd.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/ico-cd.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/newmsg.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/newmsg.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/minus16.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/minus16.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/less.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/less.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/down.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/down.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/pdf.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/pdf.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/up-arrow.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/up-arrow.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/logoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/logoff.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/repertoire.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/repertoire.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/trash.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/trash.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/mail.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/mail.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/bbreturn.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/bbreturn.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/ico-perio.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/ico-perio.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/php.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/php.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/texte.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/texte.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/docppt.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/docppt.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/docxls.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/docxls.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/Tela.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/Tela.jpg |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/nav-next.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/nav-next.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/replymsg.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/replymsg.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/bbmodif.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/bbmodif.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/right-arrow.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/right-arrow.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/doctxt.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/doctxt.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/switch-on.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/switch-on.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/nav-start.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/nav-start.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/openclose-minus.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/openclose-minus.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/bbnext.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/bbnext.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/hasmsg.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/hasmsg.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/nav-last.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/nav-last.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/webadd.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/webadd.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/bbfasc-ind.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/bbfasc-ind.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/add.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/add.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/doczip.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/doczip.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/ico-livre.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/ico-livre.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/validate.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/validate.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/unlock.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/unlock.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/trait-fin.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/trait-fin.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/son.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/son.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/square.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/square.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/openclose-minus-trait.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/openclose-minus-trait.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/dn.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/dn.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/more.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/more.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/idea.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/idea.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/addcross.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/addcross.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/menu.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/menu.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/prog.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/prog.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/bblast.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/bblast.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/copy.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/copy.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/paste.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/paste.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/modif.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/modif.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/hasunreadmsg.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/hasunreadmsg.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/trait.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/trait.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/cancel.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/cancel.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/moins.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/moins.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/plus16.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/plus16.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/upper.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/upper.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/docdoc.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/docdoc.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/ideared.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/ideared.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/modif.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/modif.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/down-arrow.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/down-arrow.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/opendir.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/opendir.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/docimg.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/docimg.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/ico-disk.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/ico-disk.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/doc.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/doc.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/openclose-plus.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/openclose-plus.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/bbdel.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/bbdel.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/switch-off.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/switch-off.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/img.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/img.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/docpsd.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/docpsd.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/see.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/see.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/web.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/web.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/bomb.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/bomb.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/hasnomsg.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/hasnomsg.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/sgbd.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/sgbd.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/multimed.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/multimed.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/left-arrow.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/left-arrow.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/up.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/up.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/icones/default.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_menes/icones/default.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_menes/arbre_des_forumsV3.php |
---|
New file |
0,0 → 1,187 |
<?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: arbre_des_forumsV3.php,v 1.1 2005-09-22 14:02:48 ddelon Exp $ |
/** |
* Application arbre des forums |
* |
* Fichier d'appel pour papyrus |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.1 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once 'configuration/projet.config.inc.php' ; |
include_once PROJET_CHEMIN_API_ARBRE.'arbre.class.php' ; |
// Inclusion des styles selon papyrus |
if (function_exists("GEN_stockerStyleExterne")) { |
GEN_stockerStyleExterne('projet','client/projet/arbre.css') ; |
} |
function afficherContenuNavigation() |
{ |
$sortie = ''; |
if (isset($_GET['forum']) || isset($GLOBALS['_GEN_commun']['info_application']->aide)) { |
if (!isset($_GET['forum'])) { |
$_GET['forum'] = '[exemple]' ; |
$_GET['aide'] = 1 ; |
} |
$sortie .= '<ul class="menu_classique_n3">'; |
if (isset($_GET['aide'])) { |
$style_aide = 'menu_actif' ; |
$style_info = 'menu_inactif' ; |
} else { |
$style_aide = 'menu_inactif' ; |
$style_info = 'menu_actif' ; |
} |
$GLOBALS['url']->addQueryString('forum', $_GET['forum']); |
$sortie .= '<li class="'.$style_info.'"><a href="'.$GLOBALS['url']->getURL().'">Infos</a></li>'; |
$GLOBALS['url']->addQueryString('aide', 1); |
$sortie .= '<li class="'.$style_aide.'"><a href="'.$GLOBALS['url']->getURL().'">Aide</a></li>'; |
$sortie .= '</ul>'; |
} |
return $sortie; |
} |
function afficherContenuCorps () { |
if (isset ($_GET['forum']) && !isset($_GET['aide']) /*&& isset($GLOBALS['_GEN_commun']['info_application']->aide)*/) { |
include_once PROJET_CHEMIN_APPLI.'forums-lst.php' ; |
return putFrame() ; |
} |
if (isset ($_GET['aide']) ||isset($GLOBALS['_GEN_commun']['info_application']->aide)) { |
if (!isset($_GET['forum'])) $_GET['forum'] = '[exemple]' ; |
if (!isset($_GET['aide'])) $_GET['aide'] = 1 ; |
include_once PROJET_CHEMIN_APPLI.'forums-hlp.php' ; |
return putFrame() ; |
} |
// Récupération des arguments de papyrus |
$thema = $GLOBALS['_GEN_commun']['info_appli']->theme ; |
global $num_sem; // le numero de la semaine |
// requete sur le sommet de l'arbre |
$requete = "SELECT NB_ABONNES,NUM_SEM FROM agora_stats WHERE FORUM=\"tela-botanicae\" ORDER BY NUM_SEM DESC" ; |
$resultat =$GLOBALS['projet_db']->query($requete) ; |
if (DB::isError ($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT); |
// le numero de la semaine |
if (empty($num_sem)) $num_sem = $ligne->NUM_SEM ; |
// requete sur le sommet de l'arbre avec le bon numero de semaine |
$resultat_sommet = $GLOBALS['projet_db']->query("SELECT NB_ABONNES,NB_MESSAGES FROM agora_stats WHERE FORUM=\"tela-botanicae\" AND NUM_SEM=\"$num_sem\""); |
$ligne_sommet = $resultat_sommet->fetchRow(DB_FETCHMODE_OBJECT) ; |
$nb_total_mess = $ligne_sommet->NB_MESSAGES; |
$nb_total_abon = $ligne_sommet->NB_ABONNES; |
$requete_donnee_sommet = "SELECT AGO_A_LIEN_PUCE,AGO_A_LIEN_FEUILLE,AGO_A_LIEN_BRANCHE FROM agora WHERE AGO_A_NOMGRP=\"tela-botanicae\"" ; |
$resultat_donnee_sommet = $GLOBALS['projet_db']->query($requete_donnee_sommet) or die ("Echec de la requête sur les forums2"); |
$ligne_donnee_sommet = $resultat_donnee_sommet->fetchRow(DB_FETCHMODE_OBJECT) ; |
// creation de l'arbre |
$arbreforum = new arbre("Botanique générale",$ligne_donnee_sommet->AGO_A_LIEN_BRANCHE,$nb_total_abon, $ligne_donnee_sommet->AGO_A_LIEN_FEUILLE, |
"http://fr.groups.yahoo.com/group/tela-botanicae/messages") ; |
$res = "<h1>L'arbre des forums de Tela Botanica</h1>\n" ; |
$res .= '<table width="600" cellspacing="5" cellpadding="0" border="0" summary="">' ; |
$GLOBALS['url']->addQueryString ('forum', 'tela-botanicae') ; |
$ligne_donnee_sommet->AGO_A_LIEN_BRANCHE = $GLOBALS['url']->getURL() ; |
$res .= $arbreforum->cime("Botanique générale",$ligne_donnee_sommet->AGO_A_LIEN_BRANCHE,$nb_total_abon, |
$ligne_donnee_sommet->AGO_A_LIEN_FEUILLE, |
"http://fr.groups.yahoo.com/group/tela-botanicae/messages") ; |
// requete sur les branches |
// d'abord les nom des groupes |
$requete_branche = "SELECT agora.AGO_A_NOMGRP FROM agora" ; |
if (!empty($thema)) $requete_branche.= ",agora_join" ; |
$requete_branche .= " WHERE agora.AGO_A_NOMGRP<>\"tela-botanicae\" AND agora.AGO_A_VISIBLE=1 and AGO_A_GRP_TB=0" ; // On ne garde que les projets hors Tela |
if (!empty($thema)) $requete_branche .= " AND agora.AGO_A_ID=agora_join.AGO_J_IDFORUM and AGO_J_IDCATEG=\"$thema\"" ; |
$requete_branche .= " ORDER BY AGO_A_ALIAS ASC" ; |
$resultat_branche = $GLOBALS['projet_db']->query($requete_branche) ; |
//tableau stockant la différence du nbre de messages entre la semaine en cours dans la page et la semaine précédente |
$diff_message = array(); |
while ($ligne_branche = $resultat_branche->fetchRow(DB_FETCHMODE_OBJECT)) { |
$query_nb_message_1 = "SELECT NB_MESSAGES FROM agora_stats WHERE FORUM=\"$ligne_branche->AGO_A_NOMGRP\" AND NUM_SEM=\"$num_sem\""; |
$result_nb_message_1 = mysql_query($query_nb_message_1) or die ("Echec sur la requête _nb_message_1") ; |
$row_nb_message_1 = mysql_fetch_object($result_nb_message_1) ; |
$query_nb_message_2 = "SELECT NB_MESSAGES FROM agora_stats WHERE FORUM=\"$ligne_branche->AGO_A_NOMGRP\" AND NUM_SEM= ".($num_sem -1).""; |
$result_nb_message_2 = mysql_query($query_nb_message_2) or die ("Echec sur la requête _nb_message_2") ; |
$row_nb_message_2 = mysql_fetch_object($result_nb_message_2) ; |
$diff_message[$row_message->AGO_A_NOMGRP] = $row_nb_message_1->NB_MESSAGES - $row_nb_message_2->NB_MESSAGES; |
} |
$result1 = mysql_query($requete_branche) or die ("Echec de la requête sur les forums"); |
while ($row1 = mysql_fetch_object($result1)) { |
// pour chaque groupe, le nbre de messages et le nbre d'abonnes |
$query2 = "SELECT NB_MESSAGES,NB_ABONNES FROM agora_stats WHERE FORUM=\"$row1->AGO_A_NOMGRP\" AND NUM_SEM=\"$num_sem\"" ; |
$result2 = mysql_query($query2) or die ("Echec de la requête sur agora_stats"); |
$row2 = mysql_fetch_object($result2) ; |
// et le reste des informations pour chaque groupe |
$query3 = "SELECT AGO_A_ALIAS,AGO_A_LIEN_BRANCHE,AGO_A_LIEN_FEUILLE,AGO_A_LIEN_PUCE,AGO_A_COULEUR,AGO_A_TAILLE_B,AGO_A_NOMGRP FROM agora WHERE AGO_A_NOMGRP=\"$row1->AGO_A_NOMGRP\""; |
$result3 = mysql_query($query3) or die ("Echec sur la requête 3") ; |
$row3 = mysql_fetch_object($result3) ; |
$lien_feuille = "http://fr.groups.yahoo.com/group/$row1->AGO_A_NOMGRP/messages" ; |
$lien_nombre = "http://fr.groups.yahoo.com/group/$row1->AGO_A_NOMGRP/members" ; |
// On cherche à obtenir une valeur entre 0 et 100 pour déterminer la couleur de la feuille de l'arbre |
$maxi_message = max($diff_message); |
if ($maxi_message == 0){$maxi_message = 0.01;} |
$calcul_couleur = ($diff_message[$row1->AGO_A_NOMGRP])/$maxi_message*100; |
//Fin. La valeur de la couleur pour le groupe en cours est stocké dans $calcul_couleur |
if ($row2->NB_ABONNES != 0) {//pour ne pas afficher les branches n'existant pas encore à la semaine donnée |
$GLOBALS['url']->addQueryString('forum', $row3->AGO_A_NOMGRP) ; |
$row3->AGO_A_LIEN_BRANCHE = $GLOBALS['url']->getURL() ; |
$arbreforum->addBranche($row3->AGO_A_ALIAS,$row3->AGO_A_LIEN_BRANCHE,$row2->NB_ABONNES,$lien_nombre,$lien_feuille,$calcul_couleur,$row3->AGO_A_TAILLE_B); |
// info pour le cartouche |
$nb_total_mess += $row2->NB_MESSAGES; |
$nb_total_abon += $row2->NB_ABONNES; |
} |
} |
$res .= $arbreforum->affBranche() ; |
$res .= $arbreforum->affRacine() ; |
$res .= '</table>' ; |
include_once PROJET_CHEMIN_APPLI.'cartouche.php' ; |
return $res ; |
} |
//-- End of source ------------------------------------------------------------ |
?> |
/branches/livraison_menes/cartouche2.php |
---|
New file |
0,0 → 1,239 |
<? |
//le cartouche |
$fichier_arbre="appli_arbre_date.php"; //c'est le lien du cartouche... |
$req_nb_forum_tela=mysql_query("select NB_MESSAGES,NB_ABONNES,NUM_SEM from $nom_table_tela order by NUM_SEM"); |
$nbrestela=mysql_num_rows($req_nb_forum_tela); |
$nb_forum_tela_mess =mysql_result($req_nb_forum_tela,($nbrestela-1),NB_MESSAGES); |
$nb_forum_tela_ab =mysql_result($req_nb_forum_tela,($nbrestela-1),NB_ABONNES); |
$nb_total_mess=$nb_total_mess+$nb_forum_tela_mess; |
$nb_total_abon=$nb_total_abon+$nb_forum_tela_ab; |
//AFFICHAGE DU CARTOUCHE |
echo" |
<tr> |
<td> |
<center> |
<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\" |
width=\"515\"> |
<tr> |
<td width=\"511\" bordercolor=\"#000000\" colspan=\"2\" |
bgcolor=\"#000000\"> |
<p align=\"center\"> |
<b><font face=\"Arial, Helvetica, sans-serif\" |
color=\"#FFCC00\">$nom_graph</font><BR><font color=#ff0000 size=2>$blabla_thema</font></b> |
</p> |
</td> |
</tr> |
<tr> |
<td width=\"315\" bordercolor=\"#000000\" valign= |
\"middle\"> |
<p align=\"left\"> |
<font face=\"Arial, Helvetica, sans-serif\" |
size=\"1\"><b>Couleur de la feuille :</b> |
Fonction du nombre de messages de la |
semaine</font> |
</p> |
<center> |
<table border=\"0\" cellspacing=\"0\" |
cellpadding=\"0\"> |
<tr> |
<td width=\"10%\" bgcolor=\"#279C27\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#1C6C1C\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#175917\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#114411\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#768000\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#CCCC00\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#FFCC00\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#DD8D22\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#FF6600\"> |
<p align=\"center\"> |
</p> |
</td> |
<td width=\"10%\" bgcolor=\"#CC3300\"> |
<p align=\"center\"> |
</p> |
</td> |
</tr> |
<tr> |
<td width=\"50%\" colspan=\"5\" bgcolor= |
\"#000000\"> |
<p align=\"left\"> |
<font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"4\" color=\"#FFFFFF\"><b>-</b></font> |
</p> |
</td> |
<td width=\"50%\" colspan=\"5\" bgcolor= |
\"#000000\"> |
<p align=\"right\"> |
<font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"4\" color=\"#FFFFFF\"><b>+</b></font> |
</p> |
</td> |
</tr> |
</table> |
</center> |
<p align=\"left\"> |
<font face=\"Arial, Helvetica, sans-serif\" |
size=\"1\"><b>Taille de la branche :</b> |
Fonction du nombre de messages</font><br> |
<font face=\"Arial, Helvetica, sans-serif\" |
size=\"1\"><b>Position sur le tronc :</b> |
Fonction de la date de |
création</font> |
</p> |
<font face=\"Arial, Helvetica, sans-serif\" size= |
\"1\">LIENS<br> |
Nom du forum : $texte_lien_branche<br> |
Nombre : $texte_lien_puce<br> |
Feuille : $texte_lien_feuille<br> |
</font> |
</td> |
<td width=\"194\" bordercolor=\"#000000\"> |
<center> |
<table border=\"0\" cellspacing=\"0\" |
cellpadding=\"0\" width=\"158\" bgcolor= |
\"#000000\"> |
<tr> |
<td width=\"106\"> |
<font face= |
\"Arial, Helvetica, sans-serif\" color= |
\"#FFFFFF\"><b><font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"2\">T</font><font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"2\">otal |
abonnés</font> </b></font> |
</td> |
<td width=\"48\"> |
<center> |
<font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"2\" color= |
\"#FFFFFF\">$nb_total_abon</font> |
</center> |
</td> |
</tr> |
<tr> |
<td width=\"106\"> |
<font face= |
\"Arial, Helvetica, sans-serif\" size=\"2\" |
color=\"#FFFFFF\"><b>Total |
messages</b></font> |
</td> |
<td width=\"48\"> |
<center> |
<font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"2\" color= |
\"#FFFFFF\">$nb_total_mess</font> |
</center> |
</td> |
</tr> |
</table> |
</center> |
<p> |
</p> |
<center> |
<table> |
<tr> |
<td width=\"113\"> |
<form method=\"POST\" action= |
\"document.php?project=$project&locale=&doc=".$DOCrow->D_NAME."&set=$set&page=$pageNdx&thema=$thema&fichier_arbre=".$fichier_arbre."\"> |
<p> |
<select name=\"num_sem\"><option selected value=\"2\">num"; |
//requete d'affichage des semaines dans le select |
$req_sem = mysql_query("select NUM_SEM from $nom_table_tela order by NUM_SEM desc"); |
$nb_req_sem = mysql_num_rows($req_sem); |
for($i=0;$i<$nb_req_sem-1;$i++) |
{ |
$num = mysql_result($req_sem,$i,0); |
echo"<option value=\"$num\""; |
if ($num_sem == $num) echo " selected"; |
echo ">$num"; |
} |
echo" |
</option> |
</select> |
<input type=image src=Local/arbre/valider.gif></p> |
</form> |
</td> |
</tr> |
</table> |
</center> |
<table border=\"0\" cellspacing=\"0\" cellpadding= |
\"0\" width=\"182\"> |
<tr> |
<td width=\"176\" colspan=\"3\"> |
<p align=\"center\"> |
<font face= |
\"Arial, Helvetica, sans-serif\" size= |
\"2\"><b>Evolution de l'arbre</b><br> |
<font size=\"1\">Choisissez la semaine a |
laquelle vous voulez voir |
l'arbre</font></font> |
</p> |
</td> |
</tr> |
<tr> |
<td width=\"34\"> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</center> |
</td> |
</tr>"; |
mysql_free_result($req_nb_forum_tela); |
mysql_free_result($req_sem); |
?> |