]> 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 425a5e623422f79e740e0080e49c42ac46a05066..59bf5a6b079af9a32d935bcf19b17186b8292a53 100644 (file)
@@ -2,21 +2,21 @@
 
 /**
  * @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
- * 
+ * @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
+ *     Show frorums which are not hidden
  * @param boolean $lastitem
- *     sort by lastitem
+ *     Sort by lastitem
  * @param boolean $showprivate
- *     show private groups
- * 
+ *     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)
        );
@@ -53,12 +54,12 @@ function get_forumlist($uid, $showhidden = true, $lastitem, $showprivate = false
 }
 
 
-/*
- * @brief forumlist widget
- * 
+/**
+ * @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,
                        );
@@ -95,7 +97,7 @@ function widget_forumlist($a) {
                $tpl = get_markup_template('widget_forumlist.tpl');
 
                $o .= replace_macros($tpl,array(
-                       '$title'        => t("Forums"),
+                       '$title'        => t('Forums'),
                        '$forums'       => $entries,
                        '$link_desc'    => t('External link to forum'),
                        '$total'        => $total,
@@ -107,15 +109,15 @@ function widget_forumlist($a) {
        return $o;
 }
 
-/*
- * @brief format forumlist as contact block
- * 
+/**
+ * @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) {
 
@@ -145,4 +147,31 @@ function forumlist_profile_advanced($uid) {
        if(count($contacts) > 0)
                $o .= $forumlist;
                return $o;
-}
\ No newline at end of file
+}
+
+/**
+ * @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;
+}