Merge branch 'stable' into develop

This commit is contained in:
Tobias Diekershoff 2021-07-04 20:52:22 +02:00
commit 2b95a7e7cd
323 changed files with 21146 additions and 16271 deletions

View file

@ -8,7 +8,7 @@ coverage:
round: down round: down
range: "70...100" range: "70...100"
status: status:
project: off project: false
patch: off patch: false
comment: off comment: false

View file

@ -52,21 +52,81 @@ trigger:
- pull_request - pull_request
steps: steps:
- name: Restore cache
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
restore: true
cache_key: '{{ .Repo.Name }}_phpcs_{{ arch }}_{{ os }}'
archive_format: "gzip"
mount:
- '.composer'
volumes:
- name: cache
path: /tmp/cache
- name: Install dependencies - name: Install dependencies
image: composer image: composer
commands: commands:
- export COMPOSER_HOME=.composer
- ./bin/composer.phar run cs:install - ./bin/composer.phar run cs:install
- name: Rebuild cache
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
rebuild: true
cache_key: '{{ .Repo.Name }}_phpcs_{{ arch }}_{{ os }}'
archive_format: "gzip"
mount:
- '.composer'
volumes:
- name: cache
path: /tmp/cache
- name: Run coding standards check - name: Run coding standards check
image: friendicaci/php-cs image: friendicaci/php-cs
commands: commands:
- export CHANGED_FILES="$(git diff --name-status ${DRONE_COMMIT_BEFORE}..${DRONE_COMMIT_AFTER} | grep ^A | cut -f2)" - export CHANGED_FILES="$(git diff --name-status ${DRONE_COMMIT_BEFORE}..${DRONE_COMMIT_AFTER} | grep ^A | cut -f2)"
- /check-php-cs.sh - /check-php-cs.sh
volumes:
- name: cache
host:
path: /tmp/drone-cache
--- ---
kind: pipeline kind: pipeline
type: docker type: docker
name: php7.3-mariadb name: php7.3-mariadb
steps: steps:
- name: Restore cache
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
restore: true
cache_key: '{{ .Repo.Name }}_php73_{{ arch }}_{{ os }}'
archive_format: "gzip"
mount:
- '.composer'
volumes:
- name: cache
path: /tmp/cache
- name: Composer install
image: friendicaci/php7.3:php7.3.28
commands:
- export COMPOSER_HOME=.composer
- ./bin/composer.phar validate
- ./bin/composer.phar install --prefer-dist
- name: Rebuild cache
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
rebuild: true
cache_key: '{{ .Repo.Name }}_php73_{{ arch }}_{{ os }}'
archive_format: "gzip"
mount:
- '.composer'
volumes:
- name: cache
path: /tmp/cache
- name: Test Friendica - name: Test Friendica
image: friendicaci/php7.3:php7.3.28 image: friendicaci/php7.3:php7.3.28
environment: environment:
@ -79,8 +139,6 @@ steps:
MEMCACHED_HOST: "memcached" MEMCACHED_HOST: "memcached"
MEMCACHE_HOST: "memcached" MEMCACHE_HOST: "memcached"
commands: commands:
- composer validate
- composer install --prefer-dist
- cp config/local-sample.config.php config/local.config.php - cp config/local-sample.config.php config/local.config.php
- if ! bin/wait-for-connection $MYSQL_HOST $MYSQL_PORT 300; then echo "[ERROR] Waited 300 seconds, no response" >&2; exit 1; fi - if ! bin/wait-for-connection $MYSQL_HOST $MYSQL_PORT 300; then echo "[ERROR] Waited 300 seconds, no response" >&2; exit 1; fi
- mysql -h$MYSQL_HOST -P$MYSQL_PORT -p$MYSQL_PASSWORD -u$MYSQL_USER $MYSQL_DATABASE < database.sql - mysql -h$MYSQL_HOST -P$MYSQL_PORT -p$MYSQL_PASSWORD -u$MYSQL_USER $MYSQL_DATABASE < database.sql
@ -102,12 +160,47 @@ services:
- name: redis - name: redis
image: redis image: redis
volumes:
- name: cache
host:
path: /tmp/drone-cache
--- ---
kind: pipeline kind: pipeline
type: docker type: docker
name: php7.4-mariadb name: php7.4-mariadb
steps: steps:
- name: Restore cache
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
restore: true
cache_key: '{{ .Repo.Name }}_php74_{{ arch }}_{{ os }}'
archive_format: "gzip"
mount:
- '.composer'
volumes:
- name: cache
path: /tmp/cache
- name: Composer install
image: friendicaci/php7.4:php7.4.18
commands:
- export COMPOSER_HOME=.composer
- ./bin/composer.phar validate
- ./bin/composer.phar install --prefer-dist
- name: Rebuild cache
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
rebuild: true
cache_key: '{{ .Repo.Name }}_php74_{{ arch }}_{{ os }}'
archive_format: "gzip"
mount:
- '.composer'
volumes:
- name: cache
path: /tmp/cache
- name: Test Friendica - name: Test Friendica
image: friendicaci/php7.4:php7.4.18 image: friendicaci/php7.4:php7.4.18
environment: environment:
@ -122,8 +215,6 @@ steps:
XDEBUG_MODE: "coverage" XDEBUG_MODE: "coverage"
commands: commands:
- phpenmod xdebug - phpenmod xdebug
- composer validate
- composer install --prefer-dist
- cp config/local-sample.config.php config/local.config.php - cp config/local-sample.config.php config/local.config.php
- if ! bin/wait-for-connection $MYSQL_HOST $MYSQL_PORT 300; then echo "[ERROR] Waited 300 seconds, no response" >&2; exit 1; fi - if ! bin/wait-for-connection $MYSQL_HOST $MYSQL_PORT 300; then echo "[ERROR] Waited 300 seconds, no response" >&2; exit 1; fi
- mysql -h$MYSQL_HOST -P$MYSQL_PORT -p$MYSQL_PASSWORD -u$MYSQL_USER $MYSQL_DATABASE < database.sql - mysql -h$MYSQL_HOST -P$MYSQL_PORT -p$MYSQL_PASSWORD -u$MYSQL_USER $MYSQL_DATABASE < database.sql
@ -155,12 +246,47 @@ services:
- name: redis - name: redis
image: redis image: redis
volumes:
- name: cache
host:
path: /tmp/drone-cache
--- ---
kind: pipeline kind: pipeline
type: docker type: docker
name: php8.0-mariadb name: php8.0-mariadb
steps: steps:
- name: Restore cache
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
restore: true
cache_key: '{{ .Repo.Name }}_php80_{{ arch }}_{{ os }}'
archive_format: "gzip"
mount:
- '.composer'
volumes:
- name: cache
path: /tmp/cache
- name: Composer install
image: friendicaci/php8.0:php8.0.5
commands:
- export COMPOSER_HOME=.composer
- ./bin/composer.phar validate
- ./bin/composer.phar install --prefer-dist
- name: Rebuild cache
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
rebuild: true
cache_key: '{{ .Repo.Name }}_php80_{{ arch }}_{{ os }}'
archive_format: "gzip"
mount:
- '.composer'
volumes:
- name: cache
path: /tmp/cache
- name: Test Friendica - name: Test Friendica
image: friendicaci/php8.0:php8.0.5 image: friendicaci/php8.0:php8.0.5
environment: environment:
@ -173,8 +299,6 @@ steps:
MEMCACHED_HOST: "memcached" MEMCACHED_HOST: "memcached"
MEMCACHE_HOST: "memcached" MEMCACHE_HOST: "memcached"
commands: commands:
- composer validate
- composer install --prefer-dist
- cp config/local-sample.config.php config/local.config.php - cp config/local-sample.config.php config/local.config.php
- if ! bin/wait-for-connection $MYSQL_HOST $MYSQL_PORT 300; then echo "[ERROR] Waited 300 seconds, no response" >&2; exit 1; fi - if ! bin/wait-for-connection $MYSQL_HOST $MYSQL_PORT 300; then echo "[ERROR] Waited 300 seconds, no response" >&2; exit 1; fi
- mysql -h$MYSQL_HOST -P$MYSQL_PORT -p$MYSQL_PASSWORD -u$MYSQL_USER $MYSQL_DATABASE < database.sql - mysql -h$MYSQL_HOST -P$MYSQL_PORT -p$MYSQL_PASSWORD -u$MYSQL_USER $MYSQL_DATABASE < database.sql
@ -196,3 +320,8 @@ services:
- name: redis - name: redis
image: redis image: redis
volumes:
- name: cache
host:
path: /tmp/drone-cache

3
.gitignore vendored
View file

@ -16,7 +16,8 @@ robots.txt
/config/addon.ini.php /config/addon.ini.php
#ignore documentation, it should be newly built #ignore documentation, it should be newly built
/doc/html /doc/api
/doc/cache
#ignore reports, should be generated with every build #ignore reports, should be generated with every build
report/ report/

View file

@ -1,3 +1,71 @@
Version 2021.07 (2021-07-04)
Friendica Core
Updates to the translation DE, EN-GB, HU, IT, JA [translation teams]
Updates to the themes (frio, vier) [annando, MrPetovan]
Updates to the documentation [annando, nupplaphil]
Updated composer and dependencies [nupplaphil, MrPetovan]
General code cleanup [annando, nupplaphil, mexon, MrPetovan, very-apen]
Enhanced the Mastodon compatible API [annando]
Enhanced the possibilities to download the calendar [annando]
Enhanced the Vagrant development box setup [fabrixxm]
Enhanced the console commands [fabrixxm, mexon]
Enhances the support of PHP8 [nupplaphil, MrPetovan]
Enhanced the link detection [annando]
Enhanced the worker task display in the admin panel [tobiasd]
Enhanced the installation wizard [tobiasd]
Enhanced the federation statistics page [annando]
Enhanced the profile picture handling [annando]
Fixed information contained in the nodeinfo [MrPetovan]
Fixed an avatar setting problem during the account creation [nupplaphil]
Fixed a display problem with picture only postings from Diaspora* [annando]
Fixed a problem receiving BCC postings from accounts that are not followed [annando]
Fixed a problem with local delivery of postings [annando]
Fixed a problem with block/ignore via API [nupplaphil]
Fixed a problem with directory search results [MrPetovan]
Fixed problems with the console autoinstall command [annando, tobiasd]
Fixed problems with forum delivery [annando]
Fixed a problem fetching photos in private postings [annando]
Fixed a problem with author names containing hash tags [annando]
Fixed a problem when following local contacts [annando]
Fixed problems with the addon settings [MrPetovan]
Removed the Diaspora* relay support [annando]
Removed the system user from the user counting [annando]
Make birthday time comparison 32-bit safe in Protocol/DFRN [MrPetovan]
CI process was switched to drone [nupplaphil]
The "authenticate" hook was moved deeper into the process [very-ape]
Added support for RTL languages [MrPetovan]
Added download link for the calendar entries [annando]
Friendica Addons
Updates to the translations DE, HU, IT, JA [translation teams]
nitter
added addon to replace links to twitter in postings [tobiasd]
keycloakpassword
added addon for password-based authentication against Keycloak [very-ape]
SAML
added addon to support SAML services [very-ape]
twitter
improved the image upload [annando]
improved the exception handling [nupplaphil]
incoming posts are unlisted [annando]
openstreetmap
Ensure location key is available in hook data [MrPetovan]
catavatar
make the addon work again [nupplaphil]
securemail
fixed a problem in connection with the phpmailer addon [nupplaphil]
Blockbot
Move Zabbix to the "good" agents [annando]
mailstream
adaptation of new addon functionalities and code improvements [mexon]
phpmailer
updated dependencies [nupplaphil]
Closed Issues
7967, 8262, 9715, 9064, 9993, 10055, 10147, 10184, 10198, 10205, 10210,
10219, 10232, 10254, 10287, 10293, 10306, 10312, 10314, 10342, 10364,
10375, 10378, 10392, 10424, 10433, 10439, 10443
Version 2021.04 (2021-04-26) Version 2021.04 (2021-04-26)
Friendica Core Friendica Core
Updates to the translations BG, DE, EN-US, ES, HU, IT, RU [translation teams] Updates to the translations BG, DE, EN-US, ES, HU, IT, RU [translation teams]

View file

@ -46,6 +46,8 @@ ben-utzer
Beringer Zsolt Beringer Zsolt
BinkaDroid BinkaDroid
Bjoessi Bjoessi
bob lebonche
Boris Daniel Martinez Millàn
bufalo1973 bufalo1973
ButterflyOfFire ButterflyOfFire
Calango Jr Calango Jr
@ -71,6 +73,7 @@ Daria Początek
David David
David Martín Miranda David Martín Miranda
David Rabel David Rabel
Davide Pesenti
Dean Townsley Dean Townsley
Denis Chenu Denis Chenu
dependabot[bot] dependabot[bot]
@ -109,7 +112,6 @@ Gregory Smith
guzzisti guzzisti
Haakon Meland Eriksen Haakon Meland Eriksen
Hans Meine Hans Meine
hauke
Hauke Hauke
Hauke Altmann Hauke Altmann
Herbert Thielen Herbert Thielen
@ -259,12 +261,14 @@ Thecross
Thomas Thomas
Thomas Willingham Thomas Willingham
thorsten23 thorsten23
Till Mohr
Tim Stahel Tim Stahel
TiMESPLiNTER TiMESPLiNTER
Tino Tino
Tobias Diekershoff Tobias Diekershoff
Tobias Hößl Tobias Hößl
Tom Tom
Tom Aurlund
tomamplius tomamplius
tomtom84 tomtom84
Tony Baldwin Tony Baldwin
@ -282,14 +286,19 @@ utzer
Valvin Valvin
Vasudev Kamath Vasudev Kamath
Vasya Novikov Vasya Novikov
very-ape
Vinzenz Vietzke Vinzenz Vietzke
vislav vislav
vladimir N
Vladimir Núñez Vladimir Núñez
VVelox VVelox
Vít Šesták 'v6ak' Vít Šesták 'v6ak'
Waldemar Stoczkowski Waldemar Stoczkowski
Wil Tur
Wouter Broers Wouter Broers
XMPPはいいぞ
Yasen Pramatarov Yasen Pramatarov
Yasmine A
ylms ylms
Zach Prezkuta Zach Prezkuta
Zane C. Bowers-Hadley Zane C. Bowers-Hadley

