From 6f72bc8d3a9d82f4762ff77fd008d7a9866ba07f Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 6 May 2016 11:04:21 +0200 Subject: [PATCH] Better implementation of "hidewall" --- include/dfrn.php | 4 ++-- mod/dfrn_poll.php | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/include/dfrn.php b/include/dfrn.php index f1b325b571..5778d4ba5f 100644 --- a/include/dfrn.php +++ b/include/dfrn.php @@ -71,7 +71,7 @@ class dfrn { * * @return string DFRN feed entries */ - public static function feed($dfrn_id, $owner_nick, $last_update, $direction = 0) { + public static function feed($dfrn_id, $owner_nick, $last_update, $direction = 0, $onlyheader = false) { $a = get_app(); @@ -234,7 +234,7 @@ class dfrn { // This hook can't work anymore // call_hooks('atom_feed', $atom); - if(! count($items)) { + if (!count($items) OR $onlyheader) { $atom = trim($doc->saveXML()); call_hooks('atom_feed_end', $atom); diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php index ab6637607e..9613229dab 100644 --- a/mod/dfrn_poll.php +++ b/mod/dfrn_poll.php @@ -25,6 +25,8 @@ function dfrn_poll_init(&$a) { $dfrn_id = substr($dfrn_id,2); } + $hidewall = false; + if(($dfrn_id === '') && (! x($_POST,'dfrn_id'))) { if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) { http_status_exit(403); @@ -35,16 +37,17 @@ function dfrn_poll_init(&$a) { $r = q("SELECT `hidewall`,`nickname` FROM `user` WHERE `user`.`nickname` = '%s' LIMIT 1", dbesc($a->argv[1]) ); - if(! $r) + if (!$r) http_status_exit(404); - if(($r[0]['hidewall']) && (! local_user())) - http_status_exit(403); + + $hidewall = ($r[0]['hidewall'] && !local_user()); + $user = $r[0]['nickname']; } logger('dfrn_poll: public feed request from ' . $_SERVER['REMOTE_ADDR'] . ' for ' . $user); header("Content-type: application/atom+xml"); - echo dfrn::feed('', $user,$last_update); + echo dfrn::feed('', $user,$last_update, 0, $hidewall); killme(); }