}
/**
- * Returns an array of sugguested contacts for given user id
+ * Returns an array of suggested contacts for given user id
*
* @param int $uid User id
* @param int $start optional, default 0
AND NOT `hidden` AND `network` IN (?, ?, ?, ?)",
$cid,
0,
- $uid,
- Contact::FRIEND,
- Contact::SHARING,
- Protocol::ACTIVITYPUB,
- Protocol::DFRN,
- $diaspora,
- $ostatus,
+ $uid, Contact::FRIEND, Contact::SHARING,
+ Protocol::ACTIVITYPUB, Protocol::DFRN, $diaspora, $ostatus,
], [
'order' => ['last-item' => true],
'limit' => $totallimit,
/**
* Apply changes from contact update data to user-contact table
*
- * @param array $fields Fields
- * @param array $condition Conditions
+ * @param array $fields
+ * @param array $condition
* @return void
* @throws PDOException
* @throws Exception
DBA::close($contacts);
}
- DBA::commit();
+ DBA::commit();
}
/**
* Fetch server data from '/statistics.json' on the given server
*
* @param string $url URL of the given server
- *
* @return array server data
*/
private static function fetchStatistics(string $url): array
/**
* Check if the link is stored
*
- * @param int $uriId URI id
+ * @param int $uriId
* @param string $url URL
* @return bool Whether record has been found
*/
/**
* Returns URL by URI id and other URL
*
- * @param int $uriId URI id
- * @param string $url URL
- * @param string size Size
+ * @param int $uriId
+ * @param string $url
+ * @param string $size
* @return string Found link URL + id on success, $url on failture
*/
public static function getByLink(int $uriId, string $url, string $size = ''): string
* Fetches MIME type by URL and Accept: header
*
* @param string $url URL to fetch
- * @param string $accept Accept: line
+ * @param string $accept Comma-separated list of expected response MIME type(s)
* @return string Discovered MIME type or empty string on failure
*/
private static function fetchMimeType(string $url, string $accept = HttpClientAccept::DEFAULT): string
/**
* Add external links and replace them in the body
*
- * @param integer $uriId URI id
- * @param string $body HTML body
+ * @param integer $uriId
+ * @param string $body Item body formatted with BBCodes
* @return string Body with replaced links
*/
public static function insertFromBody(int $uriId, string $body): string
use Friendica\Core\Worker;
use Friendica\Database\DBA;
use Friendica\DI;
+use Friendica\Factory\Api\Mastodon\Notification as NotificationFactory;
use Friendica\Navigation\Notifications\Entity;
use Friendica\Object\Api\Mastodon\Notification;
use Minishlink\WebPush\VAPID;
/**
* Prepare push notification
*
- * @param Notification $Notification Notification instance
+ * @param Notification $Notification
* @return void
*/
public static function pushByNotification(Entity\Notification $notification)
{
- $type = \Friendica\Factory\Api\Mastodon\Notification::getType($notification);
+ $type = NotificationFactory::getType($notification);
if (DI::notify()->NotifyOnDesktop($notification, $type)) {
DI::notify()->createFromNotification($notification);
/**
* Store tag/mention elements
*
- * @param integer $uriId URI id
+ * @param integer $uriId
* @param integer $type Tag type
* @param string $name Tag name
* @param string $url Contact URL (optional)
* Get a tag id for a given tag name and URL
*
* @param string $name Name of tag
- * @param string $url URL
+ * @param string $url
* @param int $type Type of tag
* @return int Tag id
*/
/**
* Store tag/mention elements
*
- * @param integer $uriId URI id
- * @param string $hash Hash
- * @param string $name Name
- * @param string $url URL
+ * @param integer $uriId
+ * @param string $hash
+ * @param string $name
+ * @param string $url
* @param boolean $probing Whether probing is active
* @return void
*/
/**
* Remove tag/mention
*
- * @param integer $uriId URI id
+ * @param integer $uriId
* @param integer $type Type
* @param string $name Name
* @param string $url URL
/**
* Remove tag/mention
*
- * @param integer $uriId URI id
- * @param string $hash Hash
- * @param string $name Name
- * @param string $url URL
+ * @param integer $uriId
+ * @param string $hash
+ * @param string $name
+ * @param string $url
* @return void
*/
public static function removeByHash(int $uriId, string $hash, string $name, string $url = '')
/**
* Get the type for the given hash
*
- * @param string $hash Hash
+ * @param string $hash
* @return integer Tag type
*/
private static function getTypeForHash(string $hash): int
/**
* Create implicit mentions for a given post
*
- * @param integer $uriId URI Id
- * @param integer $parentUriId Parent URI id
+ * @param integer $uriId
+ * @param integer $parentUriId
* @return void
*/
public static function createImplicitMentions(int $uriId, int $parentUriId)
/**
* Retrieves the terms from the provided type(s) associated with the provided item ID.
*
- * @param int $uriId URI id
+ * @param int $uriId
* @param array $type Tag type(s)
* @return array|bool Array on success, false on error
* @throws \Exception
/**
* Return a string with all tags and mentions
*
- * @param integer $uriId URI id
+ * @param integer $uriId
* @param array $type Tag type(s)
* @return string tags and mentions
* @throws \Exception
{
$condition = ["`name` = ? AND (`uid` = ? OR (`uid` = ? AND NOT `global`))
AND (`network` IN (?, ?, ?, ?) OR (`uid` = ? AND `uid` != ?))",
- $search,
- 0,
- $uid,
- Protocol::ACTIVITYPUB,
- Protocol::DFRN,
- Protocol::DIASPORA,
- Protocol::OSTATUS,
- $uid,
- 0,
+ $search, 0, $uid,
+ Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, $uid, 0,
];
return DBA::count('tag-search-view', $condition);
{
$condition = ["`name` = ? AND (`uid` = ? OR (`uid` = ? AND NOT `global`))
AND (`network` IN (?, ?, ?, ?) OR (`uid` = ? AND `uid` != ?))",
- $search,
- 0,
- $uid,
- Protocol::ACTIVITYPUB,
- Protocol::DFRN,
- Protocol::DIASPORA,
- Protocol::OSTATUS,
- $uid,
- 0,
+ $search, 0, $uid,
+ Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, $uid, 0,
];
if (!empty($last_uriid)) {
FROM `tag-search-view`
WHERE `private` = ? AND `uid` = ? AND `uri-id` > ? $block_sql
GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?",
- Item::PUBLIC,
- 0,
- $post['uri-id'],
+ Item::PUBLIC, 0, $post['uri-id'],
$limit
);
FROM `tag-search-view`
WHERE `private` = ? AND `wall` AND `origin` AND `uri-id` > ? $block_sql
GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?",
- Item::PUBLIC,
- $post['uri-id'],
+ Item::PUBLIC, $post['uri-id'],
$limit
);
/**
* Fetch user who subscribed to the tags of the given item
*
- * @param integer $uriId URI Id
+ * @param integer $uriId
* @return array User list
*/
public static function getUIDListByURIId(int $uriId): array
use Friendica\Core\System;
use Friendica\Database\Database;
use Friendica\Database\DBA;
+use Friendica\Factory\Api\Mastodon\Notification as NotificationFactory;
use Friendica\Model;
use Friendica\Navigation\Notifications\Collection;
use Friendica\Navigation\Notifications\Entity;
public function NotifyOnDesktop(Entity\Notification $Notification, string $type = null): bool
{
if (is_null($type)) {
- $type = \Friendica\Factory\Api\Mastodon\Notification::getType($Notification);
+ $type = NotificationFactory::getType($Notification);
}
if (in_array($Notification->type, [Model\Post\UserNotification::TYPE_FOLLOW, Model\Post\UserNotification::TYPE_SHARED])) {
/**
* Set conversation thread
*
- * @param Thread $thread Thread to set or NULL
+ * @param Thread|null $thread
* @return void
*/
public function setThread(Thread $thread = null)
/**
* Get conversation
*
- * @return Thread
+ * @return Thread|null
*/
public function getThread()
{
* Prepends mentions (@) to $body variable
*
* @param string $body HTML code
- * @param int $uriid URI id
+ * @param int $uriId
* @param string $authorLink Author link
* @return string HTML code with prepended mentions
*/
* Cleans the body of a post if it contains picture links
*
* @param string $body The body
- * @param integer $uriid URI id
+ * @param integer $uriId
* @return string The cleaned body
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
/**
* Gets info array from given URL, cached data has priority
*
- * @param string $url URL
+ * @param string $url
* @return array Info
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
/**
* Gets info from URL uncached
*
- * @param string $url URL
+ * @param string $url
* @return array Info array
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
* @param string $addr The email address
* @return boolean True if it's a valid email address, false if it's not
*/
- public static function isEmailDomainValid(string $addr)
+ public static function isEmailDomainValid(string $addr): bool
{
if (DI::config()->get('system', 'disable_email_validation')) {
return true;
* @param string $url URL which get tested
* @return boolean True if url is allowed otherwise return false
*/
- public static function isUrlAllowed(string $url)
+ public static function isUrlAllowed(string $url): bool
{
$h = @parse_url($url);
*
* @return boolean
*/
- public static function isUrlBlocked(string $url)
+ public static function isUrlBlocked(string $url): bool
{
$host = @parse_url($url, PHP_URL_HOST);
if (!$host) {
*
* @return boolean
*/
- public static function isRedirectBlocked(string $url)
+ public static function isRedirectBlocked(string $url): bool
{
$host = @parse_url($url, PHP_URL_HOST);
if (!$host) {
* or if allowed list is not configured
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
- public static function isEmailDomainAllowed(string $email)
+ public static function isEmailDomainAllowed(string $email): bool
{
$domain = strtolower(substr($email, strpos($email, '@') + 1));
if (!$domain) {
* @param array $domain_list
* @return boolean
*/
- public static function isDomainAllowed(string $domain, array $domain_list)
+ public static function isDomainAllowed(string $domain, array $domain_list): bool
{
$found = false;
return $found;
}
- public static function lookupAvatarByEmail(string $email)
+ public static function lookupAvatarByEmail(string $email): string
{
$avatar['size'] = 300;
$avatar['email'] = $email;
* @param string $url Any user-submitted URL that may contain tracking params
* @return string The same URL stripped of tracking parameters
*/
- public static function stripTrackingQueryParams(string $url)
+ public static function stripTrackingQueryParams(string $url): string
{
$urldata = parse_url($url);
- if (!empty($urldata["query"])) {
- $query = $urldata["query"];
+
+ if (!empty($urldata['query'])) {
+ $query = $urldata['query'];
parse_str($query, $querydata);
if (is_array($querydata)) {
if (in_array(
$param,
[
- "utm_source", "utm_medium", "utm_term", "utm_content", "utm_campaign",
- "wt_mc", "pk_campaign", "pk_kwd", "mc_cid", "mc_eid",
- "fb_action_ids", "fb_action_types", "fb_ref",
- "awesm", "wtrid",
- "woo_campaign", "woo_source", "woo_medium", "woo_content", "woo_term"]
+ 'utm_source', 'utm_medium', 'utm_term', 'utm_content', 'utm_campaign',
+ // As seen from Purism
+ 'mtm_source', 'mtm_medium', 'mtm_term', 'mtm_content', 'mtm_campaign',
+ 'wt_mc', 'pk_campaign', 'pk_kwd', 'mc_cid', 'mc_eid',
+ 'fb_action_ids', 'fb_action_types', 'fb_ref',
+ 'awesm', 'wtrid',
+ 'woo_campaign', 'woo_source', 'woo_medium', 'woo_content', 'woo_term']
)
) {
- $pair = $param . "=" . urlencode($value);
- $url = str_replace($pair, "", $url);
+ $pair = $param . '=' . urlencode($value);
+ $url = str_replace($pair, '', $url);
// Second try: if the url isn't encoded completely
- $pair = $param . "=" . str_replace(" ", "+", $value);
- $url = str_replace($pair, "", $url);
+ $pair = $param . '=' . str_replace(' ', '+', $value);
+ $url = str_replace($pair, '', $url);
// Third try: Maybey the url isn't encoded at all
- $pair = $param . "=" . $value;
- $url = str_replace($pair, "", $url);
+ $pair = $param . '=' . $value;
+ $url = str_replace($pair, '', $url);
- $url = str_replace(["?&", "&&"], ["?", ""], $url);
+ $url = str_replace(['?&', '&&'], ['?', ''], $url);
}
}
}
- if (substr($url, -1, 1) == "?") {
+ if (substr($url, -1, 1) == '?') {
$url = substr($url, 0, -1);
}
}
return $url;
}
- $base = ['scheme' => parse_url($basepath, PHP_URL_SCHEME),
- 'host' => parse_url($basepath, PHP_URL_HOST)];
+ $base = [
+ 'scheme' => parse_url($basepath, PHP_URL_SCHEME),
+ 'host' => parse_url($basepath, PHP_URL_HOST),
+ ];
$parts = array_merge($base, parse_url('/' . ltrim($url, '/')));
return self::unparseURL($parts);
*
* @param string $url1
* @param string $url2
- * @return string The matching part
+ * @return string The matching part or empty string on error
*/
- public static function getUrlMatch(string $url1, string $url2)
+ public static function getUrlMatch(string $url1, string $url2): string
{
- if (($url1 == "") || ($url2 == "")) {
- return "";
+ if (($url1 == '') || ($url2 == '')) {
+ return '';
}
$url1 = Strings::normaliseLink($url1);
$parts1 = parse_url($url1);
$parts2 = parse_url($url2);
- if (!isset($parts1["host"]) || !isset($parts2["host"])) {
- return "";
+ if (!isset($parts1['host']) || !isset($parts2['host'])) {
+ return '';
}
- if (empty($parts1["scheme"])) {
- $parts1["scheme"] = '';
+ if (empty($parts1['scheme'])) {
+ $parts1['scheme'] = '';
}
- if (empty($parts2["scheme"])) {
- $parts2["scheme"] = '';
+ if (empty($parts2['scheme'])) {
+ $parts2['scheme'] = '';
}
- if ($parts1["scheme"] != $parts2["scheme"]) {
- return "";
+ if ($parts1['scheme'] != $parts2['scheme']) {
+ return '';
}
- if (empty($parts1["host"])) {
- $parts1["host"] = '';
+ if (empty($parts1['host'])) {
+ $parts1['host'] = '';
}
- if (empty($parts2["host"])) {
- $parts2["host"] = '';
+ if (empty($parts2['host'])) {
+ $parts2['host'] = '';
}
- if ($parts1["host"] != $parts2["host"]) {
- return "";
+ if ($parts1['host'] != $parts2['host']) {
+ return '';
}
- if (empty($parts1["port"])) {
- $parts1["port"] = '';
+ if (empty($parts1['port'])) {
+ $parts1['port'] = '';
}
- if (empty($parts2["port"])) {
- $parts2["port"] = '';
+ if (empty($parts2['port'])) {
+ $parts2['port'] = '';
}
- if ($parts1["port"] != $parts2["port"]) {
- return "";
+ if ($parts1['port'] != $parts2['port']) {
+ return '';
}
- $match = $parts1["scheme"]."://".$parts1["host"];
+ $match = $parts1['scheme'] . '://' . $parts1['host'];
- if ($parts1["port"]) {
- $match .= ":".$parts1["port"];
+ if ($parts1['port']) {
+ $match .= ':' . $parts1['port'];
}
- if (empty($parts1["path"])) {
- $parts1["path"] = '';
+ if (empty($parts1['path'])) {
+ $parts1['path'] = '';
}
- if (empty($parts2["path"])) {
- $parts2["path"] = '';
+ if (empty($parts2['path'])) {
+ $parts2['path'] = '';
}
- $pathparts1 = explode("/", $parts1["path"]);
- $pathparts2 = explode("/", $parts2["path"]);
+ $pathparts1 = explode('/', $parts1['path']);
+ $pathparts2 = explode('/', $parts2['path']);
$i = 0;
- $path = "";
+ $path = '';
do {
$path1 = $pathparts1[$i] ?? '';
$path2 = $pathparts2[$i] ?? '';
if ($path1 == $path2) {
- $path .= $path1."/";
+ $path .= $path1 . '/';
}
} while (($path1 == $path2) && ($i++ <= count($pathparts1)));
* Glue url parts together
*
* @param array $parsed URL parts
- *
* @return string The glued URL.
* @deprecated since version 2021.12, use GuzzleHttp\Psr7\Uri::fromParts($parts) instead
*/
- public static function unparseURL(array $parsed)
+ public static function unparseURL(array $parsed): string
{
$get = function ($key) use ($parsed) {
return isset($parsed[$key]) ? $parsed[$key] : null;
$scheme = $get('scheme');
$query = $get('query');
$fragment = $get('fragment');
- $authority = ($userinfo !== null ? $userinfo."@" : '') .
+ $authority = ($userinfo !== null ? $userinfo.'@' : '') .
$get('host') .
- ($port ? ":$port" : '');
+ ($port ? ':$port' : '');
- return (strlen($scheme) ? $scheme.":" : '') .
- (strlen($authority) ? "//".$authority : '') .
+ return (strlen($scheme) ? $scheme . ':' : '') .
+ (strlen($authority) ? '//' . $authority : '') .
$get('path') .
- (strlen($query) ? "?".$query : '') .
- (strlen($fragment) ? "#".$fragment : '');
+ (strlen($query) ? '?' . $query : '') .
+ (strlen($fragment) ? '#' . $fragment : '');
}
/**
/**
* Switch the scheme of an url between http and https
*
- * @param string $url URL
- *
- * @return string switched URL
+ * @param string $url
+ * @return string Switched URL
*/
- public static function switchScheme(string $url)
+ public static function switchScheme(string $url): string
{
$scheme = parse_url($url, PHP_URL_SCHEME);
if (empty($scheme)) {
* @param array $additionalParams Associative array of parameters
* @return string
*/
- public static function appendQueryParam(string $path, array $additionalParams)
+ public static function appendQueryParam(string $path, array $additionalParams): string
{
$parsed = parse_url($path);
*
* @param string $etag The page etag
* @param string $last_modified The page last modification UTC date
+ * @return void
* @throws \Exception
*/
public static function checkEtagModified(string $etag, string $last_modified)
/**
* Check if the given URL is a local link
*
- * @param string $url
- * @return bool
+ * @param string $url
+ * @return bool
*/
- public static function isLocalLink(string $url)
+ public static function isLocalLink(string $url): bool
{
return (strpos(Strings::normaliseLink($url), Strings::normaliseLink(DI::baseUrl())) !== false);
}
/**
* Check if the given URL is a valid HTTP/HTTPS URL
*
- * @param string $url
- * @return bool
+ * @param string $url
+ * @return bool
*/
- public static function isValidHttpUrl(string $url)
+ public static function isValidHttpUrl(string $url): bool
{
$scheme = parse_url($url, PHP_URL_SCHEME);
return !empty($scheme) && in_array($scheme, ['http', 'https']) && parse_url($url, PHP_URL_HOST);
use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\DI;
+use Friendica\Factory\Api\Mastodon\Notification as NotificationFactory;
use Friendica\Model\Contact;
use Friendica\Model\Post;
use Friendica\Model\Subscription as ModelSubscription;
'access_token' => $application_token['access_token'],
'preferred_locale' => $user['language'],
'notification_id' => $nid,
- 'notification_type' => \Friendica\Factory\Api\Mastodon\Notification::getType($notification),
+ 'notification_type' => NotificationFactory::getType($notification),
'icon' => $actor['thumb'] ?? '',
'title' => $title ?: $l10n->t('Notification from Friendica'),
'body' => $body ?: $l10n->t('Empty Post'),
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
- * Automatic post-databse structure change updates
+ * Automatic post-database structure change updates
*
* These functions are responsible for doing critical post update changes to the data (not the structure) in the database.
*
* If you need to run a script before the database update, name the function "pre_update_4712()"
*/
+use Friendica\Core\Config\ValueObject\Cache;
use Friendica\Core\Logger;
use Friendica\Core\Storage\Capability\ICanReadFromStorage;
+use Friendica\Core\Storage\Type\Database as DatabaseStorage;
use Friendica\Core\Update;
use Friendica\Core\Worker;
use Friendica\Database\Database;
{
$name = DI::config()->get('storage', 'name');
- // in case of an empty config, set "Database" as default storage backend
+ // In case of an empty config, set "Database" as default storage backend
if (empty($name)) {
- DI::config()->set('storage', 'name', \Friendica\Core\Storage\Type\Database::getName());
+ DI::config()->set('storage', 'name', DatabaseStorage::getName());
}
// In case of a Using deprecated storage class value, set the right name for it
// In case the distributed cache driver is the default value, but the current cache driver isn't default,
// we assume that the distributed cache driver should be the same as the current cache driver
- if (
- $distributed_cache_driver_source === \Friendica\Core\Config\ValueObject\Cache::SOURCE_STATIC
- && $cache_driver_source > \Friendica\Core\Config\ValueObject\Cache::SOURCE_STATIC
- ) {
+ if ($distributed_cache_driver_source === Cache::SOURCE_STATIC && $cache_driver_source > Cache::SOURCE_STATIC) {
DI::config()->set('system', 'distributed_cache_driver', DI::config()->get('system', 'cache_driver'));
}