X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fping.php;h=17180c74ee98dc0bdcdbe454ec4eeb7af2befd91;hb=74479c4020499e6aa7866b5478366932b723c515;hp=7ef2231080f1bc5ea35c4b1f7b80039f17253bec;hpb=58e03c515571a82be3de6c61f0430975a4e407fd;p=friendica.git diff --git a/mod/ping.php b/mod/ping.php index 7ef2231080..17180c74ee 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -1,10 +1,14 @@ get_baseurl() . '/profile/' . $a->user['nickname'] ; - $mails = q("SELECT * FROM `mail` + $myurl = App::get_baseurl() . '/profile/' . $a->user['nickname'] ; + $mails = qu("SELECT `id`, `from-name`, `from-url`, `from-photo`, `created` FROM `mail` WHERE `uid` = %d AND `seen` = 0 AND `from-url` != '%s' ", intval(local_user()), dbesc($myurl) @@ -186,26 +190,32 @@ function ping_init(App $a) $mail_count = count($mails); if ($a->config['register_policy'] == REGISTER_APPROVE && is_site_admin()){ - $regs = q("SELECT `contact`.`name`, `contact`.`url`, `contact`.`micro`, `register`.`created`, COUNT(*) AS `total` + $regs = qu("SELECT `contact`.`name`, `contact`.`url`, `contact`.`micro`, `register`.`created`, COUNT(*) AS `total` FROM `contact` RIGHT JOIN `register` ON `register`.`uid` = `contact`.`uid` WHERE `contact`.`self` = 1"); - if ($regs) { - $register = $regs[0]['total']; + + if (dbm::is_result($regs)) { + $register_count = $regs[0]['total']; } - } else { - $register = 0; } - $ev = q("SELECT count(`event`.`id`) AS total, 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()), - dbesc(datetime_convert('UTC', 'UTC', 'now + 7 days')), - dbesc(datetime_convert('UTC', 'UTC', 'now')) - ); + $cachekey = "ping_init:".local_user(); + $ev = Cache::get($cachekey); + if (is_null($ev)) { + $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()), + dbesc(datetime_convert('UTC', 'UTC', 'now + 7 days')), + dbesc(datetime_convert('UTC', 'UTC', 'now')) + ); + if (dbm::is_result($ev)) { + Cache::set($cachekey, $ev, CACHE_HOUR); + } + } 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'); @@ -231,9 +241,9 @@ function ping_init(App $a) $data['intro'] = $intro_count; $data['mail'] = $mail_count; - $data['net'] = $network; - $data['home'] = $home; - $data['register'] = $register; + $data['net'] = $network_count; + $data['home'] = $home_count; + $data['register'] = $register_count; $data['all-events'] = $all_events; $data['all-events-today'] = $all_events_today; @@ -242,10 +252,10 @@ function ping_init(App $a) $data['birthdays'] = $birthdays; $data['birthdays-today'] = $birthdays_today; - if (dbm::is_result($notifs) && !$sysnotify) { + if (dbm::is_result($notifs)) { foreach ($notifs as $notif) { if ($notif['seen'] == 0) { - $sysnotify ++; + $sysnotify_count ++; } } } @@ -254,7 +264,7 @@ function ping_init(App $a) if (dbm::is_result($intros)) { foreach ($intros as $intro) { $notif = array( - 'href' => $a->get_baseurl() . '/notifications/intros/' . $intro['id'], + 'href' => App::get_baseurl() . '/notifications/intros/' . $intro['id'], 'name' => $intro['name'], 'url' => $intro['url'], 'photo' => $intro['photo'], @@ -269,7 +279,7 @@ function ping_init(App $a) if (dbm::is_result($mails)) { foreach ($mails as $mail) { $notif = array( - 'href' => $a->get_baseurl() . '/message/' . $mail['id'], + 'href' => App::get_baseurl() . '/message/' . $mail['id'], 'name' => $mail['from-name'], 'url' => $mail['from-url'], 'photo' => $mail['from-photo'], @@ -284,7 +294,7 @@ function ping_init(App $a) if (dbm::is_result($regs)) { foreach ($regs as $reg) { $notif = array( - 'href' => $a->get_baseurl() . '/admin/users/', + 'href' => App::get_baseurl() . '/admin/users/', 'name' => $reg['name'], 'url' => $reg['url'], 'photo' => $reg['micro'], @@ -298,8 +308,18 @@ function ping_init(App $a) // 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; } @@ -356,7 +376,7 @@ function ping_init(App $a) if ($format == 'json') { $data['groups'] = $groups_unseen; $data['forums'] = $forums_unseen; - $data['notify'] = $sysnotify + $intro + $mail_count + $register; + $data['notify'] = $sysnotify_count + $intro_count + $mail_count + $register_count; $data['notifications'] = $notifications; $data['sysmsgs'] = array( 'notice' => $sysmsgs, @@ -375,7 +395,7 @@ function ping_init(App $a) } } else { // Legacy slower XML format output - $data = ping_format_xml_data($data, $sysnotify, $notifications, $sysmsgs, $sysmsgs_info, $groups_unseen, $forums_unseen); + $data = ping_format_xml_data($data, $sysnotify_count, $notifications, $sysmsgs, $sysmsgs_info, $groups_unseen, $forums_unseen); header("Content-type: text/xml"); echo xml::from_array(array("result" => $data), $xml); @@ -402,7 +422,7 @@ function ping_get_notifications($uid) $a = get_app(); do { - $r = q("SELECT `notify`.*, `item`.`visible`, `item`.`spam`, `item`.`deleted` + $r = qu("SELECT `notify`.*, `item`.`visible`, `item`.`spam`, `item`.`deleted` FROM `notify` LEFT JOIN `item` ON `item`.`id` = `notify`.`iid` WHERE `notify`.`uid` = %d AND `notify`.`msg` != '' AND NOT (`notify`.`type` IN (%d, %d)) @@ -451,7 +471,7 @@ function ping_get_notifications($uid) ); } - $notification["href"] = $a->get_baseurl() . "/notify/view/" . $notification["id"]; + $notification["href"] = App::get_baseurl() . "/notify/view/" . $notification["id"]; if ($notification["visible"] AND !$notification["spam"] AND !$notification["deleted"] AND !is_array($result[$notification["parent"]])) { @@ -468,7 +488,7 @@ function ping_get_notifications($uid) * @deprecated * * @param array $data The initial ping data array - * @param int $sysnotify Number of unseen system notifications + * @param int $sysnotify_count Number of unseen system notifications * @param array $notifs Complete list of notification * @param array $sysmsgs List of system notice messages * @param array $sysmsgs_info List of system info messages