aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Module/Sse_bs.php
diff options
context:
space:
mode:
Diffstat (limited to 'Zotlabs/Module/Sse_bs.php')
-rw-r--r--Zotlabs/Module/Sse_bs.php164
1 files changed, 95 insertions, 69 deletions
diff --git a/Zotlabs/Module/Sse_bs.php b/Zotlabs/Module/Sse_bs.php
index 287c24829..eaaeae7b7 100644
--- a/Zotlabs/Module/Sse_bs.php
+++ b/Zotlabs/Module/Sse_bs.php
@@ -6,6 +6,7 @@ use App;
use Zotlabs\Lib\Apps;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\Enotify;
+use Zotlabs\Lib\XConfig;
class Sse_bs extends Controller {
@@ -36,7 +37,7 @@ class Sse_bs extends Controller {
self::$vnotify = get_pconfig(self::$uid, 'system', 'vnotify', -1);
self::$evdays = intval(get_pconfig(self::$uid, 'system', 'evdays'));
- self::$limit = 50;
+ self::$limit = 30;
self::$offset = 0;
self::$xchans = '';
@@ -54,10 +55,13 @@ class Sse_bs extends Controller {
self::$xchans = ids_to_querystr($x, 'xchan_hash', true);
}
- if(intval(argv(2)) > 0)
+ if(intval(argv(2)) > 0) {
self::$offset = argv(2);
- else
+ }
+ else {
$_SESSION['sse_loadtime'] = datetime_convert();
+ }
+
$network = false;
$dm = false;
@@ -99,14 +103,14 @@ class Sse_bs extends Controller {
self::bs_forums(),
self::bs_pubs($pubs),
self::bs_files(),
- self::bs_mail(),
self::bs_all_events(),
- self::bs_register()
+ self::bs_register(),
+ self::bs_info_notice()
);
- set_xconfig(self::$ob_hash, 'sse', 'timestamp', datetime_convert());
- set_xconfig(self::$ob_hash, 'sse', 'notifications', []); // reset the cache
- set_xconfig(self::$ob_hash, 'sse', 'language', App::$language);
+ XConfig::Set(self::$ob_hash, 'sse', 'notifications', []);
+ XConfig::Set(self::$ob_hash, 'sse', 'timestamp', datetime_convert());
+ XConfig::Set(self::$ob_hash, 'sse', 'language', App::$language);
json_return_and_die($result);
}
@@ -123,7 +127,7 @@ class Sse_bs extends Controller {
$mids[] = '\'' . dbesc(@base64url_decode(substr($a,4))) . '\'';
}
- $str = implode($mids, ',');
+ $str = implode(',', $mids);
$x = [ 'channel_id' => self::$uid, 'update' => 'unset' ];
call_hooks('update_unseen',$x);
@@ -142,11 +146,15 @@ class Sse_bs extends Controller {
$result['network']['notifications'] = [];
$result['network']['count'] = 0;
- if(! self::$uid)
+ if(! self::$uid) {
+ $result['network']['offset'] = -1;
return $result;
+ }
- if(! (self::$vnotify & VNOTIFY_NETWORK))
+ if(! (self::$vnotify & VNOTIFY_NETWORK)) {
+ $result['network']['offset'] = -1;
return $result;
+ }
$limit = intval(self::$limit);
$offset = self::$offset;
@@ -162,7 +170,7 @@ class Sse_bs extends Controller {
$item_normal = item_normal();
if ($notifications) {
- $items = q("SELECT * FROM item
+ $items = q("SELECT * FROM item
WHERE uid = %d
AND created <= '%s'
AND item_unseen = 1 AND item_wall = 0 AND item_private IN (0, 1)
@@ -181,7 +189,10 @@ class Sse_bs extends Controller {
$result['network']['offset'] = ((count($items) == $limit) ? intval($offset + $limit) : -1);
xchan_query($items);
foreach($items as $item) {
- $result['network']['notifications'][] = Enotify::format($item);
+ $parsed = Enotify::format($item);
+ if($parsed) {
+ $result['network']['notifications'][] = $parsed;
+ }
}
}
else {
@@ -190,7 +201,7 @@ class Sse_bs extends Controller {
}
- $r = q("SELECT count(id) as total FROM item
+ $r = q("SELECT count(id) as total FROM item
WHERE uid = %d and item_unseen = 1 AND item_wall = 0 AND item_private IN (0, 1)
AND obj_type NOT IN ('Document', 'Video', 'Audio', 'Image')
AND author_xchan != '%s'
@@ -211,11 +222,15 @@ class Sse_bs extends Controller {
$result['dm']['notifications'] = [];
$result['dm']['count'] = 0;
- if(! self::$uid)
+ if(! self::$uid) {
+ $result['dm']['offset'] = -1;
return $result;
+ }
- if(! (self::$vnotify & VNOTIFY_MAIL))
+ if(! (self::$vnotify & VNOTIFY_MAIL)) {
+ $result['dm']['offset'] = -1;
return $result;
+ }
$limit = intval(self::$limit);
$offset = self::$offset;
@@ -231,10 +246,10 @@ class Sse_bs extends Controller {
$item_normal = item_normal();
if ($notifications) {
- $items = q("SELECT * FROM item
+ $items = q("SELECT * FROM item
WHERE uid = %d
AND created <= '%s'
- AND item_unseen = 1 AND item_wall = 0 AND item_private = 2
+ AND item_unseen = 1 AND item_private = 2
AND obj_type NOT IN ('Document', 'Video', 'Audio', 'Image')
AND author_xchan != '%s'
$item_normal
@@ -250,7 +265,10 @@ class Sse_bs extends Controller {
$result['dm']['offset'] = ((count($items) == $limit) ? intval($offset + $limit) : -1);
xchan_query($items);
foreach($items as $item) {
- $result['dm']['notifications'][] = Enotify::format($item);
+ $parsed = Enotify::format($item);
+ if($parsed) {
+ $result['dm']['notifications'][] = $parsed;
+ }
}
}
else {
@@ -259,8 +277,8 @@ class Sse_bs extends Controller {
}
- $r = q("SELECT count(id) as total FROM item
- WHERE uid = %d and item_unseen = 1 AND item_wall = 0 AND item_private = 2
+ $r = q("SELECT count(id) as total FROM item
+ WHERE uid = %d and item_unseen = 1 AND item_private = 2
$item_normal
$sql_extra
AND author_xchan != '%s'",
@@ -279,11 +297,15 @@ class Sse_bs extends Controller {
$result['home']['notifications'] = [];
$result['home']['count'] = 0;
- if(! self::$uid)
+ if(! self::$uid) {
+ $result['home']['offset'] = -1;
return $result;
+ }
- if(! (self::$vnotify & VNOTIFY_CHANNEL))
+ if(! (self::$vnotify & VNOTIFY_CHANNEL)) {
+ $result['home']['offset'] = -1;
return $result;
+ }
$limit = intval(self::$limit);
$offset = self::$offset;
@@ -300,10 +322,10 @@ class Sse_bs extends Controller {
$item_normal = item_normal();
if ($notifications) {
- $items = q("SELECT * FROM item
+ $items = q("SELECT * FROM item
WHERE uid = %d
AND created <= '%s'
- AND item_unseen = 1 AND item_wall = 1
+ AND item_unseen = 1 AND item_wall = 1 AND item_private IN (0, 1)
AND obj_type NOT IN ('Document', 'Video', 'Audio', 'Image')
AND author_xchan != '%s'
$item_normal
@@ -319,7 +341,10 @@ class Sse_bs extends Controller {
$result['home']['offset'] = ((count($items) == $limit) ? intval($offset + $limit) : -1);
xchan_query($items);
foreach($items as $item) {
- $result['home']['notifications'][] = Enotify::format($item);
+ $parsed = Enotify::format($item);
+ if($parsed) {
+ $result['home']['notifications'][] = $parsed;
+ }
}
}
else {
@@ -328,8 +353,8 @@ class Sse_bs extends Controller {
}
- $r = q("SELECT count(id) as total FROM item
- WHERE uid = %d and item_unseen = 1 AND item_wall = 1
+ $r = q("SELECT count(id) as total FROM item
+ WHERE uid = %d and item_unseen = 1 AND item_wall = 1 AND item_private IN (0, 1)
$item_normal
$sql_extra
AND author_xchan != '%s'",
@@ -348,15 +373,19 @@ class Sse_bs extends Controller {
$result['pubs']['notifications'] = [];
$result['pubs']['count'] = 0;
- if(! (self::$vnotify & VNOTIFY_PUBS))
+ if(! (self::$vnotify & VNOTIFY_PUBS) || !Apps::system_app_installed(self::$uid, 'Public Stream')) {
+ $result['pubs']['offset'] = -1;
return $result;
+ }
if((observer_prohibited(true))) {
+ $result['pubs']['offset'] = -1;
return $result;
}
if(! intval(get_config('system','open_pubstream',1))) {
if(! get_observer_hash()) {
+ $result['pubs']['offset'] = -1;
return $result;
}
}
@@ -379,7 +408,7 @@ class Sse_bs extends Controller {
$item_normal = item_normal();
if ($notifications) {
- $items = q("SELECT * FROM item
+ $items = q("SELECT * FROM item
WHERE uid = %d
AND created <= '%s'
AND item_unseen = 1
@@ -400,7 +429,10 @@ class Sse_bs extends Controller {
$result['pubs']['offset'] = ((count($items) == $limit) ? intval($offset + $limit) : -1);
xchan_query($items);
foreach($items as $item) {
- $result['pubs']['notifications'][] = Enotify::format($item);
+ $parsed = Enotify::format($item);
+ if($parsed) {
+ $result['pubs']['notifications'][] = $parsed;
+ }
}
}
else {
@@ -410,7 +442,7 @@ class Sse_bs extends Controller {
}
- $r = q("SELECT count(id) as total FROM item
+ $r = q("SELECT count(id) as total FROM item
WHERE uid = %d AND item_unseen = 1
AND created > '%s'
$item_normal
@@ -516,7 +548,7 @@ class Sse_bs extends Controller {
$p_str = ids_to_querystr($p, 'parent');
$p_sql = (($p_str) ? "OR parent IN ( $p_str )" : '');
- $r = q("select mid from item
+ $r = q("select mid from item
where uid = %d and ( owner_xchan = '%s' OR author_xchan = '%s' $p_sql ) and item_unseen = 1 $sql_extra $item_normal",
intval(self::$uid),
dbesc($forums[$x]['xchan_hash']),
@@ -528,7 +560,7 @@ class Sse_bs extends Controller {
$b64mids = [];
foreach($mids as $mid)
- $b64mids[] = 'b64.' . base64url_encode($mid);
+ $b64mids[] = gen_link_id($mid);
$forums[$x]['notify_link'] = z_root() . '/network/?f=&pf=1&unseen=1&cid=' . $forums[$x]['abook_id'];
$forums[$x]['name'] = $forums[$x]['xchan_name'];
@@ -577,7 +609,7 @@ class Sse_bs extends Controller {
$item_normal = item_normal();
- $r = q("SELECT * FROM item
+ $r = q("SELECT * FROM item
WHERE verb = '%s'
AND obj_type IN ('Document', 'Video', 'Audio', 'Image')
AND uid = %d
@@ -592,7 +624,10 @@ class Sse_bs extends Controller {
if($r) {
xchan_query($r);
foreach($r as $rr) {
- $result['files']['notifications'][] = Enotify::format($rr);
+ $parsed = Enotify::format($rr);
+ if($parsed) {
+ $result['files']['notifications'][] = $parsed;
+ }
}
$result['files']['count'] = count($r);
}
@@ -601,36 +636,6 @@ class Sse_bs extends Controller {
}
- function bs_mail() {
-
- $result['mail']['notifications'] = [];
- $result['mail']['count'] = 0;
- $result['mail']['offset'] = -1;
-
- if(! self::$uid)
- return $result;
-
- if(! (self::$vnotify & VNOTIFY_MAIL))
- return $result;
-
- $r = q("select mail.*, xchan.* from mail left join xchan on xchan_hash = from_xchan
- where channel_id = %d and mail_seen = 0 and mail_deleted = 0
- and from_xchan != '%s' order by created desc",
- intval(self::$uid),
- dbesc(self::$ob_hash)
- );
-
- if($r) {
- foreach($r as $rr) {
- $result['mail']['notifications'][] = Enotify::format_mail($rr);
- }
- $result['mail']['count'] = count($r);
- }
-
- return $result;
-
- }
-
function bs_all_events() {
$result['all_events']['notifications'] = [];
@@ -671,12 +676,15 @@ class Sse_bs extends Controller {
if(! self::$uid && ! is_site_admin())
return $result;
+ $policy = intval(get_config('system','register_policy'));
+ if(($policy & REGISTER_APPROVE) != REGISTER_APPROVE)
+ return $result;
+
if(! (self::$vnotify & VNOTIFY_REGISTER))
return $result;
- $r = q("SELECT account_email, account_created from account where (account_flags & %d) > 0",
- intval(ACCOUNT_PENDING)
- );
+ $r = get_pending_accounts();
+
if($r) {
foreach($r as $rr) {
$result['register']['notifications'][] = Enotify::format_register($rr);
@@ -688,4 +696,22 @@ class Sse_bs extends Controller {
}
+ function bs_info_notice() {
+
+ $result['notice']['notifications'] = [];
+ $result['info']['notifications'] = [];
+
+ $r = XConfig::Get(self::$ob_hash, 'sse', 'notifications', []);
+
+ if(isset($r['notice']))
+ $result['notice']['notifications'] = $r['notice']['notifications'];
+
+ if(isset($r['info']))
+ $result['info']['notifications'] = $r['info']['notifications'];
+
+ return $result;
+
+ }
+
+
}