Merge branch '2023.09-rc' into megamerge

This commit is contained in:
~keith 2023-11-06 11:31:34 -05:00
commit a802fada23
Signed by: keith
GPG Key ID: 5BEBEEAB2C73D520
1870 changed files with 271293 additions and 190497 deletions

View File

@ -1,7 +1,7 @@
codecov:
branch: develop
ci:
- drone.friendi.ca
- ci.friendi.ca
coverage:
precision: 2

258
.ddev/config.yaml Normal file
View File

@ -0,0 +1,258 @@
name: my-friendica
type: php
docroot: ""
php_version: "7.3"
webserver_type: apache-fpm
router_http_port: "80"
router_https_port: "443"
xdebug_enabled: false
additional_hostnames: []
additional_fqdns: []
database:
type: mariadb
version: "10.4"
nfs_mount_enabled: false
mutagen_enabled: false
use_dns_when_possible: true
composer_version: "1"
web_environment: []
nodejs_version: "16"
webimage_extra_packages: [php7.3-gmp]
# Key features of ddev's config.yaml:
# name: <projectname> # Name of the project, automatically provides
# http://projectname.ddev.site and https://projectname.ddev.site
# type: <projecttype> # drupal6/7/8, backdrop, typo3, wordpress, php
# docroot: <relative_path> # Relative path to the directory containing index.php.
# php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2"
# You can explicitly specify the webimage but this
# is not recommended, as the images are often closely tied to ddev's' behavior,
# so this can break upgrades.
# webimage: <docker_image> # nginx/php docker image.
# database:
# type: <dbtype> # mysql, mariadb
# version: <version> # database version, like "10.3" or "8.0"
# Note that mariadb_version or mysql_version from v1.18 and earlier
# will automatically be converted to this notation with just a "ddev config --auto"
# router_http_port: <port> # Port to be used for http (defaults to port 80)
# router_https_port: <port> # Port for https (defaults to 443)
# xdebug_enabled: false # Set to true to enable xdebug and "ddev start" or "ddev restart"
# Note that for most people the commands
# "ddev xdebug" to enable xdebug and "ddev xdebug off" to disable it work better,
# as leaving xdebug enabled all the time is a big performance hit.
# xhprof_enabled: false # Set to true to enable xhprof and "ddev start" or "ddev restart"
# Note that for most people the commands
# "ddev xhprof" to enable xhprof and "ddev xhprof off" to disable it work better,
# as leaving xhprof enabled all the time is a big performance hit.
# webserver_type: nginx-fpm # or apache-fpm
# timezone: Europe/Berlin
# This is the timezone used in the containers and by PHP;
# it can be set to any valid timezone,
# see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# For example Europe/Dublin or MST7MDT
# composer_root: <relative_path>
# Relative path to the composer root directory from the project root. This is
# the directory which contains the composer.json and where all Composer related
# commands are executed.
# composer_version: "2"
# You can set it to "" or "2" (default) for Composer v2 or "1" for Composer v1
# to use the latest major version available at the time your container is built.
# It is also possible to use each other Composer version channel. This includes:
# - 2.2 (latest Composer LTS version)
# - stable
# - preview
# - snapshot
# Alternatively, an explicit Composer version may be specified, for example "2.2.18".
# To reinstall Composer after the image was built, run "ddev debug refresh".
# nodejs_version: "16"
# change from the default system Node.js version to another supported version, like 12, 14, 17, 18.
# Note that you can use 'ddev nvm' or nvm inside the web container to provide nearly any
# Node.js version, including v6, etc.
# additional_hostnames:
# - somename
# - someothername
# would provide http and https URLs for "somename.ddev.site"
# and "someothername.ddev.site".
# additional_fqdns:
# - example.com
# - sub1.example.com
# would provide http and https URLs for "example.com" and "sub1.example.com"
# Please take care with this because it can cause great confusion.
# upload_dir: custom/upload/dir
# would set the destination path for ddev import-files to <docroot>/custom/upload/dir
# When mutagen is enabled this path is bind-mounted so that all the files
# in the upload_dir don't have to be synced into mutagen
# working_dir:
# web: /var/www/html
# db: /home
# would set the default working directory for the web and db services.
# These values specify the destination directory for ddev ssh and the
# directory in which commands passed into ddev exec are run.
# omit_containers: [db, dba, ddev-ssh-agent]
# Currently only these containers are supported. Some containers can also be
# omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit
# the "db" container, several standard features of ddev that access the
# database container will be unusable. In the global configuration it is also
# possible to omit ddev-router, but not here.
# nfs_mount_enabled: false
# Great performance improvement but requires host configuration first.
# See https://ddev.readthedocs.io/en/latest/users/install/performance/#nfs
# mutagen_enabled: false
# Performance improvement using mutagen asynchronous updates.
# See https://ddev.readthedocs.io/en/latest/users/install/performance/#mutagen
# fail_on_hook_fail: False
# Decide whether 'ddev start' should be interrupted by a failing hook
# host_https_port: "59002"
# The host port binding for https can be explicitly specified. It is
# dynamic unless otherwise specified.
# This is not used by most people, most people use the *router* instead
# of the localhost port.
# host_webserver_port: "59001"
# The host port binding for the ddev-webserver can be explicitly specified. It is
# dynamic unless otherwise specified.
# This is not used by most people, most people use the *router* instead
# of the localhost port.
# host_db_port: "59002"
# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic
# unless explicitly specified.
# phpmyadmin_port: "8036"
# phpmyadmin_https_port: "8037"
# The PHPMyAdmin ports can be changed from the default 8036 and 8037
# host_phpmyadmin_port: "8036"
# The phpmyadmin (dba) port is not normally bound on the host at all, instead being routed
# through ddev-router, but it can be specified and bound.
# mailhog_port: "8025"
# mailhog_https_port: "8026"
# The MailHog ports can be changed from the default 8025 and 8026
# host_mailhog_port: "8025"
# The mailhog port is not normally bound on the host at all, instead being routed
# through ddev-router, but it can be bound directly to localhost if specified here.
# webimage_extra_packages: [php7.4-tidy, php-bcmath]
# Extra Debian packages that are needed in the webimage can be added here
# dbimage_extra_packages: [telnet,netcat]
# Extra Debian packages that are needed in the dbimage can be added here
# use_dns_when_possible: true
# If the host has internet access and the domain configured can
# successfully be looked up, DNS will be used for hostname resolution
# instead of editing /etc/hosts
# Defaults to true
# project_tld: ddev.site
# The top-level domain used for project URLs
# The default "ddev.site" allows DNS lookup via a wildcard
# If you prefer you can change this to "ddev.local" to preserve
# pre-v1.9 behavior.
# ngrok_args: --basic-auth username:pass1234
# Provide extra flags to the "ngrok http" command, see
# https://ngrok.com/docs#http or run "ngrok http -h"
# disable_settings_management: false
# If true, ddev will not create CMS-specific settings files like
# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php
# In this case the user must provide all such settings.
# You can inject environment variables into the web container with:
# web_environment:
# - SOMEENV=somevalue
# - SOMEOTHERENV=someothervalue
# no_project_mount: false
# (Experimental) If true, ddev will not mount the project into the web container;
# the user is responsible for mounting it manually or via a script.
# This is to enable experimentation with alternate file mounting strategies.
# For advanced users only!
# bind_all_interfaces: false
# If true, host ports will be bound on all network interfaces,
# not just the localhost interface. This means that ports
# will be available on the local network if the host firewall
# allows it.
# default_container_timeout: 120
# The default time that ddev waits for all containers to become ready can be increased from
# the default 120. This helps in importing huge databases, for example.
#web_extra_exposed_ports:
#- name: nodejs
# container_port: 3000
# http_port: 2999
# https_port: 3000
#- name: something
# container_port: 4000
# https_port: 4000
# http_port: 3999
# Allows a set of extra ports to be exposed via ddev-router
# The port behavior on the ddev-webserver must be arranged separately, for example
# using web_extra_daemons.
# For example, with a web app on port 3000 inside the container, this config would
# expose that web app on https://<project>.ddev.site:9999 and http://<project>.ddev.site:9998
# web_extra_exposed_ports:
# - container_port: 3000
# http_port: 9998
# https_port: 9999
#web_extra_daemons:
#- name: "http-1"
# command: "/var/www/html/node_modules/.bin/http-server -p 3000"
# directory: /var/www/html
#- name: "http-2"
# command: "/var/www/html/node_modules/.bin/http-server /var/www/html/sub -p 3000"
# directory: /var/www/html
# override_config: false
# By default, config.*.yaml files are *merged* into the configuration
# But this means that some things can't be overridden
# For example, if you have 'nfs_mount_enabled: true'' you can't override it with a merge
# and you can't erase existing hooks or all environment variables.
# However, with "override_config: true" in a particular config.*.yaml file,
# 'nfs_mount_enabled: false' can override the existing values, and
# hooks:
# post-start: []
# or
# web_environment: []
# or
# additional_hostnames: []
# can have their intended affect. 'override_config' affects only behavior of the
# config.*.yaml file it exists in.
# Many ddev commands can be extended to run tasks before or after the
# ddev command is executed, for example "post-start", "post-import-db",
# "pre-composer", "post-composer"
# See https://ddev.readthedocs.io/en/stable/users/extend/custom-commands/ for more
# information on the commands that can be extended and the tasks you can define
# for them. Example:
#hooks:

View File

@ -6,9 +6,27 @@ root = true
[*]
charset = utf-8
end_of_line = lf
trim_trailing_whitespaces = true
indent_style = tab
trim_trailing_whitespace = true
insert_final_newline = true
quote_type = single
max_line_length = off
[*.js]
quote_type = double
quote_type = double
ij_javascript_use_double_quotes = true
[*.yml]
indent_style = space
indent_size = 2
[*.xml]
indent_style = space
indent_size = 2
[*.json]
indent_style = space
indent_size = 2
[composer.json]
indent_style = tab

View File

@ -13,7 +13,7 @@ assignees: ''
### Describe the feature you'd like
<!-- A clear and concise description of waht you want to happen. -->
<!-- A clear and concise description of what you want to happen. -->
### Describe alternatives you've considered

11
.gitignore vendored
View File

