aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Module/Ping.php61
-rw-r--r--Zotlabs/Widget/Forums.php2
-rw-r--r--Zotlabs/Widget/Notifications.php15
-rw-r--r--view/js/main.js2
4 files changed, 77 insertions, 3 deletions
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();
diff --git a/Zotlabs/Widget/Forums.php b/Zotlabs/Widget/Forums.php
index f3141031d..7415c0f0a 100644
--- a/Zotlabs/Widget/Forums.php
+++ b/Zotlabs/Widget/Forums.php
@@ -27,8 +27,6 @@ class Forums {
$x1 = q("select xchan from abconfig where chan = %d and cat = 'their_perms' and k = 'send_stream' and v = '0'",
intval(local_channel())
);
-//print_r($x1);killme();
-
if($x1) {
$xc = ids_to_querystr($x1,'xchan',true);
diff --git a/Zotlabs/Widget/Notifications.php b/Zotlabs/Widget/Notifications.php
index fc78a2a39..1be467ba6 100644
--- a/Zotlabs/Widget/Notifications.php
+++ b/Zotlabs/Widget/Notifications.php
@@ -111,6 +111,21 @@ class Notifications {
'label' => t('Mark all notices seen')
]
];
+
+ $notifications[] = [
+ 'type' => 'forums',
+ 'icon' => 'comments-o',
+ 'severity' => 'secondary',
+ 'label' => t('Forums'),
+ 'title' => t('Forums'),
+ 'viewall' => [
+ //'url' => 'notifications/system',
+ //'label' => t('View all notices')
+ ],
+ 'markall' => [
+ //'label' => t('Mark all notices seen')
+ ]
+ ];
}
if(local_channel() && is_site_admin()) {
diff --git a/view/js/main.js b/view/js/main.js
index 3e24e8177..63ab938f0 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -451,7 +451,7 @@ function notificationsUpdate(cached_data) {
}
function handleNotifications(data) {
- if(data.network || data.home || data.intros || data.register || data.mail || data.all_events || data.notify || data.files || data.pubs) {
+ if(data.network || data.home || data.intros || data.register || data.mail || data.all_events || data.notify || data.files || data.pubs || data.forums) {
$('.notifications-btn').css('opacity', 1);
$('#no_notifications').hide();
}