]> git.mxchange.org Git - friendica.git/blobdiff - include/forums.php
Merge pull request #2112 from rabuzarus/2811_group_side
[friendica.git] / include / forums.php
index e604a3156777a14638d0a697889c713f069bc341..59bf5a6b079af9a32d935bcf19b17186b8292a53 100644 (file)
@@ -2,13 +2,13 @@
 
 /**
  * @file include/forums.php
- * @brief Functions related to forum functionality * 
+ * @brief Functions related to forum functionality *
  */
 
 
 /**
  * @brief Function to list all forums a user is connected with
- * 
+ *
  * @param int $uid of the profile owner
  * @param boolean $showhidden
  *     Show frorums which are not hidden
@@ -16,7 +16,7 @@
  *     Sort by lastitem
  * @param boolean $showprivate
  *     Show private groups
- * 
+ *
  * @returns array
  *     'url'   => forum url
  *     'name'  => forum name
@@ -27,16 +27,17 @@ function get_forumlist($uid, $showhidden = true, $lastitem, $showprivate = false
 
        $forumlist = array();
 
-       $order = (($showhidden) ? '' : ' AND `hidden` = 0 ');
-       $order .= (($lastitem) ? ' ORDER BY `last-item` ASC ' : ' ORDER BY `name` ASC ');
-       $select = '`forum` = 1';
+       $order = (($showhidden) ? '' : ' AND NOT `hidden` ');
+       $order .= (($lastitem) ? ' ORDER BY `last-item` DESC ' : ' ORDER BY `name` ASC ');
+       $select = '`forum` ';
        if ($showprivate) {
-               $select = '( `forum` = 1 OR `prv` = 1 )';
+               $select = '(`forum` OR `prv`)';
        }
 
-       $contacts = q("SELECT `contact`.`id`, `contact`.`url`, `contact`.`name`, `contact`.`micro` FROM contact 
+       $contacts = q("SELECT `contact`.`id`, `contact`.`url`, `contact`.`name`, `contact`.`micro` FROM `contact`
                        WHERE `network`= 'dfrn' AND $select AND `uid` = %d
-                       AND `blocked` = 0 AND `hidden` = 0 AND `pending` = 0 AND `archive` = 0
+                       AND NOT `blocked` AND NOT `hidden` AND NOT `pending` AND NOT `archive`
+                       AND `success_update` > `failure_update`
                        $order ",
                        intval($uid)
        );
@@ -55,10 +56,10 @@ function get_forumlist($uid, $showhidden = true, $lastitem, $showprivate = false
 
 /**
  * @brief Forumlist widget
- * 
+ *
  * Sidebar widget to show subcribed friendica forums. If activated
  * in the settings, it appears at the notwork page sidebar
- * 
+ *
  * @param App $a
  * @return string
  */
@@ -86,6 +87,7 @@ function widget_forumlist($a) {
                                'url' => $a->get_baseurl() . '/network?f=&cid=' . $contact['id'],
                                'external_url' => $a->get_baseurl() . '/redir/' . $contact['id'],
                                'name' => $contact['name'],
+                               'cid' => $contact['id'],
                                'micro' => proxy_url($contact['micro'], false, PROXY_SIZE_MICRO),
                                'id' => ++$id,
                        );
@@ -109,13 +111,13 @@ function widget_forumlist($a) {
 
 /**
  * @brief Format forumlist as contact block
- * 
+ *
  * This function is used to show the forumlist in
  * the advanced profile.
- * 
+ *
  * @param int $uid
  * @return string
- * 
+ *
  */
 function forumlist_profile_advanced($uid) {
 
@@ -146,3 +148,30 @@ function forumlist_profile_advanced($uid) {
                $o .= $forumlist;
                return $o;
 }
+
+/**
+ * @brief count unread forum items
+ *
+ * Count unread items of connected forums and private groups
+ *
+ * @return array
+ *     'id' => contact id
+ *     'name' => contact/forum name
+ *     'count' => counted unseen forum items
+ *
+ */
+
+function forums_count_unseen() {
+       $r = q("SELECT `contact`.`id`, `contact`.`name`, COUNT(*) AS `count` FROM `item`
+                       INNER JOIN `contact` ON `item`.`contact-id` = `contact`.`id`
+                       WHERE `item`.`uid` = %d AND `item`.`visible` AND NOT `item`.`deleted` AND `item`.`unseen`
+                       AND `contact`.`network`= 'dfrn' AND (`contact`.`forum` OR `contact`.`prv`)
+                       AND NOT `contact`.`blocked` AND NOT `contact`.`hidden`
+                       AND NOT `contact`.`pending` AND NOT `contact`.`archive`
+                       AND `contact`.`success_update` > `failure_update`
+                       GROUP BY `contact`.`id` ",
+               intval(local_user())
+       );
+
+       return $r;
+}