function view($id = FALSE, $filter = FALSE, $additional = FALSE) { $this->view_data['submenu'] = array($this->lang->line('application_back') => 'messages'); $message = Privatemessage::find_by_id($id); $this->view_data["count"] = "1"; if (!$filter || $filter == "Marked") { if ($message->status == "New") { $message->status = 'Read'; $message->save(); } $this->view_data["filter"] = FALSE; $sql = 'SELECT privatemessages.id, privatemessages.conversation FROM privatemessages WHERE privatemessages.recipient = "u' . $this->user->id . '" AND privatemessages.`id`="' . $id . '"'; $query = $this->db->query($sql); $row = $query->row(); $sql2 = 'SELECT privatemessages.id, privatemessages.`status`, privatemessages.conversation, privatemessages.attachment, privatemessages.attachment_link, privatemessages.subject, privatemessages.message, privatemessages.sender, privatemessages.recipient, privatemessages.`time`, privatemessages.`sender` , clients.`userpic` as userpic_c, users.`userpic` as userpic_u , users.`email` as email_u , clients.`email` as email_c , CONCAT(users.firstname," ", users.lastname) as sender_u, CONCAT(clients.firstname," ", clients.lastname) as sender_c, CONCAT(rec_u.firstname," ", rec_u.lastname) as recipient_u, CONCAT(rec_c.firstname," ", rec_c.lastname) as recipient_c FROM privatemessages LEFT JOIN clients ON CONCAT("c",clients.id) = privatemessages.sender LEFT JOIN users ON CONCAT("u",users.id) = privatemessages.sender LEFT JOIN clients AS rec_c ON CONCAT("c",rec_c.id) = privatemessages.recipient LEFT JOIN users AS rec_u ON CONCAT("u",rec_u.id) = privatemessages.recipient GROUP by privatemessages.id HAVING privatemessages.conversation = "' . $row->conversation . '" ORDER BY privatemessages.`id` DESC LIMIT 100'; $query2 = $this->db->query($sql2); $this->view_data["conversation"] = array_filter($query2->result()); $this->view_data["count"] = count($this->view_data["conversation"]); } else { if ($message->status == 'deleted') { $sql = 'SELECT privatemessages.id, privatemessages.`status`, privatemessages.conversation, privatemessages.attachment, privatemessages.attachment_link, privatemessages.subject, privatemessages.message, privatemessages.sender, privatemessages.recipient, privatemessages.`time`, privatemessages.`sender` , clients.`userpic` as userpic_c, users.`userpic` as userpic_u , users.`email` as email_u , clients.`email` as email_c , CONCAT(users.firstname," ", users.lastname) as sender_u, CONCAT(clients.firstname," ", clients.lastname) as sender_c, CONCAT(users.firstname," ", users.lastname) as recipient_u, CONCAT(clients.firstname," ", clients.lastname) as recipient_c FROM privatemessages LEFT JOIN clients ON (CONCAT("c",clients.id) = privatemessages.sender) OR (CONCAT("c",clients.id) = privatemessages.recipient) LEFT JOIN users ON (CONCAT("u",users.id) = privatemessages.sender) OR (CONCAT("u",users.id) = privatemessages.recipient) GROUP by privatemessages.id HAVING privatemessages.id = "' . $id . '" AND privatemessages.recipient = "u' . $this->user->id . '" ORDER BY privatemessages.`id` DESC LIMIT 100'; } else { if ($filter == "Sent") { $sql = 'SELECT privatemessages.id, privatemessages.`status`, privatemessages.conversation, privatemessages.attachment, privatemessages.attachment_link, privatemessages.subject, privatemessages.message, privatemessages.sender, privatemessages.recipient, privatemessages.`time`, privatemessages.`sender` , clients.`userpic` as userpic_c, users.`userpic` as userpic_u , users.`email` as email_u , clients.`email` as email_c , CONCAT(users.firstname," ", users.lastname) as sender_u, CONCAT(clients.firstname," ", clients.lastname) as sender_c, CONCAT(users.firstname," ", users.lastname) as recipient_u, CONCAT(clients.firstname," ", clients.lastname) as recipient_c FROM privatemessages LEFT JOIN clients ON CONCAT("c",clients.id) = privatemessages.recipient OR CONCAT("c",clients.id) = privatemessages.sender LEFT JOIN users ON CONCAT("u",users.id) = privatemessages.recipient OR CONCAT("u",users.id) = privatemessages.sender GROUP by privatemessages.id HAVING privatemessages.id = "' . $id . '" AND privatemessages.sender = "u' . $this->user->id . '" ORDER BY privatemessages.`id` DESC LIMIT 100'; $receiverart = substr($additional, 0, 1); $receiverid = substr($additional, 1, 9999); if ($receiverart == "u") { $receiver = User::find($receiverid); $this->view_data["recipient"] = $receiver->firstname . ' ' . $receiver->lastname; } else { $receiver = Client::find($receiverid); $this->view_data["recipient"] = $receiver->firstname . ' ' . $receiver->lastname; } } else { $sql = 'SELECT privatemessages.id, privatemessages.`status`, privatemessages.conversation, privatemessages.attachment, privatemessages.attachment_link, privatemessages.subject, privatemessages.message, privatemessages.sender, privatemessages.recipient, privatemessages.`time`, privatemessages.`sender` , clients.`userpic` as userpic_c, users.`userpic` as userpic_u , users.`email` as email_u , clients.`email` as email_c , CONCAT(users.firstname," ", users.lastname) as sender_u, CONCAT(clients.firstname," ", clients.lastname) as sender_c, CONCAT(users.firstname," ", users.lastname) as recipient_u, CONCAT(clients.firstname," ", clients.lastname) as recipient_c FROM privatemessages LEFT JOIN clients ON (CONCAT("c",clients.id) = privatemessages.sender) OR (CONCAT("c",clients.id) = privatemessages.recipient) LEFT JOIN users ON (CONCAT("u",users.id) = privatemessages.sender) OR (CONCAT("u",users.id) = privatemessages.recipient) GROUP by privatemessages.id HAVING privatemessages.id = "' . $id . '" AND (privatemessages.sender = "u' . $this->user->id . '" OR privatemessages.recipient = "u' . $this->user->id . '") ORDER BY privatemessages.`id` DESC LIMIT 100'; } } $query = $this->db->query($sql); $this->view_data["conversation"] = array_filter($query->result()); $this->view_data["filter"] = $filter; } $this->theme_view = 'ajax'; $this->view_data['form_action'] = 'messages/write'; $this->view_data['id'] = $id; $this->content_view = 'messages/view'; }