[ol]
- [li] First list element
- [li] Second list element
+ [*] First list element
+ [*] Second list element
[/ol]
[list=1]
- [li] First list element
- [li] Second list element
+ [*] First list element
+ [*] Second list element
[/list]
@@ -404,8 +404,8 @@ code
[list=]
- [li] First list element
- [li] Second list element
+ [*] First list element
+ [*] Second list element
[/list]
@@ -416,8 +416,8 @@ code
[list=i]
- [li] First list element
- [li] Second list element
+ [*] First list element
+ [*] Second list element
[/list]
@@ -428,8 +428,8 @@ code
[list=I]
- [li] First list element
- [li] Second list element
+ [*] First list element
+ [*] Second list element
[/list]
@@ -440,8 +440,8 @@ code
[list=a]
- [li] First list element
- [li] Second list element
+ [*] First list element
+ [*] Second list element
[/list]
@@ -452,8 +452,8 @@ code
[list=A]
- [li] First list element
- [li] Second list element
+ [*] First list element
+ [*] Second list element
[/list]
diff --git a/doc/Channels.md b/doc/Channels.md
index 63d2582170..de3f6718d8 100644
--- a/doc/Channels.md
+++ b/doc/Channels.md
@@ -23,17 +23,12 @@ Predefined Channels
* For you: Posts from contacts you interact with and who interact with you. In detail, it consists of:
* Posts from people you interact with on a more than average level.
- * Posts from the accounts that you follow with a more than average number of interactions.
+ * Posts from the accounts that you follow with a more than average number of interactions-
* Posts from accounts where you activated "notify on new posts" or where you have set the channel frequency accordingly.
-* Discover: Posts from contacts you don't follow, but that might be of interest for you to follow. In detail, it consists of:
- * Posts from people you don't follow but you interact with on a more than average level.
- * Posts from people you don't follow but that interact with you on a more than average level.
- * Popular posts from people you don't follow but you interacted with or who interacted with you on any level.
* What's Hot: Posts with a more than average number of interactions.
* Language: Posts in your language.
* Followers: Posts from your followers that you don't follow.
* Sharers of sharers: Posts from accounts that are followed by accounts that you follow.
-* Quiet sharers: Posts from accounts that you follow but who don't post very often.
* Images: Posts with images.
* Audio: Posts with audio.
* Videos: Posts with videos.
@@ -48,51 +43,43 @@ Each channel is defined by these values:
* Label: This value is mandatory and is used for the menu label.
* Description: A short description of the content. This can help to keep the overview, when you have got a lot of channels.
* Access Key: When you want to access this channel via an access key, you can define it here. Pay attention to not use an already used one.
-* Circle: This defines the data source for this channel. By default it is set to the public timeline. There are some predefined values, like the accounts that you follow or the accounts that follow you. Also all of your circles can be selected.
+* Circle: This defines the data source for this channel. By default it is set to the public timeline. There are some predefined values, like the accounts that you follow or the accounts that follow you. Also all of your circles can be selected.
* Include Tags: Comma separated list of tags. A post will be used when it contains any of the listed tags.
-* Exclude Tags: Comma separated list of tags. If a post contain any of these tags, then it will not be part of this channel.
+* Exclude Tags: Comma separated list of tags. If a post contain any of these tags, then it will not be part of nthis channel.
* Full Text Search: This can be used to include or exclude content, based on the content and some additional keywords. It uses the "boolean mode" operators from MariaDB: https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode
-* Images, Videos, Audio: When selected, you will see content with the selected media type. This can be combined. If none of these fields are checked, you will see any content, with or without attached media.
+* Images, Videos, Audio: When selected, you will see content with the selected media type. This can be combined. If none of these fields are checked, you will see any content, with or without attacked media.
Additional keywords for the full text search
---
-Additionally to the search for content, there are keywords that can be used in the full text search.
-Alternatives are presented with "|".
+Additionally to the search for content, there are additional keywords that can be used in the full text search:
* from - Use "from:nickname" or "from:nickname@domain.tld" to search for posts from a specific author.
-* to - Use "to:nickname" or "to:nickname@domain.tld" to search for posts with the given contact as receiver.
-* group - Use "group:nickname" or "group:nickname@domain.tld" to search for posts of the given group.
-* application | relay - Use "application:nickname" or "application:nickname@domain.tld" to search for posts that had been reshared by the given relay application.
+* to - Use "from:nickname" or "from:nickname@domain.tld" to search for posts with the given contact as receiver.
+* group - Use "from:nickname" or "from:nickname@domain.tld" to search for group post of the given group.
* server - Use "server:hostname" to search for posts from a specific server. In the case of group postings, the search text contains both the hostname of the group server and the author's hostname.
* source - The ActivityPub type of the post source. Use this for example to include or exclude group posts or posts from services (aka bots).
* source:person - The post is created by a regular user account.
* source:organization - The post is created by an organisation.
* source:group - The post is created by or distributed via a group.
- * source:service | source:news - The posts originates from a service account. This source type is often used to mark bot accounts.
- * source:application | source:relay - The post is created by an application. This is most likely unused in the fediverse for post creation.
+ * source:service - The posts originates from a service account. This source type is often used to mark bot accounts.
+ * source:application - The post is created by an application. This is most likely unused in the fediverse for post creation.
* tag - Use "tag:tagname" to search for a specific tag.
-* media - With this keyword you can search for attached media.
- * media:image | media:photo | media:picture - The post contains an image
- * media:video - The post contains a video
- * media:audio - The post contains audio
- * media:card - The post contains a link preview card
- * media:post - The post links another post, means it is a quoted post
-* network | net - Use this to include or exclude some networks from your channel.
- * network:apub | network:activitypub - ActivityPub (Used by the systems in the Fediverse)
- * network:dfrn | network:friendica - Legacy Friendica protocol. Nowayday Friendica mostly uses ActivityPub.
- * network:dspr | network:diaspora - The Diaspora protocol is mainly used by Diaspora itself. Some other systems support the protocol as well like Hubzilla, Socialhome or Ganggo.
+* network - Use this to include or exclude some networks from your channel.
+ * network:apub - ActivityPub (Used by the systems in the Fediverse)
+ * network:dfrn - Legacy Friendica protocol. Nowayday Friendica mostly uses ActivityPub.
+ * network:dspr - The Diaspora protocol is mainly used by Diaspora itself. Some other systems support the protocol as well like Hubzilla, Socialhome or Ganggo.
* network:feed - RSS/Atom feeds
* network:mail - Mails that had been imported via IMAP.
- * network:dscs | network:discourse - Posts that are received by the Discourse connector.
- * network:tmbl | network:tumblr - Posts that are received by the Tumblr connector.
- * network:bsky | network:bluesky - Posts that are received by the Bluesky connector.
+ * network:stat - The OStatus protocol is mainly used by old GNU Social installations.
+ * network:dscs - Posts that are received by the Discourse connector.
+ * network:tmbl - Posts that are received by the Tumblr connector.
+ * network:bsky - Posts that are received by the Bluesky connector.
* platform - Use this to include or exclude some platforms from your channel, e.g. "+platform:friendica". In the case of group postings, the search text contains both the platform of the group server and the author's platform.
* visibility - You have the choice between different visibilities. You can only see unlisted or private posts that you have the access for.
* visibility:public
* visibility:unlisted
* visibility:private
-* language | lang - Use "language:code" to search for posts with the given language in the [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.
-Remember that you can combine these keywords.
-So for example you can create a channel with all posts that talk about the Fediverse - that aren't posted in the Fediverse with the search terms: "fediverse -network:apub -network:dfrn"
+Remember that you can combine these kerywords.
+So for example you can create a channel with all posts that talk about the Fediverse - that aren't posted in the Fediverse with the search terms: "fediverse -network:apub -network:dfrn"
\ No newline at end of file
diff --git a/doc/Circles-and-Privacy.md b/doc/Circles-and-Privacy.md
index abec72f15a..d701173c07 100644
--- a/doc/Circles-and-Privacy.md
+++ b/doc/Circles-and-Privacy.md
@@ -95,6 +95,14 @@ However we take privacy seriously and don't behave like some networks that __pre
Your profile and "wall" may also be visited by your friends from other networks, and you can block access to these by web visitors that Friendica doesn't know.
Be aware that this could include some of your friends on other networks.
+This may produce undesired results when posting a long status message to (for instance) Twitter.
+When Friendica sends a post to these networks which exceeds the service length limit, we truncate it and provide a link to the original.
+The original is a link back to your Friendica profile.
+As Friendica cannot prove who they are, it may not be possible for these people to view your post in full.
+
+For people in this situation we would recommend providing a "Twitter-length" summary, with more detail for friends that can see the post in full.
+You can do so by including the BBCode tag *abstract* in your posting.
+
Blocking your profile or entire Friendica site from unknown web visitors also has serious implications for communicating with GNU Social members.
These networks communicate with others via public protocols that are not authenticated.
In order to view your posts, these networks have to access them as an "unknown web visitor".
diff --git a/doc/Config.md b/doc/Config.md
index afd4e65277..3e0459f9c8 100644
--- a/doc/Config.md
+++ b/doc/Config.md
@@ -43,7 +43,7 @@ Some examples of common known configuration files:
Addons can define their own default configuration values in `addon/[addon]/config/[addon].config.php` which is loaded when the addon is activated.
If needed, an alternative `config` path can be used by using the `FRIENDICA_CONFIG_DIR` environment variable (full path required!).
-This is useful in case of hardening the system by separating configuration from program binaries.
+This is useful in case of hardening the system by separating configuration from program binaries.
### Static Configuration location
@@ -160,6 +160,16 @@ $a->config['register_policy'] = REGISTER_CLOSED;
+$a->path = "value";
+
+
+'system' => [
+ 'urlpath' => 'value',
+],
+
+
+
+
$default_timezone = "value";
@@ -303,7 +313,7 @@ Enabling the admin panel for an account, and thus making the account holder admi
'config' => [
'admin_email' => 'someone@example.com',
]
-
+
Where you have to match the email address used for the account with the one you enter to the `config/local.config.php` file.
If more than one account should be able to access the admin panel, separate the email addresses with a comma.
diff --git a/doc/Connectors.md b/doc/Connectors.md
index 77d44e909f..992e83bba9 100644
--- a/doc/Connectors.md
+++ b/doc/Connectors.md
@@ -4,10 +4,15 @@ Connectors
* [Home](help)
Connectors allow you to connect with external social networks and services.
-They are only required for posting to existing accounts on for example Bluesky, Tumblr or Twitter.
-For Bluesky and Tumblr you can also enable a bidirectional synchronisation, so that you can use Friendica to read your timeline from Tumblr or Bluesky.
+They are only required for posting to existing accounts on Twitter or GNU Social.
There is also a connector for accessing your email INBOX.
+If the following network connectors are installed on your system, select the following links to visit the appropriate settings page and configure them for your account:
+
+* [Twitter](/settings/addons)
+* [GNU Social](/settings/addons)
+* [Email](/settings)
+
Instructions For Connecting To People On Specific Services
==========================================================
@@ -23,6 +28,23 @@ Diaspora
Add the Diaspora 'handle' to the 'Connect/Follow' text box on your [Contacts](contacts) page.
+
+GNU Social
+---
+
+This is described as the "federated social web" or OStatus contacts.
+
+Please note that there are **no** privacy provisions on the OStatus network.
+Any message which is delivered to **any** OStatus member is visible to anybody in the world and will negate any privacy settings that you have in effect.
+These messages will also turn up in public searches.
+
+Since OStatus communications do not use authentication, if you select the profile privacy option to hide your profile and messages from unknown viewers, OStatus members will **not** be able to receive your communications.
+
+To connect with an OStatus member insert their profile URL or Identity address into the Connect box on your [Contacts](contacts) page.
+
+The GNU Social connector may be used if you wish posts to appear on an OStatus site using an existing OStatus account.
+It is not necessary to do this, as you may 'follow' OStatus members from Friendica and they may follow you (by placing their own Identity Address into your 'Connect' page).
+
Blogger, Wordpress, RSS feeds, arbitrary web pages
---
@@ -32,6 +54,14 @@ PLease note that you will not be able to reply to these contacts.
This feed reader feature will allow you to _connect_ with millions of pages on the internet.
All that the pages need to have is a discoverable feed using either the RSS or Atom syndication format, and which provides an author name and a site image in a form which we can extract.
+Twitter
+---
+
+To follow a Twitter member, the Twitter-Connector (Addon) needs to be configured on your node.
+If this is the case put the URL of the Twitter member's main page into the Connect box on your [Contacts](contacts) page.
+To reply, you must have the Twitter connector installed, and reply using your own status editor.
+Begin the message with @twitterperson replacing with the Twitter username.
+
Email
---
diff --git a/doc/Developers-Intro.md b/doc/Developers-Intro.md
index 5dbf1def4a..c500b27741 100644
--- a/doc/Developers-Intro.md
+++ b/doc/Developers-Intro.md
@@ -62,7 +62,7 @@ If you want to have git automatically update the dependencies with composer, you
}
# `composer install` if the `composer.lock` file gets changed
# to update all the php dependencies
- check_run composer.lock "bin/composer.phar install"
+ check_run composer.lock "bin/composer.phar install --no-dev"
just place it into `.git/hooks/post-merge` and make it executable.
@@ -156,98 +156,3 @@ If you are interested in improving those clients, please contact the developers
* iOS: *currently no client*
* SailfishOS: **Friendiy** [src](https://kirgroup.com/projects/fabrixxm/harbour-friendly) - developed by [Fabio](https://kirgroup.com/profile/fabrixxm/profile)
* Windows: **Friendica Mobile** for Windows versions [before 8.1](http://windowsphone.com/s?appid=e3257730-c9cf-4935-9620-5261e3505c67) and [Windows 10](https://www.microsoft.com/store/apps/9nblggh0fhmn) - developed by [Gerhard Seeber](http://mozartweg.dyndns.org/friendica/profile/gerhard/profile)
-
-## Backward compatibility
-
-### Backward Compatibility Promise
-
-Friendica can be extended by addons.
-These addons relies on many classes and conventions from Friendica.
-As developers our work on Friendica should not break things in the addons without giving the addon maintainers a chance to fix their addons.
-Our goal is to build trust for the addon maintainers but also allow Friendica developers to move on.
-This is called the Backward Compatibility Promise.
-
-Inspired by the [Symonfy BC promise](https://symfony.com/doc/current/contributing/code/bc.html) we promise BC for every class, interface, trait, enum, function, constant, etc., but with the exception of:
-
-- Classes, interfaces, traits, enums, functions, methods, properties and constants marked as `@internal` or `@private`
-- Extending or modifying any non-abstract class or method in any way
-- Extending or modifying a `final` class or method in any way
-- Calling `private` methods (via Reflection)
-- Accessing `private` properties (via Reflection)
-- Accessing `private` methods (via Reflection)
-- Accessing `private` constants (via Reflection)
-- New properties on overridden `protected` methods
-- Possible name collisions with new methods in an extended class (addon developers should prefix their custom methods in the extending classes in an appropriate way)
-- Dropping support for every PHP version that has reached end of life
-
-### Deprecation and removing features
-
-As the development goes by Friendica needs to get rid of old code and concepts.
-This will be done in 3 steps to give addon maintainers a chance to adjust their addons.
-
-**1. Label deprecation**
-
-If we as the Friendica maintainers decide to remove some functions, classes, interface, etc. we start this by adding a `@deprecated` PHPDoc note on the code.
-For instance the class `Friendica\Core\Logger` should be removed, so we add the following note with a possible replacement:
-
-```php
-/**
- * Logger functions
- *
- * @deprecated 2025.02 Use constructor injection or `DI::logger()` instead
- */
-class Logger {/* ... */}
-```
-
-This way addon developers might be notified early by their IDE or other tools that the usage of the class is deprecated.
-In Friendica we can now start to replace all occurrences and usage of this class with the alternative.
-
-The deprecation label COULD be remain over multiple releases.
-As long as the code that is labeled with `@deprecated` is used inside Friendica or the official addon repository, it SHOULD NOT be hard deprecated.
-
-**2. Hard deprecation**
-
-If the deprecated code is no longer used inside Friendica or the official addons it MUST be hard deprecated.
-The code MUST NOT be deleted.
-Starting from the next release, it MUST be stay for at least 5 months.
-Hard deprecated code COULD remain longer than 5 months, depending on when a release appears.
-Addon developer SHOULD NOT consider that they have more than 5 months to adjust their code.
-
-Hard deprecation code means that the code triggers a muted `E_USER_DEPRECATION` error if it is called.
-For instance with the deprecated class `Friendica\Core\Logger` the call of every method should trigger an error:
-
-```php
-/**
- * Logger functions
- *
- * @deprecated 2025.02 Use constructor injection or `DI::logger()` instead
- */
-class Logger {
- public static function info(string $message, array $context = [])
- {
- @trigger_error('Class `' . __CLASS__ . '` is deprecated since 2025.05 and will be removed after 5 months, use constructor injection or `DI::logger()` instead.', E_USER_DEPRECATED);
-
- self::getInstance()->info($message, $context);
- }
-
- /* ... */
-}
-```
-
-This way the maintainer or users of addons will be notified in the logs that the addon will stop working in one of the next releases.
-The addon maintainer now has at least 5 months or at least one release to fix the deprecations.
-
-Please note that the deprecation message contains the release that will be released next.
-In the example the code was hard deprecated with release `2025.05`, so it COULD be removed earliest with the `2025.11` release.
-
-**3. Code Removing**
-
-We promise BC for deprecated code for at least 5 months, starting from the release the deprecation was announced.
-After this time the deprecated code COULD be remove within the next release.
-
-Breaking changes MUST be happen only in a new release but MUST be hard deprecated first.
-The BC promise refers only to releases, respective the `stable` branch.
-Deprecated code on other branches like `develop` or RC branches could be removed earlier.
-This is not a BC break as long as the release will be published 5 months after the hard deprecation.
-
-If a release breaks BC without deprecation or earlier than 5 months, this SHOULD considered as a bug and BC SHOULD be restored in a bugfix release.
diff --git a/doc/Export-Import-Contacts.md b/doc/Export-Import-Contacts.md
index 824c9e2ebb..95b33f380c 100644
--- a/doc/Export-Import-Contacts.md
+++ b/doc/Export-Import-Contacts.md
@@ -11,7 +11,8 @@ To export the list of accounts that you follow, go to the [Settings Export perso
## Import of followed Contacts
-To import contacts from a CSV file, go to the [import contacts](settings/importcontacts).
+To import contacts from a CSV file, go to the [Settings page](settings).
+At the bottom of the *account settings* page you'll find the *import contacts* section.
Upload the CSV file there.
### Supported File Format
diff --git a/doc/FAQ.md b/doc/FAQ.md
index 4e8d9b19eb..ebb8c041b5 100644
--- a/doc/FAQ.md
+++ b/doc/FAQ.md
@@ -103,9 +103,6 @@ When a certain language is forced, the language remains until session is closed.
### How do blocked, ignored, archived and hidden contacts behave?
-These are various categories of contacts that are restricted in some way.
-Many of these types are related to [Safety](help/Safety).
-
##### Blocked
Direct communication will be blocked.
@@ -129,7 +126,7 @@ However, unlike blocking, existing posts this person made before being archived
##### Hidden
-The contact not be displayed in your public friend list.
+Contact not be displayed in your public friend list.
However, a hidden contact will appear normally in conversations and this may expose their hidden status to anybody who can see the conversation.
@@ -177,19 +174,16 @@ Example: Friendica Support
Friendica supports [Mastodon API](help/API-Mastodon) and [Twitter API | gnusocial](help/api).
This means you can use some of the Mastodon and Twitter clients for Friendica.
The available features are client specific and may differ.
-Clients dedicated to Friendica are marked in **bold**.
#### Android
* [AndStatus](http://andstatus.org) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.andstatus.app), [Google Play](https://play.google.com/store/apps/details?id=org.andstatus.app))
+* [Fedi](https://github.com/Big-Fig/Fediverse.app) ([Google Play](https://play.google.com/store/apps/details?id=com.fediverse.app))
* [Fedilab](https://fedilab.app) ([F-Droid](https://f-droid.org/app/fr.gouv.etalab.mastodon), [Google Play](https://play.google.com/store/apps/details?id=app.fedilab.android))
-* **[Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa)** ([F-Droid](https://git.friendi.ca/lubuwest/Friendiqa#install), [Google Play](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa))
-* [Husky](https://codeberg.org/husky/husky) ([F-Droid](https://f-droid.org/repository/browse/?fdid=su.xash.husky), [Google Play](https://play.google.com/store/apps/details?id=su.xash.husky))
+* [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) ([F-Droid](https://git.friendi.ca/lubuwest/Friendiqa#install), [Google Play](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa))
+* [Husky](https://git.sr.ht/~captainepoch/husky) ([F-Droid](https://f-droid.org/repository/browse/?fdid=su.xash.husky), [Google Play](https://play.google.com/store/apps/details?id=su.xash.husky))
* [Mastodon](https://github.com/mastodon/mastodon-android) ([F-Droid](https://f-droid.org/en/packages/org.joinmastodon.android/), [Google Play](https://play.google.com/store/apps/details?id=org.joinmastodon.android))
-* [Pachli](https://pachli.app/) ([F-Droid](https://f-droid.org/en/packages/app.pachli/), [Google Play](https://play.google.com/store/apps/details?id=app.pachli))
-* **[Raccoon for Friendica](https://github.com/LiveFastEatTrashRaccoon/RaccoonForFriendica)** ([F-Droid](https://f-droid.org/packages/com.livefast.eattrash.raccoonforfriendica), [Google Play](https://play.google.com/apps/testing/com.livefast.eattrash.raccoonforfriendica))
-* **[Relatica](https://gitlab.com/mysocialportal/relatica)**
-* [Subway Tooter](https://github.com/tateisu/SubwayTooter) ([F-Droid via Izzy](https://android.izzysoft.de/repo/apk/jp.juggler.subwaytooter.noFcm))
+* [Subway Tooter](https://github.com/tateisu/SubwayTooter) ([F-Droid](https://android.izzysoft.de/repo/apk/jp.juggler.subwaytooter))
* [Tooot](https://tooot.app/) ([Google Play](https://play.google.com/store/apps/details?id=com.xmflsct.app.tooot))
* [Tusky](https://tusky.app) ([F-Droid](https://f-droid.org/repository/browse/?fdid=com.keylesspalace.tusky), [Google Play](https://play.google.com/store/apps/details?id=com.keylesspalace.tusky))
* [TwidereX](https://github.com/TwidereProject/TwidereX-Android) ([F-Droid](https://f-droid.org/en/packages/com.twidere.twiderex/), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex))
@@ -198,30 +192,26 @@ Clients dedicated to Friendica are marked in **bold**.
#### iOS
* [Mastodon](https://joinmastodon.org/apps) ([App Store](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974))
-* **[Relatica](https://gitlab.com/mysocialportal/relatica)**
* [Stella*](https://www.stella-app.net/) ([App Store](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048))
-* [Tooot](https://github.com/tooot-app) ([App Store](https://apps.apple.com/app/id1549772269))
+* [Tooot](https://github.com/tooot-app) ([App Store](https://apps.apple.com/app/id1549772269)
* [TwidereX](https://github.com/TwidereProject/TwidereX-iOS) ([App Store](https://apps.apple.com/app/twidere-x/id1530314034))
#### Linux
* [Choqok](https://choqok.kde.org)
-* **[Relatica](https://gitlab.com/mysocialportal/relatica)**
+* [Whalebird](https://whalebird.social/en/desktop/contents) ([GitHub](https://github.com/h3poteto/whalebird-desktop))
* [TheDesk](https://thedesk.top/en/) ([GitHub](https://github.com/cutls/TheDesk))
* [Toot](https://toot.readthedocs.io/en/latest/)
-* [Whalebird](https://whalebird.social/en/desktop/contents) ([GitHub](https://github.com/h3poteto/whalebird-desktop))
#### macOS
-* **[Relatica](https://gitlab.com/mysocialportal/relatica)**
* [TheDesk](https://thedesk.top/en/) ([GitHub](https://github.com/cutls/TheDesk))
* [Whalebird](https://whalebird.social/en/desktop/contents) ([App Store](https://apps.apple.com/de/app/whalebird/id1378283354), [GitHub](https://github.com/h3poteto/whalebird-desktop))
#### Windows
-* **[Relatica](https://gitlab.com/mysocialportal/relatica)**
* [TheDesk](https://thedesk.top/en/) ([GitHub](https://github.com/cutls/TheDesk))
-* [Whalebird](https://whalebird.social/en/desktop/contents) ([Microsoft Store](https://apps.microsoft.com/detail/9nbw4csdv5hc), [GitHub](https://github.com/h3poteto/whalebird-desktop))
+* [Whalebird](https://whalebird.social/en/desktop/contents) ([Website Download](https://whalebird.social/en/desktop/contents/downloads#windows), [GitHub](https://github.com/h3poteto/whalebird-desktop))
#### Web Frontend
diff --git a/doc/Home.md b/doc/Home.md
index b8b3517a45..33ed640746 100644
--- a/doc/Home.md
+++ b/doc/Home.md
@@ -1,5 +1,5 @@
-Help
-====
+Friendica Documentation and Resources
+=====================================
**User Manual**
@@ -14,7 +14,6 @@ Help
* You and other users
* [Connectors](help/Connectors)
* [Making Friends](help/Making-Friends)
- * [Safety](help/Safety)
* [Circles and Privacy](help/Circles-and-Privacy)
* [Tags and Mentions](help/Tags-and-Mentions)
* [Community Groups](help/Groups)
@@ -31,7 +30,7 @@ Help
* [Install](help/Install)
* [Update](help/Update)
* [Settings & Admin Panel](help/Settings)
-* [Installing Connectors](help/Installing-Connectors)
+* [Installing Connectors (Twitter/GNU Social)](help/Installing-Connectors)
* [Install an ejabberd server (XMPP chat) with synchronized credentials](help/install-ejabberd)
* [Using SSL with Friendica](help/SSL)
* [Config values that can only be set in config/local.config.php](help/Config)
@@ -65,18 +64,18 @@ Help
* [Database schema documentation](help/database)
* [Class Autoloading](help/autoloader)
-**Links**
-
-* Website: [https://friendi.ca](https://friendi.ca)
-* Help Group: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers)
-* XMPP: [support@forum.friendi.ca](xmpp:support@forum.friendi.ca?join)
-* IRC: [https://web.libera.chat/?channels=#friendica](https://web.libera.chat/?channels=#friendica)
-* Matrix: [https://matrix.to/#/#friendi.ca:matrix.org](https://matrix.to/#/#friendi.ca:matrix.org)
-* Mailing List: [https://mailman.friendi.ca/mailman/listinfo/support-friendi.ca](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca)
+**External Resources**
+* [Main Website](https://friendi.ca)
+* Ways to get Support
+ * Friendica Support Group: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers)
+ * [Mailing List Archive](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca) you can subscribe to the list by sending an email to ``support-request(at)friendi.ca?subject=subscribe``
+ * Community chat rooms (the IRC, Matrix and XMPP rooms are bridged) these public chats are logged [from IRC](https://gnusociarg.nsupdate.info/2021/%23friendica/) and [Matrix](https://view.matrix.org/alias/%23friendi.ca:matrix.org/)
+ * XMPP/Jabber MUC: support(at)forum.friendi.ca
+ * IRC: #friendica at [libera.chat](https://web.libera.chat/?channels=#friendica)
+ * Matrix: [#friendi.ca](https://matrix.to/#/#friendi.ca:matrix.org) or [#friendica-en](https://matrix.to/#/#friendica-en:matrix.org) at matrix.org
**About**
-* [Server Information](friendica)
-* [Terms of Service](tos)
-* [Credits](credits)
+* [Site/Version Info](friendica)
+* [Friendica Credits](credits)
diff --git a/doc/Improve-Performance.md b/doc/Improve-Performance.md
index 9134cb6c74..727fa104be 100644
--- a/doc/Improve-Performance.md
+++ b/doc/Improve-Performance.md
@@ -14,6 +14,10 @@ Please go to /admin/site/ on your system and change the following values:
This value reduces the data that is send from the server to the client. 50 is a value that doesn't influences image quality too much.
+ Set "OStatus conversation completion interval" to "never".
+
+If you have many OStatus contacts then completing of conversations can take some time. Since you will miss several comments in OStatus threads, you maybe should consider the option "At post arrival" instead.
+
Enable "Use MySQL full text engine"
When using MyISAM (default) or InnoDB on MariaDB 10 this speeds up search.
diff --git a/doc/Install.md b/doc/Install.md
index 3c162d519b..4715c27233 100644
--- a/doc/Install.md
+++ b/doc/Install.md
@@ -27,10 +27,10 @@ Due to the large variety of operating systems and PHP platforms in existence we
### Requirements
-* Apache with mod_rewrite enabled and "[AllowOverride All](https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride)" so you can use a local `.htaccess` file
+* Apache with mod-rewrite enabled and "Options All" so you can use a local `.htaccess` file
* PHP 7.4+
* PHP *command line* access with register_argc_argv set to true in the php.ini file
- * Curl, GD, GMP, PDO, mbstring, MySQLi, xml, zip, IntlChar, IDN and OpenSSL extensions
+ * Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip, IntlChar and OpenSSL extensions
* The POSIX module of PHP needs to be activated (e.g. [RHEL, CentOS](http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7) have disabled it)
* Some form of email server or email gateway such that PHP mail() works.
If you cannot set up your own email server, you can use the [phpmailer](https://github.com/friendica/friendica-addons/tree/develop/phpmailer) addon and use a remote SMTP server.
@@ -44,7 +44,7 @@ For alternative server configurations (such as Nginx server and MariaDB database
### Optional
-* PHP ImageMagick extension (php-imagick) for animated GIF and animated WebP support.
+* PHP ImageMagick extension (php-imagick) for animated GIF support.
## Installation procedure
@@ -58,7 +58,6 @@ If this is nothing for you, you might be interested in the following:
* [Tutorial: Creating a Friendica Server with Ubuntu 22.04](https://nequalsonelifestyle.com/2022/07/30/creating-friendica-server-ubuntu/)
* [Setting Up Friendica Daemon as a Systemd Service Tutorial](https://nequalsonelifestyle.com/2022/08/04/setting-up-friendica-daemon-systemd-service/)
* [Setting up Friendica on Unraid](https://www.jenovarain.com/2023/03/setting-up-friendica-on-unraid/) (NAS)
-* [Installing Friendica with Elastio](https://elest.io/open-source/friendica)
### Get Friendica
@@ -76,18 +75,8 @@ This makes the software much easier to update.
The Linux commands to clone the repository into a directory "mywebsite" would be
git clone https://github.com/friendica/friendica.git -b stable mywebsite
-
-Get the addons by going into your website folder.
-
cd mywebsite
-
-Clone the addon repository (separately):
-
- git clone https://github.com/friendica/friendica-addons.git -b stable addon
-
-Install the dependencies:
-
- bin/composer.phar run install:prod
+ bin/composer.phar install --no-dev
Make sure the folder *view/smarty3* exists and is writable by the webserver user, in this case *www-data*
@@ -95,10 +84,18 @@ Make sure the folder *view/smarty3* exists and is writable by the webserver user
chown www-data:www-data view/smarty3
chmod 775 view/smarty3
+Get the addons by going into your website folder.
+
+ cd mywebsite
+
+Clone the addon repository (separately):
+
+ git clone https://github.com/friendica/friendica-addons.git -b stable addon
+
If you want to use the development version of Friendica you can switch to the develop branch in the repository by running
git checkout develop
- bin/composer.phar run install:prod
+ bin/composer.phar install
cd addon
git checkout develop
@@ -218,6 +215,7 @@ All options will be saved in the `config/local.config.php` and are overruling th
- `-U|--dbuser ` The username of the mysql/mariadb database login (env `MYSQL_USER` or `MYSQL_USERNAME`)
- `-P|--dbpass ` The password of the mysql/mariadb database login (env `MYSQL_PASSWORD`)
- `-d|--dbdata ` The name of the mysql/mariadb database (env `MYSQL_DATABASE`)
+- `-u|--urlpath ` The URL path of Friendica - f.e. '/friendica' (env `FRIENDICA_URL_PATH`)
- `-b|--phppath ` The path of the PHP binary (env `FRIENDICA_PHP_PATH`)
- `-A|--admin ` The admin email address of Friendica (env `FRIENDICA_ADMIN_MAIL`)
- `-T|--tz ` The timezone of Friendica (env `FRIENDICA_TZ`)
@@ -269,7 +267,7 @@ You might wish to delete/rename `config/local.config.php` to another name and dr
Set up a cron job or scheduled task to run the worker once every 5-10 minutes in order to perform background processing.
Example:
- cd /base/directory; /path/to/php bin/console.php worker
+ cd /base/directory; /path/to/php bin/worker.php
Change "/base/directory", and "/path/to/php" as appropriate for your situation.
@@ -278,7 +276,7 @@ Change "/base/directory", and "/path/to/php" as appropriate for your situation.
If you are using a Linux server, run "crontab -e" and add a line like the
one shown, substituting for your unique paths and settings:
- */10 * * * * cd /home/myname/mywebsite; /usr/bin/php bin/console.php worker
+ */10 * * * * cd /home/myname/mywebsite; /usr/bin/php bin/worker.php
You can generally find the location of PHP by executing "which php".
If you run into trouble with this section please contact your hosting provider for assistance.
@@ -291,11 +289,11 @@ Once you have installed Friendica and created an admin account as part of the pr
#### worker alternative: daemon
Otherwise, you’ll need to use the command line on your remote server and start the Friendica daemon (background task) using the following command:
- cd /path/to/friendica; php bin/console.php daemon start
+ cd /path/to/friendica; php bin/daemon.php start
Once started, you can check the daemon status using the following command:
- cd /path/to/friendica; php bin/console.php daemon status
+ cd /path/to/friendica; php bin/daemon.php status
After a server restart or any other failure, the daemon needs to be restarted.
This could be achieved by a cronjob.
@@ -427,7 +425,7 @@ provided by one of our members.
>
> */10 * * * * cd /var/www/friendica/friendica/ && sudo -u www-data /usr/bin/php \
> -d suhosin.executor.func.blacklist=none \
-> -d suhosin.executor.eval.blacklist=none -f bin/console.php
+> -d suhosin.executor.eval.blacklist=none -f bin/worker.php
>
> This worked well for simple test cases, but the friendica-cron still failed
> with a fatal error:
@@ -436,7 +434,7 @@ provided by one of our members.
> (attacker 'REMOTE_ADDR not set', file '/var/www/friendica/friendica/boot.php',
> line 1341)
>
-> After a while I noticed, that `bin/console.php worker` calls further PHP script via `proc_open`.
+> After a while I noticed, that `bin/worker.php` calls further PHP script via `proc_open`.
> These scripts themselves also use `proc_open` and fail, because they are NOT
> called with `-d suhosin.executor.func.blacklist=none`.
>
diff --git a/doc/Installing-Connectors.md b/doc/Installing-Connectors.md
index bd564eb466..d63d2c2e1c 100644
--- a/doc/Installing-Connectors.md
+++ b/doc/Installing-Connectors.md
@@ -1,34 +1,89 @@
-Installing Connectors
+Installing Connectors (Twitter/GNU Social)
==================================================
* [Home](help)
-Friendica uses add-ons to connect to some networks, such as Tumblr or Bluesky.
-All of these add-ons require an account on the target network.
-In addition, you (or usually the server administrator) will need to obtain an API key to allow authenticated access to your Friendica server.
+Friendica uses addons to provide connectivity to some networks, such as Twitter.
-Site configuration
+There is also a addon to post through to an existing account on a GNU Social service.
+You only need this to post to an already existing GNU Social account, but not to communicate with GNU Social members in general.
+
+All three addons require an account on the target network.
+In addition you (or typically the server administrator) will need to obtain an API key to provide authenticated access to your Friendica server.
+
+Site Configuration
---
-Addons need to be installed by the site administrator before they can be used.
-This is done through the site administration panel.
+Addons must be installed by the site administrator before they can be used.
+This is accomplished through the site administration panel.
-Some of the connectors also require an "API key" from the service you wish to connect to.
-For Tumblr, this information can be found in the site administration pages, while for Twitter (X) each user has to create their own API key.
-Other connectors, such as Bluesky, don't require an API key at all.
+Each of the connectors also requires an "API key" from the service you wish to connect with.
+Some addons allow you to enter this information in the site administration pages, while others may require you to edit your configuration file (config/local.config.php).
+The ways to obtain these keys vary between the services, but they all require an existing account on the target service.
+Once installed, these API keys can usually be shared by all site members.
-You can find more information about specific requirements on each addon's settings page, either on the admin page or the user page.
+The details of configuring each service follow (much of this information comes directly from the addon source files):
-Bluesky Jetstream
+Twitter Addon for Friendica
---
-To further improve connectivity to Bluesky, Admins can choose to enable 'Jetstream' connectivity.
-Jetstream is a service that connects to the Bluesky firehose.
-With Jetstream, messages arrive in real time rather than having to be polled.
-It also enables real-time processing of blocks or tracking activities performed by the user via the Bluesky website or application.
+* Author: Tobias Diekershoff
+* tobias.diekershoff@gmx.net
+* License: 3-clause BSD license
-To enable Jetstream processing, run `bin/console.php jetstream' from the command line.
-You will need to define the process id file in local.config.php in the 'jetstream' section using the key 'pidfile'.
+### Configuration
+To use this addon you need a OAuth Consumer key pair (key & secret).
+You can get it from [Twitter](https://twitter.com/apps).
-To keep track of the messages processed and the drift (the time difference between the date of the message and the date the system processed that message), some fields are added to the statistics endpoint.
+Register your Friendica site as "Client" application with "Read & Write" access.
+We do not need "Twitter as login".
+When you've registered the app you get a key pair with an OAuth Consumer key and a secret key for your application/site.
+Add this key pair to your config/local.config.php:
+
+ [twitter]
+ consumerkey = your consumer_key here
+ consumersecret = your consumer_secret here
+
+After this, your users can configure their Twitter account settings from "Settings -> Connector Settings".
+
+### More documentation
+
+Find the author's documentation here: [http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/Twitter_Plugin](http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/Twitter_Plugin)
+
+
+GNU Social Addon for Friendica
+---
+
+* Author: Tobias Diekershoff
+* tobias.diekershoff@gmx.net
+* License: 3-clause BSD license
+
+### Configuration
+
+When the addon is activated the user has to acquire the following in order to connect to the GNU Social account of choice.
+
+* The base URL for the GNU Social API, for quitter.se this is https://quitter.se/api/
+* OAuth Consumer key & secret
+
+To get the OAuth Consumer key pair the user has to
+
+1 ask her Friendica admin if a pair already exists or
+2 has to register the Friendica server as a client application on the GNU Social server.
+
+This can be done from the account settings under "Settings -> Connections -> Register an OAuth client application -> Register a new application" on the GNU Social server.
+
+During the registration of the OAuth client remember the following:
+
+* Application names must be unique on the GNU Social site, so we recommend a Name of 'friendica-nnnn', replace 'nnnn' with a random number or your website name.
+* there is no callback url
+* register a desktop client
+* with read & write access
+* the Source URL should be the URL of your Friendica server
+
+After the required credentials for the application are stored in the configuration you have to actually connect your Friendica account with GNU Social.
+This is done from the Settings -> Connector Settings page.
+Follow the Sign in with GNU Social button, allow access and then copy the security code into the box provided.
+Friendica will then try to acquire the final OAuth credentials from the API.
+
+If successful, the addon settings will allow you to select to post your public messages to your GNU Social account (have a look behind the little lock symbol beneath the status "editor" on your Home or Network pages).
diff --git a/doc/Making-Friends.md b/doc/Making-Friends.md
index 85d4044cef..d928995865 100644
--- a/doc/Making-Friends.md
+++ b/doc/Making-Friends.md
@@ -98,19 +98,14 @@ As a friend, you can both communicate with each other.
diaspora* uses a different terminology, and you are given the option of allowing them to "share with you", or being full friends.
-Deleting
+Ignoring, blocking and deleting contacts
---
+Once you have become friends, if you find the person constantly sends you spam or worthless information, you can "Ignore" them - without breaking off the friendship or even alerting them to the fact that you aren't interested in anything they are saying.
+In many ways they are like a "follower" - but they don't know this.
+They think they are a friend.
-You can delete a friend no matter what the friendship status - which completely removes everything relating to that person from your website.
+You can also "block" a person.
+This completely blocks communications with that person.
+They may still be able to see your public posts, as can anybody in the world, but they cannot communicate with you directly.
-Unwanted Behaviour
----
-
-If a contact engages in abuse, harrassment, or other unwanted behaviour, there are various actions you can take.
-These include:
-
-* Reporting them to your administrator, optionally also their administrator
-* Ignoring the contact, so that you will not see their posts
-* Blocking the contact from receiving your posts
-
-For more information, see [Safety](help/Safety).
+You can also delete a friend no matter what the friendship status - which completely removes everything relating to that person from your website.
diff --git a/doc/Migrate.md b/doc/Migrate.md
index ca0e0d0d95..e116d029f6 100644
--- a/doc/Migrate.md
+++ b/doc/Migrate.md
@@ -55,9 +55,9 @@ You should see an output like this:
Finally, you may also want to optimise your database with the following command: ``mysqloptimize -p friendica-db``
-### Going offline
+### Going offline
Stop background tasks and put your server in maintenance mode.
-1. If you had set up a worker cron job like this ``*/10 * * * * cd /var/www/friendica; /usr/bin/php bin/console.php worker`` run ``crontab -e`` and comment out this line. Alternatively if you deploy a worker daemon, disable this instead.
+1. If you had set up a worker cron job like this ``*/10 * * * * cd /var/www/friendica; /usr/bin/php bin/worker.php`` run ``crontab -e`` and comment out this line. Alternatively if you deploy a worker daemon, disable this instead.
2. Put your server into maintenance mode: ``bin/console maintenance 1 "We are currently upgrading our system and will be back soon."``
## Dumping DB
@@ -73,12 +73,12 @@ Import your database on your new server: ``mysql -p friendica_db < your-friendic
### Configuration file
Copy your old server's configuration file to ``config/local.config.php``.
-Ensure the newly created database credentials are identical to the setting in the configuration file; otherwise update them accordingly.
+Ensure the newly created database credentials are identical to the setting in the configuration file; otherwise update them accordingly.
### Cron job for worker
Set up the required daily cron job.
Run ``crontab -e`` and add the following line according to your system specification
-``*/10 * * * * cd /var/www/friendica; /usr/bin/php bin/console.php worker``
+``*/10 * * * * cd /var/www/friendica; /usr/bin/php bin/worker.php``
### DNS settings
Adjust your DNS records by pointing them to your new server.
diff --git a/doc/Move-Account.md b/doc/Move-Account.md
index 9e13d7cad8..2983184be6 100644
--- a/doc/Move-Account.md
+++ b/doc/Move-Account.md
@@ -21,6 +21,11 @@ Friendica will recreate your account on the new server, with your contacts and c
A message is sent to Friendica contacts, to inform them about your move:
If your contacts are running on an updated server, your details on their side will be automatically updated.
+GNU Social contacts
+---
+Contacts on GNU Social will be archived, as we can't inform them about your move.
+You should ask them to remove your contact from their lists and re-add you, and you should do the same with their contact.
+
Diaspora contacts
---
Newer Diaspora servers are able to process "account migration" messages.
diff --git a/doc/Protocol.md b/doc/Protocol.md
index af0002472c..85fe09a5f1 100644
--- a/doc/Protocol.md
+++ b/doc/Protocol.md
@@ -20,9 +20,23 @@ Additional types are used for non standard activities.
* [Link to the specification](http://activitystrea.ms/head/activity-schema.html)
* [List of used ActivityStreams verbs and object types.](https://github.com/friendica/friendica/wiki/ActivityStreams)
+Salmon
+---
+
+Salmon is used as a message exchange protocol for replies and mentions.
+
+* [Link to the protocol summary](http://www.salmon-protocol.org/salmon-protocol-summary)
+
Portable Contacts
---
Portable Contacts is used for friends lists.
* [Link to the specification](https://web.archive.org/web/20160426223008/http://portablecontacts.net/draft-spec.html) (Link to archive.org)
+
+pubsubhubbub
+---
+
+pubsubhubbub is used for OStatus.
+
+* [Link to the specification](https://pubsubhubbub.github.io/PubSubHubbub/pubsubhubbub-core-0.4.html)
diff --git a/doc/Quick-Start-makingnewfriends.md b/doc/Quick-Start-makingnewfriends.md
index d642905698..39edd19b41 100644
--- a/doc/Quick-Start-makingnewfriends.md
+++ b/doc/Quick-Start-makingnewfriends.md
@@ -1,5 +1,5 @@
This is your Suggested Friends page.
-If you get lost, you can click this link to bring yourself back here.
+If you get lost, you can click this link to bring yourself back here.
This is a bit like the Friend Suggestions page of Facebook.
Everybody on this list has agreed that they may be suggested as a friend.
@@ -16,6 +16,6 @@ Click the link at the top of this page to go back to the suggested friends list
Feel uncomfortable adding people you don't know?
Don't worry - that's where Groups and Pages come in!
-
+
diff --git a/doc/Safety.md b/doc/Safety.md
deleted file mode 100644
index 4ecd927e87..0000000000
--- a/doc/Safety.md
+++ /dev/null
@@ -1,73 +0,0 @@
-Safety
-======
-
-* [Home](help)
-
-Each Friendica instance is linked together with a global network of other servers, some running Friendica and some running other software.
-These servers support a diverse global community of millions of users.
-Inevitably, some of these users are malicious.
-Friendica provides several features to keep you safe from abuse and harrassment.
-
-Terms of Service
----
-
-Each instance is entitled to define its own Terms of Service, also often called a Code of Conduct.
-These terms include rules for behaviour.
-These Terms of Service are visible when creating an account.
-By creating an account on a server, you agree to be bound by these Terms of Service.
-Users who violate the terms of service of their instance may face sanctions including being suspended or banned from their instance.
-
-Remember that conversations frequently involve participants from different instances with different rules.
-Participants are only bound by the rules of the server where they have an account, not by the rules of your server.
-Terms of Service may even be completely incompatible.
-
-Reporting
----
-
-Your local administrators are responsible for ensuring a safe online environment for all users on your server.
-They rely on reports from users to highlight behaviour that puts other users at risk.
-If you see problematic behaviour from a user, whether they are from another server or are local to your server, you can report that behaviour to your administrator.
-You can also choose to send that report to their administrator at the same time.
-You will be given an opportunity to select the type of problem you are seeing.
-Your local administrator then has the option of blocking that user for all users on your local instance.
-If a remote server is a constant source of abuse and their administrators are unable or unwilling to control their users behaviour, your administrator can even block the entire remote server.
-
-Ignoring
----
-
-Once you have become friends, if you find the person constantly sends you spam or worthless information, you can "Ignore" them - without breaking off the friendship or even alerting them to the fact that you aren't interested in anything they are saying.
-In many ways they are like a "follower" - but they don't know this.
-They think they are a friend.
-Your own posts will still be delivered to them.
-Other people will see their replies to you normally.
-
-Some servers are frequent sources of abusive or other unwanted behaviour.
-For this reason you can also choose to ignore entire servers.
-Users on that server can still follow you as normal.
-
-Blocking
----
-
-You can also "block" a person.
-This completely blocks communications with that person.
-Your public comments will no longer be sent to them. Their own public posts will not be visible in your stream.
-If they participate in other conversations you are following, their replies will still be part of the thread.
-However, their replies will be collapsed by default, and only visible if you open the reply.
-Other people will see their replies normally.
-
-A blocked contact will still believe that they are following you.
-If they delete you as a contact and then add you again, they will return to apparently following you but in fact still being blocked.
-You will not be notified when this happens.
-
-When you block a person, your server will notify their server that the block has occurred.
-This is so that if, for example, Alice and Bob follow you from the same server, and you want to block Alice but not Bob, their server can decide which accounts should see your post.
-This does mean that the administrator of their server can see that you have applied the block, and may inform the blocked person.
-In some cases this could lead to retaliation.
-There are several other ways someone can determine that you have blocked them, and see your public posts despite the block.
-For example, they can simply log out and view your posts.
-
-Archiving
----
-
-Archiving is similar to blocking.
-However, existing posts this person made before being archived will be visible in your stream.
diff --git a/doc/Settings.md b/doc/Settings.md
index 7ca0e22286..00c8be2c2e 100644
--- a/doc/Settings.md
+++ b/doc/Settings.md
@@ -419,7 +419,7 @@ We strongly discourage you from doing so, as this will break federation to other
Say you have a subdirectory for tests and put Friendica into a further subdirectory, the config would be:
'system' => [
- 'url' => 'https://example.com/tests/friendica',
+ 'urlpath' => 'tests/friendica',
],
## Other exceptions
diff --git a/doc/StrategyHooks.md b/doc/StrategyHooks.md
index 440728783c..2960ceeaad 100644
--- a/doc/StrategyHooks.md
+++ b/doc/StrategyHooks.md
@@ -83,8 +83,6 @@ return [
## Addons
-> ⚠️ Since Friendica 2025.02 the strategy hooks for addons are deprecated, please use PHP hooks instead.
-
The hook logic is useful for decoupling the Friendica core logic, but its primary goal is to modularize Friendica in creating addons.
Therefor you can either use the interfaces directly as shown above, or you can place your own `hooks.config.php` file inside a `static` directory directly under your addon core directory.
diff --git a/doc/Update.md b/doc/Update.md
index b6c5c53e19..40de14082c 100644
--- a/doc/Update.md
+++ b/doc/Update.md
@@ -14,7 +14,7 @@ If you installed Friendica in the ``path/to/friendica`` folder:
* ``.htaccess`` if using Apache web server
The following items only need to be copied if they are located inside your friendica path:
- * your storage folder as set in **Admin -> Site -> File Upload -> Storage base path**
+ * your storage folder as set in **Admin -> Site -> File Upload -> Storage base path**
* your item cache as set in **Admin -> Site -> Performance -> Path to item cache**
* your temp folder as set in **Admin -> Site -> Advanced -> Temp path**
3. Rename the ``path/to/friendica`` folder to ``path/to/friendica_old``.
@@ -30,7 +30,7 @@ You can get the latest changes at any time with
cd path/to/friendica
git pull
- bin/composer.phar run install:prod
+ bin/composer.phar install --no-dev
The addon tree has to be updated separately like so:
@@ -89,7 +89,7 @@ Some of the updates include the use of foreign keys now that will bump into issu
```
Error 1452 occurred during database update:
Cannot add or update a child row: a foreign key constraint fails (`friendica`.`#sql-10ea6_5a6d`, CONSTRAINT `#sql-10ea6_5a6d_ibfk_1` FOREIGN KEY (`contact-id`) REFERENCES `contact` (`id`))
-ALTER TABLE `thread` ADD FOREIGN KEY (`iid`) REFERENCES `item` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE;
+ALTER TABLE `thread` ADD FOREIGN KEY (`iid`) REFERENCES `item` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE;
```
All current known fixes for possible items that can go wrong are as below.
diff --git a/doc/Vagrant.md b/doc/Vagrant.md
index 29a2871bd8..16088cd37e 100644
--- a/doc/Vagrant.md
+++ b/doc/Vagrant.md
@@ -18,7 +18,7 @@ What you need to do:
Please use an up-to-date vagrant version from https://www.vagrantup.com/downloads.html.
2. Git clone your Friendica repository.
Inside, you'll find a `Vagrantfile` and some scripts in the `bin/dev` folder.
-Pull the PHP requirements with `bin/composer.phar install`.
+Pull the PHP requirements with `bin/composer install`.
3. Run `vagrant up` from inside the friendica clone.
This will start the virtual machine.
Be patient: When it runs for the first time, it downloads a Debian Server image and installs Friendica.
@@ -60,7 +60,7 @@ Trouble Shooting
If you see a version mis-match for the _VirtualBox Guest Additions_ between host and guest during the initial setup of the Vagrant VM, you will need to install an addon to Vagrant (ref. [Stack Overflow](https://stackoverflow.com/a/38010683)).
Stop the Vagrant VM and run the following command:
- $> vagrant plugin install vagrant-vbguest
+ $> vagrant plugin install vagrant-vbguest
On the next Vagrant up, the version problem should be fixed.
diff --git a/doc/autoloader.md b/doc/autoloader.md
index 5bc0bfe9b3..954c28813c 100644
--- a/doc/autoloader.md
+++ b/doc/autoloader.md
@@ -46,9 +46,9 @@ The code will be something like:
// mod/network.php
getAll();
diff --git a/doc/database.md b/doc/database.md
index 4036b7ec14..f6b0406956 100644
--- a/doc/database.md
+++ b/doc/database.md
@@ -68,10 +68,8 @@ Database Tables
| [post-history](help/database/db_post-history) | Post history |
| [post-link](help/database/db_post-link) | Post related external links |
| [post-media](help/database/db_post-media) | Attached media |
-| [post-origin](help/database/db_post-origin) | Posts from local users |
| [post-question](help/database/db_post-question) | Question |
| [post-question-option](help/database/db_post-question-option) | Question option |
-| [post-searchindex](help/database/db_post-searchindex) | Content for all posts |
| [post-tag](help/database/db_post-tag) | post relation to tags |
| [post-thread](help/database/db_post-thread) | Thread related data |
| [post-thread-user](help/database/db_post-thread-user) | Thread related data per user |
@@ -80,6 +78,7 @@ Database Tables
| [process](help/database/db_process) | Currently running system processes |
| [profile](help/database/db_profile) | user profiles data |
| [profile_field](help/database/db_profile_field) | Custom profile fields |
+| [push_subscriber](help/database/db_push_subscriber) | Used for OStatus: Contains feed subscribers |
| [register](help/database/db_register) | registrations requiring admin approval |
| [report](help/database/db_report) | |
| [report-post](help/database/db_report-post) | Individual posts attached to a moderation report |
diff --git a/doc/database/db_apcontact.md b/doc/database/db_apcontact.md
index 902d41ae6b..1632378ea8 100644
--- a/doc/database/db_apcontact.md
+++ b/doc/database/db_apcontact.md
@@ -6,41 +6,40 @@ ActivityPub compatible contacts - used in the ActivityPub implementation
Fields
------
-| Field | Description | Type | Null | Key | Default | Extra |
-| ------------------ | ------------------------------------------------------------------- | -------------- | ---- | --- | ------------------- | ----- |
-| url | URL of the contact | varbinary(383) | NO | PRI | NULL | |
-| uri-id | Id of the item-uri table entry that contains the apcontact url | int unsigned | YES | | NULL | |
-| uuid | | varbinary(255) | YES | | NULL | |
-| type | | varchar(20) | NO | | NULL | |
-| following | | varbinary(383) | YES | | NULL | |
-| followers | | varbinary(383) | YES | | NULL | |
-| inbox | | varbinary(383) | NO | | NULL | |
-| outbox | | varbinary(383) | YES | | NULL | |
-| sharedinbox | | varbinary(383) | YES | | NULL | |
-| featured | Address for the collection of featured posts | varbinary(383) | YES | | NULL | |
-| featured-tags | Address for the collection of featured tags | varbinary(383) | YES | | NULL | |
-| manually-approve | | boolean | YES | | NULL | |
-| discoverable | Mastodon extension: true if profile is published in their directory | boolean | YES | | NULL | |
-| suspended | Mastodon extension: true if profile is suspended | boolean | YES | | NULL | |
-| posting-restricted | lemmy:postingRestrictedToMods | boolean | YES | | NULL | |
-| nick | | varchar(255) | NO | | | |
-| name | | varchar(255) | YES | | NULL | |
-| about | | text | YES | | NULL | |
-| xmpp | XMPP address | varchar(255) | YES | | NULL | |
-| matrix | Matrix address | varchar(255) | YES | | NULL | |
-| photo | | varbinary(383) | YES | | NULL | |
-| header | Header picture | varbinary(383) | YES | | NULL | |
-| addr | | varchar(255) | YES | | NULL | |
-| alias | | varbinary(383) | YES | | NULL | |
-| pubkey | | text | YES | | NULL | |
-| subscribe | | varbinary(383) | YES | | NULL | |
-| baseurl | baseurl of the ap contact | varbinary(383) | YES | | NULL | |
-| gsid | Global Server ID | int unsigned | YES | | NULL | |
-| generator | Name of the contact's system | varchar(255) | YES | | NULL | |
-| following_count | Number of following contacts | int unsigned | YES | | 0 | |
-| followers_count | Number of followers | int unsigned | YES | | 0 | |
-| statuses_count | Number of posts | int unsigned | YES | | 0 | |
-| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
+| Field | Description | Type | Null | Key | Default | Extra |
+| ---------------- | ------------------------------------------------------------------- | -------------- | ---- | --- | ------------------- | ----- |
+| url | URL of the contact | varbinary(383) | NO | PRI | NULL | |
+| uri-id | Id of the item-uri table entry that contains the apcontact url | int unsigned | YES | | NULL | |
+| uuid | | varbinary(255) | YES | | NULL | |
+| type | | varchar(20) | NO | | NULL | |
+| following | | varbinary(383) | YES | | NULL | |
+| followers | | varbinary(383) | YES | | NULL | |
+| inbox | | varbinary(383) | NO | | NULL | |
+| outbox | | varbinary(383) | YES | | NULL | |
+| sharedinbox | | varbinary(383) | YES | | NULL | |
+| featured | Address for the collection of featured posts | varbinary(383) | YES | | NULL | |
+| featured-tags | Address for the collection of featured tags | varbinary(383) | YES | | NULL | |
+| manually-approve | | boolean | YES | | NULL | |
+| discoverable | Mastodon extension: true if profile is published in their directory | boolean | YES | | NULL | |
+| suspended | Mastodon extension: true if profile is suspended | boolean | YES | | NULL | |
+| nick | | varchar(255) | NO | | | |
+| name | | varchar(255) | YES | | NULL | |
+| about | | text | YES | | NULL | |
+| xmpp | XMPP address | varchar(255) | YES | | NULL | |
+| matrix | Matrix address | varchar(255) | YES | | NULL | |
+| photo | | varbinary(383) | YES | | NULL | |
+| header | Header picture | varbinary(383) | YES | | NULL | |
+| addr | | varchar(255) | YES | | NULL | |
+| alias | | varbinary(383) | YES | | NULL | |
+| pubkey | | text | YES | | NULL | |
+| subscribe | | varbinary(383) | YES | | NULL | |
+| baseurl | baseurl of the ap contact | varbinary(383) | YES | | NULL | |
+| gsid | Global Server ID | int unsigned | YES | | NULL | |
+| generator | Name of the contact's system | varchar(255) | YES | | NULL | |
+| following_count | Number of following contacts | int unsigned | YES | | 0 | |
+| followers_count | Number of followers | int unsigned | YES | | 0 | |
+| statuses_count | Number of posts | int unsigned | YES | | 0 | |
+| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
diff --git a/doc/database/db_channel.md b/doc/database/db_channel.md
index 4a469b4ee3..8d307eee89 100644
--- a/doc/database/db_channel.md
+++ b/doc/database/db_channel.md
@@ -16,13 +16,9 @@ Fields
| access-key | Access key | varchar(1) | YES | | NULL | |
| include-tags | Comma separated list of tags that will be included in the channel | varchar(1023) | YES | | NULL | |
| exclude-tags | Comma separated list of tags that aren't allowed in the channel | varchar(1023) | YES | | NULL | |
-| min-size | Minimum post size | int unsigned | YES | | NULL | |
-| max-size | Maximum post size | int unsigned | YES | | NULL | |
| full-text-search | Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode | varchar(1023) | YES | | NULL | |
| media-type | Filtered media types | smallint unsigned | YES | | NULL | |
| languages | Desired languages | mediumtext | YES | | NULL | |
-| publish | publish channel content | boolean | YES | | NULL | |
-| valid | Set, when the full-text-search is valid | boolean | YES | | NULL | |
Indexes
------------
diff --git a/doc/database/db_contact-relation.md b/doc/database/db_contact-relation.md
index c83c9b8326..f11fd95a0f 100644
--- a/doc/database/db_contact-relation.md
+++ b/doc/database/db_contact-relation.md
@@ -6,18 +6,17 @@ Contact relations
Fields
------
-| Field | Description | Type | Null | Key | Default | Extra |
-| --------------------- | ----------------------------------------------------------------------- | ----------------- | ---- | --- | ------------------- | ----- |
-| cid | contact the related contact had interacted with | int unsigned | NO | PRI | 0 | |
-| relation-cid | related contact who had interacted with the contact | int unsigned | NO | PRI | 0 | |
-| last-interaction | Date of the last interaction by relation-cid on cid | datetime | NO | | 0001-01-01 00:00:00 | |
-| follow-updated | Date of the last update of the contact relationship | datetime | NO | | 0001-01-01 00:00:00 | |
-| follows | if true, relation-cid follows cid | boolean | NO | | 0 | |
-| score | score for interactions of cid on relation-cid | smallint unsigned | YES | | NULL | |
-| relation-score | score for interactions of relation-cid on cid | smallint unsigned | YES | | NULL | |
-| thread-score | score for interactions of cid on threads of relation-cid | smallint unsigned | YES | | NULL | |
-| relation-thread-score | score for interactions of relation-cid on threads of cid | smallint unsigned | YES | | NULL | |
-| post-score | score for the amount of posts from cid that can be seen by relation-cid | smallint unsigned | YES | | NULL | |
+| Field | Description | Type | Null | Key | Default | Extra |
+| --------------------- | -------------------------------------------------------- | ----------------- | ---- | --- | ------------------- | ----- |
+| cid | contact the related contact had interacted with | int unsigned | NO | PRI | 0 | |
+| relation-cid | related contact who had interacted with the contact | int unsigned | NO | PRI | 0 | |
+| last-interaction | Date of the last interaction by relation-cid on cid | datetime | NO | | 0001-01-01 00:00:00 | |
+| follow-updated | Date of the last update of the contact relationship | datetime | NO | | 0001-01-01 00:00:00 | |
+| follows | if true, relation-cid follows cid | boolean | NO | | 0 | |
+| score | score for interactions of cid on relation-cid | smallint unsigned | YES | | NULL | |
+| relation-score | score for interactions of relation-cid on cid | smallint unsigned | YES | | NULL | |
+| thread-score | score for interactions of cid on threads of relation-cid | smallint unsigned | YES | | NULL | |
+| relation-thread-score | score for interactions of relation-cid on threads of cid | smallint unsigned | YES | | NULL | |
Indexes
------------
diff --git a/doc/database/db_contact.md b/doc/database/db_contact.md
index cd66ce12de..8221f279e2 100644
--- a/doc/database/db_contact.md
+++ b/doc/database/db_contact.md
@@ -59,6 +59,7 @@ Fields
| remote_self | | boolean | NO | | 0 | |
| rel | The kind of the relation between the user and the contact | tinyint unsigned | NO | | 0 | |
| protocol | Protocol of the contact | char(4) | NO | | | |
+| subhub | | boolean | NO | | 0 | |
| hub-verify | | varbinary(383) | NO | | | |
| rating | Automatically detected feed poll frequency | tinyint | NO | | 0 | |
| priority | Feed poll priority | tinyint unsigned | NO | | 0 | |
diff --git a/doc/database/db_gserver.md b/doc/database/db_gserver.md
index 22939ec2bc..8ba9e3d9b1 100644
--- a/doc/database/db_gserver.md
+++ b/doc/database/db_gserver.md
@@ -6,59 +6,47 @@ Global servers
Fields
------
-| Field | Description | Type | Null | Key | Default | Extra |
-| --------------------- | -------------------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
-| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
-| url | | varbinary(383) | NO | | | |
-| nurl | | varbinary(383) | NO | | | |
-| version | The version of this server software. | varchar(255) | NO | | | |
-| site_name | | varchar(255) | NO | | | |
-| info | | text | YES | | NULL | |
-| register_policy | | tinyint | NO | | 0 | |
-| registered-users | Number of registered users | int unsigned | NO | | 0 | |
-| active-week-users | Number of active users in the last week | int unsigned | YES | | NULL | |
-| active-month-users | Number of active users in the last month | int unsigned | YES | | NULL | |
-| active-halfyear-users | Number of active users in the last six month | int unsigned | YES | | NULL | |
-| local-posts | Number of local posts | int unsigned | YES | | NULL | |
-| local-comments | Number of local comments | int unsigned | YES | | NULL | |
-| directory-type | Type of directory service (Poco, Mastodon) | tinyint | YES | | 0 | |
-| poco | | varbinary(383) | NO | | | |
-| openwebauth | Path to the OpenWebAuth endpoint | varbinary(383) | YES | | NULL | |
-| authredirect | Path to the authRedirect endpoint | varbinary(383) | YES | | NULL | |
-| noscrape | | varbinary(383) | NO | | | |
-| network | | char(4) | NO | | | |
-| protocol | The protocol of the server | tinyint unsigned | YES | | NULL | |
-| platform | The canonical name of this server software. | varchar(255) | NO | | | |
-| repository | The url of the source code repository of this server software. | varbinary(383) | YES | | NULL | |
-| homepage | The url of the homepage of this server software. | varbinary(383) | YES | | NULL | |
-| relay-subscribe | Has the server subscribed to the relay system | boolean | NO | | 0 | |
-| relay-scope | The scope of messages that the server wants to get | varchar(10) | NO | | | |
-| detection-method | Method that had been used to detect that server | tinyint unsigned | YES | | NULL | |
-| created | | datetime | NO | | 0001-01-01 00:00:00 | |
-| last_poco_query | | datetime | YES | | 0001-01-01 00:00:00 | |
-| last_contact | Last successful connection request | datetime | YES | | 0001-01-01 00:00:00 | |
-| last_failure | Last failed connection request | datetime | YES | | 0001-01-01 00:00:00 | |
-| blocked | Server is blocked | boolean | YES | | NULL | |
-| failed | Connection failed | boolean | YES | | NULL | |
-| next_contact | Next connection request | datetime | YES | | 0001-01-01 00:00:00 | |
-| redirect-gsid | Target Gserver id in case of a redirect | int unsigned | YES | | NULL | |
+| Field | Description | Type | Null | Key | Default | Extra |
+| --------------------- | -------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
+| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
+| url | | varbinary(383) | NO | | | |
+| nurl | | varbinary(383) | NO | | | |
+| version | | varchar(255) | NO | | | |
+| site_name | | varchar(255) | NO | | | |
+| info | | text | YES | | NULL | |
+| register_policy | | tinyint | NO | | 0 | |
+| registered-users | Number of registered users | int unsigned | NO | | 0 | |
+| active-week-users | Number of active users in the last week | int unsigned | YES | | NULL | |
+| active-month-users | Number of active users in the last month | int unsigned | YES | | NULL | |
+| active-halfyear-users | Number of active users in the last six month | int unsigned | YES | | NULL | |
+| local-posts | Number of local posts | int unsigned | YES | | NULL | |
+| local-comments | Number of local comments | int unsigned | YES | | NULL | |
+| directory-type | Type of directory service (Poco, Mastodon) | tinyint | YES | | 0 | |
+| poco | | varbinary(383) | NO | | | |
+| noscrape | | varbinary(383) | NO | | | |
+| network | | char(4) | NO | | | |
+| protocol | The protocol of the server | tinyint unsigned | YES | | NULL | |
+| platform | | varchar(255) | NO | | | |
+| relay-subscribe | Has the server subscribed to the relay system | boolean | NO | | 0 | |
+| relay-scope | The scope of messages that the server wants to get | varchar(10) | NO | | | |
+| detection-method | Method that had been used to detect that server | tinyint unsigned | YES | | NULL | |
+| created | | datetime | NO | | 0001-01-01 00:00:00 | |
+| last_poco_query | | datetime | YES | | 0001-01-01 00:00:00 | |
+| last_contact | Last successful connection request | datetime | YES | | 0001-01-01 00:00:00 | |
+| last_failure | Last failed connection request | datetime | YES | | 0001-01-01 00:00:00 | |
+| blocked | Server is blocked | boolean | YES | | NULL | |
+| failed | Connection failed | boolean | YES | | NULL | |
+| next_contact | Next connection request | datetime | YES | | 0001-01-01 00:00:00 | |
Indexes
------------
-| Name | Fields |
-| ------------- | ----------------- |
-| PRIMARY | id |
-| nurl | UNIQUE, nurl(190) |
-| next_contact | next_contact |
-| network | network |
-| redirect-gsid | redirect-gsid |
+| Name | Fields |
+| ------------ | ----------------- |
+| PRIMARY | id |
+| nurl | UNIQUE, nurl(190) |
+| next_contact | next_contact |
+| network | network |
-Foreign Keys
-------------
-
-| Field | Target Table | Target Field |
-|-------|--------------|--------------|
-| redirect-gsid | [gserver](help/database/db_gserver) | id |
Return to [database documentation](help/database)
diff --git a/doc/database/db_inbox-entry.md b/doc/database/db_inbox-entry.md
index e18e66f240..834d4bfd64 100644
--- a/doc/database/db_inbox-entry.md
+++ b/doc/database/db_inbox-entry.md
@@ -6,24 +6,22 @@ Incoming activity
Fields
------
-| Field | Description | Type | Null | Key | Default | Extra |
-| ------------------ | -------------------------------------- | ---------------- | ---- | --- | ------- | -------------- |
-| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
-| activity-id | id of the incoming activity | varbinary(383) | YES | | NULL | |
-| object-id | | varbinary(383) | YES | | NULL | |
-| in-reply-to-id | | varbinary(383) | YES | | NULL | |
-| context | | varbinary(383) | YES | | NULL | |
-| conversation | | varbinary(383) | YES | | NULL | |
-| type | Type of the activity | varchar(64) | YES | | NULL | |
-| object-type | Type of the object activity | varchar(64) | YES | | NULL | |
-| object-object-type | Type of the object's object activity | varchar(64) | YES | | NULL | |
-| received | Receiving date | datetime | YES | | NULL | |
-| activity | The JSON activity | mediumtext | YES | | NULL | |
-| signer | | varchar(255) | YES | | NULL | |
-| push | Is the entry pushed or have pulled it? | boolean | YES | | NULL | |
-| trust | Do we trust this entry? | boolean | YES | | NULL | |
-| wid | Workerqueue id | int unsigned | YES | | NULL | |
-| retrial | Retrial counter | tinyint unsigned | YES | | 0 | |
+| Field | Description | Type | Null | Key | Default | Extra |
+| ------------------ | -------------------------------------- | -------------- | ---- | --- | ------- | -------------- |
+| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
+| activity-id | id of the incoming activity | varbinary(383) | YES | | NULL | |
+| object-id | | varbinary(383) | YES | | NULL | |
+| in-reply-to-id | | varbinary(383) | YES | | NULL | |
+| conversation | | varbinary(383) | YES | | NULL | |
+| type | Type of the activity | varchar(64) | YES | | NULL | |
+| object-type | Type of the object activity | varchar(64) | YES | | NULL | |
+| object-object-type | Type of the object's object activity | varchar(64) | YES | | NULL | |
+| received | Receiving date | datetime | YES | | NULL | |
+| activity | The JSON activity | mediumtext | YES | | NULL | |
+| signer | | varchar(255) | YES | | NULL | |
+| push | Is the entry pushed or have pulled it? | boolean | YES | | NULL | |
+| trust | Do we trust this entry? | boolean | YES | | NULL | |
+| wid | Workerqueue id | int unsigned | YES | | NULL | |
Indexes
------------
diff --git a/doc/database/db_post-content.md b/doc/database/db_post-content.md
index d1ae90f278..27b372093a 100644
--- a/doc/database/db_post-content.md
+++ b/doc/database/db_post-content.md
@@ -17,7 +17,6 @@ Fields
| location | text location where this item originated | varchar(255) | NO | | | |
| coord | longitude/latitude pair representing location where this item originated | varchar(255) | NO | | | |
| language | Language information about this post | text | YES | | NULL | |
-| sensitive | If true, this post contains sensitive content | boolean | YES | | NULL | |
| app | application which generated this item | varchar(255) | NO | | | |
| rendered-hash | | varchar(32) | NO | | | |
| rendered-html | item.body converted to html | mediumtext | YES | | NULL | |
@@ -31,12 +30,13 @@ Fields
Indexes
------------
-| Name | Fields |
-| ------------ | ------------ |
-| PRIMARY | uri-id |
-| plink | plink(191) |
-| resource-id | resource-id |
-| quote-uri-id | quote-uri-id |
+| Name | Fields |
+| -------------------------- | -------------------------------------- |
+| PRIMARY | uri-id |
+| plink | plink(191) |
+| resource-id | resource-id |
+| title-content-warning-body | FULLTEXT, title, content-warning, body |
+| quote-uri-id | quote-uri-id |
Foreign Keys
------------
diff --git a/doc/database/db_post-counts.md b/doc/database/db_post-counts.md
index db2a8fd36d..86383bfc19 100644
--- a/doc/database/db_post-counts.md
+++ b/doc/database/db_post-counts.md
@@ -10,7 +10,7 @@ Fields
| ------------- | ----------------------------------------------------------- | ----------------- | ---- | --- | ------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | NO | PRI | NULL | |
-| reaction | Emoji Reaction | varchar(4) | NO | PRI | NULL | |
+| reaction | Emoji Reaction | varchar(1) | NO | PRI | NULL | |
| parent-uri-id | Id of the item-uri table that contains the parent uri | int unsigned | YES | | NULL | |
| count | Number of activities | int unsigned | YES | | 0 | |
diff --git a/doc/database/db_post-delivery-data.md b/doc/database/db_post-delivery-data.md
index 332cfbcb3b..ad4ca6af32 100644
--- a/doc/database/db_post-delivery-data.md
+++ b/doc/database/db_post-delivery-data.md
@@ -18,6 +18,7 @@ Fields
| dfrn | Number of successful deliveries via DFRN | mediumint | NO | | 0 | |
| legacy_dfrn | Number of successful deliveries via legacy DFRN | mediumint | NO | | 0 | |
| diaspora | Number of successful deliveries via Diaspora | mediumint | NO | | 0 | |
+| ostatus | Number of successful deliveries via OStatus | mediumint | NO | | 0 | |
Indexes
------------
diff --git a/doc/database/db_post-engagement.md b/doc/database/db_post-engagement.md
index 31ae5e4e41..edca447f3d 100644
--- a/doc/database/db_post-engagement.md
+++ b/doc/database/db_post-engagement.md
@@ -11,12 +11,10 @@ Fields
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| owner-id | Item owner | int unsigned | NO | | 0 | |
| contact-type | Person, organisation, news, community, relay | tinyint | NO | | 0 | |
-| media-type | Type of media in a bit array (1 = image, 2 = video, 4 = audio) | tinyint | NO | | 0 | |
-| language | Language information about this post in the ISO 639-1 format | char(2) | YES | | NULL | |
+| media-type | Type of media in a bit array (1 = image, 2 = video, 4 = audio | tinyint | NO | | 0 | |
+| language | Language information about this post | varbinary(128) | YES | | NULL | |
| searchtext | Simplified text for the full text search | mediumtext | YES | | NULL | |
-| size | Body size | int unsigned | YES | | NULL | |
| created | | datetime | YES | | NULL | |
-| network | | char(4) | YES | | NULL | |
| restricted | If true, this post is either unlisted or not from a federated network | boolean | NO | | 0 | |
| comments | Number of comments | mediumint unsigned | YES | | NULL | |
| activities | Number of activities (like, dislike, ...) | mediumint unsigned | YES | | NULL | |
diff --git a/doc/database/db_post-media.md b/doc/database/db_post-media.md
index acbd1f75cb..2d73a39cfc 100644
--- a/doc/database/db_post-media.md
+++ b/doc/database/db_post-media.md
@@ -6,33 +6,29 @@ Attached media
Fields
------
-| Field | Description | Type | Null | Key | Default | Extra |
-| --------------- | ----------------------------------------------------------------------------------- | ----------------- | ---- | --- | ------- | -------------- |
-| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
-| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
-| url | Media URL | varbinary(1024) | NO | | NULL | |
-| media-uri-id | Id of the item-uri table entry that contains the activities uri-id | int unsigned | YES | | NULL | |
-| attach-id | In case of a local attachment, this field is filled with the id in the attach table | int unsigned | YES | | NULL | |
-| type | Media type | tinyint unsigned | NO | | 0 | |
-| mimetype | | varchar(60) | YES | | NULL | |
-| height | Height of the media | smallint unsigned | YES | | NULL | |
-| width | Width of the media | smallint unsigned | YES | | NULL | |
-| size | Media size | bigint unsigned | YES | | NULL | |
-| blurhash | BlurHash representation of the image | varbinary(255) | YES | | NULL | |
-| preview | Preview URL | varbinary(512) | YES | | NULL | |
-| preview-height | Height of the preview picture | smallint unsigned | YES | | NULL | |
-| preview-width | Width of the preview picture | smallint unsigned | YES | | NULL | |
-| description | | text | YES | | NULL | |
-| name | Name of the media | varchar(255) | YES | | NULL | |
-| author-url | URL of the author of the media | varbinary(383) | YES | | NULL | |
-| author-name | Name of the author of the media | varchar(255) | YES | | NULL | |
-| author-image | Image of the author of the media | varbinary(383) | YES | | NULL | |
-| publisher-url | URL of the publisher of the media | varbinary(383) | YES | | NULL | |
-| publisher-name | Name of the publisher of the media | varchar(255) | YES | | NULL | |
-| publisher-image | Image of the publisher of the media | varbinary(383) | YES | | NULL | |
-| language | Language information about this media in the ISO 639 format | char(3) | YES | | NULL | |
-| published | Publification date of this media | datetime | YES | | NULL | |
-| modified | Modification date of this media | datetime | YES | | NULL | |
+| Field | Description | Type | Null | Key | Default | Extra |
+| --------------- | ------------------------------------------------------------------ | ----------------- | ---- | --- | ------- | -------------- |
+| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
+| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
+| url | Media URL | varbinary(1024) | NO | | NULL | |
+| media-uri-id | Id of the item-uri table entry that contains the activities uri-id | int unsigned | YES | | NULL | |
+| type | Media type | tinyint unsigned | NO | | 0 | |
+| mimetype | | varchar(60) | YES | | NULL | |
+| height | Height of the media | smallint unsigned | YES | | NULL | |
+| width | Width of the media | smallint unsigned | YES | | NULL | |
+| size | Media size | bigint unsigned | YES | | NULL | |
+| blurhash | BlurHash representation of the image | varbinary(255) | YES | | NULL | |
+| preview | Preview URL | varbinary(512) | YES | | NULL | |
+| preview-height | Height of the preview picture | smallint unsigned | YES | | NULL | |
+| preview-width | Width of the preview picture | smallint unsigned | YES | | NULL | |
+| description | | text | YES | | NULL | |
+| name | Name of the media | varchar(255) | YES | | NULL | |
+| author-url | URL of the author of the media | varbinary(383) | YES | | NULL | |
+| author-name | Name of the author of the media | varchar(255) | YES | | NULL | |
+| author-image | Image of the author of the media | varbinary(383) | YES | | NULL | |
+| publisher-url | URL of the publisher of the media | varbinary(383) | YES | | NULL | |
+| publisher-name | Name of the publisher of the media | varchar(255) | YES | | NULL | |
+| publisher-image | Image of the publisher of the media | varbinary(383) | YES | | NULL | |
Indexes
------------
@@ -43,7 +39,6 @@ Indexes
| uri-id-url | UNIQUE, uri-id, url(512) |
| uri-id-id | uri-id, id |
| media-uri-id | media-uri-id |
-| attach-id | attach-id |
Foreign Keys
------------
@@ -52,6 +47,5 @@ Foreign Keys
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| media-uri-id | [item-uri](help/database/db_item-uri) | id |
-| attach-id | [attach](help/database/db_attach) | id |
Return to [database documentation](help/database)
diff --git a/doc/database/db_post-origin.md b/doc/database/db_post-origin.md
deleted file mode 100644
index dc72b0134f..0000000000
--- a/doc/database/db_post-origin.md
+++ /dev/null
@@ -1,48 +0,0 @@
-Table post-origin
-===========
-
-Posts from local users
-
-Fields
-------
-
-| Field | Description | Type | Null | Key | Default | Extra |
-| ------------- | ------------------------------------------------------------ | ------------------ | ---- | --- | ------------------- | ----- |
-| id | | int unsigned | NO | PRI | NULL | |
-| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
-| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | | NULL | |
-| parent-uri-id | Id of the item-uri table that contains the parent uri | int unsigned | YES | | NULL | |
-| thr-parent-id | Id of the item-uri table that contains the thread parent uri | int unsigned | YES | | NULL | |
-| created | Creation timestamp. | datetime | NO | | 0001-01-01 00:00:00 | |
-| received | datetime | datetime | NO | | 0001-01-01 00:00:00 | |
-| gravity | | tinyint unsigned | NO | | 0 | |
-| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
-| private | 0=public, 1=private, 2=unlisted | tinyint unsigned | NO | | 0 | |
-| wall | This item was posted to the wall of uid | boolean | NO | | 0 | |
-
-Indexes
-------------
-
-| Name | Fields |
-| ----------------- | ------------------- |
-| PRIMARY | id |
-| uid_uri-id | UNIQUE, uid, uri-id |
-| uri-id | uri-id |
-| parent-uri-id | parent-uri-id |
-| thr-parent-id | thr-parent-id |
-| vid | vid |
-| parent-uri-id_uid | parent-uri-id, uid |
-| uid_wall_received | uid, wall, received |
-
-Foreign Keys
-------------
-
-| Field | Target Table | Target Field |
-|-------|--------------|--------------|
-| uri-id | [item-uri](help/database/db_item-uri) | id |
-| uid | [user](help/database/db_user) | uid |
-| parent-uri-id | [item-uri](help/database/db_item-uri) | id |
-| thr-parent-id | [item-uri](help/database/db_item-uri) | id |
-| vid | [verb](help/database/db_verb) | id |
-
-Return to [database documentation](help/database)
diff --git a/doc/database/db_post-searchindex.md b/doc/database/db_post-searchindex.md
deleted file mode 100644
index 203a2dbab3..0000000000
--- a/doc/database/db_post-searchindex.md
+++ /dev/null
@@ -1,38 +0,0 @@
-Table post-searchindex
-===========
-
-Content for all posts
-
-Fields
-------
-
-| Field | Description | Type | Null | Key | Default | Extra |
-| ---------- | --------------------------------------------------------------------- | ------------ | ---- | --- | ------- | ----- |
-| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
-| owner-id | Item owner | int unsigned | NO | | 0 | |
-| media-type | Type of media in a bit array (1 = image, 2 = video, 4 = audio) | tinyint | NO | | 0 | |
-| language | Language information about this post in the ISO 639-1 format | char(2) | YES | | NULL | |
-| searchtext | Simplified text for the full text search | mediumtext | YES | | NULL | |
-| size | Body size | int unsigned | YES | | NULL | |
-| created | | datetime | YES | | NULL | |
-| restricted | If true, this post is either unlisted or not from a federated network | boolean | NO | | 0 | |
-
-Indexes
-------------
-
-| Name | Fields |
-| ---------- | -------------------- |
-| PRIMARY | uri-id |
-| owner-id | owner-id |
-| created | created |
-| searchtext | FULLTEXT, searchtext |
-
-Foreign Keys
-------------
-
-| Field | Target Table | Target Field |
-|-------|--------------|--------------|
-| uri-id | [item-uri](help/database/db_item-uri) | id |
-| owner-id | [contact](help/database/db_contact) | id |
-
-Return to [database documentation](help/database)
diff --git a/doc/database/db_post-thread-user.md b/doc/database/db_post-thread-user.md
index d00e852547..a89d94c96f 100644
--- a/doc/database/db_post-thread-user.md
+++ b/doc/database/db_post-thread-user.md
@@ -9,7 +9,6 @@ Fields
| Field | Description | Type | Null | Key | Default | Extra |
| --------------- | ------------------------------------------------------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
-| context-id | Id of the item-uri table entry that contains the endpoint for the context collection | int unsigned | YES | | NULL | |
| conversation-id | Id of the item-uri table entry that contains the conversation uri | int unsigned | YES | | NULL | |
| owner-id | Item owner | int unsigned | NO | | 0 | |
| author-id | Item author | int unsigned | NO | | 0 | |
@@ -41,7 +40,6 @@ Indexes
| -------------------- | --------------------- |
| PRIMARY | uid, uri-id |
| uri-id | uri-id |
-| context-id | context-id |
| conversation-id | conversation-id |
| owner-id | owner-id |
| author-id | author-id |
@@ -70,7 +68,6 @@ Foreign Keys
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
-| context-id | [item-uri](help/database/db_item-uri) | id |
| conversation-id | [item-uri](help/database/db_item-uri) | id |
| owner-id | [contact](help/database/db_contact) | id |
| author-id | [contact](help/database/db_contact) | id |
diff --git a/doc/database/db_post-thread.md b/doc/database/db_post-thread.md
index 959927a468..b90fb2ab55 100644
--- a/doc/database/db_post-thread.md
+++ b/doc/database/db_post-thread.md
@@ -9,7 +9,6 @@ Fields
| Field | Description | Type | Null | Key | Default | Extra |
| --------------- | ------------------------------------------------------------------------------------------------------- | ------------ | ---- | --- | ------------------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
-| context-id | Id of the item-uri table entry that contains the endpoint for the context collection | int unsigned | YES | | NULL | |
| conversation-id | Id of the item-uri table entry that contains the conversation uri | int unsigned | YES | | NULL | |
| owner-id | Item owner | int unsigned | NO | | 0 | |
| author-id | Item author | int unsigned | NO | | 0 | |
@@ -26,7 +25,6 @@ Indexes
| Name | Fields |
| --------------- | --------------- |
| PRIMARY | uri-id |
-| context-id | context-id |
| conversation-id | conversation-id |
| owner-id | owner-id |
| author-id | author-id |
@@ -40,7 +38,6 @@ Foreign Keys
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
-| context-id | [item-uri](help/database/db_item-uri) | id |
| conversation-id | [item-uri](help/database/db_item-uri) | id |
| owner-id | [contact](help/database/db_contact) | id |
| author-id | [contact](help/database/db_contact) | id |
diff --git a/doc/database/db_post-user.md b/doc/database/db_post-user.md
index 502c49c3ac..2823391d47 100644
--- a/doc/database/db_post-user.md
+++ b/doc/database/db_post-user.md
@@ -6,69 +6,66 @@ User specific post data
Fields
------
-| Field | Description | Type | Null | Key | Default | Extra |
-| ----------------- | ------------------------------------------------------------------------------------ | ------------------ | ---- | --- | ------------------- | -------------- |
-| id | | int unsigned | NO | PRI | NULL | auto_increment |
-| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
-| parent-uri-id | Id of the item-uri table that contains the parent uri | int unsigned | YES | | NULL | |
-| thr-parent-id | Id of the item-uri table that contains the thread parent uri | int unsigned | YES | | NULL | |
-| external-id | Id of the item-uri table entry that contains the external uri | int unsigned | YES | | NULL | |
-| replies-id | Id of the item-uri table entry that contains the endpoint for the replies collection | int unsigned | YES | | NULL | |
-| created | Creation timestamp. | datetime | NO | | 0001-01-01 00:00:00 | |
-| edited | Date of last edit (default is created) | datetime | NO | | 0001-01-01 00:00:00 | |
-| received | datetime | datetime | NO | | 0001-01-01 00:00:00 | |
-| gravity | | tinyint unsigned | NO | | 0 | |
-| network | Network from where the item comes from | char(4) | NO | | | |
-| owner-id | Link to the contact table with uid=0 of the owner of this item | int unsigned | NO | | 0 | |
-| author-id | Link to the contact table with uid=0 of the author of this item | int unsigned | NO | | 0 | |
-| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
-| post-type | Post type (personal note, image, article, ...) | tinyint unsigned | NO | | 0 | |
-| post-reason | Reason why the post arrived at the user | tinyint unsigned | NO | | 0 | |
-| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
-| private | 0=public, 1=private, 2=unlisted | tinyint unsigned | NO | | 0 | |
-| restrictions | Bit array of post restrictions (1 = Reply, 2 = Like, 4 = Announce) | tinyint unsigned | YES | | NULL | |
-| global | | boolean | NO | | 0 | |
-| visible | | boolean | NO | | 0 | |
-| deleted | item has been marked for deletion | boolean | NO | | 0 | |
-| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | | NULL | |
-| protocol | Protocol used to deliver the item for this user | tinyint unsigned | YES | | NULL | |
-| contact-id | contact.id | int unsigned | NO | | 0 | |
-| event-id | Used to link to the event.id | int unsigned | YES | | NULL | |
-| unseen | post has not been seen | boolean | NO | | 1 | |
-| hidden | Marker to hide the post from the user | boolean | NO | | 0 | |
-| notification-type | | smallint unsigned | NO | | 0 | |
-| wall | This item was posted to the wall of uid | boolean | NO | | 0 | |
-| origin | item originated at this site | boolean | NO | | 0 | |
-| psid | ID of the permission set of this post | int unsigned | YES | | NULL | |
+| Field | Description | Type | Null | Key | Default | Extra |
+| ----------------- | --------------------------------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
+| id | | int unsigned | NO | PRI | NULL | auto_increment |
+| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
+| parent-uri-id | Id of the item-uri table that contains the parent uri | int unsigned | YES | | NULL | |
+| thr-parent-id | Id of the item-uri table that contains the thread parent uri | int unsigned | YES | | NULL | |
+| external-id | Id of the item-uri table entry that contains the external uri | int unsigned | YES | | NULL | |
+| created | Creation timestamp. | datetime | NO | | 0001-01-01 00:00:00 | |
+| edited | Date of last edit (default is created) | datetime | NO | | 0001-01-01 00:00:00 | |
+| received | datetime | datetime | NO | | 0001-01-01 00:00:00 | |
+| gravity | | tinyint unsigned | NO | | 0 | |
+| network | Network from where the item comes from | char(4) | NO | | | |
+| owner-id | Link to the contact table with uid=0 of the owner of this item | int unsigned | NO | | 0 | |
+| author-id | Link to the contact table with uid=0 of the author of this item | int unsigned | NO | | 0 | |
+| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
+| post-type | Post type (personal note, image, article, ...) | tinyint unsigned | NO | | 0 | |
+| post-reason | Reason why the post arrived at the user | tinyint unsigned | NO | | 0 | |
+| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
+| private | 0=public, 1=private, 2=unlisted | tinyint unsigned | NO | | 0 | |
+| global | | boolean | NO | | 0 | |
+| visible | | boolean | NO | | 0 | |
+| deleted | item has been marked for deletion | boolean | NO | | 0 | |
+| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | | NULL | |
+| protocol | Protocol used to deliver the item for this user | tinyint unsigned | YES | | NULL | |
+| contact-id | contact.id | int unsigned | NO | | 0 | |
+| event-id | Used to link to the event.id | int unsigned | YES | | NULL | |
+| unseen | post has not been seen | boolean | NO | | 1 | |
+| hidden | Marker to hide the post from the user | boolean | NO | | 0 | |
+| notification-type | | smallint unsigned | NO | | 0 | |
+| wall | This item was posted to the wall of uid | boolean | NO | | 0 | |
+| origin | item originated at this site | boolean | NO | | 0 | |
+| psid | ID of the permission set of this post | int unsigned | YES | | NULL | |
Indexes
------------
-| Name | Fields |
-| --------------------- | ----------------------- |
-| PRIMARY | id |
-| uid_uri-id | UNIQUE, uid, uri-id |
-| uri-id_origin_deleted | uri-id, origin, deleted |
-| parent-uri-id | parent-uri-id |
-| thr-parent-id | thr-parent-id |
-| external-id | external-id |
-| replies-id | replies-id |
-| owner-id | owner-id |
-| author-id | author-id |
-| causer-id | causer-id |
-| vid | vid |
-| contact-id | contact-id |
-| event-id | event-id |
-| psid | psid |
-| author-id_uid | author-id, uid |
-| author-id_created | author-id, created |
-| owner-id_created | owner-id, created |
-| parent-uri-id_uid | parent-uri-id, uid |
-| uid_wall_received | uid, wall, received |
-| uid_contactid | uid, contact-id |
-| uid_unseen_contactid | uid, unseen, contact-id |
-| uid_unseen | uid, unseen |
-| uid_hidden_uri-id | uid, hidden, uri-id |
+| Name | Fields |
+| -------------------- | ----------------------- |
+| PRIMARY | id |
+| uid_uri-id | UNIQUE, uid, uri-id |
+| uri-id | uri-id |
+| parent-uri-id | parent-uri-id |
+| thr-parent-id | thr-parent-id |
+| external-id | external-id |
+| owner-id | owner-id |
+| author-id | author-id |
+| causer-id | causer-id |
+| vid | vid |
+| contact-id | contact-id |
+| event-id | event-id |
+| psid | psid |
+| author-id_uid | author-id, uid |
+| author-id_created | author-id, created |
+| owner-id_created | owner-id, created |
+| parent-uri-id_uid | parent-uri-id, uid |
+| uid_wall_received | uid, wall, received |
+| uid_contactid | uid, contact-id |
+| uid_unseen_contactid | uid, unseen, contact-id |
+| uid_unseen | uid, unseen |
+| uid_hidden_uri-id | uid, hidden, uri-id |
Foreign Keys
------------
@@ -79,7 +76,6 @@ Foreign Keys
| parent-uri-id | [item-uri](help/database/db_item-uri) | id |
| thr-parent-id | [item-uri](help/database/db_item-uri) | id |
| external-id | [item-uri](help/database/db_item-uri) | id |
-| replies-id | [item-uri](help/database/db_item-uri) | id |
| owner-id | [contact](help/database/db_contact) | id |
| author-id | [contact](help/database/db_contact) | id |
| causer-id | [contact](help/database/db_contact) | id |
diff --git a/doc/database/db_post.md b/doc/database/db_post.md
index 8f6690be06..303269b1c6 100644
--- a/doc/database/db_post.md
+++ b/doc/database/db_post.md
@@ -6,27 +6,26 @@ Structure for all posts
Fields
------
-| Field | Description | Type | Null | Key | Default | Extra |
-| ------------- | ------------------------------------------------------------------------------------ | ----------------- | ---- | --- | ------------------- | ----- |
-| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
-| parent-uri-id | Id of the item-uri table that contains the parent uri | int unsigned | YES | | NULL | |
-| thr-parent-id | Id of the item-uri table that contains the thread parent uri | int unsigned | YES | | NULL | |
-| external-id | Id of the item-uri table entry that contains the external uri | int unsigned | YES | | NULL | |
-| replies-id | Id of the item-uri table entry that contains the endpoint for the replies collection | int unsigned | YES | | NULL | |
-| created | Creation timestamp. | datetime | NO | | 0001-01-01 00:00:00 | |
-| edited | Date of last edit (default is created) | datetime | NO | | 0001-01-01 00:00:00 | |
-| received | datetime | datetime | NO | | 0001-01-01 00:00:00 | |
-| gravity | | tinyint unsigned | NO | | 0 | |
-| network | Network from where the item comes from | char(4) | NO | | | |
-| owner-id | Link to the contact table with uid=0 of the owner of this item | int unsigned | NO | | 0 | |
-| author-id | Link to the contact table with uid=0 of the author of this item | int unsigned | NO | | 0 | |
-| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
-| post-type | Post type (personal note, image, article, ...) | tinyint unsigned | NO | | 0 | |
-| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
-| private | 0=public, 1=private, 2=unlisted | tinyint unsigned | NO | | 0 | |
-| global | | boolean | NO | | 0 | |
-| visible | | boolean | NO | | 0 | |
-| deleted | item has been marked for deletion | boolean | NO | | 0 | |
+| Field | Description | Type | Null | Key | Default | Extra |
+| ------------- | --------------------------------------------------------------------------------- | ----------------- | ---- | --- | ------------------- | ----- |
+| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
+| parent-uri-id | Id of the item-uri table that contains the parent uri | int unsigned | YES | | NULL | |
+| thr-parent-id | Id of the item-uri table that contains the thread parent uri | int unsigned | YES | | NULL | |
+| external-id | Id of the item-uri table entry that contains the external uri | int unsigned | YES | | NULL | |
+| created | Creation timestamp. | datetime | NO | | 0001-01-01 00:00:00 | |
+| edited | Date of last edit (default is created) | datetime | NO | | 0001-01-01 00:00:00 | |
+| received | datetime | datetime | NO | | 0001-01-01 00:00:00 | |
+| gravity | | tinyint unsigned | NO | | 0 | |
+| network | Network from where the item comes from | char(4) | NO | | | |
+| owner-id | Link to the contact table with uid=0 of the owner of this item | int unsigned | NO | | 0 | |
+| author-id | Link to the contact table with uid=0 of the author of this item | int unsigned | NO | | 0 | |
+| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
+| post-type | Post type (personal note, image, article, ...) | tinyint unsigned | NO | | 0 | |
+| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
+| private | 0=public, 1=private, 2=unlisted | tinyint unsigned | NO | | 0 | |
+| global | | boolean | NO | | 0 | |
+| visible | | boolean | NO | | 0 | |
+| deleted | item has been marked for deletion | boolean | NO | | 0 | |
Indexes
------------
@@ -37,7 +36,6 @@ Indexes
| parent-uri-id | parent-uri-id |
| thr-parent-id | thr-parent-id |
| external-id | external-id |
-| replies-id | replies-id |
| owner-id | owner-id |
| author-id | author-id |
| causer-id | causer-id |
@@ -52,7 +50,6 @@ Foreign Keys
| parent-uri-id | [item-uri](help/database/db_item-uri) | id |
| thr-parent-id | [item-uri](help/database/db_item-uri) | id |
| external-id | [item-uri](help/database/db_item-uri) | id |
-| replies-id | [item-uri](help/database/db_item-uri) | id |
| owner-id | [contact](help/database/db_contact) | id |
| author-id | [contact](help/database/db_contact) | id |
| causer-id | [contact](help/database/db_contact) | id |
diff --git a/doc/database/db_profile.md b/doc/database/db_profile.md
index 09f10770be..c4a8b01709 100644
--- a/doc/database/db_profile.md
+++ b/doc/database/db_profile.md
@@ -56,10 +56,11 @@ Fields
Indexes
------------
-| Name | Fields |
-| -------------- | --------------- |
-| PRIMARY | id |
-| uid_is-default | uid, is-default |
+| Name | Fields |
+| -------------- | ---------------------- |
+| PRIMARY | id |
+| uid_is-default | uid, is-default |
+| pub_keywords | FULLTEXT, pub_keywords |
Foreign Keys
------------
diff --git a/doc/database/db_push_subscriber.md b/doc/database/db_push_subscriber.md
new file mode 100644
index 0000000000..fbb2ebba47
--- /dev/null
+++ b/doc/database/db_push_subscriber.md
@@ -0,0 +1,38 @@
+Table push_subscriber
+===========
+
+Used for OStatus: Contains feed subscribers
+
+Fields
+------
+
+| Field | Description | Type | Null | Key | Default | Extra |
+| ------------ | --------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
+| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
+| uid | User id | mediumint unsigned | NO | | 0 | |
+| callback_url | | varbinary(383) | NO | | | |
+| topic | | varchar(255) | NO | | | |
+| nickname | | varchar(255) | NO | | | |
+| push | Retrial counter | tinyint | NO | | 0 | |
+| last_update | Date of last successful trial | datetime | NO | | 0001-01-01 00:00:00 | |
+| next_try | Next retrial date | datetime | NO | | 0001-01-01 00:00:00 | |
+| renewed | Date of last subscription renewal | datetime | NO | | 0001-01-01 00:00:00 | |
+| secret | | varchar(255) | NO | | | |
+
+Indexes
+------------
+
+| Name | Fields |
+| -------- | -------- |
+| PRIMARY | id |
+| next_try | next_try |
+| uid | uid |
+
+Foreign Keys
+------------
+
+| Field | Target Table | Target Field |
+|-------|--------------|--------------|
+| uid | [user](help/database/db_user) | uid |
+
+Return to [database documentation](help/database)
diff --git a/doc/database/db_user-contact.md b/doc/database/db_user-contact.md
index e52d8d495c..bfba9cb651 100644
--- a/doc/database/db_user-contact.md
+++ b/doc/database/db_user-contact.md
@@ -6,29 +6,29 @@ User specific public contact data
Fields
------
-| Field | Description | Type | Null | Key | Default | Extra |
-| ------------------------- | -------------------------------------------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
-| cid | Contact id of the linked public contact | int unsigned | NO | PRI | 0 | |
-| uid | User id | mediumint unsigned | NO | PRI | 0 | |
-| uri-id | Id of the item-uri table entry that contains the contact url | int unsigned | YES | | NULL | |
-| blocked | Contact is completely blocked for this user | boolean | YES | | NULL | |
-| ignored | Posts from this contact are ignored | boolean | YES | | NULL | |
-| collapsed | Posts from this contact are collapsed | boolean | YES | | NULL | |
-| hidden | This contact is hidden from the others | boolean | YES | | NULL | |
-| channel-only | This contact is displayed only in channels, but not in the network stream. | boolean | YES | | NULL | |
-| is-blocked | User is blocked by this contact | boolean | YES | | NULL | |
-| channel-frequency | Controls the frequency of the appearance of this contact in channels | tinyint unsigned | YES | | NULL | |
-| pending | | boolean | YES | | NULL | |
-| rel | The kind of the relation between the user and the contact | tinyint unsigned | YES | | NULL | |
-| info | | mediumtext | YES | | NULL | |
-| notify_new_posts | | boolean | YES | | NULL | |
-| remote_self | 0 => No mirroring, 1-2 => Mirror as own post, 3 => Mirror as reshare | tinyint unsigned | YES | | NULL | |
-| fetch_further_information | 0 => None, 1 => Fetch information, 3 => Fetch keywords, 2 => Fetch both | tinyint unsigned | YES | | NULL | |
-| ffi_keyword_denylist | | text | YES | | NULL | |
-| hub-verify | | varbinary(383) | YES | | NULL | |
-| protocol | Protocol of the contact | char(4) | YES | | NULL | |
-| rating | Automatically detected feed poll frequency | tinyint | YES | | NULL | |
-| priority | Feed poll priority | tinyint unsigned | YES | | NULL | |
+| Field | Description | Type | Null | Key | Default | Extra |
+| ------------------------- | ----------------------------------------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
+| cid | Contact id of the linked public contact | int unsigned | NO | PRI | 0 | |
+| uid | User id | mediumint unsigned | NO | PRI | 0 | |
+| uri-id | Id of the item-uri table entry that contains the contact url | int unsigned | YES | | NULL | |
+| blocked | Contact is completely blocked for this user | boolean | YES | | NULL | |
+| ignored | Posts from this contact are ignored | boolean | YES | | NULL | |
+| collapsed | Posts from this contact are collapsed | boolean | YES | | NULL | |
+| hidden | This contact is hidden from the others | boolean | YES | | NULL | |
+| is-blocked | User is blocked by this contact | boolean | YES | | NULL | |
+| channel-frequency | Controls the frequency of the appearance of this contact in channels | tinyint unsigned | YES | | NULL | |
+| pending | | boolean | YES | | NULL | |
+| rel | The kind of the relation between the user and the contact | tinyint unsigned | YES | | NULL | |
+| info | | mediumtext | YES | | NULL | |
+| notify_new_posts | | boolean | YES | | NULL | |
+| remote_self | 0 => No mirroring, 1-2 => Mirror as own post, 3 => Mirror as reshare | tinyint unsigned | YES | | NULL | |
+| fetch_further_information | 0 => None, 1 => Fetch information, 3 => Fetch keywords, 2 => Fetch both | tinyint unsigned | YES | | NULL | |
+| ffi_keyword_denylist | | text | YES | | NULL | |
+| subhub | | boolean | YES | | NULL | |
+| hub-verify | | varbinary(383) | YES | | NULL | |
+| protocol | Protocol of the contact | char(4) | YES | | NULL | |
+| rating | Automatically detected feed poll frequency | tinyint | YES | | NULL | |
+| priority | Feed poll priority | tinyint unsigned | YES | | NULL | |
Indexes
------------
diff --git a/doc/database/db_user.md b/doc/database/db_user.md
index eb8ed06532..108a689ad1 100644
--- a/doc/database/db_user.md
+++ b/doc/database/db_user.md
@@ -27,6 +27,8 @@ Fields
| theme | user theme preference | varchar(255) | NO | | | |
| pubkey | RSA public key 4096 bit | text | YES | | NULL | |
| prvkey | RSA private key 4096 bit | text | YES | | NULL | |
+| spubkey | | text | YES | | NULL | |
+| sprvkey | | text | YES | | NULL | |
| verified | user is verified through email | boolean | NO | | 0 | |
| blocked | 1 for user is blocked | boolean | NO | | 0 | |
| blockwall | Prohibit contacts to post to the profile page of the user | boolean | NO | | 0 | |
diff --git a/doc/de/Addons.md b/doc/de/Addons.md
index bfc0107528..0843c103ab 100644
--- a/doc/de/Addons.md
+++ b/doc/de/Addons.md
@@ -359,10 +359,10 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
Hook::callAll('register_account', $uid);
Hook::callAll('remove_user', $user);
-
+
### src/Content/ContactBlock.php
- Hook::callAll('contact_block_end', $text);
+ Hook::callAll('contact_block_end', $arr);
### src/Content/Text/BBCode.php
@@ -418,6 +418,10 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
Hook::callAll('storage_instance', $data);
Hook::callAll('storage_config', $data);
+### src/Module/Notifications/Ping.php
+
+ Hook::callAll('network_ping', $arr);
+
### src/Module/PermissionTooltip.php
Hook::callAll('lockview_content', $item);
diff --git a/doc/de/BBCode.md b/doc/de/BBCode.md
index 068af666d1..a6df8b67b9 100644
--- a/doc/de/BBCode.md
+++ b/doc/de/BBCode.md
@@ -356,8 +356,8 @@ Zeilen
+EOF;
+
+}
+?>
+
+
+
\ No newline at end of file
diff --git a/images/platforms/color/friendica.svg b/mods/fpostit/friendica.svg
similarity index 100%
rename from images/platforms/color/friendica.svg
rename to mods/fpostit/friendica.svg
diff --git a/mods/home.html b/mods/home.html
index 7521f4e3e1..b881cf8ff2 100644
--- a/mods/home.html
+++ b/mods/home.html
@@ -12,7 +12,7 @@
What other networks does it interact with?
-
Every network that speaks either the DFRN2, ActivityPub or diaspora* protocol. Currently this list includes: diaspora*, friendica, funkwhale, ganggo, GNU social, Hubzilla, Mastodon, NextClout social, pixelfed, Pleroma, Socialhome and many more.
+
Every network that speaks either the DFRN2, ActivityPub, OStatus or diaspora* protocol. Currently this list includes: diaspora*, friendica, funkwhale, ganggo, GNU social, Hubzilla, Mastodon, NextClout social, pixelfed, Pleroma, postActivi, Osada, Socialhome and many more.