// // This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. // // To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/1.0/ // // or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. // // Francais (brouillon): http://creativecommons.org/projects/international/fr/translated-license // ////////////////////////////////////////////////////////////////////////////////////////////////////// // Gestion des messages // v0.1.3 class messages { var $err = array( "stop" => "oui", "log" => "oui", "debug" => "oui"); // Gestion des erreurs function _err($err,$debug="") { // Si le debug est activé if($this->err[debug] == "oui" && !empty($debug)) $err.= "\n// DEBUG //\n".$debug; // Si on log les erreurs if($this->err[log] == "oui") $this->erreurs[] = $err; // Si on s'arrête sur les erreurs if($this->err[stop] == "oui") { echo "
".htmlentities(stripslashes($err))."
"; exit; } $this->erreur = $err; return FALSE; } function liste($id,$dossier="") { if(empty($dossier)) $dossier= "inbox"; $req = "SELECT id,de,de_nom,a,a_nom,sujet,date,statut FROM messages WHERE owner='{$id}' AND dossier='{$dossier}' ORDER BY date"; $res = mysql_query($req); if(!$res) return $this->_err("Problème technique.",$req."\n".mysql_error()); while($rec = mysql_fetch_assoc($res)) { $out[] = $rec; } mysql_free_result($res); return $out; } function lire($membre,$id) { $req = "SELECT * FROM messages WHERE id='{$id}' AND owner='{$membre}'"; $res = mysql_query($req); $rec = mysql_fetch_assoc($res); if($rec[statut] == "non-lu") mysql_unbuffered_query("UPDATE messages SET statut='lu' WHERE id='{$id}'"); return $rec; } function check_new($id) { $res = mysql_unbuffered_query("SELECT COUNT(id) FROM messages WHERE owner='{$id}' AND dossier='inbox' AND statut='non-lu'"); $rec = @mysql_fetch_row($res); mysql_free_result($res); return $rec[0]; } function envoyer($t,$check_quotas=TRUE) { extract($t); if(empty($de)) return $this->_err("Pas d'expéditeur."); if(empty($a) && empty($a_nom)) return $this->_err("Pas de destinataire. Merci de spécifier un destinataire."); if(empty($sujet)) return $this->_err("Pas de sujet. Merci de spécifier un sujet."); if(empty($texte)) return $this->_err("Pas de texte. Merci de spécifier un texte."); if(empty($a)) { $res = mysql_query("SELECT id,groupe,msg_mail,email,banned FROM membres WHERE pseudo='{$a_nom}'"); if(mysql_num_rows($res) < 1) return $this->_err("Le membre destinataire n'existe pas."); $rec = mysql_fetch_array($res); $a = $rec[0]; if(!empty($rec['banned'])) return true; mysql_free_result($res); } if(empty($a_nom)) { $res = mysql_query("SELECT pseudo,groupe,msg_mail,email,banned FROM membres WHERE id='{$a}'"); if(mysql_num_rows($res) < 1) return $this->_err("Le membre destinataire n'existe pas."); $rec = mysql_fetch_row($res); $a_nom = $rec[0]; if(!empty($rec['banned'])) return true; mysql_free_result($res); } if($check_quotas) { $groupe = $GLOBALS['groupes']->get($rec[1]); if(($this->quota($a) >= $groupe['nb_messages']) && ($groupe['nb_messages'] >= 0)) return $this->_err("Le quota de messages du destinataire est dépassé. Vous ne pouvez pas lui envoyer de message."); } $msg_mail = $rec[2]; $email = $rec[3]; if(empty($de_nom)) { $res = mysql_query("SELECT pseudo,groupe FROM membres WHERE id='{$de}'"); if(mysql_num_rows($res) < 1) return $this->_err("Le membre expéditeur n'existe pas."); $rec = mysql_fetch_row($res); $de_nom = $rec[0]; mysql_free_result($res); } if($check_quotas && $save_sent) { $nb_messages = $GLOBALS['sessions']->groupe['nb_messages']; if(($nb_messages >= 0) && ($this->quota($de) >= $nb_messages)) return $this->_err("Votre quota est dépassé, vous ne pouvez pas enregistrer ce message dans vos messages envoyés."); } $date = time(); $requete = "INSERT INTO messages SET a='{$a}', a_nom='{$a_nom}', de='{$de}', de_nom='{$de_nom}', ". "dossier='inbox', sujet=\"{$sujet}\", texte=\"{$texte}\", owner='{$a}', date='{$date}'"; if(!mysql_unbuffered_query($requete)) return $this->_err("Problème technique.",$requete."\n".mysql_error()); if($save_sent) { $requete = "INSERT INTO messages SET a='{$a}', a_nom='{$a_nom}', de='{$de}', de_nom='{$de_nom}', ". "dossier='sent', sujet=\"{$sujet}\", texte=\"{$texte}\", owner='{$de}', date='{$date}', statut='lu'"; if(!mysql_unbuffered_query($requete)) return $this->_err("Problème technique.",$requete."\n".mysql_error()); } if($msg_mail == "oui") { $headers = "From: {$email}\nReply-To: {$email}\nReturn-Path: {$email}"; $message = "CECI EST UN MESSAGE AUTOMATIQUE, MERCI DE NE PAS Y REPONDRE\n". "-----------------------------------------------------------\n\n". "Vous avez un nouveau message personnel sur {$GLOBALS[cfg][titre]}.\n". "De: {$de_nom}\nLe: ".date("d/m/Y à H\hi")."\nSujet: ".stripslashes($sujet)."\n\n".stripslashes($texte); mail($email,"Nouveau message personnel",$message,$headers); } return TRUE; } function quota($id) { $res = mysql_query("SELECT COUNT(id) FROM messages WHERE owner='{$id}'"); $rec = @mysql_fetch_row($res); mysql_free_result($res); return $rec[0]; } function supprimer($membre,$id) { if(is_array($id)) { $liste = implode(", ",$id); $requete = 'DELETE FROM messages WHERE id IN ('.$liste.') AND owner="'.$membre.'"'; } else $requete = 'DELETE FROM messages WHERE id="'.$id.'" AND owner="'.$membre.'"'; mysql_unbuffered_query($requete); return TRUE; } function contact_add($membre,$id) { mysql_unbuffered_query("INSERT INTO contacts SET membre='{$membre}', contact='{$id}'"); return TRUE; } function contact_liste($membre) { $res = mysql_query("SELECT m.id,m.pseudo FROM membres AS m, contacts AS c WHERE m.id=c.contact AND c.membre='{$membre}' ORDER BY m.pseudo"); while($rec = mysql_fetch_row($res)) { $id = $rec[0]; $out[$id] = $rec[1]; } mysql_free_result($res); return $out; } function contact_supprimer($membre,$id) { mysql_unbuffered_query("DELETE FROM contacts WHERE membre='{$membre}' AND contact='{$id}'"); return TRUE; } } ?>