Browse Source

Merge remote-tracking branch 'friendica/develop' into issue/#3062

# Conflicts:
#	view/theme/duepuntozero/theme.php
#	view/theme/smoothly/theme.php
pull/3072/head
Hypolite Petovan 4 years ago
parent
commit
b61479ba6e
166 changed files with 834 additions and 788 deletions
  1. +1
    -1
      LICENSE
  2. +5
    -5
      boot.php
  3. +46
    -48
      database.sql
  4. +5
    -5
      doc/Plugins.md
  5. +23
    -23
      doc/autoloader.md
  6. +5
    -5
      doc/de/Plugins.md
  7. +3
    -1
      doc/htconfig.md
  8. +3
    -3
      doc/themes.md
  9. +3
    -3
      include/Contact.php
  10. +2
    -2
      include/Photo.php
  11. +15
    -15
      include/acl_selectors.php
  12. +15
    -15
      include/api.php
  13. +1
    -1
      include/conversation.php
  14. +3
    -3
      include/cron.php
  15. +29
    -13
      include/dbclean.php
  16. +42
    -44
      include/dbstructure.php
  17. +23
    -5
      include/diaspora.php
  18. +2
    -2
      include/enotify.php
  19. +22
    -22
      include/event.php
  20. +18
    -18
      include/identity.php
  21. +1
    -1
      include/nav.php
  22. +1
    -1
      include/ostatus.php
  23. +25
    -10
      include/photos.php
  24. +1
    -1
      include/plaintext.php
  25. +11
    -11
      include/redir.php
  26. +27
    -27
      include/security.php
  27. +3
    -3
      include/text.php
  28. +1
    -1
      include/uimport.php
  29. +2
    -2
      mod/_well_known.php
  30. +1
    -1
      mod/acctlink.php
  31. +1
    -1
      mod/acl.php
  32. +37
    -37
      mod/admin.php
  33. +1
    -1
      mod/allfriends.php
  34. +1
    -1
      mod/amcd.php
  35. +2
    -2
      mod/api.php
  36. +2
    -2
      mod/apps.php
  37. +1
    -1
      mod/attach.php
  38. +23
    -23
      mod/babel.php
  39. +2
    -2
      mod/bookmarklet.php
  40. +2
    -2
      mod/cal.php
  41. +4
    -4
      mod/cb.php
  42. +1
    -1
      mod/common.php
  43. +3
    -3
      mod/community.php
  44. +1
    -1
      mod/contactgroup.php
  45. +10
    -10
      mod/contacts.php
  46. +20
    -20
      mod/content.php
  47. +1
    -1
      mod/credits.php
  48. +3
    -3
      mod/crepair.php
  49. +4
    -4
      mod/delegate.php
  50. +1
    -1
      mod/dfrn_confirm.php
  51. +2
    -2
      mod/dfrn_notify.php
  52. +5
    -5
      mod/dfrn_poll.php
  53. +3
    -3
      mod/dfrn_request.php
  54. +5
    -5
      mod/directory.php
  55. +2
    -2
      mod/dirfind.php
  56. +2
    -2
      mod/display.php
  57. +1
    -1
      mod/editpost.php
  58. +3
    -3
      mod/events.php
  59. +1
    -1
      mod/fbrowser.php
  60. +1
    -3
      mod/fetch.php
  61. +2
    -2
      mod/filer.php
  62. +1
    -1
      mod/filerm.php
  63. +2
    -2
      mod/follow.php
  64. +4
    -4
      mod/friendica.php
  65. +8
    -8
      mod/fsuggest.php
  66. +3
    -3
      mod/group.php
  67. +1
    -1
      mod/hcard.php
  68. +1
    -1
      mod/help.php
  69. +2
    -2
      mod/home.php
  70. +1
    -1
      mod/hostxrd.php
  71. +3
    -3
      mod/hovercard.php
  72. +1
    -1
      mod/ignored.php
  73. +4
    -4
      mod/install.php
  74. +5
    -5
      mod/invite.php
  75. +2
    -2
      mod/item.php
  76. +1
    -1
      mod/like.php
  77. +3
    -3
      mod/localtime.php
  78. +9
    -9
      mod/lockview.php
  79. +1
    -1
      mod/login.php
  80. +2
    -2
      mod/lostpass.php
  81. +1
    -1
      mod/maintenance.php
  82. +2
    -2
      mod/manage.php
  83. +2
    -2
      mod/match.php
  84. +3
    -3
      mod/message.php
  85. +1
    -1
      mod/modexp.php
  86. +3
    -3
      mod/mood.php
  87. +3
    -3
      mod/msearch.php
  88. +1
    -1
      mod/navigation.php
  89. +8
    -8
      mod/network.php
  90. +5
    -5
      mod/newmember.php
  91. +3
    -3
      mod/nodeinfo.php
  92. +2
    -2
      mod/nogroup.php
  93. +1
    -1
      mod/noscrape.php
  94. +2
    -2
      mod/notes.php
  95. +2
    -2
      mod/notice.php
  96. +2
    -2
      mod/notifications.php
  97. +4
    -4
      mod/notify.php
  98. +1
    -1
      mod/oembed.php
  99. +6
    -6
      mod/oexchange.php
  100. +2
    -2
      mod/openid.php

+ 1
- 1
LICENSE View File

@ -1,5 +1,5 @@
Friendica Communications Server
Copyright (c) 2010-2016 the Friendica Project
Copyright (c) 2010-2017 the Friendica Project
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by


+ 5
- 5
boot.php View File

