mirror of
https://framagit.org/hubzilla/core.git
synced 2026-06-21 00:52:33 -04:00
remove reply_message_request(), implement force_refresh and minor fixes
This commit is contained in:
@@ -45,7 +45,7 @@ class Onepoll {
|
||||
return;
|
||||
}
|
||||
|
||||
$contact = array_shift($contacts);
|
||||
$contact = $contacts[0];
|
||||
$importer_uid = $contact['abook_channel'];
|
||||
|
||||
$r = q("SELECT * from channel left join xchan on channel_hash = xchan_hash where channel_id = %d limit 1",
|
||||
@@ -106,21 +106,20 @@ class Onepoll {
|
||||
return;
|
||||
|
||||
$fetch_feed = true;
|
||||
$x = null;
|
||||
|
||||
// They haven't given us permission to see their stream
|
||||
|
||||
$can_view_stream = intval(get_abconfig($importer_uid, $contact['abook_xchan'], 'their_perms', 'view_stream'));
|
||||
|
||||
if (!$can_view_stream)
|
||||
if (!$can_view_stream) {
|
||||
$fetch_feed = false;
|
||||
}
|
||||
|
||||
// we haven't given them permission to send us their stream
|
||||
|
||||
$can_send_stream = intval(get_abconfig($importer_uid, $contact['abook_xchan'], 'my_perms', 'send_stream'));
|
||||
|
||||
if (!$can_send_stream)
|
||||
if (!$can_send_stream) {
|
||||
$fetch_feed = false;
|
||||
}
|
||||
|
||||
if ($fetch_feed) {
|
||||
|
||||
@@ -129,8 +128,8 @@ class Onepoll {
|
||||
if (intval($max)) {
|
||||
$cl = get_xconfig($contact['abook_xchan'], 'activitypub', 'collections');
|
||||
|
||||
if (is_array($cl) && $cl) {
|
||||
$url = ((array_key_exists('outbox', $cl)) ? $cl['outbox'] : '');
|
||||
if (is_array($cl) && array_key_exists('outbox', $cl)) {
|
||||
$url = $cl['outbox'];
|
||||
}
|
||||
else {
|
||||
$url = str_replace('/poco/', '/zotfeed/', $contact['xchan_connurl']);
|
||||
@@ -160,8 +159,10 @@ class Onepoll {
|
||||
// update the poco details for this connection
|
||||
$r = q("SELECT xlink_id from xlink where xlink_xchan = '%s' and xlink_updated > %s - INTERVAL %s and xlink_static = 0 limit 1",
|
||||
intval($contact['xchan_hash']),
|
||||
db_utcnow(), db_quoteinterval('1 DAY')
|
||||
db_utcnow(),
|
||||
db_quoteinterval('1 DAY')
|
||||
);
|
||||
|
||||
if (!$r) {
|
||||
poco_load($contact['xchan_hash'], $contact['xchan_connurl']);
|
||||
}
|
||||
|
||||
@@ -4,15 +4,13 @@ namespace Zotlabs\Zot6;
|
||||
|
||||
interface IHandler {
|
||||
|
||||
function Notify($data,$hub);
|
||||
function Notify($data, $hub);
|
||||
|
||||
function Request($data,$hub);
|
||||
function Rekey($sender, $data, $hub);
|
||||
|
||||
function Rekey($sender,$data,$hub);
|
||||
function Refresh($sender, $recipients, $hub, $force);
|
||||
|
||||
function Refresh($sender,$recipients,$hub);
|
||||
|
||||
function Purge($sender,$recipients,$hub);
|
||||
function Purge($sender, $recipients, $hub);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@ use Zotlabs\Lib\Crypto;
|
||||
use Zotlabs\Lib\Libzot;
|
||||
use Zotlabs\Web\HTTPSig;
|
||||
|
||||
|
||||
class Receiver {
|
||||
|
||||
protected $data;
|
||||
@@ -174,21 +173,20 @@ class Receiver {
|
||||
function Dispatch() {
|
||||
|
||||
switch ($this->messagetype) {
|
||||
|
||||
case 'request':
|
||||
$this->response = $this->handler->Request($this->data,$this->hub);
|
||||
break;
|
||||
|
||||
case 'purge':
|
||||
$this->response = $this->handler->Purge($this->sender,$this->recipients,$this->hub);
|
||||
$this->response = $this->handler->Purge($this->sender, $this->recipients, $this->hub);
|
||||
break;
|
||||
|
||||
case 'refresh':
|
||||
$this->response = $this->handler->Refresh($this->sender,$this->recipients,$this->hub);
|
||||
$this->response = $this->handler->Refresh($this->sender, $this->recipients, $this->hub, false);
|
||||
break;
|
||||
|
||||
case 'force_refresh':
|
||||
$this->response = $this->handler->Refresh($this->sender, $this->recipients, $this->hub, true);
|
||||
break;
|
||||
|
||||
case 'rekey':
|
||||
$this->response = $this->handler->Rekey($this->sender, $this->data,$this->hub);
|
||||
$this->response = $this->handler->Rekey($this->sender, $this->data, $this->hub);
|
||||
break;
|
||||
|
||||
case 'activity':
|
||||
@@ -196,7 +194,7 @@ class Receiver {
|
||||
case 'sync':
|
||||
default:
|
||||
if ($this->sender) {
|
||||
$this->response = $this->handler->Notify($this->data,$this->hub);
|
||||
$this->response = $this->handler->Notify($this->data, $this->hub);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -7,24 +7,20 @@ use Zotlabs\Lib\Queue;
|
||||
|
||||
class Zot6Handler implements IHandler {
|
||||
|
||||
function Notify($data,$hub) {
|
||||
return self::reply_notify($data,$hub);
|
||||
function Notify($data, $hub) {
|
||||
return self::reply_notify($data, $hub);
|
||||
}
|
||||
|
||||
function Request($data,$hub) {
|
||||
return self::reply_message_request($data,$hub);
|
||||
function Rekey($sender, $data, $hub) {
|
||||
return self::reply_rekey_request($sender, $data, $hub);
|
||||
}
|
||||
|
||||
function Rekey($sender,$data,$hub) {
|
||||
return self::reply_rekey_request($sender,$data,$hub);
|
||||
function Refresh($sender, $recipients, $hub, $force) {
|
||||
return self::reply_refresh($sender, $recipients, $hub, $force);
|
||||
}
|
||||
|
||||
function Refresh($sender,$recipients,$hub) {
|
||||
return self::reply_refresh($sender,$recipients,$hub);
|
||||
}
|
||||
|
||||
function Purge($sender,$recipients,$hub) {
|
||||
return self::reply_purge($sender,$recipients,$hub);
|
||||
function Purge($sender, $recipients, $hub) {
|
||||
return self::reply_purge($sender, $recipients, $hub);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +34,7 @@ class Zot6Handler implements IHandler {
|
||||
|
||||
logger('notify received from ' . $hub['hubloc_url']);
|
||||
|
||||
$x = Libzot::fetch($data);
|
||||
$x = Libzot::fetch($data, $hub);
|
||||
$ret['delivery_report'] = $x;
|
||||
|
||||
|
||||
@@ -62,7 +58,7 @@ class Zot6Handler implements IHandler {
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
static function reply_refresh($sender, $recipients, $hub) {
|
||||
static function reply_refresh($sender, $recipients, $hub, $force) {
|
||||
$ret = array('success' => false);
|
||||
|
||||
if($recipients) {
|
||||
@@ -76,86 +72,19 @@ class Zot6Handler implements IHandler {
|
||||
dbesc($recip)
|
||||
);
|
||||
/// @FIXME $msgtype is undefined
|
||||
$x = Libzot::refresh( [ 'hubloc_id_url' => $hub['hubloc_id_url'] ], $r[0], (($msgtype === 'force_refresh') ? true : false));
|
||||
$x = Libzot::refresh([ 'hubloc_id_url' => $hub['hubloc_id_url']], $r[0], $force));
|
||||
}
|
||||
}
|
||||
else {
|
||||
// system wide refresh
|
||||
/// @FIXME $msgtype is undefined
|
||||
$x = Libzot::refresh( [ 'hubloc_id_url' => $hub['hubloc_id_url'] ], null, (($msgtype === 'force_refresh') ? true : false));
|
||||
$x = Libzot::refresh(['hubloc_id_url' => $hub['hubloc_id_url']], null, $force);
|
||||
}
|
||||
|
||||
$ret['success'] = true;
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Process a message request.
|
||||
*
|
||||
* If a site receives a comment to a post but finds they have no parent to attach it with, they
|
||||
* may send a 'request' packet containing the message_id of the missing parent. This is the handler
|
||||
* for that packet. We will create a message_list array of the entire conversation starting with
|
||||
* the missing parent and invoke delivery to the sender of the packet.
|
||||
*
|
||||
* Zotlabs/Daemon/Deliver.php (for local delivery) and
|
||||
* mod/post.php???? @fixme (for web delivery) detect the existence of
|
||||
* this 'message_list' at the destination and split it into individual messages which are
|
||||
* processed/delivered in order.
|
||||
*
|
||||
* @param array $data
|
||||
* @param array $hub
|
||||
* @return array
|
||||
*/
|
||||
static function reply_message_request($data, $hub) {
|
||||
$ret = [ 'success' => false ];
|
||||
|
||||
$message_id = EMPTY_STR;
|
||||
|
||||
if(array_key_exists('data',$data))
|
||||
$ptr = $data['data'];
|
||||
if(is_array($ptr) && array_key_exists(0,$ptr)) {
|
||||
$ptr = $ptr[0];
|
||||
}
|
||||
if(is_string($ptr)) {
|
||||
$message_id = $ptr;
|
||||
}
|
||||
if(is_array($ptr) && array_key_exists('id',$ptr)) {
|
||||
$message_id = $ptr['id'];
|
||||
}
|
||||
|
||||
if (! $message_id) {
|
||||
$ret['message'] = 'no message_id';
|
||||
logger('no message_id');
|
||||
return $ret;
|
||||
}
|
||||
|
||||
$sender = $hub['hubloc_hash'];
|
||||
|
||||
/*
|
||||
* Find the local channel in charge of this post (the first and only recipient of the request packet)
|
||||
*/
|
||||
|
||||
$arr = $data['recipients'][0];
|
||||
|
||||
$c = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_hash = '%s' limit 1",
|
||||
dbesc($arr['portable_id'])
|
||||
);
|
||||
if (! $c) {
|
||||
logger('recipient channel not found.');
|
||||
$ret['message'] .= 'recipient not found.' . EOL;
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* fetch the requested conversation
|
||||
*/
|
||||
$messages = zot_feed($c[0]['channel_id'], $sender, [ 'message_id' => $data['message_id'], 'encoding' => 'activitystreams' ]);
|
||||
|
||||
return (($messages) ? : [] );
|
||||
}
|
||||
|
||||
static function rekey_request($sender,$data,$hub) {
|
||||
|
||||
$ret = array('success' => false);
|
||||
|
||||
Reference in New Issue
Block a user