diff --git a/include/group.php b/include/group.php index 862d06818d..fd1c97dfde 100644 --- a/include/group.php +++ b/include/group.php @@ -340,3 +340,30 @@ function groups_containing($uid,$c) { return $ret; } +/** + * @brief count unread group items + * + * Count unread items of each groups + * + * @return array + * 'id' => group id + * 'name' => group name + * 'count' => counted unseen group items + * + */ +function groups_count_unseen() { + + $r = q("SELECT `group`.`id`, `group`.`name`, COUNT(`item`.`id`) AS `count` FROM `group`, `group_member`, `item` + WHERE `group`.`uid` = %d + AND `item`.`uid` = %d + AND `item`.`unseen` AND `item`.`visible` + AND NOT `item`.`deleted` + AND `item`.`contact-id` = `group_member`.`contact-id` + AND `group_member`.`gid` = `group`.`id` + GROUP BY `group`.`id` ", + intval(local_user()), + intval(local_user()) + ); + + return $r; +} \ No newline at end of file diff --git a/mod/ping.php b/mod/ping.php index 967555881c..57728d3294 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -2,6 +2,7 @@ require_once("include/datetime.php"); require_once('include/bbcode.php'); require_once('include/forums.php'); +require_once('include/group.php'); require_once("mod/proxy.php"); function ping_init(&$a) { @@ -34,7 +35,7 @@ function ping_init(&$a) { $home = 0; $network = 0; - $network_group = array(); + $groups_unseen = array(); $forums_unseen = array(); $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`wall`, `item`.`author-name`, @@ -88,20 +89,11 @@ function ping_init(&$a) { } } - if ( $network ) - { - # Find out how unseen network posts are spread across groups - $sql = "SELECT g.id, g.name, count(i.id) count " . - "FROM `group` g, group_member gm, item i " . - "WHERE g.uid = %d " . - "AND i.uid = %d " . - "AND i.unseen AND i.visible " . - "AND NOT i.deleted " . - "AND i.`contact-id` = gm.`contact-id` " . - "AND gm.gid = g.id GROUP BY g.id"; - #echo '' . $sql . ''; - $network_group = q($sql, intval(local_user()), intval(local_user())); - #echo ''; + if($network) { + if(intval(feature_enabled(local_user(),'groups'))) { + // Find out how unseen network posts are spread across groups + $groups_unseen = groups_count_unseen(); + } if(intval(feature_enabled(local_user(),'forumlist_widget'))) { $forums_unseen = forums_count_unseen(); @@ -227,9 +219,9 @@ function ping_init(&$a) { $home\r\n"; if ($register!=0) echo "$register"; - if ( count($network_group) ) { + if ( count($groups_unseen) ) { echo ''; - foreach ($network_group as $it) { + foreach ($groups_unseen as $it) { echo '' . $it['count'] . ""; } echo "";