Subversion Repositories Applications.papyrus

Compare Revisions

No changes between revisions

Ignore whitespace Rev 230 → Rev 231

/trunk/client/inscription/configuration/ins_config.inc.php
New file
0,0 → 1,140
<?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: ins_config.inc.php,v 1.1 2004-12-15 13:32:38 alex Exp $
/**
* Fichier de configuration de l'inscription
*
* A éditer de façon spécifique à chaque déploiement
*
*@package inscription
//Auteur original :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:38 $
// +------------------------------------------------------------------------------------------------------+
*/
 
 
/**
//=========================DEFINITION DE VARIABLES =================================
* Définition des variables globales
//==================================================================================
*/
 
$GLOBALS['AUTH'] = &$_GEN_commun['pear_auth'] ;
$GLOBALS['ins_db'] = &$_GEN_commun['pear_db'] ;
 
/**
//==================================== LES URLS ==================================
* Constantes liées à l'utilisation des url
//==================================================================================
*/
$GLOBALS['ins_url'] = &$_GEN_commun['url']; //l'url de base de l'application, un objet Net_URL
// Créer cet objet par $GLOBALS['ins_url'] = new Net_URL('http://....') ;
 
define ("INS_LANGUE_DEFAUT", "fr") ;
 
/**
//=========================DEFINITION DE VARIABLES =================================
* Définition des variables globales
//==================================================================================
*/
 
define ("INS_CHEMIN_FICHIER", "client/inscription/") ;
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de tables et de champs dans l'annuaire
//==================================================================================
*/
 
define ("INS_ANNUAIRE", "annuaire") ;
define ("INS_CHAMPS_ID", "a_id") ; // Nom du champs nom
define ("INS_CHAMPS_MAIL", "a_mail") ; // Nom du champs mail
define ("INS_CHAMPS_NOM", "a_nom") ;
define ("INS_CHAMPS_PRENOM", "a_prenom") ;
define ("INS_CHAMPS_PASSE", "a_mot_de_passe") ;
define ("INS_CHAMPS_PAYS", "a_pays") ;
define ("INS_CHAMPS_CODE_POSTAL", "a_code_postal") ;
define ("INS_CHAMPS_DEPARTEMENT", "a_numero_dpt") ;
define ("INS_CHAMPS_ADRESSE_1", "a_adresse1") ;
define ("INS_CHAMPS_ADRESSE_2", "a_adresse2") ;
define ("INS_CHAMPS_VILLE", "a_ville") ;
define ("INS_CHAMPS_DATE_INSCRIPTION", "a_date_inscription") ;
define ("INS_CHAMPS_EST_STRUCTURE", "a_est_structure") ;
define ("INS_CHAMPS_SIGLE_STRUCTURE", "a_sigle_structure") ;
define ("PROJET_PRENOM", "U_SURNAME") ; // Nom du champs prénom
define ("PROJET_DPT", "gen_FRENCH_DPT") ; // Nom de la table département
define ("PROJET_PAYS", "gen_COUNTRY") ; // Nom de la table pays
define ("PROJET_CHAMPS_ID_PAYS", "GC_ID") ;
define ("PROJET_CHAMPS_LABEL_PAYS", "GC_NAME") ;
 
/**
//==================================== PARAMETRAGE =================================
* Pour régler certaines fonctionnalité de l'application
//==================================================================================
*/
 
define ("INS_FORMULAIRE_STRUCTURE", 1) ; // Mettre à un si on propose un formulaire pour les structures
 
define ("INS_MAIL_ADMIN_APRES_INSCRIPTION", "alexandre@tela-botanica.org") ;
define ("INS_MAIL_ADMIN_APRES_INSCRIPTION_SUJET", "[I-Jumelage]Inscription") ;
 
/**
//==================================== PARAMETRAGE =================================
* Réglage des applications externes SPIP, Wikini
//==================================================================================
*/
define ("INS_UTILISE_SPIP", 1) ; // Mettre à 0, s'il n'y a pas d'incription à SPIP
 
if (INS_UTILISE_SPIP) {
define ("INS_CHEMIN_SPIP", "") ;
}
 
define ("INS_UTILISE_WIKINI", 1) ; // Mettre à 0, s'il n'y a pas d'inscription à Wikini
if (INS_UTILISE_WIKINI) {
define ("INS_CHAMPS_NOM_WIKINI", "a_nom_wikini") ; // Le nom du champs contenant le nom wikini dans l'annuaire
}
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.2 2004/09/01 16:38:17 alex
* modification de la configuration
*
* Revision 1.1 2004/07/06 15:42:17 alex
* en cours
*
* Revision 1.4 2004/07/06 15:31:33 alex
* en cours
*
* Revision 1.3 2004/06/30 10:00:53 alex
* ajout de champs pour gérer les pays
*
* Revision 1.2 2004/06/18 09:20:54 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/client/inscription/inscription.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 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: inscription.php,v 1.1 2004-12-15 13:32:15 alex Exp $
/**
* Inscription
*
* Un module d'inscription, en général ce code est spécifique à
* un site web
*
*@package inscription
//Auteur original :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
//Autres auteurs :
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:15 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
include_once "client/inscription/configuration/ins_config.inc.php";
if (!isset($GLOBALS['lang'])) {
$GLOBALS['lang'] = INS_LANGUE_DEFAUT ;
}
include_once INS_CHEMIN_FICHIER."langues/ins_langue_".$GLOBALS['lang'].".inc.php" ;
include_once INS_CHEMIN_FICHIER."bibliotheque/inscription.fonct.php" ;
include_once INS_CHEMIN_FICHIER."classes/inscription.class.php" ;
 
 
 
// Ajout d'une feuille de style externe
GEN_stockerStyleExterne ('inscription', INS_CHEMIN_FICHIER.'inscription.css') ;
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
 
function afficherContenuCorps() {
 
$url = preg_replace ("/&amp;/", "&", INS_URL_DOCUMENT) ;
if (!isset ($GLOBALS['action'])) $GLOBALS['action'] = "" ;
$res = "" ;
$est_loggue = true ;
 
if ($GLOBALS['logout'] == 1) {
$GLOBALS['AUTH']->logout() ;
$GLOBALS['username'] = "" ;
$GLOBALS['password'] = "" ;
return AUTH_formulaire_login() ;
}
 
// L'utilisateur a-t-il cliqué sur Supprimer inscription
if (isset ($GLOBALS['supprimer'])) {
$id_utilisateur = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) ;
//desinscription_interwikini_users ($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_LOGIN)) ;
$requete = "delete from ".INS_ANNUAIRE." where ".INS_CHAMPS_ID."=".$id_utilisateur;
 
$GLOBALS['ins_db']->query ($requete) ;
if (DB::isError($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
}
// Suppression dans SPIP
if (INS_UTILISE_SPIP) {
desinscription_spip($id_utilisateur) ;
}
$GLOBALS['AUTH']->logout() ;
return AUTH_formulaire_login() ;
}
 
if ($GLOBALS['action'] == 'sendpasswd') {
return envoie_passe() ;
}
 
// L'utilisateur a cliqué sur Inscription ou Inscription structure ou
if ($GLOBALS['action'] != '' || isset($GLOBALS['modifier'])) {
$action = preg_replace ("/&amp;/", "&", $GLOBALS['ins_url']->getURL()) ;
$formulaire = new HTML_formulaireInscription('formulaire_inscription', 'post', $action) ;
// Construction de la liste des pays
$liste_pays = new ListeDePays($GLOBALS['ins_db']) ;
$formulaire->construitFormulaire($action, $liste_pays->getListePays($GLOBALS['lang'])) ;
if (isset($GLOBALS['structure'])) {
$formulaire->formulaireStructure() ;
}
if (isset($GLOBALS['modifier'])) {
$formulaire->addElement ('hidden', 'action', 'modifier_v') ;
$formulaire->setDefaults(formulaire_defaults()) ;
}
if ($GLOBALS['action'] == 'inscription') {
$formulaire->addElement ('hidden', 'action', 'inscription_v') ;
}
if ($GLOBALS['action'] == 'inscription_v') {
if ($formulaire->validate()) {
$formulaire->process('demande_inscription', false) ;
return message_inscription() ;
}
}
if ($GLOBALS['action'] == 'modifier_v') {
if ($formulaire->validate()) {
$formulaire->process('mise_a_jour', false) ;
}
return info ($GLOBALS['AUTH']->getAuthData (INS_CHAMPS_ID)).bouton (str_replace ("&amp;", "&", $GLOBALS['ins_url']->getURL())) ;
}
return $formulaire->toHTML() ;
}
// L'inscription dans la base si l'utilisateur clique sur le lien du mail
if (isset($GLOBALS['id']) && $GLOBALS['id'] == session_id()) {
if (isset ($_SESSION['donnees_inscription'])) {
insertion ($_SESSION['donnees_inscription']) ;
$GLOBALS['AUTH']->username = $_SESSION['donnees_inscription']['email'] ;
$GLOBALS['AUTH']->password = $_SESSION['donnees_inscription']['mot_de_passe'] ;
// On loggue l'utilisateur
$GLOBALS['AUTH']->login() ;
unset ($_SESSION['donnees_inscription']) ;
envoie_mail() ;
} else {
return INS_MESSAGE_EXPIRATION ;
}
}
 
if (!$GLOBALS['AUTH']->getAuth() && $GLOBALS['action'] != "inscription" && $GLOBALS['action'] != 'inscription_v') {
if (isset($GLOBALS['username']) && $GLOBALS['username'] != '') {
$res .= message_erreur() ;
} else {
$res .= AUTH_formulaire_login() ;
}
}
if ($GLOBALS['AUTH']->getAuth () && !isset($GLOBALS['modifier'])) {
return info ()
.bouton (str_replace ("&amp;", "&", $GLOBALS['ins_url']->getURL()))
.deconnexion($GLOBALS['ins_url']->getURL()) ;
}
return $res ;
}
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.2 2004/09/01 16:36:37 alex
* changement du chemin pour les include
*
* Revision 1.1 2004/07/06 15:42:28 alex
* en cours
*
* Revision 1.5 2004/07/06 15:28:56 alex
* en cours
*
* Revision 1.4 2004/06/25 14:26:03 alex
* modification de la suppression
*
* Revision 1.3 2004/06/23 12:41:44 alex
* amélioration de la gestion de la perte de mot de passe
*
* Revision 1.2 2004/06/18 09:18:23 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/client/inscription/inscription.css
New file
0,0 → 1,90
/*
 
+----------------------------------------------------------------------------+
| inscription.css |
+----------------------------------------------------------------------------+
| Copyright (c) 2004 Tela Botanica |
+----------------------------------------------------------------------------+
| Feuille de style specifique a l'application inscription de Tela Botanica |
+----------------------------------------------------------------------------+
| Auteur : Tamara LE BOURG <tamara@tela-botanica.org> |
| erational (pour les styles specifiques a VECAM) |
+----------------------------------------------------------------------------+
 
*/
 
#table_inscription {
border: 1px solid #E8AE3B;
border-collapse: collapse;
width:100%;
}
 
th {
border: 1px 0px 1px 0px solid #E8AE3B;
background-color: #FFCD9B;
color: #775522;
padding: 2px;
}
 
ul.liste_inscription {
margin: 0px;
}
 
li.liste_inscription {
list-style-type: none;
margin: 4px;
}
 
.groupe_formulaire {
width:50%;
}
 
.ligne_impaire {
background-color: #FFFFFF;
font-size: 85%;
border: none;
padding: 2px;
 
}
 
.ligne2_impaire {
background-color: #FFFFFF;
font-size: 85%;
border: none;
padding: 2px;
}
 
.ligne_paire {
background-color: #FFEBD7;
font-size: 85%;
border: none;
padding: 2px;
 
}
 
.ligne2_paire {
background-color: #FFEBD7;
font-size: 85%;
border: none;
padding: 2px;
}
 
.titre1_inscription {
font-family: Arial, Verdana, Helvetica, sans-serif;
margin: 3px 0;
font-size: 130%;
margin-top: 1em;
}
 
.titre2_inscription {
font-family: Arial, Verdana, Helvetica, sans-serif;
margin: 3px 0;
font-size: 110%;
margin-top: 1em;
}
 
.inscription_erreur {
color: #CC6633;
font-weight: bold;
text-decoration: blink;
}
/trunk/client/inscription/wikini_cookie.php
New file
0,0 → 1,69
<?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: wikini_cookie.php,v 1.1 2004-12-15 13:32:15 alex Exp $
/**
* Envoie de cookie pour wikini à partir d'une inscription
*
* Envoie de cookie pour wikini à partir d'une inscription
*
*@package inscription
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:15 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// Wikini envoie 3 cookies
// name avec pour valeur le nom wiki de l'utilisateur
// password avec pour valeur le mot de passe crypté de l'utilisateur
// remember la durée du cookie
 
// On fait la même chose
 
if ($userid != "") {
 
// 1. name
// On recherche le nom
$nomwikini = $AUTH->getAuthData('ga_login') ;
setcookie ("name", $nomwikini, time () + 3600 * 24 * 30, "/" ) ; // 1 mois
//2. password
// on recherche le mot de passe crypté
$requete = "select ga_mot_de_passe from gen_annuaire where ga_id_administrateur=$userid" ;
$resultat = $db->query ($requete) ;
if (DB::isError($resultat)) {
die ("Erreur") ;
}
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
$mot_de_passe = $ligne->ga_mot_de_passe ;
setcookie ("password", $mot_de_passe, time () + 3600 * 24 * 30, "/") ;
// 3. remember
setcookie ("remember", 1, time () + 3600 * 24 * 30, "/") ;
}
 
?>
/trunk/client/inscription/spip_cookie.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 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: spip_cookie.php,v 1.1 2004-12-15 13:32:15 alex Exp $
/**
* Envoie de cookie pour SPIP à partir d'une inscription
*
* Envoie de cookie pour SPIP à partir d'une inscription
*
*@package inscription
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:15 $
// +------------------------------------------------------------------------------------------------------+
*/
 
 
// Ce fichier doit être placé à la racine de SPIP
// Il doit être appellé dans chaque squelette
// après l'ouverture d'une session, si on ouvre une session
 
// Il faut récupérer une valeur userid, c'est à dire
// loggué l'utilisateur par exemple avec PEAR
 
if ($userid != 0) {
 
 
setcookie("spip_admin", "@$login", time()+3600*24*30, "/vecam/") ;
 
include ("ecrire/inc_version.php3");
 
include_ecrire ("inc_meta.php3");
include_ecrire ("inc_session.php3");
$query = "SELECT * FROM spip_auteurs WHERE id_auteur=$userid";
$result = mysql_query($query);
$GLOBALS['auteur_session'] = mysql_fetch_array($result) ;
$GLOBALS['auteur_session']['statut'] = "1comite" ;
$GLOBALS['auteur_session']['lang'] = "en" ;
 
if (!$HTTP_COOKIE_VARS["spip_session"]) {
$id_session = $userid."_".(md5 (uniqid (rand ())));
setcookie("spip_session", $id_session, time()+3600*24*30, "/vecam/") ;
 
} else {
$id_session = preg_replace("/[0-9]+_/", $userid."_", $HTTP_COOKIE_VARS["spip_session"]) ;
setcookie("spip_session", $id_session, time()+3600*24*30, "/vecam/") ;
}
 
ajouter_session($GLOBALS['auteur_session'], $id_session) ;
 
}
 
 
 
 
 
 
 
 
 
 
 
 
?>
/trunk/client/inscription/bibliotheque/ins_spip.fonct.php
New file
0,0 → 1,104
<?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: ins_spip.fonct.php,v 1.1 2004-12-15 13:32:25 alex Exp $
/**
* Fonctions wikini
*
* Ce fichier propose 3 fonctions pour intervenir sur la table interwikini_users.
*
*@package inscription
*@subpackage fonctions_wikini
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:25 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
function inscription_spip($id, &$valeur)
{
 
// Requete pour inscrire dans SPIP
if (isset ($valeur['nomwiki'])) {
$login = $valeur['nomwiki'] ;
} else {
$login = $valeur['email'] ;
}
$requete = "insert into spip_auteurs set id_auteur=$id, nom=\"".$valeur['prenom']." ".$valeur['nom'].
"\",email=\"".$valeur['email']."\",login=\"".$login.
"\", pass=\"".md5($valeur['password'])."\", statut=\"nouveau\", lang=\"".
strtolower($valeur['pays'])."\"" ;
@mysql_query($requete) or die ("$requete<br>Echec <br>".mysql_error()) ;
}
 
function mod_inscription_spip($id, &$valeur)
{
if (isset ($valeur['nomwiki'])) {
$login = $valeur['nomwiki'] ;
} else {
$login = $valeur['email'] ;
}
//BIEN METTRE alea_actuel, htpass ET alea_futur À ""
$requete = "update spip_auteurs set nom=\"".$valeur['prenom']." ".$valeur['nom'].
"\",email=\"".$valeur['email']."\",login=\"".$login.
"\", pass=\"".md5($valeur['password'])."\", htpass=\"\", alea_actuel=\"\", alea_futur=\"\", lang=\"fr\" where id_auteur=$id" ;
//echo $requete;
@mysql_query($requete) or die ("$requete<br>Echec <br>".mysql_error()) ;
}
function desinscription_spip($id_utilisateur)
{
$requete = 'delete from spip_auteurs where id_auteur='.$id_utilisateur ;
@mysql_query($requete) or die ("$requete<br>Echec de la requête de mise à la poubelle de l'utilisateur dans spip <br>".mysql_error()) ;
}
 
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2004/07/06 15:42:17 alex
* en cours
*
* Revision 1.2 2004/06/25 14:25:27 alex
* modification de la requete de suppresssion
*
* Revision 1.1 2004/06/18 09:20:48 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
 
 
 
 
?>
/trunk/client/inscription/bibliotheque/ins_wiki.fonct.php
New file
0,0 → 1,106
<?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: ins_wiki.fonct.php,v 1.1 2004-12-15 13:32:25 alex Exp $
/**
* Fonctions wikini
*
* Ce fichier propose 3 fonctions pour intervenir sur la table interwikini_users.
*
*@package inscription
*@subpackage fonctions_wikini
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:25 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
function inscription_interwikini_users() {
global $db, $HTTP_POST_VARS ;
$requete = "insert into interwikini_users set name=\"".$HTTP_POST_VARS['nomwiki'].
"\", password=\"".md5($HTTP_POST_VARS['password'])."\", email=\"".$HTTP_POST_VARS['email']."\"" ;
$resultat = $db->query ($requete) ;
if (DB::isError($resultat)) {
die ("Echec de la requete dans interwikini_users<br />".$resultat->getMessage()) ;
}
}
 
function mod_inscription_interwikini_users($id) {
global $db, $HTTP_POST_VARS, $AUTH ;
$requete = "update interwikini_users set password=\"".md5($HTTP_POST_VARS['password'])."\", email=\"".$HTTP_POST_VARS['mail']."\"".
" where name=\"".$AUTH->getAuthData(INS_CHAMPS_LOGIN)."\"" ;
$resultat = $db->query ($requete) ;
if (DB::isError($resultat)) {
die ("Echec de la requete dans interwikini_users<br />".$resultat->getMessage()) ;
}
}
 
function desinscription_interwikini_users($nomwiki) {
global $db ;
$requete = "delete from interwikini_users where name=\"$nomwiki\"" ;
$resultat = $db->query ($requete) ;
if (DB::isError($resultat)) {
die ("Echec de la requete dans interwikini_users<br />".$resultat->getMessage()) ;
}
}
 
function verif_doublonNomWiki($nom_wiki) {
global $db ;
$requete = "select name from interwikini_users where name = \"$nom_wiki\"" ;
$resultat = $db->query ($requete) ;
if (DB::isError ($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
}
if ($resultat->numRows() == 0) return true ;
return false ;
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2004/07/06 15:42:17 alex
* en cours
*
* Revision 1.1 2004/06/18 09:20:48 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
 
 
 
 
?>
/trunk/client/inscription/bibliotheque/inscription.fonct.php
New file
0,0 → 1,494
<?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: inscription.fonct.php,v 1.1 2004-12-15 13:32:25 alex Exp $
// CVS : $Id: inscription.fonct.php,v 1.1 2004-12-15 13:32:25 alex Exp $
/**
* Fonctions du module inscription
*
* Fonctions du module inscription
*
*@package inscription
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:25 $
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:25 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
include_once 'ins_wiki.fonct.php' ;
if (INS_UTILISE_SPIP) include_once 'ins_spip.fonct.php' ;
require_once 'HTML/QuickForm.php' ;
require_once 'HTML/QuickForm/checkbox.php' ;
require_once 'HTML/QuickForm/password.php' ;
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
 
/**
*
* @param array les valeurs renvoyés par le formulaire
* @return
*/
 
