Merge remote-tracking branch 'upstream/2020.06-rc' into valid-feed

This commit is contained in:
Michael 2020-07-11 18:57:17 +00:00
commit e5a336ff77
7 changed files with 31 additions and 11 deletions

View File

@ -79,7 +79,7 @@ function salmon_post(App $a, $xml = '') {
// stash away some other stuff for later
$type = $base->data[0]->attributes()->type[0];
$keyhash = $base->sig[0]->attributes()->keyhash[0];
$keyhash = $base->sig[0]->attributes()->keyhash[0] ?? '';
$encoding = $base->encoding;
$alg = $base->alg;

View File

@ -187,7 +187,7 @@ class Nav
'name' => $a->user['username'],
];
} else {
DI::logger()->warning('Empty $a->user for local user'. ['local_user' => local_user(), '$a' => $a]);
DI::logger()->warning('Empty $a->user for local user', ['local_user' => local_user(), '$a' => $a]);
}
}
@ -256,7 +256,7 @@ class Nav
}
// The following nav links are only show to logged in users
if (local_user()) {
if (local_user() && !empty($a->user)) {
$nav['network'] = ['network', DI::l10n()->t('Network'), '', DI::l10n()->t('Conversations from your friends')];
$nav['home'] = ['profile/' . $a->user['nickname'], DI::l10n()->t('Home'), '', DI::l10n()->t('Your posts and conversations')];

View File

@ -1077,7 +1077,6 @@ class Contact
}
if (DBA::isResult($r)) {
$authoritativeResult = true;
// If there is more than one entry we filter out the connector networks
if (count($r) > 1) {
foreach ($r as $id => $result) {
@ -1088,7 +1087,10 @@ class Contact
}
$profile = array_shift($r);
}
if (!empty($profile)) {
$authoritativeResult = true;
// "bd" always contains the upcoming birthday of a contact.
// "birthday" might contain the birthday including the year of birth.
if ($profile["birthday"] > DBA::NULL_DATE) {

View File

@ -59,7 +59,7 @@ class Fetch extends BaseModule
if (empty($item)) {
$condition = ['guid' => $guid, 'network' => [Protocol::DFRN, Protocol::DIASPORA]];
$item = Item::selectFirst(['author-link'], $condition);
if (empty($item)) {
if (!empty($item["author-link"])) {
$parts = parse_url($item["author-link"]);
if (empty($parts["scheme"]) || empty($parts["host"])) {
throw new HTTPException\InternalServerErrorException();

View File

@ -57,7 +57,7 @@ class Objects extends BaseModule
['order' => ['origin' => true]]
);
// Valid items are original post or posted from this node (including in the case of a forum)
if (!DBA::isResult($item) || !$item['origin'] && !strstr($item['author-link'], DI::baseUrl()->get())) {
if (!DBA::isResult($item) || !$item['origin'] && (parse_url($item['author-link'], PHP_URL_HOST) != parse_url(DI::baseUrl()->get(), PHP_URL_HOST))) {
throw new HTTPException\NotFoundException();
}

View File

@ -79,6 +79,11 @@ class Acl extends BaseModule
$contacts = [];
foreach ($r as $g) {
if (empty($g['name'])) {
DI::logger()->warning('Wrong result item from Search::searchGlobalContact', ['$g' => $g, '$search' => $search, '$mode' => $mode, '$page' => $page]);
continue;
}
$contacts[] = [
'photo' => ProxyUtils::proxifyUrl($g['photo'], false, ProxyUtils::SIZE_MICRO),
'name' => htmlspecialchars($g['name']),

View File

@ -834,7 +834,7 @@ class Transmitter
}
}
$data = ActivityPub\Transmitter::createActivityFromItem($item_id);
$data = self::createActivityFromItem($item_id);
DI::cache()->set($cachekey, $data, Duration::QUARTER_HOUR);
return $data;
@ -873,8 +873,21 @@ class Transmitter
$conversation = DBA::selectFirst('conversation', ['source'], $condition);
if (DBA::isResult($conversation)) {
$data = json_decode($conversation['source'], true);
if (!empty($data)) {
return $data;
if (!empty($data['type'])) {
if (in_array($data['type'], ['Create', 'Update'])) {
if ($object_mode) {
unset($data['@context']);
unset($data['signature']);
}
return $data;
} elseif (in_array('as:' . $data['type'], Receiver::CONTENT_TYPES)) {
if (!empty($data['@context'])) {
$context = $data['@context'];
unset($data['@context']);
}
unset($data['actor']);
$object = $data;
}
}
}
@ -882,7 +895,7 @@ class Transmitter
}
if (!$object_mode) {
$data = ['@context' => ActivityPub::CONTEXT];
$data = ['@context' => $context ?? ActivityPub::CONTEXT];
if ($item['deleted'] && ($item['gravity'] == GRAVITY_ACTIVITY)) {
$type = 'Undo';
@ -909,7 +922,7 @@ class Transmitter
$data = array_merge($data, self::createPermissionBlockForItem($item, false));
if (in_array($data['type'], ['Create', 'Update', 'Delete'])) {
$data['object'] = self::createNote($item);
$data['object'] = $object ?? self::createNote($item);
} elseif ($data['type'] == 'Add') {
$data = self::createAddTag($item, $data);
} elseif ($data['type'] == 'Announce') {