|
|
|
@ -20,7 +20,6 @@ class MessageManager |
|
|
|
|
*/ |
|
|
|
|
public static function getCountNewMessages() |
|
|
|
|
{ |
|
|
|
|
$table = Database::get_main_table(TABLE_MESSAGE); |
|
|
|
|
$userId = api_get_user_id(); |
|
|
|
|
if (empty($userId)) { |
|
|
|
|
return false; |
|
|
|
@ -28,18 +27,41 @@ class MessageManager |
|
|
|
|
|
|
|
|
|
static $count; |
|
|
|
|
if (!isset($count)) { |
|
|
|
|
$sql = "SELECT COUNT(id) as count |
|
|
|
|
FROM $table |
|
|
|
|
WHERE |
|
|
|
|
user_receiver_id=".api_get_user_id()." AND |
|
|
|
|
msg_status = ".MESSAGE_STATUS_UNREAD; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$row = Database::fetch_assoc($result); |
|
|
|
|
$count = $row['count']; |
|
|
|
|
$cacheEnabled = function_exists('apcu_exists'); |
|
|
|
|
if ($cacheEnabled) { |
|
|
|
|
$var = 'social_messages_unread_u_'.$userId; |
|
|
|
|
if (apcu_exists($var)) { |
|
|
|
|
$count = apcu_fetch($var); |
|
|
|
|
} else { |
|
|
|
|
$count = self::getCountNewMessagesFromDB($userId); |
|
|
|
|
apcu_store($var, $count, 60); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$count = self::getCountNewMessagesFromDB($userId); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $count; |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* Execute the SQL necessary to know the number of messages in the database |
|
|
|
|
* @param int $userId The user for which we need the unread messages count |
|
|
|
|
* @return int The number of unread messages in the database for the given user |
|
|
|
|
*/ |
|
|
|
|
private static function getCountNewMessagesFromDB($userId) { |
|
|
|
|
if (empty($userId)) { |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
$table = Database::get_main_table(TABLE_MESSAGE); |
|
|
|
|
$sql = "SELECT COUNT(id) as count |
|
|
|
|
FROM $table |
|
|
|
|
WHERE |
|
|
|
|
user_receiver_id=" . api_get_user_id() . " AND |
|
|
|
|
msg_status = " . MESSAGE_STATUS_UNREAD; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$row = Database::fetch_assoc($result); |
|
|
|
|
return $row['count']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get the list of user_ids of users who are online. |
|
|
|
|