Merge remote-tracking branch 'upstream/2021.06-rc' into public-timeline

This commit is contained in:
Michael 2021-06-16 05:58:11 +00:00
commit 5211c12b0c
99 changed files with 3263 additions and 1272 deletions

View file

@ -13,44 +13,21 @@ Authentication is the same as described in [Using the APIs](help/api#Authenticat
### Supported apps ### Supported apps
#### Android For supported apps please have a look at the [FAQ](help/FAQ#clients)
- [AndStatus](http://andstatus.org)
- [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
- [Fedi](https://play.google.com/store/apps/details?id=com.fediverse.app)
- [Husky](https://husky.fwgs.ru)
- [Roma](https://play.google.com/store/apps/details?id=tech.bigfig.roma)
- [Subway Tooter](https://github.com/tateisu/SubwayTooter)
- [Tooot](https://tooot.app/)
- [Tusky](https://tusky.app)
- [Twidere](https://github.com/TwidereProject/)
- [twitlatte](https://github.com/moko256/twitlatte)
- [Yuito](https://github.com/accelforce/Yuito)
#### iOS
- [Amaroq](https://github.com/ReticentJohn/Amaroq/tree/master)
- [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
- [Fedi](https://apps.apple.com/de/app/fedi-for-pleroma-and-mastodon/id1478806281)
- [Roma](https://apps.apple.com/de/app/roma-for-pleroma-and-mastodon/id1445328699)
- [StarPterano](https://apps.apple.com/de/app/starpterano/id1436972796) Uses an OAuth method where you have to manually copy and paste the provided code.
- [Stella](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048?l=ms)
- [Tooot](https://tooot.app/)
- [Tootle](https://apps.apple.com/de/app/tootle-for-mastodon/id1236013466) entered hostname must match in upper/lower case. Currently crashes on "Status" type notifications.
#### Desktop
- [Whalebird](https://whalebird.social)
### Unsupported apps ### Unsupported apps
#### Android #### Android
- [Fedilab](https://framagit.org/tom79/fedilab) Automatically uses the legacy API, see issue: https://framagit.org/tom79/fedilab/-/issues/520 - [Fedilab](https://framagit.org/tom79/fedilab) Automatically uses the legacy API, see issue: https://framagit.org/tom79/fedilab/-/issues/520
- [Mammut](https://github.com/jamiesanson/Mammut) There are problems with the token request, see issue https://github.com/jamiesanson/Mammut/issues/19 - [Mammut](https://github.com/jamiesanson/Mammut) There are problems with the token request, see issue https://github.com/jamiesanson/Mammut/issues/19
#### iOS #### iOS
- [Mast](https://github.com/Beesitech/Mast) Doesn't accept the entered instance name. Claims that it is invalid (Message is: "Not a valid instance (may be closed or dead)") - [Mast](https://github.com/Beesitech/Mast) Doesn't accept the entered instance name. Claims that it is invalid (Message is: "Not a valid instance (may be closed or dead)")
- [Toot!](https://apps.apple.com/app/toot/id1229021451) - [Toot!](https://apps.apple.com/app/toot/id1229021451)
#### Other #### Desktop
- [Halycon](https://www.halcyon.social/) Doesn't load content, creates masses of HTTP requests - [Halycon](https://www.halcyon.social/) Doesn't load content, creates masses of HTTP requests
- [Mastonaut](https://mastonaut.app/) - [Mastonaut](https://mastonaut.app/)

View file

@ -183,26 +183,53 @@ Example: Friendica Support
### What friendica clients can I use? ### What friendica clients can I use?
Friendica is using a [Twitter/GNU Social compatible API](help/api), which means you can use any Twitter/GNU Social client for your platform as long as you can change the API path in its settings. Friendica is using a [Twitter/GNU Social compatible API](help/api), which means you can use any Twitter/GNU Social client for your platform as long as you can change the API path in its settings.
Since the 2021.06 release, Friendica also supports the Mastodon API. Since the 2021.06 release, Friendica also supports the [Mastodon API](help/API-Mastodon) which works with many Mastodon clients.
Here is a list of known working clients: Here is a list of known working clients:
* Android #### 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))
* [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))
* [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)) * [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))
* [Twidere](https://dimension.im/) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.mariotaku.twidere), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex), [GitHub](https://github.com/TwidereProject/Twidere-Android)) * [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
* SailfishOS * [DiCa](https://dica.mixi.cool/) (Available at Google Play)
* [Friendly](https://openrepos.net/content/fabrixxm/friendly#comment-form) * [Fedi](https://play.google.com/store/apps/details?id=com.fediverse.app)
* Linux * [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))
* [Choqok](https://choqok.kde.org) * [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))
* Windows
* [Friendica Mobile](https://www.microsoft.com/de-DE/store/p/friendica-mobile/9nblggh0fhmn?rtc=1) (Windows 10)
* [Husky](https://husky.fwgs.ru) * [Husky](https://husky.fwgs.ru)
* [Roma](https://play.google.com/store/apps/details?id=tech.bigfig.roma)
* [Subway Tooter](https://github.com/tateisu/SubwayTooter) * [Subway Tooter](https://github.com/tateisu/SubwayTooter)
* [Tooot](https://tooot.app/)
* [Tusky](https://tusky.app) * [Tusky](https://tusky.app)
* [Twidere](https://dimension.im/) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.mariotaku.twidere), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex), [GitHub](https://github.com/TwidereProject/Twidere-Android))
* [twitlatte](https://github.com/moko256/twitlatte) * [twitlatte](https://github.com/moko256/twitlatte)
* [Yuito](https://github.com/accelforce/Yuito) * [Yuito](https://github.com/accelforce/Yuito)
#### SailfishOS
* [Friendly](https://openrepos.net/content/fabrixxm/friendly#comment-form)
#### iOS
* [Amaroq](https://github.com/ReticentJohn/Amaroq/tree/master)
* [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
* [Fedi](https://apps.apple.com/de/app/fedi-for-pleroma-and-mastodon/id1478806281)
* [Roma](https://apps.apple.com/de/app/roma-for-pleroma-and-mastodon/id1445328699)
* [StarPterano](https://apps.apple.com/de/app/starpterano/id1436972796) Uses an OAuth method where you have to manually copy and paste the provided code.
* [Stella](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048?l=ms)
* [Tooot](https://tooot.app/)
* [Tootle](https://apps.apple.com/de/app/tootle-for-mastodon/id1236013466) entered hostname must match in upper/lower case. Currently crashes on "Status" type notifications.
#### Linux
* [Choqok](https://choqok.kde.org)
* [Whalebird](https://whalebird.social)
* [TheDesk](https://ja.mstdn.wiki/TheDesk)
* [Toot](https://toot.readthedocs.io/en/latest/)
* [Tootle](https://github.com/bleakgrey/tootle)
#### Windows
* [Friendica Mobile](https://www.microsoft.com/de-DE/store/p/friendica-mobile/9nblggh0fhmn?rtc=1) (Windows 10)
Depending on the features of the client you might encounter some glitches in usability, like being limited in the length of your postings to 140 characters and having no access to the [permission settings](help/Groups-and-Privacy). Depending on the features of the client you might encounter some glitches in usability, like being limited in the length of your postings to 140 characters and having no access to the [permission settings](help/Groups-and-Privacy).
Admin Admin

View file

@ -4,49 +4,75 @@ Database Tables
* [Home](help) * [Home](help)
| Table | Description | | Table | Description |
|------------------------------------------------------|--------------------------------------------------| |-------|-------------|
| [2fa_app_specific_password](help/database/db_2fa_app_specific_password) | Two-factor app-specific _password |
| [2fa_recovery_codes](help/database/db_2fa_recovery_codes) | Two-factor authentication recovery codes |
| [2fa_trusted_browser](help/database/db_2fa_trusted_browser) | Two-factor authentication trusted browsers |
| [addon](help/database/db_addon) | registered addons | | [addon](help/database/db_addon) | registered addons |
| [apcontact](help/database/db_apcontact) | ActivityPub compatible contacts - used in the ActivityPub implementation |
| [application](help/database/db_application) | OAuth application |
| [application-token](help/database/db_application-token) | OAuth user token |
| [attach](help/database/db_attach) | file attachments | | [attach](help/database/db_attach) | file attachments |
| [auth_codes](help/database/db_auth_codes) | OAuth usage | | [auth_codes](help/database/db_auth_codes) | OAuth usage |
| [cache](help/database/db_cache) | OEmbed cache | | [cache](help/database/db_cache) | Stores temporary data |
| [challenge](help/database/db_challenge) | | | [challenge](help/database/db_challenge) | |
| [clients](help/database/db_clients) | OAuth usage | | [clients](help/database/db_clients) | OAuth usage |
| [config](help/database/db_config) | main configuration storage | | [config](help/database/db_config) | main configuration storage |
| [contact](help/database/db_contact) | contact table | | [contact](help/database/db_contact) | contact table |
| [contact-relation](help/database/db_contact-relation) | Contact relations |
| [conv](help/database/db_conv) | private messages | | [conv](help/database/db_conv) | private messages |
| [conversation](help/database/db_conversation) | Raw data and structure information for messages | | [conversation](help/database/db_conversation) | Raw data and structure information for messages |
| [delayed-post](help/database/db_delayed-post) | Posts that are about to be distributed at a later time |
| [diaspora-interaction](help/database/db_diaspora-interaction) | Signed Diaspora Interaction |
| [event](help/database/db_event) | Events | | [event](help/database/db_event) | Events |
| [fcontact](help/database/db_fcontact) | friend suggestion stuff | | [fcontact](help/database/db_fcontact) | Diaspora compatible contacts - used in the Diaspora implementation |
| [fsuggest](help/database/db_fsuggest) | friend suggestion stuff | | [fsuggest](help/database/db_fsuggest) | friend suggestion stuff |
| [group](help/database/db_group) | privacy groups, group info | | [group](help/database/db_group) | privacy groups, group info |
| [group_member](help/database/db_group_member) | privacy groups, member info | | [group_member](help/database/db_group_member) | privacy groups, member info |
| [gserver](help/database/db_gserver) | | | [gserver](help/database/db_gserver) | Global servers |
| [gserver-tag](help/database/db_gserver-tag) | Tags that the server has subscribed |
| [hook](help/database/db_hook) | addon hook registry | | [hook](help/database/db_hook) | addon hook registry |
| [host](help/database/db_host) | Hostname |
| [inbox-status](help/database/db_inbox-status) | Status of ActivityPub inboxes |
| [intro](help/database/db_intro) | | | [intro](help/database/db_intro) | |
| [item](help/database/db_item) | all posts | | [item-uri](help/database/db_item-uri) | URI and GUID for items |
| [locks](help/database/db_locks) | | | [locks](help/database/db_locks) | |
| [mail](help/database/db_mail) | private messages | | [mail](help/database/db_mail) | private messages |
| [mailacct](help/database/db_mailacct) | | | [mailacct](help/database/db_mailacct) | Mail account data for fetching mails |
| [manage](help/database/db_manage) | table of accounts that can "su" each other | | [manage](help/database/db_manage) | table of accounts that can manage each other |
| [notification](help/database/db_notification) | notifications |
| [notify](help/database/db_notify) | notifications | | [notify](help/database/db_notify) | notifications |
| [notify-threads](help/database/db_notify-threads) | | | [notify-threads](help/database/db_notify-threads) | |
| [oembed](help/database/db_oembed) | cache for OEmbed queries | | [oembed](help/database/db_oembed) | cache for OEmbed queries |
| [parsed_url](help/database/db_parsed_url) | cache for "parse_url" queries | | [openwebauth-token](help/database/db_openwebauth-token) | Store OpenWebAuth token to verify contacts |
| [parsed_url](help/database/db_parsed_url) | cache for 'parse_url' queries |
| [pconfig](help/database/db_pconfig) | personal (per user) configuration storage | | [pconfig](help/database/db_pconfig) | personal (per user) configuration storage |
| [permissionset](help/database/db_permissionset) | |
| [photo](help/database/db_photo) | photo storage | | [photo](help/database/db_photo) | photo storage |
| [poll](help/database/db_poll) | data for polls | | [post](help/database/db_post) | Structure for all posts |
| [poll_result](help/database/db_poll_result) | data for poll elements | | [post-category](help/database/db_post-category) | post relation to categories |
| [post-content](help/database/db_post-content) | Content for all posts |
| [post-delivery-data](help/database/db_post-delivery-data) | Delivery data for items |
| [post-media](help/database/db_post-media) | Attached media |
| [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 |
| [post-user](help/database/db_post-user) | User specific post data |
| [post-user-notification](help/database/db_post-user-notification) | User post notifications |
| [process](help/database/db_process) | Currently running system processes |
| [profile](help/database/db_profile) | user profiles data | | [profile](help/database/db_profile) | user profiles data |
| [profile_check](help/database/db_profile_check) | DFRN remote auth use | | [profile_check](help/database/db_profile_check) | DFRN remote auth use |
| [push_subscriber](help/database/db_push_subscriber) | | | [profile_field](help/database/db_profile_field) | Custom profile fields |
| [queue](help/database/db_queue) | | | [push_subscriber](help/database/db_push_subscriber) | Used for OStatus: Contains feed subscribers |
| [register](help/database/db_register) | registrations requiring admin approval | | [register](help/database/db_register) | registrations requiring admin approval |
| [search](help/database/db_search) | | | [search](help/database/db_search) | |
| [session](help/database/db_session) | web session storage | | [session](help/database/db_session) | web session storage |
| [sign](help/database/db_sign) | Diaspora signatures | | [storage](help/database/db_storage) | Data stored by Database storage backend |
| [term](help/database/db_term) | item taxonomy (categories, tags, etc.) table | | [tag](help/database/db_tag) | tags and mentions |
| [thread](help/database/db_thread) | |
| [tokens](help/database/db_tokens) | OAuth usage | | [tokens](help/database/db_tokens) | OAuth usage |
| [user](help/database/db_user) | local user table | | [user](help/database/db_user) | The local users |
| [userd](help/database/db_userd) | | | [user-contact](help/database/db_user-contact) | User specific public contact data |
| [workerqueue](help/database/db_workerqueue) | | | [userd](help/database/db_userd) | Deleted usernames |
| [verb](help/database/db_verb) | Activity Verbs |
| [worker-ipc](help/database/db_worker-ipc) | Inter process communication between the frontend and the worker |
| [workerqueue](help/database/db_workerqueue) | Background tasks queue entries |

View file

@ -0,0 +1,33 @@
Table 2fa_app_specific_password
===========
Two-factor app-specific _password
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| --------------- | ---------------------------------------- | ------------------ | ---- | --- | ------- | -------------- |
| id | Password ID for revocation | mediumint unsigned | NO | PRI | NULL | auto_increment |
| uid | User ID | mediumint unsigned | NO | | NULL | |
| description | Description of the usage of the password | varchar(255) | YES | | NULL | |
| hashed_password | Hashed password | varchar(255) | NO | | NULL | |
| generated | Datetime the password was generated | datetime | NO | | NULL | |
| last_used | Datetime the password was last used | datetime | YES | | NULL | |
Indexes
------------
| Name | Fields |
| --------------- | --------------------- |
| PRIMARY | id |
| uid_description | uid, description(190) |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -0,0 +1,30 @@
Table 2fa_recovery_codes
===========
Two-factor authentication recovery codes
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| --------- | ------------------------------- | ------------------ | ---- | --- | ------- | ----- |
| uid | User ID | mediumint unsigned | NO | PRI | NULL | |
| code | Recovery code string | varchar(50) | NO | PRI | NULL | |
| generated | Datetime the code was generated | datetime | NO | | NULL | |
| used | Datetime the code was used | datetime | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | --------- |
| PRIMARY | uid, code |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -0,0 +1,32 @@
Table 2fa_trusted_browser
===========
Two-factor authentication trusted browsers
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----------- | ------------------------------------------ | ------------------ | ---- | --- | ------- | ----- |
| cookie_hash | Trusted cookie hash | varchar(80) | NO | PRI | NULL | |
| uid | User ID | mediumint unsigned | NO | | NULL | |
| user_agent | User agent string | text | YES | | NULL | |
| created | Datetime the trusted browser was recorded | datetime | NO | | NULL | |
| last_used | Datetime the trusted browser was last used | datetime | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ----------- |
| PRIMARY | cookie_hash |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -1,17 +1,29 @@
Table addon Table addon
=========== ===========
| Field | Description | Type | Null | Key | Default | Extra | registered addons
| ------------- | --------------------------------------------- | ---------- | ---- | --- | ------- | --------------- |
| id | | int(11) | NO | PRI | NULL | auto_increment | Fields
| name | addon base (file)name | char(255) | NO | | | | ------
| version | currently unused | char(255) | NO | | | |
| installed | currently always 1 | tinyint(1) | NO | | 0 | | | Field | Description | Type | Null | Key | Default | Extra |
| hidden | currently unused | tinyint(1) | NO | | 0 | | | ------------ | --------------------------------------------- | ------------ | ---- | --- | ------- | -------------- |
| timestamp | file timestamp to check for reloads | bigint(20) | NO | | 0 | | | id | | int unsigned | NO | PRI | NULL | auto_increment |
| plugin_admin | 1 = has admin config, 0 = has no admin config | tinyint(1) | NO | | 0 | | | name | addon base (file)name | varchar(50) | NO | | | |
| version | currently unused | varchar(50) | NO | | | |
| installed | currently always 1 | boolean | NO | | 0 | |
| hidden | currently unused | boolean | NO | | 0 | |
| timestamp | file timestamp to check for reloads | int unsigned | NO | | 0 | |
| plugin_admin | 1 = has admin config, 0 = has no admin config | boolean | NO | | 0 | |
Indexes
------------
| Name | Fields |
| -------------- | --------------- |
| PRIMARY | id |
| installed_name | installed, name |
| name | UNIQUE, name |
Notes:
These are addons which have been enabled by the site administrator on the addon page
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -0,0 +1,56 @@
Table apcontact
===========
ActivityPub compatible contacts - used in the ActivityPub implementation
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ---------------- | ---------------------------- | -------------- | ---- | --- | ------------------- | ----- |
| url | URL of the contact | varbinary(255) | NO | PRI | NULL | |
| uuid | | varchar(255) | YES | | NULL | |
| type | | varchar(20) | NO | | NULL | |
| following | | varchar(255) | YES | | NULL | |
| followers | | varchar(255) | YES | | NULL | |
| inbox | | varchar(255) | NO | | NULL | |
| outbox | | varchar(255) | YES | | NULL | |
| sharedinbox | | varchar(255) | YES | | NULL | |
| manually-approve | | boolean | YES | | NULL | |
| nick | | varchar(255) | NO | | | |
| name | | varchar(255) | YES | | NULL | |
| about | | text | YES | | NULL | |
| photo | | varchar(255) | YES | | NULL | |
| addr | | varchar(255) | YES | | NULL | |
| alias | | varchar(255) | YES | | NULL | |
| pubkey | | text | YES | | NULL | |
| subscribe | | varchar(255) | YES | | NULL | |
| baseurl | baseurl of the ap contact | varchar(255) | 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
------------
| Name | Fields |
| ----------- | ---------------- |
| PRIMARY | url |
| addr | addr(32) |
| alias | alias(190) |
| followers | followers(190) |
| baseurl | baseurl(190) |
| sharedinbox | sharedinbox(190) |
| gsid | gsid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| gsid | [gserver](help/database/db_gserver) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,38 @@
Table application-token
===========
OAuth user token
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| -------------- | ------------- | ------------------ | ---- | --- | ------- | ----- |
| application-id | | int unsigned | NO | PRI | NULL | |
| uid | Owner User id | mediumint unsigned | NO | PRI | NULL | |
| code | | varchar(64) | NO | | NULL | |
| access_token | | varchar(64) | NO | | NULL | |
| created_at | creation time | datetime | NO | | NULL | |
| scopes | | varchar(255) | YES | | NULL | |
| read | Read scope | boolean | YES | | NULL | |
| write | Write scope | boolean | YES | | NULL | |
| follow | Follow scope | boolean | YES | | NULL | |
| push | Push scope | boolean | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ------------------- |
| PRIMARY | application-id, uid |
| uid_id | uid, application-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| application-id | [application](help/database/db_application) | id |
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -0,0 +1,32 @@
Table application
===========
OAuth application
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------------- | --------------- | ------------ | ---- | --- | ------- | -------------- |
| id | generated index | int unsigned | NO | PRI | NULL | auto_increment |
| client_id | | varchar(64) | NO | | NULL | |
| client_secret | | varchar(64) | NO | | NULL | |
| name | | varchar(255) | NO | | NULL | |
| redirect_uri | | varchar(255) | NO | | NULL | |
| website | | varchar(255) | YES | | NULL | |
| scopes | | varchar(255) | YES | | NULL | |
| read | Read scope | boolean | YES | | NULL | |
| write | Write scope | boolean | YES | | NULL | |
| follow | Follow scope | boolean | YES | | NULL | |
| push | Push scope | boolean | YES | | NULL | |
Indexes
------------
| Name | Fields |
| --------- | ----------------- |
| PRIMARY | id |
| client_id | UNIQUE, client_id |
Return to [database documentation](help/database)

View file

@ -1,22 +1,42 @@
Table attach Table attach
============ ===========
file attachments
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ---------- | ------------------------------------------------------| ------------ | ---- | --- | ------------------- | --------------- | | ------------- | ----------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | generated index | int(11) | NO | PRI | NULL | auto_increment | | id | generated index | int unsigned | NO | PRI | NULL | auto_increment |
| uid | user_id of owner | int(11) | NO | | 0 | | | uid | Owner User id | mediumint unsigned | NO | | 0 | |
| hash | hash | varchar(64) | NO | | | | | hash | hash | varchar(64) | NO | | | |
| filename | filename of original | varchar(255) | NO | | | | | filename | filename of original | varchar(255) | NO | | | |
| filetype | mimetype | varchar(64) | NO | | | | | filetype | mimetype | varchar(64) | NO | | | |
| filesize | size in bytes | int(11) | NO | | 0 | | | filesize | size in bytes | int unsigned | NO | | 0 | |
| data | file data | longblob | NO | | NULL | | | data | file data | longblob | NO | | NULL | |
| created | creation time | datetime | NO | | 0001-01-01 00:00:00 | | | created | creation time | datetime | NO | | 0001-01-01 00:00:00 | |
| edited | last edit time | datetime | NO | | 0001-01-01 00:00:00 | | | edited | last edit time | datetime | NO | | 0001-01-01 00:00:00 | |
| allow_cid | Access Control - list of allowed contact.id '<19><78> | mediumtext | NO | | NULL | | | allow_cid | Access Control - list of allowed contact.id '<19><78> | mediumtext | YES | | NULL | |
| allow_gid | Access Control - list of allowed groups | mediumtext | NO | | NULL | | | allow_gid | Access Control - list of allowed groups | mediumtext | YES | | NULL | |
| deny_cid | Access Control - list of denied contact.id | mediumtext | NO | | NULL | | | deny_cid | Access Control - list of denied contact.id | mediumtext | YES | | NULL | |
| deny_gid | Access Control - list of denied groups | mediumtext | NO | | NULL | | | deny_gid | Access Control - list of denied groups | mediumtext | YES | | NULL | |
| backend-class | Storage backend class | tinytext | YES | | NULL | |
| backend-ref | Storage backend data reference | text | YES | | NULL | |
Notes: Permissions are surrounded by angle chars. e.g. <4> Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,14 +1,32 @@
Table auth_codes Table auth_codes
================ ===========
OAuth2 authorisation register - currently implemented but unused OAuth usage
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ------------- | ----------- | ------------ | ---- | --- | ------- | ----- | | ------------ | ----------- | ------------ | ---- | --- | ------- | ----- |
| id | | varchar(40) | NO | PRI | NULL | | | id | | varchar(40) | NO | PRI | NULL | |
| client_id | | varchar(20) | NO | | | | | client_id | | varchar(20) | NO | | | |
| redirect_uri | | varchar(200) | NO | | | | | redirect_uri | | varchar(200) | NO | | | |
| expires | | int(11) | NO | | 0 | | | expires | | int | NO | | 0 | |
| scope | | varchar(250) | NO | | | | | scope | | varchar(250) | NO | | | |
Indexes
------------
| Name | Fields |
| --------- | --------- |
| PRIMARY | id |
| client_id | client_id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| client_id | [clients](help/database/db_clients) | client_id |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -3,11 +3,23 @@ Table cache
Stores temporary data Stores temporary data
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ------------ | ---------------------------------- | ------------ | ---- | --- | ------------------- | ----- | | ------- | ---------------------------- | -------------- | ---- | --- | ------------------- | ----- |
| k | cache key | varchar(255) | NO | PRI | NULL | | | k | cache key | varbinary(255) | NO | PRI | NULL | |
| v | cached serialized value | text | NO | | NULL | | | v | cached serialized value | mediumtext | YES | | NULL | |
| expires | datetime of cache expiration | datetime | NO | MUL | 0001-01-01 00:00:00 | | | expires | datetime of cache expiration | datetime | NO | | 0001-01-01 00:00:00 | |
| updated | datetime of cache insertion | datetime | NO | MUL | 0001-01-01 00:00:00 | | | updated | datetime of cache insertion | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| --------- | ---------- |
| PRIMARY | k |
| k_expires | k, expires |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,13 +1,27 @@
Table challenge Table challenge
=============== ===========
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|-------------|------------------|------------------|------|-----|---------|----------------| | ----------- | ------------- | ------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| challenge | | varchar(255) | NO | | | | | challenge | | varchar(255) | NO | | | |
| dfrn-id | | varchar(255) | NO | | | | | dfrn-id | | varchar(255) | NO | | | |
| expire | | int(11) | NO | | 0 | | | expire | | int unsigned | NO | | 0 | |
| type | | varchar(255) | NO | | | | | type | | varchar(255) | NO | | | |
| last_update | | varchar(255) | NO | | | | | last_update | | varchar(255) | NO | | | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
| expire | expire |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,13 +1,33 @@
Table clients Table clients
============= ===========
OAuth usage
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ------------- | ----------- | ------------ | ---- | --- | ------- | ----- | | ------------ | ----------- | ------------------ | ---- | --- | ------- | ----- |
| client_id | | varchar(20) | NO | PRI | NULL | | | client_id | | varchar(20) | NO | PRI | NULL | |
| pw | | varchar(20) | NO | | | | | pw | | varchar(20) | NO | | | |
| redirect_uri | | varchar(200) | NO | | | | | redirect_uri | | varchar(200) | NO | | | |
| name | | text | YES | | NULL | | | name | | text | YES | | NULL | |
| icon | | text | YES | | NULL | | | icon | | text | YES | | NULL | |
| uid | | int(11) | NO | | 0 | | | uid | User id | mediumint unsigned | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------- | --------- |
| PRIMARY | client_id |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,11 +1,25 @@
Table config Table config
============ ===========
main configuration storage
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ----- | ----------- | ---------------- | ---- | --- | ------- | --------------- | | ----- | ----------- | ------------- | ---- | --- | ------- | -------------- |
| id | | int(10) unsigned | NO | PRI | NULL | auto_increment | | id | | int unsigned | NO | PRI | NULL | auto_increment |
| cat | | char(255) | NO | MUL | | | | cat | | varbinary(50) | NO | | | |
| k | | char(255) | NO | | | | | k | | varbinary(50) | NO | | | |
| v | | text | NO | | NULL | | | v | | mediumtext | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | -------------- |
| PRIMARY | id |
| cat_k | UNIQUE, cat, k |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -0,0 +1,33 @@
Table contact-relation
===========
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 | 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 | | boolean | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------------ | ----------------- |
| PRIMARY | cid, relation-cid |
| relation-cid | relation-cid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| cid | [contact](help/database/db_contact) | id |
| relation-cid | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database)

View file

@ -1,72 +1,129 @@
Table contact Table contact
============= ===========
contact table
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|---------------------------|-----------------------------------------------------------|--------------|------|-----|---------------------|----------------| | ------------------------- | --------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | user.id of the owner of this data | int(11) | NO | MUL | 0 | | | uid | Owner User id | mediumint unsigned | NO | | 0 | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | | | created | | datetime | NO | | 0001-01-01 00:00:00 | |
| self | 1 if the contact is the user him/her self | tinyint(1) | NO | | 0 | | | updated | Date of last contact update | datetime | YES | | 0001-01-01 00:00:00 | |
| remote_self | | tinyint(1) | NO | | 0 | | | self | 1 if the contact is the user him/her self | boolean | NO | | 0 | |
| rel | The kind of the relation between the user and the contact | tinyint(1) | NO | | 0 | | | remote_self | | boolean | NO | | 0 | |
| duplex | | tinyint(1) | NO | | 0 | | | rel | The kind of the relation between the user and the contact | tinyint unsigned | NO | | 0 | |
| network | Network protocol of the contact | varchar(255) | NO | | | | | duplex | | boolean | NO | | 0 | |
| network | Network of the contact | char(4) | NO | | | |
| protocol | Protocol of the contact | char(4) | NO | | | |
| name | Name that this contact is known by | varchar(255) | NO | | | | | name | Name that this contact is known by | varchar(255) | NO | | | |
| nick | Nick- and user name of the contact | varchar(255) | NO | | | | | nick | Nick- and user name of the contact | varchar(255) | NO | | | |
| location | | varchar(255) | NO | | | | | location | | varchar(255) | YES | | | |
| about | | text | NO | | NULL | | | about | | text | YES | | NULL | |
| keywords | public keywords (interests) of the contact | text | NO | | NULL | | | keywords | public keywords (interests) of the contact | text | YES | | NULL | |
| gender | | varchar(32) | NO | | | | | gender | Deprecated | varchar(32) | NO | | | |
| xmpp | | varchar(255) | NO | | | |
| attag | | varchar(255) | NO | | | | | attag | | varchar(255) | NO | | | |
| photo | Link to the profile photo of the contact | text | NO | | NULL | | | avatar | | varchar(255) | NO | | | |
| thumb | Link to the profile photo (thumb size) | text | NO | | NULL | | | photo | Link to the profile photo of the contact | varchar(255) | YES | | | |
| micro | Link to the profile photo (micro size) | text | NO | | NULL | | | thumb | Link to the profile photo (thumb size) | varchar(255) | YES | | | |
| site-pubkey | | text | NO | | NULL | | | micro | Link to the profile photo (micro size) | varchar(255) | YES | | | |
| site-pubkey | | text | YES | | NULL | |
| issued-id | | varchar(255) | NO | | | | | issued-id | | varchar(255) | NO | | | |
| dfrn-id | | varchar(255) | NO | | | | | dfrn-id | | varchar(255) | NO | | | |
| url | | varchar(255) | NO | | | | | url | | varchar(255) | NO | | | |
| nurl | | varchar(255) | NO | | | | | nurl | | varchar(255) | NO | | | |
| addr | | varchar(255) | NO | | | | | addr | | varchar(255) | NO | | | |
| alias | | varchar(255) | NO | | | | | alias | | varchar(255) | NO | | | |
| pubkey | RSA public key 4096 bit | text | NO | | NULL | | | pubkey | RSA public key 4096 bit | text | YES | | NULL | |
| prvkey | RSA private key 4096 bit | text | NO | | NULL | | | prvkey | RSA private key 4096 bit | text | YES | | NULL | |
| batch | | varchar(255) | NO | | | | | batch | | varchar(255) | NO | | | |
| request | | text | NO | | NULL | | | request | | varchar(255) | YES | | NULL | |
| notify | | text | NO | | NULL | | | notify | | varchar(255) | YES | | NULL | |
| poll | | text | NO | | NULL | | | poll | | varchar(255) | YES | | NULL | |
| confirm | | text | NO | | NULL | | | confirm | | varchar(255) | YES | | NULL | |
| poco | | text | NO | | NULL | | | subscribe | | varchar(255) | YES | | NULL | |
| aes_allow | | tinyint(1) | NO | | 0 | | | poco | | varchar(255) | YES | | NULL | |
| ret-aes | | tinyint(1) | NO | | 0 | | | aes_allow | | boolean | NO | | 0 | |
| usehub | | tinyint(1) | NO | | 0 | | | ret-aes | | boolean | NO | | 0 | |
| subhub | | tinyint(1) | NO | | 0 | | | usehub | | boolean | NO | | 0 | |
| subhub | | boolean | NO | | 0 | |
| hub-verify | | varchar(255) | NO | | | | | hub-verify | | varchar(255) | NO | | | |
| last-update | Date of the last try to update the contact info | datetime | NO | | 0001-01-01 00:00:00 | | | last-update | Date of the last try to update the contact info | datetime | NO | | 0001-01-01 00:00:00 | |
| success_update | Date of the last successful contact update | datetime | NO | | 0001-01-01 00:00:00 | | | success_update | Date of the last successful contact update | datetime | NO | | 0001-01-01 00:00:00 | |
| failure_update | Date of the last failed update | datetime | NO | | 0001-01-01 00:00:00 | | | failure_update | Date of the last failed update | datetime | NO | | 0001-01-01 00:00:00 | |
| failed | Connection failed | boolean | YES | | NULL | |
| name-date | | datetime | NO | | 0001-01-01 00:00:00 | | | name-date | | datetime | NO | | 0001-01-01 00:00:00 | |
| uri-date | | datetime | NO | | 0001-01-01 00:00:00 | | | uri-date | | datetime | NO | | 0001-01-01 00:00:00 | |
| avatar-date | | datetime | NO | | 0001-01-01 00:00:00 | | | avatar-date | | datetime | NO | | 0001-01-01 00:00:00 | |
| term-date | | datetime | NO | | 0001-01-01 00:00:00 | | | term-date | | datetime | NO | | 0001-01-01 00:00:00 | |
| last-item | date of the last post | datetime | NO | | 0001-01-01 00:00:00 | | | last-item | date of the last post | datetime | NO | | 0001-01-01 00:00:00 | |
| priority | | tinyint(3) | NO | | 0 | | | last-discovery | date of the last follower discovery | datetime | NO | | 0001-01-01 00:00:00 | |
| blocked | | tinyint(1) | NO | | 1 | | | priority | | tinyint unsigned | NO | | 0 | |
| readonly | posts of the contact are readonly | tinyint(1) | NO | | 0 | | | blocked | Node-wide block status | boolean | NO | | 1 | |
| writable | | tinyint(1) | NO | | 0 | | | block_reason | Node-wide block reason | text | YES | | NULL | |
| forum | contact is a forum | tinyint(1) | NO | | 0 | | | readonly | posts of the contact are readonly | boolean | NO | | 0 | |
| prv | contact is a private group | tinyint(1) | NO | | 0 | | | writable | | boolean | NO | | 0 | |
| hidden | | tinyint(1) | NO | | 0 | | | forum | contact is a forum | boolean | NO | | 0 | |
| archive | | tinyint(1) | NO | | 0 | | | prv | contact is a private group | boolean | NO | | 0 | |
| pending | | tinyint(1) | NO | | 1 | | | contact-type | | tinyint | NO | | 0 | |
| rating | | tinyint(1) | NO | | 0 | | | manually-approve | | boolean | YES | | NULL | |
| reason | | text | NO | | NULL | | | hidden | | boolean | NO | | 0 | |
| closeness | | tinyint(2) | NO | | 99 | | | archive | | boolean | NO | | 0 | |
| info | | mediumtext | NO | | NULL | | | pending | | boolean | NO | | 1 | |
| profile-id | | int(11) | NO | | 0 | | | deleted | Contact has been deleted | boolean | NO | | 0 | |
| rating | | tinyint | NO | | 0 | |
| unsearchable | Contact prefers to not be searchable | boolean | NO | | 0 | |
| sensitive | Contact posts sensitive content | boolean | NO | | 0 | |
| baseurl | baseurl of the contact | varchar(255) | YES | | | |
| gsid | Global Server ID | int unsigned | YES | | NULL | |
| reason | | text | YES | | NULL | |
| closeness | | tinyint unsigned | NO | | 99 | |
| info | | mediumtext | YES | | NULL | |
| profile-id | Deprecated | int unsigned | YES | | NULL | |
| bdyear | | varchar(4) | NO | | | | | bdyear | | varchar(4) | NO | | | |
| bd | | date | NO | | 0001-01-01 | | | bd | | date | NO | | 0001-01-01 | |
| notify_new_posts | | tinyint(1) | NO | | 0 | | | notify_new_posts | | boolean | NO | | 0 | |
| fetch_further_information | | tinyint(1) | NO | | 0 | | | fetch_further_information | | tinyint unsigned | NO | | 0 | |
| ffi_keyword_denylist | | mediumtext | NO | | NULL | | | ffi_keyword_denylist | | text | YES | | NULL | |
Indexes
------------
| Name | Fields |
| --------------------------- | ------------------------------------ |
| PRIMARY | id |
| uid_name | uid, name(190) |
| self_uid | self, uid |
| alias_uid | alias(128), uid |
| pending_uid | pending, uid |
| blocked_uid | blocked, uid |
| uid_rel_network_poll | uid, rel, network, poll(64), archive |
| uid_network_batch | uid, network, batch(64) |
| batch_contact-type | batch(64), contact-type |
| addr_uid | addr(128), uid |
| nurl_uid | nurl(128), uid |
| nick_uid | nick(128), uid |
| attag_uid | attag(96), uid |
| dfrn-id | dfrn-id(64) |
| issued-id | issued-id(64) |
| network_uid_lastupdate | network, uid, last-update |
| uid_network_self_lastupdate | uid, network, self, last-update |
| uid_lastitem | uid, last-item |
| baseurl | baseurl(64) |
| uid_contact-type | uid, contact-type |
| uid_self_contact-type | uid, self, contact-type |
| self_network_uid | self, network, uid |
| gsid | gsid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| gsid | [gserver](help/database/db_gserver) | id |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,15 +1,35 @@
Table conv Table conv
========== ===========
private messages
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ------- | ----------------------------------------- | ---------------- | ---- | --- | ------------------- | --------------- | | ------- | ----------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| guid | A unique identifier for this conversation | varchar(64) | NO | | | | | guid | A unique identifier for this conversation | varchar(255) | NO | | | |
| recips | sender_handle;recipient_handle | mediumtext | NO | | NULL | | | recips | sender_handle;recipient_handle | text | YES | | NULL | |
| uid | user_id of the owner of this data | int(11) | NO | MUL | 0 | | | uid | Owner User id | mediumint unsigned | NO | | 0 | |
| creator | handle of creator | varchar(255) | NO | | | | | creator | handle of creator | varchar(255) | NO | | | |
| created | creation timestamp | datetime | NO | | 0001-01-01 00:00:00 | | | created | creation timestamp | datetime | NO | | 0001-01-01 00:00:00 | |
| updated | edited timestamp | datetime | NO | | 0001-01-01 00:00:00 | | | updated | edited timestamp | datetime | NO | | 0001-01-01 00:00:00 | |
| subject | subject of initial message | mediumtext | NO | | NULL | | | subject | subject of initial message | text | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,14 +1,30 @@
Table conversation Table conversation
================== ===========
Raw data and structure information for messages
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|-------------------| ---------------------------------- |---------------------|------|-----|---------------------|----------------| | ----------------- | -------------------------------------------------------------------- | ---------------- | ---- | --- | ------------------- | ----- |
| item-uri | URI of the item | varbinary(255) | NO | PRI | NULL | | | item-uri | Original URI of the item - unrelated to the table with the same name | varbinary(255) | NO | PRI | NULL | |
| reply-to-uri | URI to which this item is a reply | varbinary(255) | NO | | | | | reply-to-uri | URI to which this item is a reply | varbinary(255) | NO | | | |
| conversation-uri | GNU Social conversation URI | varbinary(255) | NO | | | | | conversation-uri | GNU Social conversation URI | varbinary(255) | NO | | | |
| conversation-href | GNU Social conversation link | varbinary(255) | NO | | | | | conversation-href | GNU Social conversation link | varbinary(255) | NO | | | |
| protocol | The protocol of the item | tinyint(1) unsigned | NO | | 0 | | | protocol | The protocol of the item | tinyint unsigned | NO | | 255 | |
| source | Original source | mediumtext | NO | | | | | direction | How the message arrived here: 1=push, 2=pull | tinyint unsigned | NO | | 0 | |
| received | Receiving date | datetime | NO | | 0001-01-01 | | | source | Original source | mediumtext | YES | | NULL | |
| received | Receiving date | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ---------------- | ---------------- |
| PRIMARY | item-uri |
| conversation-uri | conversation-uri |
| received | received |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -0,0 +1,31 @@
Table delayed-post
===========
Posts that are about to be distributed at a later time
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------- | ---------------------------------------------- | ------------------ | ---- | --- | ------- | -------------- |
| id | | int unsigned | NO | PRI | NULL | auto_increment |
| uri | URI of the post that will be distributed later | varchar(255) | YES | | NULL | |
| uid | Owner User id | mediumint unsigned | YES | | NULL | |
| delayed | delay time | datetime | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | --------------------- |
| PRIMARY | id |
| uid_uri | UNIQUE, uid, uri(190) |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -0,0 +1,28 @@
Table diaspora-interaction
===========
Signed Diaspora Interaction
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 | |
| interaction | The Diaspora interaction | mediumtext | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | uri-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -1,26 +1,49 @@
Table event Table event
=========== ===========
Events
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ---------- | ----------------------------------------------- -------| ------------------- | ---- | --- | ------------------- | --------------- | | --------- | ------------------------------------------------------ | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | user_id of the owner of this data | int(11) | NO | MUL | 0 | | | guid | | varchar(255) | NO | | | |
| cid | contact_id (ID of the contact in contact table) | int(11) | NO | | 0 | | | uid | Owner User id | mediumint unsigned | NO | | 0 | |
| cid | contact_id (ID of the contact in contact table) | int unsigned | NO | | 0 | |
| uri | | varchar(255) | NO | | | | | uri | | varchar(255) | NO | | | |
| created | creation time | datetime | NO | | 0001-01-01 00:00:00 | | | created | creation time | datetime | NO | | 0001-01-01 00:00:00 | |
| edited | last edit time | datetime | NO | | 0001-01-01 00:00:00 | | | edited | last edit time | datetime | NO | | 0001-01-01 00:00:00 | |
| start | event start time | datetime | NO | | 0001-01-01 00:00:00 | | | start | event start time | datetime | NO | | 0001-01-01 00:00:00 | |
| finish | event end time | datetime | NO | | 0001-01-01 00:00:00 | | | finish | event end time | datetime | NO | | 0001-01-01 00:00:00 | |
| summary | short description or title of the event | text | NO | | NULL | | | summary | short description or title of the event | text | YES | | NULL | |
| desc | event description | text | NO | | NULL | | | desc | event description | text | YES | | NULL | |
| location | event location | text | NO | | NULL | | | location | event location | text | YES | | NULL | |
| type | event or birthday | varchar(255) | NO | | | | | type | event or birthday | varchar(20) | NO | | | |
| nofinish | if event does have no end this is 1 | tinyint(1) | NO | | 0 | | | nofinish | if event does have no end this is 1 | boolean | NO | | 0 | |
| adjust | adjust to timezone of the recipient (0 or 1) | tinyint(1) | NO | | 1 | | | adjust | adjust to timezone of the recipient (0 or 1) | boolean | NO | | 1 | |
| ignore | 0 or 1 | tinyint(1) unsigned | NO | | 0 | | | ignore | 0 or 1 | boolean | NO | | 0 | |
| allow_cid | Access Control - list of allowed contact.id '<19><78>' | mediumtext | NO | | NULL | | | allow_cid | Access Control - list of allowed contact.id '<19><78>' | mediumtext | YES | | NULL | |
| allow_gid | Access Control - list of allowed groups | mediumtext | NO | | NULL | | | allow_gid | Access Control - list of allowed groups | mediumtext | YES | | NULL | |
| deny_cid | Access Control - list of denied contact.id | mediumtext | NO | | NULL | | | deny_cid | Access Control - list of denied contact.id | mediumtext | YES | | NULL | |
| deny_gid | Access Control - list of denied groups | mediumtext | NO | | NULL | | | deny_gid | Access Control - list of denied groups | mediumtext | YES | | NULL | |
Indexes
------------
| Name | Fields |
| --------- | ---------- |
| PRIMARY | id |
| uid_start | uid, start |
| cid | cid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| cid | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,24 +1,39 @@
Table fcontact Table fcontact
============== ===========
Diaspora compatible contacts - used in the Diaspora implementation
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| -------- | ------------- | ---------------- | ---- | --- | ------------------- | --------------- | | -------- | ------------- | ---------------- | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| guid | unique id | varchar(64) | NO | | | | | guid | unique id | varchar(255) | NO | | | |
| url | | varchar(255) | NO | | | | | url | | varchar(255) | NO | | | |
| name | | varchar(255) | NO | | | | | name | | varchar(255) | NO | | | |
| photo | | varchar(255) | NO | | | | | photo | | varchar(255) | NO | | | |
| request | | varchar(255) | NO | | | | | request | | varchar(255) | NO | | | |
| nick | | varchar(255) | NO | | | | | nick | | varchar(255) | NO | | | |
| addr | | varchar(255) | NO | MUL | | | | addr | | varchar(255) | NO | | | |
| batch | | varchar(255) | NO | | | | | batch | | varchar(255) | NO | | | |
| notify | | varchar(255) | NO | | | | | notify | | varchar(255) | NO | | | |
| poll | | varchar(255) | NO | | | | | poll | | varchar(255) | NO | | | |
| confirm | | varchar(255) | NO | | | | | confirm | | varchar(255) | NO | | | |
| priority | | tinyint(1) | NO | | 0 | | | priority | | tinyint unsigned | NO | | 0 | |
| network | | varchar(32) | NO | | | | | network | | char(4) | NO | | | |
| alias | | varchar(255) | NO | | | | | alias | | varchar(255) | NO | | | |
| pubkey | | text | NO | | NULL | | | pubkey | | text | YES | | NULL | |
| updated | | datetime | NO | | 0001-01-01 00:00:00 | | | updated | | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------- | ---------------- |
| PRIMARY | id |
| addr | addr(32) |
| url | UNIQUE, url(190) |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,16 +1,38 @@
Table fsuggest Table fsuggest
============== ===========
friend suggestion stuff
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ------- | ----------- | ------------ | ---- | --- | ------------------- | --------------- | | ------- | ----------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | | int(11) | NO | PRI | NULL | auto_increment | | id | | int unsigned | NO | PRI | NULL | auto_increment |
| uid | | int(11) | NO | | 0 | | | uid | User id | mediumint unsigned | NO | | 0 | |
| cid | | int(11) | NO | | 0 | | | cid | | int unsigned | NO | | 0 | |
| name | | varchar(255) | NO | | | | | name | | varchar(255) | NO | | | |
| url | | varchar(255) | NO | | | | | url | | varchar(255) | NO | | | |
| request | | varchar(255) | NO | | | | | request | | varchar(255) | NO | | | |
| photo | | varchar(255) | NO | | | | | photo | | varchar(255) | NO | | | |
| note | | text | NO | | NULL | | | note | | text | YES | | NULL | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | | | created | | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
| cid | cid |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| cid | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,12 +1,32 @@
Table group Table group
=========== ===========
privacy groups, group info
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ------- | ------------------------------------------ | ---------------- | ---- | --- | ------- | --------------- | | ------- | ------------------------------------------ | ------------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | user.id owning this data | int(10) unsigned | NO | MUL | 0 | | | uid | Owner User id | mediumint unsigned | NO | | 0 | |
| visible | 1 indicates the member list is not private | tinyint(1) | NO | | 0 | | | visible | 1 indicates the member list is not private | boolean | NO | | 0 | |
| deleted | 1 indicates the group has been deleted | tinyint(1) | NO | | 0 | | | deleted | 1 indicates the group has been deleted | boolean | NO | | 0 | |
| name | human readable name of group | varchar(255) | NO | | | | | name | human readable name of group | varchar(255) | NO | | | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,11 +1,32 @@
Table group_member Table group_member
================== ===========
privacy groups, member info
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ---------- | ----------------------------------------------------------- | ---------------- | ---- | --- | ------- | --------------- | | ---------- | --------------------------------------------------------- | ------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | user.id of the owner of this data | int(10) unsigned | NO | MUL | 0 | | | gid | groups.id of the associated group | int unsigned | NO | | 0 | |
| gid | groups.id of the associated group | int(10) unsigned | NO | | 0 | | | contact-id | contact.id of the member assigned to the associated group | int unsigned | NO | | 0 | |
| contact-id | contact.id of the member assigned to the associated group | int(10) unsigned | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------------- | ----------------------- |
| PRIMARY | id |
| contactid | contact-id |
| gid_contactid | UNIQUE, gid, contact-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| gid | [group](help/database/db_group) | id |
| contact-id | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -0,0 +1,29 @@
Table gserver-tag
===========
Tags that the server has subscribed
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ---------- | ---------------------------------- | ------------ | ---- | --- | ------- | ----- |
| gserver-id | The id of the gserver | int unsigned | NO | PRI | 0 | |
| tag | Tag that the server has subscribed | varchar(100) | NO | PRI | | |
Indexes
------------
| Name | Fields |
| ------- | --------------- |
| PRIMARY | gserver-id, tag |
| tag | tag |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| gserver-id | [gserver](help/database/db_gserver) | id |
Return to [database documentation](help/database)

View file

@ -1,24 +1,46 @@
Table gserver Table gserver
============= ===========
Global servers
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|------------------|---------------------------|------------------|------|-----|---------------------|----------------| | ---------------- | -------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| url | | varchar(255) | NO | | | | | url | | varchar(255) | NO | | | |
| nurl | | varchar(255) | NO | MUL | | | | nurl | | varchar(255) | NO | | | |
| version | | varchar(255) | NO | | | | | version | | varchar(255) | NO | | | |
| site_name | | varchar(255) | NO | | | | | site_name | | varchar(255) | NO | | | |
| info | | text | NO | | NULL | | | info | | text | YES | | NULL | |
| register_policy | | tinyint(1) | NO | | 0 | | | register_policy | | tinyint | NO | | 0 | |
| registered-users |Number of registered users | int(10) | NO | | 0 | | | registered-users | Number of registered users | int unsigned | NO | | 0 | |
| directory-type | Type of directory service (Poco, Mastodon) | tinyint | YES | | 0 | |
| poco | | varchar(255) | NO | | | | | poco | | varchar(255) | NO | | | |
| noscrape | | varchar(255) | NO | | | | | noscrape | | varchar(255) | NO | | | |
| network | | varchar(32) | NO | | | | | network | | char(4) | NO | | | |
| protocol | The protocol of the server | tinyint unsigned | YES | | NULL | |
| platform | | varchar(255) | NO | | | | | 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 | | | created | | datetime | NO | | 0001-01-01 00:00:00 | |
| last_poco_query | | datetime | YES | | 0001-01-01 00:00:00 | | | last_poco_query | | datetime | YES | | 0001-01-01 00:00:00 | |
| last_contact | | datetime | YES | | 0001-01-01 00:00:00 | | | last_contact | Last successful connection request | datetime | YES | | 0001-01-01 00:00:00 | |
| last_failure | | datetime | YES | | 0001-01-01 00:00:00 | | | last_failure | Last failed connection request | datetime | YES | | 0001-01-01 00:00:00 | |
| 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 |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,12 +1,27 @@
Table hook Table hook
========== ===========
addon hook registry
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| -------- | ---------------------------------------------------------------------------------------------------------- | ---------------- | ---- | --- | ------- | --------------- | | -------- | ---------------------------------------------------------------------------------------------------------- | ----------------- | ---- | --- | ------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| hook | name of hook | varchar(255) | NO | MUL | | | | hook | name of hook | varbinary(100) | NO | | | |
| file | relative filename of hook handler | varchar(255) | NO | | | | | file | relative filename of hook handler | varbinary(200) | NO | | | |
| function | function name of hook handler | varchar(255) | NO | | | | | function | function name of hook handler | varbinary(200) | NO | | | |
| priority | not yet implemented - can be used to sort conflicts in hook handling by calling handlers in priority order | int(11) unsigned | NO | | 0 | | | priority | not yet implemented - can be used to sort conflicts in hook handling by calling handlers in priority order | smallint unsigned | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------------------ | ---------------------------- |
| PRIMARY | id |
| priority | priority |
| hook_file_function | UNIQUE, hook, file, function |
Return to [database documentation](help/database) Return to [database documentation](help/database)

23
doc/database/db_host.md Normal file
View file

@ -0,0 +1,23 @@
Table host
===========
Hostname
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----- | ------------- | ---------------- | ---- | --- | ------- | -------------- |
| id | sequential ID | tinyint unsigned | NO | PRI | NULL | auto_increment |
| name | The hostname | varchar(128) | NO | | | |
Indexes
------------
| Name | Fields |
| ------- | ------------ |
| PRIMARY | id |
| name | UNIQUE, name |
Return to [database documentation](help/database)

View file

@ -0,0 +1,27 @@
Table inbox-status
===========
Status of ActivityPub inboxes
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| -------- | ------------------------------------ | -------------- | ---- | --- | ------------------- | ----- |
| url | URL of the inbox | varbinary(255) | NO | PRI | NULL | |
| created | Creation date of this entry | datetime | NO | | 0001-01-01 00:00:00 | |
| success | Date of the last successful delivery | datetime | NO | | 0001-01-01 00:00:00 | |
| failure | Date of the last failed delivery | datetime | NO | | 0001-01-01 00:00:00 | |
| previous | Previous delivery date | datetime | NO | | 0001-01-01 00:00:00 | |
| archive | Is the inbox archived? | boolean | NO | | 0 | |
| shared | Is it a shared inbox? | boolean | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | url |
Return to [database documentation](help/database)

View file

@ -1,18 +1,40 @@
Table intro Table intro
=========== ===========
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|------------|------------------|------------------|------|-----|---------------------|----------------| | ---------- | ------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | | int(10) unsigned | NO | | 0 | | | uid | User id | mediumint unsigned | NO | | 0 | |
| fid | | int(11) | NO | | 0 | | | fid | | int unsigned | YES | | NULL | |
| contact-id | | int(11) | NO | | 0 | | | contact-id | | int unsigned | NO | | 0 | |
| knowyou | | tinyint(1) | NO | | 0 | | | knowyou | | boolean | NO | | 0 | |
| duplex | | tinyint(1) | NO | | 0 | | | duplex | | boolean | NO | | 0 | |
| note | | text | NO | | NULL | | | note | | text | YES | | NULL | |
| hash | | varchar(255) | NO | | | | | hash | | varchar(255) | NO | | | |
| datetime | | datetime | NO | | 0001-01-01 00:00:00 | | | datetime | | datetime | NO | | 0001-01-01 00:00:00 | |
| blocked | | tinyint(1) | NO | | 1 | | | blocked | | boolean | NO | | 1 | |
| ignore | | tinyint(1) | NO | | 0 | | | ignore | | boolean | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ---------- | ---------- |
| PRIMARY | id |
| contact-id | contact-id |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| contact-id | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -0,0 +1,25 @@
Table item-uri
===========
URI and GUID for items
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----- | ------------------------------- | -------------- | ---- | --- | ------- | -------------- |
| id | | int unsigned | NO | PRI | NULL | auto_increment |
| uri | URI of an item | varbinary(255) | NO | | NULL | |
| guid | A unique identifier for an item | varbinary(255) | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ----------- |
| PRIMARY | id |
| uri | UNIQUE, uri |
| guid | guid |
Return to [database documentation](help/database)

View file

@ -1,72 +0,0 @@
Table item
==========
| Field | Description | Type | Null | Key | Default | Extra |
|---------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------|------|-----|---------------------|----------------|
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| guid | A unique identifier for this item | varchar(255) | NO | MUL | | |
| uri | | varchar(255) | NO | MUL | | |
| uid | user.id which owns this copy of the item | int(10) unsigned | NO | MUL | 0 | |
| contact-id | contact.id | int(11) | NO | MUL | 0 | |
| gcontact-id | ID of the global contact | int(11) | NO | MUL | 0 | |
| type | | varchar(255) | NO | | | |
| wall | This item was posted to the wall of uid | tinyint(1) | NO | MUL | 0 | |
| gravity | | tinyint(1) | NO | | 0 | |
| parent | item.id of the parent to this item if it is a reply of some form; otherwise this must be set to the id of this item | int(10) unsigned | NO | MUL | 0 | |
| parent-uri | uri of the parent to this item | varchar(255) | NO | MUL | | |
| extid | | varchar(255 | NO | MUL | | |
| thr-parent | If the parent of this item is not the top-level item in the conversation, the uri of the immediate parent; otherwise set to parent-uri | varchar(255) | NO | | | |
| 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 | |
| commented | Date of last comment/reply to this item | datetime | NO | | 0001-01-01 00:00:00 | |
| received | datetime | datetime | NO | | 0001-01-01 00:00:00 | |
| changed | Date that something in the conversation changed, indicating clients should fetch the conversation again | datetime | NO | | 0001-01-01 00:00:00 | |
| owner-name | Name of the owner of this item | varchar(255) | NO | | | |
| owner-link | Link to the profile page of the owner of this item | varchar(255) | NO | | | |
| owner-avatar | Link to the avatar picture of the owner of this item | varchar(255) | NO | | | |
| owner-id | Link to the contact table with uid=0 of the owner of this item | int(11) | NO | MUL | 0 | |
| author-name | Name of the author of this item | varchar(255) | NO | | | |
| author-link | Link to the profile page of the author of this item | varchar(255) | NO | | | |
| author-avatar | Link to the avatar picture of the author of this item | varchar(255) | NO | | | |
| author-id | Link to the contact table with uid=0 of the author of this item | int(11) | NO | MUL | 0 | |
| title | item title | varchar(255) | NO | | | |
| body | item body content | mediumtext | NO | | NULL | |
| app | application which generated this item | varchar(255) | NO | | | |
| verb | ActivityStreams verb | varchar(255) | NO | | | |
| object-type | ActivityStreams object type | varchar(255) | NO | | | |
| object | JSON encoded object structure unless it is an implied object (normal post) | text | NO | | NULL | |
| target-type | ActivityStreams target type if applicable (URI) | varchar(255) | NO | | | |
| target | JSON encoded target structure if used | text | NO | | NULL | |
| postopts | External post connectors add their network name to this comma-separated string to identify that they should be delivered to these networks during delivery | text | NO | | NULL | |
| plink | permalink or URL toa displayable copy of the message at its source | varchar(255) | NO | | | |
| resource-id | Used to link other tables to items, it identifies the linked resource (e.g. photo) and if set must also set resource_type | varchar(255) | NO | MUL | | |
| event-id | Used to link to the event.id | int(11) | NO | | 0 | |
| tag | | mediumtext | NO | | NULL | |
| attach | JSON structure representing attachments to this item | mediumtext | NO | | NULL | |
| inform | | mediumtext | NO | | NULL | |
| file | | mediumtext | NO | | NULL | |
| location | text location where this item originated | varchar(255) | NO | | | |
| coord | longitude/latitude pair representing location where this item originated | varchar(255) | NO | | | |
| allow_cid | Access Control - list of allowed contact.id '<19><78>' | mediumtext | NO | | NULL | |
| allow_gid | Access Control - list of allowed groups | mediumtext | NO | | NULL | |
| deny_cid | Access Control - list of denied contact.id | mediumtext | NO | | NULL | |
| deny_gid | Access Control - list of denied groups | mediumtext | NO | | NULL | |
| private | distribution is restricted | tinyint(1) | NO | | 0 | |
| pubmail | | tinyint(1) | NO | | 0 | |
| moderated | | tinyint(1) | NO | | 0 | |
| visible | | tinyint(1) | NO | | 0 | |
| spam | | tinyint(1) | NO | | 0 | |
| starred | item has been favourited | tinyint(1) | NO | | 0 | |
| bookmark | item has been bookmarked | tinyint(1) | NO | | 0 | |
| unseen | item has not been seen | tinyint(1) | NO | | 1 | |
| deleted | item has been deleted | tinyint(1) | NO | MUL | 0 | |
| origin | item originated at this site | tinyint(1) | NO | | 0 | |
| forum_mode | | tinyint(1) | NO | | 0 | |
| last-child | | tinyint(1) unsigned | NO | | 1 | |
| mention | The owner of this item was mentioned in it | tinyint(1) | NO | | 0 | |
| network | Network from where the item comes from | varchar(32) | NO | | | |
| rendered-hash | | varchar(32) | NO | | | |
| rendered-html | item.body converted to html | mediumtext | NO | | NULL | |
| global | | tinyint(1) | NO | | 0 | |
Return to [database documentation](help/database)

View file

@ -1,11 +1,26 @@
Table locks Table locks
=========== ===========
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|---------|------------------|------------------|------|-----|---------------------|----------------| | ------- | ---------------------------- | ------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| name | | varchar(128) | NO | | | | | name | | varchar(128) | NO | | | |
| locked | | tinyint(1) | NO | | 0 | | | locked | | boolean | NO | | 0 | |
| pid | Process ID | int(10) unsigned | NO | | 0 | | | pid | Process ID | int unsigned | NO | | 0 | |
| expires | datetime of cache expiration | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------------ | ------------- |
| PRIMARY | id |
| name_expires | name, expires |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,24 +1,61 @@
Table mail Table mail
========== ===========
private messages
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ---------- | -------------------------------------------- | ---------------- | ---- | --- | ------------------- | --------------- | | ------------- | -------------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | user.id of the owner of this data | int(10) unsigned | NO | MUL | 0 | | | uid | Owner User id | mediumint unsigned | NO | | 0 | |
| guid | A unique identifier for this private message | int(10) unsigned | NO | MUL | | | | guid | A unique identifier for this private message | varchar(255) | NO | | | |
| from-name | name of the sender | varchar(255) | NO | | | | | from-name | name of the sender | varchar(255) | NO | | | |
| from-photo | contact photo link of the sender | varchar(255) | NO | | | | | from-photo | contact photo link of the sender | varchar(255) | NO | | | |
| from-url | profile linke of the sender | varchar(255) | NO | | | | | from-url | profile linke of the sender | varchar(255) | NO | | | |
| contact-id | contact.id | varchar(255) | NO | | | | | contact-id | contact.id | varchar(255) | YES | | NULL | |
| convid | conv.id | int(11) unsigned | NO | MUL | 0 | | | author-id | Link to the contact table with uid=0 of the author of the mail | int unsigned | YES | | NULL | |
| convid | conv.id | int unsigned | YES | | NULL | |
| title | | varchar(255) | NO | | | | | title | | varchar(255) | NO | | | |
| body | | mediumtext | NO | | NULL | | | body | | mediumtext | YES | | NULL | |
| seen | if message visited it is 1 | varchar(255) | NO | | 0 | | | seen | if message visited it is 1 | boolean | NO | | 0 | |
| reply | | varchar(255) | NO | MUL | 0 | | | reply | | boolean | NO | | 0 | |
| replied | | varchar(255) | NO | | 0 | | | replied | | boolean | NO | | 0 | |
| unknown | if sender not in the contact table this is 1 | varchar(255) | NO | | 0 | | | unknown | if sender not in the contact table this is 1 | boolean | NO | | 0 | |
| uri | | varchar(255) | NO | MUL | | | | uri | | varchar(255) | NO | | | |
| parent-uri | | varchar(255) | NO | MUL | | | | uri-id | Item-uri id of the related mail | int unsigned | YES | | NULL | |
| parent-uri | | varchar(255) | NO | | | |
| parent-uri-id | Item-uri id of the parent of the related mail | int unsigned | YES | | NULL | |
| thr-parent | | varchar(255) | YES | | NULL | |
| thr-parent-id | Id of the item-uri table that contains the thread parent uri | int unsigned | YES | | NULL | |
| created | creation time of the private message | datetime | NO | | 0001-01-01 00:00:00 | | | created | creation time of the private message | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------------- | -------------- |
| PRIMARY | id |
| uid_seen | uid, seen |
| convid | convid |
| uri | uri(64) |
| parent-uri | parent-uri(64) |
| contactid | contact-id(32) |
| author-id | author-id |
| uri-id | uri-id |
| parent-uri-id | parent-uri-id |
| thr-parent-id | thr-parent-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| author-id | [contact](help/database/db_contact) | id |
| uri-id | [item-uri](help/database/db_item-uri) | id |
| parent-uri-id | [item-uri](help/database/db_item-uri) | id |
| thr-parent-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,20 +1,40 @@
Table mailacct Table mailacct
============== ===========
Mail account data for fetching mails
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|--------------|------------------|--------------|------|-----|---------------------|----------------| | ------------ | ------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | | int(11) | NO | | 0 | | | uid | User id | mediumint unsigned | NO | | 0 | |
| server | | varchar(255) | NO | | | | | server | | varchar(255) | NO | | | |
| port | | int(11) | NO | | 0 | | | port | | smallint unsigned | NO | | 0 | |
| ssltype | | varchar(16) | NO | | | | | ssltype | | varchar(16) | NO | | | |
| mailbox | | varchar(255) | NO | | | | | mailbox | | varchar(255) | NO | | | |
| user | | varchar(255) | NO | | | | | user | | varchar(255) | NO | | | |
| pass | | text | NO | | NULL | | | pass | | text | YES | | NULL | |
| reply_to | | varchar(255) | NO | | | | | reply_to | | varchar(255) | NO | | | |
| action | | int(11) | NO | | 0 | | | action | | tinyint unsigned | NO | | 0 | |
| movetofolder | | varchar(255) | NO | | | | | movetofolder | | varchar(255) | NO | | | |
| pubmail | | tinyint(1) | NO | | 0 | | | pubmail | | boolean | NO | | 0 | |
| last_check | | datetime | NO | | 0001-01-01 00:00:00 | | | last_check | | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,10 +1,32 @@
Table manage Table manage
============ ===========
table of accounts that can manage each other
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ----- | ------------- | ------- | ---- | --- | ------- | --------------- | | ----- | ------------- | ------------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | user.id | int(11) | NO | MUL | 0 | | | uid | User id | mediumint unsigned | NO | | 0 | |
| mid | | int(11) | NO | | 0 | | | mid | User id | mediumint unsigned | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ---------------- |
| PRIMARY | id |
| uid_mid | UNIQUE, uid, mid |
| mid | mid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| mid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -0,0 +1,45 @@
Table notification
===========
notifications
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------------- | ------------------------------------------------------------------------------ | ------------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | Owner User id | mediumint unsigned | YES | | NULL | |
| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
| type | | tinyint unsigned | YES | | NULL | |
| actor-id | Link to the contact table with uid=0 of the actor that caused the notification | int unsigned | YES | | NULL | |
| target-uri-id | Item-uri id of the related post | int unsigned | YES | | NULL | |
| parent-uri-id | Item-uri id of the parent of the related post | int unsigned | YES | | NULL | |
| created | | datetime | YES | | NULL | |
| seen | | boolean | YES | | 0 | |
Indexes
------------
| Name | Fields |
| ----------------------------------- | ----------------------------------------------- |
| PRIMARY | id |
| uid_vid_type_actor-id_target-uri-id | UNIQUE, uid, vid, type, actor-id, target-uri-id |
| vid | vid |
| actor-id | actor-id |
| target-uri-id | target-uri-id |
| parent-uri-id | parent-uri-id |
| seen_uid | seen, uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| vid | [verb](help/database/db_verb) | id |
| actor-id | [contact](help/database/db_contact) | id |
| target-uri-id | [item-uri](help/database/db_item-uri) | id |
| parent-uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -1,12 +1,37 @@
Table notify-threads Table notify-threads
==================== ===========
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|--------------------|------------------|------------------|------|-----|---------|----------------| | -------------------- | --------------------------------------------- | ------------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| notify-id | | int(11) | NO | | 0 | | | notify-id | | int unsigned | NO | | 0 | |
| master-parent-item | | int(10) unsigned | NO | MUL | 0 | | | master-parent-item | Deprecated | int unsigned | YES | | NULL | |
| parent-item | | int(10) unsigned | NO | | 0 | | | master-parent-uri-id | Item-uri id of the parent of the related post | int unsigned | YES | | NULL | |
| receiver-uid | | int(11) | NO | MUL | 0 | | | parent-item | | int unsigned | NO | | 0 | |
| receiver-uid | User id | mediumint unsigned | NO | | 0 | |
Indexes
------------
| Name | Fields |
| -------------------- | -------------------- |
| PRIMARY | id |
| master-parent-uri-id | master-parent-uri-id |
| receiver-uid | receiver-uid |
| notify-id | notify-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| notify-id | [notify](help/database/db_notify) | id |
| master-parent-uri-id | [item-uri](help/database/db_item-uri) | id |
| receiver-uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,24 +1,51 @@
Table notify Table notify
============ ===========
notifications
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ---------- | --------------------------------- | ------------ | ---- | --- | ------------------- | --------------- | | ------------- | --------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| hash | | varchar(64) | NO | | | | | type | | smallint unsigned | NO | | 0 | |
| type | | int(11) | NO | | 0 | |
| name | | varchar(255) | NO | | | | | name | | varchar(255) | NO | | | |
| url | | varchar(255) | NO | | | | | url | | varchar(255) | NO | | | |
| photo | | varchar(255) | NO | | | | | photo | | varchar(255) | NO | | | |
| date | | datetime | NO | | 0001-01-01 00:00:00 | | | date | | datetime | NO | | 0001-01-01 00:00:00 | |
| msg | | mediumtext | YES | | NULL | | | msg | | mediumtext | YES | | NULL | |
| uid | user.id of the owner of this data | int(11) | NO | MUL | 0 | | | uid | Owner User id | mediumint unsigned | NO | | 0 | |
| link | | varchar(255) | NO | | | | | link | | varchar(255) | NO | | | |
| iid | item.id | int(11) | NO | | 0 | | | iid | | int unsigned | YES | | NULL | |
| parent | | int(11) | NO | | 0 | | | parent | | int unsigned | YES | | NULL | |
| seen | | tinyint(1) | NO | | 0 | | | uri-id | Item-uri id of the related post | int unsigned | YES | | NULL | |
| verb | | varchar(255) | NO | | | | | parent-uri-id | Item-uri id of the parent of the related post | int unsigned | YES | | NULL | |
| otype | | varchar(16) | NO | | | | | seen | | boolean | NO | | 0 | |
| verb | | varchar(100) | NO | | | |
| otype | | varchar(10) | NO | | | |
| name_cache | Cached bbcode parsing of name | tinytext | YES | | NULL | | | name_cache | Cached bbcode parsing of name | tinytext | YES | | NULL | |
| msg_cache | Cached bbcode parsing of msg | mediumtext | YES | | NULL | | | msg_cache | Cached bbcode parsing of msg | mediumtext | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------------- | -------------------- |
| PRIMARY | id |
| seen_uid_date | seen, uid, date |
| uid_date | uid, date |
| uid_type_link | uid, type, link(190) |
| uri-id | uri-id |
| parent-uri-id | parent-uri-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| uri-id | [item-uri](help/database/db_item-uri) | id |
| parent-uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,11 +1,25 @@
Table oembed Table oembed
============ ===========
cache for OEmbed queries
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ------------ | ---------------------------------- | ------------ | ---- | --- | ------------------- | ----- | | -------- | ------------------------------ | ------------------ | ---- | --- | ------------------- | ----- |
| url | page url | varchar(255) | NO | PRI | NULL | | | url | page url | varbinary(255) | NO | PRI | NULL | |
| maxwidth | Maximum width passed to Oembed | int(11) | NO | PRI | 0 | | | maxwidth | Maximum width passed to Oembed | mediumint unsigned | NO | PRI | NULL | |
| content | OEmbed data of the page | text | NO | | NULL | | | content | OEmbed data of the page | mediumtext | YES | | NULL | |
| created | datetime of creation | datetime | NO | MUL | 0001-01-01 00:00:00 | | | created | datetime of creation | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------- | ------------- |
| PRIMARY | url, maxwidth |
| created | created |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -0,0 +1,33 @@
Table openwebauth-token
===========
Store OpenWebAuth token to verify contacts
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------- | -------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | User id - currently unused | mediumint unsigned | NO | | 0 | |
| type | Verify type | varchar(32) | NO | | | |
| token | A generated token | varchar(255) | NO | | | |
| meta | | varchar(255) | NO | | | |
| created | datetime of creation | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -1,12 +1,29 @@
Table parsed_url Table parsed_url
================ ===========
cache for 'parse_url' queries
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ------------ | ---------------------------------- | ------------ | ---- | --- | ------------------- | ----- | | -------- | --------------------------------- | ---------- | ---- | --- | ------------------- | ----- |
| url | page url | varchar(255) | NO | PRI | NULL | | | url_hash | page url hash | binary(64) | NO | PRI | NULL | |
| guessing | is the "guessing" mode active? | tinyint(1) | NO | PRI | 0 | | | guessing | is the 'guessing' mode active? | boolean | NO | PRI | 0 | |
| oembed | is the data the result of oembed? | tinyint(1) | NO | PRI | 0 | | | oembed | is the data the result of oembed? | boolean | NO | PRI | 0 | |
| content | page data | text | NO | | NULL | | | url | page url | text | NO | | NULL | |
| created | datetime of creation | datetime | NO | MUL | 0001-01-01 00:00:00 | | | content | page data | mediumtext | YES | | NULL | |
| created | datetime of creation | datetime | NO | | 0001-01-01 00:00:00 | |
| expires | datetime of expiration | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------- | -------------------------- |
| PRIMARY | url_hash, guessing, oembed |
| created | created |
| expires | expires |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,12 +1,32 @@
Table pconfic Table pconfig
============= ===========
personal (per user) configuration storage
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|-------|-------------|------------|------|-----|---------|----------------| | ----- | ----------- | ------------------ | ---- | --- | ------- | -------------- |
| id | | int(11) | NO | PRI | NULL | auto_increment | | id | Primary key | int unsigned | NO | PRI | NULL | auto_increment |
| uid | | int(11) | NO | MUL | 0 | | | uid | User id | mediumint unsigned | NO | | 0 | |
| cat | | char(255) | NO | | | | | cat | Category | varchar(50) | NO | | | |
| k | | char(255) | NO | | | | | k | Key | varchar(100) | NO | | | |
| v | | mediumtext | NO | | NULL | | | v | Value | mediumtext | YES | | NULL | |
Indexes
------------
| Name | Fields |
| --------- | ------------------- |
| PRIMARY | id |
| uid_cat_k | UNIQUE, uid, cat, k |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -0,0 +1,33 @@
Table permissionset
===========
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| --------- | ------------------------------------------------------ | ------------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | Owner id of this permission set | mediumint unsigned | NO | | 0 | |
| allow_cid | Access Control - list of allowed contact.id '<19><78>' | mediumtext | YES | | NULL | |
| allow_gid | Access Control - list of allowed groups | mediumtext | YES | | NULL | |
| deny_cid | Access Control - list of denied contact.id | mediumtext | YES | | NULL | |
| deny_gid | Access Control - list of denied groups | mediumtext | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ----------------------------------------- | ------------------------------------------------------------- |
| PRIMARY | id |
| uid_allow_cid_allow_gid_deny_cid_deny_gid | uid, allow_cid(50), allow_gid(30), deny_cid(50), deny_gid(30) |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -1,29 +1,60 @@
Table photo Table photo
=========== ===========
photo storage
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ----------- | ------------------------------------------------------ | ---------------- | ---- | --- | ------------------- | --------------- | | ------------- | ------------------------------------------------------ | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | user.id of the owner of this data | int(10) unsigned | NO | MUL | 0 | | | uid | Owner User id | mediumint unsigned | NO | | 0 | |
| contact-id | contact.id | int(10) unsigned | NO | | 0 | | | contact-id | contact.id | int unsigned | NO | | 0 | |
| guid | A unique identifier for this photo | varchar(64) | NO | MUL | | | | guid | A unique identifier for this photo | char(16) | NO | | | |
| resource-id | | varchar(255) | NO | MUL | | | | resource-id | | char(32) | NO | | | |
| hash | hash value of the photo | char(32) | YES | | NULL | |
| created | creation date | datetime | NO | | 0001-01-01 00:00:00 | | | created | creation date | datetime | NO | | 0001-01-01 00:00:00 | |
| edited | last edited date | datetime | NO | | 0001-01-01 00:00:00 | | | edited | last edited date | datetime | NO | | 0001-01-01 00:00:00 | |
| title | | varchar(255) | NO | | | | | title | | varchar(255) | NO | | | |
| desc | | text | NO | | NULL | | | desc | | text | YES | | NULL | |
| album | The name of the album to which the photo belongs | varchar(255) | NO | | | | | album | The name of the album to which the photo belongs | varchar(255) | NO | | | |
| filename | | varchar(255) | NO | | | | | filename | | varchar(255) | NO | | | |
| type | image type | varchar(128) | NO | | image/jpeg | | | type | | varchar(30) | NO | | image/jpeg | |
| height | | smallint(6) | NO | | 0 | | | height | | smallint unsigned | NO | | 0 | |
| width | | smallint(6) | NO | | 0 | | | width | | smallint unsigned | NO | | 0 | |
| size | | int(10) unsigned | NO | | 0 | | | datasize | | int unsigned | NO | | 0 | |
| data | | mediumblob | NO | | NULL | | | data | | mediumblob | NO | | NULL | |
| scale | | tinyint(3) | NO | | 0 | | | scale | | tinyint unsigned | NO | | 0 | |
| profile | | tinyint(1) | NO | | 0 | | | profile | | boolean | NO | | 0 | |
| allow_cid | Access Control - list of allowed contact.id '<19><78>' | mediumtext | NO | | NULL | | | allow_cid | Access Control - list of allowed contact.id '<19><78>' | mediumtext | YES | | NULL | |
| allow_gid | Access Control - list of allowed groups | mediumtext | NO | | NULL | | | allow_gid | Access Control - list of allowed groups | mediumtext | YES | | NULL | |
| deny_cid | Access Control - list of denied contact.id | mediumtext | NO | | NULL | | | deny_cid | Access Control - list of denied contact.id | mediumtext | YES | | NULL | |
| deny_gid | Access Control - list of denied groups | mediumtext | NO | | NULL | | | deny_gid | Access Control - list of denied groups | mediumtext | YES | | NULL | |
| accessible | Make photo publicly accessible, ignoring permissions | boolean | NO | | 0 | |
| backend-class | Storage backend class | tinytext | YES | | NULL | |
| backend-ref | Storage backend data reference | text | YES | | NULL | |
| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ----------------------------- | ------------------------------------ |
| PRIMARY | id |
| contactid | contact-id |
| uid_contactid | uid, contact-id |
| uid_profile | uid, profile |
| uid_album_scale_created | uid, album(32), scale, created |
| uid_album_resource-id_created | uid, album(32), resource-id, created |
| resource-id | resource-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| contact-id | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,19 +0,0 @@
Table poll
==========
| Field | Description | Type | Null | Key | Default | Extra |
|-------|-------------|------------|------|-----|---------|----------------|
| id | | int(11) | NO | PRI | NULL | auto_increment |
| uid | | int(11) | NO | MUL | 0 | |
| q0 | | mediumtext | NO | | NULL | |
| q1 | | mediumtext | NO | | NULL | |
| q2 | | mediumtext | NO | | NULL | |
| q3 | | mediumtext | NO | | NULL | |
| q4 | | mediumtext | NO | | NULL | |
| q5 | | mediumtext | NO | | NULL | |
| q6 | | mediumtext | NO | | NULL | |
| q7 | | mediumtext | NO | | NULL | |
| q8 | | mediumtext | NO | | NULL | |
| q9 | | mediumtext | NO | | NULL | |
Return to [database documentation](help/database)

View file

@ -1,10 +0,0 @@
Table poll_result
=================
| Field | Description | Type | Null | Key | Default | Extra |
|---------|------------------|---------|------|-----|---------|----------------|
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment |
| poll_id | | int(11) | NO | MUL | 0 | |
| choice | | int(11) | NO | MUL | 0 | |
Return to [database documentation](help/database)

View file

@ -0,0 +1,34 @@
Table post-category
===========
post relation to categories
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 | |
| uid | User id | mediumint unsigned | NO | PRI | 0 | |
| type | | tinyint unsigned | NO | PRI | 0 | |
| tid | | int unsigned | NO | PRI | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ---------------------- |
| PRIMARY | uri-id, uid, type, tid |
| uri-id | tid |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| uid | [user](help/database/db_user) | uid |
| tid | [tag](help/database/db_tag) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,46 @@
Table post-content
===========
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 | |
| title | item title | varchar(255) | NO | | | |
| content-warning | | varchar(255) | NO | | | |
| body | item body content | mediumtext | YES | | NULL | |
| raw-body | Body without embedded media links | mediumtext | YES | | NULL | |
| 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 | |
| app | application which generated this item | varchar(255) | NO | | | |
| rendered-hash | | varchar(32) | NO | | | |
| rendered-html | item.body converted to html | mediumtext | YES | | NULL | |
| object-type | ActivityStreams object type | varchar(100) | NO | | | |
| object | JSON encoded object structure unless it is an implied object (normal post) | text | YES | | NULL | |
| target-type | ActivityStreams target type if applicable (URI) | varchar(100) | NO | | | |
| target | JSON encoded target structure if used | text | YES | | NULL | |
| resource-id | Used to link other tables to items, it identifies the linked resource (e.g. photo) and if set must also set resource_type | varchar(32) | NO | | | |
| plink | permalink or URL to a displayable copy of the message at its source | varchar(255) | NO | | | |
Indexes
------------
| Name | Fields |
| -------------------------- | -------------------------------------- |
| PRIMARY | uri-id |
| plink | plink(191) |
| resource-id | resource-id |
| title-content-warning-body | FULLTEXT, title, content-warning, body |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,37 @@
Table post-delivery-data
===========
Delivery data for items
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 | |
| postopts | External post connectors add their network name to this comma-separated string to identify that they should be delivered to these networks during delivery | text | YES | | NULL | |
| inform | Additional receivers of the linked item | mediumtext | YES | | NULL | |
| queue_count | Initial number of delivery recipients, used as item.delivery_queue_count | mediumint | NO | | 0 | |
| queue_done | Number of successful deliveries, used as item.delivery_queue_done | mediumint | NO | | 0 | |
| queue_failed | Number of unsuccessful deliveries, used as item.delivery_queue_failed | mediumint | NO | | 0 | |
| activitypub | Number of successful deliveries via ActivityPub | mediumint | NO | | 0 | |
| 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
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | uri-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,46 @@
Table post-media
===========
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(511) | NO | | 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 | int unsigned | YES | | NULL | |
| preview | Preview URL | varbinary(255) | 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(255) | 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(255) | YES | | NULL | |
| publisher-url | URL of the publisher of the media | varbinary(255) | 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(255) | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ---------- | ------------------- |
| PRIMARY | id |
| uri-id-url | UNIQUE, uri-id, url |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,34 @@
Table post-tag
===========
post relation to tags
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 | |
| type | | tinyint unsigned | NO | PRI | 0 | |
| tid | | int unsigned | NO | PRI | 0 | |
| cid | Contact id of the mentioned public contact | int unsigned | NO | PRI | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ---------------------- |
| PRIMARY | uri-id, type, tid, cid |
| tid | tid |
| cid | cid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| tid | [tag](help/database/db_tag) | id |
| cid | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,70 @@
Table post-thread-user
===========
Thread related data per user
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 | |
| author-id | Item author | 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 | |
| network | | char(4) | NO | | | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
| received | | datetime | NO | | 0001-01-01 00:00:00 | |
| changed | Date that something in the conversation changed, indicating clients should fetch the conversation again | datetime | NO | | 0001-01-01 00:00:00 | |
| commented | | datetime | NO | | 0001-01-01 00:00:00 | |
| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | PRI | 0 | |
| pinned | The thread is pinned on the profile page | boolean | NO | | 0 | |
| starred | | boolean | NO | | 0 | |
| ignored | Ignore updates for this thread | boolean | NO | | 0 | |
| wall | This item was posted to the wall of uid | boolean | NO | | 0 | |
| mention | | boolean | NO | | 0 | |
| pubmail | | boolean | NO | | 0 | |
| forum_mode | | tinyint unsigned | NO | | 0 | |
| contact-id | contact.id | int unsigned | NO | | 0 | |
| unseen | post has not been seen | boolean | NO | | 1 | |
| hidden | Marker to hide the post from the user | 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 | |
| post-user-id | Id of the post-user table | int unsigned | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------------- | -------------- |
| PRIMARY | uid, uri-id |
| uri-id | uri-id |
| owner-id | owner-id |
| author-id | author-id |
| causer-id | causer-id |
| uid | uid |
| contact-id | contact-id |
| psid | psid |
| post-user-id | post-user-id |
| commented | commented |
| uid_received | uid, received |
| uid_pinned | uid, pinned |
| uid_commented | uid, commented |
| uid_starred | uid, starred |
| uid_mention | uid, mention |
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 |
| author-id | [contact](help/database/db_contact) | id |
| causer-id | [contact](help/database/db_contact) | id |
| uid | [user](help/database/db_user) | uid |
| contact-id | [contact](help/database/db_contact) | id |
| psid | [permissionset](help/database/db_permissionset) | id |
| post-user-id | [post-user](help/database/db_post-user) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,43 @@
Table post-thread
===========
Thread related data
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 | |
| author-id | Item author | 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 | |
| network | | char(4) | NO | | | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
| received | | datetime | NO | | 0001-01-01 00:00:00 | |
| changed | Date that something in the conversation changed, indicating clients should fetch the conversation again | datetime | NO | | 0001-01-01 00:00:00 | |
| commented | | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| --------- | --------- |
| PRIMARY | uri-id |
| owner-id | owner-id |
| author-id | author-id |
| causer-id | causer-id |
| received | received |
| commented | commented |
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 |
| author-id | [contact](help/database/db_contact) | id |
| causer-id | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,31 @@
Table post-user-notification
===========
User post notifications
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 | |
| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | PRI | NULL | |
| notification-type | | tinyint unsigned | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ----------- |
| PRIMARY | uid, uri-id |
| uri-id | uri-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -0,0 +1,86 @@
Table post-user
===========
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 | |
| 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 | | tinyint 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 | 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_received | author-id, received |
| parent-uri-id_uid | parent-uri-id, uid |
| 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
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| 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 |
| owner-id | [contact](help/database/db_contact) | id |
| author-id | [contact](help/database/db_contact) | id |
| causer-id | [contact](help/database/db_contact) | id |
| vid | [verb](help/database/db_verb) | id |
| uid | [user](help/database/db_user) | uid |
| contact-id | [contact](help/database/db_contact) | id |
| event-id | [event](help/database/db_event) | id |
| psid | [permissionset](help/database/db_permissionset) | id |
Return to [database documentation](help/database)

58
doc/database/db_post.md Normal file
View file

@ -0,0 +1,58 @@
Table post
===========
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 | |
| 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
------------
| Name | Fields |
| ------------- | ------------- |
| PRIMARY | 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 |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| 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 |
| owner-id | [contact](help/database/db_contact) | id |
| author-id | [contact](help/database/db_contact) | id |
| causer-id | [contact](help/database/db_contact) | id |
| vid | [verb](help/database/db_verb) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,24 @@
Table process
===========
Currently running system processes
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------- | ----------- | ------------- | ---- | --- | ------------------- | ----- |
| pid | | int unsigned | NO | PRI | NULL | |
| command | | varbinary(32) | NO | | | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------- | ------- |
| PRIMARY | pid |
| command | command |
Return to [database documentation](help/database)

View file

@ -1,48 +1,70 @@
Table profile Table profile
============= ===========
user profiles data
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|--------------|-----------------------------------------------|--------------|------|-----|---------------------|----------------| | ------------ | --------------------------------------------- | ------------------ | ---- | --- | ---------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | user.id of the owner of this data | int(11) | NO | | 0 | | | uid | Owner User id | mediumint unsigned | NO | | 0 | |
| profile-name | Name of the profile | varchar(255) | NO | | | | | profile-name | Deprecated | varchar(255) | YES | | NULL | |
| is-default | Mark this profile as default profile | tinyint(1) | NO | | 0 | | | is-default | Deprecated | boolean | YES | | NULL | |
| hide-friends | Hide friend list from viewers of this profile | tinyint(1) | NO | | 0 | | | hide-friends | Hide friend list from viewers of this profile | boolean | NO | | 0 | |
| name | | varchar(255) | NO | | | | | name | | varchar(255) | NO | | | |
| pdesc | Deprecated | varchar(255) | NO | | | | | pdesc | Deprecated | varchar(255) | YES | | NULL | |
| dob | Day of birth | varchar(32) | NO | | 0001-01-01 | | | dob | Day of birth | varchar(32) | NO | | 0000-00-00 | |
| address | | varchar(255) | NO | | | | | address | | varchar(255) | NO | | | |
| locality | | varchar(255) | NO | | | | | locality | | varchar(255) | NO | | | |
| region | | varchar(255) | NO | | | | | region | | varchar(255) | NO | | | |
| postal-code | | varchar(32) | NO | | | | | postal-code | | varchar(32) | NO | | | |
| country-name | | varchar(255) | NO | | | | | country-name | | varchar(255) | NO | | | |
| hometown | Deprecated | varchar(255) | NO | MUL | | | | hometown | Deprecated | varchar(255) | YES | | NULL | |
| gender | Deprecated | varchar(32) | NO | | | | | gender | Deprecated | varchar(32) | YES | | NULL | |
| marital | Deprecated | varchar(255) | NO | | | | | marital | Deprecated | varchar(255) | YES | | NULL | |
| with | Deprecated | text | NO | | NULL | | | with | Deprecated | text | YES | | NULL | |
| howlong | Deprecated | datetime | NO | | 0001-01-01 00:00:00 | | | howlong | Deprecated | datetime | YES | | NULL | |
| sexual | Deprecated | varchar(255) | NO | | | | | sexual | Deprecated | varchar(255) | YES | | NULL | |
| politic | Deprecated | varchar(255) | NO | | | | | politic | Deprecated | varchar(255) | YES | | NULL | |
| religion | Deprecated | varchar(255) | NO | | | | | religion | Deprecated | varchar(255) | YES | | NULL | |
| pub_keywords | | text | NO | | NULL | | | pub_keywords | | text | YES | | NULL | |
| prv_keywords | | text | NO | | NULL | | | prv_keywords | | text | YES | | NULL | |
| likes | Deprecated | text | NO | | NULL | | | likes | Deprecated | text | YES | | NULL | |
| dislikes | Deprecated | text | NO | | NULL | | | dislikes | Deprecated | text | YES | | NULL | |
| about | Profile description | text | NO | | | | | about | Profile description | text | YES | | NULL | |
| summary | Deprecated | varchar(255) | NO | | | | | summary | Deprecated | varchar(255) | YES | | NULL | |
| music | Deprecated | text | NO | | NULL | | | music | Deprecated | text | YES | | NULL | |
| book | Deprecated | text | NO | | NULL | | | book | Deprecated | text | YES | | NULL | |
| tv | Deprecated | text | NO | | NULL | | | tv | Deprecated | text | YES | | NULL | |
| film | Deprecated | text | NO | | NULL | | | film | Deprecated | text | YES | | NULL | |
| interest | Deprecated | text | NO | | NULL | | | interest | Deprecated | text | YES | | NULL | |
| romance | Deprecated | text | NO | | NULL | | | romance | Deprecated | text | YES | | NULL | |
| work | Deprecated | text | NO | | NULL | | | work | Deprecated | text | YES | | NULL | |
| education | Deprecated | text | NO | | NULL | | | education | Deprecated | text | YES | | NULL | |
| contact | Deprecated | text | NO | | NULL | | | contact | Deprecated | text | YES | | NULL | |
| homepage | | varchar(255) | NO | | | | | homepage | | varchar(255) | NO | | | |
| xmpp | | varchar(255) | NO | | | |
| photo | | varchar(255) | NO | | | | | photo | | varchar(255) | NO | | | |
| thumb | | varchar(255) | NO | | | | | thumb | | varchar(255) | NO | | | |
| publish | publish default profile in local directory | tinyint(1) | NO | | 0 | | | publish | publish default profile in local directory | boolean | NO | | 0 | |
| net-publish | publish profile in global directory | tinyint(1) | NO | | 0 | | | net-publish | publish profile in global directory | boolean | NO | | 0 | |
Indexes
------------
| Name | Fields |
| -------------- | ---------------------- |
| PRIMARY | id |
| uid_is-default | uid, is-default |
| pub_keywords | FULLTEXT, pub_keywords |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,13 +1,35 @@
Table profile_check Table profile_check
=================== ===========
DFRN remote auth use
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| -------- | ------------- | ---------------- | ---- | --- | ------- | --------------- | | ------- | ------------- | ------------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | user.id | int(10) unsigned | NO | | 0 | | | uid | User id | mediumint unsigned | NO | | 0 | |
| cid | contact.id | int(10) unsigned | NO | | 0 | | | cid | contact.id | int unsigned | NO | | 0 | |
| dfrn_id | | varchar(255) | NO | | | | | dfrn_id | | varchar(255) | NO | | | |
| sec | | varchar(255) | NO | | 0 | | | sec | | varchar(255) | NO | | | |
| expire | | int(11) | NO | | NULL | | | expire | | int unsigned | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
| uid | uid |
| cid | cid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| cid | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -0,0 +1,38 @@
Table profile_field
===========
Custom profile fields
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------- | ----------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | Owner user id | mediumint unsigned | NO | | 0 | |
| order | Field ordering per user | mediumint unsigned | NO | | 1 | |
| psid | ID of the permission set of this profile field - 0 = public | int unsigned | YES | | NULL | |
| label | Label of the field | varchar(255) | NO | | | |
| value | Value of the field | text | YES | | NULL | |
| created | creation time | datetime | NO | | 0001-01-01 00:00:00 | |
| edited | last edit time | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
| uid | uid |
| order | order |
| psid | psid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| psid | [permissionset](help/database/db_permissionset) | id |
Return to [database documentation](help/database)

View file

@ -1,10 +1,38 @@
Table push_subscriber Table push_subscriber
===================== ===========
Used for OStatus: Contains feed subscribers
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|---------|------------------|---------|------|-----|---------|----------------| | ------------ | --------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| poll_id | | int(11) | NO | MUL | 0 | | | uid | User id | mediumint unsigned | NO | | 0 | |
| choice | | int(11) | NO | MUL | 0 | | | callback_url | | varchar(255) | 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) Return to [database documentation](help/database)

View file

@ -1,14 +0,0 @@
Table queue
===========
| Field | Description | Type | Null | Key | Default | Extra |
|---------|------------------|-------------|------|-----|---------------------|----------------|
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment |
| cid | | int(11) | NO | MUL | 0 | |
| network | | varchar(32) | NO | MUL | | |
| created | | datetime | NO | MUL | 0001-01-01 00:00:00 | |
| last | | datetime | NO | MUL | 0001-01-01 00:00:00 | |
| content | | mediumtext | NO | | NULL | |
| batch | | tinyint(1) | NO | MUL | 0 | |
Return to [database documentation](help/database)

View file

@ -1,13 +1,34 @@
Table register Table register
============== ===========
registrations requiring admin approval
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| -------- | ------------- | ---------------- | ---- | --- | ------------------- | --------------- | | -------- | ------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(11) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| hash | | varchar(255) | NO | | | | | hash | | varchar(255) | NO | | | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | | | created | | datetime | NO | | 0001-01-01 00:00:00 | |
| uid | user.id | int(11) unsigned | NO | | | | | uid | User id | mediumint unsigned | NO | | 0 | |
| password | | varchar(255) | NO | | | | | password | | varchar(255) | NO | | | |
| language | | varchar(16) | NO | | | | | language | | varchar(16) | NO | | | |
| note | | text | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,10 +1,31 @@
Table search Table search
============ ===========
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|-------|------------------|--------------|------|-----|---------|----------------| | ----- | ------------- | ------------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | | int(11) | NO | MUL | 0 | | | uid | User id | mediumint unsigned | NO | | 0 | |
| term | | varchar(255) | NO | MUL | | | | term | | varchar(255) | NO | | | |
Indexes
------------
| Name | Fields |
| -------- | ------------- |
| PRIMARY | id |
| uid_term | uid, term(64) |
| term | term(64) |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,11 +1,26 @@
Table session Table session
============= ===========
web session storage
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ------ | ------------- | ------------------- | ---- | --- | ------- | --------------- | | ------ | ------------- | --------------- | ---- | --- | ------- | -------------- |
| id | sequential ID | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | id | sequential ID | bigint unsigned | NO | PRI | NULL | auto_increment |
| sid | | varchar(255) | NO | MUL | | | | sid | | varbinary(255) | NO | | | |
| data | | text | NO | | NULL | | | data | | text | YES | | NULL | |
| expire | | int(10) unsigned | NO | MUL | 0 | | | expire | | int unsigned | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ------- |
| PRIMARY | id |
| sid | sid(64) |
| expire | expire |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,12 +0,0 @@
Table sign
==========
| Field | Description | Type | Null | Key | Default | Extra |
| ------------ | ------------- | ---------------- | ---- | --- | ------- | --------------- |
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| iid | item.id | int(10) unsigned | NO | MUL | 0 | |
| signed_text | | mediumtext | NO | | NULL | |
| signature | | text | NO | | NULL | |
| signer | | varchar(255) | NO | | | |
Return to [database documentation](help/database)

View file

@ -0,0 +1,22 @@
Table storage
===========
Data stored by Database storage backend
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----- | ------------------------------ | ------------ | ---- | --- | ------- | -------------- |
| id | Auto incremented image data id | int unsigned | NO | PRI | NULL | auto_increment |
| data | file data | longblob | NO | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
Return to [database documentation](help/database)

25
doc/database/db_tag.md Normal file
View file

@ -0,0 +1,25 @@
Table tag
===========
tags and mentions
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----- | ----------- | -------------- | ---- | --- | ------- | -------------- |
| id | | int unsigned | NO | PRI | NULL | auto_increment |
| name | | varchar(96) | NO | | | |
| url | | varbinary(255) | NO | | | |
Indexes
------------
| Name | Fields |
| ------------- | ----------------- |
| PRIMARY | id |
| type_name_url | UNIQUE, name, url |
| url | url |
Return to [database documentation](help/database)

View file

@ -1,19 +0,0 @@
Table term
==========
| Field | Description | Type | Null | Key | Default | Extra |
|----------| ------------- |---------------------|------|-----|---------------------|----------------|
| tid | | int(10) unsigned | NO | PRI | NULL | auto_increment |
| oid | | int(10) unsigned | NO | MUL | 0 | |
| otype | | tinyint(3) unsigned | NO | MUL | 0 | |
| type | | tinyint(3) unsigned | NO | MUL | 0 | |
| term | | varchar(255) | NO | | | |
| url | | varchar(255) | NO | | | |
| aid | | int(10) unsigned | NO | | 0 | |
| uid | | int(10) unsigned | NO | MUL | 0 | |
| guid | | varchar(255) | NO | MUL | | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
| received | | datetime | NO | | 0001-01-01 00:00:00 | |
| global | | tinyint(1) | NO | | 0 | |
Return to [database documentation](help/database)

View file

@ -1,33 +0,0 @@
Table thread
============
| Field | Description | Type | Null | Key | Default | Extra |
|-------------|------------------|------------------|------|-----|---------------------|-------|
| iid | sequential ID | int(10) unsigned | NO | PRI | 0 | |
| uid | | int(10) unsigned | NO | MUL | 0 | |
| contact-id | | int(11) unsigned | NO | | 0 | |
| gcontact-id | Global Contact | int(11) unsigned | NO | | 0 | |
| owner-id | Item owner | int(11) unsigned | NO | MUL | 0 | |
| author-id | Item author | int(11) unsigned | NO | MUL | 0 | |
| created | | datetime | NO | MUL | 0001-01-01 00:00:00 | |
| edited | | datetime | NO | | 0001-01-01 00:00:00 | |
| commented | | datetime | NO | MUL | 0001-01-01 00:00:00 | |
| received | | datetime | NO | | 0001-01-01 00:00:00 | |
| changed | | datetime | NO | | 0001-01-01 00:00:00 | |
| wall | | tinyint(1) | NO | MUL | 0 | |
| private | | tinyint(1) | NO | | 0 | |
| pubmail | | tinyint(1) | NO | | 0 | |
| moderated | | tinyint(1) | NO | | 0 | |
| visible | | tinyint(1) | NO | | 0 | |
| spam | | tinyint(1) | NO | | 0 | |
| starred | | tinyint(1) | NO | | 0 | |
| ignored | | tinyint(1) | NO | | 0 | |
| bookmark | | tinyint(1) | NO | | 0 | |
| unseen | | tinyint(1) | NO | | 1 | |
| deleted | | tinyint(1) | NO | | 0 | |
| origin | | tinyint(1) | NO | | 0 | |
| forum_mode | | tinyint(1) | NO | | 0 | |
| mention | | tinyint(1) | NO | | 0 | |
| network | | varchar(32) | NO | | | |
Return to [database documentation](help/database)

View file

@ -1,13 +1,35 @@
Table tokens Table tokens
============ ===========
OAuth usage
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
| ---------- | ----------- | ------------ | ---- | --- | ------- | ----- | | --------- | ----------- | ------------------ | ---- | --- | ------- | ----- |
| id | | varchar(40) | NO | PRI | NULL | | | id | | varchar(40) | NO | PRI | NULL | |
| secret | | text | NO | | NULL | | | secret | | text | YES | | NULL | |
| client_id | | varchar(20) | NO | | | | | client_id | | varchar(20) | NO | | | |
| expires | | int(11) | NO | | 0 | | | expires | | int | NO | | 0 | |
| scope | | varchar(200) | NO | | | | | scope | | varchar(200) | NO | | | |
| uid | | int(11) | NO | | 0 | | | uid | User id | mediumint unsigned | NO | | 0 | |
Indexes
------------
| Name | Fields |
| --------- | --------- |
| PRIMARY | id |
| client_id | client_id |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| client_id | [clients](help/database/db_clients) | client_id |
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -0,0 +1,33 @@
Table user-contact
===========
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 | |
| 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 | |
Indexes
------------
| Name | Fields |
| ------- | -------- |
| PRIMARY | uid, cid |
| cid | cid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| cid | [contact](help/database/db_contact) | id |
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -1,13 +1,20 @@
Table user Table user
========== ===========
The local users
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|--------------------------|-----------------------------------------------------------------------------------------|---------------------|------|-----|---------------------|----------------| | ------------------------ | --------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| uid | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | uid | sequential ID | mediumint unsigned | NO | PRI | NULL | auto_increment |
| parent-uid | The parent user that has full control about this user | mediumint unsigned | YES | | NULL | |
| guid | A unique identifier for this user | varchar(64) | NO | | | | | guid | A unique identifier for this user | varchar(64) | NO | | | |
| username | Name that this user is known by | varchar(255) | NO | | | | | username | Name that this user is known by | varchar(255) | NO | | | |
| password | encrypted password | varchar(255) | NO | | | | | password | encrypted password | varchar(255) | NO | | | |
| nickname | nick- and user name | varchar(255) | NO | MUL | | | | legacy_password | Is the password hash double-hashed? | boolean | NO | | 0 | |
| nickname | nick- and user name | varchar(255) | NO | | | |
| email | the users email address | varchar(255) | NO | | | | | email | the users email address | varchar(255) | NO | | | |
| openid | | varchar(255) | NO | | | | | openid | | varchar(255) | NO | | | |
| timezone | PHP-legal timezone | varchar(128) | NO | | | | | timezone | PHP-legal timezone | varchar(128) | NO | | | |
@ -15,63 +22,54 @@ Table user
| register_date | timestamp of registration | datetime | NO | | 0001-01-01 00:00:00 | | | register_date | timestamp of registration | datetime | NO | | 0001-01-01 00:00:00 | |
| login_date | timestamp of last login | datetime | NO | | 0001-01-01 00:00:00 | | | login_date | timestamp of last login | datetime | NO | | 0001-01-01 00:00:00 | |
| default-location | Default for item.location | varchar(255) | NO | | | | | default-location | Default for item.location | varchar(255) | NO | | | |
| allow_location | 1 allows to display the location | tinyint(1) | NO | | 0 | | | allow_location | 1 allows to display the location | boolean | NO | | 0 | |
| theme | user theme preference | varchar(255) | NO | | | | | theme | user theme preference | varchar(255) | NO | | | |
| pubkey | RSA public key 4096 bit | text | NO | | NULL | | | pubkey | RSA public key 4096 bit | text | YES | | NULL | |
| prvkey | RSA private key 4096 bit | text | NO | | NULL | | | prvkey | RSA private key 4096 bit | text | YES | | NULL | |
| spubkey | | text | NO | | NULL | | | spubkey | | text | YES | | NULL | |
| sprvkey | | text | NO | | NULL | | | sprvkey | | text | YES | | NULL | |
| verified | user is verified through email | tinyint(1) unsigned | NO | | 0 | | | verified | user is verified through email | boolean | NO | | 0 | |
| blocked | 1 for user is blocked | tinyint(1) unsigned | NO | | 0 | | | blocked | 1 for user is blocked | boolean | NO | | 0 | |
| blockwall | Prohibit contacts to post to the profile page of the user | tinyint(1) unsigned | NO | | 0 | | | blockwall | Prohibit contacts to post to the profile page of the user | boolean | NO | | 0 | |
| hidewall | Hide profile details from unkown viewers | tinyint(1) unsigned | NO | | 0 | | | hidewall | Hide profile details from unkown viewers | boolean | NO | | 0 | |
| blocktags | Prohibit contacts to tag the post of this user | tinyint(1) unsigned | NO | | 0 | | | blocktags | Prohibit contacts to tag the post of this user | boolean | NO | | 0 | |
| unkmail | Permit unknown people to send private mails to this user | tinyint(1) | NO | | 0 | | | unkmail | Permit unknown people to send private mails to this user | boolean | NO | | 0 | |
| cntunkmail | | int(11) | NO | | 10 | | | cntunkmail | | int unsigned | NO | | 10 | |
| notify-flags | email notification options | int(11) unsigned | NO | | 65535 | | | notify-flags | email notification options | smallint unsigned | NO | | 65535 | |
| page-flags | page/profile type | int(11) unsigned | NO | | 0 | | | page-flags | page/profile type | tinyint unsigned | NO | | 0 | |
| prvnets | | tinyint(1) | NO | | 0 | | | account-type | | tinyint unsigned | NO | | 0 | |
| pwdreset | | varchar(255) | NO | | | | | prvnets | | boolean | NO | | 0 | |
| maxreq | | int(11) | NO | | 10 | | | pwdreset | Password reset request token | varchar(255) | YES | | NULL | |
| expire | | int(11) unsigned | NO | | 0 | | | pwdreset_time | Timestamp of the last password reset request | datetime | YES | | NULL | |
| account_removed | if 1 the account is removed | tinyint(1) | NO | | 0 | | | maxreq | | int unsigned | NO | | 10 | |
| account_expired | | tinyint(1) | NO | | 0 | | | expire | | int unsigned | NO | | 0 | |
| account_removed | if 1 the account is removed | boolean | NO | | 0 | |
| account_expired | | boolean | NO | | 0 | |
| account_expires_on | timestamp when account expires and will be deleted | datetime | NO | | 0001-01-01 00:00:00 | | | account_expires_on | timestamp when account expires and will be deleted | datetime | NO | | 0001-01-01 00:00:00 | |
| expire_notification_sent | timestamp of last warning of account expiration | datetime | NO | | 0001-01-01 00:00:00 | | | expire_notification_sent | timestamp of last warning of account expiration | datetime | NO | | 0001-01-01 00:00:00 | |
| def_gid | | int(11) | NO | | 0 | | | def_gid | | int unsigned | NO | | 0 | |
| allow_cid | default permission for this user | mediumtext | NO | | NULL | | | allow_cid | default permission for this user | mediumtext | YES | | NULL | |
| allow_gid | default permission for this user | mediumtext | NO | | NULL | | | allow_gid | default permission for this user | mediumtext | YES | | NULL | |
| deny_cid | default permission for this user | mediumtext | NO | | NULL | | | deny_cid | default permission for this user | mediumtext | YES | | NULL | |
| deny_gid | default permission for this user | mediumtext | NO | | NULL | | | deny_gid | default permission for this user | mediumtext | YES | | NULL | |
| openidserver | | text | NO | | NULL | | | openidserver | | text | YES | | NULL | |
``` Indexes
/** ------------
* page-flags
*/
define ( 'PAGE_NORMAL', 0 );
define ( 'PAGE_SOAPBOX', 1 );
define ( 'PAGE_COMMUNITY', 2 );
define ( 'PAGE_FREELOVE', 3 );
define ( 'PAGE_BLOG', 4 );
define ( 'PAGE_PRVGROUP', 5 );
/** | Name | Fields |
* notify-flags | ---------- | ------------ |
*/ | PRIMARY | uid |
define ( 'NOTIFY_INTRO', 0x0001 ); | nickname | nickname(32) |
define ( 'NOTIFY_CONFIRM', 0x0002 ); | parent-uid | parent-uid |
define ( 'NOTIFY_WALL', 0x0004 ); | guid | guid |
define ( 'NOTIFY_COMMENT', 0x0008 ); | email | email(64) |
define ( 'NOTIFY_MAIL', 0x0010 );
define ( 'NOTIFY_SUGGEST', 0x0020 );
define ( 'NOTIFY_PROFILE', 0x0040 );
define ( 'NOTIFY_TAGSELF', 0x0080 );
define ( 'NOTIFY_TAGSHARE', 0x0100 );
define ( 'NOTIFY_POKE', 0x0200 );
define ( 'NOTIFY_SHARE', 0x0400 );
define ( 'NOTIFY_SYSTEM', 0x8000 ); Foreign Keys
``` ------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| parent-uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -1,9 +1,23 @@
Table userd Table userd
=========== ===========
Deleted usernames
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|----------|------------------|--------------|------|-----|---------|----------------| | -------- | ------------- | ------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| username | | varchar(255) | NO | MUL | NULL | | | username | | varchar(255) | NO | | NULL | |
Indexes
------------
| Name | Fields |
| -------- | ------------ |
| PRIMARY | id |
| username | username(32) |
Return to [database documentation](help/database) Return to [database documentation](help/database)

23
doc/database/db_verb.md Normal file
View file

@ -0,0 +1,23 @@
Table verb
===========
Activity Verbs
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----- | ----------- | ----------------- | ---- | --- | ------- | -------------- |
| id | | smallint unsigned | NO | PRI | NULL | auto_increment |
| name | | varchar(100) | NO | | | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | id |
| name | name |
Return to [database documentation](help/database)

View file

@ -0,0 +1,22 @@
Table worker-ipc
===========
Inter process communication between the frontend and the worker
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----- | ------------------------- | ------- | ---- | --- | ------- | ----- |
| key | | int | NO | PRI | NULL | |
| jobs | Flag for outstanding jobs | boolean | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | key |
Return to [database documentation](help/database)

View file

@ -1,14 +1,38 @@
Table workerqueue Table workerqueue
================= ===========
Background tasks queue entries
Fields
------
| Field | Description | Type | Null | Key | Default | Extra | | Field | Description | Type | Null | Key | Default | Extra |
|-----------|------------------|---------------------|------|-----|---------------------|----------------| | --------- | ------------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | | id | Auto incremented worker task id | int unsigned | NO | PRI | NULL | auto_increment |
| parameter | | text | NO | | NULL | | | command | Task command | varchar(100) | YES | | NULL | |
| priority | | tinyint(3) unsigned | NO | | 0 | | | parameter | Task parameter | mediumtext | YES | | NULL | |
| created | | datetime | NO | MUL | 0001-01-01 00:00:00 | | | priority | Task priority | tinyint unsigned | NO | | 0 | |
| pid | | int(11) | NO | | 0 | | | created | Creation date | datetime | NO | | 0001-01-01 00:00:00 | |
| executed | | datetime | NO | | 0001-01-01 00:00:00 | | | pid | Process id of the worker | int unsigned | NO | | 0 | |
| done | set to 1 if done | tinyint(1) | NO | | 0 | | | executed | Execution date | datetime | NO | | 0001-01-01 00:00:00 | |
| next_try | Next retrial date | datetime | NO | | 0001-01-01 00:00:00 | |
| retrial | Retrial counter | tinyint | NO | | 0 | |
| done | Marked 1 when the task was done - will be deleted later | boolean | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ----------------------------- | -------------------------------- |
| PRIMARY | id |
| command | command |
| done_command_parameter | done, command, parameter(64) |
| done_executed | done, executed |
| done_priority_retrial_created | done, priority, retrial, created |
| done_priority_next_try | done, priority, next_try |
| done_pid_next_try | done, pid, next_try |
| done_pid_retrial | done, pid, retrial |
| done_pid_priority_created | done, pid, priority, created |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

@ -193,33 +193,54 @@ Beispiel: Friendica Support
### Gibt es Clients für Friendica? ### Gibt es Clients für Friendica?
Friendica verwendet eine [Twitter/GNU Social](help/api) kompatible API. Friendica verwendet eine [Twitter/GNU Social](help/api) kompatible API.
Seit der Version 2021.06 unterstützt Friendica außerdem die Mastodon API.
Das bedeutet, dass du jeden Twitter/GNU Social Client verwenden kannst in dem du den API Pfad entsprechend änderst. Das bedeutet, dass du jeden Twitter/GNU Social Client verwenden kannst in dem du den API Pfad entsprechend änderst.
Seit der Version 2021.06 unterstützt Friendica außerdem die [Mastodon API](help/API-Mastodon) die mit vielen Mastodon-Clients läuft.
Hier ist eine Liste von Clients bei denen dies möglich ist, bzw. die speziell für Friendica entwickelt werden: Hier ist eine Liste von Clients, die speziell für Friendica entwickelt werden oder die mit Friendica kompatibel sind:
* Android #### Android
* [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) (Gibt es im Google Playstore oder als [binary Repository](https://freunde.ma-nic.de/display/3e98eba8185a13c5bdbf3d1539646854) für F-Droid)
* [Fedilab](https://gitlab.com/tom79/mastalab) (Gibt es im F-Droid und dem Google Play Store) * [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))
* [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
* [DiCa](https://dica.mixi.cool/) (Gibt es bei Google Play) * [DiCa](https://dica.mixi.cool/) (Gibt es bei Google Play)
* AndStatus * [Fedi](https://play.google.com/store/apps/details?id=com.fediverse.app)
* Twidere * [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))
* Mustard and Mustard-Mod * [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) (Gibt es im Google Playstore oder als [binary Repository](https://freunde.ma-nic.de/display/3e98eba8185a13c5bdbf3d1539646854) für F-Droid)
* SailfishOS
* [Friendly](https://openrepos.net/content/fabrixxm/friendly#comment-form)
* [Husky](https://husky.fwgs.ru) * [Husky](https://husky.fwgs.ru)
* [Roma](https://play.google.com/store/apps/details?id=tech.bigfig.roma)
* [Subway Tooter](https://github.com/tateisu/SubwayTooter) * [Subway Tooter](https://github.com/tateisu/SubwayTooter)
* [Tooot](https://tooot.app/)
* [Tusky](https://tusky.app) * [Tusky](https://tusky.app)
* [Twidere](https://dimension.im/) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.mariotaku.twidere), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex), [GitHub](https://github.com/TwidereProject/Twidere-Android))
* [twitlatte](https://github.com/moko256/twitlatte) * [twitlatte](https://github.com/moko256/twitlatte)
* [Yuito](https://github.com/accelforce/Yuito) * [Yuito](https://github.com/accelforce/Yuito)
* Linux
* Hotot #### SailfishOS
* Choqok
* MacOS X * [Friendly](https://openrepos.net/content/fabrixxm/friendly#comment-form)
* Hotot
* Windows #### iOS
- [Amaroq](https://github.com/ReticentJohn/Amaroq/tree/master)
- [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
- [Fedi](https://apps.apple.com/de/app/fedi-for-pleroma-and-mastodon/id1478806281)
- [Roma](https://apps.apple.com/de/app/roma-for-pleroma-and-mastodon/id1445328699)
- [StarPterano](https://apps.apple.com/de/app/starpterano/id1436972796)
- [Stella](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048?l=ms)
- [Tooot](https://tooot.app/)
- [Tootle](https://apps.apple.com/de/app/tootle-for-mastodon/id1236013466) Der eingegene Hostname muss in Groß-/Kleinschreibung mit dem Hostnamen des Systems übereinstimmen. Die aktuelle Version stürzt bei Benachrichtungen bom Typ "status" ab.
#### Linux
* [Choqok](https://choqok.kde.org)
* [Whalebird](https://whalebird.social)
* [TheDesk](https://ja.mstdn.wiki/TheDesk)
* [Toot](https://toot.readthedocs.io/en/latest/)
* [Tootle](https://github.com/bleakgrey/tootle)
#### Windows
* [Friendica Mobile](https://www.microsoft.com/de-DE/store/p/friendica-mobile/9nblggh0fhmn?rtc=1) für Windows 10 * [Friendica Mobile](https://www.microsoft.com/de-DE/store/p/friendica-mobile/9nblggh0fhmn?rtc=1) für Windows 10
* Hotot
Admin Admin
-------- --------

View file

@ -54,7 +54,7 @@ Friendica - Dokumentation und Ressourcen
* [Class Autoloading](help/autoloader) (EN) * [Class Autoloading](help/autoloader) (EN)
* [Using Composer](help/Composer) (EN) * [Using Composer](help/Composer) (EN)
* [Code-Referenz (mit doxygen generiert - setzt Cookies)](doc/html/) * [Code-Referenz (mit doxygen generiert - setzt Cookies)](doc/html/)
* [Twitter/GNU Social API Functions](help/api) (EN) * [API Dokumentation](help/api) (EN)
* [Translation of Friendica](help/translations) (EN) * [Translation of Friendica](help/translations) (EN)
* [Run tests](help/Tests) (EN) * [Run tests](help/Tests) (EN)

View file

@ -66,56 +66,29 @@ function match_content(App $a)
$params = []; $params = [];
$tags = trim($profile['pub_keywords'] . ' ' . $profile['prv_keywords']); $tags = trim($profile['pub_keywords'] . ' ' . $profile['prv_keywords']);
if (DI::mode()->isMobile()) {
$limit = DI::pConfig()->get(local_user(), 'system', 'itemspage_mobile_network',
DI::config()->get('system', 'itemspage_network_mobile'));
} else {
$limit = DI::pConfig()->get(local_user(), 'system', 'itemspage_network',
DI::config()->get('system', 'itemspage_network'));
}
$params['s'] = $tags; $params['s'] = $tags;
$params['n'] = 100; $params['n'] = 100;
if (strlen(DI::config()->get('system', 'directory'))) {
$host = Search::getGlobalDirectory();
} else {
$host = DI::baseUrl();
}
$msearch_json = DI::httpRequest()->post($host . '/msearch', $params)->getBody();
$msearch = json_decode($msearch_json);
$start = $_GET['start'] ?? 0;
$entries = []; $entries = [];
$paginate = ''; foreach ([Search::getGlobalDirectory(), DI::baseUrl()] as $server) {
if (empty($server)) {
if (!empty($msearch->results)) {
for ($i = $start;count($entries) < 10 && $i < $msearch->total; $i++) {
$profile = $msearch->results[$i];
// Already known contact
if (!$profile || Contact::getIdForURL($profile->url, local_user())) {
continue; continue;
} }
$contact = Contact::getByURLForUser($profile->url, local_user()); $msearch = json_decode(DI::httpRequest()->post($server . '/msearch', $params)->getBody());
if (!empty($contact)) { if (!empty($msearch)) {
$entries[] = ModuleContact::getContactTemplateVars($contact); $entries = match_get_contacts($msearch, $entries, $limit);
} }
} }
$data = [
'class' => 'pager',
'first' => [
'url' => 'match',
'text' => DI::l10n()->t('first'),
'class' => 'previous' . ($start == 0 ? 'disabled' : '')
],
'next' => [
'url' => 'match?start=' . $i,
'text' => DI::l10n()->t('next'),
'class' => 'next' . ($i >= $msearch->total ? ' disabled' : '')
]
];
$tpl = Renderer::getMarkupTemplate('paginate.tpl');
$paginate = Renderer::replaceMacros($tpl, ['pager' => $data]);
}
if (empty($entries)) { if (empty($entries)) {
info(DI::l10n()->t('No matches')); info(DI::l10n()->t('No matches'));
} }
@ -123,9 +96,37 @@ function match_content(App $a)
$tpl = Renderer::getMarkupTemplate('viewcontact_template.tpl'); $tpl = Renderer::getMarkupTemplate('viewcontact_template.tpl');
$o = Renderer::replaceMacros($tpl, [ $o = Renderer::replaceMacros($tpl, [
'$title' => DI::l10n()->t('Profile Match'), '$title' => DI::l10n()->t('Profile Match'),
'$contacts' => $entries, '$contacts' => array_slice($entries, 0, $limit),
'$paginate' => $paginate
]); ]);
return $o; return $o;
} }
function match_get_contacts($msearch, $entries, $limit)
{
if (empty($msearch->results)) {
return $entries;
}
foreach ($msearch->results as $profile) {
if (!$profile) {
continue;
}
// Already known contact
$contact = Contact::getByURL($profile->url, null, ['rel'], local_user());
if (!empty($contact) && in_array($contact['rel'], [Contact::FRIEND, Contact::SHARING])) {
continue;
}
$contact = Contact::getByURLForUser($profile->url, local_user());
if (!empty($contact)) {
$entries[$contact['id']] = ModuleContact::getContactTemplateVars($contact);
}
if (count($entries) == $limit) {
break;
}
}
return $entries;
}

View file

@ -120,6 +120,7 @@ HELP;
$output = ob_get_clean(); $output = ob_get_clean();
break; break;
case "dumpsql": case "dumpsql":
DBStructure::writeStructure();
ob_start(); ob_start();
DBStructure::printStructure($basePath); DBStructure::printStructure($basePath);
$output = ob_get_clean(); $output = ob_get_clean();

View file

@ -24,6 +24,7 @@ namespace Friendica\Database;
use Exception; use Exception;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Core\Renderer;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\Item; use Friendica\Model\Item;
use Friendica\Model\User; use Friendica\Model\User;
@ -159,6 +160,110 @@ class DBStructure
return DI::l10n()->t('Errors encountered performing database changes: ') . $message . EOL; return DI::l10n()->t('Errors encountered performing database changes: ') . $message . EOL;
} }
public static function writeStructure()
{
Renderer::registerTemplateEngine('Friendica\Render\FriendicaSmartyEngine');
$tables = [];
foreach (self::definition(null) as $name => $definition) {
$indexes = [[
'name' => 'Name',
'fields' => 'Fields',
],
[
'name' => '-',
'fields' => '-',
]];
$lengths = ['name' => 4, 'fields' => 6];
foreach ($definition['indexes'] as $key => $value) {
$fieldlist = implode(', ', $value);
$indexes[] = ['name' => $key, 'fields' => $fieldlist];
$lengths['name'] = max($lengths['name'], strlen($key));
$lengths['fields'] = max($lengths['fields'], strlen($fieldlist));
}
array_walk_recursive($indexes, function(&$value, $key) use ($lengths)
{
$value = str_pad($value, $lengths[$key], $value === '-' ? '-' : ' ');
});
$foreign = [];
$fields = [[
'name' => 'Field',
'comment' => 'Description',
'type' => 'Type',
'null' => 'Null',
'primary' => 'Key',
'default' => 'Default',
'extra' => 'Extra',
],
[
'name' => '-',
'comment' => '-',
'type' => '-',
'null' => '-',
'primary' => '-',
'default' => '-',
'extra' => '-',
]];
$lengths = [
'name' => 5,
'comment' => 11,
'type' => 4,
'null' => 4,
'primary' => 3,
'default' => 7,
'extra' => 5,
];
foreach ($definition['fields'] as $key => $value) {
$field = [];
$field['name'] = $key;
$field['comment'] = $value['comment'] ?? '';
$field['type'] = $value['type'];
$field['null'] = ($value['not null'] ?? false) ? 'NO' : 'YES';
$field['primary'] = ($value['primary'] ?? false) ? 'PRI' : '';
$field['default'] = $value['default'] ?? 'NULL';
$field['extra'] = $value['extra'] ?? '';
foreach ($field as $fieldname => $fieldvalue) {
$lengths[$fieldname] = max($lengths[$fieldname] ?? 0, strlen($fieldvalue));
}
$fields[] = $field;
if (!empty($value['foreign'])) {
$foreign[] = [
'field' => $key,
'targettable' => array_keys($value['foreign'])[0],
'targetfield' => array_values($value['foreign'])[0]
];
}
}
array_walk_recursive($fields, function(&$value, $key) use ($lengths)
{
$value = str_pad($value, $lengths[$key], $value === '-' ? '-' : ' ');
});
$tables[] = ['name' => $name, 'comment' => $definition['comment']];
$content = Renderer::replaceMacros(Renderer::getMarkupTemplate('structure.tpl'), [
'$name' => $name,
'$comment' => $definition['comment'],
'$fields' => $fields,
'$indexes' => $indexes,
'$foreign' => $foreign,
]);
$filename = DI::basePath() . '/doc/database/db_' . $name . '.md';
file_put_contents($filename, $content);
}
asort($tables);
$content = Renderer::replaceMacros(Renderer::getMarkupTemplate('tables.tpl'), [
'$tables' => $tables,
]);
$filename = DI::basePath() . '/doc/database.md';
file_put_contents($filename, $content);
}
public static function printStructure($basePath) public static function printStructure($basePath)
{ {
$database = self::definition($basePath, false); $database = self::definition($basePath, false);

View file

@ -586,10 +586,10 @@ class Event
$last_date = ''; $last_date = '';
$fmt = DI::l10n()->t('l, F j'); $fmt = DI::l10n()->t('l, F j');
foreach ($event_result as $event) { foreach ($event_result as $event) {
$item = Post::selectFirst(['plink', 'author-name', 'author-avatar', 'author-link'], ['id' => $event['itemid']]); $item = Post::selectFirst(['plink', 'author-name', 'author-avatar', 'author-link', 'private'], ['id' => $event['itemid']]);
if (!DBA::isResult($item)) { if (!DBA::isResult($item)) {
// Using default values when no item had been found // Using default values when no item had been found
$item = ['plink' => '', 'author-name' => '', 'author-avatar' => '', 'author-link' => '']; $item = ['plink' => '', 'author-name' => '', 'author-avatar' => '', 'author-link' => '', 'private' => Item::PUBLIC];
} }
$event = array_merge($event, $item); $event = array_merge($event, $item);

View file

@ -391,7 +391,12 @@ class User
if (!DBA::exists('user', ['uid' => $uid]) || !$repairMissing) { if (!DBA::exists('user', ['uid' => $uid]) || !$repairMissing) {
return false; return false;
} }
if (!DBA::exists('profile', ['uid' => $uid])) {
DBA::insert('profile', ['uid' => $uid]);
}
if (!DBA::exists('contact', ['uid' => $uid, 'self' => true])) {
Contact::createSelfFromUserId($uid); Contact::createSelfFromUserId($uid);
}
$owner = self::getOwnerDataById($uid, false); $owner = self::getOwnerDataById($uid, false);
} }

View file

@ -32,6 +32,7 @@ use Friendica\Model\Contact;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Module\BaseAdmin; use Friendica\Module\BaseAdmin;
use Friendica\Module\Register; use Friendica\Module\Register;
use Friendica\Protocol\Relay;
use Friendica\Util\BasePath; use Friendica\Util\BasePath;
use Friendica\Util\EMailer\MailBuilder; use Friendica\Util\EMailer\MailBuilder;
use Friendica\Util\Strings; use Friendica\Util\Strings;
@ -208,8 +209,6 @@ class Site extends BaseAdmin
$worker_fastlane = !empty($_POST['worker_fastlane']); $worker_fastlane = !empty($_POST['worker_fastlane']);
$relay_directly = !empty($_POST['relay_directly']); $relay_directly = !empty($_POST['relay_directly']);
$relay_server = (!empty($_POST['relay_server']) ? Strings::escapeTags(trim($_POST['relay_server'])) : '');
$relay_subscribe = !empty($_POST['relay_subscribe']);
$relay_scope = (!empty($_POST['relay_scope']) ? Strings::escapeTags(trim($_POST['relay_scope'])) : ''); $relay_scope = (!empty($_POST['relay_scope']) ? Strings::escapeTags(trim($_POST['relay_scope'])) : '');
$relay_server_tags = (!empty($_POST['relay_server_tags']) ? Strings::escapeTags(trim($_POST['relay_server_tags'])) : ''); $relay_server_tags = (!empty($_POST['relay_server_tags']) ? Strings::escapeTags(trim($_POST['relay_server_tags'])) : '');
$relay_deny_tags = (!empty($_POST['relay_deny_tags']) ? Strings::escapeTags(trim($_POST['relay_deny_tags'])) : ''); $relay_deny_tags = (!empty($_POST['relay_deny_tags']) ? Strings::escapeTags(trim($_POST['relay_deny_tags'])) : '');
@ -418,8 +417,6 @@ class Site extends BaseAdmin
DI::config()->set('system', 'worker_fastlane' , $worker_fastlane); DI::config()->set('system', 'worker_fastlane' , $worker_fastlane);
DI::config()->set('system', 'relay_directly' , $relay_directly); DI::config()->set('system', 'relay_directly' , $relay_directly);
DI::config()->set('system', 'relay_server' , $relay_server);
DI::config()->set('system', 'relay_subscribe' , $relay_subscribe);
DI::config()->set('system', 'relay_scope' , $relay_scope); DI::config()->set('system', 'relay_scope' , $relay_scope);
DI::config()->set('system', 'relay_server_tags', $relay_server_tags); DI::config()->set('system', 'relay_server_tags', $relay_server_tags);
DI::config()->set('system', 'relay_deny_tags' , $relay_deny_tags); DI::config()->set('system', 'relay_deny_tags' , $relay_deny_tags);
@ -589,6 +586,10 @@ class Site extends BaseAdmin
'$performance' => DI::l10n()->t('Performance'), '$performance' => DI::l10n()->t('Performance'),
'$worker_title' => DI::l10n()->t('Worker'), '$worker_title' => DI::l10n()->t('Worker'),
'$relay_title' => DI::l10n()->t('Message Relay'), '$relay_title' => DI::l10n()->t('Message Relay'),
'$relay_description' => DI::l10n()->t('Use the command "console relay" in the command line to add or remove relays.'),
'$no_relay_list' => DI::l10n()->t('The system is not subscribed to any relays at the moment.'),
'$relay_list_title' => DI::l10n()->t('The system is currently subscribed to the following relays:'),
'$relay_list' => Relay::getList(['url']),
'$relocate' => DI::l10n()->t('Relocate Instance'), '$relocate' => DI::l10n()->t('Relocate Instance'),
'$relocate_warning' => DI::l10n()->t('<strong>Warning!</strong> Advanced function. Could make this server unreachable.'), '$relocate_warning' => DI::l10n()->t('<strong>Warning!</strong> Advanced function. Could make this server unreachable.'),
'$baseurl' => DI::baseUrl()->get(true), '$baseurl' => DI::baseUrl()->get(true),
@ -688,10 +689,8 @@ class Site extends BaseAdmin
'$worker_queues' => ['worker_queues', DI::l10n()->t('Maximum number of parallel workers'), DI::config()->get('system', 'worker_queues'), DI::l10n()->t('On shared hosters set this to %d. On larger systems, values of %d are great. Default value is %d.', 5, 20, 10)], '$worker_queues' => ['worker_queues', DI::l10n()->t('Maximum number of parallel workers'), DI::config()->get('system', 'worker_queues'), DI::l10n()->t('On shared hosters set this to %d. On larger systems, values of %d are great. Default value is %d.', 5, 20, 10)],
'$worker_fastlane' => ['worker_fastlane', DI::l10n()->t('Enable fastlane'), DI::config()->get('system', 'worker_fastlane'), DI::l10n()->t('When enabed, the fastlane mechanism starts an additional worker if processes with higher priority are blocked by processes of lower priority.')], '$worker_fastlane' => ['worker_fastlane', DI::l10n()->t('Enable fastlane'), DI::config()->get('system', 'worker_fastlane'), DI::l10n()->t('When enabed, the fastlane mechanism starts an additional worker if processes with higher priority are blocked by processes of lower priority.')],
'$relay_subscribe' => ['relay_subscribe', DI::l10n()->t('Use relay servers'), DI::config()->get('system', 'relay_subscribe'), DI::l10n()->t('Enables the receiving of public posts from relay servers. They will be included in the search, subscribed tags and on the global community page.')],
'$relay_server' => ['relay_server', DI::l10n()->t('"Social Relay" server'), DI::config()->get('system', 'relay_server'), DI::l10n()->t('Address of the "Social Relay" server where public posts should be send to. For example %s. ActivityRelay servers are administrated via the "console relay" command line command.', 'https://social-relay.isurf.ca')],
'$relay_directly' => ['relay_directly', DI::l10n()->t('Direct relay transfer'), DI::config()->get('system', 'relay_directly'), DI::l10n()->t('Enables the direct transfer to other servers without using the relay servers')], '$relay_directly' => ['relay_directly', DI::l10n()->t('Direct relay transfer'), DI::config()->get('system', 'relay_directly'), DI::l10n()->t('Enables the direct transfer to other servers without using the relay servers')],
'$relay_scope' => ['relay_scope', DI::l10n()->t('Relay scope'), DI::config()->get('system', 'relay_scope'), DI::l10n()->t('Can be "all" or "tags". "all" means that every public post should be received. "tags" means that only posts with selected tags should be received.'), ['' => DI::l10n()->t('Disabled'), 'all' => DI::l10n()->t('all'), 'tags' => DI::l10n()->t('tags')]], '$relay_scope' => ['relay_scope', DI::l10n()->t('Relay scope'), DI::config()->get('system', 'relay_scope'), DI::l10n()->t('Can be "all" or "tags". "all" means that every public post should be received. "tags" means that only posts with selected tags should be received.'), [SR_SCOPE_NONE => DI::l10n()->t('Disabled'), SR_SCOPE_ALL => DI::l10n()->t('all'), SR_SCOPE_TAGS => DI::l10n()->t('tags')]],
'$relay_server_tags' => ['relay_server_tags', DI::l10n()->t('Server tags'), DI::config()->get('system', 'relay_server_tags'), DI::l10n()->t('Comma separated list of tags for the "tags" subscription.')], '$relay_server_tags' => ['relay_server_tags', DI::l10n()->t('Server tags'), DI::config()->get('system', 'relay_server_tags'), DI::l10n()->t('Comma separated list of tags for the "tags" subscription.')],
'$relay_deny_tags' => ['relay_deny_tags', DI::l10n()->t('Deny Server tags'), DI::config()->get('system', 'relay_deny_tags'), DI::l10n()->t('Comma separated list of tags that are rejected.')], '$relay_deny_tags' => ['relay_deny_tags', DI::l10n()->t('Deny Server tags'), DI::config()->get('system', 'relay_deny_tags'), DI::l10n()->t('Comma separated list of tags that are rejected.')],
'$relay_user_tags' => ['relay_user_tags', DI::l10n()->t('Allow user tags'), DI::config()->get('system', 'relay_user_tags'), DI::l10n()->t('If enabled, the tags from the saved searches will used for the "tags" subscription in addition to the "relay_server_tags".')], '$relay_user_tags' => ['relay_user_tags', DI::l10n()->t('Allow user tags'), DI::config()->get('system', 'relay_user_tags'), DI::l10n()->t('If enabled, the tags from the saved searches will used for the "tags" subscription in addition to the "relay_server_tags".')],

View file

@ -35,13 +35,7 @@ class XSocialRelay extends BaseModule
{ {
$config = DI::config(); $config = DI::config();
$subscribe = $config->get('system', 'relay_subscribe', false); $scope = $config->get('system', 'relay_scope');
if ($subscribe) {
$scope = $config->get('system', 'relay_scope', SR_SCOPE_ALL);
} else {
$scope = SR_SCOPE_NONE;
}
$systemTags = []; $systemTags = [];
$userTags = []; $userTags = [];
@ -63,7 +57,7 @@ class XSocialRelay extends BaseModule
$tagList = array_unique(array_merge($systemTags, $userTags)); $tagList = array_unique(array_merge($systemTags, $userTags));
$relay = [ $relay = [
'subscribe' => $subscribe, 'subscribe' => ($scope != SR_SCOPE_NONE),
'scope' => $scope, 'scope' => $scope,
'tags' => $tagList, 'tags' => $tagList,
'protocols' => [ 'protocols' => [

View file

@ -68,13 +68,9 @@ class Transmitter
*/ */
public static function addRelayServerInboxes(array $inboxes = []) public static function addRelayServerInboxes(array $inboxes = [])
{ {
$contacts = DBA::select('apcontact', ['inbox'], foreach (Relay::getList(['inbox']) as $contact) {
["`type` = ? AND `url` IN (SELECT `url` FROM `contact` WHERE `uid` = ? AND `rel` = ?)",
'Application', 0, Contact::FRIEND]);
while ($contact = DBA::fetch($contacts)) {
$inboxes[$contact['inbox']] = $contact['inbox']; $inboxes[$contact['inbox']] = $contact['inbox'];
} }
DBA::close($contacts);
return $inboxes; return $inboxes;
} }
@ -92,7 +88,7 @@ class Transmitter
return $inboxes; return $inboxes;
} }
$relays = Relay::getList($item_id, [], [Protocol::ACTIVITYPUB]); $relays = Relay::getDirectRelayList($item_id);
if (empty($relays)) { if (empty($relays)) {
return $inboxes; return $inboxes;
} }

View file

@ -29,7 +29,6 @@ use Friendica\DI;
use Friendica\Model\APContact; use Friendica\Model\APContact;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\GServer; use Friendica\Model\GServer;
use Friendica\Model\Item;
use Friendica\Model\Post; use Friendica\Model\Post;
use Friendica\Model\Search; use Friendica\Model\Search;
use Friendica\Model\Tag; use Friendica\Model\Tag;
@ -54,12 +53,7 @@ class Relay
{ {
$config = DI::config(); $config = DI::config();
$subscribe = $config->get('system', 'relay_subscribe', false); $scope = $config->get('system', 'relay_scope');
if ($subscribe) {
$scope = $config->get('system', 'relay_scope', SR_SCOPE_ALL);
} else {
$scope = SR_SCOPE_NONE;
}
if ($scope == SR_SCOPE_NONE) { if ($scope == SR_SCOPE_NONE) {
Logger::info('Server does not accept relay posts - rejected', ['network' => $network, 'url' => $url]); Logger::info('Server does not accept relay posts - rejected', ['network' => $network, 'url' => $url]);
@ -224,9 +218,7 @@ class Relay
} }
/** /**
* Return a list of relay servers * Return a list of servers that we serve via the direct relay
*
* The list contains not only the official relays but also servers that we serve directly
* *
* @param integer $item_id id of the item that is sent * @param integer $item_id id of the item that is sent
* @param array $contacts Previously fetched contacts * @param array $contacts Previously fetched contacts
@ -235,28 +227,18 @@ class Relay
* @return array of relay servers * @return array of relay servers
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
public static function getList(int $item_id, array $contacts, array $networks) public static function getDirectRelayList(int $item_id)
{ {
$serverlist = []; $serverlist = [];
// Fetching relay servers if (!DI::config()->get("system", "relay_directly", false)) {
$serverdata = DI::config()->get("system", "relay_server"); return [];
if (!empty($serverdata)) {
$servers = explode(",", $serverdata);
foreach ($servers as $server) {
$gserver = DBA::selectFirst('gserver', ['id', 'url', 'network'], ['nurl' => Strings::normaliseLink($server)]);
if (DBA::isResult($gserver)) {
$serverlist[$gserver['id']] = $gserver;
}
}
} }
if (DI::config()->get("system", "relay_directly", false)) {
// We distribute our stuff based on the parent to ensure that the thread will be complete // We distribute our stuff based on the parent to ensure that the thread will be complete
$parent = Post::selectFirst(['uri-id'], ['id' => $item_id]); $parent = Post::selectFirst(['uri-id'], ['id' => $item_id]);
if (!DBA::isResult($parent)) { if (!DBA::isResult($parent)) {
return; return [];
} }
// Servers that want to get all content // Servers that want to get all content
@ -292,7 +274,8 @@ class Relay
} }
DBA::close($servers); DBA::close($servers);
} }
}
$contacts = [];
// Now we are collecting all relay contacts // Now we are collecting all relay contacts
foreach ($serverlist as $gserver) { foreach ($serverlist as $gserver) {
@ -304,15 +287,24 @@ class Relay
if (empty($contact)) { if (empty($contact)) {
continue; continue;
} }
if (in_array($contact['network'], $networks) && !in_array($contact['batch'], array_column($contacts, 'batch'))) {
$contacts[] = $contact;
}
} }
return $contacts; return $contacts;
} }
/**
* Return a list of relay servers
*
* @param array $fields Field list
* @return array
* @throws Exception
*/
public static function getList($fields = []):array
{
return DBA::selectToArray('apcontact', $fields,
["`type` = ? AND `url` IN (SELECT `url` FROM `contact` WHERE `uid` = ? AND `rel` = ?)", 'Application', 0, Contact::FRIEND]);
}
/** /**
* Return a contact for a given server address or creates a dummy entry * Return a contact for a given server address or creates a dummy entry
* *

View file

@ -39,7 +39,6 @@ use Friendica\Protocol\Activity;
use Friendica\Protocol\ActivityPub; use Friendica\Protocol\ActivityPub;
use Friendica\Protocol\Diaspora; use Friendica\Protocol\Diaspora;
use Friendica\Protocol\OStatus; use Friendica\Protocol\OStatus;
use Friendica\Protocol\Relay;
use Friendica\Protocol\Salmon; use Friendica\Protocol\Salmon;
use Friendica\Util\Network; use Friendica\Util\Network;
use Friendica\Util\Strings; use Friendica\Util\Strings;
@ -442,12 +441,12 @@ class Notifier
$batch_delivery = false; $batch_delivery = false;
if ($public_message && !in_array($cmd, [Delivery::MAIL, Delivery::SUGGESTION]) && !$followup) { if ($public_message && !in_array($cmd, [Delivery::MAIL, Delivery::SUGGESTION]) && !$followup) {
$relay_list = []; $participants = [];
if ($diaspora_delivery && !$unlisted) { if ($diaspora_delivery && !$unlisted) {
$batch_delivery = true; $batch_delivery = true;
$relay_list_stmt = DBA::p( $participants_stmt = DBA::p(
"SELECT "SELECT
`batch`, `network`, `protocol`, `batch`, `network`, `protocol`,
ANY_VALUE(`id`) AS `id`, ANY_VALUE(`id`) AS `id`,
@ -466,17 +465,11 @@ class Notifier
$owner['uid'], $owner['uid'],
Contact::SHARING Contact::SHARING
); );
$relay_list = DBA::toArray($relay_list_stmt); $participants = DBA::toArray($participants_stmt);
// Fetch the participation list // Fetch the participation list
// The function will ensure that there are no duplicates // The function will ensure that there are no duplicates
$relay_list = Diaspora::participantsForThread($target_item, $relay_list); $participants = Diaspora::participantsForThread($target_item, $participants);
// Add the relay to the list, avoid duplicates.
// Don't send community posts to the relay. Forum posts via the Diaspora protocol are looking ugly.
if (!$followup && !Item::isForumPost($target_item, $owner) && !self::isForumPost($target_item)) {
$relay_list = Relay::getList($target_id, $relay_list, [Protocol::DFRN, Protocol::DIASPORA]);
}
} }
$condition = ['network' => Protocol::DFRN, 'uid' => $owner['uid'], 'blocked' => false, $condition = ['network' => Protocol::DFRN, 'uid' => $owner['uid'], 'blocked' => false,
@ -484,7 +477,7 @@ class Notifier
$contacts = DBA::toArray(DBA::select('contact', ['id', 'url', 'addr', 'name', 'network', 'protocol'], $condition)); $contacts = DBA::toArray(DBA::select('contact', ['id', 'url', 'addr', 'name', 'network', 'protocol'], $condition));
$conversants = array_merge($contacts, $relay_list); $conversants = array_merge($contacts, $participants);
$delivery_queue_count += self::delivery($cmd, $post_uriid, $sender_uid, $target_item, $thr_parent, $owner, $batch_delivery, true, $conversants, $ap_contacts, []); $delivery_queue_count += self::delivery($cmd, $post_uriid, $sender_uid, $target_item, $thr_parent, $owner, $batch_delivery, true, $conversants, $ap_contacts, []);

View file

@ -164,9 +164,13 @@ return [
// Comma separated list of tags that are rejected. // Comma separated list of tags that are rejected.
'relay_deny_tags' => '', 'relay_deny_tags' => '',
// relay_server (String) // relay_directly (Boolean)
// Address of the relay server where public posts should be send to. // Directly transmit content to relay subscribers without using a relay server
'relay_server' => 'https://social-relay.isurf.ca', 'relay_directly' => false,
// relay_scope (SR_SCOPE_NONE, SR_SCOPE_TAGS or SR_SCOPE_ALL)
// Defines the scope of accepted posts from the relay servers
'relay_scope' => SR_SCOPE_NONE,
// relay_server_tags (String) // relay_server_tags (String)
// Comma separated list of tags for the "tags" subscription. // Comma separated list of tags for the "tags" subscription.

File diff suppressed because it is too large Load diff

View file

@ -127,13 +127,22 @@
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}"/></div> <div class="submit"><input type="submit" name="page_site" value="{{$submit}}"/></div>
<h2>{{$relay_title}}</h2> <h2>{{$relay_title}}</h2>
{{include file="field_checkbox.tpl" field=$relay_subscribe}} {{if $relay_list}}
{{include file="field_input.tpl" field=$relay_server}} <p>{{$relay_list_title}}</p>
{{include file="field_checkbox.tpl" field=$relay_directly}} <ul id="relay-list">
{{foreach $relay_list as $relay}}
<li>{{$relay.url}}</li>
{{/foreach}}
</ul>
{{else}}
<p>{{$no_relay_list}}</p>
{{/if}}
<p>{{$relay_description}}</p>
{{include file="field_select.tpl" field=$relay_scope}} {{include file="field_select.tpl" field=$relay_scope}}
{{include file="field_input.tpl" field=$relay_server_tags}} {{include file="field_input.tpl" field=$relay_server_tags}}
{{include file="field_input.tpl" field=$relay_deny_tags}} {{include file="field_input.tpl" field=$relay_deny_tags}}
{{include file="field_checkbox.tpl" field=$relay_user_tags}} {{include file="field_checkbox.tpl" field=$relay_user_tags}}
{{include file="field_checkbox.tpl" field=$relay_directly}}
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}"/></div> <div class="submit"><input type="submit" name="page_site" value="{{$submit}}"/></div>

View file

@ -0,0 +1,31 @@
Table {{$name nofilter}}
===========
{{$comment nofilter}}
Fields
------
{{foreach $fields as $field}}
| {{$field.name nofilter}} | {{$field.comment nofilter}} | {{$field.type nofilter}} | {{$field.null nofilter}} | {{$field.primary nofilter}} | {{$field.default nofilter}} | {{$field.extra nofilter}} |
{{/foreach}}
Indexes
------------
{{foreach $indexes as $index}}
| {{$index.name nofilter}} | {{$index.fields nofilter}} |
{{/foreach}}
{{if $foreign}}
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
{{foreach $foreign as $key}}
| {{$key.field nofilter}} | [{{$key.targettable nofilter}}](help/database/db_{{$key.targettable nofilter}}) | {{$key.targetfield nofilter}} |
{{/foreach}}
{{/if}}
Return to [database documentation](help/database)

10
view/templates/tables.tpl Normal file
View file

@ -0,0 +1,10 @@
Database Tables
===============
* [Home](help)
| Table | Description |
|-------|-------------|
{{foreach $tables as $table}}
| [{{$table.name nofilter}}](help/database/db_{{$table.name nofilter}}) | {{$table.comment nofilter}} |
{{/foreach}}

View file

@ -297,13 +297,22 @@
</div> </div>
<div id="admin-settings-relay-collapse" class="panel-collapse collapse" role="tabpanel" aria-labelledby="admin-settings-relay"> <div id="admin-settings-relay-collapse" class="panel-collapse collapse" role="tabpanel" aria-labelledby="admin-settings-relay">
<div class="panel-body"> <div class="panel-body">
{{include file="field_checkbox.tpl" field=$relay_subscribe}} {{if $relay_list}}
{{include file="field_input.tpl" field=$relay_server}} <p>{{$relay_list_title}}</p>
{{include file="field_checkbox.tpl" field=$relay_directly}} <ul id="relay-list">
{{foreach $relay_list as $relay}}
<li>{{$relay.url}}</li>
{{/foreach}}
</ul>
{{else}}
<p>{{$no_relay_list}}</p>
{{/if}}
<p>{{$relay_description}}</p>
{{include file="field_select.tpl" field=$relay_scope}} {{include file="field_select.tpl" field=$relay_scope}}
{{include file="field_input.tpl" field=$relay_server_tags}} {{include file="field_input.tpl" field=$relay_server_tags}}
{{include file="field_input.tpl" field=$relay_deny_tags}} {{include file="field_input.tpl" field=$relay_deny_tags}}
{{include file="field_checkbox.tpl" field=$relay_user_tags}} {{include file="field_checkbox.tpl" field=$relay_user_tags}}
{{include file="field_checkbox.tpl" field=$relay_directly}}
</div> </div>
<div class="panel-footer"> <div class="panel-footer">
<input type="submit" name="page_site" class="btn btn-primary" value="{{$submit}}"/> <input type="submit" name="page_site" class="btn btn-primary" value="{{$submit}}"/>