View file

@ -1 +1 @@
2021.06-dev 2021.07

6
Vagrantfile vendored
View file

@ -34,10 +34,14 @@ Vagrant.configure(2) do |config|
# #
# # Customize the amount of memory on the VM: # # Customize the amount of memory on the VM:
vb.memory = server_memory vb.memory = server_memory
unless Vagrant.has_plugin?("vagrant-vbguest")
raise 'vagrant-vbguest plugin is not installed! Install with "vagrant plugin install vagrant-vbguest"'
end
end end
# Enable provisioning with a shell script. # Enable provisioning with a shell script.
config.vm.provision "shell", path: "./bin/dev/vagrant_provision.sh" config.vm.provision "shell", path: "./bin/dev/vagrant_provision.sh", privileged: true
# run: "always" # run: "always"
# run: "once" # run: "once"
end end

Binary file not shown.

View file

@ -1,13 +1,23 @@
#!/bin/bash #!/bin/bash
#Script to setup the vagrant instance for running friendica # Script to setup the vagrant instance for running friendica
# #
#DO NOT RUN on your physical machine as this won't be of any use # DO NOT RUN on your physical machine as this won't be of any use
#and f.e. deletes your /var/www/ folder! # and f.e. deletes your /var/www/ folder!
echo "Friendica configuration settings" #
sudo apt-get update # Run as root by vagrant
#
##
# Install virtualbox guest additions ADMIN_NICK="admin"
sudo apt-get install virtualbox-guest-x11 ADMIN_PASSW="admin"
USER_NICK="user"
USER_PASSW="user"
##
echo "Friendica configuration settings"
apt-get update
#Selfsigned cert #Selfsigned cert
echo ">>> Installing *.xip.io self-signed SSL" echo ">>> Installing *.xip.io self-signed SSL"
@ -23,32 +33,32 @@ localityName=New Haven/
commonName=$DOMAIN/ commonName=$DOMAIN/
subjectAltName=DNS:$EXTRADOMAIN subjectAltName=DNS:$EXTRADOMAIN
" "
sudo mkdir -p "$SSL_DIR" mkdir -p "$SSL_DIR"
sudo openssl genrsa -out "$SSL_DIR/xip.io.key" 4096 openssl genrsa -out "$SSL_DIR/xip.io.key" 4096
sudo openssl req -new -subj "$(echo -n "$SUBJ" | tr "\n" "/")" -key "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.csr" -passin pass:$PASSPHRASE openssl req -new -subj "$(echo -n "$SUBJ" | tr "\n" "/")" -key "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.csr" -passin pass:$PASSPHRASE
sudo openssl x509 -req -days 365 -in "$SSL_DIR/xip.io.csr" -signkey "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.crt" openssl x509 -req -days 365 -in "$SSL_DIR/xip.io.csr" -signkey "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.crt"
#Install apache2 #Install apache2
echo ">>> Installing Apache2 webserver" echo ">>> Installing Apache2 webserver"
sudo apt-get install -y apache2 apt-get install -qq apache2
sudo a2enmod rewrite actions ssl a2enmod rewrite actions ssl
sudo cp /vagrant/bin/dev/vagrant_vhost.sh /usr/local/bin/vhost cp /vagrant/bin/dev/vagrant_vhost.sh /usr/local/bin/vhost
sudo chmod guo+x /usr/local/bin/vhost chmod guo+x /usr/local/bin/vhost
sudo vhost -s 192.168.22.10.xip.io -d /var/www -p /etc/ssl/xip.io -c xip.io -a friendica.local vhost -s 192.168.22.10.xip.io -d /var/www -p /etc/ssl/xip.io -c xip.io -a friendica.local
sudo a2dissite 000-default a2dissite 000-default
sudo service apache2 restart service apache2 restart
#Install php #Install php
echo ">>> Installing PHP7" echo ">>> Installing PHP7"
sudo apt-get install -y php libapache2-mod-php php-cli php-mysql php-curl php-gd php-mbstring php-xml imagemagick php-imagick php-zip apt-get install -qq php libapache2-mod-php php-cli php-mysql php-curl php-gd php-mbstring php-xml imagemagick php-imagick php-zip
sudo systemctl restart apache2 systemctl restart apache2
#Install mysql #Install mysql
echo ">>> Installing Mysql" echo ">>> Installing Mysql"
sudo debconf-set-selections <<< "mariadb-server mariadb-server/root_password password root" debconf-set-selections <<< "mariadb-server mariadb-server/root_password password root"
sudo debconf-set-selections <<< "mariadb-server mariadb-server/root_password_again password root" debconf-set-selections <<< "mariadb-server mariadb-server/root_password_again password root"
sudo apt-get install -qq mariadb-server apt-get install -qq mariadb-server
# enable remote access # enable remote access
# setting the mysql bind-address to allow connections from everywhere # setting the mysql bind-address to allow connections from everywhere
sed -i "s/bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf sed -i "s/bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
@ -66,41 +76,60 @@ $MYSQL -uroot -proot -e "FLUSH PRIVILEGES"
systemctl restart mysql systemctl restart mysql
#configure rudimentary mail server (local delivery only) #configure rudimentary mail server (local delivery only)
#add Friendica accounts for local user accounts, use email address like vagrant@friendica.local, read the email with 'mail'. #add Friendica accounts for local user accounts, use email address like vagrant@friendica.local, read the email with 'mail'.
echo ">>> Installing 'Local Only' postfix"
debconf-set-selections <<< "postfix postfix/mailname string friendica.local" debconf-set-selections <<< "postfix postfix/mailname string friendica.local"
debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Local Only'" debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Local Only'"
sudo apt-get install -y postfix mailutils libmailutils-dev apt-get install -qq postfix mailutils libmailutils-dev
sudo echo -e "friendica1: vagrant\nfriendica2: vagrant\nfriendica3: vagrant\nfriendica4: vagrant\nfriendica5: vagrant" >> /etc/aliases && sudo newaliases echo -e "friendica1: vagrant\nfriendica2: vagrant\nfriendica3: vagrant\nfriendica4: vagrant\nfriendica5: vagrant" >> /etc/aliases && newaliases
# Friendica needs git for fetching some dependencies # Friendica needs git for fetching some dependencies
sudo apt-get install -y git echo ">>> Installing git"
apt-get install -qq git
#make the vagrant directory the docroot #make the vagrant directory the docroot
sudo rm -rf /var/www/ echo ">>> Symlink /var/www to /vagrant"
sudo ln -fs /vagrant /var/www rm -rf /var/www/
ln -fs /vagrant /var/www
# install deps with composer # install deps with composer
sudo apt install unzip echo ">>> Installing php requirements"
apt install unzip
cd /var/www cd /var/www
sudo -u www-data php bin/composer.phar install php bin/composer.phar install
# initial config file for friendica in vagrant
cp /vagrant/mods/local.config.vagrant.php /vagrant/config/local.config.php echo ">>> Setup Friendica"
# copy the .htaccess-dist file to .htaccess so that rewrite rules work # copy the .htaccess-dist file to .htaccess so that rewrite rules work
cp /vagrant/.htaccess-dist /vagrant/.htaccess cp /vagrant/.htaccess-dist /vagrant/.htaccess
# create the friendica database # create the friendica database
echo "create database friendica DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | $MYSQL -u root -proot echo "create database friendica DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | $MYSQL -u root -proot
# import test database # import test database (disabled because too old)
$MYSQL -uroot -proot friendica < /vagrant/friendica_test_data.sql #$MYSQL -uroot -proot friendica < /vagrant/friendica_test_data.sql
# install friendica
bin/console autoinstall -f /vagrant/mods/local.config.vagrant.php
# add users
# (disable a bunch of validation because this is a dev install, deh, it needs invalid emails and stupid passwords)
bin/console config system disable_email_validation 1
bin/console config system disable_password_exposed 1
bin/console user add "$ADMIN_NICK" "$ADMIN_NICK" "$ADMIN_NICK@friendica.local" en
bin/console user password "$ADMIN_NICK" "$ADMIN_PASSW"
bin/console user add "$USER_NICK" "$USER_NICK" "$USER_NICK@friendica.local" en
bin/console user password "$USER_NICK" "$USER_PASSW"
# set the admin
bin/console config config admin_email ""$ADMIN_NICK@friendica.local""
# create cronjob - activate if you have enough memory in you dev VM # create cronjob - activate if you have enough memory in you dev VM
echo "*/10 * * * * cd /vagrant; /usr/bin/php bin/worker.php" >> friendicacron # cronjob runs as www-data user
sudo crontab friendicacron echo ">>> Installing cronjob"
sudo rm friendicacron echo "*/10 * * * * www-data cd /vagrant; /usr/bin/php bin/worker.php" >> /etc/cron.d/friendica
# friendica needs write access to /tmp # friendica needs write access to /tmp
sudo chmod 777 /tmp chmod 777 /tmp

View file

@ -38,7 +38,7 @@ use Friendica\Util\DateTimeFormat;
define('FRIENDICA_PLATFORM', 'Friendica'); define('FRIENDICA_PLATFORM', 'Friendica');
define('FRIENDICA_CODENAME', 'Siberian Iris'); define('FRIENDICA_CODENAME', 'Siberian Iris');
define('FRIENDICA_VERSION', '2021.06-dev'); define('FRIENDICA_VERSION', '2021.07');
define('DFRN_PROTOCOL_VERSION', '2.23'); define('DFRN_PROTOCOL_VERSION', '2.23');
define('NEW_TABLE_STRUCTURE_VERSION', 1288); define('NEW_TABLE_STRUCTURE_VERSION', 1288);

View file

@ -1,76 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="friendica" default="test">
<!-- ====================================================== -->
<!-- Target: clean-test -->
<!-- deletes directories with old test reports -->
<!-- ====================================================== -->
<target name="clean-test">
<delete dir="report" />
</target>
<!-- ====================================================== -->
<!-- Target: prepare-test -->
<!-- creates directories for test reports -->
<!-- ====================================================== -->
<target name="prepare-test" depends="clean-test">
<mkdir dir="report" />
</target>
<!-- =================================== -->
<!-- Target: test -->
<!-- this target runs all test files -->
<!-- =================================== -->
<target name="test" depends="prepare-test">
<!-- coverage-setup database="./report/coverage-database">
<fileset dir=".">
<include name="**/*.php" />
<exclude name="*test.php"/>
<exclude name="index.php"/>
<exclude name="library/**"/>
<exclude name="doc/**"/>
<exclude name=".."/>
</fileset>
</coverage-setup -->
<phpunit printsummary="true">
<batchtest>
<fileset dir="tests">
<include name="*test.php" />
</fileset>
</batchtest>
<formatter type="xml" todir="report" outfile="testlog.xml" />
</phpunit>
<phpunitreport infile="report/testlog.xml" todir="report" />
<!-- coverage-report outfile="report/coverage-database">
<report todir="report" styledir="/home/phing/etc" />
</coverage-report -->
</target>
<!-- ===================================================== -->
<!-- Target: clean-doc -->
<!-- this target removes documentation from a previous run -->
<!-- ===================================================== -->
<target name="doc-clean">
<echo msg="Removing old documentation..." />
<delete dir="./doc/api/" />
<echo msg="Generate documentation directory..." />
<mkdir dir="./doc/api/" />
</target>
<!-- ====================================== -->
<!-- Target: doc -->
<!-- this target builds all documentation -->
<!-- ====================================== -->
<target name="doc" depends="doc-clean">
<echo msg="Building documentation..." />
<docblox title="Friendica API" destdir="./doc/api">
<fileset dir=".">
<include name="**/*.php" />
<include name="README"/>
<include name="INSTALL.txt"/>
<include name="LICENSE"/>
</fileset>
</docblox>
</target>
</project>

91
composer.lock generated
View file

