]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/ActivityPub/Receiver.php
Readded empty line
[friendica.git] / src / Protocol / ActivityPub / Receiver.php
index f23269615e566836ace45a78425d5474c7ba7c73..685f3a85e2b13e1bc2af97c09cfb1f0ea4515ae9 100644 (file)
@@ -5,6 +5,8 @@
 namespace Friendica\Protocol\ActivityPub;
 
 use Friendica\Database\DBA;
+use Friendica\Content\Text\HTML;
+use Friendica\Content\Text\Markdown;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Model\Contact;
@@ -12,6 +14,7 @@ use Friendica\Model\APContact;
 use Friendica\Model\Conversation;
 use Friendica\Model\Item;
 use Friendica\Model\User;
+use Friendica\Protocol\Activity;
 use Friendica\Protocol\ActivityPub;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\HTTPSignature;
@@ -400,26 +403,26 @@ class Receiver
                                                $announce_object_data['object_id'] = $object_data['object_id'];
                                                $announce_object_data['object_type'] = $object_data['object_type'];
 
-                                               ActivityPub\Processor::createActivity($announce_object_data, ACTIVITY2_ANNOUNCE);
+                                               ActivityPub\Processor::createActivity($announce_object_data, Activity::ANNOUNCE);
                                        }
                                }
                                break;
 
                        case 'as:Like':
                                if (in_array($object_data['object_type'], self::CONTENT_TYPES)) {
-                                       ActivityPub\Processor::createActivity($object_data, ACTIVITY_LIKE);
+                                       ActivityPub\Processor::createActivity($object_data, Activity::LIKE);
                                }
                                break;
 
                        case 'as:Dislike':
                                if (in_array($object_data['object_type'], self::CONTENT_TYPES)) {
-                                       ActivityPub\Processor::createActivity($object_data, ACTIVITY_DISLIKE);
+                                       ActivityPub\Processor::createActivity($object_data, Activity::DISLIKE);
                                }
                                break;
 
                        case 'as:TentativeAccept':
                                if (in_array($object_data['object_type'], self::CONTENT_TYPES)) {
-                                       ActivityPub\Processor::createActivity($object_data, ACTIVITY_ATTENDMAYBE);
+                                       ActivityPub\Processor::createActivity($object_data, Activity::ATTENDMAYBE);
                                }
                                break;
 
@@ -444,7 +447,7 @@ class Receiver
                                        ActivityPub\Processor::followUser($object_data);
                                } elseif (in_array($object_data['object_type'], self::CONTENT_TYPES)) {
                                        $object_data['reply-to-id'] = $object_data['object_id'];
-                                       ActivityPub\Processor::createActivity($object_data, ACTIVITY_FOLLOW);
+                                       ActivityPub\Processor::createActivity($object_data, Activity::FOLLOW);
                                }
                                break;
 
@@ -452,7 +455,7 @@ class Receiver
                                if ($object_data['object_type'] == 'as:Follow') {
                                        ActivityPub\Processor::acceptFollowUser($object_data);
                                } elseif (in_array($object_data['object_type'], self::CONTENT_TYPES)) {
-                                       ActivityPub\Processor::createActivity($object_data, ACTIVITY_ATTEND);
+                                       ActivityPub\Processor::createActivity($object_data, Activity::ATTEND);
                                }
                                break;
 
@@ -460,7 +463,7 @@ class Receiver
                                if ($object_data['object_type'] == 'as:Follow') {
                                        ActivityPub\Processor::rejectFollowUser($object_data);
                                } elseif (in_array($object_data['object_type'], self::CONTENT_TYPES)) {
-                                       ActivityPub\Processor::createActivity($object_data, ACTIVITY_ATTENDNO);
+                                       ActivityPub\Processor::createActivity($object_data, Activity::ATTENDNO);
                                }
                                break;
 
@@ -873,6 +876,52 @@ class Receiver
                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
         *
@@ -923,8 +972,7 @@ class Receiver
                $object_data['name'] = JsonLD::fetchElement($object, 'as:name', '@value');
                $object_data['summary'] = JsonLD::fetchElement($object, 'as:summary', '@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['source'] = JsonLD::fetchElement($object_data, 'source', '@value');
+               $object_data = self::getSource($object, $object_data);
                $object_data['start-time'] = JsonLD::fetchElement($object, 'as:startTime', '@value');
                $object_data['end-time'] = JsonLD::fetchElement($object, 'as:endTime', '@value');
                $object_data['location'] = JsonLD::fetchElement($object, 'as:location', 'as:name', '@type', 'as:Place');