AP: Read different content types for the source and the content
This commit is contained in:
parent
ff1e70a7ec
commit
fa57fead2e
1 changed files with 49 additions and 2 deletions
|
@ -5,6 +5,8 @@
|
||||||
namespace Friendica\Protocol\ActivityPub;
|
namespace Friendica\Protocol\ActivityPub;
|
||||||
|
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
|
use Friendica\Content\Text\HTML;
|
||||||
|
use Friendica\Content\Text\Markdown;
|
||||||
use Friendica\Core\Logger;
|
use Friendica\Core\Logger;
|
||||||
use Friendica\Core\Protocol;
|
use Friendica\Core\Protocol;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
|
@ -874,6 +876,52 @@ class Receiver
|
||||||
return $attachlist;
|
return $attachlist;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch the original source or content with the "language" Markdown or HTML
|
||||||
|
*
|
||||||
|
* @param array $object
|
||||||
|
* @param array $object_data
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
* @throws \Exception
|
||||||
|
*/
|
||||||
|
private static function getSource($object, $object_data)
|
||||||
|
{
|
||||||
|
$object_data['source'] = JsonLD::fetchElement($object, 'as:source', 'as:content', 'as:mediaType', 'text/bbcode');
|
||||||
|
$object_data['source'] = JsonLD::fetchElement($object_data, 'source', '@value');
|
||||||
|
if (!empty($object_data['source'])) {
|
||||||
|
return $object_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
$object_data['source'] = JsonLD::fetchElement($object, 'as:source', 'as:content', 'as:mediaType', 'text/markdown');
|
||||||
|
$object_data['source'] = JsonLD::fetchElement($object_data, 'source', '@value');
|
||||||
|
if (!empty($object_data['source'])) {
|
||||||
|
$object_data['source'] = Markdown::toBBCode($object_data['source']);
|
||||||
|
return $object_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
$object_data['source'] = JsonLD::fetchElement($object, 'as:source', 'as:content', 'as:mediaType', 'text/html');
|
||||||
|
$object_data['source'] = JsonLD::fetchElement($object_data, 'source', '@value');
|
||||||
|
if (!empty($object_data['source'])) {
|
||||||
|
$object_data['source'] = HTML::toBBCode($object_data['source']);
|
||||||
|
return $object_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
$markdown = JsonLD::fetchElement($object, 'as:content', '@value', '@language', 'text/markdown');
|
||||||
|
if (!empty($markdown)) {
|
||||||
|
$object_data['source'] = Markdown::toBBCode($markdown);
|
||||||
|
return $object_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
$html = JsonLD::fetchElement($object, 'as:content', '@value', '@language', 'text/html');
|
||||||
|
if (!empty($html)) {
|
||||||
|
$object_data['source'] = HTML::toBBCode($markdown);
|
||||||
|
return $object_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $object_data;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches data from the object part of an activity
|
* Fetches data from the object part of an activity
|
||||||
*
|
*
|
||||||
|
@ -924,8 +972,7 @@ class Receiver
|
||||||
$object_data['name'] = JsonLD::fetchElement($object, 'as:name', '@value');
|
$object_data['name'] = JsonLD::fetchElement($object, 'as:name', '@value');
|
||||||
$object_data['summary'] = JsonLD::fetchElement($object, 'as:summary', '@value');
|
$object_data['summary'] = JsonLD::fetchElement($object, 'as:summary', '@value');
|
||||||
$object_data['content'] = JsonLD::fetchElement($object, 'as:content', '@value');
|
$object_data['content'] = JsonLD::fetchElement($object, 'as:content', '@value');
|
||||||
$object_data['source'] = JsonLD::fetchElement($object, 'as:source', 'as:content', 'as:mediaType', 'text/bbcode');
|
$object_data = self::getSource($object, $object_data);
|
||||||
$object_data['source'] = JsonLD::fetchElement($object_data, 'source', '@value');
|
|
||||||
$object_data['start-time'] = JsonLD::fetchElement($object, 'as:startTime', '@value');
|
$object_data['start-time'] = JsonLD::fetchElement($object, 'as:startTime', '@value');
|
||||||
$object_data['end-time'] = JsonLD::fetchElement($object, 'as:endTime', '@value');
|
$object_data['end-time'] = JsonLD::fetchElement($object, 'as:endTime', '@value');
|
||||||
$object_data['location'] = JsonLD::fetchElement($object, 'as:location', 'as:name', '@type', 'as:Place');
|
$object_data['location'] = JsonLD::fetchElement($object, 'as:location', 'as:name', '@type', 'as:Place');
|
||||||
|
|
Loading…
Reference in a new issue