Merge branch '2018.08-rc'

This commit is contained in:
Tobias Diekershoff 2018-09-23 21:08:30 +02:00
commit 71ec84f6dc
659 changed files with 91067 additions and 75932 deletions

36
.codecov.yml Normal file
View file

@ -0,0 +1,36 @@
codecov:
branch: develop
comment: off
coverage:
status:
patch:
default: off
source:
target: 80%
flags: source
backend:
target: 80%
flags: backend
project:
default: off
source:
flags: source
backend:
flags: backend
flags:
source:
paths:
- src/
backend:
paths:
- mod/
- include/
binary:
paths:
- bin/
tests:
paths:
- tests/

4
.gitattributes vendored
View file

@ -1,2 +1,2 @@
# Disable LF normalization for all files
* -text
# Disable LF normalization for all files
* -text

132
.gitignore vendored
View file

@ -1,61 +1,71 @@
favicon.*
.htconfig.php
.htpreconfig.php
\#*
include/jquery-1.4.2.min.js
*.log
*.out
*.version*
favicon.*
home.html
addon
*.orig
*~
robots.txt
#ignore documentation, it should be newly built
doc/html
#ignore reports, should be generted with every build
report/
#ignore config files from eclipse, we don't want IDE files in our repository
.project
.buildpath
.externalToolBuilders
.settings
#ignore OSX .DS_Store files
.DS_Store
/nbproject/private/
#ignore smarty cache
/view/smarty3/compiled/
#ignore cache folders
/privacy_image_cache/
/photo/
/proxy/
nbproject
#ignore vagrant dir
.vagrant/
#ignore local folder
/local/
#ignore config files from Visual Studio
/.vs/
/php_friendica.phpproj
/php_friendica.sln
/php_friendica.phpproj.user
#ignore things from transifex-client
venv/
#ignore Composer dependencies
/vendor
/view/asset
#ignore config files from JetBrains
/.idea
favicon.*
.htconfig.php
.htpreconfig.php
\#*
*.log
*.out
*.version*
home.html
*~
robots.txt
#ignore local config
/config/local.ini.php
/config/addon.ini.php
#ignore documentation, it should be newly built
/doc/html
#ignore reports, should be generated with every build
report/
#ignore config files from eclipse, we don't want IDE files in our repository
.project
.buildpath
.externalToolBuilders
.settings
#ignore OSX .DS_Store files
.DS_Store
#ignore NetBeans IDE's private files (at least)
/nbproject/private/
#ignore smarty cache
/view/smarty3/compiled/
#ignore cache folders
/privacy_image_cache/
/photo/
/proxy/
nbproject
#ignore vagrant dir
.vagrant/
#ignore local folder
/local/
#ignore config files from Visual Studio
/.vs/
/php_friendica.phpproj
/php_friendica.sln
/php_friendica.phpproj.user
#ignore things from transifex-client
venv/
#ignore Composer dependencies
/vendor
/view/asset
#ignore config files from JetBrains
/.idea
#ignore addons directory
/addons
/addon
#ignore .htaccess
.htaccess

View file

@ -4,7 +4,7 @@ AddType audio/ogg .oga
#AddHandler php53-cgi .php
<FilesMatch "\.(out|log)$">
<IfModule authz_host_module>
<IfModule authz_host_module>
#Apache 2.4
Require all denied
</IfModule>
@ -38,4 +38,3 @@ AddType audio/ogg .oga
RewriteRule ^(.*)$ index.php?pagename=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
</IfModule>

View file

@ -1,10 +1,25 @@
---
language: php
## Friendica supports PHP version >= 5.6
## Friendica supports PHP version >= 5.6.1
php:
- 5.6
- 7.0
- 7.1
- 7.2
install: composer install
services:
- mysql
- redis-server
- memcached
env:
- MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USERNAME=travis MYSQL_PASSWORD= MYSQL_DATABASE=test
install:
- composer install
before_script:
- cp config/local-sample.ini.php config/local.ini.php
- mysql -e 'CREATE DATABASE IF NOT EXISTS test;'
- mysql -utravis test < database.sql
- echo "extension=redis.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
- echo "extension=memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
after_success: bash <(curl -s https://codecov.io/bash)

131
CHANGELOG
View file

@ -1,3 +1,134 @@
Version 2018.09 (2018-09-23)
Friendica Core:
Update to the translation (CS, DE, EN-US, FI, IT, NL, PL, ZH-CN) [translation teams]
Update to the documentation [Aditoo17, annando, astifter, rebeka-catalina, fabrixxm, M-arcus, microgroove, nupplaphil, tobiasd]
Enhancements to the database structure, handling and documentation [abanink, Angristan, annando, miqrogroove, tobiasd]
Enhancements of unit testing [abanink, nupplaphil, rudloff]
Enhancements to labelling of UI elements [andyhee, tobiasd]
Enhancements to the background workers [annando, miqrogroove, rabuzarus]
Enhancements to the PHP7.2 compatibility [annando, miqrogroove, MrPetovan]
Enhancements to the content filter [MrPetovan]
Enhancements to the hooks provided for addons [abanink]
Enhancements to the interaction with public postings [annando]
Enhancements to the config storage [frabrixxm]
Enhancements to the themes (frio, quattro, smoothly, vier) [annando, astifter, hoergen, MrPetovan, rabuzarus, tobiasd]
Enhancements to the handling of locks [nupplaphil]
Enhancements to the redis integration [nupplaphil]
Enhancements to the admin panel [JeroenED, tobiasd]
Enhancements to the user import process [annando]
Enhancements to the display of invitation information [JeroenED]
Enhancements to the automatic installation process [nupplaphil]
Enhancements to the contact group UI [annando, astifter]
Enhancements to the call of JS [hypolite]
Enhancements to the storage of items in the database [annando]
Enhancements to the process of changing relationships [annando]
Enhancements to the OEmbed of data [MrPetovan]
Fixed various PHP notice occurrences [annando, MrPetovan]
Fixed a bug that could lead to the display of posts from deleted accounts on the community page for a short period [annando]
Fixed a bug that prevented email notification to be send out [annando]
Fixed a bug in database optimisation [annando]
Fixed a bug during removing contacts [annando]
Fixed a bug in the tag-cloud widget [annando]
Fixed a bug in the daemon mode of the background worker [annando]
Fixed a bug in the frio theme that contact filtering [rabuzarus]
Fixed a bug that mangled the display of some additional smileys [abanink]
Fixed a bug in generating registration mails [MrPetovan]
Fixed a bug that caused blank re-share bodies [MrPetovon]
Fixed a bug in the API handling of private mails [fabrixxm]
Fixed a bug when calling the mail() function [miqrogroove]
Fixed a bug that caused deleted accounts being displayed in the local directory [miqrogroove]
Fixed a bug when checking the domain of an email address [VVelox]
Fixed a bug that prevented re-shares from Twitter to be shown as this [annando]
Fixed a bug that caused broken profile links [miqrogroove]
Fixed a bug that caused content from unknown accounts appearing in the timeline [annando]
Fixed a bug with the ignoring and blocking of contacts [annando]
Fixed a bug with showing hidden contacts in some places [annando]
Fixed a bug that prevented the deletion of events by contacts [annando]
Fixed a bug that prevented email contacts from being added [annando]
Fixed a bug in the notification/seen API call [fabrixxm]
Fixed a bug that prevented a refresh after un-/ignoring a conversation [annando]
Fixed a bug in the handling of some language translations [anndno]
Fixed a bug in the hook handling [annando]
Fixed the handling of too long tags [annando]
Fixed a bug that prevented the unliking of dis-/likes [annando]
Fixed bugs with the handling of private nodes [annando]
Fixed a bug in the session initialisation [annando]
Fixed bugs in the execution of the background processes [annando, Quix0r]
Fixed a problem with the notification page [MrPetovan]
Fixed a bug with wrong dates in importing some Atom feeds [annando]
Fixed forum exclusive distribution of postings using the !notation [annando]
Fixed a bug that lead to empty notifications [MrPetovan]
Fixed a problem that could sometimes prevent the execution of the relocation [annando]
Fixed a bug with the handling of images in postings over the connectors [annando]
Added conversation cleanup configuration [miqrogroove]
Added support of the usage of internal diaspora links to accounts [annando]
Added the possibility for admins to block certain nicknames (e.g. role names) [tobiasd]
Added the generation of system guid [nupplaphil]
Added the possibility for admins to mark a node for explicit content [tobiasd]
Added filter by account type to the community page [annando]
Added private flag to API results [fabrixxm]
Added post update checks to the console utility [annando]
Added codecov analysis [nupplaphil]
Added access-keys to the frio theme [tobiasd]
Added the profile settings to the user settings [tobiasd]
General code refactoring and beautification work [annando, MrPetovan, Quix0r, tobiasd]
Fixation of the position on the network page when new posts arrive [rabuzarus]
Ported OpenWebAuth from Hubzilla [annando, rabuzarus]
Removed hard coded syntax highlighting from code blocks [MrPetovan]
Removed (temporarily) the possibility to add pictures to private messages [annando]
New INI style config file format in /config [MrPetovan, tobiasd]
The .htaccess file is not part of the git repository anymore [annando, Quix0r]
Friendica Addons:
Update to the translations (CS, DE, EN-US, NL, PL, ZH-CN) [translation teams]
General update to adopt changes in core [annando, MrPetovan, Quix0r, tobiasd]
advancedcontentfilter:
Enhancement to the error handling [MrPetovan]
Honour the CSP settings [MrPetovan]
Fixed translation problems [annando]
blockem:
Enhancement of the settings [AlfredSK]
buffer:
support for app.net removed [annando]
js_upload:
Enhancement of the album name handling [rabuzarus]
Enhancement to the wording of the labels [astifter]
langfilter:
Fixed a problem with default values of the filtered languages [tobiasd]
libravatar:
The service wont shutdown, so we can keep the addon [tobiasd]
pumpio:
Fixed a problem that prevented new connections [annando]
superblock:
Fixed a bug that prevented the addon to block accounts [annando]
Enhancements of the settings [AlfredSK]
twitter:
Use rich text for quote tweets [MrPetovan]
Prevent empty quotes from being created [annando]
Fixed a problem with re-shares from remote_self contacts [annando]
Changed URL display after link expansion [MrPetovan]
Fixed a problem with EXIF handling [MrPetovan]
added addons:
mastodoncustomemojis [MrPetovan]
deprecated addons:
notimeline, retriver, remote_permissions, widgets
Directory:
Enhancements of the health summary [andyhee]
Enhancements of the PHP7 compatibility [MrPetovan]
Closed Issues:
901, 1034, 1074, 1303, 1308, 1391, 1490, 1470, 1559, 2093, 2337,
2340, 2381, 2396, 2675, 3291, 3299, 3493, 3501, 3535, 3643, 3840,
4148, 4419, 4475, 4507, 4655, 4659, 4710, 4726, 4739, 4753, 4814,
4830, 4868, 4889, 4923, 4971, 4950, 4985, 5066, 5099, 5137, 5148,
5158, 5168, 5188, 5202, 5211, 5222, 5233, 5243, 5247, 5252, 5257,
5260, 5262, 5268, 5274, 5275, 5276, 5278, 5298, 5318, 5319, 5320,
5321, 5322, 5330, 5333, 5341, 5365, 5405, 5407, 5411, 5423, 5432,
5434, 5436, 5443, 5455, 5464, 5467, 5469, 5486, 5496, 5497, 5514,
5539, 5524, 5541, 5544, 5550, 5564, 5566, 5605, 5630, 5638, 5651,
5653, 5660, 5670, 5691, 5733, 5745, 5768
Version 2018.05 (2018-06-01)
Friendica Core:
Update to the translations (DE, EN-GB, EN-US, FI, IS, IT, NL, PL, RU, ZN CH) [translation teams]

View file

@ -32,7 +32,7 @@ link if your cert is self-signed).
- Apache with mod-rewrite enabled and "Options All" so you can use a
local .htaccess file
- PHP 5.6+ (PHP 7 recommended for performance).
- PHP 5.6.1+ (PHP 7 recommended for performance).
- PHP *command line* access with register_argc_argv set to true in the
php.ini file [or see 'poormancron' in section 8]
@ -66,10 +66,39 @@ OR
2b. Clone the friendica/friendica GitHub repository and import dependencies
git clone https://github.com/friendica/friendica [web server folder]
git clone https://github.com/friendica/friendica -b master [web server folder]
cd [web server folder]
php bin/composer.phar install
Make sure the folder view/smarty3 exists and is writable by the webserver
user, in this case `www-data`
mkdir view/smarty3
chown www-data:www-data view/smarty3
chmod 775 view/smarty3
Get the addons by going into your website folder.
cd mywebsite
Clone the addon repository (separately):
git clone https://github.com/friendica/friendica-addons.git -b master addon
If you copy the directory tree to your webserver, make sure that you also
copy .htaccess - as "dot" files are often hidden and aren't normally copied.
If you want to use the development version of Friendica you can switch to
the devel branch in the repository by running
git checkout develop
bin/composer.phar install
cd addon
git checkout develop
please be aware that the develop branch may break your Friendica node at any
time. If you encounter a bug, please let us know.
3. Create an empty database and note the access details (hostname, username,
password, database name).
@ -77,8 +106,8 @@ password, database name).
- Please check the additional notes if running on MySQ 5.7.17 or newer
4. If you know in advance that it will be impossible for the web server to
write or create files in your web directory, create an empty file called
.htconfig.php and make it writable by the web server.
write or create files in the config/ subfolder, create an empty file called
local.ini.php and make it writable by the web server.
5. Visit your website with a web browser and follow the instructions. Please
note any error messages and correct these before continuing.
@ -92,9 +121,9 @@ so in the host name setting for the database.
6. *If* the automated installation fails for any reason, check the following:
- ".htconfig.php" exists
If not, edit htconfig.php and change system settings. Rename
to .htconfig.php
- "config/local.ini.php" exists
If not, edit local-sample.ini.php and change system settings. Rename
to local.ini.php
- Database is populated.
If not, import the contents of "database.sql" with phpmyadmin
or mysql command line
@ -103,7 +132,7 @@ or mysql command line
Registration errors should all be recoverable automatically.
If you get any *critical* failure at this point, it generally indicates the
database was not installed correctly. You might wish to move/rename
.htconfig.php to another name and empty (called 'dropping') the database
local.ini.php to another name and empty (called 'dropping') the database
tables, so that you can start fresh.
****************************************************************************
@ -148,7 +177,7 @@ Bad things will happen. Let there be a hardware failure, a corrupted
database or whatever you can think of. So once the installation of your
Friendica node is done, you should make yoursef a backup plan.
The most important file is the `.htconfig.php` file in the base directory.
The most important file is the `config/local.ini.php` file in the base directory.
As it stores all your data, you should also have a recent dump of your
Friendica database at hand, should you have to recover your node.
@ -245,21 +274,21 @@ Windows).
#####################################################################
- If you are unable to write the file .htconfig.php during installation
- If you are unable to write the file config/local.ini.php during installation
due to permissions issues:
#####################################################################
create an empty file with that name and give it world-write permission.
For Linux:
% touch .htconfig.php
% chmod 777 .htconfig.php
% touch config/local.ini.php
% chmod 664 config/local.ini.php
Retry the installation. As soon as the database has been created,
******* this is important *********
% chmod 755 .htconfig.php
% chmod 644 config/local.ini.php
#####################################################################
- Some configurations with "suhosin" security are configured without
@ -298,11 +327,11 @@ After a while I noticed, that bin/worker.php calls further php script via
proc_open. These scripts themselves also use proc_open and fail, because they
are NOT called with -d suhosin.executor.func.blacklist=none.
So the simple solution is to put the correct parameters into .htconfig.php:
// Location of PHP command line processor
$a->config['php_path'] = '/usr/bin/php -d suhosin.executor.func.blacklist=none
-d suhosin.executor.eval.blacklist=none';
So the simple solution is to put the correct parameters into config/local.ini.php:
[config]
; Location of PHP command line processor
php_path = "/usr/bin/php -d suhosin.executor.func.blacklist=none -d suhosin.executor.eval.blacklist=none"
This is obvious as soon as you notice that the friendica-cron uses proc_open to
execute php-scripts that also use proc_open, but it took me quite some time to

View file

@ -1 +1 @@
2018.05
2018.08-rc

View file

