Continued:
- added more type-hints - some methods in Diaspora returned void but integer was documented so I changed it to -1 to have a proper type-hint
This commit is contained in:
parent
0c9aff8a09
commit
605e7d55b3
|
@ -48,7 +48,7 @@ class APContact
|
||||||
* @param string $addr Address
|
* @param string $addr Address
|
||||||
* @return array webfinger data
|
* @return array webfinger data
|
||||||
*/
|
*/
|
||||||
private static function fetchWebfingerData(string $addr)
|
private static function fetchWebfingerData(string $addr): array
|
||||||
{
|
{
|
||||||
$addr_parts = explode('@', $addr);
|
$addr_parts = explode('@', $addr);
|
||||||
if (count($addr_parts) != 2) {
|
if (count($addr_parts) != 2) {
|
||||||
|
@ -117,7 +117,7 @@ class APContact
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function getByURL(string $url, $update = null)
|
public static function getByURL(string $url, $update = null): array
|
||||||
{
|
{
|
||||||
if (empty($url) || Network::isUrlBlocked($url)) {
|
if (empty($url) || Network::isUrlBlocked($url)) {
|
||||||
Logger::info('Domain is blocked', ['url' => $url]);
|
Logger::info('Domain is blocked', ['url' => $url]);
|
||||||
|
@ -527,7 +527,7 @@ class APContact
|
||||||
* @param string $url inbox url
|
* @param string $url inbox url
|
||||||
* @param boolean $shared Shared Inbox
|
* @param boolean $shared Shared Inbox
|
||||||
*/
|
*/
|
||||||
private static function unarchiveInbox($url, $shared)
|
private static function unarchiveInbox(string $url, bool $shared)
|
||||||
{
|
{
|
||||||
if (empty($url)) {
|
if (empty($url)) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -40,7 +40,7 @@ class FContact
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function getByURL($handle, $update = null)
|
public static function getByURL(string $handle, $update = null): array
|
||||||
{
|
{
|
||||||
$person = DBA::selectFirst('fcontact', [], ['network' => Protocol::DIASPORA, 'addr' => $handle]);
|
$person = DBA::selectFirst('fcontact', [], ['network' => Protocol::DIASPORA, 'addr' => $handle]);
|
||||||
if (!DBA::isResult($person)) {
|
if (!DBA::isResult($person)) {
|
||||||
|
@ -90,7 +90,7 @@ class FContact
|
||||||
* @param array $arr The fcontact data
|
* @param array $arr The fcontact data
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function updateFromProbeArray($arr)
|
public static function updateFromProbeArray(array $arr)
|
||||||
{
|
{
|
||||||
$uriid = ItemURI::insert(['uri' => $arr['url'], 'guid' => $arr['guid']]);
|
$uriid = ItemURI::insert(['uri' => $arr['url'], 'guid' => $arr['guid']]);
|
||||||
|
|
||||||
|
@ -122,12 +122,12 @@ class FContact
|
||||||
* get a url (scheme://domain.tld/u/user) from a given Diaspora*
|
* get a url (scheme://domain.tld/u/user) from a given Diaspora*
|
||||||
* fcontact guid
|
* fcontact guid
|
||||||
*
|
*
|
||||||
* @param mixed $fcontact_guid Hexadecimal string guid
|
* @param string $fcontact_guid Hexadecimal string guid
|
||||||
*
|
*
|
||||||
* @return string the contact url or null
|
* @return string|null the contact url or null
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function getUrlByGuid($fcontact_guid)
|
public static function getUrlByGuid(string $fcontact_guid)
|
||||||
{
|
{
|
||||||
Logger::info('fcontact', ['guid' => $fcontact_guid]);
|
Logger::info('fcontact', ['guid' => $fcontact_guid]);
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ class Diaspora
|
||||||
* @return array of relay servers
|
* @return array of relay servers
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function participantsForThread(array $item, array $contacts)
|
public static function participantsForThread(array $item, array $contacts): array
|
||||||
{
|
{
|
||||||
if (!in_array($item['private'], [Item::PUBLIC, Item::UNLISTED]) || in_array($item["verb"], [Activity::FOLLOW, Activity::TAG])) {
|
if (!in_array($item['private'], [Item::PUBLIC, Item::UNLISTED]) || in_array($item["verb"], [Activity::FOLLOW, Activity::TAG])) {
|
||||||
Logger::info('Item is private or a participation request. It will not be relayed', ['guid' => $item['guid'], 'private' => $item['private'], 'verb' => $item['verb']]);
|
Logger::info('Item is private or a participation request. It will not be relayed', ['guid' => $item['guid'], 'private' => $item['private'], 'verb' => $item['verb']]);
|
||||||
|
@ -114,11 +114,11 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @param string $envelope The magic envelope
|
* @param string $envelope The magic envelope
|
||||||
*
|
*
|
||||||
* @return string verified data
|
* @return string|bool verified data or false on error
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function verifyMagicEnvelope($envelope)
|
private static function verifyMagicEnvelope(string $envelope)
|
||||||
{
|
{
|
||||||
$basedom = XML::parseString($envelope, true);
|
$basedom = XML::parseString($envelope, true);
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @return string encrypted data
|
* @return string encrypted data
|
||||||
*/
|
*/
|
||||||
private static function aesEncrypt($key, $iv, $data)
|
private static function aesEncrypt(string $key, string $iv, string $data): string
|
||||||
{
|
{
|
||||||
return openssl_encrypt($data, 'aes-256-cbc', str_pad($key, 32, "\0"), OPENSSL_RAW_DATA, str_pad($iv, 16, "\0"));
|
return openssl_encrypt($data, 'aes-256-cbc', str_pad($key, 32, "\0"), OPENSSL_RAW_DATA, str_pad($iv, 16, "\0"));
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,7 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @return string decrypted data
|
* @return string decrypted data
|
||||||
*/
|
*/
|
||||||
private static function aesDecrypt($key, $iv, $encrypted)
|
private static function aesDecrypt(string $key, string $iv, string $encrypted): string
|
||||||
{
|
{
|
||||||
return openssl_decrypt($encrypted, 'aes-256-cbc', str_pad($key, 32, "\0"), OPENSSL_RAW_DATA, str_pad($iv, 16, "\0"));
|
return openssl_decrypt($encrypted, 'aes-256-cbc', str_pad($key, 32, "\0"), OPENSSL_RAW_DATA, str_pad($iv, 16, "\0"));
|
||||||
}
|
}
|
||||||
|
@ -216,7 +216,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function decodeRaw(string $raw, string $privKey = '', bool $no_exit = false)
|
public static function decodeRaw(string $raw, string $privKey = '', bool $no_exit = false): array
|
||||||
{
|
{
|
||||||
$data = json_decode($raw);
|
$data = json_decode($raw);
|
||||||
|
|
||||||
|
@ -232,7 +232,7 @@ class Diaspora
|
||||||
if (!is_object($j_outer_key_bundle)) {
|
if (!is_object($j_outer_key_bundle)) {
|
||||||
Logger::notice('Outer Salmon did not verify. Discarding.');
|
Logger::notice('Outer Salmon did not verify. Discarding.');
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return [];
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new \Friendica\Network\HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
|
@ -251,7 +251,7 @@ class Diaspora
|
||||||
if (!is_object($basedom)) {
|
if (!is_object($basedom)) {
|
||||||
Logger::notice('Received data does not seem to be an XML. Discarding. '.$xml);
|
Logger::notice('Received data does not seem to be an XML. Discarding. '.$xml);
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return [];
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new \Friendica\Network\HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
|
@ -277,7 +277,7 @@ class Diaspora
|
||||||
if ($author_addr == '') {
|
if ($author_addr == '') {
|
||||||
Logger::notice('No author could be decoded. Discarding. Message: ' . $xml);
|
Logger::notice('No author could be decoded. Discarding. Message: ' . $xml);
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return [];
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new \Friendica\Network\HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
|
@ -287,7 +287,7 @@ class Diaspora
|
||||||
if ($key == '') {
|
if ($key == '') {
|
||||||
Logger::notice("Couldn't get a key for handle " . $author_addr . ". Discarding.");
|
Logger::notice("Couldn't get a key for handle " . $author_addr . ". Discarding.");
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return [];
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new \Friendica\Network\HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
|
@ -321,14 +321,14 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function decode(string $xml, string $privKey = '')
|
public static function decode(string $xml, string $privKey = ''): array
|
||||||
{
|
{
|
||||||
$public = false;
|
$public = false;
|
||||||
$basedom = XML::parseString($xml);
|
$basedom = XML::parseString($xml);
|
||||||
|
|
||||||
if (!is_object($basedom)) {
|
if (!is_object($basedom)) {
|
||||||
Logger::notice('XML is not parseable.');
|
Logger::notice('XML is not parseable.');
|
||||||
return false;
|
return [];
|
||||||
}
|
}
|
||||||
$children = $basedom->children('https://joindiaspora.com/protocol');
|
$children = $basedom->children('https://joindiaspora.com/protocol');
|
||||||
|
|
||||||
|
@ -342,7 +342,7 @@ class Diaspora
|
||||||
// This happens with posts from a relais
|
// This happens with posts from a relais
|
||||||
if (empty($privKey)) {
|
if (empty($privKey)) {
|
||||||
Logger::info('This is no private post in the old format');
|
Logger::info('This is no private post in the old format');
|
||||||
return false;
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$encrypted_header = json_decode(base64_decode($children->encrypted_header));
|
$encrypted_header = json_decode(base64_decode($children->encrypted_header));
|
||||||
|
@ -457,11 +457,11 @@ class Diaspora
|
||||||
* @param array $msg The post that will be dispatched
|
* @param array $msg The post that will be dispatched
|
||||||
* @param int $direction Indicates if the message had been fetched or pushed (self::PUSHED, self::FETCHED, self::FORCED_FETCH)
|
* @param int $direction Indicates if the message had been fetched or pushed (self::PUSHED, self::FETCHED, self::FORCED_FETCH)
|
||||||
*
|
*
|
||||||
* @return int The message id of the generated message, "true" or "false" if there was an error
|
* @return int|bool The message id of the generated message, "true" or "false" if there was an error
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function dispatchPublic($msg, int $direction)
|
public static function dispatchPublic(array $msg, int $direction)
|
||||||
{
|
{
|
||||||
$enabled = intval(DI::config()->get("system", "diaspora_enabled"));
|
$enabled = intval(DI::config()->get("system", "diaspora_enabled"));
|
||||||
if (!$enabled) {
|
if (!$enabled) {
|
||||||
|
@ -488,11 +488,11 @@ class Diaspora
|
||||||
* @param SimpleXMLElement $fields SimpleXML object that contains the message
|
* @param SimpleXMLElement $fields SimpleXML object that contains the message
|
||||||
* @param int $direction Indicates if the message had been fetched or pushed (self::PUSHED, self::FETCHED, self::FORCED_FETCH)
|
* @param int $direction Indicates if the message had been fetched or pushed (self::PUSHED, self::FETCHED, self::FORCED_FETCH)
|
||||||
*
|
*
|
||||||
* @return int The message id of the generated message, "true" or "false" if there was an error
|
* @return int|bool The message id of the generated message, "true" or "false" if there was an error
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function dispatch(array $importer, $msg, SimpleXMLElement $fields = null, int $direction = self::PUSHED)
|
public static function dispatch(array $importer, array $msg, SimpleXMLElement $fields = null, int $direction = self::PUSHED)
|
||||||
{
|
{
|
||||||
// The sender is the handle of the contact that sent the message.
|
// The sender is the handle of the contact that sent the message.
|
||||||
// This will often be different with relayed messages (for example "like" and "comment")
|
// This will often be different with relayed messages (for example "like" and "comment")
|
||||||
|
@ -598,7 +598,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function validPosting($msg)
|
private static function validPosting(array $msg)
|
||||||
{
|
{
|
||||||
$data = XML::parseString($msg["message"]);
|
$data = XML::parseString($msg["message"]);
|
||||||
|
|
||||||
|
@ -748,15 +748,15 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function key($handle)
|
private static function key(string $handle): string
|
||||||
{
|
{
|
||||||
$handle = strval($handle);
|
$handle = strval($handle);
|
||||||
|
|
||||||
Logger::notice("Fetching diaspora key for: ".$handle);
|
Logger::notice("Fetching diaspora key for: ".$handle);
|
||||||
|
|
||||||
$r = FContact::getByURL($handle);
|
$fcontact = FContact::getByURL($handle);
|
||||||
if ($r) {
|
if ($fcontact) {
|
||||||
return $r["pubkey"];
|
return $fcontact["pubkey"];
|
||||||
}
|
}
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
|
@ -771,7 +771,7 @@ class Diaspora
|
||||||
* @return string the handle
|
* @return string the handle
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function handleFromContact($contact_id, $pcontact_id = 0)
|
private static function handleFromContact(int $contact_id, int $pcontact_id = 0): string
|
||||||
{
|
{
|
||||||
$handle = '';
|
$handle = '';
|
||||||
|
|
||||||
|
@ -804,7 +804,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function contactByHandle($uid, $handle)
|
private static function contactByHandle(int $uid, string $handle): array
|
||||||
{
|
{
|
||||||
return Contact::getByURL($handle, null, [], $uid);
|
return Contact::getByURL($handle, null, [], $uid);
|
||||||
}
|
}
|
||||||
|
@ -818,7 +818,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function isSupportedByContactUrl($url, $update = null)
|
public static function isSupportedByContactUrl(string $url, $update = null)
|
||||||
{
|
{
|
||||||
return !empty(FContact::getByURL($url, $update));
|
return !empty(FContact::getByURL($url, $update));
|
||||||
}
|
}
|
||||||
|
@ -832,7 +832,7 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @return bool is the contact allowed to post?
|
* @return bool is the contact allowed to post?
|
||||||
*/
|
*/
|
||||||
private static function postAllow(array $importer, array $contact, $is_comment = false)
|
private static function postAllow(array $importer, array $contact, bool $is_comment = false): bool
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Perhaps we were already sharing with this person. Now they're sharing with us.
|
* Perhaps we were already sharing with this person. Now they're sharing with us.
|
||||||
|
@ -878,10 +878,10 @@ class Diaspora
|
||||||
* @param string $handle The checked handle in the format user@domain.tld
|
* @param string $handle The checked handle in the format user@domain.tld
|
||||||
* @param bool $is_comment Is the check for a comment?
|
* @param bool $is_comment Is the check for a comment?
|
||||||
*
|
*
|
||||||
* @return array The contact data
|
* @return array|bool The contact data or false on error
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function allowedContactByHandle(array $importer, $handle, $is_comment = false)
|
private static function allowedContactByHandle(array $importer, string $handle, bool $is_comment = false)
|
||||||
{
|
{
|
||||||
$contact = self::contactByHandle($importer["uid"], $handle);
|
$contact = self::contactByHandle($importer["uid"], $handle);
|
||||||
if (!$contact) {
|
if (!$contact) {
|
||||||
|
@ -912,7 +912,7 @@ class Diaspora
|
||||||
* @return int|bool message id if the message already was stored into the system - or false.
|
* @return int|bool message id if the message already was stored into the system - or false.
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function messageExists($uid, $guid)
|
private static function messageExists(int $uid, string $guid)
|
||||||
{
|
{
|
||||||
$item = Post::selectFirst(['id'], ['uid' => $uid, 'guid' => $guid]);
|
$item = Post::selectFirst(['id'], ['uid' => $uid, 'guid' => $guid]);
|
||||||
if (DBA::isResult($item)) {
|
if (DBA::isResult($item)) {
|
||||||
|
@ -958,7 +958,7 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @return string the replaced string
|
* @return string the replaced string
|
||||||
*/
|
*/
|
||||||
public static function replacePeopleGuid($body, $author_link)
|
public static function replacePeopleGuid(string $body, string $author_link): string
|
||||||
{
|
{
|
||||||
$return = preg_replace_callback(
|
$return = preg_replace_callback(
|
||||||
"&\[url=/people/([^\[\]]*)\](.*)\[\/url\]&Usi",
|
"&\[url=/people/([^\[\]]*)\](.*)\[\/url\]&Usi",
|
||||||
|
@ -994,7 +994,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function fetchGuidSub($match, $item)
|
private static function fetchGuidSub(array $match, array $item)
|
||||||
{
|
{
|
||||||
if (!self::storeByGuid($match[1], $item["author-link"], true)) {
|
if (!self::storeByGuid($match[1], $item["author-link"], true)) {
|
||||||
self::storeByGuid($match[1], $item["owner-link"], true);
|
self::storeByGuid($match[1], $item["owner-link"], true);
|
||||||
|
@ -1008,11 +1008,11 @@ class Diaspora
|
||||||
* @param string $server The server address
|
* @param string $server The server address
|
||||||
* @param bool $force Forced fetch
|
* @param bool $force Forced fetch
|
||||||
*
|
*
|
||||||
* @return int the message id of the stored message or false
|
* @return int|bool the message id of the stored message or false
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function storeByGuid($guid, $server, $force)
|
private static function storeByGuid(string $guid, string $server, bool $force)
|
||||||
{
|
{
|
||||||
$serverparts = parse_url($server);
|
$serverparts = parse_url($server);
|
||||||
|
|
||||||
|
@ -1049,7 +1049,7 @@ class Diaspora
|
||||||
* 'key' => The public key of the author
|
* 'key' => The public key of the author
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function message($guid, $server, $level = 0)
|
public static function message(string $guid, string $server, int $level = 0)
|
||||||
{
|
{
|
||||||
if ($level > 5) {
|
if ($level > 5) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -1119,12 +1119,13 @@ class Diaspora
|
||||||
* Fetches an item with a given URL
|
* Fetches an item with a given URL
|
||||||
*
|
*
|
||||||
* @param string $url the message url
|
* @param string $url the message url
|
||||||
|
* @param int $uid User id
|
||||||
*
|
*
|
||||||
* @return int the message id of the stored message or false
|
* @return int|bool the message id of the stored message or false
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function fetchByURL($url, $uid = 0)
|
public static function fetchByURL(string $url, int $uid = 0)
|
||||||
{
|
{
|
||||||
// Check for Diaspora (and Friendica) typical paths
|
// Check for Diaspora (and Friendica) typical paths
|
||||||
if (!preg_match("=(https?://.+)/(?:posts|display|objects)/([a-zA-Z0-9-_@.:%]+[a-zA-Z0-9])=i", $url, $matches)) {
|
if (!preg_match("=(https?://.+)/(?:posts|display|objects)/([a-zA-Z0-9-_@.:%]+[a-zA-Z0-9])=i", $url, $matches)) {
|
||||||
|
@ -1162,10 +1163,10 @@ class Diaspora
|
||||||
* @param string $author The handle of the item
|
* @param string $author The handle of the item
|
||||||
* @param array $contact The contact of the item owner
|
* @param array $contact The contact of the item owner
|
||||||
*
|
*
|
||||||
* @return array the item record
|
* @return array|bool the item record or false on failure
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function parentItem($uid, $guid, $author, array $contact)
|
private static function parentItem(int $uid, string $guid, string $author, array $contact)
|
||||||
{
|
{
|
||||||
$fields = ['id', 'parent', 'body', 'wall', 'uri', 'guid', 'private', 'origin',
|
$fields = ['id', 'parent', 'body', 'wall', 'uri', 'guid', 'private', 'origin',
|
||||||
'author-name', 'author-link', 'author-avatar', 'gravity',
|
'author-name', 'author-link', 'author-avatar', 'gravity',
|
||||||
|
@ -1210,7 +1211,7 @@ class Diaspora
|
||||||
* 'network' => network type
|
* 'network' => network type
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function authorContactByUrl($def_contact, $person, $uid)
|
private static function authorContactByUrl(array $def_contact, array $person, int $uid): array
|
||||||
{
|
{
|
||||||
$condition = ['nurl' => Strings::normaliseLink($person["url"]), 'uid' => $uid];
|
$condition = ['nurl' => Strings::normaliseLink($person["url"]), 'uid' => $uid];
|
||||||
$contact = DBA::selectFirst('contact', ['id', 'network'], $condition);
|
$contact = DBA::selectFirst('contact', ['id', 'network'], $condition);
|
||||||
|
@ -1232,9 +1233,9 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @return bool is it a hubzilla server?
|
* @return bool is it a hubzilla server?
|
||||||
*/
|
*/
|
||||||
private static function isHubzilla($url)
|
private static function isHubzilla(string $url): bool
|
||||||
{
|
{
|
||||||
return(strstr($url, '/channel/'));
|
return strstr($url, '/channel/');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1248,7 +1249,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function plink(string $addr, string $guid, string $parent_guid = '')
|
private static function plink(string $addr, string $guid, string $parent_guid = ''): string
|
||||||
{
|
{
|
||||||
$contact = Contact::getByURL($addr);
|
$contact = Contact::getByURL($addr);
|
||||||
if (empty($contact)) {
|
if (empty($contact)) {
|
||||||
|
@ -1312,8 +1313,10 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function receiveAccountMigration(array $importer, $data)
|
private static function receiveAccountMigration(array $importer, $data): bool
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$old_handle = XML::unescape($data->author);
|
$old_handle = XML::unescape($data->author);
|
||||||
$new_handle = XML::unescape($data->profile->author);
|
$new_handle = XML::unescape($data->profile->author);
|
||||||
$signature = XML::unescape($data->signature);
|
$signature = XML::unescape($data->signature);
|
||||||
|
@ -1365,8 +1368,10 @@ class Diaspora
|
||||||
* @return bool Success
|
* @return bool Success
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
private static function receiveAccountDeletion($data)
|
private static function receiveAccountDeletion($data): bool
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$author = XML::unescape($data->author);
|
$author = XML::unescape($data->author);
|
||||||
|
|
||||||
$contacts = DBA::select('contact', ['id'], ['addr' => $author]);
|
$contacts = DBA::select('contact', ['id'], ['addr' => $author]);
|
||||||
|
@ -1387,11 +1392,11 @@ class Diaspora
|
||||||
* @param string $guid Message guid
|
* @param string $guid Message guid
|
||||||
* @param boolean $onlyfound Only return uri when found in the database
|
* @param boolean $onlyfound Only return uri when found in the database
|
||||||
*
|
*
|
||||||
* @return string The constructed uri or the one from our database
|
* @return string The constructed uri or the one from our database or empty string on if $onlyfound is true
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function getUriFromGuid($author, $guid, $onlyfound = false)
|
private static function getUriFromGuid(string $author, string $guid, bool $onlyfound = false): string
|
||||||
{
|
{
|
||||||
$item = Post::selectFirst(['uri'], ['guid' => $guid]);
|
$item = Post::selectFirst(['uri'], ['guid' => $guid]);
|
||||||
if (DBA::isResult($item)) {
|
if (DBA::isResult($item)) {
|
||||||
|
@ -1456,8 +1461,10 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function receiveComment(array $importer, $sender, $data, $xml, int $direction)
|
private static function receiveComment(array $importer, string $sender, $data, string $xml, int $direction): bool
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$author = XML::unescape($data->author);
|
$author = XML::unescape($data->author);
|
||||||
$guid = XML::unescape($data->guid);
|
$guid = XML::unescape($data->guid);
|
||||||
$parent_guid = XML::unescape($data->parent_guid);
|
$parent_guid = XML::unescape($data->parent_guid);
|
||||||
|
@ -1593,8 +1600,10 @@ class Diaspora
|
||||||
* @return bool "true" if it was successful
|
* @return bool "true" if it was successful
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function receiveConversationMessage(array $importer, array $contact, $data, $msg, $mesg, $conversation)
|
private static function receiveConversationMessage(array $importer, array $contact, $data, array $msg, $mesg, array $conversation): bool
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data).',mesg='.get_class($mesg));
|
||||||
$author = XML::unescape($data->author);
|
$author = XML::unescape($data->author);
|
||||||
$guid = XML::unescape($data->guid);
|
$guid = XML::unescape($data->guid);
|
||||||
$subject = XML::unescape($data->subject);
|
$subject = XML::unescape($data->subject);
|
||||||
|
@ -1650,8 +1659,10 @@ class Diaspora
|
||||||
* @return bool Success
|
* @return bool Success
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function receiveConversation(array $importer, $msg, $data)
|
private static function receiveConversation(array $importer, array $msg, $data)
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$author = XML::unescape($data->author);
|
$author = XML::unescape($data->author);
|
||||||
$guid = XML::unescape($data->guid);
|
$guid = XML::unescape($data->guid);
|
||||||
$subject = XML::unescape($data->subject);
|
$subject = XML::unescape($data->subject);
|
||||||
|
@ -1708,12 +1719,14 @@ class Diaspora
|
||||||
* @param object $data The message object
|
* @param object $data The message object
|
||||||
* @param int $direction Indicates if the message had been fetched or pushed (self::PUSHED, self::FETCHED, self::FORCED_FETCH)
|
* @param int $direction Indicates if the message had been fetched or pushed (self::PUSHED, self::FETCHED, self::FORCED_FETCH)
|
||||||
*
|
*
|
||||||
* @return int The message id of the generated like or "false" if there was an error
|
* @return bool Success or failure
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function receiveLike(array $importer, $sender, $data, int $direction)
|
private static function receiveLike(array $importer, string $sender, $data, int $direction): bool
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$author = XML::unescape($data->author);
|
$author = XML::unescape($data->author);
|
||||||
$guid = XML::unescape($data->guid);
|
$guid = XML::unescape($data->guid);
|
||||||
$parent_guid = XML::unescape($data->parent_guid);
|
$parent_guid = XML::unescape($data->parent_guid);
|
||||||
|
@ -1832,8 +1845,10 @@ class Diaspora
|
||||||
* @return bool Success?
|
* @return bool Success?
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function receiveMessage(array $importer, $data)
|
private static function receiveMessage(array $importer, $data): bool
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$author = XML::unescape($data->author);
|
$author = XML::unescape($data->author);
|
||||||
$guid = XML::unescape($data->guid);
|
$guid = XML::unescape($data->guid);
|
||||||
$conversation_guid = XML::unescape($data->conversation_guid);
|
$conversation_guid = XML::unescape($data->conversation_guid);
|
||||||
|
@ -1899,8 +1914,10 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function receiveParticipation(array $importer, $data, int $direction)
|
private static function receiveParticipation(array $importer, $data, int $direction): bool
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$author = strtolower(XML::unescape($data->author));
|
$author = strtolower(XML::unescape($data->author));
|
||||||
$guid = XML::unescape($data->guid);
|
$guid = XML::unescape($data->guid);
|
||||||
$parent_guid = XML::unescape($data->parent_guid);
|
$parent_guid = XML::unescape($data->parent_guid);
|
||||||
|
@ -2044,8 +2061,10 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function receiveProfile(array $importer, $data)
|
private static function receiveProfile(array $importer, $data): bool
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$author = strtolower(XML::unescape($data->author));
|
$author = strtolower(XML::unescape($data->author));
|
||||||
|
|
||||||
$contact = self::contactByHandle($importer["uid"], $author);
|
$contact = self::contactByHandle($importer["uid"], $author);
|
||||||
|
@ -2145,8 +2164,10 @@ class Diaspora
|
||||||
* @return bool Success
|
* @return bool Success
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function receiveContactRequest(array $importer, $data)
|
private static function receiveContactRequest(array $importer, $data): bool
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$author = XML::unescape($data->author);
|
$author = XML::unescape($data->author);
|
||||||
$recipient = XML::unescape($data->recipient);
|
$recipient = XML::unescape($data->recipient);
|
||||||
|
|
||||||
|
@ -2233,7 +2254,7 @@ class Diaspora
|
||||||
$contact_record = self::contactByHandle($importer['uid'], $author);
|
$contact_record = self::contactByHandle($importer['uid'], $author);
|
||||||
if (!$contact_record) {
|
if (!$contact_record) {
|
||||||
Logger::info('unable to locate newly created contact record.');
|
Logger::info('unable to locate newly created contact record.');
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = DBA::selectFirst('user', [], ['uid' => $importer['uid']]);
|
$user = DBA::selectFirst('user', [], ['uid' => $importer['uid']]);
|
||||||
|
@ -2253,11 +2274,11 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @param string $guid message guid
|
* @param string $guid message guid
|
||||||
* @param string $orig_author handle of the original post
|
* @param string $orig_author handle of the original post
|
||||||
* @return array The fetched item
|
* @return array|bool The fetched item or false on failure
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function originalItem($guid, $orig_author)
|
public static function originalItem(string $guid, string $orig_author)
|
||||||
{
|
{
|
||||||
if (empty($guid)) {
|
if (empty($guid)) {
|
||||||
Logger::notice('Empty guid. Quitting.');
|
Logger::notice('Empty guid. Quitting.');
|
||||||
|
@ -2333,7 +2354,7 @@ class Diaspora
|
||||||
* @param string $guid GUID string of reshare action
|
* @param string $guid GUID string of reshare action
|
||||||
* @param string $author Author handle
|
* @param string $author Author handle
|
||||||
*/
|
*/
|
||||||
private static function addReshareActivity($item, $parent_message_id, $guid, $author)
|
private static function addReshareActivity(array $item, int $parent_message_id, string $guid, string $author)
|
||||||
{
|
{
|
||||||
$parent = Post::selectFirst(['uri', 'guid'], ['id' => $parent_message_id]);
|
$parent = Post::selectFirst(['uri', 'guid'], ['id' => $parent_message_id]);
|
||||||
|
|
||||||
|
@ -2388,12 +2409,14 @@ class Diaspora
|
||||||
* @param string $xml The original XML of the message
|
* @param string $xml The original XML of the message
|
||||||
* @param int $direction Indicates if the message had been fetched or pushed (self::PUSHED, self::FETCHED, self::FORCED_FETCH)
|
* @param int $direction Indicates if the message had been fetched or pushed (self::PUSHED, self::FETCHED, self::FORCED_FETCH)
|
||||||
*
|
*
|
||||||
* @return int the message id
|
* @return bool Success or failure
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function receiveReshare(array $importer, $data, $xml, int $direction)
|
private static function receiveReshare(array $importer, $data, string $xml, int $direction): bool
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$author = XML::unescape($data->author);
|
$author = XML::unescape($data->author);
|
||||||
$guid = XML::unescape($data->guid);
|
$guid = XML::unescape($data->guid);
|
||||||
$created_at = DateTimeFormat::utc(XML::unescape($data->created_at));
|
$created_at = DateTimeFormat::utc(XML::unescape($data->created_at));
|
||||||
|
@ -2512,8 +2535,10 @@ class Diaspora
|
||||||
* @return bool success
|
* @return bool success
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function itemRetraction(array $importer, array $contact, $data)
|
private static function itemRetraction(array $importer, array $contact, $data): bool
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$author = XML::unescape($data->author);
|
$author = XML::unescape($data->author);
|
||||||
$target_guid = XML::unescape($data->target_guid);
|
$target_guid = XML::unescape($data->target_guid);
|
||||||
$target_type = XML::unescape($data->target_type);
|
$target_type = XML::unescape($data->target_type);
|
||||||
|
@ -2578,8 +2603,10 @@ class Diaspora
|
||||||
* @return bool Success
|
* @return bool Success
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function receiveRetraction(array $importer, $sender, $data)
|
private static function receiveRetraction(array $importer, string $sender, $data)
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('data='.get_class($data));
|
||||||
$target_type = XML::unescape($data->target_type);
|
$target_type = XML::unescape($data->target_type);
|
||||||
|
|
||||||
$contact = self::contactByHandle($importer["uid"], $sender);
|
$contact = self::contactByHandle($importer["uid"], $sender);
|
||||||
|
@ -2624,7 +2651,7 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @return boolean Is the message wanted?
|
* @return boolean Is the message wanted?
|
||||||
*/
|
*/
|
||||||
private static function isSolicitedMessage(array $item, string $author, string $body, int $direction)
|
private static function isSolicitedMessage(array $item, string $author, string $body, int $direction): bool
|
||||||
{
|
{
|
||||||
$contact = Contact::getByURL($author);
|
$contact = Contact::getByURL($author);
|
||||||
if (DBA::exists('contact', ["`nurl` = ? AND `uid` != ? AND `rel` IN (?, ?)",
|
if (DBA::exists('contact', ["`nurl` = ? AND `uid` != ? AND `rel` IN (?, ?)",
|
||||||
|
@ -2656,6 +2683,8 @@ class Diaspora
|
||||||
*/
|
*/
|
||||||
private static function storePhotoAsMedia(int $uriid, $photo)
|
private static function storePhotoAsMedia(int $uriid, $photo)
|
||||||
{
|
{
|
||||||
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
|
Logger::debug('photo='.get_class($photo));
|
||||||
$data = [];
|
$data = [];
|
||||||
$data['uri-id'] = $uriid;
|
$data['uri-id'] = $uriid;
|
||||||
$data['type'] = Post\Media::IMAGE;
|
$data['type'] = Post\Media::IMAGE;
|
||||||
|
@ -2675,11 +2704,11 @@ class Diaspora
|
||||||
* @param string $xml The original XML of the message
|
* @param string $xml The original XML of the message
|
||||||
* @param int $direction Indicates if the message had been fetched or pushed (self::PUSHED, self::FETCHED, self::FORCED_FETCH)
|
* @param int $direction Indicates if the message had been fetched or pushed (self::PUSHED, self::FETCHED, self::FORCED_FETCH)
|
||||||
*
|
*
|
||||||
* @return int The message id of the newly created item
|
* @return int|bool The message id of the newly created item or false on error
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function receiveStatusMessage(array $importer, SimpleXMLElement $data, $xml, int $direction)
|
private static function receiveStatusMessage(array $importer, SimpleXMLElement $data, string $xml, int $direction)
|
||||||
{
|
{
|
||||||
$author = XML::unescape($data->author);
|
$author = XML::unescape($data->author);
|
||||||
$guid = XML::unescape($data->guid);
|
$guid = XML::unescape($data->guid);
|
||||||
|
@ -2826,7 +2855,7 @@ class Diaspora
|
||||||
* @return string the handle in the format user@domain.tld
|
* @return string the handle in the format user@domain.tld
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
private static function myHandle(array $contact)
|
private static function myHandle(array $contact): string
|
||||||
{
|
{
|
||||||
if (!empty($contact["addr"])) {
|
if (!empty($contact["addr"])) {
|
||||||
return $contact["addr"];
|
return $contact["addr"];
|
||||||
|
@ -2856,7 +2885,7 @@ class Diaspora
|
||||||
* @return string The encrypted data
|
* @return string The encrypted data
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function encodePrivateData($msg, array $user, array $contact, $prvkey, $pubkey)
|
public static function encodePrivateData(string $msg, array $user, array $contact, string $prvkey, string $pubkey): string
|
||||||
{
|
{
|
||||||
Logger::debug("Message: ".$msg);
|
Logger::debug("Message: ".$msg);
|
||||||
|
|
||||||
|
@ -2897,7 +2926,7 @@ class Diaspora
|
||||||
* @return string The envelope
|
* @return string The envelope
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
public static function buildMagicEnvelope($msg, array $user)
|
public static function buildMagicEnvelope(string $msg, array $user): string
|
||||||
{
|
{
|
||||||
$b64url_data = Strings::base64UrlEncode($msg);
|
$b64url_data = Strings::base64UrlEncode($msg);
|
||||||
$data = str_replace(["\n", "\r", " ", "\t"], ["", "", "", ""], $b64url_data);
|
$data = str_replace(["\n", "\r", " ", "\t"], ["", "", "", ""], $b64url_data);
|
||||||
|
@ -2941,7 +2970,7 @@ class Diaspora
|
||||||
* @return string The message that will be transmitted to other servers
|
* @return string The message that will be transmitted to other servers
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function buildMessage($msg, array $user, array $contact, $prvkey, $pubkey, $public = false)
|
public static function buildMessage(string $msg, array $user, array $contact, string $prvkey, string $pubkey, bool $public = false): string
|
||||||
{
|
{
|
||||||
// The message is put into an envelope with the sender's signature
|
// The message is put into an envelope with the sender's signature
|
||||||
$envelope = self::buildMagicEnvelope($msg, $user);
|
$envelope = self::buildMagicEnvelope($msg, $user);
|
||||||
|
@ -2962,7 +2991,7 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @return string The signature
|
* @return string The signature
|
||||||
*/
|
*/
|
||||||
private static function signature($owner, $message)
|
private static function signature(array $owner, array $message): string
|
||||||
{
|
{
|
||||||
$sigmsg = $message;
|
$sigmsg = $message;
|
||||||
unset($sigmsg["author_signature"]);
|
unset($sigmsg["author_signature"]);
|
||||||
|
@ -2986,7 +3015,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function transmit(array $owner, array $contact, $envelope, $public_batch, $guid = "")
|
private static function transmit(array $owner, array $contact, string $envelope, bool $public_batch, string $guid = ""): int
|
||||||
{
|
{
|
||||||
$enabled = intval(DI::config()->get("system", "diaspora_enabled"));
|
$enabled = intval(DI::config()->get("system", "diaspora_enabled"));
|
||||||
if (!$enabled) {
|
if (!$enabled) {
|
||||||
|
@ -3039,7 +3068,7 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @return string The post XML
|
* @return string The post XML
|
||||||
*/
|
*/
|
||||||
public static function buildPostXml($type, $message)
|
public static function buildPostXml(string $type, array $message): array
|
||||||
{
|
{
|
||||||
$data = [$type => $message];
|
$data = [$type => $message];
|
||||||
|
|
||||||
|
@ -3060,7 +3089,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
private static function buildAndTransmit(array $owner, array $contact, $type, $message, $public_batch = false, $guid = "")
|
private static function buildAndTransmit(array $owner, array $contact, string $type, array $message, bool $public_batch = false, string $guid = "")
|
||||||
{
|
{
|
||||||
$msg = self::buildPostXml($type, $message);
|
$msg = self::buildPostXml($type, $message);
|
||||||
|
|
||||||
|
@ -3103,18 +3132,18 @@ class Diaspora
|
||||||
* @return int The result of the transmission
|
* @return int The result of the transmission
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function sendParticipation(array $contact, array $item)
|
private static function sendParticipation(array $contact, array $item): int
|
||||||
{
|
{
|
||||||
// Don't send notifications for private postings
|
// Don't send notifications for private postings
|
||||||
if ($item['private'] == Item::PRIVATE) {
|
if ($item['private'] == Item::PRIVATE) {
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$cachekey = "diaspora:sendParticipation:".$item['guid'];
|
$cachekey = "diaspora:sendParticipation:".$item['guid'];
|
||||||
|
|
||||||
$result = DI::cache()->get($cachekey);
|
$result = DI::cache()->get($cachekey);
|
||||||
if (!is_null($result)) {
|
if (!is_null($result)) {
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fetch some user id to have a valid handle to transmit the participation.
|
// Fetch some user id to have a valid handle to transmit the participation.
|
||||||
|
@ -3156,7 +3185,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function sendAccountMigration(array $owner, array $contact, $uid)
|
public static function sendAccountMigration(array $owner, array $contact, int $uid): int
|
||||||
{
|
{
|
||||||
$old_handle = DI::pConfig()->get($uid, 'system', 'previous_addr');
|
$old_handle = DI::pConfig()->get($uid, 'system', 'previous_addr');
|
||||||
$profile = self::createProfileData($uid);
|
$profile = self::createProfileData($uid);
|
||||||
|
@ -3182,7 +3211,7 @@ class Diaspora
|
||||||
* @return int The result of the transmission
|
* @return int The result of the transmission
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function sendShare(array $owner, array $contact)
|
public static function sendShare(array $owner, array $contact): int
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @todo support the different possible combinations of "following" and "sharing"
|
* @todo support the different possible combinations of "following" and "sharing"
|
||||||
|
@ -3226,7 +3255,7 @@ class Diaspora
|
||||||
* @return int The result of the transmission
|
* @return int The result of the transmission
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function sendUnshare(array $owner, array $contact)
|
public static function sendUnshare(array $owner, array $contact): int
|
||||||
{
|
{
|
||||||
$message = ["author" => self::myHandle($owner),
|
$message = ["author" => self::myHandle($owner),
|
||||||
"recipient" => $contact["addr"],
|
"recipient" => $contact["addr"],
|
||||||
|
@ -3248,7 +3277,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function isReshare($body, $complete = true)
|
public static function isReshare(string $body, bool $complete = true)
|
||||||
{
|
{
|
||||||
$body = trim($body);
|
$body = trim($body);
|
||||||
|
|
||||||
|
@ -3304,7 +3333,7 @@ class Diaspora
|
||||||
* @return array with event data
|
* @return array with event data
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
private static function buildEvent($event_id)
|
private static function buildEvent(string $event_id): array
|
||||||
{
|
{
|
||||||
$event = DBA::selectFirst('event', [], ['id' => $event_id]);
|
$event = DBA::selectFirst('event', [], ['id' => $event_id]);
|
||||||
if (!DBA::isResult($event)) {
|
if (!DBA::isResult($event)) {
|
||||||
|
@ -3484,7 +3513,7 @@ class Diaspora
|
||||||
return $msg;
|
return $msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function prependParentAuthorMention($body, $profile_url)
|
private static function prependParentAuthorMention(string $body, string $profile_url): string
|
||||||
{
|
{
|
||||||
$profile = Contact::getByURL($profile_url, false, ['addr', 'name']);
|
$profile = Contact::getByURL($profile_url, false, ['addr', 'name']);
|
||||||
if (!empty($profile['addr'])
|
if (!empty($profile['addr'])
|
||||||
|
@ -3509,7 +3538,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function sendStatus(array $item, array $owner, array $contact, $public_batch = false)
|
public static function sendStatus(array $item, array $owner, array $contact, bool $public_batch = false): int
|
||||||
{
|
{
|
||||||
$status = self::buildStatus($item, $owner);
|
$status = self::buildStatus($item, $owner);
|
||||||
|
|
||||||
|
@ -3522,7 +3551,7 @@ class Diaspora
|
||||||
* @param array $item The item that will be exported
|
* @param array $item The item that will be exported
|
||||||
* @param array $owner the array of the item owner
|
* @param array $owner the array of the item owner
|
||||||
*
|
*
|
||||||
* @return array The data for a "like"
|
* @return array|bool The data for a "like" or false on error
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
private static function constructLike(array $item, array $owner)
|
private static function constructLike(array $item, array $owner)
|
||||||
|
@ -3540,12 +3569,12 @@ class Diaspora
|
||||||
$positive = "false";
|
$positive = "false";
|
||||||
}
|
}
|
||||||
|
|
||||||
return(["author" => self::myHandle($owner),
|
return ["author" => self::myHandle($owner),
|
||||||
"guid" => $item["guid"],
|
"guid" => $item["guid"],
|
||||||
"parent_guid" => $parent["guid"],
|
"parent_guid" => $parent["guid"],
|
||||||
"parent_type" => $target_type,
|
"parent_type" => $target_type,
|
||||||
"positive" => $positive,
|
"positive" => $positive,
|
||||||
"author_signature" => ""]);
|
"author_signature" => ""];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3554,7 +3583,7 @@ class Diaspora
|
||||||
* @param array $item The item that will be exported
|
* @param array $item The item that will be exported
|
||||||
* @param array $owner the array of the item owner
|
* @param array $owner the array of the item owner
|
||||||
*
|
*
|
||||||
* @return array The data for an "EventParticipation"
|
* @return array|bool The data for an "EventParticipation" or false on error
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function constructAttend(array $item, array $owner)
|
private static function constructAttend(array $item, array $owner)
|
||||||
|
@ -3579,11 +3608,11 @@ class Diaspora
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return(["author" => self::myHandle($owner),
|
return ["author" => self::myHandle($owner),
|
||||||
"guid" => $item["guid"],
|
"guid" => $item["guid"],
|
||||||
"parent_guid" => $parent["guid"],
|
"parent_guid" => $parent["guid"],
|
||||||
"status" => $attend_answer,
|
"status" => $attend_answer,
|
||||||
"author_signature" => ""]);
|
"author_signature" => ""];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3651,7 +3680,7 @@ class Diaspora
|
||||||
|
|
||||||
DI::cache()->set($cachekey, $comment, Duration::QUARTER_HOUR);
|
DI::cache()->set($cachekey, $comment, Duration::QUARTER_HOUR);
|
||||||
|
|
||||||
return($comment);
|
return $comment;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3666,7 +3695,7 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function sendFollowup(array $item, array $owner, array $contact, $public_batch = false)
|
public static function sendFollowup(array $item, array $owner, array $contact, bool $public_batch = false): int
|
||||||
{
|
{
|
||||||
if (in_array($item['verb'], [Activity::ATTEND, Activity::ATTENDNO, Activity::ATTENDMAYBE])) {
|
if (in_array($item['verb'], [Activity::ATTEND, Activity::ATTENDNO, Activity::ATTENDMAYBE])) {
|
||||||
$message = self::constructAttend($item, $owner);
|
$message = self::constructAttend($item, $owner);
|
||||||
|
@ -3680,7 +3709,7 @@ class Diaspora
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($message)) {
|
if (empty($message)) {
|
||||||
return false;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$message["author_signature"] = self::signature($owner, $message);
|
$message["author_signature"] = self::signature($owner, $message);
|
||||||
|
@ -3699,7 +3728,7 @@ class Diaspora
|
||||||
* @return int The result of the transmission
|
* @return int The result of the transmission
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function sendRelay(array $item, array $owner, array $contact, $public_batch = false)
|
public static function sendRelay(array $item, array $owner, array $contact, bool $public_batch = false): int
|
||||||
{
|
{
|
||||||
if ($item["deleted"]) {
|
if ($item["deleted"]) {
|
||||||
return self::sendRetraction($item, $owner, $contact, $public_batch, true);
|
return self::sendRetraction($item, $owner, $contact, $public_batch, true);
|
||||||
|
@ -3750,7 +3779,7 @@ class Diaspora
|
||||||
* @return int The result of the transmission
|
* @return int The result of the transmission
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function sendRetraction(array $item, array $owner, array $contact, $public_batch = false, $relay = false)
|
public static function sendRetraction(array $item, array $owner, array $contact, bool $public_batch = false, bool $relay = false): int
|
||||||
{
|
{
|
||||||
$itemaddr = self::handleFromContact($item["contact-id"], $item["author-id"]);
|
$itemaddr = self::handleFromContact($item["contact-id"], $item["author-id"]);
|
||||||
|
|
||||||
|
@ -3784,14 +3813,14 @@ class Diaspora
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function sendMail(array $item, array $owner, array $contact)
|
public static function sendMail(array $item, array $owner, array $contact): int
|
||||||
{
|
{
|
||||||
$myaddr = self::myHandle($owner);
|
$myaddr = self::myHandle($owner);
|
||||||
|
|
||||||
$cnv = DBA::selectFirst('conv', [], ['id' => $item["convid"], 'uid' => $item["uid"]]);
|
$cnv = DBA::selectFirst('conv', [], ['id' => $item["convid"], 'uid' => $item["uid"]]);
|
||||||
if (!DBA::isResult($cnv)) {
|
if (!DBA::isResult($cnv)) {
|
||||||
Logger::notice("conversation not found.");
|
Logger::notice("conversation not found.");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$body = BBCode::toMarkdown($item["body"]);
|
$body = BBCode::toMarkdown($item["body"]);
|
||||||
|
@ -3831,7 +3860,8 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @return array The array with "first" and "last"
|
* @return array The array with "first" and "last"
|
||||||
*/
|
*/
|
||||||
public static function splitName($name) {
|
public static function splitName(string $name): array
|
||||||
|
{
|
||||||
$name = trim($name);
|
$name = trim($name);
|
||||||
|
|
||||||
// Is the name longer than 64 characters? Then cut the rest of it.
|
// Is the name longer than 64 characters? Then cut the rest of it.
|
||||||
|
@ -3888,7 +3918,7 @@ class Diaspora
|
||||||
* @return array The profile data
|
* @return array The profile data
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
private static function createProfileData($uid)
|
private static function createProfileData(int $uid): array
|
||||||
{
|
{
|
||||||
$profile = DBA::selectFirst('owner-view', ['uid', 'addr', 'name', 'location', 'net-publish', 'dob', 'about', 'pub_keywords'], ['uid' => $uid]);
|
$profile = DBA::selectFirst('owner-view', ['uid', 'addr', 'name', 'location', 'net-publish', 'dob', 'about', 'pub_keywords'], ['uid' => $uid]);
|
||||||
if (!DBA::isResult($profile)) {
|
if (!DBA::isResult($profile)) {
|
||||||
|
@ -3962,7 +3992,7 @@ class Diaspora
|
||||||
* @return void
|
* @return void
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function sendProfile($uid, $recips = false)
|
public static function sendProfile(int $uid, bool $recips = false)
|
||||||
{
|
{
|
||||||
if (!$uid) {
|
if (!$uid) {
|
||||||
return;
|
return;
|
||||||
|
@ -3996,10 +4026,10 @@ class Diaspora
|
||||||
* @param integer $uid The user of that comment
|
* @param integer $uid The user of that comment
|
||||||
* @param array $item Item array
|
* @param array $item Item array
|
||||||
*
|
*
|
||||||
* @return array Signed content
|
* @return array|bool Signed content or false on error
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function createLikeSignature($uid, array $item)
|
public static function createLikeSignature(int $uid, array $item)
|
||||||
{
|
{
|
||||||
$owner = User::getOwnerDataById($uid);
|
$owner = User::getOwnerDataById($uid);
|
||||||
if (empty($owner)) {
|
if (empty($owner)) {
|
||||||
|
@ -4026,7 +4056,7 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @param array $item Item array
|
* @param array $item Item array
|
||||||
*
|
*
|
||||||
* @return array Signed content
|
* @return array|bool Signed content or false on error
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function createCommentSignature(array $item)
|
public static function createCommentSignature(array $item)
|
||||||
|
@ -4069,7 +4099,7 @@ class Diaspora
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function performReshare(int $UriId, int $uid)
|
public static function performReshare(int $UriId, int $uid): int
|
||||||
{
|
{
|
||||||
$fields = ['uri-id', 'body', 'title', 'author-name', 'author-link', 'author-avatar', 'guid', 'created', 'plink'];
|
$fields = ['uri-id', 'body', 'title', 'author-name', 'author-link', 'author-avatar', 'guid', 'created', 'plink'];
|
||||||
$item = Post::selectFirst($fields, ['uri-id' => $UriId, 'uid' => [$uid, 0], 'private' => [Item::PUBLIC, Item::UNLISTED]]);
|
$item = Post::selectFirst($fields, ['uri-id' => $UriId, 'uid' => [$uid, 0], 'private' => [Item::PUBLIC, Item::UNLISTED]]);
|
||||||
|
|
Loading…
Reference in a new issue