@ -736,16 +736,16 @@
}, },
{ {
"name": "guzzlehttp/psr7", "name": "guzzlehttp/psr7",
"version": "1.8.1", "version": "1.8.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/psr7.git", "url": "https://github.com/guzzle/psr7.git",
"reference": "35ea11d335fd638b5882ff1725228b3d35496ab1" "reference": "dc960a912984efb74d0a90222870c72c87f10c91"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/35ea11d335fd638b5882ff1725228b3d35496ab1", "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91",
"reference": "35ea11d335fd638b5882ff1725228b3d35496ab1", "reference": "dc960a912984efb74d0a90222870c72c87f10c91",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -803,7 +803,7 @@
"uri", "uri",
"url" "url"
], ],
"time": "2021-03-21T16:25:00+00:00" "time": "2021-04-26T09:17:50+00:00"
}, },
{ {
"name": "league/html-to-markdown", "name": "league/html-to-markdown",
@ -1119,16 +1119,16 @@
}, },
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
"version": "1.26.0", "version": "1.26.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Seldaek/monolog.git", "url": "https://github.com/Seldaek/monolog.git",
"reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33" "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/2209ddd84e7ef1256b7af205d0717fb62cfc9c33", "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5",
"reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33", "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1197,7 +1197,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-14T12:56:38+00:00" "time": "2021-05-28T08:32:12+00:00"
}, },
{ {
"name": "nikic/fast-route", "name": "nikic/fast-route",
@ -1591,19 +1591,11 @@
}, },
{ {
"name": "npm-asset/jgrowl", "name": "npm-asset/jgrowl",
"version": "1.4.6", "version": "1.4.8",
"dist": { "dist": {
"type": "tar", "type": "tar",
"url": "https://registry.npmjs.org/jgrowl/-/jgrowl-1.4.6.tgz", "url": "https://registry.npmjs.org/jgrowl/-/jgrowl-1.4.8.tgz",
"shasum": "2736e332aaee73ccf0a14a5f0066391a0a13f4a3" "shasum": "4ba40ffb93757a7e1d9b262d916be299d03df3a4"
},
"require-dev": {
"npm-asset/grunt": "~0.4.2",
"npm-asset/grunt-contrib-cssmin": "~0.9.0",
"npm-asset/grunt-contrib-jshint": "~0.6.3",
"npm-asset/grunt-contrib-less": "~0.11.0",
"npm-asset/grunt-contrib-uglify": "~0.4.0",
"npm-asset/grunt-contrib-watch": "~0.6.1"
}, },
"type": "npm-asset-library", "type": "npm-asset-library",
"extra": { "extra": {
@ -1616,8 +1608,13 @@
"type": "git", "type": "git",
"url": "git+ssh://git@github.com/stanlemon/jGrowl.git" "url": "git+ssh://git@github.com/stanlemon/jGrowl.git"
}, },
"npm-asset-scripts": [] "npm-asset-scripts": {
"build": "grunt"
}
}, },
"license": [
"MIT"
],
"authors": [ "authors": [
{ {
"name": "Stan Lemon", "name": "Stan Lemon",
@ -1627,7 +1624,7 @@
], ],
"description": "jGrowl is a jQuery plugin that raises unobtrusive messages within the browser, similar to the way that OS X's Growl Framework works. The idea is simple, deliver notifications to the end user in a noticeable way that doesn't obstruct the work flow and yet ", "description": "jGrowl is a jQuery plugin that raises unobtrusive messages within the browser, similar to the way that OS X's Growl Framework works. The idea is simple, deliver notifications to the end user in a noticeable way that doesn't obstruct the work flow and yet ",
"homepage": "https://github.com/stanlemon/jGrowl#readme", "homepage": "https://github.com/stanlemon/jGrowl#readme",
"time": "2017-07-21T02:36:34+00:00" "time": "2021-05-20T17:11:40+00:00"
}, },
{ {
"name": "npm-asset/jquery", "name": "npm-asset/jquery",
@ -2224,16 +2221,16 @@
}, },
{ {
"name": "paragonie/certainty", "name": "paragonie/certainty",
"version": "v2.8.0", "version": "v2.8.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/paragonie/certainty.git", "url": "https://github.com/paragonie/certainty.git",
"reference": "94fc99f8c1f5bdce960713d6b63a108a64d90dfa" "reference": "e2a1da558f95074545ad811d60359c74500a5e24"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/paragonie/certainty/zipball/94fc99f8c1f5bdce960713d6b63a108a64d90dfa", "url": "https://api.github.com/repos/paragonie/certainty/zipball/e2a1da558f95074545ad811d60359c74500a5e24",
"reference": "94fc99f8c1f5bdce960713d6b63a108a64d90dfa", "reference": "e2a1da558f95074545ad811d60359c74500a5e24",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2241,12 +2238,12 @@
"ext-json": "*", "ext-json": "*",
"guzzlehttp/guzzle": "^6|^7", "guzzlehttp/guzzle": "^6|^7",
"paragonie/constant_time_encoding": "^1|^2", "paragonie/constant_time_encoding": "^1|^2",
"paragonie/sodium_compat": "^1.11", "paragonie/sodium_compat": "^1.13",
"php": "^5.5|^7|^8" "php": "^5.5|^7|^8"
}, },
"require-dev": { "require-dev": {
"composer/composer": "^1", "composer/composer": "^1|>=2.0.14",
"phpunit/phpunit": "^4|^5|^6|^7" "phpunit/phpunit": "^4|^5|^6|^7|^8|^9"
}, },
"bin": [ "bin": [
"bin/certainty-cert-symlink" "bin/certainty-cert-symlink"
@ -2282,7 +2279,7 @@
"ssl", "ssl",
"tls" "tls"
], ],
"time": "2020-10-15T08:10:12+00:00" "time": "2021-05-25T18:27:41+00:00"
}, },
{ {
"name": "paragonie/constant_time_encoding", "name": "paragonie/constant_time_encoding",
@ -2442,16 +2439,16 @@
}, },
{ {
"name": "paragonie/sodium_compat", "name": "paragonie/sodium_compat",
"version": "v1.14.0", "version": "v1.16.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/paragonie/sodium_compat.git", "url": "https://github.com/paragonie/sodium_compat.git",
"reference": "a1cfe0b21faf9c0b61ac0c6188c4af7fd6fd0db3" "reference": "2e856afe80bfc968b47da1f4a7e1ea8f03d06b38"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/a1cfe0b21faf9c0b61ac0c6188c4af7fd6fd0db3", "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/2e856afe80bfc968b47da1f4a7e1ea8f03d06b38",
"reference": "a1cfe0b21faf9c0b61ac0c6188c4af7fd6fd0db3", "reference": "2e856afe80bfc968b47da1f4a7e1ea8f03d06b38",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2520,7 +2517,7 @@
"secret-key cryptography", "secret-key cryptography",
"side-channel resistant" "side-channel resistant"
], ],
"time": "2020-12-03T16:26:19+00:00" "time": "2021-05-25T12:58:14+00:00"
}, },
{ {
"name": "patrickschur/language-detection", "name": "patrickschur/language-detection",
@ -2625,16 +2622,16 @@
}, },
{ {
"name": "phpseclib/phpseclib", "name": "phpseclib/phpseclib",
"version": "2.0.30", "version": "2.0.31",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpseclib/phpseclib.git", "url": "https://github.com/phpseclib/phpseclib.git",
"reference": "136b9ca7eebef78be14abf90d65c5e57b6bc5d36" "reference": "233a920cb38636a43b18d428f9a8db1f0a1a08f4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/136b9ca7eebef78be14abf90d65c5e57b6bc5d36", "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/233a920cb38636a43b18d428f9a8db1f0a1a08f4",
"reference": "136b9ca7eebef78be14abf90d65c5e57b6bc5d36", "reference": "233a920cb38636a43b18d428f9a8db1f0a1a08f4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2726,7 +2723,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-17T05:42:04+00:00" "time": "2021-04-06T13:56:45+00:00"
}, },
{ {
"name": "pragmarx/google2fa", "name": "pragmarx/google2fa",
@ -3058,16 +3055,16 @@
}, },
{ {
"name": "psr/log", "name": "psr/log",
"version": "1.1.3", "version": "1.1.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-fig/log.git", "url": "https://github.com/php-fig/log.git",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3091,7 +3088,7 @@
"authors": [ "authors": [
{ {
"name": "PHP-FIG", "name": "PHP-FIG",
"homepage": "http://www.php-fig.org/" "homepage": "https://www.php-fig.org/"
} }
], ],
"description": "Common interface for logging libraries", "description": "Common interface for logging libraries",
@ -3101,7 +3098,7 @@
"psr", "psr",
"psr-3" "psr-3"
], ],
"time": "2020-03-23T09:12:05+00:00" "time": "2021-05-03T11:20:27+00:00"
}, },
{ {
"name": "ralouphie/getallheaders", "name": "ralouphie/getallheaders",

View file

@ -1,6 +1,6 @@
-- ------------------------------------------ -- ------------------------------------------
-- Friendica 2021.06-dev (Siberian Iris) -- Friendica 2021.06-rc (Siberian Iris)
-- DB_UPDATE_VERSION 1418 -- DB_UPDATE_VERSION 1424
-- ------------------------------------------ -- ------------------------------------------
@ -120,6 +120,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
`photo` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo of the contact', `photo` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo of the contact',
`thumb` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo (thumb size)', `thumb` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo (thumb size)',
`micro` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo (micro size)', `micro` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo (micro size)',
`header` varchar(255) COMMENT 'Header picture',
`site-pubkey` text COMMENT '', `site-pubkey` text COMMENT '',
`issued-id` varchar(255) NOT NULL DEFAULT '' COMMENT '', `issued-id` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`dfrn-id` varchar(255) NOT NULL DEFAULT '' COMMENT '', `dfrn-id` varchar(255) NOT NULL DEFAULT '' COMMENT '',
@ -339,10 +340,12 @@ CREATE TABLE IF NOT EXISTS `apcontact` (
`outbox` varchar(255) COMMENT '', `outbox` varchar(255) COMMENT '',
`sharedinbox` varchar(255) COMMENT '', `sharedinbox` varchar(255) COMMENT '',
`manually-approve` boolean COMMENT '', `manually-approve` boolean COMMENT '',
`discoverable` boolean COMMENT 'Mastodon extension: true if profile is published in their directory',
`nick` varchar(255) NOT NULL DEFAULT '' COMMENT '', `nick` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`name` varchar(255) COMMENT '', `name` varchar(255) COMMENT '',
`about` text COMMENT '', `about` text COMMENT '',
`photo` varchar(255) COMMENT '', `photo` varchar(255) COMMENT '',
`header` varchar(255) COMMENT 'Header picture',
`addr` varchar(255) COMMENT '', `addr` varchar(255) COMMENT '',
`alias` varchar(255) COMMENT '', `alias` varchar(255) COMMENT '',
`pubkey` text COMMENT '', `pubkey` text COMMENT '',
@ -751,6 +754,7 @@ CREATE TABLE IF NOT EXISTS `mail` (
`from-photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'contact photo link of the sender', `from-photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'contact photo link of the sender',
`from-url` varchar(255) NOT NULL DEFAULT '' COMMENT 'profile linke of the sender', `from-url` varchar(255) NOT NULL DEFAULT '' COMMENT 'profile linke of the sender',
`contact-id` varchar(255) COMMENT 'contact.id', `contact-id` varchar(255) COMMENT 'contact.id',
`author-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the author of the mail',
`convid` int unsigned COMMENT 'conv.id', `convid` int unsigned COMMENT 'conv.id',
`title` varchar(255) NOT NULL DEFAULT '' COMMENT '', `title` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`body` mediumtext COMMENT '', `body` mediumtext COMMENT '',
@ -759,7 +763,11 @@ CREATE TABLE IF NOT EXISTS `mail` (
`replied` boolean NOT NULL DEFAULT '0' COMMENT '', `replied` boolean NOT NULL DEFAULT '0' COMMENT '',
`unknown` boolean NOT NULL DEFAULT '0' COMMENT 'if sender not in the contact table this is 1', `unknown` boolean NOT NULL DEFAULT '0' COMMENT 'if sender not in the contact table this is 1',
`uri` varchar(255) NOT NULL DEFAULT '' COMMENT '', `uri` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`uri-id` int unsigned COMMENT 'Item-uri id of the related mail',
`parent-uri` varchar(255) NOT NULL DEFAULT '' COMMENT '', `parent-uri` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`parent-uri-id` int unsigned COMMENT 'Item-uri id of the parent of the related mail',
`thr-parent` varchar(255) COMMENT '',
`thr-parent-id` int unsigned COMMENT 'Id of the item-uri table that contains the thread parent uri',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time of the private message', `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time of the private message',
PRIMARY KEY(`id`), PRIMARY KEY(`id`),
INDEX `uid_seen` (`uid`,`seen`), INDEX `uid_seen` (`uid`,`seen`),
@ -767,7 +775,15 @@ CREATE TABLE IF NOT EXISTS `mail` (
INDEX `uri` (`uri`(64)), INDEX `uri` (`uri`(64)),
INDEX `parent-uri` (`parent-uri`(64)), INDEX `parent-uri` (`parent-uri`(64)),
INDEX `contactid` (`contact-id`(32)), INDEX `contactid` (`contact-id`(32)),
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE INDEX `author-id` (`author-id`),
INDEX `uri-id` (`uri-id`),
INDEX `parent-uri-id` (`parent-uri-id`),
INDEX `thr-parent-id` (`thr-parent-id`),
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`author-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`parent-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`thr-parent-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='private messages'; ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='private messages';
-- --
@ -806,6 +822,33 @@ CREATE TABLE IF NOT EXISTS `manage` (
FOREIGN KEY (`mid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE FOREIGN KEY (`mid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='table of accounts that can manage each other'; ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='table of accounts that can manage each other';
--
-- TABLE notification
--
CREATE TABLE IF NOT EXISTS `notification` (
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned COMMENT 'Owner User id',
`vid` smallint unsigned COMMENT 'Id of the verb table entry that contains the activity verbs',
`type` tinyint unsigned COMMENT '',
`actor-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the actor that caused the notification',
`target-uri-id` int unsigned COMMENT 'Item-uri id of the related post',
`parent-uri-id` int unsigned COMMENT 'Item-uri id of the parent of the related post',
`created` datetime COMMENT '',
`seen` boolean DEFAULT '0' COMMENT '',
PRIMARY KEY(`id`),
UNIQUE INDEX `uid_vid_type_actor-id_target-uri-id` (`uid`,`vid`,`type`,`actor-id`,`target-uri-id`),
INDEX `vid` (`vid`),
INDEX `actor-id` (`actor-id`),
INDEX `target-uri-id` (`target-uri-id`),
INDEX `parent-uri-id` (`parent-uri-id`),
INDEX `seen_uid` (`seen`,`uid`),
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`vid`) REFERENCES `verb` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
FOREIGN KEY (`actor-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`target-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`parent-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='notifications';
-- --
-- TABLE notify -- TABLE notify
-- --
@ -1672,7 +1715,9 @@ CREATE VIEW `post-user-view` AS SELECT
`parent-post`.`author-id` AS `parent-author-id`, `parent-post`.`author-id` AS `parent-author-id`,
`parent-post-author`.`url` AS `parent-author-link`, `parent-post-author`.`url` AS `parent-author-link`,
`parent-post-author`.`name` AS `parent-author-name`, `parent-post-author`.`name` AS `parent-author-name`,
`parent-post-author`.`network` AS `parent-author-network` `parent-post-author`.`network` AS `parent-author-network`,
`parent-post-author`.`blocked` AS `parent-author-blocked`,
`parent-post-author`.`hidden` AS `parent-author-hidden`
FROM `post-user` FROM `post-user`
STRAIGHT_JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-user`.`parent-uri-id` AND `post-thread-user`.`uid` = `post-user`.`uid` STRAIGHT_JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-user`.`parent-uri-id` AND `post-thread-user`.`uid` = `post-user`.`uid`
STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-user`.`contact-id` STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-user`.`contact-id`
@ -1832,7 +1877,9 @@ CREATE VIEW `post-thread-user-view` AS SELECT
`parent-post`.`author-id` AS `parent-author-id`, `parent-post`.`author-id` AS `parent-author-id`,
`parent-post-author`.`url` AS `parent-author-link`, `parent-post-author`.`url` AS `parent-author-link`,
`parent-post-author`.`name` AS `parent-author-name`, `parent-post-author`.`name` AS `parent-author-name`,
`parent-post-author`.`network` AS `parent-author-network` `parent-post-author`.`network` AS `parent-author-network`,
`parent-post-author`.`blocked` AS `parent-author-blocked`,
`parent-post-author`.`hidden` AS `parent-author-hidden`
FROM `post-thread-user` FROM `post-thread-user`
INNER JOIN `post-user` ON `post-user`.`id` = `post-thread-user`.`post-user-id` INNER JOIN `post-user` ON `post-user`.`id` = `post-thread-user`.`post-user-id`
STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-thread-user`.`contact-id` STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-thread-user`.`contact-id`
@ -1896,6 +1943,31 @@ CREATE VIEW `post-view` AS SELECT
`post-content`.`target-type` AS `target-type`, `post-content`.`target-type` AS `target-type`,
`post-content`.`target` AS `target`, `post-content`.`target` AS `target`,
`post-content`.`resource-id` AS `resource-id`, `post-content`.`resource-id` AS `resource-id`,
`post`.`author-id` AS `contact-id`,
`author`.`url` AS `contact-link`,
`author`.`addr` AS `contact-addr`,
`author`.`name` AS `contact-name`,
`author`.`nick` AS `contact-nick`,
`author`.`thumb` AS `contact-avatar`,
`author`.`network` AS `contact-network`,
`author`.`blocked` AS `contact-blocked`,
`author`.`hidden` AS `contact-hidden`,
`author`.`readonly` AS `contact-readonly`,
`author`.`archive` AS `contact-archive`,
`author`.`pending` AS `contact-pending`,
`author`.`rel` AS `contact-rel`,
`author`.`uid` AS `contact-uid`,
`author`.`contact-type` AS `contact-contact-type`,
IF (`post`.`network` IN ('apub', 'dfrn', 'dspr', 'stat'), true, `author`.`writable`) AS `writable`,
false AS `self`,
`author`.`id` AS `cid`,
`author`.`alias` AS `alias`,
`author`.`photo` AS `photo`,
`author`.`name-date` AS `name-date`,
`author`.`uri-date` AS `uri-date`,
`author`.`avatar-date` AS `avatar-date`,
`author`.`thumb` AS `thumb`,
`author`.`dfrn-id` AS `dfrn-id`,
`post`.`author-id` AS `author-id`, `post`.`author-id` AS `author-id`,
`author`.`url` AS `author-link`, `author`.`url` AS `author-link`,
`author`.`addr` AS `author-addr`, `author`.`addr` AS `author-addr`,
@ -1931,7 +2003,9 @@ CREATE VIEW `post-view` AS SELECT
`parent-post`.`author-id` AS `parent-author-id`, `parent-post`.`author-id` AS `parent-author-id`,
`parent-post-author`.`url` AS `parent-author-link`, `parent-post-author`.`url` AS `parent-author-link`,
`parent-post-author`.`name` AS `parent-author-name`, `parent-post-author`.`name` AS `parent-author-name`,
`parent-post-author`.`network` AS `parent-author-network` `parent-post-author`.`network` AS `parent-author-network`,
`parent-post-author`.`blocked` AS `parent-author-blocked`,
`parent-post-author`.`hidden` AS `parent-author-hidden`
FROM `post` FROM `post`
STRAIGHT_JOIN `post-thread` ON `post-thread`.`uri-id` = `post`.`parent-uri-id` STRAIGHT_JOIN `post-thread` ON `post-thread`.`uri-id` = `post`.`parent-uri-id`
STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `post`.`author-id` STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `post`.`author-id`
@ -1991,6 +2065,31 @@ CREATE VIEW `post-thread-view` AS SELECT
`post-content`.`target-type` AS `target-type`, `post-content`.`target-type` AS `target-type`,
`post-content`.`target` AS `target`, `post-content`.`target` AS `target`,
`post-content`.`resource-id` AS `resource-id`, `post-content`.`resource-id` AS `resource-id`,
`post-thread`.`author-id` AS `contact-id`,
`author`.`url` AS `contact-link`,
`author`.`addr` AS `contact-addr`,
`author`.`name` AS `contact-name`,
`author`.`nick` AS `contact-nick`,
`author`.`thumb` AS `contact-avatar`,
`author`.`network` AS `contact-network`,
`author`.`blocked` AS `contact-blocked`,
`author`.`hidden` AS `contact-hidden`,
`author`.`readonly` AS `contact-readonly`,
`author`.`archive` AS `contact-archive`,
`author`.`pending` AS `contact-pending`,
`author`.`rel` AS `contact-rel`,
`author`.`uid` AS `contact-uid`,
`author`.`contact-type` AS `contact-contact-type`,
IF (`post`.`network` IN ('apub', 'dfrn', 'dspr', 'stat'), true, `author`.`writable`) AS `writable`,
false AS `self`,
`author`.`id` AS `cid`,
`author`.`alias` AS `alias`,
`author`.`photo` AS `photo`,
`author`.`name-date` AS `name-date`,
`author`.`uri-date` AS `uri-date`,
`author`.`avatar-date` AS `avatar-date`,
`author`.`thumb` AS `thumb`,
`author`.`dfrn-id` AS `dfrn-id`,
`post-thread`.`author-id` AS `author-id`, `post-thread`.`author-id` AS `author-id`,
`author`.`url` AS `author-link`, `author`.`url` AS `author-link`,
`author`.`addr` AS `author-addr`, `author`.`addr` AS `author-addr`,
@ -2026,7 +2125,9 @@ CREATE VIEW `post-thread-view` AS SELECT
`parent-post`.`author-id` AS `parent-author-id`, `parent-post`.`author-id` AS `parent-author-id`,
`parent-post-author`.`url` AS `parent-author-link`, `parent-post-author`.`url` AS `parent-author-link`,
`parent-post-author`.`name` AS `parent-author-name`, `parent-post-author`.`name` AS `parent-author-name`,
`parent-post-author`.`network` AS `parent-author-network` `parent-post-author`.`network` AS `parent-author-network`,
`parent-post-author`.`blocked` AS `parent-author-blocked`,
`parent-post-author`.`hidden` AS `parent-author-hidden`
FROM `post-thread` FROM `post-thread`
INNER JOIN `post` ON `post`.`uri-id` = `post-thread`.`uri-id` INNER JOIN `post` ON `post`.`uri-id` = `post-thread`.`uri-id`
STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `post-thread`.`author-id` STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `post-thread`.`author-id`
@ -2158,6 +2259,7 @@ CREATE VIEW `owner-view` AS SELECT
`contact`.`photo` AS `photo`, `contact`.`photo` AS `photo`,
`contact`.`thumb` AS `thumb`, `contact`.`thumb` AS `thumb`,
`contact`.`micro` AS `micro`, `contact`.`micro` AS `micro`,
`contact`.`header` AS `header`,
`contact`.`site-pubkey` AS `site-pubkey`, `contact`.`site-pubkey` AS `site-pubkey`,
`contact`.`issued-id` AS `issued-id`, `contact`.`issued-id` AS `issued-id`,
`contact`.`dfrn-id` AS `dfrn-id`, `contact`.`dfrn-id` AS `dfrn-id`,

View file

@ -11,21 +11,22 @@ Authentication is the same as described in [Using the APIs](help/api#Authenticat
## Clients ## Clients
Supported mobile apps: ### Supported apps
- [AndStatus](http://andstatus.org) For supported apps please have a look at the [FAQ](help/FAQ#clients)
- [Husky](https://husky.fwgs.ru)
- [Subway Tooter](https://github.com/tateisu/SubwayTooter)
- [Tusky](https://tusky.app)
- [Twidere](https://github.com/TwidereProject/)
- [twitlatte](https://github.com/moko256/twitlatte)
- [Yuito](https://github.com/accelforce/Yuito)
Unsupported mobile apps: ### Unsupported apps
#### Android
- [Fedilab](https://framagit.org/tom79/fedilab) Automatically uses the legacy API, see issue: https://framagit.org/tom79/fedilab/-/issues/520 - [Fedilab](https://framagit.org/tom79/fedilab) Automatically uses the legacy API, see issue: https://framagit.org/tom79/fedilab/-/issues/520
- [Mammut](https://github.com/jamiesanson/Mammut) There are problems with the token request, see issue https://github.com/jamiesanson/Mammut/issues/19 - [Mammut](https://github.com/jamiesanson/Mammut) There are problems with the token request, see issue https://github.com/jamiesanson/Mammut/issues/19
#### iOS
- [Mast](https://github.com/Beesitech/Mast) Doesn't accept the entered instance name. Claims that it is invalid (Message is: "Not a valid instance (may be closed or dead)")
- [Toot!](https://apps.apple.com/app/toot/id1229021451)
## Entities ## Entities
These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/entities/). These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/entities/).
@ -73,6 +74,7 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
- [`GET /api/v1/instance`](https://docs.joinmastodon.org/methods/instance#fetch-instance) - [`GET /api/v1/instance`](https://docs.joinmastodon.org/methods/instance#fetch-instance)
- 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/instance/peers`](https://docs.joinmastodon.org/methods/instance#list-of-connected-domains)
- [`GET /api/v1/lists`](https://docs.joinmastodon.org/methods/timelines/lists/) - [`GET /api/v1/lists`](https://docs.joinmastodon.org/methods/timelines/lists/)
- [`POST /api/v1/lists`](https://docs.joinmastodon.org/methods/timelines/lists/) - [`POST /api/v1/lists`](https://docs.joinmastodon.org/methods/timelines/lists/)
@ -119,17 +121,30 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
## Currently unimplemented endpoints ## Currently unimplemented endpoints
These emdpoints are planned to be implemented These emdpoints are planned to be implemented somewhere in the future.
- [`PATCH /api/v1/accounts/update_credentials`](https://docs.joinmastodon.org/methods/accounts/) - [`PATCH /api/v1/accounts/update_credentials`](https://docs.joinmastodon.org/methods/accounts/)
- [`GET /api/v1/instance/activity`](https://docs.joinmastodon.org/methods/instance#weekly-activity)
## Dummy endpoints
These endpoints are returning empty data to avoid error messages when using third party clients.
They refer to features that don't exist in Friendica yet.
- [`GET /api/v1/accounts/:id/identity_proofs`](https://docs.joinmastodon.org/methods/accounts/)
- [`GET /api/v1/announcements`](https://docs.joinmastodon.org/methods/announcements/)
- [`GET /api/v1/endorsements`](https://docs.joinmastodon.org/methods/accounts/endorsements/)
- [`GET /api/v1/filters`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`GET /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
- [`GET /api/v1/scheduled_statuses`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
## Non supportable endpoints ## Non supportable endpoints
These endpoints won't be implemented, since they refer to functionality that doesn't exist in Friendica These endpoints won't be implemented at the moment.
They refer to features or data that don't exist in Friendica yet.
- POST /api/meta Misskey API endpoint.
- [`POST /api/v1/accounts`](https://docs.joinmastodon.org/methods/accounts/) - [`POST /api/v1/accounts`](https://docs.joinmastodon.org/methods/accounts/)
- [`GET /api/v1/accounts/:id/identity_proofs`](https://docs.joinmastodon.org/methods/accounts/) - [`GET /api/v1/accounts/:id/featured_tags`](https://docs.joinmastodon.org/methods/accounts/)
- [`POST /api/v1/accounts/:id/pin`](https://docs.joinmastodon.org/methods/accounts/) - [`POST /api/v1/accounts/:id/pin`](https://docs.joinmastodon.org/methods/accounts/)
- [`POST /api/v1/accounts/:id/unpin`](https://docs.joinmastodon.org/methods/accounts/) - [`POST /api/v1/accounts/:id/unpin`](https://docs.joinmastodon.org/methods/accounts/)
- [`GET /api/v1/admin/accounts`](https://docs.joinmastodon.org/methods/admin/) - [`GET /api/v1/admin/accounts`](https://docs.joinmastodon.org/methods/admin/)
@ -138,30 +153,31 @@ These endpoints won't be implemented, since they refer to functionality that doe
- [`GET /api/v1/admin/reports`](https://docs.joinmastodon.org/methods/admin/) - [`GET /api/v1/admin/reports`](https://docs.joinmastodon.org/methods/admin/)
- [`GET /api/v1/admin/reports/:id`](https://docs.joinmastodon.org/methods/admin/) - [`GET /api/v1/admin/reports/:id`](https://docs.joinmastodon.org/methods/admin/)
- [`POST /api/v1/admin/reports/:id/{action}`](https://docs.joinmastodon.org/methods/admin/) - [`POST /api/v1/admin/reports/:id/{action}`](https://docs.joinmastodon.org/methods/admin/)
- [`GET /api/v1/announcements`](https://docs.joinmastodon.org/methods/announcements/)
- [`POST /api/v1/announcements/:id/dismiss`](https://docs.joinmastodon.org/methods/announcements/) - [`POST /api/v1/announcements/:id/dismiss`](https://docs.joinmastodon.org/methods/announcements/)
- [`PUT /api/v1/announcements/:id/reactions/{name}`](https://docs.joinmastodon.org/methods/announcements/) - [`PUT /api/v1/announcements/:id/reactions/{name}`](https://docs.joinmastodon.org/methods/announcements/)
- [`DELETE /api/v1/announcements/:id/reactions/{name}`](https://docs.joinmastodon.org/methods/announcements/) - [`DELETE /api/v1/announcements/:id/reactions/{name}`](https://docs.joinmastodon.org/methods/announcements/)
- [`GET /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/) - [`GET /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/)
- [`POST /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/) - [`POST /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/)
- [`DELETE /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/) - [`DELETE /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/)
- [`GET /api/v1/endorsements`](https://docs.joinmastodon.org/methods/accounts/endorsements/)
- [`GET /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/) - [`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/) - [`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/) - [`DELETE /api/v1/featured_tags/:id`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`GET /api/v1/featured_tags/suggestions`](https://docs.joinmastodon.org/methods/accounts/featured_tags/) - [`GET /api/v1/featured_tags/suggestions`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`GET /api/v1/filters`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`GET /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/) - [`GET /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`POST /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/) - [`POST /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`PUT /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/) - [`PUT /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`DELETE /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/) - [`DELETE /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`GET /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/) - [`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/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
- [`GET /api/v1/polls/:id`](https://docs.joinmastodon.org/methods/statuses/polls/) - [`GET /api/v1/polls/:id`](https://docs.joinmastodon.org/methods/statuses/polls/)
- [`POST /api/v1/polls/:id/votes`](https://docs.joinmastodon.org/methods/statuses/polls/) - [`POST /api/v1/polls/:id/votes`](https://docs.joinmastodon.org/methods/statuses/polls/)
- [`DELETE /api/v1/push/subscription`](https://docs.joinmastodon.org/methods/notifications/push/)
- [`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/) - [`POST /api/v1/reports`](https://docs.joinmastodon.org/methods/accounts/reports/)
- [`GET /api/v1/scheduled_statuses`](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/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
- [`PUT /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/) - [`PUT /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
- [`DELETE /api/v1/scheduled_statuses/:id`](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/streaming`](https://docs.joinmastodon.org/methods/timelines/streaming/)
- [`DELETE /api/v1/suggestions/:id`](https://docs.joinmastodon.org/methods/accounts/suggestions/) - [`DELETE /api/v1/suggestions/:id`](https://docs.joinmastodon.org/methods/accounts/suggestions/)

View file

@ -33,9 +33,10 @@ User
If this FAQ does not answer your question you can always reach out to the community via the following options: 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 Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers)
* XMPP: support(at)forum.friendi.ca * 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/)
* IRC: [#friendica at freenode.net](https://webchat.freenode.net/?settings=#friendica) * XMPP: support(at)forum.friendi.ca
* Matrix: [#friendica-en:matrix.org](https://matrix.to/#/#friendica-en:matrix.org) or [#friendi.ca:matrix.org](https://matrix.to/#/#friendi.ca:matrix.org) * IRC: #friendica at libera.chat or [#friendica at freenode.net](https://webchat.freenode.net/?settings=#friendica)
* Matrix: [#friendica-en:matrix.org](https://matrix.to/#/#friendica-en:matrix.org) or [#friendi.ca:matrix.org](https://matrix.to/#/#friendi.ca:matrix.org)
* [Mailing List](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca) * [Mailing List](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca)
<!--- * [XMPP](xmpp:support@forum.friendi.ca?join) <!--- * [XMPP](xmpp:support@forum.friendi.ca?join)
https://github.com/github/markup/issues/202 https://github.com/github/markup/issues/202
@ -182,22 +183,65 @@ Example: Friendica Support
### What friendica clients can I use? ### What friendica clients can I use?
Friendica is using a [Twitter/GNU Social compatible API](help/api), which means you can use any Twitter/GNU Social client for your platform as long as you can change the API path in its settings. Friendica is using a [Twitter/GNU Social compatible API](help/api), which means you can use any Twitter/GNU Social client for your platform as long as you can change the API path in its settings.
Since the 2021.06 release, Friendica also supports the [Mastodon API](help/API-Mastodon) which works with many Mastodon clients.
Here is a list of known working clients: Here is a list of known working clients:
* Android #### Android
* [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) ([F-Droid](https://git.friendi.ca/lubuwest/Friendiqa#install), [Google Play](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa))
* [Fedilab](https://fedilab.app) ([F-Droid](https://f-droid.org/app/fr.gouv.etalab.mastodon), [Google Play](https://play.google.com/store/apps/details?id=app.fedilab.android)) * [AndStatus](http://andstatus.org) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.andstatus.app), [Google Play](https://play.google.com/store/apps/details?id=org.andstatus.app))
* [AndStatus](http://andstatus.org) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.andstatus.app), [Google Play](https://play.google.com/store/apps/details?id=org.andstatus.app)) * [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
* [Twidere](https://dimension.im/) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.mariotaku.twidere), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex), [GitHub](https://github.com/TwidereProject/Twidere-Android)) * [DiCa](https://dica.mixi.cool/) (Available at Google Play)
* SailfishOS * [Fedi](https://play.google.com/store/apps/details?id=com.fediverse.app)
* [Friendly](https://openrepos.net/content/fabrixxm/friendly#comment-form) * [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))
* Linux * [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))
* [Choqok](https://choqok.kde.org) * [Husky](https://husky.fwgs.ru)
* Windows * [Roma](https://play.google.com/store/apps/details?id=tech.bigfig.roma)
* [Friendica Mobile](https://www.microsoft.com/de-DE/store/p/friendica-mobile/9nblggh0fhmn?rtc=1) (Windows 10) * [Subway Tooter](https://github.com/tateisu/SubwayTooter)
* [Tooot](https://tooot.app/)
* [Tusky](https://tusky.app)
* [Twidere](https://dimension.im/) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.mariotaku.twidere), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex), [GitHub](https://github.com/TwidereProject/Twidere-Android))
* [TwidereX](https://github.com/TwidereProject/TwidereX-Android)
* [twitlatte](https://github.com/moko256/twitlatte)
* [Yuito](https://github.com/accelforce/Yuito)
#### SailfishOS
* [Friendly](https://openrepos.net/content/fabrixxm/friendly#comment-form)
#### iOS
* [Amaroq](https://github.com/ReticentJohn/Amaroq/tree/master)
* [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
* [Fedi](https://apps.apple.com/de/app/fedi-for-pleroma-and-mastodon/id1478806281)
* [Roma](https://apps.apple.com/de/app/roma-for-pleroma-and-mastodon/id1445328699)
* [StarPterano](https://apps.apple.com/de/app/starpterano/id1436972796) Uses an OAuth method where you have to manually copy and paste the provided code.
* [Stella](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048?l=ms)
* [Tooot](https://tooot.app/)
* [Tootle](https://apps.apple.com/de/app/tootle-for-mastodon/id1236013466) entered hostname must match in upper/lower case. Currently crashes on "Status" type notifications.
#### Linux
* [Choqok](https://choqok.kde.org)
* [Whalebird](https://whalebird.social)
* [TheDesk](https://ja.mstdn.wiki/TheDesk)
* [Toot](https://toot.readthedocs.io/en/latest/)
* [Tootle](https://github.com/bleakgrey/tootle)
#### MacOS
- [Mastonaut](https://mastonaut.app/)
#### Windows
* [Friendica Mobile](https://www.microsoft.com/de-DE/store/p/friendica-mobile/9nblggh0fhmn?rtc=1) (Windows 10)
Depending on the features of the client you might encounter some glitches in usability, like being limited in the length of your postings to 140 characters and having no access to the [permission settings](help/Groups-and-Privacy). Depending on the features of the client you might encounter some glitches in usability, like being limited in the length of your postings to 140 characters and having no access to the [permission settings](help/Groups-and-Privacy).
#### Web Frontend
- [Halcyon](https://www.halcyon.social/)
- [Pinafore](https://github.com/nolanlawson/pinafore)
Admin Admin
-------- --------

View file

@ -68,9 +68,10 @@ Friendica Documentation and Resources
* Ways to get Support * Ways to get Support
* Friendica Support Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers) * Friendica Support Forum: [@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`` * [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``
* XMPP/Jabber MUC: support(at)forum.friendi.ca * 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/)
* IRC: [#friendica at freenode.net](https://webchat.freenode.net/?settings=#friendica) * XMPP/Jabber MUC: support(at)forum.friendi.ca
* Matrix: [#friendi.ca](https://matrix.to/#/#friendi.ca:matrix.org) or [#friendica-en](https://matrix.to/#/#friendica-en:matrix.org) at matrix.org * IRC: [#friendica at freenode.net](https://webchat.freenode.net/?settings=#friendica)
* Matrix: [#friendi.ca](https://matrix.to/#/#friendi.ca:matrix.org) or [#friendica-en](https://matrix.to/#/#friendica-en:matrix.org) at matrix.org
**About** **About**

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,58 @@
Table apcontact
===========
ActivityPub compatible contacts - used in the ActivityPub implementation
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ---------------- | ------------------------------------------------------------------- | -------------- | ---- | --- | ------------------- | ----- |
| url | URL of the contact | varbinary(255) | NO | PRI | NULL | |
| uuid | | varchar(255) | YES | | NULL | |
| type | | varchar(20) | NO | | NULL | |
| following | | varchar(255) | YES | | NULL | |
| followers | | varchar(255) | YES | | NULL | |
| inbox | | varchar(255) | NO | | NULL | |
| outbox | | varchar(255) | YES | | NULL | |
| sharedinbox | | varchar(255) | YES | | NULL | |
| manually-approve | | boolean | YES | | NULL | |
| discoverable | Mastodon extension: true if profile is published in their directory | boolean | YES | | NULL | |
| nick | | varchar(255) | NO | | | |
| name | | varchar(255) | YES | | NULL | |
| about | | text | YES | | NULL | |
| photo | | varchar(255) | YES | | NULL | |
| header | Header picture | varchar(255) | YES | | NULL | |
| addr | | varchar(255) | YES | | NULL | |
| alias | | varchar(255) | YES | | NULL | |
| pubkey | | text | YES | | NULL | |
| subscribe | | varchar(255) | YES | | NULL | |
| baseurl | baseurl of the ap contact | varchar(255) | YES | | NULL | |
| gsid | Global Server ID | int unsigned | YES | | NULL | |
| generator | Name of the contact's system | varchar(255) | YES | | NULL | |
| following_count | Number of following contacts | int unsigned | YES | | 0 | |
| followers_count | Number of followers | int unsigned | YES | | 0 | |
| statuses_count | Number of posts | int unsigned | YES | | 0 | |
| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ----------- | ---------------- |
| PRIMARY | url |
| addr | addr(32) |
| alias | alias(190) |
| followers | followers(190) |
| baseurl | baseurl(190) |
| sharedinbox | sharedinbox(190) |
| gsid | gsid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| gsid | [gserver](help/database/db_gserver) | id |
Return to [database documentation](help/database)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,33 @@
Table contact-relation
===========
Contact relations
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ---------------- | --------------------------------------------------- | ------------ | ---- | --- | ------------------- | ----- |
| cid | contact the related contact had interacted with | int unsigned | NO | PRI | 0 | |
| relation-cid | related contact who had interacted with the contact | int unsigned | NO | PRI | 0 | |
| last-interaction | Date of the last interaction | datetime | NO | | 0001-01-01 00:00:00 | |
| follow-updated | Date of the last update of the contact relationship | datetime | NO | | 0001-01-01 00:00:00 | |
| follows | | boolean | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------------ | ----------------- |
| PRIMARY | cid, relation-cid |
| relation-cid | relation-cid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| cid | [contact](help/database/db_contact) | id |
| relation-cid | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database)

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,28 @@
Table diaspora-interaction
===========
Signed Diaspora Interaction
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----------- | --------------------------------------------------------- | ------------ | ---- | --- | ------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| interaction | The Diaspora interaction | mediumtext | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | uri-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,24 +1,46 @@
Table gserver Table gserver
============= ===========
| Field | Description | Type | Null | Key | Default | Extra | Global servers
|------------------|---------------------------|------------------|------|-----|---------------------|----------------|
| id | sequential ID | int(10) unsigned | NO | PRI | NULL | auto_increment | Fields
| url | | varchar(255) | NO | | | | ------
| nurl | | varchar(255) | NO | MUL | | |
| version | | varchar(255) | NO | | | | | Field | Description | Type | Null | Key | Default | Extra |
| site_name | | varchar(255) | NO | | | | | ---------------- | -------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
| info | | text | NO | | NULL | | | id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| register_policy | | tinyint(1) | NO | | 0 | | | url | | varchar(255) | NO | | | |
| registered-users |Number of registered users | int(10) | NO | | 0 | | | nurl | | varchar(255) | NO | | | |
| poco | | varchar(255) | NO | | | | | version | | varchar(255) | NO | | | |
| noscrape | | varchar(255) | NO | | | | | site_name | | varchar(255) | NO | | | |
| network | | varchar(32) | NO | | | | | info | | text | YES | | NULL | |
| platform | | varchar(255) | NO | | | | | register_policy | | tinyint | NO | | 0 | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | | | registered-users | Number of registered users | int unsigned | NO | | 0 | |
| last_poco_query | | datetime | YES | | 0001-01-01 00:00:00 | | | directory-type | Type of directory service (Poco, Mastodon) | tinyint | YES | | 0 | |
| last_contact | | datetime | YES | | 0001-01-01 00:00:00 | | | poco | | varchar(255) | NO | | | |
| last_failure | | datetime | YES | | 0001-01-01 00:00:00 | | | noscrape | | varchar(255) | NO | | | |
| network | | char(4) | NO | | | |
| protocol | The protocol of the server | tinyint unsigned | YES | | NULL | |
| platform | | varchar(255) | NO | | | |
| relay-subscribe | Has the server subscribed to the relay system | boolean | NO | | 0 | |
| relay-scope | The scope of messages that the server wants to get | varchar(10) | NO | | | |
| detection-method | Method that had been used to detect that server | tinyint unsigned | YES | | NULL | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
| last_poco_query | | datetime | YES | | 0001-01-01 00:00:00 | |
| last_contact | Last successful connection request | datetime | YES | | 0001-01-01 00:00:00 | |
| last_failure | Last failed connection request | datetime | YES | | 0001-01-01 00:00:00 | |
| failed | Connection failed | boolean | YES | | NULL | |
| next_contact | Next connection request | datetime | YES | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------------ | ----------------- |
| PRIMARY | id |
| nurl | UNIQUE, nurl(190) |
| next_contact | next_contact |
| network | network |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

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

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

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,34 @@
Table post-category
===========
post relation to categories
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------ | --------------------------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| uid | User id | mediumint unsigned | NO | PRI | 0 | |
| type | | tinyint unsigned | NO | PRI | 0 | |
| tid | | int unsigned | NO | PRI | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ---------------------- |
| PRIMARY | uri-id, uid, type, tid |
| uri-id | tid |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| uid | [user](help/database/db_user) | uid |
| tid | [tag](help/database/db_tag) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,46 @@
Table post-content
===========
Content for all posts
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| --------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------ | ---- | --- | ------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| title | item title | varchar(255) | NO | | | |
| content-warning | | varchar(255) | NO | | | |
| body | item body content | mediumtext | YES | | NULL | |
| raw-body | Body without embedded media links | mediumtext | YES | | NULL | |
| location | text location where this item originated | varchar(255) | NO | | | |
| coord | longitude/latitude pair representing location where this item originated | varchar(255) | NO | | | |
| language | Language information about this post | text | YES | | NULL | |
| app | application which generated this item | varchar(255) | NO | | | |
| rendered-hash | | varchar(32) | NO | | | |
| rendered-html | item.body converted to html | mediumtext | YES | | NULL | |
| object-type | ActivityStreams object type | varchar(100) | NO | | | |
| object | JSON encoded object structure unless it is an implied object (normal post) | text | YES | | NULL | |
| target-type | ActivityStreams target type if applicable (URI) | varchar(100) | NO | | | |
| target | JSON encoded target structure if used | text | YES | | NULL | |
| resource-id | Used to link other tables to items, it identifies the linked resource (e.g. photo) and if set must also set resource_type | varchar(32) | NO | | | |
| plink | permalink or URL to a displayable copy of the message at its source | varchar(255) | NO | | | |
Indexes
------------
| Name | Fields |
| -------------------------- | -------------------------------------- |
| PRIMARY | uri-id |
| plink | plink(191) |
| resource-id | resource-id |
| title-content-warning-body | FULLTEXT, title, content-warning, body |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,37 @@
Table post-delivery-data
===========
Delivery data for items
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ---- | --- | ------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| postopts | External post connectors add their network name to this comma-separated string to identify that they should be delivered to these networks during delivery | text | YES | | NULL | |
| inform | Additional receivers of the linked item | mediumtext | YES | | NULL | |
| queue_count | Initial number of delivery recipients, used as item.delivery_queue_count | mediumint | NO | | 0 | |
| queue_done | Number of successful deliveries, used as item.delivery_queue_done | mediumint | NO | | 0 | |
| queue_failed | Number of unsuccessful deliveries, used as item.delivery_queue_failed | mediumint | NO | | 0 | |
| activitypub | Number of successful deliveries via ActivityPub | mediumint | NO | | 0 | |
| dfrn | Number of successful deliveries via DFRN | mediumint | NO | | 0 | |
| legacy_dfrn | Number of successful deliveries via legacy DFRN | mediumint | NO | | 0 | |
| diaspora | Number of successful deliveries via Diaspora | mediumint | NO | | 0 | |
| ostatus | Number of successful deliveries via OStatus | mediumint | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ------ |
| PRIMARY | uri-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,46 @@
Table post-media
===========
Attached media
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| --------------- | --------------------------------------------------------- | ----------------- | ---- | --- | ------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
| url | Media URL | varbinary(511) | NO | | NULL | |
| type | Media type | tinyint unsigned | NO | | 0 | |
| mimetype | | varchar(60) | YES | | NULL | |
| height | Height of the media | smallint unsigned | YES | | NULL | |
| width | Width of the media | smallint unsigned | YES | | NULL | |
| size | Media size | int unsigned | YES | | NULL | |
| preview | Preview URL | varbinary(255) | YES | | NULL | |
| preview-height | Height of the preview picture | smallint unsigned | YES | | NULL | |
| preview-width | Width of the preview picture | smallint unsigned | YES | | NULL | |
| description | | text | YES | | NULL | |
| name | Name of the media | varchar(255) | YES | | NULL | |
| author-url | URL of the author of the media | varbinary(255) | YES | | NULL | |
| author-name | Name of the author of the media | varchar(255) | YES | | NULL | |
| author-image | Image of the author of the media | varbinary(255) | YES | | NULL | |
| publisher-url | URL of the publisher of the media | varbinary(255) | YES | | NULL | |
| publisher-name | Name of the publisher of the media | varchar(255) | YES | | NULL | |
| publisher-image | Image of the publisher of the media | varbinary(255) | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ---------- | ------------------- |
| PRIMARY | id |
| uri-id-url | UNIQUE, uri-id, url |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,34 @@
Table post-tag
===========
post relation to tags
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------ | --------------------------------------------------------- | ---------------- | ---- | --- | ------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| type | | tinyint unsigned | NO | PRI | 0 | |
| tid | | int unsigned | NO | PRI | 0 | |
| cid | Contact id of the mentioned public contact | int unsigned | NO | PRI | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ---------------------- |
| PRIMARY | uri-id, type, tid, cid |
| tid | tid |
| cid | cid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| tid | [tag](help/database/db_tag) | id |
| cid | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,70 @@
Table post-thread-user
===========
Thread related data per user
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------------ | ------------------------------------------------------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| owner-id | Item owner | int unsigned | NO | | 0 | |
| author-id | Item author | int unsigned | NO | | 0 | |
| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
| network | | char(4) | NO | | | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
| received | | datetime | NO | | 0001-01-01 00:00:00 | |
| changed | Date that something in the conversation changed, indicating clients should fetch the conversation again | datetime | NO | | 0001-01-01 00:00:00 | |
| commented | | datetime | NO | | 0001-01-01 00:00:00 | |
| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | PRI | 0 | |
| pinned | The thread is pinned on the profile page | boolean | NO | | 0 | |
| starred | | boolean | NO | | 0 | |
| ignored | Ignore updates for this thread | boolean | NO | | 0 | |
| wall | This item was posted to the wall of uid | boolean | NO | | 0 | |
| mention | | boolean | NO | | 0 | |
| pubmail | | boolean | NO | | 0 | |
| forum_mode | | tinyint unsigned | NO | | 0 | |
| contact-id | contact.id | int unsigned | NO | | 0 | |
| unseen | post has not been seen | boolean | NO | | 1 | |
| hidden | Marker to hide the post from the user | boolean | NO | | 0 | |
| origin | item originated at this site | boolean | NO | | 0 | |
| psid | ID of the permission set of this post | int unsigned | YES | | NULL | |
| post-user-id | Id of the post-user table | int unsigned | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------------- | -------------- |
| PRIMARY | uid, uri-id |
| uri-id | uri-id |
| owner-id | owner-id |
| author-id | author-id |
| causer-id | causer-id |
| uid | uid |
| contact-id | contact-id |
| psid | psid |
| post-user-id | post-user-id |
| commented | commented |
| uid_received | uid, received |
| uid_pinned | uid, pinned |
| uid_commented | uid, commented |
| uid_starred | uid, starred |
| uid_mention | uid, mention |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| owner-id | [contact](help/database/db_contact) | id |
| author-id | [contact](help/database/db_contact) | id |
| causer-id | [contact](help/database/db_contact) | id |
| uid | [user](help/database/db_user) | uid |
| contact-id | [contact](help/database/db_contact) | id |
| psid | [permissionset](help/database/db_permissionset) | id |
| post-user-id | [post-user](help/database/db_post-user) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,43 @@
Table post-thread
===========
Thread related data
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| --------- | ------------------------------------------------------------------------------------------------------- | ------------ | ---- | --- | ------------------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| owner-id | Item owner | int unsigned | NO | | 0 | |
| author-id | Item author | int unsigned | NO | | 0 | |
| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
| network | | char(4) | NO | | | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
| received | | datetime | NO | | 0001-01-01 00:00:00 | |
| changed | Date that something in the conversation changed, indicating clients should fetch the conversation again | datetime | NO | | 0001-01-01 00:00:00 | |
| commented | | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| --------- | --------- |
| PRIMARY | uri-id |
| owner-id | owner-id |
| author-id | author-id |
| causer-id | causer-id |
| received | received |
| commented | commented |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| owner-id | [contact](help/database/db_contact) | id |
| author-id | [contact](help/database/db_contact) | id |
| causer-id | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,31 @@
Table post-user-notification
===========
User post notifications
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----------------- | --------------------------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | PRI | NULL | |
| notification-type | | tinyint unsigned | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ----------- |
| PRIMARY | uid, uri-id |
| uri-id | uri-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -0,0 +1,86 @@
Table post-user
===========
User specific post data
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----------------- | --------------------------------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | | int unsigned | NO | PRI | NULL | auto_increment |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
| parent-uri-id | Id of the item-uri table that contains the parent uri | int unsigned | YES | | NULL | |
| thr-parent-id | Id of the item-uri table that contains the thread parent uri | int unsigned | YES | | NULL | |
| external-id | Id of the item-uri table entry that contains the external uri | int unsigned | YES | | NULL | |
| created | Creation timestamp. | datetime | NO | | 0001-01-01 00:00:00 | |
| edited | Date of last edit (default is created) | datetime | NO | | 0001-01-01 00:00:00 | |
| received | datetime | datetime | NO | | 0001-01-01 00:00:00 | |
| gravity | | tinyint unsigned | NO | | 0 | |
| network | Network from where the item comes from | char(4) | NO | | | |
| owner-id | Link to the contact table with uid=0 of the owner of this item | int unsigned | NO | | 0 | |
| author-id | Link to the contact table with uid=0 of the author of this item | int unsigned | NO | | 0 | |
| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
| post-type | Post type (personal note, image, article, ...) | tinyint unsigned | NO | | 0 | |
| post-reason | Reason why the post arrived at the user | tinyint unsigned | NO | | 0 | |
| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
| private | 0=public, 1=private, 2=unlisted | tinyint unsigned | NO | | 0 | |
| global | | boolean | NO | | 0 | |
| visible | | boolean | NO | | 0 | |
| deleted | item has been marked for deletion | boolean | NO | | 0 | |
| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | | NULL | |
| protocol | Protocol used to deliver the item for this user | tinyint unsigned | YES | | NULL | |
| contact-id | contact.id | int unsigned | NO | | 0 | |
| event-id | Used to link to the event.id | int unsigned | YES | | NULL | |
| unseen | post has not been seen | boolean | NO | | 1 | |
| hidden | Marker to hide the post from the user | boolean | NO | | 0 | |
| notification-type | | tinyint unsigned | NO | | 0 | |
| wall | This item was posted to the wall of uid | boolean | NO | | 0 | |
| origin | item originated at this site | boolean | NO | | 0 | |
| psid | ID of the permission set of this post | int unsigned | YES | | NULL | |
Indexes
------------
| Name | Fields |
| -------------------- | ----------------------- |
| PRIMARY | id |
| uid_uri-id | UNIQUE, uid, uri-id |
| uri-id | uri-id |
| parent-uri-id | parent-uri-id |
| thr-parent-id | thr-parent-id |
| external-id | external-id |
| owner-id | owner-id |
| author-id | author-id |
| causer-id | causer-id |
| vid | vid |
| contact-id | contact-id |
| event-id | event-id |
| psid | psid |
| author-id_uid | author-id, uid |
| author-id_received | author-id, received |
| parent-uri-id_uid | parent-uri-id, uid |
| uid_contactid | uid, contact-id |
| uid_unseen_contactid | uid, unseen, contact-id |
| uid_unseen | uid, unseen |
| uid_hidden_uri-id | uid, hidden, uri-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| parent-uri-id | [item-uri](help/database/db_item-uri) | id |
| thr-parent-id | [item-uri](help/database/db_item-uri) | id |
| external-id | [item-uri](help/database/db_item-uri) | id |
| owner-id | [contact](help/database/db_contact) | id |
| author-id | [contact](help/database/db_contact) | id |
| causer-id | [contact](help/database/db_contact) | id |
| vid | [verb](help/database/db_verb) | id |
| uid | [user](help/database/db_user) | uid |
| contact-id | [contact](help/database/db_contact) | id |
| event-id | [event](help/database/db_event) | id |
| psid | [permissionset](help/database/db_permissionset) | id |
Return to [database documentation](help/database)

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

@ -0,0 +1,58 @@
Table post
===========
Structure for all posts
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------------- | --------------------------------------------------------------------------------- | ----------------- | ---- | --- | ------------------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| parent-uri-id | Id of the item-uri table that contains the parent uri | int unsigned | YES | | NULL | |
| thr-parent-id | Id of the item-uri table that contains the thread parent uri | int unsigned | YES | | NULL | |
| external-id | Id of the item-uri table entry that contains the external uri | int unsigned | YES | | NULL | |
| created | Creation timestamp. | datetime | NO | | 0001-01-01 00:00:00 | |
| edited | Date of last edit (default is created) | datetime | NO | | 0001-01-01 00:00:00 | |
| received | datetime | datetime | NO | | 0001-01-01 00:00:00 | |
| gravity | | tinyint unsigned | NO | | 0 | |
| network | Network from where the item comes from | char(4) | NO | | | |
| owner-id | Link to the contact table with uid=0 of the owner of this item | int unsigned | NO | | 0 | |
| author-id | Link to the contact table with uid=0 of the author of this item | int unsigned | NO | | 0 | |
| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
| post-type | Post type (personal note, image, article, ...) | tinyint unsigned | NO | | 0 | |
| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
| private | 0=public, 1=private, 2=unlisted | tinyint unsigned | NO | | 0 | |
| global | | boolean | NO | | 0 | |
| visible | | boolean | NO | | 0 | |
| deleted | item has been marked for deletion | boolean | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ------------- | ------------- |
| PRIMARY | uri-id |
| parent-uri-id | parent-uri-id |
| thr-parent-id | thr-parent-id |
| external-id | external-id |
| owner-id | owner-id |
| author-id | author-id |
| causer-id | causer-id |
| vid | vid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| parent-uri-id | [item-uri](help/database/db_item-uri) | id |
| thr-parent-id | [item-uri](help/database/db_item-uri) | id |
| external-id | [item-uri](help/database/db_item-uri) | id |
| owner-id | [contact](help/database/db_contact) | id |
| author-id | [contact](help/database/db_contact) | id |
| causer-id | [contact](help/database/db_contact) | id |
| vid | [verb](help/database/db_verb) | id |
Return to [database documentation](help/database)

View file

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

View file

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

View file

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

View file

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

View file

@ -1,10 +1,38 @@
Table push_subscriber Table push_subscriber
===================== ===========
| Field | Description | Type | Null | Key | Default | Extra | Used for OStatus: Contains feed subscribers
|---------|------------------|---------|------|-----|---------|----------------|
| id | sequential ID | int(11) | NO | PRI | NULL | auto_increment | Fields
| poll_id | | int(11) | NO | MUL | 0 | | ------
| choice | | int(11) | NO | MUL | 0 | |
| Field | Description | Type | Null | Key | Default | Extra |
| ------------ | --------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | User id | mediumint unsigned | NO | | 0 | |
| callback_url | | varchar(255) | NO | | | |
| topic | | varchar(255) | NO | | | |
| nickname | | varchar(255) | NO | | | |
| push | Retrial counter | tinyint | NO | | 0 | |
| last_update | Date of last successful trial | datetime | NO | | 0001-01-01 00:00:00 | |
| next_try | Next retrial date | datetime | NO | | 0001-01-01 00:00:00 | |
| renewed | Date of last subscription renewal | datetime | NO | | 0001-01-01 00:00:00 | |
| secret | | varchar(255) | NO | | | |
Indexes
------------
| Name | Fields |
| -------- | -------- |
| PRIMARY | id |
| next_try | next_try |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database) Return to [database documentation](help/database)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

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

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,33 @@
Table user-contact
===========
User specific public contact data
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| --------- | ------------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
| cid | Contact id of the linked public contact | int unsigned | NO | PRI | 0 | |
| uid | User id | mediumint unsigned | NO | PRI | 0 | |
| blocked | Contact is completely blocked for this user | boolean | YES | | NULL | |
| ignored | Posts from this contact are ignored | boolean | YES | | NULL | |
| collapsed | Posts from this contact are collapsed | boolean | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | -------- |
| PRIMARY | uid, cid |
| cid | cid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| cid | [contact](help/database/db_contact) | id |
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

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

View file

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

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

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

View file

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

View file

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

View file

@ -36,9 +36,10 @@ Wenn Du Deinen Account nicht nutzen kannst, kannst Du einen Account auf einer ö
Wenn du dir keinen weiteren Friendica Account einrichten willst, kannst du auch gerne über einen der folgenden alternativen Kanäle Hilfe suchen: Wenn du dir keinen weiteren Friendica Account einrichten willst, kannst du auch gerne über einen der folgenden alternativen Kanäle Hilfe suchen:
* Friendica Support Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers) * Friendica Support Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers)
* XMPP: support(at)forum.friendi.ca * Chats der Friendica Community (die IRC, Matrix und XMPP Räume sind mit einer Brücke verbunden) Logs dieser öffentlichen Chaträume können [hier aus dem IRC](https://gnusociarg.nsupdate.info/2021/%23frie) und [hier aus der Matrix](https://view.matrix.org/alias/%23friendi.ca:matrix.org/) gefunden werden.
* IRC: [#friendica at freenode.net](https://webchat.freenode.net/?settings=#friendica) * XMPP: support(at)forum.friendi.ca
* Matrix: [#friendica-en:matrix.org](https://matrix.to/#/#friendica-en:matrix.org) or [#friendi.ca:matrix.org](https://matrix.to/#/#friendi.ca:matrix.org) * IRC: #friendica aut libera.chat oder [#friendica auf freenode.net](https://webchat.freenode.net/?settings=#friendica)
* Matrix: [#friendica-en:matrix.org](https://matrix.to/#/#friendica-en:matrix.org) or [#friendi.ca:matrix.org](https://matrix.to/#/#friendi.ca:matrix.org)
* [Mailing List](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca) * [Mailing List](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca)
<!--- * [XMPP](xmpp:support@forum.friendi.ca?join) <!--- * [XMPP](xmpp:support@forum.friendi.ca?join)
https://github.com/github/markup/issues/202 https://github.com/github/markup/issues/202
@ -193,26 +194,63 @@ Beispiel: Friendica Support
Friendica verwendet eine [Twitter/GNU Social](help/api) kompatible API. Friendica verwendet eine [Twitter/GNU Social](help/api) kompatible API.
Das bedeutet, dass du jeden Twitter/GNU Social Client verwenden kannst in dem du den API Pfad entsprechend änderst. Das bedeutet, dass du jeden Twitter/GNU Social Client verwenden kannst in dem du den API Pfad entsprechend änderst.
Seit der Version 2021.06 unterstützt Friendica außerdem die [Mastodon API](help/API-Mastodon) die mit vielen Mastodon-Clients läuft.
Hier ist eine Liste von Clients bei denen dies möglich ist, bzw. die speziell für Friendica entwickelt werden: Hier ist eine Liste von Clients, die speziell für Friendica entwickelt werden oder die mit Friendica kompatibel sind:
* Android #### Android
* [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) (Gibt es im Google Playstore oder als [binary Repository](https://freunde.ma-nic.de/display/3e98eba8185a13c5bdbf3d1539646854) für F-Droid)
* [Fedilab](https://gitlab.com/tom79/mastalab) (Gibt es im F-Droid und dem Google Play Store) * [AndStatus](http://andstatus.org) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.andstatus.app), [Google Play](https://play.google.com/store/apps/details?id=org.andstatus.app))
* [DiCa](https://dica.mixi.cool/) (Gibt es bei Google Play) * [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
* AndStatus * [DiCa](https://dica.mixi.cool/) (Gibt es bei Google Play)
* Twidere * [Fedi](https://play.google.com/store/apps/details?id=com.fediverse.app)
* Mustard and Mustard-Mod * [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))
* SailfishOS * [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) (Gibt es im Google Playstore oder als [binary Repository](https://freunde.ma-nic.de/display/3e98eba8185a13c5bdbf3d1539646854) für F-Droid)
* [Friendly](https://openrepos.net/content/fabrixxm/friendly#comment-form) * [Husky](https://husky.fwgs.ru)
* Linux * [Roma](https://play.google.com/store/apps/details?id=tech.bigfig.roma)
* Hotot * [Subway Tooter](https://github.com/tateisu/SubwayTooter)
* Choqok * [Tooot](https://tooot.app/)
* MacOS X * [Tusky](https://tusky.app)
* Hotot * [Twidere](https://dimension.im/) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.mariotaku.twidere), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex), [GitHub](https://github.com/TwidereProject/Twidere-Android))
* Windows * [TwidereX](https://github.com/TwidereProject/TwidereX-Android)
* [Friendica Mobile](https://www.microsoft.com/de-DE/store/p/friendica-mobile/9nblggh0fhmn?rtc=1) für Windows 10 * [twitlatte](https://github.com/moko256/twitlatte)
* Hotot * [Yuito](https://github.com/accelforce/Yuito)
#### SailfishOS
* [Friendly](https://openrepos.net/content/fabrixxm/friendly#comment-form)
#### iOS
- [Amaroq](https://github.com/ReticentJohn/Amaroq/tree/master)
- [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
- [Fedi](https://apps.apple.com/de/app/fedi-for-pleroma-and-mastodon/id1478806281)
- [Roma](https://apps.apple.com/de/app/roma-for-pleroma-and-mastodon/id1445328699)
- [StarPterano](https://apps.apple.com/de/app/starpterano/id1436972796)
- [Stella](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048?l=ms)
- [Tooot](https://tooot.app/)
- [Tootle](https://apps.apple.com/de/app/tootle-for-mastodon/id1236013466) Der eingegene Hostname muss in Groß-/Kleinschreibung mit dem Hostnamen des Systems übereinstimmen. Die aktuelle Version stürzt bei Benachrichtungen bom Typ "status" ab.
#### Linux
* [Choqok](https://choqok.kde.org)
* [Whalebird](https://whalebird.social)
* [TheDesk](https://ja.mstdn.wiki/TheDesk)
* [Toot](https://toot.readthedocs.io/en/latest/)
* [Tootle](https://github.com/bleakgrey/tootle)
#### MacOS
- [Mastonaut](https://mastonaut.app/)
#### Windows
* [Friendica Mobile](https://www.microsoft.com/de-DE/store/p/friendica-mobile/9nblggh0fhmn?rtc=1) für Windows 10
#### Web
- [Halcyon](https://www.halcyon.social/)
- [Pinafore](https://github.com/nolanlawson/pinafore)
Admin Admin
-------- --------

View file

@ -54,7 +54,7 @@ Friendica - Dokumentation und Ressourcen
* [Class Autoloading](help/autoloader) (EN) * [Class Autoloading](help/autoloader) (EN)
* [Using Composer](help/Composer) (EN) * [Using Composer](help/Composer) (EN)
* [Code-Referenz (mit doxygen generiert - setzt Cookies)](doc/html/) * [Code-Referenz (mit doxygen generiert - setzt Cookies)](doc/html/)
* [Twitter/GNU Social API Functions](help/api) (EN) * [API Dokumentation](help/api) (EN)
* [Translation of Friendica](help/translations) (EN) * [Translation of Friendica](help/translations) (EN)
* [Run tests](help/Tests) (EN) * [Run tests](help/Tests) (EN)
@ -64,9 +64,10 @@ Friendica - Dokumentation und Ressourcen
* Support Kanäle * Support Kanäle
* Friendica Support Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers) * Friendica Support Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers)
* [Mailing Listen Archiv](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca) zum Abonnieren der Liste eine E-Mail an ``support-request(at)friendi.ca?subject=subscribe`` senden * [Mailing Listen Archiv](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca) zum Abonnieren der Liste eine E-Mail an ``support-request(at)friendi.ca?subject=subscribe`` senden
* XMPP/Jabber MUC: support(at)forum.friendi.ca * Chats der Friendica Community (die IRC, Matrix und XMPP Räume sind mit einer Brücke verbunden) Logs dieser öffentlichen Chaträume können [hier aus dem IRC](https://gnusociarg.nsupdate.info/2021/%23frie) und [hier aus der Matrix](https://view.matrix.org/alias/%23friendi.ca:matrix.org/) gefunden werden.
* IRC: [#friendica auf irc.freenode.net](https://webchat.freenode.net/?settings=#friendica) * XMPP/Jabber MUC: support(at)forum.friendi.ca
* Matrix: [#friendi.ca](https://matrix.to/#/#friendi.ca:matrix.org) oder [#friendica-en](https://matrix.to/#/#friendica-en:matrix.org) auf matrix.org * IRC: #friendica auf libera.chat oder [#friendica auf irc.freenode.net](https://webchat.freenode.net/?settings=#friendica)
* Matrix: [#friendi.ca](https://matrix.to/#/#friendi.ca:matrix.org) oder [#friendica-en](https://matrix.to/#/#friendica-en:matrix.org) auf matrix.org
**Über diese Seite** **Über diese Seite**

View file

@ -42,6 +42,7 @@ use Friendica\Model\Mail;
use Friendica\Model\Notification; use Friendica\Model\Notification;
use Friendica\Model\Photo; use Friendica\Model\Photo;
use Friendica\Model\Post; use Friendica\Model\Post;
use Friendica\Model\Profile;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Model\Verb; use Friendica\Model\Verb;
use Friendica\Network\HTTPException; use Friendica\Network\HTTPException;
@ -57,6 +58,7 @@ use Friendica\Object\Image;
use Friendica\Protocol\Activity; use Friendica\Protocol\Activity;
use Friendica\Protocol\Diaspora; use Friendica\Protocol\Diaspora;
use Friendica\Security\FKOAuth1; use Friendica\Security\FKOAuth1;
use Friendica\Security\OAuth;
use Friendica\Security\OAuth1\OAuthRequest; use Friendica\Security\OAuth1\OAuthRequest;
use Friendica\Security\OAuth1\OAuthUtil; use Friendica\Security\OAuth1\OAuthUtil;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
@ -88,6 +90,11 @@ $called_api = [];
*/ */
function api_user() function api_user()
{ {
$user = OAuth::getCurrentUserID();
if (!empty($user)) {
return $user;
}
if (!empty($_SESSION['allow_api'])) { if (!empty($_SESSION['allow_api'])) {
return local_user(); return local_user();
} }
@ -175,7 +182,6 @@ function api_register_func($path, $func, $auth = false, $method = API_METHOD_ANY
* Simple Auth allow username in form of <pre>user@server</pre>, ignoring server part * Simple Auth allow username in form of <pre>user@server</pre>, ignoring server part
* *
* @param App $a App * @param App $a App
* @param bool $do_login try to log in when not logged in, otherwise quit silently
* @throws ForbiddenException * @throws ForbiddenException
* @throws InternalServerErrorException * @throws InternalServerErrorException
* @throws UnauthorizedException * @throws UnauthorizedException
@ -186,7 +192,7 @@ function api_register_func($path, $func, $auth = false, $method = API_METHOD_ANY
* 'authenticated' => return status, * 'authenticated' => return status,
* 'user_record' => return authenticated user record * 'user_record' => return authenticated user record
*/ */
function api_login(App $a, bool $do_login = true) function api_login(App $a)
{ {
$_SESSION["allow_api"] = false; $_SESSION["allow_api"] = false;
@ -219,10 +225,6 @@ function api_login(App $a, bool $do_login = true)
Logger::warning(API_LOG_PREFIX . 'OAuth error', ['module' => 'api', 'action' => 'login', 'exception' => $e->getMessage()]); Logger::warning(API_LOG_PREFIX . 'OAuth error', ['module' => 'api', 'action' => 'login', 'exception' => $e->getMessage()]);
} }
if (!$do_login) {
return;
}
Logger::debug(API_LOG_PREFIX . 'failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); Logger::debug(API_LOG_PREFIX . 'failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]);
header('WWW-Authenticate: Basic realm="Friendica"'); header('WWW-Authenticate: Basic realm="Friendica"');
throw new UnauthorizedException("This API requires login"); throw new UnauthorizedException("This API requires login");
@ -264,9 +266,6 @@ function api_login(App $a, bool $do_login = true)
} }
if (!DBA::isResult($record)) { if (!DBA::isResult($record)) {
if (!$do_login) {
return;
}
Logger::debug(API_LOG_PREFIX . 'failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]); Logger::debug(API_LOG_PREFIX . 'failed', ['module' => 'api', 'action' => 'login', 'parameters' => $_SERVER]);
header('WWW-Authenticate: Basic realm="Friendica"'); header('WWW-Authenticate: Basic realm="Friendica"');
//header('HTTP/1.0 401 Unauthorized'); //header('HTTP/1.0 401 Unauthorized');
@ -602,7 +601,7 @@ function api_get_user(App $a, $contact_id = null)
api_login($a); api_login($a);
return false; return false;
} else { } else {
$user = $_SESSION['uid']; $user = api_user();
$extra_query = "AND `contact`.`uid` = %d AND `contact`.`self` "; $extra_query = "AND `contact`.`uid` = %d AND `contact`.`self` ";
} }
} }
@ -1186,12 +1185,12 @@ function api_statuses_update($type)
INNER JOIN `user` ON `user`.`uid` = `photo`.`uid` WHERE `resource-id` IN INNER JOIN `user` ON `user`.`uid` = `photo`.`uid` WHERE `resource-id` IN
(SELECT `resource-id` FROM `photo` WHERE `id` = ?) AND `photo`.`uid` = ? (SELECT `resource-id` FROM `photo` WHERE `id` = ?) AND `photo`.`uid` = ?
ORDER BY `photo`.`width` DESC LIMIT 2", $id, api_user())); ORDER BY `photo`.`width` DESC LIMIT 2", $id, api_user()));
if (!empty($media)) { if (!empty($media)) {
$ressources[] = $media[0]['resource-id']; $ressources[] = $media[0]['resource-id'];
$phototypes = Images::supportedTypes(); $phototypes = Images::supportedTypes();
$ext = $phototypes[$media[0]['type']]; $ext = $phototypes[$media[0]['type']];
$attachment = ['type' => Post\Media::IMAGE, 'mimetype' => $media[0]['type'], $attachment = ['type' => Post\Media::IMAGE, 'mimetype' => $media[0]['type'],
'url' => DI::baseUrl() . '/photo/' . $media[0]['resource-id'] . '-' . $media[0]['scale'] . '.' . $ext, 'url' => DI::baseUrl() . '/photo/' . $media[0]['resource-id'] . '-' . $media[0]['scale'] . '.' . $ext,
'size' => $media[0]['datasize'], 'size' => $media[0]['datasize'],
@ -1199,7 +1198,7 @@ function api_statuses_update($type)
'description' => $media[0]['desc'] ?? '', 'description' => $media[0]['desc'] ?? '',
'width' => $media[0]['width'], 'width' => $media[0]['width'],
'height' => $media[0]['height']]; 'height' => $media[0]['height']];
if (count($media) > 1) { if (count($media) > 1) {
$attachment['preview'] = DI::baseUrl() . '/photo/' . $media[1]['resource-id'] . '-' . $media[1]['scale'] . '.' . $ext; $attachment['preview'] = DI::baseUrl() . '/photo/' . $media[1]['resource-id'] . '-' . $media[1]['scale'] . '.' . $ext;
$attachment['preview-width'] = $media[1]['width']; $attachment['preview-width'] = $media[1]['width'];
@ -4554,12 +4553,7 @@ function api_account_update_profile_image($type)
Contact::updateSelfFromUserID(api_user(), true); Contact::updateSelfFromUserID(api_user(), true);
// Update global directory in background // Update global directory in background
$url = DI::baseUrl() . '/profile/' . DI::app()->user['nickname']; Profile::publishUpdate(api_user());
if ($url && strlen(DI::config()->get('system', 'directory'))) {
Worker::add(PRIORITY_LOW, "Directory", $url);
}
Worker::add(PRIORITY_LOW, 'ProfileUpdate', api_user());
// output for client // output for client
if ($data) { if ($data) {
@ -4610,11 +4604,7 @@ function api_account_update_profile($type)
DBA::update('contact', ['about' => $_POST['description']], ['id' => $api_user['id']]); DBA::update('contact', ['about' => $_POST['description']], ['id' => $api_user['id']]);
} }
Worker::add(PRIORITY_LOW, 'ProfileUpdate', $local_user); Profile::publishUpdate($local_user);
// Update global directory in background
if ($api_user['url'] && strlen(DI::config()->get('system', 'directory'))) {
Worker::add(PRIORITY_LOW, "Directory", $api_user['url']);
}
return api_account_verify_credentials($type); return api_account_verify_credentials($type);
} }

View file

@ -42,6 +42,7 @@ use Friendica\Object\Thread;
use Friendica\Protocol\Activity; use Friendica\Protocol\Activity;
use Friendica\Util\Crypto; use Friendica\Util\Crypto;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
use Friendica\Util\Proxy;
use Friendica\Util\Strings; use Friendica\Util\Strings;
use Friendica\Util\Temporal; use Friendica\Util\Temporal;
use Friendica\Util\XML; use Friendica\Util\XML;
@ -603,7 +604,7 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o
'name' => $profile_name, 'name' => $profile_name,
'sparkle' => $sparkle, 'sparkle' => $sparkle,
'lock' => false, 'lock' => false,
'thumb' => DI::baseUrl()->remove($item['author-avatar']), 'thumb' => DI::baseUrl()->remove(Contact::getAvatarUrlForUrl($item['author-link'], $item['uid'], Proxy::SIZE_THUMB)),
'title' => $title, 'title' => $title,
'body_html' => $body_html, 'body_html' => $body_html,
'tags' => $tags['tags'], 'tags' => $tags['tags'],
@ -623,7 +624,7 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o
'indent' => '', 'indent' => '',
'owner_name' => '', 'owner_name' => '',
'owner_url' => '', 'owner_url' => '',
'owner_photo' => DI::baseUrl()->remove($item['owner-avatar']), 'owner_photo' => DI::baseUrl()->remove(Contact::getAvatarUrlForUrl($item['owner-link'], $item['uid'], Proxy::SIZE_THUMB)),
'plink' => Item::getPlink($item), 'plink' => Item::getPlink($item),
'edpost' => false, 'edpost' => false,
'isstarred' => 'unstarred', 'isstarred' => 'unstarred',
@ -737,8 +738,6 @@ function conversation_fetch_comments($thread_items, bool $pinned, array $activit
} }
} }
$name = $row['causer-contact-type'] == Contact::TYPE_RELAY ? $row['causer-link'] : $row['causer-name'];
switch ($row['post-reason']) { switch ($row['post-reason']) {
case Item::PR_TO: case Item::PR_TO:
$row['direction'] = ['direction' => 7, 'title' => DI::l10n()->t('You had been addressed (%s).', 'to')]; $row['direction'] = ['direction' => 7, 'title' => DI::l10n()->t('You had been addressed (%s).', 'to')];
@ -769,9 +768,9 @@ function conversation_fetch_comments($thread_items, bool $pinned, array $activit
if (($row['gravity'] == GRAVITY_PARENT) && !empty($row['causer-id'])) { if (($row['gravity'] == GRAVITY_PARENT) && !empty($row['causer-id'])) {
$causer = ['uid' => 0, 'id' => $row['causer-id'], $causer = ['uid' => 0, 'id' => $row['causer-id'],
'network' => $row['causer-network'], 'url' => $row['causer-link']]; 'network' => $row['causer-network'], 'url' => $row['causer-link']];
$row['reshared'] = DI::l10n()->t('%s reshared this.', '<a href="'. htmlentities(Contact::magicLinkByContact($causer)) .'">' . htmlentities($name) . '</a>'); $row['reshared'] = DI::l10n()->t('%s reshared this.', '<a href="'. htmlentities(Contact::magicLinkByContact($causer)) .'">' . htmlentities($row['causer-name']) . '</a>');
} }
$row['direction'] = ['direction' => 3, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Reshared') : DI::l10n()->t('Reshared by %s', $name))]; $row['direction'] = ['direction' => 3, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Reshared') : DI::l10n()->t('Reshared by %s <%s>', $row['causer-name'], $row['causer-link']))];
break; break;
case Item::PR_COMMENT: case Item::PR_COMMENT:
$row['direction'] = ['direction' => 5, 'title' => DI::l10n()->t('%s is participating in this thread.', $row['author-name'])]; $row['direction'] = ['direction' => 5, 'title' => DI::l10n()->t('%s is participating in this thread.', $row['author-name'])];
@ -783,10 +782,10 @@ function conversation_fetch_comments($thread_items, bool $pinned, array $activit
$row['direction'] = ['direction' => 9, 'title' => DI::l10n()->t('Global')]; $row['direction'] = ['direction' => 9, 'title' => DI::l10n()->t('Global')];
break; break;
case Item::PR_RELAY: case Item::PR_RELAY:
$row['direction'] = ['direction' => 10, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Relayed') : DI::l10n()->t('Relayed by %s.', $name))]; $row['direction'] = ['direction' => 10, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Relayed') : DI::l10n()->t('Relayed by %s <%s>', $row['causer-name'], $row['causer-link']))];
break; break;
case Item::PR_FETCHED: case Item::PR_FETCHED:
$row['direction'] = ['direction' => 2, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Fetched') : DI::l10n()->t('Fetched because of %s', $name))]; $row['direction'] = ['direction' => 2, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Fetched') : DI::l10n()->t('Fetched because of %s <%s>', $row['causer-name'], $row['causer-link']))];
break; break;
} }

View file

@ -184,9 +184,9 @@ function notification($params)
// First go for the general message // First go for the general message
// "George Bull's post" // "George Bull's post"
if ($params['activity']['origin_comment']) { if (!empty($params['activity']['origin_comment'])) {
$message = $l10n->t('%1$s replied to you on %2$s\'s %3$s %4$s'); $message = $l10n->t('%1$s replied to you on %2$s\'s %3$s %4$s');
} elseif ($params['activity']['explicit_tagged']) { } elseif (!empty($params['activity']['explicit_tagged'])) {
$message = $l10n->t('%1$s tagged you on %2$s\'s %3$s %4$s'); $message = $l10n->t('%1$s tagged you on %2$s\'s %3$s %4$s');
} else { } else {
$message = $l10n->t('%1$s commented on %2$s\'s %3$s %4$s'); $message = $l10n->t('%1$s commented on %2$s\'s %3$s %4$s');
@ -197,10 +197,10 @@ function notification($params)
// Then look for the special cases // Then look for the special cases
// "your post" // "your post"
if ($params['activity']['origin_thread']) { if (!empty($params['activity']['origin_thread'])) {
if ($params['activity']['origin_comment']) { if (!empty($params['activity']['origin_comment'])) {
$message = $l10n->t('%1$s replied to you on your %2$s %3$s'); $message = $l10n->t('%1$s replied to you on your %2$s %3$s');
} elseif ($params['activity']['explicit_tagged']) { } elseif (!empty($params['activity']['explicit_tagged'])) {
$message = $l10n->t('%1$s tagged you on your %2$s %3$s'); $message = $l10n->t('%1$s tagged you on your %2$s %3$s');
} else { } else {
$message = $l10n->t('%1$s commented on your %2$s %3$s'); $message = $l10n->t('%1$s commented on your %2$s %3$s');
@ -209,9 +209,9 @@ function notification($params)
$dest_str = sprintf($message, $params['source_name'], $item_post_type, $title); $dest_str = sprintf($message, $params['source_name'], $item_post_type, $title);
// "their post" // "their post"
} elseif ($item['author-link'] == $params['source_link']) { } elseif ($item['author-link'] == $params['source_link']) {
if ($params['activity']['origin_comment']) { if (!empty($params['activity']['origin_comment'])) {
$message = $l10n->t('%1$s replied to you on their %2$s %3$s'); $message = $l10n->t('%1$s replied to you on their %2$s %3$s');
} elseif ($params['activity']['explicit_tagged']) { } elseif (!empty($params['activity']['explicit_tagged'])) {
$message = $l10n->t('%1$s tagged you on their %2$s %3$s'); $message = $l10n->t('%1$s tagged you on their %2$s %3$s');
} else { } else {
$message = $l10n->t('%1$s commented on their %2$s %3$s'); $message = $l10n->t('%1$s commented on their %2$s %3$s');
@ -224,7 +224,7 @@ function notification($params)
// So, we cannot have different subjects for notifications of the same thread. // So, we cannot have different subjects for notifications of the same thread.
// Before this we have the name of the replier on the subject rendering // Before this we have the name of the replier on the subject rendering
// different subjects for messages on the same thread. // different subjects for messages on the same thread.
if ($params['activity']['explicit_tagged']) { if (!empty($params['activity']['explicit_tagged'])) {
$subject = $l10n->t('%s %s tagged you', $subjectPrefix, $params['source_name']); $subject = $l10n->t('%s %s tagged you', $subjectPrefix, $params['source_name']);
$preamble = $l10n->t('%1$s tagged you at %2$s', $params['source_name'], $sitename); $preamble = $l10n->t('%1$s tagged you at %2$s', $params['source_name'], $sitename);

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