aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2015-02-12 17:45:25 -0800
committerfriendica <info@friendica.com>2015-02-12 17:45:25 -0800
commitda2349bb6a85d13f0aa29046bef3021cf0c884ba (patch)
treec6746dacc91a9f073bca67869074cc81825964df /include
parent94a9aa9610647935a10ba6d4d8f70c955a9d7243 (diff)
downloadvolse-hubzilla-da2349bb6a85d13f0aa29046bef3021cf0c884ba.tar.gz
volse-hubzilla-da2349bb6a85d13f0aa29046bef3021cf0c884ba.tar.bz2
volse-hubzilla-da2349bb6a85d13f0aa29046bef3021cf0c884ba.zip
provide relief to sites that are severely impacted by the slow ITEM_UNSEEN searches. This does not incorporate any other flag optimisations as that will require a major DB update and possibly involve significant downtime. This is just to bite off a little chunk now and provide some much needed relief.
Diffstat (limited to 'include')
-rw-r--r--include/ItemObject.php2
-rw-r--r--include/api.php5
-rw-r--r--include/attach.php4
-rwxr-xr-xinclude/diaspora.php4
-rwxr-xr-xinclude/items.php9
-rw-r--r--include/notify.php2
6 files changed, 12 insertions, 14 deletions
diff --git a/include/ItemObject.php b/include/ItemObject.php
index c429a0131..136e08eb7 100644
--- a/include/ItemObject.php
+++ b/include/ItemObject.php
@@ -612,7 +612,7 @@ class Item extends BaseObject {
if((! visible_activity($child->data)) || array_key_exists('author_blocked',$child->data)) {
continue;
}
- if($child->data['item_flags'] & ITEM_UNSEEN)
+ if(intval($child->data['item_unseen']))
$total ++;
}
}
diff --git a/include/api.php b/include/api.php
index d00cdcf8a..d5c2a429c 100644
--- a/include/api.php
+++ b/include/api.php
@@ -1004,10 +1004,7 @@ require_once('include/items.php');
// at the network timeline just mark everything seen.
if (api_user() == $user_info['uid']) {
- $r = q("UPDATE `item` SET item_flags = ( item_flags & ~%d )
- WHERE (item_flags & %d)>0 and uid = %d",
- intval(ITEM_UNSEEN),
- intval(ITEM_UNSEEN),
+ $r = q("UPDATE `item` SET item_unseen = 0 where item_unseen = 1 and uid = %d",
intval($user_info['uid'])
);
}
diff --git a/include/attach.php b/include/attach.php
index 5ed2cf6d2..3350a591e 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -998,7 +998,8 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
$objtype = ACTIVITY_OBJ_FILE;
- $item_flags = ITEM_WALL|ITEM_ORIGIN|ITEM_UNSEEN;
+ $item_flags = ITEM_WALL|ITEM_ORIGIN;
+;
$private = (($allow_cid || $allow_gid || $deny_cid || $deny_gid) ? 1 : 0);
@@ -1038,6 +1039,7 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
$arr['mid'] = $u_mid;
$arr['parent_mid'] = $u_mid;
$arr['item_flags'] = $item_flags;
+ $arr['item_unseen'] = 1;
$arr['author_xchan'] = $poster['xchan_hash'];
$arr['owner_xchan'] = $poster['xchan_hash'];
$arr['title'] = '';
diff --git a/include/diaspora.php b/include/diaspora.php
index 4280d9d77..559a9d14d 100755
--- a/include/diaspora.php
+++ b/include/diaspora.php
@@ -923,8 +923,8 @@ function diaspora_post($importer,$xml,$msg) {
$datarray['app'] = $app;
- $datarray['item_flags'] = ITEM_UNSEEN|ITEM_THREAD_TOP;
-
+ $datarray['item_flags'] = ITEM_THREAD_TOP;
+ $datarray['item_unseen'] = 1;
$result = item_store($datarray);
return;
diff --git a/include/items.php b/include/items.php
index 91fa1d70a..717a4bf71 100755
--- a/include/items.php
+++ b/include/items.php
@@ -2043,13 +2043,12 @@ function item_store($arr,$allow_exec = false) {
$arr['comment_policy'] = ((x($arr,'comment_policy')) ? notags(trim($arr['comment_policy'])) : 'contacts' );
- $arr['item_flags'] = $arr['item_flags'] | ITEM_UNSEEN;
+ $arr['item_unseen'] = ((array_key_exists('item_unseen',$arr)) ? intval($arr['item_unseen']) : 1);
if($arr['comment_policy'] == 'none')
$arr['item_flags'] = $arr['item_flags'] | ITEM_NOCOMMENT;
-
// handle time travelers
// Allow a bit of fudge in case somebody just has a slightly slow/fast clock
@@ -2332,8 +2331,8 @@ function item_store_update($arr,$allow_exec = false) {
// override the unseen flag with the original
- if($arr['item_flags'] & ITEM_UNSEEN)
- $arr['item_flags'] = $arr['item_flags'] ^ ITEM_UNSEEN;
+ if(intval($arr['item_flags']))
+ $arr['item_unseen'] = 0;
if($orig[0]['item_flags'] & ITEM_VERIFIED)
$orig[0]['item_flags'] = $orig[0]['item_flags'] ^ ITEM_VERIFIED;
@@ -4562,7 +4561,7 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
}
}
- $simple_update = (($client_mode & CLIENT_MODE_UPDATE) ? " and ( item.item_flags & " . intval(ITEM_UNSEEN) . " )>0 " : '');
+ $simple_update = (($client_mode & CLIENT_MODE_UPDATE) ? " and ( item.item_unseen = 1 ) " : '');
if($client_mode & CLIENT_MODE_LOAD)
$simple_update = '';
diff --git a/include/notify.php b/include/notify.php
index aa96fa279..eef838664 100644
--- a/include/notify.php
+++ b/include/notify.php
@@ -32,7 +32,7 @@ function format_notification($item) {
'url' => $item['author']['xchan_url'],
'photo' => $item['author']['xchan_photo_s'],
'when' => relative_date($item['created']),
- 'class' => (($item['item_flags'] & ITEM_UNSEEN) ? 'notify-unseen' : 'notify-seen'),
+ 'class' => (intval($item['item_unseen']) ? 'notify-unseen' : 'notify-seen'),
'message' => strip_tags(bbcode($itemem_text))
);