All pastes #935542 Raw Edit

Anonymous

public php v1 · immutable
·published 2008-03-09 18:42 UTC
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;			}		}	}?>