@ -38,7 +38,7 @@ define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_CODENAME', 'Asparagus');
define ( 'FRIENDICA_VERSION', '3.5.1-dev' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1211 );
define ( 'DB_UPDATE_VERSION', 1212 );
/**
* @brief Constant with a HTML line break.
@ -1539,7 +1539,7 @@ function check_db() {
* Sets the base url for use in cmdline programs which don't have
* $_SERVER variables
*/
function check_url(App &$a) {
function check_url(App $a) {
$url = get_config('system','url');
@ -1561,7 +1561,7 @@ function check_url(App &$a) {
/**
* @brief Automatic database updates
*/
function update_db(App &$a) {
function update_db(App $a) {
$build = get_config('system','build');
if(! x($build))
$build = set_config('system','build',DB_UPDATE_VERSION);
@ -1677,7 +1677,7 @@ function run_update_function($x) {
* @param App $a
*
*/
function check_plugins(App &$a) {
function check_plugins(App $a) {
$r = q("SELECT * FROM `addon` WHERE `installed` = 1");
if (dbm::is_result($r))
@ -2413,7 +2413,7 @@ function get_temppath() {
}
/// @deprecated
function set_template_engine(App &$a, $engine = 'internal') {
function set_template_engine(App $a, $engine = 'internal') {
/// @note This function is no longer necessary, but keep it as a wrapper to the class method
/// to avoid breaking themes again unnecessarily


+ 46
- 48
database.sql View File

@ -1,6 +1,6 @@
-- ------------------------------------------
-- Friendica 3.5.1-dev (Asparagus)
-- DB_UPDATE_VERSION 1211
-- DB_UPDATE_VERSION 1212
-- ------------------------------------------
@ -174,9 +174,16 @@ CREATE TABLE IF NOT EXISTS `contact` (
`fetch_further_information` tinyint(1) NOT NULL DEFAULT 0,
`ffi_keyword_blacklist` mediumtext,
PRIMARY KEY(`id`),
INDEX `uid` (`uid`),
INDEX `addr_uid` (`addr`,`uid`),
INDEX `nurl` (`nurl`)
INDEX `uid_name` (`uid`,`name`),
INDEX `uid_self` (`uid`,`self`),
INDEX `alias_uid` (`alias`(32),`uid`),
INDEX `uid_pending` (`uid`,`pending`),
INDEX `uid_blocked` (`uid`,`blocked`),
INDEX `uid_rel_network_poll` (`uid`,`rel`,`network`,`poll`(64),`archive`),
INDEX `uid_network_batch` (`uid`,`network`,`batch`(64)),
INDEX `addr_uid` (`addr`(32),`uid`),
INDEX `nurl_uid` (`nurl`(32),`uid`),
INDEX `nick_uid` (`nick`(32),`uid`)
) DEFAULT CHARSET=utf8mb4;
--
@ -232,7 +239,7 @@ CREATE TABLE IF NOT EXISTS `event` (
`deny_cid` mediumtext,
`deny_gid` mediumtext,
PRIMARY KEY(`id`),
INDEX `uid` (`uid`)
INDEX `uid_start` (`uid`,`start`)
) DEFAULT CHARSET=utf8mb4;
--
@ -257,7 +264,7 @@ CREATE TABLE IF NOT EXISTS `fcontact` (
`pubkey` text,
`updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY(`id`),
INDEX `addr` (`addr`)
INDEX `addr` (`addr`(32))
) DEFAULT CHARSET=utf8mb4;
--
@ -280,7 +287,7 @@ CREATE TABLE IF NOT EXISTS `fserver` (
`posturl` varchar(255) NOT NULL DEFAULT '',
`key` text,
PRIMARY KEY(`id`),
INDEX `server` (`server`)
INDEX `server` (`server`(32))
) DEFAULT CHARSET=utf8mb4;
--
@ -342,10 +349,10 @@ CREATE TABLE IF NOT EXISTS `gcontact` (
`generation` tinyint(3) NOT NULL DEFAULT 0,
`server_url` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY(`id`),
INDEX `nurl` (`nurl`),
INDEX `name` (`name`),
INDEX `nick` (`nick`),
INDEX `addr` (`addr`),
INDEX `nurl` (`nurl`(32)),
INDEX `name` (`name`(32)),
INDEX `nick` (`nick`(32)),
INDEX `addr` (`addr`(32)),
INDEX `updated` (`updated`)
) DEFAULT CHARSET=utf8mb4;
@ -360,7 +367,7 @@ CREATE TABLE IF NOT EXISTS `glink` (
`zcid` int(11) NOT NULL DEFAULT 0,
`updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY(`id`),
INDEX `cid_uid_gcid_zcid` (`cid`,`uid`,`gcid`,`zcid`),
UNIQUE INDEX `cid_uid_gcid_zcid` (`cid`,`uid`,`gcid`,`zcid`),
INDEX `gcid` (`gcid`),
INDEX `zcid` (`zcid`)
) DEFAULT CHARSET=utf8mb4;
@ -387,7 +394,9 @@ CREATE TABLE IF NOT EXISTS `group_member` (
`gid` int(10) unsigned NOT NULL DEFAULT 0,
`contact-id` int(10) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY(`id`),
INDEX `uid_gid_contactid` (`uid`,`gid`,`contact-id`)
INDEX `cid_contactid` (`cid`,`contact-id`),
INDEX `uid_contactid` (`uid`,`contact-id`),
UNIQUE INDEX `uid_gid_contactid` (`uid`,`gid`,`contact-id`)
) DEFAULT CHARSET=utf8mb4;
--
@ -410,7 +419,7 @@ CREATE TABLE IF NOT EXISTS `gserver` (
`last_contact` datetime DEFAULT '0000-00-00 00:00:00',
`last_failure` datetime DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY(`id`),
INDEX `nurl` (`nurl`)
INDEX `nurl` (`nurl`(32))
) DEFAULT CHARSET=utf8mb4;
--
@ -525,24 +534,17 @@ CREATE TABLE IF NOT EXISTS `item` (
INDEX `uid_network_received` (`uid`,`network`,`received`),
INDEX `uid_received` (`uid`,`received`),
INDEX `uid_network_commented` (`uid`,`network`,`commented`),
INDEX `uid_commented` (`uid`,`commented`),
INDEX `uid_title` (`uid`,`title`),
INDEX `uid_thrparent` (`uid`,`thr-parent`),
INDEX `uid_parenturi` (`uid`,`parent-uri`),
INDEX `uid_contactid_id` (`uid`,`contact-id`,`id`),
INDEX `uid_contactid_created` (`uid`,`contact-id`,`created`),
INDEX `gcontactid_uid_created` (`gcontact-id`,`uid`,`created`),
INDEX `authorid_created` (`author-id`,`created`),
INDEX `ownerid_created` (`owner-id`,`created`),
INDEX `wall_body` (`wall`,`body`(6)),
INDEX `uid_visible_moderated_created` (`uid`,`visible`,`moderated`,`created`),
INDEX `uid_uri` (`uid`,`uri`),
INDEX `uid_wall_created` (`uid`,`wall`,`created`),
INDEX `resource-id` (`resource-id`),
INDEX `uid_type` (`uid`,`type`),
INDEX `uid_starred_id` (`uid`,`starred`,`id`),
INDEX `contactid_allowcid_allowpid_denycid_denygid` (`contact-id`,`allow_cid`(10),`allow_gid`(10),`deny_cid`(10),`deny_gid`(10)),
INDEX `uid_wall_parent_created` (`uid`,`wall`,`parent`,`created`),
INDEX `uid_type_changed` (`uid`,`type`,`changed`),
INDEX `contactid_verb` (`contact-id`,`verb`),
INDEX `deleted_changed` (`deleted`,`changed`),
@ -564,7 +566,7 @@ CREATE TABLE IF NOT EXISTS `item_id` (
PRIMARY KEY(`id`),
INDEX `uid` (`uid`),
INDEX `sid` (`sid`),
INDEX `service` (`service`),
INDEX `service` (`service`(32)),
INDEX `iid` (`iid`)
) DEFAULT CHARSET=utf8mb4;
@ -602,11 +604,10 @@ CREATE TABLE IF NOT EXISTS `mail` (
`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`),
INDEX `guid` (`guid`),
INDEX `uid_seen` (`uid`,`seen`),
INDEX `convid` (`convid`),
INDEX `reply` (`reply`),
INDEX `uri` (`uri`),
INDEX `parent-uri` (`parent-uri`)
INDEX `uri` (`uri`(64)),
INDEX `parent-uri` (`parent-uri`(64))
) DEFAULT CHARSET=utf8mb4;
--
@ -662,7 +663,11 @@ CREATE TABLE IF NOT EXISTS `notify` (
`name_cache` tinytext,
`msg_cache` mediumtext,
PRIMARY KEY(`id`),
INDEX `uid` (`uid`)
INDEX `uid_hash` (`uid`,`hash`),
INDEX `uid_seen_date` (`uid`,`seen`,`date`),
INDEX `uid_type_link` (`uid`,`type`,`link`),
INDEX `uid_link` (`uid`,`link`),
INDEX `uid_date` (`uid`,`date`)
) DEFAULT CHARSET=utf8mb4;
--
@ -675,8 +680,7 @@ CREATE TABLE IF NOT EXISTS `notify-threads` (
`parent-item` int(10) unsigned NOT NULL DEFAULT 0,
`receiver-uid` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY(`id`),
INDEX `master-parent-item` (`master-parent-item`),
INDEX `receiver-uid` (`receiver-uid`)
INDEX `master-parent-item` (`master-parent-item`)
) DEFAULT CHARSET=utf8mb4;
--
@ -745,9 +749,9 @@ CREATE TABLE IF NOT EXISTS `photo` (
PRIMARY KEY(`id`),
INDEX `uid_contactid` (`uid`,`contact-id`),
INDEX `uid_profile` (`uid`,`profile`),
INDEX `uid_album_created` (`uid`,`album`,`created`),
INDEX `resource-id` (`resource-id`),
INDEX `guid` (`guid`)
INDEX `uid_album_created` (`uid`,`album`(32),`created`),
INDEX `uid_album_resource-id_created` (`uid`,`album`(32),`resource-id`(64),`created`),
INDEX `resource-id` (`resource-id`(64))
) DEFAULT CHARSET=utf8mb4;
--
@ -839,8 +843,7 @@ CREATE TABLE IF NOT EXISTS `profile` (
`thumb` varchar(255) NOT NULL DEFAULT '',
`publish` tinyint(1) NOT NULL DEFAULT 0,
`net-publish` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY(`id`),
INDEX `hometown` (`hometown`)
PRIMARY KEY(`id`)
) DEFAULT CHARSET=utf8mb4;
--
@ -912,8 +915,7 @@ CREATE TABLE IF NOT EXISTS `search` (
`uid` int(11) NOT NULL DEFAULT 0,
`term` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`),
INDEX `term` (`term`)
INDEX `uid` (`uid`)
) DEFAULT CHARSET=utf8mb4;
--
@ -925,7 +927,7 @@ CREATE TABLE IF NOT EXISTS `session` (
`data` text,
`expire` int(10) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY(`id`),
INDEX `sid` (`sid`),
INDEX `sid` (`sid`(64)),
INDEX `expire` (`expire`)
) DEFAULT CHARSET=utf8mb4;
@ -977,12 +979,11 @@ CREATE TABLE IF NOT EXISTS `term` (
`uid` int(10) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY(`tid`),
INDEX `oid_otype_type_term` (`oid`,`otype`,`type`,`term`),
INDEX `uid_term_tid` (`uid`,`term`,`tid`),
INDEX `type_term` (`type`,`term`),
INDEX `uid_otype_type_term_global_created` (`uid`,`otype`,`type`,`term`,`global`,`created`),
INDEX `otype_type_term_tid` (`otype`,`type`,`term`,`tid`),
INDEX `uid_otype_type_url` (`uid`,`otype`,`type`,`url`),
INDEX `guid` (`guid`)
INDEX `uid_term_tid` (`uid`,`term`(32),`tid`),
INDEX `type_term` (`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 CHARSET=utf8mb4;
--
@ -1022,9 +1023,6 @@ CREATE TABLE IF NOT EXISTS `thread` (
INDEX `uid_network_created` (`uid`,`network`,`created`),
INDEX `uid_contactid_commented` (`uid`,`contact-id`,`commented`),
INDEX `uid_contactid_created` (`uid`,`contact-id`,`created`),
INDEX `uid_gcontactid_commented` (`uid`,`gcontact-id`,`commented`),
INDEX `uid_gcontactid_created` (`uid`,`gcontact-id`,`created`),
INDEX `wall_private_received` (`wall`,`private`,`received`),
INDEX `uid_created` (`uid`,`created`),
INDEX `uid_commented` (`uid`,`commented`)
) DEFAULT CHARSET=utf8mb4;
@ -1090,7 +1088,7 @@ CREATE TABLE IF NOT EXISTS `user` (
`deny_gid` mediumtext,
`openidserver` text,
PRIMARY KEY(`uid`),
INDEX `nickname` (`nickname`)
INDEX `nickname` (`nickname`(32))
) DEFAULT CHARSET=utf8mb4;
--
@ -1100,7 +1098,7 @@ CREATE TABLE IF NOT EXISTS `userd` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(255) NOT NULL,
PRIMARY KEY(`id`),
INDEX `username` (`username`)
INDEX `username` (`username`(32))
) DEFAULT CHARSET=utf8mb4;
--


+ 5
- 5
doc/Plugins.md View File

@ -40,7 +40,7 @@ Arguments
---
Your hook callback functions will be called with at least one and possibly two arguments
function myhook_function(&$a, &$b) {
function myhook_function(App $a, &$b) {
}
@ -77,9 +77,9 @@ This will include:
$a->argc = 3
$a->argv = array(0 => 'plugin', 1 => 'arg1', 2 => 'arg2');
Your module functions will often contain the function plugin_name_content(App &$a), which defines and returns the page body content.
They may also contain plugin_name_post(App &$a) which is called before the _content function and typically handles the results of POST forms.
You may also have plugin_name_init(App &$a) which is called very early on and often does module initialisation.
Your module functions will often contain the function plugin_name_content(App $a), which defines and returns the page body content.
They may also contain plugin_name_post(App $a) which is called before the _content function and typically handles the results of POST forms.
You may also have plugin_name_init(App $a) which is called very early on and often does module initialisation.
Templates
---
@ -285,7 +285,7 @@ $b is an array with:
is called after the other queries have passed.
The registered function can add, change or remove the acl_lookup() variables.
'results' => array of the acl_lookup() vars
'results' => array of the acl_lookup() vars
Complete list of hook callbacks


+ 23
- 23
doc/autoloader.md View File

@ -32,7 +32,7 @@ Let's say you have a php file in "include/" that define a very useful class:
file: include/ItemsManager.php
<?php
namespace \Friendica;
class ItemsManager {
public function getAll() { ... }
public function getByID($id) { ... }
@ -67,11 +67,11 @@ The code will be something like:
```
file: mod/network.php
<?php
function network_content(App &$a) {
function network_content(App $a) {
$itemsmanager = new \Friendica\ItemsManager();
$items = $itemsmanager->getAll();
// pass $items to template
// return result
}
@ -86,7 +86,7 @@ Going further: now we have a bunch of "*Manager" classes that cause some code du
file: include/BaseManager.php
<?php
namespace \Friendica;
class BaseManager {
public function thatFunctionEveryManagerUses() { ... }
}
@ -98,7 +98,7 @@ and then let's change the ItemsManager class to use this code
file: include/ItemsManager.php
<?php
namespace \Friendica;
class ItemsManager extends BaseManager {
public function getAll() { ... }
public function getByID($id) { ... }
@ -110,9 +110,9 @@ It works with the "BaseManager" example here, it works when we need to call stat
```
file: include/dfrn.php
<?php
<?php
namespace \Friendica;
class dfrn {
public static function mail($item, $owner) { ... }
}
@ -121,7 +121,7 @@ It works with the "BaseManager" example here, it works when we need to call stat
```
file: mod/mail.php
<?php
mail_post($a){
...
\Friendica\dfrn::mail($item, $owner);
@ -134,15 +134,15 @@ If your code is in same namespace as the class you need, you don't need to prepe
```
file: include/delivery.php
<?php
namespace \Friendica;
// this is the same content of current include/delivery.php,
// this is the same content of current include/delivery.php,
// but has been declared to be in "Friendica" namespace
[...]
switch($contact['network']) {
case NETWORK_DFRN:
if ($mail) {
$item['body'] = ...
@ -160,11 +160,11 @@ But if you want to use classes from another library, you need to use the full na
```
<?php
namespace \Frienidca;
namespace \Friendica;
class Diaspora {
public function md2bbcode() {
$html = \Michelf\MarkdownExtra::defaultTransform($text);
$html = \Michelf\MarkdownExtra::defaultTransform($text);
}
}
```
@ -173,13 +173,13 @@ if you use that class in many places of the code and you don't want to write the
```
<?php
namespace \Frienidca;
namespace \Friendica;
use \Michelf\MarkdownExtra;
class Diaspora {
public function md2bbcode() {
$html = MarkdownExtra::defaultTransform($text);
$html = MarkdownExtra::defaultTransform($text);
}
}
```
@ -190,7 +190,7 @@ You can go more deep if you want to, like:
```
<?php
namespace \Friendica\Network;
class DFRN {
}
```
@ -200,7 +200,7 @@ or
```
<?php
namespace \Friendica\DBA;
class MySQL {
}
```


+ 5
- 5
doc/de/Plugins.md View File

@ -40,7 +40,7 @@ Argumente
Deine Hook-Callback-Funktion wird mit mindestens einem und bis zu zwei Argumenten aufgerufen
function myhook_function(&$a, &$b) {
function myhook_function(App $a, &$b) {
}
@ -67,9 +67,9 @@ So würde http://example.com/plugin/arg1/arg2 nach einem Modul "plugin" suchen u
$a->argc = 3
$a->argv = array(0 => 'plugin', 1 => 'arg1', 2 => 'arg2');
Deine Modulfunktionen umfassen oft die Funktion plugin_name_content(App &$a), welche den Seiteninhalt definiert und zurückgibt.
Sie können auch plugin_name_post(App &$a) umfassen, welches vor der content-Funktion aufgerufen wird und normalerweise die Resultate der POST-Formulare handhabt.
Du kannst ebenso plugin_name_init(App &$a) nutzen, was oft frühzeitig aufgerufen wird und das Modul initialisert.
Deine Modulfunktionen umfassen oft die Funktion plugin_name_content(App $a), welche den Seiteninhalt definiert und zurückgibt.
Sie können auch plugin_name_post(App $a) umfassen, welches vor der content-Funktion aufgerufen wird und normalerweise die Resultate der POST-Formulare handhabt.
Du kannst ebenso plugin_name_init(App $a) nutzen, was oft frühzeitig aufgerufen wird und das Modul initialisert.
Derzeitige Hooks
@ -311,7 +311,7 @@ mod/photos.php: call_hooks('photo_post_end',intval($item_id));
mod/photos.php: call_hooks('photo_upload_form',$ret);
mod/friendica.php: call_hooks('about_hook', $o);
mod/friendica.php: call_hooks('about_hook', $o);
mod/editpost.php: call_hooks('jot_tool', $jotplugins);


+ 3
- 1
doc/htconfig.md View File

@ -25,6 +25,7 @@ Example: To set the directory value please add this line to your .htconfig.php:
* **allowed_link_protocols** (Array) - Allowed protocols in links URLs, add at your own risk. http is always allowed.
* **birthday_input_format** - Default value is "ymd".
* **block_local_dir** (Boolean) - Blocks the access to the directory of the local users.
* **dbclean** (Boolean) - Enable the automatic database cleanup process
* **default_service_class** -
* **delivery_batch_count** - Number of deliveries per process. Default value is 1. (Disabled when using the worker)
* **diaspora_test** (Boolean) - For development only. Disables the message transfer.
@ -45,7 +46,8 @@ Example: To set the directory value please add this line to your .htconfig.php:
* **max_processes_frontend** - Maximum number of concurrent database processes for foreground tasks. Default value is 20.
* **memcache** (Boolean) - Use memcache. To use memcache the PECL extension "memcache" has to be installed and activated.
* **memcache_host** - Hostname of the memcache daemon. Default is '127.0.0.1'.
* **memcache_port** - Portnumberof the memcache daemon. Default is 11211.
* **memcache_port** - Portnumber of the memcache daemon. Default is 11211.
* **no_count** (Boolean) - Don't do count calculations (currently only when showing albums)
* **no_oembed** (Boolean) - Don't use OEmbed to fetch more information about a link.
* **no_oembed_rich_content** (Boolean) - Don't show the rich content (e.g. embedded PDF).
* **no_smilies** (Boolean) - Don't show smilies.


+ 3
- 3
doc/themes.md View File

@ -122,7 +122,7 @@ the 1st part of the line is the name of the CSS file (without the .css) the 2nd
Calling the t() function with the common name makes the string translateable.
The selected 1st part will be saved in the database by the theme_post function.
function theme_post(App &$a){
function theme_post(App $a){
// non local users shall not pass
if (! local_user()) {
return;
@ -168,7 +168,7 @@ The content of this file should be something like
<?php
/* meta informations for the theme, see below */
function duepuntozero_lr_init(App &$a) {
function duepuntozero_lr_init(App $a) {
$a-> theme_info = array(
'extends' => 'duepuntozero'.
);
@ -251,7 +251,7 @@ Next crucial part of the theme.php file is a definition of an init function.
The name of the function is <theme-name>_init.
So in the case of quattro it is
function quattro_init(App &$a) {
function quattro_init(App $a) {
$a->theme_info = array();
set_template_engine($a, 'smarty3');
}


+ 3
- 3
include/Contact.php View File

@ -612,7 +612,7 @@ function get_contact($url, $uid = 0, $no_update = false) {
*
* @return string posts in HTML
*/
function posts_from_gcontact($a, $gcontact_id) {
function posts_from_gcontact(App $a, $gcontact_id) {
require_once('include/conversation.php');
@ -636,7 +636,7 @@ function posts_from_gcontact($a, $gcontact_id) {
$r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`,
`author-name` AS `name`, `owner-avatar` AS `photo`,
`owner-link` AS `url`, `owner-avatar` AS `thumb`
FROM `item` FORCE INDEX (`gcontactid_uid_created`)
FROM `item`
WHERE `gcontact-id` = %d AND $sql AND
NOT `deleted` AND NOT `moderated` AND `visible`
ORDER BY `item`.`created` DESC LIMIT %d, %d",
@ -664,7 +664,7 @@ function posts_from_gcontact($a, $gcontact_id) {
*
* @return string posts in HTML
*/
function posts_from_contact_url($a, $contact_url) {
function posts_from_contact_url(App $a, $contact_url) {
require_once('include/conversation.php');


+ 2
- 2
include/Photo.php View File

@ -283,7 +283,7 @@ class Photo {
do {
// FIXME - implement horizantal bias for scaling as in followin GD functions
// to allow very tall images to be constrained only horizontally.
// to allow very tall images to be constrained only horizontally.
$this->image->scaleImage($dest_width, $dest_height);
} while ($this->image->nextImage());
@ -943,7 +943,7 @@ function scale_image($width, $height, $max) {
return array("width" => $dest_width, "height" => $dest_height);
}
function store_photo($a, $uid, $imagedata = "", $url = "") {
function store_photo(App $a, $uid, $imagedata = "", $url = "") {
$r = q("SELECT `user`.`nickname`, `user`.`page-flags`, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid`
WHERE `user`.`uid` = %d AND `user`.`blocked` = 0 AND `contact`.`self` = 1 LIMIT 1",
intval($uid));


+ 15
- 15
include/acl_selectors.php View File

@ -135,7 +135,7 @@ function contact_selector($selname, $selclass, $preselected = false, $options) {
$o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"" . $x['size'] . "$\" $tabindex >\r\n";
$r = q("SELECT `id`, `name`, `url`, `network` FROM `contact`
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != ''
$sql_extra
ORDER BY `name` ASC ",
intval(local_user())
@ -210,7 +210,7 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
$o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" $tabindex >\r\n";
$r = q("SELECT `id`, `name`, `url`, `network` FROM `contact`
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != ''
$sql_extra
ORDER BY `name` ASC ",
intval(local_user())
@ -372,7 +372,7 @@ function populate_acl($user = null, $show_jotnets = false) {
}
function construct_acl_data(&$a, $user) {
function construct_acl_data(App $a, $user) {
// Get group and contact information for html ACL selector
$acl_data = acl_lookup($a, 'html');
@ -404,7 +404,7 @@ function construct_acl_data(&$a, $user) {
}
function acl_lookup(&$a, $out_type = 'json') {
function acl_lookup(App $a, $out_type = 'json') {
if (!local_user()) {
return '';
@ -449,8 +449,8 @@ function acl_lookup(&$a, $out_type = 'json') {
// autocomplete for editor mentions
if ($type=='' || $type=='c'){
$r = q("SELECT COUNT(*) AS c FROM `contact`
WHERE `uid` = %d AND `self` = 0
AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
WHERE `uid` = %d AND NOT `self`
AND NOT `blocked` AND NOT `pending` AND NOT `archive`
AND `notify` != '' $sql_extra2" ,
intval(local_user())
);
@ -461,8 +461,8 @@ function acl_lookup(&$a, $out_type = 'json') {
// autocomplete for Private Messages
$r = q("SELECT COUNT(*) AS c FROM `contact`
WHERE `uid` = %d AND `self` = 0
AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
WHERE `uid` = %d AND NOT `self`
AND NOT `blocked` AND NOT `pending` AND NOT `archive`
AND `network` IN ('%s','%s','%s') $sql_extra2" ,
intval(local_user()),
dbesc(NETWORK_DFRN),
@ -477,8 +477,8 @@ function acl_lookup(&$a, $out_type = 'json') {
// autocomplete for Contacts
$r = q("SELECT COUNT(*) AS c FROM `contact`
WHERE `uid` = %d AND `self` = 0
AND `pending` = 0 $sql_extra2" ,
WHERE `uid` = %d AND NOT `self`
AND NOT `pending` $sql_extra2" ,
intval(local_user())
);
$contact_count = (int)$r[0]['c'];
@ -525,7 +525,7 @@ function acl_lookup(&$a, $out_type = 'json') {
if ($type==''){
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact`
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != ''
AND NOT (`network` IN ('%s', '%s'))
$sql_extra2
ORDER BY `name` ASC ",
@ -536,7 +536,7 @@ function acl_lookup(&$a, $out_type = 'json') {
elseif ($type=='c'){
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact`
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != ''
AND NOT (`network` IN ('%s'))
$sql_extra2
ORDER BY `name` ASC ",
@ -546,7 +546,7 @@ function acl_lookup(&$a, $out_type = 'json') {
}
elseif($type == 'm') {
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive`
AND `network` IN ('%s','%s','%s')
$sql_extra2
ORDER BY `name` ASC ",
@ -687,11 +687,11 @@ function acl_lookup(&$a, $out_type = 'json') {
}
/**
* @brief Searching for global contacts for autocompletion
*
*
* @param App $a
* @return array with the search results
*/
function navbar_complete(App &$a) {
function navbar_complete(App $a) {
// logger('navbar_complete');


+ 15
- 15
include/api.php View File

@ -133,7 +133,7 @@
* @hook 'logged_in'
* array $user logged user record
*/
function api_login(App &$a){
function api_login(App $a){
// login with oauth
try{
$oauth = new FKOAuth1();
@ -251,7 +251,7 @@
* @param App $a
* @return string API call result
*/
function api_call(App &$a){
function api_call(App $a){
global $API, $called_api;
$type="json";
@ -404,7 +404,7 @@
* @param array $user_info
* @return array
*/
function api_rss_extra(&$a, $arr, $user_info){
function api_rss_extra(App $a, $arr, $user_info){
if (is_null($user_info)) $user_info = api_get_user($a);
$arr['$user'] = $user_info;
$arr['$rss'] = array(
@ -444,7 +444,7 @@
* @param int|string $contact_id Contact ID or URL
* @param string $type Return type (for errors)
*/
function api_get_user(&$a, $contact_id = Null, $type = "json"){
function api_get_user(App $a, $contact_id = Null, $type = "json"){
global $called_api;
$user = null;
$extra_query = "";
@ -712,7 +712,7 @@
* @param array $item : item from db
* @return array(array:author, array:owner)
*/
function api_item_get_user(&$a, $item) {
function api_item_get_user(App $a, $item) {
$status_user = api_get_user($a, $item["author-link"]);
@ -2451,7 +2451,7 @@
'homepage' => $profile['homepage'],
'users' => null);
return $profile;
}
}
}
/**
@ -2874,14 +2874,14 @@
// BadRequestException if no id specified (for clients using Twitter API)
if ($id == 0) throw new BadRequestException('Message id not specified');
// add parent-uri to sql command if specified by calling app
// add parent-uri to sql command if specified by calling app
$sql_extra = ($parenturi != "" ? " AND `parent-uri` = '" . dbesc($parenturi) . "'" : "");
// get data of the specified message id
$r = q("SELECT `id` FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra,
intval($uid),
intval($uid),
intval($id));
// error message if specified id is not in database
if (!dbm::is_result($r)) {
if ($verbose == "true") {
@ -2893,8 +2893,8 @@
}
// delete message
$result = q("DELETE FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra,
intval($uid),
$result = q("DELETE FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra,
intval($uid),
intval($id));
if ($verbose == "true") {
@ -3860,7 +3860,7 @@
// get data of the specified message id
$r = q("SELECT `id` FROM `mail` WHERE `id` = %d AND `uid` = %d",
intval($id),
intval($id),
intval($uid));
// error message if specified id is not in database
if (!dbm::is_result($r)) {
@ -3869,8 +3869,8 @@
}
// update seen indicator
$result = q("UPDATE `mail` SET `seen` = 1 WHERE `id` = %d AND `uid` = %d",
intval($id),
$result = q("UPDATE `mail` SET `seen` = 1 WHERE `id` = %d AND `uid` = %d",
intval($id),
intval($uid));
if ($result) {
@ -3921,7 +3921,7 @@
// message if nothing was found
if (!dbm::is_result($r))
$success = array('success' => false, 'search_results' => 'problem with query');
else if (count($r) == 0)
else if (count($r) == 0)
$success = array('success' => false, 'search_results' => 'nothing found');
else {
$ret = Array();


+ 1
- 1
include/conversation.php View File

@ -466,7 +466,7 @@ function item_condition() {
*/
if(!function_exists('conversation')) {
function conversation(&$a, $items, $mode, $update, $preview = false) {
function conversation(App $a, $items, $mode, $update, $preview = false) {
require_once('include/bbcode.php');
require_once('include/Contact.php');


+ 3
- 3
include/cron.php View File

@ -128,7 +128,7 @@ function cron_run(&$argv, &$argc){
proc_run(PRIORITY_LOW, 'include/expire.php');
proc_run(PRIORITY_LOW, 'include/dbclean.php');
proc_run(PRIORITY_MEDIUM, 'include/dbclean.php');
cron_update_photo_albums();
}
@ -343,7 +343,7 @@ function cron_poll_contacts($argc, $argv) {
*
* @param App $a
*/
function cron_clear_cache(App &$a) {
function cron_clear_cache(App $a) {
$last = get_config('system','cache_last_cleared');
@ -430,7 +430,7 @@ function cron_clear_cache(App &$a) {
*
* @param App $a
*/
function cron_repair_diaspora(App &$a) {
function cron_repair_diaspora(App $a) {
$r = q("SELECT `id`, `url` FROM `contact`
WHERE `network` = '%s' AND (`batch` = '' OR `notify` = '' OR `poll` = '' OR pubkey = '')
ORDER BY RAND() LIMIT 50", dbesc(NETWORK_DIASPORA));


+ 29
- 13
include/dbclean.php View File

@ -3,13 +3,18 @@
* @file include/dbclean.php
* @brief The script is called from time to time to clean the database entries and remove orphaned data.
*/
use \Friendica\Core\Config;
use \Friendica\Core\PConfig;
require_once("boot.php");
function dbclean_run(&$argv, &$argc) {
global $a, $db;
if (is_null($a))
if (is_null($a)) {
$a = new App;
}
if (is_null($db)) {
@include(".htconfig.php");
@ -18,8 +23,12 @@ function dbclean_run(&$argv, &$argc) {
unset($db_host, $db_user, $db_pass, $db_data);
}
load_config('config');
load_config('system');
Config::load('config');
Config::load('system');
if (!Config::get('system', 'dbclean', false)) {
return;
}
if ($argc == 2) {
$stage = intval($argv[1]);
@ -27,7 +36,7 @@ function dbclean_run(&$argv, &$argc) {
$stage = 0;
}
if (get_config("system", "worker") AND ($stage == 0)) {
if (Config::get("system", "worker") AND ($stage == 0)) {
proc_run(PRIORITY_LOW, 'include/dbclean.php', 1);
proc_run(PRIORITY_LOW, 'include/dbclean.php', 2);
proc_run(PRIORITY_LOW, 'include/dbclean.php', 3);
@ -48,11 +57,18 @@ function remove_orphans($stage = 0) {
$count = 0;
// With activated worker we split the deletion in many small tasks
if (Config::get("system", "worker")) {
$limit = 1000;
} else {
$limit = 10000;
}
if (($stage == 1) OR ($stage == 0)) {
logger("Deleting old global item entries from item table without user copy");
if ($db->q("SELECT `id` FROM `item` WHERE `uid` = 0
AND NOT EXISTS (SELECT `guid` FROM `item` AS `i` WHERE `item`.`guid` = `i`.`guid` AND `i`.`uid` != 0)
AND `received` < UTC_TIMESTAMP() - INTERVAL 90 DAY LIMIT 10000", true)) {
AND `received` < UTC_TIMESTAMP() - INTERVAL 90 DAY LIMIT ".intval($limit), true)) {
$count = $db->num_rows();
logger("found global item orphans: ".$count);
while ($orphan = $db->qfetch()) {
@ -65,7 +81,7 @@ function remove_orphans($stage = 0) {
if (($stage == 2) OR ($stage == 0)) {
logger("Deleting items without parents");
if ($db->q("SELECT `id` FROM `item` WHERE NOT EXISTS (SELECT `id` FROM `item` AS `i` WHERE `item`.`parent` = `i`.`id`) LIMIT 10000", true)) {
if ($db->q("SELECT `id` FROM `item` WHERE NOT EXISTS (SELECT `id` FROM `item` AS `i` WHERE `item`.`parent` = `i`.`id`) LIMIT ".intval($limit), true)) {
$count = $db->num_rows();
logger("found item orphans without parents: ".$count);
while ($orphan = $db->qfetch()) {
@ -78,7 +94,7 @@ function remove_orphans($stage = 0) {
if (($stage == 3) OR ($stage == 0)) {
logger("Deleting orphaned data from thread table");
if ($db->q("SELECT `iid` FROM `thread` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `thread`.`iid`)", true)) {
if ($db->q("SELECT `iid` FROM `thread` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `thread`.`iid`) LIMIT ".intval($limit), true)) {
$count = $db->num_rows();
logger("found thread orphans: ".$count);
while ($orphan = $db->qfetch()) {
@ -91,7 +107,7 @@ function remove_orphans($stage = 0) {
if (($stage == 4) OR ($stage == 0)) {
logger("Deleting orphaned data from notify table");
if ($db->q("SELECT `iid` FROM `notify` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `notify`.`iid`)", true)) {
if ($db->q("SELECT `iid` FROM `notify` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `notify`.`iid`) LIMIT ".intval($limit), true)) {
$count = $db->num_rows();
logger("found notify orphans: ".$count);
while ($orphan = $db->qfetch()) {
@ -104,7 +120,7 @@ function remove_orphans($stage = 0) {
if (($stage == 5) OR ($stage == 0)) {
logger("Deleting orphaned data from notify-threads table");
if ($db->q("SELECT `id` FROM `notify-threads` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `notify-threads`.`master-parent-item`)", true)) {
if ($db->q("SELECT `id` FROM `notify-threads` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `notify-threads`.`master-parent-item`) LIMIT ".intval($limit), true)) {
$count = $db->num_rows();
logger("found notify-threads orphans: ".$count);
while ($orphan = $db->qfetch()) {
@ -118,7 +134,7 @@ function remove_orphans($stage = 0) {
if (($stage == 6) OR ($stage == 0)) {
logger("Deleting orphaned data from sign table");
if ($db->q("SELECT `iid` FROM `sign` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `sign`.`iid`)", true)) {
if ($db->q("SELECT `iid` FROM `sign` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `sign`.`iid`) LIMIT ".intval($limit), true)) {
$count = $db->num_rows();
logger("found sign orphans: ".$count);
while ($orphan = $db->qfetch()) {
@ -132,7 +148,7 @@ function remove_orphans($stage = 0) {
if (($stage == 7) OR ($stage == 0)) {
logger("Deleting orphaned data from term table");
if ($db->q("SELECT `oid` FROM `term` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `term`.`oid`)", true)) {
if ($db->q("SELECT `oid` FROM `term` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `term`.`oid`) LIMIT ".intval($limit), true)) {
$count = $db->num_rows();
logger("found term orphans: ".$count);
while ($orphan = $db->qfetch()) {
@ -144,8 +160,8 @@ function remove_orphans($stage = 0) {
}
// Call it again if not all entries were purged
if (($stage != 0) AND ($count > 0) AND get_config("system", "worker")) {
proc_run(PRIORITY_LOW, 'include/dbclean.php');
if (($stage != 0) AND ($count > 0) AND Config::get("system", "worker")) {
proc_run(PRIORITY_MEDIUM, 'include/dbclean.php');
}
}


+ 42
- 44
include/dbstructure.php View File

@ -586,9 +586,16 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
"addr_uid" => array("addr", "uid"),
"nurl" => array("nurl"),
"uid_name" => array("uid", "name"),
"uid_self" => array("uid", "self"),
"alias_uid" => array("alias(32)", "uid"),
"uid_pending" => array("uid", "pending"),
"uid_blocked" => array("uid", "blocked"),
"uid_rel_network_poll" => array("uid", "rel", "network", "poll(64)", "archive"),
"uid_network_batch" => array("uid", "network", "batch(64)"),
"addr_uid" => array("addr(32)", "uid"),
"nurl_uid" => array("nurl(32)", "uid"),
"nick_uid" => array("nick(32)", "uid"),
)
);
$database["conv"] = array(
@ -644,7 +651,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
"uid_start" => array("uid", "start"),
)
);
$database["fcontact"] = array(
@ -669,7 +676,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
"addr" => array("addr"),
"addr" => array("addr(32)"),
)
);
$database["ffinder"] = array(
@ -692,7 +699,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
"server" => array("server"),
"server" => array("server(32)"),
)
);
$database["fsuggest"] = array(
@ -754,10 +761,10 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
"nurl" => array("nurl"),
"name" => array("name"),
"nick" => array("nick"),
"addr" => array("addr"),
"nurl" => array("nurl(32)"),
"name" => array("name(32)"),
"nick" => array("nick(32)"),
"addr" => array("addr(32)"),
"updated" => array("updated"),
)
);
@ -772,7 +779,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
"cid_uid_gcid_zcid" => array("cid","uid","gcid","zcid"),
"cid_uid_gcid_zcid" => array("UNIQUE", "cid","uid","gcid","zcid"),
"gcid" => array("gcid"),
"zcid" => array("zcid"),
)
@ -799,7 +806,9 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
"uid_gid_contactid" => array("uid","gid","contact-id"),
"gid_contactid" => array("gid", "contact-id"),
"uid_contactid" => array("uid", "contact-id"),
"uid_gid_contactid" => array("UNIQUE", "uid", "gid", "contact-id"),
)
);
$database["gserver"] = array(
@ -822,7 +831,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
"nurl" => array("nurl"),
"nurl" => array("nurl(32)"),
)
);
$database["hook"] = array(
@ -937,24 +946,17 @@ function db_definition($charset) {
"uid_network_received" => array("uid","network","received"),
"uid_received" => array("uid","received"),
"uid_network_commented" => array("uid","network","commented"),
"uid_commented" => array("uid","commented"),
"uid_title" => array("uid","title"),
"uid_thrparent" => array("uid","thr-parent"),
"uid_parenturi" => array("uid","parent-uri"),
"uid_contactid_id" => array("uid","contact-id","id"),
"uid_contactid_created" => array("uid","contact-id","created"),
"gcontactid_uid_created" => array("gcontact-id","uid","created"),
"authorid_created" => array("author-id","created"),
"ownerid_created" => array("owner-id","created"),
"wall_body" => array("wall","body(6)"),
"uid_visible_moderated_created" => array("uid","visible","moderated","created"),
"uid_uri" => array("uid", "uri"),
"uid_wall_created" => array("uid","wall","created"),
"resource-id" => array("resource-id"),
"uid_type" => array("uid","type"),
"uid_starred_id" => array("uid","starred", "id"),
"contactid_allowcid_allowpid_denycid_denygid" => array("contact-id","allow_cid(10)","allow_gid(10)","deny_cid(10)","deny_gid(10)"),
"uid_wall_parent_created" => array("uid","wall","parent","created"),
"uid_type_changed" => array("uid","type","changed"),
"contactid_verb" => array("contact-id","verb"),
"deleted_changed" => array("deleted","changed"),
@ -976,7 +978,7 @@ function db_definition($charset) {
"PRIMARY" => array("id"),
"uid" => array("uid"),
"sid" => array("sid"),
"service" => array("service"),
"service" => array("service(32)"),
"iid" => array("iid"),
)
);
@ -1014,11 +1016,10 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
"guid" => array("guid"),
"uid_seen" => array("uid", "seen"),
"convid" => array("convid"),
"reply" => array("reply"),
"uri" => array("uri"),
"parent-uri" => array("parent-uri"),
"uri" => array("uri(64)"),
"parent-uri" => array("parent-uri(64)"),
)
);
$database["mailacct"] = array(
@ -1074,7 +1075,11 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
"uid_hash" => array("uid", "hash"),
"uid_seen_date" => array("uid", "seen", "date"),
"uid_type_link" => array("uid", "type", "link"),
"uid_link" => array("uid", "link"),
"uid_date" => array("uid", "date"),
)
);
$database["notify-threads"] = array(
@ -1088,7 +1093,6 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"master-parent-item" => array("master-parent-item"),
"receiver-uid" => array("receiver-uid"),
)
);
$database["oembed"] = array(
@ -1157,9 +1161,9 @@ function db_definition($charset) {
"PRIMARY" => array("id"),
"uid_contactid" => array("uid", "contact-id"),
"uid_profile" => array("uid", "profile"),
"uid_album_created" => array("uid", "album", "created"),
"resource-id" => array("resource-id"),
"guid" => array("guid"),
"uid_album_created" => array("uid", "album(32)", "created"),
"uid_album_resource-id_created" => array("uid", "album(32)", "resource-id(64)", "created"),
"resource-id" => array("resource-id(64)"),
)
);
$database["poll"] = array(
@ -1252,7 +1256,6 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
"hometown" => array("hometown"),
)
);
$database["profile_check"] = array(
@ -1325,7 +1328,6 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
"term" => array("term"),
)
);
$database["session"] = array(
@ -1337,7 +1339,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
"sid" => array("sid"),
"sid" => array("sid(64)"),
"expire" => array("expire"),
)
);