From b76dc8b129eeee465f1c288b1c4e6d726a0a0c9e Mon Sep 17 00:00:00 2001
From: Michael Vogel <icarus@dabo.de>
Date: Sat, 23 Jan 2016 22:05:27 +0100
Subject: [PATCH 1/5] Frequently repair of database entries

---
 include/cron.php | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/include/cron.php b/include/cron.php
index bf3243cb60..71af5d826f 100644
--- a/include/cron.php
+++ b/include/cron.php
@@ -164,6 +164,9 @@ function cron_run(&$argv, &$argc){
 	// Repair missing Diaspora values in contacts
 	cron_repair_diaspora($a);
 
+	// Repair entries in the database
+	cron_repair_database();
+
 	$manual_id  = 0;
 	$generation = 0;
 	$force      = false;
@@ -417,6 +420,24 @@ function cron_repair_diaspora(&$a) {
 	}
 }
 
+/**
+ * @brief Do some repairs in database entries
+ *
+ */
+function cron_repair_database() {
+
+	// Set the parent if it wasn't set. (Shouldn't happen - but does sometimes)
+	// This call is very "cheap" so we can do it at any time without a problem
+	q("UPDATE `item` INNER JOIN `item` AS `parent` ON `parent`.`uri` = `item`.`parent-uri` AND `parent`.`uid` = `item`.`uid` SET `item`.`parent` = `parent`.`id` WHERE `item`.`parent` = 0");
+
+	/// @todo
+	// - remove duplicated contacts with uid=0 (We could do this at the place where the contacts are stored)
+	// - remove thread entries without item
+	// - remove sign entries without item
+	// - remove children when parent got lost
+	// - set contact-id in item when not present
+}
+
 if (array_search(__file__,get_included_files())===0){
 	cron_run($_SERVER["argv"],$_SERVER["argc"]);
 	killme();

From 60470cfafad212e00ef19aacd2e3e8bb2e8f084e Mon Sep 17 00:00:00 2001
From: Michael Vogel <icarus@dabo.de>
Date: Sat, 23 Jan 2016 22:36:15 +0100
Subject: [PATCH 2/5] New handling for filling the gcontact table / duplicate
 prevention

---
 include/gprobe.php   |  19 ++--
 include/socgraph.php | 201 ++++++++++++-------------------------------
 2 files changed, 61 insertions(+), 159 deletions(-)

diff --git a/include/gprobe.php b/include/gprobe.php
index 84292f263a..dfa9137d7d 100644
--- a/include/gprobe.php
+++ b/include/gprobe.php
@@ -33,7 +33,7 @@ function gprobe_run(&$argv, &$argc){
 
 	$url = hex2bin($argv[1]);
 
-	$r = q("select * from gcontact where nurl = '%s' limit 1",
+	$r = q("SELECT `id`, `url`, `network` FROM `gcontact` WHERE `nurl` = '%s' ORDER BY `id` LIMIT 1",
 		dbesc(normalise_link($url))
 	);
 
@@ -58,21 +58,16 @@ function gprobe_run(&$argv, &$argc){
 		if (is_null($result))
 			Cache::set("gprobe:".$urlparts["host"],serialize($arr));
 
-		if(count($arr) && x($arr,'network') && $arr['network'] === NETWORK_DFRN) {
-			q("insert into `gcontact` (`name`,`url`,`nurl`,`photo`)
-				values ( '%s', '%s', '%s', '%s') ",
-				dbesc($arr['name']),
-				dbesc($arr['url']),
-				dbesc(normalise_link($arr['url'])),
-				dbesc($arr['photo'])
-			);
-		}
-		$r = q("select * from gcontact where nurl = '%s' limit 1",
+		if (!in_array($result["network"], array(NETWORK_FEED, NETWORK_PHANTOM)))
+			update_gcontact($arr);
+
+		$r = q("SELECT `id`, `url`, `network` FROM `gcontact` WHERE `nurl` = '%s' ORDER BY `id` LIMIT 1",
 			dbesc(normalise_link($url))
 		);
 	}
 	if(count($r))
-		poco_load(0,0,$r[0]['id'], str_replace('/profile/','/poco/',$r[0]['url']));
+		if ($r[0]["network"] == NETWORK_DFRN)
+			poco_load(0,0,$r[0]['id'], str_replace('/profile/','/poco/',$r[0]['url']));
 
 	logger("gprobe end for ".normalise_link($url), LOGGER_DEBUG);
 	return;
diff --git a/include/socgraph.php b/include/socgraph.php
index 4532abb39b..c545343393 100644
--- a/include/socgraph.php
+++ b/include/socgraph.php
@@ -289,93 +289,25 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca
 
 	poco_check_server($server_url, $network);
 
-	if(count($x)) {
-		$gcid = $x[0]['id'];
+	$gcontact = array("url" => $profile_url,
+			"addr" => $addr,
+			"alias" => $alias,
+			"name" => $name,
+			"network" => $network,
+			"photo" => $profile_photo,
+			"about" => $about,
+			"location" => $location,
+			"gender" => $gender,
+			"keywords" => $keywords,
+			"server_url" => $server_url,
+			"connect" => $connect_url,
+			"notify" => $notify,
+			"updated" => $updated,
+			"generation" => $generation);
 
-		if (($location == "") AND ($x[0]['location'] != ""))
-			$location = $x[0]['location'];
+	$gcid = update_gcontact($gcontact);
 
-		if (($about == "") AND ($x[0]['about'] != ""))
-			$about = $x[0]['about'];
-
-		if (($gender == "") AND ($x[0]['gender'] != ""))
-			$gender = $x[0]['gender'];
-
-		if (($keywords == "") AND ($x[0]['keywords'] != ""))
-			$keywords = $x[0]['keywords'];
-
-		if (($addr == "") AND ($x[0]['addr'] != ""))
-			$addr = $x[0]['addr'];
-
-		if (($alias == "") AND ($x[0]['alias'] != ""))
-			$alias = $x[0]['alias'];
-
-		if (($notify == "") AND ($x[0]['notify'] != ""))
-			$notify = $x[0]['notify'];
-
-		if (($generation == 0) AND ($x[0]['generation'] > 0))
-			$generation = $x[0]['generation'];
-
-		if($x[0]['name'] != $name || $x[0]['photo'] != $profile_photo || $x[0]['updated'] < $updated) {
-			q("UPDATE `gcontact` SET `name` = '%s', `addr` = '%s', `network` = '%s', `photo` = '%s', `connect` = '%s', `url` = '%s', `server_url` = '%s',
-				`updated` = '%s', `location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s', `generation` = %d,
-				`alias` = '$s', `notify` = '%s'
-				WHERE (`generation` >= %d OR `generation` = 0) AND `nurl` = '%s'",
-				dbesc($name),
-				dbesc($addr),
-				dbesc($network),
-				dbesc($profile_photo),
-				dbesc($connect_url),
-				dbesc($profile_url),
-				dbesc($server_url),
-				dbesc($updated),
-				dbesc($location),
-				dbesc($about),
-				dbesc($keywords),
-				dbesc($gender),
-				dbesc($alias),
-				dbesc($notify),
-				intval($generation),
-				intval($generation),
-				dbesc(normalise_link($profile_url))
-			);
-		}
-	} else {
-		// Maybe another process had inserted the entry after the first check, so it again
-		$x = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
-			dbesc(normalise_link($profile_url))
-		);
-		if(!$x) {
-			q("INSERT INTO `gcontact` (`name`, `nick`, `addr`, `network`, `url`, `nurl`, `photo`, `connect`, `server_url`, `created`, `updated`, `location`, `about`, `keywords`, `gender`, `alias`, `notify`, `generation`)
-				VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
-				dbesc($name),
-				dbesc($nick),
-				dbesc($addr),
-				dbesc($network),
-				dbesc($profile_url),
-				dbesc(normalise_link($profile_url)),
-				dbesc($profile_photo),
-				dbesc($connect_url),
-				dbesc($server_url),
-				dbesc(datetime_convert()),
-				dbesc($updated),
-				dbesc($location),
-				dbesc($about),
-				dbesc($keywords),
-				dbesc($gender),
-				dbesc($alias),
-				dbesc($notify),
-				intval($generation)
-			);
-			$x = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
-				dbesc(normalise_link($profile_url))
-			);
-		}
-		if(count($x))
-			$gcid = $x[0]['id'];
-	}
-
-	if(! $gcid)
+	if(!$gcid)
 		return $gcid;
 
 	$r = q("SELECT * FROM `glink` WHERE `cid` = %d AND `uid` = %d AND `gcid` = %d AND `zcid` = %d LIMIT 1",
@@ -402,13 +334,6 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca
 		);
 	}
 
-	// For unknown reasons there are sometimes duplicates
-	//q("DELETE FROM `gcontact` WHERE `nurl` = '%s' AND `id` != %d AND
-	//	NOT EXISTS (SELECT `gcid` FROM `glink` WHERE `gcid` = `gcontact`.`id`)",
-	//	dbesc(normalise_link($profile_url)),
-	//	intval($gcid)
-	//);
-
 	return $gcid;
 }
 
@@ -1540,7 +1465,7 @@ function get_gcontact_id($contact) {
 	if ($contact["network"] == NETWORK_STATUSNET)
 		$contact["network"] = NETWORK_OSTATUS;
 
-	$r = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
+	$r = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s' ORDER BY `id` LIMIT 2",
 		dbesc(normalise_link($contact["url"])));
 
 	if ($r)
@@ -1562,13 +1487,18 @@ function get_gcontact_id($contact) {
 			intval($contact["generation"])
 		);
 
-		$r = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
+		$r = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s' ORDER BY `id` LIMIT 2",
 			dbesc(normalise_link($contact["url"])));
 
 		if ($r)
 			$gcontact_id = $r[0]["id"];
 	}
 
+	if ((count($r) > 1) AND ($gcontact_id > 0) AND ($contact["url"] != ""))
+	 q("DELETE FROM `gcontact` WHERE `nurl` = '%s' AND `id` != %d",
+		dbesc(normalise_link($contact["url"])),
+		intval($gcontact_id));
+
 	return $gcontact_id;
 }
 
@@ -1587,78 +1517,55 @@ function update_gcontact($contact) {
 	if (!$gcontact_id)
 		return false;
 
-	$r = q("SELECT `name`, `nick`, `photo`, `location`, `about`, `addr`, `generation`, `birthday`, `gender`, `keywords`, `hide`, `nsfw`, `network`, `alias`, `notify`, `url`
+	$r = q("SELECT `name`, `nick`, `photo`, `location`, `about`, `addr`, `generation`, `birthday`, `gender`, `keywords`,
+			`hide`, `nsfw`, `network`, `alias`, `notify`, `server_url`, `connect`, `updated`, `url`
 		FROM `gcontact` WHERE `id` = %d LIMIT 1",
 		intval($gcontact_id));
 
-	if ($contact["generation"] == 0)
-		$contact["generation"] = $r[0]["generation"];
+	// Get all field names
+	$fields = array();
+	foreach ($r[0] AS $field => $data)
+		$fields[$field] = $data;
 
-	if ($contact["photo"] == "")
-		$contact["photo"] = $r[0]["photo"];
+	unset($fields["url"]);
+	unset($fields["updated"]);
 
-	if ($contact["name"] == "")
-		$contact["name"] = $r[0]["name"];
-
-	if ($contact["nick"] == "")
-		$contact["nick"] = $r[0]["nick"];
-
-	if ($contact["addr"] == "")
-		$contact["addr"] = $r[0]["addr"];
-
-	if ($contact["location"] =="")
-		$contact["location"] = $r[0]["location"];
-
-	if ($contact["about"] =="")
-		$contact["about"] = $r[0]["about"];
-
-	if ($contact["birthday"] =="")
-		$contact["birthday"] = $r[0]["birthday"];
-
-	if ($contact["gender"] =="")
-		$contact["gender"] = $r[0]["gender"];
-
-	if ($contact["keywords"] =="")
-		$contact["keywords"] = $r[0]["keywords"];
-
-	if (!isset($contact["hide"]))
-		$contact["hide"] = $r[0]["hide"];
-
-	if (!isset($contact["nsfw"]))
-		$contact["nsfw"] = $r[0]["nsfw"];
-
-	if ($contact["network"] =="")
-		$contact["network"] = $r[0]["network"];
-
-	if ($contact["alias"] =="")
-		$contact["alias"] = $r[0]["alias"];
-
-	if ($contact["url"] =="")
-		$contact["url"] = $r[0]["url"];
-
-	if ($contact["notify"] =="")
-		$contact["notify"] = $r[0]["notify"];
+	// assign all unassigned fields from the database entry
+	foreach ($fields AS $field => $data)
+		if (!isset($contact[$field]))
+			$contact[$field] = $r[0][$field];
 
 	if ($contact["network"] == NETWORK_STATUSNET)
 		$contact["network"] = NETWORK_OSTATUS;
 
-	if (($contact["photo"] != $r[0]["photo"]) OR ($contact["name"] != $r[0]["name"]) OR ($contact["nick"] != $r[0]["nick"]) OR ($contact["addr"] != $r[0]["addr"]) OR
-		($contact["birthday"] != $r[0]["birthday"]) OR ($contact["gender"] != $r[0]["gender"]) OR ($contact["keywords"] != $r[0]["keywords"]) OR
-		($contact["hide"] != $r[0]["hide"]) OR ($contact["nsfw"] != $r[0]["nsfw"]) OR ($contact["network"] != $r[0]["network"]) OR
-		($contact["alias"] != $r[0]["alias"]) OR ($contact["notify"] != $r[0]["notify"]) OR ($contact["url"] != $r[0]["url"]) OR
-		($contact["location"] != $r[0]["location"]) OR ($contact["about"] != $r[0]["about"]) OR ($contact["generation"] < $r[0]["generation"])) {
+	if (!isset($contact["updated"]))
+		$contact["updated"] = datetime_convert();
 
+	// Check if any field changed
+	$update = false;
+	unset($fields["generation"]);
+
+	foreach ($fields AS $field => $data)
+		if ($contact[$field] != $r[0][$field])
+			$update = true;
+
+	if ($contact["generation"] < $r[0]["generation"])
+		$update = true;
+
+	if ($update) {
 		q("UPDATE `gcontact` SET `photo` = '%s', `name` = '%s', `nick` = '%s', `addr` = '%s', `network` = '%s',
 					`birthday` = '%s', `gender` = '%s', `keywords` = %d, `hide` = %d, `nsfw` = %d,
 					`alias` = '%s', `notify` = '%s', `url` = '%s',
-					`location` = '%s', `about` = '%s', `generation` = %d, `updated` = '%s'
+					`location` = '%s', `about` = '%s', `generation` = %d, `updated` = '%s',
+					`server_url` = '%s', `connect` = '%s'
 				WHERE `nurl` = '%s' AND (`generation` = 0 OR `generation` >= %d)",
 			dbesc($contact["photo"]), dbesc($contact["name"]), dbesc($contact["nick"]),
 			dbesc($contact["addr"]), dbesc($contact["network"]), dbesc($contact["birthday"]),
 			dbesc($contact["gender"]), dbesc($contact["keywords"]), intval($contact["hide"]),
 			intval($contact["nsfw"]), dbesc($contact["alias"]), dbesc($contact["notify"]),
 			dbesc($contact["url"]), dbesc($contact["location"]), dbesc($contact["about"]),
-			intval($contact["generation"]), dbesc(datetime_convert()),
+			intval($contact["generation"]), dbesc($contact["updated"]),
+			dbesc($contact["server_url"]), dbesc($contact["connect"]),
 			dbesc(normalise_link($contact["url"])), intval($contact["generation"]));
 	}
 

From 275f7b26604af74aa57f7a4a758735e6bc2ab928 Mon Sep 17 00:00:00 2001
From: Michael Vogel <icarus@dabo.de>
Date: Sun, 24 Jan 2016 02:53:21 +0100
Subject: [PATCH 3/5] The worker now kills processes that run longer than 3
 hours

---
 include/poller.php | 41 ++++++++++++++++++++++++++++++-----------
 1 file changed, 30 insertions(+), 11 deletions(-)

diff --git a/include/poller.php b/include/poller.php
index c681bfb389..190f3fb1ad 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -39,8 +39,10 @@ function poller_run(&$argv, &$argc){
 	}
 
 	// Checking the number of workers
-	if (poller_too_much_workers(1))
+	if (poller_too_much_workers(1)) {
+		poller_kill_stale_workers();
 		return;
+	}
 
 	if(($argc <= 1) OR ($argv[1] != "no_cron")) {
 		// Run the cron job that calls all other jobs
@@ -50,16 +52,7 @@ function poller_run(&$argv, &$argc){
 		proc_run("php","include/cronhooks.php");
 
 		// Cleaning dead processes
-		$r = q("SELECT DISTINCT(`pid`) FROM `workerqueue` WHERE `executed` != '0000-00-00 00:00:00'");
-		foreach($r AS $pid)
-			if (!posix_kill($pid["pid"], 0))
-				q("UPDATE `workerqueue` SET `executed` = '0000-00-00 00:00:00', `pid` = 0 WHERE `pid` = %d",
-					intval($pid["pid"]));
-			else {
-				/// @TODO Kill long running processes
-				/// But: Update processes (like the database update) mustn't be killed
-			}
-
+		poller_kill_stale_workers();
 	} else
 		// Sleep four seconds before checking for running processes again to avoid having too many workers
 		sleep(4);
@@ -124,6 +117,32 @@ function poller_run(&$argv, &$argc){
 
 }
 
+/**
+ * @brief fix the queue entry if the worker process died
+ *
+ */
+function poller_kill_stale_workers() {
+	$r = q("SELECT `pid`, `executed` FROM `workerqueue` WHERE `executed` != '0000-00-00 00:00:00'");
+	foreach($r AS $pid)
+		if (!posix_kill($pid["pid"], 0))
+			q("UPDATE `workerqueue` SET `executed` = '0000-00-00 00:00:00', `pid` = 0 WHERE `pid` = %d",
+				intval($pid["pid"]));
+		else {
+			// Kill long running processes
+			$duration = (time() - strtotime($pid["executed"])) / 60;
+			if ($duration > 180) {
+				logger("Worker process ".$pid["pid"]." took more than 3 hours. It will be killed now.");
+				posix_kill($pid["pid"], SIGTERM);
+
+				// Question: If a process is stale: Should we remove it or should we reschedule it?
+				// By now we rescheduling it. It's maybe not the wisest decision?
+				q("UPDATE `workerqueue` SET `executed` = '0000-00-00 00:00:00', `pid` = 0 WHERE `pid` = %d",
+					intval($pid["pid"]));
+			} else
+				logger("Worker process ".$pid["pid"]." now runs for ".round($duration)." minutes. That's okay.", LOGGER_DEBUG);
+		}
+}
+
 function poller_too_much_workers($stage) {
 
 	$queues = get_config("system", "worker_queues");

From 3108406c9f325d5569f8ac7a26319a7e6c2dce13 Mon Sep 17 00:00:00 2001
From: Tobias Diekershoff <tobias.diekershoff@gmx.net>
Date: Sun, 24 Jan 2016 06:52:09 +0100
Subject: [PATCH 4/5] Update to the strings

---
 util/messages.po | 631 ++++++++++++++++++++++++-----------------------
 1 file changed, 316 insertions(+), 315 deletions(-)

diff --git a/util/messages.po b/util/messages.po
index 498a5bc5bc..46a9913f45 100644
--- a/util/messages.po
+++ b/util/messages.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-01-20 17:52+0100\n"
+"POT-Creation-Date: 2016-01-24 06:49+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -70,7 +70,7 @@ msgstr ""
 #: mod/api.php:31 mod/notes.php:22 mod/poke.php:149 mod/repair_ostatus.php:9
 #: mod/invite.php:15 mod/invite.php:101 mod/photos.php:171 mod/photos.php:1105
 #: mod/regmod.php:110 mod/uimport.php:23 mod/attach.php:33
-#: include/items.php:5077 index.php:383
+#: include/items.php:5096 index.php:383
 msgid "Permission denied."
 msgstr ""
 
@@ -109,7 +109,7 @@ msgstr ""
 #: mod/settings.php:1171 mod/settings.php:1172 mod/settings.php:1173
 #: mod/settings.php:1174 mod/dfrn_request.php:857 mod/register.php:238
 #: mod/suggest.php:29 mod/profiles.php:658 mod/profiles.php:661
-#: mod/profiles.php:687 mod/api.php:105 include/items.php:4909
+#: mod/profiles.php:687 mod/api.php:105 include/items.php:4928
 msgid "Yes"
 msgstr ""
 
@@ -118,7 +118,7 @@ msgstr ""
 #: mod/fbrowser.php:128 mod/settings.php:660 mod/settings.php:686
 #: mod/dfrn_request.php:871 mod/suggest.php:32 mod/editpost.php:148
 #: mod/photos.php:247 mod/photos.php:336 include/conversation.php:1220
-#: include/items.php:4912
+#: include/items.php:4931
 msgid "Cancel"
 msgstr ""
 
@@ -145,7 +145,7 @@ msgstr ""
 msgid "Private communications are not available for this contact."
 msgstr ""
 
-#: mod/contacts.php:544 mod/admin.php:820
+#: mod/contacts.php:544 mod/admin.php:822
 msgid "Never"
 msgstr ""
 
@@ -174,7 +174,7 @@ msgstr ""
 msgid "Fetch further information for feeds"
 msgstr ""
 
-#: mod/contacts.php:571 mod/admin.php:829
+#: mod/contacts.php:571 mod/admin.php:831
 msgid "Disabled"
 msgstr ""
 
@@ -265,12 +265,12 @@ msgid "Connect/Follow"
 msgstr ""
 
 #: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:865
-#: mod/admin.php:1310
+#: mod/admin.php:1312
 msgid "Unblock"
 msgstr ""
 
 #: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:865
-#: mod/admin.php:1309
+#: mod/admin.php:1311
 msgid "Block"
 msgstr ""
 
@@ -428,7 +428,7 @@ msgstr ""
 msgid "Unarchive"
 msgstr ""
 
-#: mod/contacts.php:809 mod/group.php:171 mod/admin.php:1308
+#: mod/contacts.php:809 mod/group.php:171 mod/admin.php:1310
 #: mod/content.php:440 mod/content.php:743 mod/settings.php:722
 #: mod/photos.php:1723 object/Item.php:134 include/conversation.php:635
 msgid "Delete"
@@ -547,8 +547,8 @@ msgid "All Contacts (with secure profile access)"
 msgstr ""
 
 #: mod/display.php:82 mod/display.php:291 mod/display.php:513
-#: mod/viewsrc.php:15 mod/admin.php:234 mod/admin.php:1363 mod/admin.php:1597
-#: mod/notice.php:15 include/items.php:4868
+#: mod/viewsrc.php:15 mod/admin.php:234 mod/admin.php:1365 mod/admin.php:1599
+#: mod/notice.php:15 include/items.php:4887
 msgid "Item not found."
 msgstr ""
 
@@ -597,7 +597,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: mod/newmember.php:22 mod/admin.php:1416 mod/admin.php:1674
+#: mod/newmember.php:22 mod/admin.php:1418 mod/admin.php:1676
 #: mod/settings.php:109 include/nav.php:182 view/theme/diabook/theme.php:544
 #: view/theme/diabook/theme.php:648
 msgid "Settings"
@@ -842,15 +842,15 @@ msgstr ""
 
 #: mod/subthread.php:87 mod/tagger.php:62 include/like.php:165
 #: include/conversation.php:130 include/conversation.php:266
-#: include/text.php:2000 include/diaspora.php:2151
+#: include/text.php:2000 include/diaspora.php:2169
 #: view/theme/diabook/theme.php:471
 msgid "photo"
 msgstr ""
 
 #: mod/subthread.php:87 mod/tagger.php:62 include/like.php:165
-#: include/like.php:325 include/conversation.php:125
+#: include/like.php:334 include/conversation.php:125
 #: include/conversation.php:134 include/conversation.php:261
-#: include/conversation.php:270 include/diaspora.php:2151
+#: include/conversation.php:270 include/diaspora.php:2169
 #: view/theme/diabook/theme.php:466 view/theme/diabook/theme.php:475
 msgid "status"
 msgstr ""
@@ -1161,7 +1161,7 @@ msgstr ""
 msgid "Unable to update your contact profile details on our system"
 msgstr ""
 
-#: mod/dfrn_confirm.php:753 mod/dfrn_request.php:741 include/items.php:4280
+#: mod/dfrn_confirm.php:753 mod/dfrn_request.php:741 include/items.php:4299
 msgid "[Name Withheld]"
 msgstr ""
 
@@ -1392,7 +1392,7 @@ msgstr ""
 msgid "System"
 msgstr ""
 
-#: mod/notifications.php:87 mod/admin.php:388 include/nav.php:154
+#: mod/notifications.php:87 mod/admin.php:390 include/nav.php:154
 msgid "Network"
 msgstr ""
 
@@ -1438,7 +1438,7 @@ msgstr ""
 msgid "if applicable"
 msgstr ""
 
-#: mod/notifications.php:176 mod/notifications.php:257 mod/admin.php:1306
+#: mod/notifications.php:176 mod/notifications.php:257 mod/admin.php:1308
 msgid "Approve"
 msgstr ""
 
@@ -1795,8 +1795,8 @@ msgstr ""
 msgid "Refetch contact data"
 msgstr ""
 
-#: mod/crepair.php:170 mod/admin.php:1304 mod/admin.php:1316 mod/admin.php:1317
-#: mod/admin.php:1330 mod/settings.php:661 mod/settings.php:687
+#: mod/crepair.php:170 mod/admin.php:1306 mod/admin.php:1318 mod/admin.php:1319
+#: mod/admin.php:1332 mod/settings.php:661 mod/settings.php:687
 msgid "Name"
 msgstr ""
 
@@ -1902,19 +1902,19 @@ msgstr ""
 msgid "Theme settings updated."
 msgstr ""
 
-#: mod/admin.php:156 mod/admin.php:886
+#: mod/admin.php:156 mod/admin.php:888
 msgid "Site"
 msgstr ""
 
-#: mod/admin.php:157 mod/admin.php:830 mod/admin.php:1299 mod/admin.php:1314
+#: mod/admin.php:157 mod/admin.php:832 mod/admin.php:1301 mod/admin.php:1316
 msgid "Users"
 msgstr ""
 
-#: mod/admin.php:158 mod/admin.php:1414 mod/admin.php:1474 mod/settings.php:72
+#: mod/admin.php:158 mod/admin.php:1416 mod/admin.php:1476 mod/settings.php:72
 msgid "Plugins"
 msgstr ""
 
-#: mod/admin.php:159 mod/admin.php:1672 mod/admin.php:1722
+#: mod/admin.php:159 mod/admin.php:1674 mod/admin.php:1724
 msgid "Themes"
 msgstr ""
 
@@ -1926,19 +1926,19 @@ msgstr ""
 msgid "DB updates"
 msgstr ""
 
-#: mod/admin.php:162 mod/admin.php:383
+#: mod/admin.php:162 mod/admin.php:385
 msgid "Inspect Queue"
 msgstr ""
 
-#: mod/admin.php:163 mod/admin.php:352
+#: mod/admin.php:163 mod/admin.php:354
 msgid "Federation Statistics"
 msgstr ""
 
-#: mod/admin.php:177 mod/admin.php:188 mod/admin.php:1790
+#: mod/admin.php:177 mod/admin.php:188 mod/admin.php:1792
 msgid "Logs"
 msgstr ""
 
-#: mod/admin.php:178 mod/admin.php:1857
+#: mod/admin.php:178 mod/admin.php:1859
 msgid "View Logs"
 msgstr ""
 
@@ -1966,738 +1966,739 @@ msgstr ""
 msgid "User registrations waiting for confirmation"
 msgstr ""
 
-#: mod/admin.php:345
+#: mod/admin.php:347
 msgid ""
 "This page offers you some numbers to the known part of the federated social "
 "network your Friendica node is part of. These numbers are not complete but "
 "only reflect the part of the network your node is aware of."
 msgstr ""
 
-#: mod/admin.php:346
+#: mod/admin.php:348
 msgid ""
 "The <em>Auto Discovered Contact Directory</em> feature is not enabled, it "
 "will improve the data displayed here."
 msgstr ""
 
-#: mod/admin.php:351 mod/admin.php:382 mod/admin.php:439 mod/admin.php:885
-#: mod/admin.php:1298 mod/admin.php:1413 mod/admin.php:1473 mod/admin.php:1671
-#: mod/admin.php:1721 mod/admin.php:1789 mod/admin.php:1856
+#: mod/admin.php:353 mod/admin.php:384 mod/admin.php:441 mod/admin.php:887
+#: mod/admin.php:1300 mod/admin.php:1415 mod/admin.php:1475 mod/admin.php:1673
+#: mod/admin.php:1723 mod/admin.php:1791 mod/admin.php:1858
 msgid "Administration"
 msgstr ""
 
-#: mod/admin.php:358
-msgid "Currently this node is aware of nodes from the following platforms:"
-msgstr ""
-
-#: mod/admin.php:385
-msgid "ID"
-msgstr ""
-
-#: mod/admin.php:386
-msgid "Recipient Name"
+#: mod/admin.php:360
+#, php-format
+msgid "Currently this node is aware of %d nodes from the following platforms:"
 msgstr ""
 
 #: mod/admin.php:387
-msgid "Recipient Profile"
+msgid "ID"
+msgstr ""
+
+#: mod/admin.php:388
+msgid "Recipient Name"
 msgstr ""
 
 #: mod/admin.php:389
-msgid "Created"
-msgstr ""
-
-#: mod/admin.php:390
-msgid "Last Tried"
+msgid "Recipient Profile"
 msgstr ""
 
 #: mod/admin.php:391
+msgid "Created"
+msgstr ""
+
+#: mod/admin.php:392
+msgid "Last Tried"
+msgstr ""
+
+#: mod/admin.php:393
 msgid ""
 "This page lists the content of the queue for outgoing postings. These are "
 "postings the initial delivery failed for. They will be resend later and "
 "eventually deleted if the delivery fails permanently."
 msgstr ""
 
-#: mod/admin.php:410 mod/admin.php:1252
+#: mod/admin.php:412 mod/admin.php:1254
 msgid "Normal Account"
 msgstr ""
 
-#: mod/admin.php:411 mod/admin.php:1253
+#: mod/admin.php:413 mod/admin.php:1255
 msgid "Soapbox Account"
 msgstr ""
 
-#: mod/admin.php:412 mod/admin.php:1254
+#: mod/admin.php:414 mod/admin.php:1256
 msgid "Community/Celebrity Account"
 msgstr ""
 
-#: mod/admin.php:413 mod/admin.php:1255
+#: mod/admin.php:415 mod/admin.php:1257
 msgid "Automatic Friend Account"
 msgstr ""
 
-#: mod/admin.php:414
+#: mod/admin.php:416
 msgid "Blog Account"
 msgstr ""
 
-#: mod/admin.php:415
+#: mod/admin.php:417
 msgid "Private Forum"
 msgstr ""
 
-#: mod/admin.php:434
+#: mod/admin.php:436
 msgid "Message queues"
 msgstr ""
 
-#: mod/admin.php:440
+#: mod/admin.php:442
 msgid "Summary"
 msgstr ""
 
-#: mod/admin.php:442
+#: mod/admin.php:444
 msgid "Registered users"
 msgstr ""
 
-#: mod/admin.php:444
+#: mod/admin.php:446
 msgid "Pending registrations"
 msgstr ""
 
-#: mod/admin.php:445
+#: mod/admin.php:447
 msgid "Version"
 msgstr ""
 
-#: mod/admin.php:450
+#: mod/admin.php:452
 msgid "Active plugins"
 msgstr ""
 
-#: mod/admin.php:473
+#: mod/admin.php:475
 msgid "Can not parse base url. Must have at least <scheme>://<domain>"
 msgstr ""
 
-#: mod/admin.php:758
+#: mod/admin.php:760
 msgid "RINO2 needs mcrypt php extension to work."
 msgstr ""
 
-#: mod/admin.php:766
+#: mod/admin.php:768
 msgid "Site settings updated."
 msgstr ""
 
-#: mod/admin.php:794 mod/settings.php:912
+#: mod/admin.php:796 mod/settings.php:912
 msgid "No special theme for mobile devices"
 msgstr ""
 
-#: mod/admin.php:813
+#: mod/admin.php:815
 msgid "No community page"
 msgstr ""
 
-#: mod/admin.php:814
+#: mod/admin.php:816
 msgid "Public postings from users of this site"
 msgstr ""
 
-#: mod/admin.php:815
+#: mod/admin.php:817
 msgid "Global community page"
 msgstr ""
 
-#: mod/admin.php:821
+#: mod/admin.php:823
 msgid "At post arrival"
 msgstr ""
 
-#: mod/admin.php:822 include/contact_selectors.php:56
+#: mod/admin.php:824 include/contact_selectors.php:56
 msgid "Frequently"
 msgstr ""
 
-#: mod/admin.php:823 include/contact_selectors.php:57
+#: mod/admin.php:825 include/contact_selectors.php:57
 msgid "Hourly"
 msgstr ""
 
-#: mod/admin.php:824 include/contact_selectors.php:58
+#: mod/admin.php:826 include/contact_selectors.php:58
 msgid "Twice daily"
 msgstr ""
 
-#: mod/admin.php:825 include/contact_selectors.php:59
+#: mod/admin.php:827 include/contact_selectors.php:59
 msgid "Daily"
 msgstr ""
 
-#: mod/admin.php:831
+#: mod/admin.php:833
 msgid "Users, Global Contacts"
 msgstr ""
 
-#: mod/admin.php:832
+#: mod/admin.php:834
 msgid "Users, Global Contacts/fallback"
 msgstr ""
 
-#: mod/admin.php:836
+#: mod/admin.php:838
 msgid "One month"
 msgstr ""
 
-#: mod/admin.php:837
+#: mod/admin.php:839
 msgid "Three months"
 msgstr ""
 
-#: mod/admin.php:838
+#: mod/admin.php:840
 msgid "Half a year"
 msgstr ""
 
-#: mod/admin.php:839
+#: mod/admin.php:841
 msgid "One year"
 msgstr ""
 
-#: mod/admin.php:844
+#: mod/admin.php:846
 msgid "Multi user instance"
 msgstr ""
 
-#: mod/admin.php:867
+#: mod/admin.php:869
 msgid "Closed"
 msgstr ""
 
-#: mod/admin.php:868
+#: mod/admin.php:870
 msgid "Requires approval"
 msgstr ""
 
-#: mod/admin.php:869
+#: mod/admin.php:871
 msgid "Open"
 msgstr ""
 
-#: mod/admin.php:873
+#: mod/admin.php:875
 msgid "No SSL policy, links will track page SSL state"
 msgstr ""
 
-#: mod/admin.php:874
+#: mod/admin.php:876
 msgid "Force all links to use SSL"
 msgstr ""
 
-#: mod/admin.php:875
+#: mod/admin.php:877
 msgid "Self-signed certificate, use SSL for local links only (discouraged)"
 msgstr ""
 
-#: mod/admin.php:887 mod/admin.php:1475 mod/admin.php:1723 mod/admin.php:1791
-#: mod/admin.php:1940 mod/settings.php:659 mod/settings.php:769
+#: mod/admin.php:889 mod/admin.php:1477 mod/admin.php:1725 mod/admin.php:1793
+#: mod/admin.php:1942 mod/settings.php:659 mod/settings.php:769
 #: mod/settings.php:813 mod/settings.php:882 mod/settings.php:969
 #: mod/settings.php:1204
 msgid "Save Settings"
 msgstr ""
 
-#: mod/admin.php:888 mod/register.php:263
+#: mod/admin.php:890 mod/register.php:263
 msgid "Registration"
 msgstr ""
 
-#: mod/admin.php:889
+#: mod/admin.php:891
 msgid "File upload"
 msgstr ""
 
-#: mod/admin.php:890
+#: mod/admin.php:892
 msgid "Policies"
 msgstr ""
 
-#: mod/admin.php:891
+#: mod/admin.php:893
 msgid "Advanced"
 msgstr ""
 
-#: mod/admin.php:892
+#: mod/admin.php:894
 msgid "Auto Discovered Contact Directory"
 msgstr ""
 
-#: mod/admin.php:893
+#: mod/admin.php:895
 msgid "Performance"
 msgstr ""
 
-#: mod/admin.php:894
+#: mod/admin.php:896
 msgid ""
 "Relocate - WARNING: advanced function. Could make this server unreachable."
 msgstr ""
 
-#: mod/admin.php:897
+#: mod/admin.php:899
 msgid "Site name"
 msgstr ""
 
-#: mod/admin.php:898
+#: mod/admin.php:900
 msgid "Host name"
 msgstr ""
 
-#: mod/admin.php:899
+#: mod/admin.php:901
 msgid "Sender Email"
 msgstr ""
 
-#: mod/admin.php:899
+#: mod/admin.php:901
 msgid ""
 "The email address your server shall use to send notification emails from."
 msgstr ""
 
-#: mod/admin.php:900
+#: mod/admin.php:902
 msgid "Banner/Logo"
 msgstr ""
 
-#: mod/admin.php:901
+#: mod/admin.php:903
 msgid "Shortcut icon"
 msgstr ""
 
-#: mod/admin.php:901
+#: mod/admin.php:903
 msgid "Link to an icon that will be used for browsers."
 msgstr ""
 
-#: mod/admin.php:902
+#: mod/admin.php:904
 msgid "Touch icon"
 msgstr ""
 
-#: mod/admin.php:902
+#: mod/admin.php:904
 msgid "Link to an icon that will be used for tablets and mobiles."
 msgstr ""
 
-#: mod/admin.php:903
+#: mod/admin.php:905
 msgid "Additional Info"
 msgstr ""
 
-#: mod/admin.php:903
+#: mod/admin.php:905
 #, php-format
 msgid ""
 "For public servers: you can add additional information here that will be "
 "listed at %s/siteinfo."
 msgstr ""
 
-#: mod/admin.php:904
+#: mod/admin.php:906
 msgid "System language"
 msgstr ""
 
-#: mod/admin.php:905
+#: mod/admin.php:907
 msgid "System theme"
 msgstr ""
 
-#: mod/admin.php:905
+#: mod/admin.php:907
 msgid ""
 "Default system theme - may be over-ridden by user profiles - <a href='#' "
 "id='cnftheme'>change theme settings</a>"
 msgstr ""
 
-#: mod/admin.php:906
+#: mod/admin.php:908
 msgid "Mobile system theme"
 msgstr ""
 
-#: mod/admin.php:906
+#: mod/admin.php:908
 msgid "Theme for mobile devices"
 msgstr ""
 
-#: mod/admin.php:907
+#: mod/admin.php:909
 msgid "SSL link policy"
 msgstr ""
 
-#: mod/admin.php:907
+#: mod/admin.php:909
 msgid "Determines whether generated links should be forced to use SSL"
 msgstr ""
 
-#: mod/admin.php:908
+#: mod/admin.php:910
 msgid "Force SSL"
 msgstr ""
 
-#: mod/admin.php:908
+#: mod/admin.php:910
 msgid ""
 "Force all Non-SSL requests to SSL - Attention: on some systems it could lead "
 "to endless loops."
 msgstr ""
 
-#: mod/admin.php:909
+#: mod/admin.php:911
 msgid "Old style 'Share'"
 msgstr ""
 
-#: mod/admin.php:909
+#: mod/admin.php:911
 msgid "Deactivates the bbcode element 'share' for repeating items."
 msgstr ""
 
-#: mod/admin.php:910
+#: mod/admin.php:912
 msgid "Hide help entry from navigation menu"
 msgstr ""
 
-#: mod/admin.php:910
+#: mod/admin.php:912
 msgid ""
 "Hides the menu entry for the Help pages from the navigation menu. You can "
 "still access it calling /help directly."
 msgstr ""
 
-#: mod/admin.php:911
+#: mod/admin.php:913
 msgid "Single user instance"
 msgstr ""
 
-#: mod/admin.php:911
+#: mod/admin.php:913
 msgid "Make this instance multi-user or single-user for the named user"
 msgstr ""
 
-#: mod/admin.php:912
+#: mod/admin.php:914
 msgid "Maximum image size"
 msgstr ""
 
-#: mod/admin.php:912
+#: mod/admin.php:914
 msgid ""
 "Maximum size in bytes of uploaded images. Default is 0, which means no "
 "limits."
 msgstr ""
 
-#: mod/admin.php:913
+#: mod/admin.php:915
 msgid "Maximum image length"
 msgstr ""
 
-#: mod/admin.php:913
+#: mod/admin.php:915
 msgid ""
 "Maximum length in pixels of the longest side of uploaded images. Default is "
 "-1, which means no limits."
 msgstr ""
 
-#: mod/admin.php:914
+#: mod/admin.php:916
 msgid "JPEG image quality"
 msgstr ""
 
-#: mod/admin.php:914
+#: mod/admin.php:916
 msgid ""
 "Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
 "100, which is full quality."
 msgstr ""
 
-#: mod/admin.php:916
+#: mod/admin.php:918
 msgid "Register policy"
 msgstr ""
 
-#: mod/admin.php:917
+#: mod/admin.php:919
 msgid "Maximum Daily Registrations"
 msgstr ""
 
-#: mod/admin.php:917
+#: mod/admin.php:919
 msgid ""
 "If registration is permitted above, this sets the maximum number of new user "
 "registrations to accept per day.  If register is set to closed, this setting "
 "has no effect."
 msgstr ""
 
-#: mod/admin.php:918
+#: mod/admin.php:920
 msgid "Register text"
 msgstr ""
 
-#: mod/admin.php:918
+#: mod/admin.php:920
 msgid "Will be displayed prominently on the registration page."
 msgstr ""
 
-#: mod/admin.php:919
+#: mod/admin.php:921
 msgid "Accounts abandoned after x days"
 msgstr ""
 
-#: mod/admin.php:919
+#: mod/admin.php:921
 msgid ""
 "Will not waste system resources polling external sites for abandonded "
 "accounts. Enter 0 for no time limit."
 msgstr ""
 
-#: mod/admin.php:920
+#: mod/admin.php:922
 msgid "Allowed friend domains"
 msgstr ""
 
-#: mod/admin.php:920
+#: mod/admin.php:922
 msgid ""
 "Comma separated list of domains which are allowed to establish friendships "
 "with this site. Wildcards are accepted. Empty to allow any domains"
 msgstr ""
 
-#: mod/admin.php:921
+#: mod/admin.php:923
 msgid "Allowed email domains"
 msgstr ""
 
-#: mod/admin.php:921
+#: mod/admin.php:923
 msgid ""
 "Comma separated list of domains which are allowed in email addresses for "
 "registrations to this site. Wildcards are accepted. Empty to allow any "
 "domains"
 msgstr ""
 
-#: mod/admin.php:922
+#: mod/admin.php:924
 msgid "Block public"
 msgstr ""
 
-#: mod/admin.php:922
+#: mod/admin.php:924
 msgid ""
 "Check to block public access to all otherwise public personal pages on this "
 "site unless you are currently logged in."
 msgstr ""
 
-#: mod/admin.php:923
+#: mod/admin.php:925
 msgid "Force publish"
 msgstr ""
 
-#: mod/admin.php:923
+#: mod/admin.php:925
 msgid ""
 "Check to force all profiles on this site to be listed in the site directory."
 msgstr ""
 
-#: mod/admin.php:924
+#: mod/admin.php:926
 msgid "Global directory URL"
 msgstr ""
 
-#: mod/admin.php:924
+#: mod/admin.php:926
 msgid ""
 "URL to the global directory. If this is not set, the global directory is "
 "completely unavailable to the application."
 msgstr ""
 
-#: mod/admin.php:925
+#: mod/admin.php:927
 msgid "Allow threaded items"
 msgstr ""
 
-#: mod/admin.php:925
+#: mod/admin.php:927
 msgid "Allow infinite level threading for items on this site."
 msgstr ""
 
-#: mod/admin.php:926
+#: mod/admin.php:928
 msgid "Private posts by default for new users"
 msgstr ""
 
-#: mod/admin.php:926
+#: mod/admin.php:928
 msgid ""
 "Set default post permissions for all new members to the default privacy "
 "group rather than public."
 msgstr ""
 
-#: mod/admin.php:927
+#: mod/admin.php:929
 msgid "Don't include post content in email notifications"
 msgstr ""
 
-#: mod/admin.php:927
+#: mod/admin.php:929
 msgid ""
 "Don't include the content of a post/comment/private message/etc. in the "
 "email notifications that are sent out from this site, as a privacy measure."
 msgstr ""
 
-#: mod/admin.php:928
+#: mod/admin.php:930
 msgid "Disallow public access to addons listed in the apps menu."
 msgstr ""
 
-#: mod/admin.php:928
+#: mod/admin.php:930
 msgid ""
 "Checking this box will restrict addons listed in the apps menu to members "
 "only."
 msgstr ""
 
-#: mod/admin.php:929
+#: mod/admin.php:931
 msgid "Don't embed private images in posts"
 msgstr ""
 
-#: mod/admin.php:929
+#: mod/admin.php:931
 msgid ""
 "Don't replace locally-hosted private photos in posts with an embedded copy "
 "of the image. This means that contacts who receive posts containing private "
 "photos will have to authenticate and load each image, which may take a while."
 msgstr ""
 
-#: mod/admin.php:930
+#: mod/admin.php:932
 msgid "Allow Users to set remote_self"
 msgstr ""
 
-#: mod/admin.php:930
+#: mod/admin.php:932
 msgid ""
 "With checking this, every user is allowed to mark every contact as a "
 "remote_self in the repair contact dialog. Setting this flag on a contact "
 "causes mirroring every posting of that contact in the users stream."
 msgstr ""
 
-#: mod/admin.php:931
+#: mod/admin.php:933
 msgid "Block multiple registrations"
 msgstr ""
 
-#: mod/admin.php:931
+#: mod/admin.php:933
 msgid "Disallow users to register additional accounts for use as pages."
 msgstr ""
 
-#: mod/admin.php:932
+#: mod/admin.php:934
 msgid "OpenID support"
 msgstr ""
 
-#: mod/admin.php:932
+#: mod/admin.php:934
 msgid "OpenID support for registration and logins."
 msgstr ""
 
-#: mod/admin.php:933
+#: mod/admin.php:935
 msgid "Fullname check"
 msgstr ""
 
-#: mod/admin.php:933
+#: mod/admin.php:935
 msgid ""
 "Force users to register with a space between firstname and lastname in Full "
 "name, as an antispam measure"
 msgstr ""
 
-#: mod/admin.php:934
+#: mod/admin.php:936
 msgid "UTF-8 Regular expressions"
 msgstr ""
 
-#: mod/admin.php:934
+#: mod/admin.php:936
 msgid "Use PHP UTF8 regular expressions"
 msgstr ""
 
-#: mod/admin.php:935
+#: mod/admin.php:937
 msgid "Community Page Style"
 msgstr ""
 
-#: mod/admin.php:935
+#: mod/admin.php:937
 msgid ""
 "Type of community page to show. 'Global community' shows every public "
 "posting from an open distributed network that arrived on this server."
 msgstr ""
 
-#: mod/admin.php:936
+#: mod/admin.php:938
 msgid "Posts per user on community page"
 msgstr ""
 
-#: mod/admin.php:936
+#: mod/admin.php:938
 msgid ""
 "The maximum number of posts per user on the community page. (Not valid for "
 "'Global Community')"
 msgstr ""
 
-#: mod/admin.php:937
+#: mod/admin.php:939
 msgid "Enable OStatus support"
 msgstr ""
 
-#: mod/admin.php:937
+#: mod/admin.php:939
 msgid ""
 "Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All "
 "communications in OStatus are public, so privacy warnings will be "
 "occasionally displayed."
 msgstr ""
 
-#: mod/admin.php:938
+#: mod/admin.php:940
 msgid "OStatus conversation completion interval"
 msgstr ""
 
-#: mod/admin.php:938
+#: mod/admin.php:940
 msgid ""
 "How often shall the poller check for new entries in OStatus conversations? "
 "This can be a very ressource task."
 msgstr ""
 
-#: mod/admin.php:939
+#: mod/admin.php:941
 msgid "OStatus support can only be enabled if threading is enabled."
 msgstr ""
 
-#: mod/admin.php:941
+#: mod/admin.php:943
 msgid ""
 "Diaspora support can't be enabled because Friendica was installed into a sub "
 "directory."
 msgstr ""
 
-#: mod/admin.php:942
+#: mod/admin.php:944
 msgid "Enable Diaspora support"
 msgstr ""
 
-#: mod/admin.php:942
+#: mod/admin.php:944
 msgid "Provide built-in Diaspora network compatibility."
 msgstr ""
 
-#: mod/admin.php:943
+#: mod/admin.php:945
 msgid "Only allow Friendica contacts"
 msgstr ""
 
-#: mod/admin.php:943
+#: mod/admin.php:945
 msgid ""
 "All contacts must use Friendica protocols. All other built-in communication "
 "protocols disabled."
 msgstr ""
 
-#: mod/admin.php:944
+#: mod/admin.php:946
 msgid "Verify SSL"
 msgstr ""
 
-#: mod/admin.php:944
+#: mod/admin.php:946
 msgid ""
 "If you wish, you can turn on strict certificate checking. This will mean you "
 "cannot connect (at all) to self-signed SSL sites."
 msgstr ""
 
-#: mod/admin.php:945
+#: mod/admin.php:947
 msgid "Proxy user"
 msgstr ""
 
-#: mod/admin.php:946
+#: mod/admin.php:948
 msgid "Proxy URL"
 msgstr ""
 
-#: mod/admin.php:947
+#: mod/admin.php:949
 msgid "Network timeout"
 msgstr ""
 
-#: mod/admin.php:947
+#: mod/admin.php:949
 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
 msgstr ""
 
-#: mod/admin.php:948
+#: mod/admin.php:950
 msgid "Delivery interval"
 msgstr ""
 
-#: mod/admin.php:948
+#: mod/admin.php:950
 msgid ""
 "Delay background delivery processes by this many seconds to reduce system "
 "load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
 "for large dedicated servers."
 msgstr ""
 
-#: mod/admin.php:949
+#: mod/admin.php:951
 msgid "Poll interval"
 msgstr ""
 
-#: mod/admin.php:949
+#: mod/admin.php:951
 msgid ""
 "Delay background polling processes by this many seconds to reduce system "
 "load. If 0, use delivery interval."
 msgstr ""
 
-#: mod/admin.php:950
+#: mod/admin.php:952
 msgid "Maximum Load Average"
 msgstr ""
 
-#: mod/admin.php:950
+#: mod/admin.php:952
 msgid ""
 "Maximum system load before delivery and poll processes are deferred - "
 "default 50."
 msgstr ""
 
-#: mod/admin.php:951
+#: mod/admin.php:953
 msgid "Maximum Load Average (Frontend)"
 msgstr ""
 
-#: mod/admin.php:951
+#: mod/admin.php:953
 msgid "Maximum system load before the frontend quits service - default 50."
 msgstr ""
 
-#: mod/admin.php:952
+#: mod/admin.php:954
 msgid "Maximum table size for optimization"
 msgstr ""
 
-#: mod/admin.php:952
+#: mod/admin.php:954
 msgid ""
 "Maximum table size (in MB) for the automatic optimization - default 100 MB. "
 "Enter -1 to disable it."
 msgstr ""
 
-#: mod/admin.php:953
+#: mod/admin.php:955
 msgid "Minimum level of fragmentation"
 msgstr ""
 
-#: mod/admin.php:953
+#: mod/admin.php:955
 msgid ""
 "Minimum fragmenation level to start the automatic optimization - default "
 "value is 30%."
 msgstr ""
 
-#: mod/admin.php:955
+#: mod/admin.php:957
 msgid "Periodical check of global contacts"
 msgstr ""
 
-#: mod/admin.php:955
+#: mod/admin.php:957
 msgid ""
 "If enabled, the global contacts are checked periodically for missing or "
 "outdated data and the vitality of the contacts and servers."
 msgstr ""
 
-#: mod/admin.php:956
+#: mod/admin.php:958
 msgid "Days between requery"
 msgstr ""
 
-#: mod/admin.php:956
+#: mod/admin.php:958
 msgid "Number of days after which a server is requeried for his contacts."
 msgstr ""
 
-#: mod/admin.php:957
+#: mod/admin.php:959
 msgid "Discover contacts from other servers"
 msgstr ""
 
-#: mod/admin.php:957
+#: mod/admin.php:959
 msgid ""
 "Periodically query other servers for contacts. You can choose between "
 "'users': the users on the remote system, 'Global Contacts': active contacts "
@@ -2707,32 +2708,32 @@ msgid ""
 "Global Contacts'."
 msgstr ""
 
-#: mod/admin.php:958
+#: mod/admin.php:960
 msgid "Timeframe for fetching global contacts"
 msgstr ""
 
-#: mod/admin.php:958
+#: mod/admin.php:960
 msgid ""
 "When the discovery is activated, this value defines the timeframe for the "
 "activity of the global contacts that are fetched from other servers."
 msgstr ""
 
-#: mod/admin.php:959
+#: mod/admin.php:961
 msgid "Search the local directory"
 msgstr ""
 
-#: mod/admin.php:959
+#: mod/admin.php:961
 msgid ""
 "Search the local directory instead of the global directory. When searching "
 "locally, every search will be executed on the global directory in the "
 "background. This improves the search results when the search is repeated."
 msgstr ""
 
-#: mod/admin.php:961
+#: mod/admin.php:963
 msgid "Publish server information"
 msgstr ""
 
-#: mod/admin.php:961
+#: mod/admin.php:963
 msgid ""
 "If enabled, general server and usage data will be published. The data "
 "contains the name and version of the server, number of users with public "
@@ -2740,204 +2741,204 @@ msgid ""
 "href='http://the-federation.info/'>the-federation.info</a> for details."
 msgstr ""
 
-#: mod/admin.php:963
+#: mod/admin.php:965
 msgid "Use MySQL full text engine"
 msgstr ""
 
-#: mod/admin.php:963
+#: mod/admin.php:965
 msgid ""
 "Activates the full text engine. Speeds up search - but can only search for "
 "four and more characters."
 msgstr ""
 
-#: mod/admin.php:964
+#: mod/admin.php:966
 msgid "Suppress Language"
 msgstr ""
 
-#: mod/admin.php:964
+#: mod/admin.php:966
 msgid "Suppress language information in meta information about a posting."
 msgstr ""
 
-#: mod/admin.php:965
+#: mod/admin.php:967
 msgid "Suppress Tags"
 msgstr ""
 
-#: mod/admin.php:965
+#: mod/admin.php:967
 msgid "Suppress showing a list of hashtags at the end of the posting."
 msgstr ""
 
-#: mod/admin.php:966
+#: mod/admin.php:968
 msgid "Path to item cache"
 msgstr ""
 
-#: mod/admin.php:966
+#: mod/admin.php:968
 msgid "The item caches buffers generated bbcode and external images."
 msgstr ""
 
-#: mod/admin.php:967
+#: mod/admin.php:969
 msgid "Cache duration in seconds"
 msgstr ""
 
-#: mod/admin.php:967
+#: mod/admin.php:969
 msgid ""
 "How long should the cache files be hold? Default value is 86400 seconds (One "
 "day). To disable the item cache, set the value to -1."
 msgstr ""
 
-#: mod/admin.php:968
+#: mod/admin.php:970
 msgid "Maximum numbers of comments per post"
 msgstr ""
 
-#: mod/admin.php:968
+#: mod/admin.php:970
 msgid "How much comments should be shown for each post? Default value is 100."
 msgstr ""
 
-#: mod/admin.php:969
+#: mod/admin.php:971
 msgid "Path for lock file"
 msgstr ""
 
-#: mod/admin.php:969
+#: mod/admin.php:971
 msgid ""
 "The lock file is used to avoid multiple pollers at one time. Only define a "
 "folder here."
 msgstr ""
 
-#: mod/admin.php:970
+#: mod/admin.php:972
 msgid "Temp path"
 msgstr ""
 
-#: mod/admin.php:970
+#: mod/admin.php:972
 msgid ""
 "If you have a restricted system where the webserver can't access the system "
 "temp path, enter another path here."
 msgstr ""
 
-#: mod/admin.php:971
+#: mod/admin.php:973
 msgid "Base path to installation"
 msgstr ""
 
-#: mod/admin.php:971
+#: mod/admin.php:973
 msgid ""
 "If the system cannot detect the correct path to your installation, enter the "
 "correct path here. This setting should only be set if you are using a "
 "restricted system and symbolic links to your webroot."
 msgstr ""
 
-#: mod/admin.php:972
+#: mod/admin.php:974
 msgid "Disable picture proxy"
 msgstr ""
 
-#: mod/admin.php:972
+#: mod/admin.php:974
 msgid ""
 "The picture proxy increases performance and privacy. It shouldn't be used on "
 "systems with very low bandwith."
 msgstr ""
 
-#: mod/admin.php:973
+#: mod/admin.php:975
 msgid "Enable old style pager"
 msgstr ""
 
-#: mod/admin.php:973
+#: mod/admin.php:975
 msgid ""
 "The old style pager has page numbers but slows down massively the page speed."
 msgstr ""
 
-#: mod/admin.php:974
+#: mod/admin.php:976
 msgid "Only search in tags"
 msgstr ""
 
-#: mod/admin.php:974
+#: mod/admin.php:976
 msgid "On large systems the text search can slow down the system extremely."
 msgstr ""
 
-#: mod/admin.php:976
+#: mod/admin.php:978
 msgid "New base url"
 msgstr ""
 
-#: mod/admin.php:976
+#: mod/admin.php:978
 msgid ""
 "Change base url for this server. Sends relocate message to all DFRN contacts "
 "of all users."
 msgstr ""
 
-#: mod/admin.php:978
+#: mod/admin.php:980
 msgid "RINO Encryption"
 msgstr ""
 
-#: mod/admin.php:978
+#: mod/admin.php:980
 msgid "Encryption layer between nodes."
 msgstr ""
 
-#: mod/admin.php:979
+#: mod/admin.php:981
 msgid "Embedly API key"
 msgstr ""
 
-#: mod/admin.php:979
+#: mod/admin.php:981
 msgid ""
 "<a href='http://embed.ly'>Embedly</a> is used to fetch additional data for "
 "web pages. This is an optional parameter."
 msgstr ""
 
-#: mod/admin.php:1008
+#: mod/admin.php:1010
 msgid "Update has been marked successful"
 msgstr ""
 
-#: mod/admin.php:1016
+#: mod/admin.php:1018
 #, php-format
 msgid "Database structure update %s was successfully applied."
 msgstr ""
 
-#: mod/admin.php:1019
+#: mod/admin.php:1021
 #, php-format
 msgid "Executing of database structure update %s failed with error: %s"
 msgstr ""
 
-#: mod/admin.php:1031
+#: mod/admin.php:1033
 #, php-format
 msgid "Executing %s failed with error: %s"
 msgstr ""
 
-#: mod/admin.php:1034
+#: mod/admin.php:1036
 #, php-format
 msgid "Update %s was successfully applied."
 msgstr ""
 
-#: mod/admin.php:1038
+#: mod/admin.php:1040
 #, php-format
 msgid "Update %s did not return a status. Unknown if it succeeded."
 msgstr ""
 
-#: mod/admin.php:1040
+#: mod/admin.php:1042
 #, php-format
 msgid "There was no additional update function %s that needed to be called."
 msgstr ""
 
-#: mod/admin.php:1059
+#: mod/admin.php:1061
 msgid "No failed updates."
 msgstr ""
 
-#: mod/admin.php:1060
+#: mod/admin.php:1062
 msgid "Check database structure"
 msgstr ""
 
-#: mod/admin.php:1065
+#: mod/admin.php:1067
 msgid "Failed Updates"
 msgstr ""
 
-#: mod/admin.php:1066
+#: mod/admin.php:1068
 msgid ""
 "This does not include updates prior to 1139, which did not return a status."
 msgstr ""
 
-#: mod/admin.php:1067
+#: mod/admin.php:1069
 msgid "Mark success (if update was manually applied)"
 msgstr ""
 
-#: mod/admin.php:1068
+#: mod/admin.php:1070
 msgid "Attempt to execute this update step automatically"
 msgstr ""
 
-#: mod/admin.php:1100
+#: mod/admin.php:1102
 #, php-format
 msgid ""
 "\n"
@@ -2945,7 +2946,7 @@ msgid ""
 "\t\t\t\tthe administrator of %2$s has set up an account for you."
 msgstr ""
 
-#: mod/admin.php:1103
+#: mod/admin.php:1105
 #, php-format
 msgid ""
 "\n"
@@ -2981,168 +2982,168 @@ msgid ""
 "\t\t\tThank you and welcome to %4$s."
 msgstr ""
 
-#: mod/admin.php:1135 include/user.php:423
+#: mod/admin.php:1137 include/user.php:423
 #, php-format
 msgid "Registration details for %s"
 msgstr ""
 
-#: mod/admin.php:1147
+#: mod/admin.php:1149
 #, php-format
 msgid "%s user blocked/unblocked"
 msgid_plural "%s users blocked/unblocked"
 msgstr[0] ""
 msgstr[1] ""
 
-#: mod/admin.php:1154
+#: mod/admin.php:1156
 #, php-format
 msgid "%s user deleted"
 msgid_plural "%s users deleted"
 msgstr[0] ""
 msgstr[1] ""
 
-#: mod/admin.php:1201
+#: mod/admin.php:1203
 #, php-format
 msgid "User '%s' deleted"
 msgstr ""
 
-#: mod/admin.php:1209
+#: mod/admin.php:1211
 #, php-format
 msgid "User '%s' unblocked"
 msgstr ""
 
-#: mod/admin.php:1209
+#: mod/admin.php:1211
 #, php-format
 msgid "User '%s' blocked"
 msgstr ""
 
-#: mod/admin.php:1300
+#: mod/admin.php:1302
 msgid "Add User"
 msgstr ""
 
-#: mod/admin.php:1301
+#: mod/admin.php:1303
 msgid "select all"
 msgstr ""
 
-#: mod/admin.php:1302
+#: mod/admin.php:1304
 msgid "User registrations waiting for confirm"
 msgstr ""
 
-#: mod/admin.php:1303
+#: mod/admin.php:1305
 msgid "User waiting for permanent deletion"
 msgstr ""
 
-#: mod/admin.php:1304
+#: mod/admin.php:1306
 msgid "Request date"
 msgstr ""
 
-#: mod/admin.php:1304 mod/admin.php:1316 mod/admin.php:1317 mod/admin.php:1332
+#: mod/admin.php:1306 mod/admin.php:1318 mod/admin.php:1319 mod/admin.php:1334
 #: include/contact_selectors.php:79 include/contact_selectors.php:86
 msgid "Email"
 msgstr ""
 
-#: mod/admin.php:1305
+#: mod/admin.php:1307
 msgid "No registrations."
 msgstr ""
 
-#: mod/admin.php:1307
+#: mod/admin.php:1309
 msgid "Deny"
 msgstr ""
 
-#: mod/admin.php:1311
+#: mod/admin.php:1313
 msgid "Site admin"
 msgstr ""
 
-#: mod/admin.php:1312
+#: mod/admin.php:1314
 msgid "Account expired"
 msgstr ""
 
-#: mod/admin.php:1315
+#: mod/admin.php:1317
 msgid "New User"
 msgstr ""
 
-#: mod/admin.php:1316 mod/admin.php:1317
+#: mod/admin.php:1318 mod/admin.php:1319
 msgid "Register date"
 msgstr ""
 
-#: mod/admin.php:1316 mod/admin.php:1317
+#: mod/admin.php:1318 mod/admin.php:1319
 msgid "Last login"
 msgstr ""
 
-#: mod/admin.php:1316 mod/admin.php:1317
+#: mod/admin.php:1318 mod/admin.php:1319
 msgid "Last item"
 msgstr ""
 
-#: mod/admin.php:1316
+#: mod/admin.php:1318
 msgid "Deleted since"
 msgstr ""
 
-#: mod/admin.php:1317 mod/settings.php:41
+#: mod/admin.php:1319 mod/settings.php:41
 msgid "Account"
 msgstr ""
 
-#: mod/admin.php:1319
+#: mod/admin.php:1321
 msgid ""
 "Selected users will be deleted!\\n\\nEverything these users had posted on "
 "this site will be permanently deleted!\\n\\nAre you sure?"
 msgstr ""
 
-#: mod/admin.php:1320
+#: mod/admin.php:1322
 msgid ""
 "The user {0} will be deleted!\\n\\nEverything this user has posted on this "
 "site will be permanently deleted!\\n\\nAre you sure?"
 msgstr ""
 
-#: mod/admin.php:1330
+#: mod/admin.php:1332
 msgid "Name of the new user."
 msgstr ""
 
-#: mod/admin.php:1331
+#: mod/admin.php:1333
 msgid "Nickname"
 msgstr ""
 
-#: mod/admin.php:1331
+#: mod/admin.php:1333
 msgid "Nickname of the new user."
 msgstr ""
 
-#: mod/admin.php:1332
+#: mod/admin.php:1334
 msgid "Email address of the new user."
 msgstr ""
 
-#: mod/admin.php:1375
+#: mod/admin.php:1377
 #, php-format
 msgid "Plugin %s disabled."
 msgstr ""
 
-#: mod/admin.php:1379
+#: mod/admin.php:1381
 #, php-format
 msgid "Plugin %s enabled."
 msgstr ""
 
-#: mod/admin.php:1390 mod/admin.php:1626
+#: mod/admin.php:1392 mod/admin.php:1628
 msgid "Disable"
 msgstr ""
 
-#: mod/admin.php:1392 mod/admin.php:1628
+#: mod/admin.php:1394 mod/admin.php:1630
 msgid "Enable"
 msgstr ""
 
-#: mod/admin.php:1415 mod/admin.php:1673
+#: mod/admin.php:1417 mod/admin.php:1675
 msgid "Toggle"
 msgstr ""
 
-#: mod/admin.php:1423 mod/admin.php:1682
+#: mod/admin.php:1425 mod/admin.php:1684
 msgid "Author: "
 msgstr ""
 
-#: mod/admin.php:1424 mod/admin.php:1683
+#: mod/admin.php:1426 mod/admin.php:1685
 msgid "Maintainer: "
 msgstr ""
 
-#: mod/admin.php:1476
+#: mod/admin.php:1478
 msgid "Reload active plugins"
 msgstr ""
 
-#: mod/admin.php:1481
+#: mod/admin.php:1483
 #, php-format
 msgid ""
 "There are currently no plugins available on your node. You can find the "
@@ -3150,62 +3151,62 @@ msgid ""
 "in the open plugin registry at %2$s"
 msgstr ""
 
-#: mod/admin.php:1586
+#: mod/admin.php:1588
 msgid "No themes found."
 msgstr ""
 
-#: mod/admin.php:1664
+#: mod/admin.php:1666
 msgid "Screenshot"
 msgstr ""
 
-#: mod/admin.php:1724
+#: mod/admin.php:1726
 msgid "Reload active themes"
 msgstr ""
 
-#: mod/admin.php:1729
+#: mod/admin.php:1731
 #, php-format
 msgid "No themes found on the system. They should be paced in %1$s"
 msgstr ""
 
-#: mod/admin.php:1730
+#: mod/admin.php:1732
 msgid "[Experimental]"
 msgstr ""
 
-#: mod/admin.php:1731
+#: mod/admin.php:1733
 msgid "[Unsupported]"
 msgstr ""
 
-#: mod/admin.php:1755
+#: mod/admin.php:1757
 msgid "Log settings updated."
 msgstr ""
 
-#: mod/admin.php:1792
+#: mod/admin.php:1794
 msgid "Clear"
 msgstr ""
 
-#: mod/admin.php:1797
+#: mod/admin.php:1799
 msgid "Enable Debugging"
 msgstr ""
 
-#: mod/admin.php:1798
+#: mod/admin.php:1800
 msgid "Log file"
 msgstr ""
 
-#: mod/admin.php:1798
+#: mod/admin.php:1800
 msgid ""
 "Must be writable by web server. Relative to your Friendica top-level "
 "directory."
 msgstr ""
 
-#: mod/admin.php:1799
+#: mod/admin.php:1801
 msgid "Log level"
 msgstr ""
 
-#: mod/admin.php:1802
+#: mod/admin.php:1804
 msgid "PHP logging"
 msgstr ""
 
-#: mod/admin.php:1803
+#: mod/admin.php:1805
 msgid ""
 "To enable logging of PHP errors and warnings you can add the following to "
 "the .htconfig.php file of your installation. The filename set in the "
@@ -3214,20 +3215,20 @@ msgid ""
 "'display_errors' is to enable these options, set to '0' to disable them."
 msgstr ""
 
-#: mod/admin.php:1929 mod/admin.php:1930 mod/settings.php:759
+#: mod/admin.php:1931 mod/admin.php:1932 mod/settings.php:759
 msgid "Off"
 msgstr ""
 
-#: mod/admin.php:1929 mod/admin.php:1930 mod/settings.php:759
+#: mod/admin.php:1931 mod/admin.php:1932 mod/settings.php:759
 msgid "On"
 msgstr ""
 
-#: mod/admin.php:1930
+#: mod/admin.php:1932
 #, php-format
 msgid "Lock feature %s"
 msgstr ""
 
-#: mod/admin.php:1938
+#: mod/admin.php:1940
 msgid "Manage Additional Features"
 msgstr ""
 
@@ -3620,7 +3621,7 @@ msgstr[1] ""
 
 #: mod/content.php:608 boot.php:870 object/Item.php:422
 #: include/contact_widgets.php:242 include/forums.php:110
-#: include/items.php:5188 view/theme/vier/theme.php:264
+#: include/items.php:5207 view/theme/vier/theme.php:264
 msgid "show more"
 msgstr ""
 
@@ -6681,12 +6682,12 @@ msgstr ""
 msgid "%1$d %2$s ago"
 msgstr ""
 
-#: include/datetime.php:474 include/items.php:2481
+#: include/datetime.php:474 include/items.php:2500
 #, php-format
 msgid "%s's birthday"
 msgstr ""
 
-#: include/datetime.php:475 include/items.php:2482
+#: include/datetime.php:475 include/items.php:2501
 #, php-format
 msgid "Happy Birthday %s"
 msgstr ""
@@ -6830,7 +6831,7 @@ msgstr ""
 msgid "event"
 msgstr ""
 
-#: include/like.php:184 include/conversation.php:141 include/diaspora.php:2167
+#: include/like.php:184 include/conversation.php:141 include/diaspora.php:2185
 #: view/theme/diabook/theme.php:480
 #, php-format
 msgid "%1$s likes %2$s's %3$s"
@@ -7784,7 +7785,7 @@ msgstr ""
 msgid "Sharing notification from Diaspora network"
 msgstr ""
 
-#: include/diaspora.php:2608
+#: include/diaspora.php:2625
 msgid "Attachments:"
 msgstr ""
 
@@ -7796,11 +7797,11 @@ msgstr ""
 msgid "noreply"
 msgstr ""
 
-#: include/items.php:4907
+#: include/items.php:4926
 msgid "Do you really want to delete this item?"
 msgstr ""
 
-#: include/items.php:5182
+#: include/items.php:5201
 msgid "Archives"
 msgstr ""
 

From 41dacf4b372ecc72f180ca6f3bf13d1e12a2e692 Mon Sep 17 00:00:00 2001
From: Michael Vogel <icarus@dabo.de>
Date: Sun, 24 Jan 2016 07:57:36 +0100
Subject: [PATCH 5/5] To-Do bullets can now be listed in doxygen

---
 include/cron.php | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/cron.php b/include/cron.php
index 71af5d826f..2f276013b2 100644
--- a/include/cron.php
+++ b/include/cron.php
@@ -431,11 +431,11 @@ function cron_repair_database() {
 	q("UPDATE `item` INNER JOIN `item` AS `parent` ON `parent`.`uri` = `item`.`parent-uri` AND `parent`.`uid` = `item`.`uid` SET `item`.`parent` = `parent`.`id` WHERE `item`.`parent` = 0");
 
 	/// @todo
-	// - remove duplicated contacts with uid=0 (We could do this at the place where the contacts are stored)
-	// - remove thread entries without item
-	// - remove sign entries without item
-	// - remove children when parent got lost
-	// - set contact-id in item when not present
+	/// - remove duplicated contacts with uid=0 (We could do this at the place where the contacts are stored)
+	/// - remove thread entries without item
+	/// - remove sign entries without item
+	/// - remove children when parent got lost
+	/// - set contact-id in item when not present
 }
 
 if (array_search(__file__,get_included_files())===0){