diff --git a/include/group.php b/include/group.php
index 862d06818..fd1c97dfd 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 967555881..57728d329 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 "";