Compare commits
No commits in common. "7109d2a6a8924e8cec7735017fdc00bb1af38b8c" and "f660c3894411d5a55ad201b0da8d46715b5b5002" have entirely different histories.
7109d2a6a8
...
f660c38944
|
@ -8,11 +8,7 @@ coverage:
|
||||||
round: down
|
round: down
|
||||||
range: "70...100"
|
range: "70...100"
|
||||||
status:
|
status:
|
||||||
project:
|
project: false
|
||||||
default:
|
patch: false
|
||||||
informational: true
|
|
||||||
patch:
|
|
||||||
default:
|
|
||||||
informational: true
|
|
||||||
|
|
||||||
comment: false
|
comment: false
|
||||||
|
|
|
@ -85,16 +85,4 @@ venv/
|
||||||
/bin/phpunit
|
/bin/phpunit
|
||||||
|
|
||||||
#Ignore cache file
|
#Ignore cache file
|
||||||
.php_cs.cache
|
.php_cs.cache
|
||||||
|
|
||||||
#ignore avatar picture cache path
|
|
||||||
/avatar
|
|
||||||
|
|
||||||
#Ignore autotest results
|
|
||||||
autotest-results.xml
|
|
||||||
|
|
||||||
#ignore phpunit result cache
|
|
||||||
tests/.phpunit.result.cache
|
|
||||||
|
|
||||||
#ignore .php_cs (local copy)
|
|
||||||
.php_cs
|
|
|
@ -6,7 +6,6 @@ AddType application/x-java-archive .jar
|
||||||
AddType audio/ogg .oga
|
AddType audio/ogg .oga
|
||||||
#AddHandler php53-cgi .php
|
#AddHandler php53-cgi .php
|
||||||
|
|
||||||
# deny access to log files (friendica.log or php.out)
|
|
||||||
<FilesMatch "\.(out|log)$">
|
<FilesMatch "\.(out|log)$">
|
||||||
<IfModule authz_host_module>
|
<IfModule authz_host_module>
|
||||||
#Apache 2.4
|
#Apache 2.4
|
||||||
|
@ -18,18 +17,6 @@ AddType audio/ogg .oga
|
||||||
</IfModule>
|
</IfModule>
|
||||||
</FilesMatch>
|
</FilesMatch>
|
||||||
|
|
||||||
# deny access to backup files
|
|
||||||
<FilesMatch "(\~|\.bak|\.swp)$">
|
|
||||||
<IfModule authz_host_module>
|
|
||||||
#Apache 2.4
|
|
||||||
Require all denied
|
|
||||||
</IfModule>
|
|
||||||
<IfModule !authz_host_module>
|
|
||||||
#Apache 2.2
|
|
||||||
Deny from all
|
|
||||||
</IfModule>
|
|
||||||
</FilesMatch>
|
|
||||||
|
|
||||||
<IfModule mod_rewrite.c>
|
<IfModule mod_rewrite.c>
|
||||||
RewriteEngine on
|
RewriteEngine on
|
||||||
# Protect repository directory from browsing
|
# Protect repository directory from browsing
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- PHP_MAJOR_VERSION: 7.4
|
||||||
|
PHP_VERSION: 7.4.18
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- phpunit
|
- phpunit
|
||||||
- code_standards_check
|
- code_standards_check
|
||||||
- database_checks
|
- database_checks
|
||||||
- messages.po_check
|
- messages.po_check
|
||||||
|
|
||||||
# This prevents executing this pipeline at other servers than ci.friendi.ca
|
platform: releaser/release # This prevents executing this pipeline at other servers than ci.friendi.ca
|
||||||
labels:
|
|
||||||
location: friendica
|
|
||||||
type: releaser
|
|
||||||
|
|
||||||
skip_clone: true
|
skip_clone: true
|
||||||
|
|
||||||
|
@ -28,7 +30,7 @@ pipeline:
|
||||||
settings:
|
settings:
|
||||||
backend: "filesystem"
|
backend: "filesystem"
|
||||||
restore: true
|
restore: true
|
||||||
cache_key: "{{ .Repo.Name }}_php7.4_{{ arch }}_{{ os }}"
|
cache_key: "{{ .Repo.Name }}_php${PHP_MAJOR_VERSION}_{{ arch }}_{{ os }}"
|
||||||
archive_format: "gzip"
|
archive_format: "gzip"
|
||||||
mount:
|
mount:
|
||||||
- '.composer'
|
- '.composer'
|
||||||
|
@ -39,7 +41,7 @@ pipeline:
|
||||||
branch: [ develop, '*-rc' ]
|
branch: [ develop, '*-rc' ]
|
||||||
event: push
|
event: push
|
||||||
composer_install:
|
composer_install:
|
||||||
image: friendicaci/php7.4:php7.4.18
|
image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION}
|
||||||
commands:
|
commands:
|
||||||
- export COMPOSER_HOME=.composer
|
- export COMPOSER_HOME=.composer
|
||||||
- composer validate
|
- composer validate
|
||||||
|
@ -90,12 +92,37 @@ pipeline:
|
||||||
repo: friendica/friendica
|
repo: friendica/friendica
|
||||||
branch: [ develop, '*-rc' ]
|
branch: [ develop, '*-rc' ]
|
||||||
event: push
|
event: push
|
||||||
publish_artifacts:
|
upload_artifacts:
|
||||||
image: alpine
|
image: alpine
|
||||||
commands:
|
secrets:
|
||||||
- cp -fr build/* /tmp/friendica_files/
|
- source: sftp_host
|
||||||
|
target: lftp_host
|
||||||
|
- source: sftp_user
|
||||||
|
target: lftp_user
|
||||||
|
- source: ssh_key
|
||||||
|
target: lftp_key
|
||||||
|
environment:
|
||||||
|
LFTP_PORT: "22"
|
||||||
|
LFTP_SOURCE: "build"
|
||||||
|
LFTP_TARGET: "/http"
|
||||||
volumes:
|
volumes:
|
||||||
- files:/tmp/friendica_files
|
- /etc/hosts:/etc/hosts
|
||||||
|
commands:
|
||||||
|
- apk add lftp openssh openssl
|
||||||
|
- touch drone.key
|
||||||
|
- chmod 400 drone.key
|
||||||
|
- echo "$LFTP_KEY" | openssl base64 -A -d > drone.key
|
||||||
|
- lftp -c "
|
||||||
|
set net:timeout 5;
|
||||||
|
set net:max-retries 2;
|
||||||
|
set net:reconnect-interval-base 5;
|
||||||
|
set sftp:auto-confirm true;
|
||||||
|
set sftp:connect-program 'ssh -q -a -x -i drone.key';
|
||||||
|
connect sftp://$LFTP_USER:@$LFTP_HOST:$LFTP_PORT;
|
||||||
|
cd $LFTP_TARGET;
|
||||||
|
mput $LFTP_SOURCE/*;
|
||||||
|
"
|
||||||
|
- rm drone.key
|
||||||
when:
|
when:
|
||||||
repo: friendica/friendica
|
repo: friendica/friendica
|
||||||
branch: [ develop, '*-rc' ]
|
branch: [ develop, '*-rc' ]
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- PHP_MAJOR_VERSION: 7.4
|
||||||
|
PHP_VERSION: 7.4.18
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- phpunit
|
- phpunit
|
||||||
- code_standards_check
|
- code_standards_check
|
||||||
|
|
||||||
# This prevents executing this pipeline at other servers than ci.friendi.ca
|
platform: releaser/release # This prevents executing this pipeline at other servers than ci.friendi.ca
|
||||||
labels:
|
|
||||||
location: friendica
|
|
||||||
type: releaser
|
|
||||||
|
|
||||||
skip_clone: true
|
skip_clone: true
|
||||||
|
|
||||||
|
@ -26,7 +28,7 @@ pipeline:
|
||||||
settings:
|
settings:
|
||||||
backend: "filesystem"
|
backend: "filesystem"
|
||||||
restore: true
|
restore: true
|
||||||
cache_key: "{{ .Repo.Name }}_php7.4_{{ arch }}_{{ os }}"
|
cache_key: "{{ .Repo.Name }}_php${PHP_MAJOR_VERSION}_{{ arch }}_{{ os }}"
|
||||||
archive_format: "gzip"
|
archive_format: "gzip"
|
||||||
mount:
|
mount:
|
||||||
- '.composer'
|
- '.composer'
|
||||||
|
@ -37,7 +39,7 @@ pipeline:
|
||||||
branch: stable
|
branch: stable
|
||||||
event: tag
|
event: tag
|
||||||
composer_install:
|
composer_install:
|
||||||
image: friendicaci/php7.4:php7.4.18
|
image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION}
|
||||||
commands:
|
commands:
|
||||||
- export COMPOSER_HOME=.composer
|
- export COMPOSER_HOME=.composer
|
||||||
- composer validate
|
- composer validate
|
||||||
|
@ -88,12 +90,37 @@ pipeline:
|
||||||
repo: friendica/friendica
|
repo: friendica/friendica
|
||||||
branch: stable
|
branch: stable
|
||||||
event: tag
|
event: tag
|
||||||
publish_artifacts:
|
upload_artifacts:
|
||||||
image: alpine
|
image: alpine
|
||||||
commands:
|
secrets:
|
||||||
- cp -fr build/* /tmp/friendica_files/
|
- source: sftp_host
|
||||||
|
target: lftp_host
|
||||||
|
- source: sftp_user
|
||||||
|
target: lftp_user
|
||||||
|
- source: ssh_key
|
||||||
|
target: lftp_key
|
||||||
|
environment:
|
||||||
|
LFTP_PORT: "22"
|
||||||
|
LFTP_SOURCE: "build"
|
||||||
|
LFTP_TARGET: "/http"
|
||||||
volumes:
|
volumes:
|
||||||
- files:/tmp/friendica_files
|
- /etc/hosts:/etc/hosts
|
||||||
|
commands:
|
||||||
|
- apk add lftp openssh openssl
|
||||||
|
- touch drone.key
|
||||||
|
- chmod 400 drone.key
|
||||||
|
- echo "$LFTP_KEY" | openssl base64 -A -d > drone.key
|
||||||
|
- lftp -c "
|
||||||
|
set net:timeout 5;
|
||||||
|
set net:max-retries 2;
|
||||||
|
set net:reconnect-interval-base 5;
|
||||||
|
set sftp:auto-confirm true;
|
||||||
|
set sftp:connect-program 'ssh -q -a -x -i drone.key';
|
||||||
|
connect sftp://$LFTP_USER:@$LFTP_HOST:$LFTP_PORT;
|
||||||
|
cd $LFTP_TARGET;
|
||||||
|
mput $LFTP_SOURCE/*;
|
||||||
|
"
|
||||||
|
- rm drone.key
|
||||||
when:
|
when:
|
||||||
repo: friendica/friendica
|
repo: friendica/friendica
|
||||||
branch: stable
|
branch: stable
|
||||||
|
|
107
CHANGELOG
|
@ -1,110 +1,3 @@
|
||||||
Version 2022.10 (2022-10-14)
|
|
||||||
Friendica Core
|
|
||||||
Added GD translation, updates to the translations AR, DE, FR, HU, PL, SV, ZH CN
|
|
||||||
Added a check for too long passwords (due Blowfish hashing algorithm) [MrPetovan]
|
|
||||||
Added an API endpoint to create events [MrPetovan, pankraz]
|
|
||||||
Added the possibility to store profile avatars in a separate directory [annando]
|
|
||||||
Added an option to not fetch parent postings [annando]
|
|
||||||
Added an option to reject postings by language received by the relay [annando]
|
|
||||||
Added a notification mail to all users when the server block list is updated [MrPetovan]
|
|
||||||
Added a download link to the CSV file of the server block list on the about page [MrPetovan]
|
|
||||||
Added support for youtube short URLs [annando]
|
|
||||||
Updates to the themes (frio, smoothly) [AlessandroLorenzi, HankG, MrPetovan, tobiasd]
|
|
||||||
General code cleanup [annando, fabrixxm, Quix0r, tobiasd]
|
|
||||||
Enhanced the performance (cache, database, rendering) [annando, Quix0r]
|
|
||||||
Enhanced the language detection [annando]
|
|
||||||
Enhanced the display of the reason why a posting is shown to a user [annando]
|
|
||||||
Enhanced the fetching of missing postings [annando]
|
|
||||||
Enhanced the server detection [annando]
|
|
||||||
Enhanced the UI for 2FA logins [nupplaphil]
|
|
||||||
Enhanced the Woodpecker integration [nupplaphil]
|
|
||||||
Enhanced integration with ejabberd [nupplaphil]
|
|
||||||
Fixed a federation problem with Diaspora* during the author signature check [annando]
|
|
||||||
Fixed a problem with Forwarded-For headers [nupplaphil]
|
|
||||||
Fixed a problem with the encoding of mails send [MrPetovan]
|
|
||||||
Fixed a problem with weird formatted date notations [annando, MrPetovan]
|
|
||||||
Fixed a problem following some RSS feeds [mexon]
|
|
||||||
Fixed a problem with quoted reshares from Twitter [annando]
|
|
||||||
Updated dependencies [MrPetovan]
|
|
||||||
Replace SFTP-publish with docker-publish [nupplaphil]
|
|
||||||
Removed the poke functionality [MrPetovan]
|
|
||||||
|
|
||||||
Friendica Addons
|
|
||||||
Added GD translation, updates to the translation AR, FR
|
|
||||||
Removed the addons: morechoice, morepokes
|
|
||||||
Marked the addon whindowsphonepush as unsupported
|
|
||||||
twitter:
|
|
||||||
Valid post body can be empty [MrPetovan]
|
|
||||||
Support of Twitter threads was added [annando]
|
|
||||||
|
|
||||||
Closed Issues
|
|
||||||
11177, 11317, 11458, 11471, 11566, 11614, 11625, 11635, 11636, 11638,
|
|
||||||
11651, 11661, 11666, 11695, 11700, 11704, 11706, 11708, 11712, 11716,
|
|
||||||
11722, 11723, 11724, 11726, 11731, 11732, 11751, 11765, 11775, 11778,
|
|
||||||
11779, 11794, 11798, 11799, 11800, 11824, 11826, 11851, 11861, 11870,
|
|
||||||
11909, 11920, 11931, 11938, 11943, 11952, 11953, 11969, 11975
|
|
||||||
|
|
||||||
Version 2022.06 (2022-06-11)
|
|
||||||
Friendica Core
|
|
||||||
Added DA DK translation, updates to the translations DE, FR, HU, PL, RU, ZH CN [translation teams]
|
|
||||||
Updates to the documentation [foss-]
|
|
||||||
General code cleanup [annando, MrPetovan, nupplaphil, tobiasd]
|
|
||||||
Added caching for several AP endpoints [annando]
|
|
||||||
Added the display of pinned/featured postings of contacts [annando]
|
|
||||||
Added the display of polls and current votes [annando]
|
|
||||||
Added node relocation to the console tool [MrPetovan]
|
|
||||||
Added tool to move avatars to the avatar cache [annando]
|
|
||||||
Added storage of edit history of postings [annando]
|
|
||||||
Added the possibility to set custom posting dates [annando]
|
|
||||||
Added the possibility that pending events in a forum are send to new members [annando]
|
|
||||||
Removed node relocation functionality from the Admin Panel [MrPetovan]
|
|
||||||
Enhanced performance (database related, global directory) [annando]
|
|
||||||
Enhanced the logging [annando]
|
|
||||||
Enhanced the federation statistics page in the admin panel [annando]
|
|
||||||
Enhanced the Mastodon compatible API [annando]
|
|
||||||
Enhanced the .htaccess-dist file to prevent accessing some common backup files [tobiasd]
|
|
||||||
Enhanced the priority values of some worker queue jobs [annando]
|
|
||||||
Enhanced the possibility for the user selecting which notifications should be shown [MrPetovan]
|
|
||||||
Enhanced the relay server handling [annando]
|
|
||||||
Enhanced the users control what they are notified about [annando]
|
|
||||||
Changed the default icons to the flat icons [atjn]
|
|
||||||
Changed the order of starred posts and posts with mention by the last comment date [annando]
|
|
||||||
Fixed a problem with the local cache of contact avatars [annando]
|
|
||||||
Fixed a problem in the federation with Lemmy nodes [annando]
|
|
||||||
Fixed a problem importing some RSS feeds [annando]
|
|
||||||
Fixed a problem fetching attached media files [annando]
|
|
||||||
Fixed a problem with the abstract being formatted [annando]
|
|
||||||
Fixed a problem preventing the import of contacts [tobiasd]
|
|
||||||
Fixed a problem with IDN URLs [annando]
|
|
||||||
Fixed a problem parsing abstract BBCode tags [MrPetovan]
|
|
||||||
Fixed a problem that could cause unintentionally changing the password by password managers [MrPetovan]
|
|
||||||
Fixed a problem with the language detection of postings [annando]
|
|
||||||
Fixed a problem with the selection of JSON/XML webfinger results [annando]
|
|
||||||
Fixed a problem with re-shared postings that were pinned [annando]
|
|
||||||
Fixed a problem that caused the display of a wrong information about a new follower for some account types [annando]
|
|
||||||
Fixed a problem that caused interaction abilities on postings not to be possible [annando]
|
|
||||||
Fixed a problem causing links to larger photos lead to smaller ones [annando]
|
|
||||||
Fixed a regression that caused pinned private notes to be shown publically [annando]
|
|
||||||
Fixed a problem during the language detection for notifications [annando]
|
|
||||||
|
|
||||||
Friendica Addons
|
|
||||||
Breaking: The obsolete hooks settings_form and settings_post have been removed,
|
|
||||||
custom addons developers should use the addon_settings hook instead.
|
|
||||||
Updates to the translations DA DK, FR, HU, PL [translation teams]
|
|
||||||
advancedcontentfilter
|
|
||||||
Use a random item to validate fields on rule save [MrPetovan]
|
|
||||||
twitter
|
|
||||||
Fix usage of unfollow / block hooks [MrPetovan]
|
|
||||||
S3 storage back-end
|
|
||||||
Added the addon [nupplaphil]
|
|
||||||
|
|
||||||
Closed Issues
|
|
||||||
4639, 9650, 10926, 11040, 11146, 11212, 11223, 11226, 11291, 11299,
|
|
||||||
11309, 11310, 11315, 11319, 11338, 11339, 11340, 11343, 11350, 11353,
|
|
||||||
11371, 11393, 11407, 11425, 11427, 11431, 11440, 11445, 11450, 11461,
|
|
||||||
11469, 11470, 11487, 11488, 11491, 11492, 11504, 11507, 11508, 11510,
|
|
||||||
11511, 11512, 11557, 11560, 11561, 11594, 11602, 11625
|
|
||||||
|
|
||||||
Version 2022.03 (2022-03-07)
|
Version 2022.03 (2022-03-07)
|
||||||
Friendica Core
|
Friendica Core
|
||||||
Updates to the translations AR, DE, HU [translation teams]
|
Updates to the translations AR, DE, HU [translation teams]
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
# How to Contribute
|
|
||||||
|
|
||||||
If you want to contribute to the project, you don’t need to have coding experience. There are a number of tasks listed in the issue tracker with the label “[Junior Jobs](https://github.com/friendica/friendica/issues?q=is%3Aopen+is%3Aissue+label%3A%22Junior+Jobs%22)” we think are good for new contributors. But you are by no means limited to these – if you find a solution to a problem (even a new one) please make a pull request at [github](https://github.com/friendica/friendica) or let us know in the [development forum](https://forum.friendi.ca/profile/developers).
|
|
||||||
|
|
||||||
Contribution to Friendica is also not limited to coding. Any contribution to the [documentation](https://github.com/friendica/friendica/tree/develop/doc), the [translation](https://www.transifex.com/Friendica/friendica/dashboard/) or advertisement materials is welcome or reporting a problem. You don’t need to deal with Git(Hub) or Transifex if you don’t like to. Just [get in touch](https://forum.friendi.ca/profile/helpers) with us and we will get the materials to the appropriate places.
|
|
16
CREDITS.txt
|
@ -10,7 +10,6 @@ Aditoo
|
||||||
AgnesElisa
|
AgnesElisa
|
||||||
Albert
|
Albert
|
||||||
Aleksandr "M.O.Z.G" Dikov
|
Aleksandr "M.O.Z.G" Dikov
|
||||||
Alessandro Lorenzi
|
|
||||||
Alex
|
Alex
|
||||||
Alexander An
|
Alexander An
|
||||||
Alexander Fortin
|
Alexander Fortin
|
||||||
|
@ -29,11 +28,9 @@ Andy
|
||||||
Andy Hee
|
Andy Hee
|
||||||
Angristan
|
Angristan
|
||||||
Anthronaut
|
Anthronaut
|
||||||
Anton
|
|
||||||
Antron Samurai
|
Antron Samurai
|
||||||
Arian - Cazare Muncitori
|
Arian - Cazare Muncitori
|
||||||
Asher Pen
|
Asher Pen
|
||||||
atjn
|
|
||||||
aweiher
|
aweiher
|
||||||
axelt
|
axelt
|
||||||
balderino
|
balderino
|
||||||
|
@ -58,7 +55,6 @@ Carlos Solís
|
||||||
Carsten Pfeiffer
|
Carsten Pfeiffer
|
||||||
Casper
|
Casper
|
||||||
Cat Gray
|
Cat Gray
|
||||||
chinnux
|
|
||||||
Chris Case
|
Chris Case
|
||||||
Christian González
|
Christian González
|
||||||
Christian Kalkhoff
|
Christian Kalkhoff
|
||||||
|
@ -67,7 +63,6 @@ Christian Vogeley
|
||||||
Christian Wiwie
|
Christian Wiwie
|
||||||
Cohan Robinson
|
Cohan Robinson
|
||||||
Colby Sollars
|
Colby Sollars
|
||||||
Copiis
|
|
||||||
Copiis Praeesse
|
Copiis Praeesse
|
||||||
CrystalStiletto
|
CrystalStiletto
|
||||||
Cyboulette
|
Cyboulette
|
||||||
|
@ -95,7 +90,6 @@ effex7
|
||||||
Elena
|
Elena
|
||||||
emilia.krawczyk
|
emilia.krawczyk
|
||||||
Eric Côté
|
Eric Côté
|
||||||
Erich
|
|
||||||
erik
|
erik
|
||||||
Erkan Yilmaz
|
Erkan Yilmaz
|
||||||
Eugene Veresk
|
Eugene Veresk
|
||||||
|
@ -119,10 +113,8 @@ Gidi Kroon
|
||||||
GLComo
|
GLComo
|
||||||
greeneyedred
|
greeneyedred
|
||||||
Gregory Smith
|
Gregory Smith
|
||||||
gudzpoz
|
|
||||||
guzzisti
|
guzzisti
|
||||||
Haakon Meland Eriksen
|
Haakon Meland Eriksen
|
||||||
Hank Grabowski
|
|
||||||
Hans Meine
|
Hans Meine
|
||||||
Hauke
|
Hauke
|
||||||
Hauke Altmann
|
Hauke Altmann
|
||||||
|
@ -146,7 +138,6 @@ Joe Doe
|
||||||
joe slam
|
joe slam
|
||||||
Johannes Schwab
|
Johannes Schwab
|
||||||
John Brazil
|
John Brazil
|
||||||
John Mortensen
|
|
||||||
Jonatan Nyberg
|
Jonatan Nyberg
|
||||||
Jonny Tischbein
|
Jonny Tischbein
|
||||||
Josef Moravek
|
Josef Moravek
|
||||||
|
@ -202,7 +193,6 @@ mpanhans
|
||||||
mytbk
|
mytbk
|
||||||
nathilia-peirce
|
nathilia-peirce
|
||||||
Nicola Spanti
|
Nicola Spanti
|
||||||
Nicolas Derive
|
|
||||||
nobody
|
nobody
|
||||||
nupplaPhil
|
nupplaPhil
|
||||||
Olaf Conradi
|
Olaf Conradi
|
||||||
|
@ -212,7 +202,6 @@ Olivier Mehani
|
||||||
Olivier Migeot
|
Olivier Migeot
|
||||||
ominds
|
ominds
|
||||||
ozero dien
|
ozero dien
|
||||||
pankraz
|
|
||||||
Paolo Wave
|
Paolo Wave
|
||||||
Pascal
|
Pascal
|
||||||
Pascal Deklerck
|
Pascal Deklerck
|
||||||
|
@ -227,7 +216,6 @@ Philipp Holzer
|
||||||
Pierre Bernardeau
|
Pierre Bernardeau
|
||||||
Pierre Rudloff
|
Pierre Rudloff
|
||||||
Piotr Blonkowski
|
Piotr Blonkowski
|
||||||
Piotr Strębski
|
|
||||||
pokerazor
|
pokerazor
|
||||||
R C
|
R C
|
||||||
Rabuzarus
|
Rabuzarus
|
||||||
|
@ -296,7 +284,6 @@ Tobias Diekershoff
|
||||||
Tobias Hößl
|
Tobias Hößl
|
||||||
Tom
|
Tom
|
||||||
Tom Aurlund
|
Tom Aurlund
|
||||||
Tom Hu
|
|
||||||
tomamplius
|
tomamplius
|
||||||
tomtom84
|
tomtom84
|
||||||
Tony Baldwin
|
Tony Baldwin
|
||||||
|
@ -315,7 +302,6 @@ Valvin
|
||||||
Vasudev Kamath
|
Vasudev Kamath
|
||||||
Vasya Novikov
|
Vasya Novikov
|
||||||
very-ape
|
very-ape
|
||||||
Viktor Nilsson
|
|
||||||
Vinzenz Vietzke
|
Vinzenz Vietzke
|
||||||
vislav
|
vislav
|
||||||
vladimir N
|
vladimir N
|
||||||
|
@ -324,10 +310,8 @@ VVelox
|
||||||
Vít Šesták 'v6ak'
|
Vít Šesták 'v6ak'
|
||||||
Waldemar Stoczkowski
|
Waldemar Stoczkowski
|
||||||
Walter Bulbazor
|
Walter Bulbazor
|
||||||
Wanting Chen
|
|
||||||
Wil Tur
|
Wil Tur
|
||||||
Wouter Broers
|
Wouter Broers
|
||||||
Xiaofei Xu
|
|
||||||
XMPPはいいぞ
|
XMPPはいいぞ
|
||||||
Yasen Pramatarov
|
Yasen Pramatarov
|
||||||
Yasmine A
|
Yasmine A
|
||||||
|
|
2
Doxyfile
|
@ -1,7 +1,7 @@
|
||||||
INPUT = README.md index.php boot.php update.php bin/ mod/ include/ view/ src/ VERSION
|
INPUT = README.md index.php boot.php update.php bin/ mod/ include/ view/ src/ VERSION
|
||||||
RECURSIVE = YES
|
RECURSIVE = YES
|
||||||
PROJECT_NAME = "Friendica"
|
PROJECT_NAME = "Friendica"
|
||||||
PROJECT_LOGO = images/friendica-64.png
|
PROJECT_LOGO = images/friendica-64.jpg
|
||||||
EXCLUDE = .htconfig.php config/ library/ doc/ .git/ log/ addon/ report/ privacy_image_cache/ photo/ proxy/ local/
|
EXCLUDE = .htconfig.php config/ library/ doc/ .git/ log/ addon/ report/ privacy_image_cache/ photo/ proxy/ local/
|
||||||
EXCLUDE_PATTERNS = *smarty3* strings.php *.log *.out *test*
|
EXCLUDE_PATTERNS = *smarty3* strings.php *.log *.out *test*
|
||||||
OUTPUT_DIRECTORY = doc
|
OUTPUT_DIRECTORY = doc
|
||||||
|
|
|
@ -15,34 +15,33 @@
|
||||||
# - TEST_SELECTION= ... Specify which tests are used to run (based on the test-labeling)
|
# - TEST_SELECTION= ... Specify which tests are used to run (based on the test-labeling)
|
||||||
# - XDEBUG_CONFIG= ... Set some XDEBUG specific environment settings for development
|
# - XDEBUG_CONFIG= ... Set some XDEBUG specific environment settings for development
|
||||||
|
|
||||||
DATABASE_NAME=${FRIENDICA_MYSQL_DATABASE:-test}
|
DATABASENAME=${MYSQL_DATABASE:-test}
|
||||||
DATABASE_USER=${FRIENDICA_MYSQL_USERNAME:-friendica}
|
DATABASEUSER=${MYSQL_USERNAME:-friendica}
|
||||||
DATABASE_HOST=${FRIENDICA_MYSQL_HOST:-localhost}
|
DATABASEHOST=${MYSQL_HOST:-localhost}
|
||||||
DATABASE_PASSWORD=${FRIENDICA_MYSQL_PASSWORD:-friendica}
|
BASEDIR=$PWD
|
||||||
BASEDIR=${PWD}
|
|
||||||
|
|
||||||
DBCONFIGS="mysql mariadb"
|
DBCONFIGS="mysql mariadb"
|
||||||
TESTS="REDIS MEMCACHE MEMCACHED APCU NODB"
|
TESTS="REDIS MEMCACHE MEMCACHED APCU NODB"
|
||||||
|
|
||||||
export MYSQL_DATABASE="${DATABASE_NAME}"
|
export MYSQL_DATABASE="$DATABASENAME"
|
||||||
export MYSQL_USERNAME="${DATABASE_USER}"
|
export MYSQL_USERNAME="$DATABASEUSER"
|
||||||
export MYSQL_PASSWORD="${DATABASE_PASSWORD}"
|
export MYSQL_PASSWORD="friendica"
|
||||||
|
|
||||||
if [ -z "${PHP_EXE}" ]; then
|
if [ -z "$PHP_EXE" ]; then
|
||||||
PHP_EXE=php
|
PHP_EXE=php
|
||||||
fi
|
fi
|
||||||
PHP=$(which "${PHP_EXE}")
|
PHP=$(which "$PHP_EXE")
|
||||||
# Use the Friendica internal composer
|
# Use the Friendica internal composer
|
||||||
COMPOSER="${BASEDIR}/bin/composer.phar"
|
COMPOSER="$BASEDIR/bin/composer.phar"
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
_XDEBUG_CONFIG=${XDEBUG_CONFIG}
|
_XDEBUG_CONFIG=$XDEBUG_CONFIG
|
||||||
unset XDEBUG_CONFIG
|
unset XDEBUG_CONFIG
|
||||||
|
|
||||||
function show_syntax() {
|
function show_syntax() {
|
||||||
echo -e "Syntax: ./autotest.sh [dbconfigname] [testfile]\n" >&2
|
echo -e "Syntax: ./autotest.sh [dbconfigname] [testfile]\n" >&2
|
||||||
echo -e "\t\"dbconfigname\" can be one of: ${DBCONFIGS}" >&2
|
echo -e "\t\"dbconfigname\" can be one of: $DBCONFIGS" >&2
|
||||||
echo -e "\t\"testfile\" is the name of a test file, for example lib/template.php" >&2
|
echo -e "\t\"testfile\" is the name of a test file, for example lib/template.php" >&2
|
||||||
echo -e "\nDatabase environment variables:\n" >&2
|
echo -e "\nDatabase environment variables:\n" >&2
|
||||||
echo -e "\t\"MYSQL_HOST\" Mysql Hostname (Default: localhost)" >&2
|
echo -e "\t\"MYSQL_HOST\" Mysql Hostname (Default: localhost)" >&2
|
||||||
|
@ -58,22 +57,22 @@ function show_syntax() {
|
||||||
echo -e "\nIf no arguments are specified, all tests will be run with all database configs" >&2
|
echo -e "\nIf no arguments are specified, all tests will be run with all database configs" >&2
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ -x "${PHP}" ]; then
|
if [ -x "$PHP" ]; then
|
||||||
echo "Using PHP executable ${PHP}"
|
echo "Using PHP executable $PHP"
|
||||||
else
|
else
|
||||||
echo "Could not find PHP executable ${PHP_EXE}" >&2
|
echo "Could not find PHP executable $PHP_EXE" >&2
|
||||||
exit 3
|
exit 3
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Installing depdendencies"
|
echo "Installing depdendencies"
|
||||||
${PHP} "$COMPOSER" install
|
$PHP "$COMPOSER" install
|
||||||
|
|
||||||
PHPUNIT="${BASEDIR}/vendor/bin/phpunit"
|
PHPUNIT="$BASEDIR/vendor/bin/phpunit"
|
||||||
|
|
||||||
if [ -x "${PHPUNIT}" ]; then
|
if [ -x "$PHPUNIT" ]; then
|
||||||
echo "Using PHPUnit executable ${PHPUNIT}"
|
echo "Using PHPUnit executable $PHPUNIT"
|
||||||
else
|
else
|
||||||
echo "Could not find PHPUnit executable after composer ${PHPUNIT}" >&2
|
echo "Could not find PHPUnit executable after composer $PHPUNIT" >&2
|
||||||
exit 3
|
exit 3
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -84,8 +83,8 @@ fi
|
||||||
|
|
||||||
if [ "$1" ]; then
|
if [ "$1" ]; then
|
||||||
FOUND=0
|
FOUND=0
|
||||||
for DBCONFIG in ${DBCONFIGS}; do
|
for DBCONFIG in $DBCONFIGS; do
|
||||||
if [ "$1" = "${DBCONFIG}" ]; then
|
if [ "$1" = "$DBCONFIG" ]; then
|
||||||
FOUND=1
|
FOUND=1
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
@ -104,13 +103,13 @@ fi
|
||||||
|
|
||||||
function cleanup_config() {
|
function cleanup_config() {
|
||||||
|
|
||||||
if [ -n "${DOCKER_CONTAINER_ID}" ]; then
|
if [ -n "$DOCKER_CONTAINER_ID" ]; then
|
||||||
echo "Kill the docker ${DOCKER_CONTAINER_ID}"
|
echo "Kill the docker $DOCKER_CONTAINER_ID"
|
||||||
docker stop "${DOCKER_CONTAINER_ID}"
|
docker stop "$DOCKER_CONTAINER_ID"
|
||||||
docker rm -f "${DOCKER_CONTAINER_ID}"
|
docker rm -f "$DOCKER_CONTAINER_ID"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd "${BASEDIR}"
|
cd "$BASEDIR"
|
||||||
|
|
||||||
# Restore existing config
|
# Restore existing config
|
||||||
if [ -f config/local.config-autotest-backup.php ]; then
|
if [ -f config/local.config-autotest-backup.php ]; then
|
||||||
|
@ -123,77 +122,77 @@ trap cleanup_config EXIT
|
||||||
|
|
||||||
function execute_tests() {
|
function execute_tests() {
|
||||||
DB=$1
|
DB=$1
|
||||||
echo "Setup environment for ${DB} testing ..."
|
echo "Setup environment for $DB testing ..."
|
||||||
# back to root folder
|
# back to root folder
|
||||||
cd "${BASEDIR}"
|
cd "$BASEDIR"
|
||||||
|
|
||||||
# backup current config
|
# backup current config
|
||||||
if [ -f config/local.config.php ]; then
|
if [ -f config/local.config.php ]; then
|
||||||
mv config/local.config.php config/local.config-autotest-backup.php
|
mv config/local.config.php config/local.config-autotest-backup.php
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "${NOINSTALL}" ]; then
|
if [ -z "$NOINSTALL" ]; then
|
||||||
#drop database
|
#drop database
|
||||||
if [ "${DB}" == "mysql" ]; then
|
if [ "$DB" == "mysql" ]; then
|
||||||
if [ -n "${USEDOCKER}" ]; then
|
if [ -n "$USEDOCKER" ]; then
|
||||||
echo "Fire up the mysql docker"
|
echo "Fire up the mysql docker"
|
||||||
DOCKER_CONTAINER_ID=$(docker run \
|
DOCKER_CONTAINER_ID=$(docker run \
|
||||||
-e MYSQL_ROOT_PASSWORD=friendica \
|
-e MYSQL_ROOT_PASSWORD=friendica \
|
||||||
-e MYSQL_USER="${DATABASE_USER}" \
|
-e MYSQL_USER="$DATABASEUSER" \
|
||||||
-e MYSQL_PASSWORD=friendica \
|
-e MYSQL_PASSWORD=friendica \
|
||||||
-e MYSQL_DATABASE="${DATABASE_NAME}" \
|
-e MYSQL_DATABASE="$DATABASENAME" \
|
||||||
-d mysql)
|
-d mysql)
|
||||||
DATABASE_HOST=$(docker inspect --format="{{.NetworkSettings.IPAddress}}" "${DOCKER_CONTAINER_ID}")
|
DATABASEHOST=$(docker inspect --format="{{.NetworkSettings.IPAddress}}" "$DOCKER_CONTAINER_ID")
|
||||||
|
|
||||||
else
|
else
|
||||||
if [ -z "${DRONE}" ]; then # no need to drop the DB when we are on CI
|
if [ -z "$DRONE" ]; then # no need to drop the DB when we are on CI
|
||||||
if [ "mysql" != "$(mysql --version | grep -o mysql)" ]; then
|
if [ "mysql" != "$(mysql --version | grep -o mysql)" ]; then
|
||||||
echo "Your mysql binary is not provided by mysql"
|
echo "Your mysql binary is not provided by mysql"
|
||||||
echo "To use the docker container set the USEDOCKER environment variable"
|
echo "To use the docker container set the USEDOCKER environment variable"
|
||||||
exit 3
|
exit 3
|
||||||
fi
|
fi
|
||||||
mysql -u "${DATABASE_USER}" -pfriendica -e "DROP DATABASE IF EXISTS ${DATABASE_NAME}" -h ${DATABASE_HOST} || true
|
mysql -u "$DATABASEUSER" -pfriendica -e "DROP DATABASE IF EXISTS $DATABASENAME" -h $DATABASEHOST || true
|
||||||
mysql -u "${DATABASE_USER}" -pfriendica -e "CREATE DATABASE ${DATABASE_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" -h ${DATABASE_HOST}
|
mysql -u "$DATABASEUSER" -pfriendica -e "CREATE DATABASE $DATABASENAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" -h $DATABASEHOST
|
||||||
else
|
else
|
||||||
DATABASE_HOST=mysql
|
DATABASEHOST=mysql
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Waiting for MySQL ${DATABASE_HOST} initialization..."
|
echo "Waiting for MySQL $DATABASEHOST initialization..."
|
||||||
if ! bin/wait-for-connection ${DATABASE_HOST} 3306 300; then
|
if ! bin/wait-for-connection $DATABASEHOST 3306 300; then
|
||||||
echo "[ERROR] Waited 300 seconds, no response" >&2
|
echo "[ERROR] Waited 300 seconds, no response" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "MySQL is up."
|
echo "MySQL is up."
|
||||||
fi
|
fi
|
||||||
if [ "${DB}" == "mariadb" ]; then
|
if [ "$DB" == "mariadb" ]; then
|
||||||
if [ -n "${USEDOCKER}" ]; then
|
if [ -n "$USEDOCKER" ]; then
|
||||||
echo "Fire up the mariadb docker"
|
echo "Fire up the mariadb docker"
|
||||||
DOCKER_CONTAINER_ID=$(docker run \
|
DOCKER_CONTAINER_ID=$(docker run \
|
||||||
-e MYSQL_ROOT_PASSWORD=friendica \
|
-e MYSQL_ROOT_PASSWORD=friendica \
|
||||||
-e MYSQL_USER="${DATABASE_USER}" \
|
-e MYSQL_USER="$DATABASEUSER" \
|
||||||
-e MYSQL_PASSWORD=friendica \
|
-e MYSQL_PASSWORD=friendica \
|
||||||
-e MYSQL_DATABASE="${DATABASE_NAME}" \
|
-e MYSQL_DATABASE="$DATABASENAME" \
|
||||||
-d mariadb)
|
-d mariadb)
|
||||||
DATABASE_HOST=$(docker inspect --format="{{.NetworkSettings.IPAddress}}" "${DOCKER_CONTAINER_ID}")
|
DATABASEHOST=$(docker inspect --format="{{.NetworkSettings.IPAddress}}" "$DOCKER_CONTAINER_ID")
|
||||||
|
|
||||||
else
|
else
|
||||||
if [ -z "${DRONE}" ]; then # no need to drop the DB when we are on CI
|
if [ -z "$DRONE" ]; then # no need to drop the DB when we are on CI
|
||||||
if [ "MariaDB" != "$(mysql --version | grep -o MariaDB)" ]; then
|
if [ "MariaDB" != "$(mysql --version | grep -o MariaDB)" ]; then
|
||||||
echo "Your mysql binary is not provided by mysql"
|
echo "Your mysql binary is not provided by mysql"
|
||||||
echo "To use the docker container set the USEDOCKER environment variable"
|
echo "To use the docker container set the USEDOCKER environment variable"
|
||||||
exit 3
|
exit 3
|
||||||
fi
|
fi
|
||||||
mysql -u "${DATABASE_USER}" -pfriendica -e "DROP DATABASE IF EXISTS ${DATABASE_NAME}" -h ${DATABASE_HOST} || true
|
mysql -u "$DATABASEUSER" -pfriendica -e "DROP DATABASE IF EXISTS $DATABASENAME" -h $DATABASEHOST || true
|
||||||
mysql -u "${DATABASE_USER}" -pfriendica -e "CREATE DATABASE ${DATABASE_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" -h ${DATABASE_HOST}
|
mysql -u "$DATABASEUSER" -pfriendica -e "CREATE DATABASE $DATABASENAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" -h $DATABASEHOST
|
||||||
else
|
else
|
||||||
DATABASE_HOST=mariadb
|
DATABASEHOST=mariadb
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Waiting for MariaDB ${DATABASE_HOST} initialization..."
|
echo "Waiting for MariaDB $DATABASEHOST initialization..."
|
||||||
if ! bin/wait-for-connection ${DATABASE_HOST} 3306 300; then
|
if ! bin/wait-for-connection $DATABASEHOST 3306 300; then
|
||||||
echo "[ERROR] Waited 300 seconds, no response" >&2
|
echo "[ERROR] Waited 300 seconds, no response" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -201,28 +200,28 @@ function execute_tests() {
|
||||||
echo "MariaDB is up."
|
echo "MariaDB is up."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "${USEDOCKER}" ]; then
|
if [ -n "$USEDOCKER" ]; then
|
||||||
echo "Initialize database..."
|
echo "Initialize database..."
|
||||||
docker exec ${DOCKER_CONTAINER_ID} mysql -u root -pfriendica -e "CREATE DATABASE IF NOT EXISTS ${DATABASE_NAME};"
|
docker exec $DOCKER_CONTAINER_ID mysql -u root -pfriendica -e 'CREATE DATABASE IF NOT EXISTS $DATABASENAME;'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export MYSQL_HOST="${DATABASE_HOST}"
|
export MYSQL_HOST="$DATABASEHOST"
|
||||||
|
|
||||||
#call installer
|
#call installer
|
||||||
echo "Installing Friendica..."
|
echo "Installing Friendica..."
|
||||||
"${PHP}" ./bin/console.php autoinstall --dbuser="${DATABASE_USER}" --dbpass=friendica --dbdata="${DATABASE_NAME}" --dbhost="${DATABASE_HOST}" --url=https://friendica.local --admin=admin@friendica.local
|
"$PHP" ./bin/console.php autoinstall --dbuser="$DATABASEUSER" --dbpass=friendica --dbdata="$DATABASENAME" --dbhost="$DATABASEHOST" --url=https://friendica.local --admin=admin@friendica.local
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#test execution
|
#test execution
|
||||||
echo "Testing..."
|
echo "Testing..."
|
||||||
rm -fr "coverage-html"
|
rm -fr "coverage-html"
|
||||||
mkdir "coverage-html"
|
mkdir "coverage-html"
|
||||||
if [[ "${_XDEBUG_CONFIG}" ]]; then
|
if [[ "$_XDEBUG_CONFIG" ]]; then
|
||||||
export XDEBUG_CONFIG=${_XDEBUG_CONFIG}
|
export XDEBUG_CONFIG=$_XDEBUG_CONFIG
|
||||||
fi
|
fi
|
||||||
|
|
||||||
COVER=''
|
COVER=''
|
||||||
if [ -z "${NOCOVERAGE}" ]; then
|
if [ -z "$NOCOVERAGE" ]; then
|
||||||
COVER="--coverage-clover tests/autotest-clover.xml"
|
COVER="--coverage-clover tests/autotest-clover.xml"
|
||||||
else
|
else
|
||||||
echo "No coverage"
|
echo "No coverage"
|
||||||
|
@ -230,51 +229,51 @@ function execute_tests() {
|
||||||
|
|
||||||
# per default, there is no cache installed
|
# per default, there is no cache installed
|
||||||
GROUP='--exclude-group REDIS,MEMCACHE,MEMCACHED,APCU'
|
GROUP='--exclude-group REDIS,MEMCACHE,MEMCACHED,APCU'
|
||||||
if [ "${TEST_SELECTION}" == "REDIS" ]; then
|
if [ "$TEST_SELECTION" == "REDIS" ]; then
|
||||||
GROUP="--group REDIS"
|
GROUP="--group REDIS"
|
||||||
fi
|
fi
|
||||||
if [ "${TEST_SELECTION}" == "MEMCACHE" ]; then
|
if [ "$TEST_SELECTION" == "MEMCACHE" ]; then
|
||||||
GROUP="--group MEMCACHE"
|
GROUP="--group MEMCACHE"
|
||||||
fi
|
fi
|
||||||
if [ "${TEST_SELECTION}" == "MEMCACHED" ]; then
|
if [ "$TEST_SELECTION" == "MEMCACHED" ]; then
|
||||||
GROUP="--group MEMCACHED"
|
GROUP="--group MEMCACHED"
|
||||||
fi
|
fi
|
||||||
if [ "${TEST_SELECTION}" == "APCU" ]; then
|
if [ "$TEST_SELECTION" == "APCU" ]; then
|
||||||
GROUP="--group APCU"
|
GROUP="--group APCU"
|
||||||
fi
|
fi
|
||||||
if [ "${TEST_SELECTION}" == "NODB" ]; then
|
if [ "$TEST_SELECTION" == "NODB" ]; then
|
||||||
GROUP="--exclude-group DB,SLOWDB"
|
GROUP="--exclude-group DB,SLOWDB"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
INPUT="${BASEDIR}/tests"
|
INPUT="$BASEDIR/tests"
|
||||||
if [ -n "$2" ]; then
|
if [ -n "$2" ]; then
|
||||||
INPUT="${INPUT}/$2"
|
INPUT="$INPUT/$2"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "${PHPUNIT[@]}" --configuration tests/phpunit.xml ${GROUP} ${COVER} --log-junit "autotest-results.xml" "${INPUT}" "$3"
|
echo "${PHPUNIT[@]}" --configuration tests/phpunit.xml $GROUP $COVER --log-junit "autotest-results.xml" "$INPUT" "$3"
|
||||||
"${PHPUNIT[@]}" --configuration tests/phpunit.xml ${GROUP} ${COVER} --log-junit "autotest-results.xml" "${INPUT}" "$3"
|
"${PHPUNIT[@]}" --configuration tests/phpunit.xml $GROUP $COVER --log-junit "autotest-results.xml" "$INPUT" "$3"
|
||||||
RESULT=$?
|
RESULT=$?
|
||||||
|
|
||||||
if [ -n "${DOCKER_CONTAINER_ID}" ]; then
|
if [ -n "$DOCKER_CONTAINER_ID" ]; then
|
||||||
echo "Kill the docker ${DOCKER_CONTAINER_ID}"
|
echo "Kill the docker $DOCKER_CONTAINER_ID"
|
||||||
docker stop ${DOCKER_CONTAINER_ID}
|
docker stop $DOCKER_CONTAINER_ID
|
||||||
docker rm -f ${DOCKER_CONTAINER_ID}
|
docker rm -f $DOCKER_CONTAINER_ID
|
||||||
unset ${DOCKER_CONTAINER_ID}
|
unset $DOCKER_CONTAINER_ID
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Start the test execution
|
# Start the test execution
|
||||||
#
|
#
|
||||||
if [ -z "$1" ] && [ -n "${TEST_SELECTION}" ]; then
|
if [ -z "$1" ] && [ -n "$TEST_SELECTION" ]; then
|
||||||
# run all known database configs
|
# run all known database configs
|
||||||
for DBCONFIG in ${DBCONFIGS}; do
|
for DBCONFIG in $DBCONFIGS; do
|
||||||
execute_tests "${DBCONFIG}"
|
execute_tests "$DBCONFIG"
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
FILENAME="$2"
|
FILENAME="$2"
|
||||||
if [ -n "$2" ] && [ ! -f "tests/${FILENAME}" ] && [ "${FILENAME:0:2}" != "--" ]; then
|
if [ -n "$2" ] && [ ! -f "tests/$FILENAME" ] && [ "${FILENAME:0:2}" != "--" ]; then
|
||||||
FILENAME="../${FILENAME}"
|
FILENAME="../$FILENAME"
|
||||||
fi
|
fi
|
||||||
execute_tests "$1" "${FILENAME}" "$3"
|
execute_tests "$1" "$FILENAME" "$3"
|
||||||
fi
|
fi
|
|
@ -18,15 +18,13 @@
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Run the worker from a daemon.
|
* Run the worker from a daemon.
|
||||||
*
|
*
|
||||||
* This script was taken from http://php.net/manual/en/function.pcntl-fork.php
|
* This script was taken from http://php.net/manual/en/function.pcntl-fork.php
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (php_sapi_name() !== 'cli') {
|
if (php_sapi_name() !== 'cli') {
|
||||||
header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
|
header($_SERVER["SERVER_PROTOCOL"] . ' 403 Forbidden');
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,13 +43,13 @@ $longopts = ['foreground'];
|
||||||
$options = getopt($shortopts, $longopts);
|
$options = getopt($shortopts, $longopts);
|
||||||
|
|
||||||
// Ensure that daemon.php is executed from the base path of the installation
|
// Ensure that daemon.php is executed from the base path of the installation
|
||||||
if (!file_exists('boot.php') && (sizeof($_SERVER['argv']) != 0)) {
|
if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) {
|
||||||
$directory = dirname($_SERVER['argv'][0]);
|
$directory = dirname($_SERVER["argv"][0]);
|
||||||
|
|
||||||
if (substr($directory, 0, 1) != '/') {
|
if (substr($directory, 0, 1) != "/") {
|
||||||
$directory = $_SERVER['PWD'] . '/' . $directory;
|
$directory = $_SERVER["PWD"] . "/" . $directory;
|
||||||
}
|
}
|
||||||
$directory = realpath($directory . '/..');
|
$directory = realpath($directory . "/..");
|
||||||
|
|
||||||
chdir($directory);
|
chdir($directory);
|
||||||
}
|
}
|
||||||
|
@ -86,16 +84,16 @@ TXT
|
||||||
|
|
||||||
$pidfile = DI::config()->get('system', 'pidfile');
|
$pidfile = DI::config()->get('system', 'pidfile');
|
||||||
|
|
||||||
if (in_array('start', $_SERVER['argv'])) {
|
if (in_array("start", $_SERVER["argv"])) {
|
||||||
$mode = 'start';
|
$mode = "start";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array('stop', $_SERVER['argv'])) {
|
if (in_array("stop", $_SERVER["argv"])) {
|
||||||
$mode = 'stop';
|
$mode = "stop";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array('status', $_SERVER['argv'])) {
|
if (in_array("status", $_SERVER["argv"])) {
|
||||||
$mode = 'status';
|
$mode = "status";
|
||||||
}
|
}
|
||||||
|
|
||||||
$foreground = array_key_exists('f', $options) || array_key_exists('foreground', $options);
|
$foreground = array_key_exists('f', $options) || array_key_exists('foreground', $options);
|
||||||
|
@ -104,7 +102,7 @@ if (!isset($mode)) {
|
||||||
die("Please use either 'start', 'stop' or 'status'.\n");
|
die("Please use either 'start', 'stop' or 'status'.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($_SERVER['argv'][0])) {
|
if (empty($_SERVER["argv"][0])) {
|
||||||
die("Unexpected script behaviour. This message should never occur.\n");
|
die("Unexpected script behaviour. This message should never occur.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,12 +112,12 @@ if (is_readable($pidfile)) {
|
||||||
$pid = intval(file_get_contents($pidfile));
|
$pid = intval(file_get_contents($pidfile));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($pid) && in_array($mode, ['stop', 'status'])) {
|
if (empty($pid) && in_array($mode, ["stop", "status"])) {
|
||||||
DI::config()->set('system', 'worker_daemon_mode', false);
|
DI::config()->set('system', 'worker_daemon_mode', false);
|
||||||
die("Pidfile wasn't found. Is the daemon running?\n");
|
die("Pidfile wasn't found. Is the daemon running?\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mode == 'status') {
|
if ($mode == "status") {
|
||||||
if (posix_kill($pid, 0)) {
|
if (posix_kill($pid, 0)) {
|
||||||
die("Daemon process $pid is running.\n");
|
die("Daemon process $pid is running.\n");
|
||||||
}
|
}
|
||||||
|
@ -130,12 +128,12 @@ if ($mode == 'status') {
|
||||||
die("Daemon process $pid isn't running.\n");
|
die("Daemon process $pid isn't running.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mode == 'stop') {
|
if ($mode == "stop") {
|
||||||
posix_kill($pid, SIGTERM);
|
posix_kill($pid, SIGTERM);
|
||||||
|
|
||||||
unlink($pidfile);
|
unlink($pidfile);
|
||||||
|
|
||||||
Logger::notice('Worker daemon process was killed', ['pid' => $pid]);
|
Logger::notice("Worker daemon process was killed", ["pid" => $pid]);
|
||||||
|
|
||||||
DI::config()->set('system', 'worker_daemon_mode', false);
|
DI::config()->set('system', 'worker_daemon_mode', false);
|
||||||
die("Worker daemon process $pid was killed.\n");
|
die("Worker daemon process $pid was killed.\n");
|
||||||
|
@ -145,7 +143,7 @@ if (!empty($pid) && posix_kill($pid, 0)) {
|
||||||
die("Daemon process $pid is already running.\n");
|
die("Daemon process $pid is already running.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::notice('Starting worker daemon.', ['pid' => $pid]);
|
Logger::notice('Starting worker daemon.', ["pid" => $pid]);
|
||||||
|
|
||||||
if (!$foreground) {
|
if (!$foreground) {
|
||||||
echo "Starting worker daemon.\n";
|
echo "Starting worker daemon.\n";
|
||||||
|
@ -194,7 +192,7 @@ $last_cron = 0;
|
||||||
// Now running as a daemon.
|
// Now running as a daemon.
|
||||||
while (true) {
|
while (true) {
|
||||||
if (!$do_cron && ($last_cron + $wait_interval) < time()) {
|
if (!$do_cron && ($last_cron + $wait_interval) < time()) {
|
||||||
Logger::info('Forcing cron worker call.', ['pid' => $pid]);
|
Logger::info('Forcing cron worker call.', ["pid" => $pid]);
|
||||||
$do_cron = true;
|
$do_cron = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +212,7 @@ while (true) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$start = time();
|
$start = time();
|
||||||
Logger::info('Sleeping', ['pid' => $pid, 'until' => gmdate(DateTimeFormat::MYSQL, $start + $wait_interval)]);
|
Logger::info("Sleeping", ["pid" => $pid, 'until' => gmdate(DateTimeFormat::MYSQL, $start + $wait_interval)]);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
$seconds = (time() - $start);
|
$seconds = (time() - $start);
|
||||||
|
@ -232,14 +230,14 @@ while (true) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$timeout = ($seconds >= $wait_interval);
|
$timeout = ($seconds >= $wait_interval);
|
||||||
} while (!$timeout && !Worker\IPC::JobsExists());
|
} while (!$timeout && !Worker::IPCJobsExists());
|
||||||
|
|
||||||
if ($timeout) {
|
if ($timeout) {
|
||||||
$do_cron = true;
|
$do_cron = true;
|
||||||
Logger::info('Woke up after $wait_interval seconds.', ['pid' => $pid, 'sleep' => $wait_interval]);
|
Logger::info("Woke up after $wait_interval seconds.", ["pid" => $pid, 'sleep' => $wait_interval]);
|
||||||
} else {
|
} else {
|
||||||
$do_cron = false;
|
$do_cron = false;
|
||||||
Logger::info('Worker jobs are calling to be forked.', ['pid' => $pid]);
|
Logger::info("Worker jobs are calling to be forked.", ["pid" => $pid]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ case "$MODE" in
|
||||||
OUTFILE="$FULLPATH/../view/lang/C/messages.po"
|
OUTFILE="$FULLPATH/../view/lang/C/messages.po"
|
||||||
FINDSTARTDIR="."
|
FINDSTARTDIR="."
|
||||||
# skip addon folder
|
# skip addon folder
|
||||||
FINDOPTS="( -path ./addon -or -path ./addons -or -path ./addons-extra -or -path ./tests -or -path ./view/lang -or -path ./view/smarty3 -or -path ./vendor -or -path ./local -or -path ./avatar -or -path ./proxy ) -prune -or"
|
FINDOPTS="( -path ./addon -or -path ./addons -or -path ./addons-extra -or -path ./tests -or -path ./view/lang -or -path ./view/smarty3 -or -path ./vendor ) -prune -or"
|
||||||
|
|
||||||
F9KVERSION=$(cat ./VERSION);
|
F9KVERSION=$(cat ./VERSION);
|
||||||
echo "Friendica version $F9KVERSION"
|
echo "Friendica version $F9KVERSION"
|
||||||
|
|
39
boot.php
|
@ -30,8 +30,8 @@
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
|
|
||||||
define('FRIENDICA_PLATFORM', 'Friendica');
|
define('FRIENDICA_PLATFORM', 'Friendica');
|
||||||
define('FRIENDICA_CODENAME', 'Giant Rhubarb');
|
define('FRIENDICA_CODENAME', 'Siberian Iris');
|
||||||
define('FRIENDICA_VERSION', '2022.10');
|
define('FRIENDICA_VERSION', '2022.03');
|
||||||
define('DFRN_PROTOCOL_VERSION', '2.23');
|
define('DFRN_PROTOCOL_VERSION', '2.23');
|
||||||
define('NEW_TABLE_STRUCTURE_VERSION', 1288);
|
define('NEW_TABLE_STRUCTURE_VERSION', 1288);
|
||||||
|
|
||||||
|
@ -87,8 +87,8 @@ define('PRIORITIES', [PRIORITY_CRITICAL, PRIORITY_HIGH, PRIORITY_MEDIUM, PRIORIT
|
||||||
/* @}*/
|
/* @}*/
|
||||||
|
|
||||||
// Normally this constant is defined - but not if "pcntl" isn't installed
|
// Normally this constant is defined - but not if "pcntl" isn't installed
|
||||||
if (!defined('SIGTERM')) {
|
if (!defined("SIGTERM")) {
|
||||||
define('SIGTERM', 15);
|
define("SIGTERM", 15);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -117,7 +117,6 @@ function local_user()
|
||||||
if (!empty($_SESSION['authenticated']) && !empty($_SESSION['uid'])) {
|
if (!empty($_SESSION['authenticated']) && !empty($_SESSION['uid'])) {
|
||||||
return intval($_SESSION['uid']);
|
return intval($_SESSION['uid']);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,13 +168,18 @@ function remote_user()
|
||||||
* This function save text in session, to be shown to the user at next page load
|
* This function save text in session, to be shown to the user at next page load
|
||||||
*
|
*
|
||||||
* @param string $s - Text of notice
|
* @param string $s - Text of notice
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
* @deprecated since version 2022.09, use \Friendica\Navigation\SystemMessages instead
|
|
||||||
*/
|
*/
|
||||||
function notice(string $s)
|
function notice($s)
|
||||||
{
|
{
|
||||||
\Friendica\DI::sysmsg()->addNotice($s);
|
if (empty($_SESSION)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($_SESSION['sysmsg'])) {
|
||||||
|
$_SESSION['sysmsg'] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$_SESSION['sysmsg'][] = $s;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -184,11 +188,16 @@ function notice(string $s)
|
||||||
* This function save text in session, to be shown to the user at next page load
|
* This function save text in session, to be shown to the user at next page load
|
||||||
*
|
*
|
||||||
* @param string $s - Text of notice
|
* @param string $s - Text of notice
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
* @deprecated since version 2022.09, use \Friendica\Navigation\SystemMessages instead
|
|
||||||
*/
|
*/
|
||||||
function info(string $s)
|
function info($s)
|
||||||
{
|
{
|
||||||
\Friendica\DI::sysmsg()->addInfo($s);
|
if (empty($_SESSION)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($_SESSION['sysmsg_info'])) {
|
||||||
|
$_SESSION['sysmsg_info'] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$_SESSION['sysmsg_info'][] = $s;
|
||||||
}
|
}
|
||||||
|
|
554
database.sql
|
@ -410,13 +410,13 @@ Ex: Wed May 23 06:01:13 +0000 2007
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><code>start_time</code></td>
|
<td><code>startTime</code></td>
|
||||||
<td>String (UTC <code>YYYY-MM-DD HH:II:SS)</code>)</td>
|
<td>String (UTC <code>YYYY-MM-DD HH:II:SS)</code>)</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><code>end_time</code></td>
|
<td><code>endTime</code></td>
|
||||||
<td>String (UTC <code>YYYY-MM-DD HH:II:SS)</code>)</td>
|
<td>String (UTC <code>YYYY-MM-DD HH:II:SS)</code>)</td>
|
||||||
<td>Optional (null date is <code>0001-01-01 00:00:00</code></td>
|
<td>Optional (null date is <code>0001-01-01 00:00:00</code></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -765,7 +765,7 @@ Identical to [the Twitter Media Object](https://developer.twitter.com/en/docs/tw
|
||||||
<li>64: Unused</li>
|
<li>64: Unused</li>
|
||||||
<li>128: Mention</li>
|
<li>128: Mention</li>
|
||||||
<li>256: Tag added to a post</li>
|
<li>256: Tag added to a post</li>
|
||||||
<li>512: Poke (Obsolete)</li>
|
<li>512: Poke</li>
|
||||||
<li>1024: New post</li>
|
<li>1024: New post</li>
|
||||||
<li>16384: System email</li>
|
<li>16384: System email</li>
|
||||||
<li>32768: System event</li>
|
<li>32768: System event</li>
|
||||||
|
|
|
@ -24,32 +24,6 @@ Returns a list of [Event](help/API-Entities#Event) entities for the current logg
|
||||||
- `since_id`: (optional) minimum event id for pagination
|
- `since_id`: (optional) minimum event id for pagination
|
||||||
- `count`: maximum number of items returned, default 20
|
- `count`: maximum number of items returned, default 20
|
||||||
|
|
||||||
### POST api/friendica/event_create
|
|
||||||
|
|
||||||
Create a new event for the current logged in user.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
|
|
||||||
- `id` : (optional) id of event, event will be amended if supplied
|
|
||||||
- `name` : name of the event (required)
|
|
||||||
- `start_time` : start of the event (ISO), required
|
|
||||||
- `end_time` : (optional) end of the event, event is open end, if not supplied
|
|
||||||
- `desc` : (optional) description of the event
|
|
||||||
- `place` : (optional) location of the event
|
|
||||||
- `publish` : (optional) create message for event
|
|
||||||
- `allow_cid` : (optional) ACL-formatted list of allowed contact ids if private event
|
|
||||||
- `allow_gid` : (optional) ACL-formatted list of disallowed contact ids if private event
|
|
||||||
- `deny_cid` : (optional) ACL-formatted list of allowed group ids if private event
|
|
||||||
- `deny_gid` : (optional) ACL-formatted list of disallowed group ids if private event
|
|
||||||
|
|
||||||
### POST api/friendica/event_delete
|
|
||||||
|
|
||||||
Delete event from calendar (not the message)
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
|
|
||||||
- `id` : id of event to be deleted
|
|
||||||
|
|
||||||
### GET api/externalprofile/show
|
### GET api/externalprofile/show
|
||||||
|
|
||||||
Returns a [Contact](help/API-Entities#Contact) entity for the provided profile URL.
|
Returns a [Contact](help/API-Entities#Contact) entity for the provided profile URL.
|
||||||
|
|
|
@ -84,8 +84,6 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
|
||||||
- [`GET /api/v1/lists/:id/accounts`](https://docs.joinmastodon.org/methods/timelines/lists/)
|
- [`GET /api/v1/lists/:id/accounts`](https://docs.joinmastodon.org/methods/timelines/lists/)
|
||||||
- [`POST /api/v1/lists/:id/accounts`](https://docs.joinmastodon.org/methods/timelines/lists/)
|
- [`POST /api/v1/lists/:id/accounts`](https://docs.joinmastodon.org/methods/timelines/lists/)
|
||||||
- [`DELETE /api/v1/lists/:id/accounts`](https://docs.joinmastodon.org/methods/timelines/lists/)
|
- [`DELETE /api/v1/lists/:id/accounts`](https://docs.joinmastodon.org/methods/timelines/lists/)
|
||||||
- [`POST /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
|
|
||||||
- [`GET /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
|
|
||||||
- [`POST /api/v1/media`](https://docs.joinmastodon.org/methods/statuses/media/)
|
- [`POST /api/v1/media`](https://docs.joinmastodon.org/methods/statuses/media/)
|
||||||
- [`GET /api/v1/media/:id`](https://docs.joinmastodon.org/methods/statuses/media/)
|
- [`GET /api/v1/media/:id`](https://docs.joinmastodon.org/methods/statuses/media/)
|
||||||
- [`PUT /api/v1/media/:id`](https://docs.joinmastodon.org/methods/statuses/media/)
|
- [`PUT /api/v1/media/:id`](https://docs.joinmastodon.org/methods/statuses/media/)
|
||||||
|
@ -94,7 +92,6 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
|
||||||
- [`GET /api/v1/notifications/:id`](https://docs.joinmastodon.org/methods/notifications/)
|
- [`GET /api/v1/notifications/:id`](https://docs.joinmastodon.org/methods/notifications/)
|
||||||
- [`POST /api/v1/notifications/clear`](https://docs.joinmastodon.org/methods/notifications/)
|
- [`POST /api/v1/notifications/clear`](https://docs.joinmastodon.org/methods/notifications/)
|
||||||
- [`POST /api/v1/notifications/:id/dismiss`](https://docs.joinmastodon.org/methods/notifications/)
|
- [`POST /api/v1/notifications/:id/dismiss`](https://docs.joinmastodon.org/methods/notifications/)
|
||||||
- [`GET /api/v1/polls/:id`](https://docs.joinmastodon.org/methods/statuses/polls/)
|
|
||||||
- [`GET /api/v1/preferences`](https://docs.joinmastodon.org/methods/accounts/preferences/)
|
- [`GET /api/v1/preferences`](https://docs.joinmastodon.org/methods/accounts/preferences/)
|
||||||
- [`DELETE /api/v1/push/subscription`](https://docs.joinmastodon.org/methods/notifications/push/)
|
- [`DELETE /api/v1/push/subscription`](https://docs.joinmastodon.org/methods/notifications/push/)
|
||||||
- [`GET /api/v1/push/subscription`](https://docs.joinmastodon.org/methods/notifications/push/)
|
- [`GET /api/v1/push/subscription`](https://docs.joinmastodon.org/methods/notifications/push/)
|
||||||
|
@ -137,17 +134,6 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
|
||||||
These emdpoints are planned to be implemented somewhere in the future.
|
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/)
|
||||||
- [`POST /api/v1/accounts/:id/remove_from_followers`](https://github.com/mastodon/mastodon/pull/16864)
|
|
||||||
- [`GET /api/v1/accounts/familiar_followers`](https://github.com/mastodon/mastodon/pull/17700)
|
|
||||||
- [`GET /api/v1/accounts/lookup`](https://github.com/mastodon/mastodon/pull/15740)
|
|
||||||
- [`GET /api/v1/trends/links`](https://github.com/mastodon/mastodon/pull/16917)
|
|
||||||
- [`GET /api/v1/trends/statuses`](https://github.com/mastodon/mastodon/pull/17431)
|
|
||||||
- [`GET /api/v1/trends/tags`](https://github.com/mastodon/mastodon/pull/16917)
|
|
||||||
- [`POST /api/v1/polls/:id/votes`](https://docs.joinmastodon.org/methods/statuses/polls/)
|
|
||||||
- [`GET /api/v1/statuses/{id:\d+}/source`](https://github.com/mastodon/mastodon/pull/16697)
|
|
||||||
- [`GET /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
|
|
||||||
- [`POST /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
|
|
||||||
- [`DELETE /api/v1/featured_tags/:id`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
|
|
||||||
|
|
||||||
## Dummy endpoints
|
## Dummy endpoints
|
||||||
|
|
||||||
|
@ -158,6 +144,7 @@ They refer to features that don't exist in Friendica yet.
|
||||||
- [`GET /api/v1/announcements`](https://docs.joinmastodon.org/methods/announcements/)
|
- [`GET /api/v1/announcements`](https://docs.joinmastodon.org/methods/announcements/)
|
||||||
- [`GET /api/v1/endorsements`](https://docs.joinmastodon.org/methods/accounts/endorsements/)
|
- [`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/filters`](https://docs.joinmastodon.org/methods/accounts/filters/)
|
||||||
|
- [`GET /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
|
||||||
|
|
||||||
## Non supportable endpoints
|
## Non supportable endpoints
|
||||||
|
|
||||||
|
@ -181,7 +168,9 @@ They refer to features or data that don't exist in Friendica yet.
|
||||||
- [`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/)
|
||||||
- [`DELETE /api/v1/emails/confirmations`](https://github.com/mastodon/mastodon/pull/15816)
|
- [`GET /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
|
||||||
|
- [`POST /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
|
||||||
|
- [`DELETE /api/v1/featured_tags/:id`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
|
||||||
- [`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/: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/)
|
||||||
|
@ -189,8 +178,9 @@ They refer to features or data that don't exist in Friendica yet.
|
||||||
- [`DELETE /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
|
- [`DELETE /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
|
||||||
- [`GET /api/v1/instance/activity`](https://docs.joinmastodon.org/methods/instance#weekly-activity)
|
- [`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/)
|
||||||
|
- [`POST /api/v1/polls/:id/votes`](https://docs.joinmastodon.org/methods/statuses/polls/)
|
||||||
- [`POST /api/v1/reports`](https://docs.joinmastodon.org/methods/accounts/reports/)
|
- [`POST /api/v1/reports`](https://docs.joinmastodon.org/methods/accounts/reports/)
|
||||||
- [`PUT /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
|
- [`PUT /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
|
||||||
- [`GET /api/v1/statuses/{id:\d+}/history`](https://github.com/mastodon/mastodon/pull/16697)
|
|
||||||
- [`GET /api/v1/streaming`](https://docs.joinmastodon.org/methods/timelines/streaming/)
|
- [`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/)
|
||||||
|
|
|
@ -65,8 +65,7 @@ General
|
||||||
../network
|
../network
|
||||||
--------
|
--------
|
||||||
* e - Sort by Comment Date
|
* e - Sort by Comment Date
|
||||||
* t - Sort by Receipt Date
|
* t - Sort by Post Date
|
||||||
* q - Sort by Creation Date
|
|
||||||
* r - Conversation (Posts that mention or involve you)
|
* r - Conversation (Posts that mention or involve you)
|
||||||
* w - New posts
|
* w - New posts
|
||||||
* m - Favourite Posts
|
* m - Favourite Posts
|
||||||
|
@ -82,7 +81,6 @@ General
|
||||||
../settings
|
../settings
|
||||||
---------
|
---------
|
||||||
* o - Account
|
* o - Account
|
||||||
* 2 - Two-factor authentication
|
|
||||||
* p - Profiles
|
* p - Profiles
|
||||||
* t - Additional features
|
* t - Additional features
|
||||||
* w - Social Networks
|
* w - Social Networks
|
||||||
|
|
|
@ -232,6 +232,14 @@ Please note: body contents are bbcode - not HTML
|
||||||
Called when receiving a post from another source. This may also be used to post local activity or system generated messages.
|
Called when receiving a post from another source. This may also be used to post local activity or system generated messages.
|
||||||
`$b` is the item array of information to be stored in the database and the item body is bbcode.
|
`$b` is the item array of information to be stored in the database and the item body is bbcode.
|
||||||
|
|
||||||
|
### settings_form
|
||||||
|
Called when generating the HTML for the user Settings page.
|
||||||
|
`$b` is the HTML string of the settings page before the final `</form>` tag.
|
||||||
|
|
||||||
|
### settings_post
|
||||||
|
Called when the Settings pages are submitted.
|
||||||
|
`$b` is the $_POST array.
|
||||||
|
|
||||||
### addon_settings
|
### addon_settings
|
||||||
Called when generating the HTML for the addon settings page.
|
Called when generating the HTML for the addon settings page.
|
||||||
`$data` is an array containing:
|
`$data` is an array containing:
|
||||||
|
@ -711,6 +719,10 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
|
||||||
|
|
||||||
Hook::callAll('personal_xrd', $arr);
|
Hook::callAll('personal_xrd', $arr);
|
||||||
|
|
||||||
|
### mod/ping.php
|
||||||
|
|
||||||
|
Hook::callAll('network_ping', $arr);
|
||||||
|
|
||||||
### mod/parse_url.php
|
### mod/parse_url.php
|
||||||
|
|
||||||
Hook::callAll("parse_link", $arr);
|
Hook::callAll("parse_link", $arr);
|
||||||
|
@ -742,9 +754,11 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
|
||||||
Hook::callAll('addon_settings_post', $_POST);
|
Hook::callAll('addon_settings_post', $_POST);
|
||||||
Hook::callAll('connector_settings_post', $_POST);
|
Hook::callAll('connector_settings_post', $_POST);
|
||||||
Hook::callAll('display_settings_post', $_POST);
|
Hook::callAll('display_settings_post', $_POST);
|
||||||
|
Hook::callAll('settings_post', $_POST);
|
||||||
Hook::callAll('addon_settings', $settings_addons);
|
Hook::callAll('addon_settings', $settings_addons);
|
||||||
Hook::callAll('connector_settings', $settings_connectors);
|
Hook::callAll('connector_settings', $settings_connectors);
|
||||||
Hook::callAll('display_settings', $o);
|
Hook::callAll('display_settings', $o);
|
||||||
|
Hook::callAll('settings_form', $o);
|
||||||
|
|
||||||
### mod/photos.php
|
### mod/photos.php
|
||||||
|
|
||||||
|
@ -766,6 +780,10 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
|
||||||
Hook::callAll('home_init', $ret);
|
Hook::callAll('home_init', $ret);
|
||||||
Hook::callAll("home_content", $content);
|
Hook::callAll("home_content", $content);
|
||||||
|
|
||||||
|
### mod/poke.php
|
||||||
|
|
||||||
|
Hook::callAll('post_local_end', $arr);
|
||||||
|
|
||||||
### mod/contacts.php
|
### mod/contacts.php
|
||||||
|
|
||||||
Hook::callAll('contact_edit_post', $_POST);
|
Hook::callAll('contact_edit_post', $_POST);
|
||||||
|
@ -847,10 +865,6 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
|
||||||
Hook::callAll('register_account', $uid);
|
Hook::callAll('register_account', $uid);
|
||||||
Hook::callAll('remove_user', $user);
|
Hook::callAll('remove_user', $user);
|
||||||
|
|
||||||
### src/Module/Notifications/Ping.php
|
|
||||||
|
|
||||||
Hook::callAll('network_ping', $arr);
|
|
||||||
|
|
||||||
### src/Module/PermissionTooltip.php
|
### src/Module/PermissionTooltip.php
|
||||||
|
|
||||||
Hook::callAll('lockview_content', $item);
|
Hook::callAll('lockview_content', $item);
|
||||||
|
@ -963,6 +977,10 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
|
||||||
|
|
||||||
self::callSingle(self::getApp(), 'hook_fork', $fork_hook, $hookdata);
|
self::callSingle(self::getApp(), 'hook_fork', $fork_hook, $hookdata);
|
||||||
|
|
||||||
|
### src/Core/L10n/L10n.php
|
||||||
|
|
||||||
|
Hook::callAll('poke_verbs', $arr);
|
||||||
|
|
||||||
### src/Core/Worker.php
|
### src/Core/Worker.php
|
||||||
|
|
||||||
Hook::callAll("proc_run", $arr);
|
Hook::callAll("proc_run", $arr);
|
||||||
|
|
|
@ -65,17 +65,17 @@ table.bbcodes > * > tr > th {
|
||||||
<td><a href="http://friendi.ca" target="external-link">Friendica</a></td>
|
<td><a href="http://friendi.ca" target="external-link">Friendica</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[img]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png[/img]</td>
|
<td>[img]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg[/img]</td>
|
||||||
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png"></td>
|
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" alt="Immagine/foto"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[img=https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png]The Friendica Logo[/img]</td>
|
<td>[img=https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg]The Friendica Logo[/img]</td>
|
||||||
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png" alt="The Friendica Logo"></td>
|
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" alt="The Friendica Logo"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[img=64x32]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica.svg[/img]<br>
|
<td>[img=64x32]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg[/img]<br>
|
||||||
<br>Note: provided height is simply discarded.</td>
|
<br>Note: provided height is simply discarded.</td>
|
||||||
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica.svg" style="width: 64px;"></td>
|
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" style="width: 64px;"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[size=xx-small]small text[/size]</td>
|
<td>[size=xx-small]small text[/size]</td>
|
||||||
|
|
|
@ -23,7 +23,7 @@ There you will always find the current stable version of friendica.
|
||||||
|
|
||||||
Addons are listed at [this page](https://github.com/friendica/friendica-addons).
|
Addons are listed at [this page](https://github.com/friendica/friendica-addons).
|
||||||
|
|
||||||
If you are searching for new themes, you can find them at [github.com/bkil/friendica-themes](https://github.com/bkil/friendica-themes)
|
If you are searching for new themes, you can find them at [Friendica-Themes.com](http://friendica-themes.com/)
|
||||||
|
|
||||||
<a name="adminaccount1"></a>
|
<a name="adminaccount1"></a>
|
||||||
### I've changed my email address now the admin panel is gone?
|
### I've changed my email address now the admin panel is gone?
|
||||||
|
|
27
doc/FAQ.md
|
@ -179,17 +179,19 @@ The available features are client specific and may differ.
|
||||||
|
|
||||||
* [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)
|
* [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
|
||||||
|
* DiCa ([Google Play](https://play.google.com/store/apps/details?id=cool.mixi.dica), last updated 2019)
|
||||||
* [Fedi](https://play.google.com/store/apps/details?id=com.fediverse.app)
|
* [Fedi](https://play.google.com/store/apps/details?id=com.fediverse.app)
|
||||||
* [Fedilab](https://fedilab.app) ([F-Droid](https://f-droid.org/app/fr.gouv.etalab.mastodon), [Google Play](https://play.google.com/store/apps/details?id=app.fedilab.android))
|
* [Fedilab](https://fedilab.app) ([F-Droid](https://f-droid.org/app/fr.gouv.etalab.mastodon), [Google Play](https://play.google.com/store/apps/details?id=app.fedilab.android))
|
||||||
* [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) ([F-Droid](https://git.friendi.ca/lubuwest/Friendiqa#install), [Google Play](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa))
|
* [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) ([F-Droid](https://git.friendi.ca/lubuwest/Friendiqa#install), [Google Play](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa))
|
||||||
* [Husky](https://git.sr.ht/~captainepoch/husky) ([F-Droid](https://f-droid.org/repository/browse/?fdid=su.xash.husky), [Google Play](https://play.google.com/store/apps/details?id=su.xash.husky))
|
* [Husky](https://husky.fwgs.ru)
|
||||||
* [Mastodon for Android](https://github.com/mastodon/mastodon-android) (F-Droid: Pending, [Google-Play](https://play.google.com/store/apps/details?id=org.joinmastodon.android))
|
* [Roma](https://play.google.com/store/apps/details?id=tech.bigfig.roma)
|
||||||
* [Subway Tooter](https://github.com/tateisu/SubwayTooter)
|
* [Subway Tooter](https://github.com/tateisu/SubwayTooter)
|
||||||
* [Tooot](https://tooot.app/)
|
* [Tooot](https://tooot.app/)
|
||||||
* [Tusky](https://tusky.app) ([F-Droid](https://f-droid.org/repository/browse/?fdid=com.keylesspalace.tusky), [Google Play](https://play.google.com/store/apps/details?id=com.keylesspalace.tusky))
|
* [Tusky](https://tusky.app)
|
||||||
* [Twidere](https://github.com/TwidereProject/Twidere-Android) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.mariotaku.twidere), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex))
|
* [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) ([F-Droid](https://f-droid.org/en/packages/com.twidere.twiderex/), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex))
|
* [TwidereX](https://github.com/TwidereProject/TwidereX-Android)
|
||||||
* [Yuito](https://github.com/accelforce/Yuito) ([Google Play](https://play.google.com/store/apps/details?id=net.accelf.yuito))
|
* [twitlatte](https://github.com/moko256/twitlatte)
|
||||||
|
* [Yuito](https://github.com/accelforce/Yuito)
|
||||||
|
|
||||||
#### SailfishOS
|
#### SailfishOS
|
||||||
|
|
||||||
|
@ -197,11 +199,12 @@ The available features are client specific and may differ.
|
||||||
|
|
||||||
#### iOS
|
#### iOS
|
||||||
|
|
||||||
* [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma) ([AppStore](https://apps.apple.com/app/b4x-pleroma/id1538396871))
|
* [B4X for Pleroma & Mastodon](https://www.b4x.com/) ([AppStore](https://apps.apple.com/app/b4x-pleroma/id1538396871), [GitHub](https://github.com/AnywhereSoftware/B4X-Pleroma))
|
||||||
* [Fedi](https://fediapp.com) ([AppStore](https://apps.apple.com/de/app/fedi-for-pleroma-and-mastodon/id1478806281))
|
* [Fedi](https://fediapp.com) ([AppStore](https://apps.apple.com/de/app/fedi-for-pleroma-and-mastodon/id1478806281))
|
||||||
* [Mastodon for iPhone and iPad](https://joinmastodon.org/apps) ([AppStore](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974))
|
* [Mastodon](https://joinmastodon.org/apps)([AppStore](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974))
|
||||||
|
* [Roma](https://www.roma.rocks/)([AppStore](https://apps.apple.com/de/app/roma-for-pleroma-and-mastodon/id1445328699))
|
||||||
* [Stella*](https://www.stella-app.net/) ([AppStore](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048))
|
* [Stella*](https://www.stella-app.net/) ([AppStore](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048))
|
||||||
* [Tooot](https://github.com/tooot-app) ([AppStore](https://apps.apple.com/app/id1549772269), Data collection (not linked to identity)
|
* [Tooot](https://tooot.app/) ([AppStore](https://apps.apple.com/app/id1549772269), [GitHub](https://github.com/tooot-app)), Data collection (not linked to identity)
|
||||||
* [Tootle](https://mastodon.cloud/@tootleapp) ([AppStore](https://apps.apple.com/de/app/tootle-for-mastodon/id1236013466)), last update: 2020
|
* [Tootle](https://mastodon.cloud/@tootleapp) ([AppStore](https://apps.apple.com/de/app/tootle-for-mastodon/id1236013466)), last update: 2020
|
||||||
|
|
||||||
#### Linux
|
#### Linux
|
||||||
|
@ -214,13 +217,9 @@ The available features are client specific and may differ.
|
||||||
|
|
||||||
#### macOS
|
#### macOS
|
||||||
|
|
||||||
* [Mastonaut](https://mastonaut.app/) ([AppStore](https://apps.apple.com/us/app/mastonaut/id1450757574)), closed source
|
* [Mastonaut](https://mastonaut.app/) ([AppStore](https://apps.apple.com/us/app/mastonaut/id1450757574)), costs ~8€
|
||||||
* [Whalebird](https://whalebird.social/en/desktop/contents) ([AppStore](https://apps.apple.com/de/app/whalebird/id1378283354), [GitHub](https://github.com/h3poteto/whalebird-desktop))
|
* [Whalebird](https://whalebird.social/en/desktop/contents) ([AppStore](https://apps.apple.com/de/app/whalebird/id1378283354), [GitHub](https://github.com/h3poteto/whalebird-desktop))
|
||||||
|
|
||||||
#### Windows
|
|
||||||
|
|
||||||
* [Whalebird](https://whalebird.social/en/desktop/contents) ([Website Download](https://whalebird.social/en/desktop/contents/downloads#windows), [GitHub](https://github.com/h3poteto/whalebird-desktop))
|
|
||||||
|
|
||||||
#### Web Frontend
|
#### Web Frontend
|
||||||
|
|
||||||
* [Halcyon](https://www.halcyon.social/)
|
* [Halcyon](https://www.halcyon.social/)
|
||||||
|
|
|
@ -30,7 +30,7 @@ Due to the large variety of operating systems and PHP platforms in existence we
|
||||||
* Apache with mod-rewrite enabled and "Options All" so you can use a local `.htaccess` file
|
* Apache with mod-rewrite enabled and "Options All" so you can use a local `.htaccess` file
|
||||||
* PHP 7.3+ (PHP8 is not fully supported yet)
|
* PHP 7.3+ (PHP8 is not fully supported yet)
|
||||||
* PHP *command line* access with register_argc_argv set to true in the php.ini file
|
* PHP *command line* access with register_argc_argv set to true in the php.ini file
|
||||||
* Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip and OpenSSL extensions
|
* Curl, GD, PDO, mbstrings, MySQLi, hash, xml, zip and OpenSSL extensions
|
||||||
* The POSIX module of PHP needs to be activated (e.g. [RHEL, CentOS](http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7) have disabled it)
|
* The POSIX module of PHP needs to be activated (e.g. [RHEL, CentOS](http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7) have disabled it)
|
||||||
* Some form of email server or email gateway such that PHP mail() works.
|
* Some form of email server or email gateway such that PHP mail() works.
|
||||||
If you cannot set up your own email server, you can use the [phpmailer](https://github.com/friendica/friendica-addons/tree/develop/phpmailer) addon and use a remote SMTP server.
|
If you cannot set up your own email server, you can use the [phpmailer](https://github.com/friendica/friendica-addons/tree/develop/phpmailer) addon and use a remote SMTP server.
|
||||||
|
@ -102,18 +102,7 @@ If you encounter a bug, please let us know.
|
||||||
|
|
||||||
### Create a database
|
### Create a database
|
||||||
|
|
||||||
Create an empty database and note the access details (hostname, username, password, database name).
|
Create an empty database and note the access details (hostname, username, password, database name).
|
||||||
Generate a strong password, then enter mysql with:
|
|
||||||
|
|
||||||
mysql
|
|
||||||
|
|
||||||
Then use the following script using the password you just generated:
|
|
||||||
|
|
||||||
CREATE DATABASE friendicadb;
|
|
||||||
CREATE USER 'friendica'@'localhost' IDENTIFIED BY '<<your mysql password here>>';
|
|
||||||
GRANT ALL ON friendicadb.* TO 'friendica'@'localhost';
|
|
||||||
FLUSH PRIVILEGES;
|
|
||||||
EXIT;
|
|
||||||
|
|
||||||
Friendica needs the permission to create and delete fields and tables in its own database.
|
Friendica needs the permission to create and delete fields and tables in its own database.
|
||||||
|
|
||||||
|
|
|
@ -8,34 +8,27 @@ Database Tables
|
||||||
| [2fa_app_specific_password](help/database/db_2fa_app_specific_password) | Two-factor app-specific _password |
|
| [2fa_app_specific_password](help/database/db_2fa_app_specific_password) | Two-factor app-specific _password |
|
||||||
| [2fa_recovery_codes](help/database/db_2fa_recovery_codes) | Two-factor authentication recovery codes |
|
| [2fa_recovery_codes](help/database/db_2fa_recovery_codes) | Two-factor authentication recovery codes |
|
||||||
| [2fa_trusted_browser](help/database/db_2fa_trusted_browser) | Two-factor authentication trusted browsers |
|
| [2fa_trusted_browser](help/database/db_2fa_trusted_browser) | Two-factor authentication trusted browsers |
|
||||||
| [account-user](help/database/db_account-user) | Remote and local accounts |
|
|
||||||
| [addon](help/database/db_addon) | registered addons |
|
| [addon](help/database/db_addon) | registered addons |
|
||||||
| [apcontact](help/database/db_apcontact) | ActivityPub compatible contacts - used in the ActivityPub implementation |
|
| [apcontact](help/database/db_apcontact) | ActivityPub compatible contacts - used in the ActivityPub implementation |
|
||||||
| [application](help/database/db_application) | OAuth application |
|
| [application](help/database/db_application) | OAuth application |
|
||||||
| [application-marker](help/database/db_application-marker) | Timeline marker |
|
|
||||||
| [application-token](help/database/db_application-token) | OAuth user token |
|
| [application-token](help/database/db_application-token) | OAuth user token |
|
||||||
| [arrived-activity](help/database/db_arrived-activity) | Id of arrived activities |
|
|
||||||
| [attach](help/database/db_attach) | file attachments |
|
| [attach](help/database/db_attach) | file attachments |
|
||||||
| [cache](help/database/db_cache) | Stores temporary data |
|
| [cache](help/database/db_cache) | Stores temporary data |
|
||||||
| [config](help/database/db_config) | main configuration storage |
|
| [config](help/database/db_config) | main configuration storage |
|
||||||
| [contact](help/database/db_contact) | contact table |
|
| [contact](help/database/db_contact) | contact table |
|
||||||
| [contact-relation](help/database/db_contact-relation) | Contact relations |
|
| [contact-relation](help/database/db_contact-relation) | Contact relations |
|
||||||
| [conv](help/database/db_conv) | private messages |
|
| [conv](help/database/db_conv) | private messages |
|
||||||
|
| [conversation](help/database/db_conversation) | Raw data and structure information for messages |
|
||||||
| [delayed-post](help/database/db_delayed-post) | Posts that are about to be distributed at a later time |
|
| [delayed-post](help/database/db_delayed-post) | Posts that are about to be distributed at a later time |
|
||||||
| [diaspora-interaction](help/database/db_diaspora-interaction) | Signed Diaspora Interaction |
|
| [diaspora-interaction](help/database/db_diaspora-interaction) | Signed Diaspora Interaction |
|
||||||
| [endpoint](help/database/db_endpoint) | ActivityPub endpoints - used in the ActivityPub implementation |
|
|
||||||
| [event](help/database/db_event) | Events |
|
| [event](help/database/db_event) | Events |
|
||||||
| [fcontact](help/database/db_fcontact) | Diaspora compatible contacts - used in the Diaspora implementation |
|
| [fcontact](help/database/db_fcontact) | Diaspora compatible contacts - used in the Diaspora implementation |
|
||||||
| [fetch-entry](help/database/db_fetch-entry) | |
|
|
||||||
| [fetched-activity](help/database/db_fetched-activity) | Id of fetched activities |
|
|
||||||
| [fsuggest](help/database/db_fsuggest) | friend suggestion stuff |
|
| [fsuggest](help/database/db_fsuggest) | friend suggestion stuff |
|
||||||
| [group](help/database/db_group) | privacy groups, group info |
|
| [group](help/database/db_group) | privacy groups, group info |
|
||||||
| [group_member](help/database/db_group_member) | privacy groups, member info |
|
| [group_member](help/database/db_group_member) | privacy groups, member info |
|
||||||
| [gserver](help/database/db_gserver) | Global servers |
|
| [gserver](help/database/db_gserver) | Global servers |
|
||||||
| [gserver-tag](help/database/db_gserver-tag) | Tags that the server has subscribed |
|
| [gserver-tag](help/database/db_gserver-tag) | Tags that the server has subscribed |
|
||||||
| [hook](help/database/db_hook) | addon hook registry |
|
| [hook](help/database/db_hook) | addon hook registry |
|
||||||
| [inbox-entry](help/database/db_inbox-entry) | Incoming activity |
|
|
||||||
| [inbox-entry-receiver](help/database/db_inbox-entry-receiver) | Receiver for the incoming activity |
|
|
||||||
| [inbox-status](help/database/db_inbox-status) | Status of ActivityPub inboxes |
|
| [inbox-status](help/database/db_inbox-status) | Status of ActivityPub inboxes |
|
||||||
| [intro](help/database/db_intro) | |
|
| [intro](help/database/db_intro) | |
|
||||||
| [item-uri](help/database/db_item-uri) | URI and GUID for items |
|
| [item-uri](help/database/db_item-uri) | URI and GUID for items |
|
||||||
|
@ -44,7 +37,7 @@ Database Tables
|
||||||
| [mailacct](help/database/db_mailacct) | Mail account data for fetching mails |
|
| [mailacct](help/database/db_mailacct) | Mail account data for fetching mails |
|
||||||
| [manage](help/database/db_manage) | table of accounts that can manage each other |
|
| [manage](help/database/db_manage) | table of accounts that can manage each other |
|
||||||
| [notification](help/database/db_notification) | notifications |
|
| [notification](help/database/db_notification) | notifications |
|
||||||
| [notify](help/database/db_notify) | [Deprecated] User notifications |
|
| [notify](help/database/db_notify) | notifications |
|
||||||
| [notify-threads](help/database/db_notify-threads) | |
|
| [notify-threads](help/database/db_notify-threads) | |
|
||||||
| [oembed](help/database/db_oembed) | cache for OEmbed queries |
|
| [oembed](help/database/db_oembed) | cache for OEmbed queries |
|
||||||
| [openwebauth-token](help/database/db_openwebauth-token) | Store OpenWebAuth token to verify contacts |
|
| [openwebauth-token](help/database/db_openwebauth-token) | Store OpenWebAuth token to verify contacts |
|
||||||
|
@ -53,17 +46,11 @@ Database Tables
|
||||||
| [permissionset](help/database/db_permissionset) | |
|
| [permissionset](help/database/db_permissionset) | |
|
||||||
| [photo](help/database/db_photo) | photo storage |
|
| [photo](help/database/db_photo) | photo storage |
|
||||||
| [post](help/database/db_post) | Structure for all posts |
|
| [post](help/database/db_post) | Structure for all posts |
|
||||||
| [post-activity](help/database/db_post-activity) | Original remote activity |
|
|
||||||
| [post-category](help/database/db_post-category) | post relation to categories |
|
| [post-category](help/database/db_post-category) | post relation to categories |
|
||||||
| [post-collection](help/database/db_post-collection) | Collection of posts |
|
|
||||||
| [post-content](help/database/db_post-content) | Content for all posts |
|
| [post-content](help/database/db_post-content) | Content for all posts |
|
||||||
| [post-delivery](help/database/db_post-delivery) | Delivery data for posts for the batch processing |
|
|
||||||
| [post-delivery-data](help/database/db_post-delivery-data) | Delivery data for items |
|
| [post-delivery-data](help/database/db_post-delivery-data) | Delivery data for items |
|
||||||
| [post-history](help/database/db_post-history) | Post history |
|
|
||||||
| [post-link](help/database/db_post-link) | Post related external links |
|
| [post-link](help/database/db_post-link) | Post related external links |
|
||||||
| [post-media](help/database/db_post-media) | Attached media |
|
| [post-media](help/database/db_post-media) | Attached media |
|
||||||
| [post-question](help/database/db_post-question) | Question |
|
|
||||||
| [post-question-option](help/database/db_post-question-option) | Question option |
|
|
||||||
| [post-tag](help/database/db_post-tag) | post relation to tags |
|
| [post-tag](help/database/db_post-tag) | post relation to tags |
|
||||||
| [post-thread](help/database/db_post-thread) | Thread related data |
|
| [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-thread-user](help/database/db_post-thread-user) | Thread related data per user |
|
||||||
|
|
|
@ -6,14 +6,13 @@ Two-factor authentication trusted browsers
|
||||||
Fields
|
Fields
|
||||||
------
|
------
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| ----------- | ---------------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
|
| ----------- | ------------------------------------------ | ------------------ | ---- | --- | ------- | ----- |
|
||||||
| cookie_hash | Trusted cookie hash | varchar(80) | NO | PRI | NULL | |
|
| cookie_hash | Trusted cookie hash | varchar(80) | NO | PRI | NULL | |
|
||||||
| uid | User ID | mediumint unsigned | NO | | NULL | |
|
| uid | User ID | mediumint unsigned | NO | | NULL | |
|
||||||
| user_agent | User agent string | text | YES | | NULL | |
|
| user_agent | User agent string | text | YES | | NULL | |
|
||||||
| trusted | Whenever this browser should be trusted or not | boolean | NO | | 1 | |
|
| created | Datetime the trusted browser was recorded | datetime | NO | | NULL | |
|
||||||
| created | Datetime the trusted browser was recorded | datetime | NO | | NULL | |
|
| last_used | Datetime the trusted browser was last used | datetime | YES | | NULL | |
|
||||||
| last_used | Datetime the trusted browser was last used | datetime | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
Indexes
|
||||||
------------
|
------------
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
Table account-user
|
|
||||||
===========
|
|
||||||
|
|
||||||
Remote and local accounts
|
|
||||||
|
|
||||||
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 account url | int unsigned | NO | | NULL | |
|
|
||||||
| uid | User ID | mediumint unsigned | NO | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ---------- | ------------------- |
|
|
||||||
| PRIMARY | id |
|
|
||||||
| uri-id_uid | UNIQUE, uri-id, uid |
|
|
||||||
| uid_uri-id | uid, 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)
|
|
|
@ -8,32 +8,29 @@ Fields
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| ---------------- | ------------------------------------------------------------------- | -------------- | ---- | --- | ------------------- | ----- |
|
| ---------------- | ------------------------------------------------------------------- | -------------- | ---- | --- | ------------------- | ----- |
|
||||||
| url | URL of the contact | varbinary(383) | NO | PRI | NULL | |
|
| url | URL of the contact | varbinary(255) | NO | PRI | NULL | |
|
||||||
| uri-id | Id of the item-uri table entry that contains the apcontact url | int unsigned | YES | | NULL | |
|
| uri-id | Id of the item-uri table entry that contains the apcontact url | int unsigned | YES | | NULL | |
|
||||||
| uuid | | varbinary(255) | YES | | NULL | |
|
| uuid | | varchar(255) | YES | | NULL | |
|
||||||
| type | | varchar(20) | NO | | NULL | |
|
| type | | varchar(20) | NO | | NULL | |
|
||||||
| following | | varbinary(383) | YES | | NULL | |
|
| following | | varchar(255) | YES | | NULL | |
|
||||||
| followers | | varbinary(383) | YES | | NULL | |
|
| followers | | varchar(255) | YES | | NULL | |
|
||||||
| inbox | | varbinary(383) | NO | | NULL | |
|
| inbox | | varchar(255) | NO | | NULL | |
|
||||||
| outbox | | varbinary(383) | YES | | NULL | |
|
| outbox | | varchar(255) | YES | | NULL | |
|
||||||
| sharedinbox | | varbinary(383) | YES | | NULL | |
|
| sharedinbox | | varchar(255) | YES | | NULL | |
|
||||||
| featured | Address for the collection of featured posts | varbinary(383) | YES | | NULL | |
|
|
||||||
| featured-tags | Address for the collection of featured tags | varbinary(383) | YES | | NULL | |
|
|
||||||
| manually-approve | | boolean | YES | | NULL | |
|
| manually-approve | | boolean | YES | | NULL | |
|
||||||
| discoverable | Mastodon extension: true if profile is published in their directory | boolean | YES | | NULL | |
|
| discoverable | Mastodon extension: true if profile is published in their directory | boolean | YES | | NULL | |
|
||||||
| suspended | Mastodon extension: true if profile is suspended | boolean | YES | | NULL | |
|
|
||||||
| nick | | varchar(255) | NO | | | |
|
| nick | | varchar(255) | NO | | | |
|
||||||
| name | | varchar(255) | YES | | NULL | |
|
| name | | varchar(255) | YES | | NULL | |
|
||||||
| about | | text | YES | | NULL | |
|
| about | | text | YES | | NULL | |
|
||||||
| xmpp | XMPP address | varchar(255) | YES | | NULL | |
|
| xmpp | XMPP address | varchar(255) | YES | | NULL | |
|
||||||
| matrix | Matrix address | varchar(255) | YES | | NULL | |
|
| matrix | Matrix address | varchar(255) | YES | | NULL | |
|
||||||
| photo | | varbinary(383) | YES | | NULL | |
|
| photo | | varchar(255) | YES | | NULL | |
|
||||||
| header | Header picture | varbinary(383) | YES | | NULL | |
|
| header | Header picture | varchar(255) | YES | | NULL | |
|
||||||
| addr | | varchar(255) | YES | | NULL | |
|
| addr | | varchar(255) | YES | | NULL | |
|
||||||
| alias | | varbinary(383) | YES | | NULL | |
|
| alias | | varchar(255) | YES | | NULL | |
|
||||||
| pubkey | | text | YES | | NULL | |
|
| pubkey | | text | YES | | NULL | |
|
||||||
| subscribe | | varbinary(383) | YES | | NULL | |
|
| subscribe | | varchar(255) | YES | | NULL | |
|
||||||
| baseurl | baseurl of the ap contact | varbinary(383) | YES | | NULL | |
|
| baseurl | baseurl of the ap contact | varchar(255) | YES | | NULL | |
|
||||||
| gsid | Global Server ID | int unsigned | YES | | NULL | |
|
| gsid | Global Server ID | int unsigned | YES | | NULL | |
|
||||||
| generator | Name of the contact's system | varchar(255) | YES | | NULL | |
|
| generator | Name of the contact's system | varchar(255) | YES | | NULL | |
|
||||||
| following_count | Number of following contacts | int unsigned | YES | | 0 | |
|
| following_count | Number of following contacts | int unsigned | YES | | 0 | |
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
Table application-marker
|
|
||||||
===========
|
|
||||||
|
|
||||||
Timeline marker
|
|
||||||
|
|
||||||
Fields
|
|
||||||
------
|
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
|
||||||
| -------------- | ---------------------------- | ------------------ | ---- | --- | ------- | ----- |
|
|
||||||
| application-id | | int unsigned | NO | PRI | NULL | |
|
|
||||||
| uid | Owner User id | mediumint unsigned | NO | PRI | NULL | |
|
|
||||||
| timeline | Marker (home, notifications) | varchar(64) | NO | PRI | NULL | |
|
|
||||||
| last_read_id | Marker id for the timeline | varbinary(383) | YES | | NULL | |
|
|
||||||
| version | Version number | smallint unsigned | YES | | NULL | |
|
|
||||||
| updated_at | creation time | datetime | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ------- | ----------------------------- |
|
|
||||||
| PRIMARY | application-id, uid, timeline |
|
|
||||||
| uid_id | uid |
|
|
||||||
|
|
||||||
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)
|
|
|
@ -6,19 +6,19 @@ OAuth application
|
||||||
Fields
|
Fields
|
||||||
------
|
------
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| ------------- | --------------- | -------------- | ---- | --- | ------- | -------------- |
|
| ------------- | --------------- | ------------ | ---- | --- | ------- | -------------- |
|
||||||
| id | generated index | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | generated index | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| client_id | | varchar(64) | NO | | NULL | |
|
| client_id | | varchar(64) | NO | | NULL | |
|
||||||
| client_secret | | varchar(64) | NO | | NULL | |
|
| client_secret | | varchar(64) | NO | | NULL | |
|
||||||
| name | | varchar(255) | NO | | NULL | |
|
| name | | varchar(255) | NO | | NULL | |
|
||||||
| redirect_uri | | varbinary(383) | NO | | NULL | |
|
| redirect_uri | | varchar(255) | NO | | NULL | |
|
||||||
| website | | varbinary(383) | YES | | NULL | |
|
| website | | varchar(255) | YES | | NULL | |
|
||||||
| scopes | | varchar(255) | YES | | NULL | |
|
| scopes | | varchar(255) | YES | | NULL | |
|
||||||
| read | Read scope | boolean | YES | | NULL | |
|
| read | Read scope | boolean | YES | | NULL | |
|
||||||
| write | Write scope | boolean | YES | | NULL | |
|
| write | Write scope | boolean | YES | | NULL | |
|
||||||
| follow | Follow scope | boolean | YES | | NULL | |
|
| follow | Follow scope | boolean | YES | | NULL | |
|
||||||
| push | Push scope | boolean | YES | | NULL | |
|
| push | Push scope | boolean | YES | | NULL | |
|
||||||
|
|
||||||
Indexes
|
Indexes
|
||||||
------------
|
------------
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
Table arrived-activity
|
|
||||||
===========
|
|
||||||
|
|
||||||
Id of arrived activities
|
|
||||||
|
|
||||||
Fields
|
|
||||||
------
|
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
|
||||||
| --------- | ---------------------------------- | -------------- | ---- | --- | ------- | ----- |
|
|
||||||
| object-id | object id of the incoming activity | varbinary(383) | NO | PRI | NULL | |
|
|
||||||
| received | Receiving date | datetime | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ------- | --------- |
|
|
||||||
| PRIMARY | object-id |
|
|
||||||
|
|
||||||
|
|
||||||
Return to [database documentation](help/database)
|
|
|
@ -20,28 +20,26 @@ Fields
|
||||||
| keywords | public keywords (interests) of the contact | text | YES | | NULL | |
|
| keywords | public keywords (interests) of the contact | text | YES | | NULL | |
|
||||||
| xmpp | XMPP address | varchar(255) | NO | | | |
|
| xmpp | XMPP address | varchar(255) | NO | | | |
|
||||||
| matrix | Matrix address | varchar(255) | NO | | | |
|
| matrix | Matrix address | varchar(255) | NO | | | |
|
||||||
| avatar | | varbinary(383) | NO | | | |
|
| avatar | | varchar(255) | NO | | | |
|
||||||
| header | Header picture | varbinary(383) | YES | | NULL | |
|
| header | Header picture | varchar(255) | YES | | NULL | |
|
||||||
| url | | varbinary(383) | NO | | | |
|
| url | | varchar(255) | NO | | | |
|
||||||
| nurl | | varbinary(383) | NO | | | |
|
| nurl | | varchar(255) | NO | | | |
|
||||||
| uri-id | Id of the item-uri table entry that contains the contact url | int unsigned | YES | | NULL | |
|
| uri-id | Id of the item-uri table entry that contains the contact url | int unsigned | YES | | NULL | |
|
||||||
| addr | | varchar(255) | NO | | | |
|
| addr | | varchar(255) | NO | | | |
|
||||||
| alias | | varbinary(383) | NO | | | |
|
| alias | | varchar(255) | NO | | | |
|
||||||
| pubkey | RSA public key 4096 bit | text | YES | | NULL | |
|
| pubkey | RSA public key 4096 bit | text | YES | | NULL | |
|
||||||
| prvkey | RSA private key 4096 bit | text | YES | | NULL | |
|
| prvkey | RSA private key 4096 bit | text | YES | | NULL | |
|
||||||
| batch | | varbinary(383) | NO | | | |
|
| batch | | varchar(255) | NO | | | |
|
||||||
| notify | | varbinary(383) | YES | | NULL | |
|
| notify | | varchar(255) | YES | | NULL | |
|
||||||
| poll | | varbinary(383) | YES | | NULL | |
|
| poll | | varchar(255) | YES | | NULL | |
|
||||||
| subscribe | | varbinary(383) | YES | | NULL | |
|
| subscribe | | varchar(255) | YES | | NULL | |
|
||||||
| last-update | Date of the last try to update the contact info | datetime | NO | | 0001-01-01 00:00:00 | |
|
| last-update | Date of the last try to update the contact info | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| next-update | Next connection request | datetime | YES | | NULL | |
|
|
||||||
| success_update | Date of the last successful contact update | datetime | NO | | 0001-01-01 00:00:00 | |
|
| success_update | Date of the last successful contact update | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| failure_update | Date of the last failed update | datetime | NO | | 0001-01-01 00:00:00 | |
|
| failure_update | Date of the last failed update | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| failed | Connection failed | boolean | YES | | NULL | |
|
| failed | Connection failed | boolean | YES | | NULL | |
|
||||||
| term-date | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| term-date | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| last-item | date of the last post | datetime | NO | | 0001-01-01 00:00:00 | |
|
| last-item | date of the last post | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| last-discovery | date of the last follower discovery | datetime | NO | | 0001-01-01 00:00:00 | |
|
| last-discovery | date of the last follower discovery | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| local-data | Is true when there are posts with this contact on the system | boolean | YES | | NULL | |
|
|
||||||
| blocked | Node-wide block status | boolean | NO | | 1 | |
|
| blocked | Node-wide block status | boolean | NO | | 1 | |
|
||||||
| block_reason | Node-wide block reason | text | YES | | NULL | |
|
| block_reason | Node-wide block reason | text | YES | | NULL | |
|
||||||
| readonly | posts of the contact are readonly | boolean | NO | | 0 | |
|
| readonly | posts of the contact are readonly | boolean | NO | | 0 | |
|
||||||
|
@ -50,7 +48,7 @@ Fields
|
||||||
| archive | | boolean | NO | | 0 | |
|
| archive | | boolean | NO | | 0 | |
|
||||||
| unsearchable | Contact prefers to not be searchable | boolean | NO | | 0 | |
|
| unsearchable | Contact prefers to not be searchable | boolean | NO | | 0 | |
|
||||||
| sensitive | Contact posts sensitive content | boolean | NO | | 0 | |
|
| sensitive | Contact posts sensitive content | boolean | NO | | 0 | |
|
||||||
| baseurl | baseurl of the contact | varbinary(383) | YES | | | |
|
| baseurl | baseurl of the contact | varchar(255) | YES | | | |
|
||||||
| gsid | Global Server ID | int unsigned | YES | | NULL | |
|
| gsid | Global Server ID | int unsigned | YES | | NULL | |
|
||||||
| bd | | date | NO | | 0001-01-01 | |
|
| bd | | date | NO | | 0001-01-01 | |
|
||||||
| reason | | text | YES | | NULL | |
|
| reason | | text | YES | | NULL | |
|
||||||
|
@ -59,7 +57,7 @@ Fields
|
||||||
| rel | The kind of the relation between the user and the contact | tinyint unsigned | NO | | 0 | |
|
| rel | The kind of the relation between the user and the contact | tinyint unsigned | NO | | 0 | |
|
||||||
| protocol | Protocol of the contact | char(4) | NO | | | |
|
| protocol | Protocol of the contact | char(4) | NO | | | |
|
||||||
| subhub | | boolean | NO | | 0 | |
|
| subhub | | boolean | NO | | 0 | |
|
||||||
| hub-verify | | varbinary(383) | NO | | | |
|
| hub-verify | | varchar(255) | NO | | | |
|
||||||
| rating | Automatically detected feed poll frequency | tinyint | NO | | 0 | |
|
| rating | Automatically detected feed poll frequency | tinyint | NO | | 0 | |
|
||||||
| priority | Feed poll priority | tinyint unsigned | NO | | 0 | |
|
| priority | Feed poll priority | tinyint unsigned | NO | | 0 | |
|
||||||
| attag | | varchar(255) | NO | | | |
|
| attag | | varchar(255) | NO | | | |
|
||||||
|
@ -70,15 +68,15 @@ Fields
|
||||||
| notify_new_posts | | boolean | NO | | 0 | |
|
| notify_new_posts | | boolean | NO | | 0 | |
|
||||||
| fetch_further_information | | tinyint unsigned | NO | | 0 | |
|
| fetch_further_information | | tinyint unsigned | NO | | 0 | |
|
||||||
| ffi_keyword_denylist | | text | YES | | NULL | |
|
| ffi_keyword_denylist | | text | YES | | NULL | |
|
||||||
| photo | Link to the profile photo of the contact | varbinary(383) | YES | | | |
|
| photo | Link to the profile photo of the contact | varchar(255) | YES | | | |
|
||||||
| thumb | Link to the profile photo (thumb size) | varbinary(383) | YES | | | |
|
| thumb | Link to the profile photo (thumb size) | varchar(255) | YES | | | |
|
||||||
| micro | Link to the profile photo (micro size) | varbinary(383) | YES | | | |
|
| micro | Link to the profile photo (micro size) | varchar(255) | YES | | | |
|
||||||
| name-date | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| name-date | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| uri-date | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| uri-date | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| avatar-date | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| avatar-date | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| request | | varbinary(383) | YES | | NULL | |
|
| request | | varchar(255) | YES | | NULL | |
|
||||||
| confirm | | varbinary(383) | YES | | NULL | |
|
| confirm | | varchar(255) | YES | | NULL | |
|
||||||
| poco | | varbinary(383) | YES | | NULL | |
|
| poco | | varchar(255) | YES | | NULL | |
|
||||||
| writable | | boolean | NO | | 0 | |
|
| writable | | boolean | NO | | 0 | |
|
||||||
| forum | contact is a forum. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = false instead | boolean | NO | | 0 | |
|
| forum | contact is a forum. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = false instead | boolean | NO | | 0 | |
|
||||||
| prv | contact is a private group. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = true instead | boolean | NO | | 0 | |
|
| prv | contact is a private group. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = true instead | boolean | NO | | 0 | |
|
||||||
|
@ -86,8 +84,8 @@ Fields
|
||||||
| site-pubkey | Deprecated | text | YES | | NULL | |
|
| site-pubkey | Deprecated | text | YES | | NULL | |
|
||||||
| gender | Deprecated | varchar(32) | NO | | | |
|
| gender | Deprecated | varchar(32) | NO | | | |
|
||||||
| duplex | Deprecated | boolean | NO | | 0 | |
|
| duplex | Deprecated | boolean | NO | | 0 | |
|
||||||
| issued-id | Deprecated | varbinary(383) | NO | | | |
|
| issued-id | Deprecated | varchar(255) | NO | | | |
|
||||||
| dfrn-id | Deprecated | varbinary(383) | NO | | | |
|
| dfrn-id | Deprecated | varchar(255) | NO | | | |
|
||||||
| aes_allow | Deprecated | boolean | NO | | 0 | |
|
| aes_allow | Deprecated | boolean | NO | | 0 | |
|
||||||
| ret-aes | Deprecated | boolean | NO | | 0 | |
|
| ret-aes | Deprecated | boolean | NO | | 0 | |
|
||||||
| usehub | Deprecated | boolean | NO | | 0 | |
|
| usehub | Deprecated | boolean | NO | | 0 | |
|
||||||
|
@ -114,14 +112,12 @@ Indexes
|
||||||
| attag_uid | attag(96), uid |
|
| attag_uid | attag(96), uid |
|
||||||
| network_uid_lastupdate | network, uid, last-update |
|
| network_uid_lastupdate | network, uid, last-update |
|
||||||
| uid_network_self_lastupdate | uid, network, self, last-update |
|
| uid_network_self_lastupdate | uid, network, self, last-update |
|
||||||
| next-update | next-update |
|
|
||||||
| local-data-next-update | local-data, next-update |
|
|
||||||
| uid_lastitem | uid, last-item |
|
| uid_lastitem | uid, last-item |
|
||||||
| baseurl | baseurl(64) |
|
| baseurl | baseurl(64) |
|
||||||
| uid_contact-type | uid, contact-type |
|
| uid_contact-type | uid, contact-type |
|
||||||
| uid_self_contact-type | uid, self, contact-type |
|
| uid_self_contact-type | uid, self, contact-type |
|
||||||
| self_network_uid | self, network, uid |
|
| self_network_uid | self, network, uid |
|
||||||
| gsid_uid_failed | gsid, uid, failed |
|
| gsid | gsid |
|
||||||
| uri-id | uri-id |
|
| uri-id | uri-id |
|
||||||
|
|
||||||
Foreign Keys
|
Foreign Keys
|
||||||
|
|
|
@ -9,7 +9,7 @@ Fields
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| ------- | ----------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
|
| ------- | ----------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| guid | A unique identifier for this conversation | varbinary(255) | NO | | | |
|
| guid | A unique identifier for this conversation | varchar(255) | NO | | | |
|
||||||
| recips | sender_handle;recipient_handle | text | YES | | NULL | |
|
| recips | sender_handle;recipient_handle | text | YES | | NULL | |
|
||||||
| uid | Owner User id | mediumint unsigned | NO | | 0 | |
|
| uid | Owner User id | mediumint unsigned | NO | | 0 | |
|
||||||
| creator | handle of creator | varchar(255) | NO | | | |
|
| creator | handle of creator | varchar(255) | NO | | | |
|
||||||
|
|
|
@ -9,7 +9,7 @@ Fields
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| ------- | ---------------------------------------------- | ------------------ | ---- | --- | ------- | -------------- |
|
| ------- | ---------------------------------------------- | ------------------ | ---- | --- | ------- | -------------- |
|
||||||
| id | | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| uri | URI of the post that will be distributed later | varbinary(383) | YES | | NULL | |
|
| uri | URI of the post that will be distributed later | varchar(255) | YES | | NULL | |
|
||||||
| uid | Owner User id | mediumint unsigned | YES | | NULL | |
|
| uid | Owner User id | mediumint unsigned | YES | | NULL | |
|
||||||
| delayed | delay time | datetime | YES | | NULL | |
|
| delayed | delay time | datetime | YES | | NULL | |
|
||||||
| wid | Workerqueue id | int unsigned | YES | | NULL | |
|
| wid | Workerqueue id | int unsigned | YES | | NULL | |
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
Table endpoint
|
|
||||||
===========
|
|
||||||
|
|
||||||
ActivityPub endpoints - used in the ActivityPub implementation
|
|
||||||
|
|
||||||
Fields
|
|
||||||
------
|
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
|
||||||
| ------------ | -------------------------------------------------------------- | -------------- | ---- | --- | ------- | ----- |
|
|
||||||
| url | URL of the contact | varbinary(383) | NO | PRI | NULL | |
|
|
||||||
| type | | varchar(20) | NO | | NULL | |
|
|
||||||
| owner-uri-id | Id of the item-uri table entry that contains the apcontact url | int unsigned | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ----------------- | -------------------------- |
|
|
||||||
| PRIMARY | url |
|
|
||||||
| owner-uri-id_type | UNIQUE, owner-uri-id, type |
|
|
||||||
|
|
||||||
Foreign Keys
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Field | Target Table | Target Field |
|
|
||||||
|-------|--------------|--------------|
|
|
||||||
| owner-uri-id | [item-uri](help/database/db_item-uri) | id |
|
|
||||||
|
|
||||||
Return to [database documentation](help/database)
|
|
|
@ -9,10 +9,10 @@ Fields
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| --------- | ---------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
|
| --------- | ---------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| guid | | varbinary(255) | NO | | | |
|
| guid | | varchar(255) | NO | | | |
|
||||||
| uid | Owner User id | mediumint unsigned | NO | | 0 | |
|
| uid | Owner User id | mediumint unsigned | NO | | 0 | |
|
||||||
| cid | contact_id (ID of the contact in contact table) | int unsigned | NO | | 0 | |
|
| cid | contact_id (ID of the contact in contact table) | int unsigned | NO | | 0 | |
|
||||||
| uri | | varbinary(383) | NO | | | |
|
| uri | | varchar(255) | NO | | | |
|
||||||
| uri-id | Id of the item-uri table entry that contains the event uri | int unsigned | YES | | NULL | |
|
| uri-id | Id of the item-uri table entry that contains the event uri | int unsigned | YES | | NULL | |
|
||||||
| created | creation time | datetime | NO | | 0001-01-01 00:00:00 | |
|
| created | creation time | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| edited | last edit time | datetime | NO | | 0001-01-01 00:00:00 | |
|
| edited | last edit time | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
|
|
|
@ -9,23 +9,22 @@ Fields
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| ----------------- | ------------------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
|
| ----------------- | ------------------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| guid | unique id | varbinary(255) | NO | | | |
|
| guid | unique id | varchar(255) | NO | | | |
|
||||||
| url | | varbinary(383) | NO | | | |
|
| url | | varchar(255) | NO | | | |
|
||||||
| uri-id | Id of the item-uri table entry that contains the fcontact url | int unsigned | YES | | NULL | |
|
| uri-id | Id of the item-uri table entry that contains the fcontact url | int unsigned | YES | | NULL | |
|
||||||
| name | | varchar(255) | NO | | | |
|
| name | | varchar(255) | NO | | | |
|
||||||
| photo | | varbinary(383) | NO | | | |
|
| photo | | varchar(255) | NO | | | |
|
||||||
| request | | varbinary(383) | NO | | | |
|
| request | | varchar(255) | NO | | | |
|
||||||
| nick | | varchar(255) | NO | | | |
|
| nick | | varchar(255) | NO | | | |
|
||||||
| addr | | varchar(255) | NO | | | |
|
| addr | | varchar(255) | NO | | | |
|
||||||
| batch | | varbinary(383) | NO | | | |
|
| batch | | varchar(255) | NO | | | |
|
||||||
| notify | | varbinary(383) | NO | | | |
|
| notify | | varchar(255) | NO | | | |
|
||||||
| poll | | varbinary(383) | NO | | | |
|
| poll | | varchar(255) | NO | | | |
|
||||||
| confirm | | varbinary(383) | NO | | | |
|
| confirm | | varchar(255) | NO | | | |
|
||||||
| priority | | tinyint unsigned | NO | | 0 | |
|
| priority | | tinyint unsigned | NO | | 0 | |
|
||||||
| network | | char(4) | NO | | | |
|
| network | | char(4) | NO | | | |
|
||||||
| alias | | varbinary(383) | NO | | | |
|
| alias | | varchar(255) | NO | | | |
|
||||||
| pubkey | | text | YES | | NULL | |
|
| pubkey | | text | YES | | NULL | |
|
||||||
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
|
|
||||||
| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| interacting_count | Number of contacts this contact interactes with | int unsigned | YES | | 0 | |
|
| interacting_count | Number of contacts this contact interactes with | int unsigned | YES | | 0 | |
|
||||||
| interacted_count | Number of contacts that interacted with this contact | int unsigned | YES | | 0 | |
|
| interacted_count | Number of contacts that interacted with this contact | int unsigned | YES | | 0 | |
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
Table fetch-entry
|
|
||||||
===========
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Fields
|
|
||||||
------
|
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
|
||||||
| ------- | ---------------------------------- | -------------- | ---- | --- | ------------------- | -------------- |
|
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
|
||||||
| url | url that awaiting to be fetched | varbinary(383) | YES | | NULL | |
|
|
||||||
| created | Creation date of the fetch request | datetime | NO | | 0001-01-01 00:00:00 | |
|
|
||||||
| wid | Workerqueue id | int unsigned | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ------- | ----------- |
|
|
||||||
| PRIMARY | id |
|
|
||||||
| url | UNIQUE, url |
|
|
||||||
| created | created |
|
|
||||||
| wid | wid |
|
|
||||||
|
|
||||||
Foreign Keys
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Field | Target Table | Target Field |
|
|
||||||
|-------|--------------|--------------|
|
|
||||||
| wid | [workerqueue](help/database/db_workerqueue) | id |
|
|
||||||
|
|
||||||
Return to [database documentation](help/database)
|
|
|
@ -1,22 +0,0 @@
|
||||||
Table fetched-activity
|
|
||||||
===========
|
|
||||||
|
|
||||||
Id of fetched activities
|
|
||||||
|
|
||||||
Fields
|
|
||||||
------
|
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
|
||||||
| --------- | ----------------------------- | -------------- | ---- | --- | ------- | ----- |
|
|
||||||
| object-id | object id of fetched activity | varbinary(383) | NO | PRI | NULL | |
|
|
||||||
| received | Receiving date | datetime | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ------- | --------- |
|
|
||||||
| PRIMARY | object-id |
|
|
||||||
|
|
||||||
|
|
||||||
Return to [database documentation](help/database)
|
|
|
@ -12,9 +12,9 @@ Fields
|
||||||
| uid | User id | mediumint unsigned | NO | | 0 | |
|
| uid | User id | mediumint unsigned | NO | | 0 | |
|
||||||
| cid | | int unsigned | NO | | 0 | |
|
| cid | | int unsigned | NO | | 0 | |
|
||||||
| name | | varchar(255) | NO | | | |
|
| name | | varchar(255) | NO | | | |
|
||||||
| url | | varbinary(383) | NO | | | |
|
| url | | varchar(255) | NO | | | |
|
||||||
| request | | varbinary(383) | NO | | | |
|
| request | | varchar(255) | NO | | | |
|
||||||
| photo | | varbinary(383) | NO | | | |
|
| photo | | varchar(255) | NO | | | |
|
||||||
| note | | text | YES | | NULL | |
|
| note | | text | YES | | NULL | |
|
||||||
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,8 @@ Fields
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| --------------------- | -------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
|
| --------------------- | -------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| url | | varbinary(383) | NO | | | |
|
| url | | varchar(255) | NO | | | |
|
||||||
| nurl | | varbinary(383) | NO | | | |
|
| nurl | | varchar(255) | NO | | | |
|
||||||
| version | | varchar(255) | NO | | | |
|
| version | | varchar(255) | NO | | | |
|
||||||
| site_name | | varchar(255) | NO | | | |
|
| site_name | | varchar(255) | NO | | | |
|
||||||
| info | | text | YES | | NULL | |
|
| info | | text | YES | | NULL | |
|
||||||
|
@ -22,8 +22,8 @@ Fields
|
||||||
| local-posts | Number of local posts | int unsigned | YES | | NULL | |
|
| local-posts | Number of local posts | int unsigned | YES | | NULL | |
|
||||||
| local-comments | Number of local comments | int unsigned | YES | | NULL | |
|
| local-comments | Number of local comments | int unsigned | YES | | NULL | |
|
||||||
| directory-type | Type of directory service (Poco, Mastodon) | tinyint | YES | | 0 | |
|
| directory-type | Type of directory service (Poco, Mastodon) | tinyint | YES | | 0 | |
|
||||||
| poco | | varbinary(383) | NO | | | |
|
| poco | | varchar(255) | NO | | | |
|
||||||
| noscrape | | varbinary(383) | NO | | | |
|
| noscrape | | varchar(255) | NO | | | |
|
||||||
| network | | char(4) | NO | | | |
|
| network | | char(4) | NO | | | |
|
||||||
| protocol | The protocol of the server | tinyint unsigned | YES | | NULL | |
|
| protocol | The protocol of the server | tinyint unsigned | YES | | NULL | |
|
||||||
| platform | | varchar(255) | NO | | | |
|
| platform | | varchar(255) | NO | | | |
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
Table inbox-entry-receiver
|
|
||||||
===========
|
|
||||||
|
|
||||||
Receiver for the incoming activity
|
|
||||||
|
|
||||||
Fields
|
|
||||||
------
|
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
|
||||||
| -------- | ----------- | ------------------ | ---- | --- | ------- | ----- |
|
|
||||||
| queue-id | | int unsigned | NO | PRI | NULL | |
|
|
||||||
| uid | User id | mediumint unsigned | NO | PRI | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ------- | ------------- |
|
|
||||||
| PRIMARY | queue-id, uid |
|
|
||||||
| uid | uid |
|
|
||||||
|
|
||||||
Foreign Keys
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Field | Target Table | Target Field |
|
|
||||||
|-------|--------------|--------------|
|
|
||||||
| queue-id | [inbox-entry](help/database/db_inbox-entry) | id |
|
|
||||||
| uid | [user](help/database/db_user) | uid |
|
|
||||||
|
|
||||||
Return to [database documentation](help/database)
|
|
|
@ -1,44 +0,0 @@
|
||||||
Table inbox-entry
|
|
||||||
===========
|
|
||||||
|
|
||||||
Incoming activity
|
|
||||||
|
|
||||||
Fields
|
|
||||||
------
|
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
|
||||||
| ------------------ | -------------------------------------- | -------------- | ---- | --- | ------- | -------------- |
|
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
|
||||||
| activity-id | id of the incoming activity | varbinary(383) | YES | | NULL | |
|
|
||||||
| object-id | | varbinary(383) | YES | | NULL | |
|
|
||||||
| in-reply-to-id | | varbinary(383) | YES | | NULL | |
|
|
||||||
| conversation | | varbinary(383) | YES | | NULL | |
|
|
||||||
| type | Type of the activity | varchar(64) | YES | | NULL | |
|
|
||||||
| object-type | Type of the object activity | varchar(64) | YES | | NULL | |
|
|
||||||
| object-object-type | Type of the object's object activity | varchar(64) | YES | | NULL | |
|
|
||||||
| received | Receiving date | datetime | YES | | NULL | |
|
|
||||||
| activity | The JSON activity | mediumtext | YES | | NULL | |
|
|
||||||
| signer | | varchar(255) | YES | | NULL | |
|
|
||||||
| push | Is the entry pushed or have pulled it? | boolean | YES | | NULL | |
|
|
||||||
| trust | Do we trust this entry? | boolean | YES | | NULL | |
|
|
||||||
| wid | Workerqueue id | int unsigned | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ----------- | ------------------- |
|
|
||||||
| PRIMARY | id |
|
|
||||||
| activity-id | UNIQUE, activity-id |
|
|
||||||
| object-id | object-id |
|
|
||||||
| received | received |
|
|
||||||
| wid | wid |
|
|
||||||
|
|
||||||
Foreign Keys
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Field | Target Table | Target Field |
|
|
||||||
|-------|--------------|--------------|
|
|
||||||
| wid | [workerqueue](help/database/db_workerqueue) | id |
|
|
||||||
|
|
||||||
Return to [database documentation](help/database)
|
|
|
@ -8,8 +8,7 @@ Fields
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| -------- | ------------------------------------ | -------------- | ---- | --- | ------------------- | ----- |
|
| -------- | ------------------------------------ | -------------- | ---- | --- | ------------------- | ----- |
|
||||||
| url | URL of the inbox | varbinary(383) | NO | PRI | NULL | |
|
| url | URL of the inbox | varbinary(255) | NO | PRI | NULL | |
|
||||||
| uri-id | Item-uri id of inbox url | int unsigned | YES | | NULL | |
|
|
||||||
| created | Creation date of this entry | datetime | NO | | 0001-01-01 00:00:00 | |
|
| 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 | |
|
| 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 | |
|
| failure | Date of the last failed delivery | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
|
@ -23,13 +22,6 @@ Indexes
|
||||||
| Name | Fields |
|
| Name | Fields |
|
||||||
| ------- | ------ |
|
| ------- | ------ |
|
||||||
| PRIMARY | url |
|
| PRIMARY | url |
|
||||||
| uri-id | 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)
|
Return to [database documentation](help/database)
|
||||||
|
|
|
@ -16,7 +16,7 @@ Fields
|
||||||
| knowyou | | boolean | NO | | 0 | |
|
| knowyou | | boolean | NO | | 0 | |
|
||||||
| duplex | deprecated | boolean | NO | | 0 | |
|
| duplex | deprecated | boolean | NO | | 0 | |
|
||||||
| note | | text | YES | | NULL | |
|
| note | | text | YES | | NULL | |
|
||||||
| hash | | varbinary(255) | NO | | | |
|
| hash | | varchar(255) | NO | | | |
|
||||||
| datetime | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| datetime | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| blocked | deprecated | boolean | NO | | 0 | |
|
| blocked | deprecated | boolean | NO | | 0 | |
|
||||||
| ignore | | boolean | NO | | 0 | |
|
| ignore | | boolean | NO | | 0 | |
|
||||||
|
|
|
@ -9,7 +9,7 @@ Fields
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| ----- | ------------------------------- | -------------- | ---- | --- | ------- | -------------- |
|
| ----- | ------------------------------- | -------------- | ---- | --- | ------- | -------------- |
|
||||||
| id | | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| uri | URI of an item | varbinary(383) | NO | | NULL | |
|
| uri | URI of an item | varbinary(255) | NO | | NULL | |
|
||||||
| guid | A unique identifier for an item | varbinary(255) | YES | | NULL | |
|
| guid | A unique identifier for an item | varbinary(255) | YES | | NULL | |
|
||||||
|
|
||||||
Indexes
|
Indexes
|
||||||
|
|
|
@ -10,11 +10,11 @@ Fields
|
||||||
| ------------- | -------------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
|
| ------------- | -------------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| uid | Owner User id | mediumint unsigned | NO | | 0 | |
|
| uid | Owner User id | mediumint unsigned | NO | | 0 | |
|
||||||
| guid | A unique identifier for this private message | varbinary(255) | NO | | | |
|
| guid | A unique identifier for this private message | varchar(255) | NO | | | |
|
||||||
| from-name | name of the sender | varchar(255) | NO | | | |
|
| from-name | name of the sender | varchar(255) | NO | | | |
|
||||||
| from-photo | contact photo link of the sender | varbinary(383) | NO | | | |
|
| from-photo | contact photo link of the sender | varchar(255) | NO | | | |
|
||||||
| from-url | profile linke of the sender | varbinary(383) | NO | | | |
|
| from-url | profile linke of the sender | varchar(255) | NO | | | |
|
||||||
| contact-id | contact.id | varbinary(255) | YES | | NULL | |
|
| contact-id | contact.id | varchar(255) | YES | | NULL | |
|
||||||
| author-id | Link to the contact table with uid=0 of the author of the mail | int unsigned | YES | | NULL | |
|
| author-id | Link to the contact table with uid=0 of the author of the mail | int unsigned | YES | | NULL | |
|
||||||
| convid | conv.id | int unsigned | YES | | NULL | |
|
| convid | conv.id | int unsigned | YES | | NULL | |
|
||||||
| title | | varchar(255) | NO | | | |
|
| title | | varchar(255) | NO | | | |
|
||||||
|
@ -23,11 +23,11 @@ Fields
|
||||||
| reply | | boolean | NO | | 0 | |
|
| reply | | boolean | NO | | 0 | |
|
||||||
| replied | | boolean | NO | | 0 | |
|
| replied | | boolean | NO | | 0 | |
|
||||||
| unknown | if sender not in the contact table this is 1 | boolean | NO | | 0 | |
|
| unknown | if sender not in the contact table this is 1 | boolean | NO | | 0 | |
|
||||||
| uri | | varbinary(383) | NO | | | |
|
| uri | | varchar(255) | NO | | | |
|
||||||
| uri-id | Item-uri id of the related mail | int unsigned | YES | | NULL | |
|
| uri-id | Item-uri id of the related mail | int unsigned | YES | | NULL | |
|
||||||
| parent-uri | | varbinary(383) | NO | | | |
|
| parent-uri | | varchar(255) | NO | | | |
|
||||||
| parent-uri-id | Item-uri id of the parent of the related mail | int unsigned | YES | | NULL | |
|
| parent-uri-id | Item-uri id of the parent of the related mail | int unsigned | YES | | NULL | |
|
||||||
| thr-parent | | varbinary(383) | 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 | |
|
| thr-parent-id | Id of the item-uri table that contains the thread parent uri | int unsigned | YES | | NULL | |
|
||||||
| created | creation time of the private message | datetime | NO | | 0001-01-01 00:00:00 | |
|
| created | creation time of the private message | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ Fields
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| uid | Owner User id | mediumint unsigned | YES | | NULL | |
|
| uid | Owner User id | mediumint unsigned | YES | | NULL | |
|
||||||
| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
|
| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
|
||||||
| type | | 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 | |
|
| 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 | |
|
| 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 | |
|
| parent-uri-id | Item-uri id of the parent of the related post | int unsigned | YES | | NULL | |
|
||||||
|
@ -31,7 +31,6 @@ Indexes
|
||||||
| target-uri-id | target-uri-id |
|
| target-uri-id | target-uri-id |
|
||||||
| parent-uri-id | parent-uri-id |
|
| parent-uri-id | parent-uri-id |
|
||||||
| seen_uid | seen, uid |
|
| seen_uid | seen, uid |
|
||||||
| uid_type_parent-uri-id_actor-id | uid, type, parent-uri-id, actor-id |
|
|
||||||
|
|
||||||
Foreign Keys
|
Foreign Keys
|
||||||
------------
|
------------
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Table notify
|
Table notify
|
||||||
===========
|
===========
|
||||||
|
|
||||||
[Deprecated] User notifications
|
notifications
|
||||||
|
|
||||||
Fields
|
Fields
|
||||||
------
|
------
|
||||||
|
@ -11,12 +11,12 @@ Fields
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| type | | smallint unsigned | NO | | 0 | |
|
| type | | smallint unsigned | NO | | 0 | |
|
||||||
| name | | varchar(255) | NO | | | |
|
| name | | varchar(255) | NO | | | |
|
||||||
| url | | varbinary(383) | NO | | | |
|
| url | | varchar(255) | NO | | | |
|
||||||
| photo | | varbinary(383) | NO | | | |
|
| photo | | varchar(255) | NO | | | |
|
||||||
| date | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| date | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| msg | | mediumtext | YES | | NULL | |
|
| msg | | mediumtext | YES | | NULL | |
|
||||||
| uid | Owner User id | mediumint unsigned | NO | | 0 | |
|
| uid | Owner User id | mediumint unsigned | NO | | 0 | |
|
||||||
| link | | varbinary(383) | NO | | | |
|
| link | | varchar(255) | NO | | | |
|
||||||
| iid | | int unsigned | YES | | NULL | |
|
| iid | | int unsigned | YES | | NULL | |
|
||||||
| parent | | int unsigned | YES | | NULL | |
|
| parent | | int unsigned | YES | | NULL | |
|
||||||
| uri-id | Item-uri id of the related post | int unsigned | YES | | NULL | |
|
| uri-id | Item-uri id of the related post | int unsigned | YES | | NULL | |
|
||||||
|
|
|
@ -8,7 +8,7 @@ Fields
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| -------- | ------------------------------ | ------------------ | ---- | --- | ------------------- | ----- |
|
| -------- | ------------------------------ | ------------------ | ---- | --- | ------------------- | ----- |
|
||||||
| url | page url | varbinary(383) | NO | PRI | NULL | |
|
| url | page url | varbinary(255) | NO | PRI | NULL | |
|
||||||
| maxwidth | Maximum width passed to Oembed | mediumint unsigned | NO | PRI | NULL | |
|
| maxwidth | Maximum width passed to Oembed | mediumint unsigned | NO | PRI | NULL | |
|
||||||
| content | OEmbed data of the page | mediumtext | YES | | NULL | |
|
| content | OEmbed data of the page | mediumtext | YES | | NULL | |
|
||||||
| created | datetime of creation | datetime | NO | | 0001-01-01 00:00:00 | |
|
| created | datetime of creation | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
Table post-activity
|
|
||||||
===========
|
|
||||||
|
|
||||||
Original remote activity
|
|
||||||
|
|
||||||
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 | |
|
|
||||||
| activity | Original activity | mediumtext | YES | | NULL | |
|
|
||||||
| received | | datetime | 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)
|
|
|
@ -16,11 +16,11 @@ Fields
|
||||||
Indexes
|
Indexes
|
||||||
------------
|
------------
|
||||||
|
|
||||||
| Name | Fields |
|
| Name | Fields |
|
||||||
| ---------- | ---------------------- |
|
| ------- | ---------------------- |
|
||||||
| PRIMARY | uri-id, uid, type, tid |
|
| PRIMARY | uri-id, uid, type, tid |
|
||||||
| tid | tid |
|
| uri-id | tid |
|
||||||
| uid_uri-id | uid, uri-id |
|
| uid | uid |
|
||||||
|
|
||||||
Foreign Keys
|
Foreign Keys
|
||||||
------------
|
------------
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
Table post-collection
|
|
||||||
===========
|
|
||||||
|
|
||||||
Collection of 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 | |
|
|
||||||
| type | 0 - Featured | tinyint unsigned | NO | PRI | 0 | |
|
|
||||||
| author-id | Author of the featured post | int unsigned | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| --------- | ------------ |
|
|
||||||
| PRIMARY | uri-id, type |
|
|
||||||
| type | type |
|
|
||||||
| author-id | author-id |
|
|
||||||
|
|
||||||
Foreign Keys
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Field | Target Table | Target Field |
|
|
||||||
|-------|--------------|--------------|
|
|
||||||
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
|
||||||
| author-id | [contact](help/database/db_contact) | id |
|
|
||||||
|
|
||||||
Return to [database documentation](help/database)
|
|
|
@ -6,25 +6,25 @@ Content for all posts
|
||||||
Fields
|
Fields
|
||||||
------
|
------
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| 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 | |
|
| 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 | | | |
|
| title | item title | varchar(255) | NO | | | |
|
||||||
| content-warning | | varchar(255) | NO | | | |
|
| content-warning | | varchar(255) | NO | | | |
|
||||||
| body | item body content | mediumtext | YES | | NULL | |
|
| body | item body content | mediumtext | YES | | NULL | |
|
||||||
| raw-body | Body without embedded media links | mediumtext | YES | | NULL | |
|
| raw-body | Body without embedded media links | mediumtext | YES | | NULL | |
|
||||||
| location | text location where this item originated | varchar(255) | NO | | | |
|
| location | text location where this item originated | varchar(255) | NO | | | |
|
||||||
| coord | longitude/latitude pair representing 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 | |
|
| language | Language information about this post | text | YES | | NULL | |
|
||||||
| app | application which generated this item | varchar(255) | NO | | | |
|
| app | application which generated this item | varchar(255) | NO | | | |
|
||||||
| rendered-hash | | varchar(32) | NO | | | |
|
| rendered-hash | | varchar(32) | NO | | | |
|
||||||
| rendered-html | item.body converted to html | mediumtext | YES | | NULL | |
|
| rendered-html | item.body converted to html | mediumtext | YES | | NULL | |
|
||||||
| object-type | ActivityStreams object type | varchar(100) | NO | | | |
|
| object-type | ActivityStreams object type | varchar(100) | NO | | | |
|
||||||
| object | JSON encoded object structure unless it is an implied object (normal post) | text | YES | | NULL | |
|
| 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-type | ActivityStreams target type if applicable (URI) | varchar(100) | NO | | | |
|
||||||
| target | JSON encoded target structure if used | text | YES | | NULL | |
|
| 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 | | | |
|
| 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 | varbinary(383) | NO | | | |
|
| plink | permalink or URL to a displayable copy of the message at its source | varchar(255) | NO | | | |
|
||||||
|
|
||||||
Indexes
|
Indexes
|
||||||
------------
|
------------
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
Table post-delivery
|
|
||||||
===========
|
|
||||||
|
|
||||||
Delivery data for posts for the batch processing
|
|
||||||
|
|
||||||
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 | |
|
|
||||||
| inbox-id | Item-uri id of inbox url | int unsigned | NO | PRI | NULL | |
|
|
||||||
| uid | Delivering user | mediumint unsigned | YES | | NULL | |
|
|
||||||
| created | | datetime | YES | | 0001-01-01 00:00:00 | |
|
|
||||||
| command | | varbinary(32) | YES | | NULL | |
|
|
||||||
| failed | Number of times the delivery has failed | tinyint | YES | | 0 | |
|
|
||||||
| receivers | JSON encoded array with the receiving contacts | mediumtext | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ---------------- | ----------------- |
|
|
||||||
| PRIMARY | uri-id, inbox-id |
|
|
||||||
| inbox-id_created | inbox-id, created |
|
|
||||||
| uid | uid |
|
|
||||||
|
|
||||||
Foreign Keys
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Field | Target Table | Target Field |
|
|
||||||
|-------|--------------|--------------|
|
|
||||||
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
|
||||||
| inbox-id | [item-uri](help/database/db_item-uri) | id |
|
|
||||||
| uid | [user](help/database/db_user) | uid |
|
|
||||||
|
|
||||||
Return to [database documentation](help/database)
|
|
|
@ -1,44 +0,0 @@
|
||||||
Table post-history
|
|
||||||
===========
|
|
||||||
|
|
||||||
Post history
|
|
||||||
|
|
||||||
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 | |
|
|
||||||
| edited | Date of edit | datetime | NO | PRI | 0001-01-01 00:00:00 | |
|
|
||||||
| 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 | varbinary(383) | NO | | | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ------- | -------------- |
|
|
||||||
| PRIMARY | uri-id, edited |
|
|
||||||
|
|
||||||
Foreign Keys
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Field | Target Table | Target Field |
|
|
||||||
|-------|--------------|--------------|
|
|
||||||
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
|
||||||
|
|
||||||
Return to [database documentation](help/database)
|
|
|
@ -10,32 +10,31 @@ Fields
|
||||||
| --------------- | --------------------------------------------------------- | ----------------- | ---- | --- | ------- | -------------- |
|
| --------------- | --------------------------------------------------------- | ----------------- | ---- | --- | ------- | -------------- |
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
| 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 | |
|
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
|
||||||
| url | Media URL | varbinary(1024) | NO | | NULL | |
|
| url | Media URL | varbinary(511) | NO | | NULL | |
|
||||||
| type | Media type | tinyint unsigned | NO | | 0 | |
|
| type | Media type | tinyint unsigned | NO | | 0 | |
|
||||||
| mimetype | | varchar(60) | YES | | NULL | |
|
| mimetype | | varchar(60) | YES | | NULL | |
|
||||||
| height | Height of the media | smallint unsigned | YES | | NULL | |
|
| height | Height of the media | smallint unsigned | YES | | NULL | |
|
||||||
| width | Width of the media | smallint unsigned | YES | | NULL | |
|
| width | Width of the media | smallint unsigned | YES | | NULL | |
|
||||||
| size | Media size | bigint unsigned | YES | | NULL | |
|
| size | Media size | int unsigned | YES | | NULL | |
|
||||||
| preview | Preview URL | varbinary(512) | YES | | NULL | |
|
| preview | Preview URL | varbinary(255) | YES | | NULL | |
|
||||||
| preview-height | Height of the preview picture | smallint unsigned | YES | | NULL | |
|
| preview-height | Height of the preview picture | smallint unsigned | YES | | NULL | |
|
||||||
| preview-width | Width of the preview picture | smallint unsigned | YES | | NULL | |
|
| preview-width | Width of the preview picture | smallint unsigned | YES | | NULL | |
|
||||||
| description | | text | YES | | NULL | |
|
| description | | text | YES | | NULL | |
|
||||||
| name | Name of the media | varchar(255) | YES | | NULL | |
|
| name | Name of the media | varchar(255) | YES | | NULL | |
|
||||||
| author-url | URL of the author of the media | varbinary(383) | YES | | NULL | |
|
| author-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-name | Name of the author of the media | varchar(255) | YES | | NULL | |
|
||||||
| author-image | Image of the author of the media | varbinary(383) | YES | | NULL | |
|
| author-image | Image of the author of the media | varbinary(255) | YES | | NULL | |
|
||||||
| publisher-url | URL of the publisher of the media | varbinary(383) | 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-name | Name of the publisher of the media | varchar(255) | YES | | NULL | |
|
||||||
| publisher-image | Image of the publisher of the media | varbinary(383) | YES | | NULL | |
|
| publisher-image | Image of the publisher of the media | varbinary(255) | YES | | NULL | |
|
||||||
|
|
||||||
Indexes
|
Indexes
|
||||||
------------
|
------------
|
||||||
|
|
||||||
| Name | Fields |
|
| Name | Fields |
|
||||||
| ---------- | ------------------------ |
|
| ---------- | ------------------- |
|
||||||
| PRIMARY | id |
|
| PRIMARY | id |
|
||||||
| uri-id-url | UNIQUE, uri-id, url(512) |
|
| uri-id-url | UNIQUE, uri-id, url |
|
||||||
| uri-id-id | uri-id, id |
|
|
||||||
|
|
||||||
Foreign Keys
|
Foreign Keys
|
||||||
------------
|
------------
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
Table post-question-option
|
|
||||||
===========
|
|
||||||
|
|
||||||
Question option
|
|
||||||
|
|
||||||
Fields
|
|
||||||
------
|
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
|
||||||
| ------- | --------------------------------------------------------- | ------------ | ---- | --- | ------- | ----- |
|
|
||||||
| id | Id of the question | int unsigned | NO | PRI | NULL | |
|
|
||||||
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
|
|
||||||
| name | Name of the option | varchar(255) | YES | | NULL | |
|
|
||||||
| replies | Number of replies for this question option | int unsigned | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ------- | ---------- |
|
|
||||||
| PRIMARY | uri-id, id |
|
|
||||||
|
|
||||||
Foreign Keys
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Field | Target Table | Target Field |
|
|
||||||
|-------|--------------|--------------|
|
|
||||||
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
|
||||||
|
|
||||||
Return to [database documentation](help/database)
|
|
|
@ -1,32 +0,0 @@
|
||||||
Table post-question
|
|
||||||
===========
|
|
||||||
|
|
||||||
Question
|
|
||||||
|
|
||||||
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 | |
|
|
||||||
| multiple | Multiple choice | boolean | NO | | 0 | |
|
|
||||||
| voters | Number of voters for this question | int unsigned | YES | | NULL | |
|
|
||||||
| end-time | Question end time | datetime | YES | | 0001-01-01 00:00:00 | |
|
|
||||||
|
|
||||||
Indexes
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Name | Fields |
|
|
||||||
| ------- | -------------- |
|
|
||||||
| PRIMARY | id |
|
|
||||||
| uri-id | UNIQUE, uri-id |
|
|
||||||
|
|
||||||
Foreign Keys
|
|
||||||
------------
|
|
||||||
|
|
||||||
| Field | Target Table | Target Field |
|
|
||||||
|-------|--------------|--------------|
|
|
||||||
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
|
||||||
|
|
||||||
Return to [database documentation](help/database)
|
|
|
@ -6,32 +6,31 @@ Thread related data per user
|
||||||
Fields
|
Fields
|
||||||
------
|
------
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| 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 | |
|
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
|
||||||
| conversation-id | Id of the item-uri table entry that contains the conversation uri | int unsigned | YES | | NULL | |
|
| owner-id | Item owner | int unsigned | NO | | 0 | |
|
||||||
| owner-id | Item owner | int unsigned | NO | | 0 | |
|
| author-id | Item author | 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 | |
|
||||||
| 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 | | | |
|
||||||
| network | | char(4) | NO | | | |
|
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| received | | 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 | |
|
||||||
| 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 | |
|
||||||
| commented | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | PRI | 0 | |
|
||||||
| 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 | |
|
||||||
| pinned | deprecated | boolean | NO | | 0 | |
|
| starred | | boolean | NO | | 0 | |
|
||||||
| starred | | boolean | NO | | 0 | |
|
| ignored | Ignore updates for this thread | 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 | |
|
||||||
| wall | This item was posted to the wall of uid | boolean | NO | | 0 | |
|
| mention | | boolean | NO | | 0 | |
|
||||||
| mention | | boolean | NO | | 0 | |
|
| pubmail | | boolean | NO | | 0 | |
|
||||||
| pubmail | | boolean | NO | | 0 | |
|
| forum_mode | Deprecated | tinyint unsigned | NO | | 0 | |
|
||||||
| forum_mode | Deprecated | tinyint unsigned | NO | | 0 | |
|
| contact-id | contact.id | int unsigned | NO | | 0 | |
|
||||||
| contact-id | contact.id | int unsigned | NO | | 0 | |
|
| unseen | post has not been seen | boolean | NO | | 1 | |
|
||||||
| unseen | post has not been seen | boolean | NO | | 1 | |
|
| hidden | Marker to hide the post from the user | boolean | NO | | 0 | |
|
||||||
| hidden | Marker to hide the post from the user | boolean | NO | | 0 | |
|
| origin | item originated at this site | 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 | |
|
||||||
| 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 | |
|
||||||
| post-user-id | Id of the post-user table | int unsigned | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
Indexes
|
||||||
------------
|
------------
|
||||||
|
@ -40,7 +39,6 @@ Indexes
|
||||||
| ----------------- | ------------------- |
|
| ----------------- | ------------------- |
|
||||||
| PRIMARY | uid, uri-id |
|
| PRIMARY | uid, uri-id |
|
||||||
| uri-id | uri-id |
|
| uri-id | uri-id |
|
||||||
| conversation-id | conversation-id |
|
|
||||||
| owner-id | owner-id |
|
| owner-id | owner-id |
|
||||||
| author-id | author-id |
|
| author-id | author-id |
|
||||||
| causer-id | causer-id |
|
| causer-id | causer-id |
|
||||||
|
@ -51,6 +49,7 @@ Indexes
|
||||||
| commented | commented |
|
| commented | commented |
|
||||||
| uid_received | uid, received |
|
| uid_received | uid, received |
|
||||||
| uid_wall_received | uid, wall, received |
|
| uid_wall_received | uid, wall, received |
|
||||||
|
| uid_pinned | uid, pinned |
|
||||||
| uid_commented | uid, commented |
|
| uid_commented | uid, commented |
|
||||||
| uid_starred | uid, starred |
|
| uid_starred | uid, starred |
|
||||||
| uid_mention | uid, mention |
|
| uid_mention | uid, mention |
|
||||||
|
@ -61,7 +60,6 @@ Foreign Keys
|
||||||
| Field | Target Table | Target Field |
|
| Field | Target Table | Target Field |
|
||||||
|-------|--------------|--------------|
|
|-------|--------------|--------------|
|
||||||
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
||||||
| conversation-id | [item-uri](help/database/db_item-uri) | id |
|
|
||||||
| owner-id | [contact](help/database/db_contact) | id |
|
| owner-id | [contact](help/database/db_contact) | id |
|
||||||
| author-id | [contact](help/database/db_contact) | id |
|
| author-id | [contact](help/database/db_contact) | id |
|
||||||
| causer-id | [contact](help/database/db_contact) | id |
|
| causer-id | [contact](help/database/db_contact) | id |
|
||||||
|
|
|
@ -6,31 +6,29 @@ Thread related data
|
||||||
Fields
|
Fields
|
||||||
------
|
------
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| 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 | |
|
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
|
||||||
| conversation-id | Id of the item-uri table entry that contains the conversation uri | int unsigned | YES | | NULL | |
|
| owner-id | Item owner | int unsigned | NO | | 0 | |
|
||||||
| owner-id | Item owner | int unsigned | NO | | 0 | |
|
| author-id | Item author | 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 | |
|
||||||
| 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 | | | |
|
||||||
| network | | char(4) | NO | | | |
|
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| received | | 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 | |
|
||||||
| 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 | |
|
||||||
| commented | | datetime | NO | | 0001-01-01 00:00:00 | |
|
|
||||||
|
|
||||||
Indexes
|
Indexes
|
||||||
------------
|
------------
|
||||||
|
|
||||||
| Name | Fields |
|
| Name | Fields |
|
||||||
| --------------- | --------------- |
|
| --------- | --------- |
|
||||||
| PRIMARY | uri-id |
|
| PRIMARY | uri-id |
|
||||||
| conversation-id | conversation-id |
|
| owner-id | owner-id |
|
||||||
| owner-id | owner-id |
|
| author-id | author-id |
|
||||||
| author-id | author-id |
|
| causer-id | causer-id |
|
||||||
| causer-id | causer-id |
|
| received | received |
|
||||||
| received | received |
|
| commented | commented |
|
||||||
| commented | commented |
|
|
||||||
|
|
||||||
Foreign Keys
|
Foreign Keys
|
||||||
------------
|
------------
|
||||||
|
@ -38,7 +36,6 @@ Foreign Keys
|
||||||
| Field | Target Table | Target Field |
|
| Field | Target Table | Target Field |
|
||||||
|-------|--------------|--------------|
|
|-------|--------------|--------------|
|
||||||
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
||||||
| conversation-id | [item-uri](help/database/db_item-uri) | id |
|
|
||||||
| owner-id | [contact](help/database/db_contact) | id |
|
| owner-id | [contact](help/database/db_contact) | id |
|
||||||
| author-id | [contact](help/database/db_contact) | id |
|
| author-id | [contact](help/database/db_contact) | id |
|
||||||
| causer-id | [contact](help/database/db_contact) | id |
|
| causer-id | [contact](help/database/db_contact) | id |
|
||||||
|
|
|
@ -10,7 +10,7 @@ Fields
|
||||||
| ----------------- | --------------------------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
|
| ----------------- | --------------------------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
|
||||||
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
|
| 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 | |
|
| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | PRI | NULL | |
|
||||||
| notification-type | | smallint unsigned | NO | | 0 | |
|
| notification-type | | tinyint unsigned | NO | | 0 | |
|
||||||
|
|
||||||
Indexes
|
Indexes
|
||||||
------------
|
------------
|
||||||
|
|
|
@ -60,7 +60,6 @@ Indexes
|
||||||
| author-id_uid | author-id, uid |
|
| author-id_uid | author-id, uid |
|
||||||
| author-id_received | author-id, received |
|
| author-id_received | author-id, received |
|
||||||
| parent-uri-id_uid | parent-uri-id, uid |
|
| parent-uri-id_uid | parent-uri-id, uid |
|
||||||
| uid_wall_received | uid, wall, received |
|
|
||||||
| uid_contactid | uid, contact-id |
|
| uid_contactid | uid, contact-id |
|
||||||
| uid_unseen_contactid | uid, unseen, contact-id |
|
| uid_unseen_contactid | uid, unseen, contact-id |
|
||||||
| uid_unseen | uid, unseen |
|
| uid_unseen | uid, unseen |
|
||||||
|
|
|
@ -47,8 +47,8 @@ Fields
|
||||||
| homepage | | varchar(255) | NO | | | |
|
| homepage | | varchar(255) | NO | | | |
|
||||||
| xmpp | XMPP address | varchar(255) | NO | | | |
|
| xmpp | XMPP address | varchar(255) | NO | | | |
|
||||||
| matrix | Matrix address | varchar(255) | NO | | | |
|
| matrix | Matrix address | varchar(255) | NO | | | |
|
||||||
| photo | | varbinary(383) | NO | | | |
|
| photo | | varchar(255) | NO | | | |
|
||||||
| thumb | | varbinary(383) | NO | | | |
|
| thumb | | varchar(255) | NO | | | |
|
||||||
| publish | publish default profile in local directory | boolean | NO | | 0 | |
|
| publish | publish default profile in local directory | boolean | NO | | 0 | |
|
||||||
| net-publish | publish profile in global directory | boolean | NO | | 0 | |
|
| net-publish | publish profile in global directory | boolean | NO | | 0 | |
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ Fields
|
||||||
| ------------ | --------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
|
| ------------ | --------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| uid | User id | mediumint unsigned | NO | | 0 | |
|
| uid | User id | mediumint unsigned | NO | | 0 | |
|
||||||
| callback_url | | varbinary(383) | NO | | | |
|
| callback_url | | varchar(255) | NO | | | |
|
||||||
| topic | | varchar(255) | NO | | | |
|
| topic | | varchar(255) | NO | | | |
|
||||||
| nickname | | varchar(255) | NO | | | |
|
| nickname | | varchar(255) | NO | | | |
|
||||||
| push | Retrial counter | tinyint | NO | | 0 | |
|
| push | Retrial counter | tinyint | NO | | 0 | |
|
||||||
|
|
|
@ -9,7 +9,7 @@ Fields
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| -------- | ------------- | ------------------ | ---- | --- | ------------------- | -------------- |
|
| -------- | ------------- | ------------------ | ---- | --- | ------------------- | -------------- |
|
||||||
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| hash | | varbinary(255) | NO | | | |
|
| hash | | varchar(255) | NO | | | |
|
||||||
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| uid | User id | mediumint unsigned | NO | | 0 | |
|
| uid | User id | mediumint unsigned | NO | | 0 | |
|
||||||
| password | | varchar(255) | NO | | | |
|
| password | | varchar(255) | NO | | | |
|
||||||
|
|
|
@ -6,12 +6,11 @@ tags and mentions
|
||||||
Fields
|
Fields
|
||||||
------
|
------
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| ----- | ----------------------------------------------------------------------------- | ---------------- | ---- | --- | ------- | -------------- |
|
| ----- | ----------- | -------------- | ---- | --- | ------- | -------------- |
|
||||||
| id | | int unsigned | NO | PRI | NULL | auto_increment |
|
| id | | int unsigned | NO | PRI | NULL | auto_increment |
|
||||||
| name | | varchar(96) | NO | | | |
|
| name | | varchar(96) | NO | | | |
|
||||||
| url | | varbinary(383) | NO | | | |
|
| url | | varbinary(255) | NO | | | |
|
||||||
| type | Type of the tag (Unknown, General Collection, Follower Collection or Account) | tinyint unsigned | YES | | NULL | |
|
|
||||||
|
|
||||||
Indexes
|
Indexes
|
||||||
------------
|
------------
|
||||||
|
|
|
@ -15,7 +15,6 @@ Fields
|
||||||
| ignored | Posts from this contact are ignored | boolean | YES | | NULL | |
|
| ignored | Posts from this contact are ignored | boolean | YES | | NULL | |
|
||||||
| collapsed | Posts from this contact are collapsed | boolean | YES | | NULL | |
|
| collapsed | Posts from this contact are collapsed | boolean | YES | | NULL | |
|
||||||
| hidden | This contact is hidden from the others | boolean | YES | | NULL | |
|
| hidden | This contact is hidden from the others | boolean | YES | | NULL | |
|
||||||
| is-blocked | User is blocked by this contact | boolean | YES | | NULL | |
|
|
||||||
| pending | | boolean | YES | | NULL | |
|
| pending | | boolean | YES | | NULL | |
|
||||||
| rel | The kind of the relation between the user and the contact | tinyint unsigned | YES | | NULL | |
|
| rel | The kind of the relation between the user and the contact | tinyint unsigned | YES | | NULL | |
|
||||||
| info | | mediumtext | YES | | NULL | |
|
| info | | mediumtext | YES | | NULL | |
|
||||||
|
@ -24,7 +23,7 @@ Fields
|
||||||
| fetch_further_information | | tinyint unsigned | YES | | NULL | |
|
| fetch_further_information | | tinyint unsigned | YES | | NULL | |
|
||||||
| ffi_keyword_denylist | | text | YES | | NULL | |
|
| ffi_keyword_denylist | | text | YES | | NULL | |
|
||||||
| subhub | | boolean | YES | | NULL | |
|
| subhub | | boolean | YES | | NULL | |
|
||||||
| hub-verify | | varbinary(383) | YES | | NULL | |
|
| hub-verify | | varchar(255) | YES | | NULL | |
|
||||||
| protocol | Protocol of the contact | char(4) | YES | | NULL | |
|
| protocol | Protocol of the contact | char(4) | YES | | NULL | |
|
||||||
| rating | Automatically detected feed poll frequency | tinyint | YES | | NULL | |
|
| rating | Automatically detected feed poll frequency | tinyint | YES | | NULL | |
|
||||||
| priority | Feed poll priority | tinyint unsigned | YES | | NULL | |
|
| priority | Feed poll priority | tinyint unsigned | YES | | NULL | |
|
||||||
|
|
|
@ -106,6 +106,12 @@ Derzeitige Hooks
|
||||||
$b ist das Item-Array einer Information, die in der Datenbank und im Item gespeichert ist.
|
$b ist das Item-Array einer Information, die in der Datenbank und im Item gespeichert ist.
|
||||||
{Bitte beachte: der Seiteninhalt ist bbcode - nicht HTML)
|
{Bitte beachte: der Seiteninhalt ist bbcode - nicht HTML)
|
||||||
|
|
||||||
|
**'settings_form'** - wird aufgerufen, wenn die HTML-Ausgabe für die Einstellungsseite generiert wird.
|
||||||
|
$b ist die HTML-Ausgabe (String) der Einstellungsseite vor dem finalen "</form>"-Tag.
|
||||||
|
|
||||||
|
**'settings_post'** - wird aufgerufen, wenn die Einstellungsseiten geladen werden.
|
||||||
|
$b ist der $_POST-Array
|
||||||
|
|
||||||
**'addon_settings'** - wird aufgerufen, wenn die HTML-Ausgabe der Addon-Einstellungsseite generiert wird.
|
**'addon_settings'** - wird aufgerufen, wenn die HTML-Ausgabe der Addon-Einstellungsseite generiert wird.
|
||||||
$b ist die HTML-Ausgabe (String) der Addon-Einstellungsseite vor dem finalen "</form>"-Tag.
|
$b ist die HTML-Ausgabe (String) der Addon-Einstellungsseite vor dem finalen "</form>"-Tag.
|
||||||
|
|
||||||
|
@ -230,6 +236,10 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
|
||||||
|
|
||||||
Hook::callAll('personal_xrd', $arr);
|
Hook::callAll('personal_xrd', $arr);
|
||||||
|
|
||||||
|
### mod/ping.php
|
||||||
|
|
||||||
|
Hook::callAll('network_ping', $arr);
|
||||||
|
|
||||||
### mod/parse_url.php
|
### mod/parse_url.php
|
||||||
|
|
||||||
Hook::callAll("parse_link", $arr);
|
Hook::callAll("parse_link", $arr);
|
||||||
|
@ -261,9 +271,11 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
|
||||||
Hook::callAll('addon_settings_post', $_POST);
|
Hook::callAll('addon_settings_post', $_POST);
|
||||||
Hook::callAll('connector_settings_post', $_POST);
|
Hook::callAll('connector_settings_post', $_POST);
|
||||||
Hook::callAll('display_settings_post', $_POST);
|
Hook::callAll('display_settings_post', $_POST);
|
||||||
|
Hook::callAll('settings_post', $_POST);
|
||||||
Hook::callAll('addon_settings', $settings_addons);
|
Hook::callAll('addon_settings', $settings_addons);
|
||||||
Hook::callAll('connector_settings', $settings_connectors);
|
Hook::callAll('connector_settings', $settings_connectors);
|
||||||
Hook::callAll('display_settings', $o);
|
Hook::callAll('display_settings', $o);
|
||||||
|
Hook::callAll('settings_form', $o);
|
||||||
|
|
||||||
### mod/photos.php
|
### mod/photos.php
|
||||||
|
|
||||||
|
@ -285,6 +297,10 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
|
||||||
Hook::callAll('home_init', $ret);
|
Hook::callAll('home_init', $ret);
|
||||||
Hook::callAll("home_content", $content);
|
Hook::callAll("home_content", $content);
|
||||||
|
|
||||||
|
### mod/poke.php
|
||||||
|
|
||||||
|
Hook::callAll('post_local_end', $arr);
|
||||||
|
|
||||||
### mod/contacts.php
|
### mod/contacts.php
|
||||||
|
|
||||||
Hook::callAll('contact_edit_post', $_POST);
|
Hook::callAll('contact_edit_post', $_POST);
|
||||||
|
@ -410,10 +426,6 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
|
||||||
Hook::callAll('storage_instance', $data);
|
Hook::callAll('storage_instance', $data);
|
||||||
Hook::callAll('storage_config', $data);
|
Hook::callAll('storage_config', $data);
|
||||||
|
|
||||||
### src/Module/Notifications/Ping.php
|
|
||||||
|
|
||||||
Hook::callAll('network_ping', $arr);
|
|
||||||
|
|
||||||
### src/Module/PermissionTooltip.php
|
### src/Module/PermissionTooltip.php
|
||||||
|
|
||||||
Hook::callAll('lockview_content', $item);
|
Hook::callAll('lockview_content', $item);
|
||||||
|
@ -457,6 +469,10 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
|
||||||
|
|
||||||
self::callSingle(self::getApp(), 'hook_fork', $fork_hook, $hookdata);
|
self::callSingle(self::getApp(), 'hook_fork', $fork_hook, $hookdata);
|
||||||
|
|
||||||
|
### src/Core/L10n/L10n.php
|
||||||
|
|
||||||
|
Hook::callAll('poke_verbs', $arr);
|
||||||
|
|
||||||
### src/Core/Worker.php
|
### src/Core/Worker.php
|
||||||
|
|
||||||
Hook::callAll("proc_run", $arr);
|
Hook::callAll("proc_run", $arr);
|
||||||
|
|
|
@ -65,17 +65,17 @@ table.bbcodes > * > tr > th {
|
||||||
<td><a href="http://friendi.ca" target="external-link">Friendica</a></td>
|
<td><a href="http://friendi.ca" target="external-link">Friendica</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[img]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png[/img]</td>
|
<td>[img]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg[/img]</td>
|
||||||
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png"></td>
|
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" alt="Immagine/foto"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[img=https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png]Das Friendica Logo[/img]</td>
|
<td>[img=https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg]Das Friendica Logo[/img]</td>
|
||||||
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png" alt="Das Friendica Logo"></td>
|
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" alt="Das Friendica Logo"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[img=64x32]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica.svg[/img]<br>
|
<td>[img=64x32]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg[/img]<br>
|
||||||
<br>Note: provided height is simply discarded.</td>
|
<br>Note: provided height is simply discarded.</td>
|
||||||
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica.svg" style="width: 64px;"></td>
|
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" style="width: 64px;"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[size=xx-small]kleiner Text[/size]</td>
|
<td>[size=xx-small]kleiner Text[/size]</td>
|
||||||
|
|
|
@ -27,7 +27,7 @@ Requirements
|
||||||
* Apache mit einer aktiverten mod-rewrite-Funktion und dem Eintrag "Options All", so dass du die lokale .htaccess-Datei nutzen kannst
|
* Apache mit einer aktiverten mod-rewrite-Funktion und dem Eintrag "Options All", so dass du die lokale .htaccess-Datei nutzen kannst
|
||||||
* PHP 7.3+ (PHP 8 wird noch nicht komplett unterstützt)
|
* PHP 7.3+ (PHP 8 wird noch nicht komplett unterstützt)
|
||||||
* PHP *Kommandozeilen*-Zugang mit register_argc_argv auf "true" gesetzt in der php.ini-Datei
|
* PHP *Kommandozeilen*-Zugang mit register_argc_argv auf "true" gesetzt in der php.ini-Datei
|
||||||
* Curl, GD, GMP, PDO, MySQLi, xml, zip und OpenSSL-Erweiterung
|
* Curl, GD, PDO, MySQLi, xml, zip und OpenSSL-Erweiterung
|
||||||
* Das POSIX Modul muss aktiviert sein ([CentOS, RHEL](http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7) haben dies z.B. deaktiviert)
|
* Das POSIX Modul muss aktiviert sein ([CentOS, RHEL](http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7) haben dies z.B. deaktiviert)
|
||||||
* Einen E-Mail Server, so dass PHP `mail()` funktioniert.
|
* Einen E-Mail Server, so dass PHP `mail()` funktioniert.
|
||||||
Wenn kein eigener E-Mail Server zur Verfügung steht, kann alternativ das [phpmailer](https://github.com/friendica/friendica-addons/tree/develop/phpmailer) Addon mit einem externen SMTP Account verwendet werden.
|
Wenn kein eigener E-Mail Server zur Verfügung steht, kann alternativ das [phpmailer](https://github.com/friendica/friendica-addons/tree/develop/phpmailer) Addon mit einem externen SMTP Account verwendet werden.
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
To change the look of friendica you have to touch the themes.
|
To change the look of friendica you have to touch the themes.
|
||||||
The current default theme is [Vier](https://github.com/friendica/friendica/tree/stable/view/theme/vier) but there are numerous others.
|
The current default theme is [Vier](https://github.com/friendica/friendica/tree/stable/view/theme/vier) but there are numerous others.
|
||||||
Have a look at [github.com/bkil/friendica-themes](https://github.com/bkil/friendica-themes) for an overview of the existing themes.
|
Have a look at [friendica-themes.com](http://friendica-themes.com) for an overview of the existing themes.
|
||||||
In case none of them suits your needs, there are several ways to change a theme.
|
In case none of them suits your needs, there are several ways to change a theme.
|
||||||
|
|
||||||
So, how to work on the UI of friendica.
|
So, how to work on the UI of friendica.
|
||||||
|
|
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 1.7 KiB |
|
@ -1,160 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="1000px"
|
|
||||||
height="1000px"
|
|
||||||
viewBox="0 0 1000 1000"
|
|
||||||
version="1.1"
|
|
||||||
id="SVGRoot"
|
|
||||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
|
||||||
sodipodi:docname="GoToSocial_icon1.svg"
|
|
||||||
inkscape:export-xdpi="95.999992"
|
|
||||||
inkscape:export-ydpi="95.999992">
|
|
||||||
<defs
|
|
||||||
id="defs5117">
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="spiro"
|
|
||||||
id="path-effect5760"
|
|
||||||
is_visible="true" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="spiro"
|
|
||||||
id="path-effect5756"
|
|
||||||
is_visible="true" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="spiro"
|
|
||||||
id="path-effect5752"
|
|
||||||
is_visible="true" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="spiro"
|
|
||||||
id="path-effect5748"
|
|
||||||
is_visible="true" />
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="0.70710678"
|
|
||||||
inkscape:cx="460.72691"
|
|
||||||
inkscape:cy="522.20279"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="layer3"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1057"
|
|
||||||
inkscape:window-x="-8"
|
|
||||||
inkscape:window-y="-8"
|
|
||||||
inkscape:window-maximized="1" />
|
|
||||||
<metadata
|
|
||||||
id="metadata5120">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="background"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
style="display:inline">
|
|
||||||
<rect
|
|
||||||
style="fill:#d0d0d0;fill-opacity:1;stroke:none;stroke-width:1.51092136;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
|
|
||||||
id="rect5876"
|
|
||||||
width="1000.0042"
|
|
||||||
height="1000"
|
|
||||||
x="0"
|
|
||||||
y="0" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer3"
|
|
||||||
inkscape:label="sloth"
|
|
||||||
style="display:inline">
|
|
||||||
<g
|
|
||||||
id="g5890"
|
|
||||||
transform="translate(-10)">
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="ssscccs"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5762"
|
|
||||||
d="M 861.29285,497.07031 C 861.65556,665.3247 774.21642,807.40548 511.60027,807.86794 270.63622,808.29226 154.54309,691.2756 155.19024,504.19228 155.7289,348.47535 251.17288,227.4551 422.3176,205.3802 c -35.32036,-75.85452 52.24232,-96.94648 73.77615,-32.00508 13.73451,-37.63439 108.24345,-49.1716 62.21106,24.77055 147.95052,3.75658 302.58353,111.28061 302.98804,298.92464 z"
|
|
||||||
style="display:inline;fill:#767676;fill-opacity:1;stroke:none;stroke-width:2.57058167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="sssssss"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5780"
|
|
||||||
d="m 809.15213,517.31679 c -4.83374,150.52526 -109.85544,235.22815 -297.81171,235.31839 -179.6675,0.0863 -290.56109,-70.98245 -298.50223,-235.31839 -4.6366,-95.95095 54.62861,-181.84442 144.83016,-194.18834 80.92123,-11.07393 99.7402,21.01802 153.67207,21.01802 59.21658,0 83.64871,-35.09608 162.84221,-21.85479 87.78391,14.67763 137.90533,103.6017 134.9695,195.02511 z"
|
|
||||||
style="display:inline;fill:#e8e8e8;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="scssscs"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5780-9"
|
|
||||||
d="m 809.15213,517.31679 c -1.32872,41.37724 -10.22787,77.78081 -26.33906,108.8204 -46.60931,-39.48031 -99.53509,-10.7281 -171.50115,-39.43334 -44.77145,-17.85808 -51.41659,-56.56453 -51.21999,-81.3542 0.54836,-69.14384 48.17003,-93.45758 95.53601,-97.60875 55.74677,-4.88566 124.5246,36.1482 151.01547,66.79433 2.11531,14.01083 2.97167,28.36512 2.50872,42.78156 z"
|
|
||||||
style="display:inline;fill:#a1a1a1;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
|
|
||||||
<ellipse
|
|
||||||
ry="50.575684"
|
|
||||||
rx="37.800804"
|
|
||||||
cy="502.64291"
|
|
||||||
cx="646.85773"
|
|
||||||
id="path5816"
|
|
||||||
style="fill:#767676;fill-opacity:1;stroke:none;stroke-width:1.51185882;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="scssscs"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5780-9-1"
|
|
||||||
d="m 212.51463,517.3246 c 1.32872,41.37724 10.22787,77.78081 26.33906,108.8204 46.60931,-39.48031 99.57415,-10.73591 171.54021,-39.44115 44.77145,-17.85808 51.41659,-56.56453 51.21999,-81.3542 -0.54836,-69.14384 -48.20909,-93.44977 -95.57507,-97.60094 -55.74677,-4.88566 -124.5246,36.1482 -151.01547,66.79433 -2.11531,14.01083 -2.97167,28.36512 -2.50872,42.78156 z"
|
|
||||||
style="display:inline;fill:#a1a1a1;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
|
|
||||||
<ellipse
|
|
||||||
transform="scale(-1,1)"
|
|
||||||
ry="50.575684"
|
|
||||||
rx="37.800804"
|
|
||||||
cy="502.64294"
|
|
||||||
cx="-374.84808"
|
|
||||||
id="path5816-0"
|
|
||||||
style="display:inline;fill:#767676;fill-opacity:1;stroke:none;stroke-width:1.51185882;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="sssss"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5862"
|
|
||||||
d="m 543.96613,556.96185 c 0,11.0622 -14.51648,20.02988 -32.42347,20.02988 -17.90698,0 -32.42347,-8.96769 -32.42347,-20.02988 0,-11.0622 14.14619,-15.58638 32.05318,-15.58638 17.90698,0 32.79376,4.52417 32.79376,15.58638 z"
|
|
||||||
style="display:inline;fill:#767676;fill-opacity:1;stroke:none;stroke-width:1.60515046;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="sssss"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5865"
|
|
||||||
d="m 552.00195,620.36132 c 7.06643,13.89391 -19.38375,21.24024 -40.2832,21.24024 -20.89945,0 -47.71708,-7.02219 -41.50391,-21.24024 5.71775,-13.08435 20.11619,0.73243 41.01563,0.73243 20.89944,0 34.43888,-13.1835 40.77148,-0.73243 z"
|
|
||||||
style="display:inline;fill:#767676;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
|
|
||||||
<ellipse
|
|
||||||
transform="rotate(-6.669407)"
|
|
||||||
ry="24.882849"
|
|
||||||
rx="19.511755"
|
|
||||||
cy="560.95673"
|
|
||||||
cx="600.24731"
|
|
||||||
id="path5818"
|
|
||||||
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.53898752;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
|
|
||||||
<ellipse
|
|
||||||
transform="rotate(-6.6694071)"
|
|
||||||
ry="24.882849"
|
|
||||||
rx="19.511755"
|
|
||||||
cy="529.32086"
|
|
||||||
cx="329.69714"
|
|
||||||
id="path5818-8"
|
|
||||||
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.53898752;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 270 B After Width: | Height: | Size: 756 B |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 267 B After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 608 B After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 5.2 KiB |
|
@ -1,4 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" viewBox="0 0 1920 1920">
|
|
||||||
<rect fill="#1872a2" width="1920" height="1920"/>
|
|
||||||
<path fill="#febf19" d="M390 595q0-84 61-145 60-60 144-60h730q85 0 145 60 60 61 60 145v730q0 84-60 145-60 60-145 60H595q-84 0-144-60-60-61-61-145zm935-160h-183v274H778v231l363-2 1 273H778v274h547q67 0 114-47 46-46 45-113V595q0-67-45-113-46-46-114-47z"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 403 B |
|
@ -1,4 +1 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" viewBox="0 0 1920 1920">
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg2" width="96" height="96" version="1.1"><defs id="defs4"><linearGradient id="highlightgradient"><stop id="stop3833" offset="0" style="stop-color:#fff;stop-opacity:.74374998"/><stop style="stop-color:#fff;stop-opacity:0" id="stop3829" offset="1"/></linearGradient><linearGradient id="shadowgradient"><stop id="stop3833-5" offset="0" style="stop-color:#000;stop-opacity:.5"/><stop style="stop-color:#818080;stop-opacity:0" id="stop3829-9" offset="1"/></linearGradient><linearGradient id="linearGradient4011" x1="44.948" x2="54.103" y1="0" y2="46.797" gradientTransform="scale(1,0.54545455)" gradientUnits="userSpaceOnUse" xlink:href="#highlightgradient"/><linearGradient id="linearGradient4021" x1="52.017" x2="42.868" y1="96" y2="41.838" gradientTransform="matrix(1,0,0,0.5,0,48)" gradientUnits="userSpaceOnUse" xlink:href="#shadowgradient"/><filter id="filter4055" width="1.06" height="1.24" x="-.03" y="-.12"><feGaussianBlur id="feGaussianBlur4057" stdDeviation="1.2"/></filter><filter id="filter4059" width="1.06" height="1.244" x="-.03" y="-.122"><feGaussianBlur id="feGaussianBlur4061" stdDeviation="1.22"/></filter></defs><metadata id="metadata7"/><g id="layer1" transform="translate(0,-956.3622)" style="display:inline"><path style="fill:#ffc019;fill-opacity:1;stroke:none" id="rect2993" d="M 16,0 C 7.0091019,0.04308252 0,7.0521845 0,16 0,16 0,57.499123 0,80 0,89.120146 7.0091019,96 16,96 L 32,96 32,70 64,70 63.916016,46.068359 32,46.236328 32,26 64,26 64,0 C 64,0 24,0 16,0 z" transform="translate(0,956.3622)"/><path style="fill:#1872a2;fill-opacity:1;stroke:none" id="rect2993-6" d="m 80,1052.3622 c 8.990898,0 16.086165,-6.966 16,-16 0,0 0,-41.4991 0,-64 0.07767,-9.01639 -7.067354,-16 -16,-16 l -16,0 0,26 -32,0 0,22 32,0 0,22 -32,0 0,26 c 0,0 32,0 48,0 z"/></g><g style="display:inline" id="g3997"><path id="path3999" d="m 64,0 0,26 -32,0 0,22 m 32,0 0,22 -32,0 0,26" style="fill:none;stroke:#000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/><rect id="rect4001" width="96" height="96" x="0" y="0" rx="16" ry="16" style="fill:none;stroke:#000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/></g><g id="layer3" style="display:none"><path style="fill:none;stroke:#000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" id="path3926" d="m 64,0 0,26 -32,0 0,22 32,0 0,22 -32,0 0,26"/><rect style="fill:none;stroke:#000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" id="rect3928" width="96" height="96" x="0" y="0" rx="16" ry="16"/></g><g id="layer2" style="display:inline"><rect style="fill:url(#linearGradient3930);fill-opacity:1;stroke:none" id="rect3823" width="96" height="48.044" x="0" y="0" rx="15.215" ry="15.216"/><rect style="fill:url(#linearGradient3904);fill-opacity:1;stroke:none" id="rect3823-8" width="96" height="47.867" x="0" y="-96" rx="15.215" ry="15.16" transform="scale(1,-1)"/><rect style="fill:url(#linearGradient4011);fill-opacity:1;stroke:none;filter:url(#filter4059)" id="rect4003" width="98" height="24" x="0" y="0" rx="15.215" ry="8.299" transform="matrix(1.0296115,0,0,1.1963836,-2.901924,-4.7132067)"/><rect style="opacity:.56746030000000003;fill:url(#linearGradient4021);fill-opacity:1;stroke:none;filter:url(#filter4055)" id="rect4013" width="96" height="24" x="0" y="72" rx="14.008" ry="12" transform="matrix(0.9768331,0,0,0.91974646,1.1649641,8.098115)"/></g></svg>
|
||||||
<rect fill="#1872a2" x="60" y="60" width="1800" height="1800" rx="333"/>
|
|
||||||
<path fill="#febf19" d="M40 371q0-136 98-234 98-97 234-97h1178q136 0 233 97 97 98 97 234v1178q0 136-97 234-97 97-233 97H372q-137 0-234-97-97-98-98-234Zm1510-258h-296v442H666v373l587-4 1 441H666v442h884q107 0 182-75 75-74 74-183V371q0-108-74-182-74-75-182-76z"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 434 B After Width: | Height: | Size: 3.6 KiB |
12
mod/cal.php
|
@ -28,14 +28,12 @@ use Friendica\Content\Nav;
|
||||||
use Friendica\Content\Widget;
|
use Friendica\Content\Widget;
|
||||||
use Friendica\Core\Renderer;
|
use Friendica\Core\Renderer;
|
||||||
use Friendica\Core\Session;
|
use Friendica\Core\Session;
|
||||||
use Friendica\Core\System;
|
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
use Friendica\Model\Event;
|
use Friendica\Model\Event;
|
||||||
use Friendica\Model\Item;
|
use Friendica\Model\Item;
|
||||||
use Friendica\Model\User;
|
use Friendica\Model\User;
|
||||||
use Friendica\Module\BaseProfile;
|
use Friendica\Module\BaseProfile;
|
||||||
use Friendica\Module\Response;
|
|
||||||
use Friendica\Network\HTTPException;
|
use Friendica\Network\HTTPException;
|
||||||
use Friendica\Util\DateTimeFormat;
|
use Friendica\Util\DateTimeFormat;
|
||||||
use Friendica\Util\Temporal;
|
use Friendica\Util\Temporal;
|
||||||
|
@ -218,7 +216,8 @@ function cal_content(App $a)
|
||||||
$events = Event::prepareListForTemplate($r);
|
$events = Event::prepareListForTemplate($r);
|
||||||
|
|
||||||
if (!empty(DI::args()->getArgv()[2]) && (DI::args()->getArgv()[2] === 'json')) {
|
if (!empty(DI::args()->getArgv()[2]) && (DI::args()->getArgv()[2] === 'json')) {
|
||||||
System::jsonExit($events);
|
echo json_encode($events);
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
// links: array('href', 'text', 'extra css classes', 'title')
|
// links: array('href', 'text', 'extra css classes', 'title')
|
||||||
|
@ -254,7 +253,8 @@ function cal_content(App $a)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (!empty($_GET['id'])) {
|
if (!empty($_GET['id'])) {
|
||||||
System::httpExit($o);
|
echo $o;
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $o;
|
return $o;
|
||||||
|
@ -289,8 +289,10 @@ function cal_content(App $a)
|
||||||
|
|
||||||
// If nothing went wrong we can echo the export content
|
// If nothing went wrong we can echo the export content
|
||||||
if ($evexport["success"]) {
|
if ($evexport["success"]) {
|
||||||
|
header('Content-type: text/calendar');
|
||||||
header('content-disposition: attachment; filename="' . DI::l10n()->t('calendar') . '-' . $nick . '.' . $evexport["extension"] . '"');
|
header('content-disposition: attachment; filename="' . DI::l10n()->t('calendar') . '-' . $nick . '.' . $evexport["extension"] . '"');
|
||||||
System::httpExit($evexport["content"], Response::TYPE_BLANK, 'text/calendar');
|
echo $evexport["content"];
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -25,7 +25,6 @@ use Friendica\Content\Widget;
|
||||||
use Friendica\Core\Logger;
|
use Friendica\Core\Logger;
|
||||||
use Friendica\Core\Renderer;
|
use Friendica\Core\Renderer;
|
||||||
use Friendica\Core\Session;
|
use Friendica\Core\Session;
|
||||||
use Friendica\Core\System;
|
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
|
@ -33,12 +32,10 @@ use Friendica\Model\Item;
|
||||||
use Friendica\Model\Post;
|
use Friendica\Model\Post;
|
||||||
use Friendica\Model\User;
|
use Friendica\Model\User;
|
||||||
use Friendica\Module\ActivityPub\Objects;
|
use Friendica\Module\ActivityPub\Objects;
|
||||||
use Friendica\Module\Response;
|
|
||||||
use Friendica\Network\HTTPException;
|
use Friendica\Network\HTTPException;
|
||||||
use Friendica\Protocol\ActivityPub;
|
use Friendica\Protocol\ActivityPub;
|
||||||
use Friendica\Protocol\DFRN;
|
use Friendica\Protocol\DFRN;
|
||||||
use Friendica\Protocol\Diaspora;
|
use Friendica\Protocol\Diaspora;
|
||||||
use Friendica\Util\DateTimeFormat;
|
|
||||||
|
|
||||||
function display_init(App $a)
|
function display_init(App $a)
|
||||||
{
|
{
|
||||||
|
@ -102,23 +99,16 @@ function display_init(App $a)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($_SERVER['HTTP_ACCEPT']) && strstr($_SERVER['HTTP_ACCEPT'], 'application/atom+xml')) {
|
if (!empty($_SERVER['HTTP_ACCEPT']) && strstr($_SERVER['HTTP_ACCEPT'], 'application/atom+xml')) {
|
||||||
Logger::debug('Directly serving XML', ['uri-id' => $item['uri-id']]);
|
Logger::info('Directly serving XML for uri-id '.$item['uri-id']);
|
||||||
displayShowFeed($item['uri-id'], $item['uid'], false);
|
displayShowFeed($item['uri-id'], $item['uid'], false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($item['gravity'] != GRAVITY_PARENT) {
|
if ($item['gravity'] != GRAVITY_PARENT) {
|
||||||
$parent = Post::selectFirstForUser($item_user, $fields, ['uid' => [0, $item_user], 'uri-id' => $item['parent-uri-id']], ['order' => ['uid' => true]]);
|
$parent = Post::selectFirstForUser($item_user, $fields, ['uid' => $item['uid'], 'uri-id' => $item['parent-uri-id']]);
|
||||||
$item = $parent ?: $item;
|
$item = $parent ?: $item;
|
||||||
}
|
}
|
||||||
|
|
||||||
$author = display_fetchauthor($item);
|
DI::page()['aside'] = Widget\VCard::getHTML(display_fetchauthor($item));
|
||||||
|
|
||||||
if (\Friendica\Util\Network::isLocalLink($author['url'])) {
|
|
||||||
\Friendica\Model\Profile::load(DI::app(), $author['nick'], false);
|
|
||||||
} else {
|
|
||||||
DI::page()['aside'] = Widget\VCard::getHTML($author);
|
|
||||||
}
|
|
||||||
$a->setProfileOwner($item['uid']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function display_fetchauthor($item)
|
function display_fetchauthor($item)
|
||||||
|
@ -160,20 +150,6 @@ function display_content(App $a, $update = false, $update_uid = 0)
|
||||||
}
|
}
|
||||||
$parent_uri_id = $item['parent-uri-id'];
|
$parent_uri_id = $item['parent-uri-id'];
|
||||||
}
|
}
|
||||||
if (empty($_REQUEST['force'])) {
|
|
||||||
$browser_update = intval(DI::pConfig()->get($update_uid, 'system', 'update_interval'));
|
|
||||||
if (!empty($browser_update)) {
|
|
||||||
$update_date = date(DateTimeFormat::MYSQL, time() - ($browser_update / 500));
|
|
||||||
if (!Post::exists(["`parent-uri-id` = ? AND `uid` IN (?, ?) AND `received` > ?", $parent_uri_id, 0, $update_uid, $update_date])) {
|
|
||||||
Logger::debug('No updated content', ['uri-id' => $uri_id, 'uid' => $update_uid, 'updated' => $update_date]);
|
|
||||||
return '';
|
|
||||||
} else {
|
|
||||||
Logger::debug('Updated content found', ['uri-id' => $uri_id, 'uid' => $update_uid, 'updated' => $update_date]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Logger::debug('Forced content update', ['uri-id' => $uri_id, 'uid' => $update_uid]);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
$uri_id = ((DI::args()->getArgc() > 2) ? DI::args()->getArgv()[2] : 0);
|
$uri_id = ((DI::args()->getArgc() > 2) ? DI::args()->getArgv()[2] : 0);
|
||||||
$parent_uri_id = $uri_id;
|
$parent_uri_id = $uri_id;
|
||||||
|
@ -302,7 +278,7 @@ function display_content(App $a, $update = false, $update_uid = 0)
|
||||||
|
|
||||||
// Preparing the meta header
|
// Preparing the meta header
|
||||||
$description = trim(BBCode::toPlaintext($item['body']));
|
$description = trim(BBCode::toPlaintext($item['body']));
|
||||||
$title = trim(BBCode::toPlaintext($item['title'] ?? ''));
|
$title = trim(BBCode::toPlaintext($item['title']));
|
||||||
$author_name = $item['author-name'];
|
$author_name = $item['author-name'];
|
||||||
|
|
||||||
$image = DI::baseUrl()->remove($item['author-avatar']);
|
$image = DI::baseUrl()->remove($item['author-avatar']);
|
||||||
|
@ -366,6 +342,7 @@ function displayShowFeed(int $uri_id, int $uid, bool $conversation)
|
||||||
if ($xml == '') {
|
if ($xml == '') {
|
||||||
throw new HTTPException\InternalServerErrorException(DI::l10n()->t('The feed for this item is unavailable.'));
|
throw new HTTPException\InternalServerErrorException(DI::l10n()->t('The feed for this item is unavailable.'));
|
||||||
}
|
}
|
||||||
|
header("Content-type: application/atom+xml");
|
||||||
System::httpExit($xml, Response::TYPE_ATOM);
|
echo $xml;
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,7 +83,7 @@ function editpost_content(App $a)
|
||||||
|
|
||||||
Hook::callAll('jot_tool', $jotplugins);
|
Hook::callAll('jot_tool', $jotplugins);
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('jot.tpl');
|
$tpl = Renderer::getMarkupTemplate("jot.tpl");
|
||||||
$o .= Renderer::replaceMacros($tpl, [
|
$o .= Renderer::replaceMacros($tpl, [
|
||||||
'$is_edit' => true,
|
'$is_edit' => true,
|
||||||
'$return_path' => '/display/' . $item['guid'],
|
'$return_path' => '/display/' . $item['guid'],
|
||||||
|
|
|
@ -27,7 +27,6 @@ use Friendica\Core\ACL;
|
||||||
use Friendica\Core\Logger;
|
use Friendica\Core\Logger;
|
||||||
use Friendica\Core\Protocol;
|
use Friendica\Core\Protocol;
|
||||||
use Friendica\Core\Renderer;
|
use Friendica\Core\Renderer;
|
||||||
use Friendica\Core\System;
|
|
||||||
use Friendica\Core\Theme;
|
use Friendica\Core\Theme;
|
||||||
use Friendica\Core\Worker;
|
use Friendica\Core\Worker;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
|
@ -123,7 +122,8 @@ function events_post(App $a)
|
||||||
if (strcmp($finish, $start) < 0 && !$nofinish) {
|
if (strcmp($finish, $start) < 0 && !$nofinish) {
|
||||||
notice(DI::l10n()->t('Event can not end before it has started.'));
|
notice(DI::l10n()->t('Event can not end before it has started.'));
|
||||||
if (intval($_REQUEST['preview'])) {
|
if (intval($_REQUEST['preview'])) {
|
||||||
System::httpExit(DI::l10n()->t('Event can not end before it has started.'));
|
echo DI::l10n()->t('Event can not end before it has started.');
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
DI::baseUrl()->redirect($onerror_path);
|
DI::baseUrl()->redirect($onerror_path);
|
||||||
}
|
}
|
||||||
|
@ -131,7 +131,8 @@ function events_post(App $a)
|
||||||
if (!$summary || ($start === DBA::NULL_DATETIME)) {
|
if (!$summary || ($start === DBA::NULL_DATETIME)) {
|
||||||
notice(DI::l10n()->t('Event title and start time are required.'));
|
notice(DI::l10n()->t('Event title and start time are required.'));
|
||||||
if (intval($_REQUEST['preview'])) {
|
if (intval($_REQUEST['preview'])) {
|
||||||
System::httpExit(DI::l10n()->t('Event title and start time are required.'));
|
echo DI::l10n()->t('Event title and start time are required.');
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
DI::baseUrl()->redirect($onerror_path);
|
DI::baseUrl()->redirect($onerror_path);
|
||||||
}
|
}
|
||||||
|
@ -191,7 +192,9 @@ function events_post(App $a)
|
||||||
$datarray['id'] = $event_id;
|
$datarray['id'] = $event_id;
|
||||||
|
|
||||||
if (intval($_REQUEST['preview'])) {
|
if (intval($_REQUEST['preview'])) {
|
||||||
System::httpExit(Event::getHTML($datarray));
|
$html = Event::getHTML($datarray);
|
||||||
|
echo $html;
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$event_id = Event::store($datarray);
|
$event_id = Event::store($datarray);
|
||||||
|
@ -388,7 +391,8 @@ function events_content(App $a)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (!empty($_GET['id'])) {
|
if (!empty($_GET['id'])) {
|
||||||
System::httpExit($o);
|
echo $o;
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $o;
|
return $o;
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
|
|
||||||
use Friendica\App;
|
use Friendica\App;
|
||||||
use Friendica\Core\Renderer;
|
use Friendica\Core\Renderer;
|
||||||
use Friendica\Core\System;
|
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
use Friendica\Model\Photo;
|
use Friendica\Model\Photo;
|
||||||
|
@ -39,15 +38,15 @@ use Friendica\Util\Strings;
|
||||||
function fbrowser_content(App $a)
|
function fbrowser_content(App $a)
|
||||||
{
|
{
|
||||||
if (!local_user()) {
|
if (!local_user()) {
|
||||||
System::exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DI::args()->getArgc() == 1) {
|
if (DI::args()->getArgc() == 1) {
|
||||||
System::exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Needed to match the correct template in a module that uses a different theme than the user/site/default
|
// Needed to match the correct template in a module that uses a different theme than the user/site/default
|
||||||
$theme = Strings::sanitizeFilePathItem($_GET['theme'] ?? '');
|
$theme = Strings::sanitizeFilePathItem($_GET['theme'] ?? null);
|
||||||
if ($theme && is_file("view/theme/$theme/config.php")) {
|
if ($theme && is_file("view/theme/$theme/config.php")) {
|
||||||
$a->setCurrentTheme($theme);
|
$a->setCurrentTheme($theme);
|
||||||
}
|
}
|
||||||
|
@ -103,8 +102,7 @@ function fbrowser_content(App $a)
|
||||||
return [
|
return [
|
||||||
DI::baseUrl() . '/photos/' . $a->getLoggedInUserNickname() . '/image/' . $rr['resource-id'],
|
DI::baseUrl() . '/photos/' . $a->getLoggedInUserNickname() . '/image/' . $rr['resource-id'],
|
||||||
$filename_e,
|
$filename_e,
|
||||||
DI::baseUrl() . '/photo/' . $rr['resource-id'] . '-' . $scale . '.'. $ext,
|
DI::baseUrl() . '/photo/' . $rr['resource-id'] . '-' . $scale . '.'. $ext
|
||||||
$rr['desc']
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
$files = array_map("_map_files1", $r);
|
$files = array_map("_map_files1", $r);
|
||||||
|
@ -155,6 +153,7 @@ function fbrowser_content(App $a)
|
||||||
if (!empty($_GET['mode'])) {
|
if (!empty($_GET['mode'])) {
|
||||||
return $o;
|
return $o;
|
||||||
} else {
|
} else {
|
||||||
System::httpExit($o);
|
echo $o;
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
72
mod/item.php
|
@ -36,12 +36,14 @@ use Friendica\Core\Logger;
|
||||||
use Friendica\Core\Protocol;
|
use Friendica\Core\Protocol;
|
||||||
use Friendica\Core\Session;
|
use Friendica\Core\Session;
|
||||||
use Friendica\Core\System;
|
use Friendica\Core\System;
|
||||||
|
use Friendica\Core\Worker;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
use Friendica\Model\Attach;
|
use Friendica\Model\Attach;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
use Friendica\Model\Conversation;
|
use Friendica\Model\Conversation;
|
||||||
use Friendica\Model\FileTag;
|
use Friendica\Model\FileTag;
|
||||||
|
use Friendica\Model\Group;
|
||||||
use Friendica\Model\Item;
|
use Friendica\Model\Item;
|
||||||
use Friendica\Model\ItemURI;
|
use Friendica\Model\ItemURI;
|
||||||
use Friendica\Model\Notification;
|
use Friendica\Model\Notification;
|
||||||
|
@ -55,6 +57,7 @@ use Friendica\Protocol\Activity;
|
||||||
use Friendica\Security\Security;
|
use Friendica\Security\Security;
|
||||||
use Friendica\Util\DateTimeFormat;
|
use Friendica\Util\DateTimeFormat;
|
||||||
use Friendica\Util\ParseUrl;
|
use Friendica\Util\ParseUrl;
|
||||||
|
use Friendica\Worker\Delivery;
|
||||||
|
|
||||||
function item_post(App $a) {
|
function item_post(App $a) {
|
||||||
if (!Session::isAuthenticated()) {
|
if (!Session::isAuthenticated()) {
|
||||||
|
@ -89,7 +92,7 @@ function item_post(App $a) {
|
||||||
*/
|
*/
|
||||||
if (!$preview && !empty($_REQUEST['post_id_random'])) {
|
if (!$preview && !empty($_REQUEST['post_id_random'])) {
|
||||||
if (!empty($_SESSION['post-random']) && $_SESSION['post-random'] == $_REQUEST['post_id_random']) {
|
if (!empty($_SESSION['post-random']) && $_SESSION['post-random'] == $_REQUEST['post_id_random']) {
|
||||||
Logger::warning('duplicate post');
|
Logger::info('item post: duplicate post');
|
||||||
item_post_return(DI::baseUrl(), $api_source, $return_path);
|
item_post_return(DI::baseUrl(), $api_source, $return_path);
|
||||||
} else {
|
} else {
|
||||||
$_SESSION['post-random'] = $_REQUEST['post_id_random'];
|
$_SESSION['post-random'] = $_REQUEST['post_id_random'];
|
||||||
|
@ -138,7 +141,7 @@ function item_post(App $a) {
|
||||||
// When commenting on a public post then store the post for the current user
|
// When commenting on a public post then store the post for the current user
|
||||||
// This enables interaction like starring and saving into folders
|
// This enables interaction like starring and saving into folders
|
||||||
if ($toplevel_item['uid'] == 0) {
|
if ($toplevel_item['uid'] == 0) {
|
||||||
$stored = Item::storeForUserByUriId($toplevel_item['uri-id'], local_user(), ['post-reason' => Item::PR_ACTIVITY]);
|
$stored = Item::storeForUserByUriId($toplevel_item['uri-id'], local_user());
|
||||||
Logger::info('Public item stored for user', ['uri-id' => $toplevel_item['uri-id'], 'uid' => $uid, 'stored' => $stored]);
|
Logger::info('Public item stored for user', ['uri-id' => $toplevel_item['uri-id'], 'uid' => $uid, 'stored' => $stored]);
|
||||||
if ($stored) {
|
if ($stored) {
|
||||||
$toplevel_item = Post::selectFirst(Item::ITEM_FIELDLIST, ['id' => $stored]);
|
$toplevel_item = Post::selectFirst(Item::ITEM_FIELDLIST, ['id' => $stored]);
|
||||||
|
@ -177,7 +180,7 @@ function item_post(App $a) {
|
||||||
|
|
||||||
// Now check that valid personal details have been provided
|
// Now check that valid personal details have been provided
|
||||||
if (!Security::canWriteToUserWall($profile_uid) && !$allow_comment) {
|
if (!Security::canWriteToUserWall($profile_uid) && !$allow_comment) {
|
||||||
Logger::warning('Permission denied.', ['local' => local_user(), 'profile_uid' => $profile_uid, 'toplevel_item_id' => $toplevel_item_id, 'network' => $toplevel_item['network']]);
|
Logger::notice('Permission denied.', ['local' => local_user(), 'profile_uid' => $profile_uid, 'toplevel_item_id' => $toplevel_item_id, 'network' => $toplevel_item['network']]);
|
||||||
notice(DI::l10n()->t('Permission denied.'));
|
notice(DI::l10n()->t('Permission denied.'));
|
||||||
if ($return_path) {
|
if ($return_path) {
|
||||||
DI::baseUrl()->redirect($return_path);
|
DI::baseUrl()->redirect($return_path);
|
||||||
|
@ -401,7 +404,7 @@ function item_post(App $a) {
|
||||||
$body = $item['body'];
|
$body = $item['body'];
|
||||||
$inform = $item['inform'];
|
$inform = $item['inform'];
|
||||||
$postopts = $item['postopts'];
|
$postopts = $item['postopts'];
|
||||||
$private = $item['private'];
|
$private = $item['private'];
|
||||||
$str_contact_allow = $item['allow_cid'];
|
$str_contact_allow = $item['allow_cid'];
|
||||||
$str_group_allow = $item['allow_gid'];
|
$str_group_allow = $item['allow_gid'];
|
||||||
$str_contact_deny = $item['deny_cid'];
|
$str_contact_deny = $item['deny_cid'];
|
||||||
|
@ -439,13 +442,8 @@ function item_post(App $a) {
|
||||||
// Ensure to only modify attachments that you own
|
// Ensure to only modify attachments that you own
|
||||||
$srch = '<' . intval($contact_id) . '>';
|
$srch = '<' . intval($contact_id) . '>';
|
||||||
|
|
||||||
$condition = [
|
$condition = ['allow_cid' => $srch, 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '',
|
||||||
'allow_cid' => $srch,
|
'id' => $attach];
|
||||||
'allow_gid' => '',
|
|
||||||
'deny_cid' => '',
|
|
||||||
'deny_gid' => '',
|
|
||||||
'id' => $attach,
|
|
||||||
];
|
|
||||||
if (!Attach::exists($condition)) {
|
if (!Attach::exists($condition)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -525,7 +523,7 @@ function item_post(App $a) {
|
||||||
$origin = $_REQUEST['origin'];
|
$origin = $_REQUEST['origin'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$uri = Item::newURI($guid);
|
$uri = Item::newURI($api_source ? $profile_uid : $uid, $guid);
|
||||||
|
|
||||||
// Fallback so that we alway have a parent uri
|
// Fallback so that we alway have a parent uri
|
||||||
if (!$thr_parent_uri || !$toplevel_item_id) {
|
if (!$thr_parent_uri || !$toplevel_item_id) {
|
||||||
|
@ -546,11 +544,11 @@ function item_post(App $a) {
|
||||||
$datarray['author-link'] = $author['url'];
|
$datarray['author-link'] = $author['url'];
|
||||||
$datarray['author-avatar'] = $author['thumb'];
|
$datarray['author-avatar'] = $author['thumb'];
|
||||||
$datarray['author-id'] = Contact::getIdForURL($datarray['author-link']);
|
$datarray['author-id'] = Contact::getIdForURL($datarray['author-link']);
|
||||||
$datarray['created'] = empty($_REQUEST['created_at']) ? DateTimeFormat::utcNow() : $_REQUEST['created_at'];
|
$datarray['created'] = DateTimeFormat::utcNow();
|
||||||
$datarray['edited'] = $datarray['created'];
|
$datarray['edited'] = DateTimeFormat::utcNow();
|
||||||
$datarray['commented'] = $datarray['created'];
|
$datarray['commented'] = DateTimeFormat::utcNow();
|
||||||
$datarray['changed'] = $datarray['created'];
|
|
||||||
$datarray['received'] = DateTimeFormat::utcNow();
|
$datarray['received'] = DateTimeFormat::utcNow();
|
||||||
|
$datarray['changed'] = DateTimeFormat::utcNow();
|
||||||
$datarray['extid'] = $extid;
|
$datarray['extid'] = $extid;
|
||||||
$datarray['guid'] = $guid;
|
$datarray['guid'] = $guid;
|
||||||
$datarray['uri'] = $uri;
|
$datarray['uri'] = $uri;
|
||||||
|
@ -595,7 +593,24 @@ function item_post(App $a) {
|
||||||
$datarray['protocol'] = Conversation::PARCEL_DIRECT;
|
$datarray['protocol'] = Conversation::PARCEL_DIRECT;
|
||||||
$datarray['direction'] = Conversation::PUSH;
|
$datarray['direction'] = Conversation::PUSH;
|
||||||
|
|
||||||
$datarray['edit'] = $orig_post;
|
$conversation = DBA::selectFirst('conversation', ['conversation-uri', 'conversation-href'], ['item-uri' => $datarray['thr-parent']]);
|
||||||
|
if (DBA::isResult($conversation)) {
|
||||||
|
if ($conversation['conversation-uri'] != '') {
|
||||||
|
$datarray['conversation-uri'] = $conversation['conversation-uri'];
|
||||||
|
}
|
||||||
|
if ($conversation['conversation-href'] != '') {
|
||||||
|
$datarray['conversation-href'] = $conversation['conversation-href'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($orig_post) {
|
||||||
|
$datarray['edit'] = true;
|
||||||
|
} else {
|
||||||
|
// If this was a share, add missing data here
|
||||||
|
$datarray = Item::addShareDataFromOriginal($datarray);
|
||||||
|
|
||||||
|
$datarray['edit'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
// Check for hashtags in the body and repair or add hashtag links
|
// Check for hashtags in the body and repair or add hashtag links
|
||||||
if ($preview || $orig_post) {
|
if ($preview || $orig_post) {
|
||||||
|
@ -609,12 +624,6 @@ function item_post(App $a) {
|
||||||
$datarray["id"] = -1;
|
$datarray["id"] = -1;
|
||||||
$datarray["uri-id"] = -1;
|
$datarray["uri-id"] = -1;
|
||||||
$datarray["author-network"] = Protocol::DFRN;
|
$datarray["author-network"] = Protocol::DFRN;
|
||||||
$datarray["author-updated"] = '';
|
|
||||||
$datarray["author-gsid"] = 0;
|
|
||||||
$datarray["author-uri-id"] = ItemURI::getIdByURI($datarray["author-link"]);
|
|
||||||
$datarray["owner-updated"] = '';
|
|
||||||
$datarray["has-media"] = false;
|
|
||||||
$datarray['body'] = Item::improveSharedDataInBody($datarray);
|
|
||||||
|
|
||||||
$o = DI::conversation()->create([array_merge($contact_record, $datarray)], 'search', false, true);
|
$o = DI::conversation()->create([array_merge($contact_record, $datarray)], 'search', false, true);
|
||||||
|
|
||||||
|
@ -655,20 +664,23 @@ function item_post(App $a) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$datarray['uri-id'] = ItemURI::getIdByURI($datarray['uri']);
|
$datarray['uri-id'] = ItemURI::getIdByURI($datarray['uri']);
|
||||||
$datarray['body'] = Item::improveSharedDataInBody($datarray);
|
|
||||||
|
|
||||||
if ($orig_post) {
|
if ($orig_post) {
|
||||||
|
// Fill the cache field
|
||||||
|
// This could be done in Item::update as well - but we have to check for the existance of some fields.
|
||||||
|
Item::putInCache($datarray);
|
||||||
|
|
||||||
$fields = [
|
$fields = [
|
||||||
'title' => $datarray['title'],
|
'title' => $datarray['title'],
|
||||||
'body' => $datarray['body'],
|
'body' => $datarray['body'],
|
||||||
'attach' => $datarray['attach'],
|
'attach' => $datarray['attach'],
|
||||||
'file' => $datarray['file'],
|
'file' => $datarray['file'],
|
||||||
|
'rendered-html' => $datarray['rendered-html'],
|
||||||
|
'rendered-hash' => $datarray['rendered-hash'],
|
||||||
'edited' => DateTimeFormat::utcNow(),
|
'edited' => DateTimeFormat::utcNow(),
|
||||||
'changed' => DateTimeFormat::utcNow()
|
'changed' => DateTimeFormat::utcNow()];
|
||||||
];
|
|
||||||
|
|
||||||
Item::update($fields, ['id' => $post_id]);
|
Item::update($fields, ['id' => $post_id]);
|
||||||
Item::updateDisplayCache($datarray['uri-id']);
|
|
||||||
|
|
||||||
if ($return_path) {
|
if ($return_path) {
|
||||||
DI::baseUrl()->redirect($return_path);
|
DI::baseUrl()->redirect($return_path);
|
||||||
|
@ -750,7 +762,7 @@ function item_post(App $a) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::debug('post_complete');
|
Logger::info('post_complete');
|
||||||
|
|
||||||
if ($api_source) {
|
if ($api_source) {
|
||||||
return $post_id;
|
return $post_id;
|
||||||
|
@ -775,7 +787,7 @@ function item_post_return($baseurl, $api_source, $return_path)
|
||||||
$json['reload'] = $baseurl . '/' . $_REQUEST['jsreload'];
|
$json['reload'] = $baseurl . '/' . $_REQUEST['jsreload'];
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::debug('post_json', ['json' => $json]);
|
Logger::info('post_json', ['json' => $json]);
|
||||||
|
|
||||||
System::jsonExit($json);
|
System::jsonExit($json);
|
||||||
}
|
}
|
||||||
|
@ -861,7 +873,7 @@ function drop_item(int $id, string $return = '')
|
||||||
|
|
||||||
item_redirect_after_action($item, $return);
|
item_redirect_after_action($item, $return);
|
||||||
} else {
|
} else {
|
||||||
Logger::warning('Permission denied.', ['local' => local_user(), 'uid' => $item['uid'], 'cid' => $contact_id]);
|
Logger::notice('Permission denied.', ['local' => local_user(), 'uid' => $item['uid'], 'cid' => $contact_id]);
|
||||||
notice(DI::l10n()->t('Permission denied.'));
|
notice(DI::l10n()->t('Permission denied.'));
|
||||||
DI::baseUrl()->redirect('display/' . $item['guid']);
|
DI::baseUrl()->redirect('display/' . $item['guid']);
|
||||||
//NOTREACHED
|
//NOTREACHED
|
||||||
|
|
|
@ -308,7 +308,7 @@ function message_content(App $a)
|
||||||
$body_e = BBCode::convertForUriId($message['uri-id'], $message['body']);
|
$body_e = BBCode::convertForUriId($message['uri-id'], $message['body']);
|
||||||
$to_name_e = $message['name'];
|
$to_name_e = $message['name'];
|
||||||
|
|
||||||
$contact = Contact::getByURL($message['from-url'], false, ['thumb', 'addr', 'id', 'avatar', 'url']);
|
$contact = Contact::getByURL($message['from-url'], false, ['thumb', 'addr', 'id', 'avatar']);
|
||||||
$from_photo = Contact::getThumb($contact);
|
$from_photo = Contact::getThumb($contact);
|
||||||
|
|
||||||
$mails[] = [
|
$mails[] = [
|
||||||
|
@ -440,7 +440,7 @@ function render_messages(array $msg, $t)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$contact = Contact::getByURL($rr['url'], false, ['thumb', 'addr', 'id', 'avatar', 'url']);
|
$contact = Contact::getByURL($rr['url'], false, ['thumb', 'addr', 'id', 'avatar']);
|
||||||
$from_photo = Contact::getThumb($contact);
|
$from_photo = Contact::getThumb($contact);
|
||||||
|
|
||||||
$rslt .= Renderer::replaceMacros($tpl, [
|
$rslt .= Renderer::replaceMacros($tpl, [
|
||||||
|
|