function demande_inscription ($valeurs) {
// On stocke les informations dans un variable de session
$_SESSION['donnees_inscription'] = $valeurs ;
// On envoie un email de confirmation pour l'utilisateur
$GLOBALS['ins_url']->addQueryString ('id', session_id()) ;
mail ($GLOBALS['email'], 'inscription', $GLOBALS['ins_url']->getURL()) ;
}
 
/**
*
*
* @return
*/
 
function message_inscription () {
return INS_MESSAGE_INSCRIPTION ;
}
/**
* Réalise l'insertion dans la base de donnée
*
* @param array un tableau de valeur avec en clé les noms des champs du formulaire
* @return void
*/
 
function AUTH_formulaire_login () {
//--------------------------------------------------------------------------
// Le formulaire
//--------------------------------------------------------------------------
$GLOBALS['ins_url']->addQueryString('action', 'inscription') ;
$form = new HTML_QuickForm ('inscription', 'post', preg_replace ('/&amp;/', '&', str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL()))) ;
$form->addElement ('submit', 'Inscription', INS_INSCRIPTION) ;
if (INS_FORMULAIRE_STRUCTURE) $form->addElement ('submit', 'structure', INS_INSCRIPTION_STRUCTURE) ;
$res = "<div class=\"titre1_inscription\">".INS_LAIUS_INSCRIPTION."</div>\n" ;
$res .= "<div>".INS_LAIUS_INSCRIPTION_2."</div>\n" ;
$res .= $form->toHTML() ;
$res .= '<div>'.INS_DEJA_INSCRIT.'</div>' ;
$GLOBALS['ins_url']->removeQueryString ('action') ;
$form = new HTML_QuickForm ('inscription', 'post', str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL())) ;
$form->addElement ('text', 'username', INS_EMAIL) ;
$form->addElement ('password', 'password', INS_MOT_DE_PASSE) ;
$form->addElement('submit', 'valider', INS_VALIDER);
$res .= $form->toHTML() ;
 
$res .= "<div>".INS_TEXTE_PERDU."</div>\n" ;
return $res;
}
 
/**
*
*
*
*
* @return string HTML Un message d'erreur avec un lien pour renvoyer le mot de passe
*/
function message_erreur () {
$res = '';
// Si le mot de passe vient juste d'être envoyé, on remet le formulaire de login
if ($GLOBALS['action'] == 'sendpasswd') {
$form = new HTML_QuickForm ('inscription', 'post', str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL())) ;
$form->addElement ('text', 'username', INS_EMAIL) ;
$form->addElement ('password', 'password', INS_MOT_DE_PASSE) ;
$form->addElement('submit', 'valider', INS_VALIDER);
$res .= $form->toHTML() ;
} else {
$res .= "<div class=\"inscription_erreur\">".INS_ERREUR_LOGIN."</div>\n" ;
$res .= "<div>".INS_SI_PASSE_PERDU."</div>\n" ;
$res .= "<div>" ;
$GLOBALS['ins_url']->addQueryString('action', 'sendpasswd') ;
$res .= "<form action=\"".str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL())."\" method=\"post\">\n" ;
$res .= INS_EMAIL."&nbsp;" ;
$res .= "<input type=\"text\" value=\"".$GLOBALS['username']."\" name=\"username\" size=\"32\" /></li></ul>\n" ;
$res .= "<div>".INS_INDIQUE_ADRESSE."</div>\n" ;
$res .= "<input type=\"submit\" value=\"".INS_ENVOIE_PASSE."\" />" ;
$res .= "</form></div>\n" ;
}
// On remet le formulaire d'inscription
$GLOBALS['ins_url']->addQueryString('action', 'inscription') ;
$form = new HTML_QuickForm ('inscription', 'post', str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL())) ;
$form->addElement ('submit', 'Inscription', INS_INSCRIPTION) ;
$res .= INS_LAIUS_INSCRIPTION ;
$res .= $form->toHTML() ;
return $res;
}
 
function insertion($valeur) {
// =========== Insertion dans l'annuaire gen_annuaire ===================
 
$id_administrateur = nextId(INS_ANNUAIRE, INS_CHAMPS_ID, $GLOBALS['ins_db']) ;
$requete = 'insert into '.INS_ANNUAIRE.' set '.
INS_CHAMPS_ID.'="'.$id_administrateur.'",'.
requete_annuaire($valeur) ;
 
$resultat = $GLOBALS['ins_db']->query ($requete) ;
if (DB::isError($resultat)) {
die ($resultat->getMessage().$resultat->getDebugInfo()) ;
}
 
// ================ Insertion dans SPIP =========================================
if (INS_UTILISE_SPIP) {
inscription_spip($id_administrateur, $valeur) ;
}
//inscription_interwikini_users() ;
}
 
/**
* Réalise une mise à jour dans la base de donnée
*
* @param array un tableau de valeur avec en clé les noms des champs du formulaire
* @return void
*/
function mise_a_jour($valeur) {
// ====================Mise à jour dans l'annuaire gen_annuaire ====================
$requete = 'update '.INS_ANNUAIRE.' set '.
requete_annuaire ($valeur).
'where '.INS_CHAMPS_ID.'="'.$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID).'"';
$resultat = $GLOBALS['ins_db']->query ($requete) ;
if (DB::isError($resultat)) {
die ($resultat->getMessage().$resultat->getDebugInfo()) ;
}
unset ($resultat) ;
 
// ========================= Mise à jour dans SPIP ================================
if (INS_UTILISE_SPIP) {
mod_inscription_spip($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID), $valeur) ;
}
}
 
/** requete_annuaire () - Renvoie une chaine contenant les champs de l'annuaire avec leur valeur suite à le fonction process de QuickForm
*
* @return string une requete du type champs="valeur",...
*/
 
function requete_annuaire ($valeur) {
$req = INS_CHAMPS_NOM.'="'.$valeur['nom'].'",'.
INS_CHAMPS_PRENOM.'="'.$valeur['prenom'].'",'.
INS_CHAMPS_MAIL.'="'.$valeur['email'].'",' ;
if (INS_UTILISE_WIKINI) $req .= INS_CHAMPS_NOM_WIKINI.'="'.$valeur['nomwiki'].'",' ;
$req .= INS_CHAMPS_PASSE.'="'.md5 ($valeur['mot_de_passe']).'",'.
INS_CHAMPS_PAYS.'="'.$valeur['pays'].'",'.
INS_CHAMPS_ADRESSE_1.'="'.$valeur['adresse_1'].'",'.
INS_CHAMPS_ADRESSE_2.'="'.$valeur['adresse_2'].'",'.
INS_CHAMPS_DATE_INSCRIPTION.'=NOW(),'.
INS_CHAMPS_CODE_POSTAL.'="'.$valeur['cp'].'" ' ;
if (INS_FORMULAIRE_STRUCTURE) {
$req .= ",".INS_CHAMPS_EST_STRUCTURE.'="'.$valeur['est_structure'].'"' ;
$req .= ",".INS_CHAMPS_SIGLE_STRUCTURE.'="'.$valeur['sigle_structure'].'"' ;
}
// traitement du numéro de département pour la france
if ($valeur[INS_CHAMPS_PAYS] == 'FR') {
if (preg_match("/^97|98[0-9]*/", $valeur['cp'])) {
$n_dpt = substr($valeur['cp'], 0, 3) ;
} else {
$n_dpt = substr($valeur['cp'], 0, 2) ;
}
$req .= ",".INS_CHAMPS_DEPARTEMENT."='$n_dpt'";
}
return $req ;
}
 
 
 
/** formulaire_defaults () - Renvoie un tableau avec les valeurs par défaut du formulaire d'inscription
*
* @return array Valeurs par défaut du formulaire d'inscription
*/
function formulaire_defaults () {
$requete = 'select '.INS_ANNUAIRE.'.* '.
'from '.INS_ANNUAIRE.' '.
'where '.INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'= "'.$GLOBALS['AUTH']->getAuthData (INS_CHAMPS_ID).'"' ;
$resultat = $GLOBALS['ins_db']->query ($requete) ;
if (DB::isError($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
}
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
$valeurs_par_defaut = array() ;
$valeurs_par_defaut['email'] = $ligne[INS_CHAMPS_MAIL];
$valeurs_par_defaut['nom'] = $ligne[INS_CHAMPS_NOM];
$valeurs_par_defaut['prenom'] = $ligne[INS_CHAMPS_PRENOM] ;
$valeurs_par_defaut['pays'] = $ligne[INS_CHAMPS_PAYS] ;
$valeurs_par_defaut['nomwiki'] = $ligne[INS_CHAMPS_LOGIN] ;
$valeurs_par_defaut['cp'] = $ligne[INS_CHAMPS_CODE_POSTAL] ;
$valeurs_par_defaut['ville'] = $ligne[INS_CHAMPS_VILLE] ;
$valeurs_par_defaut['adresse_1'] = $ligne[INS_CHAMPS_ADRESSE_1] ;
$valeurs_par_defaut['adresse_2'] = $ligne[INS_CHAMPS_ADRESSE_2] ;
return $valeurs_par_defaut ;
}
 
 
 
function info() {
$requete = 'select * from '.INS_ANNUAIRE.' '.
'where '.INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'="'.$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID).'"' ;
$resultat = $GLOBALS['ins_db'] -> query ($requete) ;
if (DB::isError ($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
}
 
$ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC) ;
$res = "<h1 class=\"inscription_titre1\">".INS_MESSAGE_BIENVENU ;
$res .= "</h1>\n" ;
$res .= "<h2 class=\"inscription_titre2\">".INS_FICHE_PERSONNELLE."</h2>\n" ;
$res .= "<div>".INS_EMAIL." : ".$ligne[INS_CHAMPS_MAIL]."</div>\n" ;
if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 1) $nom = INS_NOM_STRUCTURE ; else $nom = INS_NOM ;
$res .= "<div>".$nom." : ".$ligne[INS_CHAMPS_NOM]."</div>" ;
if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 0) $res .= "<div>".INS_PRENOM." : ".$ligne[INS_CHAMPS_PRENOM]."</div>\n" ;
if ($ligne[INS_CHAMPS_LOGIN] != "") $res .= "<div>".INS_NOM_WIKI." : ".$ligne[INS_CHAMPS_LOGIN]."</div>\n" ;
if ($ligne[INS_CHAMPS_ADRESSE_1] != "") $res .= "<div>".INS_ADRESSE." : ".$ligne[INS_CHAMPS_ADRESSE_1]."</div>\n" ;
if ($ligne[INS_CHAMPS_ADRESSE_2] != "") $res .= "<div> : ".$ligne[INS_CHAMPS_ADRESSE_2]."</div>\n" ;
return $res ;
}
 
function bouton($url) {
global $GS_GLOBAL ;
$boutons = new HTML_QuickForm('inscription', 'post', $url) ; ;
//confirmation() ;
$buttons[] = &HTML_QuickForm::createElement('submit', 'modifier', INS_MODIFIER_INSCRIPTION);
$buttons[] = &HTML_QuickForm::createElement('submit', 'supprimer', INS_SUPPRIMER_INSCRIPTION,
array ("onclick" => "javascript:return confirm('".INS_SUPPRIMER_INSCRIPTION." ?');"));
$boutons->addGroup($buttons, null, null, '&nbsp;');
return $boutons->toHTML() ;
}
 
/**
* Renvoie un lien pour se déconnex=cter
*
* @return string
*/
 
function deconnexion ($url) {
// Un champs logout
return "<div><a href=\"$url&logout=1\">".INS_DECONNEXION."</a></div>" ;
}
 
/** Renvoie vrai si l'email passé en paramètre n'est pas déjà dans l'annuaire
* ou si, en cas de modification d'inscription, l'inscrit ne modifie pas son email
*
* @return boolean
*/
 
function verif_doublonMail($mail) {
if (isset ($GLOBALS['AUTH']) && $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) != '') {
$requete_mail = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE." where ".INS_CHAMPS_ID."=".$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) ;
$resultat_mail = $GLOBALS['ins_db']->query ($requete_mail) ;
if (DB::isError ($resultat_mail)) {
die ("Echec de la requete : $requete_mail<br />".$resultat_mail->getMessage()) ;
}
$ligne_mail = $resultat_mail->fetchRow(DB_FETCHMODE_ASSOC) ;
if ($mail == $ligne_mail[INS_CHAMPS_MAIL]) {
return true ;
}
}
$requete = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE." where ".INS_CHAMPS_MAIL."= \"$mail\"" ;
$resultat = $GLOBALS['ins_db']->query ($requete) ;
if (DB::isError ($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
}
if ($resultat->numRows() == 0) return true ;
return false ;
}
 
 
function envoie_passe()
{
global $SERVER_ADMIN ;
 
$headers['From'] = $SERVER_ADMIN ;
$headers['Subject'] = INS_NOUVEAU_MOT_DE_PASSE;
 
$nouveau_passe = create_new_random(6) ;
 
$body = INS_NOUVEAU_MOT_DE_PASSE_2.$nouveau_passe ;
$body .= INS_NOUVEAU_MOT_DE_PASSE_LAIUS ;
 
// modification du mot de passe dans la base
$requete = "update ".INS_ANNUAIRE." set ".INS_CHAMPS_PASSE."=MD5(\"$nouveau_passe\") where ".INS_CHAMPS_MAIL."=\"".$GLOBALS['username']."\"" ;
 
$resultat = $GLOBALS['db']->query($requete) ;
if (DB::isError($resultat)) {
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
}
 
// création du mail
if (!mail ($GLOBALS['username'], $headers['Subject'], $body)) {
return 'erreur lors de l\'envoie de mail' ;
}
 
return "<div class=\"titre1_inscription\">".INS_MOT_DE_PASSE_ENVOYE_1." $username.</div>\n".
"<div><br>".INS_MOT_DE_PASSE_ENVOYE_2."</div>\n";
 
}
 
function envoie_mail()
{
global $SERVER_ADMIN ;
 
$headers['From'] = $SERVER_ADMIN ;
$headers['To'] = "<alexandre@tela-botanica.org>" ;
$headers['Subject'] = INS_MAIL_COORD_SUJET ;
 
$q = "select *, ".PROJET_CHAMPS_LABEL_PAYS." from ".INS_ANNUAIRE.",".PROJET_PAYS.
" where ".INS_CHAMPS_MAIL."=\"".$GLOBALS['HTTP_POST_VARS']['email']."\"".
" and ".PROJET_CHAMPS_ID_PAYS."=".INS_CHAMPS_PAYS;
 
$r = $GLOBALS['ins_db']->query($q) ;
if (DB::isError ($r)) {
die ("echec de la requete sur anuaire") ;
}
$row = $r->fetchRow(DB_FETCHMODE_ASSOC) ;
 
$body_entete = INS_MAIL_COORD_CORPS."\n" ;
$body = "mail : ".$row[INS_CHAMPS_MAIL]."\n" ;
$body .= "------------------------------------------\n";
$body .= INS_NOM.": ".unhtmlentities($row[INS_CHAMPS_NOM])." \n" ;
$body .= "Prénom : ".unhtmlentities($row[INS_CHAMPS_PRENOM])." \n" ;
$body .= INS_PAYS." : ".unhtmlentities($row[PROJET_CHAMPS_LABEL_PAYS])." \n" ;
$body .= "-------------------------------------------\n" ;
/*
// recherche des administrateurs
$requete = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE.", annu_ADMIN where ".INS_CHAMPS_ID.
"=AA_USER_ID and AA_LEVEL=0";
$resultat = $GLOBALS['ins_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)) {
if (!mail ($headers['To'], $headers['Subject'], $body)) {
return "<tr><td>Une erreur s'est produite:<br></td></tr>\n" ;
}
//}*/
}
 
// For users prior to PHP 4.3.0 you may do this:
function unhtmlentities ($string)
{
$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
return strtr ($string, $trans_tbl);
}
 
/* ***********************************
create_new_random($n,$type) permet de générer un nombre de caractères aléatoires.
 
ENTREE :
- $n : créer un 'mot' de $n caractères
- $type : permet de définir la liste des caractères disponibles
 
SORTIE : chaine de $n caractères pris dans une liste $type
*********************************** */
function create_new_random($n,$type="")
{
$str = "";
 
switch ($type){
default:{
$chaine = "abcdefghkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ23456789";
}
break;
}
srand((double)microtime()*1000000);
for($i = 0; $i < $n; $i++){
$str .= $chaine[rand()%strlen($chaine)];
}
return "$str";
}
 
//==============================================================================
/** function nextId () Renvoie le prochain identifiant numérique libre d'une table
*
* On passe en paramètre le nom de la table et l'identifiant de la base selon PEAR DB
*
* @param mixed handler de connexion
* @param string Nom de la table
* return interger l'identifiant
*/
 
