Added some doxygen headers

This commit is contained in:
Michael 2018-09-26 21:38:37 +00:00
parent dd38b7e329
commit f7d7d94111

View File

@ -83,12 +83,25 @@ class ActivityPub
'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers', 'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers',
'sensitive' => 'as:sensitive', 'Hashtag' => 'as:Hashtag']]; 'sensitive' => 'as:sensitive', 'Hashtag' => 'as:Hashtag']];
/**
* @brief Checks if the web request is done for the AP protocol
*
* @return is it AP?
*/
public static function isRequest() public static function isRequest()
{ {
return stristr(defaults($_SERVER, 'HTTP_ACCEPT', ''), 'application/activity+json') || return stristr(defaults($_SERVER, 'HTTP_ACCEPT', ''), 'application/activity+json') ||
stristr(defaults($_SERVER, 'HTTP_ACCEPT', ''), 'application/ld+json'); stristr(defaults($_SERVER, 'HTTP_ACCEPT', ''), 'application/ld+json');
} }
/**
* @brief collects the lost of followers of the given owner
*
* @param array $owner Owner array
* @param integer $page Page number
*
* @return array of owners
*/
public static function getFollowers($owner, $page = null) public static function getFollowers($owner, $page = null)
{ {
$condition = ['rel' => [Contact::FOLLOWER, Contact::FRIEND], 'network' => Protocol::NATIVE_SUPPORT, 'uid' => $owner['uid'], $condition = ['rel' => [Contact::FOLLOWER, Contact::FRIEND], 'network' => Protocol::NATIVE_SUPPORT, 'uid' => $owner['uid'],
@ -128,6 +141,14 @@ class ActivityPub
return $data; return $data;
} }
/**
* @brief Create list of following contacts
*
* @param array $owner Owner array
* @param integer $page Page numbe
*
* @return array of following contacts
*/
public static function getFollowing($owner, $page = null) public static function getFollowing($owner, $page = null)
{ {
$condition = ['rel' => [Contact::SHARING, Contact::FRIEND], 'network' => Protocol::NATIVE_SUPPORT, 'uid' => $owner['uid'], $condition = ['rel' => [Contact::SHARING, Contact::FRIEND], 'network' => Protocol::NATIVE_SUPPORT, 'uid' => $owner['uid'],
@ -167,6 +188,14 @@ class ActivityPub
return $data; return $data;
} }
/**
* @brief Public posts for the given owner
*
* @param array $owner Owner array
* @param integer $page Page numbe
*
* @return array of posts
*/
public static function getOutbox($owner, $page = null) public static function getOutbox($owner, $page = null)
{ {
$public_contact = Contact::getIdForURL($owner['url'], 0, true); $public_contact = Contact::getIdForURL($owner['url'], 0, true);
@ -211,7 +240,7 @@ class ActivityPub
* Return the ActivityPub profile of the given user * Return the ActivityPub profile of the given user
* *
* @param integer $uid User ID * @param integer $uid User ID
* @return array * @return profile array
*/ */
public static function profile($uid) public static function profile($uid)
{ {
@ -262,6 +291,13 @@ class ActivityPub
return $data; return $data;
} }
/**
* @brief Returns an array with permissions of a given item array
*
* @param array $item
*
* @return array with permissions
*/
private static function fetchPermissionBlockFromConversation($item) private static function fetchPermissionBlockFromConversation($item)
{ {
if (empty($item['thr-parent'])) { if (empty($item['thr-parent'])) {
@ -309,6 +345,13 @@ class ActivityPub
return $permissions; return $permissions;
} }
/**
* @brief
*
* @param array $item
*
* @return
*/
public static function createPermissionBlockForItem($item) public static function createPermissionBlockForItem($item)
{ {
$data = ['to' => [], 'cc' => []]; $data = ['to' => [], 'cc' => []];
@ -396,6 +439,14 @@ class ActivityPub
return $data; return $data;
} }
/**
* @brief
*
* @param array $item
* @param $uid
*
* @return
*/
public static function fetchTargetInboxes($item, $uid) public static function fetchTargetInboxes($item, $uid)
{ {
$permissions = self::createPermissionBlockForItem($item); $permissions = self::createPermissionBlockForItem($item);
@ -439,6 +490,13 @@ class ActivityPub
return $inboxes; return $inboxes;
} }
/**
* @brief
*
* @param array $item
*
* @return
*/
public static function getTypeOfItem($item) public static function getTypeOfItem($item)
{ {
if ($item['verb'] == ACTIVITY_POST) { if ($item['verb'] == ACTIVITY_POST) {
@ -464,6 +522,14 @@ class ActivityPub
return $type; return $type;
} }
/**
* @brief
*
* @param $item_id
* @param $object_mode
*
* @return
*/
public static function createActivityFromItem($item_id, $object_mode = false) public static function createActivityFromItem($item_id, $object_mode = false)
{ {
$item = Item::selectFirst([], ['id' => $item_id, 'parent-network' => Protocol::NATIVE_SUPPORT]); $item = Item::selectFirst([], ['id' => $item_id, 'parent-network' => Protocol::NATIVE_SUPPORT]);
@ -526,6 +592,13 @@ class ActivityPub
} }
} }
/**
* @brief
*
* @param $item_id
*
* @return
*/
public static function createObjectFromItemID($item_id) public static function createObjectFromItemID($item_id)
{ {
$item = Item::selectFirst([], ['id' => $item_id, 'parent-network' => Protocol::NATIVE_SUPPORT]); $item = Item::selectFirst([], ['id' => $item_id, 'parent-network' => Protocol::NATIVE_SUPPORT]);
@ -540,6 +613,13 @@ class ActivityPub
return $data; return $data;
} }
/**
* @brief
*
* @param array $item
*
* @return
*/
private static function createTagList($item) private static function createTagList($item)
{ {
$tags = []; $tags = [];
@ -560,6 +640,13 @@ class ActivityPub
return $tags; return $tags;
} }
/**
* @brief
*
* @param array $item
*
* @return
*/
private static function fetchContextURLForItem($item) private static function fetchContextURLForItem($item)
{ {
$conversation = DBA::selectFirst('conversation', ['conversation-href', 'conversation-uri'], ['item-uri' => $item['parent-uri']]); $conversation = DBA::selectFirst('conversation', ['conversation-href', 'conversation-uri'], ['item-uri' => $item['parent-uri']]);
@ -573,6 +660,13 @@ class ActivityPub
return $context_uri; return $context_uri;
} }
/**
* @brief
*
* @param array $item
*
* @return
*/
private static function CreateNote($item) private static function CreateNote($item)
{ {
if (!empty($item['title'])) { if (!empty($item['title'])) {
@ -627,6 +721,15 @@ class ActivityPub
return $data; return $data;
} }
/**
* @brief
*
* @param array $activity
* @param $target
* @param $uid
*
* @return
*/
public static function transmitActivity($activity, $target, $uid) public static function transmitActivity($activity, $target, $uid)
{ {
$profile = APContact::getProfileByURL($target); $profile = APContact::getProfileByURL($target);
@ -646,6 +749,15 @@ class ActivityPub
return HTTPSignature::transmit($signed, $profile['inbox'], $uid); return HTTPSignature::transmit($signed, $profile['inbox'], $uid);
} }
/**
* @brief
*
* @param $target
* @param $id
* @param $uid
*
* @return
*/
public static function transmitContactAccept($target, $id, $uid) public static function transmitContactAccept($target, $id, $uid)
{ {
$profile = APContact::getProfileByURL($target); $profile = APContact::getProfileByURL($target);
@ -666,6 +778,15 @@ class ActivityPub
return HTTPSignature::transmit($signed, $profile['inbox'], $uid); return HTTPSignature::transmit($signed, $profile['inbox'], $uid);
} }
/**
* @brief
*
* @param $target
* @param $id
* @param $uid
*
* @return
*/
public static function transmitContactReject($target, $id, $uid) public static function transmitContactReject($target, $id, $uid)
{ {
$profile = APContact::getProfileByURL($target); $profile = APContact::getProfileByURL($target);
@ -686,6 +807,14 @@ class ActivityPub
return HTTPSignature::transmit($signed, $profile['inbox'], $uid); return HTTPSignature::transmit($signed, $profile['inbox'], $uid);
} }
/**
* @brief
*
* @param $target
* @param $uid
*
* @return
*/
public static function transmitContactUndo($target, $uid) public static function transmitContactUndo($target, $uid)
{ {
$profile = APContact::getProfileByURL($target); $profile = APContact::getProfileByURL($target);
@ -764,6 +893,13 @@ class ActivityPub
return $profile; return $profile;
} }
/**
* @brief
*
* @param $body
* @param $header
* @param $uid
*/
public static function processInbox($body, $header, $uid) public static function processInbox($body, $header, $uid)
{ {
$http_signer = HTTPSignature::getSigner($body, $header); $http_signer = HTTPSignature::getSigner($body, $header);
@ -813,6 +949,12 @@ class ActivityPub
self::processActivity($activity, $body, $uid, $trust_source); self::processActivity($activity, $body, $uid, $trust_source);
} }
/**
* @brief
*
* @param $url
* @param $uid
*/
public static function fetchOutbox($url, $uid) public static function fetchOutbox($url, $uid)
{ {
$data = self::fetchContent($url); $data = self::fetchContent($url);
@ -836,6 +978,15 @@ class ActivityPub
} }
} }
/**
* @brief
*
* @param array $activity
* @param $uid
* @param $trust_source
*
* @return
*/
private static function prepareObjectData($activity, $uid, &$trust_source) private static function prepareObjectData($activity, $uid, &$trust_source)
{ {
$actor = JsonLD::fetchElement($activity, 'actor', 'id'); $actor = JsonLD::fetchElement($activity, 'actor', 'id');
@ -897,6 +1048,14 @@ class ActivityPub
return $object_data; return $object_data;
} }
/**
* @brief
*
* @param array $activity
* @param $body
* @param $uid
* @param $trust_source
*/
private static function processActivity($activity, $body = '', $uid = null, $trust_source = false) private static function processActivity($activity, $body = '', $uid = null, $trust_source = false)
{ {
if (empty($activity['type'])) { if (empty($activity['type'])) {
@ -973,6 +1132,14 @@ class ActivityPub
} }
} }
/**
* @brief
*
* @param array $activity
* @param $actor
*
* @return
*/
private static function getReceivers($activity, $actor) private static function getReceivers($activity, $actor)
{ {
$receivers = []; $receivers = [];
@ -1051,6 +1218,13 @@ class ActivityPub
return $receivers; return $receivers;
} }
/**
* @brief
*
* @param $cid
* @param $uid
* @param $url
*/
private static function switchContact($cid, $uid, $url) private static function switchContact($cid, $uid, $url)
{ {
$profile = ActivityPub::probeProfile($url); $profile = ActivityPub::probeProfile($url);
@ -1070,6 +1244,12 @@ class ActivityPub
Contact::updateAvatar($photo, $uid, $cid); Contact::updateAvatar($photo, $uid, $cid);
} }
/**
* @brief
*
* @param $receivers
* @param $actor
*/
private static function switchContacts($receivers, $actor) private static function switchContacts($receivers, $actor)
{ {
if (empty($actor)) { if (empty($actor)) {
@ -1089,6 +1269,14 @@ class ActivityPub
} }
} }
/**
* @brief
*
* @param $object_data
* @param array $activity
*
* @return
*/
private static function addActivityFields($object_data, $activity) private static function addActivityFields($object_data, $activity)
{ {
if (!empty($activity['published']) && empty($object_data['published'])) { if (!empty($activity['published']) && empty($object_data['published'])) {
@ -1109,6 +1297,15 @@ class ActivityPub
return $object_data; return $object_data;
} }
/**
* @brief
*
* @param $object_id
* @param $object
* @param $trust_source
*
* @return
*/
private static function fetchObject($object_id, $object = [], $trust_source = false) private static function fetchObject($object_id, $object = [], $trust_source = false)
{ {
if (!$trust_source || is_string($object)) { if (!$trust_source || is_string($object)) {
@ -1161,6 +1358,13 @@ class ActivityPub
} }
} }
/**
* @brief
*
* @param $object
*
* @return
*/
private static function ProcessObject(&$object) private static function ProcessObject(&$object)
{ {
if (empty($object['id'])) { if (empty($object['id'])) {
@ -1229,10 +1433,16 @@ class ActivityPub
// views, waitTranscoding, state, support, subtitleLanguage // views, waitTranscoding, state, support, subtitleLanguage
// likes, dislikes, shares, comments // likes, dislikes, shares, comments
return $object_data; return $object_data;
} }
/**
* @brief Converts mentions from Pleroma into the Friendica format
*
* @param string $body
*
* @return converted body
*/
private static function convertMentions($body) private static function convertMentions($body)
{ {
$URLSearchString = "^\[\]"; $URLSearchString = "^\[\]";
@ -1241,6 +1451,14 @@ class ActivityPub
return $body; return $body;
} }
/**
* @brief Constructs a string with tags for a given tag array
*
* @param array $tags
* @param boolean $sensitive
*
* @return string with tags
*/
private static function constructTagList($tags, $sensitive) private static function constructTagList($tags, $sensitive)
{ {
if (empty($tags)) { if (empty($tags)) {
@ -1263,6 +1481,14 @@ class ActivityPub
return $tag_text; return $tag_text;
} }
/**
* @brief
*
* @param $attachments
* @param array $item
*
* @return item array
*/
private static function constructAttachList($attachments, $item) private static function constructAttachList($attachments, $item)
{ {
if (empty($attachments)) { if (empty($attachments)) {
@ -1289,6 +1515,12 @@ class ActivityPub
return $item; return $item;
} }
/**
* @brief
*
* @param array $activity
* @param $body
*/
private static function createItem($activity, $body) private static function createItem($activity, $body)
{ {
$item = []; $item = [];
@ -1311,6 +1543,12 @@ class ActivityPub
self::postItem($activity, $item, $body); self::postItem($activity, $item, $body);
} }
/**
* @brief
*
* @param array $activity
* @param $body
*/
private static function likeItem($activity, $body) private static function likeItem($activity, $body)
{ {
$item = []; $item = [];
@ -1322,6 +1560,12 @@ class ActivityPub
self::postItem($activity, $item, $body); self::postItem($activity, $item, $body);
} }
/**
* @brief
*
* @param array $activity
* @param $body
*/
private static function dislikeItem($activity, $body) private static function dislikeItem($activity, $body)
{ {
$item = []; $item = [];
@ -1333,6 +1577,13 @@ class ActivityPub
self::postItem($activity, $item, $body); self::postItem($activity, $item, $body);
} }
/**
* @brief
*
* @param array $activity
* @param array $item
* @param $body
*/
private static function postItem($activity, $item, $body) private static function postItem($activity, $item, $body)
{ {
/// @todo What to do with $activity['context']? /// @todo What to do with $activity['context']?
@ -1383,6 +1634,12 @@ class ActivityPub
} }
} }
/**
* @brief
*
* @param $url
* @param $child
*/
private static function fetchMissingActivity($url, $child) private static function fetchMissingActivity($url, $child)
{ {
if (Config::get('system', 'ostatus_full_threads')) { if (Config::get('system', 'ostatus_full_threads')) {
@ -1410,9 +1667,16 @@ class ActivityPub
logger('Activity ' . $url . ' had been fetched and processed.'); logger('Activity ' . $url . ' had been fetched and processed.');
} }
private static function getUserOfObject($object) /**
* @brief Returns the user id of a given profile url
*
* @param string $profile
*
* @return integer user id
*/
private static function getUserOfProfile($profile)
{ {
$self = DBA::selectFirst('contact', ['uid'], ['nurl' => normalise_link($object), 'self' => true]); $self = DBA::selectFirst('contact', ['uid'], ['nurl' => normalise_link($profile), 'self' => true]);
if (!DBA::isResult($self)) { if (!DBA::isResult($self)) {
return false; return false;
} else { } else {
@ -1420,10 +1684,15 @@ class ActivityPub
} }
} }
/**
* @brief perform a "follow" request
*
* @param array $activity
*/
private static function followUser($activity) private static function followUser($activity)
{ {
$actor = JsonLD::fetchElement($activity, 'object', 'id'); $actor = JsonLD::fetchElement($activity, 'object', 'id');
$uid = self::getUserOfObject($actor); $uid = self::getUserOfProfile($actor);
if (empty($uid)) { if (empty($uid)) {
return; return;
} }
@ -1455,6 +1724,11 @@ class ActivityPub
logger('Follow user ' . $uid . ' from contact ' . $cid . ' with id ' . $activity['id']); logger('Follow user ' . $uid . ' from contact ' . $cid . ' with id ' . $activity['id']);
} }
/**
* @brief Update the given profile
*
* @param array $activity
*/
private static function updatePerson($activity) private static function updatePerson($activity)
{ {
if (empty($activity['object']['id'])) { if (empty($activity['object']['id'])) {
@ -1465,10 +1739,15 @@ class ActivityPub
APContact::getProfileByURL($activity['object']['id'], true); APContact::getProfileByURL($activity['object']['id'], true);
} }
/**
* @brief Accept a follow request
*
* @param array $activity
*/
private static function acceptFollowUser($activity) private static function acceptFollowUser($activity)
{ {
$actor = JsonLD::fetchElement($activity, 'object', 'actor'); $actor = JsonLD::fetchElement($activity, 'object', 'actor');
$uid = self::getUserOfObject($actor); $uid = self::getUserOfProfile($actor);
if (empty($uid)) { if (empty($uid)) {
return; return;
} }
@ -1493,6 +1772,11 @@ class ActivityPub
logger('Accept contact request from contact ' . $cid . ' for user ' . $uid, LOGGER_DEBUG); logger('Accept contact request from contact ' . $cid . ' for user ' . $uid, LOGGER_DEBUG);
} }
/**
* @brief Undo activity like "like" or "dislike"
*
* @param array $activity
*/
private static function undoActivity($activity) private static function undoActivity($activity)
{ {
$activity_url = JsonLD::fetchElement($activity, 'object', 'id'); $activity_url = JsonLD::fetchElement($activity, 'object', 'id');
@ -1513,10 +1797,15 @@ class ActivityPub
Item::delete(['uri' => $activity_url, 'author-id' => $author_id, 'gravity' => GRAVITY_ACTIVITY]); Item::delete(['uri' => $activity_url, 'author-id' => $author_id, 'gravity' => GRAVITY_ACTIVITY]);
} }
/**
* @brief Activity to remove a follower
*
* @param array $activity
*/
private static function undoFollowUser($activity) private static function undoFollowUser($activity)
{ {
$object = JsonLD::fetchElement($activity, 'object', 'object'); $object = JsonLD::fetchElement($activity, 'object', 'object');
$uid = self::getUserOfObject($object); $uid = self::getUserOfProfile($object);
if (empty($uid)) { if (empty($uid)) {
return; return;
} }