/** * log messages to DB * * @access public * * @param $user_id - id of the owner of the spool * @param $msgs_ar - array of messages id to log * * @return an AMA_Error object if something goes wrong * **/ public function log_messages($user_id, $msgs_ar) { // logger("entered MessageHandler::log_messages - ". // "[user_id=$user_id, msgs_ar=".serialize($msgs_ar)."]", 3); $spool = new Spool($user_id, $this->dsn); if (count($msgs_ar)) { foreach ($msgs_ar as $message_id) { $msg_Ha = get_message_info($message_id); $res = $spool->log_message($msg_Ha); } // FIXME: qui gestione errore non e' a posto. if (AMA_DataHandler::isError($res)) { return new AMA_Error(AMA_ERR_ADD); } } }
private function &new_find_messages($last_read_message_id) { $id_group = $this->id_chatroom; $type = $this->type; $user_id = $this->user_id; $db =& parent::getConnection(); if (AMA_DB::isError($db)) { return $db; } if ($last_read_message_id == 0) { $message_id_sql = ''; } else { $message_id_sql = ' AND id_messaggio > ' . $last_read_message_id; } if ($type == ADA_MSG_CHAT) { $sql = "SELECT U.nome, M.id_messaggio, M.data_ora, M.tipo, M.testo\n FROM (SELECT id_messaggio, data_ora, tipo, id_mittente, testo FROM messaggi\n WHERE id_group={$id_group} {$message_id_sql} AND tipo='{$type}') AS M\n LEFT JOIN utente AS U ON (U.id_utente = M.id_mittente)"; } elseif ($type == ADA_MSG_PRV_CHAT) { $user = $this->user_id; $sql = "SELECT U.nome, M.id_messaggio, M.data_ora, M.tipo, M.testo\n FROM (SELECT id_messaggio, data_ora, tipo, id_mittente, testo FROM messaggi\n WHERE id_group={$id_group} {$message_id_sql} AND tipo='{$type}') AS M\n LEFT JOIN utente AS U ON (U.id_utente = M.id_mittente)\n LEFT JOIN\n (SELECT id_messaggio FROM destinatari_messaggi WHERE id_utente={$user_id}) AS PM\n ON (M.id_messaggio=PM.id_messaggio)\n "; } $result = $db->getAll($sql, null, AMA_FETCH_ASSOC); if (AMA_DataHandler::isError($result)) { return new AMA_Error(AMA_ERR_GET); } return $result; }