function nextId ($table, $colonne_identifiant, $db)
{
$requete = "select MAX($colonne_identifiant) as maxi from $table" ;
$resultat = $GLOBALS['ins_db']->query($requete) ;
if (DB::isError($resultat)) {
die (__FILE__ . __LINE__ . $resultat->getMessage() . $requete);
return $GLOBALS['ins_db']->raiseError($resultat) ;
}
if ($resultat->numRows() > 1) {
return $GLOBALS['ins_db']->raiseError("<br/>La table $table a un identifiant non unique<br/>") ;
}
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
return $ligne->maxi + 1 ;
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.2 2004/09/01 16:37:52 alex
* modification du formulaire
*
* Revision 1.1 2004/07/06 15:42:17 alex
* en cours
*
* Revision 1.7 2004/07/06 15:28:41 alex
* en cours
*
* Revision 1.5 2004/07/06 15:22:19 alex
* en cours
*
=======
* Revision 1.4 2004/06/30 10:00:26 alex
* modification de l'envoie de mail
*
* Revision 1.2 2004/06/23 12:41:51 alex
* amélioration de la gestion de la perte de mot de passe
*
* Revision 1.1 2004/06/18 09:20:47 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
 
?>
/trunk/client/inscription/classes/inscription.class.php
New file
0,0 → 1,229
<?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: inscription.class.php,v 1.1 2004-12-15 13:32:29 alex Exp $
/**
* Inscription
*
* Un module d'inscription, en général ce code est spécifique à
* un site web
*
*@package inscription
//Auteur original :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
//Autres auteurs :
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:29 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
require_once 'HTML/QuickForm.php' ;
 
class HTML_formulaireInscription extends HTML_Quickform {
 
/**
* 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_forumlaireInscription ( $formName, $method = "post", $action, $target = "_self", $attributes, $trackSubmit = false ) {
HTML_Quickform::HTML_Quickform($formName, $method, $action, $target, $attributes, $trackSubmit) ;
}
 
/**
*
*
* @return void
* @access public
*/
function construitFormulaire($url, $liste_pays)
{
$squelette =& $this->defaultRenderer();
$squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'{content}'."\n".'</form>'."\n");
$squelette->setElementTemplate( '<li class="liste_inscription">'."\n".'{label}'."\n".'{element}'."\n".
'<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
'<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
'</li>'."\n");
$squelette->setGroupElementTemplate ('<span class="groupe_formulaire">{label}{element}</span>', 'groupe_mot_de_passe') ;
$squelette->setGroupElementTemplate ('<span class="groupe_formulaire">{label}{element}</span>', 'groupe_cp_ville') ;
$squelette->setGroupElementTemplate ('<span class="groupe_formulaire">{label}{element}</span>', 'groupe_nom') ;
$squelette->setRequiredNoteTemplate("\n".'<p>'."\n".'<span class="symbole_obligatoire">*</span> {requiredNote}'."\n".'</p>'."\n");
$fieldset_debut = '<fieldset>'."\n".
'<legend>'.INS_AJOUT_MEMBRE.'</legend>'."\n".
'<ul>'."\n";
$this->addElement('html', $fieldset_debut);
$this->addElement ('text', 'email', INS_EMAIL) ;
$this->addRule ('email', INS_EMAIL_REQUIS, 'required','', 'client') ;
$this->addRule ('email', INS_MAIL_INCORRECT, 'email', '', 'client') ;
$this->registerRule('doublonmail', 'callback', 'verif_doublonMail');
$this->addRule('email', INS_MAIL_DOUBLE, 'doublonmail', true);
// A faire, grouper les mots de passe
$this->addElement ('password', 'mot_de_passe', INS_MOT_DE_PASSE) ;
$this->addElement ('password', 'mot_de_passe_repete', INS_REPETE_MOT_DE_PASSE) ;
$this->addRule ('mot_de_passe', INS_MOT_DE_PASSE_REQUIS, 'required', '', 'client') ;
$this->addRule ('mot_de_passe_repete', INS_MOT_DE_PASSE_REQUIS, 'required', '', 'client') ;
$this->addRule (array ('mot_de_passe', 'mot_de_passe_repete'), INS_MOTS_DE_PASSE_DIFFERENTS, 'compare', '', 'client') ;
$nom_prenom[] = & HTML_QuickForm::createElement ('text', 'nom', INS_NOM) ;
$nom_prenom[] = & HTML_QuickForm::createElement ('text', 'prenom', INS_PRENOM) ;
$this->addGroup ($nom_prenom, 'groupe_nom', '', '', false) ;
if (INS_UTILISE_WIKINI) {
$this->addElement ('text', 'nom_wikini', INS_NOM_WIKI) ;
$this->addRule ('nom_wikini', INS_MAUVAIS_NOM_WIKI, 'regex', '/(!?[A-Z][A-Za-z0-9]*[a-z0-9]+[A-Z][A-Za-z0-9]*)/', 'client') ;
$this->registerRule('doublonwikini', 'callback', 'verif_doublonNomWiki');
$this->addRule('nom_wikini', INS_NOMWIKI_DOUBLE, 'doublonwikini', true);
}
$this->addElement ('text', 'adresse_1', INS_ADRESSE) ;
$this->addElement ('text', 'adresse_2', INS_ADRESSE) ;
$this->addElement ('text', 'region', INS_REGION) ;
$cp_ville[] = & HTML_QuickForm::createElement ('text', 'cp', INS_CODE_POSTAL) ;
$cp_ville[] = & HTML_QuickForm::createElement ('text', 'ville', INS_VILLE) ;
$this->addGroup ($cp_ville, 'groupe_cp_ville', '', '', false) ;
$this->addGroupRule ('groupe_cp_ville', INS_CODE_POSTAL_REQUIS, 'required', '', 1, 'client') ;
// L'élément pays est construit à partir du tableau liste_pays
 
$this->addElement ('select', 'pays', INS_PAYS, $liste_pays) ;
$this->addElement ('text', 'site', INS_SITE_INTERNET) ;
// on fait un groupe avec les boutons pour les mettres sur la même ligne
$buttons[] = &HTML_QuickForm::createElement('button', 'annuler', INS_ANNULER, array ("onclick" => "javascript:document.location.href='".$url."'"));
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider', INS_VALIDER);
$this->addGroup($buttons, null, null, '&nbsp;');
$fieldset_fin = '</ul>'."\n".
'</fieldset>'."\n";
$this->addElement('html', $fieldset_fin);
 
$this->setRequiredNote(INS_CHAMPS_REQUIS) ;
} // end of member function construitFormulaire
/** Modifie le formulaire pour l'adapter au cas des structures
*
*
* @return void
* @access public
*/
function formulaireStructure()
{
$this->removeElement('groupe_nom') ;
$this->removeElement('email', false) ;
$mail = & HTML_QuickForm::createElement ('text', 'email', INS_MAIL_STRUCTURE) ;
$this->insertElementBefore ($mail, 'mot_de_passe') ;
$nom_structure = & HTML_QuickForm::createElement ('text', 'nom', INS_NOM_STRUCTURE) ;
$this->insertElementBefore ($nom_structure, 'email') ;
$this->removeElement ('site', false) ;
$site_structure = & HTML_QuickForm::createElement ('text', 'site', INS_SITE_STRUCTURE) ;
$this->insertElementBefore ($site_structure, 'pays') ;
$this->addElement ('hidden', 'est_structure', 1) ;
$sigle_structure = & HTML_QuickForm::createElement ('text', 'sigle_structure', INS_SIGLE_STRUCTURE) ;
$this->insertElementBefore ($sigle_structure, 'nom') ;
$this->addRule ('sigle_structure', INS_SIGLE_REQUIS, 'required', '', 'client') ;
}
/**
*
*
* @return string
* @access public
*/
function toHTML( )
{
$res = HTML_QuickForm::toHTML() ;
return $res ;
} // end of member function toHTML
 
 
 
}
 
class ListeDePays extends PEAR{
 
var $_db ;
/** Constructeur
* Vérifie l'existance de la table gen_pays_traduction
*
* @param DB Un objet PEAR::DB
* @return
*/
function ListeDePays (&$objetDB) {
$this->_db = $objetDB ;
$requete = "show tables" ;
$resultat = $objetDB->query ($requete) ;
if (DB::isError ($resultat)) {
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
}
while ($ligne = $resultat->fetchRow()) {
if ($ligne[0] == 'gen_pays_traduction') {
return ;
}
}
return $this->raiseError ('La table gen_pays_traduction n\'est pas présente dans la base de donnée !') ;
}
/** Renvoie la liste des pays traduite
*
* @param string une chaine de type i18n ou une chaine code iso langue (fr_FR ou fr ou FR)
* @return un tableau contenant en clé, le code iso du pays, en majuscule et en valeur le nom du pays traduit
*/
function getListePays ($i18n) {
if (strlen($i18n) == 2) {
$i18n = strtolower($i18n)."-".strtoupper($i18n) ;
}
$requete = "select gpt_id_pays, gpt_nom_pays_traduit from gen_pays_traduction where gpt_id_i18n='".$i18n."'" ;
$resultat = $this->_db->query ($requete) ;
if (DB::isError ($resultat)) {
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
}
if ($resultat->numRows() == 0) {
return $this->raiseError('Le code fourni ne correspond à aucun pays ou n\'est pas dans la table!') ;
}
$retour = array() ;
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
$retour[$ligne->gpt_id_pays] = $ligne->gpt_nom_pays_traduit ;
}
return $retour ;
}
}
 
?>
/trunk/client/inscription/langues/ins_langue_en.inc.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 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: ins_langue_en.inc.php,v 1.1 2004-12-15 13:32:43 alex Exp $
/**
* Fichier de traduction en anglais de l'application inscription
*
* Fichier de traduction en anglais de l'application inscription
*
*@package inscription
//Auteur original :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:43 $
// +------------------------------------------------------------------------------------------------------+
*/
 
define ("INS_NOM", "Name :") ;
define ("INS_PRENOM", "First name") ;
define ("INS_PAYS", "Country:") ;
define ("INS_LANGUES_PARLES", "Languages spoken :") ;
define ("INS_EMAIL", "E-mail :") ;
define ("INS_MOT_DE_PASSE", "Password:") ;
define ("INS_REPETE_MOT_DE_PASSE", "Repeat the password :") ;
define ("INS_ANNULER", "Cancel") ;
define ("INS_RETABLIR", "Restore") ;
define ("INS_VALIDER", "Validate") ;
define ("INS_MOTS_DE_PASSE_DIFFERENTS", "The two passwords are different !") ;
define ("INS_EMAIL_REQUIS", "You must enter your e-mail.") ;
define ("INS_MOT_DE_PASSE_REQUIS", "You must enter your password.") ;
 
define ("INS_MAIL_INCORRECT", "E-mail addresses must be in the following format, user@domain.ext") ;
define ("INS_MAIL_DOUBLE", "This e-mail has already been used") ;
define ("INS_NOTE_REQUIS", "Indicate the required fields") ;
define ("INS_MODIFIER_INSCRIPTION", "Modify your registration") ;
define ("INS_SUPPRIMER_INSCRIPTION", "Cancel your registration") ;
define ("INS_MESSAGE_BIENVENU", "You are registered to i-twinning ") ;
define ("INS_FICHE_PERSONNELLE", "Personal form") ;
define ("INS_DECONNEXION", "Logout") ;
define ("INS_INSCRIPTION", "Registration") ;
define ("INS_TEXTE_PERDU", "If you forgot your password, enter your e-mail address in the Login ".
"field below and click on Validate") ;
define ("INS_NOM_WIKI", "Wiki name") ;
define ("INS_MAUVAIS_NOM_WIKI", "The wiki name is not valid (ex : NameFirstname)") ;
define ("INS_DEJA_INSCRIT", "If you are already registered :") ;
define ("INS_ERREUR_LOGIN", "Unknown user or invalid password") ;
define ("INS_SI_PASSE_PERDU", "If you forgot your password") ;
define ("INS_INDIQUE_ADRESSE", "Enter your e-mail address in the field below.<br>\n".
"A new password will be sent to you ") ;
define ("INS_ENVOIE_PASSE", "Password e-mailing") ;
define ("INS_LAIUS_INSCRIPTION", "Click here for registration") ;
 
//============= L'envoie du mot de passe perdu par mail =============================
define ("INS_NOUVEAU_MOT_DE_PASSE", "Your new i-twinning password") ;
define ("INS_NOUVEAU_MOT_DE_PASSE_2", "Your new password : ") ;
define ("INS_NOUVEAU_MOT_DE_PASSE_LAIUS", "\n\n This password allows you to modify your personnal informations\n".
"in the i-t website\n.".
"http://www.vecam.org/i-j/\n\n") ;
define ("INS_MOT_DE_PASSE_ENVOYE_1", "Your new password has been sent to the address ") ;
define ("INS_MOT_DE_PASSE_ENVOYE_2", "Check your mail, remember your password and register again. Don't ".
"hesitate to change this password and replace it by an easier one.") ;
//============= L'envoie d'un mail de confirmation ===================================
// Ne pas utiliser d'entités HTML
define ("INS_MAIL_INSCRIPTION_1", "Votre inscription a bien été prise en compte.\n".
"Voici les informations que nous avons enregistré :\n") ;
define ("INS_MAIL_INSCRIPTION_2", "\nVous pouvez modifier votre inscription sur \nhttp://www.vecam.org/i-j/\n".
"rubrique Inscription.\n\n".
"L'équipe I-Jumelage.") ;
 
// Envoir d'un mail à la coordination
define ("INS_MAIL_COORD_SUJET", "A new registration on the I-Twinning") ;
define ("INS_MAIL_COORD_CORPS", "A new registration on the I-Twinning") ;
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.2 2004/09/01 16:38:44 alex
* modification du nom du package
*
* Revision 1.1 2004/07/06 15:42:17 alex
* en cours
*
* Revision 1.3 2004/06/25 14:25:40 alex
* ajout de labels
*
* Revision 1.2 2004/06/24 07:43:55 alex
* traduction
*
* Revision 1.1 2004/06/18 09:21:15 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
 
/trunk/client/inscription/langues/ins_langue_es.inc.php
New file
0,0 → 1,113
<?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: ins_langue_es.inc.php,v 1.1 2004-12-15 13:32:43 alex Exp $
/**
* Fichier de traduction en français de l'application inscription
*
* Fichier de traduction en français de l'application inscription
*
*@package inscription
//Auteur original :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:43 $
// +------------------------------------------------------------------------------------------------------+
*/
 
define ("INS_NOM", "Apellido") ;
define ("INS_PRENOM", "Nombre") ;
define ("INS_PAYS", "Pais") ;
define ("INS_LANGUES_PARLES", "Idiomas hablados") ;
define ("INS_EMAIL", "Correo electronico") ;
define ("INS_MOT_DE_PASSE", "Contraseña") ;
define ("INS_REPETE_MOT_DE_PASSE", "Repetir la contraseña") ;
define ("INS_ANNULER", "Cancelar") ;
define ("INS_RETABLIR", "Restablecer") ;
define ("INS_VALIDER", "Ingresar") ;
define ("INS_MOTS_DE_PASSE_DIFFERENTS", "Las contraseñas son diferentes!") ;
define ("INS_EMAIL_REQUIS", "Debe ingresar un correo electronico") ;
define ("INS_MOT_DE_PASSE_REQUIS", "Debe ingresar una contraseña.") ;
define ("INS_MAIL_INCORRECT", "El correo electronico debe tener una forma correcta, utilizador@domaine.ext") ;
define ("INS_MAIL_DOUBLE", "Este correo electronico ya es utilizado por otra persona") ;
define ("INS_NOTE_REQUIS", "Indicar los espacios requeridos") ;
define ("INS_MODIFIER_INSCRIPTION", "Modificar su inscripccion") ;
define ("INS_SUPPRIMER_INSCRIPTION", "Cancelar su inscripcion") ;
define ("INS_MESSAGE_BIENVENU", "Esta inscrito en I-Enlace") ;
define ("INS_FICHE_PERSONNELLE", "Ficha personal") ;
define ("INS_DECONNEXION", "Desconectar") ;
define ("INS_INSCRIPTION", "Inscripcion") ;
define ("INS_TEXTE_PERDU", "Si ha perdido su contraseña, indique su correo electronico en el espaciologin y haga clic en Ingresar") ;
define ("INS_NOM_WIKI", "Nombre wiki") ;
define ("INS_MAUVAIS_NOM_WIKI", "El nombre wiki no es valido (ex: NomPrenom)") ;
define ("INS_DEJA_INSCRIT", "Si ya esta inscrito") ;
define ("INS_ERREUR_LOGIN", "Utilizador desconocido o contraseña incorrecta") ;
define ("INS_SI_PASSE_PERDU", "Si ha perdido su contraseña ") ;
define ("INS_INDIQUE_ADRESSE", "indique su correo electronico en el espacio que sigue. Una nueva contraseñale sera enviada.") ;
define ("INS_LAIUS_INSCRIPTION", "Si no est&agrave; inscrito, haga clic en inscripci&oacute;n") ;
define ("INS_ENVOIE_PASSE", "Envio de la contraseña por correo electronico") ;
 
//=================== Envio de la contraseña perdida por correo electronico========================
 
define ("INS_NOUVEAU_MOT_DE_PASSE", "Su nueva contraseña I-Enlaces") ;
define ("INS_NOUVEAU_MOT_DE_PASSE_2", "Su nueva contraseña:") ;
define ("INS_NOUVEAU_MOT_DE_PASSE_LAIUS", "Esta contraseña le permite modificar las informaciones que le conciernen enel sitio de I-Enlace.Su nueva contraseña es enviada a la direccion") ;
define ("INS_MOT_DE_PASSE_ENVOYE_1", "Rebice su correo electronico, anote su nueva contraseña e idenfiquedirigiendose de nuevo a la inscripcion.No dude en cambiar esta contraseña para poner una mas simple y mas facil aretener. ") ;
 
//============= L'envoie d'un mail de confirmation ===================================
// Ne pas utiliser d'entités HTML
define ("INS_MAIL_INSCRIPTION_1", "Votre inscription a bien été prise en compte.\n".
"Voici les informations que nous avons enregistré :\n") ;
define ("INS_MAIL_INSCRIPTION_2", "\nVous pouvez modifier votre inscription sur \nhttp://www.vecam.org/i-j/\n".
"rubrique Inscription.\n\n".
"L'équipe I-Jumelage.") ;
// Envoir d'un mail à la coordination
define ("INS_MAIL_COORD_SUJET", "Un nouvel inscrit à I-Twinning") ;
define ("INS_MAIL_COORD_CORPS", "Un nouvel inscrit à I-Twinning") ;
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.2 2004/09/01 16:38:44 alex
* modification du nom du package
*
* Revision 1.1 2004/07/06 15:42:17 alex
* en cours
*
* Revision 1.4 2004/06/30 10:00:59 alex
* traduction
*
* Revision 1.3 2004/06/25 14:25:40 alex
* ajout de labels
*
* Revision 1.2 2004/06/24 07:43:55 alex
* traduction
*
* Revision 1.1 2004/06/18 09:21:15 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/client/inscription/langues/ins_langue_fr.inc.php
New file
0,0 → 1,147
<?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: ins_langue_fr.inc.php,v 1.1 2004-12-15 13:32:43 alex Exp $
/**
* Fichier de traduction en français de l'application inscription
*
* Fichier de traduction en français de l'application inscription
*
*@package inscription
//Auteur original :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:32:43 $
// +------------------------------------------------------------------------------------------------------+
*/
 
