Commit 46b8db53 authored by Mario's avatar Mario
Browse files

provide a get_cached_actor_provider hook and improve the author/owner handling in Libzot::import()

parent 0b716b3c
......@@ -3548,7 +3548,21 @@ class Activity {
}
static function get_cached_actor($id) {
return (XConfig::Get($id,'system','actor_record'));
$actor = XConfig::Get($id,'system', 'actor_record');
if ($actor) {
return $actor;
}
// try other get_cached_actor providers (e.g. diaspora)
$hookdata = [
'id' => $id,
'actor' => false
];
call_hooks('get_cached_actor_provider', $hookdata);
return $hookdata['actor'];
}
static function get_actor_hublocs($url, $options = 'all') {
......
......@@ -1200,31 +1200,41 @@ class Libzot {
if (in_array($env['type'], ['activity', 'response'])) {
$r = q("select hubloc_hash, hubloc_network from hubloc where hubloc_id_url = '%s' ",
if(!isset($AS->actor['id'])) {
logger('No actor id!');
return;
}
$r = q("select hubloc_hash, hubloc_network, hubloc_url from hubloc where hubloc_id_url = '%s'",
dbesc($AS->actor['id'])
);
if ($r) {
// selects a zot6 hash if available, otherwise use whatever we have
$r = self::zot_record_preferred($r);
$r = self::zot_record_preferred($r);
$arr['author_xchan'] = $r['hubloc_hash'];
}
if (!$arr['author_xchan']) {
if (! $arr['author_xchan']) {
logger('No author!');
return;
}
$s = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($env['sender'])
);
$arr['owner_xchan'] = $env['sender'];
// in individual delivery, change owner if needed
if ($s) {
$arr['owner_xchan'] = $s[0]['hubloc_hash'];
if(filter_var($env['sender'], FILTER_VALIDATE_URL))
// in individual delivery, change owner if needed
$s = q("select hubloc_hash, hubloc_url from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($env['sender'])
);
if ($s) {
$arr['owner_xchan'] = $s[0]['hubloc_hash'];
}
}
else {
$arr['owner_xchan'] = $env['sender'];
if (! $arr['owner_xchan']) {
logger('No owner!');
return;
}
if ($private && (!intval($arr['item_private']))) {
......@@ -1714,7 +1724,7 @@ class Libzot {
}
}
$ab = q("select * from abook where abook_channel = %d and abook_xchan = '%s'",
$ab = q("select * from abook where abook_channel = %d and abook_xchan = '%s'",
intval($channel['channel_id']),
dbesc($arr['owner_xchan'])
);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment