1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
| <?php
/* classe permettant d'envoyer des messages interne sur un site
* les destinataires peuvent etre des individuels avec leur id sous forme de tableau($dest)
* et /ou une liste de difusion ($dest_list) transformer en tableau par la function
*
*/
class messagerie{
var $level;
var $id_membre;
var $message;
var $sujet;
var $email;
var $array_dest;
var $site;
var $i="0";
function messagerie($host,$user,$passe,$db,$pseudo,$site){
//connection
$cx = mysql_connect($host,$user,$passe);
mysql_select_db($db,$cx);
//verification que le membre existe (superflu, mais tans qua faire)
$test_pseudo = mysql_query("SELECT id_membre FROM membre_info WHERE pseudo='$pseudo' AND actif='oui'");
$test = mysql_fetch_array($test_pseudo);
//si le membre est enregister et actif on declare sont id
if(isset($test['id_membre']) AND is_numeric($test['id_membre']))
$this->id_membre = $test['id_membre'];
$this->pseudo = $pseudo;
//un else aurais suffit mais bon
if(!isset($test['id_membre']) OR !is_numeric($test['id_membre'])){
echo '<div id="erreur">Vous n\'avez pas acces a cette fonction</div>';
exit();
}
}
function clean($str){
//Supprime les balises HTML et PHP d'une chaîne
$str=strip_tags($str);
//Convertit tous les caractères éligibles en entités HTML et en utf8
$str=htmlentities($str,ENT_QUOTES,'utf-8');
//Supprime les espaces en début et fin de chaîne
$str=trim($str);
//echappe les guillemets
$str=addslashes($str);
//minuscule
$str=strtolower($str);
$str= nl2br($str);
return($str);
}//fin de function clean
//insertion des messages dans la base
function insert($message,$sujet,$destinataire,$pseudo,$id_membre){
$req_rep ='insert into `membre_message` values';
$req_rep .= '("","'.$destinataire.'", "'.$id_membre.'","'.$pseudo.'","'.date("Y-m-d").'", "'.date("G:i:s").'",
"'.$sujet.'", "'.$message.'","non")';
$quer_rep=mysql_query($req_rep)or die(mysql_error());
}
//creation du tableau de destinataire
//$dest_list est sous la forme id1*id2*id3* ...
//$dest est deja un tableau
function crea_dest($dest,$dest_list){
if ($dest_list!="no"){
//transforme $dest_list en tableau si il existe
$array_dest1 = explode("*",$dest_list);
//si en plus de la liste des membre on été selectionné
if(!empty($dest)){
$array_dest2 = $dest;
echo $array_dest2 ;
//jonction des deux tableau
$array_dest = array_merge($array_dest1,$array_dest2);
}
//sinon seulement la liste
else $array_dest = $array_dest1;
}
//si pas de liste
if (($dest_list=="no") AND (!empty($dest))){
$array_dest = $dest;
}
return $array_dest;
}
//envoi dune alerte par mail si case cocher
function prev_by_mail($id_dest,$pseudo,$site){
$envmail = mysql_query("select email from membre_info where id_membre='$id_dest'")or die(mysql_error());
$mailing = mysql_fetch_array($envmail);
$to = $mailing['email'];
$subject = 'Nouveau message sur le site '.$site;
$message = 'Le '.date('d/m').' a '.date('G:i').'; Vous avez recu un message de '.$pseudo.' sur le site '.$site."\r\n".'merci de ne pas repondre a ce mail';
$headers = 'From: webmaster@'.$site.'' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers)or die("erreure de mail");
}
//fonction appelé pour lenvoi
function envoi($message,$sujet,$dest,$dest_list,$mail,$site){
//nettoyage des string
$message = $this->clean($message);
$sujet = $this->clean($sujet);
//création du tableau de destinateur
$array_dest = $this->crea_dest($dest,$dest_list);
//comptage du nombre de destinataire
$count = count($array_dest);
//au cas ou
if(!is_numeric($count)){
echo '<div id="erreur">Pas de destinataire dans le tableau</div>';
exit();
}
for ($i = "0"; $i < $count ; $i++) {
echo '-'.$i.'-';
$this->insert($message,$sujet,$array_dest[$i],$this->pseudo,$this->id_membre);
if($mail=="yes") $this->prev_by_mail($array_dest[$i],$this->pseudo,$site);
}
}
}//fin de class
include('configuration.php');
//tableau pour le teste
$dest = array("1","2","3");
//creation de lobjet
$mess = new messagerie($host,$user,$passe,$db,"misterniark",$site);
//envoie d'un message de teste
$mess->envoi("merci a vous davoir lu mon code","merci de votre aide",$dest,"no","yes",$site)
?> |
Partager