define ("INS_AJOUT_MEMBRE", "Ajout d'un nouveau membre") ;
define ("INS_NOM", "Nom") ;
define ("INS_PRENOM", "Pr&eacute;nom") ;
define ("INS_PAYS", "Pays :") ;
define ("INS_LANGUES_PARLES", "Langues parl&eacute;s") ;
define ("INS_EMAIL", "Adresse mail") ;
define ("INS_MOT_DE_PASSE", "Mot de passe :") ;
define ("INS_REPETE_MOT_DE_PASSE", "R&eacute;p&eacute;ter le mot de passe") ;
define ("INS_ADRESSE", "Adresse") ;
define ("INS_REGION", "R&eacute;gion") ;
define ("INS_CODE_POSTAL", "Code postal") ;
define ("INS_VILLE", "Ville") ;
define ("INS_SITE_INTERNET", "Site web personnel") ;
define ("INS_ADHERENT", "Vous &ecirc;tes adh&eacute;rents de personnes morales (associations, institutions, entreprise... )") ;
define ("INS_ORGANISME", "Organisme") ;
define ("INS_FONCTION", "Fonction") ;
define ("INS_ETES_BOTANISTE", "Vous &ecirc;tes botaniste :") ;
define ("INS_ACTIVITE_PROFESSIONNELLE", " Votre activit&eacute; professionnelle (ou celle que vous aviez)") ;
define ("INS_MEMBRE_ASSO", "Vous &ecirc;tes membre d'une association botanique, naturaliste, ou autre... :") ;
define ("INS_SPECIALISTE", " Vous &ecirc;tes sp&eacute;cialiste d'une discipline ou d'un groupe de plantes particulier, lequel :") ;
define ("INS_SPE_ZONE", "Vous &egrave;tes sp&eacute;cialiste d'une zone g&eacute;ographique, laquelle :") ;
define ("INS_ANNULER", "Annuler") ;
define ("INS_RETABLIR", "Rétablir") ;
define ("INS_VALIDER", "Valider") ;
define ("INS_MOTS_DE_PASSE_DIFFERENTS", "Les mots de passe sont diff&eacute;rents !") ;
define ("INS_EMAIL_REQUIS", "Vous devez saisir un email.") ;
define ("INS_MOT_DE_PASSE_REQUIS", "Vous devez saisir un mot de passe.") ;
define ("INS_MAIL_INCORRECT", "L'email doit avoir une forme correcte, utilisateur@domaine.ext") ;
define ("INS_MAIL_DOUBLE", "Cet email est d&eacute;j&agrave utilis&eacute; par quelqu'un d'autre") ;
define ("INS_CODE_POSTAL_REQUIS", "Vous devez indiquer un code postal") ;
define ("INS_NOTE_REQUIS", "Indique les champs requis") ;
define ("INS_MODIFIER_INSCRIPTION", "Modifier votre inscription") ;
define ("INS_SUPPRIMER_INSCRIPTION", "Supprimer votre inscription") ;
define ("INS_MESSAGE_BIENVENU", "Vous &ecirc;tes inscrit au r&eacute;seau") ;
define ("INS_FICHE_PERSONNELLE", "Fiche personnelle") ;
define ("INS_DECONNEXION", 'D&eacute;connexion') ;
define ("INS_INSCRIPTION", 'Inscription individuelle') ;
define ("INS_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 ("INS_NOM_WIKI", "Nom wiki") ;
define ("INS_MAUVAIS_NOM_WIKI", "Le nom wiki n'est pas valide (ex : NomPrenom)") ;
define ("INS_DEJA_INSCRIT", "D&eacute;j&agrave;  inscrit, identifiez-vous pour acc&eacute;der &agrave;  votre fiche personnelle :") ;
define ("INS_ERREUR_LOGIN", "Utilisateur inconnu ou mot de passe erronn&eacute;") ;
define ("INS_SI_PASSE_PERDU", "Si vous avez perdu votre mot de passe") ;
define ("INS_INDIQUE_ADRESSE", "Indiquer votre adresse email dans le champs ci-dessus.<br>\n".
"Un nouveau mot de passe vous sera envoyé.") ;
define ("INS_ENVOIE_PASSE", "Envoi du mot de passe par mail") ;
define ("INS_LAIUS_INSCRIPTION", "L'inscription au r&eacute;seau est libre et gratuite !") ;
define ("INS_LAIUS_INSCRIPTION_2", "Elle vous permet de :<br />
- consulter l'annuaire des personnes inscrites au R&eacute;seau et pouvoir ainsi &eacute;changer des informations;<br />
- acc&eacute;der &agrave;  certaines informations diffus&eacute;es sur le site ;<br />
- vous inscrire &agrave;  des projets ;<br />
- recevoir un bulletin &eacute;lectronique d'informations.") ;
define ("INS_CHAMPS_REQUIS", "Indique les champs requis") ;
define ("INS_INSCRIPTION_STRUCTURE", "Inscription structure") ;
define ("INS_MAIL_STRUCTURE", "E-mail de la structure") ;
define ("INS_NOM_STRUCTURE", "Nom de la structure") ;
define ("INS_SITE_STRUCTURE", "Site de la structure") ;
define ("INS_SIGLE_STRUCTURE", "Sigle de la structure") ;
define ("INS_SIGLE_REQUIS", "Le sigle de la structure est requis") ;
define ("INS_MESSAGE_INSCRIPTION", "Nous avons bien reçu votre demande d'inscription. Relevez votre messagerie et cliquer sur le lien pour valider votre inscription.") ;
define ("INS_MESSAGE_EXPIRATION", "Votre demande d'inscription a déjà été validé ou a expiré") ;
 
//============= L'envoie du mot de passe perdu par mail =============================
define ("INS_NOUVEAU_MOT_DE_PASSE", "Votre nouveau mot de passe") ;
define ("INS_NOUVEAU_MOT_DE_PASSE_2", "Votre nouveau mot de passe : ") ;
define ("INS_NOUVEAU_MOT_DE_PASSE_LAIUS", "\n\nCe mot de passe vous permet de modifier les informations\n".
"vous concernant dans le site\n\n") ;
define ("INS_MOT_DE_PASSE_ENVOYE_1", "Votre nouveau mot de passe a &eacute;t&eacute; ".
"envoy&eacute; &agrave; l'adresse") ;
define ("INS_MOT_DE_PASSE_ENVOYE_2", "Relevez votre messagerie, notez votre nouveau mot de passe et identifiez vous à ".
"nouveau en allant à l'inscription. N'h&eacute;sitez pas à changer ce mot de passe ".
"pour en mettre un plus simple, tr&egrave;s facile &agrave; retenir." );
//============= L'envoie d'un mail de confirmation ===================================
// Ne pas utiliser d'entités HTML
define ("INS_MAIL_INSCRIPTION_1", "Votre inscription a bien été prise en compte.\n".
"Voici les informations que nous avons enregistré :\n") ;
define ("INS_MAIL_INSCRIPTION_2", "\nVous pouvez modifier votre inscription sur \nhttp://www.vecam.org/i-j/\n".
"rubrique Inscription.\n\n".
"L'équipe I-Jumelage.") ;
 
// Envoir d'un mail à la coordination
define ("INS_MAIL_COORD_SUJET", "Un nouvel inscrit") ;
define ("INS_MAIL_COORD_CORPS", "Un nouvel inscrit") ;
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.2 2004/09/01 16:38:44 alex
* modification du nom du package
*
* Revision 1.1 2004/07/06 15:42:17 alex
* en cours
*
* Revision 1.4 2004/07/06 15:31:43 alex
* en cours
*
* Revision 1.3 2004/06/25 14:25:40 alex
* ajout de labels
*
* Revision 1.2 2004/06/24 07:43:55 alex
* traduction
*
* Revision 1.1 2004/06/18 09:21:15 alex
* version initiale
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/client/cartographie/cartographie.php
New file
0,0 → 1,280
<?php
 
//vim: set expandtab tabstop=4 shiftwidth=4:
// +-----------------------------------------------------------------------------------------------+
// | PHP version 4.0 |
// +-----------------------------------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
// +-----------------------------------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +-----------------------------------------------------------------------------------------------+
/**
*
*Page permettant l'affichage des informations de cartographie des inscrits
*
*@package cartographie
//Auteur original :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
//Autres auteurs :
*@copyright Tela-Botanica 2000-2004
*@version 03 mai 2004
// +-----------------------------------------------------------------------------------------------+
//
// $Id: cartographie.php,v 1.1 2004-12-15 13:33:03 alex Exp $
// FICHIER : $RCSfile: cartographie.php,v $
// AUTEUR : $Author: alex $
// VERSION : $Revision: 1.1 $
// DATE : $Date: 2004-12-15 13:33:03 $
*/
 
include_once 'client/cartographie/configuration/car_config.inc.php' ;
if (isset($lang)) {
include_once CAR_CHEMIN_APPLI."/langues/car_langue_$lang.inc.php" ;
} else {
include_once CAR_CHEMIN_APPLI.'/langues/car_langue_fr.inc.php' ;
}
 
include_once CAR_CHEMIN_APPLI.'/bibliotheque/lib.carto.php' ;
include_once CAR_CHEMIN_APPLI.'/bibliotheque/car_cartographie.fonct.php' ;
include_once 'HTML/QuickForm.php' ;
 
// Ajout d'une feuille de style externe
GEN_stockerStyleExterne ('cartographie', 'client/cartographie/cartographie.css') ;
 
if (isset($GLOBALS['logout']) && $GLOBALS['logout']==1) {
$GLOBALS['car_auth']->logout();
}
//================================================================================================
//================================================================================================
function AUTH_formulaire_login() {
// l'url de la page en cours
$url = CAR_URL;
 
$res = '';
$form = new HTML_QuickForm ('inscription', 'post', preg_replace ('/&amp;/', '&', $url).'&historique_cartes='.$GLOBALS['historique_cartes'].'&fin=true') ;
$form->addElement ('text', 'username', CAR_EMAIL) ;
$form->addElement ('password', 'password', CAR_MOT_DE_PASSE) ;
$form->addElement('submit', 'connexion', CAR_VALIDER);
$res .= $form->toHTML() ;
$res .= "<div>".CAR_LAIUS_INSCRIPTION."&nbsp;<a href=\"\">".CAR_S_INSCRIRE."</a></div>\n" ;
$res .= "<div>".CAR_TEXTE_PERDU."</div>\n" ;
return $res;
}
 
function afficherContenuCorps ()
{
global $image_x;
global $image_y;
global $historique_cartes;
global $mailer;
global $fin;
global $sendpwd;//utilisé dans liste_inscrit.php
global $select;//utilisé dans liste_inscrit.php
global $liste_zone_carte;
//===========================================================================================================
$requete_01 =
"SELECT CP_ID_Continent,count(cp_id_continent) as nbr".
" FROM ".CAR_ANNUAIRE.", carto_PAYS".
" WHERE ".CAR_CHAMPS_CE_PAYS." = cp_id_pays".
" GROUP BY cp_id_continent";
 
$resultat_01 = $GLOBALS['car_db']->query ($requete_01) ;
if (DB::isError($resultat)) {
die ($resultat_01->getMessage().'<br />'.$resultat_01->getDebugInfo()) ;
}
$tableau_ad_continent=array();
while ($ligne_01 = $resultat_01->fetchRow(DB_FETCHMODE_OBJECT)) {
$tableau_ad_continent[$ligne_01->CP_ID_Continent] = $ligne_01->nbr;
}
$info_continent['nom_table_zone'] = 'carto_CONTINENT';
$info_continent['nom_chp_id_zone'] = 'CC_ID_Continent';
$info_continent['nom_chp_nom_zone'] = 'CC_Intitule_continent';
$info_continent['nom_chp_rouge'] = 'CC_Couleur_R';
$info_continent['nom_chp_vert'] = 'CC_Couleur_V';
$info_continent['nom_chp_bleu'] = 'CC_Couleur_B';
$info_continent['nom_chp_zone_sup'] = '';
$info_continent['tableau_valeurs_zone'] = $tableau_ad_continent;
//============================================================================================================
$requete_02 = 'SELECT CC_ID_Continent FROM carto_CONTINENT';
$resultat_02 = $GLOBALS['car_db']->query ($requete_02) ;
if (DB::isError($resultat)) {
die ($resultat_02->getMessage().'<br />'.$resultat_02->getDebugInfo()) ;
}
while ($ligne_02 = $resultat_02->fetchRow(DB_FETCHMODE_OBJECT)) {
$requete_03 =
'SELECT CP_ID_Pays, count(cp_id_pays) as nbr '.
' FROM '.CAR_ANNUAIRE.', carto_PAYS'.
' WHERE '.CAR_CHAMPS_CE_PAYS.'= cp_id_pays'.
' AND cp_id_continent = "'.$ligne_02->CC_ID_Continent.'"'.
' GROUP BY cp_id_pays';
$resultat_03 = $GLOBALS['car_db']->query ($requete_03) ;
if (DB::isError($resultat_03)) {
die ($resultat_03->getMessage().'<br />'.$resultat_03->getDebugInfo()) ;
}
$tableau_ad_pays = array();
while ($ligne_03 = $resultat_03->fetchRow(DB_FETCHMODE_OBJECT)) {
$tableau_ad_pays[$ligne_03->CP_ID_Pays] = $ligne_03->nbr;
}
$info_pays[$ligne_02->CC_ID_Continent]['nom_table_zone'] = 'carto_PAYS';
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_id_zone'] = 'CP_ID_Pays';
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_nom_zone'] = 'CP_Intitule_pays';
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_rouge'] = 'CP_Couleur_R';
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_vert'] = 'CP_Couleur_V';
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_bleu'] = 'CP_Couleur_B';
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_zone_sup'] = 'CP_ID_Continent';
$info_pays[$ligne_02->CC_ID_Continent]['tableau_valeurs_zone'] = $tableau_ad_pays;
}
//============================================================================================================
$requete_04 = "SELECT * ,count(cd_id_departement) as nbr".
" FROM ".CAR_ANNUAIRE.", carto_DEPARTEMENT".
" WHERE ".CAR_CHAMPS_CE_PAYS." = 'fr'".
" AND a_numero_dpt = cd_id_departement".
" GROUP BY cd_id_Departement";
$resultat_04 = $GLOBALS['car_db']->query ($requete_04) ;
if (DB::isError($resultat_04)) {
die('
<H2 class="erreur">Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_04.
'<br/><br/><b>Erreur : </b>'.$resultat_04->getMessage());
}
$tableau_ad_dpt_france = array();
while ($ligne_04 = $resultat_04->fetchRow(DB_FETCHMODE_OBJECT)) {
$tableau_ad_dpt_france[$ligne_04->CD_ID_Departement] = $ligne_04->nbr;
}
$info_dpt_france['nom_table_zone'] = 'carto_DEPARTEMENT';
$info_dpt_france['nom_chp_id_zone'] = 'CD_ID_Departement';
$info_dpt_france['nom_chp_nom_zone'] = 'CD_Intitule_departement';
$info_dpt_france['nom_chp_rouge'] = 'CD_Couleur_R';
$info_dpt_france['nom_chp_vert'] = 'CD_Couleur_V';
$info_dpt_france['nom_chp_bleu'] = 'CD_Couleur_B';
$info_dpt_france['nom_chp_zone_sup'] = 'CD_ID_Pays';
$info_dpt_france['tableau_valeurs_zone'] = $tableau_ad_dpt_france;
//============================================================================================================
 
//============================================================================================================
// On cree tout d'abord l'arborescence
$monde = new Carto_Carte ('continent', '', 'Monde', 'monde_masque5c.png', 'monde5c.png', CAR_CHEMIN_APPLI.'/fonds/', $info_continent);
$monde->definirCouleurs ('255', '255', '255','255', '250', '130','255', '204', '0','255', '153', '0') ;
$monde->historique_cartes = $historique_cartes;
$monde->image_x = $image_x;
$monde->image_y = $image_y;
$monde->liste_zone_carte = $liste_zone_carte;
$monde->url = CAR_URL;
foreach ($info_pays as $cle => $valeur) {
$requete_05 =
"SELECT CDC_Titre_carte, CDC_ID_Carte, CDC_Carte_fond, CDC_Carte_masque, CDC_ID_Zone_geo_carte".
" FROM carto_DESCRIPTION_CARTE, carto_ACTION ".
" WHERE CA_ID_Zone_geo = '$cle'".
" AND CA_Type_zone = 1".
" AND CA_ID_Carte_destination = CDC_ID_Carte";
$resultat_05 = $GLOBALS['car_db']->query ($requete_05) ;
if (DB::isError($resultat)) {
die ($resultat_05->getMessage().'<br />'.$resultat_05->getDebugInfo()) ;
}
$ligne_05 = $resultat_05->fetchRow(DB_FETCHMODE_OBJECT);
$monde->ajouterFils($ligne_05->CDC_ID_Carte, $ligne_05->CDC_ID_Zone_geo_carte, $ligne_05->CDC_Titre_carte,
$ligne_05->CDC_Carte_masque, $ligne_05->CDC_Carte_fond, $valeur);
$monde->fils[$ligne_05->CDC_ID_Carte]->definirCouleurs ('255', '255', '255','255', '250', '130','255', '204', '0','255', '153', '0') ;
}
$monde->fils['europe']->ajouterFils('france', 'fr', 'France' ,'france_masque.png', 'france.png', $info_dpt_france);
$monde->fils['europe']->fils['france']->definirCouleurs ('255', '255', '255','255', '250', '130','255', '204', '0','255', '153', '0') ;
// Une fois l'arborescence créée on lance la methode donnerFormulaireImage() pour recuperer la carte
// (dans $img). S'il n'y a pas de carte a afficher donnerFormulaireImage() renvoi false. On peut alors recuperer
// le niveau ou on en est grace a $monde->historique (du type continent*namerique*ca).
$res = '';
$img = false;
if ($mailer == 1 || $fin == true) {
$objet_carte = $_SESSION['carte'] ;
$monde = unserialize($objet_carte);}
else {
$img = $monde->donnerFormulaireImage();
}
// On teste donc img
if (!$img ) {
include 'liste_inscrit.php';
return $res;
}
else {
$historique_carte = new Carto_HistoriqueCarte ($monde, '&gt;', 'chemin_carto');
$res .= $historique_carte->afficherHistoriqueCarte();
$res .= "<br />\n" ;
$tab = explode('*',$monde->historique);
$res .= $img;
$res .= ''.CAR_CLIQUER;
$res .= '<br />'.CAR_COULEUR."\n";
$res .= '<div class="avertissement_carto" id="d"><strong>'.CAR_AVERTISSEMENT_TITRE.' : </strong>';
$res .= CAR_AVERTISSEMENT."</div>\n";
return $res;
}
}
 
 
//-- Fin du code source ------------------------------------------------------------
/*
* $Log: not supported by cvs2svn $
* Revision 1.2 2004/06/18 08:48:03 alex
* améliorations diverses
*
* Revision 1.1 2004/06/09 13:56:47 alex
* corrections diverses
*
* Revision 1.9 2003/05/06 12:49:27 alex
* remplacement include par include_once
*
* Revision 1.8 2003/03/07 15:20:32 jpm
* Correction d'une erreur de texte.
*
* Revision 1.7 2003/02/28 08:43:33 jpm
* Gestion des nouvelles tables MySql carto.
*
* Revision 1.6 2003/02/21 13:50:19 jpm
* Mise à jour nouvel objet Carto_Carte.
*
* Revision 1.5 2003/02/17 14:33:52 jpm
* Modification pour être compatible avec la nouvelle classe carte.
*
*
*/
?>
/trunk/client/cartographie/langues/car_langue_fr.inc.php
New file
0,0 → 1,96
<?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: car_langue_fr.inc.php,v 1.1 2004-12-15 13:31:21 alex Exp $
/**
* Fichier de traduction en français de l'application inscription
*
* Fichier de traduction en français de l'application inscription
*
*@package vecam
//Auteur original :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:31:21 $
// +------------------------------------------------------------------------------------------------------+
*/
 
define ("CAR_NOM", "Nom") ;
define ("CAR_PRENOM", "Pr&eacute;nom") ;
define ("CAR_DATE_INS", "Date d'inscription") ;
define ("CAR_REGION", "R&eacute;gion") ;
define ("CAR_CP", "CP") ;
define ("CAR_VILLE", "Ville") ;
define ("CAR_PAYS", "Pays :") ;
define ("CAR_LANGUES_PARLES", "Langues parl&eacute;s :") ;
define ("CAR_EMAIL", "E-mail :") ;
define ("CAR_MOT_DE_PASSE", "Mot de passe :") ;
define ("CAR_REPETE_MOT_DE_PASSE", "R&eacute;p&eacute;ter le mot de passe :") ;
define ("CAR_RETABLIR", "Rétablir") ;
define ("CAR_VALIDER", "Valider") ;
define ("CAR_MOTS_DE_PASSE_DIFFERENTS", "Les mots de passe sont diff&eacute;rents !") ;
define ("CAR_EMAIL_REQUIS", "Vous devez saisir un email.") ;
define ("CAR_MOT_DE_PASSE_REQUIS", "Vous devez saisir un mot de passe.") ;
define ("CAR_MAIL_INCORRECT", "L'email doit avoir une forme correcte, utilisateur@domaine.ext") ;
define ("CAR_NOTE_REQUIS", "Indique les champs requis") ;
define ("CAR_MODIFIER_INSCRIPTION", "Modifier votre inscription") ;
define ("CAR_SUPPRIMER_INSCRIPTION", "Supprimer votre inscription") ;
define ("CAR_MESSAGE_BIENVENU", "Vous &ecirc;tes inscrit &agrave; I-Jumelage") ;
define ("CAR_DECONNEXION", 'D&eacute;connexion') ;
define ("CAR_INSCRIPTION", 'Inscription') ;
define ("CAR_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 ("CAR_CHECK_UNCHECK", "Cocher les cases pour s&eacute;lectionner votre destinataire ou cocher / d&eacute;cocher tout") ;
define ("CAR_ENVOYER_MAIL", "Envoyer un email") ;
define ("CAR_SUJET", "Sujet") ;
define ("CAR_MESSAGE", "Message") ;
define ("CAR_ENVOYER", "Envoyer") ;
define ("CAR_LABEL_PROJET", "au serveur de ressources pour les r&eacute;seaux") ;
define ("CAR_CLIQUER", "Cliquez sur une zone de la carte pour zoomer.") ;
define ("CAR_COULEUR", "La couleur est proportionnelle au nombre d'inscrits.") ;
define ("CAR_AVERTISSEMENT_TITRE", "Avertissement et d&eacute;ni de responsabilit&eacute;") ;
define ("CAR_AVERTISSEMENT", "La représentation et l'utilisation des fronti&egrave;res, des noms g&eacute;ographiques et autres ".
" donn&eacute;es employ&eacute;s sur les cartes et utilis&eacute;s dans les listes,".
" les tableaux, les documents et les bases de donn&eacute;es de ce site ne sont pas garanties sans ".
"erreurs, de m&ecirc;me qu'elles n'engagent pas la responsabilit&eacute; des auteurs de ce site ni ".
"n'impliquent de reconnaissance officielle de leur part.") ;
define ("CAR_MONDE", "Monde") ;
define ("CAR_CLIQUER_ACCEDER", "Cliquer sur la carte pour zoomer ou acc&eacute;der aux informations&nbsp;&nbsp;") ;
define ("CAR_LAIUS_INSCRIPTION", "Pour consulter la liste des inscrits &acirc;  i-jumelages, vous devez &ecirc;tre inscrit comme membre de la communaut&eacute; des i-jumelages.") ;
define ("CAR_S_INSCRIRE", "S'inscrire") ;
 
define ("CAR_MESSAGE_ENVOYE", "Votre message a &eacute;t&eacute; envoy&eacute;") ;
define ("CAR_MESSAGE_ENVOYE_A", "Ce message a été envoyé à") ; // pas d'entités HTML, c'est pour un mail
define ("CAR_AUCUN_INSCRIT", "aucun inscrit") ;
define ("CAR_INSCRIT", "inscrits") ;
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2004/06/18 08:49:57 alex
* version initiale, pour vecam
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/client/cartographie/cartographie.css
New file
0,0 → 1,101
/*
 
+----------------------------------------------------------------------------+
| cartographie.css |
+----------------------------------------------------------------------------+
| Copyright (c) 2004 Tela Botanica |
+----------------------------------------------------------------------------+
| Feuille de style specifique a l'application cartographie de Tela Botanica |
+----------------------------------------------------------------------------+
| Auteur : Tamara LE BOURG <tamara@tela-botanica.org> |
+----------------------------------------------------------------------------+
 
*/
 
#carto {
text-align:left;
}
 
#table_carto {
border: 1px solid #E8AE3B;
border-collapse: collapse;
width:100%;
}
 
.avertissement_carto {
font-size:10px;
font-family:Verdana, Sans-serif;
margin: 10px 77px 0 0;
text-align:justify;
}
 
a.chemin_carto {
text-decoration:none;
font-weight:bold;
}
 
th {
border: 1px 0px 1px 0px solid #E8AE3B;
background-color: #FFCD9B;
color: #775522;
padding: 2px;
}
 
ul.liste_carto {
margin: 0px;
}
 
li.liste_carto {
list-style-type: none;
margin: 0px;
}
 
.ligne_impaire {
background-color: #FFFFFF;
font-size: 85%;
border: none;
padding: 2px;
 
}
 
.ligne2_impaire {
background-color: #FFFFFF;
font-size: 85%;
border: none;
padding: 2px;
}
 
.ligne_paire {
background-color: #FFEBD7;
font-size: 85%;
border: none;
padding: 2px;
 
}
 
.ligne2_paire {
background-color: #FFEBD7;
font-size: 85%;
border: none;
padding: 2px;
}
 
.titre1_carto {
font-family: Arial, Verdana, Helvetica, sans-serif;
margin: 3px 0;
font-size: 130%;
margin-top: 1em;
}
 
.titre2_carto {
font-family: Arial, Verdana, Helvetica, sans-serif;
margin: 3px 0;
font-size: 110%;
margin-top: 1em;
}
 
.carto_erreur {
color: #CC6633;
font-weight: bold;
text-decoration: blink;
}
/trunk/client/cartographie/liste_inscrit.php
New file
0,0 → 1,210
<?
// +--------------------------------------------------------------------------------+
// | liste_inscrit.php |
// +--------------------------------------------------------------------------------+
// | Copyright (c) 2002 |
// +--------------------------------------------------------------------------------+
// | |
// +--------------------------------------------------------------------------------+
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> |
// +--------------------------------------------------------------------------------+
//
// $Id: liste_inscrit.php,v 1.1 2004-12-15 13:33:03 alex Exp $
 
global $HTTP_USER_AGENT;
 
$classe_titre = 'titlePage' ;
 
$javascript = "function confirmer ()
{
if (window.confirm ('Cliquez sur OK pour confirmer.')) {
window.formmail.submit();
}
}
function setCheckboxes(the_form)
{
var do_check=document.forms[the_form].elements['selecttotal'].checked;
var elts = document.forms[the_form].elements['select[]'];
var elts_cnt = (typeof(elts.length) != 'undefined')
? elts.length
: 0;
if (elts_cnt) {
for (var i = 0; i < elts_cnt; i++) {
elts[i].checked = do_check;
} // Fin for
}
else {
elts.checked = do_check;
} // Fin if... else
return true;
} // Fin de la fonction 'setCheckboxes()'";
 
GEN_stockerCodeScript($javascript);
 
$url = CAR_URL ;
 
$res = "";
 
$tabmonde = explode ('*',$monde->historique);
 
// Premier cas, on vient de cliquer sur un pays qui n'est pas
// la France, on affiche les adhérents de ce pays
 
if (count($tabmonde) == 3) {
$argument = $tabmonde[2];
$query = "select * from carto_PAYS where CP_ID_pays='$argument'";
$result = $GLOBALS['car_db']->query($query);
if (DB::isError($resultat)) {
die ($result->getMessage().'<br />'.$result->getDebugInfo()) ;
}
$row = $result->fetchRow(DB_FETCHMODE_OBJECT) ;
$pays = $row->CP_Intitule_pays;
$monde->nom = $monde->nom.'*'.$pays;
$tabonglet = explode ('*', $monde->historique);
$tabnom = explode ('*', $monde->nom);
$res .= "<b>\n";
foreach ($tabonglet as $key => $value) {
if ($key == 0) {
$chemin = $value;
$value = 'monde';
$res .= "<a class=\"chemin_carto\" href=\"".$monde->url."&amp;historique_cartes=$chemin\">&nbsp;&gt;&nbsp;".$tabnom[$key]."</a>";
}
else if ($key == (count($tabonglet)-1)) {
$res .= "<a class=\"chemin_carto\">&nbsp;&gt;&nbsp;$pays</a>";
}
else {
$chemin .= '*'.$value;
$res .= "<a class=\"chemin_carto\" href=\"".$monde->url."&amp;historique_cartes=$chemin\">&nbsp;&gt;&nbsp;".$tabnom[$key]."</a>";
}
}
$res .= "</b>\n";
$capitale = $row->CP_Intitule_capitale;
$query2 = " SELECT count(".CAR_CHAMPS_ID.") as nbr".
" from ".CAR_ANNUAIRE.
" where ".CAR_CHAMPS_CE_PAYS."='$argument'";
$result2 = $GLOBALS['car_db']->query($query2);
if (DB::isError($resultat2)) {
die ($resultat2->getMessage().'<br />'.$resultat2->getDebugInfo()) ;
}
$row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT) ;
$res .= "<div class=\"$classe_titre\">$pays ($capitale) : " ;
if ($row2->nbr == 0) {
$res .= "aucun inscrit ".CAR_LABEL_PROJET ;
} else if ($row2->nbr == 1) {
$res .= $row2->nbr." inscrit ".CAR_LABEL_PROJET ;
} else {
$res .= $row2->nbr." inscrits ".CAR_LABEL_PROJET ;
}
$res .= "</div>\n";
if (!$GLOBALS['car_auth']->getAuth()) {
$res .= AUTH_formulaire_login();
} else {
$requete = "select * from ".CAR_ANNUAIRE.
" where ".CAR_CHAMPS_CE_PAYS."='$argument'".
" order by ".CAR_CHAMPS_NOM.", ".CAR_CHAMPS_PRENOM;
$res .= listes_inscrit ($requete, $url, $select, $argument, $GLOBALS['car_db']) ;
if ($mailer==1) {
if (!is_array($select)) {
$res .= "<div>".CAR_NO_DESTINATAIRE."</div>";
} else {
$res .= "<div class=\"$classe_titre\">".CAR_MESSAGE_ENVOYE."</div>\n" ;
envoie_mail() ;
}
} else {
$res .= carto_texte_cocher() ;
}
$res .= carto_formulaire($titre_mail, $corps) ;
}
 
// 2 ème cas, on vient de cliquer sur un département français
 
} else if (count($tabmonde) == 4) {
$argument = $tabmonde[3];
$query = "select * from gen_FRENCH_DPT where GFD_ID='$argument'";
$result = $GLOBALS['car_db']->query($query);
if (DB::isError($resultat)) {
die ($result->getMessage() .'<br />'.$result->getDebugInfo());
}
$row = $result->fetchRow(DB_FETCHMODE_OBJECT);
$nom = $row->GFD_NAME;
$tabonglet=explode ('*', $monde->historique);
$tabnom=explode ('*', $monde->nom);
$res.="<div><b>\n";
foreach ($tabonglet as $key=>$value) {
if ($key==0) {
$chemin=$value;
$value='monde';
$res.= "<a class=\"chemin_carto\" href=\"".$monde->url."&amp;historique_cartes=$chemin\">&nbsp;&gt;&nbsp;".$tabnom[$key]."</a>";
}
else if ($key==(count($tabonglet)-1)) {
$res.="<a class=\"chemin_carto\">&nbsp;&gt;&nbsp;$nom</a>";
}
else {
$chemin.='*'.$value;
$res.= "<a class=\"chemin_carto\" href=\"".$monde->url."&amp;historique_cartes=$chemin\">&nbsp;&gt;&nbsp;".$tabnom[$key]."</a>";
}
}
$res .= "</b></div>\n";
$query2 = " SELECT count(".CAR_CHAMPS_ID.") as nbr".
" FROM ".CAR_ANNUAIRE.
" WHERE ".CAR_CHAMPS_DPT." = '$argument'".
" AND ".CAR_CHAMPS_CE_PAYS."='fr'";
$result2 = $GLOBALS['car_db']->query($query2);
if (DB::isError($resultat2)) {
die ($resultat2->getMessage().'<br />'.$resultat2->getDebugInfo()) ;
}
$row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT);
$res .= "<div class=\"$classe_titre\">$nom : " ;
if ($row2->nbr == 0) {
$res .= CAR_AUCUN_INSCRIT." ".CAR_LABEL_PROJET ;
}
else if ($row2->nbr == 1) {
$res .= $row2->nbr." ".CAR_INSCRIT." ".CAR_LABEL_PROJET ;
}
else {
$res .= $row2->nbr." ".CAR_INSCRIT."s ".CAR_LABEL_PROJET ;
}
$res .= "</div>\n";
if (!$GLOBALS['car_auth']->getAuth()) {
$res .= AUTH_formulaire_login();
} else {
$requete = "SELECT * FROM ".CAR_ANNUAIRE.
" WHERE ".CAR_CHAMPS_DPT." = '$argument'".
" AND ".CAR_CHAMPS_CE_PAYS."='fr'".
" ORDER BY ".CAR_CHAMPS_NOM.", ".CAR_CHAMPS_PRENOM;
$res .= listes_inscrit ($requete, $url, $select, $argument, $GLOBALS['car_db'], 'france') ;
 
if ($mailer==1) {
if (!is_array($select)) {
$res.= CAR_NO_DESTINATAIRE;
} else {
$res .= "<div class=\"$classe_titre\">".CAR_MESSAGE_ENVOYE."</div>\n" ;
envoie_mail() ;
}
} else {
$res .=carto_texte_cocher() ;
}
$res .= carto_formulaire($titre_mail, $corps) ;
}
}
 
