From 53efd4e470f10e123209ed63b90213b20a87e011 Mon Sep 17 00:00:00 2001
From: Mario Vavti <mario@mariovavti.com>
Date: Fri, 1 Jun 2018 23:22:52 +0200
Subject: unread forum notifications - wip/unfinished

---
 Zotlabs/Module/Ping.php | 61 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

(limited to 'Zotlabs/Module')

diff --git a/Zotlabs/Module/Ping.php b/Zotlabs/Module/Ping.php
index bb80adc41..a43d9863e 100644
--- a/Zotlabs/Module/Ping.php
+++ b/Zotlabs/Module/Ping.php
@@ -39,6 +39,7 @@ class Ping extends \Zotlabs\Web\Controller {
 		$result['info'] = array();
 		$result['pubs'] = 0;
 		$result['files'] = 0;
+		$result['forums'] = 0;
 
 		if(! $_SESSION['static_loadtime'])
 			$_SESSION['static_loadtime'] = datetime_convert();
@@ -622,6 +623,66 @@ class Ping extends \Zotlabs\Web\Controller {
 		if(! ($vnotify & VNOTIFY_BIRTHDAY))
 			$result['birthdays'] = 0;
 
+
+
+#### unseen forum
+
+		$perms_sql = item_permissions_sql(local_channel()) . item_normal();
+
+		$xf = false;
+
+		$x1 = q("select xchan from abconfig where chan = %d and cat = 'their_perms' and k = 'send_stream' and v = '0'",
+			intval(local_channel())
+		);
+		if($x1) {
+			$xc = ids_to_querystr($x1,'xchan',true);
+
+			$x2 = q("select xchan from abconfig where chan = %d and cat = 'their_perms' and k = 'tag_deliver' and v = '1' and xchan in (" . $xc . ") ",
+				intval(local_channel())
+			);
+
+			if($x2) { 
+				$xf = ids_to_querystr($x2,'xchan',true);
+
+				// private forums
+				$x3 = q("select xchan from abconfig where chan = %d and cat = 'their_perms' and k = 'post_wall' and v = '1' and xchan in (" . $xc . ") and not xchan in (" . $xf . ") ",
+					intval(local_channel())
+				);
+				if($x3) {
+					$xf = ids_to_querystr(array_merge($x2,$x3),'xchan',true);
+				}
+			}
+		}
+
+		$sql_extra = (($xf) ? " and ( xchan_hash in (" . $xf . ") or xchan_pubforum = 1 ) " : " and xchan_pubforum = 1 "); 
+
+		$r1 = q("select abook_id, xchan_hash, xchan_name, xchan_url, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash where xchan_deleted = 0 and abook_channel = %d and abook_pending = 0 and abook_ignored = 0 and abook_blocked = 0 $sql_extra order by xchan_name",
+			intval(local_channel())
+		);
+
+		if(! $r1) {
+			$result['forums'] = 0;
+		}
+		else {
+			$fcount = count($r1);
+			$r1['total'] = 0;
+			for($x = 0; $x < $fcount; $x ++) {
+				$r = q("select sum(item_unseen) as unseen from item 
+					where uid = %d and owner_xchan = '%s' and item_unseen = 1 $perms_sql ",
+					intval(local_channel()),
+					dbesc($r1[$x]['xchan_hash'])
+				);
+				if($r[0]['unseen']) {
+					$r1[$x]['unseen'] = $r[0]['unseen'];
+					$r1['total'] = $r1['total'] + $r[0]['unseen'];
+				}
+				else {
+					unset($r1[$x]);
+				}
+			}
+			$result['forums'] = $r1['total'];
+		}
+
 		$x = json_encode($result);
 
 		$t8 = dba_timer();
-- 
cgit v1.2.3