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 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
| <?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 connecting{
function connect(){
$this->host = $GLOBALS['host'];
$this->user = $GLOBALS['user'];
$this->passe = $GLOBALS['passe'];
$this->db = $GLOBALS['db'];
$this->cx_flag = mysql_connect($this->host,$this->user,$this->passe);
if (!$this->cx_flag) die('Impossible de se connecter : ' . mysql_error());
$bd_select = mysql_select_db($this->db,$this->cx_flag);
if(!$bd_select) die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
function close($flag){
return mysql_close($flag);
}
}
class user{
//$pseudo provient de $_SESSION['pseudo']
function user($pseudo){
//connection
connecting::connect();
//teste si le membre est bien enregister
$test_pseudo = mysql_query("SELECT id_membre FROM membre_info WHERE pseudo='$pseudo' AND actif='oui'");
$test_id_membre = mysql_fetch_array($test_pseudo);
if(!$test_id_membre['id_membre']) die ('Vous n\'etes pas autoriser a accéder a cette fonctionalité');
else $this->id_membre = $test_id_membre['id_membre'];
connecting::close($this->cx_flag);
}
function user_info(){
connecting::connect();
$info_req = mysql_query("SELECT pseudo,email,level FROM membre_info where id_membre='$this->id_membre'")
or die(mysql_error());
$info = mysql_fetch_array($info_req);
$this->email = $info['email'];
$this->level = $info['level'];
$this->pseudo = $info['pseudo'];
connecting::close($this->cx_flag);
}
}
class clean{
function clean($str,$utf8,$lower){
//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
if($utf8==true)
$str=htmlentities($str,ENT_QUOTES,'utf-8');
if($utf8==false)
$str=htmlentities($str,ENT_QUOTES);
//Supprime les espaces en début et fin de chaîne
$str=trim($str);
//echappe les guillemets
$str=addslashes($str);
//minuscule
if($lower==true)
$str=strtolower($str);
$str= nl2br($str);
return($str);
}//fin de function clean
}
class prev_by_mail{
//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");
}
}
class messagerie{
function messagerie($pseudo,$site){
//teste lutilisateur et recupere ces info -classe user-
user::user($pseudo);
user::user_info();
//connection -classe connecting-
connecting::connect();
}
//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;
}
//fonction appelé pour lenvoi
function envoi($message,$sujet,$dest,$dest_list,$mail,$site){
//nettoyage des string classe clean
$message = clean::clean($message,$utf8=true,$lower=true);
$sujet = clean::clean($sujet,$utf8=true,$lower=false);
//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++) {
//juste pour la phase de dev
echo '-'.$i.'-';
$this->insert($message,$sujet,$array_dest[$i],$this->pseudo,$this->id_membre);
if($mail=="yes") prev_by_mail::prev_by_mail($array_dest[$i],$this->pseudo,$site);
}
//deco
connecting::close($this->cx_flag);
}
}//fin de class
include('configuration.php');
//tableau pour le teste
$dest = array("1","2","3");
//creation de lobjet
$mess = new messagerie("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