$res.="</div>";
?>
/trunk/client/cartographie/configuration/car_config.inc.php
New file
0,0 → 1,79
<?php
 
// +----------------------------------------------------------------------------+
// |car_config.inc.php |
// +----------------------------------------------------------------------------+
// | Copyright (c) 2004 Tela Botanica |
// +----------------------------------------------------------------------------+
// | Le module d'inscription amélioré, configuration |
// +----------------------------------------------------------------------------+
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> |
// +----------------------------------------------------------------------------+
//
// $Id: car_config.inc.php,v 1.1 2004-12-15 13:30:38 alex Exp $
 
 
 
 
/**
//=========================DEFINITION DE VARIABLES =================================
* Définition des variables globales
//==================================================================================
*/
 
$GLOBALS['car_auth'] = &$_GEN_commun['pear_auth'] ;
$GLOBALS['car_db'] = &$_GEN_commun['pear_db'] ;
 
/**
//==================================== LES URLS ==================================
* Constantes liées à l'utilisation des url
//==================================================================================
*/
define ("CAR_URL", $_GEN_commun['url']->getURL()) ;
 
/**
//==================================== LES CHEMINS =================================
* Constantes définissant les chemins d'accès aux différents fichiers inclus dans les
* applications.
//==================================================================================
*/
define("CAR_CHEMIN_APPLI",'client/cartographie') ;//le chemin vers l'application courrante
define("CAR_CHEMIN_LIBRAIRIE",'client/cartographie/bibliotheque/');//le chemin de la librairie de fichier php
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de tables et de champs dans l'annuaire
//==================================================================================
*/
 
define ("CAR_ANNUAIRE", "annuaire") ;
define ("CAR_CHAMPS_NOM", "a_nom") ; // Nom du champs nom
define ("CAR_CHAMPS_MAIL", "a_mail") ; // Nom du champs mail
define ("CAR_CHAMPS_PRENOM", "a_prenom") ; // Nom du champs prénom
define ("CAR_CHAMPS_CE_PAYS", "a_pays") ;
define ("CAR_CHAMPS_DPT", " a_numero_dpt") ;
define ("CAR_CHAMPS_ID", "a_id") ;
define ("CAR_CHAMPS_DATE_INS", "a_date_inscription") ;
define ("CAR_CHAMPS_REGION", "a_region") ;
define ("CAR_CHAMPS_CODE_POSTAL", "a_code_postal") ;
define ("CAR_CHAMPS_VILLE", "a_ville") ;
 
define ("PROJET_DPT", "gen_FRENCH_DPT") ; // Nom de la table département
define ("PROJET_PAYS", "gen_COUNTRY") ; // Nom de la table pays
 
/**
//==================================== CONSTANTES ==================================
* Constantes
//==================================================================================
**/
define ("CAR_TEXTE_FIN_MAIL", "\n---------------------------------------------------------------------------\n".
"Ce message vous est envoyé par l'intermédiaire du site Internet\n".
"(http://www.outils-reseaux.org) Serveur de ressources pour les réseaux\n".
"auquel vous êtes inscrit. D'autres inscrits peuvent avoir reçu ce message.\n".
"Ne répondez que si vous êtes concerné, ou si vous avez des informations\n".
"utiles à transmettre au demandeur.\n".
"----------------------------------------------------------------------------") ;
define ("CAR_NO_DESTINATAIRE", "Veuillez cocher au moins un destinataire pour votre mail");
 
define ("CAR_MAIL_ADMIN", "carto@outils-reseaux.org") ; // L'email de l'administrateur de la carto pour envoyer un message en double
?>
/trunk/client/cartographie/fonds/oceanie_masque.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/oceanie_masque.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/asie.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/asie.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/moyenorient_masque.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/moyenorient_masque.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/namerique.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/namerique.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/monde5c.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/monde5c.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/samerique.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/samerique.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/afrique.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/afrique.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/asie_masque.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/asie_masque.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/france.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/france.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/europe.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/europe.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/namerique_masque.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/namerique_masque.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/oceanie.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/oceanie.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/monde_masque5c.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/monde_masque5c.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/samerique_masque.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/samerique_masque.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/afrique_masque.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/afrique_masque.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/moyenorient.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/moyenorient.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/france_masque.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/france_masque.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/fonds/europe_masque.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/client/cartographie/fonds/europe_masque.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/client/cartographie/bibliotheque/car_cartographie.fonct.php
New file
0,0 → 1,165
<?php
 
//vim: set expandtab tabstop=4 shiftwidth=4:
// +-----------------------------------------------------------------------------------------------+
// | PHP version 4.0 |
// +-----------------------------------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
// +-----------------------------------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +-----------------------------------------------------------------------------------------------+
/**
*
*Page permettant l'affichage des informations de cartographie des inscrits
*
*@package cartographie
//Auteur original :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
//Autres auteurs :
*@copyright Tela-Botanica 2000-2004
*@version 03 mai 2004
// +-----------------------------------------------------------------------------------------------+
//
// $Id: car_cartographie.fonct.php,v 1.1 2004-12-15 13:30:20 alex Exp $
// FICHIER : $RCSfile: car_cartographie.fonct.php,v $
// AUTEUR : $Author: alex $
// VERSION : $Revision: 1.1 $
// DATE : $Date: 2004-12-15 13:30:20 $
*/
 
/** function carto_texte_cocher ()
*
*
* @return string HTML
*/
 
