X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fpubsub.php;h=f829eb4d98f8882a62dbc3a58637c5db5e8e6e83;hb=19ccd658ebcf13a7cc208a3e460e44d152dda32f;hp=760ffa9e9ff64c762dd17d6a8576c42bc220fd50;hpb=fbb01666906ba4f909dc9eac98aa3ca6a936b99e;p=friendica.git diff --git a/mod/pubsub.php b/mod/pubsub.php index 760ffa9e9f..f829eb4d98 100644 --- a/mod/pubsub.php +++ b/mod/pubsub.php @@ -39,7 +39,8 @@ function pubsub_init(&$a) { $hub_lease = ((x($_GET,'hub_lease_seconds')) ? notags(trim($_GET['hub_lease_seconds'])) : ''); $hub_verify = ((x($_GET,'hub_verify_token')) ? notags(trim($_GET['hub_verify_token'])) : ''); - logger('pubsub: Subscription from' . $_SERVER['REMOTE_ADDR'] . print_r($_GET,true)); + logger('pubsub: Subscription from ' . $_SERVER['REMOTE_ADDR']); + logger('pubsub: data: ' . print_r($_GET,true), LOGGER_DATA); $subscribe = (($hub_mode === 'subscribe') ? 1 : 0); @@ -54,7 +55,8 @@ function pubsub_init(&$a) { $sql_extra = ((strlen($hub_verify)) ? sprintf(" AND `hub-verify` = '%s' ", dbesc($hub_verify)) : ''); - $r = q("SELECT * FROM `contact` WHERE `poll` = '%s' AND `id` = %d AND `uid` = %d AND `blocked` = 0 $sql_extra LIMIT 1", + $r = q("SELECT * FROM `contact` WHERE `poll` = '%s' AND `id` = %d AND `uid` = %d + AND `blocked` = 0 AND `pending` = 0 $sql_extra LIMIT 1", dbesc($hub_topic), intval($contact_id), intval($owner['uid']) @@ -89,6 +91,11 @@ function pubsub_post(&$a) { logger('pubsub: user-agent: ' . $_SERVER['HTTP_USER_AGENT'] ); logger('pubsub: data: ' . $xml, LOGGER_DATA); + if(! stristr($xml,'argc > 1) ? notags(trim($a->argv[1])) : ''); $contact_id = (($a->argc > 2) ? intval($a->argv[2]) : 0 ); @@ -100,12 +107,18 @@ function pubsub_post(&$a) { $importer = $r[0]; - $r = q("SELECT * FROM `contact` WHERE `subhub` = 1 AND `id` = %d AND `uid` = %d AND `blocked` = 0 AND `readonly` = 0 LIMIT 1", + $r = q("SELECT * FROM `contact` WHERE `subhub` = 1 AND `id` = %d AND `uid` = %d + AND ( `rel` = %d OR `rel` = %d ) AND `blocked` = 0 AND `readonly` = 0 LIMIT 1", intval($contact_id), - intval($importer['uid']) + intval($importer['uid']), + intval(REL_FAN), + intval(REL_BUD) ); - if(! count($r)) + + if(! count($r)) { + logger('pubsub: no contact record - ignored'); hub_post_return(); + } $contact = $r[0]; @@ -113,7 +126,11 @@ function pubsub_post(&$a) { require_once('include/items.php'); - consume_feed($xml,$importer,$contact,$feedhub); + consume_feed($xml,$importer,$contact,$feedhub,1); + + // do it a second time so that any children find their parents. + + consume_feed($xml,$importer,$contact,$feedhub,1); hub_post_return();