@ -33,8 +33,6 @@
*/
use Friendica\App;
use Friendica\BaseObject;
use Friendica\Core\Config;
use Friendica\Util\ExAuth;
if (sizeof($_SERVER["argv"]) == 0) {
@ -55,12 +53,8 @@ require_once "boot.php";
require_once "include/dba.php";
$a = new App(dirname(__DIR__));
BaseObject::setApp($a);
@include ".htconfig.php";
dba::connect($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
$oAuth = new ExAuth();
$oAuth->readStdin();
if ($a->mode === App::MODE_NORMAL) {
$oAuth = new ExAuth();
$oAuth->readStdin();
}

View file

@ -6,10 +6,48 @@
*
* This script was taken from http://php.net/manual/en/function.pcntl-fork.php
*/
function shutdown() {
posix_kill(posix_getpid(), SIGHUP);
use Friendica\App;
use Friendica\Core\Config;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
// Get options
$shortopts = 'f';
$longopts = ['foreground'];
$options = getopt($shortopts, $longopts);
// Ensure that daemon.php is executed from the base path of the installation
if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) {
$directory = dirname($_SERVER["argv"][0]);
if (substr($directory, 0, 1) != "/") {
$directory = $_SERVER["PWD"] . "/" . $directory;
}
$directory = realpath($directory . "/..");
chdir($directory);
}
require_once "boot.php";
require_once "include/dba.php";
$a = new App(dirname(__DIR__));
if ($a->isInstallMode()) {
die("Friendica isn't properly installed yet.\n");
}
Config::load();
if (empty(Config::get('system', 'pidfile'))) {
die('Please set system.pidfile in config/local.ini.php. For example:'."\n".
'[system]'."\n".
'pidfile = /path/to/daemon.pid'."\n");
}
$pidfile = Config::get('system', 'pidfile');
if (in_array("start", $_SERVER["argv"])) {
$mode = "start";
}
@ -22,6 +60,8 @@ if (in_array("status", $_SERVER["argv"])) {
$mode = "status";
}
$foreground = array_key_exists('f', $options) || array_key_exists('foreground', $options);
if (!isset($mode)) {
die("Please use either 'start', 'stop' or 'status'.\n");
}
@ -30,27 +70,15 @@ if (empty($_SERVER["argv"][0])) {
die("Unexpected script behaviour. This message should never occur.\n");
}
// Fetch the base directory
$directory = dirname($_SERVER["argv"][0]);
$pid = null;
if (substr($directory, 0, 1) != "/") {
$directory = $_SERVER["PWD"]."/".$directory;
}
$directory = realpath($directory."/..");
@include($directory."/.htconfig.php");
if (!isset($pidfile)) {
die('Please specify a pid file in the variable $pidfile in the .htconfig.php. For example:'."\n".
'$pidfile = "/path/to/daemon.pid";'."\n");
if (is_readable($pidfile)) {
$pid = intval(file_get_contents($pidfile));
}
if (in_array($mode, array("stop", "status"))) {
$pid = @file_get_contents($pidfile);
if (!$pid) {
die("Pidfile wasn't found. Is the daemon running?\n");
}
if (empty($pid) && in_array($mode, ["stop", "status"])) {
Config::set('system', 'worker_daemon_mode', false);
die("Pidfile wasn't found. Is the daemon running?\n");
}
if ($mode == "status") {
@ -60,6 +88,7 @@ if ($mode == "status") {
unlink($pidfile);
Config::set('system', 'worker_daemon_mode', false);
die("Daemon process $pid isn't running.\n");
}
@ -68,59 +97,102 @@ if ($mode == "stop") {
unlink($pidfile);
logger("Worker daemon process $pid was killed.", LOGGER_DEBUG);
Config::set('system', 'worker_daemon_mode', false);
die("Worker daemon process $pid was killed.\n");
}
echo "Starting worker daemon.\n";
if (isset($a->config['php_path'])) {
$php = $a->config['php_path'];
} else {
$php = "php";
if (!empty($pid) && posix_kill($pid, 0)) {
die("Daemon process $pid is already running.\n");
}
// Switch over to daemon mode.
if ($pid = pcntl_fork())
return; // Parent
logger('Starting worker daemon.', LOGGER_DEBUG);
fclose(STDIN); // Close all of the standard
fclose(STDOUT); // file descriptors as we
fclose(STDERR); // are running as a daemon.
if (!$foreground) {
echo "Starting worker daemon.\n";
register_shutdown_function('shutdown');
// Switch over to daemon mode.
if ($pid = pcntl_fork()) {
return; // Parent
}
if (posix_setsid() < 0)
return;
fclose(STDIN); // Close all of the standard
if ($pid = pcntl_fork())
return; // Parent
// Enabling this seem to block a running php process with 100% CPU usage when there is an outpout
// fclose(STDOUT); // file descriptors as we
// fclose(STDERR); // are running as a daemon.
$pid = getmypid();
file_put_contents($pidfile, $pid);
DBA::disconnect();
register_shutdown_function('shutdown');
if (posix_setsid() < 0) {
return;
}
if ($pid = pcntl_fork()) {
return; // Parent
}
$pid = getmypid();
file_put_contents($pidfile, $pid);
// We lose the database connection upon forking
$a->loadDatabase();
}
Config::set('system', 'worker_daemon_mode', true);
// Just to be sure that this script really runs endlessly
set_time_limit(0);
$wait_interval = intval(Config::get('system', 'cron_interval', 5)) * 60;
$do_cron = true;
$last_cron = 0;
// Now running as a daemon.
while (true) {
// Just to be sure that this script really runs endlessly
set_time_limit(0);
// Call the worker
$cmdline = $php.' bin/worker.php';
$executed = false;
if (function_exists('proc_open')) {
$resource = proc_open($cmdline . ' &', array(), $foo, $directory);
if (is_resource($resource)) {
$executed = true;
proc_close($resource);
}
if (!$do_cron && ($last_cron + $wait_interval) < time()) {
logger('Forcing cron worker call.', LOGGER_DEBUG);
$do_cron = true;
}
if (!$executed) {
exec($cmdline.' spawn');
Worker::spawnWorker($do_cron);
if ($do_cron) {
// We force a reconnect of the database connection.
// This is done to ensure that the connection don't get lost over time.
DBA::reconnect();
$last_cron = time();
}
// Now sleep for 5 minutes
sleep(300);
logger("Sleeping", LOGGER_DEBUG);
$start = time();
do {
$seconds = (time() - $start);
// logarithmic wait time calculation.
// Background: After jobs had been started, they often fork many workers.
// To not waste too much time, the sleep period increases.
$arg = (($seconds + 1) / ($wait_interval / 9)) + 1;
$sleep = round(log10($arg) * 1000000, 0);
usleep($sleep);
$timeout = ($seconds >= $wait_interval);
} while (!$timeout && !Worker::IPCJobsExists());
if ($timeout) {
$do_cron = true;
logger("Woke up after $wait_interval seconds.", LOGGER_DEBUG);
} else {
$do_cron = false;
logger("Worker jobs are calling to be forked.", LOGGER_DEBUG);
}
}
function shutdown() {
posix_kill(posix_getpid(), SIGHUP);
}

View file

@ -83,7 +83,7 @@ def fix_element(element):
element += ldelim + parts[first+1].rstrip('}') + rdelim
else:
# This takes care of elements where the filename is a path, e.g. {{ inc file.tpl }}
element += parts[first+1].rstrip('}')
element += parts[first+1].rstrip('}')
element += '"'
@ -205,7 +205,7 @@ try:
except getopt.GetoptError:
help(sys.argv[0])
sys.exit(2)
if path == '':
path = raw_input('Path to template folder to convert: ')
@ -220,7 +220,7 @@ if not os.path.exists(outpath):
files = os.listdir(path)
for a_file in files:
if a_file == 'htconfig.tpl':
if a_file == 'local.ini.tpl':
php_tpl = True
else:
php_tpl = False

View file

@ -86,7 +86,8 @@ cd /var/www
php bin/composer.phar install
# initial config file for friendica in vagrant
cp /vagrant/util/htconfig.vagrant.php /vagrant/.htconfig.php
#cp /vagrant/util/htconfig.vagrant.php /vagrant/.htconfig.php
cp /vagrant/util/local.ini.vagrant.php /vagrant/config/local.ini.php
# create the friendica database
echo "create database friendica DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | $MYSQL -u root -proot

View file

@ -6,10 +6,15 @@
*/
use Friendica\App;
use Friendica\BaseObject;
use Friendica\Core\Addon;
use Friendica\Core\Config;
use Friendica\Core\Worker;
use Friendica\Core\L10n;
// Get options
$shortopts = 'sn';
$longopts = ['spawn', 'no_cron'];
$options = getopt($shortopts, $longopts);
// Ensure that worker.php is executed from the base path of the installation
if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) {
@ -24,17 +29,14 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) {
}
require_once "boot.php";
require_once "include/dba.php";
$a = new App(dirname(__DIR__));
BaseObject::setApp($a);
require_once ".htconfig.php";
dba::connect($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
Config::load();
$lang = L10n::getBrowserLanguage();
L10n::loadTranslationTable($lang);
// Check the database structure and possibly fixes it
check_db(true);
@ -47,14 +49,14 @@ $a->set_baseurl(Config::get('system', 'url'));
Addon::loadHooks();
$spawn = (($_SERVER["argc"] == 2) && ($_SERVER["argv"][1] == "spawn"));
$spawn = array_key_exists('s', $options) || array_key_exists('spawn', $options);
if ($spawn) {
Worker::spawnWorker();
killme();
}
$run_cron = (($_SERVER["argc"] <= 1) || ($_SERVER["argv"][1] != "no_cron"));
$run_cron = !array_key_exists('n', $options) && !array_key_exists('no_cron', $options);
Worker::processQueue($run_cron);
@ -63,4 +65,3 @@ Worker::unclaimProcess();
Worker::endProcess();
killme();

351
boot.php
View file

@ -29,7 +29,7 @@ use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
use Friendica\Core\System;
use Friendica\Core\Worker;
use Friendica\Database\DBM;
use Friendica\Database\DBA;
use Friendica\Database\DBStructure;
use Friendica\Model\Contact;
use Friendica\Model\Conversation;
@ -39,9 +39,9 @@ require_once 'include/text.php';
define('FRIENDICA_PLATFORM', 'Friendica');
define('FRIENDICA_CODENAME', 'The Tazmans Flax-lily');
define('FRIENDICA_VERSION', '2018.05');
define('FRIENDICA_VERSION', '2018.08-rc');
define('DFRN_PROTOCOL_VERSION', '2.23');
define('DB_UPDATE_VERSION', 1266);
define('DB_UPDATE_VERSION', 1283);
define('NEW_UPDATE_ROUTINE_VERSION', 1170);
/**
@ -64,15 +64,13 @@ define('EOL', "<br />\r\n");
* @brief Image storage quality.
*
* Lower numbers save space at cost of image detail.
* For ease of upgrade, please do not change here. Change jpeg quality with
* $a->config['system']['jpeg_quality'] = n;
* in .htconfig.php, where n is netween 1 and 100, and with very poor results
* below about 50
* For ease of upgrade, please do not change here. Set [system] jpegquality = n in config/local.ini.php,
* where n is between 1 and 100, and with very poor results below about 50
*/
define('JPEG_QUALITY', 100);
/**
* $a->config['system']['png_quality'] from 0 (uncompressed) to 9
* [system] png_quality = n where is between 0 (uncompressed) to 9
*/
define('PNG_QUALITY', 8);
@ -83,9 +81,10 @@ define('PNG_QUALITY', 8);
* this length (on the longest side, the other side will be scaled appropriately).
* Modify this value using
*
* $a->config['system']['max_image_length'] = n;
* [system]
* max_image_length = n;
*
* in .htconfig.php
* in config/local.ini.php
*
* If you don't want to set a maximum length, set to -1. The default value is
* defined by 'MAX_IMAGE_LENGTH' below.
@ -114,11 +113,12 @@ define('SSL_POLICY_SELFSIGN', 2);
* log levels
* @{
*/
define('LOGGER_NORMAL', 0);
define('LOGGER_TRACE', 1);
define('LOGGER_DEBUG', 2);
define('LOGGER_DATA', 3);
define('LOGGER_ALL', 4);
define('LOGGER_WARNING', 0);
define('LOGGER_INFO', 1);
define('LOGGER_TRACE', 2);
define('LOGGER_DEBUG', 3);
define('LOGGER_DATA', 4);
define('LOGGER_ALL', 5);
/* @}*/
/**
@ -152,19 +152,6 @@ define('REGISTER_OPEN', 2);
* @}
*/
/**
* @name Contact_is
*
* Relationship types
* @{
*/
define('CONTACT_IS_FOLLOWER', 1);
define('CONTACT_IS_SHARING', 2);
define('CONTACT_IS_FRIEND', 3);
/**
* @}
*/
/**
* @name Update
*
@ -177,55 +164,6 @@ define('UPDATE_FAILED', 1);
* @}
*/
/**
* @name page/profile types
*
* PAGE_NORMAL is a typical personal profile account
* PAGE_SOAPBOX automatically approves all friend requests as CONTACT_IS_SHARING, (readonly)
* PAGE_COMMUNITY automatically approves all friend requests as CONTACT_IS_SHARING, but with
* write access to wall and comments (no email and not included in page owner's ACL lists)
* PAGE_FREELOVE automatically approves all friend requests as full friends (CONTACT_IS_FRIEND).
*
* @{
*/
define('PAGE_NORMAL', 0);
define('PAGE_SOAPBOX', 1);
define('PAGE_COMMUNITY', 2);
define('PAGE_FREELOVE', 3);
define('PAGE_BLOG', 4);
define('PAGE_PRVGROUP', 5);
/**
* @}
*/
/**
* @name account types
*
* ACCOUNT_TYPE_PERSON - the account belongs to a person
* Associated page types: PAGE_NORMAL, PAGE_SOAPBOX, PAGE_FREELOVE
*
* ACCOUNT_TYPE_ORGANISATION - the account belongs to an organisation
* Associated page type: PAGE_SOAPBOX
*
* ACCOUNT_TYPE_NEWS - the account is a news reflector
* Associated page type: PAGE_SOAPBOX
*
* ACCOUNT_TYPE_COMMUNITY - the account is community forum
* Associated page types: PAGE_COMMUNITY, PAGE_PRVGROUP
*
* ACCOUNT_TYPE_RELAY - the account is a relay
* This will only be assigned to contacts, not to user accounts
* @{
*/
define('ACCOUNT_TYPE_PERSON', 0);
define('ACCOUNT_TYPE_ORGANISATION', 1);
define('ACCOUNT_TYPE_NEWS', 2);
define('ACCOUNT_TYPE_COMMUNITY', 3);
define('ACCOUNT_TYPE_RELAY', 4);
/**
* @}
*/
/**
* @name CP
*
@ -241,84 +179,32 @@ define('CP_USERS_AND_GLOBAL', 2);
* @}
*/
/**
* @name Protocols
* @deprecated since version 3.6
* @see Conversation
*
* Different protocols that we are storing
* @{
*/
define('PROTOCOL_UNKNOWN' , Conversation::PROTOCOL_UNKNOWN);
define('PROTOCOL_DFRN' , Conversation::PROTOCOL_DFRN);
define('PROTOCOL_DIASPORA' , Conversation::PROTOCOL_DIASPORA);
define('PROTOCOL_OSTATUS_SALMON' , Conversation::PROTOCOL_OSTATUS_SALMON);
define('PROTOCOL_OSTATUS_FEED' , Conversation::PROTOCOL_OSTATUS_FEED); // Deprecated
define('PROTOCOL_GS_CONVERSATION', Conversation::PROTOCOL_GS_CONVERSATION); // Deprecated
define('PROTOCOL_SPLITTED_CONV' , Conversation::PROTOCOL_SPLITTED_CONV);
/**
* @}
*/
/**
* @name Network constants
* @deprecated since version 3.6
* @see Protocol
*
* Network and protocol family types
* @{
*/
define('NETWORK_DFRN' , Protocol::DFRN); // Friendica, Mistpark, other DFRN implementations
define('NETWORK_ZOT' , Protocol::ZOT); // Zot! - Currently unsupported
define('NETWORK_OSTATUS' , Protocol::OSTATUS); // GNU-social, Pleroma, Mastodon, other OStatus implementations
define('NETWORK_FEED' , Protocol::FEED); // RSS/Atom feeds with no known "post/notify" protocol
define('NETWORK_DIASPORA' , Protocol::DIASPORA); // Diaspora
define('NETWORK_MAIL' , Protocol::MAIL); // IMAP/POP
define('NETWORK_FACEBOOK' , Protocol::FACEBOOK); // Facebook API
define('NETWORK_LINKEDIN' , Protocol::LINKEDIN); // LinkedIn
define('NETWORK_XMPP' , Protocol::XMPP); // XMPP - Currently unsupported
define('NETWORK_MYSPACE' , Protocol::MYSPACE); // MySpace - Currently unsupported
define('NETWORK_GPLUS' , Protocol::GPLUS); // Google+
define('NETWORK_PUMPIO' , Protocol::PUMPIO); // pump.io
define('NETWORK_TWITTER' , Protocol::TWITTER); // Twitter
define('NETWORK_DIASPORA2', Protocol::DIASPORA2); // Diaspora connector
define('NETWORK_STATUSNET', Protocol::STATUSNET); // Statusnet connector
define('NETWORK_APPNET' , Protocol::APPNET); // app.net - Dead protocol
define('NETWORK_NEWS' , Protocol::NEWS); // Network News Transfer Protocol - Currently unsupported
define('NETWORK_ICALENDAR', Protocol::ICALENDAR); // iCalendar - Currently unsupported
define('NETWORK_PNUT' , Protocol::PNUT); // pnut.io - Currently unsupported
define('NETWORK_PHANTOM' , Protocol::PHANTOM); // Place holder
/**
* @}
*/
/**
* These numbers are used in stored permissions
* and existing allocations MUST NEVER BE CHANGED
* OR RE-ASSIGNED! You may only add to them.
*/
$netgroup_ids = [
NETWORK_DFRN => (-1),
NETWORK_ZOT => (-2),
NETWORK_OSTATUS => (-3),
NETWORK_FEED => (-4),
NETWORK_DIASPORA => (-5),
NETWORK_MAIL => (-6),
NETWORK_FACEBOOK => (-8),
NETWORK_LINKEDIN => (-9),
NETWORK_XMPP => (-10),
NETWORK_MYSPACE => (-11),
NETWORK_GPLUS => (-12),
NETWORK_PUMPIO => (-13),
NETWORK_TWITTER => (-14),
NETWORK_DIASPORA2 => (-15),
NETWORK_STATUSNET => (-16),
NETWORK_APPNET => (-17),
NETWORK_NEWS => (-18),
NETWORK_ICALENDAR => (-19),
NETWORK_PNUT => (-20),
Protocol::DFRN => (-1),
Protocol::ZOT => (-2),
Protocol::OSTATUS => (-3),
Protocol::FEED => (-4),
Protocol::DIASPORA => (-5),
Protocol::MAIL => (-6),
Protocol::FACEBOOK => (-8),
Protocol::LINKEDIN => (-9),
Protocol::XMPP => (-10),
Protocol::MYSPACE => (-11),
Protocol::GPLUS => (-12),
Protocol::PUMPIO => (-13),
Protocol::TWITTER => (-14),
Protocol::DIASPORA2 => (-15),
Protocol::STATUSNET => (-16),
Protocol::NEWS => (-18),
Protocol::ICALENDAR => (-19),
Protocol::PNUT => (-20),
NETWORK_PHANTOM => (-127),
Protocol::PHANTOM => (-127),
];
/**
@ -451,8 +337,9 @@ define('ACTIVITY_OBJ_QUESTION', 'http://activityschema.org/object/question');
* @{
*/
define('GRAVITY_PARENT', 0);
define('GRAVITY_LIKE', 3);
define('GRAVITY_ACTIVITY', 3);
define('GRAVITY_COMMENT', 6);
define('GRAVITY_UNKNOWN', 9);
/* @}*/
/**
@ -498,36 +385,6 @@ if (!defined("SIGTERM")) {
if (!defined('CURLE_OPERATION_TIMEDOUT')) {
define('CURLE_OPERATION_TIMEDOUT', CURLE_OPERATION_TIMEOUTED);
}
/**
* Reverse the effect of magic_quotes_gpc if it is enabled.
* Please disable magic_quotes_gpc so we don't have to do this.
* See http://php.net/manual/en/security.magicquotes.disabling.php
*/
function startup()
{
error_reporting(E_ERROR | E_WARNING | E_PARSE);
set_time_limit(0);
// This has to be quite large to deal with embedded private photos
ini_set('pcre.backtrack_limit', 500000);
if (get_magic_quotes_gpc()) {
$process = [&$_GET, &$_POST, &$_COOKIE, &$_REQUEST];
while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) {
unset($process[$key][$k]);
if (is_array($v)) {
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
} else {
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
}
}
/**
* @brief Retrieve the App structure
@ -538,14 +395,7 @@ function startup()
*/
function get_app()
{
global $a;
if (empty($a)) {
$a = new App(dirname(__DIR__));
BaseObject::setApp($a);
}
return $a;
return BaseObject::getApp();
}
/**
@ -706,7 +556,7 @@ function check_url(App $a)
// and www.example.com vs example.com.
// We will only change the url to an ip address if there is no existing setting
if (empty($url) || (!link_compare($url, System::baseUrl())) && (!preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/", $a->get_hostname))) {
if (empty($url) || (!link_compare($url, System::baseUrl())) && (!preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/", $a->get_hostname()))) {
Config::set('system', 'url', System::baseUrl());
}
@ -740,10 +590,17 @@ function update_db()
return;
}
// run the pre_update_nnnn functions in update.php
for ($x = $stored + 1; $x <= $current; $x++) {
$r = run_update_function($x, 'pre_update');
if (!$r) {
break;
}
}
Config::set('database', 'dbupdate_' . DB_UPDATE_VERSION, time());
// run update routine
// it update the structure in one call
// update the structure in one call
$retval = DBStructure::update(false, true);
if ($retval) {
DBStructure::updateFail(
@ -755,9 +612,9 @@ function update_db()
Config::set('database', 'dbupdate_' . DB_UPDATE_VERSION, 'success');
}
// run any left update_nnnn functions in update.php
// run the update_nnnn functions in update.php
for ($x = $stored + 1; $x <= $current; $x++) {
$r = run_update_function($x);
$r = run_update_function($x, 'update');
if (!$r) {
break;
}
@ -768,9 +625,11 @@ function update_db()
return;
}
function run_update_function($x)
function run_update_function($x, $prefix)
{
if (function_exists('update_' . $x)) {
$funcname = $prefix . '_' . $x;
if (function_exists($funcname)) {
// There could be a lot of processes running or about to run.
// We want exactly one process to run the update command.
// So store the fact that we're taking responsibility
@ -778,16 +637,14 @@ function run_update_function($x)
// If the update fails or times-out completely you may need to
// delete the config entry to try again.
$t = Config::get('database', 'update_' . $x);
$t = Config::get('database', $funcname);
if (!is_null($t)) {
return false;
}
Config::set('database', 'update_' . $x, time());
Config::set('database', $funcname, time());
// call the specific update
$func = 'update_' . $x;
$retval = $func();
$retval = $funcname();
if ($retval) {
//send the administrator an e-mail
@ -797,13 +654,21 @@ function run_update_function($x)
);
return false;
} else {
Config::set('database', 'update_' . $x, 'success');
Config::set('system', 'build', $x);
Config::set('database', $funcname, 'success');
if ($prefix == 'update') {
Config::set('system', 'build', $x);
}
return true;
}
} else {
Config::set('database', 'update_' . $x, 'success');
Config::set('system', 'build', $x);
Config::set('database', $funcname, 'success');
if ($prefix == 'update') {
Config::set('system', 'build', $x);
}
return true;
}
}
@ -811,7 +676,7 @@ function run_update_function($x)
/**
* @brief Synchronise addons:
*
* $a->config['system']['addon'] contains a comma-separated list of names
* system.addon contains a comma-separated list of names
* of addons which are used on this system.
* Go through the database list of already installed addons, and if we have
* an entry, but it isn't in the config list, call the uninstall procedure
@ -824,7 +689,7 @@ function run_update_function($x)
function check_addons(App $a)
{
$r = q("SELECT * FROM `addon` WHERE `installed` = 1");
if (DBM::is_result($r)) {
if (DBA::isResult($r)) {
$installed = $r;
} else {
$installed = [];
@ -864,28 +729,6 @@ function check_addons(App $a)
return;
}
function get_guid($size = 16, $prefix = '')
{
if (is_bool($prefix) && !$prefix) {
$prefix = '';
} elseif ($prefix == '') {
$a = get_app();
$prefix = hash('crc32', $a->get_hostname());
}
while (strlen($prefix) < ($size - 13)) {
$prefix .= mt_rand();
}
if ($size >= 24) {
$prefix = substr($prefix, 0, $size - 22);
return str_replace('.', '', uniqid($prefix, true));
} else {
$prefix = substr($prefix, 0, max($size - 13, 0));
return uniqid($prefix);
}
}
/**
* @brief Used to end the current process, after saving session state.
* @deprecated
@ -917,7 +760,7 @@ function goaway($path)
*/
function local_user()
{
if (x($_SESSION, 'authenticated') && x($_SESSION, 'uid')) {
if (!empty($_SESSION['authenticated']) && !empty($_SESSION['uid'])) {
return intval($_SESSION['uid']);
}
return false;
@ -960,6 +803,11 @@ function remote_user()
// if (local_user()) {
// return false;
// }
if (empty($_SESSION)) {
return false;
}
if (x($_SESSION, 'authenticated') && x($_SESSION, 'visitor_id')) {
return intval($_SESSION['visitor_id']);
}
@ -975,6 +823,10 @@ function remote_user()
*/
function notice($s)
{
if (empty($_SESSION)) {
return;
}
$a = get_app();
if (!x($_SESSION, 'sysmsg')) {
$_SESSION['sysmsg'] = [];
@ -1007,17 +859,6 @@ function info($s)
}
}
/**
* @brief Wrapper around config to limit the text length of an incoming message
*
* @return int
*/
function get_max_import_size()
{
$a = get_app();
return (x($a->config, 'max_import_size') ? $a->config['max_import_size'] : 0);
}
function feed_birthday($uid, $tz)
{
/**
@ -1042,13 +883,9 @@ function feed_birthday($uid, $tz)
$tz = 'UTC';
}
$p = q(
"SELECT `dob` FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1",
intval($uid)
);
if (DBM::is_result($p)) {
$tmp_dob = substr($p[0]['dob'], 5);
$profile = DBA::selectFirst('profile', ['dob'], ['is-default' => true, 'uid' => $uid]);
if (DBA::isResult($profile)) {
$tmp_dob = substr($profile['dob'], 5);
if (intval($tmp_dob)) {
$y = DateTimeFormat::timezoneNow($tz, 'Y');
$bd = $y . '-' . $tmp_dob . ' 00:00';
@ -1073,13 +910,11 @@ function is_site_admin()
{
$a = get_app();
$adminlist = explode(",", str_replace(" ", "", $a->config['admin_email']));
$admin_email = Config::get('config', 'admin_email');
//if(local_user() && x($a->user,'email') && x($a->config,'admin_email') && ($a->user['email'] === $a->config['admin_email']))
if (local_user() && x($a->user, 'email') && x($a->config, 'admin_email') && in_array($a->user['email'], $adminlist)) {
return true;
}
return false;
$adminlist = explode(',', str_replace(' ', '', $admin_email));
return local_user() && $admin_email && in_array(defaults($a->user, 'email', ''), $adminlist);
}
/**
@ -1155,7 +990,7 @@ function explode_querystring($query)
function curPageURL()
{
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {
if (!empty($_SERVER["HTTPS"]) && ($_SERVER["HTTPS"] == "on")) {
$pageURL .= "s";
}
@ -1173,7 +1008,7 @@ function random_digits($digits)
{
$rn = '';
for ($i = 0; $i < $digits; $i++) {
/// @TODO rand() is different to mt_rand() and maybe lesser "random"
/// @TODO Avoid rand/mt_rand, when it comes to cryptography, they are generating predictable (seedable) numbers.
$rn .= rand(0, 9);
}
return $rn;
@ -1187,7 +1022,7 @@ function get_server()
$server = "https://dir.friendica.social";
}
return($server);
return $server;
}
function get_temppath()
@ -1236,7 +1071,7 @@ function get_cachefile($file, $writemode = true)
$cache = get_itemcachepath();
if ((!$cache) || (!is_dir($cache))) {
return("");
return "";
}
$subfolder = $cache . "/" . substr($file, 0, 2);
@ -1250,7 +1085,6 @@ function get_cachefile($file, $writemode = true)
}
}
/// @TODO no need to put braces here
return $cachepath;
}
@ -1357,7 +1191,6 @@ function get_spoolpath()
return "";
}
if (!function_exists('exif_imagetype')) {
function exif_imagetype($file)
{
@ -1395,7 +1228,7 @@ function validate_include(&$file)
}
// Simply return flag
return ($valid);
return $valid;
}
function current_load()

View file

@ -13,18 +13,17 @@
"issues": "https://github.com/friendica/friendica/issues"
},
"require": {
"php": ">5.6",
"php": ">=5.6.1",
"ext-xml": "*",
"asika/simple-console": "^1.0",
"divineomega/password_exposed": "^2.4",
"ezyang/htmlpurifier": "~4.7.0",
"league/html-to-markdown": "~4.4.1",
"league/html-to-markdown": "~4.8.0",
"lightopenid/lightopenid": "dev-master",
"michelf/php-markdown": "^1.7",
"mobiledetect/mobiledetectlib": "2.8.*",
"paragonie/random_compat": "^2.0",
"pear/Text_LanguageDetect": "1.*",
"pear/Text_Highlighter": "dev-master",
"seld/cli-prompt": "^1.0",
"smarty/smarty": "^3.1",
"fxp/composer-asset-plugin": "~1.3",
@ -37,7 +36,8 @@
"npm-asset/jquery-datetimepicker": "^2.4.0",
"npm-asset/jgrowl": "^1.4",
"npm-asset/fullcalendar": "^3.0.1",
"npm-asset/cropperjs": "1.2.2"
"npm-asset/cropperjs": "1.2.2",
"npm-asset/imagesloaded": "4.1.4"
},
"repositories": [
{
@ -47,7 +47,8 @@
],
"autoload": {
"psr-4": {
"Friendica\\": "src/"
"Friendica\\": "src/",
"Friendica\\Test\\": "tests/"
},
"psr-0": {
"": "library/"
@ -68,5 +69,14 @@
"exclude": [
"log", "cache", "/photo", "/proxy"
]
},
"require-dev": {
"phpunit/dbunit": "^2.0",
"phpdocumentor/reflection-docblock": "^3.0.2",
"phpunit/php-token-stream": "^1.4.2",
"mikey179/vfsStream": "^1.6"
},
"scripts": {
"test": "phpunit"
}
}

1806
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "f97245142e60a521f048a667bec4e436",
"content-hash": "5f6a43237dc52758484cd21cd76e8ce6",
"packages": [
{
"name": "asika/simple-console",
@ -483,16 +483,16 @@
},
{
"name": "league/html-to-markdown",
"version": "4.4.1",
"version": "4.8.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/html-to-markdown.git",
"reference": "82ea375b5b2b1da1da222644c0565c695bf88186"
"reference": "f9a879a068c68ff47b722de63f58bec79e448f9d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/82ea375b5b2b1da1da222644c0565c695bf88186",
"reference": "82ea375b5b2b1da1da222644c0565c695bf88186",
"url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/f9a879a068c68ff47b722de63f58bec79e448f9d",
"reference": "f9a879a068c68ff47b722de63f58bec79e448f9d",
"shasum": ""
},
"require": {
@ -511,7 +511,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.5-dev"
"dev-master": "4.9-dev"
}
},
"autoload": {
@ -524,17 +524,17 @@
"MIT"
],
"authors": [
{
"name": "Colin O'Dell",
"email": "colinodell@gmail.com",
"homepage": "http://www.colinodell.com",
"role": "Lead Developer"
},
{
"name": "Nick Cernis",
"email": "nick@cern.is",
"homepage": "http://modernnerd.net",
"role": "Original Author"
},
{
"name": "Colin O'Dell",
"email": "colinodell@gmail.com",
"homepage": "https://www.colinodell.com",
"role": "Lead Developer"
}
],
"description": "An HTML-to-markdown conversion helper for PHP",
@ -543,7 +543,7 @@
"html",
"markdown"
],
"time": "2017-03-16T00:45:59+00:00"
"time": "2018-09-18T12:18:08+00:00"
},
{
"name": "lightopenid/lightopenid",
@ -770,6 +770,49 @@
],
"time": "2018-01-03T13:39:39+00:00"
},
{
"name": "npm-asset/ev-emitter",
"version": "1.1.1",
"dist": {
"type": "tar",
"url": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz",
"reference": null,
"shasum": "8f18b0ce5c76a5d18017f71c0a795c65b9138f2a"
},
"type": "npm-asset-library",
"extra": {
"npm-asset-bugs": {
"url": "https://github.com/metafizzy/ev-emitter/issues"
},
"npm-asset-main": "ev-emitter.js",
"npm-asset-directories": {
"test": "test"
},
"npm-asset-repository": {
"type": "git",
"url": "git+https://github.com/metafizzy/ev-emitter.git"
},
"npm-asset-scripts": {
"test": "mocha test/test"
}
},
"license": [
"MIT"
],
"authors": [
{
"name": "David DeSandro"
}
],
"description": "lil' event emitter",
"homepage": "https://github.com/metafizzy/ev-emitter#readme",
"keywords": [
"emitter",
"event",
"pubsub"
],
"time": "2017-07-06T13:46:38+00:00"
},
{
"name": "npm-asset/fullcalendar",
"version": "3.8.2",
@ -882,6 +925,70 @@
],
"time": "2018-01-30T23:49:01+00:00"
},
{
"name": "npm-asset/imagesloaded",
"version": "4.1.4",
"dist": {
"type": "tar",
"url": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-4.1.4.tgz",
"reference": null,
"shasum": "1376efcd162bb768c34c3727ac89cc04051f3cc7"
},
"require": {
"npm-asset/ev-emitter": ">=1.0.0,<2.0.0"
},
"require-dev": {
"npm-asset/chalk": ">=1.1.1,<2.0.0",
"npm-asset/cheerio": ">=0.19.0,<0.20.0",
"npm-asset/gulp": ">=3.9.0,<4.0.0",
"npm-asset/gulp-jshint": ">=1.11.2,<2.0.0",
"npm-asset/gulp-json-lint": ">=0.1.0,<0.2.0",
"npm-asset/gulp-rename": ">=1.2.2,<2.0.0",
"npm-asset/gulp-replace": ">=0.5.4,<0.6.0",
"npm-asset/gulp-requirejs-optimize": "dev-github:metafizzy/gulp-requirejs-optimize",
"npm-asset/gulp-uglify": ">=1.4.2,<2.0.0",
"npm-asset/gulp-util": ">=3.0.7,<4.0.0",
"npm-asset/highlight.js": ">=8.9.1,<9.0.0",
"npm-asset/marked": ">=0.3.5,<0.4.0",
"npm-asset/minimist": ">=1.2.0,<2.0.0",
"npm-asset/transfob": ">=1.0.0,<2.0.0"
},
"type": "npm-asset-library",
"extra": {
"npm-asset-bugs": {
"url": "https://github.com/desandro/imagesloaded/issues"
},
"npm-asset-main": "imagesloaded.js",
"npm-asset-directories": {
"test": "test"
},
"npm-asset-repository": {
"type": "git",
"url": "git://github.com/desandro/imagesloaded.git"
},
"npm-asset-scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
}
},
"license": [
"MIT"
],
"authors": [
{
"name": "David DeSandro"
}
],
"description": "JavaScript is all like _You images done yet or what?_",
"homepage": "https://github.com/desandro/imagesloaded",
"keywords": [
"dom",
"images",
"jquery-plugin",
"loaded",
"ui"
],
"time": "2018-01-02T16:56:03+00:00"
},
{
"name": "npm-asset/jgrowl",
"version": "1.4.6",
@ -1562,204 +1669,6 @@
],
"time": "2018-02-15T05:50:20+00:00"
},
{
"name": "pear/console_getopt",
"version": "v1.4.1",
"source": {
"type": "git",
"url": "https://github.com/pear/Console_Getopt.git",
"reference": "82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pear/Console_Getopt/zipball/82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f",
"reference": "82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f",
"shasum": ""
},
"type": "library",
"autoload": {
"psr-0": {
"Console": "./"
}
},
"notification-url": "https://packagist.org/downloads/",
"include-path": [
"./"
],
"license": [
"BSD-2-Clause"
],
"authors": [
{
"name": "Greg Beaver",
"email": "cellog@php.net",
"role": "Helper"
},
{
"name": "Andrei Zmievski",
"email": "andrei@php.net",
"role": "Lead"
},
{
"name": "Stig Bakken",
"email": "stig@php.net",
"role": "Developer"
}
],
"description": "More info available on: http://pear.php.net/package/Console_Getopt",
"time": "2015-07-20T20:28:12+00:00"
},
{
"name": "pear/pear-core-minimal",
"version": "v1.10.3",
"source": {
"type": "git",
"url": "https://github.com/pear/pear-core-minimal.git",
"reference": "070f0b600b2caca2501e2c9b7e553016e4b0d115"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/070f0b600b2caca2501e2c9b7e553016e4b0d115",
"reference": "070f0b600b2caca2501e2c9b7e553016e4b0d115",
"shasum": ""
},
"require": {
"pear/console_getopt": "~1.4",
"pear/pear_exception": "~1.0"
},
"replace": {
"rsky/pear-core-min": "self.version"
},
"type": "library",
"autoload": {
"psr-0": {
"": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"include-path": [
"src/"
],
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Christian Weiske",
"email": "cweiske@php.net",
"role": "Lead"
}
],
"description": "Minimal set of PEAR core files to be used as composer dependency",
"time": "2017-02-28T16:46:11+00:00"
},
{
"name": "pear/pear_exception",
"version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/pear/PEAR_Exception.git",
"reference": "8c18719fdae000b690e3912be401c76e406dd13b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/8c18719fdae000b690e3912be401c76e406dd13b",
"reference": "8c18719fdae000b690e3912be401c76e406dd13b",
"shasum": ""
},
"require": {
"php": ">=4.4.0"
},
"require-dev": {
"phpunit/phpunit": "*"
},
"type": "class",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-0": {
"PEAR": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"include-path": [
"."
],
"license": [
"BSD-2-Clause"
],
"authors": [
{
"name": "Helgi Thormar",
"email": "dufuz@php.net"
},
{
"name": "Greg Beaver",
"email": "cellog@php.net"
}
],
"description": "The PEAR Exception base class.",
"homepage": "https://github.com/pear/PEAR_Exception",
"keywords": [
"exception"
],
"time": "2015-02-10T20:07:52+00:00"
},
{
"name": "pear/text_highlighter",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/pear/Text_Highlighter.git",
"reference": "2ccac2d9eaf55dc08bbbdb7136c93fb399d0f855"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pear/Text_Highlighter/zipball/2ccac2d9eaf55dc08bbbdb7136c93fb399d0f855",
"reference": "2ccac2d9eaf55dc08bbbdb7136c93fb399d0f855",
"shasum": ""
},
"require": {
"pear/pear-core-minimal": "~1.10.0",
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "@stable"
},
"type": "library",
"autoload": {
"psr-0": {
"Text": "./"
}
},
"include-path": [
"./"
],
"license": [
"PHP-3.01"
],
"authors": [
{
"email": "ssttoo@gmail.com",
"name": "Stoyan Stefanov",
"role": "Lead"
},
{
"email": "demenev@gmail.com",
"name": "Andrey Demenev",
"role": "Lead"
}
],
"description": "More info available on: http://pear.php.net/package/Text_Highlighter",
"support": {
"issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Text_Highlighter",
"source": "https://github.com/pear/Text_Highlighter"
},
"time": "2018-01-27T08:24:15+00:00"
},
{
"name": "pear/text_languagedetect",
"version": "v1.0.0",
@ -2090,17 +1999,1484 @@
"time": "2016-12-14T21:57:25+00:00"
}
],
"packages-dev": [],
"packages-dev": [
{
"name": "doctrine/instantiator",
"version": "1.0.5",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
"reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
"reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
"shasum": ""
},
"require": {
"php": ">=5.3,<8.0-DEV"
},
"require-dev": {
"athletic/athletic": "~0.1.8",
"ext-pdo": "*",
"ext-phar": "*",
"phpunit/phpunit": "~4.0",
"squizlabs/php_codesniffer": "~2.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
"homepage": "http://ocramius.github.com/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
"homepage": "https://github.com/doctrine/instantiator",
"keywords": [
"constructor",
"instantiate"
],
"time": "2015-06-14T21:17:01+00:00"
},
{
"name": "mikey179/vfsStream",
"version": "v1.6.5",
"source": {
"type": "git",
"url": "https://github.com/mikey179/vfsStream.git",
"reference": "d5fec95f541d4d71c4823bb5e30cf9b9e5b96145"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mikey179/vfsStream/zipball/d5fec95f541d4d71c4823bb5e30cf9b9e5b96145",
"reference": "d5fec95f541d4d71c4823bb5e30cf9b9e5b96145",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "~4.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.6.x-dev"
}
},
"autoload": {
"psr-0": {
"org\\bovigo\\vfs\\": "src/main/php"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Frank Kleine",
"homepage": "http://frankkleine.de/",
"role": "Developer"
}
],
"description": "Virtual file system to mock the real file system in unit tests.",
"homepage": "http://vfs.bovigo.org/",
"time": "2017-08-01T08:02:14+00:00"
},
{
"name": "myclabs/deep-copy",
"version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
"reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
"reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0"
},
"require-dev": {
"doctrine/collections": "^1.0",
"doctrine/common": "^2.6",
"phpunit/phpunit": "^4.1"
},
"type": "library",
"autoload": {
"psr-4": {
"DeepCopy\\": "src/DeepCopy/"
},
"files": [
"src/DeepCopy/deep_copy.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Create deep copies (clones) of your objects",
"keywords": [
"clone",
"copy",
"duplicate",
"object",
"object graph"
],
"time": "2017-10-19T19:58:43+00:00"
},
{
"name": "phar-io/version",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/phar-io/version.git",
"reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
"reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0"
},
"type": "library",
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Arne Blankerts",
"email": "arne@blankerts.de",
"role": "Developer"
},
{
"name": "Sebastian Heuer",
"email": "sebastian@phpeople.de",
"role": "Developer"
},
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de",
"role": "Developer"
}
],
"description": "Library for handling version information and constraints",
"time": "2017-03-05T17:38:23+00:00"
},
{
"name": "phpdocumentor/reflection-common",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
"reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
"reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
"shasum": ""
},
"require": {
"php": ">=5.5"
},
"require-dev": {
"phpunit/phpunit": "^4.6"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": [
"src"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jaap van Otterdijk",
"email": "opensource@ijaap.nl"
}
],
"description": "Common reflection classes used by phpdocumentor to reflect the code structure",
"homepage": "http://www.phpdoc.org",
"keywords": [
"FQSEN",
"phpDocumentor",
"phpdoc",
"reflection",
"static analysis"
],
"time": "2017-09-11T18:02:19+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "3.3.2",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2",
"reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0",
"phpdocumentor/reflection-common": "^1.0.0",
"phpdocumentor/type-resolver": "^0.4.0",
"webmozart/assert": "^1.0"
},
"require-dev": {
"mockery/mockery": "^0.9.4",
"phpunit/phpunit": "^4.4"
},
"type": "library",
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mike van Riel",
"email": "me@mikevanriel.com"
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"time": "2017-11-10T14:09:06+00:00"
},
{
"name": "phpdocumentor/type-resolver",
"version": "0.4.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
"reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
"reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
"shasum": ""
},
"require": {
"php": "^5.5 || ^7.0",
"phpdocumentor/reflection-common": "^1.0"
},
"require-dev": {
"mockery/mockery": "^0.9.4",
"phpunit/phpunit": "^5.2||^4.8.24"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mike van Riel",
"email": "me@mikevanriel.com"
}
],
"time": "2017-07-14T14:27:02+00:00"
},
{
"name": "phpspec/prophecy",
"version": "1.7.6",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
"reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
"reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.0.2",
"php": "^5.3|^7.0",
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
"sebastian/comparator": "^1.1|^2.0|^3.0",
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
},
"require-dev": {
"phpspec/phpspec": "^2.5|^3.2",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7.x-dev"
}
},
"autoload": {
"psr-0": {
"Prophecy\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Konstantin Kudryashov",
"email": "ever.zet@gmail.com",
"homepage": "http://everzet.com"
},
{
"name": "Marcello Duarte",
"email": "marcello.duarte@gmail.com"
}
],
"description": "Highly opinionated mocking framework for PHP 5.3+",
"homepage": "https://github.com/phpspec/prophecy",
"keywords": [
"Double",
"Dummy",
"fake",
"mock",
"spy",
"stub"
],
"time": "2018-04-18T13:57:24+00:00"
},
{
"name": "phpunit/dbunit",
"version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/dbunit.git",
"reference": "5c35d74549c21ba55d0ea74ba89d191a51f8cf25"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/5c35d74549c21ba55d0ea74ba89d191a51f8cf25",
"reference": "5c35d74549c21ba55d0ea74ba89d191a51f8cf25",
"shasum": ""
},
"require": {
"ext-pdo": "*",
"ext-simplexml": "*",
"php": "^5.4 || ^7.0",
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0",
"symfony/yaml": "^2.1 || ^3.0"
},
"bin": [
"dbunit"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sb@sebastian-bergmann.de",
"role": "lead"
}
],
"description": "DbUnit port for PHP/PHPUnit to support database interaction testing.",
"homepage": "https://github.com/sebastianbergmann/dbunit/",
"keywords": [
"database",
"testing",
"xunit"
],
"time": "2016-12-02T14:39:14+00:00"
},
{
"name": "phpunit/php-code-coverage",
"version": "4.0.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
"reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-xmlwriter": "*",
"php": "^5.6 || ^7.0",
"phpunit/php-file-iterator": "^1.3",
"phpunit/php-text-template": "^1.2",
"phpunit/php-token-stream": "^1.4.2 || ^2.0",
"sebastian/code-unit-reverse-lookup": "^1.0",
"sebastian/environment": "^1.3.2 || ^2.0",
"sebastian/version": "^1.0 || ^2.0"
},
"require-dev": {
"ext-xdebug": "^2.1.4",
"phpunit/phpunit": "^5.7"
},
"suggest": {
"ext-xdebug": "^2.5.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.0.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sb@sebastian-bergmann.de",
"role": "lead"
}
],
"description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
"homepage": "https://github.com/sebastianbergmann/php-code-coverage",
"keywords": [
"coverage",
"testing",
"xunit"
],
"time": "2017-04-02T07:44:40+00:00"
},
{
"name": "phpunit/php-file-iterator",
"version": "1.4.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
"reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
"reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sb@sebastian-bergmann.de",
"role": "lead"
}
],
"description": "FilterIterator implementation that filters files based on a list of suffixes.",
"homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
"keywords": [
"filesystem",
"iterator"
],
"time": "2017-11-27T13:52:08+00:00"
},
{
"name": "phpunit/php-text-template",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-text-template.git",
"reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
"reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de",
"role": "lead"
}
],
"description": "Simple template engine.",
"homepage": "https://github.com/sebastianbergmann/php-text-template/",
"keywords": [
"template"
],
"time": "2015-06-21T13:50:34+00:00"
},
{
"name": "phpunit/php-timer",
"version": "1.0.9",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
"reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
"reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
"shasum": ""
},
"require": {
"php": "^5.3.3 || ^7.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sb@sebastian-bergmann.de",
"role": "lead"
}
],
"description": "Utility class for timing",
"homepage": "https://github.com/sebastianbergmann/php-timer/",
"keywords": [
"timer"
],
"time": "2017-02-26T11:10:40+00:00"
},
{
"name": "phpunit/php-token-stream",
"version": "1.4.12",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
"reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
"reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"php": ">=5.3.3"
},
"require-dev": {
"phpunit/phpunit": "~4.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
}
],
"description": "Wrapper around PHP's tokenizer extension.",
"homepage": "https://github.com/sebastianbergmann/php-token-stream/",
"keywords": [
"tokenizer"
],
"time": "2017-12-04T08:55:13+00:00"
},
{
"name": "phpunit/phpunit",
"version": "5.7.27",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
"reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-xml": "*",
"myclabs/deep-copy": "~1.3",
"php": "^5.6 || ^7.0",
"phpspec/prophecy": "^1.6.2",
"phpunit/php-code-coverage": "^4.0.4",
"phpunit/php-file-iterator": "~1.4",
"phpunit/php-text-template": "~1.2",
"phpunit/php-timer": "^1.0.6",
"phpunit/phpunit-mock-objects": "^3.2",
"sebastian/comparator": "^1.2.4",
"sebastian/diff": "^1.4.3",
"sebastian/environment": "^1.3.4 || ^2.0",
"sebastian/exporter": "~2.0",
"sebastian/global-state": "^1.1",
"sebastian/object-enumerator": "~2.0",
"sebastian/resource-operations": "~1.0",
"sebastian/version": "^1.0.6|^2.0.1",
"symfony/yaml": "~2.1|~3.0|~4.0"
},
"conflict": {
"phpdocumentor/reflection-docblock": "3.0.2"
},
"require-dev": {
"ext-pdo": "*"
},
"suggest": {
"ext-xdebug": "*",
"phpunit/php-invoker": "~1.1"
},
"bin": [
"phpunit"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.7.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de",
"role": "lead"
}
],
"description": "The PHP Unit Testing framework.",
"homepage": "https://phpunit.de/",
"keywords": [
"phpunit",
"testing",
"xunit"
],
"time": "2018-02-01T05:50:59+00:00"
},
{
"name": "phpunit/phpunit-mock-objects",
"version": "3.4.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
"reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
"reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.0.2",
"php": "^5.6 || ^7.0",
"phpunit/php-text-template": "^1.2",
"sebastian/exporter": "^1.2 || ^2.0"
},
"conflict": {
"phpunit/phpunit": "<5.4.0"
},
"require-dev": {
"phpunit/phpunit": "^5.4"
},
"suggest": {
"ext-soap": "*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.2.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sb@sebastian-bergmann.de",
"role": "lead"
}
],
"description": "Mock Object library for PHPUnit",
"homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
"keywords": [
"mock",
"xunit"
],
"time": "2017-06-30T09:13:00+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
"reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
"reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7 || ^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
}
],
"description": "Looks up which function or method a line of code belongs to",
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
"time": "2017-03-04T06:30:41+00:00"
},
{
"name": "sebastian/comparator",
"version": "1.2.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
"reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
"reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"sebastian/diff": "~1.2",
"sebastian/exporter": "~1.2 || ~2.0"
},
"require-dev": {
"phpunit/phpunit": "~4.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Jeff Welch",
"email": "whatthejeff@gmail.com"
},
{
"name": "Volker Dusch",
"email": "github@wallbash.com"
},
{
"name": "Bernhard Schussek",
"email": "bschussek@2bepublished.at"
},
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
}
],
"description": "Provides the functionality to compare PHP values for equality",
"homepage": "http://www.github.com/sebastianbergmann/comparator",
"keywords": [
"comparator",
"compare",
"equality"
],
"time": "2017-01-29T09:50:25+00:00"
},
{
"name": "sebastian/diff",
"version": "1.4.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
"reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
"reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
"shasum": ""
},
"require": {
"php": "^5.3.3 || ^7.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Kore Nordmann",
"email": "mail@kore-nordmann.de"
},
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
}
],
"description": "Diff implementation",
"homepage": "https://github.com/sebastianbergmann/diff",
"keywords": [
"diff"
],
"time": "2017-05-22T07:24:03+00:00"
},
{
"name": "sebastian/environment",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
"reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
"reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0"
},
"require-dev": {
"phpunit/phpunit": "^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
}
],
"description": "Provides functionality to handle HHVM/PHP environments",
"homepage": "http://www.github.com/sebastianbergmann/environment",
"keywords": [
"Xdebug",
"environment",
"hhvm"
],
"time": "2016-11-26T07:53:53+00:00"
},
{
"name": "sebastian/exporter",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
"reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
"reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"sebastian/recursion-context": "~2.0"
},
"require-dev": {
"ext-mbstring": "*",
"phpunit/phpunit": "~4.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Jeff Welch",
"email": "whatthejeff@gmail.com"
},
{
"name": "Volker Dusch",
"email": "github@wallbash.com"
},
{
"name": "Bernhard Schussek",
"email": "bschussek@2bepublished.at"
},
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
},
{
"name": "Adam Harvey",
"email": "aharvey@php.net"
}
],
"description": "Provides the functionality to export PHP variables for visualization",
"homepage": "http://www.github.com/sebastianbergmann/exporter",
"keywords": [
"export",
"exporter"
],
"time": "2016-11-19T08:54:04+00:00"
},
{
"name": "sebastian/global-state",
"version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
"reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
"reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"phpunit/phpunit": "~4.2"
},
"suggest": {
"ext-uopz": "*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
}
],
"description": "Snapshotting of global state",
"homepage": "http://www.github.com/sebastianbergmann/global-state",
"keywords": [
"global state"
],
"time": "2015-10-12T03:26:01+00:00"
},
{
"name": "sebastian/object-enumerator",
"version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
"reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
"reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
"shasum": ""
},
"require": {
"php": ">=5.6",
"sebastian/recursion-context": "~2.0"
},
"require-dev": {
"phpunit/phpunit": "~5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
}
],
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
"time": "2017-02-18T15:18:39+00:00"
},
{
"name": "sebastian/recursion-context",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
"reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
"reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"phpunit/phpunit": "~4.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Jeff Welch",
"email": "whatthejeff@gmail.com"
},
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
},
{
"name": "Adam Harvey",
"email": "aharvey@php.net"
}
],
"description": "Provides functionality to recursively process PHP variables",
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
"time": "2016-11-19T07:33:16+00:00"
},
{
"name": "sebastian/resource-operations",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/resource-operations.git",
"reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
"reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
"shasum": ""
},
"require": {
"php": ">=5.6.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
}
],
"description": "Provides a list of PHP built-in functions that operate on resources",
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
"time": "2015-07-28T20:34:47+00:00"
},
{
"name": "sebastian/version",
"version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
"reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
"reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
"shasum": ""
},
"require": {
"php": ">=5.6"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de",
"role": "lead"
}
],
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
"homepage": "https://github.com/sebastianbergmann/version",
"time": "2016-10-03T07:35:21+00:00"
},
{
"name": "symfony/yaml",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "a42f9da85c7c38d59f5e53f076fe81a091f894d0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/a42f9da85c7c38d59f5e53f076fe81a091f894d0",
"reference": "a42f9da85c7c38d59f5e53f076fe81a091f894d0",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8"
},
"conflict": {
"symfony/console": "<3.4"
},
"require-dev": {
"symfony/console": "~3.4|~4.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Yaml\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
"time": "2018-04-03T05:14:20+00:00"
},
{
"name": "webmozart/assert",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
"reference": "0df1908962e7a3071564e857d86874dad1ef204a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
"reference": "0df1908962e7a3071564e857d86874dad1ef204a",
"shasum": ""
},
"require": {
"php": "^5.3.3 || ^7.0"
},
"require-dev": {
"phpunit/phpunit": "^4.6",
"sebastian/version": "^1.0.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
}
},
"autoload": {
"psr-4": {
"Webmozart\\Assert\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Bernhard Schussek",
"email": "bschussek@gmail.com"
}
],
"description": "Assertions to validate method input/output with nice error messages.",
"keywords": [
"assert",
"check",
"validate"
],
"time": "2018-01-29T19:49:41+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"lightopenid/lightopenid": 20,
"pear/text_highlighter": 20
"lightopenid/lightopenid": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">5.6",
"php": ">=5.6.1",
"ext-xml": "*"
},
"platform-dev": []

View file

@ -0,0 +1,10 @@
<?php return <<<INI
; Copy this configuration file to addon.ini.php and edit it if you want to configure addons, see below example for the twitter addon
;[twitter]
;consumerkey = localhost
;consumersecret = mysqlusername
INI;
// Keep this line

408
config/config.ini.php Normal file
View file

@ -0,0 +1,408 @@
<?php return <<<INI
; CONFIG.INI.PHP
; This file declares the default values for the base config of Friendica.
; These configuration values aren't accessible from the admin settings page and custom values must be set in config/local.ini.php
; Please don't edit this file directly as its content may change in the upcoming versions.
[database]
; host (String)
; Hostname or IP address of the database server.
; Can contain the port number with the syntax "hostname:port".
hostname =
; user (String)
; Database user name. Please don't use "root".
username =
; pass (String)
; Database user password. Please don't use empty passwords.
password =
; base (String)
; Database name.
database =
; charset (String)
; Database connexion charset. Changing this value will likely corrupt special characters.
charset = utf8mb4
[config]
; admin_email (Comma-separated list)
; In order to perform system administration via the admin panel, this must precisely match the email address of the person logged in.
admin_email =
; admin_nickname (String)
; Nickname of the main admin user, used if there are more than one admin user defined in config.admin_email.
admin_nickname =
; max_import_size (Integer)
; Maximum body size of DFRN and Mail messages in characters. 0 is unlimited.
max_import_size = 200000
; php_path (String)
; Location of PHP command line processor.
php_path = php
[system]
; allowed_link_protocols (Array)
; Allowed protocols in links URLs, add at your own risk. http is always allowed.
allowed_link_protocols[0] = ftp
allowed_link_protocols[1] = ftps
allowed_link_protocols[2] = mailto
allowed_link_protocols[3] = cid
allowed_link_protocols[4] = gopher
; always_show_preview (Boolean)
; Only show small preview picures.
always_show_preview = false
; archival_days (Integer)
; Number of days that we try to deliver content before we archive a contact.
archival_days = 32
; auth_cookie_lifetime (Integer)
; Number of days that should pass without any activity before a user who chose "Remember me" when logging in is considered logged out.
auth_cookie_lifetime = 7
; block_local_dir (Boolean)
; Deny public access to the local user directory.
block_local_dir = false
; cache_driver (database|memcache|memcached|redis)
; Whether to use Memcache or Memcached or Redis to store temporary cache.
cache_driver = database
; config_adapter (jit|preload)
; Allow to switch the configuration adapter to improve performances at the cost of memory consumption.
config_adapter = jit
; curl_range_bytes (Integer)
; Maximum number of bytes that should be fetched. Default is 0, which mean "no limit".
curl_range_bytes = 0
; crawl_permit_period (Integer)
; Period in seconds between allowed searches when the number of free searches is reached and "permit_crawling" is activated.
crawl_permit_period = 60
; db_log (Path)
; Name of a logfile to log slow database queries.
db_log =
; db_log_index (Path)
; Name of a logfile to log queries with bad indexes.
db_log_index =
; db_log_index_watch (Comma-separated list)
; Watchlist of indexes to watch.
db_log_index_watch =
; db_log_index_blacklist (Comma-separated list)
; Blacklist of indexes that shouldn't be watched.
db_log_index_blacklist =
; db_loglimit (Integer)
; If a database call lasts longer than this value in seconds it is logged.
; Inactive if system.db_log is empty.
db_loglimit = 10
; db_loglimit_index (Integer)
; Number of index rows needed to be logged for indexes on the watchlist. 0 to disable.
db_loglimit_index = 0
; db_loglimit_index_high (Integer)
; Number of index rows to be logged anyway (for any index). 0 to disable.
db_loglimit_index_high = 0
; dbclean_expire_conversation (Integer)
; When DBClean is enabled, any entry in the conversation table will be deleted after this many days.
; These data are normally needed only for debugging purposes and they are safe to delete.
dbclean_expire_conversation = 90
; diaspora_test (Boolean)
; For development only. Disables the message transfer.
diaspora_test = false
; disable_email_validation (Boolean)
; Disables the check if a mail address is in a valid format and can be resolved via DNS.
disable_email_validation = false
; disable_url_validation (Boolean)
; Disables the DNS lookup of an URL.
disable_url_validation = false
; disable_password_exposed (Boolean)
; Disable the exposition check against the remote haveibeenpwned API on password change.
disable_password_exposed = false
; dlogfile (Path)
; location of the developer log file.
dlogfile =
; dlogip (String)
; restricts develop log writes to requests originating from this IP address.
dlogip =
; free_crawls (Integer)
; Number of "free" searches when system.permit_crawling is activated.
free_crawls = 10
; frontend_worker_timeout (Integer)
; Value in minutes after we think that a frontend task was killed by the webserver.
frontend_worker_timeout = 10
; groupedit_image_limit (Integer)
; Number of contacts at which the group editor should switch from display the profile pictures of the contacts to only display the names.
; This can alternatively be set on a per account basis in the pconfig table.
groupedit_image_limit = 400
; hsts (Boolean)
; Enables the sending of HTTP Strict Transport Security headers.
hsts = false
; ignore_cache (Boolean)
; For development only. Disables the item cache.
ignore_cache = false
; instances_social_key (String)
; Key to the API of https://instances.social which retrieves data about mastodon servers.
; See https://instances.social/api/token to get an API key.
instances_social_key =
; ipv4_resolve (Boolean)
; Resolve IPV4 addresses only. Don't resolve to IPV6.
ipv4_resolve = false
; invitation_only (Boolean)
; If set true registration is only possible after a current member of the node has send an invitation.
invitation_only = false
; like_no_comment (Boolean)
; Don't update the "commented" value of an item when it is liked.
like_no_comment = false
; local_block (Boolean)
; Used in conjunction with "block_public".
local_block = false
; local_search (Boolean)
; Blocks search for users who are not logged in to prevent crawlers from blocking your system.
local_search = false
; local_tags (Boolean)
; If activated, all hashtags will point to the local server.
local_tags = false
; max_batch_queue (Integer)
; Maximum number of batched queue items for a single contact before subsequent messages are discarded.
max_batch_queue = 1000
; max_connections (Integer)
; The maximum number of database connections which can be in use before the worker process is deferred to its next interval.
; When the system can't detect the maximum numbers of connection then this value can be used. Use 0 for auto-detection.
max_connections = 0
; max_connections_level (Integer 0-100)
; The maximum percentage of connections that are allowed to let the worker start.
max_connections_level = 75
; max_contact_queue (Integer)
; Maximum number of queue items for a single contact before subsequent messages are discarded.
max_contact_queue = 500
; max_image_length (Integer)
; An alternate way of limiting picture upload sizes.
; Specify the maximum pixel length that pictures are allowed to be (for non-square pictures, it will apply to the longest side).
; Pictures longer than this length will be resized to be this length (on the longest side, the other side will be scaled appropriately).
; If you don't want to set a maximum length, set to -1.
max_image_length = -1
; max_processes_backend (Integer)
; Maximum number of concurrent database processes for background tasks.
max_processes_backend = 5
; max_processes_frontend (Integer)
; Maximum number of concurrent database processes for foreground tasks.
max_processes_frontend = 20
; maximagesize (Integer)
; Maximum size in bytes of an uploaded photo.
maximagesize = 800000
; memcache_host (String)
; Host name of the memcache daemon.
memcache_host = 127.0.0.1
; memcache_port (Integer)
; Port number of the memcache daemon.
memcache_port = 11211
; memcached_hosts (Array)
; Array of Memcached servers info "host, port(, weight)".
memcached_hosts[0] = 127.0.0.1,11211
; min_poll_interval (Integer)
; minimal distance in minutes between two polls for a contact. Reasonable values are between 1 and 59.
min_poll_interval = 1
; no_count (Boolean)
; Don't do count calculations (currently only when showing albums).
no_count = false
; no_oembed (Boolean)
; Don't use OEmbed to fetch more information about a link.
no_oembed = false
; no_smilies (Boolean)
; Don't show smilies.
no_smilies = false
; no_view_full_size (Boolean)
; Don't add the link "View full size" under a resized image.
no_view_full_size = false
; optimize_items (Boolean)
; Triggers an SQL command to optimize the item table before expiring items.
optimize_items = false
; paranoia (Boolean)
; Log out users if their IP address changed.
paranoia = false
; permit_crawling (Boolean)
; Restricts the search for not logged in users to one search per minute.
permit_crawling = false
; pidfile (Path)
; Daemon pid file path. For example: pidfile = /path/to/daemon.pid
pidfile =
; png_quality (Integer)
; Sets the ImageMagick compression level for PNG images. Values ranges from 0 (uncompressed) to 9 (most compressed).
png_quality = 8
; profiler (Boolean)
; Enable internal timings to help optimize code. Needed for "rendertime" addon.
profiler = false
; proxy_cache_time (Integer)
; Period in seconds after which the cache is cleared.
proxy_cache_time = 86400
; pushpoll_frequency (Integer)
; Frequency of contact poll for subhub contact using the DFRM or OStatus network.
; Available values:
; - 5 = every month
; - 4 = every week
; - 3 = every day
; - 2 = twice a day
; - 1 = every hour
; - 0 = every minute
pushpoll_frequency = 3
; queue_no_dead_check (Boolean)
; Ignore if the target contact or server seems to be dead during queue delivery.
queue_no_dead_check = false
; redis_host (String)
; Host name of the redis daemon.
redis_host = 127.0.0.1
; redis_port (String)
; Port number of the redis daemon.
redis_port = 6379
; session_handler (database|cache|native)
; Whether to use Cache to store session data or to use PHP native session storage.
session_handler = database
; remove_multiplicated_lines (Boolean)
; If enabled, multiple linefeeds in items are stripped to a single one.
remove_multiplicated_lines = false
; sendmail_params (Boolean)
; Normal sendmail command parameters will be added when the PHP mail() function is called for sending e-mails.
; This ensures the Sender Email address setting is applied to the message envelope rather than the host's default address.
; Set to false if your non-sendmail agent is incompatible, or to restore old behavior of using the host address.
sendmail_params = true
; show_global_community_hint (Boolean)
; When the global community page is enabled, use this option to display a hint above the stream, that this is a collection of all public top-level postings that arrive on your node.
show_global_community_hint = false
; show_unsupported_addons (Boolean)
; Show all addons including the unsupported ones.
show_unsupported_addons = false
; show_unsupported_themes (Boolean)
; Show all themes including the unsupported ones.
show_unsupported_themes = false
; throttle_limit_day (Integer)
; Maximum number of posts that a user can send per day with the API. 0 to disable daily throttling.
throttle_limit_day = 0
; throttle_limit_week (Integer)
; Maximum number of posts that a user can send per week with the API. 0 to disable weekly throttling.
throttle_limit_week = 0
; throttle_limit_month (Integer)
; Maximum number of posts that a user can send per month with the API. 0 to disable monthly throttling.
throttle_limit_month = 0
; urlpath (String)
; If you are using a subdirectory of your domain you will need to put the relative path (from the root of your domain) here.
; For instance if your URL is 'http://example.com/directory/subdirectory', set urlpath to 'directory/subdirectory'.
urlpath =
; worker_cooldown (Integer)
; Cooldown period in seconds after each worker function call.
worker_cooldown = 0
; worker_debug (Boolean)
; If enabled, it prints out the number of running processes split by priority.
worker_debug = false
; worker_fetch_limit (Integer)
; Number of worker tasks that are fetched in a single query.
worker_fetch_limit = 1
; worker_load_exponent (Integer)
; Default 3, which allows only 25% of the maximum worker queues when server load reaches around 37% of maximum load.
; For a linear response where 25% of worker queues are allowed at 75% of maximum load, set this to 1.
; Setting 0 would allow maximum worker queues at all times, which is not recommended.
worker_load_exponent = 3
; xrd_timeout (Integer)
; Timeout in seconds for fetching the XRD links.
xrd_timeout = 20
[experimental]
; exp_themes (Boolean)
; Show experimental themes in user settings.
exp_themes = false
[theme]
; hide_eventlist (Boolean)
; Don't show the birthdays and events on the profile and network page.
hide_eventlist = false
[jabber]
; debug (Boolean)
; Enable debug level for the jabber account synchronisation.
debug = false
; lockpath (Path)
; Must be writable by the ejabberd process. if set then it will prevent the running of multiple processes.
lockpath =
INI;
// Keep this line

1282
config/dbstructure.json Normal file
View file

@ -0,0 +1,1282 @@
{
"addon": {
"comment": "registered addons",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": ""},
"name": {"type": "varchar(50)", "not null": "1", "default": "", "comment": "addon base (file)name"},
"version": {"type": "varchar(50)", "not null": "1", "default": "", "comment": "currently unused"},
"installed": {"type": "boolean", "not null": "1", "default": "0", "comment": "currently always 1"},
"hidden": {"type": "boolean", "not null": "1", "default": "0", "comment": "currently unused"},
"timestamp": {"type": "int unsigned", "not null": "1", "default": "0", "comment": "file timestamp to check for reloads"},
"plugin_admin": {"type": "boolean", "not null": "1", "default": "0", "comment": "1 = has admin config, 0 = has no admin config"}
},
"indexes": {
"PRIMARY": ["id"],
"name": ["UNIQUE", "name"]
}
},
"attach": {
"comment": "file attachments",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "generated index"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Owner User id"},
"hash": {"type": "varchar(64)", "not null": "1", "default": "", "comment": "hash"},
"filename": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "filename of original"},
"filetype": {"type": "varchar(64)", "not null": "1", "default": "", "comment": "mimetype"},
"filesize": {"type": "int unsigned", "not null": "1", "default": "0", "comment": "size in bytes"},
"data": {"type": "longblob", "not null": "1", "comment": "file data"},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "creation time"},
"edited": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "last edit time"},
"allow_cid": {"type": "mediumtext", "comment": "Access Control - list of allowed contact.id '<19><78>"},
"allow_gid": {"type": "mediumtext", "comment": "Access Control - list of allowed groups"},
"deny_cid": {"type": "mediumtext", "comment": "Access Control - list of denied contact.id"},
"deny_gid": {"type": "mediumtext", "comment": "Access Control - list of denied groups"}
},
"indexes": {
"PRIMARY": ["id"]
}
},
"auth_codes": {
"comment": "OAuth usage",
"fields": {
"id": {"type": "varchar(40)", "not null": "1", "primary": "1", "comment": ""},
"client_id": {"type": "varchar(20)", "not null": "1", "default": "", "relation": {"clients": "client_id"}, "comment": ""},
"redirect_uri": {"type": "varchar(200)", "not null": "1", "default": "", "comment": ""},
"expires": {"type": "int", "not null": "1", "default": "0", "comment": ""},
"scope": {"type": "varchar(250)", "not null": "1", "default": "", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"]
}
},
"cache": {
"comment": "Stores temporary data",
"fields": {
"k": {"type": "varbinary(255)", "not null": "1", "primary": "1", "comment": "cache key"},
"v": {"type": "mediumtext", "comment": "cached serialized value"},
"expires": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "datetime of cache expiration"},
"updated": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "datetime of cache insertion"}
},
"indexes": {
"PRIMARY": ["k"],
"k_expires": ["k", "expires"]
}
},
"challenge": {
"comment": "",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"challenge": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"dfrn-id": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"expire": {"type": "int unsigned", "not null": "1", "default": "0", "comment": ""},
"type": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"last_update": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"]
}
},
"clients": {
"comment": "OAuth usage",
"fields": {
"client_id": {"type": "varchar(20)", "not null": "1", "primary": "1", "comment": ""},
"pw": {"type": "varchar(20)", "not null": "1", "default": "", "comment": ""},
"redirect_uri": {"type": "varchar(200)", "not null": "1", "default": "", "comment": ""},
"name": {"type": "text", "comment": ""},
"icon": {"type": "text", "comment": ""},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"}
},
"indexes": {
"PRIMARY": ["client_id"]
}
},
"config": {
"comment": "main configuration storage",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": ""},
"cat": {"type": "varbinary(50)", "not null": "1", "default": "", "comment": ""},
"k": {"type": "varbinary(50)", "not null": "1", "default": "", "comment": ""},
"v": {"type": "mediumtext", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"cat_k": ["UNIQUE", "cat", "k"]
}
},
"contact": {
"comment": "contact table",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Owner User id"},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"self": {"type": "boolean", "not null": "1", "default": "0", "comment": "1 if the contact is the user him/her self"},
"remote_self": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"rel": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": "The kind of the relation between the user and the contact"},
"duplex": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"network": {"type": "char(4)", "not null": "1", "default": "", "comment": "Network protocol of the contact"},
"name": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "Name that this contact is known by"},
"nick": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "Nick- and user name of the contact"},
"location": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"about": {"type": "text", "comment": ""},
"keywords": {"type": "text", "comment": "public keywords (interests) of the contact"},
"gender": {"type": "varchar(32)", "not null": "1", "default": "", "comment": ""},
"xmpp": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"attag": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"avatar": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"photo": {"type": "varchar(255)", "default": "", "comment": "Link to the profile photo of the contact"},
"thumb": {"type": "varchar(255)", "default": "", "comment": "Link to the profile photo (thumb size)"},
"micro": {"type": "varchar(255)", "default": "", "comment": "Link to the profile photo (micro size)"},
"site-pubkey": {"type": "text", "comment": ""},
"issued-id": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"dfrn-id": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"url": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"nurl": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"addr": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"alias": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"pubkey": {"type": "text", "comment": "RSA public key 4096 bit"},
"prvkey": {"type": "text", "comment": "RSA private key 4096 bit"},
"batch": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"request": {"type": "varchar(255)", "comment": ""},
"notify": {"type": "varchar(255)", "comment": ""},
"poll": {"type": "varchar(255)", "comment": ""},
"confirm": {"type": "varchar(255)", "comment": ""},
"poco": {"type": "varchar(255)", "comment": ""},
"aes_allow": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"ret-aes": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"usehub": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"subhub": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"hub-verify": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"last-update": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Date of the last try to update the contact info"},
"success_update": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Date of the last successful contact update"},
"failure_update": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Date of the last failed update"},
"name-date": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"uri-date": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"avatar-date": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"term-date": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"last-item": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "date of the last post"},
"priority": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"blocked": {"type": "boolean", "not null": "1", "default": "1", "comment": ""},
"readonly": {"type": "boolean", "not null": "1", "default": "0", "comment": "posts of the contact are readonly"},
"writable": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"forum": {"type": "boolean", "not null": "1", "default": "0", "comment": "contact is a forum"},
"prv": {"type": "boolean", "not null": "1", "default": "0", "comment": "contact is a private group"},
"contact-type": {"type": "tinyint", "not null": "1", "default": "0", "comment": ""},
"hidden": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"archive": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"pending": {"type": "boolean", "not null": "1", "default": "1", "comment": ""},
"rating": {"type": "tinyint", "not null": "1", "default": "0", "comment": ""},
"reason": {"type": "text", "comment": ""},
"closeness": {"type": "tinyint unsigned", "not null": "1", "default": "99", "comment": ""},
"info": {"type": "mediumtext", "comment": ""},
"profile-id": {"type": "int unsigned", "not null": "1", "default": "0", "comment": ""},
"bdyear": {"type": "varchar(4)", "not null": "1", "default": "", "comment": ""},
"bd": {"type": "date", "not null": "1", "default": "0001-01-01", "comment": ""},
"notify_new_posts": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"fetch_further_information": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"ffi_keyword_blacklist": {"type": "text", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"uid_name": ["uid", "name(190)"],
"self_uid": ["self", "uid"],
"alias_uid": ["alias(32)", "uid"],
"pending_uid": ["pending", "uid"],
"blocked_uid": ["blocked", "uid"],
"uid_rel_network_poll": ["uid", "rel", "network", "poll(64)", "archive"],
"uid_network_batch": ["uid", "network", "batch(64)"],
"addr_uid": ["addr(32)", "uid"],
"nurl_uid": ["nurl(32)", "uid"],
"nick_uid": ["nick(32)", "uid"],
"dfrn-id": ["dfrn-id(64)"],
"issued-id": ["issued-id(64)"]
}
},
"conv": {
"comment": "private messages",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"guid": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "A unique identifier for this conversation"},
"recips": {"type": "text", "comment": "sender_handle;recipient_handle"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Owner User id"},
"creator": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "handle of creator"},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "creation timestamp"},
"updated": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "edited timestamp"},
"subject": {"type": "text", "comment": "subject of initial message"}
},
"indexes": {
"PRIMARY": ["id"],
"uid": ["uid"]
}
},
"conversation": {
"comment": "Raw data and structure information for messages",
"fields": {
"item-uri": {"type": "varbinary(255)", "not null": "1", "primary": "1", "comment": "Original URI of the item - unrelated to the table with the same name"},
"reply-to-uri": {"type": "varbinary(255)", "not null": "1", "default": "", "comment": "URI to which this item is a reply"},
"conversation-uri": {"type": "varbinary(255)", "not null": "1", "default": "", "comment": "GNU Social conversation URI"},
"conversation-href": {"type": "varbinary(255)", "not null": "1", "default": "", "comment": "GNU Social conversation link"},
"protocol": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": "The protocol of the item"},
"source": {"type": "mediumtext", "comment": "Original source"},
"received": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Receiving date"}
},
"indexes": {
"PRIMARY": ["item-uri"],
"conversation-uri": ["conversation-uri"],
"received": ["received"]
}
},
"event": {
"comment": "Events",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"guid": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Owner User id"},
"cid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": "contact_id (ID of the contact in contact table)"},
"uri": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "creation time"},
"edited": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "last edit time"},
"start": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "event start time"},
"finish": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "event end time"},
"summary": {"type": "text", "comment": "short description or title of the event"},
"desc": {"type": "text", "comment": "event description"},
"location": {"type": "text", "comment": "event location"},
"type": {"type": "varchar(20)", "not null": "1", "default": "", "comment": "event or birthday"},
"nofinish": {"type": "boolean", "not null": "1", "default": "0", "comment": "if event does have no end this is 1"},
"adjust": {"type": "boolean", "not null": "1", "default": "1", "comment": "adjust to timezone of the recipient (0 or 1)"},
"ignore": {"type": "boolean", "not null": "1", "default": "0", "comment": "0 or 1"},
"allow_cid": {"type": "mediumtext", "comment": "Access Control - list of allowed contact.id '<19><78>'"},
"allow_gid": {"type": "mediumtext", "comment": "Access Control - list of allowed groups"},
"deny_cid": {"type": "mediumtext", "comment": "Access Control - list of denied contact.id"},
"deny_gid": {"type": "mediumtext", "comment": "Access Control - list of denied groups"}
},
"indexes": {
"PRIMARY": ["id"],
"uid_start": ["uid", "start"]
}
},
"fcontact": {
"comment": "Diaspora compatible contacts - used in the Diaspora implementation",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"guid": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "unique id"},
"url": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"name": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"photo": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"request": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"nick": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"addr": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"batch": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"notify": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"poll": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"confirm": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"priority": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"network": {"type": "char(4)", "not null": "1", "default": "", "comment": ""},
"alias": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"pubkey": {"type": "text", "comment": ""},
"updated": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"addr": ["addr(32)"],
"url": ["UNIQUE", "url(190)"]
}
},
"fsuggest": {
"comment": "friend suggestion stuff",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": ""},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"cid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": ""},
"name": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"url": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"request": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"photo": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"note": {"type": "text", "comment": ""},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"]
}
},
"gcign": {
"comment": "contacts ignored by friend suggestions",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Local User id"},
"gcid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"gcontact": "id"}, "comment": "gcontact.id of ignored contact"}
},
"indexes": {
"PRIMARY": ["id"],
"uid": ["uid"],
"gcid": ["gcid"]
}
},
"gcontact": {
"comment": "global contacts",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"name": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "Name that this contact is known by"},
"nick": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "Nick- and user name of the contact"},
"url": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "Link to the contacts profile page"},
"nurl": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"photo": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "Link to the profile photo"},
"connect": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"updated": {"type": "datetime", "default": "0001-01-01 00:00:00", "comment": ""},
"last_contact": {"type": "datetime", "default": "0001-01-01 00:00:00", "comment": ""},
"last_failure": {"type": "datetime", "default": "0001-01-01 00:00:00", "comment": ""},
"location": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"about": {"type": "text", "comment": ""},
"keywords": {"type": "text", "comment": "puplic keywords (interests)"},
"gender": {"type": "varchar(32)", "not null": "1", "default": "", "comment": ""},
"birthday": {"type": "varchar(32)", "not null": "1", "default": "0001-01-01", "comment": ""},
"community": {"type": "boolean", "not null": "1", "default": "0", "comment": "1 if contact is forum account"},
"contact-type": {"type": "tinyint", "not null": "1", "default": "-1", "comment": ""},
"hide": {"type": "boolean", "not null": "1", "default": "0", "comment": "1 = should be hidden from search"},
"nsfw": {"type": "boolean", "not null": "1", "default": "0", "comment": "1 = contact posts nsfw content"},
"network": {"type": "char(4)", "not null": "1", "default": "", "comment": "social network protocol"},
"addr": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"notify": {"type": "varchar(255)", "comment": ""},
"alias": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"generation": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"server_url": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "baseurl of the contacts server"}
},
"indexes": {
"PRIMARY": ["id"],
"nurl": ["UNIQUE", "nurl(190)"],
"name": ["name(64)"],
"nick": ["nick(32)"],
"addr": ["addr(64)"],
"hide_network_updated": ["hide", "network", "updated"],
"updated": ["updated"]
}
},
"glink": {
"comment": "'friends of friends' linkages derived from poco",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"cid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": ""},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"gcid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"gcontact": "id"}, "comment": ""},
"zcid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"gcontact": "id"}, "comment": ""},
"updated": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"cid_uid_gcid_zcid": ["UNIQUE", "cid", "uid", "gcid", "zcid"],
"gcid": ["gcid"]
}
},
"group": {
"comment": "privacy groups, group info",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Owner User id"},
"visible": {"type": "boolean", "not null": "1", "default": "0", "comment": "1 indicates the member list is not private"},
"deleted": {"type": "boolean", "not null": "1", "default": "0", "comment": "1 indicates the group has been deleted"},
"name": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "human readable name of group"}
},
"indexes": {
"PRIMARY": ["id"],
"uid": ["uid"]
}
},
"group_member": {
"comment": "privacy groups, member info",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"gid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"group": "id"}, "comment": "groups.id of the associated group"},
"contact-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": "contact.id of the member assigned to the associated group"}
},
"indexes": {
"PRIMARY": ["id"],
"contactid": ["contact-id"],
"gid_contactid": ["UNIQUE", "gid", "contact-id"]
}
},
"gserver": {
"comment": "Global servers",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"url": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"nurl": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"version": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"site_name": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"info": {"type": "text", "comment": ""},
"register_policy": {"type": "tinyint", "not null": "1", "default": "0", "comment": ""},
"registered-users": {"type": "int unsigned", "not null": "1", "default": "0", "comment": "Number of registered users"},
"poco": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"noscrape": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"network": {"type": "char(4)", "not null": "1", "default": "", "comment": ""},
"platform": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"relay-subscribe": {"type": "boolean", "not null": "1", "default": "0", "comment": "Has the server subscribed to the relay system"},
"relay-scope": {"type": "varchar(10)", "not null": "1", "default": "", "comment": "The scope of messages that the server wants to get"},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"last_poco_query": {"type": "datetime", "default": "0001-01-01 00:00:00", "comment": ""},
"last_contact": {"type": "datetime", "default": "0001-01-01 00:00:00", "comment": ""},
"last_failure": {"type": "datetime", "default": "0001-01-01 00:00:00", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"nurl": ["UNIQUE", "nurl(190)"]
}
},
"gserver-tag": {
"comment": "Tags that the server has subscribed",
"fields": {
"gserver-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"gserver": "id"}, "primary": "1", "comment": "The id of the gserver"},
"tag": {"type": "varchar(100)", "not null": "1", "default": "", "primary": "1", "comment": "Tag that the server has subscribed"}
},
"indexes": {
"PRIMARY": ["gserver-id", "tag"],
"tag": ["tag"]
}
},
"hook": {
"comment": "addon hook registry",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"hook": {"type": "varbinary(100)", "not null": "1", "default": "", "comment": "name of hook"},
"file": {"type": "varbinary(200)", "not null": "1", "default": "", "comment": "relative filename of hook handler"},
"function": {"type": "varbinary(200)", "not null": "1", "default": "", "comment": "function name of hook handler"},
"priority": {"type": "smallint unsigned", "not null": "1", "default": "0", "comment": "not yet implemented - can be used to sort conflicts in hook handling by calling handlers in priority order"}
},
"indexes": {
"PRIMARY": ["id"],
"hook_file_function": ["UNIQUE", "hook", "file", "function"]
}
},
"intro": {
"comment": "",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"fid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"fcontact": "id"}, "comment": ""},
"contact-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": ""},
"knowyou": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"duplex": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"note": {"type": "text", "comment": ""},
"hash": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"datetime": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"blocked": {"type": "boolean", "not null": "1", "default": "1", "comment": ""},
"ignore": {"type": "boolean", "not null": "1", "default": "0", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"]
}
},
"item": {
"comment": "Structure for all posts",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "relation": {"thread": "iid"}},
"guid": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "A unique identifier for this item"},
"uri": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"uri-id": {"type": "int unsigned", "relation": {"item-uri": "id"}, "comment": "Id of the item-uri table entry that contains the item uri"},
"uri-hash": {"type": "varchar(80)", "not null": "1", "default": "", "comment": "RIPEMD-128 hash from uri"},
"parent": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"item": "id"}, "comment": "item.id of the parent to this item if it is a reply of some form; otherwise this must be set to the id of this item"},
"parent-uri": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "uri of the parent to this item"},
"parent-uri-id": {"type": "int unsigned", "relation": {"item-uri": "id"}, "comment": "Id of the item-uri table that contains the parent uri"},
"thr-parent": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "If the parent of this item is not the top-level item in the conversation, the uri of the immediate parent; otherwise set to parent-uri"},
"thr-parent-id": {"type": "int unsigned", "relation": {"item-uri": "id"}, "comment": "Id of the item-uri table that contains the thread parent uri"},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Creation timestamp."},
"edited": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Date of last edit (default is created)"},
"commented": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Date of last comment/reply to this item"},
"received": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "datetime"},
"changed": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Date that something in the conversation changed, indicating clients should fetch the conversation again"},
"gravity": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"network": {"type": "char(4)", "not null": "1", "default": "", "comment": "Network from where the item comes from"},
"owner-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": "Link to the contact table with uid=0 of the owner of this item"},
"author-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": "Link to the contact table with uid=0 of the author of this item"},
"icid": {"type": "int unsigned", "relation": {"item-content": "id"}, "comment": "Id of the item-content table entry that contains the whole item content"},
"iaid": {"type": "int unsigned", "relation": {"item-activity": "id"}, "comment": "Id of the item-activity table entry that contains the activity data"},
"extid": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"post-type": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": "Post type (personal note, bookmark, ...)"},
"global": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"private": {"type": "boolean", "not null": "1", "default": "0", "comment": "distribution is restricted"},
"visible": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"moderated": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"deleted": {"type": "boolean", "not null": "1", "default": "0", "comment": "item has been deleted"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Owner id which owns this copy of the item"},
"contact-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": "contact.id"},
"wall": {"type": "boolean", "not null": "1", "default": "0", "comment": "This item was posted to the wall of uid"},
"origin": {"type": "boolean", "not null": "1", "default": "0", "comment": "item originated at this site"},
"pubmail": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"starred": {"type": "boolean", "not null": "1", "default": "0", "comment": "item has been favourited"},
"unseen": {"type": "boolean", "not null": "1", "default": "1", "comment": "item has not been seen"},
"mention": {"type": "boolean", "not null": "1", "default": "0", "comment": "The owner of this item was mentioned in it"},
"forum_mode": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"psid": {"type": "int unsigned", "relation": {"permissionset": "id"}, "comment": "ID of the permission set of this post"},
"resource-id": {"type": "varchar(32)", "not null": "1", "default": "", "comment": "Used to link other tables to items, it identifies the linked resource (e.g. photo) and if set must also set resource_type"},
"event-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"event": "id"}, "comment": "Used to link to the event.id"},
"attach": {"type": "mediumtext", "comment": "JSON structure representing attachments to this item"},
"allow_cid": {"type": "mediumtext", "comment": "Deprecated"},
"allow_gid": {"type": "mediumtext", "comment": "Deprecated"},
"deny_cid": {"type": "mediumtext", "comment": "Deprecated"},
"deny_gid": {"type": "mediumtext", "comment": "Deprecated"},
"postopts": {"type": "text", "comment": "Deprecated"},
"inform": {"type": "mediumtext", "comment": "Deprecated"},
"type": {"type": "varchar(20)", "comment": "Deprecated"},
"bookmark": {"type": "boolean", "comment": "Deprecated"},
"file": {"type": "mediumtext", "comment": "Deprecated"},
"location": {"type": "varchar(255)", "comment": "Deprecated"},
"coord": {"type": "varchar(255)", "comment": "Deprecated"},
"tag": {"type": "mediumtext", "comment": "Deprecated"},
"plink": {"type": "varchar(255)", "comment": "Deprecated"},
"title": {"type": "varchar(255)", "comment": "Deprecated"},
"content-warning": {"type": "varchar(255)", "comment": "Deprecated"},
"body": {"type": "mediumtext", "comment": "Deprecated"},
"app": {"type": "varchar(255)", "comment": "Deprecated"},
"verb": {"type": "varchar(100)", "comment": "Deprecated"},
"object-type": {"type": "varchar(100)", "comment": "Deprecated"},
"object": {"type": "text", "comment": "Deprecated"},
"target-type": {"type": "varchar(100)", "comment": "Deprecated"},
"target": {"type": "text", "comment": "Deprecated"},
"author-name": {"type": "varchar(255)", "comment": "Deprecated"},
"author-link": {"type": "varchar(255)", "comment": "Deprecated"},
"author-avatar": {"type": "varchar(255)", "comment": "Deprecated"},
"owner-name": {"type": "varchar(255)", "comment": "Deprecated"},
"owner-link": {"type": "varchar(255)", "comment": "Deprecated"},
"owner-avatar": {"type": "varchar(255)", "comment": "Deprecated"},
"rendered-hash": {"type": "varchar(32)", "comment": "Deprecated"},
"rendered-html": {"type": "mediumtext", "comment": "Deprecated"}
},
"indexes": {
"PRIMARY": ["id"],
"guid": ["guid(191)"],
"uri": ["uri(191)"],
"parent": ["parent"],
"parent-uri": ["parent-uri(191)"],
"extid": ["extid(191)"],
"uid_id": ["uid", "id"],
"uid_contactid_id": ["uid", "contact-id", "id"],
"uid_created": ["uid", "created"],
"uid_commented": ["uid", "commented"],
"uid_unseen_contactid": ["uid", "unseen", "contact-id"],
"uid_network_received": ["uid", "network", "received"],
"uid_network_commented": ["uid", "network", "commented"],
"uid_thrparent": ["uid", "thr-parent(190)"],
"uid_parenturi": ["uid", "parent-uri(190)"],
"uid_contactid_created": ["uid", "contact-id", "created"],
"authorid_created": ["author-id", "created"],
"ownerid": ["owner-id"],
"uid_uri": ["uid", "uri(190)"],
"resource-id": ["resource-id"],
"deleted_changed": ["deleted", "changed"],
"uid_wall_changed": ["uid", "wall", "changed"],
"uid_eventid": ["uid", "event-id"],
"icid": ["icid"],
"iaid": ["iaid"],
"psid_wall": ["psid", "wall"]
}
},
"item-activity": {
"comment": "Activities for items",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "relation": {"thread": "iid"}},
"uri": {"type": "varchar(255)", "comment": ""},
"uri-id": {"type": "int unsigned", "relation": {"item-uri": "id"}, "comment": "Id of the item-uri table entry that contains the item uri"},
"uri-hash": {"type": "varchar(80)", "not null": "1", "default": "", "comment": "RIPEMD-128 hash from uri"},
"activity": {"type": "smallint unsigned", "not null": "1", "default": "0", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"uri-hash": ["UNIQUE", "uri-hash"],
"uri": ["uri(191)"]
}
},
"item-content": {
"comment": "Content for all posts",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "relation": {"thread": "iid"}},
"uri": {"type": "varchar(255)", "comment": ""},
"uri-id": {"type": "int unsigned", "relation": {"item-uri": "id"}, "comment": "Id of the item-uri table entry that contains the item uri"},
"uri-plink-hash": {"type": "varchar(80)", "not null": "1", "default": "", "comment": "RIPEMD-128 hash from uri"},
"title": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "item title"},
"content-warning": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"body": {"type": "mediumtext", "comment": "item body content"},
"location": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "text location where this item originated"},
"coord": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "longitude/latitude pair representing location where this item originated"},
"language": {"type": "text", "comment": "Language information about this post"},
"app": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "application which generated this item"},
"rendered-hash": {"type": "varchar(32)", "not null": "1", "default": "", "comment": ""},
"rendered-html": {"type": "mediumtext", "comment": "item.body converted to html"},
"object-type": {"type": "varchar(100)", "not null": "1", "default": "", "comment": "ActivityStreams object type"},
"object": {"type": "text", "comment": "JSON encoded object structure unless it is an implied object (normal post)"},
"target-type": {"type": "varchar(100)", "not null": "1", "default": "", "comment": "ActivityStreams target type if applicable (URI)"},
"target": {"type": "text", "comment": "JSON encoded target structure if used"},
"plink": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "permalink or URL to a displayable copy of the message at its source"},
"verb": {"type": "varchar(100)", "not null": "1", "default": "", "comment": "ActivityStreams verb"}
},
"indexes": {
"PRIMARY": ["id"],
"uri-plink-hash": ["UNIQUE", "uri-plink-hash"],
"uri": ["uri(191)"]
}
},
"item-delivery-data": {
"comment": "Delivery data for items",
"fields": {
"iid": {"type": "int unsigned", "not null": "1", "primary": "1", "relation": {"item": "id"}, "comment": "Item id"},
"postopts": {"type": "text", "comment": "External post connectors add their network name to this comma-separated string to identify that they should be delivered to these networks during delivery"},
"inform": {"type": "mediumtext", "comment": "Additional receivers of the linked item"}
},
"indexes": {
"PRIMARY": ["iid"]
}
},
"item-uri": {
"comment": "URI and GUID for items",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1"},
"uri": {"type": "varbinary(255)", "not null": "1", "comment": "URI of an item"},
"guid": {"type": "varbinary(255)", "comment": "A unique identifier for an item"}
},
"indexes": {
"PRIMARY": ["id"],
"uri": ["UNIQUE", "uri"],
"guid": ["guid"]
}
},
"locks": {
"comment": "",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"name": {"type": "varchar(128)", "not null": "1", "default": "", "comment": ""},
"locked": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"pid": {"type": "int unsigned", "not null": "1", "default": "0", "comment": "Process ID"},
"expires": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "datetime of cache expiration"}
},
"indexes": {
"PRIMARY": ["id"],
"name_expires": ["name", "expires"]
}
},
"mail": {
"comment": "private messages",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Owner User id"},
"guid": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "A unique identifier for this private message"},
"from-name": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "name of the sender"},
"from-photo": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "contact photo link of the sender"},
"from-url": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "profile linke of the sender"},
"contact-id": {"type": "varchar(255)", "not null": "1", "default": "", "relation": {"contact": "id"}, "comment": "contact.id"},
"convid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"conv": "id"}, "comment": "conv.id"},
"title": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"body": {"type": "mediumtext", "comment": ""},
"seen": {"type": "boolean", "not null": "1", "default": "0", "comment": "if message visited it is 1"},
"reply": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"replied": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"unknown": {"type": "boolean", "not null": "1", "default": "0", "comment": "if sender not in the contact table this is 1"},
"uri": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"parent-uri": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "creation time of the private message"}
},
"indexes": {
"PRIMARY": ["id"],
"uid_seen": ["uid", "seen"],
"convid": ["convid"],
"uri": ["uri(64)"],
"parent-uri": ["parent-uri(64)"],
"contactid": ["contact-id(32)"]
}
},
"mailacct": {
"comment": "Mail account data for fetching mails",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"server": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"port": {"type": "smallint unsigned", "not null": "1", "default": "0", "comment": ""},
"ssltype": {"type": "varchar(16)", "not null": "1", "default": "", "comment": ""},
"mailbox": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"user": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"pass": {"type": "text", "comment": ""},
"reply_to": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"action": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"movetofolder": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"pubmail": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"last_check": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"]
}
},
"manage": {
"comment": "table of accounts that can manage each other",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"mid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"}
},
"indexes": {
"PRIMARY": ["id"],
"uid_mid": ["UNIQUE", "uid", "mid"]
}
},
"notify": {
"comment": "notifications",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"hash": {"type": "varchar(64)", "not null": "1", "default": "", "comment": ""},
"type": {"type": "smallint unsigned", "not null": "1", "default": "0", "comment": ""},
"name": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"url": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"photo": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"date": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"msg": {"type": "mediumtext", "comment": ""},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Owner User id"},
"link": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"iid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"item": "id"}, "comment": "item.id"},
"parent": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"item": "id"}, "comment": ""},
"seen": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"verb": {"type": "varchar(100)", "not null": "1", "default": "", "comment": ""},
"otype": {"type": "varchar(10)", "not null": "1", "default": "", "comment": ""},
"name_cache": {"type": "tinytext", "comment": "Cached bbcode parsing of name"},
"msg_cache": {"type": "mediumtext", "comment": "Cached bbcode parsing of msg"}
},
"indexes": {
"PRIMARY": ["id"],
"hash_uid": ["hash", "uid"],
"seen_uid_date": ["seen", "uid", "date"],
"uid_date": ["uid", "date"],
"uid_type_link": ["uid", "type", "link(190)"]
}
},
"notify-threads": {
"comment": "",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"notify-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"notify": "id"}, "comment": ""},
"master-parent-item": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"item": "id"}, "comment": ""},
"parent-item": {"type": "int unsigned", "not null": "1", "default": "0", "comment": ""},
"receiver-uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"}
},
"indexes": {
"PRIMARY": ["id"]
}
},
"oembed": {
"comment": "cache for OEmbed queries",
"fields": {
"url": {"type": "varbinary(255)", "not null": "1", "primary": "1", "comment": "page url"},
"maxwidth": {"type": "mediumint unsigned", "not null": "1", "primary": "1", "comment": "Maximum width passed to Oembed"},
"content": {"type": "mediumtext", "comment": "OEmbed data of the page"},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "datetime of creation"}
},
"indexes": {
"PRIMARY": ["url", "maxwidth"],
"created": ["created"]
}
},
"openwebauth-token": {
"comment": "Store OpenWebAuth token to verify contacts",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"type": {"type": "varchar(32)", "not null": "1", "default": "", "comment": "Verify type"},
"token": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "A generated token"},
"meta": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "datetime of creation"}
},
"indexes": {
"PRIMARY": ["id"]
}
},
"parsed_url": {
"comment": "cache for 'parse_url' queries",
"fields": {
"url": {"type": "varbinary(255)", "not null": "1", "primary": "1", "comment": "page url"},
"guessing": {"type": "boolean", "not null": "1", "default": "0", "primary": "1", "comment": "is the 'guessing' mode active?"},
"oembed": {"type": "boolean", "not null": "1", "default": "0", "primary": "1", "comment": "is the data the result of oembed?"},
"content": {"type": "mediumtext", "comment": "page data"},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "datetime of creation"}
},
"indexes": {
"PRIMARY": ["url", "guessing", "oembed"],
"created": ["created"]
}
},
"participation": {
"comment": "Storage for participation messages from Diaspora",
"fields": {
"iid": {"type": "int unsigned", "not null": "1", "primary": "1", "relation": {"item": "id"}, "comment": ""},
"server": {"type": "varchar(60)", "not null": "1", "primary": "1", "comment": ""},
"cid": {"type": "int unsigned", "not null": "1", "relation": {"contact": "id"}, "comment": ""},
"fid": {"type": "int unsigned", "not null": "1", "relation": {"fcontact": "id"}, "comment": ""}
},
"indexes": {
"PRIMARY": ["iid", "server"]
}
},
"pconfig": {
"comment": "personal (per user) configuration storage",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": ""},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"cat": {"type": "varbinary(50)", "not null": "1", "default": "", "comment": ""},
"k": {"type": "varbinary(100)", "not null": "1", "default": "", "comment": ""},
"v": {"type": "mediumtext", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"uid_cat_k": ["UNIQUE", "uid", "cat", "k"]
}
},
"permissionset": {
"comment": "",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Owner id of this permission set"},
"allow_cid": {"type": "mediumtext", "comment": "Access Control - list of allowed contact.id '<19><78>'"},
"allow_gid": {"type": "mediumtext", "comment": "Access Control - list of allowed groups"},
"deny_cid": {"type": "mediumtext", "comment": "Access Control - list of denied contact.id"},
"deny_gid": {"type": "mediumtext", "comment": "Access Control - list of denied groups"}
},
"indexes": {
"PRIMARY": ["id"],
"uid_allow_cid_allow_gid_deny_cid_deny_gid": ["allow_cid(50)", "allow_gid(30)", "deny_cid(50)", "deny_gid(30)"]
}
},
"photo": {
"comment": "photo storage",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Owner User id"},
"contact-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": "contact.id"},
"guid": {"type": "char(16)", "not null": "1", "default": "", "comment": "A unique identifier for this photo"},
"resource-id": {"type": "char(32)", "not null": "1", "default": "", "comment": ""},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "creation date"},
"edited": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "last edited date"},
"title": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"desc": {"type": "text", "comment": ""},
"album": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "The name of the album to which the photo belongs"},
"filename": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"type": {"type": "varchar(30)", "not null": "1", "default": "image/jpeg"},
"height": {"type": "smallint unsigned", "not null": "1", "default": "0", "comment": ""},
"width": {"type": "smallint unsigned", "not null": "1", "default": "0", "comment": ""},
"datasize": {"type": "int unsigned", "not null": "1", "default": "0", "comment": ""},
"data": {"type": "mediumblob", "not null": "1", "comment": ""},
"scale": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"profile": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"allow_cid": {"type": "mediumtext", "comment": "Access Control - list of allowed contact.id '<19><78>'"},
"allow_gid": {"type": "mediumtext", "comment": "Access Control - list of allowed groups"},
"deny_cid": {"type": "mediumtext", "comment": "Access Control - list of denied contact.id"},
"deny_gid": {"type": "mediumtext", "comment": "Access Control - list of denied groups"}
},
"indexes": {
"PRIMARY": ["id"],
"contactid": ["contact-id"],
"uid_contactid": ["uid", "contact-id"],
"uid_profile": ["uid", "profile"],
"uid_album_scale_created": ["uid", "album(32)", "scale", "created"],
"uid_album_resource-id_created": ["uid", "album(32)", "resource-id", "created"],
"resource-id": ["resource-id"]
}
},
"poll": {
"comment": "Currently unused table for storing poll results",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": ""},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"q0": {"type": "text", "comment": ""},
"q1": {"type": "text", "comment": ""},
"q2": {"type": "text", "comment": ""},
"q3": {"type": "text", "comment": ""},
"q4": {"type": "text", "comment": ""},
"q5": {"type": "text", "comment": ""},
"q6": {"type": "text", "comment": ""},
"q7": {"type": "text", "comment": ""},
"q8": {"type": "text", "comment": ""},
"q9": {"type": "text", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"uid": ["uid"]
}
},
"poll_result": {
"comment": "data for polls - currently unused",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"poll_id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"poll": "id"}},
"choice": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"poll_id": ["poll_id"]
}
},
"process": {
"comment": "Currently running system processes",
"fields": {
"pid": {"type": "int unsigned", "not null": "1", "primary": "1", "comment": ""},
"command": {"type": "varbinary(32)", "not null": "1", "default": "", "comment": ""},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""}
},
"indexes": {
"PRIMARY": ["pid"],
"command": ["command"]
}
},
"profile": {
"comment": "user profiles data",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "Owner User id"},
"profile-name": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "Name of the profile"},
"is-default": {"type": "boolean", "not null": "1", "default": "0", "comment": "Mark this profile as default profile"},
"hide-friends": {"type": "boolean", "not null": "1", "default": "0", "comment": "Hide friend list from viewers of this profile"},
"name": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"pdesc": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "Title or description"},
"dob": {"type": "varchar(32)", "not null": "1", "default": "0000-00-00", "comment": "Day of birth"},
"address": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"locality": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"region": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"postal-code": {"type": "varchar(32)", "not null": "1", "default": "", "comment": ""},
"country-name": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"hometown": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"gender": {"type": "varchar(32)", "not null": "1", "default": "", "comment": ""},
"marital": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"with": {"type": "text", "comment": ""},
"howlong": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"sexual": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"politic": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"religion": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"pub_keywords": {"type": "text", "comment": ""},
"prv_keywords": {"type": "text", "comment": ""},
"likes": {"type": "text", "comment": ""},
"dislikes": {"type": "text", "comment": ""},
"about": {"type": "text", "comment": ""},
"summary": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"music": {"type": "text", "comment": ""},
"book": {"type": "text", "comment": ""},
"tv": {"type": "text", "comment": ""},
"film": {"type": "text", "comment": ""},
"interest": {"type": "text", "comment": ""},
"romance": {"type": "text", "comment": ""},
"work": {"type": "text", "comment": ""},
"education": {"type": "text", "comment": ""},
"contact": {"type": "text", "comment": ""},
"homepage": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"xmpp": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"photo": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"thumb": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"publish": {"type": "boolean", "not null": "1", "default": "0", "comment": "publish default profile in local directory"},
"net-publish": {"type": "boolean", "not null": "1", "default": "0", "comment": "publish profile in global directory"}
},
"indexes": {
"PRIMARY": ["id"],
"uid_is-default": ["uid", "is-default"]
}
},
"profile_check": {
"comment": "DFRN remote auth use",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"cid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": "contact.id"},
"dfrn_id": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"sec": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"expire": {"type": "int unsigned", "not null": "1", "default": "0", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"]
}
},
"push_subscriber": {
"comment": "Used for OStatus: Contains feed subscribers",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"callback_url": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"topic": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"nickname": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"push": {"type": "tinyint", "not null": "1", "default": "0", "comment": "Retrial counter"},
"last_update": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Date of last successful trial"},
"next_try": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Next retrial date"},
"renewed": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Date of last subscription renewal"},
"secret": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"next_try": ["next_try"]
}
},
"queue": {
"comment": "Queue for messages that couldn't be delivered",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"cid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": "Message receiver"},
"network": {"type": "char(4)", "not null": "1", "default": "", "comment": "Receiver's network"},
"guid": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "Unique GUID of the message"},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Date, when the message was created"},
"last": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Date of last trial"},
"next": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Next retrial date"},
"retrial": {"type": "tinyint", "not null": "1", "default": "0", "comment": "Retrial counter"},
"content": {"type": "mediumtext", "comment": ""},
"batch": {"type": "boolean", "not null": "1", "default": "0", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"last": ["last"],
"next": ["next"]
}
},
"register": {
"comment": "registrations requiring admin approval",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"hash": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"password": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"language": {"type": "varchar(16)", "not null": "1", "default": "", "comment": ""},
"note": {"type": "text", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"]
}
},
"search": {
"comment": "",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"term": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"uid": ["uid"]
}
},
"session": {
"comment": "web session storage",
"fields": {
"id": {"type": "bigint unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"sid": {"type": "varbinary(255)", "not null": "1", "default": "", "comment": ""},
"data": {"type": "text", "comment": ""},
"expire": {"type": "int unsigned", "not null": "1", "default": "0", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"sid": ["sid(64)"],
"expire": ["expire"]
}
},
"sign": {
"comment": "Diaspora signatures",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"iid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"item": "id"}, "comment": "item.id"},
"signed_text": {"type": "mediumtext", "comment": ""},
"signature": {"type": "text", "comment": ""},
"signer": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"iid": ["UNIQUE", "iid"]
}
},
"term": {
"comment": "item taxonomy (categories, tags, etc.) table",
"fields": {
"tid": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": ""},
"oid": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"item": "id"}, "comment": ""},
"otype": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"type": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"term": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"url": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"guid": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"received": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"global": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"}
},
"indexes": {
"PRIMARY": ["tid"],
"oid_otype_type_term": ["oid", "otype", "type", "term(32)"],
"uid_otype_type_term_global_created": ["uid", "otype", "type", "term(32)", "global", "created"],
"uid_otype_type_url": ["uid", "otype", "type", "url(64)"],
"guid": ["guid(64)"]
}
},
"thread": {
"comment": "Thread related data",
"fields": {
"iid": {"type": "int unsigned", "not null": "1", "default": "0", "primary": "1", "relation": {"item": "id"}, "comment": "sequential ID"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"},
"contact-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": ""},
"owner-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": "Item owner"},
"author-id": {"type": "int unsigned", "not null": "1", "default": "0", "relation": {"contact": "id"}, "comment": "Item author"},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"edited": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"commented": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"received": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"changed": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": ""},
"wall": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"private": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"pubmail": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"moderated": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"visible": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"starred": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"ignored": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"post-type": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": "Post type (personal note, bookmark, ...)"},
"unseen": {"type": "boolean", "not null": "1", "default": "1", "comment": ""},
"deleted": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"origin": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"forum_mode": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"mention": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"network": {"type": "char(4)", "not null": "1", "default": "", "comment": ""},
"bookmark": {"type": "boolean", "comment": ""}
},
"indexes": {
"PRIMARY": ["iid"],
"uid_network_commented": ["uid", "network", "commented"],
"uid_network_created": ["uid", "network", "created"],
"uid_contactid_commented": ["uid", "contact-id", "commented"],
"uid_contactid_created": ["uid", "contact-id", "created"],
"contactid": ["contact-id"],
"ownerid": ["owner-id"],
"authorid": ["author-id"],
"uid_created": ["uid", "created"],
"uid_commented": ["uid", "commented"],
"uid_wall_created": ["uid", "wall", "created"],
"private_wall_origin_commented": ["private", "wall", "origin", "commented"]
}
},
"tokens": {
"comment": "OAuth usage",
"fields": {
"id": {"type": "varchar(40)", "not null": "1", "primary": "1", "comment": ""},
"secret": {"type": "text", "comment": ""},
"client_id": {"type": "varchar(20)", "not null": "1", "default": "", "relation": {"clients": "client_id"}},
"expires": {"type": "int", "not null": "1", "default": "0", "comment": ""},
"scope": {"type": "varchar(200)", "not null": "1", "default": "", "comment": ""},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "User id"}
},
"indexes": {
"PRIMARY": ["id"]
}
},
"user": {
"comment": "The local users",
"fields": {
"uid": {"type": "mediumint unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"parent-uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "relation": {"user": "uid"}, "comment": "The parent user that has full control about this user"},
"guid": {"type": "varchar(64)", "not null": "1", "default": "", "comment": "A unique identifier for this user"},
"username": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "Name that this user is known by"},
"password": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "encrypted password"},
"legacy_password": {"type": "boolean", "not null": "1", "default": "0", "comment": "Is the password hash double-hashed?"},
"nickname": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "nick- and user name"},
"email": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "the users email address"},
"openid": {"type": "varchar(255)", "not null": "1", "default": "", "comment": ""},
"timezone": {"type": "varchar(128)", "not null": "1", "default": "", "comment": "PHP-legal timezone"},
"language": {"type": "varchar(32)", "not null": "1", "default": "en", "comment": "default language"},
"register_date": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "timestamp of registration"},
"login_date": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "timestamp of last login"},
"default-location": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "Default for item.location"},
"allow_location": {"type": "boolean", "not null": "1", "default": "0", "comment": "1 allows to display the location"},
"theme": {"type": "varchar(255)", "not null": "1", "default": "", "comment": "user theme preference"},
"pubkey": {"type": "text", "comment": "RSA public key 4096 bit"},
"prvkey": {"type": "text", "comment": "RSA private key 4096 bit"},
"spubkey": {"type": "text", "comment": ""},
"sprvkey": {"type": "text", "comment": ""},
"verified": {"type": "boolean", "not null": "1", "default": "0", "comment": "user is verified through email"},
"blocked": {"type": "boolean", "not null": "1", "default": "0", "comment": "1 for user is blocked"},
"blockwall": {"type": "boolean", "not null": "1", "default": "0", "comment": "Prohibit contacts to post to the profile page of the user"},
"hidewall": {"type": "boolean", "not null": "1", "default": "0", "comment": "Hide profile details from unkown viewers"},
"blocktags": {"type": "boolean", "not null": "1", "default": "0", "comment": "Prohibit contacts to tag the post of this user"},
"unkmail": {"type": "boolean", "not null": "1", "default": "0", "comment": "Permit unknown people to send private mails to this user"},
"cntunkmail": {"type": "int unsigned", "not null": "1", "default": "10", "comment": ""},
"notify-flags": {"type": "smallint unsigned", "not null": "1", "default": "65535", "comment": "email notification options"},
"page-flags": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": "page/profile type"},
"account-type": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": ""},
"prvnets": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"pwdreset": {"type": "varchar(255)", "comment": "Password reset request token"},
"pwdreset_time": {"type": "datetime", "comment": "Timestamp of the last password reset request"},
"maxreq": {"type": "int unsigned", "not null": "1", "default": "10", "comment": ""},
"expire": {"type": "int unsigned", "not null": "1", "default": "0", "comment": ""},
"account_removed": {"type": "boolean", "not null": "1", "default": "0", "comment": "if 1 the account is removed"},
"account_expired": {"type": "boolean", "not null": "1", "default": "0", "comment": ""},
"account_expires_on": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "timestamp when account expires and will be deleted"},
"expire_notification_sent": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "timestamp of last warning of account expiration"},
"def_gid": {"type": "int unsigned", "not null": "1", "default": "0", "comment": ""},
"allow_cid": {"type": "mediumtext", "comment": "default permission for this user"},
"allow_gid": {"type": "mediumtext", "comment": "default permission for this user"},
"deny_cid": {"type": "mediumtext", "comment": "default permission for this user"},
"deny_gid": {"type": "mediumtext", "comment": "default permission for this user"},
"openidserver": {"type": "text", "comment": ""}
},
"indexes": {
"PRIMARY": ["uid"],
"nickname": ["nickname(32)"]
}
},
"userd": {
"comment": "Deleted usernames",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "sequential ID"},
"username": {"type": "varchar(255)", "not null": "1", "comment": ""}
},
"indexes": {
"PRIMARY": ["id"],
"username": ["username(32)"]
}
},
"user-contact": {
"comment": "User specific public contact data",
"fields": {
"cid": {"type": "int unsigned", "not null": "1", "default": "0", "primary": "1", "relation": {"contact": "id"}, "comment": "Contact id of the linked public contact"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "primary": "1", "relation": {"user": "uid"}, "comment": "User id"},
"blocked": {"type": "boolean", "comment": "Contact is completely blocked for this user"},
"ignored": {"type": "boolean", "comment": "Posts from this contact are ignored"},
"collapsed": {"type": "boolean", "comment": "Posts from this contact are collapsed"}
},
"indexes": {
"PRIMARY": ["uid", "cid"]
}
},
"user-item": {
"comment": "User specific item data",
"fields": {
"iid": {"type": "int unsigned", "not null": "1", "default": "0", "primary": "1", "relation": {"item": "id"}, "comment": "Item id"},
"uid": {"type": "mediumint unsigned", "not null": "1", "default": "0", "primary": "1", "relation": {"user": "uid"}, "comment": "User id"},
"hidden": {"type": "boolean", "not null": "1", "default": "0", "comment": "Marker to hide an item from the user"},
"ignored": {"type": "boolean", "comment": "Ignore this thread if set"}
},
"indexes": {
"PRIMARY": ["uid", "iid"]
}
},
"worker-ipc": {
"comment": "Inter process communication between the frontend and the worker",
"fields": {
"key": {"type": "int", "not null": "1", "primary": "1", "comment": ""},
"jobs": {"type": "boolean", "comment": "Flag for outstanding jobs"}
},
"indexes": {
"PRIMARY": ["key"]
},
"engine": "MEMORY"
},
"workerqueue": {
"comment": "Background tasks queue entries",
"fields": {
"id": {"type": "int unsigned", "not null": "1", "extra": "auto_increment", "primary": "1", "comment": "Auto incremented worker task id"},
"parameter": {"type": "mediumblob", "comment": "Task command"},
"priority": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": "Task priority"},
"created": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Creation date"},
"pid": {"type": "int unsigned", "not null": "1", "default": "0", "comment": "Process id of the worker"},
"executed": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Execution date"},
"done": {"type": "boolean", "not null": "1", "default": "0", "comment": "Marked 1 when the task was done - will be deleted later"}
},
"indexes": {
"PRIMARY": ["id"],
"pid": ["pid"],
"parameter": ["parameter(64)"],
"priority_created": ["priority", "created"],
"done_executed": ["done", "executed"]
}
}
}

View file

@ -0,0 +1,41 @@
<?php return <<<INI
; If automatic system installation fails:
; Copy this file to local.ini.php
; Why local.ini.php? Because it contains sensitive information which could
; give somebody complete control of your database. Apache's default
; configuration will interpret any .php file as a script and won't show the values
; Then set the following for your MySQL installation
[database]
hostname = localhost
username = mysqlusername
password = mysqlpassword
database = mysqldatabasename
charset = utf8mb4
; ****************************************************************
; The configuration below will be overruled by the admin panel.
; Changes made below will only have an effect if the database does
; not contain any configuration for the friendica system.
; ****************************************************************
[config]
admin_email =
sitename = Friendica Social Network
register_policy = REGISTER_OPEN
register_text =
[system]
default_timezone = UTC
language = en
INI;
// Keep this line

108
config/settings.ini.php Normal file
View file

@ -0,0 +1,108 @@
<?php return <<<INI
; SETTINGS.INI.PHP
; This file declares the default values for the admin settings of Friendica.
; These values will be overriden by the admin settings page.
; Please don't edit this file directly as its content may change in the upcoming versions.
[config]
; info (String)
; Plaintext description of this node, used in the /friendica module.
info =
; register_policy (Constant)
; Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
; Be certain to create your own personal account before setting REGISTER_CLOSED.
; REGISTER_APPROVE requires you set system.admin_email to the email address of an already registered person who can authorize and/or approve/deny the request.
register_policy = REGISTER_CLOSED
; register_text (String)
; Will be displayed prominently on the registration page.
register_text = ''
; sitename (String)
; Displayed server name.
sitename = "Friendica Social Network"
[system]
; account_abandon_days (Integer)
; Will not waste system resources polling external sites for abandonded accounts.
; Enter 0 for no time limit.
account_abandon_days = 0
; addon (Comma-separated list)
; Manual list of addons which are enabled on this system.
addon =
; allowed_themes (Comma-separated list)
; Themes users can change to in their settings.
allowed_themes = 'quattro,vier,duepuntozero,smoothly'
; default_timezone (String)
; Choose a default timezone. See https://secure.php.net/manual/en/timezones.php
; It only applies to timestamps for anonymous viewers.
default_timezone = UTC
; directory (String)
; URL of the global directory.
directory = https://dir.friendica.social
; forbidden_nicknames (Comma-separated list)
; Prevents users from registering the specified nicknames on this node.
; Default value comprises classic role names from RFC 2142.
forbidden_nicknames = info, marketing, sales, support, abuse, noc, security, postmaster, hostmaster, usenet, news, webmaster, www, uucp, ftp, root, sysop
; jpeg_quality (Integer)
; Sets the ImageMagick quality level for JPEG images. Values ranges from 50 (awful) to 100 (near perfect).
jpeg_quality = 100
; language (String)
; System default languague, inluding admin-created user default language.
; Two-letters ISO 639-1 code.
language = en
; max_image_length (Integer)
; An alternate way of limiting picture upload sizes.
; Specify the maximum pixel length that pictures are allowed to be (for non-square pictures, it will apply to the longest side).
; Pictures longer than this length will be resized to be this length (on the longest side, the other side will be scaled appropriately).
; If you don't want to set a maximum length, set to -1.
max_image_length = -1
; maximagesize (Integer)
; Maximum size in bytes of an uploaded photo.
maximagesize = 800000
; no_regfullname (Boolean)
; Allow pseudonyms (true) or enforce a space between firstname and lastname in Full name, as an antispam measure (false).
no_regfullname = true
; optimize_max_tablesize (Integer)
; Maximum table size (in MB) for the automatic optimization.
; -1 to disable automatic optimization.
; 0 to use internal default (100MB)
optimize_max_tablesize = -1
; rino_encrypt (Integer)
; Server-to-server private message encryption (RINO).
; Encryption will only be provided if this setting is set to a non zero value on both servers.
; Set to 0 to disable, 2 to enable, 1 is deprecated but wont need mcrypt.
rino_encrypt = 2
; theme (String)
; System theme name.
theme = vier
; url (String)
; The fully-qualified URL of this Friendica node.
; Used by the worker in a non-HTTP execution environment.
url =
; Used in the admin settings to lock certain features
[featurelock]
INI;
// Keep this line

View file

@ -1,6 +1,6 @@
-- ------------------------------------------
-- Friendica 2018.05 (The Tazmans Flax-lily)
-- DB_UPDATE_VERSION 1266
-- Friendica 2018.08-dev (The Tazmans Flax-lily)
-- DB_UPDATE_VERSION 1283
-- ------------------------------------------
@ -9,35 +9,35 @@
--
CREATE TABLE IF NOT EXISTS `addon` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '',
`version` varchar(50) NOT NULL DEFAULT '' COMMENT '',
`installed` boolean NOT NULL DEFAULT '0' COMMENT '',
`hidden` boolean NOT NULL DEFAULT '0' COMMENT '',
`timestamp` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`plugin_admin` boolean NOT NULL DEFAULT '0' COMMENT '',
`name` varchar(50) NOT NULL DEFAULT '' COMMENT 'addon base (file)name',
`version` varchar(50) NOT NULL DEFAULT '' COMMENT 'currently unused',
`installed` boolean NOT NULL DEFAULT '0' COMMENT 'currently always 1',
`hidden` boolean NOT NULL DEFAULT '0' COMMENT 'currently unused',
`timestamp` int unsigned NOT NULL DEFAULT 0 COMMENT 'file timestamp to check for reloads',
`plugin_admin` boolean NOT NULL DEFAULT '0' COMMENT '1 = has admin config, 0 = has no admin config',
PRIMARY KEY(`id`),
UNIQUE INDEX `name` (`name`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='registered addons';
--
-- TABLE attach
--
CREATE TABLE IF NOT EXISTS `attach` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`hash` varchar(64) NOT NULL DEFAULT '' COMMENT '',
`filename` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`filetype` varchar(64) NOT NULL DEFAULT '' COMMENT '',
`filesize` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`data` longblob NOT NULL COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`allow_cid` mediumtext COMMENT '',
`allow_gid` mediumtext COMMENT '',
`deny_cid` mediumtext COMMENT '',
`deny_gid` mediumtext COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'generated index',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id',
`hash` varchar(64) NOT NULL DEFAULT '' COMMENT 'hash',
`filename` varchar(255) NOT NULL DEFAULT '' COMMENT 'filename of original',
`filetype` varchar(64) NOT NULL DEFAULT '' COMMENT 'mimetype',
`filesize` int unsigned NOT NULL DEFAULT 0 COMMENT 'size in bytes',
`data` longblob NOT NULL COMMENT 'file data',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'last edit time',
`allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id \'<19><78>',
`allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups',
`deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id',
`deny_gid` mediumtext COMMENT 'Access Control - list of denied groups',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='file attachments';
--
-- TABLE auth_codes
@ -49,7 +49,7 @@ CREATE TABLE IF NOT EXISTS `auth_codes` (
`expires` int NOT NULL DEFAULT 0 COMMENT '',
`scope` varchar(250) NOT NULL DEFAULT '' COMMENT '',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='OAuth usage';
--
-- TABLE cache
@ -61,20 +61,20 @@ CREATE TABLE IF NOT EXISTS `cache` (
`updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of cache insertion',
PRIMARY KEY(`k`),
INDEX `k_expires` (`k`,`expires`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Stores temporary data';
--
-- TABLE challenge
--
CREATE TABLE IF NOT EXISTS `challenge` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`challenge` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`dfrn-id` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`expire` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`type` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`last_update` varchar(255) NOT NULL DEFAULT '' COMMENT '',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='';
--
-- TABLE clients
@ -87,7 +87,7 @@ CREATE TABLE IF NOT EXISTS `clients` (
`icon` text COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
PRIMARY KEY(`client_id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='OAuth usage';
--
-- TABLE config
@ -99,32 +99,32 @@ CREATE TABLE IF NOT EXISTS `config` (
`v` mediumtext COMMENT '',
PRIMARY KEY(`id`),
UNIQUE INDEX `cat_k` (`cat`,`k`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='main configuration storage';
--
-- TABLE contact
--
CREATE TABLE IF NOT EXISTS `contact` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`self` boolean NOT NULL DEFAULT '0' COMMENT '',
`self` boolean NOT NULL DEFAULT '0' COMMENT '1 if the contact is the user him/her self',
`remote_self` boolean NOT NULL DEFAULT '0' COMMENT '',
`rel` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`rel` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'The kind of the relation between the user and the contact',
`duplex` boolean NOT NULL DEFAULT '0' COMMENT '',
`network` char(4) NOT NULL DEFAULT '' COMMENT '',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`nick` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`network` char(4) NOT NULL DEFAULT '' COMMENT 'Network protocol of the contact',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT 'Name that this contact is known by',
`nick` varchar(255) NOT NULL DEFAULT '' COMMENT 'Nick- and user name of the contact',
`location` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`about` text COMMENT '',
`keywords` text COMMENT '',
`keywords` text COMMENT 'public keywords (interests) of the contact',
`gender` varchar(32) NOT NULL DEFAULT '' COMMENT '',
`xmpp` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`attag` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`photo` varchar(255) DEFAULT '' COMMENT '',
`thumb` varchar(255) DEFAULT '' COMMENT '',
`micro` varchar(255) DEFAULT '' COMMENT '',
`photo` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo of the contact',
`thumb` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo (thumb size)',
`micro` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo (micro size)',
`site-pubkey` text COMMENT '',
`issued-id` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`dfrn-id` varchar(255) NOT NULL DEFAULT '' COMMENT '',
@ -132,8 +132,8 @@ CREATE TABLE IF NOT EXISTS `contact` (
`nurl` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`addr` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`alias` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`pubkey` text COMMENT '',
`prvkey` text COMMENT '',
`pubkey` text COMMENT 'RSA public key 4096 bit',
`prvkey` text COMMENT 'RSA private key 4096 bit',
`batch` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`request` varchar(255) COMMENT '',
`notify` varchar(255) COMMENT '',
@ -145,20 +145,20 @@ CREATE TABLE IF NOT EXISTS `contact` (
`usehub` boolean NOT NULL DEFAULT '0' COMMENT '',
`subhub` boolean NOT NULL DEFAULT '0' COMMENT '',
`hub-verify` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`last-update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`success_update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`failure_update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`last-update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of the last try to update the contact info',
`success_update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of the last successful contact update',
`failure_update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of the last failed update',
`name-date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`uri-date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`avatar-date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`term-date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`last-item` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`last-item` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'date of the last post',
`priority` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`blocked` boolean NOT NULL DEFAULT '1' COMMENT '',
`readonly` boolean NOT NULL DEFAULT '0' COMMENT '',
`readonly` boolean NOT NULL DEFAULT '0' COMMENT 'posts of the contact are readonly',
`writable` boolean NOT NULL DEFAULT '0' COMMENT '',
`forum` boolean NOT NULL DEFAULT '0' COMMENT '',
`prv` boolean NOT NULL DEFAULT '0' COMMENT '',
`forum` boolean NOT NULL DEFAULT '0' COMMENT 'contact is a forum',
`prv` boolean NOT NULL DEFAULT '0' COMMENT 'contact is a private group',
`contact-type` tinyint NOT NULL DEFAULT 0 COMMENT '',
`hidden` boolean NOT NULL DEFAULT '0' COMMENT '',
`archive` boolean NOT NULL DEFAULT '0' COMMENT '',
@ -186,74 +186,74 @@ CREATE TABLE IF NOT EXISTS `contact` (
INDEX `nick_uid` (`nick`(32),`uid`),
INDEX `dfrn-id` (`dfrn-id`(64)),
INDEX `issued-id` (`issued-id`(64))
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='contact table';
--
-- TABLE conv
--
CREATE TABLE IF NOT EXISTS `conv` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`guid` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`recips` text COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`creator` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`subject` text COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this conversation',
`recips` text COMMENT 'sender_handle;recipient_handle',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id',
`creator` varchar(255) NOT NULL DEFAULT '' COMMENT 'handle of creator',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation timestamp',
`updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'edited timestamp',
`subject` text COMMENT 'subject of initial message',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='private messages';
--
-- TABLE conversation
--
CREATE TABLE IF NOT EXISTS `conversation` (
`item-uri` varbinary(255) NOT NULL COMMENT '',
`reply-to-uri` varbinary(255) NOT NULL DEFAULT '' COMMENT '',
`conversation-uri` varbinary(255) NOT NULL DEFAULT '' COMMENT '',
`conversation-href` varbinary(255) NOT NULL DEFAULT '' COMMENT '',
`protocol` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`source` mediumtext COMMENT '',
`received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`item-uri` varbinary(255) NOT NULL COMMENT 'Original URI of the item - unrelated to the table with the same name',
`reply-to-uri` varbinary(255) NOT NULL DEFAULT '' COMMENT 'URI to which this item is a reply',
`conversation-uri` varbinary(255) NOT NULL DEFAULT '' COMMENT 'GNU Social conversation URI',
`conversation-href` varbinary(255) NOT NULL DEFAULT '' COMMENT 'GNU Social conversation link',
`protocol` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'The protocol of the item',
`source` mediumtext COMMENT 'Original source',
`received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Receiving date',
PRIMARY KEY(`item-uri`),
INDEX `conversation-uri` (`conversation-uri`),
INDEX `received` (`received`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Raw data and structure information for messages';
--
-- TABLE event
--
CREATE TABLE IF NOT EXISTS `event` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`guid` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`cid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id',
`cid` int unsigned NOT NULL DEFAULT 0 COMMENT 'contact_id (ID of the contact in contact table)',
`uri` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`start` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`finish` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`summary` text COMMENT '',
`desc` text COMMENT '',
`location` text COMMENT '',
`type` varchar(20) NOT NULL DEFAULT '' COMMENT '',
`nofinish` boolean NOT NULL DEFAULT '0' COMMENT '',
`adjust` boolean NOT NULL DEFAULT '1' COMMENT '',
`ignore` boolean NOT NULL DEFAULT '0' COMMENT '',
`allow_cid` mediumtext COMMENT '',
`allow_gid` mediumtext COMMENT '',
`deny_cid` mediumtext COMMENT '',
`deny_gid` mediumtext COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'last edit time',
`start` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'event start time',
`finish` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'event end time',
`summary` text COMMENT 'short description or title of the event',
`desc` text COMMENT 'event description',
`location` text COMMENT 'event location',
`type` varchar(20) NOT NULL DEFAULT '' COMMENT 'event or birthday',
`nofinish` boolean NOT NULL DEFAULT '0' COMMENT 'if event does have no end this is 1',
`adjust` boolean NOT NULL DEFAULT '1' COMMENT 'adjust to timezone of the recipient (0 or 1)',
`ignore` boolean NOT NULL DEFAULT '0' COMMENT '0 or 1',
`allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id \'<19><78>\'',
`allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups',
`deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id',
`deny_gid` mediumtext COMMENT 'Access Control - list of denied groups',
PRIMARY KEY(`id`),
INDEX `uid_start` (`uid`,`start`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Events';
--
-- TABLE fcontact
--
CREATE TABLE IF NOT EXISTS `fcontact` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`guid` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'unique id',
`url` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`photo` varchar(255) NOT NULL DEFAULT '' COMMENT '',
@ -272,7 +272,7 @@ CREATE TABLE IF NOT EXISTS `fcontact` (
PRIMARY KEY(`id`),
INDEX `addr` (`addr`(32)),
UNIQUE INDEX `url` (`url`(190))
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Diaspora compatible contacts - used in the Diaspora implementation';
--
-- TABLE fsuggest
@ -288,30 +288,30 @@ CREATE TABLE IF NOT EXISTS `fsuggest` (
`note` text COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='friend suggestion stuff';
--
-- TABLE gcign
--
CREATE TABLE IF NOT EXISTS `gcign` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`gcid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Local User id',
`gcid` int unsigned NOT NULL DEFAULT 0 COMMENT 'gcontact.id of ignored contact',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`),
INDEX `gcid` (`gcid`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='contacts ignored by friend suggestions';
--
-- TABLE gcontact
--
CREATE TABLE IF NOT EXISTS `gcontact` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`nick` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`url` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT 'Name that this contact is known by',
`nick` varchar(255) NOT NULL DEFAULT '' COMMENT 'Nick- and user name of the contact',
`url` varchar(255) NOT NULL DEFAULT '' COMMENT 'Link to the contacts profile page',
`nurl` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`photo` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'Link to the profile photo',
`connect` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`updated` datetime DEFAULT '0001-01-01 00:00:00' COMMENT '',
@ -319,19 +319,19 @@ CREATE TABLE IF NOT EXISTS `gcontact` (
`last_failure` datetime DEFAULT '0001-01-01 00:00:00' COMMENT '',
`location` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`about` text COMMENT '',
`keywords` text COMMENT '',
`keywords` text COMMENT 'puplic keywords (interests)',
`gender` varchar(32) NOT NULL DEFAULT '' COMMENT '',
`birthday` varchar(32) NOT NULL DEFAULT '0001-01-01' COMMENT '',
`community` boolean NOT NULL DEFAULT '0' COMMENT '',
`community` boolean NOT NULL DEFAULT '0' COMMENT '1 if contact is forum account',
`contact-type` tinyint NOT NULL DEFAULT -1 COMMENT '',
`hide` boolean NOT NULL DEFAULT '0' COMMENT '',
`nsfw` boolean NOT NULL DEFAULT '0' COMMENT '',
`network` char(4) NOT NULL DEFAULT '' COMMENT '',
`hide` boolean NOT NULL DEFAULT '0' COMMENT '1 = should be hidden from search',
`nsfw` boolean NOT NULL DEFAULT '0' COMMENT '1 = contact posts nsfw content',
`network` char(4) NOT NULL DEFAULT '' COMMENT 'social network protocol',
`addr` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`notify` varchar(255) COMMENT '',
`alias` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`generation` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`server_url` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`server_url` varchar(255) NOT NULL DEFAULT '' COMMENT 'baseurl of the contacts server',
PRIMARY KEY(`id`),
UNIQUE INDEX `nurl` (`nurl`(190)),
INDEX `name` (`name`(64)),
@ -339,13 +339,13 @@ CREATE TABLE IF NOT EXISTS `gcontact` (
INDEX `addr` (`addr`(64)),
INDEX `hide_network_updated` (`hide`,`network`,`updated`),
INDEX `updated` (`updated`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='global contacts';
--
-- TABLE glink
--
CREATE TABLE IF NOT EXISTS `glink` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`cid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`gcid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
@ -354,45 +354,45 @@ CREATE TABLE IF NOT EXISTS `glink` (
PRIMARY KEY(`id`),
UNIQUE INDEX `cid_uid_gcid_zcid` (`cid`,`uid`,`gcid`,`zcid`),
INDEX `gcid` (`gcid`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='\'friends of friends\' linkages derived from poco';
--
-- TABLE group
--
CREATE TABLE IF NOT EXISTS `group` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`visible` boolean NOT NULL DEFAULT '0' COMMENT '',
`deleted` boolean NOT NULL DEFAULT '0' COMMENT '',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id',
`visible` boolean NOT NULL DEFAULT '0' COMMENT '1 indicates the member list is not private',
`deleted` boolean NOT NULL DEFAULT '0' COMMENT '1 indicates the group has been deleted',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT 'human readable name of group',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='privacy groups, group info';
--
-- TABLE group_member
--
CREATE TABLE IF NOT EXISTS `group_member` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`gid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`contact-id` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`gid` int unsigned NOT NULL DEFAULT 0 COMMENT 'groups.id of the associated group',
`contact-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'contact.id of the member assigned to the associated group',
PRIMARY KEY(`id`),
INDEX `contactid` (`contact-id`),
UNIQUE INDEX `gid_contactid` (`gid`,`contact-id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='privacy groups, member info';
--
-- TABLE gserver
--
CREATE TABLE IF NOT EXISTS `gserver` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`url` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`nurl` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`version` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`site_name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`info` text COMMENT '',
`register_policy` tinyint NOT NULL DEFAULT 0 COMMENT '',
`registered-users` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`registered-users` int unsigned NOT NULL DEFAULT 0 COMMENT 'Number of registered users',
`poco` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`noscrape` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`network` char(4) NOT NULL DEFAULT '' COMMENT '',
@ -405,7 +405,7 @@ CREATE TABLE IF NOT EXISTS `gserver` (
`last_failure` datetime DEFAULT '0001-01-01 00:00:00' COMMENT '',
PRIMARY KEY(`id`),
UNIQUE INDEX `nurl` (`nurl`(190))
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Global servers';
--
-- TABLE gserver-tag
@ -415,26 +415,26 @@ CREATE TABLE IF NOT EXISTS `gserver-tag` (
`tag` varchar(100) NOT NULL DEFAULT '' COMMENT 'Tag that the server has subscribed',
PRIMARY KEY(`gserver-id`,`tag`),
INDEX `tag` (`tag`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Tags that the server has subscribed';
--
-- TABLE hook
--
CREATE TABLE IF NOT EXISTS `hook` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`hook` varbinary(100) NOT NULL DEFAULT '' COMMENT '',
`file` varbinary(200) NOT NULL DEFAULT '' COMMENT '',
`function` varbinary(200) NOT NULL DEFAULT '' COMMENT '',
`priority` smallint unsigned NOT NULL DEFAULT 0 COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`hook` varbinary(100) NOT NULL DEFAULT '' COMMENT 'name of hook',
`file` varbinary(200) NOT NULL DEFAULT '' COMMENT 'relative filename of hook handler',
`function` varbinary(200) NOT NULL DEFAULT '' COMMENT 'function name of hook handler',
`priority` smallint unsigned NOT NULL DEFAULT 0 COMMENT 'not yet implemented - can be used to sort conflicts in hook handling by calling handlers in priority order',
PRIMARY KEY(`id`),
UNIQUE INDEX `hook_file_function` (`hook`,`file`,`function`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='addon hook registry';
--
-- TABLE intro
--
CREATE TABLE IF NOT EXISTS `intro` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`fid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`contact-id` int unsigned NOT NULL DEFAULT 0 COMMENT '',
@ -446,76 +446,83 @@ CREATE TABLE IF NOT EXISTS `intro` (
`blocked` boolean NOT NULL DEFAULT '1' COMMENT '',
`ignore` boolean NOT NULL DEFAULT '0' COMMENT '',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='';
--
-- TABLE item
--
CREATE TABLE IF NOT EXISTS `item` (
`id` int unsigned NOT NULL auto_increment,
`guid` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this item',
`uri` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`contact-id` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`type` varchar(20) NOT NULL DEFAULT '' COMMENT '',
`wall` boolean NOT NULL DEFAULT '0' COMMENT '',
`uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the item uri',
`uri-hash` varchar(80) NOT NULL DEFAULT '' COMMENT 'RIPEMD-128 hash from uri',
`parent` int unsigned NOT NULL DEFAULT 0 COMMENT 'item.id of the parent to this item if it is a reply of some form; otherwise this must be set to the id of this item',
`parent-uri` varchar(255) NOT NULL DEFAULT '' COMMENT 'uri of the parent to this item',
`parent-uri-id` int unsigned COMMENT 'Id of the item-uri table that contains the parent uri',
`thr-parent` varchar(255) NOT NULL DEFAULT '' COMMENT 'If the parent of this item is not the top-level item in the conversation, the uri of the immediate parent; otherwise set to parent-uri',
`thr-parent-id` int unsigned COMMENT 'Id of the item-uri table that contains the thread parent uri',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Creation timestamp.',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of last edit (default is created)',
`commented` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of last comment/reply to this item',
`received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime',
`changed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date that something in the conversation changed, indicating clients should fetch the conversation again',
`gravity` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`parent` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`parent-uri` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`network` char(4) NOT NULL DEFAULT '' COMMENT 'Network from where the item comes from',
`owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Link to the contact table with uid=0 of the owner of this item',
`author-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Link to the contact table with uid=0 of the author of this item',
`icid` int unsigned COMMENT 'Id of the item-content table entry that contains the whole item content',
`iaid` int unsigned COMMENT 'Id of the item-activity table entry that contains the activity data',
`extid` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`thr-parent` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`commented` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`changed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`owner-name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`owner-link` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`owner-avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`author-id` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`author-name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`author-link` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`author-avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`title` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`content-warning` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`body` mediumtext COMMENT '',
`app` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`verb` varchar(100) NOT NULL DEFAULT '' COMMENT '',
`object-type` varchar(100) NOT NULL DEFAULT '' COMMENT '',
`object` text COMMENT '',
`target-type` varchar(100) NOT NULL DEFAULT '' COMMENT '',
`target` text COMMENT '',
`postopts` text COMMENT '',
`plink` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`resource-id` varchar(32) NOT NULL DEFAULT '' COMMENT '',
`event-id` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`tag` mediumtext COMMENT '',
`attach` mediumtext COMMENT '',
`inform` mediumtext COMMENT '',
`file` mediumtext COMMENT '',
`location` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`coord` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`allow_cid` mediumtext COMMENT '',
`allow_gid` mediumtext COMMENT '',
`deny_cid` mediumtext COMMENT '',
`deny_gid` mediumtext COMMENT '',
`private` boolean NOT NULL DEFAULT '0' COMMENT '',
`pubmail` boolean NOT NULL DEFAULT '0' COMMENT '',
`moderated` boolean NOT NULL DEFAULT '0' COMMENT '',
`visible` boolean NOT NULL DEFAULT '0' COMMENT '',
`spam` boolean NOT NULL DEFAULT '0' COMMENT '',
`starred` boolean NOT NULL DEFAULT '0' COMMENT '',
`bookmark` boolean NOT NULL DEFAULT '0' COMMENT '',
`unseen` boolean NOT NULL DEFAULT '1' COMMENT '',
`deleted` boolean NOT NULL DEFAULT '0' COMMENT '',
`origin` boolean NOT NULL DEFAULT '0' COMMENT '',
`forum_mode` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`mention` boolean NOT NULL DEFAULT '0' COMMENT '',
`network` char(4) NOT NULL DEFAULT '' COMMENT '',
`rendered-hash` varchar(32) NOT NULL DEFAULT '' COMMENT '',
`rendered-html` mediumtext COMMENT '',
`post-type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'Post type (personal note, bookmark, ...)',
`global` boolean NOT NULL DEFAULT '0' COMMENT '',
`private` boolean NOT NULL DEFAULT '0' COMMENT 'distribution is restricted',
`visible` boolean NOT NULL DEFAULT '0' COMMENT '',
`moderated` boolean NOT NULL DEFAULT '0' COMMENT '',
`deleted` boolean NOT NULL DEFAULT '0' COMMENT 'item has been deleted',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner id which owns this copy of the item',
`contact-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'contact.id',
`wall` boolean NOT NULL DEFAULT '0' COMMENT 'This item was posted to the wall of uid',
`origin` boolean NOT NULL DEFAULT '0' COMMENT 'item originated at this site',
`pubmail` boolean NOT NULL DEFAULT '0' COMMENT '',
`starred` boolean NOT NULL DEFAULT '0' COMMENT 'item has been favourited',
`unseen` boolean NOT NULL DEFAULT '1' COMMENT 'item has not been seen',
`mention` boolean NOT NULL DEFAULT '0' COMMENT 'The owner of this item was mentioned in it',
`forum_mode` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`psid` int unsigned COMMENT 'ID of the permission set of this post',
`resource-id` varchar(32) NOT NULL DEFAULT '' COMMENT 'Used to link other tables to items, it identifies the linked resource (e.g. photo) and if set must also set resource_type',
`event-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Used to link to the event.id',
`attach` mediumtext COMMENT 'JSON structure representing attachments to this item',
`allow_cid` mediumtext COMMENT 'Deprecated',
`allow_gid` mediumtext COMMENT 'Deprecated',
`deny_cid` mediumtext COMMENT 'Deprecated',
`deny_gid` mediumtext COMMENT 'Deprecated',
`postopts` text COMMENT 'Deprecated',
`inform` mediumtext COMMENT 'Deprecated',
`type` varchar(20) COMMENT 'Deprecated',
`bookmark` boolean COMMENT 'Deprecated',
`file` mediumtext COMMENT 'Deprecated',
`location` varchar(255) COMMENT 'Deprecated',
`coord` varchar(255) COMMENT 'Deprecated',
`tag` mediumtext COMMENT 'Deprecated',
`plink` varchar(255) COMMENT 'Deprecated',
`title` varchar(255) COMMENT 'Deprecated',
`content-warning` varchar(255) COMMENT 'Deprecated',
`body` mediumtext COMMENT 'Deprecated',
`app` varchar(255) COMMENT 'Deprecated',
`verb` varchar(100) COMMENT 'Deprecated',
`object-type` varchar(100) COMMENT 'Deprecated',
`object` text COMMENT 'Deprecated',
`target-type` varchar(100) COMMENT 'Deprecated',
`target` text COMMENT 'Deprecated',
`author-name` varchar(255) COMMENT 'Deprecated',
`author-link` varchar(255) COMMENT 'Deprecated',
`author-avatar` varchar(255) COMMENT 'Deprecated',
`owner-name` varchar(255) COMMENT 'Deprecated',
`owner-link` varchar(255) COMMENT 'Deprecated',
`owner-avatar` varchar(255) COMMENT 'Deprecated',
`rendered-hash` varchar(32) COMMENT 'Deprecated',
`rendered-html` mediumtext COMMENT 'Deprecated',
PRIMARY KEY(`id`),
INDEX `guid` (`guid`(191)),
INDEX `uri` (`uri`(191)),
@ -536,61 +543,125 @@ CREATE TABLE IF NOT EXISTS `item` (
INDEX `ownerid` (`owner-id`),
INDEX `uid_uri` (`uid`,`uri`(190)),
INDEX `resource-id` (`resource-id`),
INDEX `contactid_allowcid_allowpid_denycid_denygid` (`contact-id`,`allow_cid`(10),`allow_gid`(10),`deny_cid`(10),`deny_gid`(10)),
INDEX `uid_type_changed` (`uid`,`type`,`changed`),
INDEX `contactid_verb` (`contact-id`,`verb`),
INDEX `deleted_changed` (`deleted`,`changed`),
INDEX `uid_wall_changed` (`uid`,`wall`,`changed`),
INDEX `uid_eventid` (`uid`,`event-id`),
INDEX `uid_authorlink` (`uid`,`author-link`(190)),
INDEX `uid_ownerlink` (`uid`,`owner-link`(190))
) DEFAULT COLLATE utf8mb4_general_ci;
INDEX `icid` (`icid`),
INDEX `iaid` (`iaid`),
INDEX `psid_wall` (`psid`,`wall`)
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Structure for all posts';
--
-- TABLE item-activity
--
CREATE TABLE IF NOT EXISTS `item-activity` (
`id` int unsigned NOT NULL auto_increment,
`uri` varchar(255) COMMENT '',
`uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the item uri',
`uri-hash` varchar(80) NOT NULL DEFAULT '' COMMENT 'RIPEMD-128 hash from uri',
`activity` smallint unsigned NOT NULL DEFAULT 0 COMMENT '',
PRIMARY KEY(`id`),
UNIQUE INDEX `uri-hash` (`uri-hash`),
INDEX `uri` (`uri`(191))
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Activities for items';
--
-- TABLE item-content
--
CREATE TABLE IF NOT EXISTS `item-content` (
`id` int unsigned NOT NULL auto_increment,
`uri` varchar(255) COMMENT '',
`uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the item uri',
`uri-plink-hash` varchar(80) NOT NULL DEFAULT '' COMMENT 'RIPEMD-128 hash from uri',
`title` varchar(255) NOT NULL DEFAULT '' COMMENT 'item title',
`content-warning` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`body` mediumtext COMMENT 'item body content',
`location` varchar(255) NOT NULL DEFAULT '' COMMENT 'text location where this item originated',
`coord` varchar(255) NOT NULL DEFAULT '' COMMENT 'longitude/latitude pair representing location where this item originated',
`language` text COMMENT 'Language information about this post',
`app` varchar(255) NOT NULL DEFAULT '' COMMENT 'application which generated this item',
`rendered-hash` varchar(32) NOT NULL DEFAULT '' COMMENT '',
`rendered-html` mediumtext COMMENT 'item.body converted to html',
`object-type` varchar(100) NOT NULL DEFAULT '' COMMENT 'ActivityStreams object type',
`object` text COMMENT 'JSON encoded object structure unless it is an implied object (normal post)',
`target-type` varchar(100) NOT NULL DEFAULT '' COMMENT 'ActivityStreams target type if applicable (URI)',
`target` text COMMENT 'JSON encoded target structure if used',
`plink` varchar(255) NOT NULL DEFAULT '' COMMENT 'permalink or URL to a displayable copy of the message at its source',
`verb` varchar(100) NOT NULL DEFAULT '' COMMENT 'ActivityStreams verb',
PRIMARY KEY(`id`),
UNIQUE INDEX `uri-plink-hash` (`uri-plink-hash`),
INDEX `uri` (`uri`(191))
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Content for all posts';
--
-- TABLE item-delivery-data
--
CREATE TABLE IF NOT EXISTS `item-delivery-data` (
`iid` int unsigned NOT NULL COMMENT 'Item id',
`postopts` text COMMENT 'External post connectors add their network name to this comma-separated string to identify that they should be delivered to these networks during delivery',
`inform` mediumtext COMMENT 'Additional receivers of the linked item',
PRIMARY KEY(`iid`)
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Delivery data for items';
--
-- TABLE item-uri
--
CREATE TABLE IF NOT EXISTS `item-uri` (
`id` int unsigned NOT NULL auto_increment,
`uri` varbinary(255) NOT NULL COMMENT 'URI of an item',
`guid` varbinary(255) COMMENT 'A unique identifier for an item',
PRIMARY KEY(`id`),
UNIQUE INDEX `uri` (`uri`),
INDEX `guid` (`guid`)
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='URI and GUID for items';
--
-- TABLE locks
--
CREATE TABLE IF NOT EXISTS `locks` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`name` varchar(128) NOT NULL DEFAULT '' COMMENT '',
`locked` boolean NOT NULL DEFAULT '0' COMMENT '',
`pid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci;
`pid` int unsigned NOT NULL DEFAULT 0 COMMENT 'Process ID',
`expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of cache expiration',
PRIMARY KEY(`id`),
INDEX `name_expires` (`name`,`expires`)
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='';
--
-- TABLE mail
--
CREATE TABLE IF NOT EXISTS `mail` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`guid` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`from-name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`from-photo` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`from-url` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`contact-id` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`convid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id',
`guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this private message',
`from-name` varchar(255) NOT NULL DEFAULT '' COMMENT 'name of the sender',
`from-photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'contact photo link of the sender',
`from-url` varchar(255) NOT NULL DEFAULT '' COMMENT 'profile linke of the sender',
`contact-id` varchar(255) NOT NULL DEFAULT '' COMMENT 'contact.id',
`convid` int unsigned NOT NULL DEFAULT 0 COMMENT 'conv.id',
`title` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`body` mediumtext COMMENT '',
`seen` boolean NOT NULL DEFAULT '0' COMMENT '',
`seen` boolean NOT NULL DEFAULT '0' COMMENT 'if message visited it is 1',
`reply` boolean NOT NULL DEFAULT '0' COMMENT '',
`replied` boolean NOT NULL DEFAULT '0' COMMENT '',
`unknown` boolean NOT NULL DEFAULT '0' COMMENT '',
`unknown` boolean NOT NULL DEFAULT '0' COMMENT 'if sender not in the contact table this is 1',
`uri` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`parent-uri` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time of the private message',
PRIMARY KEY(`id`),
INDEX `uid_seen` (`uid`,`seen`),
INDEX `convid` (`convid`),
INDEX `uri` (`uri`(64)),
INDEX `parent-uri` (`parent-uri`(64)),
INDEX `contactid` (`contact-id`(32))
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='private messages';
--
-- TABLE mailacct
--
CREATE TABLE IF NOT EXISTS `mailacct` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`server` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`port` smallint unsigned NOT NULL DEFAULT 0 COMMENT '',
@ -604,24 +675,24 @@ CREATE TABLE IF NOT EXISTS `mailacct` (
`pubmail` boolean NOT NULL DEFAULT '0' COMMENT '',
`last_check` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Mail account data for fetching mails';
--
-- TABLE manage
--
CREATE TABLE IF NOT EXISTS `manage` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`mid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
PRIMARY KEY(`id`),
UNIQUE INDEX `uid_mid` (`uid`,`mid`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='table of accounts that can manage each other';
--
-- TABLE notify
--
CREATE TABLE IF NOT EXISTS `notify` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`hash` varchar(64) NOT NULL DEFAULT '' COMMENT '',
`type` smallint unsigned NOT NULL DEFAULT 0 COMMENT '',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
@ -629,58 +700,71 @@ CREATE TABLE IF NOT EXISTS `notify` (
`photo` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`msg` mediumtext COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id',
`link` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`iid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`iid` int unsigned NOT NULL DEFAULT 0 COMMENT 'item.id',
`parent` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`seen` boolean NOT NULL DEFAULT '0' COMMENT '',
`verb` varchar(100) NOT NULL DEFAULT '' COMMENT '',
`otype` varchar(10) NOT NULL DEFAULT '' COMMENT '',
`name_cache` tinytext COMMENT '',
`msg_cache` mediumtext COMMENT '',
`name_cache` tinytext COMMENT 'Cached bbcode parsing of name',
`msg_cache` mediumtext COMMENT 'Cached bbcode parsing of msg',
PRIMARY KEY(`id`),
INDEX `hash_uid` (`hash`,`uid`),
INDEX `seen_uid_date` (`seen`,`uid`,`date`),
INDEX `uid_date` (`uid`,`date`),
INDEX `uid_type_link` (`uid`,`type`,`link`(190))
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='notifications';
--
-- TABLE notify-threads
--
CREATE TABLE IF NOT EXISTS `notify-threads` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`notify-id` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`master-parent-item` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`parent-item` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`receiver-uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='';
--
-- TABLE oembed
--
CREATE TABLE IF NOT EXISTS `oembed` (
`url` varbinary(255) NOT NULL COMMENT '',
`maxwidth` mediumint unsigned NOT NULL COMMENT '',
`content` mediumtext COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`url` varbinary(255) NOT NULL COMMENT 'page url',
`maxwidth` mediumint unsigned NOT NULL COMMENT 'Maximum width passed to Oembed',
`content` mediumtext COMMENT 'OEmbed data of the page',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of creation',
PRIMARY KEY(`url`,`maxwidth`),
INDEX `created` (`created`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='cache for OEmbed queries';
--
-- TABLE openwebauth-token
--
CREATE TABLE IF NOT EXISTS `openwebauth-token` (
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`type` varchar(32) NOT NULL DEFAULT '' COMMENT 'Verify type',
`token` varchar(255) NOT NULL DEFAULT '' COMMENT 'A generated token',
`meta` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of creation',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Store OpenWebAuth token to verify contacts';
--
-- TABLE parsed_url
--
CREATE TABLE IF NOT EXISTS `parsed_url` (
`url` varbinary(255) NOT NULL COMMENT '',
`guessing` boolean NOT NULL DEFAULT '0' COMMENT '',
`oembed` boolean NOT NULL DEFAULT '0' COMMENT '',
`content` mediumtext COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`url` varbinary(255) NOT NULL COMMENT 'page url',
`guessing` boolean NOT NULL DEFAULT '0' COMMENT 'is the \'guessing\' mode active?',
`oembed` boolean NOT NULL DEFAULT '0' COMMENT 'is the data the result of oembed?',
`content` mediumtext COMMENT 'page data',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of creation',
PRIMARY KEY(`url`,`guessing`,`oembed`),
INDEX `created` (`created`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='cache for \'parse_url\' queries';
--
-- TABLE participation
@ -691,7 +775,7 @@ CREATE TABLE IF NOT EXISTS `participation` (
`cid` int unsigned NOT NULL COMMENT '',
`fid` int unsigned NOT NULL COMMENT '',
PRIMARY KEY(`iid`,`server`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Storage for participation messages from Diaspora';
--
-- TABLE pconfig
@ -704,22 +788,36 @@ CREATE TABLE IF NOT EXISTS `pconfig` (
`v` mediumtext COMMENT '',
PRIMARY KEY(`id`),
UNIQUE INDEX `uid_cat_k` (`uid`,`cat`,`k`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='personal (per user) configuration storage';
--
-- TABLE permissionset
--
CREATE TABLE IF NOT EXISTS `permissionset` (
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner id of this permission set',
`allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id \'<19><78>\'',
`allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups',
`deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id',
`deny_gid` mediumtext COMMENT 'Access Control - list of denied groups',
PRIMARY KEY(`id`),
INDEX `uid_allow_cid_allow_gid_deny_cid_deny_gid` (`allow_cid`(50),`allow_gid`(30),`deny_cid`(50),`deny_gid`(30))
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='';
--
-- TABLE photo
--
CREATE TABLE IF NOT EXISTS `photo` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`contact-id` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`guid` char(16) NOT NULL DEFAULT '' COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id',
`contact-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'contact.id',
`guid` char(16) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this photo',
`resource-id` char(32) NOT NULL DEFAULT '' COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation date',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'last edited date',
`title` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`desc` text COMMENT '',
`album` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`album` varchar(255) NOT NULL DEFAULT '' COMMENT 'The name of the album to which the photo belongs',
`filename` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`type` varchar(30) NOT NULL DEFAULT 'image/jpeg',
`height` smallint unsigned NOT NULL DEFAULT 0 COMMENT '',
@ -728,10 +826,10 @@ CREATE TABLE IF NOT EXISTS `photo` (
`data` mediumblob NOT NULL COMMENT '',
`scale` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`profile` boolean NOT NULL DEFAULT '0' COMMENT '',
`allow_cid` mediumtext COMMENT '',
`allow_gid` mediumtext COMMENT '',
`deny_cid` mediumtext COMMENT '',
`deny_gid` mediumtext COMMENT '',
`allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id \'<19><78>\'',
`allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups',
`deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id',
`deny_gid` mediumtext COMMENT 'Access Control - list of denied groups',
PRIMARY KEY(`id`),
INDEX `contactid` (`contact-id`),
INDEX `uid_contactid` (`uid`,`contact-id`),
@ -739,7 +837,7 @@ CREATE TABLE IF NOT EXISTS `photo` (
INDEX `uid_album_scale_created` (`uid`,`album`(32),`scale`,`created`),
INDEX `uid_album_resource-id_created` (`uid`,`album`(32),`resource-id`,`created`),
INDEX `resource-id` (`resource-id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='photo storage';
--
-- TABLE poll
@ -759,18 +857,18 @@ CREATE TABLE IF NOT EXISTS `poll` (
`q9` text COMMENT '',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Currently unused table for storing poll results';
--
-- TABLE poll_result
--
CREATE TABLE IF NOT EXISTS `poll_result` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`poll_id` int unsigned NOT NULL DEFAULT 0,
`choice` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
PRIMARY KEY(`id`),
INDEX `poll_id` (`poll_id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='data for polls - currently unused';
--
-- TABLE process
@ -781,20 +879,20 @@ CREATE TABLE IF NOT EXISTS `process` (
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
PRIMARY KEY(`pid`),
INDEX `command` (`command`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Currently running system processes';
--
-- TABLE profile
--
CREATE TABLE IF NOT EXISTS `profile` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`profile-name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`is-default` boolean NOT NULL DEFAULT '0' COMMENT '',
`hide-friends` boolean NOT NULL DEFAULT '0' COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id',
`profile-name` varchar(255) NOT NULL DEFAULT '' COMMENT 'Name of the profile',
`is-default` boolean NOT NULL DEFAULT '0' COMMENT 'Mark this profile as default profile',
`hide-friends` boolean NOT NULL DEFAULT '0' COMMENT 'Hide friend list from viewers of this profile',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`pdesc` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`dob` varchar(32) NOT NULL DEFAULT '0000-00-00' COMMENT '',
`pdesc` varchar(255) NOT NULL DEFAULT '' COMMENT 'Title or description',
`dob` varchar(32) NOT NULL DEFAULT '0000-00-00' COMMENT 'Day of birth',
`address` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`locality` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`region` varchar(255) NOT NULL DEFAULT '' COMMENT '',
@ -827,30 +925,30 @@ CREATE TABLE IF NOT EXISTS `profile` (
`xmpp` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`photo` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`thumb` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`publish` boolean NOT NULL DEFAULT '0' COMMENT '',
`net-publish` boolean NOT NULL DEFAULT '0' COMMENT '',
`publish` boolean NOT NULL DEFAULT '0' COMMENT 'publish default profile in local directory',
`net-publish` boolean NOT NULL DEFAULT '0' COMMENT 'publish profile in global directory',
PRIMARY KEY(`id`),
INDEX `uid_is-default` (`uid`,`is-default`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='user profiles data';
--
-- TABLE profile_check
--
CREATE TABLE IF NOT EXISTS `profile_check` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`cid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`cid` int unsigned NOT NULL DEFAULT 0 COMMENT 'contact.id',
`dfrn_id` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`sec` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`expire` int unsigned NOT NULL DEFAULT 0 COMMENT '',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='DFRN remote auth use';
--
-- TABLE push_subscriber
--
CREATE TABLE IF NOT EXISTS `push_subscriber` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`callback_url` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '',
@ -862,13 +960,13 @@ CREATE TABLE IF NOT EXISTS `push_subscriber` (
`secret` varchar(255) NOT NULL DEFAULT '' COMMENT '',
PRIMARY KEY(`id`),
INDEX `next_try` (`next_try`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Used for OStatus: Contains feed subscribers';
--
-- TABLE queue
--
CREATE TABLE IF NOT EXISTS `queue` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`cid` int unsigned NOT NULL DEFAULT 0 COMMENT 'Message receiver',
`network` char(4) NOT NULL DEFAULT '' COMMENT 'Receiver\'s network',
`guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'Unique GUID of the message',
@ -881,13 +979,13 @@ CREATE TABLE IF NOT EXISTS `queue` (
PRIMARY KEY(`id`),
INDEX `last` (`last`),
INDEX `next` (`next`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Queue for messages that couldn\'t be delivered';
--
-- TABLE register
--
CREATE TABLE IF NOT EXISTS `register` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`hash` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
@ -895,44 +993,44 @@ CREATE TABLE IF NOT EXISTS `register` (
`language` varchar(16) NOT NULL DEFAULT '' COMMENT '',
`note` text COMMENT '',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='registrations requiring admin approval';
--
-- TABLE search
--
CREATE TABLE IF NOT EXISTS `search` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`term` varchar(255) NOT NULL DEFAULT '' COMMENT '',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='';
--
-- TABLE session
--
CREATE TABLE IF NOT EXISTS `session` (
`id` bigint unsigned NOT NULL auto_increment COMMENT '',
`id` bigint unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`sid` varbinary(255) NOT NULL DEFAULT '' COMMENT '',
`data` text COMMENT '',
`expire` int unsigned NOT NULL DEFAULT 0 COMMENT '',
PRIMARY KEY(`id`),
INDEX `sid` (`sid`(64)),
INDEX `expire` (`expire`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='web session storage';
--
-- TABLE sign
--
CREATE TABLE IF NOT EXISTS `sign` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`iid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`iid` int unsigned NOT NULL DEFAULT 0 COMMENT 'item.id',
`signed_text` mediumtext COMMENT '',
`signature` text COMMENT '',
`signer` varchar(255) NOT NULL DEFAULT '' COMMENT '',
PRIMARY KEY(`id`),
UNIQUE INDEX `iid` (`iid`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Diaspora signatures';
--
-- TABLE term
@ -948,24 +1046,23 @@ CREATE TABLE IF NOT EXISTS `term` (
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`global` boolean NOT NULL DEFAULT '0' COMMENT '',
`aid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
PRIMARY KEY(`tid`),
INDEX `oid_otype_type_term` (`oid`,`otype`,`type`,`term`(32)),
INDEX `uid_otype_type_term_global_created` (`uid`,`otype`,`type`,`term`(32),`global`,`created`),
INDEX `uid_otype_type_url` (`uid`,`otype`,`type`,`url`(64)),
INDEX `guid` (`guid`(64))
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='item taxonomy (categories, tags, etc.) table';
--
-- TABLE thread
--
CREATE TABLE IF NOT EXISTS `thread` (
`iid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`iid` int unsigned NOT NULL DEFAULT 0 COMMENT 'sequential ID',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`contact-id` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`author-id` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item owner',
`author-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item author',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`commented` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
@ -976,16 +1073,16 @@ CREATE TABLE IF NOT EXISTS `thread` (
`pubmail` boolean NOT NULL DEFAULT '0' COMMENT '',
`moderated` boolean NOT NULL DEFAULT '0' COMMENT '',
`visible` boolean NOT NULL DEFAULT '0' COMMENT '',
`spam` boolean NOT NULL DEFAULT '0' COMMENT '',
`starred` boolean NOT NULL DEFAULT '0' COMMENT '',
`ignored` boolean NOT NULL DEFAULT '0' COMMENT '',
`bookmark` boolean NOT NULL DEFAULT '0' COMMENT '',
`post-type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'Post type (personal note, bookmark, ...)',
`unseen` boolean NOT NULL DEFAULT '1' COMMENT '',
`deleted` boolean NOT NULL DEFAULT '0' COMMENT '',
`origin` boolean NOT NULL DEFAULT '0' COMMENT '',
`forum_mode` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`mention` boolean NOT NULL DEFAULT '0' COMMENT '',
`network` char(4) NOT NULL DEFAULT '' COMMENT '',
`bookmark` boolean COMMENT '',
PRIMARY KEY(`iid`),
INDEX `uid_network_commented` (`uid`,`network`,`commented`),
INDEX `uid_network_created` (`uid`,`network`,`created`),
@ -998,7 +1095,7 @@ CREATE TABLE IF NOT EXISTS `thread` (
INDEX `uid_commented` (`uid`,`commented`),
INDEX `uid_wall_created` (`uid`,`wall`,`created`),
INDEX `private_wall_origin_commented` (`private`,`wall`,`origin`,`commented`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Thread related data';
--
-- TABLE tokens
@ -1011,70 +1108,82 @@ CREATE TABLE IF NOT EXISTS `tokens` (
`scope` varchar(200) NOT NULL DEFAULT '' COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
PRIMARY KEY(`id`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='OAuth usage';
--
-- TABLE user
--
CREATE TABLE IF NOT EXISTS `user` (
`uid` mediumint unsigned NOT NULL auto_increment COMMENT '',
`uid` mediumint unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`parent-uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'The parent user that has full control about this user',
`guid` varchar(64) NOT NULL DEFAULT '' COMMENT '',
`username` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`password` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`guid` varchar(64) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this user',
`username` varchar(255) NOT NULL DEFAULT '' COMMENT 'Name that this user is known by',
`password` varchar(255) NOT NULL DEFAULT '' COMMENT 'encrypted password',
`legacy_password` boolean NOT NULL DEFAULT '0' COMMENT 'Is the password hash double-hashed?',
`nickname` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`email` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`nickname` varchar(255) NOT NULL DEFAULT '' COMMENT 'nick- and user name',
`email` varchar(255) NOT NULL DEFAULT '' COMMENT 'the users email address',
`openid` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`timezone` varchar(128) NOT NULL DEFAULT '' COMMENT '',
`language` varchar(32) NOT NULL DEFAULT 'en' COMMENT '',
`register_date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`login_date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`default-location` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`allow_location` boolean NOT NULL DEFAULT '0' COMMENT '',
`theme` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`pubkey` text COMMENT '',
`prvkey` text COMMENT '',
`timezone` varchar(128) NOT NULL DEFAULT '' COMMENT 'PHP-legal timezone',
`language` varchar(32) NOT NULL DEFAULT 'en' COMMENT 'default language',
`register_date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'timestamp of registration',
`login_date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'timestamp of last login',
`default-location` varchar(255) NOT NULL DEFAULT '' COMMENT 'Default for item.location',
`allow_location` boolean NOT NULL DEFAULT '0' COMMENT '1 allows to display the location',
`theme` varchar(255) NOT NULL DEFAULT '' COMMENT 'user theme preference',
`pubkey` text COMMENT 'RSA public key 4096 bit',
`prvkey` text COMMENT 'RSA private key 4096 bit',
`spubkey` text COMMENT '',
`sprvkey` text COMMENT '',
`verified` boolean NOT NULL DEFAULT '0' COMMENT '',
`blocked` boolean NOT NULL DEFAULT '0' COMMENT '',
`blockwall` boolean NOT NULL DEFAULT '0' COMMENT '',
`hidewall` boolean NOT NULL DEFAULT '0' COMMENT '',
`blocktags` boolean NOT NULL DEFAULT '0' COMMENT '',
`unkmail` boolean NOT NULL DEFAULT '0' COMMENT '',
`verified` boolean NOT NULL DEFAULT '0' COMMENT 'user is verified through email',
`blocked` boolean NOT NULL DEFAULT '0' COMMENT '1 for user is blocked',
`blockwall` boolean NOT NULL DEFAULT '0' COMMENT 'Prohibit contacts to post to the profile page of the user',
`hidewall` boolean NOT NULL DEFAULT '0' COMMENT 'Hide profile details from unkown viewers',
`blocktags` boolean NOT NULL DEFAULT '0' COMMENT 'Prohibit contacts to tag the post of this user',
`unkmail` boolean NOT NULL DEFAULT '0' COMMENT 'Permit unknown people to send private mails to this user',
`cntunkmail` int unsigned NOT NULL DEFAULT 10 COMMENT '',
`notify-flags` smallint unsigned NOT NULL DEFAULT 65535 COMMENT '',
`page-flags` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`notify-flags` smallint unsigned NOT NULL DEFAULT 65535 COMMENT 'email notification options',
`page-flags` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'page/profile type',
`account-type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`prvnets` boolean NOT NULL DEFAULT '0' COMMENT '',
`pwdreset` varchar(255) COMMENT 'Password reset request token',
`pwdreset_time` datetime COMMENT 'Timestamp of the last password reset request',
`maxreq` int unsigned NOT NULL DEFAULT 10 COMMENT '',
`expire` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`account_removed` boolean NOT NULL DEFAULT '0' COMMENT '',
`account_removed` boolean NOT NULL DEFAULT '0' COMMENT 'if 1 the account is removed',
`account_expired` boolean NOT NULL DEFAULT '0' COMMENT '',
`account_expires_on` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`expire_notification_sent` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`account_expires_on` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'timestamp when account expires and will be deleted',
`expire_notification_sent` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'timestamp of last warning of account expiration',
`def_gid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
`allow_cid` mediumtext COMMENT '',
`allow_gid` mediumtext COMMENT '',
`deny_cid` mediumtext COMMENT '',
`deny_gid` mediumtext COMMENT '',
`allow_cid` mediumtext COMMENT 'default permission for this user',
`allow_gid` mediumtext COMMENT 'default permission for this user',
`deny_cid` mediumtext COMMENT 'default permission for this user',
`deny_gid` mediumtext COMMENT 'default permission for this user',
`openidserver` text COMMENT '',
PRIMARY KEY(`uid`),
INDEX `nickname` (`nickname`(32))
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='The local users';
--
-- TABLE userd
--
CREATE TABLE IF NOT EXISTS `userd` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`username` varchar(255) NOT NULL COMMENT '',
PRIMARY KEY(`id`),
INDEX `username` (`username`(32))
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Deleted usernames';
--
-- TABLE user-contact
--
CREATE TABLE IF NOT EXISTS `user-contact` (
`cid` int unsigned NOT NULL DEFAULT 0 COMMENT 'Contact id of the linked public contact',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`blocked` boolean COMMENT 'Contact is completely blocked for this user',
`ignored` boolean COMMENT 'Posts from this contact are ignored',
`collapsed` boolean COMMENT 'Posts from this contact are collapsed',
PRIMARY KEY(`uid`,`cid`)
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='User specific public contact data';
--
-- TABLE user-item
@ -1082,9 +1191,19 @@ CREATE TABLE IF NOT EXISTS `userd` (
CREATE TABLE IF NOT EXISTS `user-item` (
`iid` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item id',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
`hidden` boolean NOT NULL DEFAULT '0' COMMENT 'Hidden marker',
`hidden` boolean NOT NULL DEFAULT '0' COMMENT 'Marker to hide an item from the user',
`ignored` boolean COMMENT 'Ignore this thread if set',
PRIMARY KEY(`uid`,`iid`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='User specific item data';
--
-- TABLE worker-ipc
--
CREATE TABLE IF NOT EXISTS `worker-ipc` (
`key` int NOT NULL COMMENT '',
`jobs` boolean COMMENT 'Flag for outstanding jobs',
PRIMARY KEY(`key`)
) ENGINE=MEMORY DEFAULT COLLATE utf8mb4_general_ci COMMENT='Inter process communication between the frontend and the worker';
--
-- TABLE workerqueue
@ -1096,12 +1215,12 @@ CREATE TABLE IF NOT EXISTS `workerqueue` (
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Creation date',
`pid` int unsigned NOT NULL DEFAULT 0 COMMENT 'Process id of the worker',
`executed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Execution date',
`done` boolean NOT NULL DEFAULT '0' COMMENT 'Marked when the task was done, will be deleted later',
`done` boolean NOT NULL DEFAULT '0' COMMENT 'Marked 1 when the task was done - will be deleted later',
PRIMARY KEY(`id`),
INDEX `pid` (`pid`),
INDEX `parameter` (`parameter`(64)),
INDEX `priority_created` (`priority`,`created`),
INDEX `done_executed` (`done`,`executed`)
) DEFAULT COLLATE utf8mb4_general_ci;
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Background tasks queue entries';

View file

@ -79,6 +79,7 @@ General
../settings
---------
* o - Account
* p - Profiles
* t - Additional features
* w - Social Networks
* l - Addons

View file

@ -25,22 +25,23 @@ Addons should contain a comment block with the four following parameters:
* Author: John Q. Public <john@myfriendicasite.com>
*/
Please also add a README or README.md file to the addon directory.
It will be displayed in the admin panel and should include some further information in addition to the header information.
## PHP addon hooks
Register your addon hooks during installation.
Addon::registerHook($hookname, $file, $function);
$hookname is a string and corresponds to a known Friendica hook.
$hookname is a string and corresponds to a known Friendica PHP hook.
$file is a pathname relative to the top-level Friendica directory.
This *should* be 'addon/addon_name/addon_name.php' in most cases.
This *should* be 'addon/*addon_name*/*addon_name*.php' in most cases.
$function is a string and is the name of the function which will be executed when the hook is called.
Please also add a README or README.md file to the addon directory.
It will be displayed in the admin panel and should include some further information in addition to the header information.
Arguments
---
### Arguments
Your hook callback functions will be called with at least one and possibly two arguments
function myhook_function(App $a, &$b) {
@ -48,10 +49,10 @@ Your hook callback functions will be called with at least one and possibly two a
}
If you wish to make changes to the calling data, you must declare them as reference variables (with '&') during function declaration.
If you wish to make changes to the calling data, you must declare them as reference variables (with `&`) during function declaration.
#### $a
$a is the Friendica 'App' class.
$a is the Friendica `App` class.
It contains a wealth of information about the current state of Friendica:
* which module has been called,
@ -59,15 +60,64 @@ It contains a wealth of information about the current state of Friendica:
* the page contents at the point the hook was invoked,
* profile and user information, etc.
It is recommeded you call this '$a' to match its usage elsewhere.
It is recommeded you call this `$a` to match its usage elsewhere.
#### $b
$b can be called anything you like.
This is information specific to the hook currently being processed, and generally contains information that is being immediately processed or acted on that you can use, display, or alter.
Remember to declare it with '&' if you wish to alter it.
Remember to declare it with `&` if you wish to alter it.
Modules
---
## JavaScript addon hooks
### PHP part
Make sure your JavaScript addon file (addon/*addon_name*/*addon_name*.js) is listed in the document response.
In your addon install function, add:
```php
Addon::registerHook('template_vars', __FILE__, '<addon_name>_template_vars');
```