function carto_texte_cocher () {
$res .= "<div class=\"texte\">".CAR_CHECK_UNCHECK ;
$res .= "&nbsp;<input type=\"checkbox\" name=\"selecttotal\" onclick=\"javascript:setCheckboxes('formmail');\"></div>";
return $res ;
}
/** function carto_formulaire ()
*
*
*
* @return string HTML
*/
function carto_formulaire ($titre_mail="", $corps = "") {
global $HTTP_USER_AGENT, $GS_GLOBAL ;
$res .= "<div class=\"chapo\">".CAR_ENVOYER_MAIL."</div>\n";
$res .= "<div>\n<table width=\"100%\" border=\"0\">\n"
.'<tr><td class="texte">'.CAR_SUJET.' :</td>'."\n"
.'<td><input class="forml" type="text" name="titre_mail" size="60" value="'.$GLOBALS['titre_mail'].'"></td>'."\n"
.'</tr><tr><td class="texte" valign="top">'.CAR_MESSAGE.'&nbsp;:&nbsp;</td>'."\n"
.'<td><textarea class="forml" name="corps" rows="5" cols="60">'.$GLOBALS['corps'].'</textarea></td>'."\n"
.'</tr><tr><td></td><td align="center">';
if (ereg ("Gecko",$HTTP_USER_AGENT)) {
$res.='<input class="spip_bouton" type="submit" value="'.CAR_ENVOYER.'">';
} else {
$res.='<input class="spip_bouton" type="submit" onclick="javascript:confirmer();" value="'.CAR_ENVOYER.'">';
}
$res.="</td>\n</tr>\n</table>\n</div></form>\n";
return $res ;
}
 
/**
* Renvoie le code HTML de la liste des inscrits
* en fonction de la requete passé en parametre
*
* @return Renvoie le code HTML de la liste des inscrits
*/
 
function listes_inscrit ($requete, $url, $select, $argument, &$db, $niveau = 'pays') {
$res = "<div>";
$res .= "<form action=\"$url&amp;mailer=1"."&amp;select=$select\" method=\"post\" name=\"formmail\">\n
<tr><td>\n
<table id=\"table_outilsreseaux\" width=\"100%\">\n
<colgroup>
<col />
<col />
<col />
<col />
<col />
<col />
</colgroup>
<thead>\n
<th>&nbsp;</th>\n
<th>".CAR_NOM."</th>\n
<th>".CAR_PRENOM."</th>\n
<th>".CAR_DATE_INS."</th>\n
<th>".($niveau == 'pays' ? CAR_REGION : CAR_CP)."</th>\n
<th>".CAR_VILLE."</th>\n
</thead>\n";
 
$resultat= $GLOBALS['car_db']->query($requete);
if (DB::isError($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
}
$indic=0;
$i=1;
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
if ($indic==0) {
$res.="<tr class=\"ligne_impaire\">\n";
$indic=1;
}
else {
$res.="<tr class=\"ligne_paire\">\n";
$indic=0;
}
$res.="<td><input type=\"checkbox\" name=\"select[]\" value=\"".$ligne[CAR_CHAMPS_MAIL]."\"></td>\n
<td>".$ligne[CAR_CHAMPS_NOM]."&nbsp;</td>\n
<td>".$ligne[CAR_CHAMPS_PRENOM]."&nbsp;</td>\n
<td>".date("d m Y", strtotime($ligne[CAR_CHAMPS_DATE_INS]))."&nbsp;</td>\n
<td>".($niveau == 'pays' ? $ligne[CAR_CHAMPS_REGION] : $ligne[CAR_CHAMPS_CODE_POSTAL])."&nbsp;</td>\n
<td>".$ligne[CAR_CHAMPS_VILLE]."&nbsp;</td>\n" ;
$res .= "</tr>\n";
}
$res .= "</table></div>\n";
return $res ;
}
 
/** envoie_mail()
*
*
* @return envoie l'email
*/
 
function envoie_mail () {
$requete = "select ".CAR_CHAMPS_MAIL." from ".CAR_ANNUAIRE.
" where ".CAR_CHAMPS_ID."='".$GLOBALS['car_auth']->getAuthData (CAR_CHAMPS_ID)."'";
$resultat = $GLOBALS['car_db']->query($requete);
if (DB::isError($resultat)) {
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo());
}
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
$entete = "From: <".$ligne[CAR_CHAMPS_MAIL].">\n";
$GLOBALS['corps'] .= CAR_TEXTE_FIN_MAIL;
$GLOBALS['corps'] = stripslashes($GLOBALS['corps']) ;
$liste = "" ;
foreach ($GLOBALS['select'] as $key => $value) {
mail ($value, stripslashes($GLOBALS['titre_mail']), $GLOBALS['corps'] , $entete) ;
$liste .= $value."\n" ;
}
$GLOBALS['corps'] .= "\n----------------------------------------------------------------------------";
$GLOBALS['corps'] .= "\n".CAR_MESSAGE_ENVOYE_A." :\n $liste" ;
mail (CAR_MAIL_ADMIN, stripslashes($GLOBALS['titre_mail']), $GLOBALS['corps'], $entete);
$GLOBALS['corps'] = '';
$GLOBALS['titre_mail'] = '';
}
//-- Fin du code source ------------------------------------------------------------
/*
* $Log: not supported by cvs2svn $
*
*/
?>
/trunk/client/cartographie/bibliotheque/lib.carto.php
New file
0,0 → 1,1230
<?php
 
//vim: set expandtab tabstop=4 shiftwidth=4:
// +-----------------------------------------------------------------------------------------------+
// | PHP version 4.0 |
// +-----------------------------------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
// +-----------------------------------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +-----------------------------------------------------------------------------------------------+
/**
* Fichier regroupant toutes les classes de la carto
*
*Toutes les classe de la carto sont disponibles dans ce fichier.
*
*@package carto
//Auteur original :
*@author Nicolas MATHIEU
//Autres auteurs :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@copyright Tela-Botanica 2000-2003
*@version 01 juillet 2002
// +-----------------------------------------------------------------------------------------------+
//
// $Id: lib.carto.php,v 1.1 2004-12-15 13:30:20 alex Exp $
// FICHIER : $RCSfile: lib.carto.php,v $
// AUTEUR : $Author: alex $
// VERSION : $Revision: 1.1 $
// DATE : $Date: 2004-12-15 13:30:20 $
//
// +-----------------------------------------------------------------------------------------------+
// A FAIRE :
// 1.-Rendre cette classe indépendante de l'arborescence du site.
// On trouve encore des urls ou des chemins d'accé au fichier codé en dur dans l'appli
// Il faudrait pouvoir les paramétrés dans la classe.
// 2.- Supprimer l'attribut $this->historiques qui doit être devenu complétement obscoléte et le
// remplacer par $this->historique_cartes
// 3.- Renomer $this->liste_zone_carte en quelque chose de plus parlant...
*/
//Inclusion d'un autre fichier de librairie
include_once 'lib.couleur.php';
 
//Sert seulement en interne pour le débogage des requetes SQL
$NOM_FICHIER = 'lib.carto.php';
 
//==================================================================================================
// La classe Carto_HistoriqueCarte sert à pouvoir afficher les liens avec les carte précédentes
// On accède à cette fonctionnalité grâce à la méthode afficherHistoriqueCarte()
// L'objet Carto_HistoriqueCarte recoit en parametres :
// -la généalogie du niveau ou on en est (du type monde*europe*france )
// -l'url du document
// -en option : *le caractere de separation (par defaut c'est >)
// *la classe css des liens
//===================================================================================================
 
class Carto_HistoriqueCarte
{
var $historique;
var $url;
var $caractere_separation;
var $class_css;
var $nom;
 
function Carto_HistoriqueCarte ($objet_carte, $caractere = '&gt;', $class = '')
{
global $GS_GLOBAL;
 
$this->historique = $objet_carte->historique;
$this->url = $objet_carte->url;
$this->nom = $objet_carte->nom;
unset ($objet_carte);
$this->caractere_separation = $caractere;
$this->class_css = $class;
}//Fin du constructeur Carto_HistoriqueCarte().
function afficherHistoriqueCarte ()
{
$res='';
$tabonglet = explode ('*', $this->historique);
$tabnom = explode ('*', $this->nom);
foreach ($tabonglet as $key=>$value) {
if ($key == 0) {
$chemin = $value;
}
else {
$chemin .= '*'.$value;
}
$res.= '<a ';
if (!empty($this->class_css)) {
$res.='class="'.$this->class_css.'" ';
}
$res.='href="'.$this->url.'&amp;historique_cartes='.$chemin.'">&nbsp;'.$this->caractere_separation.'&nbsp;'.$tabnom[$key].'</a>';
}
return $res;
}//Fin de la méthode afficherHistoriqueCarte().
 
}//Fin de la classe Carto_HistoriqueCarte.
 
//================================================================================================
//La classe Action sert a definir les paramètres nécessaires pour recueillir l'action a réaliser en
// fonction des coordonnées du point, du masque et du niveau.
//Elle remplace la fonction get_cartoAction() que l'on peut trouver dans le fichier carto_commun.php
//des différentes application utilisant la carto.
// Les champs a renseigner sont les suivants :
// -le nom de la table ($nom_table_carto_action) où sont stokée les actions à réalisées
// en fonction des couleurs
// -les 5 champs principaux de la table :
// -l'identifiant de la zone géographique (un nom, un numéro ou une abréviation) -> $nom_champ_cle
// -les couleurs -> $nom_champ_rouge, $nom_champ_vert, $nom_champ_bleu
// -l'action -> $nom_champ_action
// Elle possède une seule méthode : get_cartoAction().
//================================================================================================
 
class Carto_Action
{
var $_table_zone_geo;
var $_id_zone_geo_zone;
var $_rouge;
var $_vert;
var $_bleu;
var $_table_action;
var $_id_carte_action;
var $_id_zone_geo_action;
var $_type_zone_geo_action;
var $_action;
var $_id_carte_destination;
function Carto_Action ($table_zone_geo, $zone_chp_id_zone, $chp_rouge,
$chp_vert, $chp_bleu, $table_carto_action, $action_chp_id_carte, $action_chp_id_zone,
$action_chp_type_zone, $chp_action, $chp_destination)
{
$this->_table_zone_geo = $table_zone_geo;
$this->_id_zone_geo_zone = $zone_chp_id_zone;
$this->_rouge = $chp_rouge;
$this->_vert = $chp_vert;
$this->_bleu = $chp_bleu;
$this->_table_action = $table_carto_action;
$this->_id_carte_action = $action_chp_id_carte;
$this->_id_zone_geo_action = $action_chp_id_zone;
$this->_type_zone_geo_action = $action_chp_type_zone;
$this->_action = $chp_action;
$this->_id_carte_destination = $chp_destination;
}
//**********************************************************************************************************
// Méthode get_cartoAction($imageX, $imageY, $masque, $id_carte)
// Elle renvoit l'action a réaliser.
// Nous passons les paramètres suivant :
// -les coordonnees du point ($imageX et $imageY)
// -le masque pour recuperer la couleur ($masque)
// -l'identifiant de la carte où nous nous trouvons ($id_carte)
//**********************************************************************************************************
function _consulterActionImage($imageX, $imageY, $masque, $id_carte)
{
// Nous récuperons les valeurs RVB de la couleur sur laquelle l'utilisateur a cliqué.
// Les valeurs RVB sont stockées dans le tableau associatif $valeurs_RVB.
$masque_courant = imagecreatefrompng($masque);
$index_couleur = imagecolorat($masque_courant,$imageX,$imageY);
$valeurs_RVB = imagecolorsforindex($masque_courant, $index_couleur);
// Nous effectuons une requete dans la table carto_ACTION pour récupérer la valeur
// du champ "action", afin de savoir quoi faire.
$requete =
'SELECT '.$this->_action.', '.$this->_id_carte_destination.', '.$this->_id_zone_geo_action.
' FROM '.$this->_table_action.', '.$this->_table_zone_geo.
' WHERE '.$this->_table_zone_geo.'.'.$this->_rouge.' = '.$valeurs_RVB['red'].
' AND '.$this->_table_zone_geo.'.'.$this->_vert.' = '.$valeurs_RVB['green'].
' AND '.$this->_table_zone_geo.'.'.$this->_bleu.' = '.$valeurs_RVB['blue'].
' AND '.$this->_table_action.'.'.$this->_id_zone_geo_action.' = '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.
' AND '.$this->_table_action.'.'.$this->_id_carte_action.' = "'.$id_carte.'"';
$resultat=mysql_query($requete) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$ligne = mysql_fetch_object ($resultat);
if (mysql_num_rows ($resultat) != 0) {
$chp_id_zone_geo = $this->_id_zone_geo_action;
$chp_action = $this->_action;
$chp_id_carte_destination = $this->_id_carte_destination;
$action['id_zone_geo'] = $ligne->$chp_id_zone_geo;
$action['type_action'] = $ligne->$chp_action;
$action['id_carte_destination'] = $ligne->$chp_id_carte_destination;
return $action;
}
}//Fin de la méthode _consulterActionImage().
//**********************************************************************************************************
// Méthode _consulterActionListe($id_zone_carte, $id_carte)
// Elle renvoit l'action a réaliser.
// Nous passons les paramètres suivant :
// -l'identifiant de la zone que l'on veut afficher
// -l'identifiant de la carte où nous nous trouvons ($id_carte)
//**********************************************************************************************************
function _consulterActionListe($id_zone_carte, $id_carte)
{
// Nous effectuons une requete dans la table carto_ACTION pour récupérer la valeur
// du champ "action", afin de savoir quoi faire.
$requete =
'SELECT '.$this->_action.', '.$this->_id_carte_destination.', '.$this->_id_zone_geo_action.
' FROM '.$this->_table_action.', '.$this->_table_zone_geo.
' WHERE '.$this->_table_action.'.'.$this->_id_zone_geo_action.' = '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.
' AND '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.' = "'.$id_zone_carte.'"'.
' AND '.$this->_table_action.'.'.$this->_id_carte_action.' = "'.$id_carte.'"';
$resultat=mysql_query($requete) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$ligne = mysql_fetch_object ($resultat);
if (mysql_num_rows ($resultat) != 0) {
$chp_id_zone_geo = $this->_id_zone_geo_action;
$chp_action = $this->_action;
$chp_id_carte_destination = $this->_id_carte_destination;
$action['id_zone_geo'] = $ligne->$chp_id_zone_geo;
$action['type_action'] = $ligne->$chp_action;
$action['id_carte_destination'] = $ligne->$chp_id_carte_destination;
return $action;
}
}//Fin de la méthode get_cartoAction().
}//Fin de la classe Carto_Action.
 
//================================================================================================
// L'objet carte est l'objet principal de la carto. C'est lui possede qui possède les methodes
//pour colorier les cartes.
// Il faut lui donner les parametres suivants :
// -le nom de la premier carte ($id).
// -le nom du masque ($masque).
// -le nom du fond de carte a colorier ($fond).
// -le tableau $info_table_couleur : il contient les renseignements concernant la table des couleurs ainsi
// qu'un autre tableau dans lequel figure le nombre d'elements par zone.
// L'objet comporte deux methodes principales :
// -'ajouterFils()' qui permet d'ajouter les cartes de niveau inferieur.
// -'donnerFormulaireImage()' qui lance l'action a faire en fonction de l'action de l'utilisateur.
// Il faut aussi penser a donner directement le champs url.
//================================================================================================
 
