Subversion Repositories eFlore/Applications.bibliobota

Compare Revisions

Ignore whitespace Rev 1 → Rev 2

/trunk/applications/bb_admin/bibliotheque/bba_droit_mail.fonct.php
New file
0,0 → 1,267
<?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: bba_droit_mail.fonct.php,v 1.1 2005-11-23 10:22:25 jp_milcent Exp $
/**
* Fonctions de gestion des mails et des droits de l'application administration de Biblio Bota.
*
* Contient des fonctions de gestion des mails et des droits d'accès.
*
*@package BiblioBota-Administration
*@subpackage Fonctions
//Auteur original :
*@author Jean-Charles GRANGER <tela@vecteur.org>
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@clapas.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2005-11-23 10:22:25 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
/*Mettre ici les inclusions de fichiers*/
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
/*Mettre ici la liste de fonctions.*/
/* ***********************************
boolean create_mail($from,$to,$to_cc="",$to_bcc="",$subject="",$body,$head="",$format="plain")
permet de générer un mail correctement formaté
 
ENTREE :
- string array $from : adresse de l'expéditeur ; tableau texte à deux entrées $from['name'] et $from['address']
- string array $to : adresses des destinataires ; tableau texte à deux entrées $to[$i]['name'] et $to[$i]['address']
- string array $to_cc : adresses mises en copies conformes ; tableau texte à deux entrées $to_cc[$i]['name'] et $to_cc[$i]['address']
- string array $to_bcc : adresses mises en copies conformes cachées ; tableau texte à deux entrées $to_bcc[$i]['name'] et $to_bcc[$i]['address']
- string $subject : sujet du mail
- string $body : contenu du mail
- string array $head : ajouter des lignes d'en-têtes au mail ; tableau texte à deux entrées $head[$i]['title'] et $head[$i]['value']. Exemple : $head[0]['title']="Reply-To" et $head[0]['value']="\"Tela Botanica\"<accueil@tela-botanica.org>\n"
- string $format : format du mail (valeurs possibles : plain [défaut], html)
 
SORTIE : void
*********************************** */
function create_mail($from,$to,$to_cc="",$to_bcc="",$subject="",$body,$head="",$format="plain")
{
// on initialise $head avec en un tableau avec une valeur bidon
// s'il est vide, afin de pouvoir utiliser in_array plus loin
if ($head == ""){
$head['novalue'] = "";
}
 
// on formate correctement le champ from
if (empty($from['name'])){
$from['name'] = $from['address'];
}
$from_string = "\"".$from['name']."\" <".$from['address'].">";
 
// on créé une chaine contenant les adresses To
 
$to_string = "";
if ($to != ""){
$to_string = "";
$nb_to = count($to);
$i = 0;
while ($i <= ($nb_to-1)){
if (!empty($to[$i]['name'])){
$le_nom = $to[$i]['name'];
}
else{
$le_nom = $to[$i]['address'];
}
$le_mail = $to[$i]['address'];
if ($le_mail != ""){
$to_string .= "\"$le_nom\" <$le_mail>";
if ($i < ($nb_to-1)){
$to_string .= ",\n";
}
else{
$to_string .= "\n";
}
}
$i++;
}
}
 
// on créé une chaine contenant les adresses CC
 
$cc_string = "";
if ($to_cc != ""){
$cc_string = "Cc: ";
$nb_cc = count($to_cc);
$i = 0;
while ($i <= ($nb_cc-1)){
if (!empty($to_cc[$i]['name'])){
$le_nom = $to_cc[$i]['name'];
}
else{
$le_nom = $to_cc[$i]['address'];
}
$le_mail = $to_cc[$i]['address'];
if ($le_mail != ""){
$cc_string .= "\"$le_nom\" <$le_mail>";
if ($i < ($nb_cc-1)){
$cc_string .= ",\n";
}
else{
$cc_string .= "\n";
}
}
$i++;
}
}
// on créé une chaine contenant les adresses BCC
$bcc_string = "";
if ($to_bcc != ""){
$bcc_string = "Bcc: ";
$nb_bcc = count($to_bcc);
$i = 0;
while ($i <= ($nb_bcc-1)){
if (!empty($to_bcc[$i]['name'])){
$le_nom = $to_bcc[$i]['name'];
}
else{
$le_nom = $to_bcc[$i]['address'];
}
$le_mail = $to_bcc[$i]['address'];
if ($le_mail != ""){
$bcc_string .= "\"$le_nom\" <$le_mail>";
if ($i < ($nb_bcc-1)){
$bcc_string .= ",\n";
}
else{
$bcc_string .= "\n";
}
}
$i++;
}
}
// on créé une chaine contenant le format
$format_string = "Content-Type: text/$format;\n charset=\"iso-8859-1\"";
// on créé une chaine contenant l'en-tête
// définition de l'en-tête par defaut
$head_def['Return-Path'] = "accueil@tela-botanica.org";
$head_def['Organization'] = "Tela Botanica";
$head_def['MIME-Version'] = "1.0";
$head_def['X-Priority'] = "3";
$head_def['X-Mailer'] = "Tela Botanica / PHP";
$head_def['Reply-To'] = $from_string;
$head_string = "";
// on construit l'entete à partir de l'entete par defaut, sauf si une valeur existe dans $head
$head_string .= $format_string."\n";
foreach($head_def as $key => $value){
if ((!isset($head[$key])) && ($value != "")){
$head_string .= "$key: $value\n";
}
}
// on ajoute l'entete supplémentaire
if ($head != ""){
foreach($head as $key => $value){
if ($value != ""){
$head_string .= "$key: $value\n";
}
}
}
$head_string .= $cc_string;
$head_string .= $bcc_string;
// fin de l'entete
// envoi du mail
//echo "De : ".$from_string."<BR><BR>".$to_string."<BR><BR>".$cc_string."<BR><BR>".$bcc_string."<BR><BR>Message: ".$body."<BR><BR>".$head_string;
return mail($to_string,$subject,$body,$head_string);
}
/* ***********************************
array get_his_rights($table,$appli,$user)
récupère les droits d'un utilisateur sur un appli
Entrée :
- string $table : nom de la table où sont les données d'autorisations
- string $appli : nom de l'appli recherché
- int $user : id de la personne pour qui on veut récupérer les droits
 
Sortie : ARRAY de la forme :
$table['nom_du_droit'] = "level pour ce droit (un entier)"
Dans le programme appelant, il suffit de faire if (isser($table['nom_du_droit']))
pour savoir un un utilisateur dispose d'un droit particulier
*********************************** */
 
function get_his_rights($table,$appli,$user)
{
$query = "select GEN_AUT_DROIT, GEN_AUT_LVL, GEN_AUT_PARAM from $table where GEN_AUT_USER = $user AND GEN_AUT_APPLI = '$appli'";
$resu = mysql_query($query) or die("<B>ERREUR !!</B>. Echec de la récupéreration des droits de l'utilisateur : $query");
$droits[0] = "";
while ($row = mysql_fetch_object($resu)){
$nom_droit = $row->GEN_AUT_DROIT;
$lvl_droit = $row->GEN_AUT_LVL;
$param_droit = $row->GEN_AUT_PARAM;
if (($nom_droit != "")&&($lvl_droit >= 0)){
$droits[$nom_droit]['lvl'] = $lvl_droit;
$droits[$nom_droit]['param'] = $param_droit;
}
}
mysql_free_result($resu);
return $droits;
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2004/09/14 11:12:27 jpm
* Ajout des fonctions de gestion des mails et des droits d'accès de BiblioBota admin.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>