rendered paste body<?php /** * Cette classe réprésente la table 'message' de la base de données. * Elle permet la création, la modification et la suppression d'un ou plusieurs messages. * De plus, elle permet la sélection de messages selon le destinataire ou l'expéditeur. * */ class Message extends Zend_Db_Table { protected $_name = 'message'; protected $_primary = 'id'; /* * Envoyer un message : * $sender : id de l'expéditeur * $addressee : id du destinataire * $title : titre du message * $message : corps du message */ function send($sender, $addressee, $object, $message) { $state = array( "errors" => '', "has_error" => false, "success" => false, ); if(empty($sender) || !is_numeric($sender)) { $state['has_error'] = true; $state['errors']['sender'] = "Veuillez spécifier un expéditeur pour ce message !"; } if(empty($addressee)) { $state['has_error'] = true; $state['errors']['addressee'] = "Veuillez spécifier un destinataire pour ce message !"; }else { $membre = new Membre(); $destinataire = $membre->getMembreByName($addressee); if(empty($destinataire)) { $state['has_error'] = true; $state['errors']['addressee'] = "Destinataire inconnu !"; }else { $id_addressee = $destinataire->id; if($destinataire->id == $sender) { $state['has_error'] = true; $state['errors']['addressee'] = "Le destinataire et l'expéditeur ne peuvent être les mêmes !"; } } } if(empty($object) || (strlen($object) > 50) ||(strlen($object) < 4)) { $state['has_error'] = true; $state['errors']['object'] = "Veuillez spécifier un objet de 4 à 50 caractères pour ce message !"; } if(empty($message) || (strlen($message) < 10)) { $state['has_error'] = true; $state['errors']['message'] = "Veuillez spécifier un texte d'au moins 10 caractères pour ce message !"; } // On vérifie qu'il n'y a pas d'erreur jusque là if($state['has_error'] == false) { $this->insert(array( 'id_sender' => $sender, 'id_receiver' => $id_addressee, 'object' => $object, 'message' => $message, 'send_time' => time(), 'read_time' => '0' )); $state['success'] = true; } return $state; } /* * Supprimer un message. * $message : id du message. */ function remove($message) { $where = $this->getAdapter()->quoteInto('id = ?', $message->id); $this->delete($where); } /* * Récupere les messages de la boîte de répection du membre 'member'. */ function getReceivedMessages($member) { $db = $this->getAdapter(); if($member && is_numeric($member->id)) { $where = $db->quoteInto('e.id_receiver = ?', array($member->id)); $select = $db->select() ->from(array('e' => 'message')) ->joinLeft(array('m' => 'membre'), 'e.id_sender = m.id', array('m.nom as nom_membre')) ->where($where); return $db->fetchAll($select); } return null; } /* * Récupere les messages de la boîte d'envoi du membre 'member'. */ function getSendBoxMessages($member) { $db = $this->getAdapter(); if($member && is_numeric($member->id)) { $where = $db->quoteInto('e.id_sender = ?', array($member->id)); $select = $db->select() ->from(array('e' => 'message')) ->joinLeft(array('m' => 'membre'), 'e.id_receiver = m.id', array('m.nom as nom_membre')) ->where($where); return $db->fetchAll($select); } return null; } function read($id) { $db = $this->getAdapter(); if(is_numeric($id)) { $where = $db->quoteInto('e.id = ?', array($id)); $select = $db->select() ->from(array('e' => 'message')) ->joinLeft(array('m' => 'membre'), 'e.id_sender = m.id', array('m.nom as sender_name')) ->joinLeft(array('b' => 'membre'), 'e.id_receiver = b.id', array('b.nom as receiver_name')) ->where($where); $message = $db->fetchRow($select); if(!empty($message) && $message->read_time == 0) { $readtime = array( 'read_time' => time() ); $where = $db->quoteInto('id = ?', array($id)); $this->update($readtime, $where); } return $message; } } }?>