class Carto_Carte
{
/*|=============================================================================================|*/
/*| LES ATTRIBUTS DE LA CLASSE |*/
/*|---------------------------------------------------------------------------------------------|*/
var $id;
var $_id_zone_geo_carte;
var $nom;
var $masque;
var $fond;
var $chemin;
var $image;
var $fils;
var $url;
var $_info_table_zg;
var $filiation;
var $image_x;
var $image_y;
var $historique_cartes;
var $liste_zone_carte;
var $historique;
// La couleur dominante ( $maxiRVB ), la couleur la plus claire ($miniRVB) et la couleur
// intermédiaire précédant le maximum ( $mediumRVB ) au cas ou il y aurait un trop grand
//ecart entre les deux plus grandes valeurs.
var $_zeroR;
var $_zeroV;
var $_zeroB;
var $_miniR;
var $_miniV;
var $_miniB;
var $_mediumR;
var $_mediumV;
var $_mediumB;
var $_maxiR;
var $_maxiV;
var $_maxiB;
//Le type de formule mathématique permettant de colorier la carte
var $_formule_coloriage;
//L'action à réaliser
var $_action;
 
/*|=============================================================================================|*/
/*| LE CONSTRUCTEUR DE LA CLASSE |*/
/*|---------------------------------------------------------------------------------------------|*/
function Carto_Carte ($id, $id_zone_geo_carte, $nom, $masque, $fond, $chemin, $info_table)
{
$this->id = $id;
$this->_id_zone_geo_carte = $id_zone_geo_carte;
$this->nom = $nom;
$this->masque = $chemin.$masque;
$this->fond = $chemin.$fond;
$this->chemin = $chemin;
$this->_info_table_zg = $info_table;
$this->_action = new Carto_Action($info_table['nom_table_zone'],$info_table['nom_chp_id_zone'], $info_table['nom_chp_rouge'], $info_table['nom_chp_vert'], $info_table['nom_chp_bleu'],
'carto_ACTION', 'CA_ID_Carte', 'CA_ID_Zone_geo', 'CA_Type_zone', 'CA_Action', 'CA_ID_Carte_destination');
$this->fils = array();
$this->filiation = $id;
$this->historique_cartes = '';
$this->liste_zone_carte = '';
$this->definirCouleurs();
$this->definirFormuleColoriage();
}
/*|=============================================================================================|*/
/*| LES METHODES PUBLIQUES |*/
/*|---------------------------------------------------------------------------------------------|*/
function definirCouleurs (
$couleur_zero_R = '255', $couleur_zero_V = '255', $couleur_zero_B = '255',
$couleur_mini_R = '210', $couleur_mini_V = '230', $couleur_mini_B = '210',
$couleur_medium_R = '92', $couleur_medium_V = '181', $couleur_medium_B = '92',
$couleur_maxi_R = '0', $couleur_maxi_V = '127', $couleur_maxi_B = '0')
{
$this->_zeroR = $couleur_zero_R;
$this->_zeroV = $couleur_zero_V;
$this->_zeroB = $couleur_zero_B;
$this->_miniR = $couleur_mini_R;
$this->_miniV = $couleur_mini_V;
$this->_miniB = $couleur_mini_B;
$this->_mediumR = $couleur_medium_R;
$this->_mediumV = $couleur_medium_V;
$this->_mediumB = $couleur_medium_B;
$this->_maxiR = $couleur_maxi_R;
$this->_maxiV = $couleur_maxi_V;
$this->_maxiB = $couleur_maxi_B;
}
function definirFormuleColoriage ($nomFormuleColoriage = 'defaut')
{
$this->_formule_coloriage = $nomFormuleColoriage;
}
//********************************************************************************************************
// La méthode donnerImageSimple ($objet) permet de récupérer une image non cliquable.
//*********************************************************************************************************
function donnerImageSimple ($objet)
{
$nom_fichier_image = $this->_donnerIdUnique();
$objet->_lancerColoriage('', $nom_fichier_image);
$res = '<img src="cartographie/bibliotheque/lib.carto.extractimg.php?fichier='.$nom_fichier_image.'" alt="image.png">';
return $res;
}
//********************************************************************************************************
// La methode ajouterFils() est essentielle. Elle permet d'ajouter toutes les sous cartes voulues.
// Il faut lui indiquer, comme a la carte du niveau du dessus, son nom, le masque, le fond et info_table_couleur.
// On a ainsi une inclusion d'objets les uns dans les autres.
//*********************************************************************************************************
function ajouterFils ($id, $id_zone_geo_carte, $nom, $masque, $fond, $info_table)
{
$this->fils[$id] = new Carto_Carte ($id, $id_zone_geo_carte, $nom, $masque, $fond, $this->chemin, $info_table);
//Si on ajoute à la carte du monde comme fils celle de l'europe, alors
//on aura comme valeur pour $this->filiation de la carte d'europe : monde*europe
$this->fils[$id]->filiation = $this->filiation.'*'.$id;
$this->fils[$id]->url = $this->url;
//Si on ajoute à la carte du monde dont le nom est 'Monde' comme fils celle de l'europe,
//dont le nom est 'Europe', alors on aura comme valeur pour $this->nom de la carte d'europe : Monde*Europe
$this->fils[$id]->nom = $this->nom.'*'.$nom;
$this->fils[$id]->historique_cartes = $this->historique_cartes;
}
//*********************************************************************************************************
// La methode donnerFormulaireImage() est la methode principale de la carto. C'est elle qui gere ce qu'il y a faire en
// fonction de l'action de l'utilisateur.
// Trois cas se distinguent :
// -soit l'utilisateur a clique sur un point de la carte.
// -soit il a clique sur un des liens que l'on a afficher avec la méthode afficherHistoriqueCarte de l'objet Carto_HistoriqueCarte.
// -soit il a sélectionné une zone géographique dans la liste déroulante.
// Elle renvoit a la fin:
// -soit une nouvelle carte coloriée
// -soit false.
//**********************************************************************************************************
function donnerFormulaireImage ()
{
global $GS_GLOBAL;
$res = '';
// Nous commençons par tester tout d'abords si nous venons d'une autre carte. Pour cela nous vérifions,
// si les attributs $this->image_x et $this->image_y de la classe Carte existe ou ne sont pas null.
// La carte est une image appelée par une balise <input type="image"> et non par une balise classique <img>.
// Ansi, lorsqu'on clique sur la carte le formulaire appelle (via l'url du formulaire) l'application
// utilisant la classe carte et lui renvoit deux variables contenant les coordonnées x et y du clic.
// L'application instancie à nouveau les objets cartes mais cette fois ci la carte affichée dépendra des
// informations founit par une table de la base de données.
// La classe carto_action instanciée dans l'application utilisant la classe carte fournit les noms
// des champs et celui de la table contenant les valeur RVB de chaque zone des cartes, l'identifiant
// de la zone et l'action à entreprendre pour la zone conssidérée.
// La méthode imgform() utilise la méthode get_cartoAction() de l'objet Carto_Action pour connaître
// en fonction des coordonnées du clic l'action à entreprendre.
// Quoi qu'il arrive, on ouvre la balise formulaire
$res = '<form action="'.$this->url.'" method="post">'."\n";
$res .= '<p>'.CAR_CLIQUER_ACCEDER ;
if (isset ($this->image_x) && ($this->image_x != '') && isset ($this->image_y) && ($this->image_y != '')) {
// on regarde ici si l'on a pas un objet de plus bas niveau présent dans la variable de session carte
//a charger a la place de l'objet de plus haut niveau
$var_session_retour = $_SESSION['carte'] ;
if ($var_session_retour) {
$image_x = $this->image_x;
$image_y = $this->image_y;
$liste_zone_carte = $this->liste_zone_carte;
// Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
 
$historique_cartes = explode('*',$this->historique_cartes);
foreach ($historique_cartes as $key => $value) {
if ($key != 0) {
$this = $this->fils[$value];
}
}
$this->image_x = $image_x;
$this->image_y = $image_y;
$this->liste_zone_carte = $liste_zone_carte;
unset ($_SESSION['carte']) ;
}
// on regarde qu'est-ce qu'on doit faire grace a la methode _consulterAction() de l'objet Carto_Action
$action = $this->_action->_consulterActionImage($this->image_x, $this->image_y, $this->masque, $this->id);
// Nous distinguons 2 cas :
//le cas ou il faut afficher une nouvelle carte ... :
if ($action['type_action'] == 'Aller_a') {
$id_carte_destination = $action['id_carte_destination'] ;
$this->fils[$id_carte_destination]->liste_zone_carte = $this->liste_zone_carte;
$res .= ''.$this->fils[$id_carte_destination]->_donnerListeZoneCarte()."<br />\n";
$res .= '<input type="image" src="';
$id_image = $this->_donnerIdUnique();
$this->fils[$id_carte_destination]->_lancerColoriage($id_image);
$obj = serialize($this->fils[$id_carte_destination]);
$_SESSION['carte'] = $obj ;
$this->historique = $this->fils[$id_carte_destination]->filiation;
$this->id = $this->fils[$id_carte_destination]->id;
$this->nom = $this->fils[$id_carte_destination]->nom;
}
//Dans le cas où l'on veut rappeler une nouvelle carte, il se peut que la nouvelle carte à rappeler
//soit la même que précédement.
//Cette possibilité peut se présenter quand on clique sur un zone blanche d'une carte (càd dans la mer)
//Là, on recharge la carte précédente :
elseif ($action['type_action'] == 'Recharger') {
$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
$res .= '<input type="image" src="';
$id_image = $this->_donnerIdUnique();
$this->_lancerColoriage($id_image);
$obj = serialize($this);
$_SESSION['carte'] = $obj ;
$this->historique = $this->filiation;
}
// ... et le cas ou il faut lancer le dernier niveau
else if ($action['type_action'] == 'Stop') {
unset ($_SESSION['carte']) ;
$this->historique = $this->filiation.'*'.$action['id_zone_geo'];
$obj = serialize($this);
$_SESSION['carte'] = $obj ;
return false;
}
}
elseif ($this->liste_zone_carte != '') {
$liste_zone_carte = $this->liste_zone_carte;
$historique_cartes = explode('*',$this->historique_cartes);
foreach ($historique_cartes as $key => $value) {
if ($key != 0) {
$this = $this->fils[$value];
}
}
$this->liste_zone_carte = $liste_zone_carte;
$res .= ''.$this->_donnerListeZoneCarte($this->liste_zone_carte)."<br />\n";
$res .= '<input type="image" src="';
$id_image = $this->_donnerIdUnique();
$this->_lancerColoriage($id_image, '', $this->liste_zone_carte);
$this->historique = $this->historique_cartes;
$obj = serialize($this);
$_SESSION['carte'] = $obj ;
}
// On teste maintenant si l'on vient d'un lien. Si c'est le cas on a recu un argument
// qui nous donne la "genealogie" de la carte que l'on doit afficher
else if ($this->historique_cartes) {
// Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
$historique_cartes = explode('*',$this->historique_cartes);
foreach ($historique_cartes as $key => $value) {
if ($key != 0) {
$this = $this->fils[$value];
}
}
// une foit que l'on a charge le bon objet nous le colorions
$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
$res .= '<input type="image" src="';
$id_image = $this->_donnerIdUnique();
$this->_lancerColoriage($id_image);
$this->historique = $this->historique_cartes;
$obj = serialize($this);
$_SESSION['carte'] = $obj ;
}
// Enfin si on ne vient pas d'une carte ou d'un lien c'est que l'on vient de l'onglet carto du menu
// et on affiche alors la premiere carte
else {
unset ($_SESSION['carte']) ;
$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
$res .= '<input type="image" src="';
$id_image = $this->_donnerIdUnique();
$this->_lancerColoriage($id_image);
$this->historique = $this->id;
$obj = serialize($this);
$_SESSION['carte'] = $obj ;
}
$res .= CAR_CHEMIN_LIBRAIRIE.'/lib.carto.extractimg.php?fichier='.$this->id.$id_image.'"';
$res .= ' name="image" onmouseover="javascript:show(\'d\');" onmouseout="javascript:show(\'d\');" />'."\n";
$res .= '<input type="hidden" name="historique_cartes" value="'.$this->historique.'" /></p>';
$res .= '</form>'."\n";
return $res;
}
/*|=============================================================================================|*/
/*| LES METHODES PRIVEES |*/
/*|---------------------------------------------------------------------------------------------|*/
function _donnerListeZoneCarte($zone_par_defaut = '')
{
$retour = '';
$requete =
'SELECT '.$this->_info_table_zg['nom_chp_id_zone'].', '.$this->_info_table_zg['nom_chp_nom_zone'].
' FROM '.$this->_info_table_zg['nom_table_zone'];
if ($this->_info_table_zg['nom_chp_zone_sup'] != ''){
if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
$requete .=
' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = "'.$this->_id_zone_geo_carte.'"';
}
else{
$requete .=
' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = '.$this->_id_zone_geo_carte;
}
}
$requete .=
' ORDER BY '.$this->_info_table_zg['nom_chp_nom_zone'].' ASC';
$resultat = mysql_query ($requete) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$i=0;
$retour = '<select name="liste_zone_carte" onchange="javascript:this.form.submit();">'."\n";
$retour .= '<option value="">Visualiser une zone :</option>'."\n";
$nom_chp_nom_zone = $this->_info_table_zg['nom_chp_nom_zone'];
$nom_chp_id_zone = $this->_info_table_zg['nom_chp_id_zone'];
while ($ligne = mysql_fetch_object ($resultat)) {
if ($zone_par_defaut == $ligne->$nom_chp_id_zone){
$retour .= '<option value="'.$ligne->$nom_chp_id_zone.'" selected="selected">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
}
else {
$retour .= '<option value="'.$ligne->$nom_chp_id_zone.'">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
}
$i++;
}
$retour .= '</select>'."\n";
return $retour;
}
//==============================================================================
// METHODE _lancerColoriage()
//
// Elle lance le coloriage de l'image.
// Elle est lancée toute seule par la méthode donnerFormulaireImage().
// Les informations qui lui sont necessaires sont déjà données à l'objet carte (fond, info_table_couleur).
//==============================================================================
function _lancerColoriage ($id_image = '_00', $nom_fichier = '', $id_zone_a_reperer = '')
{
$this->image = imagecreatefrompng($this->fond);
$this->_colorierImage ($this->image, $this->_info_table_zg['nom_table_zone'], $this->_info_table_zg['nom_chp_id_zone'], $this->_info_table_zg['nom_chp_rouge'],
$this->_info_table_zg['nom_chp_vert'], $this->_info_table_zg['nom_chp_bleu'], $this->_info_table_zg['nom_chp_zone_sup'],
$this->_info_table_zg['tableau_valeurs_zone'], $id_zone_a_reperer) ;
if ($nom_fichier != '') {
imagepng(&$this->image,'tmp/carto/'.$nom_fichier.'.png');
//$this->image = imagepng(&$this->image);
}
else {
imagepng(&$this->image,'tmp/carto/'.$this->id.$id_image.'.png');
//imagepng(&$this->image);
}
}
//==============================================================================
// METHODE _colorierImage()
//
// Elle réalise le coloriage de l'image.
//==============================================================================
function _colorierImage (&$image_fond, $table_zone_geo, $chp_id_zone_couleur, $chp_rouge, $chp_vert, $chp_bleu, $chp_zone_sup, $tableau_valeurs_zone, $id_zone_a_reperer)
{
//----------------------------------------------------------------------------
// Cherche les valeurs RVB de la couleur de chaque zone géographique et les rentre dans
//un tableau d'objets Carto_InformationCouleur (voir la description de la classe ci-dessus.
$requete_01 =
'SELECT *'.
' FROM '.$table_zone_geo;
if ($chp_zone_sup != ''){
if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
$requete_01 .=
' WHERE '.$chp_zone_sup.' = "'.$this->_id_zone_geo_carte.'"';
}
else{
$requete_01 .=
' WHERE '.$chp_zone_sup.' = '.$this->_id_zone_geo_carte;
}
}
$resultat_01 = mysql_query ($requete_01) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_01.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$i=0;
$attachments = array();
while ($ligne_01 = mysql_fetch_object ($resultat_01)) {
$attachments[$i] = new Carto_InformationCouleur ($ligne_01->$chp_id_zone_couleur, $ligne_01->$chp_rouge, $ligne_01->$chp_vert, $ligne_01->$chp_bleu);
$i++;
}
//Nous libérons toute la mémoire associée à l'identifiant de résultat.
mysql_free_result ($resultat_01);
//----------------------------------------------------------------------------
// On realide l'association entre l'index des couleurs et la zone de meme couleur
$attachments = $this->_construireAssociationIndexZone ($image_fond, $attachments);
//----------------------------------------------------------------------------
//Dans l'application qui utilise la classe carte, nous avons instancié un tableau
//associatif qui contient en clé l'identifiant d'une zone géographique et en valeur
//un nombre (qui peut-être un nombre d'inscrit, d'institutions, de taxons...).
// Nous récupérons ci-dessous la valeur minimum autre que 0 présente dans ce tableau
//puis une valeur conscidérée comme maximum
if (!is_array($tableau_valeurs_zone)) {
$mini = 0;
$medium = 0;
$maxi = 0;
$nbre_valeurs = 0;
}
else {
if (count($tableau_valeurs_zone) == 0) {
$mini=0;
$medium = 0;
$maxi=0;
}
else {
$i=0;
foreach ($tableau_valeurs_zone as $cle => $valeur) {
//Nous recherchons le minimum, le maximum et le la valeur médium juste au dessous du maximum.
if ($valeur != 0) {
$tablo_valeurs[$i] = $valeur;
$i++;
}
}
//Nombre d'entrées dans le tableau de valeurs non nulles :
$nbre_valeurs = count($tablo_valeurs);
$somme_valeurs = array_sum($tablo_valeurs);
$tablo_frequences = array_count_values($tablo_valeurs);
$nbre_frequences = count($tablo_frequences);
if ($nbre_valeurs > 0){
//Nous trions le tableau dans l'ordre croissant :
sort($tablo_valeurs);
//Nous récupérons la valeur la plus petite :
$mini = $tablo_valeurs[0];
$maxi = $tablo_valeurs[$nbre_valeurs-1];
isset($tablo_valeurs[$nbre_valeurs-2]) ? $medium = $tablo_valeurs[$nbre_valeurs-2] : $medium = 0;
$moyenne = $somme_valeurs/$nbre_valeurs;
$ecart_au_carre_moyen = 0;
for ($i = 0; $i < $nbre_valeurs; $i++) {
$ecart_au_carre_moyen += pow(($tablo_valeurs[$i] - $moyenne), 2);
}
$variance = $ecart_au_carre_moyen/$nbre_valeurs;
$ecart_type = sqrt($variance);
$moyenne = round($moyenne, 0);
$variance = round($variance, 0);
$ecart_type = round($ecart_type, 0);
/*echo 'Nombre de valeurs : '.$nbre_valeurs.'<br>';
echo 'Nombre de frequences : '.$nbre_frequences.'<br>';
echo 'Moyenne : '.$moyenne.'<br>';
echo 'Variance : '.$variance.'<br>';
echo 'Ecart-type : '.$ecart_type.'<br>';
echo 'Formule de coloriage : '.$this->_formule_coloriage.'<br>';
echo "mini : $mini medium : $medium maxi : $maxi<br/>";
*/
}
}
}
 
//----------------------------------------------------------------------------
// Nous réalisons le coloriage de toutes les zones :
$requete_03 =
"SELECT $chp_id_zone_couleur ".
"FROM $table_zone_geo";
$resultat_03 = mysql_query ($requete_03) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_03.
'<br/><br/><b>Erreur : </b>'.mysql_error());
while ($ligne_03 = mysql_fetch_object ($resultat_03)) {
$id_zone_geo = $ligne_03->$chp_id_zone_couleur;
if (!isset ($tableau_valeurs_zone[$id_zone_geo])) {
$tableau_valeurs_zone[$id_zone_geo] = 0;
}
//Nous cherchons la couleur a afficher pour chaque zone.
if ($tableau_valeurs_zone[$id_zone_geo] != 0) {
//echo 'ZONE:'.$id_zone_geo."<br/>";
//echo $tableau_valeurs_zone[$id_zone_geo]."<br/>";
$theColor = $this->_donnerCouleur (
$this->_miniR, $this->_miniV, $this->_miniB,
$this->_mediumR , $this->_mediumV , $this->_mediumB ,
$this->_maxiR , $this->_maxiV , $this->_maxiB ,
$mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs,
$tablo_frequences, $nbre_frequences,
$tableau_valeurs_zone[$id_zone_geo],
$this->_formule_coloriage);
//echo $theColor['R'].'<br>';
//echo $theColor['V'].'<br>';
//echo $theColor['B'].'<br>';
}
else {
$theColor['R'] = $this->_zeroR;
$theColor['V'] = $this->_zeroV;
$theColor['B'] = $this->_zeroB;
}
//Nous réalisons le coloriage de toutes les zones de l'image avec la couleur obtenue.
$this->_remplacerCouleur ($image_fond, $attachments, $id_zone_geo, $theColor['R'], $theColor['V'], $theColor['B'], $id_zone_a_reperer);
}
//Nous libérons toute la mémoire associée à l'identifiant de résultat de la requête.
mysql_free_result ($resultat_03);
}
//==============================================================================
// METHODE _construireAssociationIndexZone ($image, &$att)
//
// Le tableau $att est passé par référence. La méthode modifie donc directement
// le tableau et ne renvoit donc rien.
// Attache dans un tableau $att, contenant sous forme d'objet (Carto_ColorInfo)
// les valeurs RVB des zones d'une image, la valeur de l'index correspondant
// à la couleur de la zone.
// Note : les images en question sont constituées de zones distincte possédant
// chacune une couleur unique et unie.
//==============================================================================
function _construireAssociationIndexZone (&$image_fond, &$att)
{
// Nous récupérons le nombre de couleur différentes contenues dans l'image.
//echo $this->fond.'<BR>';
$image_fond = imagecreatefrompng($this->fond);
$taille_palette = imagecolorstotal ($image_fond);
//echo $taille_palette.'<br>';
// Pour chaque couleur contenue dans l'image, nous cherchons l'objet correspondant
// dans le tableau $att, qui contient des informations sur chaque zone de l'image,
// et nous attribuons à l'objet la valeur de l'index de sa couleur dans l'image.
for ($i = 0; $i < $taille_palette; $i++) {
$valeurs_RVB = array();
$valeurs_RVB = imagecolorsforindex ($image_fond, $i);
for ($j = 0; $j < count ($att); $j++) {
if (($att[$j]->rouge == $valeurs_RVB['red']) && ($att[$j]->vert == $valeurs_RVB['green']) && ($att[$j]->bleu == $valeurs_RVB['blue'])) {
$att[$j]->index = $i;
//echo 'ICI'.$att[$j]->id_zone.$att[$j]->index.'<br>';
break;
}
}
}
return $att;
}//Fin méthode _construireAssociationIndexZone()
 