@ -10,17 +10,16 @@ home.html
robots.txt
#ignore local config
/config/local.config.php
/config/addon.config.php
/config/local.ini.php
/config/addon.ini.php
!/config/local-sample.config.php
/config/*.config.php
/config/*.ini.php
#ignore documentation, it should be newly built
/doc/api
/doc/cache
#ignore reports, should be generated with every build
report/
/report/
#ignore config files from eclipse, we don't want IDE files in our repository
.project
@ -34,7 +33,7 @@ report/
#ignore NetBeans IDE's private files (at least)
/nbproject/private/
Ignore config files from VSCode
#Ignore config files from VSCode
/.vscode/
#ignore smarty cache

View File

@ -51,6 +51,6 @@ AddType audio/ogg .oga
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?pagename=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
RewriteRule ^(.*)$ index.php?pagename=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA,B]
</IfModule>

View File

@ -1,9 +1,9 @@
[main]
host = https://www.transifex.com
host = https://api.transifex.com
[friendica.messagespo]
[o:Friendica:p:friendica:r:messagespo]
file_filter = view/lang/<lang>/messages.po
source_file = view/lang/C/messages.po
source_lang = en
type = PO
type = PO

View File

@ -1,4 +1,4 @@
pipeline:
steps:
restore_cache:
image: meltwater/drone-cache:dev
settings:

View File

@ -11,11 +11,11 @@ labels:
skip_clone: true
pipeline:
steps:
clone:
image: alpine/git
commands:
- git clone $CI_REPO_LINK .
- git clone $CI_REPO_CLONE_URL .
- git checkout $CI_COMMIT_BRANCH
- git fetch origin $CI_COMMIT_REF
- git merge $CI_COMMIT_SHA
@ -39,7 +39,7 @@ pipeline:
branch: [ develop, '*-rc' ]
event: push
composer_install:
image: friendicaci/php7.4:php7.4.18
image: friendicaci/php7.4:php7.4.33
commands:
- export COMPOSER_HOME=.composer
- composer validate

View File

@ -1,12 +1,16 @@
matrix:
include:
- PHP_MAJOR_VERSION: 7.4
PHP_VERSION: 7.4.18
PHP_VERSION: 7.4.33
branches:
exclude: [ stable ]
pipeline:
# This forces CI executions at the "opensocial" labeled location (because of much more power...)
labels:
location: opensocial
steps:
db_version_match:
image: friendicaci/transifex
commands:

View File

@ -1,4 +1,4 @@
pipeline:
steps:
check:
image: friendicaci/php-cs
commands:

View File

@ -1,4 +1,4 @@
pipeline:
steps:
build_xgettext:
image: friendicaci/transifex
commands:
@ -9,4 +9,4 @@ pipeline:
- /check-messages.sh
branches:
exclude: [ stable ]
exclude: [ stable ]

View File

@ -1,18 +1,26 @@
matrix:
include:
- PHP_MAJOR_VERSION: 7.3
PHP_VERSION: 7.3.28
PHP_VERSION: 7.3.33
- PHP_MAJOR_VERSION: 7.4
PHP_VERSION: 7.4.18
PHP_VERSION: 7.4.33
- PHP_MAJOR_VERSION: 8.0
PHP_VERSION: 8.0.5
PHP_VERSION: 8.0.30
- PHP_MAJOR_VERSION: 8.1
PHP_VERSION: 8.1.23
- PHP_MAJOR_VERSION: 8.2
PHP_VERSION: 8.2.11
pipeline:
# This forces PHP Unit executions at the "opensocial" labeled location (because of much more power...)
labels:
location: opensocial
steps:
php-lint:
image: php:${PHP_MAJOR_VERSION}
group: lint
commands:
- ./bin/composer.phar run lint
- find . -name \*.php -not -path './vendor/*' -not -path './view/asset/*' -print0 | xargs -0 -n1 php -l
restore_cache:
image: meltwater/drone-cache:dev
settings:
@ -65,20 +73,19 @@ pipeline:
else
phpunit --configuration tests/phpunit.xml;
fi
codecov:
image: plugins/codecov
image: friendicaci/codecov
when:
matrix:
PHP_MAJOR_VERSION: 7.4
PHP_VERSION: 7.4.18
PHP_VERSION: 7.4.33
repo:
- friendica/friendica
settings:
token:
from_secret: codecov-token
files:
- clover.xml
commands:
- codecov -R '.' -Z -f 'clover.xml'
secrets:
- source: codecov-token
target: codecov_token
services:
mariadb:

View File

@ -9,11 +9,11 @@ labels:
skip_clone: true
pipeline:
steps:
clone:
image: alpine/git
commands:
- git clone $CI_REPO_LINK .
- git clone $CI_REPO_CLONE_URL .
- git checkout $CI_COMMIT_BRANCH
- git fetch origin $CI_COMMIT_REF
- git merge $CI_COMMIT_SHA
@ -37,7 +37,7 @@ pipeline:
branch: stable
event: tag
composer_install:
image: friendicaci/php7.4:php7.4.18
image: friendicaci/php7.4:php7.4.33
commands:
- export COMPOSER_HOME=.composer
- composer validate

281
CHANGELOG
View File

@ -1,13 +1,214 @@
Version 2022.12 (unreleased)
Version 2023.09 (unreleased)
Friendica Core
Friendica Addons
BREAKING: The functions from the boot.php file have been moved into better fitting classes
this may break your custom addons. See the pull requests #1293 and #1294 in the
addon repository about the needed changes to your addons.
Closed Issues
Version 2023.05 (2023-05-23)
Friendica Core
Updates to the translations HU, PL
Updates to the themes (frio, vier) [MrPetovan, xundeenergie]
Updates to the documentation [MrPetovan]
Improved the probing of remote accounts [Annando, ne20002]
Improved the OWA implementation [annando, abanink]
Improved the database handling [nupplaphil]
Improved the ATOM feed handling, added OPML [annando]
Improved the audience handling of forum posting [annando]
General code cleanup [annando, MrPetovan, nupplaphil, Raroun]
Fixed HTML escaping for notification messages [MrPetovan, nupplaphil]
Fixed the feed body import [annando]
Fixed meaning of the limit parameter in the Mastodon API [annando]
Fixed a bug in the tag cloud [MrPetovan]
Fixed the magic links in photo menu [MrPetovan]
Added new hook for addons (support_probe) [annando]
Added support for special characters in category links [MrPetovan]
Added possibility to collapse postings [annando]
Added the emojipicker to the core [annando]
Added a fancybox to view images in network stream [annando]
Friendica Addons
Updates to the translations DE, HU
bluesky
Added the bluesky connector [annando]
mailstream
General code cleanup [mexon]
tumblr
Added OAuth2 support [ænnando]
Added un/follow, un/block functionality [annando]
Added probe [annando]
Added the possibility for users to follow tags [annando]
emojipicker, fancybox
The functionality of this addon has been moved to the
core for the frio and vier themes. [annando]
Closed Issues
12439, 12760, 12788, 12824, 12979, 13016, 13026, 13027, 13036,
13052, 13073, 13082, 13089, 13102, 13104, 13108
Version 2023.04-1 (2023-04-27)
Friendica Core
Updates to the translations AR, CA, CS, DE, ES, FR, GD, HU, IT, JA, NL, PL, RU
Fixed a bug that broke the private messages web interface [MrPetovan]
Friendica Addons
tumblr
Added follow, unfollow, cross posting [annando]
Added the possibility to import the remote timeline [annando]
**Breaking** Switch to OAuth2 [annando]
Node admins have to change the redirect URL in the settings to the
OAuth2 specific one. social.example.com/tumblr/redirect
mailstream
Various modernization [mexon]
Include post media [mexon]
Closed Issues
13026
Version 2023.04 (2023-04-23)
Friendica Core
Updates to the translations AR, BG, CA, CS, DA, DE, EO, ES, ET, FR, GD, HU, IS, IT, JA, NL, PL, RU, SV
Updates to the themes (frio, vier) [damianwajer, haheute, MrPetovan, xundeenergie]
Updates to the documentation [haheute, HankG, MarekBenjamin, MrPetovan]
General code cleanup [annando, MarekBenjamin, MrPetovan, nupplaphil]
Fixed display of blocked contacts [annando]
Fixed usage of environment variables [nupplaphil]
Fixed paging on the Mastodon compatible API endpoints for timelines and statuses [HankG]
Fixed updating of attached links via the API [HankG]
Fixed federation issues with Diaspora*, gup.pe, Hubzilla and Peertube servers [annando]
Fixed a bug with PubSubHubBub subscription [annando]
Fixed a XSS vulnerability in Justified-Gallery JavaScript dependency (frio theme) [MrPetovan]
Improved the translate ability of activities (singular/plural forms) [nupplaphil]
Improved activity update handling [xundeenergie]
Improved BBCode + Markdown parsing [annando]
Improved known Fediverse statistics [annando]
Improved automatic table optimization [HankG]
Improved the performance of local JsonLD requests [MrPetovan]
Improved the performance of local requests [annando]
Improved the performance of the delivery of postings [annando]
Improved the performance of homepage rel-me checks [annando]
Improved supported characters for passwords [MrPetovan]
Improved the ARIA support [MrPetovan]
Improved PHP 8.2 compatibility [MrPetovan]
Added emoticon reaction handling [annando]
Added drag and drop image upload in frio themes [xundeenergie]
Added scope change for comments to the API [annando]
Added posting visibility to the API [HankG]
Added delivery information to the Mastodon compatible API [HankG]
Added notification summary option to the Mastodon compatible API [HankG]
Added option to display activities as emoticons [annando]
Added trending API updates [HankG]
Added blocked/ignored filters to the Mastodon compatible API [HankG]
Added ActivityPub C2S postings to the API [annando]
Added dislike information for postings to the Mastodon compatible API [HankG, mkljczk]
Added the possibility to deletion blocked servers [annando]
Removed the GNUsocial import [annando]
Friendica Addons
Updates to the translations AR, CS, DE, ES, HU, IS, IT, NL, PL, RU, SV
securemail
Updated the phpseclib dependency [MrPetovan]
twitter
Improve remote-self handling [annando]
impressum
Avoide obfuscation on un-set email addresses [MrPestovan]
notifyall
Fixed a bug selecting the email addresses [nupplaphil]
tumblr
Fixed a bug addressing the tumblr blog via UUID [annando]
Added support for NPF [annando]
Improved the tumblr blog URI detection [annando]
Improved the handling of multible images [annando]
marked as UNSUPPORTED addons
blockem, tictactoe, twitter
Closed Issues
7037, 10974, 11513, 11535, 11825, 11986, 12489, 12490, 12507, 12515,
12522, 12537, 12545, 12550, 12552, 12559, 12582, 12601, 12602, 12603,
12607, 12608, 12616, 12617, 12620, 12624, 12625, 12629, 12654, 12658,
12661, 12665, 12672, 12677, 12682, 12705, 12713, 12721, 12753, 12764,
12779, 12792, 12793, 12803, 12809, 12828, 12835, 12842, 12846, 12847,
12858, 12859, 12871, 12888, 12924, 12944, 12970, 12974, 12983, 12993,
12995, 13002, 19996
Version 2023.01 (2023-01-15)
Friendica Core
Improved the global server updating if domains are blocked [MrPetovan]
Improved the forum distribution for comments [annando]
Improved the handling of forum mentions [annando]
Fixed the forum post distribution [annando]
Fixed a security bug in the 404 page [nupplaphil]
Closed Issues
12539, 12540, 12655, 12615, 12663
Version 2022.12 (2022-12-20)
Friendica Core
Updates to the translations DE, FR, HU, PL, RU
Updated to the documentation [foss-, MarekBenjamin, MrPetovan, tobiasd]
Updates to the themes (frio, vier) [loma-one, MarekBenjamin, MrPetovan, tobiasd]
Improved the display of the system settings in the admin panel [MarekBenjamin]
Improved the API [annando, HankG, Schnoop]
Improved getting system information [VVelox]
Improved the PHP 8.1 compatibility [MrPetovan]
Improved the bulk delivery of postings [annando]
Improved the display of attached images to postings [MarekBenjamin]
General code cleanup [annando, MrPetovan, nupplaphil, Quix0r]
Added a blur hash for images else not displayable [annando]
Added a /about route for the /friendica page [nupplaphil]
Added reporting endpoints to the API [annando]
Added support for the "fedifinder" [annando]
Added rel-me verification for the profile homepage [tobiasd]
Added admin notification for new registrations [annando]
Added a moderation section to the admin panel [annando]
Added an option to make the calendar public [matthiasmoritz]
Fixed a bug in the federation with Diaspora* [annando]
Fixed a problem in the federation with GoTo Social and Owncast [annando]
Deprecated old themes (duepuntozero, quattro, smoothy)
NOTE: The Apache2 rewrite rule in the .htaccess-dist has been changed.
The change has to be applied manually to the existing .htaccess.
Friendica Addons
Updates to the translations DE, FR, HU, SV
fancybox:
Added an addon to display images in postings with a fancybox [brockhaus]
impressum:
Fixed a bug when saving informations [tobiasd]
js_upload:
Improved wording [MarekBenjamin]
monolog:
Moved the functionality into an addon [nupplaphil]
nitter:
Updated the wording [AndyHee]
nsfw:
Enhanced regex handling [MrPetovan]
pumpio:
Fixed logger message [MrPetovan]
rendertime:
Fixed empty minimal time [nupplaphil]
Adapt ignored_modules [nupplaphil]
twitter:
Fixed a problem when the image array was missing [MrPetovan]
Added an option to automatically follow contacts in the Fediverse [annando]
Deprecated unmaintained addons: namethingy, superblock, windowsphonepush
BREAKING: The functions from the boot.php file have been moved into better
fitting classes this may break your custom addons. See the pull
requests #1293 and #1294 in the addon repository about the needed
changes to your addons.
Closed Issues
5095, 7574, 9286, 9920, 10100, 10188, 10518, 10875, 11011, 11284,
11553, 11774, 11804, 11875, 11911, 11941, 11998, 12009, 12013, 12023,
12035, 12054, 12059, 12073, 12084, 12085, 12090, 12096, 12112, 12149,
12163, 12182, 12191, 12192, 12193, 12197, 12199, 12201, 12219, 12220,
12229, 12237, 12245, 12262, 12266, 12273, 12275, 12285, 12312, 12327,
12338, 12339, 12342, 12344, 12345, 12355, 12373, 12376, 12382, 12386,
12399, 12401, 12405, 12406, 12408, 12411, 12413, 12421, 12431, 12437,
12441, 12448, 12450, 12456, 12466, 12468, 12476
Version 2022.10 (2022-10-14)
Friendica Core
Added GD translation, updates to the translations AR, DE, FR, HU, PL, SV, ZH CN
@ -650,13 +851,13 @@ Version 2020.07 (2020-07-12)
blockbot:
The list of accepted user agents was enhanced [annando]
Diaspora*:
Enhanced conntector settings [MrPetovan]
Enhanced connector settings [MrPetovan]
PHP Mailer SMTP:
Updated phpmailer version [dependabot]
showmore_dyn:
New addon to collapse long post depending on their actual height [wiwie]
twitter:
Enhaceed the handling of mobile twitter URLs [annando]
Enhanced the handling of mobile twitter URLs [annando]
Enhanced the handling of quoted tweets [MrPetovan]
added HTML error code handling [MrPetovan]
various:
@ -894,7 +1095,7 @@ Version 2019.09 (2019-09-29)
Version 2019.06 (2019-06-23)
Friendica Core:
Update to the tranlation (CS, DE, EN-GB, EN-US, ET, FR, IT, PL, PT-BR, SV) [translation teams]
Update to the translation (CS, DE, EN-GB, EN-US, ET, FR, IT, PL, PT-BR, SV) [translation teams]
Update to the documentation [nupplaphil, realkinetix, MrPetovan]
Update to the themes (frio, vier) [BinkaDroid, MrPetovan, tobiasd]
Enhancements to the API [annando, MrPetovan]
@ -914,7 +1115,7 @@ Version 2019.06 (2019-06-23)
Fixed an issue with the File to Folder feature [MrPetovan]
Fixed an issue with the legacy storage engine [fabrixxm]
Fixed an issue with the theme and addon path items [MrPetovan]
Fixed an issue occuring when the BasePath was not set [tobiasd]
Fixed an issue occurring when the BasePath was not set [tobiasd]
Fixed an issue with additionally opened Sessions [MrPetovan]
Fixed an issue with legacy loglevel mapping [nupplaphil]
Fixed contact suggestions [annando]
@ -940,7 +1141,7 @@ Version 2019.06 (2019-06-23)
Remove support for defunct F-Droid Friendica app [MrPetovan]
Friendica Addons:
Update to the tranlation (ET, SV, ZH_CN) [translation teams]
Update to the translation (ET, SV, ZH_CN) [translation teams]
botdetection:
Added a new addon for preventing access by bots [nupplaphil, annando]
buffer:
@ -978,7 +1179,7 @@ Version 2019.03 (2019-03-22)
Update to the themes (duepuntozero, frio, smoothy, quattro, vier) [lxiter, MrPetovan, nupplaphil, rabuzarus, tobiasd]
Enhancements to the API [jasonscheng]
Enhancements to the Vagrant development VM [JeroenED]
Enhancements to the storage of gender, sexual preferences and maritial status [JeroenED]
Enhancements to the storage of gender, sexual preferences and marital status [JeroenED]
Enhancements to the wording of notifications [MrPetovan]
Enhancements to the display of contacts in the profile [MrPetovan]
Enhancements to the handling of local links [lxiter]
@ -1007,7 +1208,7 @@ Version 2019.03 (2019-03-22)
Fixed an issue with sending out notification mails to the admin [nupplaphil]
Fixed an the issue, that the API was ignoring the globalsilence setting [nupplaphil]
Fixed issues with the autolinker of URLs in postings [MrPetovan]
Fixed an issue resulting in multible emails after successful updates of the database [nupplaphil]
Fixed an issue resulting in multiple emails after successful updates of the database [nupplaphil]
Fixed a timeout issue during detection process of the remote profile [annando]
Fixed an issue with postings from blocked servers [annando, MrPetovan]
Fixed an issue with the paging of stored folders [MrPetovan]
@ -1039,7 +1240,7 @@ Version 2019.03 (2019-03-22)
forumdirectory:
Fixed a theming issue with frio [rabuzarus]
js_upload:
Fixed a missing extionsion index [nupplaphil]
Fixed a missing extension index [nupplaphil]
mailstream:
Fixed a curl issue [MrPetovan]
piwik:
@ -1259,7 +1460,7 @@ Version 2018.09 (2018-09-23)
added addons:
mastodoncustomemojis [MrPetovan]
deprecated addons:
notimeline, retriver, remote_permissions, widgets
notimeline, retriever, remote_permissions, widgets
Directory:
Enhancements of the health summary [andyhee]
@ -1285,7 +1486,7 @@ Version 2018.05 (2018-06-01)
Enhancements to the relay system [annando]
Enhancements to the handling of URL that contain unicode characters [annando]
Enhancements to the Vagrant VM configuration [fabrixxm, tobiasd]
Enhancementa to the Babel module [MrPetovan]
Enhancements to the Babel module [MrPetovan]
Enhancements to the display of the [code] elements [MrPetovan]
Enhancements to the federation (OStatus, diaspora) [annando]
Enhancements to the PHP7.2 compatibility [Alkarex, MrPetovan, Quix0r]
@ -1314,7 +1515,7 @@ Version 2018.05 (2018-06-01)
Fixed a bug that made edited mentions and hashtags plaintext [annando]
Fixed a bug that caused the /display page to receive constandly new updates [annando]
Fixed wrong version of a dependency preventing the usage of PHP 5.6 [MrPetovan]
Fixed a bug in OpenID authentification [Quix0r]
Fixed a bug in OpenID authentication [Quix0r]
Fixed a bug in the item deletion [annando]
Fixed a bug that prevented public comments from being distributed [annando]
Fixed a bug that caused empty profile pictures for public contacts [annando]
@ -1413,7 +1614,7 @@ Version 3.6 (2018-03-23)
Enhancements to the probing of pump.io profiles [annando]
Enhancements to the handling of BBCode tags [MrPetovan]
Enhancements to the OEmbed handling [MrPetovan]
Fixed a bug that triggered the display of activities on the cummunity page [annando]
Fixed a bug that triggered the display of activities on the community page [annando]
Fixed a bug with personal notes [annando]
Fixed a display issue of long postings when using the showmore option [annando]
Fixed a bug that caused Twidere to crash on reload [annando]
@ -1421,7 +1622,7 @@ Version 3.6 (2018-03-23)
Fixed a bug in URL completion for feed fragments [annando]
Fixed a bug in the notification system about new registrations [annando]
Fixed the display of dislikes [annando]
Fixed the display of orphans childs in threads [MrPetovan]
Fixed the display of orphan children in threads [MrPetovan]
Fixed some SQL problems [annando]
Fixed the CLI config script [tobiasd]
Fixed the forum selection on the network display [annando]
@ -1475,7 +1676,7 @@ Version 3.6 (2018-03-23)
all bridges don't relay postings anymore that are posted to a public forum [annando]
DAV addon marked unsupported [tobiasd]
communityhome addon marked unsupported [MrPetovan]
yourls addon makrked unsupported [MrPetovan]
yourls addon marked unsupported [MrPetovan]
Current Weather: fixing a problem with the weathermap link [zeroadam]
NSFW added config examples, reworked the description, now ignores the CW from Mastodon [andyhee, annando, rebeka-catalina]
Twitter support 280 chars limit [annando]
@ -1670,7 +1871,7 @@ Version 3.5.1 (2017-03-12)
Improvements to the documentation [Hypolite, tobiasd, rabuzarus, beardyunixer, eelcomaljaars]
Improvements to the BBCode / Markdown conversation [Hypolite]
Improvements to the OStatus protocol implementation [annando]
Improvements to the installation wizzard [tobiasd]
Improvements to the installation wizard [tobiasd]
Improvements to the Diaspora connectivity [annando, Hypolite]
Work on PHP7 compatibility [ddorian1]
Code cleanup [Hypolite, Quix0r]
@ -1732,11 +1933,11 @@ Version 3.5 (2016-09-13)
Improvements on the themes (quattro, vier, frost) [rabuzarus, fabrixxm, stieben, annando, Quix0r, tobiasd]
Improvements to the ACL dialog [fabrixxm, rabuzarus]
Improvements to the database structure and optimization of queries [annando]
Improvements to the UI (contacts, hotkeys, remember me, ARIA, code hightlighting) [rabuzarus, annando, tobiasd]
Improvements to the UI (contacts, hotkeys, remember me, ARIA, code highlighting) [rabuzarus, annando, tobiasd]
Improvements to the background process (poller, worker) [annando]
Improvements to the admin panel [tobiasd, annando, fabrixxm]
Improvements to the performance [annando]
Improvements to the installation wizzard (language selection, RINO version, check required PHP modules, default theme is now vier) [tobiasd]
Improvements to the installation wizard (language selection, RINO version, check required PHP modules, default theme is now vier) [tobiasd]
Improvements to the relocation of nodes and accounts [annando]
Improvements to the DDoS detection [annando]
Improvements to the calendar/events module [annando, rabuzarus]
@ -1761,7 +1962,7 @@ Version 3.5 (2016-09-13)
GNU Social Connector [annando]
LDAP [Olivier Mehani]
smileybutton [rabuzarus]
retriver [mexon]
retriever [mexon]
mailstream [mexon]
forumdirectory [tobiasd]
NEW notifyall (port from Hubzilla) [rabuzarus, tobiasd]
@ -1816,7 +2017,7 @@ Version 3.4.3 (2015-12-22)
'Reload active themes' in theme admin page (fabrixxm)
Install routine checks for ImageMagick and GIF support (fabrixxm)
Install routine checks for availability of "mcrypt_create_iv()" function, needed for RINO2 (fabrixxm)
Only suported themes are shown in admin page (annando)
Only supported themes are shown in admin page (annando)
Optimized SQL queries (annando)
System perform an optimize pass on tables in cron, with maximum table size and minimum fragmentation level settings (annando)
New access keys in profile and contact pages (rabuzarus, annando)
@ -1831,9 +2032,9 @@ Version 3.4.3 (2015-12-22)
New hook 'template_vars' (fabrixxm)
$baseurl variable is passed to all templates by default (fabrixxm)
OStatus delivery code is moved in new function (annando)
Doxygen config file and initial documetation of code (rabuzarus)
Doxygen config file and initial documentation of code (rabuzarus)
Full rewrite of util/php2po.php (fabrixxm)
Bugfixs:
Bugfixes:
Remote self works again (annando)
Fix feeds mistakenly recognized as OStatus (issue #1914) (annando)
Report invalid feeds to user (issue #1913) (annando)
@ -1848,8 +2049,8 @@ Version 3.4.3 (2015-12-22)
Fix rapid repeated requests to GNUSocial instance (issue #2038) (annando)
Fix install routine css when mod_rewrite doesn't works (issue #2071) (fabrixxm)
Fix code to be compliant with minimum required PHP version (issue #2066) (fabrixxm, rabuzarus)
Fix feedback after succesfull registration (issue #2060) (annando)
Fix mention completition popup with TinyMCE (issue #1920) (fabrixxm)
Fix feedback after successful registration (issue #2060) (annando)
Fix mention completion popup with TinyMCE (issue #1920) (fabrixxm)
Fix photo cache and proxy when installed in subfolder (ddorian1)
Fix bbcode conversion of the about text for the profile (issue #1607) (annando)
@ -1859,7 +2060,7 @@ Version 3.4.2 (2015-09-29)
Updates to the documentation (tobiasd, silke, annando)
Updates to the translations (tobiasd & translation teams)
Updates to themes frost-mobile, vier, duepuntozero, quattro (annando, tobiasd)
Enancements of the communications via OStatus and Diaspora protocols (annando)
Enhancements of the communications via OStatus and Diaspora protocols (annando)
Option to automatically follow OStatus contacts was moved from addon to the core (annando)
Add tool to import OStatus contacts from an old account (annando)
SALMON slaps with OStatus were reworked (annando)
@ -1876,7 +2077,7 @@ Version 3.4.2 (2015-09-29)
The global directory is queried in the background to update local DB and improve similar searches in the future. (annando)
By communication over the Diaspora protocol, red#matrix sources are now correctly identified, hubzilla is detected (annando)
Adopt limitation of usage of "-" in username to avoid conflicts with GNU Social and Diaspora (annando)
The [url] tag now also suppots ftp, mailto, gopher links (annando)
The [url] tag now also supports ftp, mailto, gopher links (annando)
An "inspect queue" module was added to the admin panel (tobiasd)
Fix some missing SQL data escapes (fabrixxm)
Improved the accessibility of the web UI for better screen reader compatibility (annando)
@ -1904,7 +2105,7 @@ Version 3.4.1 (2015-07-06)
Implement server-to-server encryption (RINO) using php-encryption library as "RINO 2", deprecate "RINO 1" (issue #1655) (fabrixxm)
Fix connection with Diaspora "freelove" account (issue #1572) (annando)
Various SQL speedups (annando)
Port of Javascript DatePicker input from RedMatrix (rabuzarus)
Port of JavaScript DatePicker input from RedMatrix (rabuzarus)
Port of RedMatrix archive widget (rabuzarus)
Load profile owner settings for theme on profile page (rabuzarus)
Move HTML code from php into templates (rabuzarus)
@ -1917,7 +2118,7 @@ Version 3.4.1 (2015-07-06)
use correct contact when automatically add @-replies
add attachment links as enclosures
send salmon notifications to every mentioned person
better thread completition
better thread completion
support for bookmarks
support for events and questions
link to items using GUID
@ -1928,7 +2129,7 @@ Version 3.4.1 (2015-07-06)
Add fake fields to API response for better Twitter API compatibility (annando)
Fix search in local directory (issue #1657) (annando)
Improve OEmbed (issue #1640) (annando)
Fix double html encodig in site administration page for sitename and register text (issue #1628) (annando)
Fix double html encoding in site administration page for sitename and register text (issue #1628) (annando)
Fix remote subscription from GNU Social (annando)
Fix "{0}" in notifications (issue #1642) (annando)
Fix desktop notification (fabrixxm)
@ -1937,7 +2138,7 @@ Version 3.4.1 (2015-07-06)
Fix emoticons alt text (tobias)
Improve threaded display in Vier theme (annando)
Use field templates in photo edit form (fabrixxm)
Alllow deletion of any user but yourself (issue #1625) (fabrixxm)
Allow deletion of any user but yourself (issue #1625) (fabrixxm)
Install wizard load htconfig template from template/ folder, remove localized htconfig templates (fabrixxm)
Add contact detail to non-js contact drop confirm dialog (issue #1629) (fabrixxm)
Return geo coord in API (annando)
@ -1956,7 +2157,7 @@ Version 3.4 (2015-04-05)
Optionally, "like" and "dislike" activities don't update thread timestamp (annando)
Updated markdown libraries (annando)
Updated jQuery (StefOfficiel)
Cache zrl verification requests to prevent DSoS (issue #1453) (annando)
Cache zrl verification requests to prevent DDoS (issue #1453) (annando)
"Verify SSL" options affects also VERIFYHOST (annando)
Better handling of hashtags (annando)
Updated translations (translation teams, tobias)
@ -1994,7 +2195,7 @@ Version 3.3.3 (2015-02-24)
Share-it button support (annando)
More reliable reshare from Diaspora (annando)
Load more images via proxy (annando)
util/typo.php uses "php -l" insead of "eval()" to validate code (fabrixxm)
util/typo.php uses "php -l" instead of "eval()" to validate code (fabrixxm)
Use $_SERVER array in cli script instead of $argv/$argc (issue #1218) (annando)
Updated vagrant setup script (silke)
API: support to star/unstar items (fabrixxm)
@ -2015,7 +2216,7 @@ Version 3.3.3 (2015-02-24)
Version 3.3.2 (2014-12-26)
Set default value for all not-null fields (fixes SQL warinigs) (annando)
Set default value for all not-null fields (fixes SQL warnings) (annando)
Fix item filters in network page (issue #1222) (fabrixxm)
Remove reference to an ex Friendica hub from documentation (beardyunixer, tobiasd)
API throttling (annando)
@ -2061,7 +2262,7 @@ Version 3.3 (2014-10-06)
Interaction
ignoring of threads
for selected contects one can now get notifications when they post something, useful e.g. for forums
for selected contacts one can now get notifications when they post something, useful e.g. for forums
After a new friendica contact is added, the user is directed to the contact page of the new contact. (Instead of the remote profile)
many improvement on all connectors, new app.net connector
the algorithm for shortening postings when posting to limited platforms was improved
@ -2073,7 +2274,7 @@ Version 3.3 (2014-10-06)
updated the following libraries: smarty 3.1.19, fullcalendar 1.6.4, jquery 1.11, jgrowl 1.3.0
added modernizer 2.8.3, better browser support
updates to the DB structure for better performance
preperations to use PDO in a later release
preparations to use PDO in a later release
new notification system
web interface translations updated, addon translations now also possible separately from the main UI and done for CS, IT, RO, DE
vagrant support added for developers
@ -2111,7 +2312,7 @@ Version 3.2
small fixed
edit profile photo link
better caching of pictures
threadening for outgoing emails
threading for outgoing emails
mail import
oembed thumbnails
SN subscriptions & more SN like behaviour if snautofollow addon is used
@ -2131,7 +2332,7 @@ Version 3.2
improving the install.php script
addons now can be members only
item object now contains the "edited" information left for the theme designers to show this info in a pretty way
improvments to the user-import from exported account files
improvements to the user-import from exported account files
It's now possible to authenticate an ejabberd server against friendica.
bugtracker moved to github
improvements to MySQL queries

View File

@ -1,5 +1,5 @@
# How to Contribute
If you want to contribute to the project, you dont need to have coding experience. There are a number of tasks listed in the issue tracker with the label “[Junior Jobs](https://github.com/friendica/friendica/issues?q=is%3Aopen+is%3Aissue+label%3A%22Junior+Jobs%22)” we think are good for new contributors. But you are by no means limited to these if you find a solution to a problem (even a new one) please make a pull request at [github](https://github.com/friendica/friendica) or let us know in the [development forum](https://forum.friendi.ca/profile/developers).
If you want to contribute to the project, you dont need to have coding experience. There are a number of tasks listed in the issue tracker with the label “[Junior Jobs](https://github.com/friendica/friendica/issues?q=is%3Aopen+is%3Aissue+label%3A%22Junior+Jobs%22)” we think are good for new contributors. But you are by no means limited to these if you find a solution to a problem (even a new one) please make a pull request at [github](https://github.com/friendica/friendica) or let us know in the [development group](https://forum.friendi.ca/profile/developers).
Contribution to Friendica is also not limited to coding. Any contribution to the [documentation](https://github.com/friendica/friendica/tree/develop/doc), the [translation](https://www.transifex.com/Friendica/friendica/dashboard/) or advertisement materials is welcome or reporting a problem. You dont need to deal with Git(Hub) or Transifex if you dont like to. Just [get in touch](https://forum.friendi.ca/profile/helpers) with us and we will get the materials to the appropriate places.
Contribution to Friendica is also not limited to coding. Any contribution to the [documentation](https://github.com/friendica/friendica/tree/develop/doc), the [translation](https://app.transifex.com/Friendica/friendica/dashboard/) or advertisement materials is welcome or reporting a problem. You dont need to deal with Git(Hub) or Transifex if you dont like to. Just [get in touch](https://forum.friendi.ca/profile/helpers) with us and we will get the materials to the appropriate places.

View File

@ -38,6 +38,7 @@ aweiher
axelt
balderino
Balázs Úr
Bartosz Małkowski
Beanow
beardyunixer
Beatriz Vital
@ -73,8 +74,11 @@ CrystalStiletto
Cyboulette
Cyryl Sochacki
czarnystokrotek
daingewuvzeevisiddfddd
Damian Wajer
Damien Goutte-Gattat
Daniel Dupriest
Daniel Siepmann
Daria Początek
David
David Martín Miranda
@ -100,6 +104,7 @@ erik
Erkan Yilmaz
Eugene Veresk
Extarys
F1per 3y
Fabian Dost
Fabio Comuni
Farida Khalaf
@ -108,7 +113,7 @@ Filip Bugaj
Filip H.F. "FiXato" Slagter
Finn Dean
FlxAlbroscheit
foss
foss-
Francesco Apruzzese
Frank Dieckmann
Frederico Gonçalves Guimarães
@ -119,10 +124,13 @@ Gidi Kroon
GLComo
greeneyedred
Gregory Smith
Grischa Brockhaus
gudzpoz
GunChleoc
guzzisti
Haakon Meland Eriksen
Hank Grabowski
Hannes Heute
Hans Meine
Hauke
Hauke Altmann
@ -135,7 +143,7 @@ Ilmari
ImgBotApp
irhen
Jakob
Jakobus Schürz (admin)
Jakob Schürz
Jens Tautenhahn
jensp
Jeroen De Meerleer
@ -150,6 +158,7 @@ John Mortensen
Jonatan Nyberg
Jonny Tischbein
Josef Moravek
Josh Soref
juanman
julia.domagalska
Julio Cova
@ -164,6 +173,7 @@ Koyu Berteon
kPherox
Kris
Kristoffer Grundström
KulikAlex
Lea1995polish
Leberwurscht
Leonard Lausen
@ -175,10 +185,13 @@ Ludovic Grossard
Lynn Stephenson
maase2
Mai Anh Nguyen
Makary
Manuel Pérez Monís
Marcin Klessa
Marcin Mikołajczak
Marcus Müller
Marek Bachmann
MarekBenjamin
Marie Olive
Mariusz Pisz
marmor
@ -203,6 +216,7 @@ mytbk
nathilia-peirce
Nicola Spanti
Nicolas Derive
nnsrymni
nobody
nupplaPhil
Olaf Conradi
@ -216,10 +230,12 @@ pankraz
Paolo Wave
Pascal
Pascal Deklerck
Paul Saunders
Pavel Morozov
PerigGouanvic
peter
Peter Liebetrau
Petr Kučera
peturisfeld
Phigger Phigger
Philipp
@ -237,7 +253,7 @@ Rafael Kalachev
Rain Hawk
Rainulf Pineda
Ralf Thees
Ralph
ralph van der honing
Ratten
rcmaniac
RealKinetix
@ -250,12 +266,15 @@ Rik 4
RJ Madsen
Roger Meyer
Roland Häder
Ruud Schilders
rwa
Ryan Voots
S.Krumbholz
Sakałoŭ Alaksiej
Sam
Samuli Valavuo
Sandro Santilli
Schnoop
Sebastian Egbers
sella
Senex Petrovic
@ -287,6 +306,7 @@ teho
Thecross
Thomas
Thomas Willingham
Thorsten
thorsten23
Till Mohr
Tim Stahel
@ -318,7 +338,6 @@ very-ape
Viktor Nilsson
Vinzenz Vietzke
vislav
vladimir N
Vladimir Núñez
VVelox
Vít Šesták 'v6ak'
@ -329,6 +348,7 @@ Wil Tur
Wouter Broers
Xiaofei Xu
XMPPはいいぞ
xundeenergie
Yasen Pramatarov
Yasmine A
ylms

View File

@ -1,46 +1,29 @@
Friendica Social Communications Server
======================================
Friendica - your open and free social network
=============================================
Welcome to the free social web.
Welcome to the free social web. Friendica is a platform for decentralised social communication linking to other independent social and corporate services.
Friendica is a decentralised communications platform that integrates social communication. Our platform links to independent social projects and corporate services.
Friendica connects you to a federated communications network of thousands of servers called the Fediverse. Through various protocols you can interact with anyone on [Friendica]( https://friendi.ca), [Mastodon](https://joinmastodon.org), [Lemmy](https://join-lemmy.org/), [Diaspora](https://diasporafoundation.org), [Misskey](https://join.misskey.page), [Peertube](https://joinpeertube.org/), [Pixelfed](https://pixelfed.org/), [Pleroma](https://pleroma.social) and many more. Receiving content from Tumblr, Wordpress and RSS is also possible. Friendica allows to import and mirror your content via add-ons such as ITTT and Buffer. You can customize and control how publicly or privately you want to share your content.
Our mission is to free friends, family and colleagues from data-harvesting corporations; we aim for social communication to be free and open, while flowing between any provider as easily as email does.
Being part of the Fediverse allows you to be free from data-harvesting corporations. Enjoy open social communication, independent of any specific provider.
Friendica connects you effortlessly to a federated communications network of several thousand servers, with more than half a million user registrations. You can directly connect to anyone on [Friendica]( https://friendi.ca), [Mastodon](https://joinmastodon.org/), [Diaspora](https://diasporafoundation.org/), [GnuSocial](https://gnu.io/social/), [Pleroma](https://pleroma.social/), or [Hubzilla](https://hubzilla.org/), regardless where each user profile is hosted.
[Join Friendica](https://dir.friendica.social/servers) today or setup [your own Friendica instance](doc/Install.md).
With Friendica, you can also fully interact with anyone on Twitter, post on Facebook and receive any content on Tumblr, Wordpress or RSS. Friendica allows you to integrate most things on the web via a range of addons such as ITTT, Buffer; you will be able to easily control your own data as you decide.
### Friendica on desktop
Join today and [get your Friendica profile!](https://dir.friendica.social/servers 'Join Friendica today!')
![Frio theme in desktop browser](images/screenshots/friendica-2023-10-frio-desktop.png?raw=true "Frio theme in desktop browser")
Have a look at the [installation documentation](doc/Install.md) for further information about installing and using Friendica.
### Friendica on mobile
### Friendica Screenshots
<p float="left">
<img src ="https://github.com/friendica/friendica/blob/2023.09-rc/images/screenshots/friendica-2023-10-frio-mobile-timeline-dark-blue.png" width="370" alt="frio on mobile, dark color scheme">
<img src="https://github.com/friendica/friendica/blob/2023.09-rc/images/screenshots/friendica-2023-10-frio-mobile-options-light-blue.png" width="370" alt="frio on mobile, light color scheme">
</p>
| ![Frio theme in mobile browser](images/screenshots/friendica-frio-mobile-profle-1.png?raw=true "Frio theme in mobile browser") ![Frio theme in mobile browser](images/screenshots/friendica-frio-mobile-profle-2.png?raw=true "Frio theme in mobile browser")
|:--:|
|*Frio theme, mobile browser. Timeline and composer view.*|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-green-profle-1.png?raw=true "Frio theme in desktop browser")
|*Frio theme, desktop browser. Timeline view, contact info popped up, control menu open.*|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-green-profle-2.png?raw=true "Frio theme in desktop browser")
|*Frio theme, desktop browser. Menu open for controlling individual posts.*|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-red-profle-3.png?raw=true "Frio theme in desktop browser")
|*Frio theme, desktop browser. Profile view, notification menu open.*|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-red-profle-2.png?raw=true "Frio theme in desktop browser")
|*Number of new posts, in total and by group.*|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-red-profle-1.png?raw=true "Frio theme in desktop browser")
|*Calender with popup of event.*|
|![Frio theme default colour in standard browser on tablet](images/screenshots/friendica-frio-default-profile-1.png?raw=true "Frio theme default colour in standard browser on tablet")
|*Notifications menu and private messages counter, standard browser on tablet.*|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-brown-profile-2.png?raw=true "Frio theme in desktop browser")
|*Number of visible contacts, standard browser.*|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-brown-profile-1.png?raw=true "Frio theme in desktop browser")
|*Network posts chronologically ordered, standard browser.*|
|![Vier theme in desktop browser](images/screenshots/friendica-vier-profile.png?raw=true "Vier theme in desktop browser")
|*Vier theme, desktop browser. Public timeline view.*|
|![Vier theme in desktop browser](images/screenshots/friendica-vier-community.png?raw=true "Vier theme in desktop browser")
|*Vier theme, desktop browser. Community post displayed.*|
### Alternative Theme "Vier"
![Vier theme in desktop browser](images/screenshots/friendica-vier-community.png?raw=true "Vier theme in desktop browser")
## Endorsements
- [![Awesome Humane Tech](images/humane-tech-badge.svg)](https://github.com/humanetech-community/awesome-humane-tech) On August 12th 2020, Friendica was added to [the curated Awesome Humane Tech directory](https://github.com/humanetech-community/awesome-humane-tech) in [the "Fediverse" category](https://github.com/humanetech-community/awesome-humane-tech#fediverse).
- [![Awesome Humane Tech](images/humane-tech-badge.svg)](https://codeberg.org/teaserbot-labs/delightful-humane-design) In August 2020 Friendica was added to the curated delightful humane design resources in the [Fediverse category](https://codeberg.org/teaserbot-labs/delightful-humane-design#fediverse).

View File

@ -1 +1 @@
2022.12-dev
2023.09-rc

View File

@ -1,7 +1,7 @@
#!/usr/bin/env php
<?php
/**
* @copyright Copyright (C) 2010-2022, the Friendica project
* @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
@ -58,6 +58,7 @@ if (php_sapi_name() !== 'cli') {
use Dice\Dice;
use Friendica\App\Mode;
use Friendica\Core\Logger\Capability\LogChannel;
use Friendica\Security\ExAuth;
use Psr\Log\LoggerInterface;
@ -78,10 +79,17 @@ chdir($directory);
require dirname(__DIR__) . '/vendor/autoload.php';
$dice = (new Dice())->addRules(include __DIR__ . '/../static/dependencies.config.php');
$dice = $dice->addRule(LoggerInterface::class,['constructParams' => ['auth_ejabberd']]);
/** @var \Friendica\Core\Addon\Capability\ICanLoadAddons $addonLoader */
$addonLoader = $dice->create(\Friendica\Core\Addon\Capability\ICanLoadAddons::class);
$dice = $dice->addRules($addonLoader->getActiveAddonConfig('dependencies'));
$dice = $dice->addRule(LoggerInterface::class,['constructParams' => [LogChannel::AUTH_JABBERED]]);
\Friendica\DI::init($dice);
\Friendica\Core\Logger\Handler\ErrorHandler::register($dice->create(\Psr\Log\LoggerInterface::class));
// Check the database structure and possibly fixes it
\Friendica\Core\Update::check(\Friendica\DI::basePath(), true);
$appMode = $dice->create(Mode::class);
if ($appMode->isNormal()) {

View File

@ -3,7 +3,7 @@
dir=$(cd "${0%[/\\]*}" > /dev/null; pwd)
if [[ -d /proc/cygdrive && $(which php) == $(readlink -n /proc/cygdrive)/* ]]; then
# We are in Cgywin using Windows php, so the path must be translated
# We are in Cygwin using Windows php, so the path must be translated
dir=$(cygpath -m "$dir");
fi

View File

@ -1,7 +1,7 @@
#!/usr/bin/env php
<?php
/**
* @copyright Copyright (C) 2010-2022, the Friendica project
* @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
@ -26,13 +26,17 @@ if (php_sapi_name() !== 'cli') {
}
use Dice\Dice;
use Friendica\Core\Logger\Capability\LogChannel;
use Friendica\DI;
use Psr\Log\LoggerInterface;
require dirname(__DIR__) . '/vendor/autoload.php';
$dice = (new Dice())->addRules(include __DIR__ . '/../static/dependencies.config.php');
$dice = $dice->addRule(LoggerInterface::class,['constructParams' => ['console']]);
/** @var \Friendica\Core\Addon\Capability\ICanLoadAddons $addonLoader */
$addonLoader = $dice->create(\Friendica\Core\Addon\Capability\ICanLoadAddons::class);
$dice = $dice->addRules($addonLoader->getActiveAddonConfig('dependencies'));
$dice = $dice->addRule(LoggerInterface::class, ['constructParams' => [LogChannel::CONSOLE]]);
/// @fixme Necessary until Hooks inside the Logger can get loaded without the DI-class
DI::init($dice);

View File

@ -1,7 +1,7 @@
#!/usr/bin/env php
<?php
/**
* @copyright Copyright (C) 2010-2022, the Friendica project
* @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
@ -33,6 +33,7 @@ if (php_sapi_name() !== 'cli') {
use Dice\Dice;
use Friendica\App\Mode;
use Friendica\Core\Logger;
use Friendica\Core\Update;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
use Friendica\DI;
@ -59,11 +60,13 @@ if (!file_exists('index.php') && (sizeof($_SERVER['argv']) != 0)) {
require dirname(__DIR__) . '/vendor/autoload.php';
$dice = (new Dice())->addRules(include __DIR__ . '/../static/dependencies.config.php');
$dice = $dice->addRule(LoggerInterface::class,['constructParams' => ['daemon']]);
/** @var \Friendica\Core\Addon\Capability\ICanLoadAddons $addonLoader */
$addonLoader = $dice->create(\Friendica\Core\Addon\Capability\ICanLoadAddons::class);
$dice = $dice->addRules($addonLoader->getActiveAddonConfig('dependencies'));
$dice = $dice->addRule(LoggerInterface::class, ['constructParams' => [Logger\Capability\LogChannel::DAEMON]]);
DI::init($dice);
\Friendica\Core\Logger\Handler\ErrorHandler::register($dice->create(\Psr\Log\LoggerInterface::class));
$a = DI::app();
if (DI::mode()->isInstall()) {
die("Friendica isn't properly installed yet.\n");
@ -71,13 +74,13 @@ if (DI::mode()->isInstall()) {
DI::mode()->setExecutor(Mode::DAEMON);
DI::config()->load();
DI::config()->reload();
if (empty(DI::config()->get('system', 'pidfile'))) {
die(<<<TXT
Please set system.pidfile in config/local.config.php. For example:
'system' => [
'system' => [
'pidfile' => '/path/to/daemon.pid',
],
TXT
@ -115,7 +118,7 @@ if (is_readable($pidfile)) {
}
if (empty($pid) && in_array($mode, ['stop', 'status'])) {
DI::config()->set('system', 'worker_daemon_mode', false);
DI::keyValue()->set('worker_daemon_mode', false);
die("Pidfile wasn't found. Is the daemon running?\n");
}
@ -126,7 +129,7 @@ if ($mode == 'status') {
unlink($pidfile);
DI::config()->set('system', 'worker_daemon_mode', false);
DI::keyValue()->set('worker_daemon_mode', false);
die("Daemon process $pid isn't running.\n");
}
@ -137,7 +140,7 @@ if ($mode == 'stop') {
Logger::notice('Worker daemon process was killed', ['pid' => $pid]);
DI::config()->set('system', 'worker_daemon_mode', false);
DI::keyValue()->set('worker_daemon_mode', false);
die("Worker daemon process $pid was killed.\n");
}
@ -181,7 +184,7 @@ if (!$foreground) {
DBA::connect();
}
DI::config()->set('system', 'worker_daemon_mode', true);
DI::keyValue()->set('worker_daemon_mode', true);
// Just to be sure that this script really runs endlessly
set_time_limit(0);
@ -193,6 +196,9 @@ $last_cron = 0;
// Now running as a daemon.
while (true) {
// Check the database structure and possibly fixes it
Update::check(DI::basePath(), true);
if (!$do_cron && ($last_cron + $wait_interval) < time()) {
Logger::info('Forcing cron worker call.', ['pid' => $pid]);
$do_cron = true;
@ -244,5 +250,6 @@ while (true) {
}
function shutdown() {
posix_kill(posix_getpid(), SIGTERM);
posix_kill(posix_getpid(), SIGHUP);
}

View File

@ -46,7 +46,7 @@ function show_syntax() {
echo -e "\t\"testfile\" is the name of a test file, for example lib/template.php" >&2
echo -e "\nDatabase environment variables:\n" >&2
echo -e "\t\"MYSQL_HOST\" Mysql Hostname (Default: localhost)" >&2
echo -e "\t\"MYSQL_USDRNAME\" Mysql Username (Default: friendica)" >&2
echo -e "\t\"MYSQL_USERNAME\" Mysql Username (Default: friendica)" >&2
echo -e "\t\"MYSQL_DATABASE\" Mysql Database (Default: test)" >&2
echo -e "\nOther environment variables:\n" >&2
echo -e "\t\"TEST_SELECTION\" test a specific group of tests, can be one of: $TESTS" >&2
@ -65,7 +65,7 @@ else
exit 3
fi
echo "Installing depdendencies"
echo "Installing dependencies"
${PHP} "$COMPOSER" install
PHPUNIT="${BASEDIR}/vendor/bin/phpunit"

View File

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2022, the Friendica project
* @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View File

@ -1,7 +1,7 @@
#!/usr/bin/php
<?php
/**
* @copyright Copyright (C) 2010-2022, the Friendica project
* @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View File

@ -1,7 +1,7 @@
#!/usr/bin/env php
<?php
/**
* @copyright Copyright (C) 2010-2022, the Friendica project
* @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
@ -29,6 +29,7 @@ if (php_sapi_name() !== 'cli') {
use Dice\Dice;
use Friendica\App;
use Friendica\App\Mode;
use Friendica\Core\Logger\Capability\LogChannel;
use Friendica\Core\Update;
use Friendica\Core\Worker;
use Friendica\DI;
@ -54,24 +55,24 @@ if (!file_exists("index.php") && (sizeof($_SERVER["argv"]) != 0)) {
require dirname(__DIR__) . '/vendor/autoload.php';
$dice = (new Dice())->addRules(include __DIR__ . '/../static/dependencies.config.php');
$dice = $dice->addRule(LoggerInterface::class,['constructParams' => ['worker']]);
/** @var \Friendica\Core\Addon\Capability\ICanLoadAddons $addonLoader */
$addonLoader = $dice->create(\Friendica\Core\Addon\Capability\ICanLoadAddons::class);
$dice = $dice->addRules($addonLoader->getActiveAddonConfig('dependencies'));
$dice = $dice->addRule(LoggerInterface::class, ['constructParams' => [LogChannel::WORKER]]);
DI::init($dice);
\Friendica\Core\Logger\Handler\ErrorHandler::register($dice->create(\Psr\Log\LoggerInterface::class));
$a = DI::app();
DI::mode()->setExecutor(Mode::WORKER);
// Check the database structure and possibly fixes it
Update::check($a->getBasePath(), true, DI::mode());
Update::check(DI::basePath(), true);
// Quit when in maintenance
if (!DI::mode()->has(App\Mode::MAINTENANCEDISABLED)) {
return;
}
DI::baseUrl()->saveByURL(DI::config()->get('system', 'url'));
$spawn = array_key_exists('s', $options) || array_key_exists('spawn', $options);
if ($spawn) {

View File

@ -24,15 +24,19 @@
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
"ext-posix": "*",
"ext-simplexml": "*",
"ext-xml": "*",
"asika/simple-console": "^1.0",
"bacon/bacon-qr-code": "^2.0.0",
"divineomega/password_exposed": "^2.8",
"enyo/dropzone": "^5.9",
"ezyang/htmlpurifier": "^4.7",
"friendica/json-ld": "^1.0",
"geekwright/po": "^2.0",
"guzzlehttp/guzzle": "^6.5",
"guzzlehttp/oauth-subscriber": "^0.6",
"kornrunner/blurhash": "^1.2",
"league/html-to-markdown": "^4.8",
"level-2/dice": "^4",
"lightopenid/lightopenid": "dev-master",
@ -45,9 +49,10 @@
"paragonie/hidden-string": "^1.0",
"patrickschur/language-detection": "^5.0.0",
"pear/console_table": "^1.3",
"phpseclib/phpseclib": "^2.0",
"phpseclib/phpseclib": "^3.0",
"pragmarx/google2fa": "^5.0",
"pragmarx/recovery": "^0.2",
"psr/clock": "^1.0",
"psr/container": "^1.0",
"psr/log": "^1.1",
"seld/cli-prompt": "^1.0",
@ -72,6 +77,12 @@
"npm-asset/textcomplete": "^0.18.2",
"npm-asset/typeahead.js": "^0.11.1"
},
"suggest": {
"ext-imagick": "For faster image processing",
"ext-redis": "To use Redis as a locking or caching provider",
"ext-pdo": "To use PDO as a database driver, has priority over mysqli unless database.disable_pdo is set",
"ext-mysqli": "To use mysqli as a databse driver"
},
"repositories": [
{
"type": "vcs",
@ -129,8 +140,15 @@
"scripts": {
"test": "phpunit",
"lint": "find . -name \\*.php -not -path './vendor/*' -not -path './view/asset/*' -print0 | xargs -0 -n1 php -l",
"docker:translate": "docker run --rm -v $PWD:/data -w /data friendicaci/transifex bin/run_xgettext.sh",
"cs:install": "@composer install --working-dir=bin/dev/php-cs-fixer",
"cs:check": ["@cs:install", "bin/dev/php-cs-fixer/vendor/bin/php-cs-fixer fix --dry-run --diff"],
"cs:fix": ["@cs:install", "bin/dev/php-cs-fixer/vendor/bin/php-cs-fixer fix"]
"cs:check": [
"@cs:install",
"bin/dev/php-cs-fixer/vendor/bin/php-cs-fixer fix --dry-run --diff"
],
"cs:fix": [
"@cs:install",
"bin/dev/php-cs-fixer/vendor/bin/php-cs-fixer fix"
]
}
}

552
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +0,0 @@
<?php
// Addon configuration
// Copy this configuration file to addon.config.php and edit it if you want to configure addons, see below example for the twitter addon
return [
'twitter' => [
'consumerkey' => '1234567890',
'consumersecret' => 'ABCDEFGHIJKLMONPQRSTUVWXYZ',
],
];

View File

@ -40,5 +40,6 @@ return [
'system' => [
'default_timezone' => 'UTC',
'language' => 'en',
'url' => 'https://friendica.local',
],
];

File diff suppressed because it is too large Load Diff

View File

@ -454,7 +454,7 @@ Ex: Wed May 23 06:01:13 +0000 2007
<tr>
<td><code>allow_gid</code></td>
<td>String (angle-brackets escaped integers)</td>
<td>Optional. List of allowed group ids</td>
<td>Optional. List of allowed circle ids</td>
</tr>
<tr>
@ -466,7 +466,7 @@ Ex: Wed May 23 06:01:13 +0000 2007
<tr>
<td><code>deny_gid</code></td>
<td>String (angle-brackets escaped integers)</td>
<td>Optional. List of disallowed group ids</td>
<td>Optional. List of disallowed circle ids</td>
</tr>
</tbody>
@ -583,7 +583,7 @@ Ex: Wed May 23 06:01:13 +0000 2007
<tr>
<td><code>friendica_owner</code></td>
<td>
<a href="help/API-Entities#Contact">Contact</a></td>
<td align="center">No</td>
</tr>
@ -908,6 +908,13 @@ Identical to [the Twitter Media Object](https://developer.twitter.com/en/docs/tw
<td>Resource ID (32 hex chars)</td>
</tr>
<tr>
<td><code>media-id</code></td>
<td>String (Integer) </td>
<td>ID used for attaching images to a Mastodon Post Status</td>
</tr>
<tr>
<td><code>created</code></td>
<td>String (Date)</td>
@ -977,7 +984,7 @@ Identical to [the Twitter Media Object](https://developer.twitter.com/en/docs/tw
<tr>
<td><code>allow_gid</code></td>
<td>String (ACL)</td>
<td>List of contact group ids wrapped in angle brackets allowed to access the photo.</td>
<td>List of contact circle ids wrapped in angle brackets allowed to access the photo.</td>
</tr>
<tr>
@ -989,7 +996,7 @@ Identical to [the Twitter Media Object](https://developer.twitter.com/en/docs/tw
<tr>
<td><code>deny_gid</code></td>
<td>String (ACL)</td>
<td>List of contact group ids wrapped in angle brackets forbidden to access the photo.</td>
<td>List of contact circle ids wrapped in angle brackets forbidden to access the photo.</td>
</tr>
<tr>
@ -1001,6 +1008,14 @@ Mutually exclusive with <code>data</code> <code>datasize</code>.
</td>
</tr>
<tr>
<td><code>scales</code></td>
<td>Array of Photo Scales</td>
<td>
List of the various resized versions of the Photo
</td>
</tr>
<tr>
<td><code>datasize</code></td>
<td>Integer</td>
@ -1040,6 +1055,58 @@ Mutually exclusive with <code>link</code>.
</tbody>
</table>
## Photo Scale
<table class="table table-condensed table-striped table-bordered">
<thead>
<tr>
<th>Attribute</th>
<th>Type</th>
<th align="center">Nullable</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>id</code></td>
<td>String (Integer)</td>
<td>Row ID of this photo scale</td>
</tr>
<tr>
<td><code>scale</code></td>
<td>Integer</td>
<td>Scale number</td>
</tr>
<tr>
<td><code>link</code></td>
<td>String (URL)</td>
<td>URL to this scale's image</td>
</tr>
<tr>
<td><code>height</code></td>
<td>Integer</td>
<td>Image height in pixels</td>
</tr>
<tr>
<td><code>width</code></td>
<td>Integer</td>
<td>Image width in pixels</td>
</tr>
<tr>
<td><code>size</code></td>
<td>Integer</td>
<td>Image size in bytes</td>
</tr>
</tbody>
</table>
## Photo List Item
<table class="table table-condensed table-striped table-bordered">
@ -1103,6 +1170,40 @@ Mutually exclusive with <code>link</code>.
</tbody>
</table>
## Photo Album
<table class="table table-condensed table-striped table-bordered">
<thead>
<tr>
<th>Attribute</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>name</code></td>
<td>String</td>
<td>The name of the photo album</td>
</tr>
<tr>
<td><code>created</code></td>
<td>String (Date)</td>
<td>The creation date of the album. Format <code>YYYY-MM-DD HH:MM:SS</code></td>
</tr>
<tr>
<td><code>count</code></td>
<td>Integer</td>
<td>The number of images in the album</td>
</tr>
</tbody>
</table>
## Private message
<table class="table table-condensed table-striped table-bordered">
@ -1440,4 +1541,4 @@ Unused
## User Mention
Unused
Unused

View File

@ -39,8 +39,8 @@ Create a new event for the current logged in user.
- `publish` : (optional) create message for event
- `allow_cid` : (optional) ACL-formatted list of allowed contact ids if private event
- `allow_gid` : (optional) ACL-formatted list of disallowed contact ids if private event
- `deny_cid` : (optional) ACL-formatted list of allowed group ids if private event
- `deny_gid` : (optional) ACL-formatted list of disallowed group ids if private event
- `deny_cid` : (optional) ACL-formatted list of allowed circle ids if private event
- `deny_gid` : (optional) ACL-formatted list of disallowed circle ids if private event
### POST api/friendica/event_delete
@ -135,7 +135,7 @@ Alias of [`api/conversation/show`](#GET+api%2Fconversation%2Fshow).
### GET api/statusnet/config
Returns the public Friendica node configuration.
Returns the public Friendica node configuration.
### GET api/gnusocial/config
@ -163,7 +163,7 @@ Add or remove an activity from an item.
* `attendmaybe`
To remove an activity, prepend the verb with "un", eg. "unlike" or "undislike"
Attend verbs disable eachother: that means that if "attendyes" was added to an item, adding "attendno" remove previous "attendyes".
Attend verbs disable each other: that means that if "attendyes" was added to an item, adding "attendno" remove previous "attendyes".
Attend verbs should be used only with event-related items (there is no check at the moment).
#### Parameters
@ -305,7 +305,7 @@ Returns [Private Messages](help/API-Entities#Private+message) matching the provi
#### Parameters
* `searchstring`: string for which the API call should search as '%searchstring%' in field 'body' of all messages of the authenticated user (caption ignored)
* `getText` (optional): `plain`|`html` If ommited, the title is prepended to the plaintext body in the `text` attribute of the private message objects.
* `getText` (optional): `plain`|`html` If omitted, the title is prepended to the plaintext body in the `text` attribute of the private message objects.
* `getUserObjects` (optional): `true`|`false` If `false`, the `sender` and `recipient` attributes of the private message object are absent.
#### Return values
@ -323,33 +323,37 @@ On error:
---
### GET api/friendica/group_show
### GET api/friendica/circle_show
Return all or a specified group of the user with the containing contacts as array.
Alternatively: GET api/friendica/group_show (Backward compatibility)
Return all or a specified circle of the user with the containing contacts as array.
#### Parameters
* `gid`: optional, if not given, API returns all groups of the user
* `gid`: optional, if not given, API returns all circles of the user
#### Return values
Array of:
* `name`: name of the group
* `gid`: id of the group
* `name`: name of the circle
* `gid`: id of the circle
* `user`: array of [Contacts](help/API-Entities#Contact)
### POST api/friendica/group_create
### POST api/friendica/circle_create
Create the group with the posted array of contacts as members.
Alternatively: POST api/friendica/group_create
Create the circle with the posted array of contacts as members.
#### Parameters
* `name`: name of the group to be created
* `name`: name of the circle to be created
#### POST data
JSON data as Array like the result of [GET api/friendica/group_show](#GET+api%2Ffriendica%2Fgroup_show):
JSON data as Array like the result of [GET api/friendica/circle_show](#GET+api%2Ffriendica%2Fcircle_show):
* `gid`
* `name`
@ -360,23 +364,25 @@ JSON data as Array like the result of [GET api/friendica/group_show](#GET+api%2F
Array of:
* `success`: true if successfully created or reactivated
* `gid`: gid of the created group
* `name`: name of the created group
* `gid`: gid of the created circle
* `name`: name of the created circle
* `status`: "missing user" | "reactivated" | "ok"
* `wrong users`: array of users, which were not available in the contact table
### POST api/friendica/group_update
### POST api/friendica/circle_update
Update the group with the posted array of contacts as members (post all members of the group to the call; function will remove members not posted).
Alternatively: POST api/friendica/group_update
Update the circle with the posted array of contacts as members (post all members of the circle to the call; function will remove members not posted).
#### Parameters
* `gid`: id of the group to be changed
* `name`: name of the group to be changed
* `gid`: id of the circle to be changed
* `name`: name of the circle to be changed
#### POST data
JSON data as array like the result of [GET api/friendica/group_show](#GET+api%2Ffriendica%2Fgroup_show):
JSON data as array like the result of [GET api/friendica/circle_show](#GET+api%2Ffriendica%2Fcircle_show):
* `gid`
* `name`
@ -387,27 +393,29 @@ JSON data as array like the result of [GET api/friendica/group_show](#GET+api%2F
Array of:
* `success`: true if successfully updated
* `gid`: gid of the changed group
* `name`: name of the changed group
* `gid`: gid of the changed circle
* `name`: name of the changed circle
* `status`: "missing user" | "ok"
* `wrong users`: array of users, which were not available in the contact table
### POST api/friendica/group_delete
### POST api/friendica/circle_delete
Delete the specified group of contacts; API call need to include the correct gid AND name of the group to be deleted.
Alternatively: POST api/friendica/group_delete
Delete the specified circle of contacts; API call need to include the correct gid AND name of the circle to be deleted.
#### Parameters
* `gid`: id of the group to be deleted
* `name`: name of the group to be deleted
* `gid`: id of the circle to be deleted
* `name`: name of the circle to be deleted
#### Return values
Array of:
* `success`: true if successfully deleted
* `gid`: gid of the deleted group
* `name`: name of the deleted group
* `gid`: gid of the deleted circle
* `name`: name of the deleted circle
* `status`: "deleted" if successfully deleted
* `wrong users`: empty array
@ -556,7 +564,7 @@ Alias of [`api/friendica/photo/update`](#POST+api%2Ffriendica%2Fphoto%2Fupdate)
Saves data for the scales 0-2 to database (see above for scale description).
Call adds non-public entries to items table to enable authenticated contacts to comment/like the photo.
Client should pay attention to the fact that updated access rights are not transferred to the contacts. i.e. public photos remain publicly visible if they have been commented/liked before setting visibility back to a limited group.
Client should pay attention to the fact that updated access rights are not transferred to the contacts. i.e. public photos remain publicly visible if they have been commented/liked before setting visibility back to a limited circle.
Currently it is best to inform user that updating rights is not the right way to do this, and offer a solution to add photo as a new photo with the new rights instead.
#### Parameters
@ -604,7 +612,7 @@ Sets item table entries for this photo to deleted = 1.
On success:
* JSON return
* JSON return
```json
{
@ -633,7 +641,7 @@ Deletes all images with the specified album name, is not reversible -> ensure th
On success:
* JSON return
* JSON return
```json
{
@ -646,7 +654,7 @@ On error:
* 403 FORBIDDEN: if not authenticated
* 400 BADREQUEST: "no albumname specified", "album not available"
* 500 INTERNALSERVERERROR: "problem with deleting item occured", "unknown error - deleting from database failed"
* 500 INTERNALSERVERERROR: "problem with deleting item occurred", "unknown error - deleting from database failed"
### POST api/friendica/photoalbum/update
@ -665,8 +673,8 @@ On success:
```json
{
"result": "updated",
"message":"album 'abc' with all containing photos has been renamed to 'xyz'."
"result": "updated",
"message":"album 'abc' with all containing photos has been renamed to 'xyz'."
}
```
@ -676,8 +684,92 @@ On error:
* 400 BADREQUEST: "no albumname specified", "no new albumname specified", "album not available"
* 500 INTERNALSERVERERROR: "unknown error - updating in database failed"
### GET api/friendica/photoalbums
Get a list of photo albums for the user
#### Parameters
None
#### Return values
On success a list of photo album objects:
```json
[
{
"name": "Wall Photos",
"created": "2023-01-22 02:03:19",
"count": 4
},
{
"name": "Profile photos",
"created": "2022-11-20 14:40:06",
"count": 1
}
]
```
### GET api/friendica/photoalbum
Get a list of images in a photo album
#### Parameters
* `album` (Required): name of the album to be deleted
* `limit` (Optional): Maximum number of items to get, defaults to 50, max 500
* `offset`(Optional): Offset in results to page through total items, defaults to 0
* `latest_first` (Optional): Reverse the order so the most recent images are first, defaults to false
#### Return values
On success:
* JSON return with the list of Photo items
**Example:**
`https://<server>/api/friendica/photoalbum?album=Wall Photos&limit=10&offset=2`
```json
[
{
"created": "2023-02-14 14:31:06",
"edited": "2023-02-14 14:31:14",
"title": "",
"desc": "",
"album": "Wall Photos",
"filename": "image.png",
"type": "image/png",
"height": 835,
"width": 693,
"datasize": 119523,
"profile": 0,
"allow_cid": "",
"deny_cid": "",
"allow_gid": "",
"deny_gid": "",
"id": "899184972463eb9b2ae3dc2580502826",
"scale": 0,
"media-id": 52,
"scales": [
{
"id": 52,
"scale": 0,
"link": "https://<server>/photo/899184972463eb9b2ae3dc2580502826-0.png",
"width": 693,
"height": 835,
"size": 119523
},
...
],
"thumb": "https://<server>/photo/899184972463eb9b2ae3dc2580502826-2.png"
},
...
]
```
---
### GET api/friendica/profile/show
Returns the [Profile](help/API-Entities#Profile) data of the authenticated user.
@ -715,6 +807,129 @@ General description of profile data in API returns:
---
### POST api/friendica/statuses/:id/dislike
Marks the given status as disliked by this user
#### Path Parameter
* `id`: the status ID that is being marked
#### Return values
A Mastodon [Status Entity](https://docs.joinmastodon.org/entities/Status/)
#### Example:
`https://<server_name>/api/friendica/statuses/341/dislike`
```json
{
"id": "341",
"created_at": "2023-02-23T01:50:00.000Z",
"in_reply_to_id": null,
"in_reply_to_status": null,
"in_reply_to_account_id": null,
"sensitive": false,
"spoiler_text": "",
"visibility": "public",
"language": "en",
...
"account": {
"id": "8",
"username": "testuser2",
...
},
"media_attachments": [],
"mentions": [],
"tags": [],
"emojis": [],
"card": null,
"poll": null,
"friendica": {
"title": "",
"dislikes_count": 1,
"disliked": true
}
}
```
### GET api/friendica/statuses/:id/disliked_by
Returns the list of accounts that have disliked the status as known by the current server
#### Path Parameter
* `id`: the status ID that is being marked
#### Return values
A list of [Mastodon Account](https://docs.joinmastodon.org/entities/Account/) objects
in the body and next/previous link headers in the header
#### Example:
`https://<server_name>/api/friendica/statuses/341/disliked_by`
```json
[
{
"id": "6",
"username": "testuser1",
...
}
]
```
### POST api/friendica/statuses/:id/undislike
Removes the dislike mark (if it exists) on this status for this user
#### Path Parameter
* `id`: the status ID that is being marked
#### Return values
A Mastodon [Status Entity](https://docs.joinmastodon.org/entities/Status/)
#### Example:
`https://<server_name>/api/friendica/statuses/341/undislike`
```json
{
"id": "341",
"created_at": "2023-02-23T01:50:00.000Z",
"in_reply_to_id": null,
"in_reply_to_status": null,
"in_reply_to_account_id": null,
"sensitive": false,
"spoiler_text": "",
"visibility": "public",
"language": "en",
...
"account": {
"id": "8",
"username": "testuser2",
...
},
"media_attachments": [],
"mentions": [],
"tags": [],
"emojis": [],
"card": null,
"poll": null,
"friendica": {
"title": "",
"dislikes_count": 0,
"disliked": false
}
}
```
---
## Deprecated endpoints
- POST api/statuses/mediap

View File

@ -30,6 +30,101 @@ For supported apps please have a look at the [FAQ](help/FAQ#clients)
## Entities
These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/entities/).
With some additional extensions listed below.
### Instance (Version 2) Entities
Extensions to the [Mastodon Instance::V2 Entities](https://docs.joinmastodon.org/entities/Instance/)
* `friendica`: Friendica specific properties of the V2 Instance including:
* `version`: The Friendica version string
* `codename`: The Friendica version code name
* `db_version`: The database schema version number
Example:
```json
{
"domain": "friendicadevtest1.myportal.social",
"title": "Friendica Social Network",
"version": "2.8.0 (compatible; Friendica 2023.03-dev)",
...
"friendica": {
"version": "2023.03-dev",
"codename": "Giant Rhubarb",
"db_version": 1516
}
}
```
### Notification Entities
Extensions to the [Mastodon Notification Entities](https://docs.joinmastodon.org/entities/Notification/)
* `dismissed`: whether the object has been dismissed or not
### Status Entities
Extensions to the [Mastodon Status Entities](https://docs.joinmastodon.org/entities/Status/)
* `in_reply_to_status`: A fully populated Mastodon Status entity for the replied to status or null it is a post rather than a response
* `friendica`: Friendica specific properties of a status including:
* `title`: The Friendica title for a post, or empty if the status is a comment
* `delivery_data`: Information about the state of federating a message from the server
* `delivery_queue_count`: Total number of remote servers that the status needs to be federated to.
* `delivery_queue_done`: Total number of remote servers that have successfully been federated to so far.
* `delivery_queue_failed`: Total number of remote servers that have we failed to federate to so far.
* `dislikes_count`: The number of dislikes that a status has accumulated according to the server.
* `disliked`: Whether the API user disliked the status.
Example:
```json
{
"id": "358",
"created_at": "2023-02-23T02:45:46.000Z",
"in_reply_to_id": "356",
"in_reply_to_status": {
"id": "356",
"created_at": "2023-02-23T02:45:35.000Z",
"in_reply_to_id": null,
"in_reply_to_status": null,
"in_reply_to_account_id": null,
...
"content": "A post from testuser1",
...
"account": {
"id": "6",
"username": "testuser1",
"acct": "testuser1",
"display_name": "testuser1",
...
},
...
"friendica": {
"title": "",
"dislikes_count": 0
}
},
"in_reply_to_account_id": "6",
...
"replies_count": 0,
"reblogs_count": 0,
"favourites_count": 0,
...
"content": "A reply from testuser2",
...
"account": {
"id": "8",
"username": "testuser2",
"acct": "testuser2",
"display_name": "testuser2",
...
},
...
"friendica": {
"title": "",
"delivery_data": {
"delivery_queue_count": 10,
"delivery_queue_done": 3,
"delivery_queue_failed": 0
},
"dislikes_count": 0
}
}
```
## Implemented endpoints
@ -47,6 +142,7 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
- [`POST /api/v1/accounts/:id/unmute`](https://docs.joinmastodon.org/methods/accounts/)
- [`GET /api/v1/accounts/relationships`](https://docs.joinmastodon.org/methods/accounts/)
- [`GET /api/v1/accounts/search`](https://docs.joinmastodon.org/methods/accounts)
- [`PATCH /api/v1/accounts/update_credentials`](https://docs.joinmastodon.org/methods/accounts/#update_credentials)
- [`GET /api/v1/accounts/verify_credentials`](https://docs.joinmastodon.org/methods/accounts)
- [`POST /api/v1/apps`](https://docs.joinmastodon.org/methods/apps/)
- [`GET /api/v1/apps/verify_credentials`](https://docs.joinmastodon.org/methods/apps/)
@ -72,8 +168,8 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
- `:id` is a follow request ID, not a regular account id
- Returns a [Relationship](https://docs.joinmastodon.org/entities/relationship) object.
- [`GET /api/v1/instance`](https://docs.joinmastodon.org/methods/instance#fetch-instance)
- [`GET /api/v1/followed_tags`](https://docs.joinmastodon.org/methods/followed_tags/)
- [`GET /api/v1/instance`](https://docs.joinmastodon.org/methods/instance/#v1)
- `GET /api/v1/instance/rules` Undocumented, returns Terms of Service
- [`GET /api/v1/instance/peers`](https://docs.joinmastodon.org/methods/instance#list-of-connected-domains)
- [`GET /api/v1/lists`](https://docs.joinmastodon.org/methods/timelines/lists/)
@ -91,6 +187,10 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
- [`PUT /api/v1/media/:id`](https://docs.joinmastodon.org/methods/statuses/media/)
- [`GET /api/v1/mutes`](https://docs.joinmastodon.org/methods/accounts/mutes/)
- [`GET /api/v1/notifications`](https://docs.joinmastodon.org/methods/notifications/)
- Additional field `include_all` to return read and unread statuses, defaults to `false`
- Additional field `summary` returns a count of all of the statuses that match the type filter
- Additional field `with_muted` Pleroma extension to return notifications from muted users, defaults to `false`
- Does not support the `type` field, which is the mirror image of the supported `exclude_types` field
- [`GET /api/v1/notifications/:id`](https://docs.joinmastodon.org/methods/notifications/)
- [`POST /api/v1/notifications/clear`](https://docs.joinmastodon.org/methods/notifications/)
- [`POST /api/v1/notifications/:id/dismiss`](https://docs.joinmastodon.org/methods/notifications/)
@ -100,51 +200,77 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
- [`GET /api/v1/push/subscription`](https://docs.joinmastodon.org/methods/notifications/push/)
- [`PUSH /api/v1/push/subscription`](https://docs.joinmastodon.org/methods/notifications/push/)
- [`PUT /api/v1/push/subscription`](https://docs.joinmastodon.org/methods/notifications/push/)
- [`POST /api/v1/reports`](https://docs.joinmastodon.org/methods/accounts/reports/)
- [`GET /api/v1/scheduled_statuses`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
- [`DELETE /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
- [`GET /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
- [`GET /api/v1/search`](https://docs.joinmastodon.org/methods/search/)
- [`POST /api/v1/statuses`](https://docs.joinmastodon.org/methods/statuses/)
- Additionally to the static values `public`, `unlisted` and `private`, the `visibility` parameter can contain a numeric value with a group id.
- [`GET /api/v1/statuses/:id`](https://docs.joinmastodon.org/methods/statuses/)
- [`DELETE /api/v1/statuses/:id`](https://docs.joinmastodon.org/methods/statuses/)
- [`GET /api/v1/statuses/:id/card`](https://docs.joinmastodon.org/methods/statuses/)
- [`GET /api/v1/statuses/:id/context`](https://docs.joinmastodon.org/methods/statuses/)
- [`GET /api/v1/statuses/:id/reblogged_by`](https://docs.joinmastodon.org/methods/statuses/)
- [`GET /api/v1/statuses/:id/favourited_by`](https://docs.joinmastodon.org/methods/statuses/)
- [`POST /api/v1/statuses/:id/favourite`](https://docs.joinmastodon.org/methods/statuses/)
- [`POST /api/v1/statuses/:id/unfavourite`](https://docs.joinmastodon.org/methods/statuses/)
- [`POST /api/v1/statuses/:id/reblog`](https://docs.joinmastodon.org/methods/statuses/)
- [`POST /api/v1/statuses/:id/unreblog`](https://docs.joinmastodon.org/methods/statuses/)
- [`POST /api/v1/statuses/:id/bookmark`](https://docs.joinmastodon.org/methods/statuses/)
- [`POST /api/v1/statuses/:id/unbookmark`](https://docs.joinmastodon.org/methods/statuses/)
- [`POST /api/v1/statuses/:id/mute`](https://docs.joinmastodon.org/methods/statuses/)
- [`POST /api/v1/statuses/:id/unmute`](https://docs.joinmastodon.org/methods/statuses/)
- [`POST /api/v1/statuses/:id/pin`](https://docs.joinmastodon.org/methods/statuses/)
- [`POST /api/v1/statuses/:id/unpin`](https://docs.joinmastodon.org/methods/statuses/)
- [`PUT /api/v1/statuses`](https://docs.joinmastodon.org/methods/statuses/#edit)
- Does not support `polls` argument as Friendica does not have polls
- Additional fields `friendica` for Friendica specific parameters:
- `title`: Explicitly sets the title for a post status, ignored if used on a comment status. For post statuses the legacy behavior is to use any "spoiler text" as the title if it is provided. If both the title and spoiler text are provided for a post status then they will each be used for their respective roles. If no title is provided then the legacy behavior will persist. If you want to create a post with no title but spoiler text then explicitly set the title but set it to an empty string `""`.
- [`POST /api/v1/statuses`](https://docs.joinmastodon.org/methods/statuses/#create)
- Does not support `polls` argument as Friendica does not have polls
- Additionally to the static values `public`, `unlisted` and `private`, the `visibility` parameter can contain a numeric value with a circle id.
- Additional field `quote_id` for the post that is being quote reshared
- Additional fields `friendica` for Friendica specific parameters:
- `title`: Explicitly sets the title for a post status, ignored if used on a comment status. For post statuses the legacy behavior is to use any "spoiler text" as the title if it is provided. If both the title and spoiler text are provided for a post status then they will each be used for their respective roles. If no title is provided then the legacy behavior will persist. If you want to create a post with no title but spoiler text then explicitly set the title but set it to an empty string `""`.
- [`GET /api/v1/statuses/:id`](https://docs.joinmastodon.org/methods/statuses/#get)
- [`DELETE /api/v1/statuses/:id`](https://docs.joinmastodon.org/methods/statuses/#delete)
- [`GET /api/v1/statuses/:id/context`](https://docs.joinmastodon.org/methods/statuses/#context)
- Additional support for paging using `min_id`, `max_id`, `since_id` parameters
- Additional support for previous/next Link Headers to support paging
- Additional flag `show_all` to allow including posts from blocked and ignored/muted users, defaults to `false`
- [`GET /api/v1/statuses/:id/reblogged_by`](https://docs.joinmastodon.org/methods/statuses/#reblogged_by)
- [`GET /api/v1/statuses/:id/favourited_by`](https://docs.joinmastodon.org/methods/statuses/#favourited_by)
- [`POST /api/v1/statuses/:id/favourite`](https://docs.joinmastodon.org/methods/statuses/#favourite)
- [`POST /api/v1/statuses/:id/unfavourite`](https://docs.joinmastodon.org/methods/statuses/#unfavourite)
- [`POST /api/v1/statuses/:id/reblog`](https://docs.joinmastodon.org/methods/statuses/#boost)
- [`POST /api/v1/statuses/:id/unreblog`](https://docs.joinmastodon.org/methods/statuses/#unreblog)
- [`POST /api/v1/statuses/:id/bookmark`](https://docs.joinmastodon.org/methods/statuses/#bookmark)
- [`POST /api/v1/statuses/:id/unbookmark`](https://docs.joinmastodon.org/methods/statuses/#unbookmark)
- [`POST /api/v1/statuses/:id/mute`](https://docs.joinmastodon.org/methods/statuses/#mute)
- [`POST /api/v1/statuses/:id/unmute`](https://docs.joinmastodon.org/methods/statuses/#unmute)
- [`POST /api/v1/statuses/:id/pin`](https://docs.joinmastodon.org/methods/statuses/#pin)
- [`POST /api/v1/statuses/:id/unpin`](https://docs.joinmastodon.org/methods/statuses/#unpin)
- [`POST /api/v1/statuses/:id`](https://docs.joinmastodon.org/methods/statuses/#edit)
- [`GET /api/v1/statuses/:id/source`](https://docs.joinmastodon.org/methods/statuses/#source)
- [`GET /api/v1/statuses/:id/card`](https://docs.joinmastodon.org/methods/statuses/#card)
- [`GET /api/v1/suggestions`](https://docs.joinmastodon.org/methods/accounts/suggestions/)
- [`GET /api/v1/tags/:id`](https://docs.joinmastodon.org/methods/tags/#get)
- [`GET /api/v1/tags/:id/follow`](https://docs.joinmastodon.org/methods/tags/#follow)
- [`GET /api/v1/tags/:id/unfollow`](https://docs.joinmastodon.org/methods/tags/#unfollow)
- [`GET /api/v1/timelines/direct`](https://docs.joinmastodon.org/methods/timelines/)
- [`GET /api/v1/timelines/home`](https://docs.joinmastodon.org/methods/timelines/)
- Additional field `with_muted` Pleroma extension to return notifications from muted users, defaults to `false`
- Additional field `exclude_replies` to only return post statuses not replies/comments, defaults to `false`
- [`GET /api/v1/timelines/list/:id`](https://docs.joinmastodon.org/methods/timelines/)
- Additional field `with_muted` Pleroma extension to return notifications from muted users, defaults to `false`
- Additional field `exclude_replies` to only return post statuses not replies/comments, defaults to `false`
- [`GET /api/v1/timelines/public`](https://docs.joinmastodon.org/methods/timelines/)
- Additional field `with_muted` Pleroma extension to return notifications from muted users, defaults to `false`
- Additional field `exclude_replies` to only return post statuses not replies/comments, defaults to `false`
- [`GET /api/v1/timelines/tag/:hashtag`](https://docs.joinmastodon.org/methods/timelines/)
- Additional field `with_muted` Pleroma extension to return notifications from muted users, defaults to `false`
- Additional field `exclude_replies` to only return post statuses not replies/comments, defaults to `false`
- Does not support the `any[]`, `all[]`, or `none[]` query parameters
- [`GET /api/v1/trends`](https://docs.joinmastodon.org/methods/instance/trends/)
- [`GET /api/v1/trends/links`](https://github.com/mastodon/mastodon/pull/16917)
- [`GET /api/v1/trends/statuses`](https://docs.joinmastodon.org/methods/trends/#statuses)
- [`GET /api/v1/trends/tags`](https://docs.joinmastodon.org/methods/trends/#tags)
- Additional field `friendica_local` to return local trending tags instead of global tags, defaults to `false`
- [`GET /api/v2/instance`](https://docs.joinmastodon.org/methods/instance/#v2)
- [`GET /api/v2/search`](https://docs.joinmastodon.org/methods/search/)
## Currently unimplemented endpoints
These emdpoints are planned to be implemented somewhere in the future.
These endpoints are planned to be implemented somewhere in the future.
- [`PATCH /api/v1/accounts/update_credentials`](https://docs.joinmastodon.org/methods/accounts/)
- [`POST /api/v1/accounts/:id/remove_from_followers`](https://github.com/mastodon/mastodon/pull/16864)
- [`GET /api/v1/accounts/familiar_followers`](https://github.com/mastodon/mastodon/pull/17700)
- [`GET /api/v1/accounts/lookup`](https://github.com/mastodon/mastodon/pull/15740)
- [`GET /api/v1/trends/links`](https://github.com/mastodon/mastodon/pull/16917)
- [`GET /api/v1/trends/statuses`](https://github.com/mastodon/mastodon/pull/17431)
- [`GET /api/v1/trends/tags`](https://github.com/mastodon/mastodon/pull/16917)
- [`POST /api/v1/polls/:id/votes`](https://docs.joinmastodon.org/methods/statuses/polls/)
- [`GET /api/v1/statuses/{id:\d+}/source`](https://github.com/mastodon/mastodon/pull/16697)
- [`GET /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`POST /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`DELETE /api/v1/featured_tags/:id`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
@ -189,7 +315,6 @@ They refer to features or data that don't exist in Friendica yet.
- [`DELETE /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`GET /api/v1/instance/activity`](https://docs.joinmastodon.org/methods/instance#weekly-activity)
- [`POST /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
- [`POST /api/v1/reports`](https://docs.joinmastodon.org/methods/accounts/reports/)
- [`PUT /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
- [`GET /api/v1/statuses/{id:\d+}/history`](https://github.com/mastodon/mastodon/pull/16697)
- [`GET /api/v1/streaming`](https://docs.joinmastodon.org/methods/timelines/streaming/)

View File

@ -16,9 +16,11 @@ General
-------
* p - Profile
* n - Network
* l - Channel
* c - Community
* s - Search
* a - Admin
* m - Moderation
* f - Notifications
* u - User menu
@ -27,6 +29,18 @@ General
* l - Local community
* g - Global community
../channel
--------
* y - for you
* f - followers
* r - sharers of sharers
* h - what's hot
* i - Images
* v - Videos
* d - Audio
* g - Posts in your language
* o - Hot posts in your language
../profile
--------
* m - Status Messages and Posts
@ -47,7 +61,7 @@ General
* i - Only show ignored contacts
* y - Only show archived contacts
* h - Only show hidden contacts
* e - Edit contact groups
* e - Edit contact circles
../contact (single contact view)
-------------------------------

View File

@ -10,7 +10,7 @@ Not all Friendica sites allow open registration.
If registration is allowed, you will see a "Register" link immediately below the login prompt on the site's home page.
Following this link will take you to the site registration page.
The strength of our network is that lots of different sites are all completely compatible with each other.
If the site you're visting doesn't allow registration, or you think you might prefer another one, there is a [list of public servers here](https://dir.friendica.social/servers) and hopefully you will find one that meets your needs.
If the site you're visiting doesn't allow registration, or you think you might prefer another one, there is a [list of public servers here](https://dir.friendica.social/servers) and hopefully you will find one that meets your needs.
If you'd like to have your own server, you can do that too.
Visit [the Friendica website](http://friendi.ca/) to download the code with setup instructions.
@ -23,10 +23,10 @@ If you do not have an OpenID address or do not wish to use OpenID, leave this fi
If you have an OpenID account elsewhere and wish to use it, enter the address into this field and click 'Register'.
Friendica will attempt to extract as much information as possible from your OpenID provider and return to this page with those items already filled in.
### Your Full Name
### Your Display Name
Please provide your full name **as you would like it to be displayed on this system**.
Most people use their real name for this, but you're under no obligation to do so yourself.
Please provide your display name **as you would like it to be displayed on this system**.
Some people use their real name for this, but you're under no obligation to do so yourself.
### Email Address
@ -41,9 +41,9 @@ This is the only bit of personal information that has to be accurate.
### Nickname
A nickname is used to generate web addresses for many of your personal pages, and is also treated like an email address when establishing communications with others.
Due to the way that the nickname is used, it has some limitations.
Due to the way that the nickname is used, it has some limitations.
It must contain only US-ASCII text characters and numbers, and must also start with a text character.
It also must be unique on this system.
It also must be unique on this system.
This is used in many places to identify your account, and once set it cannot be changed.
@ -53,28 +53,28 @@ The registration form also allows you to choose whether or not to list your acco
This is like a "phone book" and you may choose to be unlisted.
We recommend that you select 'Yes' so that other people (friends, family, etc.) will be able to find you.
If you choose 'No', you will essentially be invisible and have few opportunities for interaction.
Whichever you choose, this can be changed any time from your Settings page after you login.
Whichever you choose, this can be changed any time from your Settings page after you login.
### Register
Once you have provided the necessary details, click the 'Register' button.
An email will be sent to you providing your account login details.
Please check your email (including spam folders) for your registration details and initial password.
Please check your email (including spam folders) for your registration details and initial password.
Login Page
---
On the 'Login' page, please enter your login information that was provided during registration.
You may use either your nickname or email address as a Login Name.
You may use either your nickname or email address as a Login Name.
If you use your account to manage other accounts and these all have the same email address, please enter the nickname for the account you wish to manage.
If your account has been OpenID enabled, you may use your OpenID address as a login name and leave the password blank.
You will be redirected to your OpenID provider to complete your authorisation.
You will be redirected to your OpenID provider to complete your authorisation.
Otherwise, enter your password.
This will have been initially provided in your registration email message.
Your password is case-sensitive, so please check your 'Caps Lock' key if you are having difficulty logging in.
Your password is case-sensitive, so please check your 'Caps Lock' key if you are having difficulty logging in.
Changing Your Password
---
@ -99,9 +99,9 @@ See Also
* [Profiles](help/Profiles)
* [Global Directory](help/Making-Friends#The+Directories)
* [Global Directory](help/Making-Friends#The+Directories)
* [Groups and Privacy](help/Groups-and-Privacy)
* [Circles and Privacy](help/Circles-and-Privacy)
* [Move Account](help/Move-Account)

View File

@ -100,7 +100,7 @@ See doxygen documentation of `IWritableStorage` interface for details about each
## Register a storage backend class
Each backend must be registered in the system when the plugin is installed, to be aviable.
Each backend must be registered in the system when the plugin is installed, to be available.
`DI::facStorage()->register(string $class)` is used to register the backend class.
@ -140,18 +140,18 @@ abstract class StorageTest
There are two intended types of exceptions for storages
### `ReferenceStorageExecption`
### `ReferenceStorageException`
This storage exception should be used in case the caller tries to use an invalid references.
This could happen in case the caller tries to delete or update an unknown reference.
The implementation of the storage backend must not ignore invalid references.
Avoid throwing the common `StorageExecption` instead of the `ReferenceStorageException` at this particular situation!
Avoid throwing the common `StorageException` instead of the `ReferenceStorageException` at this particular situation!
### `StorageException`
This is the common exception in case unexpected errors happen using the storage backend.
If there's a predecessor to this exception (e.g. you caught an exception and are throwing this execption), you should add the predecessor for transparency reasons.
If there's a predecessor to this exception (e.g. you caught an exception and are throwing this exception), you should add the predecessor for transparency reasons.
Example:
@ -320,7 +320,7 @@ The file is `addon/samplestorage/samplestorage.php`
<?php
/**
* Name: Sample Storage Addon
* Description: A sample addon which implements an unusefull storage backend
* Description: A sample addon which implements a very limited storage backend
* Version: 1.0.0
* Author: Alice <https://alice.social/~alice>
*/

View File

@ -44,7 +44,7 @@ Uninstalling an addon automatically unregisters any hook it registered, but if y
The install and uninstall functions will be called (i.e. re-installed) if the addon changes after installation.
Therefore your uninstall should not destroy data and install should consider that data may already exist.
Future extensions may provide for "setup" amd "remove".
Future extensions may provide for "setup" and "remove".
## PHP addon hooks
@ -60,25 +60,14 @@ This *should* be 'addon/*addon_name*/*addon_name*.php' in most cases and can be
`$function` is a string and is the name of the function which will be executed when the hook is called.
### Arguments
Your hook callback functions will be called with at least one and possibly two arguments
Your hook callback functions will be called with at most one argument
function <addon>_<hookname>(App $a, &$b) {
function <addon>_<hookname>(&$b) {
}
If you wish to make changes to the calling data, you must declare them as reference variables (with `&`) during function declaration.
#### $a
$a is the Friendica `App` class.
It contains a wealth of information about the current state of Friendica:
* which module has been called,
* configuration information,
* the page contents at the point the hook was invoked,
* profile and user information, etc.
It is recommeded you call this `$a` to match its usage elsewhere.
#### $b
$b can be called anything you like.
This is information specific to the hook currently being processed, and generally contains information that is being immediately processed or acted on that you can use, display, or alter.
@ -88,7 +77,7 @@ Remember to declare it with `&` if you wish to alter it.
Your addon can provide user-specific settings via the `addon_settings` PHP hook, but it can also provide node-wide settings in the administration page of your addon.
Simply declare a `<addon>_addon_admin(App $a)` function to display the form and a `<addon>_addon_admin_post(App $a)` function to process the data from the form.
Simply declare a `<addon>_addon_admin()` function to display the form and a `<addon>_addon_admin_post()` function to process the data from the form.0
## Global stylesheets
@ -102,7 +91,7 @@ function <addon>_install()
}
function <addon>_head(App $a)
function <addon>_head()
{
\Friendica\DI::page()->registerStylesheet(__DIR__ . '/relative/path/to/addon/stylesheet.css');
}
@ -124,7 +113,7 @@ function <addon>_install()
...
}
function <addon>_footer(App $a)
function <addon>_footer()
{
\Friendica\DI::page()->registerFooterScript(__DIR__ . '/relative/path/to/addon/script.js');
}
@ -135,7 +124,7 @@ function <addon>_footer(App $a)
### JavaScript hooks
The main Friendica script provides hooks via events dispatched on the `document` property.
In your Javascript file included as described above, add your event listener like this:
In your JavaScript file included as described above, add your event listener like this:
```js
document.addEventListener(name, callback);
@ -144,7 +133,7 @@ document.addEventListener(name, callback);
- *name* is the name of the hook and corresponds to a known Friendica JavaScript hook.
- *callback* is a JavaScript anonymous function to execute.
More info about Javascript event listeners: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
More info about JavaScript event listeners: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
#### Current JavaScript hooks
@ -167,9 +156,9 @@ DI::args()->get(1); // = 'arg1'
DI::args()->get(2); // = 'arg2'
```
To display a module page, you need to declare the function `<addon>_content(App $a)`, which defines and returns the page body content.
They may also contain `<addon>_post(App $a)` which is called before the `<addon>_content` function and typically handles the results of POST forms.
You may also have `<addon>_init(App $a)` which is called before `<addon>_content` and should include common logic to your module.
To display a module page, you need to declare the function `<addon>_content()`, which defines and returns the page body content.
They may also contain `<addon>_post()` which is called before the `<addon>_content` function and typically handles the results of POST forms.
You may also have `<addon>_init()` which is called before `<addon>_content` and should include common logic to your module.
## Templates
@ -209,7 +198,7 @@ Called when a user attempts to login.
### logged_in
Called after a user has successfully logged in.
`$b` contains the `$a->user` array.
`$b` contains the `App->user` array.
### display_item
Called when formatting a post for display.
@ -232,6 +221,15 @@ Please note: body contents are bbcode - not HTML
Called when receiving a post from another source. This may also be used to post local activity or system generated messages.
`$b` is the item array of information to be stored in the database and the item body is bbcode.
### detect_languages
Called after the language detection. This can be used for alternative language detection methods.
`$data` is an array:
- **text**: The text that is analyzed.
- **detected**: (input/output) Array of language codes detected in the related text. The array key is the language code, the array value the probability.
- **uri-id**: The Uri-Id of the item.
- **author-id**: The id of the author contact.
### addon_settings
Called when generating the HTML for the addon settings page.
`$data` is an array containing:
@ -275,7 +273,7 @@ $data = [
##### With multiple submit buttons
```php
$data = [
'addon' => 'catavar',
'addon' => 'catavatar',
'title' => DI::l10n()->t('Cat Avatar Settings'),
'html' => $html,
'submit' => [
@ -360,7 +358,7 @@ Called prior to output of profile edit page.
### profile_advanced
Called when the HTML is generated for the Advanced profile, corresponding to the Profile tab within a person's profile page.
`$b` is the HTML string representation of the generated profile.
The profile array details are in `$a->profile`.
The profile array details are in `App->profile`.
### directory_item
Called from the Directory page when formatting an item for display.
@ -413,7 +411,7 @@ Called prior to output of personal XRD file.
### home_content
Called prior to output home page content, shown to unlogged users.
`$b` is the HTML sring of section region.
`$b` is the HTML string of section region.
### contact_edit
Called when editing contact details on an individual from the Contacts page.
@ -436,7 +434,7 @@ Called after HTML content functions have completed.
### footer
Called after HTML content functions have completed.
Deferred Javascript files should be registered using this hook.
Deferred JavaScript files should be registered using this hook.
`$b` is (string) HTML of footer div/element.
### avatar_lookup
@ -649,6 +647,14 @@ Hook data:
- **uid** (input): the user id to revoke the block for.
- **result** (output): a boolean value indicating wether the operation was successful or not.
### support_probe
Called to assert whether a connector addon provides probing capabilities.
Hook data:
- **protocol** (input): shorthand for the protocol. List of values is available in `src/Core/Protocol.php`.
- **result** (output): should be true if the connector provides follow capabilities, left alone otherwise.
### storage_instance
Called when a custom storage is used (e.g. webdav_storage)
@ -790,10 +796,6 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
Hook::callAll('post_local', $datarray);
Hook::callAll('post_local_end', $datarray);
### mod/editpost.php
Hook::callAll('jot_tool', $jotplugins);
### src/Render/FriendicaSmartyEngine.php
Hook::callAll("template_vars", $arr);
@ -807,6 +809,7 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
### src/Model/Item.php
Hook::callAll('detect_languages', $item);
Hook::callAll('post_local', $item);
Hook::callAll('post_remote', $item);
Hook::callAll('post_local_end', $posted_item);
@ -855,6 +858,10 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
Hook::callAll('lockview_content', $item);
### src/Module/Post/Edit.php
Hook::callAll('jot_tool', $jotplugins);
### src/Module/Settings/Delegation.php
Hook::callAll('authenticate', $addon_auth);
@ -918,6 +925,7 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
Hook::callAll('revoke_follow', $hook_data);
Hook::callAll('block', $hook_data);
Hook::callAll('unblock', $hook_data);
Hook::callAll('support_probe', $hook_data);
### src/Core/Logger/Factory.php

View File

@ -191,7 +191,7 @@ code</code></td>
You should not read any further if you want to be surprised.<br>
<span id="spoiler-wrap-0716e642" class="spoiler-wrap fakelink" onclick="openClose('spoiler-0716e642');">Click to open/close</span>
<blockquote class="spoiler" id="spoiler-0716e642" style="display: none;">There is a happy end.</blockquote>
<div class="body-attach"><div class="clear"></div></div>
<div class="body-attach"></div>
</div>
</td>
</tr>
@ -202,7 +202,7 @@ code</code></td>
<strong class="spoiler">Author wrote:</strong><br>
<span id="spoiler-wrap-a893765a" class="spoiler-wrap fakelink" onclick="openClose('spoiler-a893765a');">Click to open/close</span>
<blockquote class="spoiler" id="spoiler-a893765a" style="display: none;">Spoiler quote</blockquote>
<div class="body-attach"><div class="clear"></div></div>
<div class="body-attach"></div>
</div>
</td>
</tr>
@ -653,7 +653,7 @@ On Mastodon this field is used for the content warning.
<tr>
<td>Custom inline styles<br>
<br>
[style=text-shadow: 0 0 4px #CC0000;]You can change all the CSS properties of this block.[/style]</td>
<td>You can change all <span style="text-shadow: 0 0 4px #cc0000;;">the CSS properties of this inline text.</span></td>
You can change all the [style=text-shadow: 0 0 4px #CC0000;]CSS properties[/style] of this inline text.</td>
<td>You can change all the <span style="text-shadow: 0 0 4px #cc0000;;">CSS properties</span> of this inline text.</td>
</tr>
</table>

View File

@ -6,7 +6,7 @@ Bugs and Issues
If your server has a support page, you should report any bugs/issues you encounter there first.
Reporting to your support page before reporting to the developers makes their job easier, as they don't have to deal with bug reports that might not have anything to do with them.
Reducing the workload in this way helps us get new features faster.
You can also contact the [friendica support forum](https://forum.friendi.ca/profile/helpers) and report your problem there.
You can also contact the [friendica support group](https://forum.friendi.ca/profile/helpers) and report your problem there.
Bugs are rarely limited to one person, and the chances are somebody from another node has encountered the problem too, and will be able to help you.
If you're a technical user, or your site doesn't have a support page, you'll need to use the [Bug Tracker](https://github.com/friendica/friendica/issues).

77
doc/Channels.md Normal file
View File

@ -0,0 +1,77 @@
Channels
=====
* [Home](help)
Channels are a way to discover new content or to display content that you might have missed otherwise.
There are several predefined channels, additionally you can create your own channels, based on some rules.
Channels only display posts from the last 24 hours (this value can be changed by the admin).
In the display settings in the section "Timelines" you can define which channels and other timelines you want to see in the "Channels" widget on the network page and which channels should appear in the menu bar at the top of the page.
Also in the display settings in the section "Channels" you can define all the languages that you want to see in your channels. Here you can select more than one language.
On the contact page you can define the channel frequency for every contact. The options are:
* Default frequency: Posts by this contact are displayed in the "for you" channel if you interact often with this contact or if a post reached some level of interaction.
* Display all posts of this contact: All posts from this contact will appear on the "for you" channel.
* Display only few posts: When a contact creates a lot of posts in a short period, this setting reduces the number of displayed posts in every channel.
* Never display posts: Posts from this contact will never be displayed in any channel.
Predefined Channels
---
* For you: Posts from contacts you interact with and who interact with you. In detail, it consists of:
* Posts from people you interact with on a more than average level.
* Posts from the accounts that you follow with a more than average number of interactions-
* Posts from accounts where you activated "notify on new posts" or where you have set the channel frequency accordingly.
* What's Hot: Posts with a more than average number of interactions.
* Language: Posts in your language.
* Followers: Posts from your followers that you don't follow.
* Sharers of sharers: Posts from accounts that are followed by accounts that you follow.
* Images: Posts with images.
* Audio: Posts with audio.
* Videos: Posts with videos.
User defined Channels
---
In the "Channels" settings you can create your own channels.
Each channel is defined by these values:
* Label: This value is mandatory and is used for the menu label.
* Description: A short description of the content. This can help to keep the overview, when you have got a lot of channels.
* Access Key: When you want to access this channel via an access key, you can define it here. Pay attention to not use an already used one.
* Circle: This defines the data source for this channel. By default it is set to the public timeline. There are some predefined values, like the accounts that you follow or the accounts that follow you. Also all of your circles can be selected.
* Include Tags: Comma separated list of tags. A post will be used when it contains any of the listed tags.
* Exclude Tags: Comma separated list of tags. If a post contain any of these tags, then it will not be part of nthis channel.
* Full Text Search: This can be used to include or exclude content, based on the content and some additional keywords. It uses the "boolean mode" operators from MariaDB: https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode
* Images, Videos, Audio: When selected, you will see content with the selected media type. This can be combined. If none of these fields are checked, you will see any content, with or without attacked media.
Additional keywords for the full text search
---
Additionally to the search for content, there are additional keywords that can be used in the full text search:
* from - Use "from:nickname" or "from:nickname@domain.tld" to search for posts from a specific author.
* to - Use "from:nickname" or "from:nickname@domain.tld" to search for posts with the given contact as receiver.
* group - Use "from:nickname" or "from:nickname@domain.tld" to search for group post of the given group.
* tag - Use "tag:tagname" to search for a specific tag.
* network - Use this to include or exclude some networks from your channel.
* network:apub - ActivityPub (Used by the systems in the Fediverse)
* network:dfrn - Legacy Friendica protocol. Nowayday Friendica mostly uses ActivityPub.
* network:dspr - The Diaspora protocol is mainly used by Diaspora itself. Some other systems support the protocol as well like Hubzilla, Socialhome or Ganggo.
* network:feed - RSS/Atom feeds
* network:mail - Mails that had been imported via IMAP.
* network:stat - The OStatus protocol is mainly used by old GNU Social installations.
* network:dscs - Posts that are received by the Discourse connector.
* network:tmbl - Posts that are received by the Tumblr connector.
* network:bsky - Posts that are received by the Bluesky connector.
* visibility - You have the choice between different visibilities. You can only see unlisted or private posts that you have the access for.
* visibility:public
* visibility:unlisted
* visibility:private
Remember that you can combine these kerywords.
So for example you can create a channel with all posts that talk about the Fediverse - that aren't posted in the Fediverse with the search terms: "fediverse -network:apub -network:dfrn"

View File

@ -39,7 +39,7 @@ You can use several servers to create an account:
### 1. Basics
At first you have to get the current version. You can either pull it from [Github](https://github.com) like so:
At first you have to get the current version. You can either pull it from [GitHub](https://github.com) like so:
$> cd /var/www/virtual/YOURSPACE/html/addon; git pull

View File

@ -1,78 +1,76 @@
Groups and Privacy
Circles and Privacy
==================
* [Home](help)
Groups are merely collections of friends.
Circles are merely collections of friends.
But Friendica uses these to unlock some very powerful features.
**Setting Up Groups**
**Setting Up Circles**
To create a group, visit your Friendica "Contacts" page and select "Create a new group".
Give the group a name.
To create a circle, visit your Friendica "Contacts" page and select "Create a new circle".
Give the circle a name.
This brings you to a page where you can select the group members.
This brings you to a page where you can select the circle members.
You will have two boxes on this page.
The top box is the roster of current group members.
Below that is another box containing all of your friends who are *not* members of the group.
The top box is the roster of current circle members.
Below that is another box containing all of your friends who are *not* members of the circle.
If you click on a photo of a person who isn't in the group, they will be put into the group.
If you click on a photo of a person who is in the group, they will be removed from it.
If you click on a photo of a person who isn't in the circle, they will be put into the circle.
If you click on a photo of a person who is in the circle, they will be removed from it.
**Access Control**
Once you have created a group, you may use it in any access control list.
Once you have created a circle, you may use it in any access control list.
This is the little lock icon beneath the status update box on your home page.
If you click this you can select who can see and who can *not* see the post you are about to make..
These can be individual people or groups.
If you click this, you can select who can see and who can *not* see the post you are about to make...
These can be individual people or circles.
On your "Network" page you will find posts and conversation from everybody in your network.
You may select an individual group on this page to show conversations pertaining only to members of that group.
On your "Network" page, you will find posts and conversations from everybody in your network.
You may select an individual circle on this page to show conversations pertaining only to members of that circle.
But wait, there's more...
If you look carefully when visiting a group from your Network page, the lock icon under the status update box has an exclamation mark next to it.
If you look carefully when visiting a circle from your Network page, the lock icon under the status update box has an exclamation mark next to it.
This is meant to draw attention to that lock.
Click the lock.
You will see that since you are only viewing a certain group of people, your status updates while on that screen default to only being seen by that same group of people.
You will see that since you are only viewing a certain circle of people, your status updates while on that screen default to only being seen by that same circle of people.
This is how you keep your future employers from seeing what you write to your drinking buddies.
You can over-ride this setting, but this makes it easy to separate your conversations into different friend circles.
You can override this setting, but this makes it easy to separate your conversations into different friend circles.
**Default Post Privacy**
By default, Friendica assumes that you want all of your posts to be private.
Therefore, when you sign up, Friendica creates a group for you that it will automatically add all of your contacts to.
All of your posts are restricted to that group by default.
Therefore, when you sign up, Friendica creates a circle for you that it will automatically add all of your contacts to.
All of your posts are restricted to that circle by default.
Note that this behaviour can be overridden by your site admin, in which case your posts will be "public" (i.e. visible to the entire Internet) by default.
Note that this behaviour can be overridden by your site admin, in which case your posts will be "public" (i.e., visible to the entire Internet) by default.
If you want your posts to be "public" by default, you can change your default post permissions on your Settings page.
You also have the option there to change which groups you post to by default, or to change which group your new contacts get placed into by default.
You also have the option to change which circles you post to by default or which circle your new contacts get placed into by default.
**Privacy Concerns To Be Aware Of**
These private conversations work best when your friends are Friendica members.
We know who else can see the conversations - nobody, *unless* your friends cut and paste the messages and send them to others.
We know who else can see the conversations - nobody, *unless* your friends cut and paste the messages and send them to others.
This is a trust issue you need to be aware of.
No software in the world can prevent your friends from leaking your confidential and trusted communications.
Only a wise choice of friends.
Only a wise choice of friends.
But it isn't as clear cut when dealing with GNU Social and other network providers.
But it isn't as clear-cut when dealing with GNU Social and other network providers.
If you look at the Contact Edit page for any person, we will tell you whether or not they are members of an insecure network where you should exercise caution.
Once you have created a post, you can not change the permissions assigned.
Within seconds it has been delivered to lots of people - and perhaps everybody it was addressed to.
If you mistakenly created a message and wish you could take it back, the best you can do is to delete it.
We will send out a delete notification to everybody who received the message - and this should wipe out the message with the same speed it was initially propagated.
In most cases it will be completely wiped from the Internet - in under a minute.
If you mistakenly created a message and wish to take it back, the best you can do is delete it.
We will send out a delete notification to everybody who received the message - and this should wipe out the message with the same speed as it was initially propagated.
In most cases, it will be completely wiped from the Internet - in under a minute.
Again, this applies to Friendica networks.
Once a message spreads to other networks, it may not be removed quickly and in some cases it may not be removed at all.
Once a message spreads to other networks, it may not be removed quickly, and in some cases, it may not be removed at all.
In case you haven't yet figured this out, we are encouraging you to encourage your friends to use Friendica - because all these privacy features work much better within a privacy-aware network.
Many of the other social networks Friendica can connect to have no privacy controls.
Profiles, Photos, and Privacy
@ -102,7 +100,7 @@ When Friendica sends a post to these networks which exceeds the service length l
The original is a link back to your Friendica profile.
As Friendica cannot prove who they are, it may not be possible for these people to view your post in full.
For people in this situation we would recommend providing a "Twitter-length" summary, with more detail for friends that can see the post in full.
For people in this situation we would recommend providing a "Twitter-length" summary, with more detail for friends that can see the post in full.
You can do so by including the BBCode tag *abstract* in your posting.
Blocking your profile or entire Friendica site from unknown web visitors also has serious implications for communicating with GNU Social members.

View File

@ -20,7 +20,7 @@ Composer requires PHP CLI and the following examples assume it's available syste
#### From Archive
If you just unpacked a Friendica release archive, you don't have to use Commposer at all, all the required libraries are already bundled in the archive.
If you just unpacked a Friendica release archive, you don't have to use Composer at all, all the required libraries are already bundled in the archive.
#### Installing with Git

View File

@ -37,8 +37,8 @@ The `config` directory holds key configuration files and can have different conf
All of them have to end with `.config.php` and must not include `-sample` in their name.
Some examples of common known configuration files:
- `local.config.php` holds the current node custom configuration.
- `addon.config.php` is optional and holds the custom configuration for specific addons.
- `local.config.php` holds the base node custom configuration.
- Any other file in this folder is meant for additional configuration (e.g. for addons).
Addons can define their own default configuration values in `addon/[addon]/config/[addon].config.php` which is loaded when the addon is activated.
@ -59,7 +59,7 @@ Currently, the following configurations are included:
The legacy `.htconfig.php` configuration file is still supported, but is deprecated and will be removed in a subsequent Friendica release.
The migration is pretty straightforward:
If you had any addon-specific configuration in your `.htconfig.php`, just copy `config/addon-sample.config.php` to `config/addon.config.php` and move your configuration values.
If you had any addon-specific configuration in your `.htconfig.php`, copy `config/local-sample.config.php` to `config/addon.config.php` and move your configuration values.
Afterwards, copy `config/local-sample.config.php` to `config/local.config.php`, move the remaining configuration values to it according to the following conversion chart, then rename your `.htconfig.php` to check your node is working as expected before deleting it.
<style>
@ -206,7 +206,7 @@ $lang = "value";
The legacy `config/local.ini.php` configuration file is still supported, but is deprecated and will be removed in a subsequent Friendica release.
The migration is pretty straightforward:
If you had any addon-specific configuration in your `config/addon.ini.php`, just copy `config/addon-sample.config.php` to `config/addon.config.php` and move your configuration values.
If you had any addon-specific configuration in your `config/addon.ini.php`, copy `config/local-sample.config.php` to `config/addon.config.php` and move your configuration values.
Afterwards, copy `config/local-sample.config.php` to `config/local.config.php`, move the remaining configuration values to it according to the following conversion chart, then rename your `config/local.ini.php` file to check your node is working as expected before deleting it.
<table class="config">
@ -250,7 +250,7 @@ key = value
<tr>
<td><pre>
[config]
register_policty = REGISTER_CLOSED
register_policy = REGISTER_CLOSED
</pre></td>
<td><pre>
'config' => [
@ -278,16 +278,16 @@ key[] = value3
### Database Settings
The configuration variables database.hostname, database.username, database.password, database.database and database.charset are holding your credentials for the database connection.
If you need to specify a port to access the database, you can do so by appending ":portnumber" to the database.hostname variable.
The configuration variables `database.hostname` (or `database.socket`), `database.username`, `database.password`, `database.database` and optionally `database.charset` are holding your credentials for the database connection.
If you need to specify a port to access the database, you can do so by appending ":portnumber" to the `database.hostname` variable.
'database' => [
'hostname' => 'your.mysqlhost.com:123456',
]
If all of the following environment variables are set, Friendica will use them instead of the previously configured variables for the db:
If all the following environment variables are set, Friendica will use them instead of the previously configured variables for the db:
MYSQL_HOST
MYSQL_HOST or MYSQL_SOCKET
MYSQL_PORT
MYSQL_USERNAME
MYSQL_PASSWORD
@ -316,7 +316,7 @@ Enabling the admin panel for an account, and thus making the account holder admi
Where you have to match the email address used for the account with the one you enter to the `config/local.config.php` file.
If more then one account should be able to access the admin panel, separate the email addresses with a comma.
If more than one account should be able to access the admin panel, separate the email addresses with a comma.
'config' => [
'admin_email' => 'someone@example.com,someoneelse@example.com',

View File

@ -9,8 +9,8 @@ There is also a connector for accessing your email INBOX.
If the following network connectors are installed on your system, select the following links to visit the appropriate settings page and configure them for your account:
* [Twitter](/settings/addon)
* [GNU Social](/settings/addon)
* [Twitter](/settings/addons)
* [GNU Social](/settings/addons)
* [Email](/settings)
Instructions For Connecting To People On Specific Services

View File

@ -47,7 +47,7 @@ function doSomething(\Friendica\Contact\Introductions\Collection\Introductions $
}
/** @var $intros \Friendica\Contact\Introductions\Collection\Introductions */
$intros = \Friendica\DI::intro()->selecForUser(Session::getLocalUser());
$intros = \Friendica\DI::intro()->selectForUser(Session::getLocalUser());
doSomething($intros);
```

View File

@ -95,7 +95,7 @@ Please remove all the `require_once` mentions of the former file, as they will p
## Miscellaneous tips
When you are done with moving the class, please run `php bin/console.php typo` from the Friendica base directory to check for obvious mistakes.
Howevever, this tool isn't bullet-proof, and a staging install of Friendica is recommended to test your class move without impairing your production server if you host one.
However, this tool isn't bullet-proof, and a staging install of Friendica is recommended to test your class move without impairing your production server if you host one.
Most of Friendica processes are run in the background, so make sure to turn on your debug log to check for errors that wouldn't show up while simply browsing Friendica.

View File

@ -13,14 +13,14 @@ Whether you feel like an expert or like a newbie - join us with your ideas!
## Contact us
The discussion of Friendica development takes place in the following Friendica forums:
The discussion of Friendica development takes place in the following Friendica groups:
* The main [forum for Friendica development](https://forum.friendi.ca/profile/developers)
* The main [group for Friendica development](https://forum.friendi.ca/profile/developers)
## Help other users
Remember the questions you had when you first tried Friendica?
A good place to start can be to help new people find their way around Friendica in the [general support forum](https://forum.friendi.ca/profile/helpers).
A good place to start can be to help new people find their way around Friendica in the [general support group](https://forum.friendi.ca/profile/helpers).
Welcome them, answer their questions, point them to documentation or ping other helpers directly if you can't help but think you know who can.
## Translation
@ -33,10 +33,10 @@ If you don't want to translate the UI, or it is already done to your satisfactio
Are you good at designing things?
If you have seen Friendica you probably have ideas to improve it, haven't you?
* If you would like to work with us on enhancing the user interface, please join the [forum for Friendica development](https://forum.friendi.ca/profile/developers).
* If you would like to work with us on enhancing the user interface, please join the [group for Friendica development](https://forum.friendi.ca/profile/developers).
* Make plans for a better Friendica interface design and share them with us.
* Tell us if you are able to realize your ideas or what kind of help you need.
We can't promise we have the right skills in the group but we'll try.
We can't promise we have the right skills in the group, but we'll try.
* Choose a thing to start with, e.g. work on the icon set of your favorite theme
## Programming
@ -72,7 +72,7 @@ just place it into `.git/hooks/post-merge` and make it executable.
### Coding standards
For the sake of consistency between contribution and general code readability, Friendica follows the widespread [PSR-2 coding standards](http://www.php-fig.org/psr/psr-2/) to the exception of a few rules.
For the sake of consistency between contribution and general code readability, Friendica follows the widespread [PSR-2 coding standards](http://www.php-fig.org/psr/psr-2/) excepted a few rules.
Here's a few primers if you are new to Friendica or to the PSR-2 coding standards:
* Indentation is tabs, period (not PSR-2).
@ -88,11 +88,11 @@ Here's a few primers if you are new to Friendica or to the PSR-2 coding standard
Don't worry, you don't have to know by heart the PSR-2 coding standards to start contributing to Friendica.
There are a few tools you can use to check or fix your files before you commit.
For documentation we use the standard of *one sentence per line* for the `md` files in the `/doc` and `/doc/$lng` subdirectories.
For documentation, we use the standard of *one sentence per line* for the `md` files in the `/doc` and `/doc/$lng` subdirectories.
#### Check with [PHP Code Sniffer](https://github.com/squizlabs/PHP_CodeSniffer)
This tool checks your files against a variety of coding standards, including PSR-2, and ouputs a report of all the standard violations.
This tool checks your files against a variety of coding standards, including PSR-2, and outputs a report of all the standard violations.
You can simply install it through PEAR: `pear install PHP_CodeSniffer`
Once it is installed and available in your PATH, here's the command to run before committing your work:
@ -109,11 +109,11 @@ Here's the command to automatically fix the files you created/modified:
$> phpcbf --standard=ruleset.xml <file or directory>
If the command-line tools `diff` and `patch` are unavailabe for you, `phpcbf` can use slightly slower PHP equivalents by using the `--no-patch` argument.
If the command-line tools `diff` and `patch` are unavailable for you, `phpcbf` can use slightly slower PHP equivalents by using the `--no-patch` argument.
### Code documentation
If you are interested in having the documentation of the Friendica code outside of the code files, you can use [Doxygen](http://doxygen.org) to generate it.
If you are interested in having the documentation of the Friendica code outside the code files, you can use [Doxygen](http://doxygen.org) to generate it.
The configuration file for Doxygen is located in the base directory of the project sources.
Run
@ -126,7 +126,7 @@ If you find missing documentation, don't hesitate to contact us and write it dow
### Issues
Have a look at our [issue tracker](https://github.com/friendica/friendica) on github!
Have a look at our [issue tracker](https://github.com/friendica/friendica) on GitHub!
* Try to reproduce a bug that needs more inquiries and write down what you find out.
* If a bug looks fixed, ask the bug reporters for feedback to find out if the bug can be closed.
@ -143,13 +143,13 @@ If you want to get involved here:
* Look at the first steps that were made (e.g. the clean theme).
Ask us to find out whom to talk to about their experiences.
* Talk to design people if you know any.
* Let us know about your plans [in the dev forum](https://forum.friendi.ca/profile/developers)
* Let us know about your plans [in the dev group](https://forum.friendi.ca/profile/developers)
Do not worry about cross-posting.
### Client software
As Friendica is using a [Twitter/GNU Social compatible API](help/api) any of the clients for those platforms should work with Friendica as well.
Furthermore there are several client projects, especially for use with Friendica.
Furthermore, there are several client projects, especially for use with Friendica.
If you are interested in improving those clients, please contact the developers of the clients directly.
* Android / LinageOS: **Friendiqa** [src](https://git.friendi.ca/lubuwest/Friendiqa)/[Google Play](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa) developed by [Marco R](https://freunde.ma-nic.de/profile/marco)

View File

@ -36,9 +36,13 @@ Have a look into your <tt>config/local.config.php</tt> and fix your email addres
Yes.
You just have to list more then one email address in the
<tt>config/local.config.php</tt> file.
The listed emails need to be separated by a comma.
The listed emails need to be separated by a comma like this:
<a name="dbupdate">
```php
'admin_email' => 'mail1@example.com,mail2@example.com',
```
<a name="dbupdate"></a>
### The Database structure seems not to be updated. What can I do?
Please have a look at the Admin panel under [DB updates](/admin/dbsync/) and follow the link to *check database structure*.
@ -48,4 +52,4 @@ You can manually execute the structure update from the CLI in the base directory
bin/console dbstructure update
if there occur any errors, please contact the [support forum](https://forum.friendi.ca/profile/helpers).
if there occur any errors, please contact the [Friendica Support group](https://forum.friendi.ca/profile/helpers) or discuss in the [Friendica Admins group](https://forum.friendi.ca/profile/admins).

View File

@ -4,14 +4,14 @@ Frequently Asked Questions - FAQ
* [Home](help)
* **[Where I can find help?](help/FAQ#help)**
* **[Why do I getting warnings about certificates?](help/FAQ#ssl)**
* **[Why do I get warnings about certificates?](help/FAQ#ssl)**
* **[How can I upload images, files, links, videos and sound files to posts?](help/FAQ#upload)**
* **[Is it possible to have different avatars per profile?](help/FAQ#avatars)**
* **[How can I view Friendica in a certain language?](help/FAQ#language)**
* **[How do blocked, ignored, archived and hidden contacts behave?](help/FAQ#contacts)**
* **[What happens when an account is removed? Is it truly deleted?](help/FAQ#removed)**
* **[Can I subscribe to a hashtag?](help/FAQ#hashtag)**
* **[How to create a RSS feed of the stream?](help/FAQ#rss)**
* **[How to create an RSS feed of the stream?](help/FAQ#rss)**
* **[What friendica clients can I use?](help/FAQ#clients)**
@ -21,7 +21,7 @@ Frequently Asked Questions - FAQ
If this FAQ does not answer your question you can always reach out to the community via the following options:
* Friendica Support Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers)
* Friendica Support Group: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers)
* Community chat rooms (the IRC, Matrix and XMPP rooms are bridged) these public chats are logged [from IRC](https://gnusociarg.nsupdate.info/2021/%23friendica/) and [Matrix](https://view.matrix.org/alias/%23friendi.ca:matrix.org/)
* XMPP: support(at)forum.friendi.ca
* IRC: #friendica at [libera.chat](https://web.libera.chat/?channels=#friendica)
@ -50,7 +50,7 @@ We recommend to talk to the admin(s) of the affected friendica server. (Admins,
### How can I upload images, files, links, videos and sound files to posts?
You can upload images from your computer using the [editor](help/Text_editor).
An overview of all uploaded images is listed at *yourpage.com/photos/profilename*.
An overview of all uploaded images is listed at *yourpage.com/profile/profilename/photos*.
On that page, you can also upload images directly and choose if your contacts will receive a message about this upload.
Generally, you can attach any kind of file to a post.
@ -66,7 +66,7 @@ If this doesn't work, try to add the link by typing: [url=http://example.com]*se
You can also add video and audio files to posts.
However, instead of a direct upload you have to use one of the following methods:
1. Add the video or audio link of a hoster (Youtube, Vimeo, Soundcloud and anyone else with oembed/opengraph-support). Videos will be shown with a preview image you can click on to start. SoundCloud directly inserts a player to your post.
1. Add the video or audio link of a hoster (YouTube, Vimeo, Soundcloud and anyone else with oembed/opengraph-support). Videos will be shown with a preview image you can click on to start. SoundCloud directly inserts a player to your post.
2. If you have your own server, you can upload multimedia files via FTP and insert the URL.
@ -92,7 +92,7 @@ A question mark is required for the separation between url and parameters.
Example:
https://social.example.com/profile/example
https://social.example.com/profile/example
in German:
@ -107,48 +107,48 @@ When a certain language is forced, the language remains until session is closed.
Direct communication will be blocked.
Blocked contacts are not included in delivery, and their own posts to you are not imported.
However their conversations with your friends will still be visible in your stream.
However, their conversations with your friends will still be visible in your stream.
If you remove a contact completely, they can send you another friend request.
Blocked contacts cannot do this. They cannot communicate with you directly, only through friends.
##### Ignored
Ignored contacts are included in delivery and will receive your posts and private messages.
However we do not import their posts or private messages to you.
Like blocking you will still see this person's comments to posts made by your friends.
However, we do not import their posts or private messages to you.
Like blocking, you will still see this person's comments to posts made by your friends.
An addon called "blockem" can be installed to collapse/hide all posts from a particular person in your stream if you desire complete blocking of an individual, including their conversations with your other friends.
##### Archived
Communication is not possible and will not be attempted.
However unlike blocking, existing posts this person made before being archived will be visible in your stream.
However, unlike blocking, existing posts this person made before being archived will be visible in your stream.
##### Hidden
Contact not be displayed in your public friend list.
However a hidden contact will appear normally in conversations and this may expose their hidden status to anybody who can see the conversation.
However, a hidden contact will appear normally in conversations and this may expose their hidden status to anybody who can see the conversation.
<a name="removed"></a>
### What happens when an account is removed?
If you remove your account, it will be scheduled for permanent deletion in *seven days*.
As soon as you activate the deletion process you won't be able to login any more.
If you remove your account, it will be scheduled for permanent deletion in *seven days*.
As soon as you activate the deletion process you won't be able to log in anymore.
Only the administrator of your node can halt this process prior to permanent deletion.
After the elapsed time of seven days, all your posts, messages, photos, and personal information stored on your node will be deleted.
Your node will also issue removal requests to all your contacts; this will also remove your profile from the global directory if you are listed.
After the elapsed time of seven days, all your posts, messages, photos, and personal information stored on your node will be deleted.
Your node will also issue removal requests to all your contacts; this will also remove your profile from the global directory if you are listed.
Your username cannot be reissued for future sign-ups for security reasons.
<a name="hashtag"></a>
### Can I follow a hashtag?
Yes. Simply add the hash tag to your saved searches.
Yes. Simply add the hashtag to your saved searches.
The posts will appear on your network page.
For technical reasons, your answers to such posts won't appear on the "personal" tab in the network page and the whole thread isn't accessible via the API.
<a name="rss"></a>
### How to create a RSS feed of the stream?
### How to create an RSS feed of the stream?
If you want to share your public page via rss you can use one of the following links:
@ -178,47 +178,39 @@ The available features are client specific and may differ.
#### 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))
* [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
* [Fedi](https://play.google.com/store/apps/details?id=com.fediverse.app)
* [Fedi](https://github.com/Big-Fig/Fediverse.app) ([Google Play](https://play.google.com/store/apps/details?id=com.fediverse.app))
* [Fedilab](https://fedilab.app) ([F-Droid](https://f-droid.org/app/fr.gouv.etalab.mastodon), [Google Play](https://play.google.com/store/apps/details?id=app.fedilab.android))
* [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) ([F-Droid](https://git.friendi.ca/lubuwest/Friendiqa#install), [Google Play](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa))
* [Husky](https://git.sr.ht/~captainepoch/husky) ([F-Droid](https://f-droid.org/repository/browse/?fdid=su.xash.husky), [Google Play](https://play.google.com/store/apps/details?id=su.xash.husky))
* [Mastodon for Android](https://github.com/mastodon/mastodon-android) (F-Droid: Pending, [Google-Play](https://play.google.com/store/apps/details?id=org.joinmastodon.android))
* [Subway Tooter](https://github.com/tateisu/SubwayTooter)
* [Tooot](https://tooot.app/)
* [Mastodon](https://github.com/mastodon/mastodon-android) ([F-Droid](https://f-droid.org/en/packages/org.joinmastodon.android/), [Google Play](https://play.google.com/store/apps/details?id=org.joinmastodon.android))
* [Subway Tooter](https://github.com/tateisu/SubwayTooter) ([F-Droid](https://android.izzysoft.de/repo/apk/jp.juggler.subwaytooter))
* [Tooot](https://tooot.app/) ([Google Play](https://play.google.com/store/apps/details?id=com.xmflsct.app.tooot))
* [Tusky](https://tusky.app) ([F-Droid](https://f-droid.org/repository/browse/?fdid=com.keylesspalace.tusky), [Google Play](https://play.google.com/store/apps/details?id=com.keylesspalace.tusky))
* [Twidere](https://github.com/TwidereProject/Twidere-Android) ([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))
* [TwidereX](https://github.com/TwidereProject/TwidereX-Android) ([F-Droid](https://f-droid.org/en/packages/com.twidere.twiderex/), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex))
* [Yuito](https://github.com/accelforce/Yuito) ([Google Play](https://play.google.com/store/apps/details?id=net.accelf.yuito))
#### SailfishOS
* [Friendly](https://openrepos.net/content/fabrixxm/friendly), last update: 2018
#### iOS
* [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma) ([AppStore](https://apps.apple.com/app/b4x-pleroma/id1538396871))
* [Fedi](https://fediapp.com) ([AppStore](https://apps.apple.com/de/app/fedi-for-pleroma-and-mastodon/id1478806281))
* [Mastodon for iPhone and iPad](https://joinmastodon.org/apps) ([AppStore](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974))
* [Stella*](https://www.stella-app.net/) ([AppStore](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048))
* [Tooot](https://github.com/tooot-app) ([AppStore](https://apps.apple.com/app/id1549772269), Data collection (not linked to identity)
* [Tootle](https://mastodon.cloud/@tootleapp) ([AppStore](https://apps.apple.com/de/app/tootle-for-mastodon/id1236013466)), last update: 2020
* [Mastodon](https://joinmastodon.org/apps) ([App Store](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974))
* [Stella*](https://www.stella-app.net/) ([App Store](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048))
* [Tooot](https://github.com/tooot-app) ([App Store](https://apps.apple.com/app/id1549772269)
* [TwidereX](https://github.com/TwidereProject/TwidereX-iOS) ([App Store](https://apps.apple.com/app/twidere-x/id1530314034))
#### Linux
* [Choqok](https://choqok.kde.org)
* [Whalebird](https://whalebird.social)
* [TheDesk](https://ja.mstdn.wiki/TheDesk)
* [Whalebird](https://whalebird.social/en/desktop/contents) ([GitHub](https://github.com/h3poteto/whalebird-desktop))
* [TheDesk](https://thedesk.top/en/) ([GitHub](https://github.com/cutls/TheDesk))
* [Toot](https://toot.readthedocs.io/en/latest/)
* [Tootle](https://github.com/bleakgrey/tootle)
#### macOS
* [Mastonaut](https://mastonaut.app/) ([AppStore](https://apps.apple.com/us/app/mastonaut/id1450757574)), closed source
* [Whalebird](https://whalebird.social/en/desktop/contents) ([AppStore](https://apps.apple.com/de/app/whalebird/id1378283354), [GitHub](https://github.com/h3poteto/whalebird-desktop))
* [TheDesk](https://thedesk.top/en/) ([GitHub](https://github.com/cutls/TheDesk))
* [Whalebird](https://whalebird.social/en/desktop/contents) ([App Store](https://apps.apple.com/de/app/whalebird/id1378283354), [GitHub](https://github.com/h3poteto/whalebird-desktop))
#### Windows
* [TheDesk](https://thedesk.top/en/) ([GitHub](https://github.com/cutls/TheDesk))
* [Whalebird](https://whalebird.social/en/desktop/contents) ([Website Download](https://whalebird.social/en/desktop/contents/downloads#windows), [GitHub](https://github.com/h3poteto/whalebird-desktop))
#### Web Frontend

View File

@ -1,66 +0,0 @@
Forums
=====
* [Home](help)
Friendica also lets you create community forums and other types of accounts that can function as discussion forums, celebrity accounts, announcement channels, news reflectors, or organization pages, depending on how you want to interact with others. Management of these pages can be delegated to other accounts, or a parent account can be designated to easily toggle multiple identities.
Every page in Friendica has a nickname and these must all be unique. This applies to all forums, whether they are normal profiles or forum profiles.
Managing Accounts
---
To create a new linked account that can be used as a forum, log in to your normal account and go to Settings > Manage Accounts.
Here you can register additional accounts with new nicknames that will be linked to your primary account.
You may appoint a delegate to manage your new account (e.g. forum page).
The Delegates section of Manage Accounts page will provide you with a list of contacts on this instance under "Potential Delegates".
Selecting one or more persons will give them access to manage your forum.
They will be able to edit contacts, profiles, and all content for this account/page.
Please use this facility wisely.
Delegated managers will not be able to alter basic account settings, such as passwords or page types, or remove the account.
Additionally, this page is also where you can choose to designate an account as a parent user.
If your primary account is designated as the parent user, you will be able to easily toggle identities and manage your forums or other types of accounts.
Types of Accounts
---
On the new account, visit the Settings > Account page.
Towards the end of the page is a section for "Advanced account types".
Typically you would use "Personal Page - Standard" for a normal personal account with manual approval of “friends” and “followers.”
This is the default selection.
On this page you can change the type of account if desired.
The other subtypes of a Personal Page are “Soapbox” and “Love-all.”
A Soapbox account is an announcement channel that automatically approvals follower requests.
Everything posted by the account will go out to the followers, but there will be no opportunity for interaction.
This setting would typically be used for announcements or corporate communications.
“Love-all” automatically approves contacts as friends.
In addition to Personal Page, there are options for Organization Page, News Page, and Community Forum.
Organization and New Pages automatically approve contact requests as followers.
Community Forum provide the ability for people to become friends/fans of the forum without requiring approval.
This creates a forum page where all members can freely interact.
Posting to Community forums
---
If you are a member of a community forum, you may post to the forum by including an @-tag in the post mentioning the forum.
For example @bicycle would send my post to all members of the group "bicycle" in addition to the normal recipients.
If you mention a forum (you are a member of) in a new posting, the posting will be distributed to all members of the forum, regardless of your privacy settings for the posting.
Also, if the forum is a public forum, your posting will be public for the all internet users.
If your post is private you must also explicitly include the group in the post permissions (to allow the forum "contact" to see the post) **and** mention it in a tag (which redistributes the post to the forum members).
Posting privately to a public forum, will result in your posting being displayed on the forum wall, but not on yours.
Additionally it is possible to address a forum with the exclamation mark.
In the example above this means that you can address the bicycle forum via !bicycle.
The difference to the @ is that the post will only be sent to the addressed forum.
This also means that you shouldn't address multiple forums in a single post in that way since it will only be distributed by one the forums.
You may also post to a community forum by posting a "wall-to-wall" post using secure cross-site authentication.
Comments which are relayed to community forums will be relayed back to the original post creator.
Mentioning the forum with an @-tag in a comment does not relay the message, as distribution is controlled entirely by the original post creator.

View File

@ -3,7 +3,7 @@ Friendica on GitHub
* [Home](help)
Here is how you can work on the code with us. If you have any questions please write to the Friendica developers' forum.
Here is how you can work on the code with us. If you have any questions please write to the Friendica developers' group.
Introduction to the workflow with our GitHub repository
-------------------------------------------------------

68
doc/Groups.md Normal file
View File

@ -0,0 +1,68 @@
Groups
=====
* [Home](help)
Friendica also lets you create accounts that can function as discussion groups, celebrity accounts, announcement channels, news reflectors, or organization pages, depending on how you want to interact with others.
Management of these accounts can be delegated to other accounts, or a parent account can be designated to easily toggle multiple identities.
Every account in Friendica has a nickname and these must all be unique.
This applies to all accounts, whether they are individual profiles or group profiles.
Managing Accounts
---
To create a new linked account that can be used as a group, log in to your normal account and go to Settings > Manage Accounts.
Here you can register additional accounts with new nicknames that will be linked to your primary account.
You may appoint a delegate to manage your new account.
The Delegates section of Manage Accounts page will provide you with a list of contacts on this instance under "Potential Delegates".
Selecting one or more persons will give them access to manage your newly created account.
They will be able to edit contacts, profiles, and all content for this account.
Please use this facility wisely.
Delegated managers will not be able to alter basic account settings, such as passwords or account types, or remove the account.
Additionally, this page is also where you can choose to designate an account as a parent user.
If your primary account is designated as the parent user, you will be able to easily toggle identities and manage your groups or other types of accounts.
Types of Accounts
---
On the new account, visit the Settings > Account page.
Towards the end of the page is a section for "Advanced account types".
Typically, you would use "Personal Page - Standard" for a normal personal account with manual approval of “friends” and “followers.”
This is the default selection.
On this page you can change the type of account if desired.
The other subtypes of a Personal Page are “Soapbox” and “Love-all.”
A Soapbox account is an announcement channel that automatically approvals follower requests.
Everything posted by the account will go out to the followers, but there will be no opportunity for interaction.
This setting would typically be used for announcements or corporate communications.
“Love-all” automatically approves contacts as friends.
In addition to Personal Page, there are options for Organization Page, News Page, and Community Group.
Organization and New Pages automatically approve contact requests as followers.
Community Group provide the ability for people to join the group without requiring approval.
This creates a group where all members can freely interact.
Posting to Community groups
---
If you are a member of a community group, you may post to the group by including an @-mention in the post mentioning the group.
For example @bicycle would send my post to all members of the group "bicycle" in addition to the normal recipients.
If you mention a group (you are a member of) in a new posting, the posting will be distributed to all members of the group, regardless of your privacy settings for the posting.
Also, if the group is public, your posting will be public for the all internet users.
If your post is private you must also explicitly include the group in the post permissions (to allow the group "contact" to see the post) **and** mention it in a tag (which redistributes the post to the group members).
Posting privately to a public group, will result in your posting being displayed on the group wall, but not on yours.
Additionally, it is possible to address a group with the exclamation mark.
In the example above this means that you can address the bicycle group via !bicycle.
The difference with the @-mention is that the post will only be sent to the addressed group.
This also means that you shouldn't address multiple groups in a single post in that way since it will only be distributed by one the groups.
You may also post to a community group by posting a "wall-to-wall" post using secure cross-site authentication.
Comments which are relayed to community groups will be relayed back to the original post creator.
Mentioning the group with an @-mention in a comment does not relay the message, as distribution is controlled entirely by the original post creator.

View File

@ -14,9 +14,10 @@ Friendica Documentation and Resources
* You and other users
* [Connectors](help/Connectors)
* [Making Friends](help/Making-Friends)
* [Groups and Privacy](help/Groups-and-Privacy)
* [Circles and Privacy](help/Circles-and-Privacy)
* [Tags and Mentions](help/Tags-and-Mentions)
* [Community Forums](help/Forums)
* [Community Groups](help/Groups)
* [Channels](help/Channels)
* [Chats](help/Chats)
* Further information
* [Move your account](help/Move-Account)
@ -42,7 +43,7 @@ Friendica Documentation and Resources
* [Get started](help/Developers-Intro)
* Set up development environment
* [Help on Github](help/Github)
* [Help on GitHub](help/GitHub)
* [Help on Vagrant](help/Vagrant)
* [Bugs and Issues](help/Bugs-and-Issues)
* Code structure
@ -67,9 +68,9 @@ Friendica Documentation and Resources
* [Main Website](https://friendi.ca)
* Ways to get Support
* Friendica Support Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers)
* Friendica Support Group: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers)
* [Mailing List Archive](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca) you can subscribe to the list by sending an email to ``support-request(at)friendi.ca?subject=subscribe``
* Community chat rooms (the IRC, Matrix and XMPP rooms are bridget) these public chats are logged [from IRC](https://gnusociarg.nsupdate.info/2021/%23friendica/) and [Matrix](https://view.matrix.org/alias/%23friendi.ca:matrix.org/)
* Community chat rooms (the IRC, Matrix and XMPP rooms are bridged) these public chats are logged [from IRC](https://gnusociarg.nsupdate.info/2021/%23friendica/) and [Matrix](https://view.matrix.org/alias/%23friendi.ca:matrix.org/)
* XMPP/Jabber MUC: support(at)forum.friendi.ca
* IRC: #friendica at [libera.chat](https://web.libera.chat/?channels=#friendica)
* Matrix: [#friendi.ca](https://matrix.to/#/#friendi.ca:matrix.org) or [#friendica-en](https://matrix.to/#/#friendica-en:matrix.org) at matrix.org

View File

@ -3,7 +3,7 @@ How to improve the performance of a Friendica site
* [Home](help)
Feel free to ask in the [Friendica support forum](https://forum.friendi.ca/profile/helpers) if you need some clarification about the following instructions or if you need help in any other way.
Feel free to ask in the [Friendica support group](https://forum.friendi.ca/profile/helpers) if you need some clarification about the following instructions or if you need help in any other way.
System configuration
--------
@ -31,7 +31,7 @@ Active the following addons:
### rendertime
This addon doesn't speed up your system.
This addon doesn't speed up your system.
It helps to analyze your bottlenecks.
When enabled you see some values at the bottom of every page.
@ -81,6 +81,6 @@ Please refer to external documentation for a more detailed explanation how to se
### Database
There are scripts like [tuning-primer.sh](http://www.day32.com/MySQL/) and [mysqltuner.pl](http://mysqltuner.pl) that analyze your database server and give hints on values that could be changed.
There are scripts like [tuning-primer.sh](https://github.com/BMDan/tuning-primer.sh) and [mysqltuner.pl](https://github.com/major/MySQLTuner-perl/blob/master/mysqltuner.pl) that analyze your database server and give hints on values that could be changed.
Please enable the slow query log. This helps to find performance problems.

View File

@ -15,7 +15,7 @@ Many will.
But **please** review the [requirements](#Requirements) and confirm these with your hosting provider prior to installation.
## Support
If you encounter installation issues, please let us know via the [helper](http://forum.friendi.ca/profile/helpers) or the [developer](https://forum.friendi.ca/profile/developers) forum or [file an issue](https://github.com/friendica/friendica/issues).
If you encounter installation issues, please let us know via the [helper](http://forum.friendi.ca/profile/helpers) or the [developer](https://forum.friendi.ca/profile/developers) group or [file an issue](https://github.com/friendica/friendica/issues).
Please be as clear as you can about your operating environment and provide as much detail as possible about any error messages you may see, so that we can prevent it from happening in the future.
Due to the large variety of operating systems and PHP platforms in existence we may have only limited ability to debug your PHP installation or acquire any missing modules - but we will do our best to solve any general code issues.
@ -23,14 +23,14 @@ Due to the large variety of operating systems and PHP platforms in existence we
## Prerequisites
* Choose a domain name or subdomain name for your server. Put some thought into this. While changing it after installation is supported, things still might break.
* Setup HTTPS on your domain.
* Setup HTTPS on your domain.
### Requirements
* Apache with mod-rewrite enabled and "Options All" so you can use a local `.htaccess` file
* PHP 7.3+ (PHP8 is not fully supported yet)
* PHP 7.3+
* PHP *command line* access with register_argc_argv set to true in the php.ini file
* Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip and OpenSSL extensions
* Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip, IntlChar and OpenSSL extensions
* The POSIX module of PHP needs to be activated (e.g. [RHEL, CentOS](http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7) have disabled it)
* Some form of email server or email gateway such that PHP mail() works.
If you cannot set up your own email server, you can use the [phpmailer](https://github.com/friendica/friendica-addons/tree/develop/phpmailer) addon and use a remote SMTP server.
@ -42,7 +42,7 @@ Due to the large variety of operating systems and PHP platforms in existence we
For alternative server configurations (such as Nginx server and MariaDB database engine), refer to the [Friendica wiki](https://github.com/friendica/friendica/wiki).
### Optional
### Optional
* PHP ImageMagick extension (php-imagick) for animated GIF support.
@ -51,10 +51,13 @@ For alternative server configurations (such as Nginx server and MariaDB database
### Alternative Installation Methods
This guide will walk you through the manual installation process of Friendica.
If this is nothing for you, you might be interested in
If this is nothing for you, you might be interested in the following:
* the [Friendica Docker image](https://github.com/friendica/docker) or
* how to [install Friendica with YunoHost](https://github.com/YunoHost-Apps/friendica_ynh).
* the [Friendica Docker image](https://github.com/friendica/docker)
* how to [install Friendica with YunoHost](https://github.com/YunoHost-Apps/friendica_ynh)
* [Tutorial: Creating a Friendica Server with Ubuntu 22.04](https://nequalsonelifestyle.com/2022/07/30/creating-friendica-server-ubuntu/)
* [Setting Up Friendica Daemon as a Systemd Service Tutorial](https://nequalsonelifestyle.com/2022/08/04/setting-up-friendica-daemon-systemd-service/)
* [Setting up Friendica on Unraid](https://www.jenovarain.com/2023/03/setting-up-friendica-on-unraid/) (NAS)
### Get Friendica
@ -102,11 +105,11 @@ If you encounter a bug, please let us know.
### Create a database
Create an empty database and note the access details (hostname, username, password, database name).
Create an empty database and note the access details (hostname, username, password, database name).
Generate a strong password, then enter mysql with:
mysql
Then use the following script using the password you just generated:
CREATE DATABASE friendicadb;
@ -145,7 +148,7 @@ You have the following options to automatically install Friendica:
- using environment variables (f.e. `MYSQL_HOST`)
- using options (f.e. `--dbhost <host>`)
You can combine environment variables and options, but be aware that options are prioritized over environment variables.
You can combine environment variables and options, but be aware that options are prioritized over environment variables.
For more information during the installation, you can use this command line option
@ -154,7 +157,7 @@ For more information during the installation, you can use this command line opti
If you wish to include all optional checks, use `-a` like this statement:
bin/console autoinstall -a
*If* the automatic installation fails for any reason, check the following:
* Does `config/local.config.php` already exist? If yes, the automatic installation won't start
@ -168,7 +171,7 @@ You can use a prepared config file like [local-sample.config.php](/config/local-
Navigate to the main Friendica directory and execute the following command:
bin/console autoinstall -f <prepared.config.php>
#### B.2: Environment variables
There are two types of environment variables.
@ -191,7 +194,7 @@ if you don't use the option `--savedb` during installation, the DB credentials w
**Friendica settings**
This variables wont be used at normal Friendica runtime.
Instead, they get saved into `config/local.config.php`.
Instead, they get saved into `config/local.config.php`.
- `FRIENDICA_URL_PATH` The URL path of Friendica (f.e. '/friendica')
- `FRIENDICA_PHP_PATH` The path of the PHP binary
@ -228,14 +231,14 @@ Copy `.htaccess-dist` to `.htaccess` (be careful under Windows) to have working
Example:
cp .htacces-dist .htaccess
cp .htaccess-dist .htaccess
*Note*: Do **not** rename the `.htaccess-dist` file as it is tracked by GIT and renaming will cause a dirty working directory.
### Verify the "host-meta" page is working
Friendica should respond automatically to important addresses under the */.well-known/* rewrite path.
One critical URL would look like, for example: https://example.com/.well-known/host-meta
One critical URL would look like, for example: https://example.com/.well-known/host-meta
It must be visible to the public and must respond with an XML file that is automatically customized to your site.
If that URL is not working, it is possible that some other software is using the /.well-known/ path.
@ -254,7 +257,7 @@ It may be necessary to chmod the /.well-known/.htaccess file if you were not giv
At this point visit your website again, and register your personal account with the same email as in the `config.admin_email` config value.
Registration errors should all be recoverable automatically.
If you get any *critical* failure at this point, it generally indicates the database was not installed correctly.
If you get any *critical* failure at this point, it generally indicates the database was not installed correctly.
You might wish to delete/rename `config/local.config.php` to another name and drop all the database tables so that you can start fresh.
## Post Install Configuration
@ -292,7 +295,7 @@ Once started, you can check the daemon status using the following command:
cd /path/to/friendica; php bin/daemon.php status
After a server restart or any other failure, the daemon needs to be restarted.
After a server restart or any other failure, the daemon needs to be restarted.
This could be achieved by a cronjob.
### (RECOMMENDED) Logging & Log Rotation
@ -350,7 +353,7 @@ Often this will need to be resolved with your hosting provider or (if self-hoste
First check your file permissions.
Your website and all contents must generally be world-readable.
Ensure that mod-rewite is installed and working, and that your `.htaccess` file
Ensure that mod-rewrite is installed and working, and that your `.htaccess` file
is being used. To verify the latter, create a file `test.out` containing the
word "test" in the top directory of Friendica, make it world readable and point
your web browser to
@ -405,7 +408,7 @@ provided by one of our members.
> On my server I use the php protection system Suhosin [http://www.hardened-php.net/suhosin/].
> One of the things it does is to block certain functions like proc_open, as
> configured in `/etc/php5/conf.d/suhosin.ini`:
>
>
> suhosin.executor.func.blacklist = proc_open, ...
>
> For those sites like Friendica that really need these functions they can be
@ -415,34 +418,34 @@ provided by one of our members.
> php_admin_value suhosin.executor.func.blacklist none
> php_admin_value suhosin.executor.eval.blacklist none
> </Directory>
>
>
> This enables every function for Friendica if accessed via browser, but not for
> the cronjob that is called via php command line. I attempted to enable it for
> cron by using something like:
>
>
> */10 * * * * cd /var/www/friendica/friendica/ && sudo -u www-data /usr/bin/php \
> -d suhosin.executor.func.blacklist=none \
> -d suhosin.executor.eval.blacklist=none -f bin/worker.php
>
>
> This worked well for simple test cases, but the friendica-cron still failed
> with a fatal error:
>
>
> suhosin[22962]: ALERT - function within blacklist called: proc_open()
> (attacker 'REMOTE_ADDR not set', file '/var/www/friendica/friendica/boot.php',
> line 1341)
>
>
> After a while I noticed, that `bin/worker.php` calls further PHP script via `proc_open`.
> These scripts themselves also use `proc_open` and fail, because they are NOT
> called with `-d suhosin.executor.func.blacklist=none`.
>
>
> So the simple solution is to put the correct parameters into `config/local.config.php`:
>
>
> 'config' => [
> //Location of PHP command line processor
> 'php_path' => '/usr/bin/php -d suhosin.executor.func.blacklist=none \
> -d suhosin.executor.eval.blacklist=none',
> ],
>
>
> This is obvious as soon as you notice that the friendica-cron uses `proc_open`
> to execute PHP scripts that also use `proc_open`, but it took me quite some time to find that out.
> I hope this saves some time for other people using suhosin with function blocklists.
@ -463,9 +466,11 @@ After that, restart mysql and try again.
### Your worker never or rarely runs
Friendica is coded to always play nice. It checks whether the host machine is idle enough and if it _seems_ to be overloaded, it intermittently refuses to process the worker queue.
Friendica is coded to always play nice.
It checks whether the host machine is idle enough and if it _seems_ to be overloaded, it intermittently refuses to process the worker queue.
Such checks originate from the days of single-user single-core machines and involves thresholds that you should adjust based on the number of exclusive CPU cores you have. See this issue for more information:
Such checks originate from the days of single-user single-core machines and involves thresholds that you should adjust based on the number of exclusive CPU cores you have.
See this issue for more information:
* https://github.com/friendica/friendica/issues/10131
@ -482,28 +487,40 @@ You tried to upload an image up to 100kB and it failed.
You may not have the ownership or file mode set correctly if you are using the file system storage backend.
Change the backend to database. If this solves it, that is what needs to be fixed.
Change the backend to database.
If this solves it, that is what needs to be fixed.
Verify in your PHP ini:
* `file_uploads`: should be `1`
* `upload_tmp_dir`: should be writable (falls back to system default temp) and not blocked by `open_basedir`
### Error uploading large files
You may find `413 Request Entity Too Large` or `500 Internal Error` in the network inspector of the browser if the file is too large, for example if it is a video.
First try to upload a very small file, up to 100kB. If that succeeds, you will need to increase limits at multiple places, including on any web proxy that you are using.
First try to upload a very small file, up to 100kB.
If that succeeds, you will need to increase limits at multiple places, including on any web proxy that you are using.
Which one applies to you depends on your installation.
In your PHP ini:
* `upload_max_filesize`: defaults to 2MB
* `post_max_size`: defaults to 8MB, must be greater than `upload_max_filesize`
* `memory_limit`: defaults to 128MB, must be greater than `post_max_size`
* `max_input_time`: time limit of an upload, defaults to -1, meaning it uses `max_execution_time` instead
* `max_execution_time`: defaults to 30 seconds, should be enough if you also set `max_input_time`
You should verify whether you changed them in the _right file_ by checking the web interface at the end of the overview on the `Admin` panel.
For Apache2:
In your Apache2 config:
* `LimitRequestBody`: defaults to unlimited
* `FcgidMaxRequestLen`: defaults to 128kB
* `SSLRenegBufferSize`: defaults to 128kB, only if your site uses TLS and perhaps only when using `SSLVerifyClient` or `SSLVerifyDepth`
* Remove `LoadModule reqtimeout_module modules / mod_reqtimeout.so` or adjust `RequestReadTimeout`: defaults to 20 seconds and >= 500 byte/second
For nginx:
In your nginx config:
* `client_max_body_size`: defaults to 1MB
@ -511,7 +528,28 @@ If you are using the database backend for storage, increase this in your SQL con
* `max_allowed_packet`: defaults to 32MB
If you use the ModSecurity WAF:
In your ModSecurity WAF config:
* `SecRequestBodyLimit`: defaults to 12MB
* `SecRequestBodyNoFilesLimit`: defaults to 128kB, should not apply to Friendica
In the end, you will need to restart all services that you have changed configuration for.
If you don't know which ones these are, just reboot.
### Diaspora support is not activated
You get this error when you try to add a Diaspora contact.
You can enable it from the web interface in `Admin -> Site -> Policies -> Enable diaspora* support`.
You may also set it manually in the config file or in the database within the `diaspora_enabled` key of the `system` category.
### Upgrade failed due to DB migration timeout
Altering of a table may fail if it contains a large number of rows.
First verify the existing timeout (50s by default):
`show global variables like "innodb_lock_wait_timeout";`
Then increase it:
`set global innodb_lock_wait_timeout=600;`

View File

@ -20,20 +20,20 @@ You'll also see a link to a **Global Directory**.
There are several global directories across the globe that regularly exchange information with each other.
The specific global directory that you see usually depends on where your server is located.
If you click through to the global directory, you will be presented with a list of everybody who choses to be listed across all instances of Friendica.
You will also see a "Show Community Forums" link, which will direct you to Groups, Forums and Fanpages.
You connect to people, groups and forums in the same way, except groups and forums will automatically accept your introduction request, whereas a human will approve you manually.
You will also see a "Show Community Groups" link, which will direct you to Groups.
You connect to people and groups the same way, public groups will automatically accept your introduction, whereas private groups and some individual users will need to manually approve it.
Connect to other Friendica users
---
Visit their profile.
Just beneath their profile picture will be the word 'Connect' (we're assuming this is an English language profile).
Click that 'Connect' button and it will take you to a 'Connect' form.
Click that 'Connect' button, and it will take you to a 'Connect' form.
The form is going to ask you for your Identity Address.
This is necessary so that this person's website can find yours.
This is necessary so that this person's website can find yours.
If your Friendica site is called "demo.friendica.com" and your username/nickname on that site is "bob", you would enter "bob@demo.friendica.com" in this form.
If your Friendica site is called "demo.friendica.com" and your username/nickname on that site is "bob", you would enter "bob@demo.friendica.com" in this form.
Notice this looks just like an email address.
It's meant to be that way.
@ -41,8 +41,8 @@ It's easy for people to remember.
You *could* also put in the URL of your "home" page, such as "http://demo.friendica.com/profile/bob" instead of the email-style address.
When you've submitted the connection page, it will take you back to your own site where you must then login (if necessary) and verify the connection request on *your* site.
Once you've done this, the two websites can communicate with each other to complete the process (after your new friend has approved the request).
When you've submitted the connection page, it will take you back to your own site where you must then log in (if necessary) and verify the connection request on *your* site.
Once you've done this, the two websites can communicate with each other to complete the process (after your new friend has approved the request).
If you already know somebody's Identity Address, you can enter it in the "connect" box on your "Contacts" page.
This will take you through a similar process.
@ -50,35 +50,35 @@ This will take you through a similar process.
Connect to users of alternate networks
---
### Across the Federation and Fedivese
You can also use your Identity Address or other people's Identity Addresses to become friends across the so-called Federation/Fedivese of open source social media.
### Across the Federation and Fediverse
You can also use your Identity Address or other people's Identity Addresses to become friends across the so-called Federation/Fediverse of open source social media.
Currently, Friendica supports connections with people on diaspora*, Red, Hubzilla, GNU Social, StatusNet, Mastodon, Pleroma, socialhome, and ganggo platforms.
If you know (for instance) "alice" on gnusocial.net (a GNU Social site) you could put alice@gnusocial.net into your Contact page and become friends across networks.
Likwise you can put in the URL to Alice's gnusocial.net page, if you wish.
Likewise, you can put in the URL to Alice's gnusocial.net page, if you wish.
Note: Some versions of GNU Social software may require the full URL to your profile and may not work with the identity address.
People on these networks can also initiate contact with you, if they know your contact details.
### Other social media
If you server provides this functionality, you can also connect with people one
Twitter or important feeds from Tumblr, Wordpress, and many more.
Twitter or important feeds from Tumblr, WordPress, and many more.
To connect, enter their contact details in the "connect" box on your "Contacts" page.
### Email
If you have supplied your mailbox connection information on your Settings page, you can enter the email address of anybody that has sent you a message recently and have their email messages show up in your social stream.
You can also reply to them from within Friendica.
You can also reply to them from within Friendica.
Create an email contact with for example Alice on Gmail, enter her email in following format "mailto:alice@gmail.no".
In order to avoid abuse or spam, you must have an email from Alice with the correct email address in your email inbox.
Subscribing to mailing lists is done in the same way, but without the use of the "mailto:" prefix.
To subscribe to a mailing list, enter the email in following example format "mailling-list@list-server.net".
To subscribe to a mailing list, enter the email in following example format "mailing-list@list-server.net".
### Syndication feeds
You can "follow" almost anybody or any website that produces a syndication feed (RSS/Atom,etc.).
If we can find an information stream and a name to attach to the contact, we'll try to connect with them.
If we can find an information stream and a name to attach to the contact, we'll try to connect with them.
Notification
---
@ -88,24 +88,24 @@ You will usually need to approve this before the friendship is complete.
Approval
---
Some networks allow people to send you messages without being friends and without your approval.
Friendica does not allow this by default, as it would open a gateway for spam.
Friendica does not allow this by default, as it would open a gateway for spam.
Unilateral or bilateral friendships
---
When you receive a friendship notification from another Friendica member, you will have the option of allowing them as a "Follower" or as a "Friend".
If they are a follower, they can see what you have to say, including private communications that you send to them, but not vice versa.
As a friend, you can both communicate with each other.
As a friend, you can both communicate with each other.
diaspora* uses a different terminology, and you are given the option of allowing them to "share with you", or being full friends.
diaspora* uses a different terminology, and you are given the option of allowing them to "share with you", or being full friends.
Ignoring, blocking and deleting contacts
---
Once you have become friends, if you find the person constantly sends you spam or worthless information, you can "Ignore" them - without breaking off the friendship or even alerting them to the fact that you aren't interested in anything they are saying.
In many ways they are like a "follower" - but they don't know this.
They think they are a friend.
They think they are a friend.
You can also "block" a person.
This completely blocks communications with that person.
They may still be able to see your public posts, as can anybody in the world, but they cannot communicate with you directly.
They may still be able to see your public posts, as can anybody in the world, but they cannot communicate with you directly.
You can also delete a friend no matter what the friendship status - which completely removes everything relating to that person from your website.

View File

@ -8,18 +8,18 @@ How to move your account between servers
* Go to "Settings" -> "[Export personal data](uexport)"
* Click on "Export account" to save your account data.
* **Save the file in a secure place!** It contains your details, your contacts, groups, and personal settings. It also contains your secret keys to authenticate yourself to your contacts.
* Go to your new server, and open *http://newserver.com/uimport* (there is not a direct link to this page at the moment). Please consider that this is only possible on servers with open registration. On other systems only the administrator can add accounts with an uploaded file.
* Do NOT create a new account prior to importing your old settings - uimport should be used *instead* of register.
* **Save the file in a secure place!** It contains your details, your contacts, circles, and personal settings. It also contains your secret keys to authenticate yourself to your contacts.
* Go to your new server, and open *http://newserver.com/user/import* (there is not a direct link to this page at the moment). Please consider that this is only possible on servers with open registration. On other systems only the administrator can add accounts with an uploaded file.
* Do NOT create a new account prior to importing your old settings - user import should be used *instead* of register.
* Load your saved account file and click "Import".
* After the move, the account on the old server will not work reliably anymore, and should be not used.
Friendica contacts
---
Friendica will recreate your account on the new server, with your contacts and groups.
Friendica will recreate your account on the new server, with your contacts and circles.
A message is sent to Friendica contacts, to inform them about your move:
If your contacts are runnning on an updated server, your details on their side will be automatically updated.
If your contacts are running on an updated server, your details on their side will be automatically updated.
GNU Social contacts
---

View File

@ -4,8 +4,7 @@ Here are some more things to help get you started:
**Groups**
- <a href="http://forum.friendi.ca/profile/helpers">Friendica Support</a> - problems? This is the place to ask.
- <a href="https://forum.friendi.ca/profile/helpers">Friendica Support</a> - problems? This is the place to ask.
**Documentation**

View File

@ -1,9 +1,9 @@
This is the global directory.
If you get lost, you can <a href = "help/Quick-Start-groupsandpages">click this link</a> to bring yourself back here.
On this page, you'll find a collection of groups, forums and celebrity pages.
On this page, you'll find a collection of groups.
Groups are not real people.
Connecting to them is similar to "liking" something on Facebook, or signing up for a new forum.
Connecting to them is similar to "liking" something on Facebook, or signing up for a new group.
You don't have to feel awkward about introducing yourself to a new person, because they're not people!
When you connect to a group, all messages to that group will start appearing in your network tab.
@ -15,6 +15,6 @@ Remember the link at the top of this page will bring you back here.
Once you've added some groups, <a href="help/Quick-Start-andfinally">move on to the next section</a>.
<iframe src="https://dir.friendica.social/forum" width="950" height="600"></iframe>
<iframe src="https://dir.friendica.social/group" width="950" height="600"></iframe>

View File

@ -4,7 +4,7 @@ If you're not already logged in, do so in the frame below.
Once you've logged in (or if you are already logged in), you'll now be looking at your profile page.
This is a bit like a Facebook wall.
It's where all your status messgages are kept, and where your friends come to post on your wall.
It's where all your status messages are kept, and where your friends come to post on your wall.
To write your status, simply click on the Pencil & Paper icon in the top right (in the Frio theme), or click in the box that says "share" (other themes).
When you do this, the posting dialog box will appear or the share box will expand.

View File

@ -5,7 +5,7 @@ Remove Account
We don't like to see people leave Friendica, but if you need to remove your account, you should visit the URL
http://sitename/removeme
http://sitename/settings/removeme
with your web browser.
You will need to be logged in at the time.

View File

@ -77,11 +77,11 @@ Additionally to the setting in the admin panel, you can decide if registrations
To enable invitation based registration, you have to set the `invitation_only` setting to `true` in the `system` section of the [config/local.config.php](/help/Config) file.
If you want to use this method, the registration policy has to be set to either *open* or *requires approval*.
#### Check Full Names
#### Check Display Names
You may find a lot of spammers trying to register on your site.
During testing we discovered that since these registrations were automatic, the "Full Name" field was often set to just an account name with no space between first and last name.
If you would like to support people with only one name as their full name, you may change this setting to true.
During testing we discovered that since these registrations were automatic, the "Display Name" field was often set to just an account name with no space between first and last name.
If you would like to support people with only one name as their display name, you can leave this setting set to false.
Default is false.
#### OpenID
@ -104,12 +104,12 @@ Default is false.
#### File storage backend
Set the backend used by Friendica to store uploaded file data.
Two storage backends are avaiable with Friendica:
Two storage backends are available with Friendica:
- **Database** : Data is stored in a dedicated table in database (`storage`)
- **Filesystem** : Data is stored as file on the filesystem.
More storage backends can be avaiable from third-party addons.
More storage backends can be available from third-party addons.
If you use those, please refer to the documentation of those addons for further information.
Default value is 'Database (legacy)': it's the legacy way used to store data directly in database.

89
doc/StrategyHooks.md Normal file
View File

@ -0,0 +1,89 @@
Friendica strategy Hooks
===========================================
* [Home](help)
## Strategy hooks
This type of hook is based on the [Strategy Design Pattern](https://refactoring.guru/design-patterns/strategy).
A strategy class defines a possible implementation of a given interface based on a unique name.
Every name is possible as long as it's unique and not `null`.
Using an empty name (`''`) is possible as well and should be used as the "default" implementation.
To register a strategy, use the [`ICanRegisterInstance`](../src/Core/Hooks/Capability/ICanRegisterInstances.php) interface.
After registration, a caller can automatically create this instance with the [`ICanCreateInstances`](../src/Core/Hooks/Capability/ICanCreateInstances.php) interface and the chosen name.
This is useful in case there are different, possible implementations for the same purpose, like for logging, locking, caching, ...
Normally, a config entry is used to choose the right implementation at runtime.
And if no config entry is set, the "default" implementation should be used.
### Example
```php
interface ExampleInterface
{
public function testMethod();
}
public class ConcreteClassA implements ExampleInterface
{
public function testMethod()
{
echo "concrete class A";
}
}
public class ConcreteClassB implements ExampleInterface
{
public function testMethod()
{
echo "concrete class B";
}
}
/** @var \Friendica\Core\Hooks\Capability\ICanRegisterStrategies $instanceRegister */
$instanceRegister->registerStrategy(ExampleInterface::class, ConcreteClassA::class, 'A');
$instanceRegister->registerStrategy(ExampleInterface::class, ConcreteClassB::class, 'B');
/** @var \Friendica\Core\Hooks\Capability\ICanCreateInstances $instanceManager */
/** @var ConcreteClassA $concreteClass */
$concreteClass = $instanceManager->create(ExampleInterface::class, 'A');
$concreteClass->testMethod();
// output:
// "concrete class A";
```
## hooks.config.php
To avoid registering all strategies manually inside the code, Friendica introduced the [`hooks.config.php`](../static/hooks.config.php) file.
There, you can register all kind of strategies in one file.
### [`HookType::STRATEGY`](../src/Core/Hooks/Capability/HookType.php)
For each given interface, a list of key-value pairs can be set, where the key is the concrete implementation class and the value is an array of unique names.
### Example
```php
use Friendica\Core\Hooks\Capability\BehavioralHookType as H;
return [
H::STRATEGY => [
ExampleInterface::class => [
ConcreteClassA::class => ['A'],
ConcreteClassB::class => ['B'],
],
],
];
```
## Addons
The hook logic is useful for decoupling the Friendica core logic, but its primary goal is to modularize Friendica in creating addons.
Therefor you can either use the interfaces directly as shown above, or you can place your own `hooks.config.php` file inside a `static` directory directly under your addon core directory.
Friendica will automatically search these config files for each **activated** addon and register the given hooks.

View File

@ -15,7 +15,7 @@ You can tag **persons who are in your social circle** by adding the "@"-sign in
* @mike - indicates a known contact in your social circle whose nickname is "mike"
* @mike_macgirvin - indicates a known contact in your social circle whose full name is "Mike Macgirvin". Note that spaces cannot be used inside tags.
* @mike+151 - this form is used by the drop-down tag completion tool. It indicates the contact whose nickname is mike and whose contact identifier number is 151. The drop-down tool may be used to resolve people with duplicate nicknames.
* @mike+151 - this form is used by the drop-down tag completion tool. It indicates the contact whose nickname is mike and whose contact identifier number is 151. The drop-down tool may be used to resolve people with duplicate nicknames.
You can tag a person on a different network or one that is **not in your social circle** by using the following notation:
@ -23,27 +23,27 @@ You can tag a person on a different network or one that is **not in your social
Unless their system blocks unsolicited "mentions", the person tagged will likely receive a "Mention" post/activity or become a direct participant in the conversation in the case of public posts.
Friendica blocks incoming “mentions” from people with no relationship to you.
The exception is an ongoing conversation started from a contact of both you and the 3rd person or a conversation in a forum where you are a member of.
The exception is an ongoing conversation started from a contact of both you and the 3rd person or a conversation in a group where you are a member of.
This is a spam prevention measure.
Remote mentions are delivered using the OStatus protocol.
This protocol is used by Friendica and GNU Social and several other systems like Mastodon, but is not currently implemented in Diaspora.
As the OStatus protocol allows this Friendica user can be @-mentioned by users from platforms using this protocol in conversations if the "Enable OStatus support" is activated on the Friendica node.
These @-mentions wont be blocked, even if there is no relationship between the sender and the receiver of the message.
These @-mentions won't be blocked, even if there is no relationship between the sender and the receiver of the message.
Friendica makes no distinction between people and forums for the purpose of tagging.
You can use @-mentions for forums like for other accounts to tag the forum.
If you want to post something exclusively to a forum (e.g. the support forum) please use the bang-notation instead of the @tag.
So !helpers will be an exclusive posting to the support forum if you are connected with the forum.
If you select a forum from the ACL a !-mention will be added automatically to your posting.
Friendica makes no distinction between people and groups for the purpose of tagging.
You can use @-mentions for groups like for other accounts to tag the group.
If you want to post something exclusively to a group (e.g. the support group) please use the !-mention instead of the @-mention.
So !helpers will be an exclusive posting to the support group if you are connected with the group.
If you select a group from the ACL a !-mention will be added automatically to your posting.
If you sort your contacts into groups, you cannot @-mention these groups.
But you can select the group in the access control when creating a new posting, to allow (or disallow) a certain group of people to see the posting.
See [Groups and Privacy](help/Groups-and-Privacy) for more details about grouping your contacts.
If you sort your contacts into circles, you cannot @-mention these circles.
But you can select the circle in the access control when creating a new posting, to allow (or disallow) a certain circle of people to see the posting.
See [Circles and Privacy](help/Circles-and-Privacy) for more details about grouping your contacts.
**Topical Tags**
Topical tags are indicated by preceding the tag name with the # character.
Topical tags are indicated by preceding the tag name with the # character.
This will create a link in the post to a generalised site search for the term provided.
For example, #cars will provide a search link for all posts mentioning 'cars' on your site.
Topical tags are generally a minimum of three characters in length.
@ -52,5 +52,5 @@ The same rules apply as with names that spaces within tags are represented by th
It is therefore not possible to create a tag whose target contains an underscore.
Topical tags are also not linked if they are purely numeric, e.g. #1.
If you wish to use a numerica hashtag, please add some descriptive text such as #2012-elections.
If you wish to use a numeric hashtag, please add some descriptive text such as #2012-elections.

View File

@ -30,13 +30,3 @@ Here you can find an overview of the different ways to comment and sort existing
<P style="clear: both;"></p>
<img src="doc/img/post_choose.png" width="27" height="32" alt="post_choose.png" align="left"> This symbol is used to choose more than one post to delete in a single step. After selecting all posts, go to the end of the page and click "Delete Selected Items".<P style="clear: both;"></p>
**Symbols of other themes**
Darkbubble <img src="doc/img/darkbubble.png" alt="darkbubble.png" style="padding-left: 20px; vertical-align:middle;">
Darkzero <img src="doc/img/darkzero.png" alt="darkzero.png" style="padding-left: 35px; vertical-align:middle;">
<span style="padding-left: 10px; font-style:italic;">(incl. more "zero"-themes, slackr, comix, easterbunny, facepark)</span>
Dispy <img src="doc/img/dispy.png" alt="dispy.png" style="padding-left: 57px; vertical-align:middle;"> <i>(incl. smoothly, testbubble)</i>

View File

@ -24,10 +24,6 @@ Below are examples of the post editor in 3 of Friendica's common themes:
<figcaption>Post editor, with the <b>Vier</b> theme.</figcaption>
</figure>
<p style="clear:both;"></p>
<figure>
<img src="doc/img/editor_dpzero.png" alt="duepuntozero editor">
<figcaption>Post editor, with the <b>Duepuntozero</b> theme.</figcaption>
</figure>
Post title is optional, you can set it by clicking on "Set title".
@ -73,11 +69,6 @@ These icons can change depending on the theme. Some examples:
<td><img src="doc/img/vier_icons.png" alt="vier.png" style="vertical-align:middle;"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Smoothly: </td>
<td><img src="doc/img/editor_darkbubble.png" alt="darkbubble.png" style="vertical-align:middle;"></td>
<td>&nbsp;</td>
</tr>
</table>
<i><b>*</b> how to [upload](help/FAQ#upload) files</i>
<p style="clear:both;">&nbsp;</p>
@ -97,11 +88,11 @@ Click on "show" under contact name to hide the post to everyone but selected.
Click on "Visible to everybody" to make the post public again.
If you have defined some groups, you can check "show" for groups also. All contact in that group will see the post.
If you want to hide the post to one contact of a group selected for "show", click "don't show" under contact name.
If you have defined some circles, you can check "show" for circles also. All contact in that circle will see the post.
If you want to hide the post to one contact of a circle selected for "show", click "don't show" under contact name.
Click again on "show" or "don't show" to switch it off.
You can search for contacts or groups with the search box.
You can search for contacts or circles with the search box.
See also [Group and Privacy](help/Groups-and-Privacy)
See also [Circles and Privacy](help/Circles-and-Privacy)

View File

@ -13,7 +13,7 @@ If 2FA is already enabled and you want to add another device, you must re-config
### 1. Download an authenticator app
Any authenticator app should work with Friendica.
Notheless, we recommend:
Nonetheless, we recommend:
- For iOS, [Matt Rubin's MIT-licensed Authenticator app](https://mattrubin.me/authenticator).
- For Android, [andOTP](https://github.com/andOTP/andOTP).
@ -68,7 +68,7 @@ Instead, if you enabled two-factor authentication, you have to generate app-spec
You can generate as many app-specific passwords as you want, they will be shown once to you just after you generated it.
Just copy and paste it in your third-party app in the Friendica account password input field at this point.
We recommend generating a single app-specific password for each separate third-party app you are using, using a meaningul description of the target app (like "Frienqa on my Fairphone 2").
We recommend generating a single app-specific password for each separate third-party app you are using, using a meaningful description of the target app (like "Frienqa on my Fairphone 2").
You can also revoke any and all app-specific password you generated this way.
This may log you out of the third-party application(s) you used the revoked app-specific password to log in with.

View File

@ -10,8 +10,10 @@ If you installed Friendica in the ``path/to/friendica`` folder:
1. Unpack the new Friendica archive in ``path/to/friendica_new``.
2. Copy the following items from ``path/to/friendica`` to ``path/to/friendica_new``:
* ``config/local.config.php``
* ``proxy/``
The following items only need to be copied if they are located inside your friendica path:
* ``proxy/``
* ``.htaccess`` if using Apache web server
The following items only need to be copied if they are located inside your friendica path:
* your storage folder as set in **Admin -> Site -> File Upload -> Storage base path**
* your item cache as set in **Admin -> Site -> Performance -> Path to item cache**
* your temp folder as set in **Admin -> Site -> Advanced -> Temp path**

View File

@ -31,7 +31,7 @@ The mysql database is called "friendica", the mysql user and password both are "
Your local working directory is set up as a shared directory with the VM (/vagrant).
7. Check the changes in your browser in the VM.
Find the Friendica log file `/vagrant/logfile.out` on the VM or in the `logfile.out` in you local Friendica directory.
8. Commit and push your changes directly back to Github.
8. Commit and push your changes directly back to GitHub.
If you want to stop vagrant after finishing your work, run the following command

View File

@ -68,8 +68,8 @@ xml:
The [RSStoFriendika](https://github.com/pafcu/RSStoFriendika) code can be used as an example of how to use the API with python.
The lines for posting are located at [line 21](https://github.com/pafcu/RSStoFriendika/blob/master/RSStoFriendika.py#L21) and following.
def tweet(server, message, group_allow=None):
def tweet(server, message, circle_allow=None):
url = server + '/api/statuses/update'
urllib2.urlopen(url, urllib.urlencode({'status': message,'group_allow[]':group_allow}, doseq=True))
urllib2.urlopen(url, urllib.urlencode({'status': message, 'circle_allow[]': circle_allow}, doseq=True))
There is also a [module for python 3](https://bitbucket.org/tobiasd/python-friendica) for using the API.

View File

@ -8,8 +8,8 @@ Database Tables
| [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 |
| [account-suggestion](help/database/db_account-suggestion) | Account suggestion |
| [account-user](help/database/db_account-user) | Remote and local accounts |
| [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-marker](help/database/db_application-marker) | Timeline marker |
@ -17,20 +17,22 @@ Database Tables
| [arrived-activity](help/database/db_arrived-activity) | Id of arrived activities |
| [attach](help/database/db_attach) | file attachments |
| [cache](help/database/db_cache) | Stores temporary data |
| [channel](help/database/db_channel) | User defined Channels |
| [config](help/database/db_config) | main configuration storage |
| [contact](help/database/db_contact) | contact table |
| [contact-relation](help/database/db_contact-relation) | Contact relations |
| [conv](help/database/db_conv) | private messages |
| [delayed-post](help/database/db_delayed-post) | Posts that are about to be distributed at a later time |
| [delivery-queue](help/database/db_delivery-queue) | Delivery data for posts for the batch processing |
| [diaspora-contact](help/database/db_diaspora-contact) | Diaspora compatible contacts - used in the Diaspora implementation |
| [diaspora-interaction](help/database/db_diaspora-interaction) | Signed Diaspora Interaction |
| [endpoint](help/database/db_endpoint) | ActivityPub endpoints - used in the ActivityPub implementation |
| [event](help/database/db_event) | Events |
| [fcontact](help/database/db_fcontact) | Diaspora compatible contacts - used in the Diaspora implementation |
| [fetch-entry](help/database/db_fetch-entry) | |
| [fetched-activity](help/database/db_fetched-activity) | Id of fetched activities |
| [fsuggest](help/database/db_fsuggest) | friend suggestion stuff |
| [group](help/database/db_group) | privacy groups, group info |
| [group_member](help/database/db_group_member) | privacy groups, member info |
| [group](help/database/db_group) | privacy circles, circle info |
| [group_member](help/database/db_group_member) | privacy circles, member info |
| [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 |
@ -39,6 +41,7 @@ Database Tables
| [inbox-status](help/database/db_inbox-status) | Status of ActivityPub inboxes |
| [intro](help/database/db_intro) | |
| [item-uri](help/database/db_item-uri) | URI and GUID for items |
| [key-value](help/database/db_key-value) | A key value storage |
| [locks](help/database/db_locks) | |
| [mail](help/database/db_mail) | private messages |
| [mailacct](help/database/db_mailacct) | Mail account data for fetching mails |
@ -59,6 +62,7 @@ Database Tables
| [post-content](help/database/db_post-content) | Content for all posts |
| [post-delivery](help/database/db_post-delivery) | Delivery data for posts for the batch processing |
| [post-delivery-data](help/database/db_post-delivery-data) | Delivery data for items |
| [post-engagement](help/database/db_post-engagement) | Engagement data per post |
| [post-history](help/database/db_post-history) | Post history |
| [post-link](help/database/db_post-link) | Post related external links |
| [post-media](help/database/db_post-media) | Attached media |
@ -74,6 +78,9 @@ Database Tables
| [profile_field](help/database/db_profile_field) | Custom profile fields |
| [push_subscriber](help/database/db_push_subscriber) | Used for OStatus: Contains feed subscribers |
| [register](help/database/db_register) | registrations requiring admin approval |
| [report](help/database/db_report) | |
| [report-post](help/database/db_report-post) | Individual posts attached to a moderation report |
| [report-rule](help/database/db_report-rule) | Terms of service rule lines relevant to a moderation report |
| [search](help/database/db_search) | |
| [session](help/database/db_session) | web session storage |
| [storage](help/database/db_storage) | Data stored by Database storage backend |
@ -81,6 +88,7 @@ Database Tables
| [tag](help/database/db_tag) | tags and mentions |
| [user](help/database/db_user) | The local users |
| [user-contact](help/database/db_user-contact) | User specific public contact data |
| [user-gserver](help/database/db_user-gserver) | User settings about remote servers |
| [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 |

View File

@ -0,0 +1,32 @@
Table account-suggestion
===========
Account suggestion
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------ | ------------------------------------------------------------ | ------------------ | ---- | --- | ------- | ----- |
| uri-id | Id of the item-uri table entry that contains the account url | int unsigned | NO | PRI | NULL | |
| uid | User ID | mediumint unsigned | NO | PRI | NULL | |
| level | level of closeness | smallint unsigned | YES | | NULL | |
| ignore | If set, this account will not be suggested again | boolean | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ---------- | ----------- |
| PRIMARY | uid, uri-id |
| uri-id_uid | uri-id, 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 |
Return to [database documentation](help/database)

View File

@ -1,29 +0,0 @@
Table addon
===========
registered addons
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------------ | --------------------------------------------- | ------------ | ---- | --- | ------- | -------------- |
| id | | int unsigned | NO | PRI | NULL | auto_increment |
| 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 |
Return to [database documentation](help/database)

View File

@ -18,9 +18,9 @@ Fields
| created | creation 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 | YES | | NULL | |
| allow_gid | Access Control - list of allowed groups | mediumtext | YES | | NULL | |
| allow_gid | Access Control - list of allowed circles | 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 | |
| deny_gid | Access Control - list of denied circles | mediumtext | YES | | NULL | |
| backend-class | Storage backend class | tinytext | YES | | NULL | |
| backend-ref | Storage backend data reference | text | YES | | NULL | |

View File

@ -0,0 +1,37 @@
Table channel
===========
User defined Channels
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ---------------- | ------------------------------------------------------------------------------------------------- | ------------------ | ---- | --- | ------- | -------------- |
| id | | int unsigned | NO | PRI | NULL | auto_increment |
| uid | User id | mediumint unsigned | NO | | NULL | |
| label | Channel label | varchar(64) | NO | | NULL | |
| description | Channel description | varchar(64) | YES | | NULL | |
| circle | Circle or channel that this channel is based on | int | YES | | NULL | |
| access-key | Access key | varchar(1) | YES | | NULL | |
| include-tags | Comma separated list of tags that will be included in the channel | varchar(1023) | YES | | NULL | |
| exclude-tags | Comma separated list of tags that aren't allowed in the channel | varchar(1023) | YES | | NULL | |
| full-text-search | Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode | varchar(1023) | YES | | NULL | |
| media-type | Filtered media types | smallint unsigned | YES | | NULL | |
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

@ -6,12 +6,12 @@ main configuration storage
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----- | ----------- | ------------- | ---- | --- | ------- | -------------- |
| id | | int unsigned | NO | PRI | NULL | auto_increment |
| cat | | varbinary(50) | NO | | | |
| k | | varbinary(50) | NO | | | |
| v | | mediumtext | YES | | NULL | |
| Field | Description | Type | Null | Key | Default | Extra |
| ----- | ------------------------- | ------------- | ---- | --- | ------- | -------------- |
| id | | int unsigned | NO | PRI | NULL | auto_increment |
| cat | The category of the entry | varbinary(50) | NO | | | |
| k | The key of the entry | varbinary(50) | NO | | | |
| v | | mediumtext | YES | | NULL | |
Indexes
------------

View File

@ -6,13 +6,17 @@ Contact relations
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ---------------- | --------------------------------------------------- | ------------ | ---- | --- | ------------------- | ----- |
| cid | contact the related contact had interacted with | int unsigned | NO | PRI | 0 | |
| relation-cid | related contact who had interacted with the contact | int unsigned | NO | PRI | 0 | |
| last-interaction | Date of the last interaction | 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 | |
| Field | Description | Type | Null | Key | Default | Extra |
| --------------------- | -------------------------------------------------------- | ----------------- | ---- | --- | ------------------- | ----- |
| cid | contact the related contact had interacted with | int unsigned | NO | PRI | 0 | |
| relation-cid | related contact who had interacted with the contact | int unsigned | NO | PRI | 0 | |
| last-interaction | Date of the last interaction by relation-cid on cid | datetime | NO | | 0001-01-01 00:00:00 | |
| follow-updated | Date of the last update of the contact relationship | datetime | NO | | 0001-01-01 00:00:00 | |
| follows | if true, relation-cid follows cid | boolean | NO | | 0 | |
| score | score for interactions of cid on relation-cid | smallint unsigned | YES | | NULL | |
| relation-score | score for interactions of relation-cid on cid | smallint unsigned | YES | | NULL | |
| thread-score | score for interactions of cid on threads of relation-cid | smallint unsigned | YES | | NULL | |
| relation-thread-score | score for interactions of relation-cid on threads of cid | smallint unsigned | YES | | NULL | |
Indexes
------------

View File

@ -21,6 +21,7 @@ Fields
| xmpp | XMPP address | varchar(255) | NO | | | |
| matrix | Matrix address | varchar(255) | NO | | | |
| avatar | | varbinary(383) | NO | | | |
| blurhash | BlurHash representation of the avatar | varbinary(255) | YES | | NULL | |
| header | Header picture | varbinary(383) | YES | | NULL | |
| url | | varbinary(383) | NO | | | |
| nurl | | varbinary(383) | NO | | | |
@ -50,8 +51,8 @@ Fields
| archive | | boolean | 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 | varbinary(383) | YES | | | |
| gsid | Global Server ID | int unsigned | YES | | NULL | |
| baseurl | baseurl of the contact from the gserver record, can be missing | varbinary(383) | YES | | | |
| gsid | Global Server ID, can be missing | int unsigned | YES | | NULL | |
| bd | | date | NO | | 0001-01-01 | |
| reason | | text | YES | | NULL | |
| self | 1 if the contact is the user him/her self | boolean | NO | | 0 | |
@ -80,7 +81,7 @@ Fields
| confirm | | varbinary(383) | YES | | NULL | |
| poco | | varbinary(383) | YES | | NULL | |
| writable | | boolean | NO | | 0 | |
| forum | contact is a forum. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = false instead | boolean | NO | | 0 | |
| forum | contact is a group. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = false instead | boolean | NO | | 0 | |
| prv | contact is a private group. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = true instead | boolean | NO | | 0 | |
| bdyear | | varchar(4) | NO | | | |
| site-pubkey | Deprecated | text | YES | | NULL | |

View File

@ -0,0 +1,39 @@
Table delivery-queue
===========
Delivery data for posts for the batch processing
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------- | --------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
| gsid | Target server | int unsigned | NO | PRI | NULL | |
| uri-id | Delivered post | int unsigned | NO | PRI | NULL | |
| created | | datetime | YES | | NULL | |
| command | | varbinary(32) | YES | | NULL | |
| cid | Target contact | int unsigned | YES | | NULL | |
| uid | Delivering user | mediumint unsigned | YES | | NULL | |
| failed | Number of times the delivery has failed | tinyint | YES | | 0 | |
Indexes
------------
| Name | Fields |
| ------------ | ------------- |
| PRIMARY | uri-id, gsid |
| gsid_created | gsid, created |
| uid | uid |
| cid | cid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| gsid | [gserver](help/database/db_gserver) | id |
| uri-id | [item-uri](help/database/db_item-uri) | id |
| cid | [contact](help/database/db_contact) | id |
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View File

@ -0,0 +1,52 @@
Table diaspora-contact
===========
Diaspora compatible contacts - used in the Diaspora implementation
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----------------- | ------------------------------------------------------------ | ------------ | ---- | --- | ------------------- | ----- |
| uri-id | Id of the item-uri table entry that contains the contact URL | int unsigned | NO | PRI | NULL | |
| addr | | varchar(255) | YES | | NULL | |
| alias | | varchar(255) | YES | | NULL | |
| nick | | varchar(255) | YES | | NULL | |
| name | | varchar(255) | YES | | NULL | |
| given-name | | varchar(255) | YES | | NULL | |
| family-name | | varchar(255) | YES | | NULL | |
| photo | | varchar(255) | YES | | NULL | |
| photo-medium | | varchar(255) | YES | | NULL | |
| photo-small | | varchar(255) | YES | | NULL | |
| batch | | varchar(255) | YES | | NULL | |
| notify | | varchar(255) | YES | | NULL | |
| poll | | varchar(255) | YES | | NULL | |
| subscribe | | varchar(255) | YES | | NULL | |
| searchable | | boolean | YES | | NULL | |
| pubkey | | text | YES | | NULL | |
| gsid | Global Server ID | int unsigned | YES | | NULL | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
| interacting_count | Number of contacts this contact interacts with | int unsigned | YES | | 0 | |
| interacted_count | Number of contacts that interacted with this contact | int unsigned | YES | | 0 | |
| post_count | Number of posts and comments | int unsigned | YES | | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ------------ |
| PRIMARY | uri-id |
| addr | UNIQUE, addr |
| alias | alias |
| gsid | gsid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| gsid | [gserver](help/database/db_gserver) | id |
Return to [database documentation](help/database)

View File

@ -25,9 +25,9 @@ Fields
| nofinish | if event does have no end this is 1 | boolean | NO | | 0 | |
| ignore | 0 or 1 | boolean | 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 | |
| allow_gid | Access Control - list of allowed circles | 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 | |
| deny_gid | Access Control - list of denied circles | mediumtext | YES | | NULL | |
Indexes
------------

View File

@ -1,51 +0,0 @@
Table fcontact
===========
Diaspora compatible contacts - used in the Diaspora implementation
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----------------- | ------------------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| guid | unique id | varbinary(255) | NO | | | |
| url | | varbinary(383) | NO | | | |
| uri-id | Id of the item-uri table entry that contains the fcontact url | int unsigned | YES | | NULL | |
| name | | varchar(255) | NO | | | |
| photo | | varbinary(383) | NO | | | |
| request | | varbinary(383) | NO | | | |
| nick | | varchar(255) | NO | | | |
| addr | | varchar(255) | NO | | | |
| batch | | varbinary(383) | NO | | | |
| notify | | varbinary(383) | NO | | | |
| poll | | varbinary(383) | NO | | | |
| confirm | | varbinary(383) | NO | | | |
| priority | | tinyint unsigned | NO | | 0 | |
| network | | char(4) | NO | | | |
| alias | | varbinary(383) | NO | | | |
| pubkey | | text | YES | | NULL | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
| interacting_count | Number of contacts this contact interactes with | int unsigned | YES | | 0 | |
| interacted_count | Number of contacts that interacted with this contact | int unsigned | YES | | 0 | |
| post_count | Number of posts and comments | int unsigned | YES | | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ---------------- |
| PRIMARY | id |
| addr | addr(32) |
| url | UNIQUE, url(190) |
| uri-id | UNIQUE, 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,7 +1,7 @@
Table group
===========
privacy groups, group info
privacy circles, circle info
Fields
------
@ -11,9 +11,9 @@ Fields
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | Owner User id | mediumint unsigned | NO | | 0 | |
| visible | 1 indicates the member list is not private | boolean | NO | | 0 | |
| deleted | 1 indicates the group has been deleted | boolean | NO | | 0 | |
| cid | Contact id of forum. When this field is filled then the members are synced automatically. | int unsigned | YES | | NULL | |
| name | human readable name of group | varchar(255) | NO | | | |
| deleted | 1 indicates the circle has been deleted | boolean | NO | | 0 | |
| cid | Contact id of group. When this field is filled then the members are synced automatically. | int unsigned | YES | | NULL | |
| name | human readable name of circle | varchar(255) | NO | | | |
Indexes
------------

View File

@ -1,16 +1,16 @@
Table group_member
===========
privacy groups, member info
privacy circles, member info
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ---------- | --------------------------------------------------------- | ------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| gid | groups.id of the associated group | int unsigned | NO | | 0 | |
| contact-id | contact.id of the member assigned to the associated group | int unsigned | NO | | 0 | |
| Field | Description | Type | Null | Key | Default | Extra |
| ---------- | ---------------------------------------------------------- | ------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| gid | group.id of the associated circle | int unsigned | NO | | 0 | |
| contact-id | contact.id of the member assigned to the associated circle | int unsigned | NO | | 0 | |
Indexes
------------

View File

@ -34,6 +34,7 @@ Fields
| last_poco_query | | datetime | YES | | 0001-01-01 00:00:00 | |
| last_contact | Last successful connection request | datetime | YES | | 0001-01-01 00:00:00 | |
| last_failure | Last failed connection request | datetime | YES | | 0001-01-01 00:00:00 | |
| blocked | Server is blocked | boolean | YES | | NULL | |
| failed | Connection failed | boolean | YES | | NULL | |
| next_contact | Next connection request | datetime | YES | | 0001-01-01 00:00:00 | |

View File

@ -10,6 +10,7 @@ Fields
| -------- | ------------------------------------ | -------------- | ---- | --- | ------------------- | ----- |
| url | URL of the inbox | varbinary(383) | NO | PRI | NULL | |
| uri-id | Item-uri id of inbox url | int unsigned | YES | | NULL | |
| gsid | ID of the related server | int unsigned | YES | | 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 | |
@ -24,6 +25,7 @@ Indexes
| ------- | ------ |
| PRIMARY | url |
| uri-id | uri-id |
| gsid | gsid |
Foreign Keys
------------
@ -31,5 +33,6 @@ Foreign Keys
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| gsid | [gserver](help/database/db_gserver) | id |
Return to [database documentation](help/database)

View File

@ -0,0 +1,23 @@
Table key-value
===========
A key value storage
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ---------- | ---------------------------- | ------------- | ---- | --- | ------- | ----- |
| k | | varbinary(50) | NO | PRI | NULL | |
| v | | mediumtext | YES | | NULL | |
| updated_at | timestamp of the last update | int unsigned | NO | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | k |
Return to [database documentation](help/database)

View File

@ -13,7 +13,7 @@ Fields
| guid | A unique identifier for this private message | varbinary(255) | NO | | | |
| from-name | name of the sender | varchar(255) | NO | | | |
| from-photo | contact photo link of the sender | varbinary(383) | NO | | | |
| from-url | profile linke of the sender | varbinary(383) | NO | | | |
| from-url | profile link of the sender | varbinary(383) | NO | | | |
| contact-id | contact.id | varbinary(255) | YES | | NULL | |
| 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 | |

View File

@ -11,9 +11,9 @@ Fields
| 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 | |
| allow_gid | Access Control - list of allowed circles | 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 | |
| deny_gid | Access Control - list of denied circles | mediumtext | YES | | NULL | |
Indexes
------------

View File

@ -25,13 +25,14 @@ Fields
| height | | smallint unsigned | NO | | 0 | |
| width | | smallint unsigned | NO | | 0 | |
| datasize | | int unsigned | NO | | 0 | |
| blurhash | BlurHash representation of the photo | varbinary(255) | YES | | NULL | |
| data | | mediumblob | NO | | NULL | |
| scale | | tinyint unsigned | NO | | 0 | |
| profile | | boolean | 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 | |
| allow_gid | Access Control - list of allowed circles | 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 | |
| deny_gid | Access Control - list of denied circles | 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 | |

View File

@ -0,0 +1,40 @@
Table post-engagement
===========
Engagement data per post
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 | |
| contact-type | Person, organisation, news, community, relay | tinyint | NO | | 0 | |
| media-type | Type of media in a bit array (1 = image, 2 = video, 4 = audio | tinyint | NO | | 0 | |
| language | Language information about this post | varbinary(128) | YES | | NULL | |
| searchtext | Simplified text for the full text search | mediumtext | YES | | NULL | |
| created | | datetime | YES | | NULL | |
| restricted | If true, this post is either unlisted or not from a federated network | boolean | NO | | 0 | |
| comments | Number of comments | mediumint unsigned | YES | | NULL | |
| activities | Number of activities (like, dislike, ...) | mediumint unsigned | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ---------- | -------------------- |
| PRIMARY | uri-id |
| owner-id | owner-id |
| created | created |
| searchtext | FULLTEXT, searchtext |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| owner-id | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database)

View File

@ -6,12 +6,15 @@ Post related external links
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 | External URL | varbinary(511) | NO | | NULL | |
| mimetype | | varchar(60) | YES | | NULL | |
| Field | Description | Type | Null | Key | Default | Extra |
| -------- | --------------------------------------------------------- | ----------------- | ---- | --- | ------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
| url | External URL | varbinary(511) | NO | | NULL | |
| mimetype | | varchar(60) | YES | | NULL | |
| height | Height of the media | smallint unsigned | YES | | NULL | |
| width | Width of the media | smallint unsigned | YES | | NULL | |
| blurhash | BlurHash representation of the link | varbinary(255) | YES | | NULL | |
Indexes
------------

View File

@ -17,6 +17,7 @@ Fields
| height | Height of the media | smallint unsigned | YES | | NULL | |
| width | Width of the media | smallint unsigned | YES | | NULL | |
| size | Media size | bigint unsigned | YES | | NULL | |
| blurhash | BlurHash representation of the image | varbinary(255) | YES | | NULL | |
| preview | Preview URL | varbinary(512) | YES | | NULL | |
| preview-height | Height of the preview picture | smallint unsigned | YES | | NULL | |
| preview-width | Width of the preview picture | smallint unsigned | YES | | NULL | |

View File

@ -49,6 +49,7 @@ Indexes
| psid | psid |
| post-user-id | post-user-id |
| commented | commented |
| received | received |
| uid_received | uid, received |
| uid_wall_received | uid, wall, received |
| uid_commented | uid, commented |

View File

@ -34,7 +34,7 @@ Fields
| 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 | |
| notification-type | | smallint unsigned | NO | | 0 | |
| wall | This item was posted to the wall of uid | boolean | NO | | 0 | |
| origin | item originated at this site | boolean | NO | | 0 | |
| psid | ID of the permission set of this post | int unsigned | YES | | NULL | |

View File

@ -9,7 +9,7 @@ Fields
| Field | Description | Type | Null | Key | Default | Extra |
| -------- | ------------------------------------------ | ------------- | ---- | --- | ------------------- | ----- |
| pid | The ID of the process | int unsigned | NO | PRI | NULL | |
| hostname | The name of the host the process is ran on | varchar(32) | NO | PRI | NULL | |
| hostname | The name of the host the process is ran on | varchar(255) | NO | PRI | NULL | |
| command | | varbinary(32) | NO | | | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |

View File

@ -6,51 +6,52 @@ user profiles data
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 | |
| profile-name | Deprecated | varchar(255) | YES | | NULL | |
| is-default | Deprecated | boolean | YES | | NULL | |
| hide-friends | Hide friend list from viewers of this profile | boolean | NO | | 0 | |
| name | | varchar(255) | NO | | | |
| pdesc | Deprecated | varchar(255) | YES | | NULL | |
| dob | Day of birth | varchar(32) | NO | | 0000-00-00 | |
| address | | varchar(255) | NO | | | |
| locality | | varchar(255) | NO | | | |
| region | | varchar(255) | NO | | | |
| postal-code | | varchar(32) | NO | | | |
| country-name | | varchar(255) | NO | | | |
| hometown | Deprecated | varchar(255) | YES | | NULL | |
| gender | Deprecated | varchar(32) | YES | | NULL | |
| marital | Deprecated | varchar(255) | YES | | NULL | |
| with | Deprecated | text | YES | | NULL | |
| howlong | Deprecated | datetime | YES | | NULL | |
| sexual | Deprecated | varchar(255) | YES | | NULL | |
| politic | Deprecated | varchar(255) | YES | | NULL | |
| religion | Deprecated | varchar(255) | YES | | NULL | |
| pub_keywords | | text | YES | | NULL | |
| prv_keywords | | text | YES | | NULL | |
| likes | Deprecated | text | YES | | NULL | |
| dislikes | Deprecated | text | YES | | NULL | |
| about | Profile description | text | YES | | NULL | |
| summary | Deprecated | varchar(255) | YES | | NULL | |
| music | Deprecated | text | YES | | NULL | |
| book | Deprecated | text | YES | | NULL | |
| tv | Deprecated | text | YES | | NULL | |
| film | Deprecated | text | YES | | NULL | |
| interest | Deprecated | text | YES | | NULL | |
| romance | Deprecated | text | YES | | NULL | |
| work | Deprecated | text | YES | | NULL | |
| education | Deprecated | text | YES | | NULL | |
| contact | Deprecated | text | YES | | NULL | |
| homepage | | varchar(255) | NO | | | |
| xmpp | XMPP address | varchar(255) | NO | | | |
| matrix | Matrix address | varchar(255) | NO | | | |
| photo | | varbinary(383) | NO | | | |
| thumb | | varbinary(383) | NO | | | |
| publish | publish default profile in local directory | boolean | NO | | 0 | |
| net-publish | publish profile in global directory | boolean | NO | | 0 | |
| 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 | |
| profile-name | Deprecated | varchar(255) | YES | | NULL | |
| is-default | Deprecated | boolean | YES | | NULL | |
| hide-friends | Hide friend list from viewers of this profile | boolean | NO | | 0 | |
| name | Unused in favor of user.username | varchar(255) | NO | | | |
| pdesc | Deprecated | varchar(255) | YES | | NULL | |
| dob | Day of birth | varchar(32) | NO | | 0000-00-00 | |
| address | | varchar(255) | NO | | | |
| locality | | varchar(255) | NO | | | |
| region | | varchar(255) | NO | | | |
| postal-code | | varchar(32) | NO | | | |
| country-name | | varchar(255) | NO | | | |
| hometown | Deprecated | varchar(255) | YES | | NULL | |
| gender | Deprecated | varchar(32) | YES | | NULL | |
| marital | Deprecated | varchar(255) | YES | | NULL | |
| with | Deprecated | text | YES | | NULL | |
| howlong | Deprecated | datetime | YES | | NULL | |
| sexual | Deprecated | varchar(255) | YES | | NULL | |
| politic | Deprecated | varchar(255) | YES | | NULL | |
| religion | Deprecated | varchar(255) | YES | | NULL | |
| pub_keywords | | text | YES | | NULL | |
| prv_keywords | | text | YES | | NULL | |
| likes | Deprecated | text | YES | | NULL | |
| dislikes | Deprecated | text | YES | | NULL | |
| about | Profile description | text | YES | | NULL | |
| summary | Deprecated | varchar(255) | YES | | NULL | |
| music | Deprecated | text | YES | | NULL | |
| book | Deprecated | text | YES | | NULL | |
| tv | Deprecated | text | YES | | NULL | |
| film | Deprecated | text | YES | | NULL | |
| interest | Deprecated | text | YES | | NULL | |
| romance | Deprecated | text | YES | | NULL | |
| work | Deprecated | text | YES | | NULL | |
| education | Deprecated | text | YES | | NULL | |
| contact | Deprecated | text | YES | | NULL | |
| homepage | | varchar(255) | NO | | | |
| homepage_verified | was the homepage verified by a rel-me link back to the profile | boolean | NO | | 0 | |
| xmpp | XMPP address | varchar(255) | NO | | | |
| matrix | Matrix address | varchar(255) | NO | | | |
| photo | | varbinary(383) | NO | | | |
| thumb | | varbinary(383) | NO | | | |
| publish | publish default profile in local directory | boolean | NO | | 0 | |
| net-publish | publish profile in global directory | boolean | NO | | 0 | |
Indexes
------------

Some files were not shown because too many files have changed in this diff Show More