From 37ce5ce88624163c8a748bfe16a2def5c18a53dc Mon Sep 17 00:00:00 2001
From: Michael
Date: Tue, 20 Dec 2016 07:14:59 +0000
Subject: [PATCH 01/24] Remove indexes that we don't use anymore
---
include/dbstructure.php | 42 ++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index 94e8da4a44..5450c31f69 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -905,24 +905,24 @@ function db_definition($charset) {
"uid_created" => array("uid","created"),
"uid_unseen_contactid" => array("uid","unseen","contact-id"),
"uid_network_received" => array("uid","network","received"),
- "uid_received" => array("uid","received"),
+ // "uid_received" => array("uid","received"),
"uid_network_commented" => array("uid","network","commented"),
- "uid_commented" => array("uid","commented"),
- "uid_title" => array("uid","title"),
+ // "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"),
+ // "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"),
+ // "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"),
+ // "resource-id" => array("resource-id"),
"uid_type" => array("uid","type"),
- "uid_starred_id" => array("uid","starred", "id"),
+ // "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"),
@@ -931,7 +931,7 @@ function db_definition($charset) {
"uid_wall_changed" => array("uid","wall","changed"),
"uid_eventid" => array("uid","event-id"),
"uid_authorlink" => array("uid","author-link"),
- "uid_ownerlink" => array("uid","owner-link"),
+ // "uid_ownerlink" => array("uid","owner-link"),
)
);
$database["item_id"] = array(
@@ -984,9 +984,9 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
- "guid" => array("guid"),
- "convid" => array("convid"),
- "reply" => array("reply"),
+ // "guid" => array("guid"),
+ // "convid" => array("convid"),
+ // "reply" => array("reply"),
"uri" => array("uri"),
"parent-uri" => array("parent-uri"),
)
@@ -1058,7 +1058,7 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"master-parent-item" => array("master-parent-item"),
- "receiver-uid" => array("receiver-uid"),
+ // "receiver-uid" => array("receiver-uid"),
)
);
$database["oembed"] = array(
@@ -1129,7 +1129,7 @@ function db_definition($charset) {
"uid_profile" => array("uid", "profile"),
"uid_album_created" => array("uid", "album", "created"),
"resource-id" => array("resource-id"),
- "guid" => array("guid"),
+ // "guid" => array("guid"),
)
);
$database["poll"] = array(
@@ -1268,7 +1268,7 @@ function db_definition($charset) {
"cid" => array("cid"),
"created" => array("created"),
"last" => array("last"),
- "network" => array("network"),
+ // "network" => array("network"),
"batch" => array("batch"),
)
);
@@ -1362,7 +1362,7 @@ function db_definition($charset) {
"uid_term_tid" => array("uid","term","tid"),
"type_term" => array("type","term"),
"uid_otype_type_term_global_created" => array("uid","otype","type","term","global","created"),
- "otype_type_term_tid" => array("otype","type","term","tid"),
+ // "otype_type_term_tid" => array("otype","type","term","tid"),
"uid_otype_type_url" => array("uid","otype","type","url"),
"guid" => array("guid"),
)
@@ -1404,11 +1404,11 @@ function db_definition($charset) {
"uid_network_created" => array("uid","network","created"),
"uid_contactid_commented" => array("uid","contact-id","commented"),
"uid_contactid_created" => array("uid","contact-id","created"),
- "uid_gcontactid_commented" => array("uid","gcontact-id","commented"),
- "uid_gcontactid_created" => array("uid","gcontact-id","created"),
- "wall_private_received" => array("wall","private","received"),
+ // "uid_gcontactid_commented" => array("uid","gcontact-id","commented"),
+ // "uid_gcontactid_created" => array("uid","gcontact-id","created"),
+ // "wall_private_received" => array("wall","private","received"),
"uid_created" => array("uid","created"),
- "uid_commented" => array("uid","commented"),
+ // "uid_commented" => array("uid","commented"),
)
);
$database["tokens"] = array(
From 44d966574dc2edc58e1f5c0402a1956d4d554235 Mon Sep 17 00:00:00 2001
From: Michael
Date: Wed, 4 Jan 2017 19:13:50 +0000
Subject: [PATCH 02/24] Some more indexes and other query improvements
---
include/dbclean.php | 7 ++++-
include/dbstructure.php | 64 ++++++++++++++++++++---------------------
include/diaspora.php | 26 +++++++++++++++--
3 files changed, 61 insertions(+), 36 deletions(-)
diff --git a/include/dbclean.php b/include/dbclean.php
index 0baece8168..1f0e5834f7 100644
--- a/include/dbclean.php
+++ b/include/dbclean.php
@@ -8,8 +8,9 @@ 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");
@@ -21,6 +22,10 @@ function dbclean_run(&$argv, &$argc) {
load_config('config');
load_config('system');
+ if (!get_config("system", "dbclean")) {
+ return;
+ }
+
if ($argc == 2) {
$stage = intval($argv[1]);
} else {
diff --git a/include/dbstructure.php b/include/dbstructure.php
index 2dd7a6f182..706b3650d8 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -538,7 +538,7 @@ function db_definition($charset) {
"site-pubkey" => array("type" => "text"),
"issued-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"dfrn-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
- "url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
+ "url" => array("type" => "varchar(255)", "not null" => "1", "default" => "", "collation" => "bin"),
"nurl" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"addr" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"alias" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
@@ -587,8 +587,8 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
- "addr_uid" => array("addr", "uid"),
- "nurl" => array("nurl"),
+ "addr_uid" => array("addr(32)", "uid"),
+ "nurl" => array("nurl(32)"),
)
);
$database["conv"] = array(
@@ -669,7 +669,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "addr" => array("addr"),
+ "addr" => array("addr(32)"),
)
);
$database["ffinder"] = array(
@@ -692,7 +692,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "server" => array("server"),
+ "server" => array("server(32)"),
)
);
$database["fsuggest"] = array(
@@ -754,10 +754,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"),
)
);
@@ -822,7 +822,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "nurl" => array("nurl"),
+ "nurl" => array("nurl(32)"),
)
);
$database["hook"] = array(
@@ -935,10 +935,10 @@ function db_definition($charset) {
"uid_created" => array("uid","created"),
"uid_unseen_contactid" => array("uid","unseen","contact-id"),
"uid_network_received" => array("uid","network","received"),
- // "uid_received" => array("uid","received"),
+ "uid_received" => array("uid","received"),
"uid_network_commented" => array("uid","network","commented"),
// "uid_commented" => array("uid","commented"),
- // "uid_title" => array("uid","title"),
+ "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"),
@@ -950,18 +950,18 @@ function db_definition($charset) {
// "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"),
+ "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_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"),
"uid_wall_changed" => array("uid","wall","changed"),
"uid_eventid" => array("uid","event-id"),
"uid_authorlink" => array("uid","author-link"),
- // "uid_ownerlink" => array("uid","owner-link"),
+ "uid_ownerlink" => array("uid","owner-link"),
)
);
$database["item_id"] = array(
@@ -976,7 +976,7 @@ function db_definition($charset) {
"PRIMARY" => array("id"),
"uid" => array("uid"),
"sid" => array("sid"),
- "service" => array("service"),
+ "service" => array("service(32)"),
"iid" => array("iid"),
)
);
@@ -1015,10 +1015,10 @@ function db_definition($charset) {
"PRIMARY" => array("id"),
"uid" => array("uid"),
// "guid" => array("guid"),
- // "convid" => array("convid"),
+ "convid" => array("convid"),
// "reply" => array("reply"),
"uri" => array("uri"),
- "parent-uri" => array("parent-uri"),
+ "parent-uri" => array("parent-uri(64)"),
)
);
$database["mailacct"] = array(
@@ -1157,8 +1157,8 @@ 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"),
+ "uid_album_created" => array("uid", "album(32)", "created"),
+ "resource-id" => array("resource-id(64)"),
// "guid" => array("guid"),
)
);
@@ -1252,7 +1252,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "hometown" => array("hometown"),
+ // "hometown" => array("hometown(32)"),
)
);
$database["profile_check"] = array(
@@ -1298,7 +1298,7 @@ function db_definition($charset) {
"cid" => array("cid"),
"created" => array("created"),
"last" => array("last"),
- // "network" => array("network"),
+ "network" => array("network"),
"batch" => array("batch"),
)
);
@@ -1325,7 +1325,7 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
- "term" => array("term"),
+ // "term" => array("term(32)"),
)
);
$database["session"] = array(
@@ -1337,7 +1337,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "sid" => array("sid"),
+ "sid" => array("sid(64)"),
"expire" => array("expire"),
)
);
@@ -1389,12 +1389,12 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("tid"),
"oid_otype_type_term" => array("oid","otype","type","term"),
- "uid_term_tid" => array("uid","term","tid"),
- "type_term" => array("type","term"),
- "uid_otype_type_term_global_created" => array("uid","otype","type","term","global","created"),
+ "uid_term_tid" => array("uid","term(32)","tid"),
+ "type_term" => array("type","term(32)"),
+ "uid_otype_type_term_global_created" => array("uid","otype","type","term(32)","global","created"),
// "otype_type_term_tid" => array("otype","type","term","tid"),
- "uid_otype_type_url" => array("uid","otype","type","url"),
- "guid" => array("guid"),
+ "uid_otype_type_url" => array("uid","otype","type","url(64)"),
+ "guid" => array("guid(64)"),
)
);
$database["thread"] = array(
@@ -1438,7 +1438,7 @@ function db_definition($charset) {
// "uid_gcontactid_created" => array("uid","gcontact-id","created"),
// "wall_private_received" => array("wall","private","received"),
"uid_created" => array("uid","created"),
- // "uid_commented" => array("uid","commented"),
+ "uid_commented" => array("uid","commented"),
)
);
$database["tokens"] = array(
@@ -1502,7 +1502,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("uid"),
- "nickname" => array("nickname"),
+ "nickname" => array("nickname(32)"),
)
);
$database["userd"] = array(
@@ -1512,7 +1512,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "username" => array("username"),
+ "username" => array("username(32)"),
)
);
$database["workerqueue"] = array(
diff --git a/include/diaspora.php b/include/diaspora.php
index fbfc497b59..1cb4f0e922 100644
--- a/include/diaspora.php
+++ b/include/diaspora.php
@@ -736,13 +736,30 @@ class Diaspora {
* @return The contact id
*/
private static function contact_by_handle($uid, $handle) {
+
+ // First do a direct search on the contact table
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1",
intval($uid),
dbesc($handle)
);
- if ($r)
+ if ($r) {
+ //logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - first try", LOGGER_DEBUG);
return $r[0];
+ } else {
+ // We haven't found it?
+ // We use another function for it that will possibly create a contact entry
+ $cid = get_contact($handle, $uid);
+
+ if ($cid > 0) {
+ $r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid));
+
+ if (dbm::is_result($r)) {
+ logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - second try", LOGGER_DEBUG);
+ return $r[0];
+ }
+ }
+ }
$handle_parts = explode("@", $handle);
$nurl_sql = "%%://".$handle_parts[1]."%%/profile/".$handle_parts[0];
@@ -751,9 +768,12 @@ class Diaspora {
intval($uid),
dbesc($nurl_sql)
);
- if($r)
+ if(dbm::is_result($r)) {
+ logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - third try", LOGGER_DEBUG);
return $r[0];
+ }
+ logger("Haven't found contact for user ".$uid." and handle ".$handle, LOGGER_DEBUG);
return false;
}
@@ -828,7 +848,7 @@ class Diaspora {
* @return int|bool message id if the message already was stored into the system - or false.
*/
private static function message_exists($uid, $guid) {
- $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
+ $r = q("SELECT `guid` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
intval($uid),
dbesc($guid)
);
From c2213760412f6d178d77451d69ae467534042457 Mon Sep 17 00:00:00 2001
From: Michael
Date: Wed, 4 Jan 2017 23:12:28 +0000
Subject: [PATCH 03/24] Some notification thingy
---
include/dbstructure.php | 7 +++++--
include/enotify.php | 4 ++--
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index 706b3650d8..646fc408cf 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -538,7 +538,7 @@ function db_definition($charset) {
"site-pubkey" => array("type" => "text"),
"issued-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"dfrn-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
- "url" => array("type" => "varchar(255)", "not null" => "1", "default" => "", "collation" => "bin"),
+ "url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"nurl" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"addr" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"alias" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
@@ -1074,7 +1074,10 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "uid" => array("uid"),
+ "uid_hash" => array("uid", "hash"),
+ "uid_seen" => array("uid", "seen"),
+ "uid_type_link" => array("uid", "type", "link"),
+ "uid_link" => array("uid", "link"),
)
);
$database["notify-threads"] = array(
diff --git a/include/enotify.php b/include/enotify.php
index aa29e117a6..ebc27309db 100644
--- a/include/enotify.php
+++ b/include/enotify.php
@@ -105,7 +105,7 @@ function notification($params) {
// If so don't create a second notification
$p = null;
- $p = q("SELECT `id` FROM `notify` WHERE (`type` = %d OR `type` = %d OR `type` = %d) AND `link` = '%s' AND `uid` = %d LIMIT 1",
+ $p = q("SELECT `id` FROM `notify` WHERE `type` IN (%d, %d, %d) AND `link` = '%s' AND `uid` = %d LIMIT 1",
intval(NOTIFY_TAGSELF),
intval(NOTIFY_COMMENT),
intval(NOTIFY_SHARE),
@@ -472,7 +472,7 @@ function notification($params) {
// After we've stored everything, look again to see if there are any duplicates and if so remove them
$p = null;
- $p = q("SELECT `id` FROM `notify` WHERE (`type` = %d OR `type` = %d) AND `link` = '%s' AND `uid` = %d ORDER BY `id`",
+ $p = q("SELECT `id` FROM `notify` WHERE `type` IN (%d, %d) AND `link` = '%s' AND `uid` = %d ORDER BY `id`",
intval(NOTIFY_TAGSELF),
intval(NOTIFY_COMMENT),
dbesc($params['link']),
From cefb36fb67d88dcce9374aa7332770cccd861bf3 Mon Sep 17 00:00:00 2001
From: Michael
Date: Wed, 4 Jan 2017 23:28:51 +0000
Subject: [PATCH 04/24] Some more indexes on the contact table
---
include/dbstructure.php | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index 646fc408cf..bb77579142 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -588,7 +588,8 @@ function db_definition($charset) {
"PRIMARY" => array("id"),
"uid" => array("uid"),
"addr_uid" => array("addr(32)", "uid"),
- "nurl" => array("nurl(32)"),
+ "nurl_uid" => array("nurl(32)", "uid"),
+ "nick_uid" => array("nick(32)", "uid"),
)
);
$database["conv"] = array(
From 00d7835ba6c8538fa5f9e65408b19535fbfb0b38 Mon Sep 17 00:00:00 2001
From: Michael
Date: Thu, 5 Jan 2017 07:12:13 +0000
Subject: [PATCH 05/24] Some more contact indexes
---
include/dbstructure.php | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index bb77579142..46681c0d35 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -587,6 +587,8 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
+ "uid_batch" => array("uid", "batch(64)"),
+ "uid_network" => array("uid", "network"),
"addr_uid" => array("addr(32)", "uid"),
"nurl_uid" => array("nurl(32)", "uid"),
"nick_uid" => array("nick(32)", "uid"),
From db1c6c06d619a7bd557d00e3b865063379316d9a Mon Sep 17 00:00:00 2001
From: Michael
Date: Thu, 5 Jan 2017 07:30:10 +0000
Subject: [PATCH 06/24] Finding the best index ...
---
include/dbstructure.php | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index 46681c0d35..2aea6ec58e 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -1078,9 +1078,10 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"uid_hash" => array("uid", "hash"),
- "uid_seen" => array("uid", "seen"),
+ "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(
From a92c5f464d3f0ee25a539607ca5a4f1dd7f3297f Mon Sep 17 00:00:00 2001
From: Michael
Date: Thu, 5 Jan 2017 08:02:21 +0000
Subject: [PATCH 07/24] Hopefully this it it ...
---
include/dbstructure.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index 2aea6ec58e..eaa0202c5b 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -587,6 +587,7 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
+ "uid_self" => array("uid", "self"),
"uid_batch" => array("uid", "batch(64)"),
"uid_network" => array("uid", "network"),
"addr_uid" => array("addr(32)", "uid"),
From a4e437b56fbbcb43ce7bdea291dae04f52bab184 Mon Sep 17 00:00:00 2001
From: Michael
Date: Thu, 5 Jan 2017 09:10:02 +0000
Subject: [PATCH 08/24] Contact testing
---
include/dbstructure.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index eaa0202c5b..f0dad26796 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -588,7 +588,7 @@ function db_definition($charset) {
"PRIMARY" => array("id"),
"uid" => array("uid"),
"uid_self" => array("uid", "self"),
- "uid_batch" => array("uid", "batch(64)"),
+ "uid_network_batch_archive" => array("uid", "network", "batch(64)", "archive"),
"uid_network" => array("uid", "network"),
"addr_uid" => array("addr(32)", "uid"),
"nurl_uid" => array("nurl(32)", "uid"),
From 9c7a2d2f9ac360ee07a855bab244b17807ae458b Mon Sep 17 00:00:00 2001
From: Michael
Date: Thu, 5 Jan 2017 09:32:16 +0000
Subject: [PATCH 09/24] Another index
---
include/dbstructure.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index f0dad26796..238fd1f360 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -592,6 +592,7 @@ function db_definition($charset) {
"uid_network" => array("uid", "network"),
"addr_uid" => array("addr(32)", "uid"),
"nurl_uid" => array("nurl(32)", "uid"),
+ "url_uid" => array("url(32)", "uid"),
"nick_uid" => array("nick(32)", "uid"),
)
);
From 7aaf91a620cff8303d3052f1beb973d43d670431 Mon Sep 17 00:00:00 2001
From: Michael
Date: Thu, 5 Jan 2017 13:16:27 +0000
Subject: [PATCH 10/24] Removing and adding some indexes
---
include/dbstructure.php | 4 +---
include/redir.php | 14 +++++++-------
2 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index 238fd1f360..f7f44fd605 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -589,10 +589,8 @@ function db_definition($charset) {
"uid" => array("uid"),
"uid_self" => array("uid", "self"),
"uid_network_batch_archive" => array("uid", "network", "batch(64)", "archive"),
- "uid_network" => array("uid", "network"),
"addr_uid" => array("addr(32)", "uid"),
"nurl_uid" => array("nurl(32)", "uid"),
- "url_uid" => array("url(32)", "uid"),
"nick_uid" => array("nick(32)", "uid"),
)
);
@@ -1022,7 +1020,7 @@ function db_definition($charset) {
// "guid" => array("guid"),
"convid" => array("convid"),
// "reply" => array("reply"),
- "uri" => array("uri"),
+ "uri" => array("uri(64)"),
"parent-uri" => array("parent-uri(64)"),
)
);
diff --git a/include/redir.php b/include/redir.php
index d8bb764396..bbe8a11ec4 100644
--- a/include/redir.php
+++ b/include/redir.php
@@ -27,13 +27,13 @@ function auto_redir(&$a, $contact_nick) {
$baseurl = substr($baseurl, $domain_st + 3);
$nurl = normalise_link($baseurl);
-
- $r = q("SELECT id FROM contact WHERE uid = ( SELECT uid FROM user WHERE nickname = '%s' LIMIT 1 )
- AND nick = '%s' AND self = 0 AND ( url LIKE '%%%s%%' or nurl LIKE '%%%s%%' ) AND blocked = 0 AND pending = 0 LIMIT 1",
- dbesc($contact_nick),
- dbesc($a->user['nickname']),
- dbesc($baseurl),
- dbesc($nurl)
+ /// @todo Why is there a query for "nurl" *and* "nurl"? Especially this normalising is strange.
+ $r = q("SELECT `id` FROM `contact` WHERE `uid` = (SELECT `uid` FROM `user` WHERE `nickname` = '%s' LIMIT 1)
+ AND `nick` = '%s' AND NOT `self` AND (`url` LIKE '%%%s%%' OR `nurl` LIKE '%%%s%%') AND NOT `blocked` AND NOT `pending` LIMIT 1",
+ dbesc($contact_nick),
+ dbesc($a->user['nickname']),
+ dbesc($baseurl),
+ dbesc($nurl)
);
if ((! dbm::is_result($r)) || $r[0]['id'] == remote_user()) {
From 6cdccbe2f67244213cf8c50e64ab1c6eed1d0e59 Mon Sep 17 00:00:00 2001
From: Michael
Date: Thu, 5 Jan 2017 17:48:51 +0000
Subject: [PATCH 11/24] Will we now find the best index fort the contact?
---
include/dbstructure.php | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index f7f44fd605..7b3be5a31a 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -588,6 +588,8 @@ function db_definition($charset) {
"PRIMARY" => array("id"),
"uid" => array("uid"),
"uid_self" => array("uid", "self"),
+ "uid_batch" => array("uid", "batch"),
+ "uid_pending" => array("uid", "pending"),
"uid_network_batch_archive" => array("uid", "network", "batch(64)", "archive"),
"addr_uid" => array("addr(32)", "uid"),
"nurl_uid" => array("nurl(32)", "uid"),
From 2deb2b637b27e145f0ad49ac2bf07f12de53040d Mon Sep 17 00:00:00 2001
From: Michael
Date: Thu, 5 Jan 2017 22:23:00 +0000
Subject: [PATCH 12/24] Some new indexes and some removed.
---
include/dbstructure.php | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index 7b3be5a31a..7b9b092c49 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -586,11 +586,13 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "uid" => array("uid"),
+ "uid_name" => array("uid", "name"),
"uid_self" => array("uid", "self"),
- "uid_batch" => array("uid", "batch"),
+ "alias_uid" => array("alias(32)", "uid"),
"uid_pending" => array("uid", "pending"),
- "uid_network_batch_archive" => array("uid", "network", "batch(64)", "archive"),
+ "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"),
@@ -649,7 +651,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "uid" => array("uid"),
+ "uid_start" => array("uid", "start"),
)
);
$database["fcontact"] = array(
@@ -777,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"),
)
@@ -804,7 +806,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "uid_gid_contactid" => array("uid","gid","contact-id"),
+ "uid_gid_contactid" => array("UNIQUE", "uid","gid","contact-id"),
)
);
$database["gserver"] = array(
@@ -1019,6 +1021,7 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
+ "uid_seen" => array("uid", "seen"),
// "guid" => array("guid"),
"convid" => array("convid"),
// "reply" => array("reply"),
From ff3728be47cd02226a069f410cb4b85d5b23f291 Mon Sep 17 00:00:00 2001
From: Michael
Date: Thu, 5 Jan 2017 22:51:31 +0000
Subject: [PATCH 13/24] Cleaning up the stuff
---
include/dbstructure.php | 17 -----------------
1 file changed, 17 deletions(-)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index 7b9b092c49..8f47dc16e9 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -944,24 +944,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"),
@@ -1022,9 +1015,7 @@ function db_definition($charset) {
"PRIMARY" => array("id"),
"uid" => array("uid"),
"uid_seen" => array("uid", "seen"),
- // "guid" => array("guid"),
"convid" => array("convid"),
- // "reply" => array("reply"),
"uri" => array("uri(64)"),
"parent-uri" => array("parent-uri(64)"),
)
@@ -1100,7 +1091,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(
@@ -1171,7 +1161,6 @@ function db_definition($charset) {
"uid_profile" => array("uid", "profile"),
"uid_album_created" => array("uid", "album(32)", "created"),
"resource-id" => array("resource-id(64)"),
- // "guid" => array("guid"),
)
);
$database["poll"] = array(
@@ -1264,7 +1253,6 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- // "hometown" => array("hometown(32)"),
)
);
$database["profile_check"] = array(
@@ -1337,7 +1325,6 @@ function db_definition($charset) {
"indexes" => array(
"PRIMARY" => array("id"),
"uid" => array("uid"),
- // "term" => array("term(32)"),
)
);
$database["session"] = array(
@@ -1404,7 +1391,6 @@ function db_definition($charset) {
"uid_term_tid" => array("uid","term(32)","tid"),
"type_term" => array("type","term(32)"),
"uid_otype_type_term_global_created" => array("uid","otype","type","term(32)","global","created"),
- // "otype_type_term_tid" => array("otype","type","term","tid"),
"uid_otype_type_url" => array("uid","otype","type","url(64)"),
"guid" => array("guid(64)"),
)
@@ -1446,9 +1432,6 @@ function db_definition($charset) {
"uid_network_created" => array("uid","network","created"),
"uid_contactid_commented" => array("uid","contact-id","commented"),
"uid_contactid_created" => array("uid","contact-id","created"),
- // "uid_gcontactid_commented" => array("uid","gcontact-id","commented"),
- // "uid_gcontactid_created" => array("uid","gcontact-id","created"),
- // "wall_private_received" => array("wall","private","received"),
"uid_created" => array("uid","created"),
"uid_commented" => array("uid","commented"),
)
From 58c229031edeeb6c230ac73837e12a4d95ebbe79 Mon Sep 17 00:00:00 2001
From: Michael
Date: Thu, 5 Jan 2017 22:56:49 +0000
Subject: [PATCH 14/24] Now for the database version
---
boot.php | 2 +-
update.php | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/boot.php b/boot.php
index aad8813766..5bf535ed91 100644
--- a/boot.php
+++ b/boot.php
@@ -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.
diff --git a/update.php b/update.php
index 3bd9cbe610..058536d821 100644
--- a/update.php
+++ b/update.php
@@ -1,6 +1,6 @@
Date: Fri, 6 Jan 2017 06:37:27 +0000
Subject: [PATCH 15/24] Removed some removed indexes
---
include/Contact.php | 2 +-
mod/community.php | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/Contact.php b/include/Contact.php
index b1f63cbdfd..ea8a5f108a 100644
--- a/include/Contact.php
+++ b/include/Contact.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",
diff --git a/mod/community.php b/mod/community.php
index d7fd2bb933..b1b5c2fd29 100644
--- a/mod/community.php
+++ b/mod/community.php
@@ -121,7 +121,7 @@ function community_getitems($start, $itemspage) {
return(community_getpublicitems($start, $itemspage));
$r = qu("SELECT %s
- FROM `thread` FORCE INDEX (`wall_private_received`)
+ FROM `thread`
INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND NOT `user`.`hidewall`
INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = ''
From 680b16d036a1dcdd72a6b960ae2a0f285d9d0223 Mon Sep 17 00:00:00 2001
From: Michael
Date: Fri, 6 Jan 2017 07:03:35 +0000
Subject: [PATCH 16/24] Added documentation
---
doc/htconfig.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/doc/htconfig.md b/doc/htconfig.md
index fb257c3dac..90bf78b872 100644
--- a/doc/htconfig.md
+++ b/doc/htconfig.md
@@ -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.
From cb5df4d715a9710c2957ad4928762e90d5548298 Mon Sep 17 00:00:00 2001
From: Michael
Date: Fri, 6 Jan 2017 13:30:12 +0000
Subject: [PATCH 17/24] Some corrections
---
include/diaspora.php | 9 +++------
include/redir.php | 2 +-
2 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/include/diaspora.php b/include/diaspora.php
index 1cb4f0e922..2b9e61331f 100644
--- a/include/diaspora.php
+++ b/include/diaspora.php
@@ -743,8 +743,7 @@ class Diaspora {
dbesc($handle)
);
- if ($r) {
- //logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - first try", LOGGER_DEBUG);
+ if (dbm::is_result($r)) {
return $r[0];
} else {
// We haven't found it?
@@ -755,7 +754,6 @@ class Diaspora {
$r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid));
if (dbm::is_result($r)) {
- logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - second try", LOGGER_DEBUG);
return $r[0];
}
}
@@ -769,7 +767,6 @@ class Diaspora {
dbesc($nurl_sql)
);
if(dbm::is_result($r)) {
- logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - third try", LOGGER_DEBUG);
return $r[0];
}
@@ -848,12 +845,12 @@ class Diaspora {
* @return int|bool message id if the message already was stored into the system - or false.
*/
private static function message_exists($uid, $guid) {
- $r = q("SELECT `guid` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
+ $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
intval($uid),
dbesc($guid)
);
- if ($r) {
+ if (dbm::is_result($r)) {
logger("message ".$guid." already exists for user ".$uid);
return $r[0]["id"];
}
diff --git a/include/redir.php b/include/redir.php
index bbe8a11ec4..d29159ed03 100644
--- a/include/redir.php
+++ b/include/redir.php
@@ -27,7 +27,7 @@ function auto_redir(&$a, $contact_nick) {
$baseurl = substr($baseurl, $domain_st + 3);
$nurl = normalise_link($baseurl);
- /// @todo Why is there a query for "nurl" *and* "nurl"? Especially this normalising is strange.
+ /// @todo Why is there a query for "url" *and* "nurl"? Especially this normalising is strange.
$r = q("SELECT `id` FROM `contact` WHERE `uid` = (SELECT `uid` FROM `user` WHERE `nickname` = '%s' LIMIT 1)
AND `nick` = '%s' AND NOT `self` AND (`url` LIKE '%%%s%%' OR `nurl` LIKE '%%%s%%') AND NOT `blocked` AND NOT `pending` LIMIT 1",
dbesc($contact_nick),
From 414c5ddae08ca3a49ce570b481f2656fd0a58ea0 Mon Sep 17 00:00:00 2001
From: Michael
Date: Sat, 7 Jan 2017 09:05:52 +0000
Subject: [PATCH 18/24] Use Config class/Option to deactivate the count on
albums
---
doc/htconfig.md | 3 ++-
include/dbclean.php | 6 +++++-
include/photos.php | 35 +++++++++++++++++++++++++----------
3 files changed, 32 insertions(+), 12 deletions(-)
diff --git a/doc/htconfig.md b/doc/htconfig.md
index 90bf78b872..05a2a7a963 100644
--- a/doc/htconfig.md
+++ b/doc/htconfig.md
@@ -46,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.
diff --git a/include/dbclean.php b/include/dbclean.php
index 1f0e5834f7..29c4173080 100644
--- a/include/dbclean.php
+++ b/include/dbclean.php
@@ -3,6 +3,10 @@
* @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) {
@@ -22,7 +26,7 @@ function dbclean_run(&$argv, &$argc) {
load_config('config');
load_config('system');
- if (!get_config("system", "dbclean")) {
+ if (!Config::get('system', 'dbclean', false)) {
return;
}
diff --git a/include/photos.php b/include/photos.php
index 2beb23ffaf..7cdd14bf6d 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -4,6 +4,9 @@
* @brief Functions related to photo handling.
*/
+use \Friendica\Core\Config;
+use \Friendica\Core\PConfig;
+
function getGps($exifCoord, $hemi) {
$degrees = count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0;
$minutes = count($exifCoord) > 1 ? gps2Num($exifCoord[1]) : 0;
@@ -42,16 +45,28 @@ function photo_albums($uid, $update = false) {
$key = "photo_albums:".$uid.":".local_user().":".remote_user();
$albums = Cache::get($key);
if (is_null($albums) OR $update) {
- /// @todo This query needs to be renewed. It is really slow
- // At this time we just store the data in the cache
- $albums = qu("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`
- FROM `photo` USE INDEX (`uid_album_created`)
- WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra
- GROUP BY `album` ORDER BY `created` DESC",
- intval($uid),
- dbesc('Contact Photos'),
- dbesc(t('Contact Photos'))
- );
+ if (!Config::get('system', 'no_count', false)) {
+ /// @todo This query needs to be renewed. It is really slow
+ // At this time we just store the data in the cache
+ $albums = qu("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`
+ FROM `photo` USE INDEX (`uid_album_created`)
+ WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra
+ GROUP BY `album` ORDER BY `created` DESC",
+ intval($uid),
+ dbesc('Contact Photos'),
+ dbesc(t('Contact Photos'))
+ );
+ } else {
+ // This query doesn't do the count and is much faster
+ $albums = qu("SELECT DISTINCT(`album`), '' AS `total`
+ FROM `photo` USE INDEX (`uid_album_created`)
+ WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra
+ GROUP BY `album` ORDER BY `created` DESC",
+ intval($uid),
+ dbesc('Contact Photos'),
+ dbesc(t('Contact Photos'))
+ );
+ }
Cache::set($key, $albums, CACHE_DAY);
}
return $albums;
From 1b48799f08078d8120f23409e6333e59459da518 Mon Sep 17 00:00:00 2001
From: Michael
Date: Sat, 7 Jan 2017 11:28:18 +0000
Subject: [PATCH 19/24] Don't do queries if not needed
---
mod/photos.php | 25 +++++++++++++------------
mod/wall_attach.php | 30 ++++++++++++++++--------------
mod/wall_upload.php | 20 +++++++++-----------
3 files changed, 38 insertions(+), 37 deletions(-)
diff --git a/mod/photos.php b/mod/photos.php
index e026944423..4b6704a719 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -818,21 +818,22 @@ function photos_post(&$a) {
$imagedata = @file_get_contents($src);
-
- $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ",
- intval($a->data['user']['uid'])
- );
-
$limit = service_class_fetch($a->data['user']['uid'],'photo_upload_limit');
- if (($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) {
- notice( upgrade_message() . EOL );
- @unlink($src);
- $foo = 0;
- call_hooks('photo_post_end',$foo);
- killme();
- }
+ if ($limit) {
+ $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ",
+ intval($a->data['user']['uid'])
+ );
+ $size = $r[0]['total'];
+ if (($size + strlen($imagedata)) > $limit) {
+ notice( upgrade_message() . EOL );
+ @unlink($src);
+ $foo = 0;
+ call_hooks('photo_post_end',$foo);
+ killme();
+ }
+ }
$ph = new Photo($imagedata, $type);
diff --git a/mod/wall_attach.php b/mod/wall_attach.php
index 525d3509c1..fc82389741 100644
--- a/mod/wall_attach.php
+++ b/mod/wall_attach.php
@@ -112,23 +112,25 @@ function wall_attach_post(&$a) {
killme();
}
- $r = q("select sum(octet_length(data)) as total from attach where uid = %d ",
- intval($page_owner_uid)
- );
-
$limit = service_class_fetch($page_owner_uid,'attach_upload_limit');
- if(($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) {
- $msg = upgrade_message(true);
- if ($r_json) {
- echo json_encode(array('error'=>$msg));
- } else {
- echo $msg. EOL ;
- }
- @unlink($src);
- killme();
- }
+ if ($limit) {
+ $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ",
+ intval($page_owner_uid)
+ );
+ $size = $r[0]['total'];
+ if (($size + strlen($imagedata)) > $limit) {
+ $msg = upgrade_message(true);
+ if ($r_json) {
+ echo json_encode(array('error'=>$msg));
+ } else {
+ echo $msg. EOL ;
+ }
+ @unlink($src);
+ killme();
+ }
+ }
$filedata = @file_get_contents($src);
$mimetype = z_mime_content_type($filename);
diff --git a/mod/wall_upload.php b/mod/wall_upload.php
index eb2a92323a..c789262c64 100644
--- a/mod/wall_upload.php
+++ b/mod/wall_upload.php
@@ -166,21 +166,19 @@ function wall_upload_post(&$a, $desktopmode = true) {
intval($page_owner_uid)
);
$size = $r[0]['total'];
- } else
- $size = 0;
- if(($limit !== false) && (($size + strlen($imagedata)) > $limit)) {
- $msg = upgrade_message(true);
- if ($r_json) {
- echo json_encode(array('error'=>$msg));
- } else {
- echo $msg. EOL;
+ if (($size + strlen($imagedata)) > $limit) {
+ $msg = upgrade_message(true);
+ if ($r_json) {
+ echo json_encode(array('error'=>$msg));
+ } else {
+ echo $msg. EOL;
+ }
+ @unlink($src);
+ killme();
}
- @unlink($src);
- killme();
}
-
$imagedata = @file_get_contents($src);
$ph = new Photo($imagedata, $filetype);
From c2543f918b3c9fc6cc8655fb2f4e9f99752e0901 Mon Sep 17 00:00:00 2001
From: Michael
Date: Sat, 7 Jan 2017 13:52:30 +0000
Subject: [PATCH 20/24] Last minutes changes
---
include/dbstructure.php | 5 ++++-
include/diaspora.php | 2 +-
mod/photos.php | 4 ++--
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index 8f47dc16e9..e519562b49 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -806,7 +806,9 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "uid_gid_contactid" => array("UNIQUE", "uid","gid","contact-id"),
+ "cid_contactid" => array("cid", "contact-id"),
+ "uid_contactid" => array("uid", "contact-id"),
+ "uid_gid_contactid" => array("UNIQUE", "uid", "gid", "contact-id"),
)
);
$database["gserver"] = array(
@@ -1160,6 +1162,7 @@ function db_definition($charset) {
"uid_contactid" => array("uid", "contact-id"),
"uid_profile" => array("uid", "profile"),
"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)"),
)
);
diff --git a/include/diaspora.php b/include/diaspora.php
index 2b9e61331f..54bc744541 100644
--- a/include/diaspora.php
+++ b/include/diaspora.php
@@ -766,7 +766,7 @@ class Diaspora {
intval($uid),
dbesc($nurl_sql)
);
- if(dbm::is_result($r)) {
+ if (dbm::is_result($r)) {
return $r[0];
}
diff --git a/mod/photos.php b/mod/photos.php
index 4b6704a719..4880e7feb7 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -182,11 +182,11 @@ function photos_post(&$a) {
return; // NOTREACHED
}
- $r = qu("SELECT count(*) FROM `photo` WHERE `album` = '%s' AND `uid` = %d",
+ $r = qu("SELECT `album` FROM `photo` WHERE `album` = '%s' AND `uid` = %d",
dbesc($album),
intval($page_owner_uid)
);
- if (! dbm::is_result($r)) {
+ if (!dbm::is_result($r)) {
notice( t('Album not found.') . EOL);
goaway($_SESSION['photo_return']);
return; // NOTREACHED
From f14cd2920a6d27141289cc2b81aaf0dfabe02079 Mon Sep 17 00:00:00 2001
From: Michael
Date: Sat, 7 Jan 2017 22:04:57 +0000
Subject: [PATCH 21/24] database.sql was updated
---
database.sql | 94 +++++++++++++++++++++++++---------------------------
1 file changed, 46 insertions(+), 48 deletions(-)
diff --git a/database.sql b/database.sql
index 2e83c33a64..becd14fc73 100644
--- a/database.sql
+++ b/database.sql
@@ -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;
--
From 28b2e599fb6ee3ee9ca0f3e3791482686cdbb902 Mon Sep 17 00:00:00 2001
From: Michael
Date: Sun, 8 Jan 2017 20:11:15 +0000
Subject: [PATCH 22/24] it should be "gid" not "cid"
---
include/dbstructure.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/dbstructure.php b/include/dbstructure.php
index e519562b49..5c89f49fb9 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -806,7 +806,7 @@ function db_definition($charset) {
),
"indexes" => array(
"PRIMARY" => array("id"),
- "cid_contactid" => array("cid", "contact-id"),
+ "gid_contactid" => array("gid", "contact-id"),
"uid_contactid" => array("uid", "contact-id"),
"uid_gid_contactid" => array("UNIQUE", "uid", "gid", "contact-id"),
)
From 16f0221e4c2b137e254853caac8acc7bf646c4d1 Mon Sep 17 00:00:00 2001
From: Michael
Date: Mon, 9 Jan 2017 09:37:37 +0000
Subject: [PATCH 23/24] DBClean now has a smaller limit/Query improvements
---
include/acl_selectors.php | 22 +++++++++++-----------
include/cron.php | 2 +-
include/dbclean.php | 31 +++++++++++++++++++------------
view/theme/frio/theme.php | 8 ++++----
4 files changed, 35 insertions(+), 28 deletions(-)
diff --git a/include/acl_selectors.php b/include/acl_selectors.php
index f6c4f947ed..75a4985c89 100644
--- a/include/acl_selectors.php
+++ b/include/acl_selectors.php
@@ -135,7 +135,7 @@ function contact_selector($selname, $selclass, $preselected = false, $options) {
$o .= "
';
- $o .= t('Please visit Friendica.com to learn more about the Friendica project.') . '
';
+ $o .= t('Please visit Friendica.com to learn more about the Friendica project.') . '
';
$o .= t('Bug reports and issues: please visit') . ' ' . ''.t('the bugtracker at github').'
';
$o .= t('Suggestions, praise, donations, etc. - please email "Info" at Friendica - dot com') . '
';
@@ -102,7 +102,7 @@ function friendica_content(App &$a) {
else
$o .= '' . t('No installed plugins/addons/apps') . '
';
- call_hooks('about_hook', $o);
+ call_hooks('about_hook', $o);
return $o;
diff --git a/mod/fsuggest.php b/mod/fsuggest.php
index fcbadcc9b7..b3d5439712 100644
--- a/mod/fsuggest.php
+++ b/mod/fsuggest.php
@@ -1,7 +1,7 @@
';
- $o .= contact_selector('suggest','suggest-select', false,
+ $o .= contact_selector('suggest','suggest-select', false,
array('size' => 4, 'exclude' => $contact_id, 'networks' => 'DFRN_ONLY', 'single' => true));
diff --git a/mod/group.php b/mod/group.php
index 681bc88cc3..2b332e401f 100644
--- a/mod/group.php
+++ b/mod/group.php
@@ -4,7 +4,7 @@ function validate_members(&$item) {
$item = intval($item);
}
-function group_init(App &$a) {
+function group_init(App $a) {
if(local_user()) {
require_once('include/group.php');
$a->page['aside'] = group_side('contacts','group','extended',(($a->argc > 1) ? intval($a->argv[1]) : 0));
@@ -13,7 +13,7 @@ function group_init(App &$a) {
-function group_post(App &$a) {
+function group_post(App $a) {
if (! local_user()) {
notice( t('Permission denied.') . EOL);
@@ -69,7 +69,7 @@ function group_post(App &$a) {
return;
}
-function group_content(App &$a) {
+function group_content(App $a) {
$change = false;
if (! local_user()) {
diff --git a/mod/hcard.php b/mod/hcard.php
index d53405009a..07eb291510 100644
--- a/mod/hcard.php
+++ b/mod/hcard.php
@@ -1,6 +1,6 @@