$cachekey = "ping_init:".local_user();
$ev = Cache::get($cachekey);
if (is_null($ev)) {
- $ev = qu("SELECT count(`event`.`id`) AS total, type, start, adjust FROM `event`
+ $ev = qu("SELECT type, start, adjust FROM `event`
WHERE `event`.`uid` = %d AND `start` < '%s' AND `finish` > '%s' and `ignore` = 0
ORDER BY `start` ASC ",
intval(local_user()),
}
if (dbm::is_result($ev)) {
- $all_events = intval($ev[0]['total']);
+ $all_events = count($ev);
if ($all_events) {
$str_now = datetime_convert('UTC', $a->timezone, 'now', 'Y-m-d');
- foreach ($ev as $x) {
+ foreach($ev as $x) {
$bd = false;
if ($x['type'] === 'birthday') {
$birthdays ++;
// sort notifications by $[]['date']
$sort_function = function($a, $b) {
- $adate = date($a['date']);
- $bdate = date($b['date']);
+ $adate = strtotime($a['date']);
+ $bdate = strtotime($b['date']);
+
+ // Unseen messages are kept at the top
+ // The value 31536000 means one year. This should be enough :-)
+ if (!$a['seen']) {
+ $adate += 31536000;
+ }
+ if (!$b['seen']) {
+ $bdate += 31536000;
+ }
+
if ($adate == $bdate) {
return 0;
}
function ping_format_xml_data($data, $sysnotify, $notifs, $sysmsgs, $sysmsgs_info, $groups_unseen, $forums_unseen)
{
$notifications = array();
- foreach ($notifs as $key => $notif) {
+ foreach($notifs as $key => $notif) {
$notifications[$key . ':note'] = $notif['message'];
$notifications[$key . ':@attributes'] = array(