* @return array
* @throws \Exception
*/
- public static function selectToArray(array $fields = [], array $condition = [], array $params = [])
+ public static function selectToArray(array $fields = [], array $condition = [], array $params = []): array
{
return DBA::selectToArray('contact', $fields, $condition, $params);
}
* @param array $fields Array of selected fields, empty for all
* @param array $condition Array of fields for condition
* @param array $params Array of several parameters
- * @return array
+ * @return array|bool
* @throws \Exception
*/
public static function selectFirst(array $fields = [], array $condition = [], array $params = [])
* @return int id of the created contact
* @throws \Exception
*/
- public static function insert(array $fields, int $duplicate_mode = Database::INSERT_DEFAULT)
+ public static function insert(array $fields, int $duplicate_mode = Database::INSERT_DEFAULT): int
{
if (!empty($fields['baseurl']) && empty($fields['gsid'])) {
$fields['gsid'] = GServer::getID($fields['baseurl'], true);
*
* @return boolean was the update successfull?
* @throws \Exception
+ * @todo Let's get rid of boolean type of $old_fields
*/
public static function update(array $fields, array $condition, $old_fields = [])
{
* @return array|boolean Contact record if it exists, false otherwise
* @throws \Exception
*/
- public static function getById($id, $fields = [])
+ public static function getById(int $id, array $fields = [])
{
return DBA::selectFirst('contact', $fields, ['id' => $id]);
}
* @return array|boolean Contact record if it exists, false otherwise
* @throws \Exception
*/
- public static function getByUriId($uri_id, $fields = [])
+ public static function getByUriId(int $uri_id, array $fields = [])
{
return DBA::selectFirst('contact', $fields, ['uri-id' => $uri_id], ['order' => ['uid']]);
}
* @param integer $uid User ID of the contact
* @return array contact array
*/
- public static function getByURL(string $url, $update = null, array $fields = [], int $uid = 0)
+ public static function getByURL(string $url, $update = null, array $fields = [], int $uid = 0): array
{
if ($update || is_null($update)) {
$cid = self::getIdForURL($url, $uid, $update);
* @param array $fields Field list
* @return array contact array
*/
- public static function getByURLForUser(string $url, int $uid = 0, $update = false, array $fields = [])
+ public static function getByURLForUser(string $url, int $uid = 0, $update = false, array $fields = []): array
{
if ($uid != 0) {
$contact = self::getByURL($url, $update, $fields, $uid);
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function isFollower($cid, $uid)
+ public static function isFollower(int $cid, int $uid): bool
{
if (Contact\User::isBlocked($cid, $uid)) {
return false;
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function isFollowerByURL($url, $uid)
+ public static function isFollowerByURL(string $url, int $uid): bool
{
$cid = self::getIdForURL($url, $uid);
}
/**
- * Tests if the given user follow the given contact
+ * Tests if the given user shares with the given contact
*
* @param int $cid Either public contact id or user's contact id
* @param int $uid User ID
*
- * @return boolean is the contact url being followed?
+ * @return boolean is the contact sharing with given user?
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function isSharing($cid, $uid)
+ public static function isSharing(int $cid, int $uid): bool
{
if (Contact\User::isBlocked($cid, $uid)) {
return false;
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function isSharingByURL($url, $uid)
+ public static function isSharingByURL(string $url, int $uid): bool
{
$cid = self::getIdForURL($url, $uid);
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function getBasepath($url, $dont_update = false)
+ public static function getBasepath(string $url, bool $dont_update = false): string
{
$contact = DBA::selectFirst('contact', ['id', 'baseurl'], ['uid' => 0, 'nurl' => Strings::normaliseLink($url)]);
if (!DBA::isResult($contact)) {
*
* @return boolean Is it the same server?
*/
- public static function isLocal($url)
+ public static function isLocal(string $url): bool
{
if (!parse_url($url, PHP_URL_SCHEME)) {
$addr_parts = explode('@', $url);
* Check if the given contact ID is on the same server
*
* @param string $url The contact link
- *
* @return boolean Is it the same server?
*/
- public static function isLocalById(int $cid)
+ public static function isLocalById(int $cid): bool
{
$contact = DBA::selectFirst('contact', ['url', 'baseurl'], ['id' => $cid]);
if (!DBA::isResult($contact)) {
* @return integer|boolean Public contact id for given user id
* @throws \Exception
*/
- public static function getPublicIdByUserId($uid)
+ public static function getPublicIdByUserId(int $uid)
{
$self = DBA::selectFirst('contact', ['url'], ['self' => true, 'uid' => $uid]);
if (!DBA::isResult($self)) {
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function getPublicAndUserContactID($cid, $uid)
+ public static function getPublicAndUserContactID(int $cid, int $uid): array
{
// We have to use the legacy function as long as the post update hasn't finished
if (DI::config()->get('system', 'post_update_version') < 1427) {
*
* @param int $cid Either public contact id or user's contact id
* @param int $uid User ID
- *
* @return array with public and user's contact id
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- private static function legacyGetPublicAndUserContactID($cid, $uid)
+ private static function legacyGetPublicAndUserContactID(int $cid, int $uid): array
{
if (empty($uid) || empty($cid)) {
return [];
* @param int $cid A contact ID
* @param int $uid The User ID
* @param array $fields The selected fields for the contact
- *
* @return array The contact details
*
* @throws \Exception
*/
- public static function getContactForUser($cid, $uid, array $fields = [])
+ public static function getContactForUser(int $cid, int $uid, array $fields = []): array
{
$contact = DBA::selectFirst('contact', $fields, ['id' => $cid, 'uid' => $uid]);
* @return bool Operation success
* @throws HTTPException\InternalServerErrorException
*/
- public static function createSelfFromUserId($uid)
+ public static function createSelfFromUserId(int $uid): bool
{
$user = DBA::selectFirst('user', ['uid', 'username', 'nickname', 'pubkey', 'prvkey'],
['uid' => $uid, 'account_expired' => false]);
/**
* Updates the self-contact for the provided user id
*
- * @param int $uid
- * @param boolean $update_avatar Force the avatar update
- * @return bool "true" if updated
+ * @param int $uid
+ * @param bool $update_avatar Force the avatar update
+ * @return bool "true" if updated
* @throws HTTPException\InternalServerErrorException
*/
- public static function updateSelfFromUserID($uid, $update_avatar = false)
+ public static function updateSelfFromUserID(int $uid, bool $update_avatar = false): bool
{
$fields = ['id', 'uri-id', 'name', 'nick', 'location', 'about', 'keywords', 'avatar', 'prvkey', 'pubkey', 'manually-approve',
'xmpp', 'matrix', 'contact-type', 'forum', 'prv', 'avatar-date', 'url', 'nurl', 'unsearchable',
}
$file_suffix = 'jpg';
+ $url = DI::baseUrl() . '/profile/' . $user['nickname'];
+
+ $fields = [
+ 'name' => $profile['name'],
+ 'nick' => $user['nickname'],
+ 'avatar-date' => $self['avatar-date'],
+ 'location' => Profile::formatLocation($profile),
+ 'about' => $profile['about'],
+ 'keywords' => $profile['pub_keywords'],
+ 'contact-type' => $user['account-type'],
+ 'prvkey' => $user['prvkey'],
+ 'pubkey' => $user['pubkey'],
+ 'xmpp' => $profile['xmpp'],
+ 'matrix' => $profile['matrix'],
+ 'network' => Protocol::DFRN,
+ 'url' => $url,
+ // it seems as if ported accounts can have wrong values, so we make sure that now everything is fine.
+ 'nurl' => Strings::normaliseLink($url),
+ 'uri-id' => ItemURI::getIdByURI($url),
+ 'addr' => $user['nickname'] . '@' . substr(DI::baseUrl(), strpos(DI::baseUrl(), '://') + 3),
+ 'request' => DI::baseUrl() . '/dfrn_request/' . $user['nickname'],
+ 'notify' => DI::baseUrl() . '/dfrn_notify/' . $user['nickname'],
+ 'poll' => DI::baseUrl() . '/dfrn_poll/'. $user['nickname'],
+ 'confirm' => DI::baseUrl() . '/dfrn_confirm/' . $user['nickname'],
+ 'poco' => DI::baseUrl() . '/poco/' . $user['nickname'],
+ ];
- $fields = ['name' => $profile['name'], 'nick' => $user['nickname'],
- 'avatar-date' => $self['avatar-date'], 'location' => Profile::formatLocation($profile),
- 'about' => $profile['about'], 'keywords' => $profile['pub_keywords'],
- 'contact-type' => $user['account-type'], 'prvkey' => $user['prvkey'],
- 'pubkey' => $user['pubkey'], 'xmpp' => $profile['xmpp'], 'matrix' => $profile['matrix'], 'network' => Protocol::DFRN];
-
- // it seems as if ported accounts can have wrong values, so we make sure that now everything is fine.
- $fields['url'] = DI::baseUrl() . '/profile/' . $user['nickname'];
- $fields['nurl'] = Strings::normaliseLink($fields['url']);
- $fields['uri-id'] = ItemURI::getIdByURI($fields['url']);
- $fields['addr'] = $user['nickname'] . '@' . substr(DI::baseUrl(), strpos(DI::baseUrl(), '://') + 3);
- $fields['request'] = DI::baseUrl() . '/dfrn_request/' . $user['nickname'];
- $fields['notify'] = DI::baseUrl() . '/dfrn_notify/' . $user['nickname'];
- $fields['poll'] = DI::baseUrl() . '/dfrn_poll/'. $user['nickname'];
- $fields['confirm'] = DI::baseUrl() . '/dfrn_confirm/' . $user['nickname'];
- $fields['poco'] = DI::baseUrl() . '/poco/' . $user['nickname'];
$avatar = Photo::selectFirst(['resource-id', 'type'], ['uid' => $uid, 'profile' => true]);
if (DBA::isResult($avatar)) {
* Marks a contact for removal
*
* @param int $id contact id
+ * @return void
* @throws HTTPException\InternalServerErrorException
*/
- public static function remove($id)
+ public static function remove(int $id)
{
// We want just to make sure that we don't delete our "self" contact
$contact = DBA::selectFirst('contact', ['uri-id', 'photo', 'thumb', 'micro', 'uid'], ['id' => $id, 'self' => false]);
* Unfollow the remote contact
*
* @param array $contact Target user-specific contact (uid != 0) array
+ * @return void
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
* The local relationship is updated immediately, the eventual remote server is messaged in the background.
*
* @param array $contact User-specific contact array (uid != 0) to revoke the follow from
+ * @return void
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
* Completely severs a relationship with a contact
*
* @param array $contact User-specific contact (uid != 0) array
+ * @return void
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
* up or some other transient event and that there's a possibility we could recover from it.
*
* @param array $contact contact to mark for archival
- * @return null
+ * @return void
* @throws HTTPException\InternalServerErrorException
*/
public static function markForArchival(array $contact)
* @see Contact::markForArchival()
*
* @param array $contact contact to be unmarked for archival
- * @return null
+ * @return void
* @throws \Exception
*/
public static function unmarkForArchival(array $contact)
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function photoMenu(array $contact, $uid = 0)
+ public static function photoMenu(array $contact, int $uid = 0): array
{
$pm_url = '';
$status_link = '';
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function getIdForURL($url, $uid = 0, $update = null, $default = [])
+ public static function getIdForURL(string $url = null, int $uid = 0, $update = null, array $default = []): int
{
$contact_id = 0;
- if ($url == '') {
+ if (empty($url)) {
Logger::notice('Empty url, quitting', ['url' => $url, 'user' => $uid, 'default' => $default]);
return 0;
}
$contact = self::getByURL($url, false, ['id', 'network', 'uri-id'], $uid);
if (!empty($contact)) {
- $contact_id = $contact["id"];
+ $contact_id = $contact['id'];
if (empty($update) && (!empty($contact['uri-id']) || is_bool($update))) {
Logger::debug('Contact found', ['url' => $url, 'uid' => $uid, 'update' => $update, 'cid' => $contact_id]);
$data = [];
if (empty($default['network']) || $update) {
- $data = Probe::uri($url, "", $uid);
+ $data = Probe::uri($url, '', $uid);
// Take the default values when probing failed
- if (!empty($default) && !in_array($data["network"], array_merge(Protocol::NATIVE_SUPPORT, [Protocol::PUMPIO]))) {
+ if (!empty($default) && !in_array($data['network'], array_merge(Protocol::NATIVE_SUPPORT, [Protocol::PUMPIO]))) {
$data = array_merge($data, $default);
}
} elseif (!empty($default['network'])) {
* @return boolean Is the contact archived?
* @throws HTTPException\InternalServerErrorException
*/
- public static function isArchived(int $cid)
+ public static function isArchived(int $cid): bool
{
if ($cid == 0) {
return false;
* Checks if the contact is blocked
*
* @param int $cid contact id
- *
* @return boolean Is the contact blocked?
* @throws HTTPException\InternalServerErrorException
*/
- public static function isBlocked($cid)
+ public static function isBlocked(int $cid): bool
{
if ($cid == 0) {
return false;
* Checks if the contact is hidden
*
* @param int $cid contact id
- *
* @return boolean Is the contact hidden?
* @throws \Exception
*/
- public static function isHidden($cid)
+ public static function isHidden(int $cid): bool
{
if ($cid == 0) {
return false;
* @return string posts in HTML
* @throws \Exception
*/
- public static function getPostsFromUrl($contact_url, $thread_mode = false, $update = 0, $parent = 0, bool $only_media = false)
+ public static function getPostsFromUrl(string $contact_url, bool $thread_mode = false, int $update = 0, int $parent = 0, bool $only_media = false): string
{
return self::getPostsFromId(self::getIdForURL($contact_url), $thread_mode, $update, $parent, $only_media);
}
* @return string posts in HTML
* @throws \Exception
*/
- public static function getPostsFromId($cid, $thread_mode = false, $update = 0, $parent = 0, bool $only_media = false)
+ public static function getPostsFromId(int $cid, bool $thread_mode = false, int $update = 0, int $parent = 0, bool $only_media = false): string
{
$contact = DBA::selectFirst('contact', ['contact-type', 'network'], ['id' => $cid]);
if (!DBA::isResult($contact)) {
* @param int $type type of contact or account
* @return string
*/
- public static function getAccountType(int $type)
+ public static function getAccountType(int $type): string
{
switch ($type) {
case self::TYPE_ORGANISATION:
/**
* Blocks a contact
*
- * @param int $cid
- * @return bool
- * @throws \Exception
+ * @param int $cid Contact id to block
+ * @param string $reason Block reason
+ * @return bool Whether it was successful
*/
- public static function block($cid, $reason = null)
+ public static function block(int $cid, string $reason = null): bool
{
$return = self::update(['blocked' => true, 'block_reason' => $reason], ['id' => $cid]);
/**
* Unblocks a contact
*
- * @param int $cid
- * @return bool
- * @throws \Exception
+ * @param int $cid Contact id to unblock
+ * @return bool Whether it was successfull
*/
- public static function unblock($cid)
+ public static function unblock(int $cid): bool
{
$return = self::update(['blocked' => false, 'block_reason' => null], ['id' => $cid]);
/**
* Ensure that cached avatar exist
*
- * @param integer $cid
+ * @param integer $cid Contact id
*/
public static function checkAvatarCache(int $cid)
{
* @param bool $no_update Don't perfom an update if no cached avatar was found
* @return string photo path
*/
- private static function getAvatarPath(array $contact, string $size, $no_update = false)
+ private static function getAvatarPath(array $contact, string $size, bool $no_update = false): string
{
$contact = self::checkAvatarCacheByArray($contact, $no_update);
* @param bool $no_update Don't perfom an update if no cached avatar was found
* @return string photo path
*/
- public static function getPhoto(array $contact, bool $no_update = false)
+ public static function getPhoto(array $contact, bool $no_update = false): string
{
return self::getAvatarPath($contact, Proxy::SIZE_SMALL, $no_update);
}
* @param bool $no_update Don't perfom an update if no cached avatar was found
* @return string photo path
*/
- public static function getThumb(array $contact, bool $no_update = false)
+ public static function getThumb(array $contact, bool $no_update = false): string
{
return self::getAvatarPath($contact, Proxy::SIZE_THUMB, $no_update);
}
* @param bool $no_update Don't perfom an update if no cached avatar was found
* @return string photo path
*/
- public static function getMicro(array $contact, bool $no_update = false)
+ public static function getMicro(array $contact, bool $no_update = false): string
{
return self::getAvatarPath($contact, Proxy::SIZE_MICRO, $no_update);
}
* @param bool $no_update Don't perfom an update if no cached avatar was found
* @return array contact array with avatar cache fields
*/
- private static function checkAvatarCacheByArray(array $contact, bool $no_update = false)
+ private static function checkAvatarCacheByArray(array $contact, bool $no_update = false): array
{
$update = false;
$contact_fields = [];
* @param string $size Size of the avatar picture
* @return string avatar URL
*/
- public static function getDefaultAvatar(array $contact, string $size)
+ public static function getDefaultAvatar(array $contact, string $size): string
{
switch ($size) {
case Proxy::SIZE_MICRO:
if (!DI::config()->get('system', 'remote_avatar_lookup')) {
$platform = '';
+ $type = Contact::TYPE_PERSON;
if (!empty($contact['id'])) {
- $account = DBA::selectFirst('account-user-view', ['platform'], ['id' => $contact['id']]);
+ $account = DBA::selectFirst('account-user-view', ['platform', 'contact-type'], ['id' => $contact['id']]);
$platform = $account['platform'] ?? '';
+ $type = $account['contact-type'] ?? Contact::TYPE_PERSON;
}
-
+
if (empty($platform) && !empty($contact['uri-id'])) {
- $account = DBA::selectFirst('account-user-view', ['platform'], ['uri-id' => $contact['uri-id']]);
+ $account = DBA::selectFirst('account-user-view', ['platform', 'contact-type'], ['uri-id' => $contact['uri-id']]);
$platform = $account['platform'] ?? '';
+ $type = $account['contact-type'] ?? Contact::TYPE_PERSON;
}
switch ($platform) {
- case 'mastodon':
- // @see https://github.com/mastodon/mastodon/tree/main/public/avatars/original/missing.png
- $default = '/images/default/mastodon.png';
- break;
-
- case 'pleroma':
- // @see https://git.pleroma.social/pleroma/pleroma/-/blob/develop/priv/static/images/avi.png
- $default = '/images/default/pleroma.png';
+ case 'corgidon':
+ /**
+ * Picture credits
+ * @license GNU Affero General Public License v3.0
+ * @link https://github.com/msdos621/corgidon/blob/main/public/avatars/original/missing.png
+ */
+ $default = '/images/default/corgidon.png';
break;
case 'diaspora':
- // @see https://github.com/diaspora/diaspora/
+ /**
+ * Picture credits
+ * @license GNU Affero General Public License v3.0
+ * @link https://github.com/diaspora/diaspora/
+ */
$default = '/images/default/diaspora.png';
break;
+ case 'gotosocial':
+ /**
+ * Picture credits
+ * @license GNU Affero General Public License v3.0
+ * @link https://github.com/superseriousbusiness/gotosocial/blob/main/web/assets/default_avatars/GoToSocial_icon1.svg
+ */
+ $default = '/images/default/gotosocial.svg';
+ break;
+
+ case 'hometown':
+ /**
+ * Picture credits
+ * @license GNU Affero General Public License v3.0
+ * @link https://github.com/hometown-fork/hometown/blob/hometown-dev/public/avatars/original/missing.png
+ */
+ $default = '/images/default/hometown.png';
+ break;
+
+ case 'koyuspace':
+ /**
+ * Picture credits
+ * @license GNU Affero General Public License v3.0
+ * @link https://github.com/koyuspace/mastodon/blob/main/public/avatars/original/missing.png
+ */
+ $default = '/images/default/koyuspace.png';
+ break;
+
+ case 'ecko':
+ case 'qoto':
+ case 'mastodon':
+ /**
+ * Picture credits
+ * @license GNU Affero General Public License v3.0
+ * @link https://github.com/mastodon/mastodon/tree/main/public/avatars/original/missing.png
+ */
+ $default = '/images/default/mastodon.png';
+ break;
+
case 'peertube':
- // @see https://github.com/Chocobozzz/PeerTube/blob/develop/client/src/assets/images/default-avatar-video-channel.png
- $default = '/images/default/peertube.png';
+ if ($type == Contact::TYPE_COMMUNITY) {
+ /**
+ * Picture credits
+ * @license GNU Affero General Public License v3.0
+ * @link https://github.com/Chocobozzz/PeerTube/blob/develop/client/src/assets/images/default-avatar-video-channel.png
+ */
+ $default = '/images/default/peertube-channel.png';
+ } else {
+ /**
+ * Picture credits
+ * @license GNU Affero General Public License v3.0
+ * @link https://github.com/Chocobozzz/PeerTube/blob/develop/client/src/assets/images/default-avatar-account.png
+ */
+ $default = '/images/default/peertube-account.png';
+ }
+ break;
+
+ case 'pleroma':
+ /**
+ * Picture credits
+ * @license GNU Affero General Public License v3.0
+ * @link https://git.pleroma.social/pleroma/pleroma/-/blob/develop/priv/static/images/avi.png
+ */
+ $default = '/images/default/pleroma.png';
+ break;
+
+ case 'plume':
+ /**
+ * Picture credits
+ * @license GNU Affero General Public License v3.0
+ * @link https://github.com/Plume-org/Plume/blob/main/assets/images/default-avatar.png
+ */
+ $default = '/images/default/plume.png';
break;
}
return DI::baseUrl() . $default;
* @param string $updated Contact update date
* @return string avatar link
*/
- public static function getAvatarUrlForId(int $cid, string $size = '', string $updated = '', string $guid = ''):string
+ public static function getAvatarUrlForId(int $cid, string $size = '', string $updated = '', string $guid = ''): string
{
// We have to fetch the "updated" variable when it wasn't provided
// The parameter can be provided to improve performance
* @param string $size One of the Proxy::SIZE_* constants
* @return string avatar link
*/
- public static function getAvatarUrlForUrl(string $url, int $uid, string $size = ''):string
+ public static function getAvatarUrlForUrl(string $url, int $uid, string $size = ''): string
{
$condition = ["`nurl` = ? AND ((`uid` = ? AND `network` IN (?, ?)) OR `uid` = ?)",
Strings::normaliseLink($url), $uid, Protocol::FEED, Protocol::MAIL, 0];
* @param string $updated Contact update date
* @return string header link
*/
- public static function getHeaderUrlForId(int $cid, string $size = '', string $updated = '', string $guid = ''):string
+ public static function getHeaderUrlForId(int $cid, string $size = '', string $updated = '', string $guid = ''): string
{
// We have to fetch the "updated" variable when it wasn't provided
// The parameter can be provided to improve performance
}
/**
+ * Updates contact record by provided id and optional network
+ *
* @param integer $id contact id
* @param string $network Optional network we are probing for
* @return boolean
}
/**
+ * Updates contact record by provided id and probed data
+ *
* @param integer $id contact id
* @param array $ret Probed data
* @return boolean
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- private static function updateFromProbeArray(int $id, array $ret)
+ private static function updateFromProbeArray(int $id, array $ret): bool
{
/*
Warning: Never ever fetch the public key via Probe::uri and write it into the contacts.
$new_pubkey = $ret['pubkey'] ?? '';
- if ($uid == 0) {
+ if ($uid == 0 && DI::config()->get('system', 'fetch_featured_posts')) {
if ($ret['network'] == Protocol::ACTIVITYPUB) {
$apcontact = APContact::getByURL($ret['url'], false);
if (!empty($apcontact['featured'])) {
}
/**
+ * Updates contact record by provided URL
+ *
* @param integer $url contact url
* @return integer Contact id
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function updateFromProbeByURL($url)
+ public static function updateFromProbeByURL(string $url): int
{
$id = self::getIdForURL($url);
* @param string $network Network of that contact
* @return string with protocol
*/
- public static function getProtocol($url, $network)
+ public static function getProtocol(string $url, string $network): string
{
if ($network != Protocol::DFRN) {
return $network;
* @throws HTTPException\NotFoundException
* @throws \ImagickException
*/
- public static function createFromProbeForUser(int $uid, $url, $network = '')
+ public static function createFromProbeForUser(int $uid, string $url, string $network = ''): array
{
$result = ['cid' => -1, 'success' => false, 'message' => ''];
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function addRelationship(array $importer, array $contact, array $datarray, $sharing = false, $note = '')
+ public static function addRelationship(array $importer, array $contact, array $datarray, bool $sharing = false, string $note = '')
{
// Should always be set
if (empty($datarray['author-id'])) {
* Update the local relationship when a local user loses a follower
*
* @param array $contact User-specific contact (uid != 0) array
+ * @return void
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
* @return array
* @throws \Exception
*/
- public static function pruneUnavailable(array $contact_ids)
+ public static function pruneUnavailable(array $contact_ids): array
{
if (empty($contact_ids)) {
return [];
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function magicLink($contact_url, $url = '')
+ public static function magicLink(string $contact_url, string $url = ''): string
{
if (!Session::isAuthenticated()) {
return $url ?: $contact_url; // Equivalent to: ($url != '') ? $url : $contact_url;
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function magicLinkById($cid, $url = '')
+ public static function magicLinkById(int $cid, string $url = ''): string
{
$contact = DBA::selectFirst('contact', ['id', 'network', 'url', 'uid'], ['id' => $cid]);
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function magicLinkByContact($contact, $url = '')
+ public static function magicLinkByContact(array $contact, string $url = ''): string
{
$destination = $url ?: $contact['url']; // Equivalent to ($url != '') ? $url : $contact['url'];
*
* @return boolean "true" if it is a forum
*/
- public static function isForum($contactid)
+ public static function isForum(int $contactid): bool
{
$fields = ['contact-type'];
$condition = ['id' => $contactid];
* @param array $contact
* @return bool
*/
- public static function canReceivePrivateMessages(array $contact)
+ public static function canReceivePrivateMessages(array $contact): bool
{
$protocol = $contact['network'] ?? $contact['protocol'] ?? Protocol::PHANTOM;
$self = $contact['self'] ?? false;
* @return array with search results
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
- public static function searchByName(string $search, string $mode = '', int $uid = 0)
+ public static function searchByName(string $search, string $mode = '', int $uid = 0): array
{
if (empty($search)) {
return [];
* @param array $urls
* @return array result "count", "added" and "updated"
*/
- public static function addByUrls(array $urls)
+ public static function addByUrls(array $urls): array
{
$added = 0;
$updated = 0;
* @return array The profile array
* @throws Exception
*/
- public static function getRandomContact()
+ public static function getRandomContact(): array
{
$contact = DBA::selectFirst('contact', ['id', 'network', 'url', 'uid'], [
"`uid` = ? AND `network` = ? AND NOT `failed` AND `last-item` > ?",