aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario Vavti <mario@mariovavti.com>2016-03-09 10:04:33 +0100
committerMario Vavti <mario@mariovavti.com>2016-03-09 10:04:33 +0100
commitc2cdd41e8139068426175c9e6c5fe2f771ea7caf (patch)
treefef4e96cc2435b6dac1973c85a04979103e7c379
parent843cc1481af008f35804628686459437cedf3220 (diff)
downloadvolse-hubzilla-c2cdd41e8139068426175c9e6c5fe2f771ea7caf.tar.gz
volse-hubzilla-c2cdd41e8139068426175c9e6c5fe2f771ea7caf.tar.bz2
volse-hubzilla-c2cdd41e8139068426175c9e6c5fe2f771ea7caf.zip
Issue #316 make /display updates work. Basically copy and paste what we do on load and add $simple_update to the query.
-rw-r--r--include/ItemObject.php2
-rw-r--r--mod/display.php51
2 files changed, 49 insertions, 4 deletions
diff --git a/include/ItemObject.php b/include/ItemObject.php
index 2be7e3ac9..da019a30a 100644
--- a/include/ItemObject.php
+++ b/include/ItemObject.php
@@ -689,7 +689,7 @@ class Item extends BaseObject {
$comment_box = replace_macros($template,array(
'$return_path' => '',
'$threaded' => $this->is_threaded(),
- '$jsreload' => (($conv->get_mode() === 'display') ? $_SESSION['return_url'] : ''),
+ '$jsreload' => '', //(($conv->get_mode() === 'display') ? $_SESSION['return_url'] : ''),
'$type' => (($conv->get_mode() === 'channel') ? 'wall-comment' : 'net-comment'),
'$id' => $this->get_id(),
'$parent' => $this->get_id(),
diff --git a/mod/display.php b/mod/display.php
index b2d9ba34b..ac1de17ca 100644
--- a/mod/display.php
+++ b/mod/display.php
@@ -116,7 +116,7 @@ function display_content(&$a, $update = 0, $load = false) {
$simple_update = (($update) ? " AND item_unseen = 1 " : '');
if($update && $_SESSION['loadtime'])
- $simple_update .= " and item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ";
+ $simple_update = " AND (( item_unseen = 1 AND item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) OR item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) ";
if($load)
$simple_update = '';
@@ -217,9 +217,54 @@ function display_content(&$a, $update = 0, $load = false) {
}
}
- else {
- $r = array();
+ }
+
+ elseif($update && !$load) {
+ $r = null;
+
+ require_once('include/identity.php');
+ $sys = get_sys_channel();
+ $sysid = $sys['channel_id'];
+
+ if(local_channel()) {
+ $r = q("SELECT * from item
+ WHERE uid = %d
+ and mid = '%s'
+ $item_normal
+ $simple_update
+ limit 1",
+ intval(local_channel()),
+ dbesc($target_item['parent_mid'])
+ );
+ if($r) {
+ $updateable = true;
+ }
}
+ if($r === null) {
+ // in case somebody turned off public access to sys channel content using permissions
+ // make that content unsearchable by ensuring the owner_xchan can't match
+ if(! perm_is_allowed($sysid,$observer_hash,'view_stream'))
+ $sysid = 0;
+
+ $r = q("SELECT * from item
+ WHERE mid = '%s'
+ AND (((( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = ''
+ AND `item`.`deny_gid` = '' AND item_private = 0 )
+ and owner_xchan in ( " . stream_perms_xchans(($observer_hash) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
+ OR uid = %d )
+ $sql_extra )
+ $item_normal
+ $simple_update
+ limit 1",
+ dbesc($target_item['parent_mid']),
+ intval($sysid)
+ );
+ }
+ $_SESSION['loadtime'] = datetime_convert();
+ }
+
+ else {
+ $r = array();
}
if($r) {