From 95801a2e70eb5ac8d3430809fff69b0babd46d51 Mon Sep 17 00:00:00 2001 From: paolo Date: Wed, 22 Jun 2016 10:34:28 +0200 Subject: [PATCH] - Fix: Message_model queries does not get body from tbl_msg_message - Added method getMessagesByUID to Message controller --- .../controllers/api/v1/system/Message.php | 20 ++++ application/models/system/Message_model.php | 105 +++++++++++------- 2 files changed, 83 insertions(+), 42 deletions(-) diff --git a/application/controllers/api/v1/system/Message.php b/application/controllers/api/v1/system/Message.php index a049f29eb..d8c6e0a0e 100644 --- a/application/controllers/api/v1/system/Message.php +++ b/application/controllers/api/v1/system/Message.php @@ -46,6 +46,26 @@ class Message extends APIv1_Controller } } + /** + * @return void + */ + public function getMessagesByUID() + { + $uid = $this->get('uid'); + $all = $this->get('all'); + + if (isset($uid)) + { + $result = $this->messagelib->getMessagesByUID($uid, $all); + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } + /** * @return void */ diff --git a/application/models/system/Message_model.php b/application/models/system/Message_model.php index 62cf4db58..5117b742d 100644 --- a/application/models/system/Message_model.php +++ b/application/models/system/Message_model.php @@ -33,28 +33,39 @@ class Message_model extends DB_Model } // get Data - $sql = 'SELECT uid, person_id, message_id, subject, priority, relationmessage_id, oe_kurzbz, m.insertamum, anrede, titelpost, titelpre, nachname, vorname, vornamen, -status, statusinfo, s.insertamum AS statusamum -FROM public.tbl_msg_message m -JOIN public.tbl_person USING (person_id) -JOIN public.tbl_benutzer USING (person_id) -LEFT OUTER JOIN -( - SELECT message_id, person_id, status, statusinfo, tbl_msg_status.insertamum - FROM public.tbl_msg_status - INNER JOIN - ( - SELECT message_id, person_id, max(insertamum) AS insertamum - FROM public.tbl_msg_status - GROUP BY message_id, person_id - ) status - USING (message_id, person_id) - WHERE tbl_msg_status.insertamum=status.insertamum -) s -USING (message_id, person_id) -WHERE uid = ?'; + $sql = 'SELECT uid, + person_id, + message_id, + subject, + body, + priority, + relationmessage_id, + oe_kurzbz, + m.insertamum, + anrede, + titelpost, + titelpre, + nachname, + vorname, + vornamen, + status, + statusinfo, + s.insertamum AS statusamum + FROM public.tbl_msg_message m JOIN public.tbl_person USING (person_id) + JOIN public.tbl_benutzer USING (person_id) + LEFT OUTER JOIN ( + SELECT message_id, person_id, status, statusinfo, tbl_msg_status.insertamum + FROM public.tbl_msg_status INNER JOIN ( + SELECT message_id, person_id, max(insertamum) AS insertamum + FROM public.tbl_msg_status + GROUP BY message_id, person_id + ) status USING (message_id, person_id) + WHERE tbl_msg_status.insertamum=status.insertamum + ) s USING (message_id, person_id) + WHERE uid = ?'; + if (! $all) - $sql .= ' AND (status<3 OR status IS NULL)'; + $sql .= ' AND (status < 3 OR status IS NULL)'; $result = $this->db->query($sql, array($uid)); if (is_object($result)) return $this->_success($result->result()); @@ -71,27 +82,37 @@ public function getMessagesByPerson($person_id, $all) // prepare parameters $person_id = (int)$person_id; // get Data - $sql = 'SELECT person_id, message_id, subject, priority, relationmessage_id, oe_kurzbz, m.insertamum, anrede, titelpost, titelpre, nachname, vorname, vornamen, -status, statusinfo, s.insertamum AS statusamum -FROM public.tbl_msg_message m -JOIN public.tbl_person USING (person_id) -LEFT OUTER JOIN -( - SELECT message_id, person_id, status, statusinfo, tbl_msg_status.insertamum - FROM public.tbl_msg_status - INNER JOIN - ( - SELECT message_id, person_id, max(insertamum) AS insertamum - FROM public.tbl_msg_status - GROUP BY message_id, person_id - ) status - USING (message_id, person_id) - WHERE tbl_msg_status.insertamum=status.insertamum -) s -USING (message_id, person_id) -WHERE person_id = ?'; + $sql = 'SELECT person_id, + message_id, + subject, + body, + priority, + relationmessage_id, + oe_kurzbz, + m.insertamum, + anrede, + titelpost, + titelpre, + nachname, + vorname, + vornamen, + status, + statusinfo, + s.insertamum AS statusamum + FROM public.tbl_msg_message m JOIN public.tbl_person USING (person_id) + LEFT OUTER JOIN ( + SELECT message_id, person_id, status, statusinfo, tbl_msg_status.insertamum + FROM public.tbl_msg_status INNER JOIN ( + SELECT message_id, person_id, max(insertamum) AS insertamum + FROM public.tbl_msg_status + GROUP BY message_id, person_id + ) status USING (message_id, person_id) + WHERE tbl_msg_status.insertamum=status.insertamum + ) s USING (message_id, person_id) + WHERE person_id = ?'; + if (! $all) - $sql .= ' AND (status<3 OR status IS NULL)'; + $sql .= ' AND (status < 3 OR status IS NULL)'; $result = $this->db->query($sql, array($person_id)); //var_dump($result); if (is_object($result)) @@ -99,4 +120,4 @@ WHERE person_id = ?'; else return $this->_error($this->db->error(), FHC_DB_ERROR); } -} +} \ No newline at end of file