//==============================================================================
// METHODE _donnerCouleur()
//------------------------------------------------------------------------------
// Renvoie pour une valeur donnee la couleur a mettre
//------------------------------------------------------------------------------
// ENTREE
// $miniR : valeur rouge du minimum
// $miniV : valeur vert du minimum
// $miniB : valeur blue du minimum
// $maxiR : valeur rouge du maximum
// $maxiV : valeur vert du maximum
// $maxiB : valeur bleu du maximum
// $mediumR : valeur rouge du deuxieme maximum
// $mediumV : valeur vert du deuxieme maximum
// $mediumB : valeur bleu du deuxieme maximum
// $mini : valeur mini sur l'echelle
// $medium : valeur juste au dessous du maximum sur l'echelle
// $maxi : valeur maxi sur l'echelle
// $val : valeur dont on cherche la couleur
//------------------------------------------------------------------------------
// SORTIE
// $couleur array donne la couleur pour la valeur demande ($val)
//------------------------------------------------------------------------------
function _donnerCouleur ($miniR, $miniV, $miniB, $mediumR, $mediumV, $mediumB, $maxiR,
$maxiV, $maxiB, $mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs, $tablo_frequences, $nbre_frequences, $val, $formuleColoriage)
{
if ($formuleColoriage == 'defaut'){
if ($val == $maxi) {
$couleur['R'] = $maxiR;
$couleur['V'] = $maxiV;
$couleur['B'] = $maxiB;
}
if ($val == $mini && $val != $maxi) {
$couleur['R'] = $miniR;
$couleur['V'] = $miniV;
$couleur['B'] = $miniB;
}
if ($maxi/10 > $medium && $maxi/40 < $medium) {
$diff = $medium - $mini;
if ($diff > 0 && $val != $medium && $val != $maxi) {
$diffR = $mediumR - $miniR;
$diffV = $mediumV - $miniV;
$diffB = $mediumB - $miniB;
$variationR = round ( ($diffR/$diff ), 0 );
$variationV = round ( ($diffV/$diff ), 0 );
$variationB = round ( ($diffB/$diff ), 0 );
$couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
$couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
$couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
}
else if ($val == $medium) {
$couleur['R'] = $mediumR;
$couleur['V'] = $mediumV;
$couleur['B'] = $mediumB;
}
}
else {
$diff = $maxi - $mini;
if ($diff > 0 && $val != $maxi && $val != $mini) {
$diffR = $maxiR - $miniR;
$diffV = $maxiV - $miniV;
$diffB = $maxiB - $miniB;
$variationR = round ( ($diffR/$diff ), 0 );
$variationV = round ( ($diffV/$diff ), 0 );
$variationB = round ( ($diffB/$diff ), 0 );
$couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
$couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
$couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
}
else if ($diff == 0){
$couleur['R'] = $mediumR;
$couleur['V'] = $mediumV;
$couleur['B'] = $mediumB;
}
}
}
elseif ($formuleColoriage == 'ecart_type') {
if ($ecart_type == 0) {
$couleur['R'] = $maxiR;
$couleur['V'] = $maxiV;
$couleur['B'] = $maxiB;
}
elseif ($ecart_type >= 1 && $ecart_type <= 15) {
if ($val == $mini) {
$couleur['R'] = $miniR;
$couleur['V'] = $miniV;
$couleur['B'] = $miniB;
}
elseif ($val == $medium) {
$couleur['R'] = $mediumR;
$couleur['V'] = $mediumV;
$couleur['B'] = $mediumB;
}
elseif ($val == $maxi) {
$couleur['R'] = $maxiR;
$couleur['V'] = $maxiV;
$couleur['B'] = $maxiB;
}
else {
$dif_valeur_maxi_mini = $maxi - $mini;
$diffR = $maxiR - $miniR;
$diffV = $maxiV - $miniV;
$diffB = $maxiB - $miniB;
$variationR = round ( ($diffR/$dif_valeur_maxi_mini ), 0 );
$variationV = round ( ($diffV/$dif_valeur_maxi_mini ), 0 );
$variationB = round ( ($diffB/$dif_valeur_maxi_mini ), 0 );
$couleur['R']=$miniR + ($val * $variationR);
$couleur['V']=$miniV + ($val * $variationV);
$couleur['B']=$miniB + ($val * $variationB);
}
}
elseif ($ecart_type > 15) {
//Le tableau est trié de la plus petite à la plus grande clé.
ksort($tablo_frequences);
$i = 0;
foreach ($tablo_frequences as $cle => $valeur){
//Nous cherchons la correspondance entre la valeur et la clé.
if ($cle == $val) {
//Pour faire le Rouge, Vert, Bleu
$couleur['R'] = $miniR + ($i/$nbre_frequences) * ($maxiR - $miniR);
$couleur['V'] = $miniV + ($i/$nbre_frequences) * ($maxiV - $miniV);
$couleur['B'] = $miniB + ($i/$nbre_frequences) * ($maxiB - $miniB);
}
$i++;
}
}
}
return $couleur;
}//Fin méthode _donnerCouleur()
 
//==============================================================================
// METHODE _remplacerCouleur ($img, $att, $id_zone_geo, $r, $g, $b)
//
// $img is the image, $att an array of carto_colorinfo objects, $id_zone_geo the name
// of an object of $att, ($r, $g, $b) the new color.
//
// In the palette of $img, the color matching with $id_zone_geo is modified.
//==============================================================================
function _remplacerCouleur (&$image, &$atta, $id_zone_geo, $rouge, $vert, $bleu, $id_zone_a_reperer)
{
// Nous recherchons la valeur de l'index.
$index = -1;
for ($i = 0; $i < count ($atta); $i++) {
if ($atta[$i]->id_zone == $id_zone_geo) {
$index = $atta[$i]->index;
//Dans le cas où nous voulons repérer une zone sur la carte :
if($id_zone_geo == $id_zone_a_reperer) {
$rouge = 255;
$vert = 0;
$bleu = 0;
}
break;
}
}
// Nous mettons à jour l'image de la carte avec la valeur de l'index.
if ($index >= 0) {
imagecolorset (&$image, $index, $rouge, $vert, $bleu);
}
}//Fin de la méthode _remplacerCouleur
//==============================================================================
// METHODE _donnerIdUnique ()
//
// Cette méthode privée retourne un identifiant de 32 caractères unique.
//
//==============================================================================
function _donnerIdUnique ()
{
$id = '';
$id = md5 (uniqid (rand()));
return $id;
}//Fin de la méthode _donnerIdUnique()
 
 
}//Fin de la classe Carto_Carte()
 
//==============================================================================
// La classe Carto_InformationCouleur n'est utilisée que par la classe carte.
// C'est une classe privée.
// Elle sert à stocker les informations (RVB et index) sur la couleur d'une
// zone d'une image.
//==============================================================================
 
class Carto_InformationCouleur
{
/*|=============================================================================================|*/
/*| LES ATTRIBUTS DE LA CLASSE |*/
/*|---------------------------------------------------------------------------------------------|*/
var $id_zone;
var $rouge;
var $vert;
var $bleu;
var $index;
/*|=============================================================================================|*/
/*| LE CONSTRUCTEUR DE LA CLASSE |*/
/*|---------------------------------------------------------------------------------------------|*/
function Carto_InformationCouleur ($id_zone, $rouge, $vert, $bleu)
{
$this->id_zone = $id_zone;
$this->rouge = $rouge;
$this->vert = $vert;
$this->bleu = $bleu;
$this->index = -1;
}
}//Fin de la classe Carto_InformationCouleur
 
 
//==============================================================================
// FUNCTION carto_errorMsg ()
//
// Return an error message about carto management.
//==============================================================================
 
function carto_errorMsg ()
{
global $PRIVATE_CARTO_ERROR;
 
return $PRIVATE_CARTO_ERROR;
}
 
//==============================================================================
// FUNCTION carto_putErrorImage ()
//
// Dump a default error image.
//==============================================================================
 
function carto_putErrorImage ()
{
$img = '47494638396120002000800100ff000000006621f90401000001002c000000002000'.
'200040026d848fa99be11f009c53524373b41ae2da65dcf345e1693aa536aae77ab1'.
'e1d7a2a22ad5f60deb6fe54bc958418f0b05bb9190bee2f1327276a2c91db16a855a'.
'a4489c31bb24d5b8614fb32b2a9ea7d228738785dab673e7f81554b395682008dc52'.
'4236b4210416c390a8a85000003b';
header ('Content-Type: image/gif');
echo gs_hex2bin ($img);
}
 
//==============================================================================
//==============================================================================
// Les fonctions qui suivent permettent de recuperer des infos (nom de l'image,
// du masque, du niveau ou du titre) d'une carte.
//==============================================================================
//==============================================================================
 
function carto_consulterTitreCarte ($id_carte)
{
global $NOM_FICHIER;
$requete =
'SELECT * '.
' FROM carto_DESCRIPTION_CARTE'.
' WHERE CDC_ID_Carte = "'.$id_carte.'"';
$resultat = mysql_query ($requete) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
'<b>Nom fonction : </b> carto_consulterTitreCarte<br/>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$ligne = mysql_fetch_object ($resultat);
$titre_carte = $ligne->CDC_Titre_carte;
return $titre_carte;
}
 
function carto_consulterFichierFond ($id_carte)
{
global $NOM_FICHIER;
$requete =
'SELECT * '.
' FROM carto_DESCRIPTION_CARTE'.
' WHERE CDC_ID_Carte = "'.$id_carte.'"';
$resultat = mysql_query ($requete) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
'<b>Nom fonction : </b> carto_consulterFichierFond<br/>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$ligne = mysql_fetch_object ($resultat);
$nom_fichier_carte_fond = $ligne->CDC_Carte_fond;
return $nom_fichier_carte_fond;
}
 
function carto_consulterFichierMasque ($id_carte)
{
global $NOM_FICHIER;
$requete =
'SELECT * '.
' FROM carto_DESCRIPTION_CARTE'.
' WHERE CDC_ID_Carte = "'.$id_carte.'"';
$resultat = mysql_query ($requete) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
'<b>Nom fonction : </b> carto_consulterFichierMasque<br/>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$ligne = mysql_fetch_object ($resultat);
$nom_fichier_carte_masque = $ligne->CDC_Carte_masque;
return $nom_fichier_carte_masque;
}
 
function carto_consulterTypeZoneCarte ($id_carte)
{
global $NOM_FICHIER;
$requete =
'SELECT * '.
' FROM carto_DESCRIPTION_CARTE'.
' WHERE CDC_ID_Carte = "'.$id_carte.'"';
$resultat = mysql_query ($requete) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
'<b>Nom fonction : </b> carto_consulterTypeZoneCarte<br/>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$ligne = mysql_fetch_object ($resultat);
$type_zone_carte = $ligne->CDC_Type_zone_carte;
return $type_zone_carte;
}
 
function carto_consulterIdZoneGeoCarte ($id_carte)
{
global $NOM_FICHIER;
$requete =
'SELECT * '.
' FROM carto_DESCRIPTION_CARTE'.
' WHERE CDC_ID_Carte = "'.$id_carte.'"';
$resultat = mysql_query ($requete) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
'<b>Nom fonction : </b> carto_consulterIdZoneGeoCarte<br/>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$ligne = mysql_fetch_object ($resultat);
$id_zone_carte = $ligne->CDC_ID_Zone_geo_carte;
return $id_zone_carte;
}
 
//-- Fin du code source ------------------------------------------------------------
/*
* $Log: not supported by cvs2svn $
* Revision 1.17 2003/05/16 13:17:40 jpm
* Correction d'une erreur (des guillemets en trop).
*
* Revision 1.16 2003/03/14 14:12:14 jpm
* Correction bug : le nom de la zone ne restait pas dans la liste déroulante.
*
* Revision 1.15 2003/03/11 14:49:47 jpm
* Simplification de l'interface.
*
* Revision 1.14 2003/03/07 15:10:24 jpm
* Ajout de commentaires : "à faire"
*
* Revision 1.13 2003/03/04 16:14:06 alex
* Utilisation de la fonction cxt_clearVariable à la place de cxt_clear
*
* Revision 1.12 2003/03/04 08:09:39 jpm
* Ajout suppression des fichiers carto du dossier carto temporaire.
*
* Revision 1.11 2003/02/26 12:12:38 jpm
* Ajout de la gestion des listes déroulantes représentant la zone géographique
* à éditer.
*
* Revision 1.10 2003/02/21 13:50:57 jpm
* Mise à jour nouvel objet Carto_Carte.
*
* Revision 1.8 2003/02/14 08:01:14 jpm
* Changement des noms de méthode selon les recommandations de PEAR.
* Ajout d'attributs à la classe.
* Ajout de la possibilité de redéfinir les couleurs de coloriage d'une carte.
* Ajout de la possibilité de désigner une formule mathématique de coloriage.
*
* Revision 1.7 2003/02/12 18:15:56 jpm
* Meilleure gestion de l'obtentions des valeurs minimum, medium et maximum
* pour l'ensemble des zones géographiques d'une carte.
* Ajout de commentaires.
* Meilleure gestion des erreurs de requêtes.
*
*
*/
?>
/trunk/client/cartographie/bibliotheque/lib.carto.extractimg.php
New file
0,0 → 1,82
<?php
 
//vim: set expandtab tabstop=4 shiftwidth=4:
// +-----------------------------------------------------------------------------------------------+
// | PHP version 4.0 |
// +-----------------------------------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
// +-----------------------------------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +-----------------------------------------------------------------------------------------------+
/**
* Fichier permettant de générer l'entête HTTP des images de la carto.
*
*Ce fichier permet de construire l'image de la carto et de la faire passer dans les entête HTTP.
*
*@package lib.carto
//Auteur original :
*@author Luc LAMBERT
//Autres auteurs :
*@author Nicolas MATHIEU
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@copyright Tela-Botanica 2000-2003
*@version 01 juillet 2002
// +-----------------------------------------------------------------------------------------------+
//
// $Id: lib.carto.extractimg.php,v 1.1 2004-12-15 13:30:20 alex Exp $
// FICHIER : $RCSfile: lib.carto.extractimg.php,v $
// AUTEUR : $Author: alex $
// VERSION : $Revision: 1.1 $
// DATE : $Date: 2004-12-15 13:30:20 $
//
// +-----------------------------------------------------------------------------------------------+
// A FAIRE :
//
*/
 
define("CAR_CHEMIN_TMP",'../../../tmp/carto/');
 
$image = imagecreatefrompng(CAR_CHEMIN_TMP.$fichier.'.png');
chmod (CAR_CHEMIN_TMP.$fichier.".png", 755) ;
 
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: no-cache, must-revalidate");// HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
header ("content-type:image/png");
imagepng($image);
unlink(CAR_CHEMIN_TMP.$fichier.'.png');
//Nous nettoyons le dossier tmp des fichiers qu'il contient:
$poignet_de_dossier = opendir(CAR_CHEMIN_TMP);
while ($fichier_dechet = readdir($poignet_de_dossier)) {
if ($fichier_dechet != "." && $fichier_dechet != "..") {
unlink(CAR_CHEMIN_TMP.$fichier_dechet);
}
}
closedir($poignet_de_dossier);
exit();
 
//-- Fin du code source ------------------------------------------------------------
/*
* $Log: not supported by cvs2svn $
* Revision 1.7 2003/03/04 08:09:39 jpm
* Ajout suppression des fichiers carto du dossier carto temporaire.
*
* Revision 1.6 2003/02/21 13:50:57 jpm
* Mise à jour nouvel objet Carto_Carte.
*
* Revision 1.5 2003/02/14 07:56:45 jpm
* Ajout d'un entête.
* Ajout de requêtes HTTP pour éviter le cache.
*
*
*
*/
?>
/trunk/client/cartographie/bibliotheque/lib.couleur.php
New file
0,0 → 1,136
<?php
 
 
//vim: set expandtab tabstop=4 shiftwidth=4:
// +-----------------------------------------------------------------------------------------------+
// | PHP version 4.0 |
// +-----------------------------------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
// +-----------------------------------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +-----------------------------------------------------------------------------------------------+
/**
* Fichier regroupant toutes les fonctions manipulant les couleurs
*
*Toutes les fonctions sur les couleurs sont disponibles dans ce fichier.
*
*@package couleur
//Auteur original :
*@author iubito <sylvain_machefert@yahoo.fr>
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@copyright Tela-Botanica 2000-2003
*@version 25 fevrier 2003
// +-----------------------------------------------------------------------------------------------+
//
// $Id: lib.couleur.php,v 1.1 2004-12-15 13:30:20 alex Exp $
// FICHIER : $RCSfile: lib.couleur.php,v $
// AUTEUR : $Author: alex $
// VERSION : $Revision: 1.1 $
// DATE : $Date: 2004-12-15 13:30:20 $
//
// +-----------------------------------------------------------------------------------------------+
// A FAIRE :
*/
 
/**
//==================================== FONCTION ==================================
* La fonction array couleur_hexadecimalAuRgb(string color) renvoie des valeurs de couleur en RGB.
*
*Cette fonction prend une valeur de couleur codée en hexadécimal et retourne
*les valeurs RGB correspondantes sous forme de tableau.
*Exemple d'utilisation:
*$rgb = couleur_hexadecimalAuRgb("fffc49");
*echo "<br>couleur_hexadecimalAuRgb de 'fffc49' : ".$rgb['R']." ".$rgb['V']." ".$rgb['B'];
*
*@author iubito <sylvain_machefert@yahoo.fr>
*@copyright iubito - http://iubito.free.fr/ - 2003
*
*@param string $couleur représente une couleur codée en héxadécimal.
*
*@return array tableau associatif contenant les 3 valeurs RGB, avec clé du rouge 'R',
* du vert 'V' et enfin du bleu 'B'.
//==============================================================================
*/
function couleur_hexadecimalAuRgb($couleur_html)
{
//gestion du #...
if (substr($couleur_html, 0, 1) == "#") {
$couleur_html = substr($couleur_html, 1, 6);
}
$tablo_rgb['R'] = hexdec(substr($couleur_html, 0, 2));
$tablo_rgb['V'] = hexdec(substr($couleur_html, 2, 2));
$tablo_rgb['B'] = hexdec(substr($couleur_html, 4, 2));
return $tablo_rgb;
}
 
 
/**
//==================================== FONCTION ==================================
* La fonction string couleur_rgbAuHexadecimal(array tablo) renvoie la valeur d'une
*couleur en héxadécimal.
*
*Cette fonction prend un tableau de valeurs d'une couleur codées en RGB et retourne
*la valeur hexadécimal correspondante sous forme de chaîne.
*C'est la réciproque exacte de la fonction couleur_hexadecimalAuRgb.
*
*@author iubito <sylvain_machefert@yahoo.fr>
*@copyright iubito - http://iubito.free.fr/ - 2003
*
*@param array $tablo_RGB représente un tableau associatif avec les valeurs RGB
*d'une couleur.Les trois clés du tableau sont : R pour rouge, V pour vert et B pour bleu.
*
*@return string chaîne contenant la valeur de la couleur sous forme héxadécimale.
//==============================================================================
*/
function couleur_rgbAuHexadecimal($tablo_rgb)
{
//Vérification des bornes...
foreach($tablo_rgb as $cle => $valeur) {
$tablo_rgb[$cle] = bornes($tablo_rgb[$cle],0,255);
}
//Le str_pad permet de remplir avec des 0
//parce que sinon couleur_rgbAuHexadecimal(array(0,255,255)) retournerai #0ffff<=manque un 0 !
return "#".str_pad(dechex(($tablo_rgb['R']<<16)|($tablo_rgb['V']<<8)|$tablo_rgb['B']),6,"0",STR_PAD_LEFT);
}
 
/**
//==================================== FONCTION ==================================
* La fonction int couleur_bornerNbre(int nb, int min, int max) borne des nombres.
*
*Cette fonction permet de borner la valeur d'un nombre entre un minimum $mini et
*un maximum $maxi.
*
*@author iubito <sylvain_machefert@yahoo.fr>
*@copyright iubito - http://iubito.free.fr/ - 2003
*
*@param integer $nbre le nombre à borner.
*@param integer $mini la borne minimum.
*@param integer $maxi la borne maximum.
*
*@return integer le nombre limité aux bornes si nécessaire.
//==============================================================================
*/
function couleur_bornerNbre($nbre, $mini, $maxi)
{
if ($nbre < $mini) {
$nbre = $mini;
}
if ($nbre > $maxi) {
$nbre = $maxi;
}
return $nbre;
}
 
?>