Пример #1
0
    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';
    }