mirror of
https://github.com/pierre42100/ComunicAPI
synced 2024-12-25 04:58:59 +00:00
Get the list of unread notifications of the user
This commit is contained in:
parent
b9406731a4
commit
ecbccd1b9d
@ -9,7 +9,7 @@ class notificationsController {
|
||||
|
||||
|
||||
/**
|
||||
* Get the number of unread notifications of a user
|
||||
* Count the number of unread notifications of a user
|
||||
*
|
||||
* @url POST notifications/count_unread
|
||||
*/
|
||||
@ -27,4 +27,56 @@ class notificationsController {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the list of unread notifications of a user
|
||||
*
|
||||
* @url POST notifications/get_list_unread
|
||||
*/
|
||||
public function get_list_unread(){
|
||||
|
||||
user_login_required();
|
||||
|
||||
//Get the list of unread notifications
|
||||
$list = components()->notifications->list_unread(userID);
|
||||
|
||||
//Process the list of notifications
|
||||
foreach($list as $num => $data){
|
||||
$list[$num] = $this->notifToArray($data);
|
||||
}
|
||||
|
||||
//Return the list of notifications
|
||||
return $list;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Turn a notification entry into a standard API notification array
|
||||
*
|
||||
* Warning !!! The notification must be fully initialized
|
||||
*
|
||||
* @param Notification $notif The notification to process
|
||||
* @return array The generated array
|
||||
*/
|
||||
private function notifToArray(Notification $notif) : array {
|
||||
|
||||
$array = array();
|
||||
|
||||
//Parse the notification
|
||||
$array['id'] = $notif->get_id();
|
||||
$array['time_create'] = $notif->get_time_create();
|
||||
$array['seen'] = $notif->is_seen();
|
||||
$array['from_user_id'] = $notif->get_from_user_id();
|
||||
$array['dest_user_id'] = $notif->get_dest_user_id();
|
||||
$array['on_elem_id'] = $notif->get_on_elem_id();
|
||||
$array['on_elem_type'] = $notif->get_on_elem_type();
|
||||
$array['type'] = $notif->get_type();
|
||||
$array['event_visibility'] = $notif->get_event_visibility();
|
||||
$array['from_container_id'] = $notif->get_from_container_id();
|
||||
$array['from_container_type'] = $notif->get_from_container_type();
|
||||
|
||||
|
||||
return $array;
|
||||
}
|
||||
}
|
@ -30,6 +30,29 @@ class notificationComponent {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of unread notifications of a user
|
||||
*
|
||||
* @param int $userID The target user ID
|
||||
* @return array The list of notifications
|
||||
*/
|
||||
public function list_unread(int $userID) : array {
|
||||
|
||||
//Perform a request on the server
|
||||
$conditions = "WHERE dest_user_id = ? AND seen = 0 ORDER BY id DESC";
|
||||
$values = array($userID);
|
||||
|
||||
//Perform the request
|
||||
$results = CS::get()->db->select(self::NOTIFICATIONS_TABLE, $conditions, $values);
|
||||
|
||||
//Process the list of results
|
||||
$list = array();
|
||||
foreach($results as $row)
|
||||
$list[] = $this->dbToNotification($row);
|
||||
|
||||
//Return result
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* Push a new notification
|
||||
@ -261,6 +284,33 @@ class notificationComponent {
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a notification database entry into a Notification object
|
||||
*
|
||||
* @param array $row The database entry to process
|
||||
* @return Notification The generated notification
|
||||
*/
|
||||
private function dbToNotification(array $row) : Notification {
|
||||
|
||||
$notif = new Notification();
|
||||
|
||||
//Parse database entry
|
||||
$notif->set_id($row['id']);
|
||||
$notif->set_seen($row['seen'] == 1);
|
||||
$notif->set_time_create($row['time_create']);
|
||||
$notif->set_from_user_id($row['from_user_id']);
|
||||
$notif->set_dest_user_id($row['dest_user_id']);
|
||||
$notif->set_on_elem_id($row['on_elem_id']);
|
||||
$notif->set_on_elem_type($row['on_elem_type']);
|
||||
$notif->set_type($row['type']);
|
||||
$notif->set_event_visibility($row['visibility']);
|
||||
$notif->set_from_container_id($row['from_container_id']);
|
||||
$notif->set_from_container_type($row['from_container_type']);
|
||||
|
||||
return $notif;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Register component
|
||||
|
Loading…
Reference in New Issue
Block a user