/branches/livraison_narmer/client/bottin/bibliotheque/fonctions.php |
---|
New file |
0,0 → 1,267 |
<?php |
// +--------------------------------------------------------------------------------+ |
// | fonctions.php | |
// +--------------------------------------------------------------------------------+ |
// | Copyright (c) 2002 Tela Botanica | |
// +--------------------------------------------------------------------------------+ |
// | Fonctions diverses | |
// +--------------------------------------------------------------------------------+ |
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
// +--------------------------------------------------------------------------------+ |
// |
// $Id: fonctions.php,v 1.1 2005-09-22 14:02:49 ddelon Exp $ |
// effectue une requete sur un colonne unique et renvoie le resultat sous la forme |
// d'un tableau |
function get($query) { |
$tableau = array() ; |
$query = "SELECT " . $query; |
$result = mysql_query($query) or die ("Echec de la requête sur AGORA"); |
while ($row = mysql_fetch_row($result)) { |
array_push ($tableau,$row[0]); |
} |
return $tableau ; |
} |
function textecourt($texte, $taille) { |
if (strlen($texte) > $taille) return substr($texte, 0, $taille-3)."..."; |
return $texte; |
} |
// formulaire, prend en parametre les valeurs par defaut |
function formulaire($titre="",$description="", $abreviation="", $internet="", $selectedForums="", $selectedProjet="",$origine="NOUVEAU") { |
global $baseURL, $forums, $projets, $projetAb ; |
$forums = get("AGO_A_ALIAS FROM agora") ; |
$IDforums = get ("AGO_A_ID FROM agora"); |
$projets = get("TITRE FROM PROJET_PROJET ORDER BY ABREVIATION"); |
$projetAb = get("ABREVIATION FROM PROJET_PROJET ORDER BY ABREVIATION") ; |
if ($selectedForums == "") $selectedForums = array() ; |
if ($selectedProjet == "") $selectedProjet = array() ; |
$res ="<table>\n"; |
if ($origine == "NOUVEAU") { |
$res .="<form action=\"$baseURL&menuProjet=projetadm&action=2\" method=\"post\">\n"; |
} else { |
$res .="<form action=\"$baseURL&menuProjet=projetgest&projet=$abreviation&action=2\" method=\"post\">\n"; |
} |
$res .="<tr class=\"text\"><td style=\"text-align:right;font-weight:bold;\">Titre :</td><td><input type=\"text\" |
class=\"insInputForm\" name=\"titre\" size=\"60\" value=\"$titre\"></td></tr>\n"; |
$res .="<tr class=\"text\"><td valign=\"top\" style=\"text-align:right;font-weight:bold;\">Description :</td><td><textarea name=\"description\" |
class=\"insInputForm\" cols=\"60\" rows=\"20\">$description</textarea></td></tr>\n"; |
if ($origine == "NOUVEAU") { |
$res .="<tr class=\"text\"><td style=\"text-align:right;font-weight:bold;\">Abréviation :</td>\n"; |
$res .="<td><input class=\"insInputForm\" type=\"text\" name=\"abreviation\" size=\"5\" value=\"$abreviation\"> "; |
$res .=" Au maximum 5 caractères, de préférence en majuscule.</td></tr>\n"; |
} |
$res .="<tr class=\"text\"><td style=\"text-align:right;font-weight:bold;\">Espace Internet :</td>\n"; |
$res .="<td><input class=\"insInputForm\" type=\"text\" name=\"internet\" size=\"60\" value=\"$internet\"></td></tr>\n"; |
$res .="<tr class=\"text\"><td valign=\"top\" style=\"text-align:right;font-weight:bold;\">Forums associés :</td><td><select class=\"insInputForm\" name=forumsS[] size=\""; |
$res .=count($forums); |
$res .="\" multiple>\n"; |
for ($i = 0 ; $i < count($forums) ; $i++) { |
$res .="<option value=\"$IDforums[$i]\""; |
if (in_array($forums[$i],$selectedForums)) $res .=" selected"; |
$res .=">"; |
$res .=$forums[$i]; |
$res .="</option>\n"; |
} |
$res .="</select>\n"; |
$res .="<tr class=\"text\"><td valign=\"top\" style=\"text-align:right;font-weight:bold;\">Projets associés :</td>\n<td><select class=\"insInputForm\" name=projetsS[] size=\""; |
$res .=count($projets); |
$res .="\" multiple>\n"; |
for ($i = 0 ; $i < count($projets) ; $i++) { |
$res .="<option value=\""; |
$res .=$projetAb[$i]; |
$res .="\""; |
if (in_array($projetAb[$i],$selectedProjet)) $res .=" selected"; |
$res .=">"; |
$res .=$projets[$i]; |
$res .="</option>\n"; |
} |
$res .="</select></td></tr>\n"; |
$res .="<tr><td colspan=\"2\" align=\"center\">\n"; |
if ($origine != "NOUVEAU") $res .="<input style=\"background-color:#FFFFFF\" type=\"button\" onclick=\"Javascript:history.go(-1);\" value=\"Annuler\">\n" ; |
$res .="<input style=\"background-color:#FFFFFF\" type=\"submit\""; |
if ($origine == "NOUVEAU") { |
$res .=" value=\"Créer\">"; |
} else { $res .=" value=\"Valider\">"; |
} |
$res .="</td></tr>\n"; |
$res .="</form>\n"; |
$res .="</table>\n"; |
return $res ; |
} |
function getExtension($filename) { |
$extension = explode (".",$filename) ; |
return $extension[1] ; |
} |
#-------------------------------------------------------------- |
# Insere $num espace insecable |
#-------------------------------------------------------------- |
function insert_spaces($num) { |
$res = "" ; |
for ($i = 0; $i < $num; $i++) $res .= " "; |
return $res ; |
} |
function getEnumSet($text) { |
$resultat = explode("'", $text) ; |
$retour = array() ; $j = 0 ; |
for ($i = 1 ; $i < count ($resultat)-1 ; $i = $i + 2) { |
$retour[$j] = $resultat[$i] ; |
$j++ ; |
} |
return $retour ; |
} |
$jour = array("lundi","mardi", "mercredi", "jeudi", "vendredi", "samedi","dimanche"); |
$moi = array("janvier","février","mars","avril","mai","juin","juillet","septembre","octobre","novembre","décembre") ; |
function parcourrirAnnu($event) { |
global $baseURL, $lettre, $menuProjet ; |
$outputText = "" ; |
$outputText .= "<tr><td> </td></tr>\n"; |
$outputText .= "<tr><td><table align=\"center\">"; |
$outputText .= "<tr class=\"texte_tb\">"; |
// ecrire toutes les lettres avec un lien |
for ($i = 65 ; $i <91 ; $i++) { |
$outputText .= "\t<td><a style=\"font-size:15px;\" href=\"$baseURL&menuProjet=$menuProjet&action=$event&lettre="; |
$outputText .= chr($i) ; |
$outputText .= "\">"; |
$outputText .= chr($i) ; |
$outputText .= "</a></td>\n"; |
} |
$outputText .= "<td> <a href=\"$baseURL&menuProjet=$menuProjet&action=$event&lettre=tous\">Tous</a></td>\n" ; |
$outputText .= "</tr></table></td></tr>\n"; |
// si une lettre est selectionne |
if (!empty($lettre)) { |
$query = "SELECT annuaire_tela.U_NAME,annuaire_tela.U_SURNAME,annuaire_tela.U_MAIL,annuaire_tela.U_CITY, |
annuaire_tela.U_ZIP_CODE,gen_COUNTRY.GC_NAME FROM annuaire_tela,gen_COUNTRY WHERE"; |
if ($lettre != "tous") $query .= " U_NAME LIKE \"$lettre%\" AND" ; |
$query .= " annuaire_tela.U_COUNTRY=gen_COUNTRY.GC_ID AND gen_COUNTRY.GC_LOCALE=\"fr\" |
AND U_NAME<>\"\" and U_SHOW=3 ORDER BY U_NAME" ; |
$result = mysql_query($query) or die ("Echec de la requête sur annuaire_tela..."); |
if (mysql_num_rows($result) != 0) { |
// pour chaque nom, on inscrit les infos |
$outputText .= "<tr><td> </td></tr>\n"; |
$outputText .= "<tr class=\"insTitle1\"><td>Liste des inscrits à la lettre : $lettre</td></tr>\n"; |
$outputText .= "<tr><td><table width=\"100%\">"; |
$outputText .= "<tr class=\"insTitle1\"><td>Nom</td>"; |
$outputText .= "<td>Prénom</td><td align=\"center\">E-mail</td>\n"; |
$outputText .= "<td align=\"center\">Code postal</td><td>Pays</td></tr>\n"; |
$pair = true ; |
while ($row = mysql_fetch_object($result)) { |
$outputText .= "<tr class=\"texte_tb2\""; |
if ($pair) { |
$outputText .= " bgcolor=\"#E8FFE5\""; |
$pair = false ; |
} else { |
$pair = true ; |
} |
$outputText .= "><td>$row->U_NAME</td><td>$row->U_SURNAME</td>\n"; |
$outputText .= "<td align=\"left\"><a href=\"mailto:$row->U_MAIL\">$row->U_MAIL</a></td>\n"; |
$outputText .= "<td align=\"center\">$row->U_ZIP_CODE</td>\n"; |
$outputText .= "<td>$row->GC_NAME</td>\n" ; |
$outputText .= "</tr>\n"; |
} |
$outputText .= "</table></td></tr>\n"; |
} else { |
$outputText .= "<tr><td> </td></tr>\n"; |
$outputText .= "<tr class=\"texte_tb\"><td>Pas d'inscrit</td></tr>\n"; |
} |
} |
return $outputText ; |
} |
function formRep($nom="", $description="", $origine="NOUVEAU", $visibilite="") { |
global $baseURL, $projet, $repcourant, $id ; |
if ($origine == "NOUVEAU") { |
$res = "<form action=$baseURL&action=20\" method=\"post\">\n" ; |
} else { |
$res = "<form action=$baseURL&action=19\" method=\"post\"\n>" ; |
} |
$res .= "\t<table align=\"center\">\n\t" ; |
$res .= "<tr class=\"texte_tb\"><td colspan=\"2\">N'utilisez pas d'accents, ni d'espace pour le nom du répertoire.</td></tr>\n"; |
$res .= "<tr class=\"text\"><td style=\"font-weight:bold;text-align:right\">" ; |
$res .= "Nom : </td><td><input class=\"insInputForm\" type=\"text\" name=\"nom\" size=\"80\" value=\"$nom\"></td></tr>\n" ; |
$res .= "<tr class=\"text\"><td style=\"font-weight:bold;text-align:right;vertical-align:top\">Description : </td>\n" ; |
$res .= "<td><textarea class=\"insInputForm\" name=\"description\" cols=\"81\">$description</textarea></td></tr>\n" ; |
$res .= "<tr class=\"text\"><td align=\"right\"><b>Visibilité :</b></td>\n"; |
$res .= "<td align=\"left\">\n"; |
$res .= "<input style=\"background-color:#FFFFFF;\" type=\"radio\" name=\"visible\" value=\"public\"" ; |
if ($visibilite == "public" or $visibilite == "") $res .= " checked" ; |
$res .= ">Tout public "; |
$res .= "<input style=\"background-color:#FFFFFF;\" type=\"radio\" name=\"visible\" value=\"prive\"" ; |
if ($visibilite == "prive") $res.= " checked" ; |
$res .= ">Projet seulement</td></tr>\n"; |
$res .= "<tr class=\"text\"><td><input type=\"hidden\" name=\"repcourant\" value=\"$repcourant\"</td><td>\n" ; |
$res .= "<input type=\"hidden\" name=\"id\" value=\"$id\">" ; |
$res .= "<input type=\"submit\" style=\"background-color:#FFFFFF;\"" ; |
if ($origine == "NOUVEAU") { $res.= "value=\"Valider\"" ; } else { $res .= "value=\"Modifier\"" ; } |
$res .= "></td></tr></table></form>\n" ; |
return $res ; |
} |
// renvoie le chemin complet depuis la racine de l'application |
// on indique en argument l'identifiant du repertoire en cour |
// la fonction remonte d'etage en etage jusqu'a ce que gen_voiraussi.PERE soit NULL |
function getPath($ID_rep) { |
$path = "" ; |
$query = "SELECT PERE,NOM FROM gen_repertoire WHERE ID='$ID_rep'" ; |
$result = mysql_query($query) or die ("Echec de la requête dans gen_voiraussi, au cours de la recherche |
du chemin des repertoire") ; |
$row = mysql_fetch_object($result) ; |
if ($row->PERE != NULL) { |
$path .= getPath($row->PERE)."/".$row->NOM ; |
} |
return $path ; |
} |
// renvoie le chemin avec les tag <a href |
function getHTMLPath($ID_rep) { |
global $baseURL ; |
$query = "SELECT PERE,NOM FROM gen_repertoire WHERE ID='$ID_rep'" ; |
$result = mysql_query($query) or die ("Echec de la requête dans gen_voiraussi, au cours de la recherche |
du chemin des repertoire") ; |
$row = mysql_fetch_object($result) ; |
if ($row->PERE != NULL) { |
$path .= " <b>></b><a href=\"$baseURL&repcourant=$ID_rep\">" ; |
$path .= $row->NOM ; |
$path .= "</a>\n" ; |
$path = getHTMLPath($row->PERE).$path ; |
} |
return $path ; |
} |
function nettoieAccent(&$texte) { |
// un peu barbare |
$texte = ereg_replace("é","e",$texte) ; |
$texte = ereg_replace("è","e",$texte) ; |
$texte = ereg_replace("ê","e",$texte) ; |
$texte = ereg_replace("à","a",$texte) ; |
$texte = ereg_replace("ù","u",$texte) ; |
$texte = ereg_replace("â","a",$texte) ; |
$texte = ereg_replace("ä","a",$texte) ; |
$texte = ereg_replace("ë","e",$texte) ; |
$texte = ereg_replace("î","i",$texte) ; |
$texte = ereg_replace("ô","o",$texte) ; |
$texte = ereg_replace("û","u",$texte) ; |
$texte = ereg_replace("ö","o",$texte) ; |
$texte = ereg_replace("ü","u",$texte) ; |
return $texte ; |
} |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/bottin.class.php |
---|
New file |
0,0 → 1,89 |
<?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 des fonctions du bottin |
* |
*@package bottin |
//Auteur original : |
*@author Alexandre GRANIER <alexandre@tela-botanica.org.org> |
//Autres auteurs : |
*@copyright Outils-reseaux 2006-2040 |
*@version 05 avril 2006 |
// +-----------------------------------------------------------------------------------------------+ |
// |
// $Id: bottin.class.php,v 1.1 2006-12-13 13:26:52 alexandre_tb Exp $ |
// FICHIER : $RCSfile: bottin.class.php,v $ |
// AUTEUR : $Author: alexandre_tb $ |
// VERSION : $Revision: 1.1 $ |
// DATE : $Date: 2006-12-13 13:26:52 $ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
require_once PAP_CHEMIN_API_PEAR.'PEAR.php'; |
class lettresAlphabet extends PEAR { |
var $url; |
var $variable_lettre ; |
/** |
* Constructeur |
* |
* @param Net_URL un objet Net_URL |
* @param string $variable_lettre le nom de la variable $_GET qui sera place dans l URL |
* @return void |
* @access public |
*/ |
function lettresAlphabet($url, $variable_lettre = 'lettre') { |
$this->url = $url ; |
$this->variable_lettre = $variable_lettre ; |
} |
/** |
* Renvoie le code HTML d une liste avec les lettres |
* |
* @return string HTML |
* @access public |
*/ |
function toHMTL() { |
$res = '<ul class="liste_lettre">'."\n" ; |
for ($i = 65 ; $i <91 ; $i++) { |
$this->url->addQueryString($this->variable_lettre, chr($i)) ; |
$res .= "\t".'<li class="liste_lettre"><a class="lien_alphabet" '. |
'href="'. |
$this->url->getURL().'">'; |
$res .= chr($i) ; |
$res .= '</a></li>'."\n"; |
} |
$res .= '</ul>'; |
return $res ; |
} |
} |
//-- Fin du code source ------------------------------------------------------------ |
/* |
* $Log: not supported by cvs2svn $ |
*/ |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/inscription.class.php |
---|
New file |
0,0 → 1,247 |
<?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.19 2007-04-20 08:40:22 alexandre_tb 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.19 $ $Date: 2007-04-20 08:40:22 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm.php' ; |
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] == INS_TABLE_PAYS) { |
return ; |
} |
} |
return $this->raiseError('La table gen_i18n_pays 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 '.INS_CHAMPS_ID_PAYS.', '.INS_CHAMPS_LABEL_PAYS.' from '.INS_TABLE_PAYS |
.' where '.INS_CHAMPS_I18N_PAYS.'="'.$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_ASSOC)) { |
$retour[$ligne[INS_CHAMPS_ID_PAYS]] = $ligne[INS_CHAMPS_LABEL_PAYS] ; |
} |
return $retour ; |
} |
/** Renvoie le nom d'un pays traduit dans la langue passé en paramètre |
* |
* @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 getNomPays($codeIso, $i18n = INS_LANGUE_DEFAUT) { |
if (strlen($i18n) == 2) { |
$i18n = strtolower($i18n)."-".strtoupper($i18n) ; |
} |
$requete = 'select '.INS_CHAMPS_LABEL_PAYS.' from '.INS_TABLE_PAYS. |
' where '.INS_CHAMPS_I18N_PAYS.'="'.$i18n.'" and '. |
INS_CHAMPS_ID_PAYS.'="'.$codeIso.'"'; |
$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!') ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ; |
return $ligne[INS_CHAMPS_LABEL_PAYS] ; |
} |
} |
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_formulaireInscription( $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) |
{ |
$squelette =& $this->defaultRenderer(); |
$squelette->setFormTemplate("\n".'<form {attributes}>'."\n".'<table style="border:0;width:100%;">'."\n".'{content}'."\n".'</table>'."\n".'</form>'."\n"); |
$squelette->setElementTemplate( '<tr>'."\n". |
'<td style="font-size:12px;width:140px;text-align:right;">'."\n".'{label}'. |
'<!-- BEGIN required --><span class="symbole_obligatoire"> *</span><!-- END required -->'."\n". |
' :</td>'."\n". |
'<td style="text-align:left;padding:5px;"> '."\n".'{element}'."\n". |
'<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n". |
'</td>'."\n". |
'</tr>'."\n"); |
$squelette->setElementTemplate( '<tr><td colspan="2" style="font-size:12px;text-align:left;">{label}{element}</td></tr>'."\n", 'lettre'); |
$squelette->setElementTemplate( '<tr><td colspan="2" style="font-size:12px;text-align:left;">{label}{element}</td></tr>'."\n", 'visible'); |
$squelette->setElementTemplate( '<tr><td colspan="2" class="bouton" id="bouton_annuler">{label}{element}</td></tr>'."\n", 'groupe_bouton'); |
$squelette->setGroupTemplate('<tr><td colspan="2">{content}</td></tr>'."\n", 'groupe_bouton'); |
$squelette->setRequiredNoteTemplate("\n".'<tr>'."\n".'<td colspan="2" class="symbole_obligatoire">* {requiredNote}</td></tr>'."\n"); |
//Traduction de champs requis |
$this->setRequiredNote(INS_CHAMPS_REQUIS) ; |
$this->setJsWarnings(INS_ERREUR_SAISIE,INS_VEUILLEZ_CORRIGER); |
$debut = '<h2>'.INS_AJOUT_MEMBRE.'</h2>'."\n"; |
$this->addElement('html', $debut); |
$this->addElement('text', 'email', INS_EMAIL) ; |
$this->addRule('email', INS_EMAIL_REQUIS, 'required','', 'client') ; |
$this->addRule('email', INS_MAIL_INCORRECT, 'email', '', 'client') ; |
$this->addElement('password', 'mot_de_passe', INS_MOT_DE_PASSE, array('size' => '10')) ; |
$this->addElement('password', 'mot_de_passe_repete', INS_REPETE_MOT_DE_PASSE, array('size' => '10')) ; |
$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') ; |
$this->addElement('text', 'nom', INS_NOM) ; |
$this->addRule('nom', INS_NOM_REQUIS, 'required', '', 'client') ; |
$this->addElement('text', 'prenom', INS_PRENOM) ; |
$this->addRule('prenom', INS_PRENOM_REQUIS, 'required', '', 'client') ; |
$this->addElement('text', 'adresse_1', INS_ADRESSE_1) ; |
$this->addElement('text', 'adresse_2', INS_ADRESSE_2) ; |
$this->addElement('text', 'cp', INS_CODE_POSTAL) ; |
$this->addRule('cp', INS_CODE_POSTAL_REQUIS, 'required', '', 'client') ; |
$this->addElement('text', 'ville', INS_VILLE) ; |
// L'élément pays est construit à partir du tableau liste_pays |
$liste_pays = new ListeDePays($GLOBALS['ins_db']) ; |
$this->addElement('select', 'pays', INS_PAYS, $liste_pays->getListePays(INS_LANGUE_DEFAUT)) ; |
$this->addElement('text', 'telephone', INS_TELEPHONE, array('size' => '12')) ; |
$this->addElement('text', 'fax', INS_FAX, array('size' => '12')) ; |
$this->addElement('text', 'site', INS_SITE_INTERNET) ; |
$this->addElement('file', 'image', INS_LOGO_OU_IMAGE) ; |
$this->setMaxFileSize(150000); //logo de 15ko maximum |
if (INS_CHAMPS_LETTRE != '') $this->addElement('checkbox', 'lettre',INS_LETTRE, '<br />') ; |
$this->addElement('checkbox', 'visible',INS_VISIBLE, '<br />') ; |
$this->addElement('hidden', 'est_structure', 0) ; |
$defauts=array ('lettre'=>1,'pays'=>'FR'); |
$this->setDefaults($defauts); |
// on fait un groupe avec les boutons pour les mettres sur la même ligne |
$boutons[] = &HTML_QuickForm::createElement('button', 'annuler', INS_ANNULER, array ("onclick" => "javascript:document.location.href='".$url."'", |
'id' => 'annuler', 'class' => 'bouton')); |
$boutons[] = &HTML_QuickForm::createElement('submit', 'valider', INS_VALIDER, array ('id' => 'valider', 'class' =>'bouton')); |
$this->addGroup($boutons, 'groupe_bouton', '', "\n"); |
} // end of member function construitFormulaire |
/** Modifie le formulaire pour l'adapter au cas des structures |
* |
* |
* @return void |
* @access public |
*/ |
function formulaireStructure() |
{ |
$this->removeElement('nom', false) ; |
$this->removeElement('prenom') ; |
$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->addRule('nom', INS_NOM_REQUIS, 'required', '', 'client') ; |
$sigle_structure = & HTML_QuickForm::createElement('text', 'sigle_structure', INS_SIGLE_DE_LA_STRUCTURE) ; |
$this->insertElementBefore($sigle_structure, 'email') ; |
$this->addRule('sigle_structure', INS_SIGLE_REQUIS, 'required', '', 'client') ; |
$num_agrement = & HTML_QuickForm::createElement('text', 'num_agrement', INS_NUM_AGREMENT) ; |
$this->insertElementBefore($num_agrement, 'email') ; |
$this->removeElement('site', false) ; |
$site_structure = & HTML_QuickForm::createElement('text', 'site', INS_SITE_STRUCTURE) ; |
$this->insertElementBefore($site_structure, 'lettre') ; |
$this->removeElement('est_structure', false) ; |
$this->addElement('hidden', 'est_structure', 1) ; |
$this->addElement('hidden', 'form_structure', 1) ; |
} |
/** |
* |
* |
* @return string |
* @access public |
*/ |
function toHTML( ) |
{ |
$res = HTML_QuickForm::toHTML() ; |
return $res ; |
} // end of member function toHTML |
} |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/annuaire_backoffice.fonct.php |
---|
New file |
0,0 → 1,374 |
<?php |
// +--------------------------------------------------------------------------------+ |
// | annuaire_moteur_fonction.php | |
// +--------------------------------------------------------------------------------+ |
// | Copyright (c) 2000 - 2003 Tela Botanica | |
// +--------------------------------------------------------------------------------+ |
// | Les fonctions de annuaire_moteur.php | |
// +--------------------------------------------------------------------------------+ |
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
// +--------------------------------------------------------------------------------+ |
// |
// $Id: annuaire_backoffice.fonct.php,v 1.10 2007-04-11 08:30:12 neiluj Exp $ |
/** function mkengine () |
* |
* |
* |
* @return |
*/ |
include_once PAP_CHEMIN_API_PEAR.'Pager/Pager.php' ; |
include_once PAP_CHEMIN_API_PEAR.'HTML/Table.php'; |
function mkengine() |
{ |
global $nbr_total; |
global $bouton, $HTTP_POST_VARS ; |
$requete = mkquery() ; |
$ret = '<div>'. $requete .'</div>'; |
// Deux requetes, une avec tous les resultats, l'autre avec les résultats affichés |
$result_final = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError($result_final)) { |
echo $result_final->getMessage().'<br />'.$requete ; |
} |
$nbr_final = $result_final->numRows() ; |
$_SESSION['requete_mail_tous'] = $requete ; |
$donnees = array(); |
while ($ligne = $result_final->fetchRow(DB_FETCHMODE_ASSOC)) { |
$donnees[] = $ligne ; |
} |
if (!isset($_REQUEST['setPerPage'])) $_REQUEST['setPerPage'] = 50 ; |
$param_pager = array ( |
'mode' => 'Jumping', |
'delta' => 5, |
'itemData' => $donnees |
) ; |
$pager = & Pager::factory($param_pager); |
$mes_vars = array ("recherche", "nom", "ville", "mail" ,"dept", "prenom", "cotisant", "pays", "sort", "T_REPONSE", "lettre","statut") ; |
// Deux cas , soit on a cliqué sur rechercher, soit on a cliqué sur un lien |
foreach ($mes_vars as $key=>$value) { |
if (!$bouton) { // on a cliqué sur un lien |
if (empty($HTTP_POST_VARS[$value])) { |
} |
} else { |
// Si on clique sur le bouton rechercher |
if (empty ($HTTP_POST_VARS[$value])) { |
$$value = "" ; |
} else { |
$$value = $HTTP_POST_VARS[$value] ; |
} |
} |
} |
// Comptage du nombre total de données dans la table (hors CACHER = 1) |
$requete_nbre_inscrit = "select count(*) as CPT from ".INS_ANNUAIRE; |
$resultat_nbre_inscrit = $GLOBALS['ins_db']->query($requete_nbre_inscrit) ; |
if ($resultat_nbre_inscrit->numRows() == 1) { |
$tmp_nb = $resultat_nbre_inscrit->fetchRow(DB_FETCHMODE_OBJECT); |
$nbr_total = $tmp_nb->CPT; |
$chaine = "parmi $nbr_total données"; |
if ($nbr_total <= 0) $ret .= "<B>Erreur</B> lors du comptage des structures ($nbr_total trouvées) : $requete_nbre_inscrit"; |
} |
else $ret .= "<B>Erreur</B> lors du comptage des structures : $requete_nbre_inscrit"; |
// fin comptage |
$ret = ''; |
$ret .= '<h1>'.AM_L_TITRE.' '.$chaine.'</h1>'."\n" ; |
// construction du moteur de str |
$ret .= '<form action="'.$GLOBALS['ins_url']->getURL().'" method="post">'."\n"; |
$ret .= '<table summary="recherche">'."\n"; |
// ligne de recherche |
$ret .= "<tr>\n"; |
$ret .= "<td>".AM_L_RECHERCHER." :\n</td>\n<td>"; |
$ret .= form_mk_chaineI(isset ($_REQUEST['recherche']) ? stripslashes($_REQUEST['recherche']) : '', "recherche")." "; |
$ret .= '</td><td colspan="4">'.AM_L_PAYS." : \n" ; |
// formulaire contenant les pays, avec par défaut soit le pays en cours |
// soit "tous les pays" |
$liste_pays = new ListeDePays($GLOBALS['ins_db']) ; |
$tableau_pays = $liste_pays->getListePays(INS_LANGUE_DEFAUT) ; |
$ret .= "<select name=\"pays\">\n" ; |
$ret .= "<option value=\"tous\">Tous les pays</option>\n" ; |
foreach ($tableau_pays as $codeIso => $labelPays) { |
$ret .= '<option value="'.$codeIso.'"' ; |
if (!empty($pays)) { |
if ($pays == $codeIso) $ret .= " selected" ; |
} |
$ret .= '>'.$labelPays.'</option>'."\n" ; |
} |
$ret .= "</select>\n" ; |
$ret .= "</td></tr>\n" ; |
$ret .= "<tr>\n"; |
$ret .= "<td>".AM_L_NOM." :\n</td><td>"; |
$ret .= form_mk_chaineI(isset ($_REQUEST['nom']) ? stripslashes($_REQUEST['nom']) : '', "nom")." </td>\n<td>" ; |
$ret .= AM_L_PRENOM." :</td>\n<td>".form_mk_chaineI(isset ($_REQUEST['prenom']) ? stripslashes($_REQUEST['prenom']) : '', "prenom")." </td>\n<td class=\"insLabel\">" ; |
$ret .= AM_L_VILLE." :</td>\n<td>".form_mk_chaineI(isset ($_REQUEST['ville']) ? stripslashes($_REQUEST['ville']) : '', "ville")." </td>" ; |
$ret .= "</tr><tr>\n" ; |
$ret .= "<td>".AM_L_DEPARTEMENT." : </td>\n<td>" ; |
// Construction du <select> des départements |
$requete_dpt = 'select '.INS_CHAMPS_ID_DEPARTEMENT.', '.INS_CHAMPS_NOM_DEPARTEMENT.' from '.INS_TABLE_DPT ; |
$resultat_dpt = $GLOBALS['ins_db']->query($requete_dpt) ; |
if (DB::isError($resultat_dpt)) { |
echo 'Echec de la requete<br />'.$requete_dpt.'<br />'.$resultat_dpt->getMessage(); |
} |
$ret .= "<select name=\"dept\">\n" ; |
$ret .= "<option value=\"tous\">tous</option>\n" ; |
while ($ligne_dpt = $resultat_dpt->fetchRow(DB_FETCHMODE_ASSOC)) { |
$ret .= '<option value="'.$ligne_dpt[INS_CHAMPS_ID_DEPARTEMENT].'"' ; |
if (isset ($_REQUEST['dept']) && $_REQUEST['dept'] == $ligne_dpt[INS_CHAMPS_ID_DEPARTEMENT]) $ret .= " selected" ; |
$ret .= '>'.$ligne_dpt[INS_CHAMPS_ID_DEPARTEMENT].' - '.$ligne_dpt[INS_CHAMPS_NOM_DEPARTEMENT].'</option>'."\n" ; |
} |
$ret .= "</select></td>\n" ; |
$ret .= '<td>'.AM_L_MAIL.' : </td><td colspan="3">'.form_mk_chaineI(isset ($_REQUEST['mail']) ? stripslashes($_REQUEST['mail']) : '', "mail")."</td>\n" ; |
$ret .= "</tr>" ; |
// Les statuts des inscrits |
$ret .= "<tr>\n"; |
$ret .= "<td>\n"; |
$ret .= AM_L_GRP_RES." : </td>" ; |
$ret .= '<td>'.$pager->getperpageselectbox (50 , 200, 50 , false ,'%d').'</td>'."\n" ; |
$ret .= '<td colspan="4">'."\n"; |
$ret .= "<input type=\"submit\" value=\"".AM_L_RECHERCHER."\" name =\"bouton\">\n"; |
$ret .= "</td></tr></table></form>\n"; |
$ret .= "\n<div>" ; |
// La liste des lettres de l'alphabet |
for ($i = 65 ; $i <91 ; $i++) { |
$GLOBALS['ins_url']->addQueryString('lettre', chr($i)) ; |
$ret .= "\t<a href=\"".$GLOBALS['ins_url']->getURL(); |
$ret .= '">'; |
$ret .= chr($i) ; |
$ret .= "</a> \n"; |
} |
$GLOBALS['ins_url']->addQueryString ('lettre', 'tous') ; |
$ret .= " <a href=\"".$GLOBALS['ins_url']->getURL().'">'.AM_L_TOUS."</a>\n" ; |
$ret .= "</div>\n" ; |
$ret .= '<div>'.$nbr_final.' résultat(s)</div>' ; |
$GLOBALS['ins_url']->removeQueryString('lettre') ; |
// Menu Ajouter un inscrit |
$GLOBALS['ins_url']->addQueryString('ajouter', '1') ; |
$ret .= '<div><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_AJOUT_MEMBRE.'</a></div>'."\n"; |
$data = $pager->getPageData(); |
$table = new HTML_Table(array ('class' => 'table_bazar')) ; |
$table->addRow(array( |
'<a href="'.$GLOBALS['ins_url']->getURL().'&sort='.INS_CHAMPS_NOM.'">Identité</a>', |
'<a href="'.$GLOBALS['ins_url']->getURL().'&sort='.INS_CHAMPS_MAIL.'">Adresse mail</a>', |
'<a href="'.$GLOBALS['ins_url']->getURL().'&sort='.INS_CHAMPS_VILLE.'">'.AM_L_VILLE.'</a>', |
'Pays ou Dpt (fr)' |
), '', 'TH') ; |
$debut = isset($_REQUEST['pageID']) ? $_REQUEST['pageID'] : 1 ; |
for ($i = ($debut - 1) * $_REQUEST['setPerPage']; |
$i < $_REQUEST['setPerPage'] * $debut; |
$i++) { |
// On teste s'il y une valeur, si oui on ajoute la ligne |
if (isset ($data[$i])) { |
$urlPop = $GLOBALS['ins_url']->getURL().'&'.INS_CHAMPS_ID.'='.$data[$i][INS_CHAMPS_ID]; |
$ligne_inscrit = array ("<a href=\"$urlPop\">".$data[$i][INS_CHAMPS_NOM].' '.$data[$i][INS_CHAMPS_PRENOM]. |
'</a>', $data[$i][INS_CHAMPS_MAIL], $data[$i][INS_CHAMPS_VILLE]) ; |
// Pour la france on met le département, sinon on laisse le nom du pays |
if ($data[$i][INS_CHAMPS_PAYS] != 'fr') { |
array_push ($ligne_inscrit, $data[$i][INS_CHAMPS_LABEL_PAYS]); |
} else { |
$req_dpt = 'select '.INS_CHAMPS_NOM_DEPARTEMENT.' from '.INS_TABLE_DPT.",".INS_ANNUAIRE. |
" where ".INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'='.$data[$i][INS_CHAMPS_ID] ; |
$req_dpt .= " and ".INS_ANNUAIRE.'.'.INS_CHAMPS_DEPARTEMENT.'='.INS_TABLE_DPT.'.' |
.INS_CHAMPS_ID_DEPARTEMENT ; |
$resultat_dpt = $GLOBALS['ins_db']->query($req_dpt) ; |
if (DB::isError($resultat_dpt)) { |
echo $resultat_dpt->getMessage().$resultat_dpt->getDebugInfo(); |
} |
$ligne_dpt = $resultat_dpt->fetchRow(DB_FETCHMODE_ASSOC) ; |
array_push ($ligne_inscrit, $ligne_dpt[INS_CHAMPS_NOM_DEPARTEMENT]) ; |
} |
$table->addRow($ligne_inscrit) ; |
} |
} |
$ret .= $table->toHTML(); |
$links = $pager->getLinks(); |
$ret .= $links['all'] ; |
$ret .= '<div><a href="'.$GLOBALS['ins_url']->getURL().'&action='.ANN_MAIL_TOUS |
.'">'.AM_L_MAIL_SELECTION."</a></div>\n" ; |
return $ret; |
} |
/** function form_mk_chaineI () Renvoie une balise de type <input> |
* |
* @param string l'attribut value de la balise |
* @param string l'attibut name de la balise |
* @param string la classe CSS |
* @return string HTML |
*/ |
function form_mk_chaineI($value="", $name, $class="insInputForm") |
{ |
return "<input type=\"text\" size=\"15\" value=\"$value\" name=\"$name\" class=\"$class\">"; |
} |
function form_mk_select($value="", $name="", $class="insInputForm") { |
$res = "<select name=\"$name\" class=\"$class\">\n" ; |
$res .= "<option value=\"1\"" ; |
if ($value == 1) $res .= " selected" ; |
$res .= ">Cotisants</option>\n" ; |
$res .= "<option value=\"2\"" ; |
if ($value == 2) $res .= " selected" ; |
$res .= ">Non cotisants</option>\n" ; |
$res .= "<option value=\"3\"" ; |
if ($value == 3 || $value == "") $res .= " selected" ; |
$res .= ">Tous</option>\n" ; |
$res .= "</select>\n" ; |
return $res ; |
} |
function mkquery() |
{ |
// Requete sur l'annuaire pour extraire le nom, prénom, ville, nom du département (jointure), |
// l'état de la cotisation (jointure) |
// le tableau suivant contient tous les champs de la table annuaire_tela sur lesquels on peut effectuer une recherche |
$fields_annu = array("nom" => INS_CHAMPS_NOM, "prenom" => INS_CHAMPS_PRENOM , "mail" => INS_CHAMPS_MAIL , "ville" => INS_CHAMPS_VILLE, |
"dept" => INS_CHAMPS_DEPARTEMENT, "pays" => INS_CHAMPS_PAYS ) ; |
$mes_vars = array ("recherche", "nom", "ville", "mail" ,"dept", "prenom", "cotisant", "pays", "sort", "T_REPONSE", "lettre","statut") ; |
$queries = "select ".INS_ANNUAIRE.".*" ; |
$queries .= ", ".INS_TABLE_PAYS.'.'.INS_CHAMPS_LABEL_PAYS ; |
$queries .= " from ".INS_ANNUAIRE ; |
$queries .= ",".INS_TABLE_PAYS ; |
// Construction en fonction des champs saisies |
// juste le champs "rechercher", on regarde partout |
$where = ' where ' ; |
if (isset ($_REQUEST['recherche']) && $_REQUEST['recherche'] != "") { |
$where .= '('.INS_CHAMPS_NOM.' like "%'.$_REQUEST['recherche'].'%"' ; // le premier |
foreach($fields_annu as $key=>$value) { |
if ($key == "nom" || $key == 'dept') continue ; |
$where .= ($key == "pays" ? |
$_REQUEST['pays'] == "tous" ? ")" : |
") and $value = '".$_REQUEST['pays']."'" : ' or '.$value.' like "%'.$_REQUEST['recherche'].'%"') ; // les autres |
} |
if (isset ($_REQUEST['dept']) && $_REQUEST['dept'] != 'tous') { |
$where .= 'and '.INS_CHAMPS_DEPARTEMENT.'="'.$_REQUEST['dept'].'"' ; |
} |
} else { |
// si un ou plusieurs autres champs ont été indiqué, on les rajoute ici |
$or_flag = false ; |
foreach($fields_annu as $key=>$valeur) { |
if ($key != "") { |
if ($key == "pays") { |
if (!isset($_REQUEST[$key]) || $_REQUEST[$key] == "tous") { |
$where .= " and ".INS_CHAMPS_PAYS." like '%'"; |
} else { |
$where .= " and $valeur like \"%".$_REQUEST[$key]."%\"" ; |
} |
} else { |
if ($key == "dept") { |
if (isset($_REQUEST[$key]) && $_REQUEST[$key] != "tous") { |
$where .= " and ".INS_CHAMPS_DEPARTEMENT."=".$_REQUEST[$key] ; |
if ($fields_annu["pays"] != "fr") $where .= " and ".INS_CHAMPS_PAYS."=\"fr\"" ; |
} |
} else { |
if (isset ($_REQUEST[$key]) && $or_flag) { |
$where .= "$valeur like \"%".$_REQUEST[$key]."%\"" ; |
} else { |
$where .= "$valeur like \"%%\"" ; |
} |
if ($key != "ville") $where .= " and " ; |
} |
} |
$or_flag = true ; |
} |
} |
// ici le cas ou rien n'a été saisie du tout, on affiche tout |
if (!$or_flag) { |
$where .= INS_CHAMPS_NOM." like '%')" ; |
} |
} |
if (isset($_REQUEST['lettre'])) { |
if ($_REQUEST['lettre'] == 'tous') $_REQUEST['lettre'] = ''; |
$where = ' where '.INS_CHAMPS_NOM.' like "'.$_REQUEST['lettre'].'%"' ; |
} |
$where .= " and ".INS_ANNUAIRE.".".INS_CHAMPS_PAYS."=".INS_TABLE_PAYS.".".INS_CHAMPS_ID_PAYS."" ; |
if (isset($nom) && $nom != "") $where .= " and ".INS_CHAMPS_NOM." like \"%$nom%\"" ; |
if (isset($_REQUEST['prenom']) && $_REQUEST['prenom'] != "") |
$where .= " and ".INS_CHAMPS_PRENOM.' like "%'.$_REQUEST['prenom'].'%"' ; |
if (isset($ville) && $ville != "") $where .= " and ".INS_CHAMPS_VILLE." like \"%$ville%\"" ; |
if (isset($mail) && $mail != "") $where .= " and ".INS_CHAMPS_MAIL." like \"%$mail%\"" ; |
$where .= ' and gip_id_i18n like "%'.$GLOBALS['lang'].'%"' ; |
if (isset ($_REQUEST['lettre']) && $_REQUEST['lettre'] == "tous") $_REQUEST['lettre'] = "" ; |
if (!isset ($_REQUEST['lettre'])) $_REQUEST['lettre'] = '' ; |
$queries .= $where ; |
if (isset($_REQUEST['sort']) && $_REQUEST['sort'] != "") $queries .= ' order by '.$_REQUEST['sort'] ; |
return $queries; |
} |
function ajouterInscrit() { |
$res = ''; |
$GLOBALS['ins_url']->addQueryString ('ajouter', '1'); |
$GLOBALS['ins_url']->addQueryString ('ajouter_v', '1'); |
$formulaire = new HTML_formulaireInscription('inscription', '', |
str_replace ('&', '&', $GLOBALS['ins_url']->getURL()), '', '') ; |
$formulaire->construitFormulaire(str_replace ('&', '&', $GLOBALS['ins_url']->getURL())) ; |
if (isset($_REQUEST['ajouter_v'])) { |
if ($formulaire->validate()) { |
$id_utilisateur = insertion($formulaire->getSubmitValues()) ; |
// Appel des actions desinscriptions des applications clientes |
$d = dir(GEN_CHEMIN_CLIENT); |
while (false !== ($repertoire = $d->read())) { |
if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php')) |
include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php' ; |
} |
$d->close(); |
if (INS_CHAMPS_LETTRE != '' && isset ($valeurs['lettre'])) { |
inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ; |
} |
return mkengine(); |
} |
} |
return $formulaire->toHTML(); |
} |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/bottin.fonct.php |
---|
New file |
0,0 → 1,1322 |
<?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 des fonctions du bottin |
* |
*@package bottin |
//Auteur original : |
*@author Florian SCHMITT <florian@ecole-et-nature.org> |
//Autres auteurs : |
*@copyright Outils-reseaux 2006-2040 |
*@version 05 avril 2006 |
// +-----------------------------------------------------------------------------------------------+ |
// |
// $Id$ |
// FICHIER : $RCSfile$ |
// AUTEUR : $Author$ |
// VERSION : $Revision$ |
// DATE : $Date$ |
*/ |
include_once 'inscription.fonct.wiki.php' ; |
if (INS_UTILISE_SPIP) include_once 'inscription.fonct.spip.php' ; |
include_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm.php'; |
/** function inscription_onglets() Affiche les onglets de présentation de la structure |
* |
* |
* |
* @return string HTML |
*/ |
function inscription_onglets() { |
//on trouve l'id de la fiche en fonction de l'onglet choisi auparavant |
if (isset($_GET['voir_fiche'])) { |
$id_fiche=$_GET['voir_fiche']; |
} elseif (isset($_GET['voir_abonnement'])) { |
$id_fiche=$_GET['voir_abonnement']; |
} elseif (isset($_GET['voir_actus'])) { |
$id_fiche=$_GET['voir_actus']; |
} elseif (isset($_GET['voir_ressources'])) { |
$id_fiche=$_GET['voir_ressources']; |
} elseif (isset($_GET['voir_competences'])) { |
$id_fiche=$_GET['voir_competences']; |
} else { |
$id_fiche = ''; |
} |
//preparation de l'affichage des onglets |
$res='<ul id="onglets_inscription">'."\n"; |
//partie présentation |
$GLOBALS['ins_url']->addQueryString('voir_fiche', $id_fiche); |
$res .= '<li id="fiche"'; |
if (isset($_GET['voir_fiche'])) $res .= ' class="onglet_actif" '; |
$res .= '><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_PRESENTATION.'</a>'."\n".'</li>'."\n"; |
$GLOBALS['ins_url']->removeQueryString('voir_fiche'); |
if ($id_fiche==$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID)) { |
//partie abonnement |
$GLOBALS['ins_url']->addQueryString('voir_abonnement', $id_fiche); |
$res .= '<li id="abonnements"'; |
if (isset($_GET['voir_abonnement'])) $res .= ' class="onglet_actif" '; |
$res .= '><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_ABONNEMENTS.'</a></li>'."\n" ; |
$GLOBALS['ins_url']->removeQueryString('voir_abonnement'); |
} |
//partie actualites |
$GLOBALS['ins_url']->addQueryString('voir_actus', $id_fiche); |
$res .= '<li id="actus"><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_ACTUALITES.'</a>'."\n".'</li>'."\n"; |
$GLOBALS['ins_url']->removeQueryString('voir_actus'); |
//partie ressources |
$GLOBALS['ins_url']->addQueryString('voir_ressources', $id_fiche); |
$res .= '<li id="ressources"><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_RESSOURCES.'</a>'."\n".'</li>'."\n"; |
$GLOBALS['ins_url']->removeQueryString('voir_ressources'); |
//partie competences |
//$GLOBALS['ins_url']->addQueryString('voir_competences', $id_fiche); |
//$res .= '<li id="competences"><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_COMPETENCES.'</a>'."\n".'</li>'."\n"; |
//$GLOBALS['ins_url']->removeQueryString('voir_competences'); |
$res.= '</ul>'."\n"; |
return $res; |
} |
/** function affiche_onglet_info() sélectionne le type d'information à montrer pour une fiche |
* |
* |
* |
* @return string HTML |
*/ |
function affiche_onglet_info() { |
include_once INS_CHEMIN_APPLI.'bibliotheque/inscription.fonct.php'; |
include_once INS_CHEMIN_APPLI.'bibliotheque/inscription.class.php'; |
if ( isset($_GET['voir_fiche']) ) { |
$res=info($_GET['voir_fiche'], 'fiche'); |
} elseif (isset($_GET['voir_abonnement'])) { |
$res=info($_GET['voir_abonnement'], 'abonnement'); |
} elseif (isset($_GET['voir_actus'])) { |
$res=info($_GET['voir_actus'], 'actus'); |
} elseif (isset($_GET['voir_ressources'])) { |
$res=info($_GET['voir_ressources'], 'ressources'); |
} elseif (isset($_GET['voir_competences'])) { |
$res=info($_GET['voir_competences'], 'competences'); |
} |
return $res; |
} |
/** function Annuaire_recherche () Moteur de recherche dans l'annuaire des inscrits |
* |
* |
* |
* @return string HTML |
*/ |
function Annuaire_recherche() { |
$res ='<h2>'.INS_RECHERCHE_ANNUAIRE_DES_INSCRITS.'</h2>'."\n"; |
$form =& new HTML_QuickForm('form_recherche_annuaire', 'post', str_replace('&', '&', $GLOBALS['ins_url']->getURL())); |
$squelette =& $form->defaultRenderer(); |
$squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'<table>'."\n".'{content}'."\n".'</table>'."\n".'</form>'."\n"); |
$squelette->setElementTemplate( '<tr>'."\n". |
'<td style="padding:5px;text-align:right;">{label}'. |
'<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n". |
'<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n". |
' : </td>'."\n". |
'<td style="padding:5px;text-align:left;">{element}</td>'."\n". |
'</tr>'."\n" ); |
$squelette->setElementTemplate( '<tr>'."\n".'<td colspan=2 style="padding:5px;">{label}{element}</td>'."\n".'</tr>'."\n", 'bouton_rechercher'); |
$option_type=array ('0' => INS_PERSONNES_OU_STRUCTURES, |
'1' => INS_PERSONNES, |
'2' => INS_STRUCTURES); |
$form->addElement('select', 'nom_type', INS_JE_RECHERCHE, $option_type); |
//requete pour recuperer la liste des pays |
$requete = 'SELECT '.INS_CHAMPS_ID_PAYS.', '.INS_CHAMPS_LABEL_PAYS.' FROM '.INS_TABLE_PAYS.' WHERE '.INS_CHAMPS_I18N_PAYS.'="fr-FR"'; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
$option_pays = array('zz' => INS_TOUS_PAYS) ; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$option_pays[$ligne[INS_CHAMPS_ID_PAYS]] = $ligne[INS_CHAMPS_LABEL_PAYS] ; |
} |
$form->addElement('select', 'nom_pays', INS_PAYS, $option_pays); |
//requete pour recuperer la liste des départements |
$requete = 'SELECT '.INS_CHAMPS_ID_DEPARTEMENT.', '.INS_CHAMPS_NOM_DEPARTEMENT.' FROM '.INS_TABLE_DPT; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
$option_departements = array('0' => INS_TOUS_DEPARTEMENTS) ; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$option_departements[$ligne[INS_CHAMPS_ID_DEPARTEMENT]] = $ligne[INS_CHAMPS_NOM_DEPARTEMENT] ; |
} |
$form->addElement('select', 'nom_departement', INS_DEPARTEMENT_POUR_LA_FRANCE, $option_departements); |
$form->addElement('text', 'nom_annuaire', INS_NOM_ANNUAIRE); |
$form->addElement('submit', 'bouton_rechercher', INS_RECHERCHER); |
//valeurs par defaut |
$defauts=array('nom_pays'=>'fr','nom_departement'=>'0'); |
$form->setDefaults($defauts); |
//affichage du formulaire |
$res .=$form->toHtml(); |
//on teste si l'on affiche le resultat de la recherche ou |
if (isset($_POST['nom_type'])) { |
$requete = 'SELECT '.INS_CHAMPS_ID.', '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM.', '.INS_CHAMPS_VILLE.', '.INS_CHAMPS_CODE_POSTAL; |
$requete .= ' FROM '.INS_ANNUAIRE.' WHERE '; |
$req_where=0; |
if ($_POST['nom_type']==1) { |
$requete .= INS_CHAMPS_EST_STRUCTURE.'=0 '; |
$req_where=1; |
} elseif ($_POST['nom_type']==2) { |
$requete .= INS_CHAMPS_EST_STRUCTURE.'=1 '; |
$req_where=1; |
} |
if ($_POST['nom_pays']!='0'and$_POST['nom_pays']!='zz') { |
if ($req_where) { |
$requete .= 'AND '; |
} else { |
$req_where=1; |
} |
$requete .= INS_CHAMPS_PAYS.'="'.$_POST['nom_pays'].'" '; |
} |
if ($_POST['nom_departement']!='0') { |
if ($req_where) { |
$requete .= 'AND '; |
} else { |
$req_where=1; |
} |
$requete .= INS_CHAMPS_DEPARTEMENT.'="'.$_POST['nom_departement'].'" '; |
} |
if ($_POST['nom_annuaire']!='') { |
if ($req_where) { |
$requete .= 'AND '; |
} else { |
$req_where=1; |
} |
$requete .= '('.INS_CHAMPS_NOM.' LIKE "%'.$_POST['nom_annuaire'].'%"'. |
' OR '.INS_CHAMPS_PRENOM.' LIKE "%'.$_POST['nom_annuaire'].'%"'. |
' OR '.INS_CHAMPS_SIGLE_STRUCTURE.' LIKE "%'.$_POST['nom_annuaire'].'%"'. |
' OR '.INS_CHAMPS_DESCRIPTION.' LIKE "%'.$_POST['nom_annuaire'].'%") '; |
} |
if (!$req_where) $requete .= '1'; |
$requete .=' ORDER BY '.INS_CHAMPS_NOM; |
$resultat = $GLOBALS['ins_db']->query($requete); |
if ($resultat->numRows()>0) { |
$res .='<h2>'.INS_RESULTATS_RECHERCHE.' ('.$resultat->numRows().' '.INS_ENTREES.')</h2>'."\n"; |
$res .='<p class="zone_info">'.INS_CLIQUER_ELEMENT_LISTE.'</p>'."\n"; |
$i=0; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$donnees_membres[$i++]=$ligne; |
} |
$res .= listes_inscrit($donnees_membres); |
} |
else { |
$res .='<h2>'.INS_RESULTATS_RECHERCHE.'</h2>'."\n"; |
$res .= '<p class="zone_alert">'.INS_PAS_DE_RESULTATS.'</p>'."\n"; |
} |
} else { |
$res .='<h2>'.INS_DIX_DERNIERES_INSCRIPTIONS.'</h2>'."\n"; |
$requete = 'SELECT '.INS_CHAMPS_ID.', '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM.', '.INS_CHAMPS_VILLE.', '.INS_CHAMPS_CODE_POSTAL; |
$requete .= ' FROM '.INS_ANNUAIRE.' ORDER BY '.INS_CHAMPS_DATE.' DESC LIMIT 0 , 10'; |
$resultat = $GLOBALS['ins_db']->query($requete); |
if ($resultat->numRows()>0) { |
$i=0; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$donnees_membres[$i++]=$ligne; |
} |
$res .= listes_inscrit($donnees_membres, 0); |
} |
else { |
$res .= '<p class="zone_alert">'.INS_PAS_DE_RESULTATS.'</p>'."\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(& $donnees_membres, $affiche_form_mail=1) { |
$res = ''; |
if ($GLOBALS['AUTH']->getAuth()&&$affiche_form_mail) {$res .= '<form action="'.$GLOBALS['ins_url']->getURL().'" method="post" name="formmail">'."\n";} |
$res .= '<ul style="clear:both;">'."\n"; |
if ($GLOBALS['AUTH']->getAuth()&&$affiche_form_mail) { |
$res .= '<form action="'.$GLOBALS['ins_url']->getURL().'" method="post" name="formmail">'."\n"; |
} |
$res .= '<ul>'."\n"; |
for ($i=0;$i<count($donnees_membres);$i++) { |
$id = array_shift($donnees_membres[$i]); |
$GLOBALS['ins_url']->addQueryString('voir_fiche', $id); |
$res .= '<li>'."\n"; |
if ($GLOBALS['AUTH']->getAuth()&&$affiche_form_mail) { |
$res.='<input type="checkbox" name="select[]" value="'.$id.'" />'."\n"; |
} |
$res .= '<a href="'.$GLOBALS['ins_url']->getURL().'">'."\n"; |
$res .= '<strong>'.$donnees_membres[$i][INS_CHAMPS_NOM]. |
' '.$donnees_membres[$i][INS_CHAMPS_PRENOM].'</strong>'."\n". |
' '.$donnees_membres[$i][INS_CHAMPS_CODE_POSTAL]. |
' '.$donnees_membres[$i][INS_CHAMPS_VILLE]; |
$res .= '</a>'."\n".'</li>'."\n"; |
} |
$res .= '</ul>'."\n"; |
if ($GLOBALS['AUTH']->getAuth()&&$affiche_form_mail) { |
$res .= INS_CHECK_UNCHECK ; |
$res .= ' <input type="checkbox" name="selecttotal" onclick="javascript:setCheckboxes(\'formmail\');"><br />'; |
$res .= '<h3>'.INS_ENVOYER_MAIL.'</h3>'."\n"; |
$res .= '<p style="text-align:right;">'.INS_SUJET.' : <input style="border:1px solid #000;width:450px;" type="text" name="titre_mail"><br />'."\n". |
INS_MESSAGE.' : <textarea style="border:1px solid #000;width:450px;" name="corps" rows="5" cols="60"></textarea></p>'."\n". |
'<p style="width:100px;margin:4px auto;text-align:center;"><input name="bouton_envoi_mail" type="submit" value="'.INS_ENVOYER.'" /></p>'."\n". |
'<p style="width:100px;margin:4px auto;text-align:center;"><input type="submit" value="'.INS_ENVOYER.'" /></p>'."\n". |
'<input type="hidden" name="fin" value="true" /><input type="hidden" name="mailer" value="1" />'. |
'</form>'."\n"; |
} else { |
if ($affiche_form_mail) $res .='<br /><p class="zone_info">'.INS_PAS_IDENTIFIE.'</p>'."\n"; |
} |
return $res ; |
} |
/** envoie_mail_depuis_annuaire() |
* |
* |
* @return envoie l'email |
*/ |
function envoie_mail_depuis_annuaire() { |
$requete = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE. |
" where ".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); |
$entete = "From: <".$ligne[INS_CHAMPS_MAIL].">\n"; |
$_POST['corps'] .= INS_PIED_MESSAGE; |
$_POST['corps'] = stripslashes($_POST['corps']) ; |
$liste = "" ; |
$liste_numero = implode (',', $_POST['select']) ; |
$requete_liste_mail = 'select '.INS_CHAMPS_MAIL.' from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID. |
' in ('.$liste_numero.')' ; |
$resultat_liste_mail = $GLOBALS['ins_db']->query($requete_liste_mail); |
while ($ligne_liste_mail = $resultat_liste_mail->fetchRow(DB_FETCHMODE_ASSOC)) { |
mail ($ligne_liste_mail[INS_CHAMPS_MAIL], stripslashes($_POST['titre_mail']), $_POST['corps'] , $entete) ; |
$liste .= $ligne_liste_mail[INS_CHAMPS_MAIL]."\n" ; |
} |
$_POST['corps'] .= "\n----------------------------------------------------------------------------"; |
$_POST['corps'] .= "\n".INS_MESSAGE_ENVOYE_A." :\n $liste" ; |
mail (INS_MAIL_ADMIN_APRES_INSCRIPTION, stripslashes($_POST['titre_mail']), $_POST['corps'], $entete); |
$_POST['corps'] = ''; |
$_POST['titre_mail'] = ''; |
return '<div>'.INS_MAIL_ENVOYE.'</div>' ; |
} |
/** function carto_liste_fiches() |
* |
* |
* @return string HTML |
*/ |
function carto_liste_fiches(&$monde, $nom_table1, $nom_table2, $nom_champs_pays, $nom_champs_cp, $requete_sql) { |
global $mailer; |
global $select;//utilisé dans liste_inscrit.php |
$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); |
$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['ins_db']->query($query); |
if (DB::isError($result)) { |
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 .='<br /><strong>'.INS_RETOUR_A_LA_CARTE."\n"; |
foreach ($tabonglet as $key => $value) { |
if ($key == 0) { |
$chemin = $value; |
$value = 'monde'; |
$res .= "<a class=\"chemin_carto\" href=\"".$monde->url."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} else if ($key == (count($tabonglet)-1)) { |
$res .= "<a class=\"chemin_carto\"> > $pays</a>"; |
} else { |
$chemin .= '*'.$value; |
$res .= "<a class=\"chemin_carto\" href=\"".$monde->url."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
} |
$res .= '</strong>'."\n"; |
$capitale = $row->CP_Intitule_capitale; |
$query2 = ' SELECT count('.$nom_champs_cp.') as nbr'. |
' FROM '.$nom_table1; |
if ($nom_table2!=0) $query2 .= ', '.$nom_table2; |
$query2 .= ' WHERE '.$nom_champs_pays.'="'.$argument.'"'; |
if ($requete_sql!='') $query2 .= ' AND ('.$requete_sql.')'; |
$result2 = $GLOBALS['ins_db']->query($query2); |
if (DB::isError($result2)) { |
die ($result2->getMessage().'<br />'.$result2->getDebugInfo()) ; |
} |
$row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT) ; |
$res .= '<br /><br /><div class="info_pays">'.$pays.' (capitale: '.$capitale.') : ' ; |
if ($row2->nbr == 0) { |
$res .= INS_AUCUN_INSCRIT.' '.INS_LABEL_PROJET ; |
} |
else if ($row2->nbr == 1) { |
$res .= $row2->nbr.' '.INS_INSCRIT.' '.INS_LABEL_PROJET ; |
} |
else { |
$res .= $row2->nbr.' '.INS_INSCRIT.'s '.INS_LABEL_PROJET ; |
} |
$res .= "</div>\n"; |
if ($row2->nbr>0) { |
if ((INS_NECESSITE_LOGIN)and(!$GLOBALS['AUTH']->getAuth())) { |
$res .= '<br /><p class="zone_alert">'.INS_VOUS_DEVEZ_ETRE_INSCRIT.'</p>'."\n" ; |
} |
else { |
$requete = 'SELECT '.INS_CHAMPS_ID.', '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM.', '.INS_CHAMPS_VILLE.', '.INS_CHAMPS_CODE_POSTAL.' FROM '.$nom_table1; |
if ($nom_table2!=0) $requete .= ', '.$nom_table2; |
$requete .= ' WHERE '.$nom_champs_pays.'="'.$argument.'"'; |
if ($requete_sql!='') $requete .= ' AND ('.$requete_sql.')'; |
$requete .= ' ORDER BY '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM; |
$resultat = $GLOBALS['ins_db']->query($requete); |
$i=0; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$donnees_membres[$i++]=$ligne; |
} |
$res .= listes_inscrit($donnees_membres, 1); |
if ($mailer==1) { |
if (!is_array($select)) { |
$res .= "<div>".INS_NO_DESTINATAIRE."</div>"; |
} |
else { |
$res .= '<div class="zone_info">'.INS_MESSAGE_ENVOYE.'</div>'."\n" ; |
carto_envoie_mail() ; |
} |
} |
else { |
$res .= carto_texte_cocher() ; |
} |
$res .= carto_formulaire() ; |
} |
} |
// 2 ème cas, on vient de cliquer sur un département français |
} else if (count($tabmonde) == 4) { |
$argument = $tabmonde[3]; |
$query = 'SELECT * FROM '.INS_TABLE_DPT.' WHERE '.INS_CHAMPS_ID_DEPARTEMENT.'='.$argument; |
$result = $GLOBALS['ins_db']->query($query); |
if (DB::isError($result)) { |
die ($result->getMessage() .'<br />'.$result->getDebugInfo()); |
} |
$row = $result->fetchRow(DB_FETCHMODE_ASSOC); |
$nom = $row[INS_CHAMPS_NOM_DEPARTEMENT]; |
$query2 = ' SELECT count('.$nom_champs_cp.') as nbr'. |
' FROM '.$nom_table1; |
if ($nom_table2!=0) $query2 .= ', '.$nom_table2; |
$query2 .= ' WHERE '.$nom_champs_cp.' LIKE "'.$argument.'%"'. |
' AND '.$nom_champs_pays.'="FR"'; |
if ($requete_sql!='') $query2 .= ' AND ('.$requete_sql.')'; |
$result2 = $GLOBALS['ins_db']->query($query2); |
if (DB::isError($result2)) { |
die ($result2->getMessage().'<br />'.$result2->getDebugInfo()) ; |
} |
$row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT); |
$res .= '<br /><p class="zone_info">'."\n" ; |
if ($row2->nbr == 0) { |
$res .= INS_AUCUN_INSCRIT." ".INS_LABEL_PROJET ; |
} |
else if ($row2->nbr == 1) { |
$res .= $row2->nbr." ".INS_INSCRIT." ".INS_LABEL_PROJET ; |
} |
else { |
$res .= $row2->nbr." ".INS_INSCRIT."s ".INS_LABEL_PROJET ; |
} |
$res .= '</p>'."\n"; |
if ($row2->nbr>0) { |
if ((INS_NECESSITE_LOGIN)and(!$GLOBALS['AUTH']->getAuth())) { |
$res .= '<br /><p class="zone_alert">'.INS_VOUS_DEVEZ_ETRE_INSCRIT.'</p>'."\n" ; |
} else { |
$requete = 'SELECT '.INS_CHAMPS_ID.', '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM.', '.INS_CHAMPS_VILLE.', '.INS_CHAMPS_CODE_POSTAL.' FROM '.$nom_table1; |
if ($nom_table2!=0) $requete .= ', '.$nom_table2; |
if (strlen($argument)==1) { |
$argument='0'.$argument; |
} |
$requete .= ' WHERE '.$nom_champs_cp.' LIKE "'.$argument.'%"'. |
' AND '.$nom_champs_pays.'="FR"'; |
if ($requete_sql!='') $requete .= ' AND ('.$requete_sql.')'; |
$requete .= ' ORDER BY '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM; |
$resultat = $GLOBALS['ins_db']->query($requete); |
$i=0; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$donnees_membres[$i++]=$ligne; |
} |
$res .= listes_inscrit($donnees_membres, 1); |
if ($mailer==1) { |
if (!is_array($select)) { |
$res.= INS_NO_DESTINATAIRE; |
} else { |
$res .= '<p class="zone_info">'.INS_MESSAGE_ENVOYE."</p>\n" ; |
carto_envoie_mail() ; |
} |
} |
} |
} |
} |
return $res; |
} |
/** function carto_texte_cocher () |
* |
* |
* @return string HTML |
*/ |
function carto_texte_cocher() { |
$res = '<br />'.INS_CHECK_UNCHECK ; |
$res .= ' <input type="checkbox" name="selecttotal" onclick="javascript:setCheckboxes(\'formmail\');" />'."\n"; |
return $res ; |
} |
/** function carto_formulaire () |
* |
* |
* |
* @return string HTML |
*/ |
function carto_formulaire($titre_mail="", $corps="") { |
$res = '<br /><h2>'.INS_ENVOYER_MAIL.'</h2><br />'."\n". |
INS_SUJET.' :<br /><input class="forml" type="text" name="titre_mail" size="60" value="'.$titre_mail.'" /><br /><br />'."\n". |
INS_MESSAGE.' :<br /><textarea class="forml" name="corps" rows="5" cols="60">'.$corps.'</textarea><br /><br />'."\n". |
'<input class="bouton" type="submit" onclick="javascript:confirmer();" value="'.INS_ENVOYER.'" />'."\n". |
'</form>'."\n"; |
return $res ; |
} |
/** envoie_mail() |
* |
* |
* @return envoie l'email |
*/ |
function carto_envoie_mail() { |
$requete = 'SELECT '.INS_CHAMPS_MAIL.' FROM '.INS_ANNUAIRE.' WHERE '.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); |
include_once PAP_CHEMIN_API_PEAR.'Mail.php' ; |
$entetes['From'] = $ligne[INS_CHAMPS_MAIL]; |
$objet_mail =& Mail::factory('smtp'); |
$entetes['Subject'] = $GLOBALS['titre_mail']; |
$entetes['Date'] = date("m-d-Y H:i") ; |
$GLOBALS['corps'] .= INS_TEXTE_FIN_MAIL; |
$liste = "" ; |
$destinataire = array() ; |
foreach ($GLOBALS['select'] as $key => $value) { |
$requete = 'select '.INS_CHAMPS_MAIL.' from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.'="'.$value.'"'; |
$mail = $GLOBALS['ins_db']->getOne($requete) ; |
array_push ($destinataire, $mail) ; |
$liste .= $mail."\n" ; |
} |
$objet_mail->send($destinataire, $entetes, $GLOBALS['corps']); |
$GLOBALS['corps'] .= " |
----------------------------------------------------------------------------".INS_MESSAGE_ENVOYE_A." |
$liste" ; |
mail(INS_MAIL_ADMIN, stripslashes(INS_SURVEILLANCE_ENVOI_MAIL.$GLOBALS['titre_mail']), $GLOBALS['corps'], $entetes); |
$GLOBALS['corps'] = ''; |
$GLOBALS['titre_mail'] = ''; |
} |
//-----Fonctions de l'inscription-----------------------------------------------------+ |
/** |
* |
* @param array les valeurs renvoyés par le formulaire |
* @return |
*/ |
function inscription_demande($valeurs) { |
// On stocke les informations dans un variable de session |
// On coupe l'identifiant de session pour ne prendre que les 8 premiers caractères |
// afin d'éviter d'obtenir une url trop longue |
$chaine = substr (session_id(), 0, 8) ; |
$requete_verif = 'select * from inscription_demande where id_identifiant_session="'.$chaine.'"' ; |
$resultat_verif = $GLOBALS['ins_db']->query ($requete_verif) ; |
if ($resultat_verif->numRows() != 0) { |
$requete_suppression = 'delete from inscription_demande where id_identifiant_session="'.$chaine.'"' ; |
$GLOBALS['ins_db']->query ($requete_suppression) ; |
} |
$requete = 'insert into inscription_demande set id_identifiant_session="'.$chaine.'", id_donnees="'. |
addslashes(serialize($valeurs)).'", id_date=NOW()' ; |
$resultat = $GLOBALS['ins_db']->query ($requete) ; |
if (DB::isError ($resultat)) { |
echo ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
// On envoie un email de confirmation pour l'utilisateur |
$GLOBALS['ins_url']->addQueryString ('id', $chaine) ; |
if (INS_UTILISE_REECRITURE_URL) { |
$url = 'http://'.$GLOBALS['ins_url']->host.'/'.INS_URL_PREFIXE.$chaine ; |
} else { |
$url = str_replace ('&', '&', $GLOBALS['ins_url']->getURL()) ; |
} |
require_once PAP_CHEMIN_RACINE.'api/pear/HTML/Template/IT.php'; |
$tpl = new HTML_Template_IT() ; |
// Le gabarit du mail est dans un template |
// template 2 |
$requete = 'select it_template from inscription_template where it_id_template=2'. |
' and it_i18n like "%'.INS_LANGUE_DEFAUT.'"' ; |
if (!$tpl -> setTemplate($GLOBALS['ins_db']->getOne ($requete))) { |
echo 'erreur' ; |
} |
$tpl->setVariable('URL_INSCRIPTION', $url) ; |
mail ($GLOBALS['email'], 'Inscription', $tpl->get(), 'From: '.INS_MAIL_ADMIN_APRES_INSCRIPTION) ; |
} |
/** |
* |
* @param array les valeurs renvoyés par le formulaire |
* @return |
*/ |
function inscription_validee($valeurs) { |
inscription_insertion($valeurs) ; |
$GLOBALS['AUTH']->username = $valeurs['email'] ; |
$GLOBALS['AUTH']->password = $valeurs['mot_de_passe'] ; |
// On loggue l'utilisateur |
$GLOBALS['AUTH']->login() ; |
// inscription à la lettre d'information |
if (INS_CHAMPS_LETTRE != '' && isset ($valeurs['lettre'])) { |
inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ; |
} |
} |
/** |
* Renvoie l'accueil de l'inscription |
* |
* @return string HTML |
*/ |
function inscription_AUTH_formulaire_login() { |
require_once PAP_CHEMIN_RACINE.'api/pear/HTML/Template/IT.php'; |
$tpl = new HTML_Template_IT() ; |
// Le formulaire pour se logguer est dans un template |
// template 1 |
$requete = 'SELECT it_template FROM inscription_template WHERE it_id_template=1'. |
' AND it_i18n LIKE "%'.INS_LANGUE_DEFAUT.'"' ; |
if (!$tpl -> setTemplate($GLOBALS['ins_db']->getOne ($requete))) { |
echo 'erreur' ; |
} |
$tpl->setVariable('URL_INSCRIPTION', $GLOBALS['ins_url']->getURL()); |
return $tpl->get() ; |
} |
/** formulaire_envoi_passe() - Renvoie le code HTML d'un formulaire d'envoi de mot de passe par mail |
* |
* @return string HTML |
*/ |
function inscription_formulaire_envoi_passe() { |
$res = '<h2>'.INS_SI_PASSE_PERDU.'</h2>'."\n" ; |
$res .= '<form action="'.$GLOBALS['ins_url']->getURL().'&action=sendpasswd" method="post">'."\n" ; |
$res .= '<p class="label100">'.INS_EMAIL.' : </p>'."\n" ; |
$res .= '<input type="text" value="'; |
if (isset($_POST['username'])) $res .= $_POST['username']; |
$res .= '" name="mail" size="32" />'."\n" ; |
$res .= '<input type="submit" value="'.INS_ENVOIE_PASSE.'" />' ; |
$res .= '</form><br />'."\n" ; |
$res .= inscription_AUTH_formulaire_login() ; |
return $res; |
} |
function inscription_insertion($valeur) { |
// =========== Insertion dans l'annuaire =================== |
// Génération du nom wikini à partir du nom et du prénom |
if (INS_UTILISE_WIKINI && INS_NOM_WIKINI_GENERE) { |
$valeur['nom_wiki'] = inscription_genere_nom_wiki ($valeur['nom'], isset ($valeur['prenom']) ? $valeur['prenom'] : '') ; |
} else { |
if (!INS_NOM_WIKINI_GENERE) { |
$valeur['nom_wiki'] = $valeur['nomwiki']; |
} |
} |
$id_utilisateur = inscription_nextId(INS_ANNUAIRE, INS_CHAMPS_ID, $GLOBALS['ins_db']) ; |
$requete = 'INSERT INTO '.INS_ANNUAIRE.' SET '. |
INS_CHAMPS_ID.'="'.$id_utilisateur.'",'. |
inscription_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_utilisateur, $valeur) ; |
} |
if (INS_UTILISE_WIKINI) inscription_interwikini_users('', $valeur) ; |
return $id_utilisateur ; |
} |
/** |
* 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 inscription_mise_a_jour($valeur, $id = '') { |
// ====================Mise à jour dans l'annuaire gen_annuaire ==================== |
if ($id == '') { |
$id = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID); |
} |
$requete = 'update '.INS_ANNUAIRE.' set '. |
inscription_requete_annuaire ($valeur). |
'where '.INS_CHAMPS_ID.'="'.$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 inscription_requete_annuaire($valeur) { |
$req = INS_CHAMPS_NOM.'="'.addslashes($valeur['nom']).'", '; |
if (isset($valeur['est_structure']) && $valeur['est_structure'] == 0) |
$req .= INS_CHAMPS_PRENOM.'="'.addslashes($valeur['prenom']).'", '; |
// Initialisation de variable pour éviter des notices |
foreach (array ('adresse_1', 'adresse_2', 'ville', 'telephone', 'fax', 'site') as $val) { |
if (!isset ($valeur[$val])) $valeur[$val] = '' ; |
} |
$req .= INS_CHAMPS_MAIL.'="'.addslashes($valeur['email']).'", ' ; |
$req .= INS_CHAMPS_PASSE.'="'.md5($valeur['mot_de_passe']).'", '. |
INS_CHAMPS_PAYS.'="'.addslashes($valeur['pays']).'", '. |
INS_CHAMPS_ADRESSE_1.'="'.addslashes($valeur['adresse_1']).'", '. |
INS_CHAMPS_ADRESSE_2.'="'.addslashes($valeur['adresse_2']).'", '. |
INS_CHAMPS_DATE_INSCRIPTION.'=NOW(), '. |
INS_CHAMPS_CODE_POSTAL.'="'.addslashes($valeur['cp']).'", '. |
INS_CHAMPS_VILLE.'="'.addslashes($valeur['ville']).'", '. |
INS_CHAMPS_EST_STRUCTURE.'="'.addslashes($valeur['est_structure']).'", '. |
INS_CHAMPS_TELEPHONE.'="'.addslashes($valeur['telephone']).'", '. |
INS_CHAMPS_FAX.'="'.addslashes($valeur['fax']).'", '. |
INS_CHAMPS_SITE_INTERNET.'="'.addslashes($valeur['site']).'" '; |
if (isset($valeur['visible'])) $req .= ', '.INS_CHAMPS_VISIBLE.'="'.$valeur['visible'].'"'; |
else $req .= ', '.INS_CHAMPS_VISIBLE.'=0'; |
if (INS_CHAMPS_LETTRE != '') { |
if (isset($valeur['lettre'])) { |
$req .= ', '.INS_CHAMPS_LETTRE.'="'.$valeur['lettre'].'" '; |
inscription_lettre('inscrire'); |
} |
else { |
$req .= ', '.INS_CHAMPS_LETTRE.'=0 '; |
inscription_lettre('desinscrire'); |
} |
} |
if (isset($_FILES['image']['name']) && $_FILES['image']['name']!='') { |
$chemin_destination=INS_CHEMIN_APPLI.'presentations/logos/'.$_FILES['image']['name']; |
move_uploaded_file($_FILES['image']['tmp_name'], $chemin_destination); |
$req .= ', '.INS_CHAMPS_LOGO.'="'.$_FILES['image']['name'].'"' ; |
} |
if (isset($valeur['sigle_structure'])) { |
$req .= ', '.INS_CHAMPS_SIGLE_STRUCTURE.'="'.addslashes($valeur['sigle_structure']).'"' ; |
} |
if (isset($valeur['num_agrement'])) { |
$req .= ', '.INS_CHAMPS_NUM_AGREMENT.'="'.addslashes($valeur['num_agrement']).'"' ; |
} |
// traitement du numéro de département pour la france |
if ($valeur['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'"; |
} |
if (INS_UTILISE_WIKINI && isset ($valeur['nom_wiki'])) $req .= ','.INS_CHAMPS_NOM_WIKINI.'="'.$valeur['nom_wiki'].'"'; |
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 inscription_formulaire_defaults($id = '') { |
if ($id == '') { |
$id = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID); |
} |
$requete = 'select '.INS_ANNUAIRE.'.* '. |
'from '.INS_ANNUAIRE.' '. |
'where '.INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'= "'.$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] ; |
if (INS_UTILISE_WIKINI) {$valeurs_par_defaut['nomwiki'] = $ligne[INS_CHAMPS_NOM_WIKINI] ;} |
$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] ; |
$valeurs_par_defaut['telephone'] = $ligne[INS_CHAMPS_TELEPHONE] ; |
$valeurs_par_defaut['fax'] = $ligne[INS_CHAMPS_FAX] ; |
if (INS_CHAMPS_STRUCTURE != '' && isset($ligne[INS_CHAMPS_STRUCTURE])) { |
$valeurs_par_defaut['structure'] = $ligne[INS_CHAMPS_STRUCTURE] ; |
//$valeurs_par_defaut['type_structure'] = $ligne['a_type_structure']; |
} |
$valeurs_par_defaut['site'] = $ligne[INS_CHAMPS_SITE_INTERNET] ; |
$valeurs_par_defaut['lettre'] = $ligne[INS_CHAMPS_LETTRE] ; |
$valeurs_par_defaut['visible'] = $ligne[INS_CHAMPS_VISIBLE] ; |
$valeurs_par_defaut['sigle_structure'] = $ligne[INS_CHAMPS_SIGLE_STRUCTURE] ; |
if (INS_CHAMPS_NUM_AGREMENT != '') $valeurs_par_defaut['num_agrement'] = $ligne[INS_CHAMPS_NUM_AGREMENT] ; |
return $valeurs_par_defaut ; |
} |
/** info() - Renvoie une fiche d'information sur la personne ou la structure |
* |
* @param integer identifiant de la fiche a afficher, mettre -1 pour voir sa propre fiche |
* @param text nom de l'onglet de la fiche |
* |
* @return text Code HTML de la fiche |
*/ |
function info($id=-1, $type_info='fiche') { |
if ($id==-1) $id=$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID); |
$requete = 'SELECT * FROM '.INS_ANNUAIRE.' WHERE '.INS_ANNUAIRE.'.' |
.INS_CHAMPS_ID.'="'.$id.'"' ; |
$resultat = $GLOBALS['ins_db'] -> query($requete) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ; |
//voir la présentation de la fiche |
if ($type_info=='fiche') { |
$res = ''; |
if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 1) { |
$res .= '<h2>'.INS_FICHE_STRUCTURE.'</h2>'."\n" ; |
} else { |
$res .= '<h2>'.INS_FICHE_PERSONNELLE.'</h2>'."\n" ; |
} |
$res .= '<div class="fiche">'."\n" ; |
if ($ligne[INS_CHAMPS_LOGO] != NULL) { |
$res .= '<img style="float:right;width:120px;height:120px;margin:0 0 10px 10px;" src="'.INS_CHEMIN_APPLI.'presentations/logos/'.$ligne[INS_CHAMPS_LOGO].'" alt="logo" />'."\n"; |
} |
if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 1) { |
$res .= '<h3>'.$ligne[INS_CHAMPS_NOM].'</h3>'."\n"; |
$res .= inscription_ligne(INS_SIGLE_DE_LA_STRUCTURE, $ligne[INS_CHAMPS_SIGLE_STRUCTURE]) ; |
if (INS_CHAMPS_NUM_AGREMENT != '') $res .= inscription_ligne(INS_NUM_AGREMENT, $ligne[INS_CHAMPS_NUM_AGREMENT]) ; |
} else { |
$res .= '<h3>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h3>'."\n"; |
} |
$res .= inscription_ligne(INS_ADRESSE_1, $ligne[INS_CHAMPS_ADRESSE_1]) ; |
$res .= inscription_ligne(INS_ADRESSE_2, $ligne[INS_CHAMPS_ADRESSE_2]) ; |
$res .= inscription_ligne(INS_CODE_POSTAL, $ligne[INS_CHAMPS_CODE_POSTAL]) ; |
$res .= inscription_ligne(INS_VILLE, $ligne[INS_CHAMPS_VILLE]) ; |
$pays = new ListeDePays($GLOBALS['ins_db']) ; |
$res .= inscription_ligne(INS_PAYS, $pays->getNomPays($ligne[INS_CHAMPS_PAYS], INS_LANGUE_DEFAUT)) ; |
$res .= inscription_ligne(INS_TELEPHONE, $ligne[INS_CHAMPS_TELEPHONE]) ; |
$res .= inscription_ligne(INS_FAX, $ligne[INS_CHAMPS_FAX]) ; |
if ($ligne[INS_CHAMPS_SITE_INTERNET]!='') { |
$res .= inscription_ligne(INS_SITE_INTERNET, '<a href="'.$ligne[INS_CHAMPS_SITE_INTERNET].'" onclick="javascript:window.open(this.href);return false;">'.$ligne[INS_CHAMPS_SITE_INTERNET].'</a>'); |
} |
if ($GLOBALS['AUTH']->getAuth()) $res .= inscription_ligne(INS_EMAIL, '<a href="mailto:'.$ligne[INS_CHAMPS_MAIL].'">'.$ligne[INS_CHAMPS_MAIL].'</a>'); |
else $res .= '<br /><p class="zone_info">'.INS_PAS_IDENTIFIE.'</p>'."\n"; |
if (INS_UTILISE_WIKINI) { |
$res .= inscription_ligne (INS_NOM_WIKI, $ligne[INS_CHAMPS_NOM_WIKINI])."\n" ; |
} |
$res .= '</ul>'."\n"; |
if ($id==$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID)) { |
$res .= '<ul style="margin-top:10px; clear:both;">'."\n"; |
if ($ligne[INS_CHAMPS_VISIBLE] == 1) { |
$res .= '<li>'.INS_VOUS_APPARAISSEZ.'</li>'."\n"; |
} else $res .= '<li>'.INS_VOUS_APPARAISSEZ_PAS.'</li>'."\n"; |
if (INS_CHAMPS_LETTRE != '') { |
if ($ligne[INS_CHAMPS_LETTRE] == 1) { |
$res .= '<li>'.INS_VOUS_RECEVEZ_LETTRE.'</li>'."\n"; |
} else $res .= '<li>'.INS_VOUS_RECEVEZ_PAS_LETTRE.'</li>'."\n"; |
} |
$res .= '</ul>'."\n"; |
$res .= '<ul style="margin:15px;">'."\n";; |
$res .= '<li><a href="'.$GLOBALS['ins_url']->getURL().'&action=modifier&form_structure='.$ligne[INS_CHAMPS_EST_STRUCTURE].'">'.INS_MODIFIER_INSCRIPTION.'</a></li>'."\n" ; |
$res .= '<li><a href="'.$GLOBALS['ins_url']->getURL().'&action=supprimer&form_structure='.$ligne[INS_CHAMPS_EST_STRUCTURE].'" onclick="javascript:return confirm(\''.INS_SUPPRIMER_INSCRIPTION.'?\');">'.INS_SUPPRIMER_INSCRIPTION.'</a></li>'."\n" ; |
$res .= '<li><a href="'.$GLOBALS['ins_url']->getURL().'&action=deconnexion">'.INS_DECONNEXION.'</a></li>'."\n" ; |
$res .= '</ul>'."\n"; |
$res .= '</div>'."\n"; //div fiche |
} |
//voir les abonnements presents dans les applis clientes |
} elseif ($type_info=='abonnement') { |
$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n"; |
$res .= '<h2>'.INS_GESTION_DES_ABONNEMENTS.'</h2>'."\n" ; |
// Appel des actions d'abonnement des applications clientes |
$d = dir(GEN_CHEMIN_CLIENT); |
$abonnement=''; |
$abonnements=''; |
while (false !== ($repertoire = $d->read())) { |
if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.'bibliotheque'.GEN_SEP.$repertoire.'.abonnement.inc.php')) { |
require_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.'bibliotheque'.GEN_SEP.$repertoire.'.abonnement.inc.php' ; |
$abonnements .= $abonnement; |
} |
} |
$d->close(); |
$res .= $abonnements; |
//voir les actus |
} elseif ($type_info=='actus') { |
$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n"; |
$res .= '<h2>'.INS_ACTUALITES_DEPOSEES.'</h2>'."\n" ; |
require_once GEN_CHEMIN_CLIENT.'bazar'.GEN_SEP.'configuration'.GEN_SEP.'baz_config.inc.php'; |
require_once GEN_CHEMIN_CLIENT.'bazar'.GEN_SEP.'bibliotheque'.GEN_SEP.'bazar.fonct.rss.php'; |
$_GET['action']=1; |
$res .= RSSversHTML(gen_RSS('', '', $id, 1, ''), 0, 'jma', 0); |
//voir les ressources |
} elseif ($type_info=='ressources') { |
$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n"; |
$res .= '<h2>'.INS_RESSOURCES_ASSOCIEES.'</h2>'."\n" ; |
$requete = 'SELECT bf_id_fiche, bf_titre FROM bazar_fiche, bazar_appropriation WHERE ba_ce_id_fiche=bf_id_fiche AND ba_ce_id_structure='.$id ; |
$resultat = $GLOBALS['ins_db'] -> query($requete) ; |
$res .= '<ul>'."\n"; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$res .= '<li><a href="'.INS_URL_BAZAR.'&action=8&id_fiche='.$ligne['bf_id_fiche'].'" onclick="window.open(this.href,\'_blank\');return false;">'.$ligne['bf_titre'].'</a></li>'."\n"; |
} |
$res .= '</ul><br />'."\n"; |
//voir les competences |
} elseif ($type_info=='competences') { |
$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n"; |
$res .= '<h2>'.INS_COMPETENCES_ASSOCIEES.'</h2>'."\n" ; |
} |
return $res ; |
} |
/** inscription_ligne() - Renvoie une ligne avec label et valeur |
* |
* @param string label Le label |
* @param string valeur |
* @return string HTML |
*/ |
function inscription_ligne($label, $valeur) { |
if ($valeur == '') { |
return; |
} |
if (($label == '')or($label == ' ')) { |
return '<div class="inscription_infos">'.$valeur.'</div>'."\n"; |
} else { |
return '<div class="inscription_infos"><strong class="inscription_label">'."\n".$label.' : </strong>'.$valeur.'</div>'."\n"; |
} |
} |
/** 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 inscription_verif_doublonMail($mail, $id = '') { |
if ($id == '') { |
if (isset ($GLOBALS['AUTH'])) { |
$id = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) ; |
} |
} |
if (isset ($id) && $id != '') { |
$requete_mail = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE." where ". |
INS_CHAMPS_ID."=".$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 inscription_envoie_passe() { |
$res=''; |
$requete = 'SELECT '.INS_CHAMPS_MAIL.' FROM '.INS_ANNUAIRE.' WHERE '.INS_CHAMPS_MAIL.'="'.$_POST['mail'].'"' ; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
if ($resultat->numRows() == 0) { |
$res .= '<p class="erreur">'.INS_MAIL_INCONNU_DANS_ANNUAIRE.'</p>'."\n" ; |
} else { |
include_once PAP_CHEMIN_RACINE.'api/pear/Mail.php' ; |
$mail = & Mail::factory('smtp') ; |
$headers ['Return-Path'] = "<".INS_MAIL_ADMIN_APRES_INSCRIPTION.">" ; |
$headers ['From'] = "<".INS_MAIL_ADMIN_APRES_INSCRIPTION.">" ; |
$headers ['Subject'] = INS_MOT_DE_PASSE_CHANGE ; |
$headers ['Reply-To'] = "<".INS_MAIL_ADMIN_APRES_INSCRIPTION.">" ; |
$headers ['To'] = "<".$_POST['mail'].">" ; |
$nouveau_passe = create_new_random(6) ; |
// modification du mot de passe dans la base |
$requete = 'UPDATE '.INS_ANNUAIRE.' SET '.INS_CHAMPS_PASSE.'=MD5("'.$nouveau_passe.'") WHERE '.INS_CHAMPS_MAIL.'="'.$_POST['mail'].'"' ; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$body = INS_NOUVEAU_MOT_DE_PASSE_2.$nouveau_passe ; |
$body .= INS_NOUVEAU_MOT_DE_PASSE_LAIUS ; |
$mail->send($_POST['mail'], $headers, $body) ; |
if (PEAR::isError($mail)) { |
$res .= '<p class="erreur">'.INS_PROBLEME_ENVOI_MAIL.'</p>'."\n" ; |
return $res ; |
} |
$res .= '<p class="info">'.INS_NOUVEAU_MOT_DE_PASSE_ENVOYE.'</p>'."\n" ; |
} |
return $res ; |
} |
/** |
* Inscrit un adhérent à la lettre d'actualité par l'envoie d'un email subscribe / unsubscribe |
* à la liste |
* |
* @global AUTH Un objet PEAR::Auth |
* @return boolean true en cas de succès |
*/ |
function inscription_lettre($action) { |
include_once PAP_CHEMIN_RACINE.'api/pear/Mail.php' ; |
$mail = & Mail::factory ('smtp') ; |
$email = $GLOBALS['AUTH']->getUsername() ; |
$headers ['Return-Path'] = $email ; |
$headers ['From'] = "<".$email.">" ; |
$headers ['Subject'] = $action ; |
$headers ['Reply-To'] = $email ; |
$mail -> send ($action, $headers, "") ; |
if (PEAR::isError ($mail)) { |
echo '<p class="erreur">Le mail n\'est pas parti...</p>' ; |
return false ; |
} |
return true ; |
} |
/** |
* |
* @global ins_db Un pointeur vers un objet PEAR::DB connecté |
* @return |
*/ |
function inscription_envoie_mail() //A COMPLETER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
{ |
include_once PAP_CHEMIN_RACINE.'api/pear/Mail/mime.php' ; |
include_once PAP_CHEMIN_RACINE.'api/pear/Mail.php' ; |
$crlf="\n"; |
$headers ['From'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ; |
$headers ['Subject'] = INS_MAIL_COORD_SUJET ; |
$headers ['Reply-To'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ; |
$mime = new Mail_mime($crlf); |
$requete = "select *, ".INS_CHAMPS_LABEL_PAYS." from ".INS_ANNUAIRE.",".INS_TABLE_PAYS. |
" where ".INS_CHAMPS_MAIL."=\"".$GLOBALS['AUTH']->getUsername()."\"". |
" and ".INS_CHAMPS_ID_PAYS."=".INS_CHAMPS_PAYS; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError ($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ; |
$body_entete = INS_MAIL_COORD_CORPS."\n" ; |
$body = "mail : ".$ligne[INS_CHAMPS_MAIL]."\n" ; |
$body .= "------------------------------------------\n"; |
$body .= INS_NOM.": ".unhtmlentities($ligne[INS_CHAMPS_NOM])." \n" ; |
$body .= INS_PRENOM.' : '.unhtmlentities($ligne[INS_CHAMPS_PRENOM])." \n" ; |
$body .= INS_PAYS." : ".unhtmlentities($ligne[INS_CHAMPS_LABEL_PAYS])." \n" ; |
$body .= "-------------------------------------------\n" ; |
$mime->setTXTBody($body); |
$mime->setHTMLBody(info()) ; |
$body = $mime->get(); |
$headers = $mime->headers($headers); |
$mail = & Mail::factory('mail') ; |
$mail -> send ($ligne[INS_CHAMPS_MAIL], $headers, $body) ; |
// Envoi du mail aux administrateur du site |
foreach ($GLOBALS['mail_admin'] as $administrateur) { |
$mail -> send ($administrateur, $headers, $body) ; |
} |
if (PEAR::isError($mail)) { |
echo 'erreur d\'envoi' ; |
return false ; |
} |
return true ; |
} |
/** |
* Génère un nom wiki valide à partir des données saisies par l'utilisateur |
* fait une requete dans la base |
* |
* @return string un nom wiki valide |
*/ |
function inscription_genere_nom_wiki($prenom, $nom) { |
// 1. suppression des espaces |
$nom = trim ($nom) ; |
$prenom = trim ($prenom) ; |
// 2. suppression des caractères non ascii et ajout de la première lettre en majuscule |
$nom = inscription_trim_non_ascii ($nom) ; |
$prenom = inscription_trim_non_ascii ($prenom) ; |
// Vérification |
$nom_wiki = $prenom.$nom ; |
if (!preg_match('/^[A-Z][a-z]+[A-Z,0-9][A-Z,a-z,0-9]*$/', $nom_wiki)) { |
$nom_wiki = chr(rand(65, 90)).$nom_wiki.chr(rand(65, 90)) ; |
} |
return $nom_wiki ; |
} |
/** |
* Cette fonction supprime les caractères autres que asccii et les chiffres |
* |
* @return string la chaine épurée |
*/ |
function inscription_trim_non_ascii ($nom) { |
$premiere_lettre = true ; |
for ($i = 0; $i < strlen ($nom); $i++) { |
if (!preg_match ('/[a-zA-Z0-9]/', $nom[$i])) { |
$nom[$i] = '_' ; |
} |
// remplacement de la première lettre en majuscule |
if (preg_match ('/[a-zA-Z]/', $nom[$i]) && $premiere_lettre) { |
$nom[$i] = strtoupper ($nom[$i]) ; |
$premiere_lettre = false ; |
} else { |
if (preg_match ('/[a-zA-Z]/', $nom[$i])) { |
$nom[$i] = strtolower ($nom[$i]) ; |
} |
} |
} |
$nom = preg_replace ('/_/', '', $nom) ; |
return $nom ; |
} |
// For users prior to PHP 4.3.0 you may do this: |
//function unhtmlentities($string) |
//{ |
// $trans_tbl = array_flip ($trans_tbl); |
// return strtr ($string, $trans_tbl); |
//} |
//============================================================================== |
/** function 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 inscription_nextId($table, $colonne_identifiant) |
{ |
$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 source ------------------------------------------------------------ |
/* |
* $Log$ |
* Revision 1.12 2007/04/11 08:30:12 neiluj |
* remise en état du CVS... |
* |
* Revision 1.8.2.1 2007/01/26 10:28:43 alexandre_tb |
* correction d un notice |
* |
* Revision 1.8 2006/12/01 13:23:15 florian |
* integration annuaire backoffice |
* |
* Revision 1.7 2006/10/05 13:53:54 florian |
* amélioration des fichiers sql |
* |
* Revision 1.6 2006/09/13 12:31:18 florian |
* ménage: fichier de config Papyrus, fichiers temporaires |
* |
* Revision 1.5 2006/04/28 12:44:05 florian |
* integration bazar |
* |
* Revision 1.4 2006/04/11 08:39:52 alexandre_tb |
* correction de l'envoie de mail par la carto |
* |
* Revision 1.3 2006/04/10 14:21:51 florian |
* correction bug affichage formulaire de mail en double |
* |
* Revision 1.2 2006/04/10 14:15:10 florian |
* les cases à cocher apparaissent à nouveau |
* |
* Revision 1.1 2006/04/10 14:01:36 florian |
* uniformisation de l'appli bottin: plus qu'un fichier de fonctions |
* |
* |
*/ |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/inscription.fonct.php |
---|
New file |
0,0 → 1,813 |
<?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.28 2007-04-20 08:39:37 alexandre_tb Exp $ |
/** |
* Fonctions du module inscription |
* |
* Fonctions du module inscription |
* |
*@package inscription |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Florian Schmitt <florian@ecole-et-nature.org> |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.28 $ $Date: 2007-04-20 08:39:37 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
include_once 'inscription.fonct.wiki.php' ; |
include_once 'inscription.class.php' ; |
if (INS_UTILISE_SPIP) include_once 'inscription.fonct.spip.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 |
// On coupe l'identifiant de session pour ne prendre que les 8 premiers caractères |
// afin d'éviter d'obtenir une url trop longue |
$chaine = substr (session_id(), 0, 8) ; |
$requete_verif = 'select * from inscription_demande where id_identifiant_session="'.$chaine.'"' ; |
$resultat_verif = $GLOBALS['ins_db']->query ($requete_verif) ; |
if ($resultat_verif->numRows() != 0) { |
$requete_suppression = 'delete from inscription_demande where id_identifiant_session="'.$chaine.'"' ; |
$GLOBALS['ins_db']->query ($requete_suppression) ; |
} |
$requete = 'insert into inscription_demande set id_identifiant_session="'.$chaine.'", id_donnees="'. |
addslashes(serialize($valeurs)).'", id_date=NOW()' ; |
$resultat = $GLOBALS['ins_db']->query ($requete) ; |
if (DB::isError ($resultat)) { |
echo ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
// On envoie un email de confirmation pour l'utilisateur |
$GLOBALS['ins_url']->addQueryString ('id', $chaine) ; |
if (INS_UTILISE_REECRITURE_URL) { |
$url = 'http://'.$GLOBALS['ins_url']->host.'/'.INS_URL_PREFIXE.$chaine ; |
} else { |
$url = str_replace ('&', '&', $GLOBALS['ins_url']->getURL()) ; |
} |
require_once PAP_CHEMIN_API_PEAR.'HTML/Template/IT.php'; |
$tpl = new HTML_Template_IT() ; |
// Le gabarit du mail est dans un template |
// template 2 |
$requete = 'select it_template from inscription_template where it_id_template=2'. |
' and it_i18n like "%'.INS_LANGUE_DEFAUT.'"' ; |
if (!$tpl -> setTemplate($GLOBALS['ins_db']->getOne ($requete))) { |
echo 'erreur' ; |
} |
$tpl->setVariable('URL_INSCRIPTION', $url) ; |
mail ($GLOBALS['email'], 'Inscription', $tpl->get(), 'From: '.INS_MAIL_ADMIN_APRES_INSCRIPTION) ; |
} |
/** |
* |
* @param array les valeurs renvoyés par le formulaire |
* @return |
*/ |
function inscription_validee($valeurs) { |
insertion($valeurs) ; |
$GLOBALS['AUTH']->username = $valeurs['email'] ; |
$GLOBALS['AUTH']->password = $valeurs['mot_de_passe'] ; |
// On loggue l'utilisateur |
$GLOBALS['AUTH']->login() ; |
// inscription à la lettre d'information |
if (INS_CHAMPS_LETTRE != '' && isset ($valeurs['lettre'])) { |
inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ; |
} |
} |
/** |
* Renvoie l'accueil de l'inscription |
* |
* @return string HTML |
*/ |
function AUTH_formulaire_login() { |
require_once PAP_CHEMIN_API_PEAR.'api/pear/HTML/Template/IT.php'; |
$tpl = new HTML_Template_IT() ; |
// Le formulaire pour se logguer est dans un template |
// template 1 |
$requete = 'SELECT it_template FROM inscription_template WHERE it_id_template=1'. |
' AND it_i18n LIKE "%'.INS_LANGUE_DEFAUT.'"' ; |
if (!$tpl -> setTemplate($GLOBALS['ins_db']->getOne ($requete))) { |
echo 'erreur' ; |
} |
$tpl->setVariable('URL_INSCRIPTION', $GLOBALS['ins_url']->getURL()); |
return $tpl->get() ; |
} |
/** formulaire_envoi_passe() - Renvoie le code HTML d'un formulaire d'envoi de mot de passe par mail |
* |
* @return string HTML |
*/ |
function formulaire_envoi_passe() { |
$res = '<h2>'.INS_SI_PASSE_PERDU.'</h2>'."\n" ; |
$res .= '<form action="'.$GLOBALS['ins_url']->getURL().'&action=sendpasswd" method="post">'."\n" ; |
$res .= '<p class="label100">'.INS_EMAIL.' : </p>'."\n" ; |
$res .= '<input type="text" value="'; |
if (isset($_POST['username'])) $res .= $_POST['username']; |
$res .= '" name="mail" size="32" />'."\n" ; |
$res .= '<input type="submit" value="'.INS_ENVOIE_PASSE.'" />' ; |
$res .= '</form><br />'."\n" ; |
$res .= AUTH_formulaire_login() ; |
return $res; |
} |
function insertion($valeur) { |
// =========== Insertion dans l'annuaire =================== |
// Génération du nom wikini à partir du nom et du prénom |
if (INS_UTILISE_WIKINI && INS_NOM_WIKINI_GENERE) { |
$valeur['nom_wiki'] = genere_nom_wiki ($valeur['nom'], isset ($valeur['prenom']) ? $valeur['prenom'] : '') ; |
} else { |
if (!INS_NOM_WIKINI_GENERE) { |
$valeur['nom_wiki'] = $valeur['nomwiki']; |
} |
} |
$id_utilisateur = nextId(INS_ANNUAIRE, INS_CHAMPS_ID, $GLOBALS['ins_db']) ; |
$requete = 'INSERT INTO '.INS_ANNUAIRE.' SET '. |
INS_CHAMPS_ID.'="'.$id_utilisateur.'",'. |
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_utilisateur, $valeur) ; |
} |
if (INS_UTILISE_WIKINI) inscription_interwikini_users('', $valeur) ; |
return $id_utilisateur ; |
} |
/** |
* 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, $id = '') { |
// ====================Mise à jour dans l'annuaire gen_annuaire ==================== |
if ($id == '') { |
$id = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID); |
} |
$requete = 'update '.INS_ANNUAIRE.' set '. |
requete_annuaire ($valeur). |
'where '.INS_CHAMPS_ID.'="'.$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.'="'.addslashes($valeur['nom']).'", '; |
if (isset($valeur['est_structure']) && $valeur['est_structure'] == 0) |
$req .= INS_CHAMPS_PRENOM.'="'.addslashes($valeur['prenom']).'", '; |
// Initialisation de variable pour éviter des notices |
foreach (array ('adresse_1', 'adresse_2', 'ville', 'telephone', 'fax', 'site') as $val) { |
if (!isset ($valeur[$val])) $valeur[$val] = '' ; |
} |
$req .= INS_CHAMPS_MAIL.'="'.addslashes($valeur['email']).'", ' ; |
$req .= INS_CHAMPS_PASSE.'="'.md5($valeur['mot_de_passe']).'", '. |
INS_CHAMPS_PAYS.'="'.addslashes($valeur['pays']).'", '. |
INS_CHAMPS_ADRESSE_1.'="'.addslashes($valeur['adresse_1']).'", '. |
INS_CHAMPS_ADRESSE_2.'="'.addslashes($valeur['adresse_2']).'", '. |
INS_CHAMPS_DATE_INSCRIPTION.'=NOW(), '. |
INS_CHAMPS_CODE_POSTAL.'="'.addslashes($valeur['cp']).'", '. |
INS_CHAMPS_VILLE.'="'.addslashes($valeur['ville']).'", '. |
INS_CHAMPS_EST_STRUCTURE.'="'.addslashes($valeur['est_structure']).'", '. |
INS_CHAMPS_TELEPHONE.'="'.addslashes($valeur['telephone']).'", '. |
INS_CHAMPS_FAX.'="'.addslashes($valeur['fax']).'", '. |
INS_CHAMPS_SITE_INTERNET.'="'.addslashes($valeur['site']).'" '; |
if (isset($valeur['visible'])) $req .= ', '.INS_CHAMPS_VISIBLE.'="'.$valeur['visible'].'"'; |
else $req .= ', '.INS_CHAMPS_VISIBLE.'=0'; |
if (INS_CHAMPS_LETTRE != '') { |
if (isset($valeur['lettre'])) { |
$req .= ', '.INS_CHAMPS_LETTRE.'="'.$valeur['lettre'].'" '; |
inscription_lettre('inscrire'); |
} |
else { |
$req .= ', '.INS_CHAMPS_LETTRE.'=0 '; |
inscription_lettre('desinscrire'); |
} |
} |
if (isset($valeur['sigle_structure'])) { |
$req .= ', '.INS_CHAMPS_SIGLE_STRUCTURE.'="'.addslashes($valeur['sigle_structure']).'"' ; |
} |
if (isset($valeur['num_agrement'])) { |
$req .= ', '.INS_CHAMPS_NUM_AGREMENT.'="'.addslashes($valeur['num_agrement']).'"' ; |
} |
// traitement du numéro de département pour la france |
if ($valeur['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'"; |
} |
if (INS_UTILISE_WIKINI && isset ($valeur['nom_wiki'])) $req .= ','.INS_CHAMPS_NOM_WIKINI.'="'.$valeur['nom_wiki'].'"'; |
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($id = '') { |
if ($id == '') { |
$id = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID); |
} |
$requete = 'select '.INS_ANNUAIRE.'.* '. |
'from '.INS_ANNUAIRE.' '. |
'where '.INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'= "'.$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] ; |
if (INS_UTILISE_WIKINI) {$valeurs_par_defaut['nomwiki'] = $ligne[INS_CHAMPS_NOM_WIKINI] ;} |
$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] ; |
$valeurs_par_defaut['telephone'] = $ligne[INS_CHAMPS_TELEPHONE] ; |
$valeurs_par_defaut['fax'] = $ligne[INS_CHAMPS_FAX] ; |
if (INS_CHAMPS_STRUCTURE != '' && isset($ligne[INS_CHAMPS_STRUCTURE])) { |
$valeurs_par_defaut['structure'] = $ligne[INS_CHAMPS_STRUCTURE] ; |
//$valeurs_par_defaut['type_structure'] = $ligne['a_type_structure']; |
} |
$valeurs_par_defaut['site'] = $ligne[INS_CHAMPS_SITE_INTERNET] ; |
$valeurs_par_defaut['lettre'] = $ligne[INS_CHAMPS_LETTRE] ; |
$valeurs_par_defaut['visible'] = $ligne[INS_CHAMPS_VISIBLE] ; |
$valeurs_par_defaut['sigle_structure'] = $ligne[INS_CHAMPS_SIGLE_STRUCTURE] ; |
if (INS_CHAMPS_NUM_AGREMENT != '') $valeurs_par_defaut['num_agrement'] = $ligne[INS_CHAMPS_NUM_AGREMENT] ; |
return $valeurs_par_defaut ; |
} |
/** info() - Renvoie une fiche d'information sur la personne ou la structure |
* |
* @param integer identifiant de la fiche a afficher, mettre -1 pour voir sa propre fiche |
* @param text nom de l'onglet de la fiche |
* |
* @return text Code HTML de la fiche |
*/ |
function info($id=-1, $type_info='fiche') { |
if ($id==-1) $id=$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID); |
$requete = 'SELECT * FROM '.INS_ANNUAIRE.' WHERE '.INS_ANNUAIRE.'.' |
.INS_CHAMPS_ID.'="'.$id.'"' ; |
$resultat = $GLOBALS['ins_db'] -> query($requete) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ; |
//voir la présentation de la fiche |
if ($type_info=='fiche') { |
if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 1) { |
$res = '<h1>'.$ligne[INS_CHAMPS_NOM].'</h1>'."\n"; |
$res .= '<h2>'.INS_FICHE_STRUCTURE.'</h2>'."\n" ; |
$res .= '<ul class="affiche_infos">'."\n"; |
$res .= ligne_inscription(INS_SIGLE_DE_LA_STRUCTURE, $ligne[INS_CHAMPS_SIGLE_STRUCTURE]) ; |
if (INS_CHAMPS_NUM_AGREMENT != '') $res .= ligne_inscription(INS_NUM_AGREMENT, $ligne[INS_CHAMPS_NUM_AGREMENT]) ; |
} else { |
$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n"; |
$res .= '<h2>'.INS_FICHE_PERSONNELLE.'</h2>'."\n" ; |
$res .= '<ul class="affiche_infos">'."\n"; |
} |
$res .= ligne_inscription(INS_ADRESSE_1, $ligne[INS_CHAMPS_ADRESSE_1]) ; |
$res .= ligne_inscription(INS_ADRESSE_2, $ligne[INS_CHAMPS_ADRESSE_2]) ; |
$res .= ligne_inscription(INS_CODE_POSTAL, $ligne[INS_CHAMPS_CODE_POSTAL]) ; |
$res .= ligne_inscription(INS_VILLE, $ligne[INS_CHAMPS_VILLE]) ; |
$pays = new ListeDePays($GLOBALS['ins_db']) ; |
$res .= ligne_inscription(INS_PAYS, $pays->getNomPays($ligne[INS_CHAMPS_PAYS], INS_LANGUE_DEFAUT)) ; |
$res .= ligne_inscription(INS_TELEPHONE, $ligne[INS_CHAMPS_TELEPHONE]) ; |
$res .= ligne_inscription(INS_FAX, $ligne[INS_CHAMPS_FAX]) ; |
if (INS_UTILISE_WIKINI) { |
$res .= ligne_inscription (INS_NOM_WIKI, $ligne[INS_CHAMPS_NOM_WIKINI]) ; |
} |
if ($ligne[INS_CHAMPS_SITE_INTERNET]!='') { |
$res .= ligne_inscription(INS_SITE_INTERNET, '<a href="'.$ligne[INS_CHAMPS_SITE_INTERNET].'" onclick="javascript:window.open(this.href);return false;">'.$ligne[INS_CHAMPS_SITE_INTERNET].'</a>'); |
} |
if ($GLOBALS['AUTH']->getAuth()) $res .= ligne_inscription(INS_EMAIL, '<a href="mailto:'.$ligne[INS_CHAMPS_MAIL].'">'.$ligne[INS_CHAMPS_MAIL].'</a>'); |
else $res .= '<br /><p class="zone_info">'.INS_PAS_IDENTIFIE.'</p>'."\n"; |
$res .= '</ul>'."\n"; |
if ($id==$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID)) { |
$res .= '<br />'."\n"; |
$res .= '<ul>'."\n"; |
if ($ligne[INS_CHAMPS_VISIBLE] == 1) { |
$res .= '<li>'.INS_VOUS_APPARAISSEZ.'</li>'."\n"; |
} else $res .= '<li>'.INS_VOUS_APPARAISSEZ_PAS.'</li>'."\n"; |
if (INS_CHAMPS_LETTRE != '') { |
if ($ligne[INS_CHAMPS_LETTRE] == 1) { |
$res .= '<li>'.INS_VOUS_RECEVEZ_LETTRE.'</li>'."\n"; |
} else $res .= '<li>'.INS_VOUS_RECEVEZ_PAS_LETTRE.'</li>'."\n"; |
} |
$res .= '</ul>'."\n"; |
$res .= '<br />'."\n"; |
$res .= '<ul>'."\n";; |
$res .= '<li><a href="'.$GLOBALS['ins_url']->getURL().'&action=modifier&form_structure='.$ligne[INS_CHAMPS_EST_STRUCTURE].'">'.INS_MODIFIER_INSCRIPTION.'</a></li>'."\n" ; |
$res .= '<li><a href="'.$GLOBALS['ins_url']->getURL().'&action=supprimer&form_structure='.$ligne[INS_CHAMPS_EST_STRUCTURE].'" onclick="javascript:return confirm(\''.INS_SUPPRIMER_INSCRIPTION.'?\');">'.INS_SUPPRIMER_INSCRIPTION.'</a></li>'."\n" ; |
$res .= '<li><a href="'.$GLOBALS['ins_url']->getURL().'&action=deconnexion">'.INS_DECONNEXION.'</a></li>'."\n" ; |
$res .= '</ul>'."\n"; |
} |
//voir les abonnements presents dans les applis clientes |
} elseif ($type_info=='abonnement') { |
$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n"; |
$res .= '<h2>'.INS_GESTION_DES_ABONNEMENTS.'</h2>'."\n" ; |
// Appel des actions d'abonnement des applications clientes |
$d = dir(GEN_CHEMIN_CLIENT); |
$abonnement=''; |
$abonnements=''; |
while (false !== ($repertoire = $d->read())) { |
if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.'bibliotheque'.GEN_SEP.$repertoire.'.abonnement.inc.php')) { |
require_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.'bibliotheque'.GEN_SEP.$repertoire.'.abonnement.inc.php' ; |
$abonnements .= $abonnement; |
} |
} |
$d->close(); |
$res .= $abonnements; |
//voir les actus |
} elseif ($type_info=='actus') { |
$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n"; |
$res .= '<h2>'.INS_ACTUALITES_DEPOSEES.'</h2>'."\n" ; |
require_once GEN_CHEMIN_CLIENT.'bazar'.GEN_SEP.'configuration'.GEN_SEP.'baz_config.inc.php'; |
require_once GEN_CHEMIN_CLIENT.'bazar'.GEN_SEP.'bibliotheque'.GEN_SEP.'bazar.fonct.rss.php'; |
$_GET['action']=1; |
$res .= RSSversHTML(gen_RSS('', '', $id, 1, ''), 0, 'jma', 0); |
//voir les ressources |
} elseif ($type_info=='ressources') { |
$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n"; |
$res .= '<h2>'.INS_RESSOURCES_ASSOCIEES.'</h2>'."\n" ; |
$requete = 'SELECT bf_id_fiche, bf_titre FROM bazar_fiche, bazar_appropriation WHERE ba_ce_id_fiche=bf_id_fiche AND ba_ce_id_structure='.$id ; |
$resultat = $GLOBALS['ins_db'] -> query($requete) ; |
$res .= '<ul>'."\n"; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$res .= '<li><a href="'.INS_URL_BAZAR.'&action=8&id_fiche='.$ligne['bf_id_fiche'].'" onclick="window.open(this.href,\'_blank\');return false;">'.$ligne['bf_titre'].'</a></li>'."\n"; |
} |
$res .= '</ul><br />'."\n"; |
//voir les competences |
} elseif ($type_info=='competences') { |
$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n"; |
$res .= '<h2>'.INS_COMPETENCES_ASSOCIEES.'</h2>'."\n" ; |
} |
return $res ; |
} |
/** ligne_inscription() - Renvoie une ligne avec label et valeur |
* |
* @param string label Le label |
* @param string valeur |
* @return string HTML |
*/ |
function ligne_inscription($label, $valeur) { |
if ($valeur == '') { |
return; |
} |
if (($label == '')or($label == ' ')) { |
return '<li>'."\n".$valeur."\n".'</li>'."\n" ; |
} else { |
return '<li>'."\n".'<strong>'.$label.' : </strong>'."\n".$valeur."\n".'</li>'."\n" ; |
} |
} |
/** 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, $id = '') { |
if ($id == '') { |
if (isset ($GLOBALS['AUTH'])) { |
$id = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) ; |
} |
} |
if (isset ($id) && $id != '') { |
$requete_mail = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE." where ". |
INS_CHAMPS_ID."=".$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() { |
$res=''; |
$requete = 'SELECT '.INS_CHAMPS_MAIL.' FROM '.INS_ANNUAIRE.' WHERE '.INS_CHAMPS_MAIL.'="'.$_POST['mail'].'"' ; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
if ($resultat->numRows() == 0) { |
$res .= '<p class="erreur">'.INS_MAIL_INCONNU_DANS_ANNUAIRE.'</p>'."\n" ; |
} else { |
include_once PAP_CHEMIN_RACINE.'api/pear/Mail.php' ; |
$mail = & Mail::factory('smtp') ; |
$headers ['Return-Path'] = "<".INS_MAIL_ADMIN_APRES_INSCRIPTION.">" ; |
$headers ['From'] = "<".INS_MAIL_ADMIN_APRES_INSCRIPTION.">" ; |
$headers ['Subject'] = INS_MOT_DE_PASSE_CHANGE ; |
$headers ['Reply-To'] = "<".INS_MAIL_ADMIN_APRES_INSCRIPTION.">" ; |
$headers ['To'] = "<".$_POST['mail'].">" ; |
$nouveau_passe = create_new_random(6) ; |
// modification du mot de passe dans la base |
$requete = 'UPDATE '.INS_ANNUAIRE.' SET '.INS_CHAMPS_PASSE.'=MD5("'.$nouveau_passe.'") WHERE '.INS_CHAMPS_MAIL.'="'.$_POST['mail'].'"' ; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$body = INS_NOUVEAU_MOT_DE_PASSE_2.$nouveau_passe ; |
$body .= INS_NOUVEAU_MOT_DE_PASSE_LAIUS ; |
$mail->send($_POST['mail'], $headers, $body) ; |
if (PEAR::isError($mail)) { |
$res .= '<p class="erreur">'.INS_PROBLEME_ENVOI_MAIL.'</p>'."\n" ; |
return $res ; |
} |
$res .= '<p class="info">'.INS_NOUVEAU_MOT_DE_PASSE_ENVOYE.'</p>'."\n" ; |
} |
return $res ; |
} |
/** |
* Inscrit un adhérent à la lettre d'actualité par l'envoie d'un email subscribe / unsubscribe |
* à la liste |
* |
* @global AUTH Un objet PEAR::Auth |
* @return boolean true en cas de succès |
*/ |
function inscription_lettre($action) { |
include_once PAP_CHEMIN_RACINE.'api/pear/Mail.php' ; |
$mail = & Mail::factory ('smtp') ; |
$email = $GLOBALS['AUTH']->getUsername() ; |
$headers ['Return-Path'] = $email ; |
$headers ['From'] = "<".$email.">" ; |
$headers ['Subject'] = $action ; |
$headers ['Reply-To'] = $email ; |
$mail -> send ($action, $headers, "") ; |
if (PEAR::isError ($mail)) { |
echo '<p class="erreur">Le mail n\'est pas parti...</p>' ; |
return false ; |
} |
return true ; |
} |
/** |
* |
* @global ins_db Un pointeur vers un objet PEAR::DB connecté |
* @return |
*/ |
function envoie_mail() //A COMPLETER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
{ |
include_once PAP_CHEMIN_RACINE.'api/pear/Mail/mime.php' ; |
include_once PAP_CHEMIN_RACINE.'api/pear/Mail.php' ; |
$crlf="\n"; |
$headers ['From'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ; |
$headers ['Subject'] = INS_MAIL_COORD_SUJET ; |
$headers ['Reply-To'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ; |
$mime = new Mail_mime($crlf); |
$requete = "select *, ".INS_CHAMPS_LABEL_PAYS." from ".INS_ANNUAIRE.",".INS_TABLE_PAYS. |
" where ".INS_CHAMPS_MAIL."=\"".$GLOBALS['AUTH']->getUsername()."\"". |
" and ".INS_CHAMPS_ID_PAYS."=".INS_CHAMPS_PAYS; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError ($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ; |
$body_entete = INS_MAIL_COORD_CORPS."\n" ; |
$body = "mail : ".$ligne[INS_CHAMPS_MAIL]."\n" ; |
$body .= "------------------------------------------\n"; |
$body .= INS_NOM.": ".unhtmlentities($ligne[INS_CHAMPS_NOM])." \n" ; |
$body .= INS_PRENOM.' : '.unhtmlentities($ligne[INS_CHAMPS_PRENOM])." \n" ; |
$body .= INS_PAYS." : ".unhtmlentities($ligne[INS_CHAMPS_LABEL_PAYS])." \n" ; |
$body .= "-------------------------------------------\n" ; |
$mime->setTXTBody($body); |
$mime->setHTMLBody(info()) ; |
$body = $mime->get(); |
$headers = $mime->headers($headers); |
$mail = & Mail::factory('mail') ; |
$mail -> send ($ligne[INS_CHAMPS_MAIL], $headers, $body) ; |
// Envoi du mail aux administrateur du site |
foreach ($GLOBALS['mail_admin'] as $administrateur) { |
$mail -> send ($administrateur, $headers, $body) ; |
} |
if (PEAR::isError($mail)) { |
echo 'erreur d\'envoi' ; |
return false ; |
} |
return true ; |
} |
/** |
* Génère un nom wiki valide à partir des données saisies par l'utilisateur |
* fait une requete dans la base |
* |
* @return string un nom wiki valide |
*/ |
function genere_nom_wiki($prenom, $nom) { |
// 1. suppression des espaces |
$nom = trim ($nom) ; |
$prenom = trim ($prenom) ; |
// 2. suppression des caractères non ascii et ajout de la première lettre en majuscule |
$nom = trim_non_ascii ($nom) ; |
$prenom = trim_non_ascii ($prenom) ; |
// Vérification |
$nom_wiki = $prenom.$nom ; |
if (!preg_match('/^[A-Z][a-z]+[A-Z,0-9][A-Z,a-z,0-9]*$/', $nom_wiki)) { |
$nom_wiki = chr(rand(65, 90)).$nom_wiki.chr(rand(65, 90)) ; |
} |
return $nom_wiki ; |
} |
/** |
* Cette fonction supprime les caractères autres que asccii et les chiffres |
* |
* @return string la chaine épurée |
*/ |
function trim_non_ascii ($nom) { |
$premiere_lettre = true ; |
for ($i = 0; $i < strlen ($nom); $i++) { |
if (!preg_match ('/[a-zA-Z0-9]/', $nom[$i])) { |
$nom[$i] = '_' ; |
} |
// remplacement de la première lettre en majuscule |
if (preg_match ('/[a-zA-Z]/', $nom[$i]) && $premiere_lettre) { |
$nom[$i] = strtoupper ($nom[$i]) ; |
$premiere_lettre = false ; |
} else { |
if (preg_match ('/[a-zA-Z]/', $nom[$i])) { |
$nom[$i] = strtolower ($nom[$i]) ; |
} |
} |
} |
$nom = preg_replace ('/_/', '', $nom) ; |
return $nom ; |
} |
// 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); |
} |
//============================================================================== |
/** function 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) |
{ |
$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.27 2007/04/11 08:30:12 neiluj |
* remise en état du CVS... |
* |
* Revision 1.23 2006/12/01 13:23:15 florian |
* integration annuaire backoffice |
* |
* Revision 1.22 2006/10/05 13:53:53 florian |
* amélioration des fichiers sql |
* |
* Revision 1.21 2006/09/20 13:10:01 alexandre_tb |
* Ajout d'un test sur la lettre d'actualité |
* |
* Revision 1.20 2006/07/06 10:33:58 alexandre_tb |
* Suppression d'un warning |
* |
* Revision 1.19 2006/07/04 09:39:27 alexandre_tb |
* correction d'un bug mineur |
* |
* Revision 1.18 2006/06/01 14:42:20 alexandre_tb |
* suppression d'un commentaire inutile |
* |
* Revision 1.17 2006/04/28 12:44:05 florian |
* integration bazar |
* |
* Revision 1.16 2006/04/11 08:41:41 alexandre_tb |
* Ajout du champs nom wiki dans le formulaire si la constante INS_GENERE_NOM_WIKI n'est pas activé |
* |
* Revision 1.15 2006/04/10 14:01:36 florian |
* uniformisation de l'appli bottin: plus qu'un fichier de fonctions |
* |
* Revision 1.14 2006/04/04 12:23:05 florian |
* modifs affichage fiches, généricité de la carto, modification totale de l'appli annuaire |
* |
* Revision 1.13 2006/03/21 10:25:33 alexandre_tb |
* ajout d'un template pour le mail de confirmation |
* |
* Revision 1.12 2006/03/15 11:02:35 alexandre_tb |
* ajout de l'insertion du prénom qui avait disparu |
* |
* Revision 1.11 2006/03/02 16:57:31 alexandre_tb |
* correction appel au générateur de nom wiki |
* |
* Revision 1.10 2006/02/28 14:02:20 alexandre_tb |
* suppression des insertion dans les tables du bazar |
* |
* Revision 1.9 2006/02/14 10:19:10 alexandre_tb |
* Mise en place des templates |
* CREATE TABLE `inscription_template` ( |
* `it_id_template` smallint(5) unsigned NOT NULL default '0', |
* `it_i18n` varchar(5) NOT NULL default '', |
* `it_template` text NOT NULL, |
* PRIMARY KEY (`it_id_template`) |
* ) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
* |
* Revision 1.8 2006/01/02 09:51:38 alexandre_tb |
* généralisation du code et intégration au bottin |
* |
* Revision 1.7 2005/12/19 13:19:07 alexandre_tb |
* Correction de l'affichage des pays |
* |
* Revision 1.6 2005/11/24 16:17:52 florian |
* changement template inscription + modifs carto |
* |
* Revision 1.5 2005/11/18 16:04:15 florian |
* corrections de bugs, optimisations, tests pour rendre inscription stable. |
* |
* Revision 1.4 2005/11/17 18:48:02 florian |
* corrections bugs + amélioration de l'application d'inscription |
* |
* Revision 1.3 2005/10/03 09:45:21 alexandre_tb |
* suppression d'un echo |
* |
* Revision 1.2 2005/09/29 13:56:48 alexandre_tb |
* En cours de production. Reste à gérer les news letters et d'autres choses. |
* |
* Revision 1.1 2005/09/22 14:02:49 ddelon |
* nettoyage annuaire et php5 |
* |
* Revision 1.4 2005/09/22 13:30:49 florian |
* modifs pour compatibilité XHTML Strict + corrections de bugs (mais ya encore du boulot!!) |
* |
* Revision 1.3 2005/03/21 16:57:30 florian |
* correction de bug, mise à jour interface |
* |
* Revision 1.2 2004/12/17 17:41:51 alex |
* ajout du numéro de tel, du fax et de la structure |
* |
* Revision 1.1 2004/12/15 13:32:25 alex |
* version initiale |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent87413cb2f49ab95a7332a98e39361db5.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent87413cb2f49ab95a7332a98e39361db5.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continentc1f9f0d0e489b7ae8617a5304d91583d.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continentc1f9f0d0e489b7ae8617a5304d91583d.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent0da6482d48a9e57af6b9c4fe6c56f30b.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent0da6482d48a9e57af6b9c4fe6c56f30b.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continente7951401ce28bb8a3c3a83a2d2cc2260.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continente7951401ce28bb8a3c3a83a2d2cc2260.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent4e02f3d287ff451b28c7acd51fee072e.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent4e02f3d287ff451b28c7acd51fee072e.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/vide.txt |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continenta729e2de4cac4495743c2af70cfd6cb5.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continentecf6c7b537d24ab0698ff6154584c915.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continentecf6c7b537d24ab0698ff6154584c915.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent0bfaa9187a3b23e6cd9ee3e3cc3210a9.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent0bfaa9187a3b23e6cd9ee3e3cc3210a9.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent9c3720856d2c6a319cc4649a19c79557.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent9c3720856d2c6a319cc4649a19c79557.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent771ce0ad55596625a6242d5101ba3de6.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/livraison_narmer/client/bottin/bibliotheque/tmp/carto/continent771ce0ad55596625a6242d5101ba3de6.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/livraison_narmer/client/bottin/bibliotheque/annuaire.fonct.php |
---|
New file |
0,0 → 1,327 |
<?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: annuaire.fonct.php,v 1.7 2007-04-11 08:30:12 neiluj Exp $ |
/** |
* Fonctions du module annuaire |
* |
* Fonctions du module annuaire |
* |
*@package annuaire |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.7 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
//include_once "HTML/QuickForm.php" ; |
// +------------------------------------------------------------------------------------------------------+ |
// | LISTE de FONCTIONS | |
// +------------------------------------------------------------------------------------------------------+ |
/** function inscription_onglets() Affiche les onglets de présentation de la structure |
* |
* |
* |
* @return string HTML |
*/ |
function inscription_onglets() { |
$res='<ul id="onglets_inscription">'."\n"; |
//partie présentation |
$GLOBALS['ins_url']->addQueryString('voir_fiche', $_GET['voir_fiche']); |
$res .= '<li id="fiche"><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_PRESENTATION.'</a>'."\n".'</li>'."\n"; |
$GLOBALS['ins_url']->removeQueryString('voir_fiche'); |
//partie abonnement |
$GLOBALS['ins_url']->addQueryString('voir_abonnement', $_GET['voir_fiche']); |
$res .= '<li id="abonnements"><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_ABONNEMENTS.'</a></li>'."\n" ; |
$GLOBALS['ins_url']->removeQueryString('voir_abonnement'); |
//partie actualites |
$GLOBALS['ins_url']->addQueryString('voir_actus', $_GET['voir_fiche']); |
$res .= '<li id="actus"><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_ACTUALITES.'</a>'."\n".'</li>'."\n"; |
$GLOBALS['ins_url']->removeQueryString('voir_actus'); |
//partie ressources |
$GLOBALS['ins_url']->addQueryString('voir_ressources', $_GET['voir_fiche']); |
$res .= '<li id="ressources"><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_RESSOURCES.'</a>'."\n".'</li>'."\n"; |
$GLOBALS['ins_url']->removeQueryString('voir_ressources'); |
//partie competences |
$GLOBALS['ins_url']->addQueryString('voir_competences', $_GET['voir_fiche']); |
$res .= '<li id="competences"><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_COMPETENCES.'</a>'."\n".'</li>'."\n"; |
$GLOBALS['ins_url']->removeQueryString('voir_competences'); |
$res.= '</ul>'."\n"; |
return $res; |
} |
/** function Annuaire_recherche () Moteur de recherche dans l'annuaire des inscrits |
* |
* |
* |
* @return string HTML |
*/ |
function Annuaire_recherche() { |
$res ='<h2>'.INS_RECHERCHE_ANNUAIRE_DES_INSCRITS.'</h2>'."\n"; |
$form =& new HTML_QuickForm('form_recherche_annuaire', 'post', str_replace('&', '&', $GLOBALS['ins_url']->getURL())); |
$squelette =& $form->defaultRenderer(); |
$squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'<table>'."\n".'{content}'."\n".'</table>'."\n".'</form>'."\n"); |
$squelette->setElementTemplate( '<tr>'."\n". |
'<td style="padding:5px;text-align:right;">{label}'. |
'<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n". |
'<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n". |
' : </td>'."\n". |
'<td style="padding:5px;text-align:left;">{element}</td>'."\n". |
'</tr>'."\n" ); |
$squelette->setElementTemplate( '<tr>'."\n".'<td colspan=2 style="padding:5px;">{label}{element}</td>'."\n".'</tr>'."\n", 'bouton_rechercher'); |
$option_type=array ('0' => INS_PERSONNES_OU_STRUCTURES, |
'1' => INS_PERSONNES, |
'2' => INS_STRUCTURES); |
$form->addElement('select', 'nom_type', INS_JE_RECHERCHE, $option_type); |
//requete pour recuperer la liste des pays |
$requete = 'SELECT '.INS_CHAMPS_ID_PAYS.', '.INS_CHAMPS_LABEL_PAYS.' FROM '.INS_TABLE_PAYS.' WHERE '.INS_CHAMPS_I18N_PAYS.'="fr-FR"'; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
$option_pays = array('zz' => INS_TOUS_PAYS) ; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$option_pays[$ligne[INS_CHAMPS_ID_PAYS]] = $ligne[INS_CHAMPS_LABEL_PAYS] ; |
} |
$form->addElement('select', 'nom_pays', INS_PAYS, $option_pays); |
//requete pour recuperer la liste des départements |
$requete = 'SELECT '.INS_CHAMPS_ID_DEPARTEMENT.', '.INS_CHAMPS_NOM_DEPARTEMENT.' FROM '.INS_TABLE_DPT; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
$option_departements = array('0' => INS_TOUS_DEPARTEMENTS) ; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$option_departements[$ligne[INS_CHAMPS_ID_DEPARTEMENT]] = $ligne[INS_CHAMPS_NOM_DEPARTEMENT] ; |
} |
$form->addElement('select', 'nom_departement', INS_DEPARTEMENT_POUR_LA_FRANCE, $option_departements); |
$form->addElement('text', 'nom_annuaire', INS_NOM_ANNUAIRE); |
$form->addElement('submit', 'bouton_rechercher', INS_RECHERCHER); |
//valeurs par defaut |
$defauts=array('nom_pays'=>'fr','nom_departement'=>'0'); |
$form->setDefaults($defauts); |
//affichage du formulaire |
$res .=$form->toHtml(); |
//on teste si l'on affiche le resultat de la recherche ou |
if (isset($_POST['nom_type'])) { |
$requete = 'SELECT '.INS_CHAMPS_ID.', '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM.', '.INS_CHAMPS_VILLE.', '.INS_CHAMPS_CODE_POSTAL; |
$requete .= ' FROM '.INS_ANNUAIRE.' WHERE '; |
$req_where=0; |
if ($_POST['nom_type']==1) { |
$requete .= INS_CHAMPS_EST_STRUCTURE.'=0 '; |
$req_where=1; |
} elseif ($_POST['nom_type']==2) { |
$requete .= INS_CHAMPS_EST_STRUCTURE.'=1 '; |
$req_where=1; |
} |
if ($_POST['nom_pays']!='0'and$_POST['nom_pays']!='zz') { |
if ($req_where) { |
$requete .= 'AND '; |
} else { |
$req_where=1; |
} |
$requete .= INS_CHAMPS_PAYS.'="'.$_POST['nom_pays'].'" '; |
} |
if ($_POST['nom_departement']!='0') { |
if ($req_where) { |
$requete .= 'AND '; |
} else { |
$req_where=1; |
} |
$requete .= INS_CHAMPS_DEPARTEMENT.'="'.$_POST['nom_departement'].'" '; |
} |
if ($_POST['nom_annuaire']!='') { |
if ($req_where) { |
$requete .= 'AND '; |
} else { |
$req_where=1; |
} |
$requete .= '('.INS_CHAMPS_NOM.' LIKE "%'.$_POST['nom_annuaire'].'%"'. |
' OR '.INS_CHAMPS_PRENOM.' LIKE "%'.$_POST['nom_annuaire'].'%"'. |
' OR '.INS_CHAMPS_SIGLE_STRUCTURE.' LIKE "%'.$_POST['nom_annuaire'].'%"'. |
' OR '.INS_CHAMPS_DESCRIPTION.' LIKE "%'.$_POST['nom_annuaire'].'%") '; |
} |
if (!$req_where) $requete .= '1'; |
$requete .=' ORDER BY '.INS_CHAMPS_NOM; |
$resultat = $GLOBALS['ins_db']->query($requete); |
if ($resultat->numRows()>0) { |
$res .='<h2>'.INS_RESULTATS_RECHERCHE.' ('.$resultat->numRows().' '.INS_ENTREES.')</h2>'."\n"; |
$res .='<p class="zone_info">'.INS_CLIQUER_ELEMENT_LISTE.'</p>'."\n"; |
$i=0; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$donnees_membres[$i++]=$ligne; |
} |
$res .= listes_inscrit($donnees_membres); |
} |
else { |
$res .='<h2>'.INS_RESULTATS_RECHERCHE.'</h2>'."\n"; |
$res .= '<p class="zone_alert">'.INS_PAS_DE_RESULTATS.'</p>'."\n"; |
} |
} else { |
$res .='<h2>'.INS_DIX_DERNIERES_INSCRIPTIONS.'</h2>'."\n"; |
$requete = 'SELECT '.INS_CHAMPS_ID.', '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM.', '.INS_CHAMPS_VILLE.', '.INS_CHAMPS_CODE_POSTAL; |
$requete .= ' FROM '.INS_ANNUAIRE.' ORDER BY '.INS_CHAMPS_DATE.' DESC LIMIT 0 , 10'; |
$resultat = $GLOBALS['ins_db']->query($requete); |
if ($resultat->numRows()>0) { |
$i=0; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$donnees_membres[$i++]=$ligne; |
} |
$res .= listes_inscrit($donnees_membres, 0); |
} |
else { |
$res .= '<p class="zone_alert">'.INS_PAS_DE_RESULTATS.'</p>'."\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(& $donnees_membres, $affiche_form_mail=1) { |
$res = ''; |
if ($GLOBALS['AUTH']->getAuth()&&$affiche_form_mail) {$res .= '<form action="'.$GLOBALS['ins_url']->getURL().'" method="post" name="formmail">'."\n";} |
$res .= '<ul>'."\n"; |
for ($i=0;$i<count($donnees_membres);$i++) { |
$id = array_shift($donnees_membres[$i]); |
$GLOBALS['ins_url']->addQueryString('voir_fiche', $id); |
$res .= '<li><a href="'.$GLOBALS['ins_url']->getURL().'">'."\n"; |
if ($GLOBALS['AUTH']->getAuth()&&$affiche_form_mail) { |
$res.='<input type="checkbox" name="select[]" value="'.$id.'">'."\n"; |
} |
$res .= '<strong>'.$donnees_membres[$i][INS_CHAMPS_NOM]. |
' '.$donnees_membres[$i][INS_CHAMPS_PRENOM].'</strong>'."\n". |
' '.$donnees_membres[$i][INS_CHAMPS_CODE_POSTAL]. |
' '.$donnees_membres[$i][INS_CHAMPS_VILLE]; |
$res .= '</a></li>'."\n"; |
} |
$res .= '</ul>'."\n"; |
if ($GLOBALS['AUTH']->getAuth()&&$affiche_form_mail) { |
$res .= INS_CHECK_UNCHECK ; |
$res .= ' <input type="checkbox" name="selecttotal" onclick="javascript:setCheckboxes(\'formmail\');"><br />'; |
$res .= '<h3>'.INS_ENVOYER_MAIL.'</h3>'."\n"; |
$res .= '<p style="text-align:right;">'.INS_SUJET.' : <input style="border:1px solid #000;width:450px;" type="text" name="titre_mail"><br />'."\n". |
INS_MESSAGE.' : <textarea style="border:1px solid #000;width:450px;" name="corps" rows="5" cols="60"></textarea></p>'."\n". |
'<p style="width:100px;margin:4px auto;text-align:center;"><input type="submit" value="'.INS_ENVOYER.'" /></p>'."\n". |
'</form>'."\n"; |
} else { |
if ($affiche_form_mail) $res .='<br /><p class="zone_info">'.INS_PAS_IDENTIFIE.'</p>'."\n"; |
} |
return $res ; |
} |
/** envoie_mail_depuis_annuaire() |
* |
* |
* @return envoie l'email |
*/ |
function envoie_mail_depuis_annuaire() { |
$requete = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE. |
" where ".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); |
$entete = "From: <".$ligne[INS_CHAMPS_MAIL].">\n"; |
$_POST['corps'] .= ANN_PIED_MESSAGE; |
$_POST['corps'] = stripslashes($_POST['corps']) ; |
$liste = "" ; |
$liste_numero = implode (',', $_POST['select']) ; |
$requete_liste_mail = 'select '.INS_CHAMPS_MAIL.' from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID. |
' in ('.$liste_numero.')' ; |
$resultat_liste_mail = $GLOBALS['ins_db']->query($requete_liste_mail); |
while ($ligne_liste_mail = $resultat_liste_mail->fetchRow(DB_FETCHMODE_ASSOC)) { |
mail ($ligne_liste_mail[INS_CHAMPS_MAIL], stripslashes($_POST['titre_mail']), $_POST['corps'] , $entete) ; |
$liste .= $ligne_liste_mail[INS_CHAMPS_MAIL]."\n" ; |
} |
$_POST['corps'] .= "\n----------------------------------------------------------------------------"; |
$_POST['corps'] .= "\n".ANN_MESSAGE_ENVOYE_A." :\n $liste" ; |
mail (INS_MAIL_ADMIN_APRES_INSCRIPTION, stripslashes($_POST['titre_mail']), $_POST['corps'], $entete); |
$_POST['corps'] = ''; |
$_POST['titre_mail'] = ''; |
return '<div>'.ANN_MAIL_ENVOYER.'</div>' ; |
} |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.4 2006/04/10 14:01:36 florian |
* uniformisation de l'appli bottin: plus qu'un fichier de fonctions |
* |
* Revision 1.3 2006/04/04 12:23:05 florian |
* modifs affichage fiches, généricité de la carto, modification totale de l'appli annuaire |
* |
* Revision 1.2 2005/09/29 16:13:54 alexandre_tb |
* En cours de production. |
* |
* Revision 1.1 2005/09/22 14:02:49 ddelon |
* nettoyage annuaire et php5 |
* |
* Revision 1.4 2005/09/22 13:30:49 florian |
* modifs pour compatibilité XHTML Strict + corrections de bugs (mais ya encore du boulot!!) |
* |
* Revision 1.3 2005/03/24 08:24:29 alex |
* -- |
* |
* Revision 1.2 2005/01/06 15:18:31 alex |
* modification de la fonction de formulaire d'authentification |
* |
* Revision 1.1.1.1 2005/01/03 17:27:49 alex |
* Import initial |
* |
* Revision 1.1 2005/01/03 17:18:49 alex |
* retour vers la liste des participants après un ajout. |
* |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/inscription.fonct.wiki.php |
---|
New file |
0,0 → 1,153 |
<?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.wiki.php,v 1.6 2007-04-11 08:30:12 neiluj 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.6 $ $Date: 2007-04-11 08:30:12 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
// +------------------------------------------------------------------------------------------------------+ |
// | LISTE de FONCTIONS | |
// +------------------------------------------------------------------------------------------------------+ |
function inscription_interwikini_users($id, $valeur) { |
// On vérifie l'existance du nom wiki dans interwikini_users |
$requete_verif = 'select name from interwikini_users where name="'.$valeur['nom_wiki'].'"'; |
$resultat_verif = $GLOBALS['ins_db']->query ($requete_verif) ; |
if (DB::isError($resultat_verif)) { |
echo ("Echec de la requete dans interwikini_users<br />".$resultat_verif->getMessage()) ; |
} |
if ($resultat_verif->numRows() != 0) { |
return ; |
} |
$requete = "insert into interwikini_users set name=\"".$valeur['nom_wiki']. |
"\", password=\"".md5($valeur['mot_de_passe'])."\", email=\"".$valeur['email']."\"". |
', signuptime=now()' ; |
$resultat = $GLOBALS['ins_db']->query ($requete) ; |
if (DB::isError($resultat)) { |
echo ("Echec de la requete dans interwikini_users<br />".$resultat->getMessage()) ; |
} |
} |
function mod_inscription_interwikini_users($nomwiki, $valeur) { |
$requete = "update interwikini_users set password=\"".md5($valeur['mot_de_passe'])."\", email=\"".$valeur['email']."\"". |
" where name=\"$nomwiki\"" ; |
$resultat = $GLOBALS['ins_db']->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete dans interwikini_users<br />".$resultat->getMessage()) ; |
} |
} |
function desinscription_interwikini_users($nomwiki) { |
$requete = "delete from interwikini_users where name=\"$nomwiki\"" ; |
$resultat = $GLOBALS['ins_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 ; |
} |
function wiki_cookie() { |
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, "/") ; |
} |
} |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.4 2006/07/04 09:39:03 alexandre_tb |
* correction d'un bug mineur |
* |
* Revision 1.3 2006/04/11 08:42:07 alexandre_tb |
* Vérification de l'existance d'un nom wiki avant son insertion |
* |
* Revision 1.2 2005/09/29 13:56:48 alexandre_tb |
* En cours de production. Reste à gérer les news letters et d'autres choses. |
* |
* Revision 1.1 2005/09/22 14:02:49 ddelon |
* nettoyage annuaire et php5 |
* |
* Revision 1.4 2005/09/22 13:30:49 florian |
* modifs pour compatibilité XHTML Strict + corrections de bugs (mais ya encore du boulot!!) |
* |
* Revision 1.2 2005/03/21 16:57:30 florian |
* correction de bug, mise à jour interface |
* |
* Revision 1.1 2004/12/15 13:32:25 alex |
* version initiale |
* |
* 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 ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/lib.carto.php |
---|
New file |
0,0 → 1,1261 |
<?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.9 2007-04-20 14:16:45 alexandre_tb Exp $ |
// FICHIER : $RCSfile: lib.carto.php,v $ |
// AUTEUR : $Author: alexandre_tb $ |
// VERSION : $Revision: 1.9 $ |
// DATE : $Date: 2007-04-20 14:16:45 $ |
// |
// +-----------------------------------------------------------------------------------------------+ |
// 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 = '>', $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='<div style="float:left;">'.INS_ECHELLE; |
$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.'&historique_cartes='.$chemin.'"> '.$this->caractere_separation.' '.$tabnom[$key].'</a>'; |
} |
$res.= '</div>'."\n"; |
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="'.INS_CHEMIN_APPLI.'/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. |
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) { |
foreach (get_object_vars($this->fils[$value]) as $key => $value) |
$this->$key = $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; |
if (INS_AFFICHE_ZONE_ROUGE) { |
$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') { |
if (INS_AFFICHE_ZONE_ROUGE) { |
$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) { |
foreach (get_object_vars($this->fils[$value]) as $key => $value) |
$this->$key = $value; |
} |
} |
$this->liste_zone_carte = $liste_zone_carte; |
if (INS_AFFICHE_ZONE_ROUGE) { |
$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) { |
foreach (get_object_vars($this->fils[$value]) as $key => $value) |
$this->$key = $value; |
} |
} |
// une foit que l'on a charge le bon objet nous le colorions |
if (INS_AFFICHE_ZONE_ROUGE) { |
$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']) ; |
if (INS_AFFICHE_ZONE_ROUGE) { |
$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 .= INS_CHEMIN_APPLI.'/bibliotheque/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.'" />'."\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(BOG_afficherErreurSql(__FILE__, __LINE__, |
'', $requete)); |
$i=0; |
$retour = '<select name="liste_zone_carte" style="float:right;" onchange="javascript:this.form.submit();">'."\n"; |
$retour .= '<option value="">'.INS_VISUALISER_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, INS_CHEMIN_APPLI.'bibliotheque/tmp/carto/'.$nom_fichier.'.png'); |
//$this->image = imagepng(&$this->image); |
} |
else { |
imagepng(&$this->image, INS_CHEMIN_APPLI.'bibliotheque/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); |
if (!$image_fond) echo 'erreur fond : '.$this->fond; |
// 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.8 2007/04/11 08:30:12 neiluj |
* remise en état du CVS... |
* |
* Revision 1.5 2006/12/01 13:23:16 florian |
* integration annuaire backoffice |
* |
* Revision 1.4 2006/04/04 12:23:05 florian |
* modifs affichage fiches, généricité de la carto, modification totale de l'appli annuaire |
* |
* Revision 1.3 2005/12/07 14:59:14 alexandre_tb |
* suppression d'un echo |
* |
* Revision 1.2 2005/11/24 16:17:52 florian |
* changement template inscription + modifs carto |
* |
* Revision 1.1 2005/09/22 14:02:49 ddelon |
* nettoyage annuaire et php5 |
* |
* Revision 1.2 2005/09/22 13:30:49 florian |
* modifs pour compatibilité XHTML Strict + corrections de bugs (mais ya encore du boulot!!) |
* |
* Revision 1.1 2004/12/15 13:30:20 alex |
* version initiale |
* |
* 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. |
* |
* |
*/ |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/cartographie.fonct.php |
---|
New file |
0,0 → 1,343 |
<?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.fonct.php,v 1.4 2007-04-11 08:30:12 neiluj Exp $ |
// FICHIER : $RCSfile: cartographie.fonct.php,v $ |
// AUTEUR : $Author: neiluj $ |
// VERSION : $Revision: 1.4 $ |
// DATE : $Date: 2007-04-11 08:30:12 $ |
*/ |
/** function carto_liste_fiches() |
* |
* |
* @return string HTML |
*/ |
function carto_liste_fiches(&$monde, $nom_table1, $nom_table2, $nom_champs_pays, $nom_champs_cp, $requete_sql) { |
global $mailer; |
global $select;//utilisé dans liste_inscrit.php |
$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); |
$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['ins_db']->query($query); |
if (DB::isError($result)) { |
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."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} else if ($key == (count($tabonglet)-1)) { |
$res .= "<a class=\"chemin_carto\"> > $pays</a>"; |
} else { |
$chemin .= '*'.$value; |
$res .= "<a class=\"chemin_carto\" href=\"".$monde->url."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
} |
$res .= "</b>\n"; |
$capitale = $row->CP_Intitule_capitale; |
$query2 = ' SELECT count('.$nom_champs_cp.') as nbr'. |
' FROM '.$nom_table1; |
if ($nom_table2!=0) $query2 .= ', '.$nom_table2; |
$query2 .= ' WHERE '.$nom_champs_pays.'="'.$argument.'"'; |
if ($requete_sql!='') $query2 .= ' AND ('.$requete_sql.')'; |
$result2 = $GLOBALS['ins_db']->query($query2); |
if (DB::isError($result2)) { |
die ($result2->getMessage().'<br />'.$result2->getDebugInfo()) ; |
} |
$row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT) ; |
$res .= '<br /><br /><div class="info_pays">'.$pays.' (capitale: '.$capitale.') : ' ; |
if ($row2->nbr == 0) { |
$res .= INS_AUCUN_INSCRIT.' '.INS_LABEL_PROJET ; |
} |
else if ($row2->nbr == 1) { |
$res .= $row2->nbr.' '.INS_INSCRIT.' '.INS_LABEL_PROJET ; |
} |
else { |
$res .= $row2->nbr.' '.INS_INSCRIT.'s '.INS_LABEL_PROJET ; |
} |
$res .= "</div>\n"; |
if ($row2->nbr>0) { |
if ((INS_NECESSITE_LOGIN)and(!$GLOBALS['AUTH']->getAuth())) { |
$res .= '<br /><p class="zone_alert">'.INS_VOUS_DEVEZ_ETRE_INSCRIT.'</p>'."\n" ; |
} |
else { |
$requete = 'SELECT * FROM '.$nom_table1; |
if ($nom_table2!=0) $requete .= ', '.$nom_table2; |
$requete .= ' WHERE '.$nom_champs_pays.'="'.$argument.'"'; |
if ($requete_sql!='') $requete .= ' AND ('.$requete_sql.')'; |
//todo: gerer l'ordre ' ORDER BY '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM; |
if ($row2->nbr >= 1) { |
$res .= listes_inscrit($requete, $select, $_SERVER['REQUEST_URI']) ; |
if ($mailer==1) { |
if (!is_array($select)) { |
$res .= "<div>".INS_NO_DESTINATAIRE."</div>"; |
} |
else { |
$res .= '<div class="zone_info">'.INS_MESSAGE_ENVOYE.'</div>'."\n" ; |
carto_envoie_mail() ; |
} |
} |
else { |
$res .= carto_texte_cocher() ; |
} |
$res .= carto_formulaire() ; |
} |
} |
} |
// 2 ème cas, on vient de cliquer sur un département français |
} else if (count($tabmonde) == 4) { |
$argument = $tabmonde[3]; |
$query = 'SELECT * FROM '.INS_TABLE_DPT.' WHERE '.INS_CHAMPS_ID_DEPARTEMENT.'='.$argument; |
$result = $GLOBALS['ins_db']->query($query); |
if (DB::isError($result)) { |
die ($result->getMessage() .'<br />'.$result->getDebugInfo()); |
} |
$row = $result->fetchRow(DB_FETCHMODE_ASSOC); |
$nom = $row[INS_CHAMPS_NOM_DEPARTEMENT]; |
$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."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
else if ($key==(count($tabonglet)-1)) { |
$res.="<a class=\"chemin_carto\"> > $nom</a>"; |
} |
else { |
$chemin.='*'.$value; |
$res.= "<a class=\"chemin_carto\" href=\"".$monde->url."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
} |
$res .= "</b></div>\n"; |
$query2 = ' SELECT count('.$nom_champs_cp.') as nbr'. |
' FROM '.$nom_table1; |
if ($nom_table2!=0) $query2 .= ', '.$nom_table2; |
$query2 .= ' WHERE '.$nom_champs_cp.' LIKE "'.$argument.'%"'. |
' AND '.$nom_champs_pays.'="FR"'; |
if ($requete_sql!='') $query2 .= ' AND ('.$requete_sql.')'; |
$result2 = $GLOBALS['ins_db']->query($query2); |
if (DB::isError($result2)) { |
die ($result2->getMessage().'<br />'.$result2->getDebugInfo()) ; |
} |
$row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT); |
$res .= '<br /><br /><div class="nb_inscrits">' ; |
if ($row2->nbr == 0) { |
$res .= INS_AUCUN_INSCRIT." ".INS_LABEL_PROJET ; |
} |
else if ($row2->nbr == 1) { |
$res .= $row2->nbr." ".INS_INSCRIT." ".INS_LABEL_PROJET ; |
} |
else { |
$res .= $row2->nbr." ".INS_INSCRIT."s ".INS_LABEL_PROJET ; |
} |
$res .= "</div><br />\n"; |
if ($row2->nbr>0) { |
if ((INS_NECESSITE_LOGIN)and(!$GLOBALS['AUTH']->getAuth())) { |
$res .= '<br /><p class="zone_alert">'.INS_VOUS_DEVEZ_ETRE_INSCRIT.'</p>'."\n" ; |
} else { |
$requete = 'SELECT * FROM '.$nom_table1; |
if ($nom_table2!=0) $requete .= ', '.$nom_table2; |
if (strlen($argument)==1) { |
$argument='0'.$argument; |
} |
$requete .= ' WHERE '.$nom_champs_cp.' LIKE "'.$argument.'%"'. |
' AND '.$nom_champs_pays.'="FR"'; |
if ($requete_sql!='') $requete .= ' AND ('.$requete_sql.')'; |
//todo: ' ORDER BY '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM; |
$res .= listes_inscrit($requete, $select, $_SERVER['REQUEST_URI']) ; |
if ($mailer==1) { |
if (!is_array($select)) { |
$res.= INS_NO_DESTINATAIRE; |
} else { |
$res .= '<p class="zone_info">'.INS_MESSAGE_ENVOYE."</p>\n" ; |
carto_envoie_mail() ; |
} |
} else { |
$res .=carto_texte_cocher() ; |
} |
$res .= carto_formulaire() ; |
} |
} |
} |
return $res; |
} |
/** function carto_texte_cocher () |
* |
* |
* @return string HTML |
*/ |
function carto_texte_cocher() { |
$res = "<div class=\"texte\">".INS_CHECK_UNCHECK ; |
$res .= " <input type=\"checkbox\" name=\"selecttotal\" onclick=\"javascript:setCheckboxes('formmail');\" /></div>"; |
return $res ; |
} |
/** function carto_formulaire () |
* |
* |
* |
* @return string HTML |
*/ |
function carto_formulaire($titre_mail="", $corps="") { |
$res = "<br /><h2>".INS_ENVOYER_MAIL."</h2><br />\n"; |
$res .= INS_SUJET.' :<br /><input class="forml" type="text" name="titre_mail" size="60" value="'.$titre_mail.'" /><br /><br />'."\n" |
.INS_MESSAGE.' :<br /><textarea class="forml" name="corps" rows="5" cols="60">'.$corps.'</textarea><br />'."\n"; |
$res.='<br /><input class="bouton" type="submit" onclick="javascript:confirmer();" value="'.INS_ENVOYER.'" /></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, $select, $url) { |
$res=''; |
$resultat= $GLOBALS['ins_db']->query($requete); |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$res.='<input type="checkbox" name="select[]" value="'.$ligne[INS_CHAMPS_MAIL].'" />'."\n". |
$ligne[INS_CHAMPS_NOM].' '.$ligne[INS_CHAMPS_PRENOM].' '. |
$ligne[INS_CHAMPS_CODE_POSTAL].' '.$ligne[INS_CHAMPS_VILLE].' '. |
date("d.m.Y", strtotime($ligne[INS_CHAMPS_DATE_INSCRIPTION])).'<br /><br />'."\n"; |
} |
$res .= '<input type="hidden" name="mailer" value="1" />'."\n"; |
$res .= '<input type="hidden" name="select" value="'.$select.'" /><br />'."\n"; |
return $res ; |
} |
/** envoie_mail() |
* |
* |
* @return envoie l'email |
*/ |
function carto_envoie_mail() { |
$requete = 'SELECT '.INS_CHAMPS_MAIL.' FROM '.INS_ANNUAIRE.' WHERE '.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); |
$entete = "From: <".$ligne[INS_CHAMPS_MAIL].">\n"; |
$GLOBALS['corps'] .= INS_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".INS_MESSAGE_ENVOYE_A." :\n $liste" ; |
mail(INS_MAIL_ADMIN, stripslashes(INS_SURVEILLANCE_ENVOI_MAIL.$GLOBALS['titre_mail']), $GLOBALS['corps'], $entete); |
$GLOBALS['corps'] = ''; |
$GLOBALS['titre_mail'] = ''; |
} |
//-- Fin du code source ------------------------------------------------------------ |
/* |
* $Log: not supported by cvs2svn $ |
* Revision 1.2 2006/04/04 12:23:05 florian |
* modifs affichage fiches, généricité de la carto, modification totale de l'appli annuaire |
* |
* Revision 1.1 2005/09/22 14:02:49 ddelon |
* nettoyage annuaire et php5 |
* |
* Revision 1.2 2005/09/22 13:30:49 florian |
* modifs pour compatibilité XHTML Strict + corrections de bugs (mais ya encore du boulot!!) |
* |
* Revision 1.1 2004/12/15 13:30:20 alex |
* version initiale |
* |
* |
*/ |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/inscription.fonct.spip.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: inscription.fonct.spip.php,v 1.4 2007-04-11 08:30:12 neiluj 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.4 $ $Date: 2007-04-11 08:30:12 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | 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['mot_de_passe'])."\", 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['mot_de_passe'])."\", 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()) ; |
} |
function spip_cookie() { |
if ($userid != 0) { |
setcookie("spip_admin", "@$login", time()+3600*24*30, INS_CHEMIN_SPIP) ; |
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) ; |
} |
} |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.2 2006/03/15 11:03:34 alexandre_tb |
* généralisation du code |
* |
* Revision 1.1 2005/09/22 14:02:49 ddelon |
* nettoyage annuaire et php5 |
* |
* Revision 1.4 2005/09/22 13:30:49 florian |
* modifs pour compatibilité XHTML Strict + corrections de bugs (mais ya encore du boulot!!) |
* |
* Revision 1.2 2005/03/21 16:57:30 florian |
* correction de bug, mise à jour interface |
* |
* Revision 1.1 2004/12/15 13:32:25 alex |
* version initiale |
* |
* 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 ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/lib.carto.extractimg.php |
---|
New file |
0,0 → 1,86 |
<?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 2005-09-22 14:02:49 ddelon Exp $ |
// FICHIER : $RCSfile: lib.carto.extractimg.php,v $ |
// AUTEUR : $Author: ddelon $ |
// VERSION : $Revision: 1.1 $ |
// DATE : $Date: 2005-09-22 14:02:49 $ |
// |
// +-----------------------------------------------------------------------------------------------+ |
// A FAIRE : |
// |
*/ |
$image = imagecreatefrompng('tmp/carto/'.$fichier.'.png'); |
chmod ('tmp/carto/'.$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('tmp/carto/'.$fichier.'.png'); |
//Nous nettoyons le dossier tmp des fichiers qu'il contient: |
$poignet_de_dossier = opendir('tmp/carto/'); |
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.2 2005/09/22 13:30:49 florian |
* modifs pour compatibilité XHTML Strict + corrections de bugs (mais ya encore du boulot!!) |
* |
* Revision 1.1 2004/12/15 13:30:20 alex |
* version initiale |
* |
* 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. |
* |
* |
* |
*/ |
?> |
/branches/livraison_narmer/client/bottin/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 2005-09-22 14:02:49 ddelon Exp $ |
// FICHIER : $RCSfile: lib.couleur.php,v $ |
// AUTEUR : $Author: ddelon $ |
// VERSION : $Revision: 1.1 $ |
// DATE : $Date: 2005-09-22 14:02:49 $ |
// |
// +-----------------------------------------------------------------------------------------------+ |
// 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; |
} |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/voir_recu_pdf.php |
---|
New file |
0,0 → 1,39 |
<?php |
// +----------------------------------------------------------------------------+ |
// |recu_pdf.php | |
// +----------------------------------------------------------------------------+ |
// | Copyright (c) 2003 Tela Botanica | |
// +----------------------------------------------------------------------------+ |
// | Ce fichier génère un fichier PDF | |
// | contenant le recu pour une cotisation à Tela Botanica | |
// | Il utilise la librairie FPDF | |
// | http://www.fpdf.org/ | |
// | | |
// | Recoie $cotisation_id en parametre | |
// +----------------------------------------------------------------------------+ |
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
// +----------------------------------------------------------------------------+ |
// |
// $Id: voir_recu_pdf.php,v 1.1 2005-09-22 14:02:49 ddelon Exp $ |
// Inclusion des fichiers nécessaire à une connection |
include_once ("../../papyrus/configuration/pap_config.inc.php") ; |
include_once 'DB.php' ; |
$db = DB::connect (PAP_DSN) ; |
include_once "../../api/fpdf/fpdf.php"; |
$envoie = 1 ; |
include_once "recu_pdf_corps.php" ; |
// buffer est une propriété de la classe FPDF qui contient les données au format PDF. |
// habituellement on ne l'utilise pas, on appelle $pdf->Output() qui envoie les |
// entete HTTP du document généré |
$pdf->Output() ; |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/edition_fiche.php |
---|
New file |
0,0 → 1,214 |
<?php |
// +--------------------------------------------------------------------------------+ |
// | admin_annu.php | |
// +--------------------------------------------------------------------------------+ |
// | Copyright (c) 2002 | |
// +--------------------------------------------------------------------------------+ |
// | Administration des inscrits à un annuaire de type annuaire_tela | |
// | de Gsite, | |
// | Sont également mises en jeux les tables gen_COUNTRY, gen_FRENCH_DPT, | |
// | LABELS | |
// | Plus spécifique la fonction cotisation($id) en bas permet de | |
// | gérer les cotisations versées par les inscrits, avec la table | |
// | annuaire_COTISATION | |
// +--------------------------------------------------------------------------------+ |
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
// +--------------------------------------------------------------------------------+ |
// |
// $Id: edition_fiche.php,v 1.5 2007-04-11 08:30:12 neiluj Exp $ |
define ("URL_RECU", $GLOBALS['ins_url']->protocol. '://'.$GLOBALS['ins_url']->host."/client/annuaire/voir_recu_pdf.php") ; |
include_once ("HTML/Table.php") ; |
// admin_annu est une application cliente de gsite elle commence donc |
// dans une fonction putFrame() |
function putFrame() |
{ |
$url = $GLOBALS['ins_url']->getURL() ; |
// mise à jour si il y lieu |
if (isset ($_REQUEST['action']) && $_REQUEST['action'] == 'up') { |
upSQL() ; |
} |
// Requete de pour récupérer toutes les infos d'un usager |
$query = 'select '.INS_ANNUAIRE.'.* ,'.INS_TABLE_PAYS.'.'.INS_CHAMPS_LABEL_PAYS ; |
$query .= ' from '.INS_ANNUAIRE.','.INS_TABLE_PAYS.','.INS_TABLE_DPT ; |
$query .= ' where '.INS_CHAMPS_ID.'='.$_REQUEST[INS_CHAMPS_ID] ; |
$query .= ' and '.INS_ANNUAIRE.'.'.INS_CHAMPS_PAYS.'='.INS_TABLE_PAYS.'.'.INS_CHAMPS_ID_PAYS ; |
$result = $GLOBALS['ins_db']->query($query) ; |
if (DB::isError($result)) { |
echo $result->getMessage().'<br />'.$query ; |
} |
$row = $result->fetchRow(DB_FETCHMODE_ASSOC) ; |
$res = '<h1>Edition d\'un adhérent : '.$row[INS_CHAMPS_NOM].' '.$row[INS_CHAMPS_PRENOM].'</h1>'."\n" ; |
$res .= "<div>".form("Nom : ", INS_CHAMPS_NOM, $row[INS_CHAMPS_NOM])."</div>\n" ; |
$res .= "<div>".form("Prénom : ", INS_CHAMPS_PRENOM, $row[INS_CHAMPS_PRENOM])."</div>\n" ; |
$res .= "<div>".form("Adresse mail : ", INS_CHAMPS_MAIL, $row[INS_CHAMPS_MAIL])."</div>\n" ; |
$res .= "<div>".form("Date d'inscription : ", INS_CHAMPS_DATE, $row[INS_CHAMPS_DATE])."</div>\n" ; |
$res .= "<div>".form("Adresse 1 : ", INS_CHAMPS_ADRESSE_1, $row[INS_CHAMPS_ADRESSE_1])."</div>\n" ; |
$res .= "<div>".form("Adresse 2 : ", INS_CHAMPS_ADRESSE_2, $row[INS_CHAMPS_ADRESSE_2])."</div>\n" ; |
$res .= "<div>".form("Région : ", "a_region", $row['a_region'])."</div>\n" ; |
$res .= "<div>".form("Code postal : ", INS_CHAMPS_CODE_POSTAL, $row[INS_CHAMPS_CODE_POSTAL])."</div>\n" ; |
$res .= "<div>".form("Ville : ", INS_CHAMPS_VILLE, $row[INS_CHAMPS_VILLE])."</div>\n" ; |
$res .= "<div>".form("Pays : ", INS_CHAMPS_PAYS, $row[INS_CHAMPS_PAYS])."</div>\n" ; |
$res .= "<div>".form("Site web personnel : ", INS_CHAMPS_SITE_INTERNET, $row[INS_CHAMPS_SITE_INTERNET])."</div>\n" ; |
$res .= suppression($row[INS_CHAMPS_ID]) ; |
$formulaire = new HTML_formulaireInscription('formulaire_inscription', 'post', |
preg_replace('/&/', '&', $GLOBALS['ins_url']->getURL()), '_self', '', 0) ; |
$formulaire->construitFormulaire(preg_replace('/&/', '&', $GLOBALS['ins_url']->getURL())); |
if (isset($_REQUEST['form_structure'])) { |
if ($_REQUEST['form_structure']==1) { |
$formulaire->formulaireStructure() ; |
} |
} |
//pour la modification d'une inscription, on charge les valeurs par défauts |
if (isset ($_REQUEST[INS_CHAMPS_ID]) == 'modifier') { |
$formulaire->addElement('hidden', 'modifier_v', '1') ; |
$formulaire->setDefaults(formulaire_defaults($_REQUEST[INS_CHAMPS_ID])) ; |
} |
if (isset ($_REQUEST['modifier_v'])) { |
if ($formulaire->validate()) { |
mise_a_jour($formulaire->getSubmitValues(), $_REQUEST[INS_CHAMPS_ID]); |
} else { |
return $res.$formulaire->toHTML(); |
} |
return $res; |
} |
$res .= $formulaire->toHTML(); |
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'suppr_adh') { |
$res .= suppression($_REQUEST[INS_CHAMPS_ID]) ; |
return ; |
} |
return $res ; |
} |
// form construit soit un formulaire de type <input type="text" ...> et |
// de nom $field_ et place un $label devant |
// soit construit un lien vers un formulaire à partir du champs $field_ |
function form($label, $field_, $value) |
{ |
global $u_id, $GS_GLOBAL, $field ; |
$url = $GLOBALS['ins_url']->getURL() ; |
if ($field != $field_) { |
$res = "<b>$label</b>" ; |
$res .= "<a href=\"$url&field=$field_\">" ; |
$res .= $value ? $value : "(vide)"; |
$res .= "</a>\n" ; |
} |
if ($field == $field_) { |
$res = '<form action="'.$url.'&'.INS_CHAMPS_ID.'='.$_REQUEST[INS_CHAMPS_ID].'&action=up&field_='.$field_.'" method="post">' ; |
$res .= "<b>$label</b>\n" ; |
switch ($field_) { |
case INS_CHAMPS_PAYS : |
$res .= select (INS_TABLE_PAYS, INS_CHAMPS_ID_PAYS, INS_CHAMPS_LABEL_PAYS, $value); |
break ; |
default : |
$res .= '<input type="text" size="40" name="'.$field_.'" value="'.$value.'">'."\n" ; |
} |
$res .= '<input type="submit" value="valider">'."\n" ; |
$res .= "</form>" ; |
} |
return $res ; |
} |
// upSQL met à jour la table annuaire_tela |
function upSQL() |
{ |
global $field_ ; |
// Recherche de l'ancien mail |
$req_am = 'select '.INS_CHAMPS_MAIL.' from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.'='.$_REQUEST[INS_CHAMPS_ID] ; |
$res_am = $GLOBALS['ins_db']->query ($req_am) ; |
$ligne_am = $res_am->fetchRow(DB_FETCHMODE_ASSOC) ; |
$ancien_mail = $ligne_am[INS_CHAMPS_MAIL] ; |
if ($field_ == INS_CHAMPS_PAYS) { |
$field_ = INS_CHAMPS_PAYS ; |
$_REQUEST[$field_] = $_REQUEST[INS_TABLE_PAYS] ; |
} |
$query = 'update '.INS_ANNUAIRE.' set '.$field_.'="'.$_REQUEST[$field_].'" where '.INS_CHAMPS_ID.'='.$_REQUEST[INS_CHAMPS_ID] ; |
$GLOBALS['ins_db']->query($query) ; |
// Traitement du département |
if ($field_ == INS_CHAMPS_CODE_POSTAL) { |
if (preg_match("/^97|98[0-9]*/", $HTTP_POST_VARS[INS_CHAMPS_CODE_POSTAL])) { |
$n_dpt = substr($HTTP_POST_VARS[INS_CHAMPS_CODE_POSTAL], 0, 3) ; |
} else { |
$n_dpt = substr($HTTP_POST_VARS[INS_CHAMPS_CODE_POSTAL], 0, 2) ; |
} |
$GLOBALS['ins_db']->query ('update '.INS_ANNUAIRE.' set '.INS_CHAMPS_DEPARTEMENT.'='.$n_dpt.' where '.INS_CHAMPS_ID.'='.$_REQUEST[INS_CHAMPS_ID]) ; |
} |
} |
function suppression($u_id) { |
$url = $GLOBALS['ins_url']->getURL() ; |
$res = "<div>Supprimer l'inscription</div>\n" ; |
$res .="<div><form action=\"$url&action=suppr_adh\" method=\"post\">\n" ; |
$res .= "<input type=\"submit\" value=\"Supprimer\" " ; |
$res .= "onclick=\"javascript:return confirm('êtes-vous sûr de vouloir supprimer cet adhérent');\">\n" ; |
$res .= "</form></div>\n" ; |
if (isset ($_REQUEST['action']) && $_REQUEST['action'] =="suppr_adh") { |
$queryLogin = 'select '.INS_CHAMPS_MAIL.' from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.'='.$_REQUEST[INS_CHAMPS_ID] ; |
$resultLogin = $GLOBALS['ins_db']->query($queryLogin) ; |
$rowLogin = $resultLogin->fetchRow(DB_FETCHMODE_ASSOC) ; |
$mail = $rowLogin[INS_CHAMPS_MAIL]; |
// suppression |
$query = 'delete from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.'='.$_REQUEST[INS_CHAMPS_ID] ; |
$GLOBALS['ins_db']->query($query); |
// Appel des actions desinscriptions des applications clientes |
$d = dir(GEN_CHEMIN_CLIENT); |
$id_utilisateur = $_REQUEST[INS_CHAMPS_ID]; |
while (false !== ($repertoire = $d->read())) { |
if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.desinscription.inc.php')) |
include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.desinscription.inc.php' ; |
} |
$d->close(); |
} |
return $res ; |
} |
function select ($table, $champs_id, $champs_label, $defaut = '') { |
$requete = 'select * from '.$table.' where gip_id_i18n like "'.$GLOBALS['lang'].'%"' ; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
if (DB::isError($resultat)) { |
echo $resultat->getMessage().'<br />'.$requete ; |
} |
$res = '<select name="'.$table.'">' ; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$res .= '<option value="'.$ligne[$champs_id].'"' ; |
if ($defaut != '' && $defaut == $ligne[$champs_id]) $res .= ' selected' ; |
$res .= '>'.$ligne[$champs_label].'</option>' ; |
} |
$res .= '</select>' ; |
return $res ; |
} |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/cartographie.fonct.liste_inscrit.php |
---|
New file |
0,0 → 1,210 |
<? |
// +--------------------------------------------------------------------------------+ |
// | liste_inscrit.php | |
// +--------------------------------------------------------------------------------+ |
// | Copyright (c) 2002 | |
// +--------------------------------------------------------------------------------+ |
// | | |
// +--------------------------------------------------------------------------------+ |
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
// +--------------------------------------------------------------------------------+ |
// |
// $Id: cartographie.fonct.liste_inscrit.php,v 1.5 2007-04-11 08:30:12 neiluj 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; |
} |
'; |
GEN_stockerCodeScript($javascript); |
$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['ins_db']->query($query); |
if (DB::isError($result)) { |
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."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
else if ($key == (count($tabonglet)-1)) { |
$res .= "<a class=\"chemin_carto\"> > $pays</a>"; |
} |
else { |
$chemin .= '*'.$value; |
$res .= "<a class=\"chemin_carto\" href=\"".$monde->url."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
} |
$res .= "</b>\n"; |
$capitale = $row->CP_Intitule_capitale; |
$query2 = " SELECT count(".INS_CHAMPS_ID.") as nbr". |
" from ".INS_ANNUAIRE. |
" where ".INS_CHAMPS_PAYS."='$argument'"; |
$result2 = $GLOBALS['ins_db']->query($query2); |
if (DB::isError($result2)) { |
die ($result2->getMessage().'<br />'.$result2->getDebugInfo()) ; |
} |
$row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT) ; |
$res .= "<br /><br /><div class=\"$classe_titre\">$pays (capitale: $capitale) : " ; |
if ($row2->nbr == 0) { |
$res .= INS_AUCUN_INSCRIT.' '.INS_LABEL_PROJET ; |
} |
else if ($row2->nbr == 1) { |
$res .= $row2->nbr.' '.INS_INSCRIT.INS_LABEL_PROJET ; |
} |
else { |
$res .= $row2->nbr.' '.INS_INSCRIT.'s '.INS_LABEL_PROJET ; |
} |
$res .= "</div>\n"; |
if ($row2->nbr>0) { |
if ((INS_NECESSITE_LOGIN)and(!$GLOBALS['AUTH']->getAuth())) { |
$res .= '<br /><p class="zone_alert">'.INS_VOUS_DEVEZ_ETRE_INSCRIT.'</p>'."\n" ; |
} |
else { |
$requete = 'SELECT * FROM '.INS_ANNUAIRE. |
' WHERE '.INS_CHAMPS_PAYS.'="'.$argument.'"'. |
' ORDER BY '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM; |
if ($row2->nbr > 1) { |
$res .= listes_inscrit($requete, $select, $url) ; |
if ($mailer==1) { |
if (!is_array($select)) { |
$res .= "<div>".INS_NO_DESTINATAIRE."</div>"; |
} |
else { |
$res .= "<div class=\"$classe_titre\">".INS_MESSAGE_ENVOYE."</div>\n" ; |
carto_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) { |
$numero_departement = $tabmonde[3]; |
$query = 'SELECT * FROM '.INS_TABLE_DPT.' WHERE '.INS_CHAMPS_ID_DEPARTEMENT.'='.$numero_departement; |
$result = $GLOBALS['ins_db']->query($query); |
if (DB::isError($result)) { |
die ($result->getMessage() .'<br />'.$result->getDebugInfo()); |
} |
$row = $result->fetchRow(DB_FETCHMODE_ASSOC); |
$nom = $row[INS_CHAMPS_NOM_DEPARTEMENT]; |
$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."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
else if ($key==(count($tabonglet)-1)) { |
$res.="<a class=\"chemin_carto\"> > $nom</a>"; |
} |
else { |
$chemin.='*'.$value; |
$res.= "<a class=\"chemin_carto\" href=\"".$monde->url."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
} |
$res .= "</b></div>\n"; |
$query2 = ' SELECT count('.INS_CHAMPS_ID.') as nbr'. |
' FROM '.INS_ANNUAIRE. |
' WHERE '.INS_CHAMPS_CODE_POSTAL.' LIKE "'.$numero_departement.'%"'. |
' AND '.INS_CHAMPS_PAYS.'="FR"'; |
$result2 = $GLOBALS['ins_db']->query($query2); |
if (DB::isError($result2)) { |
die ($result2->getMessage().'<br />'.$result2->getDebugInfo()) ; |
} |
$row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT); |
$res .= "<br /><br /><div class=\"$classe_titre\">" ; |
if ($row2->nbr == 0) { |
$res .= INS_AUCUN_INSCRIT." ".INS_LABEL_PROJET ; |
} |
else if ($row2->nbr == 1) { |
$res .= $row2->nbr." ".INS_INSCRIT." ".INS_LABEL_PROJET ; |
} |
else { |
$res .= $row2->nbr." ".INS_INSCRIT."s ".INS_LABEL_PROJET ; |
} |
$res .= "</div><br />\n"; |
if ($row2->nbr>0) { |
if ((INS_NECESSITE_LOGIN)and(!$GLOBALS['AUTH']->getAuth())) { |
$res .= '<br /><p class="zone_alert">'.INS_VOUS_DEVEZ_ETRE_INSCRIT.'</p>'."\n" ; |
} else { |
$requete = 'SELECT * FROM '.INS_ANNUAIRE. |
' WHERE '.INS_CHAMPS_CODE_POSTAL.' LIKE "'.$argument.'%"'. |
' AND '.INS_CHAMPS_PAYS.'="FR"'; |
' ORDER BY '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM; |
$res .= listes_inscrit($requete, $select, $_SERVER['REQUEST_URI']) ; |
if ($mailer==1) { |
if (!is_array($select)) { |
$res.= INS_NO_DESTINATAIRE; |
} else { |
$res .= "<div class=\"$classe_titre\">".INS_MESSAGE_ENVOYE."</div>\n" ; |
carto_envoie_mail() ; |
} |
} else { |
$res .=carto_texte_cocher() ; |
} |
$res .= carto_formulaire() ; |
} |
} |
} |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/mail_tous.php |
---|
New file |
0,0 → 1,105 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 4.1 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This library is free software; you can redistribute it and/or | |
// | modify it under the terms of the GNU Lesser General Public | |
// | License as published by the Free Software Foundation; either | |
// | version 2.1 of the License, or (at your option) any later version. | |
// | | |
// | This library is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
// | Lesser General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU Lesser General Public | |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: mail_tous.php,v 1.2 2006-01-02 09:51:03 alexandre_tb Exp $ |
/** |
* Permet d'envoie un mail à une sélection dans l'annuaire |
* |
* |
*@package annuaire |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.2 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
function putFrame() { |
// configuration |
global $objet, $corps, $annuaire_LABEL_STATUT, $SERVER_ADMIN ; |
global $action ; |
$url = $GLOBALS['ins_url']->getURL() ; |
// Entete |
$corps_debut = "RESEAU TELA BOTANICA - Le ".date("j/m/Y"). |
"\n\nBonjour,\n"."\n\nCordialement,\n-------------------\n". |
"Tela Botanica le réseau des botanistes francophones\n". |
"accueil@tela-botanica.org\nhttp://www.tela-botanica.org\n"; |
$res = "<h1>Envoi d'un mail à tous les membres</h1>\n" ; |
if ($_GET['action'] == ANN_MAIL_TOUS_ENVOIE) $res .= envoie_mail_selection() ; |
// formulaire |
$res .= "<div><form action=\"$url&action=".ANN_MAIL_TOUS_ENVOIE."\" method=\"post\"><table>\n" ; |
$res .= "<tr><td>" ; |
$res .= "Objet : </td><td><input size=\"91\" name=\"objet\" type=\"text\"></td></tr>\n" ; |
$res .= '<tr><td>Corps : </td><td><textarea name="corps" cols="90" rows="30">'. |
$corps_debut.'</textarea></td></tr>'."\n" ; |
$res .= "<tr><td></td><td><input type=\"submit\" value=\"envoyer\"" ; |
$res .= " onclick=\"javascript:return confirm('Etes-vous sur de vouloir envoyer ce message !!');\"" ; |
$res .= "></td></tr>\n" ; |
$res .= "</table></form></div>\n" ; |
return $res ; |
} |
include_once ("Mail.php"); |
// envoie le mail à tous |
function envoie_mail_selection() |
{ |
$headers['From'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ; |
$headers['Subject'] = stripslashes($_REQUEST['objet']) ; |
$corps = stripslashes($_REQUEST['corps']) ; |
$requete = $_SESSION['requete_mail_tous'] ; |
unset ($_SESSION['requete_mail_tous']) ; |
$resultat = $GLOBALS['ins_db']->query($requete) ; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
if (!mail($ligne[INS_CHAMPS_MAIL], $headers['Subject'], $corps, "From: ".$headers['From'])) { |
return "<div>Une erreur s'est produite:<br>".$mail_object->getMessage()."</div>\n" ; |
} |
} |
return "<div>Le mail est parti !</div>\n"; |
} |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/branches/livraison_narmer/client/bottin/bibliotheque/recu_pdf_corps.php |
---|
New file |
0,0 → 1,166 |
<?php |
// +----------------------------------------------------------------------------+ |
// |pdf_recu_et_mail.php | |
// +----------------------------------------------------------------------------+ |
// | Copyright (c) 2003 Tela Botanica | |
// +----------------------------------------------------------------------------+ |
// | Ce fichier génère un fichier PDF | |
// | contenant le recu pour une cotisation à Tela Botanica | |
// | Il utilise la librairie FPDF | |
// | http://www.fpdf.org/ | |
// | Il envoie également un email à l'adhérent concerné | |
// +----------------------------------------------------------------------------+ |
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
// +----------------------------------------------------------------------------+ |
// |
// $Id: recu_pdf_corps.php,v 1.1 2005-09-22 14:02:49 ddelon Exp $ |
// Recherche des informations sur un utilisateur |
$requete = "select * from annuaire_COTISATION, annuaire_tela, MODE_COTISATION |
where IC_ID=$cotisation_id |
and IC_ANNU_ID=U_ID |
and IC_MC_ID=MC_ID" ; |
$resultat = $db->query($requete) ; |
if (DB::isError ($resultat)) { |
die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ; |
$resultat->free() ; |
/* |
// On regarde si le reçu a déjà été envoyé |
$requete = "select IC_RECU from annuaire_COTISATION where IC_ID=$cotisation_id" ; |
$resultat = mysql_query ($requete) or die ($requete."<br>".mysql_error()) ; |
$ligne = mysql_fetch_object($resultat) ; |
mysql_free_result($resultat) ; |
*/ |
if ($ligne->IC_RECU != 0) { |
$num_recu = $ligne->IC_RECU ; |
// $deja_envoye permettra au programme admin_annu.php de ne pas incrementé |
// le compteur de recu |
$deja_envoye = true ; |
} else { |
$res_compteur = $db->query("select COMPTEUR from COMPTEUR_COTISATION") ; |
$ligne_compteur = $res_compteur->fetchRow(DB_FETCHMODE_OBJECT) ; |
$num_recu = $ligne_compteur->COMPTEUR ; |
$deja_envoye = false ; |
} |
@include_once "api/fpdf/fpdf.php"; |
if (!isset($envoie)) $chemin = "client/annuaire/" ; |
// Constante nécessaire à fpdf.php |
define('FPDF_FONTPATH','font/'); |
// Création de l'objet pdf |
$pdf = new FPDF(); |
$pdf->Open(); |
$pdf->AddPage("P"); |
// La ligne du haut |
$pdf->Line(10, 10, 200, 10) ; |
// Contenu du document |
$pdf->SetFont('Arial', '', 8) ; |
$pdf->Cell(150, 10, "", 0, 0) ; |
$pdf->MultiCell(40, 10, "Numéro d'ordre : $num_recu", 1,1, "C") ; |
$pdf->SetY($pdf->GetY() - 10) ; |
$pdf->SetFont('Arial','B',14); |
$pdf->Cell(0,10,'Reçu dons aux uvres', 0, 1, "C"); |
$pdf->SetFont('Arial', '', 10) ; |
$pdf->Cell(0, 0, '(Article 200-5 et 238 bis du Code Général des impôts)', 0, 1, "C") ; |
$pdf->Cell(0, 10, 'REÇU A CONSERVER ET A JOINDRE A VOTRE DECLARATION DE REVENUS 2004', 0, 1, "L") ; |
// On met le logo de Tela |
$pdf->Image($chemin."logotb.png", 12, 35, "29", "", "PNG", "http://www.tela-botanica.org/") ; |
// On écrie Les titres du cadre |
$pdf->SetFontSize(12) ; |
$pdf->Cell(100, 10, 'Bénéficiaire du don', 0, 0, "C") ; |
$pdf->Cell(100, 10, 'Donateur', 0, 1, "C") ; |
$pdf->SetFont('Arial', 'B', 10) ; |
$pdf->Cell(38, 5, '', 0, 0) ; |
$pdf->Cell(62, 5, 'Association Tela Botanica', 0, 0, "L") ; |
$pdf->SetFont('Arial', 'B', 10) ; |
$pdf->Cell(100, 5, "$ligne->U_NAME $ligne->U_SURNAME", 0, 1, "L") ; |
$pdf->SetFont('Arial', '', 10) ; |
$pdf->Cell(38, 5, '', 0, 0) ; |
$pdf->Cell(62, 5, 'Institut de Botanique', 0, 1, "L") ; |
$pdf->Cell(38, 5, '', 0, 0) ; |
$pdf->Cell(62, 5, '163, rue A. Broussonnet', 0, 0, "L") ; |
$pdf->Cell(100, 5, "$ligne->U_ADDR1", 0, 1, "L") ; |
$pdf->Cell(38, 5, '', 0, 0) ; |
$pdf->Cell(62, 5, '34090 Montpellier', 0, 0, "L") ; |
$pdf->Cell(100, 8, "$ligne->U_ADDR2", 0, 1, "L") ; |
$pdf->Cell(100, 5, 'Objet :', 0,1, "L") ; |
$pdf->SetFontSize(8) ; |
$pdf->MultiCell(100, 4, 'Contribuer au rapprochement de tous les botanistes de langue française. Favoriser l\'échange d\'information'. |
' et animer des projets botaniques grâce aux nouvelles technologies de la communication.', 0, 1, "") ; |
$pdf->SetFontSize(10) ; |
$pdf->Text(111, 58 + 8, "$ligne->U_ZIP_CODE $ligne->U_CITY") ; |
$pdf->SetFontSize(8) ; |
$pdf->MultiCell(100,4, 'Organisme d\'intérêt général à caractère scientifique concourant à la diffusion de la langue et des connaissances scientifiques françaises.', 0,1, "R") ; |
// On remonte le curseur de 52 |
$pdf->SetY($pdf->GetY() - 58) ; |
// Le cadre central |
$pdf->Cell(100, 60, '', 1) ; |
$pdf->Cell(90, 60, '', 1) ; |
$pdf->Ln() ; |
$pdf->SetFontSize(10) ; |
$pdf->Cell(0,10, 'L\'Association reconnaît avoir reçu, à titre de don, la somme de :', 0, 1, "L") ; |
$pdf->SetFont('Arial', 'B', 11) ; |
$pdf->Cell(0,10, "*** $ligne->IC_MONTANT euros ***", 0, 1, "C") ; |
$pdf->SetFont('Arial', '', 10) ; |
$pdf->Ln() ; |
$pdf->Cell(100,10, "Date du paiement : ".date ("d/m/Y", $ligne->IC_DATE), 0, 0, "L") ; |
$pdf->Cell(100, 10, 'Montpellier, le '.date("d/m/Y"), 0, 1, "L") ; |
// La signature de Daniel |
$pdf->Image($chemin."signature_Daniel.png", 110, $pdf->GetY(),28.22, "") ; |
$pdf->Ln() ; |
$pdf->Cell(0, 10, "Mode de versement : $ligne->MC_LABEL", 0, 1, "L") ; |
$pdf->Cell(100, 10, '', 0, 0) ; |
$pdf->Cell (100, 10, 'Daniel MATHIEU, Président', 0, 1, "L") ; |
$pdf->Ln(5) ; |
$pdf->SetFontSize(10) ; |
$pdf->Cell(0, 7, '60 % de votre don à Tela Botanica est déductible de vos impôts dans la limite de 20 % de votre revenu imposable.', 1, 1, "C") ; |
?> |